@lvce-editor/static-server 0.77.6 → 0.77.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1966) hide show
  1. package/config.json +1986 -1986
  2. package/package.json +1 -1
  3. package/static/{101c327 → fd1a2e0}/css/App.css +89 -89
  4. package/static/{101c327 → fd1a2e0}/manifest.json +2 -2
  5. package/static/{101c327 → fd1a2e0}/packages/about-view-worker/dist/aboutWorkerMain.js +3 -3
  6. package/static/{101c327 → fd1a2e0}/packages/chat-coordinator-worker/dist/chatCoordinatorWorkerMain.js +351 -36
  7. package/static/{101c327 → fd1a2e0}/packages/chat-message-parsing-worker/dist/chatMessageParsingWorkerMain.js +554 -36
  8. package/static/{101c327 → fd1a2e0}/packages/chat-view/dist/chatViewWorkerMain.js +1304 -1746
  9. package/static/{101c327 → fd1a2e0}/packages/explorer-worker/dist/explorerViewWorkerMain.js +4092 -4059
  10. package/static/{101c327 → fd1a2e0}/packages/extension-host-worker/dist/extensionHostWorkerMain.js +3 -3
  11. package/static/{101c327 → fd1a2e0}/packages/preview-worker/dist/previewWorkerMain.js +210 -101
  12. package/static/{101c327 → fd1a2e0}/packages/renderer-process/dist/rendererProcessMain.js +1 -1
  13. package/static/{101c327 → fd1a2e0}/packages/renderer-worker/dist/rendererWorkerMain.js +7 -4
  14. package/static/{101c327 → fd1a2e0}/packages/test-worker/dist/testWorkerMain.js +56 -0
  15. package/static/index.html +4 -4
  16. /package/static/{101c327 → fd1a2e0}/config/colorTheme.json +0 -0
  17. /package/static/{101c327 → fd1a2e0}/config/defaultSettings.json +0 -0
  18. /package/static/{101c327 → fd1a2e0}/config/fileMap.json +0 -0
  19. /package/static/{101c327 → fd1a2e0}/config/webExtensions.json +0 -0
  20. /package/static/{101c327 → fd1a2e0}/css/parts/AdditionalDetails.css +0 -0
  21. /package/static/{101c327 → fd1a2e0}/css/parts/Animation.css +0 -0
  22. /package/static/{101c327 → fd1a2e0}/css/parts/BrowserScrollBar.css +0 -0
  23. /package/static/{101c327 → fd1a2e0}/css/parts/Category.css +0 -0
  24. /package/static/{101c327 → fd1a2e0}/css/parts/DebugButtons.css +0 -0
  25. /package/static/{101c327 → fd1a2e0}/css/parts/DebugValue.css +0 -0
  26. /package/static/{101c327 → fd1a2e0}/css/parts/E2eTest.css +0 -0
  27. /package/static/{101c327 → fd1a2e0}/css/parts/E2eTests.css +0 -0
  28. /package/static/{101c327 → fd1a2e0}/css/parts/EditorHover.css +0 -0
  29. /package/static/{101c327 → fd1a2e0}/css/parts/EditorMessage.css +0 -0
  30. /package/static/{101c327 → fd1a2e0}/css/parts/FeatureContent.css +0 -0
  31. /package/static/{101c327 → fd1a2e0}/css/parts/Features.css +0 -0
  32. /package/static/{101c327 → fd1a2e0}/css/parts/ImagePreview.css +0 -0
  33. /package/static/{101c327 → fd1a2e0}/css/parts/InlineDiffEditor.css +0 -0
  34. /package/static/{101c327 → fd1a2e0}/css/parts/InputBadge.css +0 -0
  35. /package/static/{101c327 → fd1a2e0}/css/parts/Key.css +0 -0
  36. /package/static/{101c327 → fd1a2e0}/css/parts/KeyBindingsHeader.css +0 -0
  37. /package/static/{101c327 → fd1a2e0}/css/parts/KeyBindingsTable.css +0 -0
  38. /package/static/{101c327 → fd1a2e0}/css/parts/LegacyDialog.css +0 -0
  39. /package/static/{101c327 → fd1a2e0}/css/parts/Markdown.css +0 -0
  40. /package/static/{101c327 → fd1a2e0}/css/parts/Message.css +0 -0
  41. /package/static/{101c327 → fd1a2e0}/css/parts/Preview.css +0 -0
  42. /package/static/{101c327 → fd1a2e0}/css/parts/ScrollToTop.css +0 -0
  43. /package/static/{101c327 → fd1a2e0}/css/parts/SettingsHeader.css +0 -0
  44. /package/static/{101c327 → fd1a2e0}/css/parts/SettingsItems.css +0 -0
  45. /package/static/{101c327 → fd1a2e0}/css/parts/SettingsSideBar.css +0 -0
  46. /package/static/{101c327 → fd1a2e0}/css/parts/Table.css +0 -0
  47. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletAbout.css +0 -0
  48. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletBrowserViewOverview.css +0 -0
  49. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletDebugConsole.css +0 -0
  50. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletDefineKeyBinding.css +0 -0
  51. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletDiffEditor.css +0 -0
  52. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletEditorWidgetError.css +0 -0
  53. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletExtensionDetail.css +0 -0
  54. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletExtensionDetailHeader.css +0 -0
  55. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletExtensionDetailTabs.css +0 -0
  56. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletExtensions.css +0 -0
  57. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletIframeInspector.css +0 -0
  58. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletKeyBindings.css +0 -0
  59. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletLanguageModels.css +0 -0
  60. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletMedia.css +0 -0
  61. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletOutput.css +0 -0
  62. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletPanel.css +0 -0
  63. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletPanelTabs.css +0 -0
  64. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletPdf.css +0 -0
  65. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletProblems.css +0 -0
  66. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletReferences.css +0 -0
  67. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletRunAndDebug.css +0 -0
  68. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletScreenCapture.css +0 -0
  69. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletSearch.css +0 -0
  70. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletSettings.css +0 -0
  71. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletSimpleBrowser.css +0 -0
  72. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletSourceControl.css +0 -0
  73. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletStorage.css +0 -0
  74. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletTerminal.css +0 -0
  75. /package/static/{101c327 → fd1a2e0}/css/parts/ViewletTerminalTabs.css +0 -0
  76. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-bat/README.md +0 -0
  77. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-bat/extension.json +0 -0
  78. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-bat/languageConfiguration.json +0 -0
  79. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-bat/src/tokenizeBat.js +0 -0
  80. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-c/README.md +0 -0
  81. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-c/extension.json +0 -0
  82. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-c/src/tokenizeC.js +0 -0
  83. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-coffeescript/README.md +0 -0
  84. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-coffeescript/extension.json +0 -0
  85. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-coffeescript/src/tokenizeCoffeeScript.js +0 -0
  86. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-cpp/README.md +0 -0
  87. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-cpp/extension.json +0 -0
  88. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-cpp/languageConfiguration.json +0 -0
  89. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-cpp/src/tokenizeCpp.js +0 -0
  90. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-cson/README.md +0 -0
  91. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-cson/extension.json +0 -0
  92. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-cson/languageConfiguration.json +0 -0
  93. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-cson/src/tokenizeCson.js +0 -0
  94. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-css/README.md +0 -0
  95. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-css/extension.json +0 -0
  96. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-css/languageConfiguration.json +0 -0
  97. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-css/src/tokenizeCss.js +0 -0
  98. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-dart/README.md +0 -0
  99. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-dart/extension.json +0 -0
  100. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-dart/src/tokenizeDart.js +0 -0
  101. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-desktop/README.md +0 -0
  102. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-desktop/extension.json +0 -0
  103. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-desktop/src/tokenizeDesktop.js +0 -0
  104. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-docker/README.md +0 -0
  105. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-docker/extension.json +0 -0
  106. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-docker/src/tokenizeDockerfile.js +0 -0
  107. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-dotenv/README.md +0 -0
  108. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-dotenv/extension.json +0 -0
  109. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-dotenv/src/tokenizeDotenv.js +0 -0
  110. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-editorconfig/README.md +0 -0
  111. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-editorconfig/extension.json +0 -0
  112. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-editorconfig/src/tokenizeEditorConfig.js +0 -0
  113. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-elixir/README.md +0 -0
  114. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-elixir/extension.json +0 -0
  115. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-elixir/src/tokenizeElixir.js +0 -0
  116. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-elm/README.md +0 -0
  117. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-elm/extension.json +0 -0
  118. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-elm/src/tokenizeElm.js +0 -0
  119. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-gitattributes/README.md +0 -0
  120. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-gitattributes/extension.json +0 -0
  121. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-gitattributes/src/tokenizeGitAttributes.js +0 -0
  122. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-gn/README.md +0 -0
  123. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-gn/extension.json +0 -0
  124. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-gn/src/tokenizeGn.js +0 -0
  125. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-go/README.md +0 -0
  126. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-go/extension.json +0 -0
  127. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-go/src/tokenizeGo.js +0 -0
  128. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-graphql/README.md +0 -0
  129. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-graphql/extension.json +0 -0
  130. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-graphql/src/tokenizeGraphql.js +0 -0
  131. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-html/README.md +0 -0
  132. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-html/extension.json +0 -0
  133. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-html/languageConfiguration.json +0 -0
  134. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-html/src/tokenizeHtml.js +0 -0
  135. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-java/README.md +0 -0
  136. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-java/extension.json +0 -0
  137. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-java/languageConfiguration.json +0 -0
  138. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-java/src/tokenizeJava.js +0 -0
  139. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-javascript/README.md +0 -0
  140. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-javascript/extension.json +0 -0
  141. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-javascript/languageConfiguration.json +0 -0
  142. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-javascript/src/tokenizeJavaScript.js +0 -0
  143. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-json/README.md +0 -0
  144. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-json/extension.json +0 -0
  145. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-json/src/tokenizeJson.js +0 -0
  146. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-json5/README.md +0 -0
  147. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-json5/extension.json +0 -0
  148. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-json5/src/tokenizeJson5.js +0 -0
  149. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-jsx/README.md +0 -0
  150. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-jsx/extension.json +0 -0
  151. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-jsx/src/tokenizeJsx.js +0 -0
  152. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-julia/README.md +0 -0
  153. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-julia/extension.json +0 -0
  154. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-julia/src/tokenizeJulia.js +0 -0
  155. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-kotlin/README.md +0 -0
  156. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-kotlin/extension.json +0 -0
  157. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-kotlin/src/tokenizeKotlin.js +0 -0
  158. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-less/LICENSE +0 -0
  159. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-less/README.md +0 -0
  160. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-less/extension.json +0 -0
  161. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-less/languageConfiguration.json +0 -0
  162. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-less/src/tokenizeLess.js +0 -0
  163. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-markdown/README.md +0 -0
  164. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-markdown/extension.json +0 -0
  165. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-markdown/src/tokenizeMarkdown.js +0 -0
  166. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-mdx/README.md +0 -0
  167. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-mdx/extension.json +0 -0
  168. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-mdx/src/tokenizeMdx.js +0 -0
  169. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-nix/README.md +0 -0
  170. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-nix/extension.json +0 -0
  171. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-nix/languageConfiguration.json +0 -0
  172. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-nix/src/tokenizeNix.js +0 -0
  173. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-nvmrc/README.md +0 -0
  174. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-nvmrc/extension.json +0 -0
  175. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-nvmrc/src/tokenizeNvmrc.js +0 -0
  176. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-perl/README.md +0 -0
  177. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-perl/extension.json +0 -0
  178. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-perl/src/tokenizePerl.js +0 -0
  179. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-plaintext/README.md +0 -0
  180. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-plaintext/extension.json +0 -0
  181. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-plaintext/src/tokenizePlaintext.js +0 -0
  182. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-powershell/README.md +0 -0
  183. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-powershell/extension.json +0 -0
  184. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-powershell/src/tokenizePowershell.js +0 -0
  185. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-python/README.md +0 -0
  186. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-python/extension.json +0 -0
  187. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-python/languageConfiguration.json +0 -0
  188. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-python/src/tokenizePython.js +0 -0
  189. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-r/README.md +0 -0
  190. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-r/extension.json +0 -0
  191. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-r/src/tokenizeR.js +0 -0
  192. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-ruby/README.md +0 -0
  193. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-ruby/extension.json +0 -0
  194. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-ruby/src/tokenizeRuby.js +0 -0
  195. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-rust/LICENSE +0 -0
  196. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-rust/README.md +0 -0
  197. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-rust/extension.json +0 -0
  198. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-rust/languageConfiguration.json +0 -0
  199. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-rust/src/tokenizeRust.js +0 -0
  200. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-scss/README.md +0 -0
  201. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-scss/extension.json +0 -0
  202. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-scss/languageConfiguration.json +0 -0
  203. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-scss/src/tokenizeScss.js +0 -0
  204. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-shellscript/README.md +0 -0
  205. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-shellscript/extension.json +0 -0
  206. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-shellscript/src/tokenizeShellScript.js +0 -0
  207. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-svelte/README.md +0 -0
  208. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-svelte/extension.json +0 -0
  209. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-svelte/src/tokenizeSvelte.js +0 -0
  210. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-terraform/README.md +0 -0
  211. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-terraform/extension.json +0 -0
  212. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-terraform/src/tokenizeTerraform.js +0 -0
  213. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-toml/README.md +0 -0
  214. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-toml/extension.json +0 -0
  215. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-toml/src/tokenizeToml.js +0 -0
  216. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-typescript/README.md +0 -0
  217. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-typescript/extension.json +0 -0
  218. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-typescript/languageConfiguration.json +0 -0
  219. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-typescript/src/tokenizeTypeScript.js +0 -0
  220. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-vue/README.md +0 -0
  221. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-vue/extension.json +0 -0
  222. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-vue/src/tokenizeVue.js +0 -0
  223. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-wgsl/README.md +0 -0
  224. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-wgsl/extension.json +0 -0
  225. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-wgsl/languageConfiguration.json +0 -0
  226. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-wgsl/src/tokenizeWgsl.js +0 -0
  227. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-xml/README.md +0 -0
  228. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-xml/extension.json +0 -0
  229. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-xml/src/tokenizeXml.js +0 -0
  230. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-yaml/README.md +0 -0
  231. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-yaml/extension.json +0 -0
  232. /package/static/{101c327 → fd1a2e0}/extensions/builtin.language-basics-yaml/src/tokenizeYaml.js +0 -0
  233. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-atom-one-dark/README.md +0 -0
  234. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-atom-one-dark/color-theme.json +0 -0
  235. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-atom-one-dark/extension.json +0 -0
  236. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-atom-one-dark/images/demo.png +0 -0
  237. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-ayu/README.md +0 -0
  238. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-ayu/color-theme.json +0 -0
  239. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-ayu/extension.json +0 -0
  240. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-ayu/images/demo.png +0 -0
  241. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-cobalt2/README.md +0 -0
  242. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-cobalt2/color-theme.json +0 -0
  243. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-cobalt2/extension.json +0 -0
  244. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-cobalt2/images/demo.png +0 -0
  245. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-cobalt2/images/logo.png +0 -0
  246. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-gruvbox/README.md +0 -0
  247. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-gruvbox/color-theme.json +0 -0
  248. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-gruvbox/extension.json +0 -0
  249. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-gruvbox/images/demo.png +0 -0
  250. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-high-contrast/README.md +0 -0
  251. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-high-contrast/color-theme.json +0 -0
  252. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-high-contrast/extension.json +0 -0
  253. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-material/README.md +0 -0
  254. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-material/color-theme.json +0 -0
  255. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-material/extension.json +0 -0
  256. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-monokai/README.md +0 -0
  257. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-monokai/color-theme.json +0 -0
  258. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-monokai/extension.json +0 -0
  259. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-noctis-uva/README.md +0 -0
  260. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-noctis-uva/color-theme.json +0 -0
  261. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-noctis-uva/extension.json +0 -0
  262. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-noctis-uva/images/demo.png +0 -0
  263. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-palenight/README.md +0 -0
  264. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-palenight/color-theme.json +0 -0
  265. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-palenight/extension.json +0 -0
  266. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-palenight/images/demo.png +0 -0
  267. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-slime/README.md +0 -0
  268. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-slime/color-theme.json +0 -0
  269. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-slime/extension.json +0 -0
  270. /package/static/{101c327 → fd1a2e0}/extensions/builtin.theme-slime/icon.png +0 -0
  271. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/README.md +0 -0
  272. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/extension.json +0 -0
  273. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icon-theme.json +0 -0
  274. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icon.png +0 -0
  275. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/default_file.svg +0 -0
  276. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/default_folder.svg +0 -0
  277. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/default_folder_opened.svg +0 -0
  278. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/default_root_folder.svg +0 -0
  279. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/default_root_folder_opened.svg +0 -0
  280. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_access.svg +0 -0
  281. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_access2.svg +0 -0
  282. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_actionscript.svg +0 -0
  283. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_actionscript2.svg +0 -0
  284. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ada.svg +0 -0
  285. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_advpl.svg +0 -0
  286. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_affectscript.svg +0 -0
  287. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_affinity.svg +0 -0
  288. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_affinitydesigner.svg +0 -0
  289. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_affinityphoto.svg +0 -0
  290. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_affinitypublisher.svg +0 -0
  291. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_agda.svg +0 -0
  292. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_agents.svg +0 -0
  293. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ai.svg +0 -0
  294. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ai2.svg +0 -0
  295. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_al.svg +0 -0
  296. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_al_dal.svg +0 -0
  297. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_alchemy.svg +0 -0
  298. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_allcontributors.svg +0 -0
  299. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_alloy.svg +0 -0
  300. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_allure.svg +0 -0
  301. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_angular.svg +0 -0
  302. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ansible.svg +0 -0
  303. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_antlers_html.svg +0 -0
  304. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_antlr.svg +0 -0
  305. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_anyscript.svg +0 -0
  306. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_apache.svg +0 -0
  307. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_apex.svg +0 -0
  308. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_api_extractor.svg +0 -0
  309. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_apib.svg +0 -0
  310. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_apib2.svg +0 -0
  311. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_apl.svg +0 -0
  312. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_applescript.svg +0 -0
  313. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_appscript.svg +0 -0
  314. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_appsemble.svg +0 -0
  315. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_appveyor.svg +0 -0
  316. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_arduino.svg +0 -0
  317. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_asciidoc.svg +0 -0
  318. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_aseprite.svg +0 -0
  319. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_asp.svg +0 -0
  320. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_aspx.svg +0 -0
  321. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_assembly.svg +0 -0
  322. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_assembly_script.svg +0 -0
  323. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_astro.svg +0 -0
  324. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_astroconfig.svg +0 -0
  325. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_atom.svg +0 -0
  326. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ats.svg +0 -0
  327. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_attw.svg +0 -0
  328. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_audio.svg +0 -0
  329. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_aurelia.svg +0 -0
  330. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_autohotkey.svg +0 -0
  331. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_autoit.svg +0 -0
  332. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_avif.svg +0 -0
  333. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_avro.svg +0 -0
  334. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_awk.svg +0 -0
  335. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_aws.svg +0 -0
  336. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_azure.svg +0 -0
  337. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_azurepipelines.svg +0 -0
  338. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_babel.svg +0 -0
  339. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_babel2.svg +0 -0
  340. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bak.svg +0 -0
  341. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ballerina.svg +0 -0
  342. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bat.svg +0 -0
  343. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bats.svg +0 -0
  344. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bazaar.svg +0 -0
  345. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bazel.svg +0 -0
  346. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bazel_ignore.svg +0 -0
  347. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bazel_version.svg +0 -0
  348. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_befunge.svg +0 -0
  349. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bicep.svg +0 -0
  350. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_biml.svg +0 -0
  351. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_binary.svg +0 -0
  352. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_biome.svg +0 -0
  353. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bitbucketpipeline.svg +0 -0
  354. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bithound.svg +0 -0
  355. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_blade.svg +0 -0
  356. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_blender.svg +0 -0
  357. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_blitzbasic.svg +0 -0
  358. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bolt.svg +0 -0
  359. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bosque.svg +0 -0
  360. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bower.svg +0 -0
  361. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bower2.svg +0 -0
  362. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_browserslist.svg +0 -0
  363. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bruno.svg +0 -0
  364. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_buckbuild.svg +0 -0
  365. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_buf.svg +0 -0
  366. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bun.svg +0 -0
  367. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bundlemon.svg +0 -0
  368. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bundler.svg +0 -0
  369. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_bunfig.svg +0 -0
  370. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_c.svg +0 -0
  371. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_c2.svg +0 -0
  372. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_c3.svg +0 -0
  373. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_c_al.svg +0 -0
  374. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cabal.svg +0 -0
  375. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_caddy.svg +0 -0
  376. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cake.svg +0 -0
  377. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cakephp.svg +0 -0
  378. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_capacitor.svg +0 -0
  379. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_capnp.svg +0 -0
  380. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cargo.svg +0 -0
  381. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_casc.svg +0 -0
  382. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cddl.svg +0 -0
  383. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cert.svg +0 -0
  384. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ceylon.svg +0 -0
  385. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cf.svg +0 -0
  386. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cf2.svg +0 -0
  387. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cfc.svg +0 -0
  388. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cfc2.svg +0 -0
  389. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cfm.svg +0 -0
  390. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cfm2.svg +0 -0
  391. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_changie.svg +0 -0
  392. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cheader.svg +0 -0
  393. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_chef.svg +0 -0
  394. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_chef_cookbook.svg +0 -0
  395. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_circleci.svg +0 -0
  396. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_circom.svg +0 -0
  397. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_class.svg +0 -0
  398. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_claude.svg +0 -0
  399. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_clojure.svg +0 -0
  400. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_clojurescript.svg +0 -0
  401. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cloudflare.svg +0 -0
  402. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cloudfoundry.svg +0 -0
  403. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cmake.svg +0 -0
  404. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cobol.svg +0 -0
  405. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_codacy.svg +0 -0
  406. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_codeclimate.svg +0 -0
  407. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_codecov.svg +0 -0
  408. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_codekit.svg +0 -0
  409. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_codemagic.svg +0 -0
  410. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_codeowners.svg +0 -0
  411. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_codeql.svg +0 -0
  412. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_coderabbit.svg +0 -0
  413. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_coffeelint.svg +0 -0
  414. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_coffeescript.svg +0 -0
  415. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_commitizen.svg +0 -0
  416. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_commitlint.svg +0 -0
  417. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_compass.svg +0 -0
  418. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_composer.svg +0 -0
  419. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_conan.svg +0 -0
  420. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_conda.svg +0 -0
  421. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_config.svg +0 -0
  422. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_confluence.svg +0 -0
  423. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_copilot.svg +0 -0
  424. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_coverage.svg +0 -0
  425. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_coveralls.svg +0 -0
  426. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cpp.svg +0 -0
  427. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cpp2.svg +0 -0
  428. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cpp3.svg +0 -0
  429. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cppheader.svg +0 -0
  430. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_craco.svg +0 -0
  431. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_crowdin.svg +0 -0
  432. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_crystal.svg +0 -0
  433. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_csharp.svg +0 -0
  434. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_csharp2.svg +0 -0
  435. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cspell.svg +0 -0
  436. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_csproj.svg +0 -0
  437. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_css.svg +0 -0
  438. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_css2.svg +0 -0
  439. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_css2map.svg +0 -0
  440. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_csscomb.svg +0 -0
  441. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_csslint.svg +0 -0
  442. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cssmap.svg +0 -0
  443. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cucumber.svg +0 -0
  444. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cuda.svg +0 -0
  445. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cursorrules.svg +0 -0
  446. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cvs.svg +0 -0
  447. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cypress.svg +0 -0
  448. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cypress_spec.svg +0 -0
  449. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_cython.svg +0 -0
  450. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dal.svg +0 -0
  451. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_darcs.svg +0 -0
  452. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dartlang.svg +0 -0
  453. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dartlang_generated.svg +0 -0
  454. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dartlang_ignore.svg +0 -0
  455. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_datadog.svg +0 -0
  456. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_db.svg +0 -0
  457. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_debian.svg +0 -0
  458. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_delphi.svg +0 -0
  459. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_deno.svg +0 -0
  460. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_denoify.svg +0 -0
  461. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dependabot.svg +0 -0
  462. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dependencies.svg +0 -0
  463. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_design_tokens.svg +0 -0
  464. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_devcontainer.svg +0 -0
  465. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_devvit.svg +0 -0
  466. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dhall.svg +0 -0
  467. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_diff.svg +0 -0
  468. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_django.svg +0 -0
  469. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dlang.svg +0 -0
  470. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_docker.svg +0 -0
  471. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_docker2.svg +0 -0
  472. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dockertest.svg +0 -0
  473. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dockertest2.svg +0 -0
  474. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_docpad.svg +0 -0
  475. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_docusaurus.svg +0 -0
  476. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_docz.svg +0 -0
  477. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dojo.svg +0 -0
  478. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_doppler.svg +0 -0
  479. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dotenv.svg +0 -0
  480. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dotjs.svg +0 -0
  481. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_doxygen.svg +0 -0
  482. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_drawio.svg +0 -0
  483. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_drone.svg +0 -0
  484. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_drools.svg +0 -0
  485. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dtd.svg +0 -0
  486. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dune.svg +0 -0
  487. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dustjs.svg +0 -0
  488. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dvc.svg +0 -0
  489. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_dylan.svg +0 -0
  490. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_earthly.svg +0 -0
  491. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_eas-metadata.svg +0 -0
  492. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_edge.svg +0 -0
  493. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_edge2.svg +0 -0
  494. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_editorconfig.svg +0 -0
  495. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_eex.svg +0 -0
  496. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ejs.svg +0 -0
  497. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_elastic.svg +0 -0
  498. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_elasticbeanstalk.svg +0 -0
  499. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_electron.svg +0 -0
  500. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_eleventy.svg +0 -0
  501. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_eleventy2.svg +0 -0
  502. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_elixir.svg +0 -0
  503. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_elm.svg +0 -0
  504. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_elm2.svg +0 -0
  505. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_emacs.svg +0 -0
  506. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ember.svg +0 -0
  507. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ensime.svg +0 -0
  508. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_eps.svg +0 -0
  509. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_epub.svg +0 -0
  510. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_erb.svg +0 -0
  511. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_erlang.svg +0 -0
  512. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_erlang2.svg +0 -0
  513. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_esbuild.svg +0 -0
  514. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_eslint.svg +0 -0
  515. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_eslint2.svg +0 -0
  516. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_esphome.svg +0 -0
  517. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_excalidraw.svg +0 -0
  518. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_excel.svg +0 -0
  519. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_excel2.svg +0 -0
  520. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_expo.svg +0 -0
  521. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_falcon.svg +0 -0
  522. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fantasticon.svg +0 -0
  523. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fastly.svg +0 -0
  524. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fauna.svg +0 -0
  525. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_favicon.svg +0 -0
  526. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fbx.svg +0 -0
  527. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_firebase.svg +0 -0
  528. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_firebasehosting.svg +0 -0
  529. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_firebasestorage.svg +0 -0
  530. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_firestore.svg +0 -0
  531. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fitbit.svg +0 -0
  532. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fla.svg +0 -0
  533. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_flareact.svg +0 -0
  534. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_flash.svg +0 -0
  535. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_floobits.svg +0 -0
  536. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_flow.svg +0 -0
  537. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_flutter.svg +0 -0
  538. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_flutter_package.svg +0 -0
  539. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_flyio.svg +0 -0
  540. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_font.svg +0 -0
  541. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_formkit.svg +0 -0
  542. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fortran.svg +0 -0
  543. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fossa.svg +0 -0
  544. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fossil.svg +0 -0
  545. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_freemarker.svg +0 -0
  546. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_frontcommerce.svg +0 -0
  547. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fsharp.svg +0 -0
  548. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fsharp2.svg +0 -0
  549. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fsproj.svg +0 -0
  550. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fthtml.svg +0 -0
  551. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_funding.svg +0 -0
  552. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_fusebox.svg +0 -0
  553. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_galen.svg +0 -0
  554. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_galen2.svg +0 -0
  555. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gamemaker.svg +0 -0
  556. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gamemaker2.svg +0 -0
  557. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gamemaker81.svg +0 -0
  558. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gatsby.svg +0 -0
  559. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gcloud.svg +0 -0
  560. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gcode.svg +0 -0
  561. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gdscript.svg +0 -0
  562. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gduid.svg +0 -0
  563. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gemini.svg +0 -0
  564. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_genstat.svg +0 -0
  565. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_geojson.svg +0 -0
  566. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gimp.svg +0 -0
  567. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_git.svg +0 -0
  568. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_git2.svg +0 -0
  569. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gitlab.svg +0 -0
  570. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gitpod.svg +0 -0
  571. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gleam.svg +0 -0
  572. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gleamconfig.svg +0 -0
  573. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_glide.svg +0 -0
  574. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_glimmer.svg +0 -0
  575. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_glitter.svg +0 -0
  576. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_glsl.svg +0 -0
  577. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gltf.svg +0 -0
  578. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_glyphs.svg +0 -0
  579. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gnu.svg +0 -0
  580. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gnuplot.svg +0 -0
  581. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_go.svg +0 -0
  582. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_go_aqua.svg +0 -0
  583. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_go_black.svg +0 -0
  584. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_go_fuchsia.svg +0 -0
  585. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_go_gopher.svg +0 -0
  586. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_go_lightblue.svg +0 -0
  587. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_go_package.svg +0 -0
  588. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_go_white.svg +0 -0
  589. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_go_work.svg +0 -0
  590. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_go_yellow.svg +0 -0
  591. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_goctl.svg +0 -0
  592. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_godot.svg +0 -0
  593. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gpg.svg +0 -0
  594. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gradle.svg +0 -0
  595. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gradle2.svg +0 -0
  596. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_grain.svg +0 -0
  597. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_graphql.svg +0 -0
  598. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_graphql_config.svg +0 -0
  599. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_graphviz.svg +0 -0
  600. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_greenkeeper.svg +0 -0
  601. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gridsome.svg +0 -0
  602. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_grit.svg +0 -0
  603. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_groovy.svg +0 -0
  604. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_groovy2.svg +0 -0
  605. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_grunt.svg +0 -0
  606. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_gulp.svg +0 -0
  607. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_haml.svg +0 -0
  608. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_handlebars.svg +0 -0
  609. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_handlebars2.svg +0 -0
  610. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_harbour.svg +0 -0
  611. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_hardhat.svg +0 -0
  612. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_hashicorp.svg +0 -0
  613. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_haskell.svg +0 -0
  614. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_haskell2.svg +0 -0
  615. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_haxe.svg +0 -0
  616. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_haxecheckstyle.svg +0 -0
  617. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_haxedevelop.svg +0 -0
  618. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_helix.svg +0 -0
  619. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_helm.svg +0 -0
  620. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_histoire.svg +0 -0
  621. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_hjson.svg +0 -0
  622. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_hlsl.svg +0 -0
  623. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_homeassistant.svg +0 -0
  624. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_horusec.svg +0 -0
  625. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_host.svg +0 -0
  626. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_html.svg +0 -0
  627. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_htmlhint.svg +0 -0
  628. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_htmlvalidate.svg +0 -0
  629. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_http.svg +0 -0
  630. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_hugo.svg +0 -0
  631. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_humanstxt.svg +0 -0
  632. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_hunspell.svg +0 -0
  633. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_husky.svg +0 -0
  634. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_hy.svg +0 -0
  635. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_hygen.svg +0 -0
  636. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_hypr.svg +0 -0
  637. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_icl.svg +0 -0
  638. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_idris.svg +0 -0
  639. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_idrisbin.svg +0 -0
  640. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_idrispkg.svg +0 -0
  641. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_image.svg +0 -0
  642. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_imba.svg +0 -0
  643. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_inc.svg +0 -0
  644. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_infopath.svg +0 -0
  645. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_informix.svg +0 -0
  646. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ini.svg +0 -0
  647. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ink.svg +0 -0
  648. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_innosetup.svg +0 -0
  649. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_io.svg +0 -0
  650. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_iodine.svg +0 -0
  651. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ionic.svg +0 -0
  652. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jake.svg +0 -0
  653. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_janet.svg +0 -0
  654. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jar.svg +0 -0
  655. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jasmine.svg +0 -0
  656. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_java.svg +0 -0
  657. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jbuilder.svg +0 -0
  658. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jekyll.svg +0 -0
  659. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jenkins.svg +0 -0
  660. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jest.svg +0 -0
  661. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jest_snapshot.svg +0 -0
  662. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jetbrains.svg +0 -0
  663. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jinja.svg +0 -0
  664. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jpm.svg +0 -0
  665. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_js.svg +0 -0
  666. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_js_official.svg +0 -0
  667. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jsbeautify.svg +0 -0
  668. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jsconfig.svg +0 -0
  669. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jscpd.svg +0 -0
  670. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jshint.svg +0 -0
  671. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jsmap.svg +0 -0
  672. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_json.svg +0 -0
  673. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_json2.svg +0 -0
  674. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_json5.svg +0 -0
  675. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_json_official.svg +0 -0
  676. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_json_schema.svg +0 -0
  677. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jsonld.svg +0 -0
  678. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jsonnet.svg +0 -0
  679. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jsp.svg +0 -0
  680. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jsr.svg +0 -0
  681. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jss.svg +0 -0
  682. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_juice.svg +0 -0
  683. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_julia.svg +0 -0
  684. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_julia2.svg +0 -0
  685. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_jupyter.svg +0 -0
  686. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_just.svg +0 -0
  687. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_k.svg +0 -0
  688. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_karma.svg +0 -0
  689. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_key.svg +0 -0
  690. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_kitchenci.svg +0 -0
  691. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_kite.svg +0 -0
  692. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_kivy.svg +0 -0
  693. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_knip.svg +0 -0
  694. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_kos.svg +0 -0
  695. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_kotlin.svg +0 -0
  696. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_kusto.svg +0 -0
  697. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_language_configuration.svg +0 -0
  698. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lark.svg +0 -0
  699. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_latino.svg +0 -0
  700. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_layout.svg +0 -0
  701. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lean.svg +0 -0
  702. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_leanconfig.svg +0 -0
  703. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lefthook.svg +0 -0
  704. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lerna.svg +0 -0
  705. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_less.svg +0 -0
  706. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lex.svg +0 -0
  707. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_liara.svg +0 -0
  708. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_base.svg +0 -0
  709. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_calc.svg +0 -0
  710. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_draw.svg +0 -0
  711. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_impress.svg +0 -0
  712. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_math.svg +0 -0
  713. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_writer.svg +0 -0
  714. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_license.svg +0 -0
  715. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_licensebat.svg +0 -0
  716. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_actionscript2.svg +0 -0
  717. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_ada.svg +0 -0
  718. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_agda.svg +0 -0
  719. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_agents.svg +0 -0
  720. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_apl.svg +0 -0
  721. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_astro.svg +0 -0
  722. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_astroconfig.svg +0 -0
  723. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_babel.svg +0 -0
  724. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_babel2.svg +0 -0
  725. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_cabal.svg +0 -0
  726. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_circleci.svg +0 -0
  727. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_cloudfoundry.svg +0 -0
  728. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_codacy.svg +0 -0
  729. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_codeclimate.svg +0 -0
  730. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_codeowners.svg +0 -0
  731. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_config.svg +0 -0
  732. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_copilot.svg +0 -0
  733. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_crystal.svg +0 -0
  734. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_cypress.svg +0 -0
  735. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_cypress_spec.svg +0 -0
  736. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_db.svg +0 -0
  737. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_deno.svg +0 -0
  738. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_dhall.svg +0 -0
  739. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_docpad.svg +0 -0
  740. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_drone.svg +0 -0
  741. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_eas-metadata.svg +0 -0
  742. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy.svg +0 -0
  743. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy2.svg +0 -0
  744. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_esphome.svg +0 -0
  745. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_expo.svg +0 -0
  746. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_firebasehosting.svg +0 -0
  747. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_fla.svg +0 -0
  748. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_font.svg +0 -0
  749. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_gamemaker2.svg +0 -0
  750. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_gradle.svg +0 -0
  751. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_hashicorp.svg +0 -0
  752. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_hjson.svg +0 -0
  753. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_ini.svg +0 -0
  754. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_io.svg +0 -0
  755. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_js.svg +0 -0
  756. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_jsconfig.svg +0 -0
  757. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_jsmap.svg +0 -0
  758. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_json.svg +0 -0
  759. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_json5.svg +0 -0
  760. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_json_schema.svg +0 -0
  761. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_jsonld.svg +0 -0
  762. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_kite.svg +0 -0
  763. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_lark.svg +0 -0
  764. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_lean.svg +0 -0
  765. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_leanconfig.svg +0 -0
  766. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_lerna.svg +0 -0
  767. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_mailing.svg +0 -0
  768. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_markuplint.svg +0 -0
  769. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_mcp.svg +0 -0
  770. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_mdx-components.svg +0 -0
  771. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_mdx.svg +0 -0
  772. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_mlang.svg +0 -0
  773. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_mustache.svg +0 -0
  774. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_mypy.svg +0 -0
  775. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_neo4j.svg +0 -0
  776. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_netlify.svg +0 -0
  777. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_next.svg +0 -0
  778. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_nim.svg +0 -0
  779. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_nx.svg +0 -0
  780. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_objidconfig.svg +0 -0
  781. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_openHAB.svg +0 -0
  782. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_packship.svg +0 -0
  783. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_pcl.svg +0 -0
  784. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_pnpm.svg +0 -0
  785. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_prettier.svg +0 -0
  786. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_prisma.svg +0 -0
  787. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_purescript.svg +0 -0
  788. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_quasar.svg +0 -0
  789. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_raku.svg +0 -0
  790. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_razzle.svg +0 -0
  791. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_reactrouter.svg +0 -0
  792. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_rehype.svg +0 -0
  793. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_remark.svg +0 -0
  794. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_replit.svg +0 -0
  795. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_retext.svg +0 -0
  796. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_rome.svg +0 -0
  797. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_rubocop.svg +0 -0
  798. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_rust.svg +0 -0
  799. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_rust_toolchain.svg +0 -0
  800. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_safetensors.svg +0 -0
  801. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_shadcn.svg +0 -0
  802. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_shaderlab.svg +0 -0
  803. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_solidity.svg +0 -0
  804. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_spin.svg +0 -0
  805. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_stylelint.svg +0 -0
  806. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_stylus.svg +0 -0
  807. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_symfony.svg +0 -0
  808. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_systemd.svg +0 -0
  809. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_systemverilog.svg +0 -0
  810. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_testcafe.svg +0 -0
  811. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_testjs.svg +0 -0
  812. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_tex.svg +0 -0
  813. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_tm.svg +0 -0
  814. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_tmux.svg +0 -0
  815. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_todo.svg +0 -0
  816. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_toit.svg +0 -0
  817. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_toml.svg +0 -0
  818. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_toon.svg +0 -0
  819. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_tree.svg +0 -0
  820. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_turbo.svg +0 -0
  821. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_unibeautify.svg +0 -0
  822. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_vash.svg +0 -0
  823. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_vercel.svg +0 -0
  824. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_vsix.svg +0 -0
  825. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_vsixmanifest.svg +0 -0
  826. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_xfl.svg +0 -0
  827. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_xorg.svg +0 -0
  828. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_yaml.svg +0 -0
  829. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_yaml_official.svg +0 -0
  830. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_light_zeit.svg +0 -0
  831. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lighthouse.svg +0 -0
  832. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lilypond.svg +0 -0
  833. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lime.svg +0 -0
  834. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lintstagedrc.svg +0 -0
  835. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_liquid.svg +0 -0
  836. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lisp.svg +0 -0
  837. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_livescript.svg +0 -0
  838. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lnk.svg +0 -0
  839. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_locale.svg +0 -0
  840. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_log.svg +0 -0
  841. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lolcode.svg +0 -0
  842. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lsl.svg +0 -0
  843. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lua.svg +0 -0
  844. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_luau.svg +0 -0
  845. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_lync.svg +0 -0
  846. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mailing.svg +0 -0
  847. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_makefile.svg +0 -0
  848. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_manifest.svg +0 -0
  849. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_manifest_bak.svg +0 -0
  850. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_manifest_skip.svg +0 -0
  851. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_map.svg +0 -0
  852. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mariadb.svg +0 -0
  853. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_markdown.svg +0 -0
  854. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_markdownlint.svg +0 -0
  855. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_markdownlint_ignore.svg +0 -0
  856. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_marko.svg +0 -0
  857. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_markojs.svg +0 -0
  858. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_markuplint.svg +0 -0
  859. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_master-co.svg +0 -0
  860. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_matlab.svg +0 -0
  861. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_maven.svg +0 -0
  862. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_maxscript.svg +0 -0
  863. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_maya.svg +0 -0
  864. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mcp.svg +0 -0
  865. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mdx-components.svg +0 -0
  866. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mdx.svg +0 -0
  867. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mdxlint.svg +0 -0
  868. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mediawiki.svg +0 -0
  869. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mercurial.svg +0 -0
  870. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mermaid.svg +0 -0
  871. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_meson.svg +0 -0
  872. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_metal.svg +0 -0
  873. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_meteor.svg +0 -0
  874. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_minecraft.svg +0 -0
  875. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mivascript.svg +0 -0
  876. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mjml.svg +0 -0
  877. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mlang.svg +0 -0
  878. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mocha.svg +0 -0
  879. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_modernizr.svg +0 -0
  880. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mojo.svg +0 -0
  881. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mojolicious.svg +0 -0
  882. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_moleculer.svg +0 -0
  883. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mondoo.svg +0 -0
  884. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mongo.svg +0 -0
  885. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_monotone.svg +0 -0
  886. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_motif.svg +0 -0
  887. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mson.svg +0 -0
  888. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mustache.svg +0 -0
  889. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mvt.svg +0 -0
  890. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mvtcss.svg +0 -0
  891. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mvtjs.svg +0 -0
  892. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mypy.svg +0 -0
  893. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_mysql.svg +0 -0
  894. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nanostaged.svg +0 -0
  895. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ndst.svg +0 -0
  896. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nearly.svg +0 -0
  897. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_neo4j.svg +0 -0
  898. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_js.svg +0 -0
  899. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_ts.svg +0 -0
  900. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_js.svg +0 -0
  901. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_ts.svg +0 -0
  902. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_js.svg +0 -0
  903. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_ts.svg +0 -0
  904. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_js.svg +0 -0
  905. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_ts.svg +0 -0
  906. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_js.svg +0 -0
  907. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_ts.svg +0 -0
  908. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_js.svg +0 -0
  909. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_ts.svg +0 -0
  910. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_js.svg +0 -0
  911. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_ts.svg +0 -0
  912. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_js.svg +0 -0
  913. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_ts.svg +0 -0
  914. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_module_js.svg +0 -0
  915. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_module_ts.svg +0 -0
  916. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_js.svg +0 -0
  917. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_ts.svg +0 -0
  918. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_service_js.svg +0 -0
  919. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nest_service_ts.svg +0 -0
  920. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nestjs.svg +0 -0
  921. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_netlify.svg +0 -0
  922. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_next.svg +0 -0
  923. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nextflow.svg +0 -0
  924. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_css.svg +0 -0
  925. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_dart.svg +0 -0
  926. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_html.svg +0 -0
  927. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js.svg +0 -0
  928. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js2.svg +0 -0
  929. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_less.svg +0 -0
  930. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_sass.svg +0 -0
  931. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_scss.svg +0 -0
  932. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts.svg +0 -0
  933. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts2.svg +0 -0
  934. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_js.svg +0 -0
  935. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_ts.svg +0 -0
  936. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_dart.svg +0 -0
  937. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js.svg +0 -0
  938. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js2.svg +0 -0
  939. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts.svg +0 -0
  940. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts2.svg +0 -0
  941. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_dart.svg +0 -0
  942. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_js.svg +0 -0
  943. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_ts.svg +0 -0
  944. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_dart.svg +0 -0
  945. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_js.svg +0 -0
  946. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_ts.svg +0 -0
  947. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_module_dart.svg +0 -0
  948. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js.svg +0 -0
  949. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js2.svg +0 -0
  950. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts.svg +0 -0
  951. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts2.svg +0 -0
  952. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_dart.svg +0 -0
  953. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js.svg +0 -0
  954. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js2.svg +0 -0
  955. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts.svg +0 -0
  956. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts2.svg +0 -0
  957. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_dart.svg +0 -0
  958. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js.svg +0 -0
  959. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js2.svg +0 -0
  960. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts.svg +0 -0
  961. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts2.svg +0 -0
  962. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_service_dart.svg +0 -0
  963. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js.svg +0 -0
  964. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js2.svg +0 -0
  965. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts.svg +0 -0
  966. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts2.svg +0 -0
  967. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_dart.svg +0 -0
  968. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js.svg +0 -0
  969. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js2.svg +0 -0
  970. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts.svg +0 -0
  971. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts2.svg +0 -0
  972. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ng_tailwind.svg +0 -0
  973. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nginx.svg +0 -0
  974. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nim.svg +0 -0
  975. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nimble.svg +0 -0
  976. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ninja.svg +0 -0
  977. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nix.svg +0 -0
  978. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_njsproj.svg +0 -0
  979. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_noc.svg +0 -0
  980. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_node.svg +0 -0
  981. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_node2.svg +0 -0
  982. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nodemon.svg +0 -0
  983. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_npm.svg +0 -0
  984. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_npmpackagejsonlint.svg +0 -0
  985. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nsi.svg +0 -0
  986. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nsri-integrity.svg +0 -0
  987. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nsri.svg +0 -0
  988. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nuget.svg +0 -0
  989. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_numpy.svg +0 -0
  990. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nunjucks.svg +0 -0
  991. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nushell.svg +0 -0
  992. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nuxt.svg +0 -0
  993. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nx.svg +0 -0
  994. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_nyc.svg +0 -0
  995. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_objectivec.svg +0 -0
  996. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_objectivecpp.svg +0 -0
  997. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_objidconfig.svg +0 -0
  998. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ocaml.svg +0 -0
  999. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ocaml_intf.svg +0 -0
  1000. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ogone.svg +0 -0
  1001. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_onenote.svg +0 -0
  1002. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_opam.svg +0 -0
  1003. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_openHAB.svg +0 -0
  1004. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_opencl.svg +0 -0
  1005. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_openscad.svg +0 -0
  1006. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_opentofu.svg +0 -0
  1007. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_org.svg +0 -0
  1008. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_outlook.svg +0 -0
  1009. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ovpn.svg +0 -0
  1010. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_oxc.svg +0 -0
  1011. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_oxlint.svg +0 -0
  1012. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_package.svg +0 -0
  1013. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_packship.svg +0 -0
  1014. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_paket.svg +0 -0
  1015. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pandacss.svg +0 -0
  1016. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_patch.svg +0 -0
  1017. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pcl.svg +0 -0
  1018. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pddl.svg +0 -0
  1019. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pddl_happenings.svg +0 -0
  1020. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pddl_plan.svg +0 -0
  1021. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pdf.svg +0 -0
  1022. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pdf2.svg +0 -0
  1023. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pdm.svg +0 -0
  1024. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_peeky.svg +0 -0
  1025. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_perl.svg +0 -0
  1026. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_perl2.svg +0 -0
  1027. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_perl6.svg +0 -0
  1028. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pgsql.svg +0 -0
  1029. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_photoshop.svg +0 -0
  1030. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_photoshop2.svg +0 -0
  1031. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_php.svg +0 -0
  1032. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_php2.svg +0 -0
  1033. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_php3.svg +0 -0
  1034. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_phpcsfixer.svg +0 -0
  1035. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_phpstan.svg +0 -0
  1036. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_phpunit.svg +0 -0
  1037. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_phraseapp.svg +0 -0
  1038. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pine.svg +0 -0
  1039. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pip.svg +0 -0
  1040. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pipeline.svg +0 -0
  1041. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_plantuml.svg +0 -0
  1042. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_platformio.svg +0 -0
  1043. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_playwright.svg +0 -0
  1044. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_plsql.svg +0 -0
  1045. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_plsql_package.svg +0 -0
  1046. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_body.svg +0 -0
  1047. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_header.svg +0 -0
  1048. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_spec.svg +0 -0
  1049. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pm2.svg +0 -0
  1050. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pnpm.svg +0 -0
  1051. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_poedit.svg +0 -0
  1052. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_poetry.svg +0 -0
  1053. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_polyglot.svg +0 -0
  1054. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_polymer.svg +0 -0
  1055. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pony.svg +0 -0
  1056. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_postcss.svg +0 -0
  1057. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_postcssconfig.svg +0 -0
  1058. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_postman.svg +0 -0
  1059. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_powerpoint.svg +0 -0
  1060. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_powerpoint2.svg +0 -0
  1061. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_powershell.svg +0 -0
  1062. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_powershell2.svg +0 -0
  1063. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_powershell_format.svg +0 -0
  1064. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd.svg +0 -0
  1065. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd2.svg +0 -0
  1066. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm.svg +0 -0
  1067. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm2.svg +0 -0
  1068. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_powershell_types.svg +0 -0
  1069. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_preact.svg +0 -0
  1070. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_precommit.svg +0 -0
  1071. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_prettier.svg +0 -0
  1072. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_prisma.svg +0 -0
  1073. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_prismaconfig.svg +0 -0
  1074. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_processinglang.svg +0 -0
  1075. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_procfile.svg +0 -0
  1076. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_progress.svg +0 -0
  1077. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_prolog.svg +0 -0
  1078. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_prometheus.svg +0 -0
  1079. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_protobuf.svg +0 -0
  1080. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_protractor.svg +0 -0
  1081. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_publiccode.svg +0 -0
  1082. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_publisher.svg +0 -0
  1083. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pug.svg +0 -0
  1084. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pulumi.svg +0 -0
  1085. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_puppet.svg +0 -0
  1086. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_purescript.svg +0 -0
  1087. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_purgecss.svg +0 -0
  1088. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pyenv.svg +0 -0
  1089. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pyret.svg +0 -0
  1090. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pyscript.svg +0 -0
  1091. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pytest.svg +0 -0
  1092. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_python.svg +0 -0
  1093. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pythowo.svg +0 -0
  1094. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pytyped.svg +0 -0
  1095. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_pyup.svg +0 -0
  1096. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_q.svg +0 -0
  1097. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_qbs.svg +0 -0
  1098. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_qlikview.svg +0 -0
  1099. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_qml.svg +0 -0
  1100. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_qmldir.svg +0 -0
  1101. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_qsharp.svg +0 -0
  1102. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_quasar.svg +0 -0
  1103. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_r.svg +0 -0
  1104. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ra_syntax_tree.svg +0 -0
  1105. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_racket.svg +0 -0
  1106. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rails.svg +0 -0
  1107. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rake.svg +0 -0
  1108. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_raku.svg +0 -0
  1109. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_raml.svg +0 -0
  1110. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_razor.svg +0 -0
  1111. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_razzle.svg +0 -0
  1112. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_reactjs.svg +0 -0
  1113. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_reactrouter.svg +0 -0
  1114. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_reacttemplate.svg +0 -0
  1115. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_reactts.svg +0 -0
  1116. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_reason.svg +0 -0
  1117. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_red.svg +0 -0
  1118. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_registry.svg +0 -0
  1119. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rego.svg +0 -0
  1120. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rehype.svg +0 -0
  1121. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_remark.svg +0 -0
  1122. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_renovate.svg +0 -0
  1123. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_replit.svg +0 -0
  1124. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rescript.svg +0 -0
  1125. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rest.svg +0 -0
  1126. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_retext.svg +0 -0
  1127. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rexx.svg +0 -0
  1128. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_riot.svg +0 -0
  1129. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ripple.svg +0 -0
  1130. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rmd.svg +0 -0
  1131. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rnc.svg +0 -0
  1132. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_robotframework.svg +0 -0
  1133. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_robots.svg +0 -0
  1134. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rolldown.svg +0 -0
  1135. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rollup.svg +0 -0
  1136. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rome.svg +0 -0
  1137. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ron.svg +0 -0
  1138. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rproj.svg +0 -0
  1139. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rspec.svg +0 -0
  1140. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rss.svg +0 -0
  1141. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rubocop.svg +0 -0
  1142. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ruby.svg +0 -0
  1143. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rust.svg +0 -0
  1144. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_rust_toolchain.svg +0 -0
  1145. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_s-lang.svg +0 -0
  1146. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_safetensors.svg +0 -0
  1147. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sails.svg +0 -0
  1148. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_saltstack.svg +0 -0
  1149. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_san.svg +0 -0
  1150. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sapphire_framework_cli.svg +0 -0
  1151. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sas.svg +0 -0
  1152. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sass.svg +0 -0
  1153. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sbt.svg +0 -0
  1154. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_scala.svg +0 -0
  1155. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_scilab.svg +0 -0
  1156. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_script.svg +0 -0
  1157. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_scss.svg +0 -0
  1158. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_scss2.svg +0 -0
  1159. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sdlang.svg +0 -0
  1160. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_search_result.svg +0 -0
  1161. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_seedkit.svg +0 -0
  1162. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sentry.svg +0 -0
  1163. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sequelize.svg +0 -0
  1164. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_serverless.svg +0 -0
  1165. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_shadcn.svg +0 -0
  1166. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_shaderlab.svg +0 -0
  1167. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_shell.svg +0 -0
  1168. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_shellcheck.svg +0 -0
  1169. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_shuttle.svg +0 -0
  1170. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_silverstripe.svg +0 -0
  1171. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sino.svg +0 -0
  1172. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sitemap.svg +0 -0
  1173. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_siyuan.svg +0 -0
  1174. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sketch.svg +0 -0
  1175. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_skipper.svg +0 -0
  1176. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_slang.svg +0 -0
  1177. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_slashup.svg +0 -0
  1178. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_slice.svg +0 -0
  1179. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_slim.svg +0 -0
  1180. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_slint.svg +0 -0
  1181. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sln.svg +0 -0
  1182. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sln2.svg +0 -0
  1183. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_smarty.svg +0 -0
  1184. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_smithery.svg +0 -0
  1185. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_snakemake.svg +0 -0
  1186. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_snapcraft.svg +0 -0
  1187. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_snaplet.svg +0 -0
  1188. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_snort.svg +0 -0
  1189. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_snyk.svg +0 -0
  1190. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_solidarity.svg +0 -0
  1191. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_solidity.svg +0 -0
  1192. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_source.svg +0 -0
  1193. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_spacengine.svg +0 -0
  1194. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sparql.svg +0 -0
  1195. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_spin.svg +0 -0
  1196. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sqf.svg +0 -0
  1197. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sql.svg +0 -0
  1198. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sqlite.svg +0 -0
  1199. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_squirrel.svg +0 -0
  1200. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sss.svg +0 -0
  1201. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sst.svg +0 -0
  1202. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_stackblitz.svg +0 -0
  1203. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_stan.svg +0 -0
  1204. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_stata.svg +0 -0
  1205. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_stencil.svg +0 -0
  1206. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_storyboard.svg +0 -0
  1207. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_storybook.svg +0 -0
  1208. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_stryker.svg +0 -0
  1209. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_stylable.svg +0 -0
  1210. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_style.svg +0 -0
  1211. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_styled.svg +0 -0
  1212. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_stylelint.svg +0 -0
  1213. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_stylish_haskell.svg +0 -0
  1214. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_stylus.svg +0 -0
  1215. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_sublime.svg +0 -0
  1216. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_subversion.svg +0 -0
  1217. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_svelte.svg +0 -0
  1218. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_svelteconfig.svg +0 -0
  1219. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_svg.svg +0 -0
  1220. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_svgo.svg +0 -0
  1221. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_swagger.svg +0 -0
  1222. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_swc.svg +0 -0
  1223. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_swift.svg +0 -0
  1224. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_swig.svg +0 -0
  1225. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_symfony.svg +0 -0
  1226. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_syncpack.svg +0 -0
  1227. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_systemd.svg +0 -0
  1228. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_systemverilog.svg +0 -0
  1229. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_t4tt.svg +0 -0
  1230. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tailwind.svg +0 -0
  1231. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tamagui.svg +0 -0
  1232. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_taplo.svg +0 -0
  1233. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_taskfile.svg +0 -0
  1234. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tauri.svg +0 -0
  1235. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tcl.svg +0 -0
  1236. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_teal.svg +0 -0
  1237. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_templ.svg +0 -0
  1238. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tera.svg +0 -0
  1239. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_terraform.svg +0 -0
  1240. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_test.svg +0 -0
  1241. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_testcafe.svg +0 -0
  1242. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_testjs.svg +0 -0
  1243. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_testplane.svg +0 -0
  1244. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_testts.svg +0 -0
  1245. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tex.svg +0 -0
  1246. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_text.svg +0 -0
  1247. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_textile.svg +0 -0
  1248. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tfs.svg +0 -0
  1249. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tiltfile.svg +0 -0
  1250. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tm.svg +0 -0
  1251. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tmux.svg +0 -0
  1252. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_todo.svg +0 -0
  1253. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_toit.svg +0 -0
  1254. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_toml.svg +0 -0
  1255. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_toon.svg +0 -0
  1256. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tox.svg +0 -0
  1257. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_travis.svg +0 -0
  1258. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tree.svg +0 -0
  1259. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tres.svg +0 -0
  1260. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_truffle.svg +0 -0
  1261. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_trunk.svg +0 -0
  1262. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tsbuildinfo.svg +0 -0
  1263. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tscn.svg +0 -0
  1264. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tsconfig.svg +0 -0
  1265. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tsconfig_official.svg +0 -0
  1266. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tsdoc.svg +0 -0
  1267. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tsdown.svg +0 -0
  1268. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tslint.svg +0 -0
  1269. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tt.svg +0 -0
  1270. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_ttcn.svg +0 -0
  1271. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_tuc.svg +0 -0
  1272. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_turbo.svg +0 -0
  1273. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_twig.svg +0 -0
  1274. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_typedoc.svg +0 -0
  1275. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_typescript.svg +0 -0
  1276. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_typescript_official.svg +0 -0
  1277. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef.svg +0 -0
  1278. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef_official.svg +0 -0
  1279. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_typo3.svg +0 -0
  1280. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_uiua.svg +0 -0
  1281. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_unibeautify.svg +0 -0
  1282. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_unison.svg +0 -0
  1283. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_unlicense.svg +0 -0
  1284. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_unocss.svg +0 -0
  1285. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_uv.svg +0 -0
  1286. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vagrant.svg +0 -0
  1287. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vala.svg +0 -0
  1288. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vanilla_extract.svg +0 -0
  1289. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vapi.svg +0 -0
  1290. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vapor.svg +0 -0
  1291. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vash.svg +0 -0
  1292. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vb.svg +0 -0
  1293. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vba.svg +0 -0
  1294. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vbhtml.svg +0 -0
  1295. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vbproj.svg +0 -0
  1296. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vcxproj.svg +0 -0
  1297. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_velocity.svg +0 -0
  1298. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vento.svg +0 -0
  1299. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vercel.svg +0 -0
  1300. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_verilog.svg +0 -0
  1301. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vhdl.svg +0 -0
  1302. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_video.svg +0 -0
  1303. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_view.svg +0 -0
  1304. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vim.svg +0 -0
  1305. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vite.svg +0 -0
  1306. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vitest.svg +0 -0
  1307. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vlang.svg +0 -0
  1308. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_volt.svg +0 -0
  1309. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vroom.svg +0 -0
  1310. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vscode-insiders.svg +0 -0
  1311. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vscode.svg +0 -0
  1312. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vscode2.svg +0 -0
  1313. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vscode3.svg +0 -0
  1314. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vscode_test.svg +0 -0
  1315. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vsix.svg +0 -0
  1316. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vsixmanifest.svg +0 -0
  1317. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vue.svg +0 -0
  1318. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vueconfig.svg +0 -0
  1319. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vvvvvv.svg +0 -0
  1320. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_vyper.svg +0 -0
  1321. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wallaby.svg +0 -0
  1322. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wally.svg +0 -0
  1323. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wasm.svg +0 -0
  1324. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_watchmanconfig.svg +0 -0
  1325. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wdio.svg +0 -0
  1326. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_weblate.svg +0 -0
  1327. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_webpack.svg +0 -0
  1328. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wenyan.svg +0 -0
  1329. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wercker.svg +0 -0
  1330. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wgsl.svg +0 -0
  1331. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wikitext.svg +0 -0
  1332. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_windi.svg +0 -0
  1333. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wit.svg +0 -0
  1334. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wolfram.svg +0 -0
  1335. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_word.svg +0 -0
  1336. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_word2.svg +0 -0
  1337. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wpml.svg +0 -0
  1338. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wurst.svg +0 -0
  1339. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wxml.svg +0 -0
  1340. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wxss.svg +0 -0
  1341. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_wxt.svg +0 -0
  1342. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_xaml.svg +0 -0
  1343. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_xcode.svg +0 -0
  1344. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_xfl.svg +0 -0
  1345. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_xib.svg +0 -0
  1346. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_xliff.svg +0 -0
  1347. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_xmake.svg +0 -0
  1348. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_xml.svg +0 -0
  1349. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_xo.svg +0 -0
  1350. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_xorg.svg +0 -0
  1351. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_xquery.svg +0 -0
  1352. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_xsl.svg +0 -0
  1353. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_yacc.svg +0 -0
  1354. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_yaml.svg +0 -0
  1355. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_yaml_official.svg +0 -0
  1356. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_yamllint.svg +0 -0
  1357. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_yandex.svg +0 -0
  1358. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_yang.svg +0 -0
  1359. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_yarn.svg +0 -0
  1360. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_yeoman.svg +0 -0
  1361. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_zeit.svg +0 -0
  1362. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_zig.svg +0 -0
  1363. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_zip.svg +0 -0
  1364. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/file_type_zip2.svg +0 -0
  1365. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_android.svg +0 -0
  1366. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_android_opened.svg +0 -0
  1367. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_angular.svg +0 -0
  1368. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_angular_opened.svg +0 -0
  1369. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_apache.svg +0 -0
  1370. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_apache_opened.svg +0 -0
  1371. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_api.svg +0 -0
  1372. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_api_opened.svg +0 -0
  1373. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_app.svg +0 -0
  1374. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_app_opened.svg +0 -0
  1375. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_arangodb.svg +0 -0
  1376. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_arangodb_opened.svg +0 -0
  1377. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_asset.svg +0 -0
  1378. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_asset_opened.svg +0 -0
  1379. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_astro.svg +0 -0
  1380. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_astro_opened.svg +0 -0
  1381. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_audio.svg +0 -0
  1382. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_audio_opened.svg +0 -0
  1383. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_aurelia.svg +0 -0
  1384. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_aurelia_opened.svg +0 -0
  1385. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_aws.svg +0 -0
  1386. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_aws_opened.svg +0 -0
  1387. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_azure.svg +0 -0
  1388. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_azure_opened.svg +0 -0
  1389. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines.svg +0 -0
  1390. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines_opened.svg +0 -0
  1391. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_binary.svg +0 -0
  1392. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_binary_opened.svg +0 -0
  1393. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_bloc.svg +0 -0
  1394. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_bloc_opened.svg +0 -0
  1395. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_blueprint.svg +0 -0
  1396. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_blueprint_opened.svg +0 -0
  1397. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_bot.svg +0 -0
  1398. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_bot_opened.svg +0 -0
  1399. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_bower.svg +0 -0
  1400. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_bower_opened.svg +0 -0
  1401. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_buildkite.svg +0 -0
  1402. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_buildkite_opened.svg +0 -0
  1403. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cake.svg +0 -0
  1404. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cake_opened.svg +0 -0
  1405. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cargo.svg +0 -0
  1406. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cargo_opened.svg +0 -0
  1407. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_certificate.svg +0 -0
  1408. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_certificate_opened.svg +0 -0
  1409. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_changesets.svg +0 -0
  1410. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_changesets_opened.svg +0 -0
  1411. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_chef.svg +0 -0
  1412. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_chef_opened.svg +0 -0
  1413. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_circleci.svg +0 -0
  1414. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_circleci_opened.svg +0 -0
  1415. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_claude.svg +0 -0
  1416. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_claude_opened.svg +0 -0
  1417. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cli.svg +0 -0
  1418. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cli_opened.svg +0 -0
  1419. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_client.svg +0 -0
  1420. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_client_opened.svg +0 -0
  1421. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare.svg +0 -0
  1422. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare_opened.svg +0 -0
  1423. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cmake.svg +0 -0
  1424. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cmake_opened.svg +0 -0
  1425. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_common.svg +0 -0
  1426. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_common_opened.svg +0 -0
  1427. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_component.svg +0 -0
  1428. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_component_opened.svg +0 -0
  1429. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_composer.svg +0 -0
  1430. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_composer_opened.svg +0 -0
  1431. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_config.svg +0 -0
  1432. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_config_opened.svg +0 -0
  1433. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_controller.svg +0 -0
  1434. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_controller_opened.svg +0 -0
  1435. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_coverage.svg +0 -0
  1436. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_coverage_opened.svg +0 -0
  1437. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_css.svg +0 -0
  1438. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_css2.svg +0 -0
  1439. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_css2_opened.svg +0 -0
  1440. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_css_opened.svg +0 -0
  1441. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cubit.svg +0 -0
  1442. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cubit_opened.svg +0 -0
  1443. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cursor.svg +0 -0
  1444. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cursor_opened.svg +0 -0
  1445. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cypress.svg +0 -0
  1446. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_cypress_opened.svg +0 -0
  1447. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_dapr.svg +0 -0
  1448. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_dapr_opened.svg +0 -0
  1449. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_dart.svg +0 -0
  1450. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_dart_opened.svg +0 -0
  1451. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_datadog.svg +0 -0
  1452. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_datadog_opened.svg +0 -0
  1453. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_db.svg +0 -0
  1454. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_db_opened.svg +0 -0
  1455. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_debian.svg +0 -0
  1456. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_debian_opened.svg +0 -0
  1457. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_dependabot.svg +0 -0
  1458. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_dependabot_opened.svg +0 -0
  1459. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer.svg +0 -0
  1460. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer_opened.svg +0 -0
  1461. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_dist.svg +0 -0
  1462. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_dist_opened.svg +0 -0
  1463. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_docker.svg +0 -0
  1464. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_docker_opened.svg +0 -0
  1465. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_docs.svg +0 -0
  1466. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_docs_opened.svg +0 -0
  1467. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_e2e.svg +0 -0
  1468. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_e2e_opened.svg +0 -0
  1469. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk.svg +0 -0
  1470. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk_opened.svg +0 -0
  1471. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_electron.svg +0 -0
  1472. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_electron_opened.svg +0 -0
  1473. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_expo.svg +0 -0
  1474. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_expo_opened.svg +0 -0
  1475. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_favicon.svg +0 -0
  1476. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_favicon_opened.svg +0 -0
  1477. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_flow.svg +0 -0
  1478. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_flow_opened.svg +0 -0
  1479. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_flutter.svg +0 -0
  1480. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_flutter_opened.svg +0 -0
  1481. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_fonts.svg +0 -0
  1482. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_fonts_opened.svg +0 -0
  1483. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce.svg +0 -0
  1484. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce_opened.svg +0 -0
  1485. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_gcp.svg +0 -0
  1486. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_gcp_opened.svg +0 -0
  1487. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_git.svg +0 -0
  1488. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_git_opened.svg +0 -0
  1489. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_github.svg +0 -0
  1490. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_github_opened.svg +0 -0
  1491. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_gitlab.svg +0 -0
  1492. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_gitlab_opened.svg +0 -0
  1493. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_godot.svg +0 -0
  1494. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_godot_opened.svg +0 -0
  1495. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_gradle.svg +0 -0
  1496. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_gradle_opened.svg +0 -0
  1497. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_graphql.svg +0 -0
  1498. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_graphql_opened.svg +0 -0
  1499. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_grunt.svg +0 -0
  1500. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_grunt_opened.svg +0 -0
  1501. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_gulp.svg +0 -0
  1502. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_gulp_opened.svg +0 -0
  1503. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_haxelib.svg +0 -0
  1504. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_haxelib_opened.svg +0 -0
  1505. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_helper.svg +0 -0
  1506. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_helper_opened.svg +0 -0
  1507. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_histoire.svg +0 -0
  1508. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_histoire_opened.svg +0 -0
  1509. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_hook.svg +0 -0
  1510. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_hook_opened.svg +0 -0
  1511. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_husky.svg +0 -0
  1512. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_husky_opened.svg +0 -0
  1513. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_idea.svg +0 -0
  1514. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_idea_opened.svg +0 -0
  1515. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_images.svg +0 -0
  1516. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_images_opened.svg +0 -0
  1517. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_include.svg +0 -0
  1518. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_include_opened.svg +0 -0
  1519. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_interfaces.svg +0 -0
  1520. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_interfaces_opened.svg +0 -0
  1521. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_ios.svg +0 -0
  1522. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_ios_opened.svg +0 -0
  1523. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_js.svg +0 -0
  1524. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_js_opened.svg +0 -0
  1525. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_json.svg +0 -0
  1526. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_json_official.svg +0 -0
  1527. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_json_official_opened.svg +0 -0
  1528. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_json_opened.svg +0 -0
  1529. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_junie.svg +0 -0
  1530. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_junie_opened.svg +0 -0
  1531. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_kotlin.svg +0 -0
  1532. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_kotlin_opened.svg +0 -0
  1533. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes.svg +0 -0
  1534. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes_opened.svg +0 -0
  1535. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_less.svg +0 -0
  1536. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_less_opened.svg +0 -0
  1537. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_library.svg +0 -0
  1538. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_library_opened.svg +0 -0
  1539. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor.svg +0 -0
  1540. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor_opened.svg +0 -0
  1541. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress.svg +0 -0
  1542. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress_opened.svg +0 -0
  1543. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_electron.svg +0 -0
  1544. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_electron_opened.svg +0 -0
  1545. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_expo.svg +0 -0
  1546. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_expo_opened.svg +0 -0
  1547. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts.svg +0 -0
  1548. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts_opened.svg +0 -0
  1549. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle.svg +0 -0
  1550. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle_opened.svg +0 -0
  1551. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor.svg +0 -0
  1552. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor_opened.svg +0 -0
  1553. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy.svg +0 -0
  1554. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy_opened.svg +0 -0
  1555. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql.svg +0 -0
  1556. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql_opened.svg +0 -0
  1557. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_node.svg +0 -0
  1558. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_node_opened.svg +0 -0
  1559. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_redux.svg +0 -0
  1560. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_redux_opened.svg +0 -0
  1561. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_sass.svg +0 -0
  1562. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_sass_opened.svg +0 -0
  1563. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_zed.svg +0 -0
  1564. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_light_zed_opened.svg +0 -0
  1565. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_linux.svg +0 -0
  1566. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_linux_opened.svg +0 -0
  1567. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_locale.svg +0 -0
  1568. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_locale_opened.svg +0 -0
  1569. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_log.svg +0 -0
  1570. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_log_opened.svg +0 -0
  1571. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_macos.svg +0 -0
  1572. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_macos_opened.svg +0 -0
  1573. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mariadb.svg +0 -0
  1574. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mariadb_opened.svg +0 -0
  1575. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_maven.svg +0 -0
  1576. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_maven_opened.svg +0 -0
  1577. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki.svg +0 -0
  1578. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki_opened.svg +0 -0
  1579. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_memcached.svg +0 -0
  1580. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_memcached_opened.svg +0 -0
  1581. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_meteor.svg +0 -0
  1582. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_meteor_opened.svg +0 -0
  1583. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_middleware.svg +0 -0
  1584. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_middleware_opened.svg +0 -0
  1585. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_minecraft.svg +0 -0
  1586. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_minecraft_opened.svg +0 -0
  1587. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_minikube.svg +0 -0
  1588. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_minikube_opened.svg +0 -0
  1589. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mjml.svg +0 -0
  1590. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mjml_opened.svg +0 -0
  1591. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mock.svg +0 -0
  1592. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mock_opened.svg +0 -0
  1593. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_model.svg +0 -0
  1594. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_model_opened.svg +0 -0
  1595. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_module.svg +0 -0
  1596. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_module_opened.svg +0 -0
  1597. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mojo.svg +0 -0
  1598. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mojo_opened.svg +0 -0
  1599. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mongodb.svg +0 -0
  1600. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mongodb_opened.svg +0 -0
  1601. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mypy.svg +0 -0
  1602. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mypy_opened.svg +0 -0
  1603. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mysql.svg +0 -0
  1604. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_mysql_opened.svg +0 -0
  1605. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_netlify.svg +0 -0
  1606. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_netlify_opened.svg +0 -0
  1607. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_next.svg +0 -0
  1608. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_next_opened.svg +0 -0
  1609. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_nginx.svg +0 -0
  1610. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_nginx_opened.svg +0 -0
  1611. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_nix.svg +0 -0
  1612. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_nix_opened.svg +0 -0
  1613. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_node.svg +0 -0
  1614. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_node_opened.svg +0 -0
  1615. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_notebooks.svg +0 -0
  1616. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_notebooks_opened.svg +0 -0
  1617. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_notification.svg +0 -0
  1618. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_notification_opened.svg +0 -0
  1619. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_nuget.svg +0 -0
  1620. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_nuget_opened.svg +0 -0
  1621. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_nuxt.svg +0 -0
  1622. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_nuxt_opened.svg +0 -0
  1623. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_package.svg +0 -0
  1624. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_package_opened.svg +0 -0
  1625. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_paket.svg +0 -0
  1626. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_paket_opened.svg +0 -0
  1627. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_php.svg +0 -0
  1628. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_php_opened.svg +0 -0
  1629. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_platformio.svg +0 -0
  1630. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_platformio_opened.svg +0 -0
  1631. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_plugin.svg +0 -0
  1632. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_plugin_opened.svg +0 -0
  1633. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_prisma.svg +0 -0
  1634. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_prisma_opened.svg +0 -0
  1635. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_private.svg +0 -0
  1636. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_private_opened.svg +0 -0
  1637. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_public.svg +0 -0
  1638. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_public_opened.svg +0 -0
  1639. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_pytest.svg +0 -0
  1640. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_pytest_opened.svg +0 -0
  1641. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_python.svg +0 -0
  1642. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_python_opened.svg +0 -0
  1643. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_ravendb.svg +0 -0
  1644. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_ravendb_opened.svg +0 -0
  1645. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_redis.svg +0 -0
  1646. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_redis_opened.svg +0 -0
  1647. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_redux.svg +0 -0
  1648. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_redux_opened.svg +0 -0
  1649. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_route.svg +0 -0
  1650. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_route_opened.svg +0 -0
  1651. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_sass.svg +0 -0
  1652. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_sass_opened.svg +0 -0
  1653. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_script.svg +0 -0
  1654. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_script_opened.svg +0 -0
  1655. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_seedkit.svg +0 -0
  1656. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_seedkit_opened.svg +0 -0
  1657. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_server.svg +0 -0
  1658. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_server_opened.svg +0 -0
  1659. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_services.svg +0 -0
  1660. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_services_opened.svg +0 -0
  1661. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_shared.svg +0 -0
  1662. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_shared_opened.svg +0 -0
  1663. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_snaplet.svg +0 -0
  1664. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_snaplet_opened.svg +0 -0
  1665. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_spin.svg +0 -0
  1666. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_spin_opened.svg +0 -0
  1667. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_src.svg +0 -0
  1668. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_src_opened.svg +0 -0
  1669. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_sso.svg +0 -0
  1670. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_sso_opened.svg +0 -0
  1671. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_story.svg +0 -0
  1672. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_story_opened.svg +0 -0
  1673. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_style.svg +0 -0
  1674. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_style_opened.svg +0 -0
  1675. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_supabase.svg +0 -0
  1676. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_supabase_opened.svg +0 -0
  1677. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_svelte.svg +0 -0
  1678. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_svelte_opened.svg +0 -0
  1679. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_tauri.svg +0 -0
  1680. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_tauri_opened.svg +0 -0
  1681. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_temp.svg +0 -0
  1682. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_temp_opened.svg +0 -0
  1683. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_template.svg +0 -0
  1684. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_template_opened.svg +0 -0
  1685. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_test.svg +0 -0
  1686. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_test_opened.svg +0 -0
  1687. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_theme.svg +0 -0
  1688. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_theme_opened.svg +0 -0
  1689. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_tools.svg +0 -0
  1690. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_tools_opened.svg +0 -0
  1691. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_travis.svg +0 -0
  1692. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_travis_opened.svg +0 -0
  1693. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_trunk.svg +0 -0
  1694. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_trunk_opened.svg +0 -0
  1695. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_turbo.svg +0 -0
  1696. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_turbo_opened.svg +0 -0
  1697. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_typescript.svg +0 -0
  1698. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_typescript_opened.svg +0 -0
  1699. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_typings.svg +0 -0
  1700. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_typings2.svg +0 -0
  1701. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_typings2_opened.svg +0 -0
  1702. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_typings_opened.svg +0 -0
  1703. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vagrant.svg +0 -0
  1704. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vagrant_opened.svg +0 -0
  1705. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vercel.svg +0 -0
  1706. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vercel_opened.svg +0 -0
  1707. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_video.svg +0 -0
  1708. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_video_opened.svg +0 -0
  1709. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_view.svg +0 -0
  1710. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_view_opened.svg +0 -0
  1711. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vitepress.svg +0 -0
  1712. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vitepress_opened.svg +0 -0
  1713. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vs.svg +0 -0
  1714. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vs2.svg +0 -0
  1715. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vs2_opened.svg +0 -0
  1716. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vs_opened.svg +0 -0
  1717. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode.svg +0 -0
  1718. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode2.svg +0 -0
  1719. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode2_opened.svg +0 -0
  1720. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode3.svg +0 -0
  1721. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode3_opened.svg +0 -0
  1722. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_opened.svg +0 -0
  1723. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test.svg +0 -0
  1724. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2.svg +0 -0
  1725. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2_opened.svg +0 -0
  1726. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3.svg +0 -0
  1727. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3_opened.svg +0 -0
  1728. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test_opened.svg +0 -0
  1729. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_wasm.svg +0 -0
  1730. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_wasm_opened.svg +0 -0
  1731. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_webpack.svg +0 -0
  1732. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_webpack_opened.svg +0 -0
  1733. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_windows.svg +0 -0
  1734. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_windows_opened.svg +0 -0
  1735. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_windsurf.svg +0 -0
  1736. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_windsurf_opened.svg +0 -0
  1737. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_wit.svg +0 -0
  1738. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_wit_opened.svg +0 -0
  1739. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_www.svg +0 -0
  1740. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_www_opened.svg +0 -0
  1741. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_yarn.svg +0 -0
  1742. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_yarn_opened.svg +0 -0
  1743. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_zed.svg +0 -0
  1744. /package/static/{101c327 → fd1a2e0}/extensions/builtin.vscode-icons/icons/folder_type_zed_opened.svg +0 -0
  1745. /package/static/{101c327 → fd1a2e0}/fonts/FiraCode-VariableFont.ttf +0 -0
  1746. /package/static/{101c327 → fd1a2e0}/icons/add.svg +0 -0
  1747. /package/static/{101c327 → fd1a2e0}/icons/arrow-down.svg +0 -0
  1748. /package/static/{101c327 → fd1a2e0}/icons/arrow-left.svg +0 -0
  1749. /package/static/{101c327 → fd1a2e0}/icons/arrow-right.svg +0 -0
  1750. /package/static/{101c327 → fd1a2e0}/icons/arrow-up.svg +0 -0
  1751. /package/static/{101c327 → fd1a2e0}/icons/blank.svg +0 -0
  1752. /package/static/{101c327 → fd1a2e0}/icons/book.svg +0 -0
  1753. /package/static/{101c327 → fd1a2e0}/icons/case-sensitive.svg +0 -0
  1754. /package/static/{101c327 → fd1a2e0}/icons/check.svg +0 -0
  1755. /package/static/{101c327 → fd1a2e0}/icons/chevron-down.svg +0 -0
  1756. /package/static/{101c327 → fd1a2e0}/icons/chevron-left.svg +0 -0
  1757. /package/static/{101c327 → fd1a2e0}/icons/chevron-right.svg +0 -0
  1758. /package/static/{101c327 → fd1a2e0}/icons/chevron-up.svg +0 -0
  1759. /package/static/{101c327 → fd1a2e0}/icons/chrome-close.svg +0 -0
  1760. /package/static/{101c327 → fd1a2e0}/icons/chrome-maximize.svg +0 -0
  1761. /package/static/{101c327 → fd1a2e0}/icons/chrome-minimize.svg +0 -0
  1762. /package/static/{101c327 → fd1a2e0}/icons/chrome-restore.svg +0 -0
  1763. /package/static/{101c327 → fd1a2e0}/icons/circle-filled.svg +0 -0
  1764. /package/static/{101c327 → fd1a2e0}/icons/clear-all.svg +0 -0
  1765. /package/static/{101c327 → fd1a2e0}/icons/close.svg +0 -0
  1766. /package/static/{101c327 → fd1a2e0}/icons/cloud.svg +0 -0
  1767. /package/static/{101c327 → fd1a2e0}/icons/collapse-all.svg +0 -0
  1768. /package/static/{101c327 → fd1a2e0}/icons/debug-all.svg +0 -0
  1769. /package/static/{101c327 → fd1a2e0}/icons/debug-alt-2.svg +0 -0
  1770. /package/static/{101c327 → fd1a2e0}/icons/debug-alt-small.svg +0 -0
  1771. /package/static/{101c327 → fd1a2e0}/icons/debug-alt.svg +0 -0
  1772. /package/static/{101c327 → fd1a2e0}/icons/debug-breakpoint-conditional-unverified.svg +0 -0
  1773. /package/static/{101c327 → fd1a2e0}/icons/debug-breakpoint-conditional.svg +0 -0
  1774. /package/static/{101c327 → fd1a2e0}/icons/debug-breakpoint-data-unverified.svg +0 -0
  1775. /package/static/{101c327 → fd1a2e0}/icons/debug-breakpoint-data.svg +0 -0
  1776. /package/static/{101c327 → fd1a2e0}/icons/debug-breakpoint-function-unverified.svg +0 -0
  1777. /package/static/{101c327 → fd1a2e0}/icons/debug-breakpoint-function.svg +0 -0
  1778. /package/static/{101c327 → fd1a2e0}/icons/debug-breakpoint-log-unverified.svg +0 -0
  1779. /package/static/{101c327 → fd1a2e0}/icons/debug-breakpoint-log.svg +0 -0
  1780. /package/static/{101c327 → fd1a2e0}/icons/debug-breakpoint-unsupported.svg +0 -0
  1781. /package/static/{101c327 → fd1a2e0}/icons/debug-console.svg +0 -0
  1782. /package/static/{101c327 → fd1a2e0}/icons/debug-continue-small.svg +0 -0
  1783. /package/static/{101c327 → fd1a2e0}/icons/debug-continue.svg +0 -0
  1784. /package/static/{101c327 → fd1a2e0}/icons/debug-coverage.svg +0 -0
  1785. /package/static/{101c327 → fd1a2e0}/icons/debug-disconnect.svg +0 -0
  1786. /package/static/{101c327 → fd1a2e0}/icons/debug-line-by-line.svg +0 -0
  1787. /package/static/{101c327 → fd1a2e0}/icons/debug-pause.svg +0 -0
  1788. /package/static/{101c327 → fd1a2e0}/icons/debug-rerun.svg +0 -0
  1789. /package/static/{101c327 → fd1a2e0}/icons/debug-restart-frame.svg +0 -0
  1790. /package/static/{101c327 → fd1a2e0}/icons/debug-restart.svg +0 -0
  1791. /package/static/{101c327 → fd1a2e0}/icons/debug-reverse-continue.svg +0 -0
  1792. /package/static/{101c327 → fd1a2e0}/icons/debug-stackframe-active.svg +0 -0
  1793. /package/static/{101c327 → fd1a2e0}/icons/debug-stackframe.svg +0 -0
  1794. /package/static/{101c327 → fd1a2e0}/icons/debug-start.svg +0 -0
  1795. /package/static/{101c327 → fd1a2e0}/icons/debug-step-back.svg +0 -0
  1796. /package/static/{101c327 → fd1a2e0}/icons/debug-step-into.svg +0 -0
  1797. /package/static/{101c327 → fd1a2e0}/icons/debug-step-out.svg +0 -0
  1798. /package/static/{101c327 → fd1a2e0}/icons/debug-step-over.svg +0 -0
  1799. /package/static/{101c327 → fd1a2e0}/icons/debug-stop.svg +0 -0
  1800. /package/static/{101c327 → fd1a2e0}/icons/debug.svg +0 -0
  1801. /package/static/{101c327 → fd1a2e0}/icons/discard.svg +0 -0
  1802. /package/static/{101c327 → fd1a2e0}/icons/edit.svg +0 -0
  1803. /package/static/{101c327 → fd1a2e0}/icons/ellipsis.svg +0 -0
  1804. /package/static/{101c327 → fd1a2e0}/icons/error.svg +0 -0
  1805. /package/static/{101c327 → fd1a2e0}/icons/exclude.svg +0 -0
  1806. /package/static/{101c327 → fd1a2e0}/icons/extensionDefaultIcon.png +0 -0
  1807. /package/static/{101c327 → fd1a2e0}/icons/extensions.svg +0 -0
  1808. /package/static/{101c327 → fd1a2e0}/icons/files.svg +0 -0
  1809. /package/static/{101c327 → fd1a2e0}/icons/filter.svg +0 -0
  1810. /package/static/{101c327 → fd1a2e0}/icons/go-to-file.svg +0 -0
  1811. /package/static/{101c327 → fd1a2e0}/icons/icon-close.svg +0 -0
  1812. /package/static/{101c327 → fd1a2e0}/icons/icon-source-control.svg +0 -0
  1813. /package/static/{101c327 → fd1a2e0}/icons/icon-sync.svg +0 -0
  1814. /package/static/{101c327 → fd1a2e0}/icons/icon.png +0 -0
  1815. /package/static/{101c327 → fd1a2e0}/icons/icon.svg +0 -0
  1816. /package/static/{101c327 → fd1a2e0}/icons/info.svg +0 -0
  1817. /package/static/{101c327 → fd1a2e0}/icons/language-icon.svg +0 -0
  1818. /package/static/{101c327 → fd1a2e0}/icons/link-external.svg +0 -0
  1819. /package/static/{101c327 → fd1a2e0}/icons/list-flat.svg +0 -0
  1820. /package/static/{101c327 → fd1a2e0}/icons/list-tree.svg +0 -0
  1821. /package/static/{101c327 → fd1a2e0}/icons/new-file.svg +0 -0
  1822. /package/static/{101c327 → fd1a2e0}/icons/new-folder.svg +0 -0
  1823. /package/static/{101c327 → fd1a2e0}/icons/newline.svg +0 -0
  1824. /package/static/{101c327 → fd1a2e0}/icons/open-preview.svg +0 -0
  1825. /package/static/{101c327 → fd1a2e0}/icons/play.svg +0 -0
  1826. /package/static/{101c327 → fd1a2e0}/icons/preserve-case.svg +0 -0
  1827. /package/static/{101c327 → fd1a2e0}/icons/progress.svg +0 -0
  1828. /package/static/{101c327 → fd1a2e0}/icons/pwa-icon-192.png +0 -0
  1829. /package/static/{101c327 → fd1a2e0}/icons/pwa-icon-512.png +0 -0
  1830. /package/static/{101c327 → fd1a2e0}/icons/record-keys.svg +0 -0
  1831. /package/static/{101c327 → fd1a2e0}/icons/refresh.svg +0 -0
  1832. /package/static/{101c327 → fd1a2e0}/icons/regex.svg +0 -0
  1833. /package/static/{101c327 → fd1a2e0}/icons/remove.svg +0 -0
  1834. /package/static/{101c327 → fd1a2e0}/icons/replace-all.svg +0 -0
  1835. /package/static/{101c327 → fd1a2e0}/icons/replace.svg +0 -0
  1836. /package/static/{101c327 → fd1a2e0}/icons/repo.svg +0 -0
  1837. /package/static/{101c327 → fd1a2e0}/icons/run-all.svg +0 -0
  1838. /package/static/{101c327 → fd1a2e0}/icons/search.svg +0 -0
  1839. /package/static/{101c327 → fd1a2e0}/icons/send.svg +0 -0
  1840. /package/static/{101c327 → fd1a2e0}/icons/settings-gear.svg +0 -0
  1841. /package/static/{101c327 → fd1a2e0}/icons/sort-precedence.svg +0 -0
  1842. /package/static/{101c327 → fd1a2e0}/icons/source-control.svg +0 -0
  1843. /package/static/{101c327 → fd1a2e0}/icons/split-horizontal.svg +0 -0
  1844. /package/static/{101c327 → fd1a2e0}/icons/squiggly-error.svg +0 -0
  1845. /package/static/{101c327 → fd1a2e0}/icons/squiggly-warning.svg +0 -0
  1846. /package/static/{101c327 → fd1a2e0}/icons/symbol-array.svg +0 -0
  1847. /package/static/{101c327 → fd1a2e0}/icons/symbol-boolean.svg +0 -0
  1848. /package/static/{101c327 → fd1a2e0}/icons/symbol-class.svg +0 -0
  1849. /package/static/{101c327 → fd1a2e0}/icons/symbol-color.svg +0 -0
  1850. /package/static/{101c327 → fd1a2e0}/icons/symbol-constant.svg +0 -0
  1851. /package/static/{101c327 → fd1a2e0}/icons/symbol-enum-member.svg +0 -0
  1852. /package/static/{101c327 → fd1a2e0}/icons/symbol-enum.svg +0 -0
  1853. /package/static/{101c327 → fd1a2e0}/icons/symbol-event.svg +0 -0
  1854. /package/static/{101c327 → fd1a2e0}/icons/symbol-field.svg +0 -0
  1855. /package/static/{101c327 → fd1a2e0}/icons/symbol-file.svg +0 -0
  1856. /package/static/{101c327 → fd1a2e0}/icons/symbol-interface.svg +0 -0
  1857. /package/static/{101c327 → fd1a2e0}/icons/symbol-key.svg +0 -0
  1858. /package/static/{101c327 → fd1a2e0}/icons/symbol-keyword.svg +0 -0
  1859. /package/static/{101c327 → fd1a2e0}/icons/symbol-method.svg +0 -0
  1860. /package/static/{101c327 → fd1a2e0}/icons/symbol-misc.svg +0 -0
  1861. /package/static/{101c327 → fd1a2e0}/icons/symbol-namespace.svg +0 -0
  1862. /package/static/{101c327 → fd1a2e0}/icons/symbol-numeric.svg +0 -0
  1863. /package/static/{101c327 → fd1a2e0}/icons/symbol-operator.svg +0 -0
  1864. /package/static/{101c327 → fd1a2e0}/icons/symbol-parameter.svg +0 -0
  1865. /package/static/{101c327 → fd1a2e0}/icons/symbol-property.svg +0 -0
  1866. /package/static/{101c327 → fd1a2e0}/icons/symbol-ruler.svg +0 -0
  1867. /package/static/{101c327 → fd1a2e0}/icons/symbol-snippet.svg +0 -0
  1868. /package/static/{101c327 → fd1a2e0}/icons/symbol-string.svg +0 -0
  1869. /package/static/{101c327 → fd1a2e0}/icons/symbol-structure.svg +0 -0
  1870. /package/static/{101c327 → fd1a2e0}/icons/symbol-variable.svg +0 -0
  1871. /package/static/{101c327 → fd1a2e0}/icons/tag.svg +0 -0
  1872. /package/static/{101c327 → fd1a2e0}/icons/terminal-bash.svg +0 -0
  1873. /package/static/{101c327 → fd1a2e0}/icons/terminal.svg +0 -0
  1874. /package/static/{101c327 → fd1a2e0}/icons/theme-icon.png +0 -0
  1875. /package/static/{101c327 → fd1a2e0}/icons/trash.svg +0 -0
  1876. /package/static/{101c327 → fd1a2e0}/icons/triangle-down.svg +0 -0
  1877. /package/static/{101c327 → fd1a2e0}/icons/triangle-left.svg +0 -0
  1878. /package/static/{101c327 → fd1a2e0}/icons/triangle-right.svg +0 -0
  1879. /package/static/{101c327 → fd1a2e0}/icons/triangle-up.svg +0 -0
  1880. /package/static/{101c327 → fd1a2e0}/icons/warning.svg +0 -0
  1881. /package/static/{101c327 → fd1a2e0}/icons/whole-word.svg +0 -0
  1882. /package/static/{101c327 → fd1a2e0}/icons/zoom-in.svg +0 -0
  1883. /package/static/{101c327 → fd1a2e0}/icons/zoom-out.svg +0 -0
  1884. /package/static/{101c327 → fd1a2e0}/js/babel-parser.js +0 -0
  1885. /package/static/{101c327 → fd1a2e0}/js/ky.js +0 -0
  1886. /package/static/{101c327 → fd1a2e0}/js/lvce-editor-import-script.js +0 -0
  1887. /package/static/{101c327 → fd1a2e0}/js/lvce-editor-ipc.js +0 -0
  1888. /package/static/{101c327 → fd1a2e0}/js/lvce-editor-json-rpc.js +0 -0
  1889. /package/static/{101c327 → fd1a2e0}/js/lvce-editor-rpc.js +0 -0
  1890. /package/static/{101c327 → fd1a2e0}/js/lvce-editor-verror.js +0 -0
  1891. /package/static/{101c327 → fd1a2e0}/js/p-min-delay.js +0 -0
  1892. /package/static/{101c327 → fd1a2e0}/js/pretty-bytes.js +0 -0
  1893. /package/static/{101c327 → fd1a2e0}/js/preview-injected.js +0 -0
  1894. /package/static/{101c327 → fd1a2e0}/js/yoctodelay.js +0 -0
  1895. /package/static/{101c327 → fd1a2e0}/lib-css/termterm.css +0 -0
  1896. /package/static/{101c327 → fd1a2e0}/packages/activity-bar-worker/dist/activityBarWorkerMain.js +0 -0
  1897. /package/static/{101c327 → fd1a2e0}/packages/chat-debug-view/dist/chatDebugViewWorkerMain.js +0 -0
  1898. /package/static/{101c327 → fd1a2e0}/packages/chat-math-worker/dist/chatMathWorkerMain.js +0 -0
  1899. /package/static/{101c327 → fd1a2e0}/packages/chat-network-worker/dist/chatNetworkWorkerMain.js +0 -0
  1900. /package/static/{101c327 → fd1a2e0}/packages/chat-storage-worker/dist/chatStorageWorkerMain.js +0 -0
  1901. /package/static/{101c327 → fd1a2e0}/packages/chat-tool-worker/dist/chatToolWorkerMain.js +0 -0
  1902. /package/static/{101c327 → fd1a2e0}/packages/clipboard-worker/dist/clipBoardWorkerMain.js +0 -0
  1903. /package/static/{101c327 → fd1a2e0}/packages/color-picker-worker/dist/colorPickerWorkerMain.js +0 -0
  1904. /package/static/{101c327 → fd1a2e0}/packages/completion-worker/dist/completionWorkerMain.js +0 -0
  1905. /package/static/{101c327 → fd1a2e0}/packages/debug-worker/dist/debugWorkerMain.js +0 -0
  1906. /package/static/{101c327 → fd1a2e0}/packages/editor-worker/dist/editorWorkerMain.js +0 -0
  1907. /package/static/{101c327 → fd1a2e0}/packages/embeds-worker/dist/embedsWorkerMain.js +0 -0
  1908. /package/static/{101c327 → fd1a2e0}/packages/error-worker/dist/errorWorkerMain.js +0 -0
  1909. /package/static/{101c327 → fd1a2e0}/packages/extension-detail-view-worker/dist/extensionDetailViewWorkerMain.js +0 -0
  1910. /package/static/{101c327 → fd1a2e0}/packages/extension-host-sub-worker/dist/extensionHostSubWorkerMain.js +0 -0
  1911. /package/static/{101c327 → fd1a2e0}/packages/extension-management-worker/dist/extensionManagementWorkerMain.js +0 -0
  1912. /package/static/{101c327 → fd1a2e0}/packages/extension-search-view-worker/dist/extensionSearchViewWorkerMain.js +0 -0
  1913. /package/static/{101c327 → fd1a2e0}/packages/file-search-worker/dist/fileSearchWorkerMain.js +0 -0
  1914. /package/static/{101c327 → fd1a2e0}/packages/file-system-worker/dist/fileSystemWorkerMain.js +0 -0
  1915. /package/static/{101c327 → fd1a2e0}/packages/find-widget-worker/dist/findWidgetWorkerMain.js +0 -0
  1916. /package/static/{101c327 → fd1a2e0}/packages/hover-worker/dist/hoverWorkerMain.js +0 -0
  1917. /package/static/{101c327 → fd1a2e0}/packages/icon-theme-worker/dist/iconThemeWorkerMain.js +0 -0
  1918. /package/static/{101c327 → fd1a2e0}/packages/iframe-inspector/dist/iframeInspectorWorkerMain.js +0 -0
  1919. /package/static/{101c327 → fd1a2e0}/packages/iframe-worker/dist/iframeWorkerMain.js +0 -0
  1920. /package/static/{101c327 → fd1a2e0}/packages/keybindings-view-worker/dist/keyBindingsViewWorkerMain.js +0 -0
  1921. /package/static/{101c327 → fd1a2e0}/packages/language-models-view/dist/languageModelsViewMain.js +0 -0
  1922. /package/static/{101c327 → fd1a2e0}/packages/main-area-worker/dist/mainAreaWorkerMain.js +0 -0
  1923. /package/static/{101c327 → fd1a2e0}/packages/markdown-worker/dist/markdownWorkerMain.js +0 -0
  1924. /package/static/{101c327 → fd1a2e0}/packages/menu-worker/dist/menuWorkerMain.js +0 -0
  1925. /package/static/{101c327 → fd1a2e0}/packages/opener-worker/dist/openerWorkerMain.js +0 -0
  1926. /package/static/{101c327 → fd1a2e0}/packages/output-view/dist/outputViewWorkerMain.js +0 -0
  1927. /package/static/{101c327 → fd1a2e0}/packages/panel-worker/dist/panelWorkerMain.js +0 -0
  1928. /package/static/{101c327 → fd1a2e0}/packages/preload/dist/index.js +0 -0
  1929. /package/static/{101c327 → fd1a2e0}/packages/preview-sandbox-worker/dist/previewSandBoxWorkerMain.js +0 -0
  1930. /package/static/{101c327 → fd1a2e0}/packages/problems-view/dist/problemsViewWorkerMain.js +0 -0
  1931. /package/static/{101c327 → fd1a2e0}/packages/quick-pick-worker/dist/quickPickWorkerMain.js +0 -0
  1932. /package/static/{101c327 → fd1a2e0}/packages/references-view/dist/referencesViewWorkerMain.js +0 -0
  1933. /package/static/{101c327 → fd1a2e0}/packages/rename-worker/dist/renameWorkerMain.js +0 -0
  1934. /package/static/{101c327 → fd1a2e0}/packages/renderer-process/LICENSE +0 -0
  1935. /package/static/{101c327 → fd1a2e0}/packages/renderer-process/README.md +0 -0
  1936. /package/static/{101c327 → fd1a2e0}/packages/renderer-process/package.json +0 -0
  1937. /package/static/{101c327 → fd1a2e0}/packages/settings-view/dist/settingsViewWorkerMain.js +0 -0
  1938. /package/static/{101c327 → fd1a2e0}/packages/source-action-worker/dist/sourceActionWorkerMain.js +0 -0
  1939. /package/static/{101c327 → fd1a2e0}/packages/source-control-worker/dist/sourceControlWorkerMain.js +0 -0
  1940. /package/static/{101c327 → fd1a2e0}/packages/status-bar-worker/dist/statusBarWorkerMain.js +0 -0
  1941. /package/static/{101c327 → fd1a2e0}/packages/syntax-highlighting-worker/dist/syntaxHighlightingWorkerMain.js +0 -0
  1942. /package/static/{101c327 → fd1a2e0}/packages/terminal-worker/dist/terminalWorkerMain.js +0 -0
  1943. /package/static/{101c327 → fd1a2e0}/packages/text-measurement-worker/dist/textMeasurementWorkerMain.js +0 -0
  1944. /package/static/{101c327 → fd1a2e0}/packages/text-search-worker/dist/textSearchWorkerMain.js +0 -0
  1945. /package/static/{101c327 → fd1a2e0}/packages/title-bar-worker/dist/titleBarWorkerMain.js +0 -0
  1946. /package/static/{101c327 → fd1a2e0}/packages/update-worker/dist/updateWorkerMain.js +0 -0
  1947. /package/static/{101c327 → fd1a2e0}/playground/languages/index.cpp +0 -0
  1948. /package/static/{101c327 → fd1a2e0}/playground/languages/index.css +0 -0
  1949. /package/static/{101c327 → fd1a2e0}/playground/languages/index.csv +0 -0
  1950. /package/static/{101c327 → fd1a2e0}/playground/languages/index.dart +0 -0
  1951. /package/static/{101c327 → fd1a2e0}/playground/languages/index.env +0 -0
  1952. /package/static/{101c327 → fd1a2e0}/playground/languages/index.ex +0 -0
  1953. /package/static/{101c327 → fd1a2e0}/playground/languages/index.html +0 -0
  1954. /package/static/{101c327 → fd1a2e0}/playground/languages/index.java +0 -0
  1955. /package/static/{101c327 → fd1a2e0}/playground/languages/index.jl +0 -0
  1956. /package/static/{101c327 → fd1a2e0}/playground/languages/index.js +0 -0
  1957. /package/static/{101c327 → fd1a2e0}/playground/languages/index.json +0 -0
  1958. /package/static/{101c327 → fd1a2e0}/playground/languages/index.kt +0 -0
  1959. /package/static/{101c327 → fd1a2e0}/playground/languages/index.pl +0 -0
  1960. /package/static/{101c327 → fd1a2e0}/playground/languages/index.py +0 -0
  1961. /package/static/{101c327 → fd1a2e0}/playground/languages/index.ts +0 -0
  1962. /package/static/{101c327 → fd1a2e0}/playground/languages/scrolling.txt +0 -0
  1963. /package/static/{101c327 → fd1a2e0}/playground/languages/tsconfig.json +0 -0
  1964. /package/static/{101c327 → fd1a2e0}/playground/sample-folder/a.txt +0 -0
  1965. /package/static/{101c327 → fd1a2e0}/playground/sample-folder/b.txt +0 -0
  1966. /package/static/{101c327 → fd1a2e0}/playground/sample-folder/c.txt +0 -0
@@ -1118,20 +1118,13 @@ const create$2 = rpcId => {
1118
1118
  };
1119
1119
 
1120
1120
  const {
1121
- invoke: invoke$9,
1121
+ invoke: invoke$8,
1122
1122
  set: set$c
1123
1123
  } = create$2(6008);
1124
1124
 
1125
1125
  const {
1126
- invoke: invoke$8,
1127
1126
  set: set$b
1128
1127
  } = create$2(6007);
1129
- const getMathBlockDom = async node => {
1130
- return invoke$8('ChatMath.getMathBlockDom', node);
1131
- };
1132
- const getMathInlineDom = async node => {
1133
- return invoke$8('ChatMath.getMathInlineDom', node);
1134
- };
1135
1128
 
1136
1129
  const {
1137
1130
  invoke: invoke$7,
@@ -1185,7 +1178,7 @@ const Br = 55;
1185
1178
  const Tfoot = 59;
1186
1179
  const Ul = 60;
1187
1180
  const TextArea = 62;
1188
- const Select$1 = 63;
1181
+ const Select = 63;
1189
1182
  const Option = 64;
1190
1183
  const Code = 65;
1191
1184
  const Label$1 = 66;
@@ -1214,7 +1207,6 @@ const Home = 12;
1214
1207
  const UpArrow = 14;
1215
1208
  const DownArrow = 16;
1216
1209
  const KeyN = 42;
1217
- const KeyV = 50;
1218
1210
 
1219
1211
  const CtrlCmd = 1 << 11 >>> 0;
1220
1212
  const Shift = 1 << 10 >>> 0;
@@ -1775,6 +1767,17 @@ const clearInput = async state => {
1775
1767
  };
1776
1768
  };
1777
1769
 
1770
+ const closeGitBranchPicker = state => {
1771
+ if (!state.gitBranchPickerOpen && !state.gitBranchPickerErrorMessage) {
1772
+ return state;
1773
+ }
1774
+ return {
1775
+ ...state,
1776
+ gitBranchPickerErrorMessage: '',
1777
+ gitBranchPickerOpen: false
1778
+ };
1779
+ };
1780
+
1778
1781
  const clampSelectionIndex = (value, max) => {
1779
1782
  if (!Number.isFinite(value)) {
1780
1783
  return 0;
@@ -1852,6 +1855,7 @@ const BackToChatList = 'Back to chat list';
1852
1855
  const Search$1 = 'Search';
1853
1856
  const ScrollDown$1 = 'Scroll down';
1854
1857
  const SearchModels = 'Search models';
1858
+ const PickModel = 'Pick Model';
1855
1859
  const SearchChats = 'Search chats';
1856
1860
  const Paste = 'Paste';
1857
1861
  const Rename = 'Rename';
@@ -1859,9 +1863,13 @@ const Archive = 'Archive';
1859
1863
  const AddProjectChat = 'Add Project';
1860
1864
  const RemoveProject = 'Remove Project';
1861
1865
  const Settings$1 = 'Settings';
1866
+ const Login$1 = 'Login';
1867
+ const Logout$1 = 'Logout';
1862
1868
  const LoginToBackend = 'Login to backend';
1863
1869
  const LogoutFromBackend = 'Logout from backend';
1864
1870
  const LoggingInToBackend = 'Logging in to backend';
1871
+ const LoggingOutFromBackend = 'Logging out from backend';
1872
+ const SignedIn = 'Signed in';
1865
1873
  const SwitchToChatFocusMode = 'Switch to chat focus mode';
1866
1874
  const SwitchToNormalChatMode = 'Switch to normal chat mode';
1867
1875
  const CloseChat$1 = 'Close Chat';
@@ -1941,18 +1949,33 @@ const scrollDown = () => {
1941
1949
  const searchModels = () => {
1942
1950
  return i18nString(SearchModels);
1943
1951
  };
1952
+ const pickModel = modelName => {
1953
+ return `${i18nString(PickModel)}, ${modelName}`;
1954
+ };
1944
1955
  const searchChats = () => {
1945
1956
  return i18nString(SearchChats);
1946
1957
  };
1958
+ const login = () => {
1959
+ return i18nString(Login$1);
1960
+ };
1961
+ const logout = () => {
1962
+ return i18nString(Logout$1);
1963
+ };
1947
1964
  const loginToBackend = () => {
1948
1965
  return i18nString(LoginToBackend);
1949
1966
  };
1950
- const logoutFromBackend = () => {
1967
+ const logoutFromBackend$1 = () => {
1951
1968
  return i18nString(LogoutFromBackend);
1952
1969
  };
1953
1970
  const loggingInToBackend = () => {
1954
1971
  return i18nString(LoggingInToBackend);
1955
1972
  };
1973
+ const loggingOutFromBackend = () => {
1974
+ return i18nString(LoggingOutFromBackend);
1975
+ };
1976
+ const signedIn = () => {
1977
+ return i18nString(SignedIn);
1978
+ };
1956
1979
  const chatFocusMode = () => {
1957
1980
  return i18nString(SwitchToChatFocusMode);
1958
1981
  };
@@ -2324,8 +2347,6 @@ const createDefaultState = () => {
2324
2347
  authAccessToken: '',
2325
2348
  authEnabled: false,
2326
2349
  authErrorMessage: '',
2327
- authRefreshToken: '',
2328
- authStatus: 'signed-out',
2329
2350
  backendUrl: '',
2330
2351
  chatFocusContentMaxWidth: 700,
2331
2352
  chatHistoryEnabled: true,
@@ -2357,6 +2378,10 @@ const createDefaultState = () => {
2357
2378
  errorCount: 0,
2358
2379
  focus: 'composer',
2359
2380
  focused: false,
2381
+ gitBranches: [],
2382
+ gitBranchPickerErrorMessage: '',
2383
+ gitBranchPickerOpen: false,
2384
+ gitBranchPickerVisible: false,
2360
2385
  headerHeight: 50,
2361
2386
  height: 0,
2362
2387
  ...responsivePickerState,
@@ -2438,11 +2463,11 @@ const createDefaultState = () => {
2438
2463
  usageOverviewEnabled: false,
2439
2464
  useChatCoordinatorWorker: false,
2440
2465
  useChatMathWorker: true,
2441
- useChatMessageParsingWorker: false,
2442
2466
  useChatNetworkWorkerForRequests: false,
2443
2467
  useChatToolWorker: true,
2444
2468
  useMockApi: false,
2445
2469
  userName: '',
2470
+ userState: 'loggedOut',
2446
2471
  userSubscriptionPlan: '',
2447
2472
  userUsedTokens: 0,
2448
2473
  viewMode: 'list',
@@ -2829,7 +2854,24 @@ const isEqualComposerAttachments = (a, b) => {
2829
2854
  }
2830
2855
  return true;
2831
2856
  };
2857
+ const isEqualGitBranches = (a, b) => {
2858
+ if (a === b) {
2859
+ return true;
2860
+ }
2861
+ if (a.length !== b.length) {
2862
+ return false;
2863
+ }
2864
+ for (let i = 0; i < a.length; i++) {
2865
+ if (a[i].current !== b[i].current || a[i].name !== b[i].name) {
2866
+ return false;
2867
+ }
2868
+ }
2869
+ return true;
2870
+ };
2832
2871
  const isEqualProjectExpandedIds = (a, b) => {
2872
+ if (a === b) {
2873
+ return true;
2874
+ }
2833
2875
  if (a.length !== b.length) {
2834
2876
  return false;
2835
2877
  }
@@ -2840,6 +2882,20 @@ const isEqualProjectExpandedIds = (a, b) => {
2840
2882
  }
2841
2883
  return true;
2842
2884
  };
2885
+ const isEqualProjects = (a, b) => {
2886
+ if (a === b) {
2887
+ return true;
2888
+ }
2889
+ if (a.length !== b.length) {
2890
+ return false;
2891
+ }
2892
+ for (let i = 0; i < a.length; i++) {
2893
+ if (a[i].id !== b[i].id || a[i].name !== b[i].name || a[i].uri !== b[i].uri) {
2894
+ return false;
2895
+ }
2896
+ }
2897
+ return true;
2898
+ };
2843
2899
  const isEqualVisibleModels = (a, b) => {
2844
2900
  if (a === b) {
2845
2901
  return true;
@@ -2856,7 +2912,7 @@ const isEqualVisibleModels = (a, b) => {
2856
2912
  };
2857
2913
 
2858
2914
  const isEqual = (oldState, newState) => {
2859
- return oldState.addContextButtonEnabled === newState.addContextButtonEnabled && oldState.agentMode === newState.agentMode && oldState.agentModePickerOpen === newState.agentModePickerOpen && oldState.authEnabled === newState.authEnabled && oldState.authErrorMessage === newState.authErrorMessage && oldState.authStatus === newState.authStatus && isEqualComposerAttachments(oldState.composerAttachments, newState.composerAttachments) && oldState.composerDropActive === newState.composerDropActive && oldState.composerDropEnabled === newState.composerDropEnabled && oldState.composerValue === newState.composerValue && oldState.hasSpaceForAgentModePicker === newState.hasSpaceForAgentModePicker && oldState.hasSpaceForRunModePicker === newState.hasSpaceForRunModePicker && oldState.initial === newState.initial && oldState.modelPickerOpen === newState.modelPickerOpen && oldState.modelPickerSearchValue === newState.modelPickerSearchValue && isEqualVisibleModels(oldState.visibleModels, newState.visibleModels) && oldState.listFocusedIndex === newState.listFocusedIndex && isEqualProjectExpandedIds(oldState.projectExpandedIds, newState.projectExpandedIds) && oldState.projectListScrollTop === newState.projectListScrollTop && oldState.reasoningEffort === newState.reasoningEffort && oldState.reasoningEffortPickerOpen === newState.reasoningEffortPickerOpen && oldState.reasoningPickerEnabled === newState.reasoningPickerEnabled && oldState.renamingSessionId === newState.renamingSessionId && oldState.selectedModelId === newState.selectedModelId && oldState.selectedProjectId === newState.selectedProjectId && oldState.selectedSessionId === newState.selectedSessionId && oldState.showRunMode === newState.showRunMode && oldState.runMode === newState.runMode && oldState.runModePickerOpen === newState.runModePickerOpen && oldState.sessions === newState.sessions && oldState.tokensMax === newState.tokensMax && oldState.tokensUsed === newState.tokensUsed && oldState.usageOverviewEnabled === newState.usageOverviewEnabled && oldState.useChatMathWorker === newState.useChatMathWorker && oldState.viewMode === newState.viewMode && oldState.voiceDictationEnabled === newState.voiceDictationEnabled;
2915
+ return oldState.addContextButtonEnabled === newState.addContextButtonEnabled && oldState.agentMode === newState.agentMode && oldState.agentModePickerOpen === newState.agentModePickerOpen && oldState.authEnabled === newState.authEnabled && oldState.authErrorMessage === newState.authErrorMessage && isEqualComposerAttachments(oldState.composerAttachments, newState.composerAttachments) && oldState.composerDropActive === newState.composerDropActive && oldState.composerDropEnabled === newState.composerDropEnabled && oldState.composerValue === newState.composerValue && oldState.gitBranchPickerErrorMessage === newState.gitBranchPickerErrorMessage && oldState.gitBranchPickerOpen === newState.gitBranchPickerOpen && oldState.gitBranchPickerVisible === newState.gitBranchPickerVisible && isEqualGitBranches(oldState.gitBranches, newState.gitBranches) && oldState.hasSpaceForAgentModePicker === newState.hasSpaceForAgentModePicker && oldState.hasSpaceForRunModePicker === newState.hasSpaceForRunModePicker && oldState.initial === newState.initial && oldState.modelPickerOpen === newState.modelPickerOpen && oldState.modelPickerSearchValue === newState.modelPickerSearchValue && isEqualVisibleModels(oldState.visibleModels, newState.visibleModels) && oldState.listFocusedIndex === newState.listFocusedIndex && oldState.openApiApiKeyInput === newState.openApiApiKeyInput && oldState.openRouterApiKeyInput === newState.openRouterApiKeyInput && isEqualProjectExpandedIds(oldState.projectExpandedIds, newState.projectExpandedIds) && isEqualProjects(oldState.projects, newState.projects) && oldState.reasoningEffort === newState.reasoningEffort && oldState.reasoningEffortPickerOpen === newState.reasoningEffortPickerOpen && oldState.reasoningPickerEnabled === newState.reasoningPickerEnabled && oldState.renamingSessionId === newState.renamingSessionId && oldState.selectedModelId === newState.selectedModelId && oldState.selectedProjectId === newState.selectedProjectId && oldState.selectedSessionId === newState.selectedSessionId && oldState.searchEnabled === newState.searchEnabled && oldState.searchFieldVisible === newState.searchFieldVisible && oldState.searchValue === newState.searchValue && oldState.showRunMode === newState.showRunMode && oldState.runMode === newState.runMode && oldState.runModePickerOpen === newState.runModePickerOpen && oldState.sessions === newState.sessions && oldState.tokensMax === newState.tokensMax && oldState.tokensUsed === newState.tokensUsed && oldState.usageOverviewEnabled === newState.usageOverviewEnabled && oldState.useChatMathWorker === newState.useChatMathWorker && oldState.userName === newState.userName && oldState.userState === newState.userState && oldState.viewMode === newState.viewMode && oldState.voiceDictationEnabled === newState.voiceDictationEnabled;
2860
2916
  };
2861
2917
 
2862
2918
  const diffScrollTop = (oldState, newState) => {
@@ -2877,6 +2933,12 @@ const RenderIncremental = 11;
2877
2933
  const RenderScrollTop = 12;
2878
2934
 
2879
2935
  const diffValue = (oldState, newState) => {
2936
+ if (oldState.openApiApiKeyInput !== newState.openApiApiKeyInput) {
2937
+ return false;
2938
+ }
2939
+ if (oldState.openRouterApiKeyInput !== newState.openRouterApiKeyInput) {
2940
+ return false;
2941
+ }
2880
2942
  return oldState.composerValue === newState.composerValue || newState.inputSource !== 'script';
2881
2943
  };
2882
2944
 
@@ -2907,10 +2969,9 @@ const getAuthState = state => {
2907
2969
  authAccessToken,
2908
2970
  authEnabled,
2909
2971
  authErrorMessage,
2910
- authRefreshToken,
2911
- authStatus,
2912
2972
  backendUrl,
2913
2973
  userName,
2974
+ userState,
2914
2975
  userSubscriptionPlan,
2915
2976
  userUsedTokens
2916
2977
  } = state;
@@ -2918,10 +2979,9 @@ const getAuthState = state => {
2918
2979
  authAccessToken,
2919
2980
  authEnabled,
2920
2981
  authErrorMessage,
2921
- authRefreshToken,
2922
- authStatus,
2923
2982
  backendUrl,
2924
2983
  userName,
2984
+ userState,
2925
2985
  userSubscriptionPlan,
2926
2986
  userUsedTokens
2927
2987
  };
@@ -3257,10 +3317,6 @@ const getKeyBindings = () => {
3257
3317
  command: 'Chat.chatInputHistoryDown',
3258
3318
  key: DownArrow,
3259
3319
  when: FocusChatInput
3260
- }, {
3261
- command: 'Chat.pasteInput',
3262
- key: CtrlCmd | KeyV,
3263
- when: FocusChatInput
3264
3320
  }, {
3265
3321
  command: 'Chat.chatInputHistoryUp',
3266
3322
  key: UpArrow,
@@ -3387,9 +3443,11 @@ const ComposerAttachmentPreviewOverlay = 'composer-attachment-preview-overlay';
3387
3443
  const AddContext = 'add-context';
3388
3444
  const Dictate = 'dictate';
3389
3445
  const CreatePullRequest$1 = 'create-pull-request';
3446
+ const GitBranchPickerToggle = 'git-branch-picker-toggle';
3447
+ const GitBranchPickerItemPrefix = 'git-branch-picker-item:';
3390
3448
  const FocusAddAction = 'focus-add-action';
3391
- const FocusOpenInVsCode = 'focus-open-in-vscode';
3392
3449
  const FocusCommit = 'focus-commit';
3450
+ const FocusOpenInVsCode = 'focus-open-in-vscode';
3393
3451
  const FocusOpenTerminal = 'focus-open-terminal';
3394
3452
  const FocusShowDiff = 'focus-show-diff';
3395
3453
  const Send = 'send';
@@ -3455,8 +3513,14 @@ const isRenameInputName = name => {
3455
3513
  const getRenameIdFromInputName = name => {
3456
3514
  return name.slice(RenamePrefix.length);
3457
3515
  };
3458
- const getModelPickerItemInputName = modelId => {
3459
- return `${ModelPickerItemPrefix}${modelId}`;
3516
+ const getGitBranchPickerItemInputName = branchName => {
3517
+ return `${GitBranchPickerItemPrefix}${branchName}`;
3518
+ };
3519
+ const isGitBranchPickerItemInputName = name => {
3520
+ return name.startsWith(GitBranchPickerItemPrefix);
3521
+ };
3522
+ const getGitBranchFromGitBranchPickerItemInputName = name => {
3523
+ return name.slice(GitBranchPickerItemPrefix.length);
3460
3524
  };
3461
3525
  const getComposerAttachmentInputName = attachmentId => {
3462
3526
  return `${ComposerAttachmentPrefix}${attachmentId}`;
@@ -3818,6 +3882,236 @@ const openFolder = async () => {
3818
3882
  }
3819
3883
  };
3820
3884
 
3885
+ // cspell:ignore gitdir worktrees
3886
+ const FileTypeFile = 1;
3887
+ const FileTypeDirectory = 2;
3888
+ const slashAtEndRegex = /\/$/;
3889
+ const gitDirPointerRegex = /^gitdir:\s*(.+)$/m;
3890
+ const headRefRegex = /^ref:\s+refs\/heads\/(.+)$/m;
3891
+ const toGitUri = (baseUri, ...segments) => {
3892
+ const url = new URL(baseUri.endsWith('/') ? baseUri : `${baseUri}/`);
3893
+ for (const segment of segments) {
3894
+ url.pathname = `${url.pathname.replace(slashAtEndRegex, '')}/${segment.split('/').map(part => encodeURIComponent(part)).join('/')}`;
3895
+ }
3896
+ return url.toString();
3897
+ };
3898
+ const decodeFileContent = content => {
3899
+ if (typeof content === 'string') {
3900
+ return content;
3901
+ }
3902
+ if (content instanceof Uint8Array) {
3903
+ return new TextDecoder().decode(content);
3904
+ }
3905
+ if (Array.isArray(content)) {
3906
+ return new TextDecoder().decode(new Uint8Array(content));
3907
+ }
3908
+ return '';
3909
+ };
3910
+ const toFileSystemPath = uri => {
3911
+ if (!uri.startsWith('file://')) {
3912
+ return uri;
3913
+ }
3914
+ return decodeURIComponent(new URL(uri).pathname);
3915
+ };
3916
+ const getRelativePath = (fromPath, toPath) => {
3917
+ if (!fromPath.startsWith('/') || !toPath.startsWith('/')) {
3918
+ return toPath;
3919
+ }
3920
+ const fromParts = fromPath.split('/').filter(Boolean);
3921
+ const toParts = toPath.split('/').filter(Boolean);
3922
+ let commonPrefixLength = 0;
3923
+ while (commonPrefixLength < fromParts.length && commonPrefixLength < toParts.length && fromParts[commonPrefixLength] === toParts[commonPrefixLength]) {
3924
+ commonPrefixLength++;
3925
+ }
3926
+ const parentSegments = fromParts.slice(commonPrefixLength).map(() => '..');
3927
+ const childSegments = toParts.slice(commonPrefixLength);
3928
+ return [...parentSegments, ...childSegments].join('/') || '.';
3929
+ };
3930
+ const toFileSystemTarget = (workspaceUri, uri) => {
3931
+ const workspacePath = toFileSystemPath(workspaceUri);
3932
+ const fileSystemPath = toFileSystemPath(uri);
3933
+ if (!workspaceUri.startsWith('file://') || !uri.startsWith('file://')) {
3934
+ return fileSystemPath;
3935
+ }
3936
+ return getRelativePath(workspacePath, fileSystemPath);
3937
+ };
3938
+ const parseEntries = value => {
3939
+ if (!Array.isArray(value)) {
3940
+ return [];
3941
+ }
3942
+ return value.map(entry => {
3943
+ if (Array.isArray(entry) && typeof entry[0] === 'string' && typeof entry[1] === 'number') {
3944
+ return {
3945
+ name: entry[0],
3946
+ type: entry[1]
3947
+ };
3948
+ }
3949
+ if (entry && typeof entry === 'object' && typeof Reflect.get(entry, 'name') === 'string' && typeof Reflect.get(entry, 'type') === 'number') {
3950
+ return {
3951
+ name: Reflect.get(entry, 'name'),
3952
+ type: Reflect.get(entry, 'type')
3953
+ };
3954
+ }
3955
+ return undefined;
3956
+ }).filter(entry => !!entry);
3957
+ };
3958
+ const readDir = async (workspaceUri, uri) => {
3959
+ const result = await invoke('FileSystem.readDirWithFileTypes', toFileSystemTarget(workspaceUri, uri));
3960
+ return parseEntries(result);
3961
+ };
3962
+ const readTextFile = async (workspaceUri, uri) => {
3963
+ const result = await invoke('FileSystem.readFile', toFileSystemTarget(workspaceUri, uri));
3964
+ return decodeFileContent(result);
3965
+ };
3966
+ const getGitDirUri = async workspaceUri => {
3967
+ const gitUri = toGitUri(workspaceUri, '.git');
3968
+ try {
3969
+ await readTextFile(workspaceUri, toGitUri(gitUri, 'HEAD'));
3970
+ return gitUri;
3971
+ } catch {
3972
+ // Fall through to support worktrees/submodules where .git is a pointer file.
3973
+ }
3974
+ const gitPointer = await readTextFile(workspaceUri, gitUri);
3975
+ const match = gitDirPointerRegex.exec(gitPointer);
3976
+ if (!match) {
3977
+ return '';
3978
+ }
3979
+ return new URL(match[1].trim(), workspaceUri.endsWith('/') ? workspaceUri : `${workspaceUri}/`).toString();
3980
+ };
3981
+ const collectBranchNames = async (workspaceUri, refsHeadsUri, prefix, branches) => {
3982
+ const entries = await readDir(workspaceUri, refsHeadsUri);
3983
+ for (const entry of entries) {
3984
+ if (entry.type === FileTypeDirectory) {
3985
+ await collectBranchNames(workspaceUri, toGitUri(refsHeadsUri, entry.name), `${prefix}${entry.name}/`, branches);
3986
+ continue;
3987
+ }
3988
+ if (entry.type === FileTypeFile) {
3989
+ branches.add(`${prefix}${entry.name}`);
3990
+ }
3991
+ }
3992
+ };
3993
+ const parseCurrentBranch = headContent => {
3994
+ const match = headRefRegex.exec(headContent.trim());
3995
+ if (match) {
3996
+ return match[1].trim();
3997
+ }
3998
+ return '';
3999
+ };
4000
+ const hasGitRepository = async workspaceUri => {
4001
+ try {
4002
+ return Boolean(await getGitDirUri(workspaceUri));
4003
+ } catch {
4004
+ return false;
4005
+ }
4006
+ };
4007
+ const getGitBranches = async workspaceUri => {
4008
+ const gitDirUri = await getGitDirUri(workspaceUri);
4009
+ if (!gitDirUri) {
4010
+ // eslint-disable-next-line @typescript-eslint/only-throw-error
4011
+ throw new globalThis.Error('Git repository not found.');
4012
+ }
4013
+ const branches = new Set();
4014
+ let currentBranch = '';
4015
+ try {
4016
+ const headContent = await readTextFile(workspaceUri, toGitUri(gitDirUri, 'HEAD'));
4017
+ currentBranch = parseCurrentBranch(headContent);
4018
+ if (currentBranch) {
4019
+ branches.add(currentBranch);
4020
+ }
4021
+ } catch {
4022
+ // Keep trying to discover branches from refs even if HEAD cannot be read.
4023
+ }
4024
+ try {
4025
+ await collectBranchNames(workspaceUri, toGitUri(gitDirUri, 'refs', 'heads'), '', branches);
4026
+ } catch {
4027
+ // Repositories without local refs should still open and surface any current branch we found.
4028
+ }
4029
+ if (branches.size === 0) {
4030
+ // eslint-disable-next-line @typescript-eslint/only-throw-error
4031
+ throw new globalThis.Error('No local git branches found.');
4032
+ }
4033
+ return [...branches].toSorted((a, b) => a.localeCompare(b)).map(name => ({
4034
+ current: name === currentBranch,
4035
+ name
4036
+ }));
4037
+ };
4038
+
4039
+ const getSelectedSession = (sessions, selectedSessionId) => {
4040
+ return sessions.find(session => session.id === selectedSessionId);
4041
+ };
4042
+
4043
+ const getProjectUri$1 = (state, projectId) => {
4044
+ return state.projects.find(project => project.id === projectId)?.uri || '';
4045
+ };
4046
+ const getWorkspaceUri$1 = (state, session) => {
4047
+ if (session?.workspaceUri) {
4048
+ return session.workspaceUri;
4049
+ }
4050
+ return getProjectUri$1(state, session?.projectId || state.selectedProjectId);
4051
+ };
4052
+
4053
+ const withHiddenBranchPicker = state => {
4054
+ return {
4055
+ ...state,
4056
+ gitBranches: [],
4057
+ gitBranchPickerErrorMessage: '',
4058
+ gitBranchPickerOpen: false,
4059
+ gitBranchPickerVisible: false
4060
+ };
4061
+ };
4062
+ const refreshGitBranchPickerVisibility = async state => {
4063
+ if (state.viewMode !== 'chat-focus') {
4064
+ return {
4065
+ ...state,
4066
+ gitBranchPickerErrorMessage: '',
4067
+ gitBranchPickerOpen: false
4068
+ };
4069
+ }
4070
+ const selectedSession = getSelectedSession(state.sessions, state.selectedSessionId);
4071
+ const fallbackBranchName = selectedSession?.branchName || '';
4072
+ const workspaceUri = getWorkspaceUri$1(state, selectedSession);
4073
+ if (!workspaceUri) {
4074
+ return withHiddenBranchPicker(state);
4075
+ }
4076
+ const visible = await hasGitRepository(workspaceUri);
4077
+ if (!visible) {
4078
+ if (fallbackBranchName) {
4079
+ return {
4080
+ ...state,
4081
+ gitBranches: [{
4082
+ current: true,
4083
+ name: fallbackBranchName
4084
+ }],
4085
+ gitBranchPickerVisible: true
4086
+ };
4087
+ }
4088
+ return withHiddenBranchPicker(state);
4089
+ }
4090
+ try {
4091
+ const gitBranches = await getGitBranches(workspaceUri);
4092
+ return {
4093
+ ...state,
4094
+ gitBranches,
4095
+ gitBranchPickerVisible: true
4096
+ };
4097
+ } catch {
4098
+ if (fallbackBranchName) {
4099
+ return {
4100
+ ...state,
4101
+ gitBranches: [{
4102
+ current: true,
4103
+ name: fallbackBranchName
4104
+ }],
4105
+ gitBranchPickerVisible: true
4106
+ };
4107
+ }
4108
+ return {
4109
+ ...state,
4110
+ gitBranchPickerVisible: true
4111
+ };
4112
+ }
4113
+ };
4114
+
3821
4115
  const selectProject = async (state, projectId) => {
3822
4116
  const {
3823
4117
  selectedProjectId,
@@ -3831,14 +4125,14 @@ const selectProject = async (state, projectId) => {
3831
4125
  }
3832
4126
  const visibleSessions = getVisibleSessions(sessions, projectId);
3833
4127
  if (visibleSessions.length === 0) {
3834
- return {
4128
+ return refreshGitBranchPickerVisibility({
3835
4129
  ...state,
3836
4130
  composerAttachments: [],
3837
4131
  composerAttachmentsHeight: 0,
3838
4132
  selectedProjectId: projectId,
3839
4133
  selectedSessionId: '',
3840
4134
  viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'list'
3841
- };
4135
+ });
3842
4136
  }
3843
4137
  const currentSessionVisible = visibleSessions.some(session => session.id === selectedSessionId);
3844
4138
  const nextSelectedSessionId = currentSessionVisible ? selectedSessionId : visibleSessions[0].id;
@@ -3850,7 +4144,7 @@ const selectProject = async (state, projectId) => {
3850
4144
  }
3851
4145
  return loadedSession;
3852
4146
  });
3853
- return {
4147
+ return refreshGitBranchPickerVisibility({
3854
4148
  ...state,
3855
4149
  composerAttachments,
3856
4150
  composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
@@ -3858,7 +4152,7 @@ const selectProject = async (state, projectId) => {
3858
4152
  selectedSessionId: nextSelectedSessionId,
3859
4153
  sessions: hydratedSessions,
3860
4154
  viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
3861
- };
4155
+ });
3862
4156
  };
3863
4157
 
3864
4158
  const fileSchemeRegex = /^file:\/\//;
@@ -3993,6 +4287,148 @@ const handleClickCreatePullRequest = async state => {
3993
4287
  };
3994
4288
  };
3995
4289
 
4290
+ const trailingSlashesRegex$3 = /\/+$/;
4291
+ const trimTrailingSlashes = value => {
4292
+ return value.replace(trailingSlashesRegex$3, '');
4293
+ };
4294
+
4295
+ const getBackendAuthUrl = (backendUrl, path) => {
4296
+ return `${trimTrailingSlashes(backendUrl)}${path}`;
4297
+ };
4298
+
4299
+ const getBackendLoginUrl = backendUrl => {
4300
+ return getBackendAuthUrl(backendUrl, '/auth/login');
4301
+ };
4302
+
4303
+ const getLoggedOutBackendAuthState = (authErrorMessage = '') => {
4304
+ return {
4305
+ authAccessToken: '',
4306
+ authErrorMessage,
4307
+ userName: '',
4308
+ userState: 'loggedOut',
4309
+ userSubscriptionPlan: '',
4310
+ userUsedTokens: 0
4311
+ };
4312
+ };
4313
+
4314
+ const getBackendLogoutUrl = backendUrl => {
4315
+ return getBackendAuthUrl(backendUrl, '/auth/logout');
4316
+ };
4317
+
4318
+ const logoutFromBackend = async backendUrl => {
4319
+ if (!backendUrl) {
4320
+ return;
4321
+ }
4322
+ try {
4323
+ await fetch(getBackendLogoutUrl(backendUrl), {
4324
+ credentials: 'include',
4325
+ headers: {
4326
+ Accept: 'application/json'
4327
+ },
4328
+ method: 'POST'
4329
+ });
4330
+ } catch {
4331
+ // Ignore logout failures and still clear local auth state.
4332
+ }
4333
+ };
4334
+
4335
+ const getBackendRefreshUrl = backendUrl => {
4336
+ return getBackendAuthUrl(backendUrl, '/auth/refresh');
4337
+ };
4338
+
4339
+ const isObject$2 = value => {
4340
+ return !!value && typeof value === 'object';
4341
+ };
4342
+
4343
+ const isBackendAuthResponse = value => {
4344
+ return isObject$2(value);
4345
+ };
4346
+
4347
+ const getNumber = (value, fallback = 0) => {
4348
+ return typeof value === 'number' ? value : fallback;
4349
+ };
4350
+
4351
+ const getString = (value, fallback = '') => {
4352
+ return typeof value === 'string' ? value : fallback;
4353
+ };
4354
+
4355
+ const toBackendAuthState = value => {
4356
+ return {
4357
+ authAccessToken: getString(value.accessToken),
4358
+ authErrorMessage: getString(value.error),
4359
+ userName: getString(value.userName),
4360
+ userState: value.accessToken ? 'loggedIn' : 'loggedOut',
4361
+ userSubscriptionPlan: getString(value.subscriptionPlan),
4362
+ userUsedTokens: getNumber(value.usedTokens)
4363
+ };
4364
+ };
4365
+
4366
+ const parseBackendAuthResponse = value => {
4367
+ if (!isBackendAuthResponse(value)) {
4368
+ return getLoggedOutBackendAuthState('Backend returned an invalid authentication response.');
4369
+ }
4370
+ return toBackendAuthState(value);
4371
+ };
4372
+
4373
+ const syncBackendAuth = async backendUrl => {
4374
+ if (!backendUrl) {
4375
+ return getLoggedOutBackendAuthState('Backend URL is missing.');
4376
+ }
4377
+ try {
4378
+ const response = await fetch(getBackendRefreshUrl(backendUrl), {
4379
+ credentials: 'include',
4380
+ headers: {
4381
+ Accept: 'application/json'
4382
+ },
4383
+ method: 'POST'
4384
+ });
4385
+ if (response.status === 401 || response.status === 403) {
4386
+ return getLoggedOutBackendAuthState();
4387
+ }
4388
+ let payload = undefined;
4389
+ try {
4390
+ payload = await response.json();
4391
+ } catch {
4392
+ payload = undefined;
4393
+ }
4394
+ if (!response.ok) {
4395
+ const parsed = parseBackendAuthResponse(payload);
4396
+ return getLoggedOutBackendAuthState(parsed.authErrorMessage || 'Backend authentication failed.');
4397
+ }
4398
+ const parsed = parseBackendAuthResponse(payload);
4399
+ if (parsed.authErrorMessage) {
4400
+ return getLoggedOutBackendAuthState(parsed.authErrorMessage);
4401
+ }
4402
+ if (!parsed.authAccessToken) {
4403
+ return getLoggedOutBackendAuthState();
4404
+ }
4405
+ return parsed;
4406
+ } catch (error) {
4407
+ const authErrorMessage = error instanceof Error && error.message ? error.message : 'Backend authentication failed.';
4408
+ return getLoggedOutBackendAuthState(authErrorMessage);
4409
+ }
4410
+ };
4411
+
4412
+ const delay = async ms => {
4413
+ await new Promise(resolve => setTimeout(resolve, ms));
4414
+ };
4415
+
4416
+ const waitForBackendLogin = async (backendUrl, timeoutMs = 30_000, pollIntervalMs = 1000) => {
4417
+ const deadline = Date.now() + timeoutMs;
4418
+ let lastErrorMessage = '';
4419
+ while (Date.now() < deadline) {
4420
+ const authState = await syncBackendAuth(backendUrl);
4421
+ if (authState.userState === 'loggedIn') {
4422
+ return authState;
4423
+ }
4424
+ if (authState.authErrorMessage) {
4425
+ lastErrorMessage = authState.authErrorMessage;
4426
+ }
4427
+ await delay(pollIntervalMs);
4428
+ }
4429
+ return getLoggedOutBackendAuthState(lastErrorMessage);
4430
+ };
4431
+
3996
4432
  let nextLoginResponse;
3997
4433
  const setNextLoginResponse = response => {
3998
4434
  nextLoginResponse = response;
@@ -4016,35 +4452,36 @@ const consumeNextLoginResponse = async () => {
4016
4452
  return response.response;
4017
4453
  };
4018
4454
 
4019
- const get = async key => {
4020
- return getPreference(key);
4021
- };
4022
- const update = async settings => {
4023
- await invoke('Preferences.update', settings);
4024
- };
4025
-
4026
- const trailingSlashesRegex$3 = /\/+$/;
4027
4455
  const isLoginResponse = value => {
4028
4456
  if (!value || typeof value !== 'object') {
4029
4457
  return false;
4030
4458
  }
4031
4459
  return true;
4032
4460
  };
4033
- const trimTrailingSlashes = value => {
4034
- return value.replace(trailingSlashesRegex$3, '');
4461
+ const getLoggedInState = (state, response) => {
4462
+ const accessToken = typeof response.accessToken === 'string' ? response.accessToken : '';
4463
+ return {
4464
+ ...state,
4465
+ authAccessToken: accessToken,
4466
+ authErrorMessage: '',
4467
+ userName: typeof response.userName === 'string' ? response.userName : state.userName,
4468
+ userState: accessToken ? 'loggedIn' : 'loggedOut',
4469
+ userSubscriptionPlan: typeof response.subscriptionPlan === 'string' ? response.subscriptionPlan : state.userSubscriptionPlan,
4470
+ userUsedTokens: typeof response.usedTokens === 'number' ? response.usedTokens : state.userUsedTokens
4471
+ };
4035
4472
  };
4036
4473
  const handleClickLogin = async state => {
4037
4474
  if (!state.backendUrl) {
4038
4475
  return {
4039
4476
  ...state,
4040
4477
  authErrorMessage: 'Backend URL is missing.',
4041
- authStatus: 'signed-out'
4478
+ userState: 'loggedOut'
4042
4479
  };
4043
4480
  }
4044
4481
  const signingInState = {
4045
4482
  ...state,
4046
4483
  authErrorMessage: '',
4047
- authStatus: 'signing-in'
4484
+ userState: 'loggingIn'
4048
4485
  };
4049
4486
  if (state.uid) {
4050
4487
  set(state.uid, state, signingInState);
@@ -4053,69 +4490,53 @@ const handleClickLogin = async state => {
4053
4490
  let usedMockResponse = false;
4054
4491
  try {
4055
4492
  usedMockResponse = hasPendingMockLoginResponse();
4056
- const response = usedMockResponse ? await consumeNextLoginResponse() : await invoke('Auth.login', state.backendUrl);
4057
- if (!isLoginResponse(response)) {
4058
- return {
4059
- ...signingInState,
4060
- authErrorMessage: 'Backend returned an invalid login response.',
4061
- authStatus: 'signed-out'
4062
- };
4063
- }
4064
- if (typeof response.error === 'string' && response.error) {
4065
- return {
4066
- ...signingInState,
4067
- authErrorMessage: response.error,
4068
- authStatus: 'signed-out'
4069
- };
4493
+ if (usedMockResponse) {
4494
+ const response = await consumeNextLoginResponse();
4495
+ if (!isLoginResponse(response)) {
4496
+ return {
4497
+ ...signingInState,
4498
+ authErrorMessage: 'Backend returned an invalid login response.',
4499
+ userState: 'loggedOut'
4500
+ };
4501
+ }
4502
+ if (typeof response.error === 'string' && response.error) {
4503
+ return {
4504
+ ...signingInState,
4505
+ authErrorMessage: response.error,
4506
+ userState: 'loggedOut'
4507
+ };
4508
+ }
4509
+ return getLoggedInState(signingInState, response);
4070
4510
  }
4071
- const accessToken = typeof response.accessToken === 'string' ? response.accessToken : '';
4072
- const refreshToken = typeof response.refreshToken === 'string' ? response.refreshToken : '';
4073
- await update({
4074
- 'secrets.chatBackendAccessToken': accessToken,
4075
- 'secrets.chatBackendRefreshToken': refreshToken
4076
- });
4511
+ await invoke('Main.openUri', getBackendLoginUrl(state.backendUrl));
4512
+ const authState = await waitForBackendLogin(state.backendUrl);
4077
4513
  return {
4078
4514
  ...signingInState,
4079
- authAccessToken: accessToken,
4080
- authErrorMessage: '',
4081
- authRefreshToken: refreshToken,
4082
- authStatus: accessToken ? 'signed-in' : 'signed-out',
4083
- userName: typeof response.userName === 'string' ? response.userName : state.userName,
4084
- userSubscriptionPlan: typeof response.subscriptionPlan === 'string' ? response.subscriptionPlan : state.userSubscriptionPlan,
4085
- userUsedTokens: typeof response.usedTokens === 'number' ? response.usedTokens : state.userUsedTokens
4515
+ ...authState
4086
4516
  };
4087
4517
  } catch (error) {
4088
4518
  const errorMessage = error instanceof Error && error.message ? error.message : 'Backend authentication failed.';
4089
- if (!usedMockResponse) {
4090
- await invoke('Main.openUri', `${trimTrailingSlashes(state.backendUrl)}/auth/login`);
4091
- }
4092
4519
  return {
4093
4520
  ...signingInState,
4094
- authErrorMessage: errorMessage,
4095
- authStatus: 'signed-out'
4521
+ ...getLoggedOutBackendAuthState(errorMessage)
4096
4522
  };
4097
4523
  }
4098
4524
  };
4099
4525
 
4100
4526
  const handleClickLogout = async state => {
4101
- try {
4102
- await invoke('Auth.logout', state.backendUrl);
4103
- } catch {
4104
- // Ignore logout bridge errors and still clear local auth state.
4105
- }
4106
- await update({
4107
- 'secrets.chatBackendAccessToken': '',
4108
- 'secrets.chatBackendRefreshToken': ''
4109
- });
4110
- return {
4527
+ const loggingOutState = {
4111
4528
  ...state,
4112
- authAccessToken: '',
4113
4529
  authErrorMessage: '',
4114
- authRefreshToken: '',
4115
- authStatus: 'signed-out',
4116
- userName: '',
4117
- userSubscriptionPlan: '',
4118
- userUsedTokens: 0
4530
+ userState: 'loggingOut'
4531
+ };
4532
+ if (state.uid) {
4533
+ set(state.uid, state, loggingOutState);
4534
+ await invoke('Chat.rerender');
4535
+ }
4536
+ await logoutFromBackend(state.backendUrl);
4537
+ return {
4538
+ ...loggingOutState,
4539
+ ...getLoggedOutBackendAuthState()
4119
4540
  };
4120
4541
  };
4121
4542
 
@@ -4159,7 +4580,7 @@ const handleClickOpenRouterApiKeyWebsite = async state => {
4159
4580
  };
4160
4581
 
4161
4582
  const getAiResponse$1 = async options => {
4162
- return invoke$9('ChatCoordinator.getAiResponse', options);
4583
+ return invoke$8('ChatCoordinator.getAiResponse', options);
4163
4584
  };
4164
4585
 
4165
4586
  const execute = async (name, rawArguments, options) => {
@@ -4440,10 +4861,6 @@ const getClientRequestIdHeader = () => {
4440
4861
  };
4441
4862
  };
4442
4863
 
4443
- const delay = async ms => {
4444
- await new Promise(resolve => setTimeout(resolve, ms));
4445
- };
4446
-
4447
4864
  const getMockAiResponse = async (userMessage, delayInMs) => {
4448
4865
  await delay(delayInMs);
4449
4866
  return `Mock AI response: I received "${userMessage}".`;
@@ -6815,1440 +7232,16 @@ const getAiResponse = async ({
6815
7232
  };
6816
7233
 
6817
7234
  const parseMessageContents = async rawMessages => {
6818
- return invoke$7('ChatMessageParsing.parseMessageContents', rawMessages);
6819
- };
6820
-
6821
- const Actions = 'Actions';
6822
- const Button = 'Button';
6823
- const ButtonPrimary = 'ButtonPrimary';
6824
- const ButtonSecondary = 'ButtonSecondary';
6825
- const Chat = 'Chat';
6826
- const ChatActions = 'ChatActions';
6827
- const ChatAuthError = 'ChatAuthError';
6828
- const ChatFocus = 'ChatFocus';
6829
- const ChatFocusActions = 'ChatFocusActions';
6830
- const ChatFocusHeader = 'ChatFocusHeader';
6831
- const ChatFocusMainArea = 'ChatFocusMainArea';
6832
- const ChatFocusProject = 'ChatFocusProject';
6833
- const ChatHeader = 'ChatHeader';
6834
- const ChatHeaderLabel = 'ChatHeaderLabel';
6835
- const ChatInputBox = 'ChatInputBox';
6836
- const ChatList = 'ChatList';
6837
- const ChatListEmpty = 'ChatListEmpty';
6838
- const ChatListItem = 'ChatListItem';
6839
- const ChatListItemFocused = 'ChatListItemFocused';
6840
- const ChatListItemLabel = 'ChatListItemLabel';
6841
- const ChatListItemStatusFinished = 'ChatListItemStatusFinished';
6842
- const ChatListItemStatusIcon = 'ChatListItemStatusIcon';
6843
- const ChatListItemStatusInProgress = 'ChatListItemStatusInProgress';
6844
- const ChatListItemStatusRow = 'ChatListItemStatusRow';
6845
- const ChatListItemStatusStopped = 'ChatListItemStatusStopped';
6846
- const ChatMessageContent = 'ChatMessageContent';
6847
- const ChatMessageLink = 'ChatMessageLink';
6848
- const ChatModelPicker = 'ChatModelPicker';
6849
- const ChatModelPickerContainer = 'ChatModelPickerContainer';
6850
- const ChatModelPickerHeader = 'ChatModelPickerHeader';
6851
- const ChatModelPickerItem = 'ChatModelPickerItem';
6852
- const ChatModelPickerItemLabel = 'ChatModelPickerItemLabel';
6853
- const ChatModelPickerItemSelected = 'ChatModelPickerItemSelected';
6854
- const ChatModelPickerItemUsageCost = 'ChatModelPickerItemUsageCost';
6855
- const ChatModelPickerList = 'ChatModelPickerList';
6856
- const ChatName = 'ChatName';
6857
- const ChatOverlays = 'ChatOverlays';
6858
- const ChatOrderedList = 'ChatOrderedList';
6859
- const ChatOrderedListItem = 'ChatOrderedListItem';
6860
- const ChatOrderedListItemContent = 'ChatOrderedListItemContent';
6861
- const ChatOrderedListItemPrefix = 'ChatOrderedListItemPrefix';
6862
- const ChatOrderedListMarker = 'ChatOrderedListMarker';
6863
- const ChatComposerAttachment = 'ChatComposerAttachment';
6864
- const ChatComposerAttachmentImage = 'ChatComposerAttachmentImage';
6865
- const ChatComposerAttachmentInvalidImage = 'ChatComposerAttachmentInvalidImage';
6866
- const ChatComposerAttachmentLabel = 'ChatComposerAttachmentLabel';
6867
- const ChatComposerAttachmentPreview = 'ChatComposerAttachmentPreview';
6868
- const ChatComposerAttachmentPreviewOverlay = 'ChatComposerAttachmentPreviewOverlay';
6869
- const ChatComposerAttachmentPreviewOverlayError = 'ChatComposerAttachmentPreviewOverlayError';
6870
- const ChatComposerAttachmentPreviewOverlayImage = 'ChatComposerAttachmentPreviewOverlayImage';
6871
- const ChatComposerAttachmentRemoveButton = 'ChatComposerAttachmentRemoveButton';
6872
- const ChatComposerAttachments = 'ChatComposerAttachments';
6873
- const ChatComposerAttachmentTextFile = 'ChatComposerAttachmentTextFile';
6874
- const ChatAttachment = 'ChatAttachment';
6875
- const ChatAttachmentImage = 'ChatAttachmentImage';
6876
- const ChatAttachmentInvalidImage = 'ChatAttachmentInvalidImage';
6877
- const ChatAttachmentLabel = 'ChatAttachmentLabel';
6878
- const ChatAttachmentPreview = 'ChatAttachmentPreview';
6879
- const ChatAttachments = 'ChatAttachments';
6880
- const ChatAttachmentTextFile = 'ChatAttachmentTextFile';
6881
- const ChatSendArea = 'ChatSendArea';
6882
- const ChatSendAreaBottom = 'ChatSendAreaBottom';
6883
- const ChatSendAreaContent = 'ChatSendAreaContent';
6884
- const ChatSendAreaPrimaryControls = 'ChatSendAreaPrimaryControls';
6885
- const ChatTableWrapper = 'ChatTableWrapper';
6886
- const ChatTodoList = 'ChatTodoList';
6887
- const ChatTodoListHeader = 'ChatTodoListHeader';
6888
- const ChatTodoListItem = 'ChatTodoListItem';
6889
- const ChatTodoListItemCompleted = 'ChatTodoListItemCompleted';
6890
- const ChatTodoListItemInProgress = 'ChatTodoListItemInProgress';
6891
- const ChatTodoListItems = 'ChatTodoListItems';
6892
- const ChatTodoListItemTodo = 'ChatTodoListItemTodo';
6893
- const ChatToolCallFileName = 'ChatToolCallFileName';
6894
- const ChatToolCallQuestionOption = 'ChatToolCallQuestionOption';
6895
- const ChatToolCallQuestionOptions = 'ChatToolCallQuestionOptions';
6896
- const ChatToolCallQuestionText = 'ChatToolCallQuestionText';
6897
- const ChatToolCallReadFileLink = 'ChatToolCallReadFileLink';
6898
- const ChatToolCallRenderHtmlBody = 'ChatToolCallRenderHtmlBody';
6899
- const ChatToolCallRenderHtmlContent = 'ChatToolCallRenderHtmlContent';
6900
- const ChatToolCallRenderHtmlLabel = 'ChatToolCallRenderHtmlLabel';
6901
- const ChatToolCalls = 'ChatToolCalls';
6902
- const ChatToolCallsLabel = 'ChatToolCallsLabel';
6903
- const ChatUnorderedList = 'ChatUnorderedList';
6904
- const ChatUnorderedListItem = 'ChatUnorderedListItem';
6905
- const ChatViewDropOverlay = 'ChatViewDropOverlay';
6906
- const ChatViewDropOverlayActive = 'ChatViewDropOverlayActive';
6907
- const ChatWelcomeMessage = 'ChatWelcomeMessage';
6908
- const CustomSelectContainer = 'CustomSelectContainer';
6909
- const CustomSelectPopOver = 'CustomSelectPopOver';
6910
- const Deletion = 'Deletion';
6911
- const Empty = '';
6912
- const FileIcon = 'FileIcon';
6913
- const IconButton = 'IconButton';
6914
- const IconButtonDisabled = 'IconButtonDisabled';
6915
- const ImageElement = 'ImageElement';
6916
- const ImageErrorMessage = 'ImageErrorMessage';
6917
- const InputBox = 'InputBox';
6918
- const Insertion = 'Insertion';
6919
- const Label = 'Label';
6920
- const LabelDetail = 'LabelDetail';
6921
- const Markdown = 'Markdown';
6922
- const MarkdownMathBlock = 'MarkdownMathBlock';
6923
- const MarkdownQuote = 'MarkdownQuote';
6924
- const MarkdownTable = 'MarkdownTable';
6925
- const MaskIcon = 'MaskIcon';
6926
- const MaskIconAccount = 'MaskIconAccount';
6927
- const MaskIconAdd = 'MaskIconAdd';
6928
- const MaskIconArrowLeft = 'MaskIconArrowLeft';
6929
- const MaskIconChevronDown = 'MaskIconChevronDown';
6930
- const MaskIconChevronRight = 'MaskIconChevronRight';
6931
- const MaskIconChevronUp = 'MaskIconChevronUp';
6932
- const MaskIconClose = 'MaskIconClose';
6933
- const MaskIconDebugPause = 'MaskIconDebugPause';
6934
- const MaskIconLayoutPanelLeft = 'MaskIconLayoutPanelLeft';
6935
- const MaskIconSearch = 'MaskIconSearch';
6936
- const MaskIconSettingsGear = 'MaskIconSettingsGear';
6937
- const MaskIconSignOut = 'MaskIconSignOut';
6938
- const Message = 'Message';
6939
- const MessageAssistant = 'MessageAssistant';
6940
- const MessageUser = 'MessageUser';
6941
- const MissingApiKeyForm = 'MissingApiKeyForm';
6942
- const MultiLineInputBox = 'MultilineInputBox';
6943
- const ProjectAddButton = 'ProjectAddButton';
6944
- const ProjectList = 'ProjectList';
6945
- const ProjectListChevron = 'ProjectListChevron';
6946
- const ProjectListGroup = 'ProjectListGroup';
6947
- const ProjectListItem = 'ProjectListItem';
6948
- const ProjectListItemActions = 'ProjectListItemActions';
6949
- const ProjectListItemAddChatButton = 'ProjectListItemAddChatButton';
6950
- const ProjectListItemLabel = 'ProjectListItemLabel';
6951
- const ProjectListItemSelected = 'ProjectListItemSelected';
6952
- const ProjectSessionItem = 'ProjectSessionItem';
6953
- const ProjectSessionItemLabel = 'ProjectSessionItemLabel';
6954
- const ProjectSessionItemSelected = 'ProjectSessionItemSelected';
6955
- const ProjectSidebar = 'ProjectSidebar';
6956
- const SearchFieldContainer = 'SearchFieldContainer';
6957
- const RunModePickerContainer = 'RunModePickerContainer';
6958
- const RunModePickerPopOver = 'RunModePickerPopOver';
6959
- const Select = 'Select';
6960
- const SelectLabel = 'SelectLabel';
6961
- const SendButtonDisabled = 'SendButtonDisabled';
6962
- const SessionArchiveButton = 'SessionArchiveButton';
6963
- const StrikeThrough = 'StrikeThrough';
6964
- const TokenAttribute = 'TokenAttribute';
6965
- const TokenComment = 'TokenComment';
6966
- const TokenKeyword = 'TokenKeyword';
6967
- const TokenNumber = 'TokenNumber';
6968
- const TokenProperty = 'TokenProperty';
6969
- const TokenString = 'TokenString';
6970
- const TokenTag = 'TokenTag';
6971
- const TokenUsageOverview = 'TokenUsageOverview';
6972
- const TokenUsageRing = 'TokenUsageRing';
6973
- const TokenUsageRingInner = 'TokenUsageRingInner';
6974
- const TokenValue = 'TokenValue';
6975
- const ToolCallName = 'ToolCallName';
6976
- const Viewlet = 'Viewlet';
6977
-
6978
- const jsRules = [{
6979
- className: TokenComment,
6980
- regex: /\/\/[^\n]*/
6981
- }, {
6982
- className: TokenComment,
6983
- regex: /\/\*[\s\S]*?\*\//
6984
- }, {
6985
- className: TokenString,
6986
- regex: /"[^"\\]*(?:\\.[^"\\]*)*"/
6987
- }, {
6988
- className: TokenString,
6989
- regex: /'[^'\\]*(?:\\.[^'\\]*)*'/
6990
- }, {
6991
- className: TokenString,
6992
- regex: /`[^`\\]*(?:\\.[^`\\]*)*`/
6993
- }, {
6994
- className: TokenNumber,
6995
- regex: /\b\d+\.?\d*\b/
6996
- }, {
6997
- className: TokenKeyword,
6998
- regex: /\b(?:const|let|var|function|return|if|else|for|while|class|new|typeof|instanceof|import|export|from|default|async|await|try|catch|finally|throw|this|true|false|null|undefined)\b/
6999
- }];
7000
- const tsRules = [{
7001
- className: TokenComment,
7002
- regex: /\/\/[^\n]*/
7003
- }, {
7004
- className: TokenComment,
7005
- regex: /\/\*[\s\S]*?\*\//
7006
- }, {
7007
- className: TokenString,
7008
- regex: /"[^"\\]*(?:\\.[^"\\]*)*"/
7009
- }, {
7010
- className: TokenString,
7011
- regex: /'[^'\\]*(?:\\.[^'\\]*)*'/
7012
- }, {
7013
- className: TokenString,
7014
- regex: /`[^`\\]*(?:\\.[^`\\]*)*`/
7015
- }, {
7016
- className: TokenNumber,
7017
- regex: /\b\d+\.?\d*\b/
7018
- }, {
7019
- className: TokenKeyword,
7020
- regex: /\b(?:abstract|any|as|asserts|async|await|boolean|class|const|constructor|declare|default|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|infer|instanceof|interface|is|keyof|let|module|namespace|never|new|null|number|object|override|private|protected|public|readonly|return|satisfies|set|static|string|super|switch|symbol|this|throw|true|try|type|typeof|undefined|unknown|var|void|while)\b/
7021
- }];
7022
- const htmlRules = [{
7023
- className: TokenComment,
7024
- regex: /<!--[\s\S]*?-->/
7025
- }, {
7026
- className: TokenTag,
7027
- regex: /<\/[a-zA-Z][a-zA-Z0-9-]*\s*>/
7028
- }, {
7029
- className: TokenTag,
7030
- regex: /<[a-zA-Z][a-zA-Z0-9-]*/
7031
- }, {
7032
- className: TokenTag,
7033
- regex: /\/?>/
7034
- }, {
7035
- className: TokenString,
7036
- regex: /"[^"]*"/
7037
- }, {
7038
- className: TokenString,
7039
- regex: /'[^']*'/
7040
- }, {
7041
- className: TokenAttribute,
7042
- regex: /[a-zA-Z-]+(?=\s*=)/
7043
- }];
7044
- const cssRules = [{
7045
- className: TokenComment,
7046
- regex: /\/\*[\s\S]*?\*\//
7047
- }, {
7048
- className: TokenString,
7049
- regex: /"[^"]*"/
7050
- }, {
7051
- className: TokenString,
7052
- regex: /'[^']*'/
7053
- }, {
7054
- className: TokenValue,
7055
- regex: /#[0-9a-fA-F]{3,8}/
7056
- }, {
7057
- className: TokenValue,
7058
- regex: /\b\d+(?:\.\d+)?(?:px|em|rem|%|vh|vw|pt|s|ms|fr)?\b/
7059
- }, {
7060
- className: TokenProperty,
7061
- regex: /[a-zA-Z-]+(?=\s*:)/
7062
- }];
7063
- const pythonRules = [{
7064
- className: TokenComment,
7065
- regex: /#[^\n]*/
7066
- }, {
7067
- className: TokenString,
7068
- regex: /"[^"\\]*(?:\\.[^"\\]*)*"/
7069
- }, {
7070
- className: TokenString,
7071
- regex: /'[^'\\]*(?:\\.[^'\\]*)*'/
7072
- }, {
7073
- className: TokenNumber,
7074
- regex: /\b\d+\.?\d*\b/
7075
- }, {
7076
- className: TokenKeyword,
7077
- regex: /\b(?:def|class|return|if|elif|else|for|while|in|import|from|as|with|try|except|finally|raise|lambda|yield|pass|break|continue|True|False|None|and|or|not|is)\b/
7078
- }];
7079
- const jsonRules = [{
7080
- className: TokenProperty,
7081
- regex: /"[^"\\]*(?:\\.[^"\\]*)*"(?=\s*:)/
7082
- }, {
7083
- className: TokenString,
7084
- regex: /"[^"\\]*(?:\\.[^"\\]*)*"/
7085
- }, {
7086
- className: TokenNumber,
7087
- regex: /-?\b\d+\.?\d*(?:[eE][+-]?\d+)?\b/
7088
- }, {
7089
- className: TokenKeyword,
7090
- regex: /\b(?:true|false|null)\b/
7091
- }];
7092
- const tokenize = (code, rules) => {
7093
- const tokens = [];
7094
- let pos = 0;
7095
- while (pos < code.length) {
7096
- let matched = false;
7097
- for (const rule of rules) {
7098
- const match = rule.regex.exec(code.slice(pos));
7099
- if (match && match.index === 0) {
7100
- tokens.push({
7101
- className: rule.className,
7102
- text: match[0]
7103
- });
7104
- pos += match[0].length;
7105
- matched = true;
7106
- break;
7107
- }
7108
- }
7109
- if (!matched) {
7110
- const last = tokens.at(-1);
7111
- if (last && last.className === '') {
7112
- tokens.pop();
7113
- tokens.push({
7114
- className: '',
7115
- text: last.text + code[pos]
7116
- });
7117
- } else {
7118
- tokens.push({
7119
- className: '',
7120
- text: code[pos]
7121
- });
7122
- }
7123
- pos++;
7124
- }
7125
- }
7126
- return tokens;
7127
- };
7128
- const highlightCode = (code, language) => {
7129
- if (!language) {
7130
- return [{
7131
- className: '',
7132
- text: code
7133
- }];
7134
- }
7135
- const normalized = language.toLowerCase();
7136
- if (normalized === 'html') {
7137
- return tokenize(code, htmlRules);
7138
- }
7139
- if (normalized === 'css') {
7140
- return tokenize(code, cssRules);
7141
- }
7142
- if (normalized === 'js' || normalized === 'javascript') {
7143
- return tokenize(code, jsRules);
7144
- }
7145
- if (normalized === 'ts' || normalized === 'typescript') {
7146
- return tokenize(code, tsRules);
7147
- }
7148
- if (normalized === 'py' || normalized === 'python') {
7149
- return tokenize(code, pythonRules);
7150
- }
7151
- if (normalized === 'json') {
7152
- return tokenize(code, jsonRules);
7153
- }
7154
- return [{
7155
- className: '',
7156
- text: code
7157
- }];
7158
- };
7159
-
7160
- const isAlphaNumeric = value => {
7161
- if (!value) {
7162
- return false;
7163
- }
7164
- const code = value.codePointAt(0) ?? 0;
7165
- if (code >= 48 && code <= 57) {
7166
- return true;
7167
- }
7168
- if (code >= 65 && code <= 90) {
7169
- return true;
7170
- }
7171
- return code >= 97 && code <= 122;
7172
- };
7173
- const sanitizeLinkUrl = url => {
7174
- const trimmedUrl = url.trim();
7175
- const normalized = url.trim().toLowerCase();
7176
- if (normalized.startsWith('http://') || normalized.startsWith('https://') || normalized.startsWith('file://') || normalized.startsWith('vscode-references://')) {
7177
- return trimmedUrl;
7178
- }
7179
- if (!trimmedUrl || trimmedUrl.startsWith('#') || trimmedUrl.startsWith('?') || trimmedUrl.startsWith('/') || trimmedUrl.startsWith('\\')) {
7180
- return '#';
7181
- }
7182
- if (trimmedUrl.includes('://') || trimmedUrl.includes(':')) {
7183
- return '#';
7184
- }
7185
- if (isPathTraversalAttempt(trimmedUrl)) {
7186
- return '#';
7187
- }
7188
- const normalizedPath = normalizeRelativePath(trimmedUrl);
7189
- if (normalizedPath === '.') {
7190
- return '#';
7191
- }
7192
- return `file:///workspace/${normalizedPath}`;
7193
- };
7194
- const sanitizeImageUrl = url => {
7195
- const normalized = url.trim().toLowerCase();
7196
- if (normalized.startsWith('http://') || normalized.startsWith('https://')) {
7197
- return url;
7198
- }
7199
- return '#';
7200
- };
7201
- const isOpenBracket = value => {
7202
- return value === '(' || value === '[' || value === '{';
7203
- };
7204
- const isCloseBracket = value => {
7205
- return value === ')' || value === ']' || value === '}';
7206
- };
7207
- const findRawUrlEnd = (value, start) => {
7208
- let index = start;
7209
- while (index < value.length) {
7210
- const current = value[index];
7211
- if (current === ' ' || current === '\n' || current === '\r' || current === '\t' || current === '"' || current === "'" || current === '`' || current === '<' || current === '>') {
7212
- break;
7213
- }
7214
- index++;
7215
- }
7216
- return index;
7217
- };
7218
- const trimRawUrlEnd = url => {
7219
- let end = url.length;
7220
- while (end > 0) {
7221
- const current = url[end - 1];
7222
- if (current === '.' || current === ',' || current === ':' || current === ';' || current === '!' || current === '?') {
7223
- end--;
7224
- continue;
7225
- }
7226
- if (isCloseBracket(current)) {
7227
- const inner = url.slice(0, end - 1);
7228
- let openCount = 0;
7229
- let closeCount = 0;
7230
- for (let i = 0; i < inner.length; i++) {
7231
- if (isOpenBracket(inner[i])) {
7232
- openCount++;
7233
- } else if (isCloseBracket(inner[i])) {
7234
- closeCount++;
7235
- }
7236
- }
7237
- if (closeCount >= openCount) {
7238
- end--;
7239
- continue;
7240
- }
7241
- }
7242
- break;
7243
- }
7244
- return url.slice(0, end);
7245
- };
7246
- const parseRawLinkToken = (value, start) => {
7247
- if (!value.startsWith('https://', start) && !value.startsWith('http://', start)) {
7248
- return undefined;
7249
- }
7250
- if (start >= 2 && value[start - 1] === '(' && value[start - 2] === ']') {
7251
- return undefined;
7252
- }
7253
- const end = findRawUrlEnd(value, start);
7254
- const rawUrl = value.slice(start, end);
7255
- const href = trimRawUrlEnd(rawUrl);
7256
- if (!href) {
7257
- return undefined;
7258
- }
7259
- return {
7260
- length: href.length,
7261
- node: {
7262
- href: sanitizeLinkUrl(href),
7263
- text: href,
7264
- type: 'link'
7265
- }
7266
- };
7267
- };
7268
- const parseLinkToken = (value, start) => {
7269
- if (value[start] !== '[') {
7270
- return undefined;
7271
- }
7272
- const textEnd = value.indexOf(']', start + 1);
7273
- if (textEnd === -1) {
7274
- return undefined;
7275
- }
7276
- if (value[textEnd + 1] !== '(') {
7277
- return undefined;
7278
- }
7279
- let depth = 1;
7280
- let index = textEnd + 2;
7281
- while (index < value.length) {
7282
- const current = value[index];
7283
- if (current === '\n') {
7284
- return undefined;
7285
- }
7286
- if (current === '(') {
7287
- depth++;
7288
- } else if (current === ')') {
7289
- depth--;
7290
- if (depth === 0) {
7291
- const text = value.slice(start + 1, textEnd);
7292
- const href = value.slice(textEnd + 2, index);
7293
- if (!text || !href) {
7294
- return undefined;
7295
- }
7296
- return {
7297
- length: index - start + 1,
7298
- node: {
7299
- href: sanitizeLinkUrl(href),
7300
- text,
7301
- type: 'link'
7302
- }
7303
- };
7304
- }
7305
- }
7306
- index++;
7307
- }
7308
- return undefined;
7309
- };
7310
- const parseImageToken = (value, start) => {
7311
- if (value[start] !== '!' || value[start + 1] !== '[') {
7312
- return undefined;
7313
- }
7314
- const textEnd = value.indexOf(']', start + 2);
7315
- if (textEnd === -1) {
7316
- return undefined;
7317
- }
7318
- if (value[textEnd + 1] !== '(') {
7319
- return undefined;
7320
- }
7321
- let depth = 1;
7322
- let index = textEnd + 2;
7323
- while (index < value.length) {
7324
- const current = value[index];
7325
- if (current === '\n') {
7326
- return undefined;
7327
- }
7328
- if (current === '(') {
7329
- depth++;
7330
- } else if (current === ')') {
7331
- depth--;
7332
- if (depth === 0) {
7333
- const alt = value.slice(start + 2, textEnd);
7334
- const src = value.slice(textEnd + 2, index);
7335
- if (!src) {
7336
- return undefined;
7337
- }
7338
- return {
7339
- length: index - start + 1,
7340
- node: {
7341
- alt,
7342
- src: sanitizeImageUrl(src),
7343
- type: 'image'
7344
- }
7345
- };
7346
- }
7347
- }
7348
- index++;
7349
- }
7350
- return undefined;
7351
- };
7352
- const parseBoldToken = (value, start) => {
7353
- if (value[start] !== '*' || value[start + 1] !== '*') {
7354
- return undefined;
7355
- }
7356
- const end = value.indexOf('**', start + 2);
7357
- if (end === -1) {
7358
- return undefined;
7359
- }
7360
- const text = value.slice(start + 2, end);
7361
- if (!text || text.includes('\n')) {
7362
- return undefined;
7363
- }
7364
- return {
7365
- length: end - start + 2,
7366
- node: {
7367
- children: parseInlineNodes(text),
7368
- type: 'bold'
7369
- }
7370
- };
7371
- };
7372
- const parseBoldItalicToken = (value, start) => {
7373
- if (value[start] !== '*' || value[start + 1] !== '*' || value[start + 2] !== '*') {
7374
- return undefined;
7375
- }
7376
- const end = value.indexOf('***', start + 3);
7377
- if (end === -1) {
7378
- return undefined;
7379
- }
7380
- const text = value.slice(start + 3, end);
7381
- if (!text || text.includes('\n')) {
7382
- return undefined;
7383
- }
7384
- return {
7385
- length: end - start + 3,
7386
- node: {
7387
- children: [{
7388
- children: parseInlineNodes(text),
7389
- type: 'italic'
7390
- }],
7391
- type: 'bold'
7392
- }
7393
- };
7394
- };
7395
- const findItalicEnd = (value, start) => {
7396
- let index = start + 1;
7397
- while (index < value.length) {
7398
- if (value[index] !== '*') {
7399
- index++;
7400
- continue;
7401
- }
7402
- if (value[index + 1] !== '*') {
7403
- return index;
7404
- }
7405
- const boldEnd = value.indexOf('**', index + 2);
7406
- if (boldEnd === -1) {
7407
- return -1;
7408
- }
7409
- index = boldEnd + 2;
7410
- }
7411
- return -1;
7412
- };
7413
- const parseItalicToken = (value, start) => {
7414
- if (value[start] !== '*' || value[start + 1] === '*') {
7415
- return undefined;
7416
- }
7417
- const end = findItalicEnd(value, start);
7418
- if (end === -1) {
7419
- return undefined;
7420
- }
7421
- const text = value.slice(start + 1, end);
7422
- if (!text) {
7423
- return undefined;
7424
- }
7425
- return {
7426
- length: end - start + 1,
7427
- node: {
7428
- children: parseInlineNodes(text),
7429
- type: 'italic'
7430
- }
7431
- };
7432
- };
7433
- const parseStrikethroughToken = (value, start) => {
7434
- if (value[start] !== '~' || value[start + 1] !== '~') {
7435
- return undefined;
7436
- }
7437
- const end = value.indexOf('~~', start + 2);
7438
- if (end === -1) {
7439
- return undefined;
7440
- }
7441
- const text = value.slice(start + 2, end);
7442
- if (!text || text.includes('\n')) {
7443
- return undefined;
7444
- }
7445
- return {
7446
- length: end - start + 2,
7447
- node: {
7448
- children: parseInlineNodes(text),
7449
- type: 'strikethrough'
7450
- }
7451
- };
7452
- };
7453
- const parseInlineCodeToken = (value, start) => {
7454
- if (value[start] !== '`') {
7455
- return undefined;
7456
- }
7457
- const end = value.indexOf('`', start + 1);
7458
- if (end === -1) {
7459
- return undefined;
7460
- }
7461
- const codeText = value.slice(start + 1, end);
7462
- if (!codeText || codeText.includes('\n')) {
7463
- return undefined;
7464
- }
7465
- return {
7466
- length: end - start + 1,
7467
- node: {
7468
- text: codeText,
7469
- type: 'inline-code'
7470
- }
7471
- };
7472
- };
7473
- const parseMathToken = (value, start) => {
7474
- if (value[start] !== '$') {
7475
- return undefined;
7476
- }
7477
- const delimiterLength = value[start + 1] === '$' ? 2 : 1;
7478
- const previous = value[start - 1];
7479
- if (isAlphaNumeric(previous)) {
7480
- return undefined;
7481
- }
7482
- const next = value[start + delimiterLength];
7483
- if (!next || next === '.') {
7484
- return undefined;
7485
- }
7486
- if (next === '(' && (value[start + delimiterLength + 1] === '"' || value[start + delimiterLength + 1] === "'")) {
7487
- return undefined;
7488
- }
7489
- let index = start + delimiterLength;
7490
- while (index < value.length) {
7491
- if (value[index] === '\n') {
7492
- return undefined;
7493
- }
7494
- const isClosed = delimiterLength === 2 ? value.startsWith('$$', index) : value[index] === '$';
7495
- if (isClosed) {
7496
- const body = value.slice(start + delimiterLength, index);
7497
- const following = value[index + delimiterLength];
7498
- if (!body || isAlphaNumeric(following)) {
7499
- return undefined;
7500
- }
7501
- return {
7502
- length: index - start + delimiterLength,
7503
- node: {
7504
- displayMode: delimiterLength === 2,
7505
- text: body.trim(),
7506
- type: 'math-inline'
7507
- }
7508
- };
7509
- }
7510
- if (value[index] === '\\') {
7511
- index += 2;
7512
- continue;
7513
- }
7514
- index++;
7515
- }
7516
- return undefined;
7517
- };
7518
- const parseInlineToken = (value, start) => {
7519
- return parseImageToken(value, start) || parseLinkToken(value, start) || parseRawLinkToken(value, start) || parseBoldItalicToken(value, start) || parseBoldToken(value, start) || parseItalicToken(value, start) || parseLinkToken(value, start) || parseBoldItalicToken(value, start) || parseBoldToken(value, start) || parseItalicToken(value, start) || parseStrikethroughToken(value, start) || parseInlineCodeToken(value, start) || parseMathToken(value, start);
7520
- };
7521
- const parseInlineNodes = value => {
7522
- const nodes = [];
7523
- let textStart = 0;
7524
- let index = 0;
7525
- const pushText = end => {
7526
- if (end <= textStart) {
7527
- return;
7528
- }
7529
- nodes.push({
7530
- text: value.slice(textStart, end),
7531
- type: 'text'
7532
- });
7533
- };
7534
- while (index < value.length) {
7535
- const parsed = parseInlineToken(value, index);
7536
- if (!parsed) {
7537
- index++;
7538
- continue;
7539
- }
7540
- pushText(index);
7541
- nodes.push(parsed.node);
7542
- index += parsed.length;
7543
- textStart = index;
7544
- }
7545
- pushText(value.length);
7546
- if (nodes.length === 0) {
7547
- return [{
7548
- text: value,
7549
- type: 'text'
7550
- }];
7551
- }
7552
- return nodes;
7553
- };
7554
-
7555
- const markdownMathBlockDelimiter = '$$';
7556
- const escapedNewlineRegex = /\\r\\n|\\n/g;
7557
- const lineBreakRegex = /\r?\n/;
7558
- const tableDelimiterRegex = /\|\s*[-:]{3,}/;
7559
- const inlineTableCellRegex = /\|\s+\|/g;
7560
- const normalizeEscapedNewlines = value => {
7561
- if (value.includes('\\n')) {
7562
- return value.replaceAll(escapedNewlineRegex, '\n');
7563
- }
7564
- return value;
7565
- };
7566
- const normalizeInlineTables = value => {
7567
- return value.split(lineBreakRegex).map(line => {
7568
- if (!line.includes('|')) {
7569
- return line;
7570
- }
7571
- if (!tableDelimiterRegex.test(line)) {
7572
- return line;
7573
- }
7574
- return line.replaceAll(inlineTableCellRegex, '|\n|');
7575
- }).join('\n');
7576
- };
7577
- const parseHeadingLine = line => {
7578
- const trimmedStart = line.trimStart();
7579
- let index = 0;
7580
- while (index < trimmedStart.length && trimmedStart[index] === '#') {
7581
- index++;
7582
- }
7583
- if (index === 0 || index > 6) {
7584
- return undefined;
7585
- }
7586
- if (trimmedStart[index] !== ' ') {
7587
- return undefined;
7588
- }
7589
- const text = trimmedStart.slice(index).trimStart();
7590
- return {
7591
- level: index,
7592
- text
7593
- };
7594
- };
7595
- const parseOrderedListItemLine = line => {
7596
- let indentation = 0;
7597
- while (indentation < line.length && line[indentation] === ' ') {
7598
- indentation++;
7599
- }
7600
- let index = indentation;
7601
- const firstDigit = index;
7602
- while (index < line.length && line[index] >= '0' && line[index] <= '9') {
7603
- index++;
7604
- }
7605
- if (index === firstDigit || line[index] !== '.') {
7606
- return undefined;
7607
- }
7608
- index++;
7609
- if (line[index] !== ' ') {
7610
- return undefined;
7611
- }
7612
- while (index < line.length && line[index] === ' ') {
7613
- index++;
7614
- }
7615
- return {
7616
- indentation,
7617
- text: line.slice(index)
7618
- };
7619
- };
7620
- const parseUnorderedListItemLine = line => {
7621
- let indentation = 0;
7622
- while (indentation < line.length && line[indentation] === ' ') {
7623
- indentation++;
7624
- }
7625
- const marker = line[indentation];
7626
- if (marker !== '-' && marker !== '*') {
7627
- return undefined;
7628
- }
7629
- let index = indentation + 1;
7630
- if (line[index] !== ' ') {
7631
- return undefined;
7632
- }
7633
- while (index < line.length && line[index] === ' ') {
7634
- index++;
7635
- }
7636
- return {
7637
- indentation,
7638
- text: line.slice(index)
7639
- };
7640
- };
7641
- const parseBlockQuoteLine = line => {
7642
- const trimmedStart = line.trimStart();
7643
- if (!trimmedStart.startsWith('>')) {
7644
- return undefined;
7645
- }
7646
- const content = trimmedStart.slice(1);
7647
- if (!content) {
7648
- return '';
7649
- }
7650
- if (content.startsWith(' ')) {
7651
- return content.slice(1);
7652
- }
7653
- return content;
7654
- };
7655
- const isThematicBreakLine = line => {
7656
- const trimmedStart = line.trimStart();
7657
- const leadingSpaces = line.length - trimmedStart.length;
7658
- if (leadingSpaces > 3) {
7659
- return false;
7660
- }
7661
- const trimmed = trimmedStart.trimEnd();
7662
- if (!trimmed) {
7663
- return false;
7664
- }
7665
- const marker = trimmed[0];
7666
- if (marker !== '-' && marker !== '_' && marker !== '*') {
7667
- return false;
7668
- }
7669
- let markerCount = 0;
7670
- for (let i = 0; i < trimmed.length; i++) {
7671
- const char = trimmed[i];
7672
- if (char === marker) {
7673
- markerCount++;
7674
- continue;
7675
- }
7676
- if (char !== ' ') {
7677
- return false;
7678
- }
7679
- }
7680
- return markerCount >= 3;
7681
- };
7682
- const isTableRow = line => {
7683
- const trimmed = line.trim();
7684
- if (!trimmed.startsWith('|') || !trimmed.endsWith('|')) {
7685
- return false;
7686
- }
7687
- return trimmed.length > 2;
7688
- };
7689
- const getTableCells = line => {
7690
- const trimmed = line.trim();
7691
- return trimmed.slice(1, -1).split('|').map(part => part.trim());
7692
- };
7693
- const scanBlockTokens = rawMessage => {
7694
- const normalizedMessage = normalizeInlineTables(normalizeEscapedNewlines(rawMessage));
7695
- const lines = normalizedMessage.split(lineBreakRegex);
7696
- const tokens = [];
7697
- for (let i = 0; i < lines.length; i++) {
7698
- const line = lines[i];
7699
- const trimmed = line.trim();
7700
- if (!trimmed) {
7701
- tokens.push({
7702
- type: 'blank-line'
7703
- });
7704
- continue;
7705
- }
7706
- const blockQuoteLine = parseBlockQuoteLine(line);
7707
- if (blockQuoteLine !== undefined) {
7708
- tokens.push({
7709
- text: blockQuoteLine,
7710
- type: 'blockquote-line'
7711
- });
7712
- continue;
7713
- }
7714
- if (trimmed.startsWith('```')) {
7715
- const language = trimmed.slice(3).trim();
7716
- const codeLines = [];
7717
- i++;
7718
- while (i < lines.length && !lines[i].trim().startsWith('```')) {
7719
- codeLines.push(lines[i]);
7720
- i++;
7721
- }
7722
- if (language) {
7723
- tokens.push({
7724
- language,
7725
- text: codeLines.join('\n'),
7726
- type: 'code-block'
7727
- });
7728
- } else {
7729
- tokens.push({
7730
- text: codeLines.join('\n'),
7731
- type: 'code-block'
7732
- });
7733
- }
7734
- continue;
7735
- }
7736
- if (trimmed === markdownMathBlockDelimiter) {
7737
- const endIndex = lines.findIndex((candidate, index) => {
7738
- if (index <= i) {
7739
- return false;
7740
- }
7741
- return candidate.trim() === markdownMathBlockDelimiter;
7742
- });
7743
- if (endIndex !== -1) {
7744
- tokens.push({
7745
- text: lines.slice(i + 1, endIndex).join('\n').trim(),
7746
- type: 'math-block'
7747
- });
7748
- i = endIndex;
7749
- continue;
7750
- }
7751
- }
7752
- const heading = parseHeadingLine(line);
7753
- if (heading) {
7754
- tokens.push({
7755
- level: heading.level,
7756
- text: heading.text,
7757
- type: 'heading-line'
7758
- });
7759
- continue;
7760
- }
7761
- if (isThematicBreakLine(line)) {
7762
- tokens.push({
7763
- type: 'thematic-break'
7764
- });
7765
- continue;
7766
- }
7767
- const ordered = parseOrderedListItemLine(line);
7768
- if (ordered) {
7769
- tokens.push({
7770
- indentation: ordered.indentation,
7771
- text: ordered.text,
7772
- type: 'ordered-list-item-line'
7773
- });
7774
- continue;
7775
- }
7776
- const unordered = parseUnorderedListItemLine(line);
7777
- if (unordered) {
7778
- tokens.push({
7779
- indentation: unordered.indentation,
7780
- text: unordered.text,
7781
- type: 'unordered-list-item-line'
7782
- });
7783
- continue;
7784
- }
7785
- if (isTableRow(line)) {
7786
- tokens.push({
7787
- cells: getTableCells(line),
7788
- line,
7789
- type: 'table-row-line'
7790
- });
7791
- continue;
7792
- }
7793
- tokens.push({
7794
- text: line,
7795
- type: 'paragraph-line'
7796
- });
7797
- }
7798
- return tokens;
7799
- };
7800
-
7801
- const isTableSeparatorCell = value => {
7802
- if (!value) {
7803
- return false;
7804
- }
7805
- let index = 0;
7806
- if (value[index] === ':') {
7807
- index++;
7808
- }
7809
- let dashCount = 0;
7810
- while (index < value.length && value[index] === '-') {
7811
- dashCount++;
7812
- index++;
7813
- }
7814
- if (dashCount < 3) {
7815
- return false;
7816
- }
7817
- if (index < value.length && value[index] === ':') {
7818
- index++;
7819
- }
7820
- return index === value.length;
7821
- };
7822
- const isTableSeparatorToken = (token, expectedColumns) => {
7823
- if (!token || token.type !== 'table-row-line') {
7824
- return false;
7825
- }
7826
- if (token.cells.length !== expectedColumns) {
7827
- return false;
7828
- }
7829
- return token.cells.every(isTableSeparatorCell);
7830
- };
7831
- const toTableCell = value => {
7832
- return {
7833
- children: parseInlineNodes(value),
7834
- type: 'table-cell'
7835
- };
7836
- };
7837
- const toTableRow = token => {
7838
- return {
7839
- cells: token.cells.map(toTableCell),
7840
- type: 'table-row'
7841
- };
7842
- };
7843
- const getEmptyTextNode = () => {
7844
- return [{
7845
- children: [{
7846
- text: '',
7847
- type: 'text'
7848
- }],
7849
- type: 'text'
7850
- }];
7851
- };
7852
- const parseBlockTokens = tokens => {
7853
- if (tokens.length === 0) {
7854
- return getEmptyTextNode();
7855
- }
7856
- const nodes = [];
7857
- let paragraphLines = [];
7858
- let listItems = [];
7859
- let listType = '';
7860
- let orderedListPathStack = [];
7861
- let canContinueOrderedListItemParagraph = false;
7862
- const createListItem = (text, index) => {
7863
- return {
7864
- children: parseInlineNodes(text),
7865
- ...(index === undefined ? {} : {
7866
- index
7867
- }),
7868
- type: 'list-item'
7869
- };
7870
- };
7871
- const getListItemAtPath = (items, path) => {
7872
- let currentItems = items;
7873
- let currentItem;
7874
- for (const index of path) {
7875
- currentItem = currentItems[index];
7876
- if (!currentItem) {
7877
- return undefined;
7878
- }
7879
- currentItems = currentItem.nestedItems || [];
7880
- }
7881
- return currentItem;
7882
- };
7883
- const appendNestedItemAtPath = (items, path, item, nestedListType) => {
7884
- if (path.length === 0) {
7885
- return [...items, item];
7886
- }
7887
- const [index, ...rest] = path;
7888
- const current = items[index];
7889
- if (!current) {
7890
- return [...items];
7891
- }
7892
- const nextNestedItems = rest.length > 0 ? appendNestedItemAtPath(current.nestedItems || [], rest, item, nestedListType) : [...(current.nestedItems || []), item];
7893
- const nextItem = {
7894
- ...current,
7895
- nestedItems: nextNestedItems,
7896
- nestedListType
7897
- };
7898
- return [...items.slice(0, index), nextItem, ...items.slice(index + 1)];
7899
- };
7900
- const appendInlineChildrenAtPath = (items, path, children) => {
7901
- if (path.length === 0) {
7902
- return [...items];
7903
- }
7904
- const [index, ...rest] = path;
7905
- const current = items[index];
7906
- if (!current) {
7907
- return [...items];
7908
- }
7909
- const lineBreakNode = {
7910
- text: '\n',
7911
- type: 'text'
7912
- };
7913
- const nextChildren = [...current.children, lineBreakNode, ...children];
7914
- const nextItem = rest.length > 0 ? {
7915
- ...current,
7916
- nestedItems: appendInlineChildrenAtPath(current.nestedItems || [], rest, children)
7917
- } : {
7918
- ...current,
7919
- children: nextChildren
7920
- };
7921
- return [...items.slice(0, index), nextItem, ...items.slice(index + 1)];
7922
- };
7923
- const flushParagraph = () => {
7924
- if (paragraphLines.length === 0) {
7925
- return;
7926
- }
7927
- nodes.push({
7928
- children: parseInlineNodes(paragraphLines.join('\n')),
7929
- type: 'text'
7930
- });
7931
- paragraphLines = [];
7932
- };
7933
- const flushList = () => {
7934
- if (listItems.length === 0) {
7935
- return;
7936
- }
7937
- nodes.push({
7938
- items: listItems,
7939
- type: listType || 'ordered-list'
7940
- });
7941
- listItems = [];
7942
- listType = '';
7943
- orderedListPathStack = [];
7944
- canContinueOrderedListItemParagraph = false;
7945
- };
7946
- for (let i = 0; i < tokens.length; i++) {
7947
- const token = tokens[i];
7948
- if (token.type === 'blank-line') {
7949
- flushParagraph();
7950
- canContinueOrderedListItemParagraph = false;
7951
- continue;
7952
- }
7953
- if (token.type === 'code-block') {
7954
- flushList();
7955
- flushParagraph();
7956
- if (token.language) {
7957
- nodes.push({
7958
- codeTokens: highlightCode(token.text, token.language),
7959
- language: token.language,
7960
- text: token.text,
7961
- type: 'code-block'
7962
- });
7963
- } else {
7964
- nodes.push({
7965
- codeTokens: highlightCode(token.text, undefined),
7966
- text: token.text,
7967
- type: 'code-block'
7968
- });
7969
- }
7970
- continue;
7971
- }
7972
- if (token.type === 'math-block') {
7973
- flushList();
7974
- flushParagraph();
7975
- nodes.push({
7976
- text: token.text,
7977
- type: 'math-block'
7978
- });
7979
- continue;
7980
- }
7981
- if (token.type === 'thematic-break') {
7982
- flushList();
7983
- flushParagraph();
7984
- nodes.push({
7985
- type: 'thematic-break'
7986
- });
7987
- continue;
7988
- }
7989
- if (token.type === 'blockquote-line') {
7990
- flushList();
7991
- flushParagraph();
7992
- const lines = [];
7993
- while (i < tokens.length && tokens[i].type === 'blockquote-line') {
7994
- const quoteToken = tokens[i];
7995
- if (quoteToken.type === 'blockquote-line') {
7996
- lines.push(quoteToken.text);
7997
- }
7998
- i++;
7999
- }
8000
- i--;
8001
- nodes.push({
8002
- children: parseBlockTokens(scanBlockTokens(lines.join('\n'))),
8003
- type: 'blockquote'
8004
- });
8005
- continue;
8006
- }
8007
- if (token.type === 'table-row-line') {
8008
- const expectedColumns = token.cells.length;
8009
- if (isTableSeparatorToken(tokens[i + 1], expectedColumns)) {
8010
- flushList();
8011
- flushParagraph();
8012
- const rows = [];
8013
- i += 2;
8014
- while (i < tokens.length && tokens[i].type === 'table-row-line') {
8015
- const rowToken = tokens[i];
8016
- if (rowToken.type !== 'table-row-line') {
8017
- break;
8018
- }
8019
- if (rowToken.cells.length === expectedColumns) {
8020
- rows.push(toTableRow(rowToken));
8021
- }
8022
- i++;
8023
- }
8024
- i--;
8025
- nodes.push({
8026
- headers: token.cells.map(toTableCell),
8027
- rows,
8028
- type: 'table'
8029
- });
8030
- continue;
8031
- }
8032
- flushList();
8033
- paragraphLines.push(token.line);
8034
- continue;
8035
- }
8036
- if (token.type === 'ordered-list-item-line') {
8037
- if (listType === 'ordered-list' && listItems.length > 0 && token.indentation > 0 && orderedListPathStack.length > 0) {
8038
- const parentEntry = orderedListPathStack.toReversed().find(entry => entry.indentation < token.indentation);
8039
- if (parentEntry) {
8040
- const parentItem = getListItemAtPath(listItems, parentEntry.path);
8041
- if (parentItem) {
8042
- const nextIndex = parentItem.nestedItems?.length || 0;
8043
- const nextItem = createListItem(token.text, nextIndex + 1);
8044
- listItems = appendNestedItemAtPath(listItems, parentEntry.path, nextItem, 'ordered-list');
8045
- const nextPath = [...parentEntry.path, nextIndex];
8046
- orderedListPathStack = [...orderedListPathStack.filter(entry => entry.indentation < token.indentation), {
8047
- indentation: token.indentation,
8048
- path: nextPath
8049
- }];
8050
- canContinueOrderedListItemParagraph = true;
8051
- continue;
8052
- }
8053
- }
8054
- }
8055
- if (listType && listType !== 'ordered-list') {
8056
- flushList();
8057
- }
8058
- flushParagraph();
8059
- listType = 'ordered-list';
8060
- const nextIndex = listItems.length;
8061
- const nextItem = createListItem(token.text, nextIndex + 1);
8062
- listItems.push(nextItem);
8063
- orderedListPathStack = [...orderedListPathStack.filter(entry => entry.indentation < token.indentation), {
8064
- indentation: token.indentation,
8065
- path: [nextIndex]
8066
- }];
8067
- canContinueOrderedListItemParagraph = true;
8068
- continue;
8069
- }
8070
- if (token.type === 'unordered-list-item-line') {
8071
- if (listType === 'ordered-list' && listItems.length > 0 && token.indentation > 0 && orderedListPathStack.length > 0) {
8072
- const parentEntry = orderedListPathStack.toReversed().find(entry => entry.indentation < token.indentation);
8073
- if (parentEntry) {
8074
- const nextItem = createListItem(token.text);
8075
- listItems = appendNestedItemAtPath(listItems, parentEntry.path, nextItem, 'unordered-list');
8076
- canContinueOrderedListItemParagraph = false;
8077
- continue;
8078
- }
8079
- }
8080
- if (listType && listType !== 'unordered-list') {
8081
- flushList();
8082
- }
8083
- flushParagraph();
8084
- listType = 'unordered-list';
8085
- listItems.push(createListItem(token.text));
8086
- canContinueOrderedListItemParagraph = false;
8087
- continue;
8088
- }
8089
- if (token.type === 'heading-line') {
8090
- flushList();
8091
- flushParagraph();
8092
- nodes.push({
8093
- children: parseInlineNodes(token.text),
8094
- level: token.level,
8095
- type: 'heading'
8096
- });
8097
- continue;
8098
- }
8099
- if (token.type === 'paragraph-line' && listType === 'ordered-list' && listItems.length > 0 && canContinueOrderedListItemParagraph) {
8100
- const currentPath = orderedListPathStack.at(-1)?.path;
8101
- if (currentPath) {
8102
- listItems = appendInlineChildrenAtPath(listItems, currentPath, parseInlineNodes(token.text));
8103
- continue;
8104
- }
8105
- }
8106
- flushList();
8107
- paragraphLines.push(token.text);
8108
- canContinueOrderedListItemParagraph = false;
8109
- }
8110
- flushList();
8111
- flushParagraph();
8112
- return nodes.length === 0 ? getEmptyTextNode() : nodes;
8113
- };
8114
-
8115
- const parseMessageContent = async rawMessage => {
8116
- return parseBlockTokens(scanBlockTokens(rawMessage));
8117
- };
8118
-
8119
- const emptyMessageContent = [{
8120
- children: [{
8121
- text: '',
8122
- type: 'text'
8123
- }],
8124
- type: 'text'
8125
- }];
8126
- const parseMathInline = async children => {
8127
- const nextChildren = [];
8128
- for (const child of children) {
8129
- if (child.type === 'math-inline') {
8130
- const dom = await getMathInlineDom(child);
8131
- nextChildren.push({
8132
- dom,
8133
- type: 'math-inline-dom'
8134
- });
8135
- continue;
8136
- }
8137
- if (child.type === 'bold') {
8138
- nextChildren.push({
8139
- ...child,
8140
- children: await parseMathInline(child.children)
8141
- });
8142
- continue;
8143
- }
8144
- if (child.type === 'italic') {
8145
- nextChildren.push({
8146
- ...child,
8147
- children: await parseMathInline(child.children)
8148
- });
8149
- continue;
8150
- }
8151
- if (child.type === 'strikethrough') {
8152
- nextChildren.push({
8153
- ...child,
8154
- children: await parseMathInline(child.children)
8155
- });
8156
- continue;
8157
- }
8158
- nextChildren.push(child);
8159
- }
8160
- return nextChildren;
8161
- };
8162
- const parseMathListItem = async item => {
8163
- const children = await parseMathInline(item.children);
8164
- if (!item.nestedItems) {
8165
- return {
8166
- ...item,
8167
- children
8168
- };
8169
- }
8170
- const nestedItems = [];
8171
- for (const nestedItem of item.nestedItems) {
8172
- nestedItems.push(await parseMathListItem(nestedItem));
8173
- }
8174
- return {
8175
- ...item,
8176
- children,
8177
- nestedItems
8178
- };
8179
- };
8180
- const parseMathTableCell = async cell => {
8181
- return {
8182
- ...cell,
8183
- children: await parseMathInline(cell.children)
8184
- };
8185
- };
8186
- const parseMathNode = async node => {
8187
- if (node.type === 'math-block') {
8188
- const dom = await getMathBlockDom(node);
8189
- return {
8190
- dom,
8191
- type: 'math-block-dom'
8192
- };
8193
- }
8194
- if (node.type === 'text' || node.type === 'heading') {
8195
- return {
8196
- ...node,
8197
- children: await parseMathInline(node.children)
8198
- };
8199
- }
8200
- if (node.type === 'blockquote') {
8201
- const children = [];
8202
- for (const child of node.children) {
8203
- children.push(await parseMathNode(child));
8204
- }
8205
- return {
8206
- ...node,
8207
- children
8208
- };
8209
- }
8210
- if (node.type === 'ordered-list' || node.type === 'unordered-list') {
8211
- const items = [];
8212
- for (const item of node.items) {
8213
- items.push(await parseMathListItem(item));
8214
- }
8215
- return {
8216
- ...node,
8217
- items
8218
- };
8219
- }
8220
- if (node.type === 'table') {
8221
- const headers = [];
8222
- for (const header of node.headers) {
8223
- headers.push(await parseMathTableCell(header));
8224
- }
8225
- const rows = [];
8226
- for (const row of node.rows) {
8227
- const cells = [];
8228
- for (const cell of row.cells) {
8229
- cells.push(await parseMathTableCell(cell));
8230
- }
8231
- rows.push({
8232
- ...row,
8233
- cells
8234
- });
8235
- }
8236
- return {
8237
- ...node,
8238
- headers,
8239
- rows
8240
- };
8241
- }
8242
- return node;
8243
- };
8244
- const parseMessage = async rawMessage => {
8245
- const parsedContent = await parseMessageContent(rawMessage);
8246
- const nextParsedContent = [];
8247
- for (const node of parsedContent) {
8248
- nextParsedContent.push(await parseMathNode(node));
8249
- }
8250
- return nextParsedContent;
7235
+ return invoke$7('ChatMessageParsing.parseMessageContents', rawMessages);
8251
7236
  };
7237
+
7238
+ const emptyMessageContent = [{
7239
+ children: [{
7240
+ text: '',
7241
+ type: 'text'
7242
+ }],
7243
+ type: 'text'
7244
+ }];
8252
7245
  const getParsedMessageContent = (parsedMessages, messageId) => {
8253
7246
  const parsedMessage = parsedMessages.find(item => item.id === messageId);
8254
7247
  return parsedMessage?.parsedContent;
@@ -8280,20 +7273,10 @@ const copyParsedMessageContent = (parsedMessages, sourceMessageId, targetMessage
8280
7273
  return setParsedMessageContent(parsedMessages, targetMessageId, parsedMessage.text, parsedMessage.parsedContent);
8281
7274
  };
8282
7275
  const parseAndStoreMessageContent = async (parsedMessages, message) => {
8283
- const existingParsedMessage = parsedMessages.find(item => item.id === message.id);
8284
- if (existingParsedMessage && existingParsedMessage.text === message.text) {
8285
- return parsedMessages;
8286
- }
8287
- await Promise.resolve();
8288
- const parsedContent = message.text === '' ? emptyMessageContent : await parseMessage(message.text);
8289
- return setParsedMessageContent(parsedMessages, message.id, message.text, parsedContent);
7276
+ return parseAndStoreMessagesContentInWorker(parsedMessages, [message]);
8290
7277
  };
8291
7278
  const parseAndStoreMessagesContent = async (parsedMessages, messages) => {
8292
- let nextParsedMessages = parsedMessages;
8293
- for (const message of messages) {
8294
- nextParsedMessages = await parseAndStoreMessageContent(nextParsedMessages, message);
8295
- }
8296
- return nextParsedMessages;
7279
+ return parseAndStoreMessagesContentInWorker(parsedMessages, messages);
8297
7280
  };
8298
7281
  const getMessagesNeedingParsing = (parsedMessages, messages) => {
8299
7282
  return messages.filter(message => {
@@ -8314,16 +7297,17 @@ const parseAndStoreMessagesContentInWorker = async (parsedMessages, messages) =>
8314
7297
  }
8315
7298
  return nextParsedMessages;
8316
7299
  };
8317
- const parseAndStoreMessagesContentWithWorkerPreference = async (parsedMessages, messages, useChatMessageParsingWorker) => {
8318
- if (useChatMessageParsingWorker) {
8319
- return parseAndStoreMessagesContentInWorker(parsedMessages, messages);
8320
- }
8321
- return parseAndStoreMessagesContent(parsedMessages, messages);
8322
- };
8323
7300
  const getEmptyMessageContent = () => {
8324
7301
  return emptyMessageContent;
8325
7302
  };
8326
7303
 
7304
+ const get = async key => {
7305
+ return getPreference(key);
7306
+ };
7307
+ const update = async settings => {
7308
+ await invoke('Preferences.update', settings);
7309
+ };
7310
+
8327
7311
  const setOpenApiApiKey = async (state, openApiApiKey, persist = true) => {
8328
7312
  if (persist) {
8329
7313
  await update({
@@ -8738,10 +7722,6 @@ const getNextHandleTextChunkState = (latestState, parsedMessages, sessions) => {
8738
7722
  };
8739
7723
  };
8740
7724
 
8741
- const getSelectedSession = (sessions, selectedSessionId) => {
8742
- return sessions.find(session => session.id === selectedSessionId);
8743
- };
8744
-
8745
7725
  const setAndRerenderHandleTextChunkState = async (uid, previousState, nextState) => {
8746
7726
  set(uid, previousState, nextState);
8747
7727
  // @ts-ignore
@@ -9040,6 +8020,11 @@ const withProvisionedBackgroundSession = async (state, session) => {
9040
8020
  };
9041
8021
  };
9042
8022
  const handleSubmit = async state => {
8023
+ const authState = state.authEnabled && state.backendUrl ? await syncBackendAuth(state.backendUrl) : undefined;
8024
+ const effectiveState = authState ? {
8025
+ ...state,
8026
+ ...authState
8027
+ } : state;
9043
8028
  const {
9044
8029
  agentMode,
9045
8030
  aiSessionTitleGenerationEnabled,
@@ -9073,22 +8058,22 @@ const handleSubmit = async state => {
9073
8058
  useMockApi,
9074
8059
  viewMode,
9075
8060
  webSearchEnabled
9076
- } = state;
8061
+ } = effectiveState;
9077
8062
  const userText = composerValue.trim();
9078
8063
  if (!userText) {
9079
- return state;
8064
+ return effectiveState;
9080
8065
  }
9081
8066
  const slashCommand = getSlashCommand(userText);
9082
8067
  if (slashCommand) {
9083
- return executeSlashCommand(state, slashCommand);
8068
+ return executeSlashCommand(effectiveState, slashCommand);
9084
8069
  }
9085
8070
  const userTime = new Date().toLocaleTimeString([], {
9086
8071
  hour: '2-digit',
9087
8072
  minute: '2-digit'
9088
8073
  });
9089
8074
  const userMessageId = crypto.randomUUID();
9090
- const composerAttachments = state.composerAttachments.length > 0 ? state.composerAttachments : await getComposerAttachments(state.selectedSessionId);
9091
- await clearComposerAttachments(state.selectedSessionId, composerAttachments.map(attachment => attachment.attachmentId));
8075
+ const composerAttachments = effectiveState.composerAttachments.length > 0 ? effectiveState.composerAttachments : await getComposerAttachments(effectiveState.selectedSessionId);
8076
+ await clearComposerAttachments(effectiveState.selectedSessionId, composerAttachments.map(attachment => attachment.attachmentId));
9092
8077
  const userMessage = {
9093
8078
  ...(composerAttachments.length > 0 ? {
9094
8079
  attachments: composerAttachments
@@ -9112,7 +8097,7 @@ const handleSubmit = async state => {
9112
8097
  };
9113
8098
  let {
9114
8099
  parsedMessages
9115
- } = state;
8100
+ } = effectiveState;
9116
8101
  parsedMessages = await parseAndStoreMessageContent(parsedMessages, userMessage);
9117
8102
  parsedMessages = await parseAndStoreMessageContent(parsedMessages, inProgressAssistantMessage);
9118
8103
  let workingSessions = sessions;
@@ -9146,10 +8131,10 @@ const handleSubmit = async state => {
9146
8131
  const provisionedSession = await withProvisionedBackgroundSession(state, newSession);
9147
8132
  await saveChatSession(provisionedSession);
9148
8133
  optimisticState = withUpdatedMessageScrollTop(focusInput({
9149
- ...state,
8134
+ ...effectiveState,
9150
8135
  composerAttachments: [],
9151
8136
  composerAttachmentsHeight: 0,
9152
- composerHeight: getMinComposerHeightForState(state),
8137
+ composerHeight: getMinComposerHeightForState(effectiveState),
9153
8138
  composerSelectionEnd: 0,
9154
8139
  composerSelectionStart: 0,
9155
8140
  composerValue: '',
@@ -9185,10 +8170,10 @@ const handleSubmit = async state => {
9185
8170
  await saveChatSession(selectedSession);
9186
8171
  }
9187
8172
  optimisticState = withUpdatedMessageScrollTop(focusInput({
9188
- ...state,
8173
+ ...effectiveState,
9189
8174
  composerAttachments: [],
9190
8175
  composerAttachmentsHeight: 0,
9191
- composerHeight: getMinComposerHeightForState(state),
8176
+ composerHeight: getMinComposerHeightForState(effectiveState),
9192
8177
  composerSelectionEnd: 0,
9193
8178
  composerSelectionStart: 0,
9194
8179
  composerValue: '',
@@ -9200,7 +8185,7 @@ const handleSubmit = async state => {
9200
8185
  }));
9201
8186
  optimisticState = withUpdatedChatInputHistory(optimisticState, userText);
9202
8187
  }
9203
- set(state.uid, state, optimisticState);
8188
+ set(effectiveState.uid, effectiveState, optimisticState);
9204
8189
  // @ts-ignore
9205
8190
  await invoke('Chat.rerender');
9206
8191
  let handleTextChunkState = {
@@ -9322,6 +8307,84 @@ const handleClickSend = async state => {
9322
8307
  return handleSubmit(state);
9323
8308
  };
9324
8309
 
8310
+ const SwitchGitBranch = 'Chat.switchGitBranch';
8311
+ const switchGitBranch = async ({
8312
+ assetDir,
8313
+ branchName,
8314
+ platform,
8315
+ workspaceUri
8316
+ }) => {
8317
+ await executeProvider({
8318
+ assetDir,
8319
+ event: `onCommand:${SwitchGitBranch}`,
8320
+ method: CommandExecute,
8321
+ noProviderFoundMessage: 'No git branch switch command found',
8322
+ params: [SwitchGitBranch, {
8323
+ branchName,
8324
+ workspaceUri
8325
+ }],
8326
+ platform
8327
+ });
8328
+ };
8329
+
8330
+ const getGitBranchSwitchErrorMessage = (branchName, error) => {
8331
+ if (error instanceof Error && error.message) {
8332
+ return `Failed to switch to branch "${branchName}". ${error.message}`;
8333
+ }
8334
+ return `Failed to switch to branch "${branchName}".`;
8335
+ };
8336
+ const handleGitBranchChange = async (state, branchName) => {
8337
+ if (!branchName) {
8338
+ return state;
8339
+ }
8340
+ const selectedSession = getSelectedSession(state.sessions, state.selectedSessionId);
8341
+ const workspaceUri = getWorkspaceUri$1(state, selectedSession);
8342
+ if (!workspaceUri) {
8343
+ return {
8344
+ ...state,
8345
+ gitBranchPickerErrorMessage: 'No workspace is selected.',
8346
+ gitBranchPickerOpen: true
8347
+ };
8348
+ }
8349
+ try {
8350
+ await switchGitBranch({
8351
+ assetDir: state.assetDir,
8352
+ branchName,
8353
+ platform: state.platform,
8354
+ workspaceUri
8355
+ });
8356
+ const updatedSessions = state.sessions.map(session => {
8357
+ if (session.id !== state.selectedSessionId) {
8358
+ return session;
8359
+ }
8360
+ return {
8361
+ ...session,
8362
+ branchName
8363
+ };
8364
+ });
8365
+ const updatedSelectedSession = updatedSessions.find(session => session.id === state.selectedSessionId);
8366
+ if (updatedSelectedSession) {
8367
+ await saveChatSession(updatedSelectedSession);
8368
+ }
8369
+ return {
8370
+ ...state,
8371
+ gitBranches: state.gitBranches.map(branch => ({
8372
+ ...branch,
8373
+ current: branch.name === branchName
8374
+ })),
8375
+ gitBranchPickerErrorMessage: '',
8376
+ gitBranchPickerOpen: false,
8377
+ sessions: updatedSessions
8378
+ };
8379
+ } catch (error) {
8380
+ return {
8381
+ ...state,
8382
+ gitBranchPickerErrorMessage: getGitBranchSwitchErrorMessage(branchName, error),
8383
+ gitBranchPickerOpen: true
8384
+ };
8385
+ }
8386
+ };
8387
+
9325
8388
  const setReasoningEffort = (state, reasoningEffort) => {
9326
8389
  return {
9327
8390
  ...state,
@@ -9452,7 +8515,7 @@ const selectSession = async (state, id) => {
9452
8515
  }
9453
8516
  return loadedSession;
9454
8517
  });
9455
- return {
8518
+ return refreshGitBranchPickerVisibility({
9456
8519
  ...state,
9457
8520
  composerAttachments,
9458
8521
  composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
@@ -9461,7 +8524,7 @@ const selectSession = async (state, id) => {
9461
8524
  selectedSessionId: id,
9462
8525
  sessions: hydratedSessions,
9463
8526
  viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
9464
- };
8527
+ });
9465
8528
  };
9466
8529
 
9467
8530
  const startRename = (state, id) => {
@@ -9491,15 +8554,17 @@ const toggleChatFocusMode = async state => {
9491
8554
  if (viewMode === 'chat-focus') {
9492
8555
  return {
9493
8556
  ...state,
8557
+ gitBranchPickerErrorMessage: '',
8558
+ gitBranchPickerOpen: false,
9494
8559
  viewMode: lastNormalViewMode
9495
8560
  };
9496
8561
  }
9497
8562
  if (viewMode === 'list' || viewMode === 'detail') {
9498
- return {
8563
+ return refreshGitBranchPickerVisibility({
9499
8564
  ...state,
9500
8565
  lastNormalViewMode: viewMode,
9501
8566
  viewMode: 'chat-focus'
9502
- };
8567
+ });
9503
8568
  }
9504
8569
  return state;
9505
8570
  };
@@ -9629,6 +8694,11 @@ const handleClick = async (state, name, id = '', eventX = 0, eventY = 0) => {
9629
8694
  visibleModels: state.models
9630
8695
  };
9631
8696
  }
8697
+ case isGitBranchPickerItemInputName(name):
8698
+ {
8699
+ const branchName = getGitBranchFromGitBranchPickerItemInputName(name);
8700
+ return handleGitBranchChange(state, branchName);
8701
+ }
9632
8702
  case isAgentModePickerItemInputName(name):
9633
8703
  {
9634
8704
  const agentMode = getAgentModeFromAgentModePickerItemInputName(name);
@@ -9753,6 +8823,71 @@ const handleClickFileName = async (state, uri) => {
9753
8823
  return state;
9754
8824
  };
9755
8825
 
8826
+ const getBranchPickerErrorMessage = error => {
8827
+ if (error instanceof Error && error.message) {
8828
+ return error.message;
8829
+ }
8830
+ return 'Failed to load git branches.';
8831
+ };
8832
+ const openGitBranchPicker = async state => {
8833
+ const visibleState = await refreshGitBranchPickerVisibility(state);
8834
+ const selectedSession = getSelectedSession(visibleState.sessions, visibleState.selectedSessionId);
8835
+ const fallbackBranchName = selectedSession?.branchName || '';
8836
+ if (visibleState.viewMode !== 'chat-focus' || !visibleState.gitBranchPickerVisible && !fallbackBranchName) {
8837
+ return {
8838
+ ...visibleState,
8839
+ gitBranchPickerOpen: false
8840
+ };
8841
+ }
8842
+ const workspaceUri = getWorkspaceUri$1(visibleState, selectedSession);
8843
+ if (!workspaceUri) {
8844
+ return {
8845
+ ...visibleState,
8846
+ gitBranches: [],
8847
+ gitBranchPickerErrorMessage: 'No workspace is selected.',
8848
+ gitBranchPickerOpen: true
8849
+ };
8850
+ }
8851
+ try {
8852
+ const gitBranches = await getGitBranches(workspaceUri);
8853
+ return {
8854
+ ...visibleState,
8855
+ agentModePickerOpen: false,
8856
+ gitBranches,
8857
+ gitBranchPickerErrorMessage: '',
8858
+ gitBranchPickerOpen: true,
8859
+ modelPickerOpen: false,
8860
+ modelPickerSearchValue: '',
8861
+ reasoningEffortPickerOpen: false,
8862
+ runModePickerOpen: false,
8863
+ visibleModels: visibleState.models
8864
+ };
8865
+ } catch (error) {
8866
+ return {
8867
+ ...visibleState,
8868
+ agentModePickerOpen: false,
8869
+ gitBranches: fallbackBranchName ? [{
8870
+ current: true,
8871
+ name: fallbackBranchName
8872
+ }] : [],
8873
+ gitBranchPickerErrorMessage: getBranchPickerErrorMessage(error),
8874
+ gitBranchPickerOpen: true,
8875
+ modelPickerOpen: false,
8876
+ modelPickerSearchValue: '',
8877
+ reasoningEffortPickerOpen: false,
8878
+ runModePickerOpen: false,
8879
+ visibleModels: visibleState.models
8880
+ };
8881
+ }
8882
+ };
8883
+
8884
+ const handleClickGitBranchPickerToggle = async state => {
8885
+ if (state.gitBranchPickerOpen) {
8886
+ return closeGitBranchPicker(state);
8887
+ }
8888
+ return openGitBranchPicker(state);
8889
+ };
8890
+
9756
8891
  const handleClickModelPickerList = async (state, eventY) => {
9757
8892
  const {
9758
8893
  height,
@@ -10615,19 +9750,6 @@ const getSavedSessions = savedState => {
10615
9750
  return sessions;
10616
9751
  };
10617
9752
 
10618
- const getSavedSystemPrompt = savedState => {
10619
- if (!isObject$1(savedState)) {
10620
- return undefined;
10621
- }
10622
- const {
10623
- systemPrompt
10624
- } = savedState;
10625
- if (typeof systemPrompt !== 'string') {
10626
- return undefined;
10627
- }
10628
- return systemPrompt;
10629
- };
10630
-
10631
9753
  const getSavedViewMode = savedState => {
10632
9754
  if (!isObject$1(savedState)) {
10633
9755
  return undefined;
@@ -10659,24 +9781,6 @@ const loadAuthEnabled = async () => {
10659
9781
  }
10660
9782
  };
10661
9783
 
10662
- const loadBackendAccessToken = async () => {
10663
- try {
10664
- const savedAccessToken = await get('secrets.chatBackendAccessToken');
10665
- return typeof savedAccessToken === 'string' ? savedAccessToken : '';
10666
- } catch {
10667
- return '';
10668
- }
10669
- };
10670
-
10671
- const loadBackendRefreshToken = async () => {
10672
- try {
10673
- const savedRefreshToken = await get('secrets.chatBackendRefreshToken');
10674
- return typeof savedRefreshToken === 'string' ? savedRefreshToken : '';
10675
- } catch {
10676
- return '';
10677
- }
10678
- };
10679
-
10680
9784
  const loadBackendUrl = async () => {
10681
9785
  try {
10682
9786
  const savedBackendUrl = await get('chat.backendUrl');
@@ -10820,15 +9924,6 @@ const loadUseChatMathWorker = async () => {
10820
9924
  }
10821
9925
  };
10822
9926
 
10823
- const loadUseChatMessageParsingWorker = async () => {
10824
- try {
10825
- const savedUseChatMessageParsingWorker = await get('chatView.useChatMessageParsingWorker');
10826
- return typeof savedUseChatMessageParsingWorker === 'boolean' ? savedUseChatMessageParsingWorker : false;
10827
- } catch {
10828
- return false;
10829
- }
10830
- };
10831
-
10832
9927
  const loadUseChatNetworkWorkerForRequests = async () => {
10833
9928
  try {
10834
9929
  const savedUseChatNetworkWorkerForRequests = await get('chatView.useChatNetworkWorkerForRequests');
@@ -10857,12 +9952,10 @@ const loadVoiceDictationEnabled = async () => {
10857
9952
  };
10858
9953
 
10859
9954
  const loadPreferences = async () => {
10860
- const [aiSessionTitleGenerationEnabled, authAccessToken, authEnabled, authRefreshToken, backendUrl, chatHistoryEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, reasoningPickerEnabled, scrollDownButtonEnabled, searchEnabled, streamingEnabled, todoListToolEnabled, toolEnablement, passIncludeObfuscation, useChatCoordinatorWorker, useChatMathWorker, useChatMessageParsingWorker, useChatNetworkWorkerForRequests, useChatToolWorker, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadBackendAccessToken(), loadAuthEnabled(), loadBackendRefreshToken(), loadBackendUrl(), loadChatHistoryEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadReasoningPickerEnabled(), loadScrollDownButtonEnabled(), loadSearchEnabled(), loadStreamingEnabled(), loadTodoListToolEnabled(), loadToolEnablement(), loadPassIncludeObfuscation(), loadUseChatCoordinatorWorker(), loadUseChatMathWorker(), loadUseChatMessageParsingWorker(), loadUseChatNetworkWorkerForRequests(), loadUseChatToolWorker(), loadVoiceDictationEnabled()]);
9955
+ const [aiSessionTitleGenerationEnabled, authEnabled, backendUrl, chatHistoryEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, reasoningPickerEnabled, scrollDownButtonEnabled, searchEnabled, streamingEnabled, todoListToolEnabled, toolEnablement, passIncludeObfuscation, useChatCoordinatorWorker, useChatMathWorker, useChatNetworkWorkerForRequests, useChatToolWorker, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadAuthEnabled(), loadBackendUrl(), loadChatHistoryEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadReasoningPickerEnabled(), loadScrollDownButtonEnabled(), loadSearchEnabled(), loadStreamingEnabled(), loadTodoListToolEnabled(), loadToolEnablement(), loadPassIncludeObfuscation(), loadUseChatCoordinatorWorker(), loadUseChatMathWorker(), loadUseChatNetworkWorkerForRequests(), loadUseChatToolWorker(), loadVoiceDictationEnabled()]);
10861
9956
  return {
10862
9957
  aiSessionTitleGenerationEnabled,
10863
- authAccessToken,
10864
9958
  authEnabled,
10865
- authRefreshToken,
10866
9959
  backendUrl,
10867
9960
  chatHistoryEnabled,
10868
9961
  composerDropEnabled,
@@ -10878,7 +9971,6 @@ const loadPreferences = async () => {
10878
9971
  toolEnablement,
10879
9972
  useChatCoordinatorWorker,
10880
9973
  useChatMathWorker,
10881
- useChatMessageParsingWorker,
10882
9974
  useChatNetworkWorkerForRequests,
10883
9975
  useChatToolWorker,
10884
9976
  voiceDictationEnabled
@@ -10934,9 +10026,7 @@ const loadContent = async (state, savedState) => {
10934
10026
  const [composerSelectionStart, composerSelectionEnd] = savedComposerSelection ?? [state.composerSelectionStart, state.composerSelectionEnd];
10935
10027
  const {
10936
10028
  aiSessionTitleGenerationEnabled,
10937
- authAccessToken,
10938
10029
  authEnabled,
10939
- authRefreshToken,
10940
10030
  backendUrl,
10941
10031
  chatHistoryEnabled,
10942
10032
  composerDropEnabled,
@@ -10952,11 +10042,11 @@ const loadContent = async (state, savedState) => {
10952
10042
  toolEnablement,
10953
10043
  useChatCoordinatorWorker,
10954
10044
  useChatMathWorker,
10955
- useChatMessageParsingWorker,
10956
10045
  useChatNetworkWorkerForRequests,
10957
10046
  useChatToolWorker,
10958
10047
  voiceDictationEnabled
10959
10048
  } = await loadPreferences();
10049
+ const authState = authEnabled && backendUrl ? await syncBackendAuth(backendUrl) : getLoggedOutBackendAuthState();
10960
10050
  const legacySavedSessions = getSavedSessions(savedState);
10961
10051
  const storedSessions = await listChatSessions();
10962
10052
  let sessions = storedSessions;
@@ -10992,7 +10082,6 @@ const loadContent = async (state, savedState) => {
10992
10082
  const projectExpandedIds = (savedProjectExpandedIds || state.projectExpandedIds).filter(id => projects.some(project => project.id === id));
10993
10083
  const reasoningEffort = getSavedReasoningEffort(savedState) ?? state.reasoningEffort;
10994
10084
  const selectedModelId = state.models.some(model => model.id === preferredModelId) ? preferredModelId : state.models[0]?.id || '';
10995
- const systemPrompt = getSavedSystemPrompt(savedState) ?? state.systemPrompt;
10996
10085
  const visibleModels = getVisibleModels(state.models, '');
10997
10086
  const visibleSessions = getVisibleSessions(sessions, selectedProjectId);
10998
10087
  const selectedSessionId = visibleSessions.some(session => session.id === preferredSessionId) ? preferredSessionId : visibleSessions[0]?.id || '';
@@ -11002,21 +10091,20 @@ const loadContent = async (state, savedState) => {
11002
10091
  parsedMessages
11003
10092
  } = state;
11004
10093
  for (const session of sessions) {
11005
- parsedMessages = await parseAndStoreMessagesContentWithWorkerPreference(parsedMessages, session.messages, useChatMessageParsingWorker);
10094
+ parsedMessages = await parseAndStoreMessagesContent(parsedMessages, session.messages);
11006
10095
  }
11007
10096
  const preferredViewMode = savedViewMode || state.viewMode;
11008
10097
  const savedLastNormalViewMode = getSavedLastNormalViewMode(savedState);
11009
10098
  const lastNormalViewMode = savedLastNormalViewMode || (preferredViewMode === 'detail' ? 'detail' : state.lastNormalViewMode);
11010
10099
  const viewMode = sessions.length === 0 || !selectedSessionId ? 'list' : preferredViewMode;
11011
- return {
10100
+ const nextState = {
11012
10101
  ...state,
11013
10102
  agentMode,
11014
10103
  agentModePickerOpen: false,
11015
10104
  aiSessionTitleGenerationEnabled,
11016
- authAccessToken,
10105
+ authAccessToken: authState.authAccessToken,
11017
10106
  authEnabled,
11018
- authRefreshToken,
11019
- authStatus: authAccessToken ? 'signed-in' : 'signed-out',
10107
+ authErrorMessage: authState.authErrorMessage,
11020
10108
  backendUrl,
11021
10109
  chatHistoryEnabled,
11022
10110
  chatListScrollTop,
@@ -11057,18 +10145,21 @@ const loadContent = async (state, savedState) => {
11057
10145
  selectedSessionId,
11058
10146
  sessions,
11059
10147
  streamingEnabled,
11060
- systemPrompt,
11061
10148
  todoListToolEnabled,
11062
10149
  toolEnablement,
11063
10150
  useChatCoordinatorWorker,
11064
10151
  useChatMathWorker,
11065
- useChatMessageParsingWorker,
11066
10152
  useChatNetworkWorkerForRequests,
11067
10153
  useChatToolWorker,
10154
+ userName: authState.userName,
10155
+ userState: authState.userState,
10156
+ userSubscriptionPlan: authState.userSubscriptionPlan,
10157
+ userUsedTokens: authState.userUsedTokens,
11068
10158
  viewMode,
11069
10159
  visibleModels,
11070
10160
  voiceDictationEnabled
11071
10161
  };
10162
+ return refreshGitBranchPickerVisibility(nextState);
11072
10163
  };
11073
10164
 
11074
10165
  const isObject = value => {
@@ -11158,33 +10249,50 @@ const openMockProject = async (state, projectId, projectName, projectUri) => {
11158
10249
  };
11159
10250
  };
11160
10251
 
11161
- const openMockSession = async (state, mockSessionId, mockChatMessages) => {
10252
+ const applySessionOptions = (session, options) => {
10253
+ if (!options) {
10254
+ return session;
10255
+ }
10256
+ return {
10257
+ ...session,
10258
+ ...(options.branchName ? {
10259
+ branchName: options.branchName
10260
+ } : {}),
10261
+ ...(options.projectId ? {
10262
+ projectId: options.projectId
10263
+ } : {}),
10264
+ ...(options.workspaceUri ? {
10265
+ workspaceUri: options.workspaceUri
10266
+ } : {})
10267
+ };
10268
+ };
10269
+ const openMockSession = async (state, mockSessionId, mockChatMessages, options) => {
11162
10270
  const {
11163
10271
  sessions: currentSessions
11164
10272
  } = state;
11165
10273
  if (!mockSessionId) {
11166
10274
  return state;
11167
10275
  }
11168
- const parsedMessages = await parseAndStoreMessagesContentWithWorkerPreference(state.parsedMessages, mockChatMessages, state.useChatMessageParsingWorker);
10276
+ const parsedMessages = await parseAndStoreMessagesContent(state.parsedMessages, mockChatMessages);
11169
10277
  const existingSession = currentSessions.find(session => session.id === mockSessionId);
11170
10278
  const sessions = existingSession ? currentSessions.map(session => {
11171
10279
  if (session.id !== mockSessionId) {
11172
10280
  return session;
11173
10281
  }
11174
- return {
10282
+ return applySessionOptions({
11175
10283
  ...session,
11176
10284
  messages: mockChatMessages
11177
- };
11178
- }) : [...currentSessions, {
10285
+ }, options);
10286
+ }) : [...currentSessions, applySessionOptions({
11179
10287
  id: mockSessionId,
11180
10288
  messages: mockChatMessages,
11181
10289
  title: mockSessionId
11182
- }];
10290
+ }, options)];
11183
10291
  const selectedSession = sessions.find(session => session.id === mockSessionId);
11184
10292
  if (selectedSession) {
11185
10293
  await saveChatSession(selectedSession);
11186
10294
  }
11187
- return {
10295
+ return refreshGitBranchPickerVisibility({
11188
10296
  ...state,
11189
10297
  composerAttachments: [],
11190
10298
  composerAttachmentsHeight: 0,
@@ -11193,7 +10301,7 @@ const openMockSession = async (state, mockSessionId, mockChatMessages) => {
11193
10301
  selectedSessionId: mockSessionId,
11194
10302
  sessions,
11195
10303
  viewMode: 'detail'
11196
- };
10304
+ });
11197
10305
  };
11198
10306
 
11199
10307
  const pasteInput = async state => {
@@ -11306,6 +10414,10 @@ const getCss = (composerHeight, composerAttachmentsHeight, modelPickerHeight, li
11306
10414
  color: var(--vscode-errorForeground, var(--vscode-foreground));
11307
10415
  }
11308
10416
 
10417
+ .InputInvalid{
10418
+ border-color: var(--InputValidationErrorBorder, red);
10419
+ }
10420
+
11309
10421
  .ChatComposerAttachmentTextFile{
11310
10422
  border-color: var(--vscode-charts-green, var(--vscode-widget-border, var(--vscode-panel-border)));
11311
10423
  }
@@ -11360,6 +10472,23 @@ const getCss = (composerHeight, composerAttachmentsHeight, modelPickerHeight, li
11360
10472
  border-color: var(--vscode-charts-green, var(--vscode-widget-border, var(--vscode-panel-border)));
11361
10473
  }
11362
10474
 
10475
+ .ChatImageMessageContent{
10476
+ padding: 6px;
10477
+ border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
10478
+ border-radius: 12px;
10479
+ background: var(--vscode-editorWidget-background, var(--vscode-editor-background));
10480
+ overflow: hidden;
10481
+ }
10482
+
10483
+ .ChatMessageImage{
10484
+ display: block;
10485
+ max-width: min(320px, 100%);
10486
+ max-height: min(320px, calc(100vh - 220px));
10487
+ border-radius: 8px;
10488
+ object-fit: contain;
10489
+ background: color-mix(in srgb, var(--vscode-editor-background) 88%, black);
10490
+ }
10491
+
11363
10492
  .Chat{
11364
10493
  position: relative;
11365
10494
  }
@@ -11397,12 +10526,24 @@ const getCss = (composerHeight, composerAttachmentsHeight, modelPickerHeight, li
11397
10526
  color: var(--vscode-errorForeground, var(--vscode-foreground));
11398
10527
  }
11399
10528
 
11400
- .CustomSelectContainer{
10529
+ .ChatSelect{
11401
10530
  position: relative;
11402
10531
  min-width: 0;
11403
10532
 
11404
10533
  }
11405
10534
 
10535
+ .ChatModelPickerItem{
10536
+ display: flex;
10537
+ }
10538
+
10539
+ .ChatGitBranchPickerMessage{
10540
+ padding: 6px 8px;
10541
+ }
10542
+
10543
+ .ChatGitBranchPickerErrorMessage{
10544
+ color: var(--vscode-errorForeground, var(--vscode-foreground));
10545
+ }
10546
+
11406
10547
  .RunModePickerContainer{
11407
10548
  display: flex;
11408
10549
  justify-content: flex-end;
@@ -11507,13 +10648,10 @@ const getCss = (composerHeight, composerAttachmentsHeight, modelPickerHeight, li
11507
10648
  .ChatFocus .ChatMessages > .Message > .ChatMessageContent{
11508
10649
  max-inline-size: 100%;
11509
10650
  }
11510
-
11511
-
11512
10651
  .Viewlet.Chat.ChatFocus{
11513
10652
  display: flex !important;
11514
10653
  min-width: 0;
11515
10654
  }
11516
-
11517
10655
  .ChatFocusMainArea{
11518
10656
  display: flex;
11519
10657
  flex: 1;
@@ -11526,6 +10664,84 @@ const getCss = (composerHeight, composerAttachmentsHeight, modelPickerHeight, li
11526
10664
  min-height: 0;
11527
10665
  }
11528
10666
 
10667
+ .ChatModelPickerList {
10668
+ display: flex;
10669
+ contain: content;
10670
+ }
10671
+
10672
+
10673
+ .ChatSelect:hover{
10674
+ background: var(--vscode-toolbar-hoverBackground, color-mix(in srgb, var(--vscode-editor-background) 80%, white));
10675
+ color: var(--vscode-foreground);
10676
+ }
10677
+
10678
+ .SelectLabel {
10679
+ width: auto;
10680
+ max-width: 100%;
10681
+ min-width: 0;
10682
+ overflow: hidden;
10683
+ white-space: nowrap;
10684
+ text-overflow: ellipsis;
10685
+ }
10686
+
10687
+
10688
+ .ChatSelect {
10689
+ display: flex;
10690
+ gap: 4px;
10691
+ border: none;
10692
+ border-radius: 4px;
10693
+ background: transparent;
10694
+ color: var(--vscode-descriptionForeground, var(--vscode-disabledForeground));
10695
+ padding: 0 !important;
10696
+ }
10697
+
10698
+
10699
+
10700
+
10701
+
10702
+
10703
+
10704
+
10705
+
10706
+ .SelectLabel {
10707
+ width: auto;
10708
+ overflow: hidden;
10709
+ white-space: nowrap;
10710
+ text-overflow: ellipsis;
10711
+
10712
+ }
10713
+
10714
+
10715
+ .ChatSelect .MaskIcon {
10716
+
10717
+ width: 10px;
10718
+ height: 10px;
10719
+ pointer-events: none;
10720
+ }
10721
+
10722
+
10723
+ .ChatModelPickerList {
10724
+ flex-direction: column;
10725
+ flex: 1;
10726
+ display: flex;
10727
+ contain: strict;
10728
+
10729
+ }
10730
+
10731
+
10732
+ .ChatModelPickerItem {
10733
+ contain: strict;
10734
+ flex-shrink:0; /* TODO why?? */
10735
+ }
10736
+
10737
+
10738
+ .ChatModelPickerHeader {
10739
+ height: 40px;
10740
+ contain: strict;
10741
+
10742
+ }
10743
+
10744
+
11529
10745
  `;
11530
10746
  return `${baseCss}
11531
10747
 
@@ -11618,6 +10834,160 @@ const renderFocusContext = (oldState, newState) => {
11618
10834
  return [SetFocusContext, newState.uid, FocusChatInput];
11619
10835
  };
11620
10836
 
10837
+ const Actions = 'Actions';
10838
+ const Button = 'Button';
10839
+ const ButtonPrimary = 'ButtonPrimary';
10840
+ const ButtonSecondary = 'ButtonSecondary';
10841
+ const Chat = 'Chat';
10842
+ const ChatActions = 'ChatActions';
10843
+ const ChatAuthError = 'ChatAuthError';
10844
+ const ChatFocus = 'ChatFocus';
10845
+ const ChatFocusActions = 'ChatFocusActions';
10846
+ const ChatFocusHeader = 'ChatFocusHeader';
10847
+ const ChatFocusMainArea = 'ChatFocusMainArea';
10848
+ const ChatFocusProject = 'ChatFocusProject';
10849
+ const ChatGitBranchPicker = 'ChatGitBranchPicker';
10850
+ const ChatGitBranchPickerErrorMessage = 'ChatGitBranchPickerErrorMessage';
10851
+ const ChatGitBranchPickerMessage = 'ChatGitBranchPickerMessage';
10852
+ const ChatHeader = 'ChatHeader';
10853
+ const ChatHeaderAuth = 'ChatHeaderAuth';
10854
+ const ChatHeaderAuthName = 'ChatHeaderAuthName';
10855
+ const ChatHeaderLabel = 'ChatHeaderLabel';
10856
+ const ChatInputBox = 'ChatInputBox';
10857
+ const ChatList = 'ChatList';
10858
+ const ChatListEmpty = 'ChatListEmpty';
10859
+ const ChatListItem = 'ChatListItem';
10860
+ const ChatListItemFocused = 'ChatListItemFocused';
10861
+ const ChatListItemLabel = 'ChatListItemLabel';
10862
+ const ChatListItemStatusFinished = 'ChatListItemStatusFinished';
10863
+ const ChatListItemStatusIcon = 'ChatListItemStatusIcon';
10864
+ const ChatListItemStatusInProgress = 'ChatListItemStatusInProgress';
10865
+ const ChatListItemStatusRow = 'ChatListItemStatusRow';
10866
+ const ChatListItemStatusStopped = 'ChatListItemStatusStopped';
10867
+ const ChatMessageContent = 'ChatMessageContent';
10868
+ const ChatImageMessageContent = 'ChatImageMessageContent';
10869
+ const ChatMessageLink = 'ChatMessageLink';
10870
+ const ChatModelPicker = 'ChatModelPicker';
10871
+ const ChatModelPickerContainer = 'ChatModelPickerContainer';
10872
+ const ChatModelPickerHeader = 'ChatModelPickerHeader';
10873
+ const ChatModelPickerItem = 'ChatModelPickerItem';
10874
+ const ChatModelPickerItemLabel = 'ChatModelPickerItemLabel';
10875
+ const ChatModelPickerItemSelected = 'ChatModelPickerItemSelected';
10876
+ const ChatModelPickerItemUsageCost = 'ChatModelPickerItemUsageCost';
10877
+ const ChatModelPickerList = 'ChatModelPickerList';
10878
+ const ChatName = 'ChatName';
10879
+ const ChatOverlays = 'ChatOverlays';
10880
+ const ChatOrderedList = 'ChatOrderedList';
10881
+ const ChatOrderedListItem = 'ChatOrderedListItem';
10882
+ const ChatOrderedListItemContent = 'ChatOrderedListItemContent';
10883
+ const ChatOrderedListItemPrefix = 'ChatOrderedListItemPrefix';
10884
+ const ChatOrderedListMarker = 'ChatOrderedListMarker';
10885
+ const ChatComposerAttachment = 'ChatComposerAttachment';
10886
+ const ChatComposerAttachmentImage = 'ChatComposerAttachmentImage';
10887
+ const ChatComposerAttachmentInvalidImage = 'ChatComposerAttachmentInvalidImage';
10888
+ const ChatComposerAttachmentLabel = 'ChatComposerAttachmentLabel';
10889
+ const ChatComposerAttachmentPreview = 'ChatComposerAttachmentPreview';
10890
+ const ChatComposerAttachmentPreviewOverlay = 'ChatComposerAttachmentPreviewOverlay';
10891
+ const ChatComposerAttachmentPreviewOverlayError = 'ChatComposerAttachmentPreviewOverlayError';
10892
+ const ChatComposerAttachmentPreviewOverlayImage = 'ChatComposerAttachmentPreviewOverlayImage';
10893
+ const ChatComposerAttachmentRemoveButton = 'ChatComposerAttachmentRemoveButton';
10894
+ const ChatComposerAttachments = 'ChatComposerAttachments';
10895
+ const ChatComposerAttachmentTextFile = 'ChatComposerAttachmentTextFile';
10896
+ const ChatAttachment = 'ChatAttachment';
10897
+ const ChatAttachmentImage = 'ChatAttachmentImage';
10898
+ const ChatAttachmentInvalidImage = 'ChatAttachmentInvalidImage';
10899
+ const ChatAttachmentLabel = 'ChatAttachmentLabel';
10900
+ const ChatAttachmentPreview = 'ChatAttachmentPreview';
10901
+ const ChatAttachments = 'ChatAttachments';
10902
+ const ChatAttachmentTextFile = 'ChatAttachmentTextFile';
10903
+ const ChatMessageImage = 'ChatMessageImage';
10904
+ const ChatSendArea = 'ChatSendArea';
10905
+ const ChatSendAreaBottom = 'ChatSendAreaBottom';
10906
+ const ChatSendAreaContent = 'ChatSendAreaContent';
10907
+ const ChatSendAreaPrimaryControls = 'ChatSendAreaPrimaryControls';
10908
+ const ChatSelect = 'ChatSelect';
10909
+ const ChatTableWrapper = 'ChatTableWrapper';
10910
+ const ChatTodoList = 'ChatTodoList';
10911
+ const ChatTodoListHeader = 'ChatTodoListHeader';
10912
+ const ChatTodoListItem = 'ChatTodoListItem';
10913
+ const ChatTodoListItemCompleted = 'ChatTodoListItemCompleted';
10914
+ const ChatTodoListItemInProgress = 'ChatTodoListItemInProgress';
10915
+ const ChatTodoListItems = 'ChatTodoListItems';
10916
+ const ChatTodoListItemTodo = 'ChatTodoListItemTodo';
10917
+ const ChatToolCallFileName = 'ChatToolCallFileName';
10918
+ const ChatToolCallQuestionOption = 'ChatToolCallQuestionOption';
10919
+ const ChatToolCallQuestionOptions = 'ChatToolCallQuestionOptions';
10920
+ const ChatToolCallQuestionText = 'ChatToolCallQuestionText';
10921
+ const ChatToolCallReadFileLink = 'ChatToolCallReadFileLink';
10922
+ const ChatToolCallRenderHtmlBody = 'ChatToolCallRenderHtmlBody';
10923
+ const ChatToolCallRenderHtmlContent = 'ChatToolCallRenderHtmlContent';
10924
+ const ChatToolCallRenderHtmlLabel = 'ChatToolCallRenderHtmlLabel';
10925
+ const ChatToolCalls = 'ChatToolCalls';
10926
+ const ChatToolCallsLabel = 'ChatToolCallsLabel';
10927
+ const ChatUnorderedList = 'ChatUnorderedList';
10928
+ const ChatUnorderedListItem = 'ChatUnorderedListItem';
10929
+ const ChatViewDropOverlay = 'ChatViewDropOverlay';
10930
+ const ChatViewDropOverlayActive = 'ChatViewDropOverlayActive';
10931
+ const ChatWelcomeMessage = 'ChatWelcomeMessage';
10932
+ const CustomSelectPopOver = 'CustomSelectPopOver';
10933
+ const Deletion = 'Deletion';
10934
+ const Empty = '';
10935
+ const FileIcon = 'FileIcon';
10936
+ const IconButton = 'IconButton';
10937
+ const IconButtonDisabled = 'IconButtonDisabled';
10938
+ const ImageElement = 'ImageElement';
10939
+ const ImageErrorMessage = 'ImageErrorMessage';
10940
+ const InputBox = 'InputBox';
10941
+ const InputInvalid = 'InputInvalid';
10942
+ const Insertion = 'Insertion';
10943
+ const Label = 'Label';
10944
+ const LabelDetail = 'LabelDetail';
10945
+ const Markdown = 'Markdown';
10946
+ const MarkdownMathBlock = 'MarkdownMathBlock';
10947
+ const MarkdownQuote = 'MarkdownQuote';
10948
+ const MarkdownTable = 'MarkdownTable';
10949
+ const MaskIcon = 'MaskIcon';
10950
+ const MaskIconAdd = 'MaskIconAdd';
10951
+ const MaskIconArrowLeft = 'MaskIconArrowLeft';
10952
+ const MaskIconChevronDown = 'MaskIconChevronDown';
10953
+ const MaskIconChevronRight = 'MaskIconChevronRight';
10954
+ const MaskIconChevronUp = 'MaskIconChevronUp';
10955
+ const MaskIconClose = 'MaskIconClose';
10956
+ const MaskIconDebugPause = 'MaskIconDebugPause';
10957
+ const MaskIconLayoutPanelLeft = 'MaskIconLayoutPanelLeft';
10958
+ const MaskIconSearch = 'MaskIconSearch';
10959
+ const MaskIconSettingsGear = 'MaskIconSettingsGear';
10960
+ const Message = 'Message';
10961
+ const MessageAssistant = 'MessageAssistant';
10962
+ const MessageUser = 'MessageUser';
10963
+ const MissingApiKeyForm = 'MissingApiKeyForm';
10964
+ const MultiLineInputBox = 'MultilineInputBox';
10965
+ const ProjectAddButton = 'ProjectAddButton';
10966
+ const ProjectList = 'ProjectList';
10967
+ const ProjectListChevron = 'ProjectListChevron';
10968
+ const ProjectListGroup = 'ProjectListGroup';
10969
+ const ProjectListItem = 'ProjectListItem';
10970
+ const ProjectListItemActions = 'ProjectListItemActions';
10971
+ const ProjectListItemAddChatButton = 'ProjectListItemAddChatButton';
10972
+ const ProjectListItemLabel = 'ProjectListItemLabel';
10973
+ const ProjectListItemSelected = 'ProjectListItemSelected';
10974
+ const ProjectSessionItem = 'ProjectSessionItem';
10975
+ const ProjectSessionItemLabel = 'ProjectSessionItemLabel';
10976
+ const ProjectSessionItemSelected = 'ProjectSessionItemSelected';
10977
+ const ProjectSidebar = 'ProjectSidebar';
10978
+ const SearchFieldContainer = 'SearchFieldContainer';
10979
+ const RunModePickerContainer = 'RunModePickerContainer';
10980
+ const RunModePickerPopOver = 'RunModePickerPopOver';
10981
+ const SelectLabel = 'SelectLabel';
10982
+ const SendButtonDisabled = 'SendButtonDisabled';
10983
+ const SessionArchiveButton = 'SessionArchiveButton';
10984
+ const StrikeThrough = 'StrikeThrough';
10985
+ const TokenUsageOverview = 'TokenUsageOverview';
10986
+ const TokenUsageRing = 'TokenUsageRing';
10987
+ const TokenUsageRingInner = 'TokenUsageRingInner';
10988
+ const ToolCallName = 'ToolCallName';
10989
+ const Viewlet = 'Viewlet';
10990
+
11621
10991
  const HandleListContextMenu = 2;
11622
10992
  const HandleFocus = 3;
11623
10993
  const HandleInput = 4;
@@ -11670,7 +11040,8 @@ const HandlePointerUpModelPickerList = 55;
11670
11040
  const HandleClickReasoningEffortPickerToggle = 56;
11671
11041
  const HandleClickAgentModePickerToggle = 57;
11672
11042
  const HandleContextMenuChatImageAttachment = 58;
11673
- const HandleErrorComposerAttachmentPreviewOverlay = 59;
11043
+ const HandleClickGitBranchPickerToggle = 59;
11044
+ const HandleErrorComposerAttachmentPreviewOverlay = 60;
11674
11045
 
11675
11046
  const getAddContextButtonDom = () => {
11676
11047
  return [{
@@ -11685,12 +11056,23 @@ const getAddContextButtonDom = () => {
11685
11056
  }];
11686
11057
  };
11687
11058
 
11688
- const getCustomSelectToggleVirtualDom = (label, name, open, onClick, title = label) => {
11059
+ const getCustomSelectToggleVirtualDom = (label, name, open, onClick, title = label, ariaLabel = title) => {
11060
+ const getChevronDom = expanded => {
11061
+ return {
11062
+ childCount: 0,
11063
+ className: mergeClassNames(MaskIcon, expanded ? MaskIconChevronUp : MaskIconChevronDown),
11064
+ name,
11065
+ role: None$1,
11066
+ type: Div
11067
+ };
11068
+ };
11689
11069
  return [{
11690
11070
  'aria-expanded': open ? 'true' : 'false',
11691
11071
  'aria-haspopup': 'true',
11072
+ 'aria-label': ariaLabel,
11073
+ ariaLabel,
11692
11074
  childCount: 2,
11693
- className: Select,
11075
+ className: ChatSelect,
11694
11076
  inputType: 'button',
11695
11077
  name,
11696
11078
  onClick,
@@ -11702,21 +11084,11 @@ const getCustomSelectToggleVirtualDom = (label, name, open, onClick, title = lab
11702
11084
  name,
11703
11085
  role: None$1,
11704
11086
  type: Span
11705
- }, text(label), {
11706
- childCount: 0,
11707
- className: mergeClassNames(MaskIcon, open ? MaskIconChevronUp : MaskIconChevronDown),
11708
- name,
11709
- role: None$1,
11710
- type: Div
11711
- }];
11087
+ }, text(label), getChevronDom(open)];
11712
11088
  };
11713
11089
 
11714
- const getCustomSelectPickerToggleVirtualDom = (label, name, open, onClick, title = label, containerChildCount = 1) => {
11715
- return [{
11716
- childCount: containerChildCount,
11717
- className: CustomSelectContainer,
11718
- type: Div
11719
- }, ...getCustomSelectToggleVirtualDom(label, name, open, onClick, title)];
11090
+ const getCustomSelectPickerToggleVirtualDom = (label, name, open, onClick, title = label, ariaLabel = title) => {
11091
+ return getCustomSelectToggleVirtualDom(label, name, open, onClick, title, ariaLabel);
11720
11092
  };
11721
11093
 
11722
11094
  const getAgentModePickerVirtualDom = (selectedAgentMode, agentModePickerOpen) => {
@@ -11726,7 +11098,8 @@ const getAgentModePickerVirtualDom = (selectedAgentMode, agentModePickerOpen) =>
11726
11098
  const getChatModelPickerToggleVirtualDom = (models, selectedModelId, modelPickerOpen) => {
11727
11099
  const selectedModel = models.find(model => model.id === selectedModelId);
11728
11100
  const selectedModelLabel = selectedModel ? selectedModel.name : selectedModelId;
11729
- return getCustomSelectPickerToggleVirtualDom(selectedModelLabel, ModelPickerToggle, modelPickerOpen, HandleClickModelPickerToggle);
11101
+ const pickModelLabel = pickModel(selectedModelLabel);
11102
+ return getCustomSelectPickerToggleVirtualDom(selectedModelLabel, ModelPickerToggle, modelPickerOpen, HandleClickModelPickerToggle, pickModelLabel, pickModelLabel);
11730
11103
  };
11731
11104
 
11732
11105
  const getCreatePullRequestButtonDom = () => {
@@ -11770,6 +11143,55 @@ const getCustomSelectOptionVirtualDom = (name, label, selected, detail = '') =>
11770
11143
  }, text(detail)] : [])];
11771
11144
  };
11772
11145
 
11146
+ const itemHeight = 28;
11147
+ const messageHeight = 32;
11148
+ const getCurrentBranchLabel = (gitBranches, fallbackBranchName) => {
11149
+ const currentBranch = gitBranches.find(branch => branch.current);
11150
+ if (currentBranch) {
11151
+ return currentBranch.name;
11152
+ }
11153
+ if (fallbackBranchName) {
11154
+ return fallbackBranchName;
11155
+ }
11156
+ return 'Branch';
11157
+ };
11158
+ const getBranchOptionsVirtualDom = gitBranches => {
11159
+ return gitBranches.flatMap(branch => {
11160
+ return getCustomSelectOptionVirtualDom(getGitBranchPickerItemInputName(branch.name), branch.name, branch.current, branch.current ? 'current' : '');
11161
+ });
11162
+ };
11163
+ const getBranchPickerMessageDom = (gitBranches, errorMessage) => {
11164
+ const message = errorMessage || (gitBranches.length === 0 ? 'No local git branches found.' : '');
11165
+ if (!message) {
11166
+ return [];
11167
+ }
11168
+ return [{
11169
+ childCount: 1,
11170
+ className: mergeClassNames(ChatGitBranchPickerMessage, errorMessage ? ChatGitBranchPickerErrorMessage : Empty),
11171
+ type: Div
11172
+ }, {
11173
+ text: message,
11174
+ type: Text
11175
+ }];
11176
+ };
11177
+ const getGitBranchPickerVirtualDom = (gitBranches, gitBranchPickerOpen, gitBranchPickerErrorMessage, fallbackBranchName) => {
11178
+ const label = getCurrentBranchLabel(gitBranches, fallbackBranchName);
11179
+ const branchOptions = getBranchOptionsVirtualDom(gitBranches);
11180
+ const messageDom = getBranchPickerMessageDom(gitBranches, gitBranchPickerErrorMessage);
11181
+ const showMessage = messageDom.length > 0;
11182
+ const popOverHeight = gitBranches.length * itemHeight + (showMessage ? messageHeight : 0);
11183
+ return [...getCustomSelectPickerToggleVirtualDom(label, GitBranchPickerToggle, gitBranchPickerOpen, HandleClickGitBranchPickerToggle, 'Switch branch', 'Switch branch'), ...(gitBranchPickerOpen ? [{
11184
+ childCount: (showMessage ? 1 : 0) + 1,
11185
+ className: mergeClassNames(ChatModelPicker, CustomSelectPopOver, ChatGitBranchPicker),
11186
+ style: `height: ${popOverHeight}px;`,
11187
+ type: Div
11188
+ }, ...messageDom, {
11189
+ childCount: branchOptions.length / 4,
11190
+ className: ChatModelPickerList,
11191
+ type: Ul
11192
+ }, ...branchOptions] : [])];
11193
+ };
11194
+
11773
11195
  const reasoningEffortPickerHeight = reasoningEfforts.length * 28;
11774
11196
  const getReasoningEffortOptionsVirtualDom = selectedReasoningEffort => {
11775
11197
  return reasoningEfforts.flatMap(reasoningEffort => {
@@ -11779,7 +11201,7 @@ const getReasoningEffortOptionsVirtualDom = selectedReasoningEffort => {
11779
11201
  });
11780
11202
  };
11781
11203
  const getReasoningEffortPickerVirtualDom = (selectedReasoningEffort, reasoningEffortPickerOpen) => {
11782
- return [...getCustomSelectPickerToggleVirtualDom(getReasoningEffortLabel(selectedReasoningEffort), ReasoningEffortPickerToggle, reasoningEffortPickerOpen, HandleClickReasoningEffortPickerToggle, 'Reasoning', reasoningEffortPickerOpen ? 2 : 1), ...(reasoningEffortPickerOpen ? [{
11204
+ return [...getCustomSelectPickerToggleVirtualDom(getReasoningEffortLabel(selectedReasoningEffort), ReasoningEffortPickerToggle, reasoningEffortPickerOpen, HandleClickReasoningEffortPickerToggle, 'Reasoning', 'Reasoning'), ...(reasoningEffortPickerOpen ? [{
11783
11205
  childCount: 1,
11784
11206
  className: mergeClassNames(ChatModelPicker, CustomSelectPopOver),
11785
11207
  style: `height: ${reasoningEffortPickerHeight}px;`,
@@ -11946,6 +11368,7 @@ const getComposerAttachmentClassName = displayType => {
11946
11368
  };
11947
11369
  const getComposerAttachmentRemoveButtonDom = attachment => {
11948
11370
  return [{
11371
+ 'aria-label': removeAttachment(),
11949
11372
  buttonType: 'button',
11950
11373
  childCount: 1,
11951
11374
  className: ChatComposerAttachmentRemoveButton,
@@ -12017,12 +11440,13 @@ const getComposerTextAreaDom = () => {
12017
11440
  type: TextArea
12018
11441
  };
12019
11442
  };
12020
- const getChatSendAreaDom = (composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton = false, voiceDictationEnabled = false, scrollDownButtonEnabled = false, messagesAutoScrollEnabled = true) => {
11443
+ const getChatSendAreaDom = (composerValue, composerAttachments, agentMode, agentModePickerOpen, gitBranchPickerVisible, gitBranchPickerOpen, gitBranchPickerErrorMessage, gitBranches, fallbackBranchName, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton = false, voiceDictationEnabled = false, scrollDownButtonEnabled = false, messagesAutoScrollEnabled = true) => {
12021
11444
  const isSendDisabled = composerValue.trim() === '';
12022
11445
  const showAgentModePicker = hasSpaceForAgentModePicker;
11446
+ const showGitBranchPicker = gitBranchPickerVisible || Boolean(fallbackBranchName);
12023
11447
  const showResponsiveRunModePicker = showRunMode && hasSpaceForRunModePicker;
12024
11448
  const showScrollDownButton = scrollDownButtonEnabled && !messagesAutoScrollEnabled;
12025
- const bottomControlsCount = 2 + (usageOverviewEnabled ? 1 : 0) + (addContextButtonEnabled ? 1 : 0) + (showCreatePullRequestButton ? 1 : 0) + (voiceDictationEnabled ? 1 : 0) + (showScrollDownButton ? 1 : 0);
11449
+ const bottomControlsCount = 2 + (usageOverviewEnabled ? 1 : 0) + (addContextButtonEnabled ? 1 : 0) + (showCreatePullRequestButton ? 1 : 0) + (showGitBranchPicker ? 1 : 0) + (voiceDictationEnabled ? 1 : 0) + (showScrollDownButton ? 1 : 0);
12026
11450
  const primaryControlsCount = 1 + (showAgentModePicker ? 1 : 0) + (reasoningPickerEnabled ? 1 : 0) + (showResponsiveRunModePicker ? 1 : 0);
12027
11451
  const hasTodoList = todoListToolEnabled && todoListItems.length > 0;
12028
11452
  const hasComposerAttachments = composerAttachments.length > 0;
@@ -12046,7 +11470,62 @@ const getChatSendAreaDom = (composerValue, composerAttachments, agentMode, agent
12046
11470
  className: ChatSendAreaPrimaryControls,
12047
11471
  role: 'toolbar',
12048
11472
  type: Div
12049
- }, ...(showAgentModePicker ? getAgentModePickerVirtualDom(agentMode, agentModePickerOpen) : []), ...getChatModelPickerToggleVirtualDom(models, selectedModelId, modelPickerOpen), ...(reasoningPickerEnabled ? getReasoningEffortPickerVirtualDom(reasoningEffort, reasoningEffortPickerOpen) : []), ...(showResponsiveRunModePicker ? getRunModePickerVirtualDom(runMode, runModePickerOpen) : []), ...(usageOverviewEnabled ? getUsageOverviewDom(tokensUsed, tokensMax) : []), ...(addContextButtonEnabled ? getAddContextButtonDom() : []), ...(showCreatePullRequestButton ? getCreatePullRequestButtonDom() : []), ...(showScrollDownButton ? getScrollDownButtonDom() : []), ...getSendButtonDom(isSendDisabled, voiceDictationEnabled)];
11473
+ }, ...(showAgentModePicker ? getAgentModePickerVirtualDom(agentMode, agentModePickerOpen) : []), ...getChatModelPickerToggleVirtualDom(models, selectedModelId, modelPickerOpen), ...(reasoningPickerEnabled ? getReasoningEffortPickerVirtualDom(reasoningEffort, reasoningEffortPickerOpen) : []), ...(showResponsiveRunModePicker ? getRunModePickerVirtualDom(runMode, runModePickerOpen) : []), ...(usageOverviewEnabled ? getUsageOverviewDom(tokensUsed, tokensMax) : []), ...(addContextButtonEnabled ? getAddContextButtonDom() : []), ...(showCreatePullRequestButton ? getCreatePullRequestButtonDom() : []), ...(showGitBranchPicker ? getGitBranchPickerVirtualDom(gitBranches, gitBranchPickerOpen, gitBranchPickerErrorMessage, fallbackBranchName) : []), ...(showScrollDownButton ? getScrollDownButtonDom() : []), ...getSendButtonDom(isSendDisabled, voiceDictationEnabled)];
11474
+ };
11475
+
11476
+ const authContainerStyle = 'align-items:center;display:flex;gap:8px;min-width:0;';
11477
+ const authNameStyle = 'max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;';
11478
+ const authButtonStyle = 'white-space:nowrap;';
11479
+ const getButtonLabel = (userState, isAuthenticated) => {
11480
+ if (userState === 'loggingIn') {
11481
+ return loggingInToBackend();
11482
+ }
11483
+ if (userState === 'loggingOut') {
11484
+ return loggingOutFromBackend();
11485
+ }
11486
+ return isAuthenticated ? logout() : login();
11487
+ };
11488
+ const getButtonTitle = (userState, isAuthenticated) => {
11489
+ if (userState === 'loggingIn') {
11490
+ return loggingInToBackend();
11491
+ }
11492
+ if (userState === 'loggingOut') {
11493
+ return loggingOutFromBackend();
11494
+ }
11495
+ return isAuthenticated ? logoutFromBackend$1() : loginToBackend();
11496
+ };
11497
+ const getChatHeaderAuthDom = (authEnabled = false, userState = 'loggedOut', userName = '') => {
11498
+ if (!authEnabled) {
11499
+ return [];
11500
+ }
11501
+ const isAuthenticated = userState === 'loggedIn' || userState === 'loggingOut';
11502
+ const buttonName = isAuthenticated ? Logout : Login;
11503
+ const buttonLabel = getButtonLabel(userState, isAuthenticated);
11504
+ const buttonTitle = getButtonTitle(userState, isAuthenticated);
11505
+ const isPending = userState === 'loggingIn' || userState === 'loggingOut';
11506
+ const displayName = userName || signedIn();
11507
+ return [{
11508
+ childCount: isAuthenticated ? 2 : 1,
11509
+ className: ChatHeaderAuth,
11510
+ style: authContainerStyle,
11511
+ type: Div
11512
+ }, ...(isAuthenticated ? [{
11513
+ childCount: 1,
11514
+ className: ChatHeaderAuthName,
11515
+ style: authNameStyle,
11516
+ title: displayName,
11517
+ type: Span
11518
+ }, text(displayName)] : []), {
11519
+ childCount: 1,
11520
+ className: mergeClassNames(Button, ButtonSecondary),
11521
+ disabled: isPending,
11522
+ inputType: 'button',
11523
+ name: buttonName,
11524
+ onClick: HandleClick,
11525
+ style: authButtonStyle,
11526
+ title: buttonTitle,
11527
+ type: Button$1
11528
+ }, text(buttonLabel)];
12050
11529
  };
12051
11530
 
12052
11531
  const focusHeaderStyle = 'align-items:center;border-bottom:1px solid var(--vscode-panel-border, transparent);display:flex;gap:12px;justify-content:space-between;padding:8px 12px;';
@@ -12067,15 +11546,15 @@ const getFocusHeaderActionButtonDom = (label, name) => {
12067
11546
  type: Button$1
12068
11547
  }, text(label)];
12069
11548
  };
12070
- const getChatHeaderDomFocusMode = (selectedSessionTitle, selectedProjectName) => {
11549
+ const getChatHeaderDomFocusMode = (selectedSessionTitle, selectedProjectName, authEnabled = false, userState = 'loggedOut', userName = '') => {
12071
11550
  const items = [[addAction(), FocusAddAction], [openInVsCode(), FocusOpenInVsCode], [commit(), FocusCommit], [openTerminal(), FocusOpenTerminal], [showDiff(), FocusShowDiff]];
12072
11551
  const hasProjectName = !!selectedProjectName;
12073
11552
  return [{
12074
- childCount: 2,
11553
+ childCount: 2 + (authEnabled ? 1 : 0),
12075
11554
  className: ChatFocusHeader,
12076
11555
  style: focusHeaderStyle,
12077
11556
  type: Header
12078
- }, {
11557
+ }, ...getChatHeaderAuthDom(authEnabled, userState, userName), {
12079
11558
  childCount: hasProjectName ? 2 : 1,
12080
11559
  className: ChatName,
12081
11560
  style: focusHeaderMetaStyle,
@@ -12133,7 +11612,25 @@ const getUsageCostLabel = model => {
12133
11612
  };
12134
11613
 
12135
11614
  const getChatModelListItemVirtualDom = (model, selectedModelId) => {
12136
- return getCustomSelectOptionVirtualDom(getModelPickerItemInputName(model.id), getModelLabel(model), model.id === selectedModelId, getUsageCostLabel(model));
11615
+ const detail = getUsageCostLabel(model);
11616
+ const hasDetail = detail !== '';
11617
+ const selected = model.id === selectedModelId;
11618
+ const className = mergeClassNames(ChatModelPickerItem, selected ? ChatModelPickerItemSelected : '');
11619
+ return [{
11620
+ childCount: hasDetail ? 2 : 1,
11621
+ className,
11622
+ 'data-id': model.id,
11623
+ role: 'option',
11624
+ type: Li
11625
+ }, {
11626
+ childCount: 1,
11627
+ className: ChatModelPickerItemLabel,
11628
+ type: Span
11629
+ }, text(getModelLabel(model)), ...(hasDetail ? [{
11630
+ childCount: 1,
11631
+ className: ChatModelPickerItemUsageCost,
11632
+ type: Span
11633
+ }, text(detail)] : [])];
12137
11634
  };
12138
11635
 
12139
11636
  const parentNode$2 = {
@@ -12156,6 +11653,7 @@ const getChatModelListVirtualDom = (visibleModels, selectedModelId) => {
12156
11653
  onPointerDown: HandlePointerDownModelPickerList,
12157
11654
  onPointerUp: HandlePointerUpModelPickerList,
12158
11655
  onScroll: HandleModelPickerListScroll,
11656
+ role: 'listbox',
12159
11657
  type: Ul
12160
11658
  }, ...visibleModels.flatMap(model => getChatModelListItemVirtualDom(model, selectedModelId))];
12161
11659
  };
@@ -12396,19 +11894,7 @@ const getBlockQuoteDom = (node, useChatMathWorker, getMessageNodeDom) => {
12396
11894
  }, ...node.children.flatMap(child => getMessageNodeDom(child, useChatMathWorker))];
12397
11895
  };
12398
11896
 
12399
- const getTokenDom = token => {
12400
- if (!token.className) {
12401
- return [text(token.text)];
12402
- }
12403
- return [{
12404
- childCount: 1,
12405
- className: token.className,
12406
- type: Span
12407
- }, text(token.text)];
12408
- };
12409
-
12410
11897
  const getCodeBlockDom = node => {
12411
- const tokenDom = node.codeTokens.flatMap(getTokenDom);
12412
11898
  const languageAttribute = node.language ? {
12413
11899
  'data-lang': node.language
12414
11900
  } : {};
@@ -12417,10 +11903,10 @@ const getCodeBlockDom = node => {
12417
11903
  type: Pre,
12418
11904
  ...languageAttribute
12419
11905
  }, {
12420
- childCount: node.codeTokens.length,
11906
+ childCount: 1,
12421
11907
  type: Code,
12422
11908
  ...languageAttribute
12423
- }, ...tokenDom];
11909
+ }, text(node.text)];
12424
11910
  };
12425
11911
 
12426
11912
  const getHeadingElementType = level => {
@@ -12658,6 +12144,7 @@ const getMissingApiActionsDom = ({
12658
12144
  };
12659
12145
  const getMissingApiKeyDom = ({
12660
12146
  getApiKeyText,
12147
+ inputClassName,
12661
12148
  inputName,
12662
12149
  inputPattern,
12663
12150
  inputRequired = false,
@@ -12680,7 +12167,7 @@ const getMissingApiKeyDom = ({
12680
12167
  autocomplete: 'off',
12681
12168
  autocorrect: 'off',
12682
12169
  childCount: 0,
12683
- className: InputBox,
12170
+ className: inputClassName ? mergeClassNames(InputBox, inputClassName) : InputBox,
12684
12171
  name: inputName,
12685
12172
  onInput: HandleInput,
12686
12173
  ...(inputPattern ? {
@@ -12700,13 +12187,17 @@ const getMissingApiKeyDom = ({
12700
12187
  })];
12701
12188
  };
12702
12189
 
12703
- const getMissingOpenApiApiKeyDom = (openApiApiKeyState = 'idle', openSettingsUrl = 'https://platform.openai.com/api-keys', inputPattern = '^sk-.+') => {
12190
+ const getMissingOpenApiApiKeyDom = (openApiApiKeyInput = '', openApiApiKeyState = 'idle', openSettingsUrl = 'https://platform.openai.com/api-keys', inputPattern = '^sk-.+') => {
12704
12191
  const isSaving = openApiApiKeyState === 'saving';
12192
+ const isInvalid = openApiApiKeyInput !== '' && !new RegExp(inputPattern).test(openApiApiKeyInput);
12705
12193
  return getMissingApiKeyDom({
12706
12194
  getApiKeyText: getOpenApiApiKey(),
12195
+ ...(isInvalid ? {
12196
+ inputClassName: InputInvalid
12197
+ } : {}),
12707
12198
  inputName: OpenApiApiKeyInput,
12708
12199
  inputPattern,
12709
- inputRequired: true,
12200
+ inputRequired: false,
12710
12201
  onSubmit: HandleMissingOpenAiApiKeyFormSubmit,
12711
12202
  openSettingsButtonName: OpenOpenApiApiKeyWebsite,
12712
12203
  openSettingsUrl,
@@ -13325,7 +12816,7 @@ const getElementType = tagName => {
13325
12816
  case 'section':
13326
12817
  return Section;
13327
12818
  case 'select':
13328
- return Select$1;
12819
+ return Select;
13329
12820
  case 'span':
13330
12821
  return Span;
13331
12822
  case 'strong':
@@ -13696,14 +13187,27 @@ const getChatAttachmentsDom = attachments => {
13696
13187
  }];
13697
13188
  })];
13698
13189
  };
13699
- const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput, _openApiApiKeyInput = '', openApiApiKeyState = 'idle', openApiApiKeysSettingsUrl = 'https://platform.openai.com/api-keys', openApiApiKeyInputPattern = '^sk-.+', openRouterApiKeyState = 'idle', useChatMathWorker = false) => {
13190
+ const getStandaloneImageAttachmentDom = attachment => {
13191
+ if (!attachment.previewSrc) {
13192
+ return getChatAttachmentsDom([attachment]);
13193
+ }
13194
+ return [{
13195
+ alt: attachment.name,
13196
+ childCount: 0,
13197
+ className: ChatMessageImage,
13198
+ src: attachment.previewSrc,
13199
+ type: Img
13200
+ }];
13201
+ };
13202
+ const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput, openApiApiKeyInput = '', openApiApiKeyState = 'idle', openApiApiKeysSettingsUrl = 'https://platform.openai.com/api-keys', openApiApiKeyInputPattern = '^sk-.+', openRouterApiKeyState = 'idle', useChatMathWorker = false, standaloneImageAttachment) => {
13700
13203
  const roleClassName = message.role === 'user' ? MessageUser : MessageAssistant;
13701
13204
  const isOpenApiApiKeyMissingMessage = message.role === 'assistant' && message.text === openApiApiKeyRequiredMessage;
13702
13205
  const isOpenRouterApiKeyMissingMessage = message.role === 'assistant' && message.text === openRouterApiKeyRequiredMessage;
13703
13206
  const isOpenRouterRequestFailedMessage = message.role === 'assistant' && message.text === openRouterRequestFailedMessage;
13704
13207
  const isOpenRouterTooManyRequestsMessage = message.role === 'assistant' && message.text.startsWith(openRouterTooManyRequestsMessage);
13705
- const messageDom = getMessageContentDom(parsedMessageContent, useChatMathWorker);
13706
- const attachmentsDom = message.role === 'user' ? getChatAttachmentsDom(message.attachments ?? []) : [];
13208
+ const isStandaloneImageMessage = !!standaloneImageAttachment;
13209
+ const messageDom = isStandaloneImageMessage ? getStandaloneImageAttachmentDom(standaloneImageAttachment) : getMessageContentDom(parsedMessageContent, useChatMathWorker);
13210
+ const attachmentsDom = !isStandaloneImageMessage && message.role === 'user' ? getChatAttachmentsDom(message.attachments ?? []) : [];
13707
13211
  const toolCallsDom = getToolCallsDom(message);
13708
13212
  const toolCallsChildCount = toolCallsDom.length > 0 ? 1 : 0;
13709
13213
  const messageDomChildCount = getTopLevelNodeCount(messageDom);
@@ -13715,9 +13219,9 @@ const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput
13715
13219
  type: Div
13716
13220
  }, {
13717
13221
  childCount: extraChildCount,
13718
- className: ChatMessageContent,
13222
+ className: isStandaloneImageMessage ? mergeClassNames(ChatMessageContent, ChatImageMessageContent) : ChatMessageContent,
13719
13223
  type: Div
13720
- }, ...toolCallsDom, ...messageDom, ...attachmentsDom, ...(isOpenApiApiKeyMissingMessage ? getMissingOpenApiApiKeyDom(openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern) : []), ...(isOpenRouterApiKeyMissingMessage ? getMissingOpenRouterApiKeyDom(openRouterApiKeyState) : []), ...(isOpenRouterRequestFailedMessage ? getOpenRouterRequestFailedDom() : []), ...(isOpenRouterTooManyRequestsMessage ? getOpenRouterTooManyRequestsDom() : [])];
13224
+ }, ...toolCallsDom, ...messageDom, ...attachmentsDom, ...(isOpenApiApiKeyMissingMessage ? getMissingOpenApiApiKeyDom(openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern) : []), ...(isOpenRouterApiKeyMissingMessage ? getMissingOpenRouterApiKeyDom(openRouterApiKeyState) : []), ...(isOpenRouterRequestFailedMessage ? getOpenRouterRequestFailedDom() : []), ...(isOpenRouterTooManyRequestsMessage ? getOpenRouterTooManyRequestsDom() : [])];
13721
13225
  };
13722
13226
 
13723
13227
  const parentNode$1 = {
@@ -13733,6 +13237,22 @@ const getEmptyMessagesDom = () => {
13733
13237
  const hasMessageText = message => {
13734
13238
  return message.text.trim().length > 0;
13735
13239
  };
13240
+ const isImageAttachment = attachment => {
13241
+ return attachment.displayType === 'image';
13242
+ };
13243
+ const withAttachments = (message, attachments) => {
13244
+ const {
13245
+ attachments: _attachments,
13246
+ ...messageWithoutAttachments
13247
+ } = message;
13248
+ if (attachments.length === 0) {
13249
+ return messageWithoutAttachments;
13250
+ }
13251
+ return {
13252
+ ...messageWithoutAttachments,
13253
+ attachments
13254
+ };
13255
+ };
13736
13256
  const getDisplayMessages = (messages, parsedMessages) => {
13737
13257
  const displayMessages = [];
13738
13258
  for (const message of messages) {
@@ -13740,6 +13260,30 @@ const getDisplayMessages = (messages, parsedMessages) => {
13740
13260
  if (!parsedContent) {
13741
13261
  continue;
13742
13262
  }
13263
+ if (message.role === 'user') {
13264
+ const attachments = message.attachments ?? [];
13265
+ const imageAttachments = attachments.filter(isImageAttachment);
13266
+ if (imageAttachments.length > 0) {
13267
+ const nonImageAttachments = attachments.filter(attachment => !isImageAttachment(attachment));
13268
+ if (hasMessageText(message) || nonImageAttachments.length > 0) {
13269
+ displayMessages.push({
13270
+ message: withAttachments(message, nonImageAttachments),
13271
+ parsedContent: hasMessageText(message) ? parsedContent : getEmptyMessageContent()
13272
+ });
13273
+ }
13274
+ for (const attachment of imageAttachments) {
13275
+ displayMessages.push({
13276
+ message: {
13277
+ ...withAttachments(message, [attachment]),
13278
+ text: ''
13279
+ },
13280
+ parsedContent: getEmptyMessageContent(),
13281
+ standaloneImageAttachment: attachment
13282
+ });
13283
+ }
13284
+ continue;
13285
+ }
13286
+ }
13743
13287
  if (message.role !== 'assistant' || !message.toolCalls || message.toolCalls.length === 0) {
13744
13288
  displayMessages.push({
13745
13289
  message,
@@ -13795,7 +13339,7 @@ const getMessagesDom = (messages, parsedMessages, openRouterApiKeyInput, openApi
13795
13339
  role: 'log',
13796
13340
  scrollTop: messagesScrollTop,
13797
13341
  type: Div
13798
- }, ...displayMessages.flatMap(item => getChatMessageDom(item.message, item.parsedContent, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, useChatMathWorker))];
13342
+ }, ...displayMessages.flatMap(item => getChatMessageDom(item.message, item.parsedContent, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, useChatMathWorker, item.standaloneImageAttachment))];
13799
13343
  };
13800
13344
 
13801
13345
  const arrowLeft$1 = {
@@ -13909,7 +13453,6 @@ const getChatModeChatFocusVirtualDom = ({
13909
13453
  agentModePickerOpen = false,
13910
13454
  authEnabled = false,
13911
13455
  authErrorMessage = '',
13912
- authStatus = 'signed-out',
13913
13456
  composerAttachmentPreviewOverlayAttachmentId,
13914
13457
  composerAttachmentPreviewOverlayError = false,
13915
13458
  composerAttachments,
@@ -13920,6 +13463,10 @@ const getChatModeChatFocusVirtualDom = ({
13920
13463
  composerHeight = 28,
13921
13464
  composerLineHeight = 20,
13922
13465
  composerValue,
13466
+ gitBranches,
13467
+ gitBranchPickerErrorMessage,
13468
+ gitBranchPickerOpen,
13469
+ gitBranchPickerVisible,
13923
13470
  hasSpaceForAgentModePicker,
13924
13471
  hasSpaceForRunModePicker,
13925
13472
  messagesAutoScrollEnabled,
@@ -13954,14 +13501,15 @@ const getChatModeChatFocusVirtualDom = ({
13954
13501
  tokensUsed,
13955
13502
  usageOverviewEnabled,
13956
13503
  useChatMathWorker = false,
13504
+ userName = '',
13505
+ userState = 'loggedOut',
13957
13506
  visibleModels = models,
13958
13507
  voiceDictationEnabled = false
13959
13508
  }) => {
13960
13509
  const selectedSession = sessions.find(session => session.id === selectedSessionId);
13961
- const selectedProject = projects.find(project => project.id === selectedProjectId);
13962
- const messages = selectedSession ? selectedSession.messages : [];
13963
13510
  const selectedSessionTitle = selectedSession?.title || chatTitle();
13964
- const selectedProjectName = selectedProject?.name || '';
13511
+ const selectedProjectName = projects.find(project => project.id === selectedProjectId)?.name || '';
13512
+ const messages = selectedSession ? selectedSession.messages : [];
13965
13513
  const showCreatePullRequestButton = canCreatePullRequest(selectedSession);
13966
13514
  const isDropOverlayVisible = composerDropEnabled && composerDropActive;
13967
13515
  const isComposerAttachmentPreviewOverlayVisible = !!composerAttachmentPreviewOverlayAttachmentId;
@@ -13980,7 +13528,7 @@ const getChatModeChatFocusVirtualDom = ({
13980
13528
  childCount: 3,
13981
13529
  className: ChatFocusMainArea,
13982
13530
  type: Div
13983
- }, ...getChatHeaderDomFocusMode(selectedSessionTitle, selectedProjectName), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker, true), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled, scrollDownButtonEnabled, messagesAutoScrollEnabled), ...getChatOverlaysVirtualDom({
13531
+ }, ...getChatHeaderDomFocusMode(selectedSessionTitle, selectedProjectName, authEnabled, userState, userName), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker, true), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, gitBranchPickerVisible, gitBranchPickerOpen, gitBranchPickerErrorMessage, gitBranches, selectedSession?.branchName || '', hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled, scrollDownButtonEnabled, messagesAutoScrollEnabled), ...getChatOverlaysVirtualDom({
13984
13532
  agentMode,
13985
13533
  agentModePickerVisible: isAgentModePickerVisible,
13986
13534
  composerAttachmentPreviewOverlayAttachmentId,
@@ -14033,31 +13581,8 @@ const getHeaderActionVirtualDom = item => {
14033
13581
  }];
14034
13582
  };
14035
13583
 
14036
- const getAuthAction = (authEnabled, authStatus) => {
14037
- const isSigningIn = authStatus === 'signing-in';
14038
- if (!authEnabled) {
14039
- return undefined;
14040
- }
14041
- if (authStatus !== 'signed-in') {
14042
- return {
14043
- disabled: isSigningIn,
14044
- icon: mergeClassNames(MaskIcon, MaskIconAccount),
14045
- name: Login,
14046
- onClick: HandleClick,
14047
- title: isSigningIn ? loggingInToBackend() : loginToBackend()
14048
- };
14049
- }
14050
- return {
14051
- disabled: false,
14052
- icon: mergeClassNames(MaskIcon, MaskIconSignOut),
14053
- name: Logout,
14054
- onClick: HandleClick,
14055
- title: logoutFromBackend()
14056
- };
14057
- };
14058
- const getChatHeaderActionsDom = (viewMode, authEnabled = false, authStatus = 'signed-out', searchEnabled = false) => {
13584
+ const getChatHeaderActionsDom = (viewMode, searchEnabled = false) => {
14059
13585
  const toggleTitle = viewMode === 'chat-focus' ? normalChatMode() : chatFocusMode();
14060
- const authAction = getAuthAction(authEnabled, authStatus);
14061
13586
  const items = [{
14062
13587
  icon: mergeClassNames(MaskIcon, MaskIconLayoutPanelLeft),
14063
13588
  name: ToggleChatFocus,
@@ -14083,7 +13608,7 @@ const getChatHeaderActionsDom = (viewMode, authEnabled = false, authStatus = 'si
14083
13608
  name: Settings,
14084
13609
  onClick: HandleClickSettings,
14085
13610
  title: settings()
14086
- }, ...(authAction ? [authAction] : []), {
13611
+ }, {
14087
13612
  icon: mergeClassNames(MaskIcon, MaskIconClose),
14088
13613
  name: CloseChat,
14089
13614
  onClick: HandleClickClose,
@@ -14108,14 +13633,14 @@ const getAuthErrorDom = (hasAuthError, authErrorMessage) => {
14108
13633
  type: Span
14109
13634
  }, text(authErrorMessage)];
14110
13635
  };
14111
- const getChatHeaderDomDetailMode = (selectedSessionTitle, authEnabled = false, authStatus = 'signed-out', authErrorMessage = '') => {
13636
+ const getChatHeaderDomDetailMode = (selectedSessionTitle, authEnabled = false, userState = 'loggedOut', userName = '', authErrorMessage = '') => {
14112
13637
  const hasAuthError = authEnabled && !!authErrorMessage;
14113
13638
  return [{
14114
- childCount: hasAuthError ? 3 : 2,
13639
+ childCount: 2 + (authEnabled ? 1 : 0) + (hasAuthError ? 1 : 0),
14115
13640
  className: ChatHeader,
14116
13641
  onContextMenu: HandleChatHeaderContextMenu,
14117
13642
  type: Header
14118
- }, {
13643
+ }, ...getChatHeaderAuthDom(authEnabled, userState, userName), {
14119
13644
  childCount: 2,
14120
13645
  className: ChatName,
14121
13646
  type: Div
@@ -14123,7 +13648,7 @@ const getChatHeaderDomDetailMode = (selectedSessionTitle, authEnabled = false, a
14123
13648
  childCount: 1,
14124
13649
  className: ChatHeaderLabel,
14125
13650
  type: H2
14126
- }, text(selectedSessionTitle), ...getChatHeaderActionsDom('detail', authEnabled, authStatus), ...getAuthErrorDom(hasAuthError, authErrorMessage)];
13651
+ }, text(selectedSessionTitle), ...getChatHeaderActionsDom('detail'), ...getAuthErrorDom(hasAuthError, authErrorMessage)];
14127
13652
  };
14128
13653
 
14129
13654
  const getChatModeDetailVirtualDom = ({
@@ -14132,7 +13657,6 @@ const getChatModeDetailVirtualDom = ({
14132
13657
  agentModePickerOpen = false,
14133
13658
  authEnabled = false,
14134
13659
  authErrorMessage = '',
14135
- authStatus = 'signed-out',
14136
13660
  composerAttachmentPreviewOverlayAttachmentId,
14137
13661
  composerAttachmentPreviewOverlayError = false,
14138
13662
  composerAttachments,
@@ -14173,6 +13697,8 @@ const getChatModeDetailVirtualDom = ({
14173
13697
  tokensUsed,
14174
13698
  usageOverviewEnabled,
14175
13699
  useChatMathWorker = false,
13700
+ userName = '',
13701
+ userState = 'loggedOut',
14176
13702
  visibleModels = models,
14177
13703
  voiceDictationEnabled = false
14178
13704
  }) => {
@@ -14193,7 +13719,7 @@ const getChatModeDetailVirtualDom = ({
14193
13719
  onDragEnter: HandleDragEnterChatView,
14194
13720
  onDragOver: HandleDragOverChatView,
14195
13721
  type: Div
14196
- }, ...getChatHeaderDomDetailMode(selectedSessionTitle, authEnabled, authStatus, authErrorMessage), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled, scrollDownButtonEnabled, messagesAutoScrollEnabled), ...getChatOverlaysVirtualDom({
13722
+ }, ...getChatHeaderDomDetailMode(selectedSessionTitle, authEnabled, userState, userName, authErrorMessage), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, false, false, '', [], '', hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled, scrollDownButtonEnabled, messagesAutoScrollEnabled), ...getChatOverlaysVirtualDom({
14197
13723
  agentMode,
14198
13724
  agentModePickerVisible: isAgentModePickerVisible,
14199
13725
  composerAttachmentPreviewOverlayAttachmentId,
@@ -14229,20 +13755,20 @@ const getChatSearchDom = (hasSearchField, searchValue) => {
14229
13755
  value: searchValue
14230
13756
  }];
14231
13757
  };
14232
- const getChatHeaderListModeDom = (authEnabled = false, authStatus = 'signed-out', authErrorMessage = '', searchEnabled = false, searchFieldVisible = false, searchValue = '') => {
13758
+ const getChatHeaderListModeDom = (authEnabled = false, userState = 'loggedOut', userName = '', authErrorMessage = '', searchEnabled = false, searchFieldVisible = false, searchValue = '') => {
14233
13759
  const hasAuthError = authEnabled && !!authErrorMessage;
14234
13760
  const hasSearchField = searchEnabled && searchFieldVisible;
14235
- const headerChildCount = 2 + (hasAuthError ? 1 : 0) + (hasSearchField ? 1 : 0);
13761
+ const headerChildCount = 2 + (authEnabled ? 1 : 0) + (hasAuthError ? 1 : 0) + (hasSearchField ? 1 : 0);
14236
13762
  return [{
14237
13763
  childCount: headerChildCount,
14238
13764
  className: ChatHeader,
14239
13765
  onContextMenu: HandleChatHeaderContextMenu,
14240
13766
  type: Header
14241
- }, {
13767
+ }, ...getChatHeaderAuthDom(authEnabled, userState, userName), {
14242
13768
  childCount: 1,
14243
13769
  className: ChatHeaderLabel,
14244
13770
  type: H2
14245
- }, text(chats()), ...getChatHeaderActionsDom('list', authEnabled, authStatus, searchEnabled), ...getChatSearchDom(hasSearchField, searchValue), ...(hasAuthError ? [{
13771
+ }, text(chats()), ...getChatHeaderActionsDom('list', searchEnabled), ...getChatSearchDom(hasSearchField, searchValue), ...(hasAuthError ? [{
14246
13772
  childCount: 1,
14247
13773
  className: ChatAuthError,
14248
13774
  type: Span
@@ -14288,7 +13814,7 @@ const getSessionDom = (session, focused = false) => {
14288
13814
  type: Div
14289
13815
  }, {
14290
13816
  childCount: 0,
14291
- className: `${ChatListItemStatusIcon} codicon codicon-circle-filled ${sessionStatusClassName}`,
13817
+ className: `${ChatListItemStatusIcon} ${sessionStatusClassName}`,
14292
13818
  type: Div
14293
13819
  }, {
14294
13820
  childCount: 1,
@@ -14342,7 +13868,6 @@ const getChatModeListVirtualDom = ({
14342
13868
  agentModePickerOpen = false,
14343
13869
  authEnabled = false,
14344
13870
  authErrorMessage = '',
14345
- authStatus = 'signed-out',
14346
13871
  chatListScrollTop = 0,
14347
13872
  composerAttachmentPreviewOverlayAttachmentId,
14348
13873
  composerAttachmentPreviewOverlayError = false,
@@ -14377,6 +13902,8 @@ const getChatModeListVirtualDom = ({
14377
13902
  tokensMax,
14378
13903
  tokensUsed,
14379
13904
  usageOverviewEnabled,
13905
+ userName = '',
13906
+ userState = 'loggedOut',
14380
13907
  visibleModels = models,
14381
13908
  voiceDictationEnabled = false
14382
13909
  }) => {
@@ -14395,7 +13922,7 @@ const getChatModeListVirtualDom = ({
14395
13922
  onDragEnter: HandleDragEnterChatView,
14396
13923
  onDragOver: HandleDragOverChatView,
14397
13924
  type: Div
14398
- }, ...getChatHeaderListModeDom(authEnabled, authStatus, authErrorMessage, searchEnabled, searchFieldVisible, searchValue), ...getChatListDom(visibleSessions, selectedSessionId, listFocusedIndex, chatListScrollTop), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, false, voiceDictationEnabled), ...getChatOverlaysVirtualDom({
13925
+ }, ...getChatHeaderListModeDom(authEnabled, userState, userName, authErrorMessage, searchEnabled, searchFieldVisible, searchValue), ...getChatListDom(visibleSessions, selectedSessionId, listFocusedIndex, chatListScrollTop), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, false, false, '', [], '', hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, false, voiceDictationEnabled), ...getChatOverlaysVirtualDom({
14399
13926
  agentMode,
14400
13927
  agentModePickerVisible: isAgentModePickerVisible,
14401
13928
  composerAttachmentPreviewOverlayAttachmentId,
@@ -14498,7 +14025,6 @@ const getChatVirtualDom = options => {
14498
14025
  agentModePickerOpen = false,
14499
14026
  authEnabled = false,
14500
14027
  authErrorMessage = '',
14501
- authStatus = 'signed-out',
14502
14028
  chatListScrollTop,
14503
14029
  composerAttachmentPreviewOverlayAttachmentId,
14504
14030
  composerAttachmentPreviewOverlayError = false,
@@ -14510,6 +14036,10 @@ const getChatVirtualDom = options => {
14510
14036
  composerHeight,
14511
14037
  composerLineHeight,
14512
14038
  composerValue,
14039
+ gitBranches = [],
14040
+ gitBranchPickerErrorMessage = '',
14041
+ gitBranchPickerOpen = false,
14042
+ gitBranchPickerVisible = false,
14513
14043
  hasSpaceForAgentModePicker,
14514
14044
  hasSpaceForRunModePicker,
14515
14045
  listFocusedIndex = -1,
@@ -14547,6 +14077,8 @@ const getChatVirtualDom = options => {
14547
14077
  tokensUsed,
14548
14078
  usageOverviewEnabled,
14549
14079
  useChatMathWorker = false,
14080
+ userName = '',
14081
+ userState = 'loggedOut',
14550
14082
  viewMode,
14551
14083
  visibleModels = models,
14552
14084
  voiceDictationEnabled = false
@@ -14561,7 +14093,6 @@ const getChatVirtualDom = options => {
14561
14093
  agentModePickerOpen,
14562
14094
  authEnabled,
14563
14095
  authErrorMessage,
14564
- authStatus,
14565
14096
  composerAttachmentPreviewOverlayAttachmentId,
14566
14097
  composerAttachmentPreviewOverlayError,
14567
14098
  composerAttachments,
@@ -14572,6 +14103,10 @@ const getChatVirtualDom = options => {
14572
14103
  composerHeight,
14573
14104
  composerLineHeight,
14574
14105
  composerValue,
14106
+ gitBranches,
14107
+ gitBranchPickerErrorMessage,
14108
+ gitBranchPickerOpen,
14109
+ gitBranchPickerVisible,
14575
14110
  hasSpaceForAgentModePicker,
14576
14111
  hasSpaceForRunModePicker,
14577
14112
  messagesAutoScrollEnabled,
@@ -14606,6 +14141,8 @@ const getChatVirtualDom = options => {
14606
14141
  tokensUsed,
14607
14142
  usageOverviewEnabled,
14608
14143
  useChatMathWorker,
14144
+ userName,
14145
+ userState,
14609
14146
  visibleModels,
14610
14147
  voiceDictationEnabled
14611
14148
  });
@@ -14616,7 +14153,6 @@ const getChatVirtualDom = options => {
14616
14153
  agentModePickerOpen,
14617
14154
  authEnabled,
14618
14155
  authErrorMessage,
14619
- authStatus,
14620
14156
  composerAttachmentPreviewOverlayAttachmentId,
14621
14157
  composerAttachmentPreviewOverlayError,
14622
14158
  composerAttachments,
@@ -14657,6 +14193,8 @@ const getChatVirtualDom = options => {
14657
14193
  tokensUsed,
14658
14194
  usageOverviewEnabled,
14659
14195
  useChatMathWorker,
14196
+ userName,
14197
+ userState,
14660
14198
  visibleModels,
14661
14199
  voiceDictationEnabled
14662
14200
  });
@@ -14667,7 +14205,6 @@ const getChatVirtualDom = options => {
14667
14205
  agentModePickerOpen,
14668
14206
  authEnabled,
14669
14207
  authErrorMessage,
14670
- authStatus,
14671
14208
  chatListScrollTop,
14672
14209
  composerAttachmentPreviewOverlayAttachmentId,
14673
14210
  composerAttachmentPreviewOverlayError,
@@ -14702,6 +14239,8 @@ const getChatVirtualDom = options => {
14702
14239
  tokensMax,
14703
14240
  tokensUsed,
14704
14241
  usageOverviewEnabled,
14242
+ userName,
14243
+ userState,
14705
14244
  visibleModels,
14706
14245
  voiceDictationEnabled
14707
14246
  });
@@ -14717,7 +14256,6 @@ const renderItems = (oldState, newState) => {
14717
14256
  agentModePickerOpen,
14718
14257
  authEnabled,
14719
14258
  authErrorMessage,
14720
- authStatus,
14721
14259
  chatListScrollTop,
14722
14260
  composerAttachmentPreviewOverlayAttachmentId,
14723
14261
  composerAttachmentPreviewOverlayError,
@@ -14729,6 +14267,10 @@ const renderItems = (oldState, newState) => {
14729
14267
  composerHeight,
14730
14268
  composerLineHeight,
14731
14269
  composerValue,
14270
+ gitBranches,
14271
+ gitBranchPickerErrorMessage,
14272
+ gitBranchPickerOpen,
14273
+ gitBranchPickerVisible,
14732
14274
  hasSpaceForAgentModePicker,
14733
14275
  hasSpaceForRunModePicker,
14734
14276
  initial,
@@ -14768,6 +14310,8 @@ const renderItems = (oldState, newState) => {
14768
14310
  uid,
14769
14311
  usageOverviewEnabled,
14770
14312
  useChatMathWorker,
14313
+ userName,
14314
+ userState,
14771
14315
  viewMode,
14772
14316
  visibleModels,
14773
14317
  voiceDictationEnabled
@@ -14781,7 +14325,6 @@ const renderItems = (oldState, newState) => {
14781
14325
  agentModePickerOpen,
14782
14326
  authEnabled,
14783
14327
  authErrorMessage,
14784
- authStatus,
14785
14328
  chatListScrollTop,
14786
14329
  composerAttachmentPreviewOverlayAttachmentId,
14787
14330
  composerAttachmentPreviewOverlayError,
@@ -14793,6 +14336,10 @@ const renderItems = (oldState, newState) => {
14793
14336
  composerHeight,
14794
14337
  composerLineHeight,
14795
14338
  composerValue,
14339
+ gitBranches,
14340
+ gitBranchPickerErrorMessage,
14341
+ gitBranchPickerOpen,
14342
+ gitBranchPickerVisible,
14796
14343
  hasSpaceForAgentModePicker,
14797
14344
  hasSpaceForRunModePicker,
14798
14345
  listFocusedIndex,
@@ -14830,6 +14377,8 @@ const renderItems = (oldState, newState) => {
14830
14377
  tokensUsed,
14831
14378
  usageOverviewEnabled,
14832
14379
  useChatMathWorker,
14380
+ userName,
14381
+ userState,
14833
14382
  viewMode,
14834
14383
  visibleModels,
14835
14384
  voiceDictationEnabled
@@ -14876,8 +14425,16 @@ const renderSelection = (oldState, newState) => {
14876
14425
  const renderValue = (oldState, newState) => {
14877
14426
  const {
14878
14427
  composerValue,
14428
+ openApiApiKeyInput,
14429
+ openRouterApiKeyInput,
14879
14430
  uid
14880
14431
  } = newState;
14432
+ if (oldState.openApiApiKeyInput !== openApiApiKeyInput) {
14433
+ return [SetValueByName, uid, OpenApiApiKeyInput, openApiApiKeyInput];
14434
+ }
14435
+ if (oldState.openRouterApiKeyInput !== openRouterApiKeyInput) {
14436
+ return [SetValueByName, uid, OpenRouterApiKeyInput, openRouterApiKeyInput];
14437
+ }
14881
14438
  return [SetValueByName, uid, Composer, composerValue];
14882
14439
  };
14883
14440
 
@@ -14971,6 +14528,9 @@ const renderEventListeners = () => {
14971
14528
  }, {
14972
14529
  name: HandleClickAgentModePickerToggle,
14973
14530
  params: ['openAgentModePicker']
14531
+ }, {
14532
+ name: HandleClickGitBranchPickerToggle,
14533
+ params: ['handleClickGitBranchPickerToggle']
14974
14534
  }, {
14975
14535
  name: HandleClickModelPickerOverlay,
14976
14536
  params: ['handleClickModelPickerOverlay', DefaultPrevented]
@@ -15129,6 +14689,10 @@ const reset = async state => {
15129
14689
  composerSelectionEnd: 0,
15130
14690
  composerSelectionStart: 0,
15131
14691
  composerValue: '',
14692
+ gitBranches: [],
14693
+ gitBranchPickerErrorMessage: '',
14694
+ gitBranchPickerOpen: false,
14695
+ gitBranchPickerVisible: false,
15132
14696
  mockAiResponseDelay: 0,
15133
14697
  modelPickerHeight: getModelPickerHeight(state.modelPickerHeaderHeight, state.models.length),
15134
14698
  modelPickerListScrollTop: 0,
@@ -15208,7 +14772,6 @@ const saveState = state => {
15208
14772
  selectedModelId,
15209
14773
  selectedProjectId,
15210
14774
  selectedSessionId,
15211
- systemPrompt,
15212
14775
  viewMode
15213
14776
  } = state;
15214
14777
  return {
@@ -15231,7 +14794,6 @@ const saveState = state => {
15231
14794
  selectedModelId,
15232
14795
  selectedProjectId,
15233
14796
  selectedSessionId,
15234
- systemPrompt,
15235
14797
  viewMode
15236
14798
  };
15237
14799
  };
@@ -15246,7 +14808,13 @@ const setAddContextButtonEnabled = (state, addContextButtonEnabled) => {
15246
14808
  const setAuthEnabled = (state, authEnabled) => {
15247
14809
  return {
15248
14810
  ...state,
15249
- authEnabled
14811
+ authAccessToken: authEnabled ? state.authAccessToken : '',
14812
+ authEnabled,
14813
+ authErrorMessage: authEnabled ? state.authErrorMessage : '',
14814
+ userName: authEnabled ? state.userName : '',
14815
+ userState: authEnabled ? state.userState : 'loggedOut',
14816
+ userSubscriptionPlan: authEnabled ? state.userSubscriptionPlan : '',
14817
+ userUsedTokens: authEnabled ? state.userUsedTokens : 0
15250
14818
  };
15251
14819
  };
15252
14820
 
@@ -15393,18 +14961,6 @@ const setUseChatMathWorker = async (state, useChatMathWorker, persist = true) =>
15393
14961
  };
15394
14962
  };
15395
14963
 
15396
- const setUseChatMessageParsingWorker = async (state, useChatMessageParsingWorker, persist = true) => {
15397
- if (persist) {
15398
- await update({
15399
- 'chatView.useChatMessageParsingWorker': useChatMessageParsingWorker
15400
- });
15401
- }
15402
- return {
15403
- ...state,
15404
- useChatMessageParsingWorker
15405
- };
15406
- };
15407
-
15408
14964
  const setUseChatNetworkWorkerForRequests = async (state, useChatNetworkWorkerForRequests, persist = true) => {
15409
14965
  if (persist) {
15410
14966
  await update({
@@ -15440,6 +14996,7 @@ const commandMap = {
15440
14996
  'Chat.chatListFocusNext': wrapCommand(chatListFocusNext),
15441
14997
  'Chat.chatListFocusPrevious': wrapCommand(chatListFocusPrevious),
15442
14998
  'Chat.clearInput': wrapCommand(clearInput),
14999
+ 'Chat.closeGitBranchPicker': wrapCommand(closeGitBranchPicker),
15443
15000
  'Chat.copyInput': wrapCommand(copyInput),
15444
15001
  'Chat.create': create,
15445
15002
  'Chat.cutInput': wrapCommand(cutInput),
@@ -15468,6 +15025,7 @@ const commandMap = {
15468
15025
  'Chat.handleClickDelete': wrapCommand(handleClickDelete),
15469
15026
  'Chat.handleClickDictationButton': wrapCommand(handleClickDictationButton),
15470
15027
  'Chat.handleClickFileName': wrapCommand(handleClickFileName),
15028
+ 'Chat.handleClickGitBranchPickerToggle': wrapCommand(handleClickGitBranchPickerToggle),
15471
15029
  'Chat.handleClickList': wrapCommand(handleClickList),
15472
15030
  'Chat.handleClickModelPickerList': wrapCommand(handleClickModelPickerList),
15473
15031
  'Chat.handleClickModelPickerListIndex': wrapCommand(handleClickModelPickerListIndex),
@@ -15519,6 +15077,7 @@ const commandMap = {
15519
15077
  'Chat.mockOpenApiStreamPushChunk': wrapCommand(mockOpenApiStreamPushChunk),
15520
15078
  'Chat.mockOpenApiStreamReset': wrapCommand(mockOpenApiStreamReset),
15521
15079
  'Chat.openAgentModePicker': wrapCommand(openAgentModePicker),
15080
+ 'Chat.openGitBranchPicker': wrapCommand(openGitBranchPicker),
15522
15081
  'Chat.openMockProject': wrapCommand(openMockProject),
15523
15082
  'Chat.openMockSession': wrapCommand(openMockSession),
15524
15083
  'Chat.openModelPicker': wrapCommand(openModelPicker),
@@ -15553,7 +15112,6 @@ const commandMap = {
15553
15112
  'Chat.setToolEnablement': wrapCommand(setToolEnablement),
15554
15113
  'Chat.setUseChatCoordinatorWorker': wrapCommand(setUseChatCoordinatorWorker),
15555
15114
  'Chat.setUseChatMathWorker': wrapCommand(setUseChatMathWorker),
15556
- 'Chat.setUseChatMessageParsingWorker': wrapCommand(setUseChatMessageParsingWorker),
15557
15115
  'Chat.setUseChatNetworkWorkerForRequests': wrapCommand(setUseChatNetworkWorkerForRequests),
15558
15116
  'Chat.showComposerAttachmentPreviewOverlay': wrapCommand(showComposerAttachmentPreviewOverlay),
15559
15117
  'Chat.terminate': terminate,