@lvce-editor/static-server 0.77.12 → 0.79.0

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 (1973) hide show
  1. package/config.json +1994 -1990
  2. package/package.json +1 -1
  3. package/static/{9d77d9c → 1751ec0}/css/App.css +106 -823
  4. package/static/1751ec0/css/parts/DebugChatDetails.css +365 -0
  5. package/static/1751ec0/css/parts/DebugChatTable.css +284 -0
  6. package/static/1751ec0/css/parts/DebugChatTimeline.css +286 -0
  7. package/static/1751ec0/css/parts/DebugChatTop.css +191 -0
  8. package/static/{9d77d9c → 1751ec0}/css/parts/Table.css +6 -0
  9. package/static/{9d77d9c → 1751ec0}/manifest.json +2 -2
  10. package/static/{9d77d9c → 1751ec0}/packages/about-view-worker/dist/aboutWorkerMain.js +3 -3
  11. package/static/{9d77d9c → 1751ec0}/packages/auth-worker/dist/authWorkerMain.js +251 -2
  12. package/static/1751ec0/packages/chat-debug-view/dist/chatDebugViewWorkerMain.js +6446 -0
  13. package/static/{9d77d9c → 1751ec0}/packages/chat-tool-worker/dist/chatToolWorkerMain.js +46 -30
  14. package/static/{9d77d9c → 1751ec0}/packages/chat-view/dist/chatViewWorkerMain.js +82 -452
  15. package/static/{9d77d9c → 1751ec0}/packages/extension-host-worker/dist/extensionHostWorkerMain.js +1452 -1429
  16. package/static/{9d77d9c → 1751ec0}/packages/opener-worker/dist/openerWorkerMain.js +105 -104
  17. package/static/{9d77d9c → 1751ec0}/packages/renderer-process/dist/rendererProcessMain.js +74 -72
  18. package/static/{9d77d9c → 1751ec0}/packages/renderer-process/package.json +1 -1
  19. package/static/{9d77d9c → 1751ec0}/packages/renderer-worker/dist/rendererWorkerMain.js +261 -193
  20. package/static/{9d77d9c → 1751ec0}/packages/test-worker/dist/testWorkerMain.js +176 -24
  21. package/static/index.html +4 -4
  22. package/static/9d77d9c/packages/chat-debug-view/dist/chatDebugViewWorkerMain.js +0 -4974
  23. /package/static/{9d77d9c → 1751ec0}/config/colorTheme.json +0 -0
  24. /package/static/{9d77d9c → 1751ec0}/config/defaultSettings.json +0 -0
  25. /package/static/{9d77d9c → 1751ec0}/config/fileMap.json +0 -0
  26. /package/static/{9d77d9c → 1751ec0}/config/webExtensions.json +0 -0
  27. /package/static/{9d77d9c → 1751ec0}/css/parts/AdditionalDetails.css +0 -0
  28. /package/static/{9d77d9c → 1751ec0}/css/parts/Animation.css +0 -0
  29. /package/static/{9d77d9c → 1751ec0}/css/parts/BrowserScrollBar.css +0 -0
  30. /package/static/{9d77d9c → 1751ec0}/css/parts/Category.css +0 -0
  31. /package/static/{9d77d9c → 1751ec0}/css/parts/DebugButtons.css +0 -0
  32. /package/static/{9d77d9c → 1751ec0}/css/parts/DebugValue.css +0 -0
  33. /package/static/{9d77d9c → 1751ec0}/css/parts/E2eTest.css +0 -0
  34. /package/static/{9d77d9c → 1751ec0}/css/parts/E2eTests.css +0 -0
  35. /package/static/{9d77d9c → 1751ec0}/css/parts/EditorHover.css +0 -0
  36. /package/static/{9d77d9c → 1751ec0}/css/parts/EditorMessage.css +0 -0
  37. /package/static/{9d77d9c → 1751ec0}/css/parts/FeatureContent.css +0 -0
  38. /package/static/{9d77d9c → 1751ec0}/css/parts/Features.css +0 -0
  39. /package/static/{9d77d9c → 1751ec0}/css/parts/ImagePreview.css +0 -0
  40. /package/static/{9d77d9c → 1751ec0}/css/parts/InlineDiffEditor.css +0 -0
  41. /package/static/{9d77d9c → 1751ec0}/css/parts/InputBadge.css +0 -0
  42. /package/static/{9d77d9c → 1751ec0}/css/parts/Key.css +0 -0
  43. /package/static/{9d77d9c → 1751ec0}/css/parts/KeyBindingsHeader.css +0 -0
  44. /package/static/{9d77d9c → 1751ec0}/css/parts/KeyBindingsTable.css +0 -0
  45. /package/static/{9d77d9c → 1751ec0}/css/parts/LegacyDialog.css +0 -0
  46. /package/static/{9d77d9c → 1751ec0}/css/parts/Markdown.css +0 -0
  47. /package/static/{9d77d9c → 1751ec0}/css/parts/Message.css +0 -0
  48. /package/static/{9d77d9c → 1751ec0}/css/parts/Preview.css +0 -0
  49. /package/static/{9d77d9c → 1751ec0}/css/parts/ScrollToTop.css +0 -0
  50. /package/static/{9d77d9c → 1751ec0}/css/parts/SettingsHeader.css +0 -0
  51. /package/static/{9d77d9c → 1751ec0}/css/parts/SettingsItems.css +0 -0
  52. /package/static/{9d77d9c → 1751ec0}/css/parts/SettingsSideBar.css +0 -0
  53. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletAbout.css +0 -0
  54. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletBrowserViewOverview.css +0 -0
  55. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletDebugConsole.css +0 -0
  56. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletDefineKeyBinding.css +0 -0
  57. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletDiffEditor.css +0 -0
  58. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletEditorWidgetError.css +0 -0
  59. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletExtensionDetail.css +0 -0
  60. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletExtensionDetailHeader.css +0 -0
  61. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletExtensionDetailTabs.css +0 -0
  62. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletExtensions.css +0 -0
  63. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletIframeInspector.css +0 -0
  64. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletKeyBindings.css +0 -0
  65. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletLanguageModels.css +0 -0
  66. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletMedia.css +0 -0
  67. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletOutput.css +0 -0
  68. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletPanel.css +0 -0
  69. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletPanelTabs.css +0 -0
  70. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletPdf.css +0 -0
  71. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletProblems.css +0 -0
  72. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletReferences.css +0 -0
  73. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletRunAndDebug.css +0 -0
  74. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletScreenCapture.css +0 -0
  75. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletSearch.css +0 -0
  76. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletSettings.css +0 -0
  77. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletSimpleBrowser.css +0 -0
  78. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletSourceControl.css +0 -0
  79. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletStorage.css +0 -0
  80. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletTerminal.css +0 -0
  81. /package/static/{9d77d9c → 1751ec0}/css/parts/ViewletTerminalTabs.css +0 -0
  82. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-bat/README.md +0 -0
  83. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-bat/extension.json +0 -0
  84. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-bat/languageConfiguration.json +0 -0
  85. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-bat/src/tokenizeBat.js +0 -0
  86. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-c/README.md +0 -0
  87. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-c/extension.json +0 -0
  88. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-c/src/tokenizeC.js +0 -0
  89. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-coffeescript/README.md +0 -0
  90. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-coffeescript/extension.json +0 -0
  91. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-coffeescript/src/tokenizeCoffeeScript.js +0 -0
  92. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-cpp/README.md +0 -0
  93. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-cpp/extension.json +0 -0
  94. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-cpp/languageConfiguration.json +0 -0
  95. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-cpp/src/tokenizeCpp.js +0 -0
  96. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-cson/README.md +0 -0
  97. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-cson/extension.json +0 -0
  98. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-cson/languageConfiguration.json +0 -0
  99. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-cson/src/tokenizeCson.js +0 -0
  100. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-css/README.md +0 -0
  101. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-css/extension.json +0 -0
  102. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-css/languageConfiguration.json +0 -0
  103. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-css/src/tokenizeCss.js +0 -0
  104. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-dart/README.md +0 -0
  105. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-dart/extension.json +0 -0
  106. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-dart/src/tokenizeDart.js +0 -0
  107. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-desktop/README.md +0 -0
  108. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-desktop/extension.json +0 -0
  109. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-desktop/src/tokenizeDesktop.js +0 -0
  110. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-docker/README.md +0 -0
  111. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-docker/extension.json +0 -0
  112. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-docker/src/tokenizeDockerfile.js +0 -0
  113. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-dotenv/README.md +0 -0
  114. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-dotenv/extension.json +0 -0
  115. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-dotenv/src/tokenizeDotenv.js +0 -0
  116. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-editorconfig/README.md +0 -0
  117. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-editorconfig/extension.json +0 -0
  118. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-editorconfig/src/tokenizeEditorConfig.js +0 -0
  119. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-elixir/README.md +0 -0
  120. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-elixir/extension.json +0 -0
  121. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-elixir/src/tokenizeElixir.js +0 -0
  122. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-elm/README.md +0 -0
  123. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-elm/extension.json +0 -0
  124. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-elm/src/tokenizeElm.js +0 -0
  125. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-gitattributes/README.md +0 -0
  126. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-gitattributes/extension.json +0 -0
  127. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-gitattributes/src/tokenizeGitAttributes.js +0 -0
  128. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-gn/README.md +0 -0
  129. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-gn/extension.json +0 -0
  130. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-gn/src/tokenizeGn.js +0 -0
  131. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-go/README.md +0 -0
  132. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-go/extension.json +0 -0
  133. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-go/src/tokenizeGo.js +0 -0
  134. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-graphql/README.md +0 -0
  135. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-graphql/extension.json +0 -0
  136. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-graphql/src/tokenizeGraphql.js +0 -0
  137. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-html/README.md +0 -0
  138. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-html/extension.json +0 -0
  139. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-html/languageConfiguration.json +0 -0
  140. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-html/src/tokenizeHtml.js +0 -0
  141. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-java/README.md +0 -0
  142. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-java/extension.json +0 -0
  143. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-java/languageConfiguration.json +0 -0
  144. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-java/src/tokenizeJava.js +0 -0
  145. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-javascript/README.md +0 -0
  146. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-javascript/extension.json +0 -0
  147. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-javascript/languageConfiguration.json +0 -0
  148. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-javascript/src/tokenizeJavaScript.js +0 -0
  149. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-json/README.md +0 -0
  150. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-json/extension.json +0 -0
  151. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-json/src/tokenizeJson.js +0 -0
  152. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-json5/README.md +0 -0
  153. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-json5/extension.json +0 -0
  154. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-json5/src/tokenizeJson5.js +0 -0
  155. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-jsx/README.md +0 -0
  156. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-jsx/extension.json +0 -0
  157. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-jsx/src/tokenizeJsx.js +0 -0
  158. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-julia/README.md +0 -0
  159. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-julia/extension.json +0 -0
  160. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-julia/src/tokenizeJulia.js +0 -0
  161. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-kotlin/README.md +0 -0
  162. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-kotlin/extension.json +0 -0
  163. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-kotlin/src/tokenizeKotlin.js +0 -0
  164. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-less/LICENSE +0 -0
  165. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-less/README.md +0 -0
  166. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-less/extension.json +0 -0
  167. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-less/languageConfiguration.json +0 -0
  168. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-less/src/tokenizeLess.js +0 -0
  169. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-markdown/README.md +0 -0
  170. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-markdown/extension.json +0 -0
  171. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-markdown/src/tokenizeMarkdown.js +0 -0
  172. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-mdx/README.md +0 -0
  173. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-mdx/extension.json +0 -0
  174. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-mdx/src/tokenizeMdx.js +0 -0
  175. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-nix/README.md +0 -0
  176. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-nix/extension.json +0 -0
  177. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-nix/languageConfiguration.json +0 -0
  178. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-nix/src/tokenizeNix.js +0 -0
  179. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-nvmrc/README.md +0 -0
  180. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-nvmrc/extension.json +0 -0
  181. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-nvmrc/src/tokenizeNvmrc.js +0 -0
  182. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-perl/README.md +0 -0
  183. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-perl/extension.json +0 -0
  184. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-perl/src/tokenizePerl.js +0 -0
  185. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-plaintext/README.md +0 -0
  186. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-plaintext/extension.json +0 -0
  187. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-plaintext/src/tokenizePlaintext.js +0 -0
  188. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-powershell/README.md +0 -0
  189. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-powershell/extension.json +0 -0
  190. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-powershell/src/tokenizePowershell.js +0 -0
  191. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-python/README.md +0 -0
  192. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-python/extension.json +0 -0
  193. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-python/languageConfiguration.json +0 -0
  194. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-python/src/tokenizePython.js +0 -0
  195. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-r/README.md +0 -0
  196. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-r/extension.json +0 -0
  197. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-r/src/tokenizeR.js +0 -0
  198. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-ruby/README.md +0 -0
  199. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-ruby/extension.json +0 -0
  200. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-ruby/src/tokenizeRuby.js +0 -0
  201. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-rust/LICENSE +0 -0
  202. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-rust/README.md +0 -0
  203. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-rust/extension.json +0 -0
  204. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-rust/languageConfiguration.json +0 -0
  205. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-rust/src/tokenizeRust.js +0 -0
  206. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-scss/README.md +0 -0
  207. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-scss/extension.json +0 -0
  208. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-scss/languageConfiguration.json +0 -0
  209. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-scss/src/tokenizeScss.js +0 -0
  210. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-shellscript/README.md +0 -0
  211. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-shellscript/extension.json +0 -0
  212. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-shellscript/src/tokenizeShellScript.js +0 -0
  213. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-svelte/README.md +0 -0
  214. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-svelte/extension.json +0 -0
  215. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-svelte/src/tokenizeSvelte.js +0 -0
  216. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-terraform/README.md +0 -0
  217. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-terraform/extension.json +0 -0
  218. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-terraform/src/tokenizeTerraform.js +0 -0
  219. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-toml/README.md +0 -0
  220. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-toml/extension.json +0 -0
  221. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-toml/src/tokenizeToml.js +0 -0
  222. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-typescript/README.md +0 -0
  223. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-typescript/extension.json +0 -0
  224. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-typescript/languageConfiguration.json +0 -0
  225. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-typescript/src/tokenizeTypeScript.js +0 -0
  226. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-vue/README.md +0 -0
  227. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-vue/extension.json +0 -0
  228. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-vue/src/tokenizeVue.js +0 -0
  229. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-wgsl/README.md +0 -0
  230. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-wgsl/extension.json +0 -0
  231. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-wgsl/languageConfiguration.json +0 -0
  232. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-wgsl/src/tokenizeWgsl.js +0 -0
  233. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-xml/README.md +0 -0
  234. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-xml/extension.json +0 -0
  235. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-xml/src/tokenizeXml.js +0 -0
  236. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-yaml/README.md +0 -0
  237. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-yaml/extension.json +0 -0
  238. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.language-basics-yaml/src/tokenizeYaml.js +0 -0
  239. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-atom-one-dark/README.md +0 -0
  240. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-atom-one-dark/color-theme.json +0 -0
  241. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-atom-one-dark/extension.json +0 -0
  242. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-atom-one-dark/images/demo.png +0 -0
  243. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-ayu/README.md +0 -0
  244. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-ayu/color-theme.json +0 -0
  245. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-ayu/extension.json +0 -0
  246. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-ayu/images/demo.png +0 -0
  247. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-cobalt2/README.md +0 -0
  248. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-cobalt2/color-theme.json +0 -0
  249. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-cobalt2/extension.json +0 -0
  250. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-cobalt2/images/demo.png +0 -0
  251. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-cobalt2/images/logo.png +0 -0
  252. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-gruvbox/README.md +0 -0
  253. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-gruvbox/color-theme.json +0 -0
  254. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-gruvbox/extension.json +0 -0
  255. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-gruvbox/images/demo.png +0 -0
  256. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-high-contrast/README.md +0 -0
  257. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-high-contrast/color-theme.json +0 -0
  258. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-high-contrast/extension.json +0 -0
  259. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-material/README.md +0 -0
  260. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-material/color-theme.json +0 -0
  261. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-material/extension.json +0 -0
  262. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-monokai/README.md +0 -0
  263. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-monokai/color-theme.json +0 -0
  264. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-monokai/extension.json +0 -0
  265. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-noctis-uva/README.md +0 -0
  266. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-noctis-uva/color-theme.json +0 -0
  267. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-noctis-uva/extension.json +0 -0
  268. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-noctis-uva/images/demo.png +0 -0
  269. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-palenight/README.md +0 -0
  270. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-palenight/color-theme.json +0 -0
  271. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-palenight/extension.json +0 -0
  272. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-palenight/images/demo.png +0 -0
  273. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-slime/README.md +0 -0
  274. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-slime/color-theme.json +0 -0
  275. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-slime/extension.json +0 -0
  276. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.theme-slime/icon.png +0 -0
  277. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/README.md +0 -0
  278. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/extension.json +0 -0
  279. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icon-theme.json +0 -0
  280. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icon.png +0 -0
  281. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/default_file.svg +0 -0
  282. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/default_folder.svg +0 -0
  283. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/default_folder_opened.svg +0 -0
  284. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/default_root_folder.svg +0 -0
  285. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/default_root_folder_opened.svg +0 -0
  286. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_access.svg +0 -0
  287. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_access2.svg +0 -0
  288. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_actionscript.svg +0 -0
  289. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_actionscript2.svg +0 -0
  290. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ada.svg +0 -0
  291. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_advpl.svg +0 -0
  292. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_affectscript.svg +0 -0
  293. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_affinity.svg +0 -0
  294. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_affinitydesigner.svg +0 -0
  295. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_affinityphoto.svg +0 -0
  296. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_affinitypublisher.svg +0 -0
  297. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_agda.svg +0 -0
  298. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_agents.svg +0 -0
  299. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ai.svg +0 -0
  300. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ai2.svg +0 -0
  301. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_al.svg +0 -0
  302. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_al_dal.svg +0 -0
  303. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_alchemy.svg +0 -0
  304. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_allcontributors.svg +0 -0
  305. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_alloy.svg +0 -0
  306. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_allure.svg +0 -0
  307. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_angular.svg +0 -0
  308. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ansible.svg +0 -0
  309. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_antlers_html.svg +0 -0
  310. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_antlr.svg +0 -0
  311. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_anyscript.svg +0 -0
  312. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_apache.svg +0 -0
  313. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_apex.svg +0 -0
  314. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_api_extractor.svg +0 -0
  315. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_apib.svg +0 -0
  316. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_apib2.svg +0 -0
  317. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_apl.svg +0 -0
  318. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_applescript.svg +0 -0
  319. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_appscript.svg +0 -0
  320. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_appsemble.svg +0 -0
  321. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_appveyor.svg +0 -0
  322. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_arduino.svg +0 -0
  323. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_asciidoc.svg +0 -0
  324. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_aseprite.svg +0 -0
  325. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_asp.svg +0 -0
  326. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_aspx.svg +0 -0
  327. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_assembly.svg +0 -0
  328. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_assembly_script.svg +0 -0
  329. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_astro.svg +0 -0
  330. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_astroconfig.svg +0 -0
  331. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_atom.svg +0 -0
  332. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ats.svg +0 -0
  333. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_attw.svg +0 -0
  334. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_audio.svg +0 -0
  335. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_aurelia.svg +0 -0
  336. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_autohotkey.svg +0 -0
  337. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_autoit.svg +0 -0
  338. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_avif.svg +0 -0
  339. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_avro.svg +0 -0
  340. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_awk.svg +0 -0
  341. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_aws.svg +0 -0
  342. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_azure.svg +0 -0
  343. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_azurepipelines.svg +0 -0
  344. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_babel.svg +0 -0
  345. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_babel2.svg +0 -0
  346. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bak.svg +0 -0
  347. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ballerina.svg +0 -0
  348. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bat.svg +0 -0
  349. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bats.svg +0 -0
  350. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bazaar.svg +0 -0
  351. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bazel.svg +0 -0
  352. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bazel_ignore.svg +0 -0
  353. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bazel_version.svg +0 -0
  354. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_befunge.svg +0 -0
  355. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bicep.svg +0 -0
  356. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_biml.svg +0 -0
  357. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_binary.svg +0 -0
  358. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_biome.svg +0 -0
  359. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bitbucketpipeline.svg +0 -0
  360. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bithound.svg +0 -0
  361. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_blade.svg +0 -0
  362. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_blender.svg +0 -0
  363. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_blitzbasic.svg +0 -0
  364. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bolt.svg +0 -0
  365. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bosque.svg +0 -0
  366. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bower.svg +0 -0
  367. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bower2.svg +0 -0
  368. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_browserslist.svg +0 -0
  369. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bruno.svg +0 -0
  370. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_buckbuild.svg +0 -0
  371. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_buf.svg +0 -0
  372. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bun.svg +0 -0
  373. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bundlemon.svg +0 -0
  374. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bundler.svg +0 -0
  375. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_bunfig.svg +0 -0
  376. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_c.svg +0 -0
  377. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_c2.svg +0 -0
  378. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_c3.svg +0 -0
  379. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_c_al.svg +0 -0
  380. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cabal.svg +0 -0
  381. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_caddy.svg +0 -0
  382. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cake.svg +0 -0
  383. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cakephp.svg +0 -0
  384. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_capacitor.svg +0 -0
  385. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_capnp.svg +0 -0
  386. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cargo.svg +0 -0
  387. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_casc.svg +0 -0
  388. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cddl.svg +0 -0
  389. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cert.svg +0 -0
  390. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ceylon.svg +0 -0
  391. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cf.svg +0 -0
  392. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cf2.svg +0 -0
  393. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cfc.svg +0 -0
  394. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cfc2.svg +0 -0
  395. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cfm.svg +0 -0
  396. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cfm2.svg +0 -0
  397. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_changie.svg +0 -0
  398. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cheader.svg +0 -0
  399. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_chef.svg +0 -0
  400. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_chef_cookbook.svg +0 -0
  401. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_circleci.svg +0 -0
  402. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_circom.svg +0 -0
  403. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_class.svg +0 -0
  404. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_claude.svg +0 -0
  405. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_clojure.svg +0 -0
  406. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_clojurescript.svg +0 -0
  407. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cloudflare.svg +0 -0
  408. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cloudfoundry.svg +0 -0
  409. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cmake.svg +0 -0
  410. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cobol.svg +0 -0
  411. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_codacy.svg +0 -0
  412. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_codeclimate.svg +0 -0
  413. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_codecov.svg +0 -0
  414. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_codekit.svg +0 -0
  415. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_codemagic.svg +0 -0
  416. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_codeowners.svg +0 -0
  417. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_codeql.svg +0 -0
  418. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_coderabbit.svg +0 -0
  419. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_coffeelint.svg +0 -0
  420. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_coffeescript.svg +0 -0
  421. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_commitizen.svg +0 -0
  422. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_commitlint.svg +0 -0
  423. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_compass.svg +0 -0
  424. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_composer.svg +0 -0
  425. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_conan.svg +0 -0
  426. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_conda.svg +0 -0
  427. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_config.svg +0 -0
  428. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_confluence.svg +0 -0
  429. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_copilot.svg +0 -0
  430. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_coverage.svg +0 -0
  431. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_coveralls.svg +0 -0
  432. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cpp.svg +0 -0
  433. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cpp2.svg +0 -0
  434. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cpp3.svg +0 -0
  435. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cppheader.svg +0 -0
  436. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_craco.svg +0 -0
  437. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_crowdin.svg +0 -0
  438. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_crystal.svg +0 -0
  439. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_csharp.svg +0 -0
  440. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_csharp2.svg +0 -0
  441. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cspell.svg +0 -0
  442. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_csproj.svg +0 -0
  443. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_css.svg +0 -0
  444. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_css2.svg +0 -0
  445. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_css2map.svg +0 -0
  446. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_csscomb.svg +0 -0
  447. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_csslint.svg +0 -0
  448. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cssmap.svg +0 -0
  449. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cucumber.svg +0 -0
  450. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cuda.svg +0 -0
  451. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cursorrules.svg +0 -0
  452. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cvs.svg +0 -0
  453. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cypress.svg +0 -0
  454. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cypress_spec.svg +0 -0
  455. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_cython.svg +0 -0
  456. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dal.svg +0 -0
  457. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_darcs.svg +0 -0
  458. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dartlang.svg +0 -0
  459. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dartlang_generated.svg +0 -0
  460. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dartlang_ignore.svg +0 -0
  461. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_datadog.svg +0 -0
  462. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_db.svg +0 -0
  463. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_debian.svg +0 -0
  464. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_delphi.svg +0 -0
  465. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_deno.svg +0 -0
  466. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_denoify.svg +0 -0
  467. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dependabot.svg +0 -0
  468. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dependencies.svg +0 -0
  469. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_design_tokens.svg +0 -0
  470. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_devcontainer.svg +0 -0
  471. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_devvit.svg +0 -0
  472. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dhall.svg +0 -0
  473. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_diff.svg +0 -0
  474. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_django.svg +0 -0
  475. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dlang.svg +0 -0
  476. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_docker.svg +0 -0
  477. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_docker2.svg +0 -0
  478. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dockertest.svg +0 -0
  479. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dockertest2.svg +0 -0
  480. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_docpad.svg +0 -0
  481. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_docusaurus.svg +0 -0
  482. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_docz.svg +0 -0
  483. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dojo.svg +0 -0
  484. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_doppler.svg +0 -0
  485. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dotenv.svg +0 -0
  486. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dotjs.svg +0 -0
  487. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_doxygen.svg +0 -0
  488. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_drawio.svg +0 -0
  489. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_drone.svg +0 -0
  490. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_drools.svg +0 -0
  491. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dtd.svg +0 -0
  492. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dune.svg +0 -0
  493. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dustjs.svg +0 -0
  494. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dvc.svg +0 -0
  495. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_dylan.svg +0 -0
  496. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_earthly.svg +0 -0
  497. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_eas-metadata.svg +0 -0
  498. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_edge.svg +0 -0
  499. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_edge2.svg +0 -0
  500. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_editorconfig.svg +0 -0
  501. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_eex.svg +0 -0
  502. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ejs.svg +0 -0
  503. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_elastic.svg +0 -0
  504. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_elasticbeanstalk.svg +0 -0
  505. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_electron.svg +0 -0
  506. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_eleventy.svg +0 -0
  507. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_eleventy2.svg +0 -0
  508. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_elixir.svg +0 -0
  509. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_elm.svg +0 -0
  510. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_elm2.svg +0 -0
  511. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_emacs.svg +0 -0
  512. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ember.svg +0 -0
  513. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ensime.svg +0 -0
  514. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_eps.svg +0 -0
  515. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_epub.svg +0 -0
  516. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_erb.svg +0 -0
  517. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_erlang.svg +0 -0
  518. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_erlang2.svg +0 -0
  519. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_esbuild.svg +0 -0
  520. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_eslint.svg +0 -0
  521. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_eslint2.svg +0 -0
  522. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_esphome.svg +0 -0
  523. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_excalidraw.svg +0 -0
  524. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_excel.svg +0 -0
  525. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_excel2.svg +0 -0
  526. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_expo.svg +0 -0
  527. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_falcon.svg +0 -0
  528. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fantasticon.svg +0 -0
  529. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fastly.svg +0 -0
  530. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fauna.svg +0 -0
  531. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_favicon.svg +0 -0
  532. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fbx.svg +0 -0
  533. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_firebase.svg +0 -0
  534. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_firebasehosting.svg +0 -0
  535. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_firebasestorage.svg +0 -0
  536. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_firestore.svg +0 -0
  537. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fitbit.svg +0 -0
  538. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fla.svg +0 -0
  539. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_flareact.svg +0 -0
  540. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_flash.svg +0 -0
  541. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_floobits.svg +0 -0
  542. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_flow.svg +0 -0
  543. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_flutter.svg +0 -0
  544. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_flutter_package.svg +0 -0
  545. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_flyio.svg +0 -0
  546. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_font.svg +0 -0
  547. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_formkit.svg +0 -0
  548. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fortran.svg +0 -0
  549. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fossa.svg +0 -0
  550. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fossil.svg +0 -0
  551. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_freemarker.svg +0 -0
  552. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_frontcommerce.svg +0 -0
  553. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fsharp.svg +0 -0
  554. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fsharp2.svg +0 -0
  555. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fsproj.svg +0 -0
  556. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fthtml.svg +0 -0
  557. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_funding.svg +0 -0
  558. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_fusebox.svg +0 -0
  559. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_galen.svg +0 -0
  560. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_galen2.svg +0 -0
  561. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gamemaker.svg +0 -0
  562. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gamemaker2.svg +0 -0
  563. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gamemaker81.svg +0 -0
  564. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gatsby.svg +0 -0
  565. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gcloud.svg +0 -0
  566. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gcode.svg +0 -0
  567. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gdscript.svg +0 -0
  568. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gduid.svg +0 -0
  569. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gemini.svg +0 -0
  570. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_genstat.svg +0 -0
  571. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_geojson.svg +0 -0
  572. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gimp.svg +0 -0
  573. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_git.svg +0 -0
  574. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_git2.svg +0 -0
  575. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gitlab.svg +0 -0
  576. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gitpod.svg +0 -0
  577. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gleam.svg +0 -0
  578. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gleamconfig.svg +0 -0
  579. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_glide.svg +0 -0
  580. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_glimmer.svg +0 -0
  581. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_glitter.svg +0 -0
  582. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_glsl.svg +0 -0
  583. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gltf.svg +0 -0
  584. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_glyphs.svg +0 -0
  585. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gnu.svg +0 -0
  586. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gnuplot.svg +0 -0
  587. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_go.svg +0 -0
  588. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_go_aqua.svg +0 -0
  589. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_go_black.svg +0 -0
  590. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_go_fuchsia.svg +0 -0
  591. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_go_gopher.svg +0 -0
  592. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_go_lightblue.svg +0 -0
  593. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_go_package.svg +0 -0
  594. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_go_white.svg +0 -0
  595. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_go_work.svg +0 -0
  596. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_go_yellow.svg +0 -0
  597. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_goctl.svg +0 -0
  598. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_godot.svg +0 -0
  599. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gpg.svg +0 -0
  600. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gradle.svg +0 -0
  601. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gradle2.svg +0 -0
  602. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_grain.svg +0 -0
  603. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_graphql.svg +0 -0
  604. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_graphql_config.svg +0 -0
  605. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_graphviz.svg +0 -0
  606. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_greenkeeper.svg +0 -0
  607. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gridsome.svg +0 -0
  608. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_grit.svg +0 -0
  609. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_groovy.svg +0 -0
  610. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_groovy2.svg +0 -0
  611. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_grunt.svg +0 -0
  612. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_gulp.svg +0 -0
  613. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_haml.svg +0 -0
  614. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_handlebars.svg +0 -0
  615. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_handlebars2.svg +0 -0
  616. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_harbour.svg +0 -0
  617. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_hardhat.svg +0 -0
  618. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_hashicorp.svg +0 -0
  619. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_haskell.svg +0 -0
  620. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_haskell2.svg +0 -0
  621. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_haxe.svg +0 -0
  622. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_haxecheckstyle.svg +0 -0
  623. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_haxedevelop.svg +0 -0
  624. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_helix.svg +0 -0
  625. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_helm.svg +0 -0
  626. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_histoire.svg +0 -0
  627. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_hjson.svg +0 -0
  628. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_hlsl.svg +0 -0
  629. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_homeassistant.svg +0 -0
  630. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_horusec.svg +0 -0
  631. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_host.svg +0 -0
  632. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_html.svg +0 -0
  633. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_htmlhint.svg +0 -0
  634. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_htmlvalidate.svg +0 -0
  635. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_http.svg +0 -0
  636. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_hugo.svg +0 -0
  637. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_humanstxt.svg +0 -0
  638. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_hunspell.svg +0 -0
  639. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_husky.svg +0 -0
  640. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_hy.svg +0 -0
  641. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_hygen.svg +0 -0
  642. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_hypr.svg +0 -0
  643. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_icl.svg +0 -0
  644. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_idris.svg +0 -0
  645. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_idrisbin.svg +0 -0
  646. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_idrispkg.svg +0 -0
  647. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_image.svg +0 -0
  648. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_imba.svg +0 -0
  649. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_inc.svg +0 -0
  650. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_infopath.svg +0 -0
  651. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_informix.svg +0 -0
  652. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ini.svg +0 -0
  653. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ink.svg +0 -0
  654. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_innosetup.svg +0 -0
  655. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_io.svg +0 -0
  656. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_iodine.svg +0 -0
  657. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ionic.svg +0 -0
  658. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jake.svg +0 -0
  659. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_janet.svg +0 -0
  660. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jar.svg +0 -0
  661. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jasmine.svg +0 -0
  662. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_java.svg +0 -0
  663. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jbuilder.svg +0 -0
  664. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jekyll.svg +0 -0
  665. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jenkins.svg +0 -0
  666. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jest.svg +0 -0
  667. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jest_snapshot.svg +0 -0
  668. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jetbrains.svg +0 -0
  669. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jinja.svg +0 -0
  670. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jpm.svg +0 -0
  671. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_js.svg +0 -0
  672. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_js_official.svg +0 -0
  673. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jsbeautify.svg +0 -0
  674. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jsconfig.svg +0 -0
  675. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jscpd.svg +0 -0
  676. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jshint.svg +0 -0
  677. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jsmap.svg +0 -0
  678. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_json.svg +0 -0
  679. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_json2.svg +0 -0
  680. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_json5.svg +0 -0
  681. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_json_official.svg +0 -0
  682. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_json_schema.svg +0 -0
  683. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jsonld.svg +0 -0
  684. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jsonnet.svg +0 -0
  685. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jsp.svg +0 -0
  686. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jsr.svg +0 -0
  687. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jss.svg +0 -0
  688. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_juice.svg +0 -0
  689. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_julia.svg +0 -0
  690. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_julia2.svg +0 -0
  691. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_jupyter.svg +0 -0
  692. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_just.svg +0 -0
  693. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_k.svg +0 -0
  694. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_karma.svg +0 -0
  695. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_key.svg +0 -0
  696. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_kitchenci.svg +0 -0
  697. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_kite.svg +0 -0
  698. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_kivy.svg +0 -0
  699. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_knip.svg +0 -0
  700. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_kos.svg +0 -0
  701. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_kotlin.svg +0 -0
  702. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_kusto.svg +0 -0
  703. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_language_configuration.svg +0 -0
  704. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lark.svg +0 -0
  705. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_latino.svg +0 -0
  706. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_layout.svg +0 -0
  707. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lean.svg +0 -0
  708. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_leanconfig.svg +0 -0
  709. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lefthook.svg +0 -0
  710. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lerna.svg +0 -0
  711. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_less.svg +0 -0
  712. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lex.svg +0 -0
  713. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_liara.svg +0 -0
  714. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_base.svg +0 -0
  715. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_calc.svg +0 -0
  716. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_draw.svg +0 -0
  717. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_impress.svg +0 -0
  718. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_math.svg +0 -0
  719. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_writer.svg +0 -0
  720. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_license.svg +0 -0
  721. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_licensebat.svg +0 -0
  722. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_actionscript2.svg +0 -0
  723. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_ada.svg +0 -0
  724. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_agda.svg +0 -0
  725. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_agents.svg +0 -0
  726. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_apl.svg +0 -0
  727. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_astro.svg +0 -0
  728. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_astroconfig.svg +0 -0
  729. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_babel.svg +0 -0
  730. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_babel2.svg +0 -0
  731. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_cabal.svg +0 -0
  732. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_circleci.svg +0 -0
  733. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_cloudfoundry.svg +0 -0
  734. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_codacy.svg +0 -0
  735. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_codeclimate.svg +0 -0
  736. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_codeowners.svg +0 -0
  737. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_config.svg +0 -0
  738. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_copilot.svg +0 -0
  739. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_crystal.svg +0 -0
  740. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_cypress.svg +0 -0
  741. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_cypress_spec.svg +0 -0
  742. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_db.svg +0 -0
  743. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_deno.svg +0 -0
  744. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_dhall.svg +0 -0
  745. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_docpad.svg +0 -0
  746. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_drone.svg +0 -0
  747. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_eas-metadata.svg +0 -0
  748. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy.svg +0 -0
  749. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy2.svg +0 -0
  750. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_esphome.svg +0 -0
  751. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_expo.svg +0 -0
  752. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_firebasehosting.svg +0 -0
  753. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_fla.svg +0 -0
  754. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_font.svg +0 -0
  755. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_gamemaker2.svg +0 -0
  756. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_gradle.svg +0 -0
  757. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_hashicorp.svg +0 -0
  758. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_hjson.svg +0 -0
  759. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_ini.svg +0 -0
  760. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_io.svg +0 -0
  761. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_js.svg +0 -0
  762. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_jsconfig.svg +0 -0
  763. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_jsmap.svg +0 -0
  764. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_json.svg +0 -0
  765. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_json5.svg +0 -0
  766. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_json_schema.svg +0 -0
  767. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_jsonld.svg +0 -0
  768. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_kite.svg +0 -0
  769. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_lark.svg +0 -0
  770. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_lean.svg +0 -0
  771. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_leanconfig.svg +0 -0
  772. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_lerna.svg +0 -0
  773. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_mailing.svg +0 -0
  774. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_markuplint.svg +0 -0
  775. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_mcp.svg +0 -0
  776. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_mdx-components.svg +0 -0
  777. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_mdx.svg +0 -0
  778. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_mlang.svg +0 -0
  779. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_mustache.svg +0 -0
  780. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_mypy.svg +0 -0
  781. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_neo4j.svg +0 -0
  782. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_netlify.svg +0 -0
  783. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_next.svg +0 -0
  784. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_nim.svg +0 -0
  785. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_nx.svg +0 -0
  786. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_objidconfig.svg +0 -0
  787. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_openHAB.svg +0 -0
  788. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_packship.svg +0 -0
  789. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_pcl.svg +0 -0
  790. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_pnpm.svg +0 -0
  791. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_prettier.svg +0 -0
  792. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_prisma.svg +0 -0
  793. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_purescript.svg +0 -0
  794. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_quasar.svg +0 -0
  795. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_raku.svg +0 -0
  796. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_razzle.svg +0 -0
  797. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_reactrouter.svg +0 -0
  798. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_rehype.svg +0 -0
  799. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_remark.svg +0 -0
  800. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_replit.svg +0 -0
  801. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_retext.svg +0 -0
  802. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_rome.svg +0 -0
  803. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_rubocop.svg +0 -0
  804. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_rust.svg +0 -0
  805. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_rust_toolchain.svg +0 -0
  806. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_safetensors.svg +0 -0
  807. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_shadcn.svg +0 -0
  808. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_shaderlab.svg +0 -0
  809. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_solidity.svg +0 -0
  810. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_spin.svg +0 -0
  811. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_stylelint.svg +0 -0
  812. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_stylus.svg +0 -0
  813. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_symfony.svg +0 -0
  814. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_systemd.svg +0 -0
  815. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_systemverilog.svg +0 -0
  816. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_testcafe.svg +0 -0
  817. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_testjs.svg +0 -0
  818. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_tex.svg +0 -0
  819. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_tm.svg +0 -0
  820. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_tmux.svg +0 -0
  821. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_todo.svg +0 -0
  822. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_toit.svg +0 -0
  823. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_toml.svg +0 -0
  824. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_toon.svg +0 -0
  825. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_tree.svg +0 -0
  826. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_turbo.svg +0 -0
  827. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_unibeautify.svg +0 -0
  828. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_vash.svg +0 -0
  829. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_vercel.svg +0 -0
  830. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_vsix.svg +0 -0
  831. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_vsixmanifest.svg +0 -0
  832. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_xfl.svg +0 -0
  833. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_xorg.svg +0 -0
  834. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_yaml.svg +0 -0
  835. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_yaml_official.svg +0 -0
  836. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_light_zeit.svg +0 -0
  837. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lighthouse.svg +0 -0
  838. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lilypond.svg +0 -0
  839. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lime.svg +0 -0
  840. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lintstagedrc.svg +0 -0
  841. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_liquid.svg +0 -0
  842. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lisp.svg +0 -0
  843. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_livescript.svg +0 -0
  844. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lnk.svg +0 -0
  845. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_locale.svg +0 -0
  846. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_log.svg +0 -0
  847. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lolcode.svg +0 -0
  848. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lsl.svg +0 -0
  849. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lua.svg +0 -0
  850. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_luau.svg +0 -0
  851. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_lync.svg +0 -0
  852. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mailing.svg +0 -0
  853. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_makefile.svg +0 -0
  854. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_manifest.svg +0 -0
  855. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_manifest_bak.svg +0 -0
  856. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_manifest_skip.svg +0 -0
  857. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_map.svg +0 -0
  858. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mariadb.svg +0 -0
  859. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_markdown.svg +0 -0
  860. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_markdownlint.svg +0 -0
  861. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_markdownlint_ignore.svg +0 -0
  862. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_marko.svg +0 -0
  863. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_markojs.svg +0 -0
  864. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_markuplint.svg +0 -0
  865. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_master-co.svg +0 -0
  866. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_matlab.svg +0 -0
  867. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_maven.svg +0 -0
  868. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_maxscript.svg +0 -0
  869. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_maya.svg +0 -0
  870. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mcp.svg +0 -0
  871. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mdx-components.svg +0 -0
  872. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mdx.svg +0 -0
  873. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mdxlint.svg +0 -0
  874. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mediawiki.svg +0 -0
  875. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mercurial.svg +0 -0
  876. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mermaid.svg +0 -0
  877. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_meson.svg +0 -0
  878. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_metal.svg +0 -0
  879. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_meteor.svg +0 -0
  880. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_minecraft.svg +0 -0
  881. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mivascript.svg +0 -0
  882. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mjml.svg +0 -0
  883. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mlang.svg +0 -0
  884. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mocha.svg +0 -0
  885. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_modernizr.svg +0 -0
  886. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mojo.svg +0 -0
  887. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mojolicious.svg +0 -0
  888. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_moleculer.svg +0 -0
  889. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mondoo.svg +0 -0
  890. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mongo.svg +0 -0
  891. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_monotone.svg +0 -0
  892. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_motif.svg +0 -0
  893. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mson.svg +0 -0
  894. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mustache.svg +0 -0
  895. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mvt.svg +0 -0
  896. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mvtcss.svg +0 -0
  897. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mvtjs.svg +0 -0
  898. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mypy.svg +0 -0
  899. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_mysql.svg +0 -0
  900. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nanostaged.svg +0 -0
  901. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ndst.svg +0 -0
  902. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nearly.svg +0 -0
  903. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_neo4j.svg +0 -0
  904. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_js.svg +0 -0
  905. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_ts.svg +0 -0
  906. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_js.svg +0 -0
  907. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_ts.svg +0 -0
  908. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_js.svg +0 -0
  909. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_ts.svg +0 -0
  910. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_js.svg +0 -0
  911. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_ts.svg +0 -0
  912. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_js.svg +0 -0
  913. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_ts.svg +0 -0
  914. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_js.svg +0 -0
  915. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_ts.svg +0 -0
  916. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_js.svg +0 -0
  917. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_ts.svg +0 -0
  918. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_js.svg +0 -0
  919. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_ts.svg +0 -0
  920. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_module_js.svg +0 -0
  921. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_module_ts.svg +0 -0
  922. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_js.svg +0 -0
  923. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_ts.svg +0 -0
  924. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_service_js.svg +0 -0
  925. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nest_service_ts.svg +0 -0
  926. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nestjs.svg +0 -0
  927. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_netlify.svg +0 -0
  928. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_next.svg +0 -0
  929. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nextflow.svg +0 -0
  930. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_css.svg +0 -0
  931. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_dart.svg +0 -0
  932. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_html.svg +0 -0
  933. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js.svg +0 -0
  934. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js2.svg +0 -0
  935. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_less.svg +0 -0
  936. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_sass.svg +0 -0
  937. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_scss.svg +0 -0
  938. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts.svg +0 -0
  939. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts2.svg +0 -0
  940. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_js.svg +0 -0
  941. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_ts.svg +0 -0
  942. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_dart.svg +0 -0
  943. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js.svg +0 -0
  944. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js2.svg +0 -0
  945. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts.svg +0 -0
  946. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts2.svg +0 -0
  947. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_dart.svg +0 -0
  948. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_js.svg +0 -0
  949. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_ts.svg +0 -0
  950. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_dart.svg +0 -0
  951. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_js.svg +0 -0
  952. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_ts.svg +0 -0
  953. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_module_dart.svg +0 -0
  954. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js.svg +0 -0
  955. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js2.svg +0 -0
  956. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts.svg +0 -0
  957. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts2.svg +0 -0
  958. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_dart.svg +0 -0
  959. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js.svg +0 -0
  960. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js2.svg +0 -0
  961. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts.svg +0 -0
  962. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts2.svg +0 -0
  963. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_dart.svg +0 -0
  964. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js.svg +0 -0
  965. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js2.svg +0 -0
  966. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts.svg +0 -0
  967. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts2.svg +0 -0
  968. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_service_dart.svg +0 -0
  969. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js.svg +0 -0
  970. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js2.svg +0 -0
  971. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts.svg +0 -0
  972. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts2.svg +0 -0
  973. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_dart.svg +0 -0
  974. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js.svg +0 -0
  975. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js2.svg +0 -0
  976. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts.svg +0 -0
  977. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts2.svg +0 -0
  978. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ng_tailwind.svg +0 -0
  979. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nginx.svg +0 -0
  980. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nim.svg +0 -0
  981. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nimble.svg +0 -0
  982. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ninja.svg +0 -0
  983. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nix.svg +0 -0
  984. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_njsproj.svg +0 -0
  985. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_noc.svg +0 -0
  986. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_node.svg +0 -0
  987. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_node2.svg +0 -0
  988. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nodemon.svg +0 -0
  989. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_npm.svg +0 -0
  990. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_npmpackagejsonlint.svg +0 -0
  991. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nsi.svg +0 -0
  992. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nsri-integrity.svg +0 -0
  993. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nsri.svg +0 -0
  994. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nuget.svg +0 -0
  995. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_numpy.svg +0 -0
  996. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nunjucks.svg +0 -0
  997. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nushell.svg +0 -0
  998. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nuxt.svg +0 -0
  999. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nx.svg +0 -0
  1000. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_nyc.svg +0 -0
  1001. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_objectivec.svg +0 -0
  1002. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_objectivecpp.svg +0 -0
  1003. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_objidconfig.svg +0 -0
  1004. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ocaml.svg +0 -0
  1005. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ocaml_intf.svg +0 -0
  1006. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ogone.svg +0 -0
  1007. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_onenote.svg +0 -0
  1008. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_opam.svg +0 -0
  1009. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_openHAB.svg +0 -0
  1010. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_opencl.svg +0 -0
  1011. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_openscad.svg +0 -0
  1012. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_opentofu.svg +0 -0
  1013. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_org.svg +0 -0
  1014. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_outlook.svg +0 -0
  1015. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ovpn.svg +0 -0
  1016. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_oxc.svg +0 -0
  1017. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_oxlint.svg +0 -0
  1018. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_package.svg +0 -0
  1019. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_packship.svg +0 -0
  1020. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_paket.svg +0 -0
  1021. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pandacss.svg +0 -0
  1022. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_patch.svg +0 -0
  1023. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pcl.svg +0 -0
  1024. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pddl.svg +0 -0
  1025. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pddl_happenings.svg +0 -0
  1026. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pddl_plan.svg +0 -0
  1027. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pdf.svg +0 -0
  1028. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pdf2.svg +0 -0
  1029. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pdm.svg +0 -0
  1030. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_peeky.svg +0 -0
  1031. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_perl.svg +0 -0
  1032. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_perl2.svg +0 -0
  1033. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_perl6.svg +0 -0
  1034. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pgsql.svg +0 -0
  1035. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_photoshop.svg +0 -0
  1036. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_photoshop2.svg +0 -0
  1037. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_php.svg +0 -0
  1038. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_php2.svg +0 -0
  1039. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_php3.svg +0 -0
  1040. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_phpcsfixer.svg +0 -0
  1041. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_phpstan.svg +0 -0
  1042. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_phpunit.svg +0 -0
  1043. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_phraseapp.svg +0 -0
  1044. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pine.svg +0 -0
  1045. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pip.svg +0 -0
  1046. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pipeline.svg +0 -0
  1047. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_plantuml.svg +0 -0
  1048. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_platformio.svg +0 -0
  1049. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_playwright.svg +0 -0
  1050. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_plsql.svg +0 -0
  1051. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_plsql_package.svg +0 -0
  1052. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_body.svg +0 -0
  1053. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_header.svg +0 -0
  1054. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_spec.svg +0 -0
  1055. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pm2.svg +0 -0
  1056. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pnpm.svg +0 -0
  1057. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_poedit.svg +0 -0
  1058. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_poetry.svg +0 -0
  1059. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_polyglot.svg +0 -0
  1060. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_polymer.svg +0 -0
  1061. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pony.svg +0 -0
  1062. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_postcss.svg +0 -0
  1063. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_postcssconfig.svg +0 -0
  1064. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_postman.svg +0 -0
  1065. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_powerpoint.svg +0 -0
  1066. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_powerpoint2.svg +0 -0
  1067. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_powershell.svg +0 -0
  1068. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_powershell2.svg +0 -0
  1069. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_powershell_format.svg +0 -0
  1070. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd.svg +0 -0
  1071. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd2.svg +0 -0
  1072. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm.svg +0 -0
  1073. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm2.svg +0 -0
  1074. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_powershell_types.svg +0 -0
  1075. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_preact.svg +0 -0
  1076. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_precommit.svg +0 -0
  1077. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_prettier.svg +0 -0
  1078. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_prisma.svg +0 -0
  1079. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_prismaconfig.svg +0 -0
  1080. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_processinglang.svg +0 -0
  1081. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_procfile.svg +0 -0
  1082. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_progress.svg +0 -0
  1083. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_prolog.svg +0 -0
  1084. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_prometheus.svg +0 -0
  1085. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_protobuf.svg +0 -0
  1086. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_protractor.svg +0 -0
  1087. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_publiccode.svg +0 -0
  1088. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_publisher.svg +0 -0
  1089. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pug.svg +0 -0
  1090. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pulumi.svg +0 -0
  1091. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_puppet.svg +0 -0
  1092. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_purescript.svg +0 -0
  1093. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_purgecss.svg +0 -0
  1094. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pyenv.svg +0 -0
  1095. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pyret.svg +0 -0
  1096. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pyscript.svg +0 -0
  1097. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pytest.svg +0 -0
  1098. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_python.svg +0 -0
  1099. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pythowo.svg +0 -0
  1100. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pytyped.svg +0 -0
  1101. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_pyup.svg +0 -0
  1102. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_q.svg +0 -0
  1103. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_qbs.svg +0 -0
  1104. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_qlikview.svg +0 -0
  1105. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_qml.svg +0 -0
  1106. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_qmldir.svg +0 -0
  1107. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_qsharp.svg +0 -0
  1108. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_quasar.svg +0 -0
  1109. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_r.svg +0 -0
  1110. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ra_syntax_tree.svg +0 -0
  1111. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_racket.svg +0 -0
  1112. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rails.svg +0 -0
  1113. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rake.svg +0 -0
  1114. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_raku.svg +0 -0
  1115. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_raml.svg +0 -0
  1116. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_razor.svg +0 -0
  1117. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_razzle.svg +0 -0
  1118. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_reactjs.svg +0 -0
  1119. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_reactrouter.svg +0 -0
  1120. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_reacttemplate.svg +0 -0
  1121. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_reactts.svg +0 -0
  1122. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_reason.svg +0 -0
  1123. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_red.svg +0 -0
  1124. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_registry.svg +0 -0
  1125. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rego.svg +0 -0
  1126. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rehype.svg +0 -0
  1127. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_remark.svg +0 -0
  1128. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_renovate.svg +0 -0
  1129. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_replit.svg +0 -0
  1130. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rescript.svg +0 -0
  1131. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rest.svg +0 -0
  1132. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_retext.svg +0 -0
  1133. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rexx.svg +0 -0
  1134. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_riot.svg +0 -0
  1135. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ripple.svg +0 -0
  1136. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rmd.svg +0 -0
  1137. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rnc.svg +0 -0
  1138. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_robotframework.svg +0 -0
  1139. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_robots.svg +0 -0
  1140. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rolldown.svg +0 -0
  1141. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rollup.svg +0 -0
  1142. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rome.svg +0 -0
  1143. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ron.svg +0 -0
  1144. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rproj.svg +0 -0
  1145. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rspec.svg +0 -0
  1146. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rss.svg +0 -0
  1147. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rubocop.svg +0 -0
  1148. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ruby.svg +0 -0
  1149. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rust.svg +0 -0
  1150. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_rust_toolchain.svg +0 -0
  1151. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_s-lang.svg +0 -0
  1152. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_safetensors.svg +0 -0
  1153. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sails.svg +0 -0
  1154. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_saltstack.svg +0 -0
  1155. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_san.svg +0 -0
  1156. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sapphire_framework_cli.svg +0 -0
  1157. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sas.svg +0 -0
  1158. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sass.svg +0 -0
  1159. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sbt.svg +0 -0
  1160. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_scala.svg +0 -0
  1161. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_scilab.svg +0 -0
  1162. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_script.svg +0 -0
  1163. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_scss.svg +0 -0
  1164. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_scss2.svg +0 -0
  1165. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sdlang.svg +0 -0
  1166. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_search_result.svg +0 -0
  1167. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_seedkit.svg +0 -0
  1168. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sentry.svg +0 -0
  1169. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sequelize.svg +0 -0
  1170. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_serverless.svg +0 -0
  1171. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_shadcn.svg +0 -0
  1172. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_shaderlab.svg +0 -0
  1173. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_shell.svg +0 -0
  1174. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_shellcheck.svg +0 -0
  1175. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_shuttle.svg +0 -0
  1176. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_silverstripe.svg +0 -0
  1177. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sino.svg +0 -0
  1178. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sitemap.svg +0 -0
  1179. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_siyuan.svg +0 -0
  1180. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sketch.svg +0 -0
  1181. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_skipper.svg +0 -0
  1182. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_slang.svg +0 -0
  1183. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_slashup.svg +0 -0
  1184. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_slice.svg +0 -0
  1185. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_slim.svg +0 -0
  1186. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_slint.svg +0 -0
  1187. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sln.svg +0 -0
  1188. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sln2.svg +0 -0
  1189. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_smarty.svg +0 -0
  1190. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_smithery.svg +0 -0
  1191. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_snakemake.svg +0 -0
  1192. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_snapcraft.svg +0 -0
  1193. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_snaplet.svg +0 -0
  1194. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_snort.svg +0 -0
  1195. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_snyk.svg +0 -0
  1196. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_solidarity.svg +0 -0
  1197. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_solidity.svg +0 -0
  1198. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_source.svg +0 -0
  1199. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_spacengine.svg +0 -0
  1200. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sparql.svg +0 -0
  1201. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_spin.svg +0 -0
  1202. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sqf.svg +0 -0
  1203. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sql.svg +0 -0
  1204. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sqlite.svg +0 -0
  1205. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_squirrel.svg +0 -0
  1206. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sss.svg +0 -0
  1207. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sst.svg +0 -0
  1208. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_stackblitz.svg +0 -0
  1209. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_stan.svg +0 -0
  1210. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_stata.svg +0 -0
  1211. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_stencil.svg +0 -0
  1212. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_storyboard.svg +0 -0
  1213. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_storybook.svg +0 -0
  1214. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_stryker.svg +0 -0
  1215. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_stylable.svg +0 -0
  1216. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_style.svg +0 -0
  1217. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_styled.svg +0 -0
  1218. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_stylelint.svg +0 -0
  1219. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_stylish_haskell.svg +0 -0
  1220. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_stylus.svg +0 -0
  1221. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_sublime.svg +0 -0
  1222. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_subversion.svg +0 -0
  1223. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_svelte.svg +0 -0
  1224. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_svelteconfig.svg +0 -0
  1225. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_svg.svg +0 -0
  1226. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_svgo.svg +0 -0
  1227. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_swagger.svg +0 -0
  1228. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_swc.svg +0 -0
  1229. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_swift.svg +0 -0
  1230. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_swig.svg +0 -0
  1231. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_symfony.svg +0 -0
  1232. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_syncpack.svg +0 -0
  1233. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_systemd.svg +0 -0
  1234. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_systemverilog.svg +0 -0
  1235. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_t4tt.svg +0 -0
  1236. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tailwind.svg +0 -0
  1237. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tamagui.svg +0 -0
  1238. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_taplo.svg +0 -0
  1239. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_taskfile.svg +0 -0
  1240. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tauri.svg +0 -0
  1241. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tcl.svg +0 -0
  1242. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_teal.svg +0 -0
  1243. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_templ.svg +0 -0
  1244. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tera.svg +0 -0
  1245. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_terraform.svg +0 -0
  1246. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_test.svg +0 -0
  1247. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_testcafe.svg +0 -0
  1248. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_testjs.svg +0 -0
  1249. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_testplane.svg +0 -0
  1250. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_testts.svg +0 -0
  1251. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tex.svg +0 -0
  1252. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_text.svg +0 -0
  1253. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_textile.svg +0 -0
  1254. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tfs.svg +0 -0
  1255. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tiltfile.svg +0 -0
  1256. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tm.svg +0 -0
  1257. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tmux.svg +0 -0
  1258. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_todo.svg +0 -0
  1259. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_toit.svg +0 -0
  1260. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_toml.svg +0 -0
  1261. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_toon.svg +0 -0
  1262. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tox.svg +0 -0
  1263. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_travis.svg +0 -0
  1264. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tree.svg +0 -0
  1265. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tres.svg +0 -0
  1266. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_truffle.svg +0 -0
  1267. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_trunk.svg +0 -0
  1268. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tsbuildinfo.svg +0 -0
  1269. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tscn.svg +0 -0
  1270. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tsconfig.svg +0 -0
  1271. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tsconfig_official.svg +0 -0
  1272. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tsdoc.svg +0 -0
  1273. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tsdown.svg +0 -0
  1274. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tslint.svg +0 -0
  1275. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tt.svg +0 -0
  1276. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_ttcn.svg +0 -0
  1277. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_tuc.svg +0 -0
  1278. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_turbo.svg +0 -0
  1279. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_twig.svg +0 -0
  1280. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_typedoc.svg +0 -0
  1281. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_typescript.svg +0 -0
  1282. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_typescript_official.svg +0 -0
  1283. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef.svg +0 -0
  1284. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef_official.svg +0 -0
  1285. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_typo3.svg +0 -0
  1286. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_uiua.svg +0 -0
  1287. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_unibeautify.svg +0 -0
  1288. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_unison.svg +0 -0
  1289. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_unlicense.svg +0 -0
  1290. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_unocss.svg +0 -0
  1291. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_uv.svg +0 -0
  1292. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vagrant.svg +0 -0
  1293. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vala.svg +0 -0
  1294. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vanilla_extract.svg +0 -0
  1295. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vapi.svg +0 -0
  1296. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vapor.svg +0 -0
  1297. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vash.svg +0 -0
  1298. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vb.svg +0 -0
  1299. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vba.svg +0 -0
  1300. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vbhtml.svg +0 -0
  1301. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vbproj.svg +0 -0
  1302. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vcxproj.svg +0 -0
  1303. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_velocity.svg +0 -0
  1304. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vento.svg +0 -0
  1305. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vercel.svg +0 -0
  1306. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_verilog.svg +0 -0
  1307. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vhdl.svg +0 -0
  1308. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_video.svg +0 -0
  1309. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_view.svg +0 -0
  1310. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vim.svg +0 -0
  1311. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vite.svg +0 -0
  1312. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vitest.svg +0 -0
  1313. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vlang.svg +0 -0
  1314. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_volt.svg +0 -0
  1315. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vroom.svg +0 -0
  1316. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vscode-insiders.svg +0 -0
  1317. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vscode.svg +0 -0
  1318. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vscode2.svg +0 -0
  1319. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vscode3.svg +0 -0
  1320. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vscode_test.svg +0 -0
  1321. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vsix.svg +0 -0
  1322. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vsixmanifest.svg +0 -0
  1323. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vue.svg +0 -0
  1324. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vueconfig.svg +0 -0
  1325. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vvvvvv.svg +0 -0
  1326. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_vyper.svg +0 -0
  1327. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wallaby.svg +0 -0
  1328. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wally.svg +0 -0
  1329. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wasm.svg +0 -0
  1330. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_watchmanconfig.svg +0 -0
  1331. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wdio.svg +0 -0
  1332. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_weblate.svg +0 -0
  1333. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_webpack.svg +0 -0
  1334. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wenyan.svg +0 -0
  1335. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wercker.svg +0 -0
  1336. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wgsl.svg +0 -0
  1337. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wikitext.svg +0 -0
  1338. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_windi.svg +0 -0
  1339. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wit.svg +0 -0
  1340. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wolfram.svg +0 -0
  1341. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_word.svg +0 -0
  1342. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_word2.svg +0 -0
  1343. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wpml.svg +0 -0
  1344. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wurst.svg +0 -0
  1345. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wxml.svg +0 -0
  1346. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wxss.svg +0 -0
  1347. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_wxt.svg +0 -0
  1348. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_xaml.svg +0 -0
  1349. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_xcode.svg +0 -0
  1350. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_xfl.svg +0 -0
  1351. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_xib.svg +0 -0
  1352. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_xliff.svg +0 -0
  1353. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_xmake.svg +0 -0
  1354. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_xml.svg +0 -0
  1355. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_xo.svg +0 -0
  1356. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_xorg.svg +0 -0
  1357. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_xquery.svg +0 -0
  1358. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_xsl.svg +0 -0
  1359. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_yacc.svg +0 -0
  1360. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_yaml.svg +0 -0
  1361. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_yaml_official.svg +0 -0
  1362. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_yamllint.svg +0 -0
  1363. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_yandex.svg +0 -0
  1364. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_yang.svg +0 -0
  1365. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_yarn.svg +0 -0
  1366. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_yeoman.svg +0 -0
  1367. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_zeit.svg +0 -0
  1368. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_zig.svg +0 -0
  1369. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_zip.svg +0 -0
  1370. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/file_type_zip2.svg +0 -0
  1371. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_android.svg +0 -0
  1372. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_android_opened.svg +0 -0
  1373. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_angular.svg +0 -0
  1374. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_angular_opened.svg +0 -0
  1375. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_apache.svg +0 -0
  1376. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_apache_opened.svg +0 -0
  1377. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_api.svg +0 -0
  1378. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_api_opened.svg +0 -0
  1379. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_app.svg +0 -0
  1380. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_app_opened.svg +0 -0
  1381. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_arangodb.svg +0 -0
  1382. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_arangodb_opened.svg +0 -0
  1383. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_asset.svg +0 -0
  1384. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_asset_opened.svg +0 -0
  1385. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_astro.svg +0 -0
  1386. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_astro_opened.svg +0 -0
  1387. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_audio.svg +0 -0
  1388. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_audio_opened.svg +0 -0
  1389. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_aurelia.svg +0 -0
  1390. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_aurelia_opened.svg +0 -0
  1391. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_aws.svg +0 -0
  1392. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_aws_opened.svg +0 -0
  1393. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_azure.svg +0 -0
  1394. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_azure_opened.svg +0 -0
  1395. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines.svg +0 -0
  1396. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines_opened.svg +0 -0
  1397. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_binary.svg +0 -0
  1398. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_binary_opened.svg +0 -0
  1399. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_bloc.svg +0 -0
  1400. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_bloc_opened.svg +0 -0
  1401. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_blueprint.svg +0 -0
  1402. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_blueprint_opened.svg +0 -0
  1403. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_bot.svg +0 -0
  1404. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_bot_opened.svg +0 -0
  1405. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_bower.svg +0 -0
  1406. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_bower_opened.svg +0 -0
  1407. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_buildkite.svg +0 -0
  1408. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_buildkite_opened.svg +0 -0
  1409. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cake.svg +0 -0
  1410. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cake_opened.svg +0 -0
  1411. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cargo.svg +0 -0
  1412. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cargo_opened.svg +0 -0
  1413. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_certificate.svg +0 -0
  1414. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_certificate_opened.svg +0 -0
  1415. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_changesets.svg +0 -0
  1416. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_changesets_opened.svg +0 -0
  1417. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_chef.svg +0 -0
  1418. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_chef_opened.svg +0 -0
  1419. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_circleci.svg +0 -0
  1420. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_circleci_opened.svg +0 -0
  1421. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_claude.svg +0 -0
  1422. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_claude_opened.svg +0 -0
  1423. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cli.svg +0 -0
  1424. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cli_opened.svg +0 -0
  1425. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_client.svg +0 -0
  1426. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_client_opened.svg +0 -0
  1427. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare.svg +0 -0
  1428. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare_opened.svg +0 -0
  1429. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cmake.svg +0 -0
  1430. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cmake_opened.svg +0 -0
  1431. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_common.svg +0 -0
  1432. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_common_opened.svg +0 -0
  1433. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_component.svg +0 -0
  1434. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_component_opened.svg +0 -0
  1435. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_composer.svg +0 -0
  1436. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_composer_opened.svg +0 -0
  1437. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_config.svg +0 -0
  1438. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_config_opened.svg +0 -0
  1439. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_controller.svg +0 -0
  1440. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_controller_opened.svg +0 -0
  1441. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_coverage.svg +0 -0
  1442. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_coverage_opened.svg +0 -0
  1443. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_css.svg +0 -0
  1444. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_css2.svg +0 -0
  1445. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_css2_opened.svg +0 -0
  1446. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_css_opened.svg +0 -0
  1447. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cubit.svg +0 -0
  1448. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cubit_opened.svg +0 -0
  1449. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cursor.svg +0 -0
  1450. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cursor_opened.svg +0 -0
  1451. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cypress.svg +0 -0
  1452. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_cypress_opened.svg +0 -0
  1453. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_dapr.svg +0 -0
  1454. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_dapr_opened.svg +0 -0
  1455. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_dart.svg +0 -0
  1456. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_dart_opened.svg +0 -0
  1457. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_datadog.svg +0 -0
  1458. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_datadog_opened.svg +0 -0
  1459. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_db.svg +0 -0
  1460. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_db_opened.svg +0 -0
  1461. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_debian.svg +0 -0
  1462. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_debian_opened.svg +0 -0
  1463. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_dependabot.svg +0 -0
  1464. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_dependabot_opened.svg +0 -0
  1465. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer.svg +0 -0
  1466. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer_opened.svg +0 -0
  1467. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_dist.svg +0 -0
  1468. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_dist_opened.svg +0 -0
  1469. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_docker.svg +0 -0
  1470. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_docker_opened.svg +0 -0
  1471. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_docs.svg +0 -0
  1472. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_docs_opened.svg +0 -0
  1473. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_e2e.svg +0 -0
  1474. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_e2e_opened.svg +0 -0
  1475. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk.svg +0 -0
  1476. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk_opened.svg +0 -0
  1477. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_electron.svg +0 -0
  1478. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_electron_opened.svg +0 -0
  1479. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_expo.svg +0 -0
  1480. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_expo_opened.svg +0 -0
  1481. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_favicon.svg +0 -0
  1482. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_favicon_opened.svg +0 -0
  1483. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_flow.svg +0 -0
  1484. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_flow_opened.svg +0 -0
  1485. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_flutter.svg +0 -0
  1486. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_flutter_opened.svg +0 -0
  1487. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_fonts.svg +0 -0
  1488. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_fonts_opened.svg +0 -0
  1489. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce.svg +0 -0
  1490. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce_opened.svg +0 -0
  1491. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_gcp.svg +0 -0
  1492. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_gcp_opened.svg +0 -0
  1493. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_git.svg +0 -0
  1494. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_git_opened.svg +0 -0
  1495. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_github.svg +0 -0
  1496. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_github_opened.svg +0 -0
  1497. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_gitlab.svg +0 -0
  1498. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_gitlab_opened.svg +0 -0
  1499. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_godot.svg +0 -0
  1500. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_godot_opened.svg +0 -0
  1501. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_gradle.svg +0 -0
  1502. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_gradle_opened.svg +0 -0
  1503. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_graphql.svg +0 -0
  1504. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_graphql_opened.svg +0 -0
  1505. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_grunt.svg +0 -0
  1506. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_grunt_opened.svg +0 -0
  1507. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_gulp.svg +0 -0
  1508. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_gulp_opened.svg +0 -0
  1509. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_haxelib.svg +0 -0
  1510. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_haxelib_opened.svg +0 -0
  1511. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_helper.svg +0 -0
  1512. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_helper_opened.svg +0 -0
  1513. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_histoire.svg +0 -0
  1514. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_histoire_opened.svg +0 -0
  1515. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_hook.svg +0 -0
  1516. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_hook_opened.svg +0 -0
  1517. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_husky.svg +0 -0
  1518. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_husky_opened.svg +0 -0
  1519. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_idea.svg +0 -0
  1520. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_idea_opened.svg +0 -0
  1521. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_images.svg +0 -0
  1522. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_images_opened.svg +0 -0
  1523. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_include.svg +0 -0
  1524. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_include_opened.svg +0 -0
  1525. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_interfaces.svg +0 -0
  1526. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_interfaces_opened.svg +0 -0
  1527. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_ios.svg +0 -0
  1528. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_ios_opened.svg +0 -0
  1529. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_js.svg +0 -0
  1530. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_js_opened.svg +0 -0
  1531. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_json.svg +0 -0
  1532. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_json_official.svg +0 -0
  1533. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_json_official_opened.svg +0 -0
  1534. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_json_opened.svg +0 -0
  1535. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_junie.svg +0 -0
  1536. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_junie_opened.svg +0 -0
  1537. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_kotlin.svg +0 -0
  1538. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_kotlin_opened.svg +0 -0
  1539. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes.svg +0 -0
  1540. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes_opened.svg +0 -0
  1541. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_less.svg +0 -0
  1542. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_less_opened.svg +0 -0
  1543. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_library.svg +0 -0
  1544. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_library_opened.svg +0 -0
  1545. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor.svg +0 -0
  1546. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor_opened.svg +0 -0
  1547. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress.svg +0 -0
  1548. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress_opened.svg +0 -0
  1549. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_electron.svg +0 -0
  1550. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_electron_opened.svg +0 -0
  1551. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_expo.svg +0 -0
  1552. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_expo_opened.svg +0 -0
  1553. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts.svg +0 -0
  1554. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts_opened.svg +0 -0
  1555. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle.svg +0 -0
  1556. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle_opened.svg +0 -0
  1557. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor.svg +0 -0
  1558. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor_opened.svg +0 -0
  1559. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy.svg +0 -0
  1560. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy_opened.svg +0 -0
  1561. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql.svg +0 -0
  1562. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql_opened.svg +0 -0
  1563. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_node.svg +0 -0
  1564. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_node_opened.svg +0 -0
  1565. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_redux.svg +0 -0
  1566. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_redux_opened.svg +0 -0
  1567. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_sass.svg +0 -0
  1568. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_sass_opened.svg +0 -0
  1569. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_zed.svg +0 -0
  1570. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_light_zed_opened.svg +0 -0
  1571. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_linux.svg +0 -0
  1572. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_linux_opened.svg +0 -0
  1573. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_locale.svg +0 -0
  1574. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_locale_opened.svg +0 -0
  1575. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_log.svg +0 -0
  1576. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_log_opened.svg +0 -0
  1577. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_macos.svg +0 -0
  1578. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_macos_opened.svg +0 -0
  1579. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mariadb.svg +0 -0
  1580. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mariadb_opened.svg +0 -0
  1581. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_maven.svg +0 -0
  1582. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_maven_opened.svg +0 -0
  1583. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki.svg +0 -0
  1584. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki_opened.svg +0 -0
  1585. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_memcached.svg +0 -0
  1586. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_memcached_opened.svg +0 -0
  1587. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_meteor.svg +0 -0
  1588. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_meteor_opened.svg +0 -0
  1589. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_middleware.svg +0 -0
  1590. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_middleware_opened.svg +0 -0
  1591. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_minecraft.svg +0 -0
  1592. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_minecraft_opened.svg +0 -0
  1593. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_minikube.svg +0 -0
  1594. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_minikube_opened.svg +0 -0
  1595. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mjml.svg +0 -0
  1596. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mjml_opened.svg +0 -0
  1597. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mock.svg +0 -0
  1598. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mock_opened.svg +0 -0
  1599. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_model.svg +0 -0
  1600. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_model_opened.svg +0 -0
  1601. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_module.svg +0 -0
  1602. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_module_opened.svg +0 -0
  1603. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mojo.svg +0 -0
  1604. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mojo_opened.svg +0 -0
  1605. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mongodb.svg +0 -0
  1606. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mongodb_opened.svg +0 -0
  1607. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mypy.svg +0 -0
  1608. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mypy_opened.svg +0 -0
  1609. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mysql.svg +0 -0
  1610. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_mysql_opened.svg +0 -0
  1611. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_netlify.svg +0 -0
  1612. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_netlify_opened.svg +0 -0
  1613. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_next.svg +0 -0
  1614. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_next_opened.svg +0 -0
  1615. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_nginx.svg +0 -0
  1616. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_nginx_opened.svg +0 -0
  1617. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_nix.svg +0 -0
  1618. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_nix_opened.svg +0 -0
  1619. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_node.svg +0 -0
  1620. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_node_opened.svg +0 -0
  1621. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_notebooks.svg +0 -0
  1622. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_notebooks_opened.svg +0 -0
  1623. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_notification.svg +0 -0
  1624. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_notification_opened.svg +0 -0
  1625. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_nuget.svg +0 -0
  1626. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_nuget_opened.svg +0 -0
  1627. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_nuxt.svg +0 -0
  1628. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_nuxt_opened.svg +0 -0
  1629. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_package.svg +0 -0
  1630. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_package_opened.svg +0 -0
  1631. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_paket.svg +0 -0
  1632. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_paket_opened.svg +0 -0
  1633. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_php.svg +0 -0
  1634. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_php_opened.svg +0 -0
  1635. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_platformio.svg +0 -0
  1636. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_platformio_opened.svg +0 -0
  1637. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_plugin.svg +0 -0
  1638. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_plugin_opened.svg +0 -0
  1639. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_prisma.svg +0 -0
  1640. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_prisma_opened.svg +0 -0
  1641. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_private.svg +0 -0
  1642. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_private_opened.svg +0 -0
  1643. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_public.svg +0 -0
  1644. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_public_opened.svg +0 -0
  1645. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_pytest.svg +0 -0
  1646. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_pytest_opened.svg +0 -0
  1647. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_python.svg +0 -0
  1648. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_python_opened.svg +0 -0
  1649. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_ravendb.svg +0 -0
  1650. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_ravendb_opened.svg +0 -0
  1651. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_redis.svg +0 -0
  1652. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_redis_opened.svg +0 -0
  1653. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_redux.svg +0 -0
  1654. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_redux_opened.svg +0 -0
  1655. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_route.svg +0 -0
  1656. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_route_opened.svg +0 -0
  1657. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_sass.svg +0 -0
  1658. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_sass_opened.svg +0 -0
  1659. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_script.svg +0 -0
  1660. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_script_opened.svg +0 -0
  1661. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_seedkit.svg +0 -0
  1662. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_seedkit_opened.svg +0 -0
  1663. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_server.svg +0 -0
  1664. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_server_opened.svg +0 -0
  1665. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_services.svg +0 -0
  1666. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_services_opened.svg +0 -0
  1667. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_shared.svg +0 -0
  1668. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_shared_opened.svg +0 -0
  1669. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_snaplet.svg +0 -0
  1670. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_snaplet_opened.svg +0 -0
  1671. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_spin.svg +0 -0
  1672. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_spin_opened.svg +0 -0
  1673. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_src.svg +0 -0
  1674. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_src_opened.svg +0 -0
  1675. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_sso.svg +0 -0
  1676. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_sso_opened.svg +0 -0
  1677. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_story.svg +0 -0
  1678. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_story_opened.svg +0 -0
  1679. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_style.svg +0 -0
  1680. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_style_opened.svg +0 -0
  1681. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_supabase.svg +0 -0
  1682. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_supabase_opened.svg +0 -0
  1683. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_svelte.svg +0 -0
  1684. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_svelte_opened.svg +0 -0
  1685. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_tauri.svg +0 -0
  1686. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_tauri_opened.svg +0 -0
  1687. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_temp.svg +0 -0
  1688. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_temp_opened.svg +0 -0
  1689. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_template.svg +0 -0
  1690. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_template_opened.svg +0 -0
  1691. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_test.svg +0 -0
  1692. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_test_opened.svg +0 -0
  1693. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_theme.svg +0 -0
  1694. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_theme_opened.svg +0 -0
  1695. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_tools.svg +0 -0
  1696. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_tools_opened.svg +0 -0
  1697. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_travis.svg +0 -0
  1698. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_travis_opened.svg +0 -0
  1699. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_trunk.svg +0 -0
  1700. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_trunk_opened.svg +0 -0
  1701. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_turbo.svg +0 -0
  1702. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_turbo_opened.svg +0 -0
  1703. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_typescript.svg +0 -0
  1704. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_typescript_opened.svg +0 -0
  1705. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_typings.svg +0 -0
  1706. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_typings2.svg +0 -0
  1707. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_typings2_opened.svg +0 -0
  1708. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_typings_opened.svg +0 -0
  1709. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vagrant.svg +0 -0
  1710. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vagrant_opened.svg +0 -0
  1711. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vercel.svg +0 -0
  1712. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vercel_opened.svg +0 -0
  1713. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_video.svg +0 -0
  1714. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_video_opened.svg +0 -0
  1715. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_view.svg +0 -0
  1716. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_view_opened.svg +0 -0
  1717. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vitepress.svg +0 -0
  1718. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vitepress_opened.svg +0 -0
  1719. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vs.svg +0 -0
  1720. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vs2.svg +0 -0
  1721. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vs2_opened.svg +0 -0
  1722. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vs_opened.svg +0 -0
  1723. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode.svg +0 -0
  1724. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode2.svg +0 -0
  1725. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode2_opened.svg +0 -0
  1726. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode3.svg +0 -0
  1727. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode3_opened.svg +0 -0
  1728. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_opened.svg +0 -0
  1729. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test.svg +0 -0
  1730. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2.svg +0 -0
  1731. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2_opened.svg +0 -0
  1732. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3.svg +0 -0
  1733. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3_opened.svg +0 -0
  1734. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test_opened.svg +0 -0
  1735. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_wasm.svg +0 -0
  1736. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_wasm_opened.svg +0 -0
  1737. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_webpack.svg +0 -0
  1738. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_webpack_opened.svg +0 -0
  1739. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_windows.svg +0 -0
  1740. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_windows_opened.svg +0 -0
  1741. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_windsurf.svg +0 -0
  1742. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_windsurf_opened.svg +0 -0
  1743. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_wit.svg +0 -0
  1744. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_wit_opened.svg +0 -0
  1745. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_www.svg +0 -0
  1746. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_www_opened.svg +0 -0
  1747. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_yarn.svg +0 -0
  1748. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_yarn_opened.svg +0 -0
  1749. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_zed.svg +0 -0
  1750. /package/static/{9d77d9c → 1751ec0}/extensions/builtin.vscode-icons/icons/folder_type_zed_opened.svg +0 -0
  1751. /package/static/{9d77d9c → 1751ec0}/fonts/FiraCode-VariableFont.ttf +0 -0
  1752. /package/static/{9d77d9c → 1751ec0}/icons/account.svg +0 -0
  1753. /package/static/{9d77d9c → 1751ec0}/icons/add.svg +0 -0
  1754. /package/static/{9d77d9c → 1751ec0}/icons/arrow-down.svg +0 -0
  1755. /package/static/{9d77d9c → 1751ec0}/icons/arrow-left.svg +0 -0
  1756. /package/static/{9d77d9c → 1751ec0}/icons/arrow-right.svg +0 -0
  1757. /package/static/{9d77d9c → 1751ec0}/icons/arrow-up.svg +0 -0
  1758. /package/static/{9d77d9c → 1751ec0}/icons/blank.svg +0 -0
  1759. /package/static/{9d77d9c → 1751ec0}/icons/book.svg +0 -0
  1760. /package/static/{9d77d9c → 1751ec0}/icons/case-sensitive.svg +0 -0
  1761. /package/static/{9d77d9c → 1751ec0}/icons/check.svg +0 -0
  1762. /package/static/{9d77d9c → 1751ec0}/icons/chevron-down.svg +0 -0
  1763. /package/static/{9d77d9c → 1751ec0}/icons/chevron-left.svg +0 -0
  1764. /package/static/{9d77d9c → 1751ec0}/icons/chevron-right.svg +0 -0
  1765. /package/static/{9d77d9c → 1751ec0}/icons/chevron-up.svg +0 -0
  1766. /package/static/{9d77d9c → 1751ec0}/icons/chrome-close.svg +0 -0
  1767. /package/static/{9d77d9c → 1751ec0}/icons/chrome-maximize.svg +0 -0
  1768. /package/static/{9d77d9c → 1751ec0}/icons/chrome-minimize.svg +0 -0
  1769. /package/static/{9d77d9c → 1751ec0}/icons/chrome-restore.svg +0 -0
  1770. /package/static/{9d77d9c → 1751ec0}/icons/circle-filled.svg +0 -0
  1771. /package/static/{9d77d9c → 1751ec0}/icons/clear-all.svg +0 -0
  1772. /package/static/{9d77d9c → 1751ec0}/icons/close.svg +0 -0
  1773. /package/static/{9d77d9c → 1751ec0}/icons/cloud.svg +0 -0
  1774. /package/static/{9d77d9c → 1751ec0}/icons/collapse-all.svg +0 -0
  1775. /package/static/{9d77d9c → 1751ec0}/icons/debug-all.svg +0 -0
  1776. /package/static/{9d77d9c → 1751ec0}/icons/debug-alt-2.svg +0 -0
  1777. /package/static/{9d77d9c → 1751ec0}/icons/debug-alt-small.svg +0 -0
  1778. /package/static/{9d77d9c → 1751ec0}/icons/debug-alt.svg +0 -0
  1779. /package/static/{9d77d9c → 1751ec0}/icons/debug-breakpoint-conditional-unverified.svg +0 -0
  1780. /package/static/{9d77d9c → 1751ec0}/icons/debug-breakpoint-conditional.svg +0 -0
  1781. /package/static/{9d77d9c → 1751ec0}/icons/debug-breakpoint-data-unverified.svg +0 -0
  1782. /package/static/{9d77d9c → 1751ec0}/icons/debug-breakpoint-data.svg +0 -0
  1783. /package/static/{9d77d9c → 1751ec0}/icons/debug-breakpoint-function-unverified.svg +0 -0
  1784. /package/static/{9d77d9c → 1751ec0}/icons/debug-breakpoint-function.svg +0 -0
  1785. /package/static/{9d77d9c → 1751ec0}/icons/debug-breakpoint-log-unverified.svg +0 -0
  1786. /package/static/{9d77d9c → 1751ec0}/icons/debug-breakpoint-log.svg +0 -0
  1787. /package/static/{9d77d9c → 1751ec0}/icons/debug-breakpoint-unsupported.svg +0 -0
  1788. /package/static/{9d77d9c → 1751ec0}/icons/debug-console.svg +0 -0
  1789. /package/static/{9d77d9c → 1751ec0}/icons/debug-continue-small.svg +0 -0
  1790. /package/static/{9d77d9c → 1751ec0}/icons/debug-continue.svg +0 -0
  1791. /package/static/{9d77d9c → 1751ec0}/icons/debug-coverage.svg +0 -0
  1792. /package/static/{9d77d9c → 1751ec0}/icons/debug-disconnect.svg +0 -0
  1793. /package/static/{9d77d9c → 1751ec0}/icons/debug-line-by-line.svg +0 -0
  1794. /package/static/{9d77d9c → 1751ec0}/icons/debug-pause.svg +0 -0
  1795. /package/static/{9d77d9c → 1751ec0}/icons/debug-rerun.svg +0 -0
  1796. /package/static/{9d77d9c → 1751ec0}/icons/debug-restart-frame.svg +0 -0
  1797. /package/static/{9d77d9c → 1751ec0}/icons/debug-restart.svg +0 -0
  1798. /package/static/{9d77d9c → 1751ec0}/icons/debug-reverse-continue.svg +0 -0
  1799. /package/static/{9d77d9c → 1751ec0}/icons/debug-stackframe-active.svg +0 -0
  1800. /package/static/{9d77d9c → 1751ec0}/icons/debug-stackframe.svg +0 -0
  1801. /package/static/{9d77d9c → 1751ec0}/icons/debug-start.svg +0 -0
  1802. /package/static/{9d77d9c → 1751ec0}/icons/debug-step-back.svg +0 -0
  1803. /package/static/{9d77d9c → 1751ec0}/icons/debug-step-into.svg +0 -0
  1804. /package/static/{9d77d9c → 1751ec0}/icons/debug-step-out.svg +0 -0
  1805. /package/static/{9d77d9c → 1751ec0}/icons/debug-step-over.svg +0 -0
  1806. /package/static/{9d77d9c → 1751ec0}/icons/debug-stop.svg +0 -0
  1807. /package/static/{9d77d9c → 1751ec0}/icons/debug.svg +0 -0
  1808. /package/static/{9d77d9c → 1751ec0}/icons/discard.svg +0 -0
  1809. /package/static/{9d77d9c → 1751ec0}/icons/edit.svg +0 -0
  1810. /package/static/{9d77d9c → 1751ec0}/icons/ellipsis.svg +0 -0
  1811. /package/static/{9d77d9c → 1751ec0}/icons/error.svg +0 -0
  1812. /package/static/{9d77d9c → 1751ec0}/icons/exclude.svg +0 -0
  1813. /package/static/{9d77d9c → 1751ec0}/icons/extensionDefaultIcon.png +0 -0
  1814. /package/static/{9d77d9c → 1751ec0}/icons/extensions.svg +0 -0
  1815. /package/static/{9d77d9c → 1751ec0}/icons/files.svg +0 -0
  1816. /package/static/{9d77d9c → 1751ec0}/icons/filter.svg +0 -0
  1817. /package/static/{9d77d9c → 1751ec0}/icons/go-to-file.svg +0 -0
  1818. /package/static/{9d77d9c → 1751ec0}/icons/icon-close.svg +0 -0
  1819. /package/static/{9d77d9c → 1751ec0}/icons/icon-source-control.svg +0 -0
  1820. /package/static/{9d77d9c → 1751ec0}/icons/icon-sync.svg +0 -0
  1821. /package/static/{9d77d9c → 1751ec0}/icons/icon.png +0 -0
  1822. /package/static/{9d77d9c → 1751ec0}/icons/icon.svg +0 -0
  1823. /package/static/{9d77d9c → 1751ec0}/icons/info.svg +0 -0
  1824. /package/static/{9d77d9c → 1751ec0}/icons/language-icon.svg +0 -0
  1825. /package/static/{9d77d9c → 1751ec0}/icons/link-external.svg +0 -0
  1826. /package/static/{9d77d9c → 1751ec0}/icons/list-flat.svg +0 -0
  1827. /package/static/{9d77d9c → 1751ec0}/icons/list-tree.svg +0 -0
  1828. /package/static/{9d77d9c → 1751ec0}/icons/new-file.svg +0 -0
  1829. /package/static/{9d77d9c → 1751ec0}/icons/new-folder.svg +0 -0
  1830. /package/static/{9d77d9c → 1751ec0}/icons/newline.svg +0 -0
  1831. /package/static/{9d77d9c → 1751ec0}/icons/open-preview.svg +0 -0
  1832. /package/static/{9d77d9c → 1751ec0}/icons/play.svg +0 -0
  1833. /package/static/{9d77d9c → 1751ec0}/icons/preserve-case.svg +0 -0
  1834. /package/static/{9d77d9c → 1751ec0}/icons/progress.svg +0 -0
  1835. /package/static/{9d77d9c → 1751ec0}/icons/pwa-icon-192.png +0 -0
  1836. /package/static/{9d77d9c → 1751ec0}/icons/pwa-icon-512.png +0 -0
  1837. /package/static/{9d77d9c → 1751ec0}/icons/record-keys.svg +0 -0
  1838. /package/static/{9d77d9c → 1751ec0}/icons/refresh.svg +0 -0
  1839. /package/static/{9d77d9c → 1751ec0}/icons/regex.svg +0 -0
  1840. /package/static/{9d77d9c → 1751ec0}/icons/remove.svg +0 -0
  1841. /package/static/{9d77d9c → 1751ec0}/icons/replace-all.svg +0 -0
  1842. /package/static/{9d77d9c → 1751ec0}/icons/replace.svg +0 -0
  1843. /package/static/{9d77d9c → 1751ec0}/icons/repo.svg +0 -0
  1844. /package/static/{9d77d9c → 1751ec0}/icons/run-all.svg +0 -0
  1845. /package/static/{9d77d9c → 1751ec0}/icons/search.svg +0 -0
  1846. /package/static/{9d77d9c → 1751ec0}/icons/send.svg +0 -0
  1847. /package/static/{9d77d9c → 1751ec0}/icons/settings-gear.svg +0 -0
  1848. /package/static/{9d77d9c → 1751ec0}/icons/sort-precedence.svg +0 -0
  1849. /package/static/{9d77d9c → 1751ec0}/icons/source-control.svg +0 -0
  1850. /package/static/{9d77d9c → 1751ec0}/icons/split-horizontal.svg +0 -0
  1851. /package/static/{9d77d9c → 1751ec0}/icons/squiggly-error.svg +0 -0
  1852. /package/static/{9d77d9c → 1751ec0}/icons/squiggly-warning.svg +0 -0
  1853. /package/static/{9d77d9c → 1751ec0}/icons/symbol-array.svg +0 -0
  1854. /package/static/{9d77d9c → 1751ec0}/icons/symbol-boolean.svg +0 -0
  1855. /package/static/{9d77d9c → 1751ec0}/icons/symbol-class.svg +0 -0
  1856. /package/static/{9d77d9c → 1751ec0}/icons/symbol-color.svg +0 -0
  1857. /package/static/{9d77d9c → 1751ec0}/icons/symbol-constant.svg +0 -0
  1858. /package/static/{9d77d9c → 1751ec0}/icons/symbol-enum-member.svg +0 -0
  1859. /package/static/{9d77d9c → 1751ec0}/icons/symbol-enum.svg +0 -0
  1860. /package/static/{9d77d9c → 1751ec0}/icons/symbol-event.svg +0 -0
  1861. /package/static/{9d77d9c → 1751ec0}/icons/symbol-field.svg +0 -0
  1862. /package/static/{9d77d9c → 1751ec0}/icons/symbol-file.svg +0 -0
  1863. /package/static/{9d77d9c → 1751ec0}/icons/symbol-interface.svg +0 -0
  1864. /package/static/{9d77d9c → 1751ec0}/icons/symbol-key.svg +0 -0
  1865. /package/static/{9d77d9c → 1751ec0}/icons/symbol-keyword.svg +0 -0
  1866. /package/static/{9d77d9c → 1751ec0}/icons/symbol-method.svg +0 -0
  1867. /package/static/{9d77d9c → 1751ec0}/icons/symbol-misc.svg +0 -0
  1868. /package/static/{9d77d9c → 1751ec0}/icons/symbol-namespace.svg +0 -0
  1869. /package/static/{9d77d9c → 1751ec0}/icons/symbol-numeric.svg +0 -0
  1870. /package/static/{9d77d9c → 1751ec0}/icons/symbol-operator.svg +0 -0
  1871. /package/static/{9d77d9c → 1751ec0}/icons/symbol-parameter.svg +0 -0
  1872. /package/static/{9d77d9c → 1751ec0}/icons/symbol-property.svg +0 -0
  1873. /package/static/{9d77d9c → 1751ec0}/icons/symbol-ruler.svg +0 -0
  1874. /package/static/{9d77d9c → 1751ec0}/icons/symbol-snippet.svg +0 -0
  1875. /package/static/{9d77d9c → 1751ec0}/icons/symbol-string.svg +0 -0
  1876. /package/static/{9d77d9c → 1751ec0}/icons/symbol-structure.svg +0 -0
  1877. /package/static/{9d77d9c → 1751ec0}/icons/symbol-variable.svg +0 -0
  1878. /package/static/{9d77d9c → 1751ec0}/icons/tag.svg +0 -0
  1879. /package/static/{9d77d9c → 1751ec0}/icons/terminal-bash.svg +0 -0
  1880. /package/static/{9d77d9c → 1751ec0}/icons/terminal.svg +0 -0
  1881. /package/static/{9d77d9c → 1751ec0}/icons/theme-icon.png +0 -0
  1882. /package/static/{9d77d9c → 1751ec0}/icons/trash.svg +0 -0
  1883. /package/static/{9d77d9c → 1751ec0}/icons/triangle-down.svg +0 -0
  1884. /package/static/{9d77d9c → 1751ec0}/icons/triangle-left.svg +0 -0
  1885. /package/static/{9d77d9c → 1751ec0}/icons/triangle-right.svg +0 -0
  1886. /package/static/{9d77d9c → 1751ec0}/icons/triangle-up.svg +0 -0
  1887. /package/static/{9d77d9c → 1751ec0}/icons/warning.svg +0 -0
  1888. /package/static/{9d77d9c → 1751ec0}/icons/whole-word.svg +0 -0
  1889. /package/static/{9d77d9c → 1751ec0}/icons/zoom-in.svg +0 -0
  1890. /package/static/{9d77d9c → 1751ec0}/icons/zoom-out.svg +0 -0
  1891. /package/static/{9d77d9c → 1751ec0}/js/babel-parser.js +0 -0
  1892. /package/static/{9d77d9c → 1751ec0}/js/ky.js +0 -0
  1893. /package/static/{9d77d9c → 1751ec0}/js/lvce-editor-import-script.js +0 -0
  1894. /package/static/{9d77d9c → 1751ec0}/js/lvce-editor-ipc.js +0 -0
  1895. /package/static/{9d77d9c → 1751ec0}/js/lvce-editor-json-rpc.js +0 -0
  1896. /package/static/{9d77d9c → 1751ec0}/js/lvce-editor-rpc.js +0 -0
  1897. /package/static/{9d77d9c → 1751ec0}/js/lvce-editor-verror.js +0 -0
  1898. /package/static/{9d77d9c → 1751ec0}/js/p-min-delay.js +0 -0
  1899. /package/static/{9d77d9c → 1751ec0}/js/pretty-bytes.js +0 -0
  1900. /package/static/{9d77d9c → 1751ec0}/js/preview-injected.js +0 -0
  1901. /package/static/{9d77d9c → 1751ec0}/js/yoctodelay.js +0 -0
  1902. /package/static/{9d77d9c → 1751ec0}/lib-css/termterm.css +0 -0
  1903. /package/static/{9d77d9c → 1751ec0}/packages/activity-bar-worker/dist/activityBarWorkerMain.js +0 -0
  1904. /package/static/{9d77d9c → 1751ec0}/packages/chat-coordinator-worker/dist/chatCoordinatorWorkerMain.js +0 -0
  1905. /package/static/{9d77d9c → 1751ec0}/packages/chat-math-worker/dist/chatMathWorkerMain.js +0 -0
  1906. /package/static/{9d77d9c → 1751ec0}/packages/chat-message-parsing-worker/dist/chatMessageParsingWorkerMain.js +0 -0
  1907. /package/static/{9d77d9c → 1751ec0}/packages/chat-network-worker/dist/chatNetworkWorkerMain.js +0 -0
  1908. /package/static/{9d77d9c → 1751ec0}/packages/chat-storage-worker/dist/chatStorageWorkerMain.js +0 -0
  1909. /package/static/{9d77d9c → 1751ec0}/packages/clipboard-worker/dist/clipBoardWorkerMain.js +0 -0
  1910. /package/static/{9d77d9c → 1751ec0}/packages/color-picker-worker/dist/colorPickerWorkerMain.js +0 -0
  1911. /package/static/{9d77d9c → 1751ec0}/packages/completion-worker/dist/completionWorkerMain.js +0 -0
  1912. /package/static/{9d77d9c → 1751ec0}/packages/debug-worker/dist/debugWorkerMain.js +0 -0
  1913. /package/static/{9d77d9c → 1751ec0}/packages/editor-worker/dist/editorWorkerMain.js +0 -0
  1914. /package/static/{9d77d9c → 1751ec0}/packages/embeds-worker/dist/embedsWorkerMain.js +0 -0
  1915. /package/static/{9d77d9c → 1751ec0}/packages/error-worker/dist/errorWorkerMain.js +0 -0
  1916. /package/static/{9d77d9c → 1751ec0}/packages/explorer-worker/dist/explorerViewWorkerMain.js +0 -0
  1917. /package/static/{9d77d9c → 1751ec0}/packages/extension-detail-view-worker/dist/extensionDetailViewWorkerMain.js +0 -0
  1918. /package/static/{9d77d9c → 1751ec0}/packages/extension-host-sub-worker/dist/extensionHostSubWorkerMain.js +0 -0
  1919. /package/static/{9d77d9c → 1751ec0}/packages/extension-management-worker/dist/extensionManagementWorkerMain.js +0 -0
  1920. /package/static/{9d77d9c → 1751ec0}/packages/extension-search-view-worker/dist/extensionSearchViewWorkerMain.js +0 -0
  1921. /package/static/{9d77d9c → 1751ec0}/packages/file-search-worker/dist/fileSearchWorkerMain.js +0 -0
  1922. /package/static/{9d77d9c → 1751ec0}/packages/file-system-worker/dist/fileSystemWorkerMain.js +0 -0
  1923. /package/static/{9d77d9c → 1751ec0}/packages/find-widget-worker/dist/findWidgetWorkerMain.js +0 -0
  1924. /package/static/{9d77d9c → 1751ec0}/packages/hover-worker/dist/hoverWorkerMain.js +0 -0
  1925. /package/static/{9d77d9c → 1751ec0}/packages/icon-theme-worker/dist/iconThemeWorkerMain.js +0 -0
  1926. /package/static/{9d77d9c → 1751ec0}/packages/iframe-inspector/dist/iframeInspectorWorkerMain.js +0 -0
  1927. /package/static/{9d77d9c → 1751ec0}/packages/iframe-worker/dist/iframeWorkerMain.js +0 -0
  1928. /package/static/{9d77d9c → 1751ec0}/packages/keybindings-view-worker/dist/keyBindingsViewWorkerMain.js +0 -0
  1929. /package/static/{9d77d9c → 1751ec0}/packages/language-models-view/dist/languageModelsViewMain.js +0 -0
  1930. /package/static/{9d77d9c → 1751ec0}/packages/main-area-worker/dist/mainAreaWorkerMain.js +0 -0
  1931. /package/static/{9d77d9c → 1751ec0}/packages/markdown-worker/dist/markdownWorkerMain.js +0 -0
  1932. /package/static/{9d77d9c → 1751ec0}/packages/menu-worker/dist/menuWorkerMain.js +0 -0
  1933. /package/static/{9d77d9c → 1751ec0}/packages/output-view/dist/outputViewWorkerMain.js +0 -0
  1934. /package/static/{9d77d9c → 1751ec0}/packages/panel-worker/dist/panelWorkerMain.js +0 -0
  1935. /package/static/{9d77d9c → 1751ec0}/packages/preload/dist/index.js +0 -0
  1936. /package/static/{9d77d9c → 1751ec0}/packages/preview-sandbox-worker/dist/previewSandBoxWorkerMain.js +0 -0
  1937. /package/static/{9d77d9c → 1751ec0}/packages/preview-worker/dist/previewWorkerMain.js +0 -0
  1938. /package/static/{9d77d9c → 1751ec0}/packages/problems-view/dist/problemsViewWorkerMain.js +0 -0
  1939. /package/static/{9d77d9c → 1751ec0}/packages/quick-pick-worker/dist/quickPickWorkerMain.js +0 -0
  1940. /package/static/{9d77d9c → 1751ec0}/packages/references-view/dist/referencesViewWorkerMain.js +0 -0
  1941. /package/static/{9d77d9c → 1751ec0}/packages/rename-worker/dist/renameWorkerMain.js +0 -0
  1942. /package/static/{9d77d9c → 1751ec0}/packages/renderer-process/LICENSE +0 -0
  1943. /package/static/{9d77d9c → 1751ec0}/packages/renderer-process/README.md +0 -0
  1944. /package/static/{9d77d9c → 1751ec0}/packages/settings-view/dist/settingsViewWorkerMain.js +0 -0
  1945. /package/static/{9d77d9c → 1751ec0}/packages/source-action-worker/dist/sourceActionWorkerMain.js +0 -0
  1946. /package/static/{9d77d9c → 1751ec0}/packages/source-control-worker/dist/sourceControlWorkerMain.js +0 -0
  1947. /package/static/{9d77d9c → 1751ec0}/packages/status-bar-worker/dist/statusBarWorkerMain.js +0 -0
  1948. /package/static/{9d77d9c → 1751ec0}/packages/syntax-highlighting-worker/dist/syntaxHighlightingWorkerMain.js +0 -0
  1949. /package/static/{9d77d9c → 1751ec0}/packages/terminal-worker/dist/terminalWorkerMain.js +0 -0
  1950. /package/static/{9d77d9c → 1751ec0}/packages/text-measurement-worker/dist/textMeasurementWorkerMain.js +0 -0
  1951. /package/static/{9d77d9c → 1751ec0}/packages/text-search-worker/dist/textSearchWorkerMain.js +0 -0
  1952. /package/static/{9d77d9c → 1751ec0}/packages/title-bar-worker/dist/titleBarWorkerMain.js +0 -0
  1953. /package/static/{9d77d9c → 1751ec0}/packages/update-worker/dist/updateWorkerMain.js +0 -0
  1954. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.cpp +0 -0
  1955. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.css +0 -0
  1956. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.csv +0 -0
  1957. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.dart +0 -0
  1958. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.env +0 -0
  1959. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.ex +0 -0
  1960. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.html +0 -0
  1961. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.java +0 -0
  1962. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.jl +0 -0
  1963. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.js +0 -0
  1964. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.json +0 -0
  1965. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.kt +0 -0
  1966. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.pl +0 -0
  1967. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.py +0 -0
  1968. /package/static/{9d77d9c → 1751ec0}/playground/languages/index.ts +0 -0
  1969. /package/static/{9d77d9c → 1751ec0}/playground/languages/scrolling.txt +0 -0
  1970. /package/static/{9d77d9c → 1751ec0}/playground/languages/tsconfig.json +0 -0
  1971. /package/static/{9d77d9c → 1751ec0}/playground/sample-folder/a.txt +0 -0
  1972. /package/static/{9d77d9c → 1751ec0}/playground/sample-folder/b.txt +0 -0
  1973. /package/static/{9d77d9c → 1751ec0}/playground/sample-folder/c.txt +0 -0
@@ -1,4974 +0,0 @@
1
- const normalizeLine = line => {
2
- if (line.startsWith('Error: ')) {
3
- return line.slice('Error: '.length);
4
- }
5
- if (line.startsWith('VError: ')) {
6
- return line.slice('VError: '.length);
7
- }
8
- return line;
9
- };
10
- const getCombinedMessage = (error, message) => {
11
- const stringifiedError = normalizeLine(`${error}`);
12
- if (message) {
13
- return `${message}: ${stringifiedError}`;
14
- }
15
- return stringifiedError;
16
- };
17
- const NewLine$2 = '\n';
18
- const getNewLineIndex$1 = (string, startIndex = undefined) => {
19
- return string.indexOf(NewLine$2, startIndex);
20
- };
21
- const mergeStacks = (parent, child) => {
22
- if (!child) {
23
- return parent;
24
- }
25
- const parentNewLineIndex = getNewLineIndex$1(parent);
26
- const childNewLineIndex = getNewLineIndex$1(child);
27
- if (childNewLineIndex === -1) {
28
- return parent;
29
- }
30
- const parentFirstLine = parent.slice(0, parentNewLineIndex);
31
- const childRest = child.slice(childNewLineIndex);
32
- const childFirstLine = normalizeLine(child.slice(0, childNewLineIndex));
33
- if (parentFirstLine.includes(childFirstLine)) {
34
- return parentFirstLine + childRest;
35
- }
36
- return child;
37
- };
38
- class VError extends Error {
39
- constructor(error, message) {
40
- const combinedMessage = getCombinedMessage(error, message);
41
- super(combinedMessage);
42
- this.name = 'VError';
43
- if (error instanceof Error) {
44
- this.stack = mergeStacks(this.stack, error.stack);
45
- }
46
- if (error.codeFrame) {
47
- // @ts-ignore
48
- this.codeFrame = error.codeFrame;
49
- }
50
- if (error.code) {
51
- // @ts-ignore
52
- this.code = error.code;
53
- }
54
- }
55
- }
56
-
57
- const isMessagePort = value => {
58
- return value && value instanceof MessagePort;
59
- };
60
- const isMessagePortMain = value => {
61
- return value && value.constructor && value.constructor.name === 'MessagePortMain';
62
- };
63
- const isOffscreenCanvas = value => {
64
- return typeof OffscreenCanvas !== 'undefined' && value instanceof OffscreenCanvas;
65
- };
66
- const isInstanceOf = (value, constructorName) => {
67
- return value?.constructor?.name === constructorName;
68
- };
69
- const isSocket = value => {
70
- return isInstanceOf(value, 'Socket');
71
- };
72
- const transferrables = [isMessagePort, isMessagePortMain, isOffscreenCanvas, isSocket];
73
- const isTransferrable = value => {
74
- for (const fn of transferrables) {
75
- if (fn(value)) {
76
- return true;
77
- }
78
- }
79
- return false;
80
- };
81
- const walkValue = (value, transferrables, isTransferrable) => {
82
- if (!value) {
83
- return;
84
- }
85
- if (isTransferrable(value)) {
86
- transferrables.push(value);
87
- return;
88
- }
89
- if (Array.isArray(value)) {
90
- for (const item of value) {
91
- walkValue(item, transferrables, isTransferrable);
92
- }
93
- return;
94
- }
95
- if (typeof value === 'object') {
96
- for (const property of Object.values(value)) {
97
- walkValue(property, transferrables, isTransferrable);
98
- }
99
- return;
100
- }
101
- };
102
- const getTransferrables = value => {
103
- const transferrables = [];
104
- walkValue(value, transferrables, isTransferrable);
105
- return transferrables;
106
- };
107
- const attachEvents = that => {
108
- const handleMessage = (...args) => {
109
- const data = that.getData(...args);
110
- that.dispatchEvent(new MessageEvent('message', {
111
- data
112
- }));
113
- };
114
- that.onMessage(handleMessage);
115
- const handleClose = event => {
116
- that.dispatchEvent(new Event('close'));
117
- };
118
- that.onClose(handleClose);
119
- };
120
- class Ipc extends EventTarget {
121
- constructor(rawIpc) {
122
- super();
123
- this._rawIpc = rawIpc;
124
- attachEvents(this);
125
- }
126
- }
127
- const E_INCOMPATIBLE_NATIVE_MODULE = 'E_INCOMPATIBLE_NATIVE_MODULE';
128
- const E_MODULES_NOT_SUPPORTED_IN_ELECTRON = 'E_MODULES_NOT_SUPPORTED_IN_ELECTRON';
129
- const ERR_MODULE_NOT_FOUND = 'ERR_MODULE_NOT_FOUND';
130
- const NewLine$1 = '\n';
131
- const joinLines$1 = lines => {
132
- return lines.join(NewLine$1);
133
- };
134
- const RE_AT = /^\s+at/;
135
- const RE_AT_PROMISE_INDEX = /^\s*at async Promise.all \(index \d+\)$/;
136
- const isNormalStackLine = line => {
137
- return RE_AT.test(line) && !RE_AT_PROMISE_INDEX.test(line);
138
- };
139
- const getDetails = lines => {
140
- const index = lines.findIndex(isNormalStackLine);
141
- if (index === -1) {
142
- return {
143
- actualMessage: joinLines$1(lines),
144
- rest: []
145
- };
146
- }
147
- let lastIndex = index - 1;
148
- while (++lastIndex < lines.length) {
149
- if (!isNormalStackLine(lines[lastIndex])) {
150
- break;
151
- }
152
- }
153
- return {
154
- actualMessage: lines[index - 1],
155
- rest: lines.slice(index, lastIndex)
156
- };
157
- };
158
- const splitLines$1 = lines => {
159
- return lines.split(NewLine$1);
160
- };
161
- const RE_MESSAGE_CODE_BLOCK_START = /^Error: The module '.*'$/;
162
- const RE_MESSAGE_CODE_BLOCK_END = /^\s* at/;
163
- const isMessageCodeBlockStartIndex = line => {
164
- return RE_MESSAGE_CODE_BLOCK_START.test(line);
165
- };
166
- const isMessageCodeBlockEndIndex = line => {
167
- return RE_MESSAGE_CODE_BLOCK_END.test(line);
168
- };
169
- const getMessageCodeBlock = stderr => {
170
- const lines = splitLines$1(stderr);
171
- const startIndex = lines.findIndex(isMessageCodeBlockStartIndex);
172
- const endIndex = startIndex + lines.slice(startIndex).findIndex(isMessageCodeBlockEndIndex, startIndex);
173
- const relevantLines = lines.slice(startIndex, endIndex);
174
- const relevantMessage = relevantLines.join(' ').slice('Error: '.length);
175
- return relevantMessage;
176
- };
177
- const isModuleNotFoundMessage = line => {
178
- return line.includes('[ERR_MODULE_NOT_FOUND]');
179
- };
180
- const getModuleNotFoundError = stderr => {
181
- const lines = splitLines$1(stderr);
182
- const messageIndex = lines.findIndex(isModuleNotFoundMessage);
183
- const message = lines[messageIndex];
184
- return {
185
- code: ERR_MODULE_NOT_FOUND,
186
- message
187
- };
188
- };
189
- const isModuleNotFoundError = stderr => {
190
- if (!stderr) {
191
- return false;
192
- }
193
- return stderr.includes('ERR_MODULE_NOT_FOUND');
194
- };
195
- const isModulesSyntaxError = stderr => {
196
- if (!stderr) {
197
- return false;
198
- }
199
- return stderr.includes('SyntaxError: Cannot use import statement outside a module');
200
- };
201
- const RE_NATIVE_MODULE_ERROR = /^innerError Error: Cannot find module '.*.node'/;
202
- const RE_NATIVE_MODULE_ERROR_2 = /was compiled against a different Node.js version/;
203
- const isUnhelpfulNativeModuleError = stderr => {
204
- return RE_NATIVE_MODULE_ERROR.test(stderr) && RE_NATIVE_MODULE_ERROR_2.test(stderr);
205
- };
206
- const getNativeModuleErrorMessage = stderr => {
207
- const message = getMessageCodeBlock(stderr);
208
- return {
209
- code: E_INCOMPATIBLE_NATIVE_MODULE,
210
- message: `Incompatible native node module: ${message}`
211
- };
212
- };
213
- const getModuleSyntaxError = () => {
214
- return {
215
- code: E_MODULES_NOT_SUPPORTED_IN_ELECTRON,
216
- message: `ES Modules are not supported in electron`
217
- };
218
- };
219
- const getHelpfulChildProcessError = (stdout, stderr) => {
220
- if (isUnhelpfulNativeModuleError(stderr)) {
221
- return getNativeModuleErrorMessage(stderr);
222
- }
223
- if (isModulesSyntaxError(stderr)) {
224
- return getModuleSyntaxError();
225
- }
226
- if (isModuleNotFoundError(stderr)) {
227
- return getModuleNotFoundError(stderr);
228
- }
229
- const lines = splitLines$1(stderr);
230
- const {
231
- actualMessage,
232
- rest
233
- } = getDetails(lines);
234
- return {
235
- code: '',
236
- message: actualMessage,
237
- stack: rest
238
- };
239
- };
240
- class IpcError extends VError {
241
- // @ts-ignore
242
- constructor(betterMessage, stdout = '', stderr = '') {
243
- if (stdout || stderr) {
244
- // @ts-ignore
245
- const {
246
- code,
247
- message,
248
- stack
249
- } = getHelpfulChildProcessError(stdout, stderr);
250
- const cause = new Error(message);
251
- // @ts-ignore
252
- cause.code = code;
253
- cause.stack = stack;
254
- super(cause, betterMessage);
255
- } else {
256
- super(betterMessage);
257
- }
258
- // @ts-ignore
259
- this.name = 'IpcError';
260
- // @ts-ignore
261
- this.stdout = stdout;
262
- // @ts-ignore
263
- this.stderr = stderr;
264
- }
265
- }
266
- const readyMessage = 'ready';
267
- const getData$2 = event => {
268
- return event.data;
269
- };
270
- const listen$7 = () => {
271
- // @ts-ignore
272
- if (typeof WorkerGlobalScope === 'undefined') {
273
- throw new TypeError('module is not in web worker scope');
274
- }
275
- return globalThis;
276
- };
277
- const signal$8 = global => {
278
- global.postMessage(readyMessage);
279
- };
280
- class IpcChildWithModuleWorker extends Ipc {
281
- getData(event) {
282
- return getData$2(event);
283
- }
284
- send(message) {
285
- // @ts-ignore
286
- this._rawIpc.postMessage(message);
287
- }
288
- sendAndTransfer(message) {
289
- const transfer = getTransferrables(message);
290
- // @ts-ignore
291
- this._rawIpc.postMessage(message, transfer);
292
- }
293
- dispose() {
294
- // ignore
295
- }
296
- onClose(callback) {
297
- // ignore
298
- }
299
- onMessage(callback) {
300
- this._rawIpc.addEventListener('message', callback);
301
- }
302
- }
303
- const wrap$f = global => {
304
- return new IpcChildWithModuleWorker(global);
305
- };
306
- const waitForFirstMessage = async port => {
307
- const {
308
- promise,
309
- resolve
310
- } = Promise.withResolvers();
311
- port.addEventListener('message', resolve, {
312
- once: true
313
- });
314
- const event = await promise;
315
- // @ts-ignore
316
- return event.data;
317
- };
318
- const listen$6 = async () => {
319
- const parentIpcRaw = listen$7();
320
- signal$8(parentIpcRaw);
321
- const parentIpc = wrap$f(parentIpcRaw);
322
- const firstMessage = await waitForFirstMessage(parentIpc);
323
- if (firstMessage.method !== 'initialize') {
324
- throw new IpcError('unexpected first message');
325
- }
326
- const type = firstMessage.params[0];
327
- if (type === 'message-port') {
328
- parentIpc.send({
329
- id: firstMessage.id,
330
- jsonrpc: '2.0',
331
- result: null
332
- });
333
- parentIpc.dispose();
334
- const port = firstMessage.params[1];
335
- return port;
336
- }
337
- return globalThis;
338
- };
339
- class IpcChildWithModuleWorkerAndMessagePort extends Ipc {
340
- getData(event) {
341
- return getData$2(event);
342
- }
343
- send(message) {
344
- this._rawIpc.postMessage(message);
345
- }
346
- sendAndTransfer(message) {
347
- const transfer = getTransferrables(message);
348
- this._rawIpc.postMessage(message, transfer);
349
- }
350
- dispose() {
351
- if (this._rawIpc.close) {
352
- this._rawIpc.close();
353
- }
354
- }
355
- onClose(callback) {
356
- // ignore
357
- }
358
- onMessage(callback) {
359
- this._rawIpc.addEventListener('message', callback);
360
- this._rawIpc.start();
361
- }
362
- }
363
- const wrap$e = port => {
364
- return new IpcChildWithModuleWorkerAndMessagePort(port);
365
- };
366
- const IpcChildWithModuleWorkerAndMessagePort$1 = {
367
- __proto__: null,
368
- listen: listen$6,
369
- wrap: wrap$e
370
- };
371
-
372
- class CommandNotFoundError extends Error {
373
- constructor(command) {
374
- super(`Command not found ${command}`);
375
- this.name = 'CommandNotFoundError';
376
- }
377
- }
378
- const commands = Object.create(null);
379
- const register = commandMap => {
380
- Object.assign(commands, commandMap);
381
- };
382
- const getCommand = key => {
383
- return commands[key];
384
- };
385
- const execute = (command, ...args) => {
386
- const fn = getCommand(command);
387
- if (!fn) {
388
- throw new CommandNotFoundError(command);
389
- }
390
- return fn(...args);
391
- };
392
-
393
- const Two$1 = '2.0';
394
- const callbacks = Object.create(null);
395
- const get$1 = id => {
396
- return callbacks[id];
397
- };
398
- const remove = id => {
399
- delete callbacks[id];
400
- };
401
- class JsonRpcError extends Error {
402
- constructor(message) {
403
- super(message);
404
- this.name = 'JsonRpcError';
405
- }
406
- }
407
- const NewLine = '\n';
408
- const DomException = 'DOMException';
409
- const ReferenceError$1 = 'ReferenceError';
410
- const SyntaxError$1 = 'SyntaxError';
411
- const TypeError$1 = 'TypeError';
412
- const getErrorConstructor = (message, type) => {
413
- if (type) {
414
- switch (type) {
415
- case DomException:
416
- return DOMException;
417
- case ReferenceError$1:
418
- return ReferenceError;
419
- case SyntaxError$1:
420
- return SyntaxError;
421
- case TypeError$1:
422
- return TypeError;
423
- default:
424
- return Error;
425
- }
426
- }
427
- if (message.startsWith('TypeError: ')) {
428
- return TypeError;
429
- }
430
- if (message.startsWith('SyntaxError: ')) {
431
- return SyntaxError;
432
- }
433
- if (message.startsWith('ReferenceError: ')) {
434
- return ReferenceError;
435
- }
436
- return Error;
437
- };
438
- const constructError = (message, type, name) => {
439
- const ErrorConstructor = getErrorConstructor(message, type);
440
- if (ErrorConstructor === DOMException && name) {
441
- return new ErrorConstructor(message, name);
442
- }
443
- if (ErrorConstructor === Error) {
444
- const error = new Error(message);
445
- if (name && name !== 'VError') {
446
- error.name = name;
447
- }
448
- return error;
449
- }
450
- return new ErrorConstructor(message);
451
- };
452
- const joinLines = lines => {
453
- return lines.join(NewLine);
454
- };
455
- const splitLines = lines => {
456
- return lines.split(NewLine);
457
- };
458
- const getCurrentStack = () => {
459
- const stackLinesToSkip = 3;
460
- const currentStack = joinLines(splitLines(new Error().stack || '').slice(stackLinesToSkip));
461
- return currentStack;
462
- };
463
- const getNewLineIndex = (string, startIndex = undefined) => {
464
- return string.indexOf(NewLine, startIndex);
465
- };
466
- const getParentStack = error => {
467
- let parentStack = error.stack || error.data || error.message || '';
468
- if (parentStack.startsWith(' at')) {
469
- parentStack = error.message + NewLine + parentStack;
470
- }
471
- return parentStack;
472
- };
473
- const MethodNotFound = -32601;
474
- const Custom = -32001;
475
- const restoreJsonRpcError = error => {
476
- const currentStack = getCurrentStack();
477
- if (error && error instanceof Error) {
478
- if (typeof error.stack === 'string') {
479
- error.stack = error.stack + NewLine + currentStack;
480
- }
481
- return error;
482
- }
483
- if (error && error.code && error.code === MethodNotFound) {
484
- const restoredError = new JsonRpcError(error.message);
485
- const parentStack = getParentStack(error);
486
- restoredError.stack = parentStack + NewLine + currentStack;
487
- return restoredError;
488
- }
489
- if (error && error.message) {
490
- const restoredError = constructError(error.message, error.type, error.name);
491
- if (error.data) {
492
- if (error.data.stack && error.data.type && error.message) {
493
- restoredError.stack = error.data.type + ': ' + error.message + NewLine + error.data.stack + NewLine + currentStack;
494
- } else if (error.data.stack) {
495
- restoredError.stack = error.data.stack;
496
- }
497
- if (error.data.codeFrame) {
498
- // @ts-ignore
499
- restoredError.codeFrame = error.data.codeFrame;
500
- }
501
- if (error.data.code) {
502
- // @ts-ignore
503
- restoredError.code = error.data.code;
504
- }
505
- if (error.data.type) {
506
- // @ts-ignore
507
- restoredError.name = error.data.type;
508
- }
509
- } else {
510
- if (error.stack) {
511
- const lowerStack = restoredError.stack || '';
512
- // @ts-ignore
513
- const indexNewLine = getNewLineIndex(lowerStack);
514
- const parentStack = getParentStack(error);
515
- // @ts-ignore
516
- restoredError.stack = parentStack + lowerStack.slice(indexNewLine);
517
- }
518
- if (error.codeFrame) {
519
- // @ts-ignore
520
- restoredError.codeFrame = error.codeFrame;
521
- }
522
- }
523
- return restoredError;
524
- }
525
- if (typeof error === 'string') {
526
- return new Error(`JsonRpc Error: ${error}`);
527
- }
528
- return new Error(`JsonRpc Error: ${error}`);
529
- };
530
- const unwrapJsonRpcResult = responseMessage => {
531
- if ('error' in responseMessage) {
532
- const restoredError = restoreJsonRpcError(responseMessage.error);
533
- throw restoredError;
534
- }
535
- if ('result' in responseMessage) {
536
- return responseMessage.result;
537
- }
538
- throw new JsonRpcError('unexpected response message');
539
- };
540
- const warn = (...args) => {
541
- console.warn(...args);
542
- };
543
- const resolve = (id, response) => {
544
- const fn = get$1(id);
545
- if (!fn) {
546
- console.log(response);
547
- warn(`callback ${id} may already be disposed`);
548
- return;
549
- }
550
- fn(response);
551
- remove(id);
552
- };
553
- const E_COMMAND_NOT_FOUND = 'E_COMMAND_NOT_FOUND';
554
- const getErrorType = prettyError => {
555
- if (prettyError && prettyError.type) {
556
- return prettyError.type;
557
- }
558
- if (prettyError && prettyError.constructor && prettyError.constructor.name) {
559
- return prettyError.constructor.name;
560
- }
561
- return undefined;
562
- };
563
- const isAlreadyStack = line => {
564
- return line.trim().startsWith('at ');
565
- };
566
- const getStack = prettyError => {
567
- const stackString = prettyError.stack || '';
568
- const newLineIndex = stackString.indexOf('\n');
569
- if (newLineIndex !== -1 && !isAlreadyStack(stackString.slice(0, newLineIndex))) {
570
- return stackString.slice(newLineIndex + 1);
571
- }
572
- return stackString;
573
- };
574
- const getErrorProperty = (error, prettyError) => {
575
- if (error && error.code === E_COMMAND_NOT_FOUND) {
576
- return {
577
- code: MethodNotFound,
578
- data: error.stack,
579
- message: error.message
580
- };
581
- }
582
- return {
583
- code: Custom,
584
- data: {
585
- code: prettyError.code,
586
- codeFrame: prettyError.codeFrame,
587
- name: prettyError.name,
588
- stack: getStack(prettyError),
589
- type: getErrorType(prettyError)
590
- },
591
- message: prettyError.message
592
- };
593
- };
594
- const create$1$1 = (id, error) => {
595
- return {
596
- error,
597
- id,
598
- jsonrpc: Two$1
599
- };
600
- };
601
- const getErrorResponse = (id, error, preparePrettyError, logError) => {
602
- const prettyError = preparePrettyError(error);
603
- logError(error, prettyError);
604
- const errorProperty = getErrorProperty(error, prettyError);
605
- return create$1$1(id, errorProperty);
606
- };
607
- const create$6 = (message, result) => {
608
- return {
609
- id: message.id,
610
- jsonrpc: Two$1,
611
- result: result ?? null
612
- };
613
- };
614
- const getSuccessResponse = (message, result) => {
615
- const resultProperty = result ?? null;
616
- return create$6(message, resultProperty);
617
- };
618
- const getErrorResponseSimple = (id, error) => {
619
- return {
620
- error: {
621
- code: Custom,
622
- data: error,
623
- // @ts-ignore
624
- message: error.message
625
- },
626
- id,
627
- jsonrpc: Two$1
628
- };
629
- };
630
- const getResponse = async (message, ipc, execute, preparePrettyError, logError, requiresSocket) => {
631
- try {
632
- const result = requiresSocket(message.method) ? await execute(message.method, ipc, ...message.params) : await execute(message.method, ...message.params);
633
- return getSuccessResponse(message, result);
634
- } catch (error) {
635
- if (ipc.canUseSimpleErrorResponse) {
636
- return getErrorResponseSimple(message.id, error);
637
- }
638
- return getErrorResponse(message.id, error, preparePrettyError, logError);
639
- }
640
- };
641
- const defaultPreparePrettyError = error => {
642
- return error;
643
- };
644
- const defaultLogError = () => {
645
- // ignore
646
- };
647
- const defaultRequiresSocket = () => {
648
- return false;
649
- };
650
- const defaultResolve = resolve;
651
-
652
- // TODO maybe remove this in v6 or v7, only accept options object to simplify the code
653
- const normalizeParams = args => {
654
- if (args.length === 1) {
655
- const options = args[0];
656
- return {
657
- execute: options.execute,
658
- ipc: options.ipc,
659
- logError: options.logError || defaultLogError,
660
- message: options.message,
661
- preparePrettyError: options.preparePrettyError || defaultPreparePrettyError,
662
- requiresSocket: options.requiresSocket || defaultRequiresSocket,
663
- resolve: options.resolve || defaultResolve
664
- };
665
- }
666
- return {
667
- execute: args[2],
668
- ipc: args[0],
669
- logError: args[5],
670
- message: args[1],
671
- preparePrettyError: args[4],
672
- requiresSocket: args[6],
673
- resolve: args[3]
674
- };
675
- };
676
- const handleJsonRpcMessage = async (...args) => {
677
- const options = normalizeParams(args);
678
- const {
679
- execute,
680
- ipc,
681
- logError,
682
- message,
683
- preparePrettyError,
684
- requiresSocket,
685
- resolve
686
- } = options;
687
- if ('id' in message) {
688
- if ('method' in message) {
689
- const response = await getResponse(message, ipc, execute, preparePrettyError, logError, requiresSocket);
690
- try {
691
- ipc.send(response);
692
- } catch (error) {
693
- const errorResponse = getErrorResponse(message.id, error, preparePrettyError, logError);
694
- ipc.send(errorResponse);
695
- }
696
- return;
697
- }
698
- resolve(message.id, message);
699
- return;
700
- }
701
- if ('method' in message) {
702
- await getResponse(message, ipc, execute, preparePrettyError, logError, requiresSocket);
703
- return;
704
- }
705
- throw new JsonRpcError('unexpected message');
706
- };
707
-
708
- const Two = '2.0';
709
-
710
- const create$5 = (method, params) => {
711
- return {
712
- jsonrpc: Two,
713
- method,
714
- params
715
- };
716
- };
717
-
718
- const create$4 = (id, method, params) => {
719
- const message = {
720
- id,
721
- jsonrpc: Two,
722
- method,
723
- params
724
- };
725
- return message;
726
- };
727
-
728
- let id = 0;
729
- const create$3 = () => {
730
- return ++id;
731
- };
732
-
733
- const registerPromise = map => {
734
- const id = create$3();
735
- const {
736
- promise,
737
- resolve
738
- } = Promise.withResolvers();
739
- map[id] = resolve;
740
- return {
741
- id,
742
- promise
743
- };
744
- };
745
-
746
- const invokeHelper = async (callbacks, ipc, method, params, useSendAndTransfer) => {
747
- const {
748
- id,
749
- promise
750
- } = registerPromise(callbacks);
751
- const message = create$4(id, method, params);
752
- if (useSendAndTransfer && ipc.sendAndTransfer) {
753
- ipc.sendAndTransfer(message);
754
- } else {
755
- ipc.send(message);
756
- }
757
- const responseMessage = await promise;
758
- return unwrapJsonRpcResult(responseMessage);
759
- };
760
- const createRpc = ipc => {
761
- const callbacks = Object.create(null);
762
- ipc._resolve = (id, response) => {
763
- const fn = callbacks[id];
764
- if (!fn) {
765
- console.warn(`callback ${id} may already be disposed`);
766
- return;
767
- }
768
- fn(response);
769
- delete callbacks[id];
770
- };
771
- const rpc = {
772
- async dispose() {
773
- await ipc?.dispose();
774
- },
775
- invoke(method, ...params) {
776
- return invokeHelper(callbacks, ipc, method, params, false);
777
- },
778
- invokeAndTransfer(method, ...params) {
779
- return invokeHelper(callbacks, ipc, method, params, true);
780
- },
781
- // @ts-ignore
782
- ipc,
783
- /**
784
- * @deprecated
785
- */
786
- send(method, ...params) {
787
- const message = create$5(method, params);
788
- ipc.send(message);
789
- }
790
- };
791
- return rpc;
792
- };
793
-
794
- const requiresSocket = () => {
795
- return false;
796
- };
797
- const preparePrettyError = error => {
798
- return error;
799
- };
800
- const logError = () => {
801
- // handled by renderer worker
802
- };
803
- const handleMessage = event => {
804
- const actualRequiresSocket = event?.target?.requiresSocket || requiresSocket;
805
- const actualExecute = event?.target?.execute || execute;
806
- return handleJsonRpcMessage(event.target, event.data, actualExecute, event.target._resolve, preparePrettyError, logError, actualRequiresSocket);
807
- };
808
-
809
- const handleIpc = ipc => {
810
- if ('addEventListener' in ipc) {
811
- ipc.addEventListener('message', handleMessage);
812
- } else if ('on' in ipc) {
813
- // deprecated
814
- ipc.on('message', handleMessage);
815
- }
816
- };
817
-
818
- const listen$1 = async (module, options) => {
819
- const rawIpc = await module.listen(options);
820
- if (module.signal) {
821
- module.signal(rawIpc);
822
- }
823
- const ipc = module.wrap(rawIpc);
824
- return ipc;
825
- };
826
-
827
- const create$2 = async ({
828
- commandMap
829
- }) => {
830
- // TODO create a commandMap per rpc instance
831
- register(commandMap);
832
- const ipc = await listen$1(IpcChildWithModuleWorkerAndMessagePort$1);
833
- handleIpc(ipc);
834
- const rpc = createRpc(ipc);
835
- return rpc;
836
- };
837
-
838
- const toCommandId = key => {
839
- const dotIndex = key.indexOf('.');
840
- return key.slice(dotIndex + 1);
841
- };
842
- const create$1 = () => {
843
- const states = Object.create(null);
844
- const commandMapRef = {};
845
- return {
846
- clear() {
847
- for (const key of Object.keys(states)) {
848
- delete states[key];
849
- }
850
- },
851
- diff(uid, modules, numbers) {
852
- const {
853
- newState,
854
- oldState
855
- } = states[uid];
856
- const diffResult = [];
857
- for (let i = 0; i < modules.length; i++) {
858
- const fn = modules[i];
859
- if (!fn(oldState, newState)) {
860
- diffResult.push(numbers[i]);
861
- }
862
- }
863
- return diffResult;
864
- },
865
- dispose(uid) {
866
- delete states[uid];
867
- },
868
- get(uid) {
869
- return states[uid];
870
- },
871
- getCommandIds() {
872
- const keys = Object.keys(commandMapRef);
873
- const ids = keys.map(toCommandId);
874
- return ids;
875
- },
876
- getKeys() {
877
- return Object.keys(states).map(key => {
878
- return Number.parseFloat(key);
879
- });
880
- },
881
- registerCommands(commandMap) {
882
- Object.assign(commandMapRef, commandMap);
883
- },
884
- set(uid, oldState, newState) {
885
- states[uid] = {
886
- newState,
887
- oldState
888
- };
889
- },
890
- wrapCommand(fn) {
891
- const wrapped = async (uid, ...args) => {
892
- const {
893
- newState,
894
- oldState
895
- } = states[uid];
896
- const newerState = await fn(newState, ...args);
897
- if (oldState === newerState || newState === newerState) {
898
- return;
899
- }
900
- const latestOld = states[uid];
901
- const latestNew = {
902
- ...latestOld.newState,
903
- ...newerState
904
- };
905
- states[uid] = {
906
- newState: latestNew,
907
- oldState: latestOld.oldState
908
- };
909
- };
910
- return wrapped;
911
- },
912
- wrapGetter(fn) {
913
- const wrapped = (uid, ...args) => {
914
- const {
915
- newState
916
- } = states[uid];
917
- return fn(newState, ...args);
918
- };
919
- return wrapped;
920
- },
921
- wrapLoadContent(fn) {
922
- const wrapped = async (uid, ...args) => {
923
- const {
924
- newState,
925
- oldState
926
- } = states[uid];
927
- const result = await fn(newState, ...args);
928
- const {
929
- error,
930
- state
931
- } = result;
932
- if (oldState === state || newState === state) {
933
- return {
934
- error
935
- };
936
- }
937
- const latestOld = states[uid];
938
- const latestNew = {
939
- ...latestOld.newState,
940
- ...state
941
- };
942
- states[uid] = {
943
- newState: latestNew,
944
- oldState: latestOld.oldState
945
- };
946
- return {
947
- error
948
- };
949
- };
950
- return wrapped;
951
- }
952
- };
953
- };
954
- const terminate = () => {
955
- globalThis.close();
956
- };
957
-
958
- const createEventCategoryFilterOptions = () => {
959
- return [{
960
- label: 'All',
961
- value: All
962
- }, {
963
- label: 'Tools',
964
- value: Tools
965
- }, {
966
- label: 'Network',
967
- value: Network
968
- }, {
969
- label: 'UI',
970
- value: Ui
971
- }, {
972
- label: 'Stream',
973
- value: Stream
974
- }];
975
- };
976
-
977
- const getEventCategoryFilterLabel = eventCategoryFilter => {
978
- switch (eventCategoryFilter) {
979
- case Network:
980
- return 'Network';
981
- case Stream:
982
- return 'Stream';
983
- case Tools:
984
- return 'Tools';
985
- case Ui:
986
- return 'UI';
987
- default:
988
- return 'All';
989
- }
990
- };
991
-
992
- const All = 'all';
993
- const Tools = 'tools';
994
- const Network = 'network';
995
- const Ui = 'ui';
996
- const Stream = 'stream';
997
-
998
- const RE_SPACE = /\s+/;
999
- const tokenToEventCategoryFilter = new Map([['@tools', Tools], ['@network', Network], ['@ui', Ui], ['@stream', Stream]]);
1000
- const parseFilterValue = filterValue => {
1001
- const normalizedFilter = filterValue.trim().toLowerCase();
1002
- if (!normalizedFilter) {
1003
- return {
1004
- eventCategoryFilter: All,
1005
- filterText: ''
1006
- };
1007
- }
1008
- const parts = normalizedFilter.split(RE_SPACE);
1009
- const eventCategoryFilter = parts.map(part => tokenToEventCategoryFilter.get(part)).find(Boolean) || All;
1010
- const filterText = parts.filter(part => !tokenToEventCategoryFilter.has(part)).join(' ');
1011
- return {
1012
- eventCategoryFilter,
1013
- filterText
1014
- };
1015
- };
1016
-
1017
- const {
1018
- get,
1019
- getCommandIds,
1020
- registerCommands,
1021
- set,
1022
- wrapCommand,
1023
- wrapGetter
1024
- } = create$1();
1025
-
1026
- const Response = 'response';
1027
- const Preview = 'preview';
1028
- const Timing = 'timing';
1029
- const detailTabs = [Preview, Response, Timing];
1030
- const isDetailTab = value => {
1031
- return value === Response || value === Preview || value === Timing;
1032
- };
1033
- const getDetailTabLabel = value => {
1034
- if (value === Preview) {
1035
- return 'Preview';
1036
- }
1037
- if (value === Timing) {
1038
- return 'Timing';
1039
- }
1040
- return 'Response';
1041
- };
1042
-
1043
- const defaultTableWidth = 480;
1044
- const minTableWidth = 240;
1045
- const minDetailsWidth = 280;
1046
- const sashWidth = 8;
1047
- const viewPadding = 8;
1048
- const timelineHorizontalPadding = 10;
1049
- const horizontalPadding = viewPadding * 2;
1050
- const leftPadding = viewPadding;
1051
- const getMainWidth = width => {
1052
- return Math.max(0, width - horizontalPadding);
1053
- };
1054
- const clampTableWidth = (width, tableWidth) => {
1055
- const mainWidth = getMainWidth(width);
1056
- const maxTableWidth = Math.max(0, mainWidth - minDetailsWidth - sashWidth);
1057
- const minClampedTableWidth = Math.min(minTableWidth, maxTableWidth);
1058
- return Math.max(minClampedTableWidth, Math.min(tableWidth, maxTableWidth));
1059
- };
1060
- const getDetailsWidth = (width, tableWidth) => {
1061
- const mainWidth = getMainWidth(width);
1062
- const clampedTableWidth = clampTableWidth(width, tableWidth);
1063
- return Math.max(0, mainWidth - clampedTableWidth - sashWidth);
1064
- };
1065
- const getTableWidthFromClientX = (viewX, width, clientX) => {
1066
- const nextTableWidth = clientX - viewX - leftPadding;
1067
- return clampTableWidth(width, nextTableWidth);
1068
- };
1069
-
1070
- const createDefaultState = () => {
1071
- return {
1072
- assetDir: '',
1073
- databaseName: 'lvce-chat-view-sessions',
1074
- dataBaseVersion: 2,
1075
- errorMessage: '',
1076
- eventCategoryFilter: All,
1077
- eventCategoryFilterOptions: createEventCategoryFilterOptions(),
1078
- events: [],
1079
- eventStoreName: 'chat-view-events',
1080
- filterValue: '',
1081
- height: 0,
1082
- indexedDbSupportOverride: undefined,
1083
- initial: false,
1084
- platform: 0,
1085
- selectedDetailTab: Response,
1086
- selectedEvent: null,
1087
- selectedEventId: null,
1088
- selectedEventIndex: null,
1089
- sessionId: '',
1090
- sessionIdIndexName: 'sessionId',
1091
- showEventStreamFinishedEvents: false,
1092
- showInputEvents: false,
1093
- showResponsePartEvents: false,
1094
- tableWidth: defaultTableWidth,
1095
- timelineEndSeconds: '',
1096
- timelineSelectionActive: false,
1097
- timelineSelectionAnchorSeconds: '',
1098
- timelineSelectionFocusSeconds: '',
1099
- timelineStartSeconds: '',
1100
- uid: 0,
1101
- uri: '',
1102
- useDevtoolsLayout: true,
1103
- width: 0,
1104
- x: 0,
1105
- y: 0
1106
- };
1107
- };
1108
-
1109
- const validEventCategoryFilters = new Set([All, Network, Stream, Tools, Ui]);
1110
- const getRestoredEventCategoryFilter = savedState => {
1111
- if (typeof savedState.eventCategoryFilter === 'string' && validEventCategoryFilters.has(savedState.eventCategoryFilter)) {
1112
- return savedState.eventCategoryFilter;
1113
- }
1114
- if (typeof savedState.filterValue === 'string') {
1115
- return parseFilterValue(savedState.filterValue).eventCategoryFilter;
1116
- }
1117
- return All;
1118
- };
1119
- const create = (uid, uri, x, y, width, height, platform, assetDir, sessionId = '', databaseName = 'lvce-chat-view-sessions', dataBaseVersion = 2, eventStoreName = 'chat-view-events', sessionIdIndexName = 'sessionId', savedState = {}) => {
1120
- const defaultState = createDefaultState();
1121
- const {
1122
- filterValue,
1123
- selectedEventId,
1124
- tableWidth,
1125
- timelineEndSeconds,
1126
- timelineStartSeconds
1127
- } = savedState;
1128
- const restoredEventCategoryFilter = getRestoredEventCategoryFilter(savedState);
1129
- const state = {
1130
- ...defaultState,
1131
- assetDir,
1132
- databaseName,
1133
- dataBaseVersion,
1134
- eventCategoryFilter: restoredEventCategoryFilter,
1135
- eventStoreName,
1136
- filterValue: filterValue ?? defaultState.filterValue,
1137
- height,
1138
- initial: true,
1139
- platform,
1140
- selectedEventId: selectedEventId ?? defaultState.selectedEventId,
1141
- sessionId,
1142
- sessionIdIndexName,
1143
- tableWidth: tableWidth ?? defaultState.tableWidth,
1144
- timelineEndSeconds: timelineEndSeconds ?? defaultState.timelineEndSeconds,
1145
- timelineStartSeconds: timelineStartSeconds ?? defaultState.timelineStartSeconds,
1146
- uid,
1147
- uri,
1148
- width,
1149
- x,
1150
- y
1151
- };
1152
- set(uid, state, state);
1153
- };
1154
-
1155
- const RenderItems = 1;
1156
- const RenderCss = 2;
1157
- const RenderIncremental = 3;
1158
-
1159
- const diff = (oldState, newState) => {
1160
- if (oldState.errorMessage !== newState.errorMessage || oldState.eventCategoryFilter !== newState.eventCategoryFilter || oldState.events !== newState.events || oldState.filterValue !== newState.filterValue || oldState.sessionId !== newState.sessionId || oldState.showEventStreamFinishedEvents !== newState.showEventStreamFinishedEvents || oldState.showInputEvents !== newState.showInputEvents || oldState.showResponsePartEvents !== newState.showResponsePartEvents || oldState.tableWidth !== newState.tableWidth || oldState.timelineEndSeconds !== newState.timelineEndSeconds || oldState.timelineSelectionActive !== newState.timelineSelectionActive || oldState.timelineSelectionAnchorSeconds !== newState.timelineSelectionAnchorSeconds || oldState.timelineSelectionFocusSeconds !== newState.timelineSelectionFocusSeconds || oldState.timelineStartSeconds !== newState.timelineStartSeconds || oldState.useDevtoolsLayout !== newState.useDevtoolsLayout || oldState.selectedDetailTab !== newState.selectedDetailTab || oldState.selectedEvent !== newState.selectedEvent || oldState.selectedEventIndex !== newState.selectedEventIndex || oldState.width !== newState.width || oldState.uid !== newState.uid) {
1161
- return [RenderIncremental, RenderCss];
1162
- }
1163
- return [];
1164
- };
1165
-
1166
- const diff2 = uid => {
1167
- const {
1168
- newState,
1169
- oldState
1170
- } = get(uid);
1171
- return diff(oldState, newState);
1172
- };
1173
-
1174
- const handleCloseDetails = state => {
1175
- return {
1176
- ...state,
1177
- selectedEvent: null,
1178
- selectedEventId: null,
1179
- selectedEventIndex: null
1180
- };
1181
- };
1182
-
1183
- const handleDetailsContextMenu = state => {
1184
- return state;
1185
- };
1186
-
1187
- const handleDetailTab = (state, value) => {
1188
- if (!isDetailTab(value)) {
1189
- return state;
1190
- }
1191
- return {
1192
- ...state,
1193
- selectedDetailTab: value
1194
- };
1195
- };
1196
-
1197
- const hasMatchingToolName$1 = (startedEvent, finishedEvent) => {
1198
- if (typeof startedEvent.toolName === 'string' && typeof finishedEvent.toolName === 'string') {
1199
- return startedEvent.toolName === finishedEvent.toolName;
1200
- }
1201
- return true;
1202
- };
1203
-
1204
- const isMatchingToolExecutionPair = (startedEvent, finishedEvent) => {
1205
- return startedEvent.sessionId === finishedEvent.sessionId && hasMatchingToolName$1(startedEvent, finishedEvent);
1206
- };
1207
-
1208
- const startedEventType$1 = 'tool-execution-started';
1209
- const finishedEventType$1 = 'tool-execution-finished';
1210
- const mergedEventType = 'tool-execution';
1211
-
1212
- const isToolExecutionFinishedEvent = event => {
1213
- return event.type === finishedEventType$1;
1214
- };
1215
-
1216
- const isToolExecutionStartedEvent = event => {
1217
- return event.type === startedEventType$1;
1218
- };
1219
-
1220
- const getTimestamp$1 = value => {
1221
- return typeof value === 'string' || typeof value === 'number' ? value : undefined;
1222
- };
1223
-
1224
- const getEndedTimestamp = event => {
1225
- return getTimestamp$1(event.ended) ?? getTimestamp$1(event.endTime) ?? getTimestamp$1(event.endTimestamp) ?? getTimestamp$1(event.timestamp);
1226
- };
1227
-
1228
- const eventStableIds = new WeakMap();
1229
- const eventStableIdState = {
1230
- nextStableEventId: 1
1231
- };
1232
-
1233
- const getOrCreateStableEventId = event => {
1234
- const existingStableEventId = eventStableIds.get(event);
1235
- if (existingStableEventId) {
1236
- return existingStableEventId;
1237
- }
1238
- const stableEventId = `event-${eventStableIdState.nextStableEventId++}`;
1239
- eventStableIds.set(event, stableEventId);
1240
- return stableEventId;
1241
- };
1242
-
1243
- const getStartedTimestamp = event => {
1244
- return getTimestamp$1(event.started) ?? getTimestamp$1(event.startTime) ?? getTimestamp$1(event.startTimestamp) ?? getTimestamp$1(event.timestamp);
1245
- };
1246
-
1247
- const setStableEventId = (event, stableEventId) => {
1248
- eventStableIds.set(event, stableEventId);
1249
- };
1250
-
1251
- const mergeToolExecutionEvents$1 = (startedEvent, finishedEvent) => {
1252
- const ended = getEndedTimestamp(finishedEvent);
1253
- const {
1254
- eventId
1255
- } = startedEvent;
1256
- const started = getStartedTimestamp(startedEvent);
1257
- const mergedEvent = {
1258
- ...startedEvent,
1259
- ...finishedEvent,
1260
- ...(ended === undefined ? {} : {
1261
- ended
1262
- }),
1263
- ...(eventId === undefined ? {} : {
1264
- eventId
1265
- }),
1266
- ...(started === undefined ? {} : {
1267
- started
1268
- }),
1269
- type: mergedEventType
1270
- };
1271
- const stableEventId = `${getOrCreateStableEventId(startedEvent)}:${getOrCreateStableEventId(finishedEvent)}`;
1272
- setStableEventId(mergedEvent, stableEventId);
1273
- return mergedEvent;
1274
- };
1275
-
1276
- const getStableEventId = event => {
1277
- return getOrCreateStableEventId(event);
1278
- };
1279
-
1280
- const collapseToolExecutionEvents = events => {
1281
- const collapsedEvents = [];
1282
- for (let i = 0; i < events.length; i++) {
1283
- const event = events[i];
1284
- if (isToolExecutionStartedEvent(event)) {
1285
- const nextEvent = events[i + 1];
1286
- if (nextEvent && isToolExecutionFinishedEvent(nextEvent) && isMatchingToolExecutionPair(event, nextEvent)) {
1287
- collapsedEvents.push(mergeToolExecutionEvents$1(event, nextEvent));
1288
- i++;
1289
- continue;
1290
- }
1291
- }
1292
- collapsedEvents.push(event);
1293
- }
1294
- return collapsedEvents;
1295
- };
1296
-
1297
- const getVisibleEvents = (events, showInputEvents, showResponsePartEvents, showEventStreamFinishedEvents) => {
1298
- return events.filter(event => {
1299
- if (!showInputEvents && event.type === 'handle-input') {
1300
- return false;
1301
- }
1302
- if (!showResponsePartEvents && event.type === 'sse-response-part') {
1303
- return false;
1304
- }
1305
- if (!showEventStreamFinishedEvents && event.type === 'event-stream-finished') {
1306
- return false;
1307
- }
1308
- // hide session creation events by default — not useful in the debug view
1309
- if (event.type === 'chat-session-created') {
1310
- return false;
1311
- }
1312
- return true;
1313
- });
1314
- };
1315
-
1316
- const isNetworkEvent = event => {
1317
- const normalizedType = event.type.toLowerCase();
1318
- return normalizedType === 'request' || normalizedType === 'response' || normalizedType === 'handle-response' || normalizedType.includes('fetch') || normalizedType.includes('xhr');
1319
- };
1320
-
1321
- const isStreamEvent = event => {
1322
- return event.type === 'sse-response-part' || event.type === 'event-stream-finished';
1323
- };
1324
-
1325
- const toolEventTypePrefix = 'tool-execution';
1326
- const isToolEvent = event => {
1327
- return event.type.startsWith(toolEventTypePrefix);
1328
- };
1329
-
1330
- const isUiEvent = event => {
1331
- return event.type.startsWith('handle-') && event.type !== 'handle-response';
1332
- };
1333
-
1334
- const matchesEventCategoryFilter = (event, eventCategoryFilter) => {
1335
- switch (eventCategoryFilter) {
1336
- case Network:
1337
- return isNetworkEvent(event);
1338
- case Stream:
1339
- return isStreamEvent(event);
1340
- case Tools:
1341
- return isToolEvent(event);
1342
- case Ui:
1343
- return isUiEvent(event);
1344
- default:
1345
- return true;
1346
- }
1347
- };
1348
-
1349
- const getFilteredEvents = (events, filterValue, eventCategoryFilter, showInputEvents, showResponsePartEvents, showEventStreamFinishedEvents) => {
1350
- const visibleEvents = getVisibleEvents(events, showInputEvents, showResponsePartEvents, showEventStreamFinishedEvents);
1351
- const collapsedEvents = collapseToolExecutionEvents(visibleEvents);
1352
- const parsedFilter = parseFilterValue(filterValue);
1353
- const activeEventCategoryFilter = parsedFilter.eventCategoryFilter === All ? eventCategoryFilter : parsedFilter.eventCategoryFilter;
1354
- const filteredByCategory = collapsedEvents.filter(event => matchesEventCategoryFilter(event, activeEventCategoryFilter));
1355
- const {
1356
- filterText
1357
- } = parsedFilter;
1358
- if (!filterText) {
1359
- return filteredByCategory;
1360
- }
1361
- return filteredByCategory.filter(event => JSON.stringify(event).toLowerCase().includes(filterText));
1362
- };
1363
-
1364
- const toTimeNumber = value => {
1365
- if (typeof value === 'number' && Number.isFinite(value)) {
1366
- return value;
1367
- }
1368
- if (typeof value === 'string') {
1369
- const timestamp = Date.parse(value);
1370
- if (!Number.isNaN(timestamp)) {
1371
- return timestamp;
1372
- }
1373
- }
1374
- return undefined;
1375
- };
1376
-
1377
- const getEventTime = event => {
1378
- return toTimeNumber(event.started ?? event.startTime ?? event.startTimestamp ?? event.timestamp);
1379
- };
1380
-
1381
- const maxBarUnits = 8;
1382
- const parseTimelineSeconds = value => {
1383
- const trimmed = value.trim();
1384
- if (!trimmed) {
1385
- return undefined;
1386
- }
1387
- const parsed = Number.parseFloat(trimmed);
1388
- if (!Number.isFinite(parsed) || parsed < 0) {
1389
- return undefined;
1390
- }
1391
- return parsed;
1392
- };
1393
- const roundSeconds = value => {
1394
- return Number(value.toFixed(3));
1395
- };
1396
- const getEventsWithTime = events => {
1397
- return events.flatMap(event => {
1398
- const time = getEventTime(event);
1399
- if (time === undefined) {
1400
- return [];
1401
- }
1402
- return [{
1403
- event,
1404
- time
1405
- }];
1406
- });
1407
- };
1408
- const getTimelineDurationSeconds = events => {
1409
- const eventsWithTime = getEventsWithTime(events);
1410
- if (eventsWithTime.length === 0) {
1411
- return 0;
1412
- }
1413
- const baseTime = eventsWithTime[0].time;
1414
- const lastTime = eventsWithTime.at(-1)?.time ?? baseTime;
1415
- return roundSeconds(Math.max(0, lastTime - baseTime) / 1000);
1416
- };
1417
- const getSelectionPercent = (value, durationSeconds) => {
1418
- if (durationSeconds <= 0) {
1419
- return 0;
1420
- }
1421
- return Number((value / durationSeconds * 100).toFixed(3));
1422
- };
1423
- const getNormalizedRange = (durationSeconds, startValue, endValue) => {
1424
- const parsedStart = parseTimelineSeconds(startValue);
1425
- const parsedEnd = parseTimelineSeconds(endValue);
1426
- if (parsedStart === undefined && parsedEnd === undefined) {
1427
- return {
1428
- endSeconds: null,
1429
- hasSelection: false,
1430
- startSeconds: null
1431
- };
1432
- }
1433
- const rawStart = parsedStart ?? 0;
1434
- const rawEnd = parsedEnd ?? durationSeconds;
1435
- const normalizedStart = Math.max(0, Math.min(durationSeconds, Math.min(rawStart, rawEnd)));
1436
- const normalizedEnd = Math.max(0, Math.min(durationSeconds, Math.max(rawStart, rawEnd)));
1437
- return {
1438
- endSeconds: roundSeconds(normalizedEnd),
1439
- hasSelection: true,
1440
- startSeconds: roundSeconds(normalizedStart)
1441
- };
1442
- };
1443
- const filterEventsByTimelineRange = (events, startValue, endValue) => {
1444
- const eventsWithTime = getEventsWithTime(events);
1445
- if (eventsWithTime.length === 0) {
1446
- return events;
1447
- }
1448
- const baseTime = eventsWithTime[0].time;
1449
- const lastTime = eventsWithTime.at(-1)?.time ?? baseTime;
1450
- const durationSeconds = roundSeconds(Math.max(0, lastTime - baseTime) / 1000);
1451
- const range = getNormalizedRange(durationSeconds, startValue, endValue);
1452
- if (!range.hasSelection || range.startSeconds === null || range.endSeconds === null) {
1453
- return events;
1454
- }
1455
- const startTime = baseTime + range.startSeconds * 1000;
1456
- const endTime = baseTime + range.endSeconds * 1000;
1457
- return eventsWithTime.filter(item => item.time >= startTime && item.time <= endTime).map(item => item.event);
1458
- };
1459
- const getTimelineInfo = (events, startValue, endValue) => {
1460
- const eventsWithTime = getEventsWithTime(events);
1461
- if (eventsWithTime.length === 0) {
1462
- return {
1463
- buckets: [],
1464
- durationSeconds: 0,
1465
- endSeconds: null,
1466
- hasSelection: false,
1467
- selectionEndPercent: null,
1468
- selectionStartPercent: null,
1469
- startSeconds: null
1470
- };
1471
- }
1472
- const baseTime = eventsWithTime[0].time;
1473
- const lastTime = eventsWithTime.at(-1)?.time ?? baseTime;
1474
- const durationMs = Math.max(0, lastTime - baseTime);
1475
- const durationSeconds = roundSeconds(durationMs / 1000);
1476
- const range = getNormalizedRange(durationSeconds, startValue, endValue);
1477
- const bucketCount = durationSeconds === 0 ? 1 : Math.max(12, Math.min(48, Math.ceil(durationSeconds)));
1478
- const bucketDurationMs = durationMs === 0 ? 1000 : durationMs / bucketCount;
1479
- const counts = Array.from({
1480
- length: bucketCount
1481
- }).fill(0);
1482
- for (const item of eventsWithTime) {
1483
- const offsetMs = item.time - baseTime;
1484
- const index = durationMs === 0 ? 0 : Math.min(bucketCount - 1, Math.floor(offsetMs / durationMs * bucketCount));
1485
- counts[index] += 1;
1486
- }
1487
- const maxCount = Math.max(...counts);
1488
- const selectionStartPercent = range.hasSelection && range.startSeconds !== null ? getSelectionPercent(range.startSeconds, durationSeconds) : null;
1489
- const selectionEndPercent = range.hasSelection && range.endSeconds !== null ? getSelectionPercent(range.endSeconds, durationSeconds) : null;
1490
- const buckets = counts.map((count, index) => {
1491
- const bucketStartMs = index * bucketDurationMs;
1492
- const bucketEndMs = index === bucketCount - 1 ? durationMs : (index + 1) * bucketDurationMs;
1493
- const hasSelection = range.hasSelection && range.startSeconds !== null && range.endSeconds !== null;
1494
- const selectionStartMs = hasSelection ? range.startSeconds * 1000 : 0;
1495
- const selectionEndMs = hasSelection ? range.endSeconds * 1000 : 0;
1496
- return {
1497
- count,
1498
- endSeconds: roundSeconds(bucketEndMs / 1000),
1499
- isSelected: hasSelection && bucketEndMs >= selectionStartMs && bucketStartMs <= selectionEndMs,
1500
- startSeconds: roundSeconds(bucketStartMs / 1000),
1501
- unitCount: count === 0 ? 0 : Math.max(1, Math.round(count / maxCount * maxBarUnits))
1502
- };
1503
- });
1504
- return {
1505
- buckets,
1506
- durationSeconds,
1507
- endSeconds: range.endSeconds,
1508
- hasSelection: range.hasSelection,
1509
- selectionEndPercent,
1510
- selectionStartPercent,
1511
- startSeconds: range.startSeconds
1512
- };
1513
- };
1514
-
1515
- const getCurrentEvents$3 = state => {
1516
- const filteredEvents = getFilteredEvents(state.events, state.filterValue, state.eventCategoryFilter, state.showInputEvents, state.showResponsePartEvents, state.showEventStreamFinishedEvents);
1517
- return filterEventsByTimelineRange(filteredEvents, state.timelineStartSeconds, state.timelineEndSeconds);
1518
- };
1519
- const getEventIndexByStableId$1 = (events, event) => {
1520
- const stableEventId = getStableEventId(event);
1521
- return events.findIndex(candidate => getStableEventId(candidate) === stableEventId);
1522
- };
1523
- const getSelectedEventIndex$1 = state => {
1524
- const {
1525
- selectedEventIndex
1526
- } = state;
1527
- if (selectedEventIndex === null) {
1528
- return null;
1529
- }
1530
- const filteredEvents = getCurrentEvents$3(state);
1531
- const selectedEvent = filteredEvents[selectedEventIndex];
1532
- if (!selectedEvent) {
1533
- return null;
1534
- }
1535
- const newIndex = getEventIndexByStableId$1(filteredEvents, selectedEvent);
1536
- if (newIndex === -1) {
1537
- return null;
1538
- }
1539
- return newIndex;
1540
- };
1541
- const getPreservedSelectedEventIndex$1 = (oldState, newState) => {
1542
- const {
1543
- selectedEventIndex
1544
- } = oldState;
1545
- if (selectedEventIndex === null) {
1546
- return null;
1547
- }
1548
- const oldFilteredEvents = getCurrentEvents$3(oldState);
1549
- const selectedEvent = oldFilteredEvents[selectedEventIndex];
1550
- if (!selectedEvent) {
1551
- return null;
1552
- }
1553
- const newFilteredEvents = getCurrentEvents$3(newState);
1554
- const newIndex = getEventIndexByStableId$1(newFilteredEvents, selectedEvent);
1555
- if (newIndex === -1) {
1556
- return null;
1557
- }
1558
- return newIndex;
1559
- };
1560
- const withPreservedSelection$1 = (state, nextState) => {
1561
- const selectedEventIndex = getPreservedSelectedEventIndex$1(state, nextState);
1562
- return {
1563
- ...nextState,
1564
- selectedEvent: selectedEventIndex === null ? null : state.selectedEvent,
1565
- selectedEventId: selectedEventIndex === null ? null : state.selectedEventId,
1566
- selectedEventIndex
1567
- };
1568
- };
1569
-
1570
- const handleEventCategoryFilter = (state, value) => {
1571
- const nextState = {
1572
- ...state,
1573
- eventCategoryFilter: value || All
1574
- };
1575
- return withPreservedSelection$1(state, nextState);
1576
- };
1577
-
1578
- let workerRpc;
1579
- const setWorkerRpc = value => {
1580
- workerRpc = value;
1581
- };
1582
- const invoke = async (method, ...params) => {
1583
- if (!workerRpc) {
1584
- throw new Error('worker rpc is not initialized');
1585
- }
1586
- return workerRpc.invoke(method, ...params);
1587
- };
1588
-
1589
- const chatStorageWorkerClientDependencies = {
1590
- invoke: invoke
1591
- };
1592
- const listChatViewEvents$1 = async sessionId => {
1593
- return chatStorageWorkerClientDependencies.invoke('ChatStorage.listChatViewEvents', sessionId);
1594
- };
1595
- const loadSelectedEvent$1 = async (sessionId, eventId, type) => {
1596
- return chatStorageWorkerClientDependencies.invoke('ChatStorage.loadSelectedEvent', sessionId, eventId, type);
1597
- };
1598
-
1599
- // cspell:ignore IDBP
1600
-
1601
- const startedEventType = 'tool-execution-started';
1602
- const finishedEventType = 'tool-execution-finished';
1603
- const getRawEventBySessionIdAndEventId = async (store, sessionId, sessionIdIndexName, eventId) => {
1604
- if (eventId < 1) {
1605
- return undefined;
1606
- }
1607
- if (store.indexNames.contains(sessionIdIndexName)) {
1608
- const index = store.index(sessionIdIndexName);
1609
- const keys = await index.getAllKeys(sessionId, eventId);
1610
- if (keys.length < eventId) {
1611
- return undefined;
1612
- }
1613
- const key = keys.at(-1);
1614
- if (key === undefined) {
1615
- return undefined;
1616
- }
1617
- const event = await store.get(key);
1618
- return event;
1619
- }
1620
- const all = await store.getAll();
1621
- const events = all.filter(event => event.sessionId === sessionId);
1622
- return events[eventId - 1];
1623
- };
1624
- const getTimestamp = value => {
1625
- return typeof value === 'string' || typeof value === 'number' ? value : undefined;
1626
- };
1627
- const hasMatchingToolName = (startedEvent, finishedEvent) => {
1628
- if (typeof startedEvent.toolName === 'string' && typeof finishedEvent.toolName === 'string') {
1629
- return startedEvent.toolName === finishedEvent.toolName;
1630
- }
1631
- return true;
1632
- };
1633
- const mergeToolExecutionEvents = (startedEvent, finishedEvent, eventId) => {
1634
- const ended = getTimestamp(finishedEvent.ended) ?? getTimestamp(finishedEvent.endTime) ?? getTimestamp(finishedEvent.timestamp);
1635
- const started = getTimestamp(startedEvent.started) ?? getTimestamp(startedEvent.startTime) ?? getTimestamp(startedEvent.timestamp);
1636
- return {
1637
- ...startedEvent,
1638
- ...finishedEvent,
1639
- ...(ended === undefined ? {} : {
1640
- ended
1641
- }),
1642
- eventId,
1643
- ...(started === undefined ? {} : {
1644
- started
1645
- }),
1646
- type: 'tool-execution'
1647
- };
1648
- };
1649
- const getEventDetailsBySessionIdAndEventId = async (store, sessionId, sessionIdIndexName, eventId, summaryType) => {
1650
- const event = await getRawEventBySessionIdAndEventId(store, sessionId, sessionIdIndexName, eventId);
1651
- if (!event) {
1652
- return undefined;
1653
- }
1654
- if (summaryType !== 'tool-execution') {
1655
- return {
1656
- ...event,
1657
- eventId
1658
- };
1659
- }
1660
- if (event.type !== startedEventType) {
1661
- return {
1662
- ...event,
1663
- eventId
1664
- };
1665
- }
1666
- const nextEvent = await getRawEventBySessionIdAndEventId(store, sessionId, sessionIdIndexName, eventId + 1);
1667
- if (!nextEvent || nextEvent.type !== finishedEventType || nextEvent.sessionId !== sessionId || !hasMatchingToolName(event, nextEvent)) {
1668
- return {
1669
- ...event,
1670
- eventId
1671
- };
1672
- }
1673
- return mergeToolExecutionEvents(event, nextEvent, eventId);
1674
- };
1675
-
1676
- const instanceOfAny = (object, constructors) => constructors.some(c => object instanceof c);
1677
- let idbProxyableTypes;
1678
- let cursorAdvanceMethods;
1679
- // This is a function to prevent it throwing up in node environments.
1680
- function getIdbProxyableTypes() {
1681
- return idbProxyableTypes || (idbProxyableTypes = [IDBDatabase, IDBObjectStore, IDBIndex, IDBCursor, IDBTransaction]);
1682
- }
1683
- // This is a function to prevent it throwing up in node environments.
1684
- function getCursorAdvanceMethods() {
1685
- return cursorAdvanceMethods || (cursorAdvanceMethods = [IDBCursor.prototype.advance, IDBCursor.prototype.continue, IDBCursor.prototype.continuePrimaryKey]);
1686
- }
1687
- const transactionDoneMap = new WeakMap();
1688
- const transformCache = new WeakMap();
1689
- const reverseTransformCache = new WeakMap();
1690
- function promisifyRequest(request) {
1691
- const promise = new Promise((resolve, reject) => {
1692
- const unlisten = () => {
1693
- request.removeEventListener('success', success);
1694
- request.removeEventListener('error', error);
1695
- };
1696
- const success = () => {
1697
- resolve(wrap(request.result));
1698
- unlisten();
1699
- };
1700
- const error = () => {
1701
- reject(request.error);
1702
- unlisten();
1703
- };
1704
- request.addEventListener('success', success);
1705
- request.addEventListener('error', error);
1706
- });
1707
- // This mapping exists in reverseTransformCache but doesn't exist in transformCache. This
1708
- // is because we create many promises from a single IDBRequest.
1709
- reverseTransformCache.set(promise, request);
1710
- return promise;
1711
- }
1712
- function cacheDonePromiseForTransaction(tx) {
1713
- // Early bail if we've already created a done promise for this transaction.
1714
- if (transactionDoneMap.has(tx)) return;
1715
- const done = new Promise((resolve, reject) => {
1716
- const unlisten = () => {
1717
- tx.removeEventListener('complete', complete);
1718
- tx.removeEventListener('error', error);
1719
- tx.removeEventListener('abort', error);
1720
- };
1721
- const complete = () => {
1722
- resolve();
1723
- unlisten();
1724
- };
1725
- const error = () => {
1726
- reject(tx.error || new DOMException('AbortError', 'AbortError'));
1727
- unlisten();
1728
- };
1729
- tx.addEventListener('complete', complete);
1730
- tx.addEventListener('error', error);
1731
- tx.addEventListener('abort', error);
1732
- });
1733
- // Cache it for later retrieval.
1734
- transactionDoneMap.set(tx, done);
1735
- }
1736
- let idbProxyTraps = {
1737
- get(target, prop, receiver) {
1738
- if (target instanceof IDBTransaction) {
1739
- // Special handling for transaction.done.
1740
- if (prop === 'done') return transactionDoneMap.get(target);
1741
- // Make tx.store return the only store in the transaction, or undefined if there are many.
1742
- if (prop === 'store') {
1743
- return receiver.objectStoreNames[1] ? undefined : receiver.objectStore(receiver.objectStoreNames[0]);
1744
- }
1745
- }
1746
- // Else transform whatever we get back.
1747
- return wrap(target[prop]);
1748
- },
1749
- set(target, prop, value) {
1750
- target[prop] = value;
1751
- return true;
1752
- },
1753
- has(target, prop) {
1754
- if (target instanceof IDBTransaction && (prop === 'done' || prop === 'store')) {
1755
- return true;
1756
- }
1757
- return prop in target;
1758
- }
1759
- };
1760
- function replaceTraps(callback) {
1761
- idbProxyTraps = callback(idbProxyTraps);
1762
- }
1763
- function wrapFunction(func) {
1764
- // Due to expected object equality (which is enforced by the caching in `wrap`), we
1765
- // only create one new func per func.
1766
- // Cursor methods are special, as the behaviour is a little more different to standard IDB. In
1767
- // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the
1768
- // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense
1769
- // with real promises, so each advance methods returns a new promise for the cursor object, or
1770
- // undefined if the end of the cursor has been reached.
1771
- if (getCursorAdvanceMethods().includes(func)) {
1772
- return function (...args) {
1773
- // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use
1774
- // the original object.
1775
- func.apply(unwrap(this), args);
1776
- return wrap(this.request);
1777
- };
1778
- }
1779
- return function (...args) {
1780
- // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use
1781
- // the original object.
1782
- return wrap(func.apply(unwrap(this), args));
1783
- };
1784
- }
1785
- function transformCachableValue(value) {
1786
- if (typeof value === 'function') return wrapFunction(value);
1787
- // This doesn't return, it just creates a 'done' promise for the transaction,
1788
- // which is later returned for transaction.done (see idbObjectHandler).
1789
- if (value instanceof IDBTransaction) cacheDonePromiseForTransaction(value);
1790
- if (instanceOfAny(value, getIdbProxyableTypes())) return new Proxy(value, idbProxyTraps);
1791
- // Return the same value back if we're not going to transform it.
1792
- return value;
1793
- }
1794
- function wrap(value) {
1795
- // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because
1796
- // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.
1797
- if (value instanceof IDBRequest) return promisifyRequest(value);
1798
- // If we've already transformed this value before, reuse the transformed value.
1799
- // This is faster, but it also provides object equality.
1800
- if (transformCache.has(value)) return transformCache.get(value);
1801
- const newValue = transformCachableValue(value);
1802
- // Not all types are transformed.
1803
- // These may be primitive types, so they can't be WeakMap keys.
1804
- if (newValue !== value) {
1805
- transformCache.set(value, newValue);
1806
- reverseTransformCache.set(newValue, value);
1807
- }
1808
- return newValue;
1809
- }
1810
- const unwrap = value => reverseTransformCache.get(value);
1811
-
1812
- /**
1813
- * Open a database.
1814
- *
1815
- * @param name Name of the database.
1816
- * @param version Schema version.
1817
- * @param callbacks Additional callbacks.
1818
- */
1819
- function openDB(name, version, {
1820
- blocked,
1821
- upgrade,
1822
- blocking,
1823
- terminated
1824
- } = {}) {
1825
- const request = indexedDB.open(name, version);
1826
- const openPromise = wrap(request);
1827
- if (upgrade) {
1828
- request.addEventListener('upgradeneeded', event => {
1829
- upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);
1830
- });
1831
- }
1832
- if (blocked) {
1833
- request.addEventListener('blocked', event => blocked(
1834
- // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405
1835
- event.oldVersion, event.newVersion, event));
1836
- }
1837
- openPromise.then(db => {
1838
- if (terminated) db.addEventListener('close', () => terminated());
1839
- if (blocking) {
1840
- db.addEventListener('versionchange', event => blocking(event.oldVersion, event.newVersion, event));
1841
- }
1842
- }).catch(() => {});
1843
- return openPromise;
1844
- }
1845
- const readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];
1846
- const writeMethods = ['put', 'add', 'delete', 'clear'];
1847
- const cachedMethods = new Map();
1848
- function getMethod(target, prop) {
1849
- if (!(target instanceof IDBDatabase && !(prop in target) && typeof prop === 'string')) {
1850
- return;
1851
- }
1852
- if (cachedMethods.get(prop)) return cachedMethods.get(prop);
1853
- const targetFuncName = prop.replace(/FromIndex$/, '');
1854
- const useIndex = prop !== targetFuncName;
1855
- const isWrite = writeMethods.includes(targetFuncName);
1856
- if (
1857
- // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.
1858
- !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) || !(isWrite || readMethods.includes(targetFuncName))) {
1859
- return;
1860
- }
1861
- const method = async function (storeName, ...args) {
1862
- // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(
1863
- const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');
1864
- let target = tx.store;
1865
- if (useIndex) target = target.index(args.shift());
1866
- // Must reject if op rejects.
1867
- // If it's a write operation, must reject if tx.done rejects.
1868
- // Must reject with op rejection first.
1869
- // Must resolve with op value.
1870
- // Must handle both promises (no unhandled rejections)
1871
- return (await Promise.all([target[targetFuncName](...args), isWrite && tx.done]))[0];
1872
- };
1873
- cachedMethods.set(prop, method);
1874
- return method;
1875
- }
1876
- replaceTraps(oldTraps => ({
1877
- ...oldTraps,
1878
- get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),
1879
- has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop)
1880
- }));
1881
- const advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];
1882
- const methodMap = {};
1883
- const advanceResults = new WeakMap();
1884
- const ittrProxiedCursorToOriginalProxy = new WeakMap();
1885
- const cursorIteratorTraps = {
1886
- get(target, prop) {
1887
- if (!advanceMethodProps.includes(prop)) return target[prop];
1888
- let cachedFunc = methodMap[prop];
1889
- if (!cachedFunc) {
1890
- cachedFunc = methodMap[prop] = function (...args) {
1891
- advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));
1892
- };
1893
- }
1894
- return cachedFunc;
1895
- }
1896
- };
1897
- async function* iterate(...args) {
1898
- // tslint:disable-next-line:no-this-assignment
1899
- let cursor = this;
1900
- if (!(cursor instanceof IDBCursor)) {
1901
- cursor = await cursor.openCursor(...args);
1902
- }
1903
- if (!cursor) return;
1904
- cursor = cursor;
1905
- const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);
1906
- ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);
1907
- // Map this double-proxy back to the original, so other cursor methods work.
1908
- reverseTransformCache.set(proxiedCursor, unwrap(cursor));
1909
- while (cursor) {
1910
- yield proxiedCursor;
1911
- // If one of the advancing methods was not called, call continue().
1912
- cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());
1913
- advanceResults.delete(proxiedCursor);
1914
- }
1915
- }
1916
- function isIteratorProp(target, prop) {
1917
- return prop === Symbol.asyncIterator && instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor]) || prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore]);
1918
- }
1919
- replaceTraps(oldTraps => ({
1920
- ...oldTraps,
1921
- get(target, prop, receiver) {
1922
- if (isIteratorProp(target, prop)) return iterate;
1923
- return oldTraps.get(target, prop, receiver);
1924
- },
1925
- has(target, prop) {
1926
- return isIteratorProp(target, prop) || oldTraps.has(target, prop);
1927
- }
1928
- }));
1929
-
1930
- const openDatabaseDependencies = {
1931
- openDB: openDB
1932
- };
1933
- const openDatabase = async (databaseName, dataBaseVersion) => {
1934
- return openDatabaseDependencies.openDB(databaseName, dataBaseVersion);
1935
- };
1936
-
1937
- const loadSelectedEventDependencies = {
1938
- getEventDetailsBySessionIdAndEventId: getEventDetailsBySessionIdAndEventId,
1939
- loadSelectedEventFromWorker: loadSelectedEvent$1,
1940
- openDatabase: openDatabase
1941
- };
1942
- const loadSelectedEvent = async (databaseName, dataBaseVersion, eventStoreName, sessionId, sessionIdIndexName, eventId, type) => {
1943
- const database = await loadSelectedEventDependencies.openDatabase(databaseName, dataBaseVersion);
1944
- try {
1945
- if (!database.objectStoreNames.contains(eventStoreName)) {
1946
- return null;
1947
- }
1948
- const transaction = database.transaction(eventStoreName, 'readonly');
1949
- const store = transaction.objectStore(eventStoreName);
1950
- const event = await loadSelectedEventDependencies.getEventDetailsBySessionIdAndEventId(store, sessionId, sessionIdIndexName, eventId, type);
1951
- return event ?? null;
1952
- } finally {
1953
- database.close();
1954
- }
1955
- };
1956
-
1957
- const getCurrentEvents$2 = state => {
1958
- const filteredEvents = getFilteredEvents(state.events, state.filterValue, state.eventCategoryFilter, state.showInputEvents, state.showResponsePartEvents, state.showEventStreamFinishedEvents);
1959
- return filterEventsByTimelineRange(filteredEvents, state.timelineStartSeconds, state.timelineEndSeconds);
1960
- };
1961
- const selectEventAtIndex = async (state, selectedEventIndex, dependencies) => {
1962
- const currentEvents = getCurrentEvents$2(state);
1963
- const selectedEvent = currentEvents[selectedEventIndex];
1964
- if (!selectedEvent) {
1965
- return {
1966
- ...state,
1967
- selectedEvent: null,
1968
- selectedEventId: null,
1969
- selectedEventIndex
1970
- };
1971
- }
1972
- if (typeof selectedEvent.eventId !== 'number') {
1973
- return {
1974
- ...state,
1975
- selectedEvent,
1976
- selectedEventId: null,
1977
- selectedEventIndex
1978
- };
1979
- }
1980
- const selectedEventDetails = await dependencies.loadSelectedEvent(state.databaseName, state.dataBaseVersion, state.eventStoreName, state.sessionId, state.sessionIdIndexName, selectedEvent.eventId, selectedEvent.type);
1981
- return {
1982
- ...state,
1983
- selectedEvent: selectedEventDetails ?? selectedEvent,
1984
- selectedEventId: selectedEvent.eventId,
1985
- selectedEventIndex
1986
- };
1987
- };
1988
-
1989
- const handleEventRowClickDependencies = {
1990
- loadSelectedEvent: loadSelectedEvent
1991
- };
1992
- const isPrimaryButton = button => {
1993
- return button === 0;
1994
- };
1995
- const parseSelectedEventIndex$1 = value => {
1996
- const parsed = Number.parseInt(value, 10);
1997
- if (Number.isNaN(parsed) || parsed < 0) {
1998
- return null;
1999
- }
2000
- return parsed;
2001
- };
2002
- const handleEventRowClick = async (state, value, button = 0) => {
2003
- if (!isPrimaryButton(button)) {
2004
- return state;
2005
- }
2006
- const selectedEventIndex = parseSelectedEventIndex$1(value);
2007
- if (selectedEventIndex === null) {
2008
- return state;
2009
- }
2010
- return selectEventAtIndex(state, selectedEventIndex, handleEventRowClickDependencies);
2011
- };
2012
-
2013
- const handleHeaderContextMenu = state => {
2014
- return state;
2015
- };
2016
-
2017
- const getBoolean = value => {
2018
- return value === true || value === 'true' || value === 'on' || value === '1';
2019
- };
2020
-
2021
- const Filter = 'filter';
2022
- const EventCategoryFilter = 'eventCategoryFilter';
2023
- const ShowEventStreamFinishedEvents = 'showEventStreamFinishedEvents';
2024
- const ShowInputEvents = 'showInputEvents';
2025
- const ShowResponsePartEvents = 'showResponsePartEvents';
2026
- const UseDevtoolsLayout = 'useDevtoolsLayout';
2027
- const SelectedEventIndex = 'selectedEventIndex';
2028
- const CloseDetails = 'closeDetails';
2029
- const DetailTab = 'detailTab';
2030
- const TimelineStartSeconds = 'timelineStartSeconds';
2031
- const TimelineEndSeconds = 'timelineEndSeconds';
2032
- const TimelineRangePreset = 'timelineRangePreset';
2033
-
2034
- const getCurrentEvents$1 = state => {
2035
- const filteredEvents = getFilteredEvents(state.events, state.filterValue, state.eventCategoryFilter, state.showInputEvents, state.showResponsePartEvents, state.showEventStreamFinishedEvents);
2036
- return filterEventsByTimelineRange(filteredEvents, state.timelineStartSeconds, state.timelineEndSeconds);
2037
- };
2038
- const parseTimelineRangePreset$1 = value => {
2039
- if (!value) {
2040
- return {
2041
- timelineEndSeconds: '',
2042
- timelineStartSeconds: ''
2043
- };
2044
- }
2045
- const [timelineStartSeconds = '', timelineEndSeconds = ''] = value.split(':', 2);
2046
- return {
2047
- timelineEndSeconds,
2048
- timelineStartSeconds
2049
- };
2050
- };
2051
- const getEventIndexByStableId = (events, event) => {
2052
- const stableEventId = getStableEventId(event);
2053
- return events.findIndex(candidate => getStableEventId(candidate) === stableEventId);
2054
- };
2055
- const getSelectedEventIndex = state => {
2056
- const {
2057
- selectedEventIndex
2058
- } = state;
2059
- if (selectedEventIndex === null) {
2060
- return null;
2061
- }
2062
- const filteredEvents = getCurrentEvents$1(state);
2063
- const selectedEvent = filteredEvents[selectedEventIndex];
2064
- if (!selectedEvent) {
2065
- return null;
2066
- }
2067
- const newIndex = getEventIndexByStableId(filteredEvents, selectedEvent);
2068
- if (newIndex === -1) {
2069
- return null;
2070
- }
2071
- return newIndex;
2072
- };
2073
- const getPreservedSelectedEventIndex = (oldState, newState) => {
2074
- const {
2075
- selectedEventIndex
2076
- } = oldState;
2077
- if (selectedEventIndex === null) {
2078
- return null;
2079
- }
2080
- const oldFilteredEvents = getCurrentEvents$1(oldState);
2081
- const selectedEvent = oldFilteredEvents[selectedEventIndex];
2082
- if (!selectedEvent) {
2083
- return null;
2084
- }
2085
- const newFilteredEvents = getCurrentEvents$1(newState);
2086
- const newIndex = getEventIndexByStableId(newFilteredEvents, selectedEvent);
2087
- if (newIndex === -1) {
2088
- return null;
2089
- }
2090
- return newIndex;
2091
- };
2092
- const parseSelectedEventIndex = value => {
2093
- const parsed = Number.parseInt(value, 10);
2094
- if (Number.isNaN(parsed) || parsed < 0) {
2095
- return null;
2096
- }
2097
- return parsed;
2098
- };
2099
- const withPreservedSelection = (state, nextState) => {
2100
- const selectedEventIndex = getPreservedSelectedEventIndex(state, nextState);
2101
- return {
2102
- ...nextState,
2103
- selectedEvent: selectedEventIndex === null ? null : state.selectedEvent,
2104
- selectedEventId: selectedEventIndex === null ? null : state.selectedEventId,
2105
- selectedEventIndex
2106
- };
2107
- };
2108
- const handleInput = (state, name, value, checked) => {
2109
- if (name === Filter) {
2110
- const nextState = {
2111
- ...state,
2112
- filterValue: value
2113
- };
2114
- return withPreservedSelection(state, nextState);
2115
- }
2116
- if (name === EventCategoryFilter) {
2117
- const nextState = {
2118
- ...state,
2119
- eventCategoryFilter: value || All
2120
- };
2121
- return withPreservedSelection(state, nextState);
2122
- }
2123
- if (name === ShowEventStreamFinishedEvents) {
2124
- const nextState = {
2125
- ...state,
2126
- showEventStreamFinishedEvents: getBoolean(checked)
2127
- };
2128
- return withPreservedSelection(state, nextState);
2129
- }
2130
- if (name === ShowInputEvents) {
2131
- const nextState = {
2132
- ...state,
2133
- showInputEvents: getBoolean(checked)
2134
- };
2135
- return withPreservedSelection(state, nextState);
2136
- }
2137
- if (name === ShowResponsePartEvents) {
2138
- const nextState = {
2139
- ...state,
2140
- showResponsePartEvents: getBoolean(checked)
2141
- };
2142
- return withPreservedSelection(state, nextState);
2143
- }
2144
- if (name === UseDevtoolsLayout) {
2145
- const useDevtoolsLayout = getBoolean(checked);
2146
- const selectedEventIndex = useDevtoolsLayout ? getSelectedEventIndex(state) : null;
2147
- return {
2148
- ...state,
2149
- selectedEvent: useDevtoolsLayout && selectedEventIndex !== null ? state.selectedEvent : null,
2150
- selectedEventId: useDevtoolsLayout && selectedEventIndex !== null ? state.selectedEventId : null,
2151
- selectedEventIndex,
2152
- useDevtoolsLayout
2153
- };
2154
- }
2155
- if (name === SelectedEventIndex) {
2156
- const selectedEventIndex = parseSelectedEventIndex(value);
2157
- return {
2158
- ...state,
2159
- selectedEvent: selectedEventIndex === null ? null : state.selectedEvent,
2160
- selectedEventId: selectedEventIndex === null ? null : state.selectedEventId,
2161
- selectedEventIndex
2162
- };
2163
- }
2164
- if (name === TimelineStartSeconds) {
2165
- const nextState = {
2166
- ...state,
2167
- timelineStartSeconds: value
2168
- };
2169
- return withPreservedSelection(state, nextState);
2170
- }
2171
- if (name === TimelineEndSeconds) {
2172
- const nextState = {
2173
- ...state,
2174
- timelineEndSeconds: value
2175
- };
2176
- return withPreservedSelection(state, nextState);
2177
- }
2178
- if (name === TimelineRangePreset) {
2179
- const nextState = {
2180
- ...state,
2181
- ...parseTimelineRangePreset$1(value)
2182
- };
2183
- return withPreservedSelection(state, nextState);
2184
- }
2185
- if (name === CloseDetails) {
2186
- return {
2187
- ...state,
2188
- selectedEvent: null,
2189
- selectedEventId: null,
2190
- selectedEventIndex: null
2191
- };
2192
- }
2193
- if (name === DetailTab) {
2194
- if (!isDetailTab(value)) {
2195
- return state;
2196
- }
2197
- return {
2198
- ...state,
2199
- selectedDetailTab: value
2200
- };
2201
- }
2202
- return state;
2203
- };
2204
-
2205
- const handleSashPointerDown = (state, eventX, eventY) => {
2206
- return state;
2207
- };
2208
-
2209
- const handleSashPointerMove = (state, eventX, eventY) => {
2210
- return {
2211
- ...state,
2212
- tableWidth: getTableWidthFromClientX(state.x, state.width, eventX)
2213
- };
2214
- };
2215
-
2216
- const handleSashPointerUp = (state, eventX, eventY) => {
2217
- return state;
2218
- };
2219
-
2220
- const handleTableBodyContextMenu = state => {
2221
- return state;
2222
- };
2223
-
2224
- const clearTimelineSelectionState = state => {
2225
- return {
2226
- ...state,
2227
- timelineSelectionActive: false,
2228
- timelineSelectionAnchorSeconds: '',
2229
- timelineSelectionFocusSeconds: ''
2230
- };
2231
- };
2232
-
2233
- const parseTimelineRangePreset = value => {
2234
- if (!value) {
2235
- return {
2236
- timelineEndSeconds: '',
2237
- timelineStartSeconds: ''
2238
- };
2239
- }
2240
- const [timelineStartSeconds = '', timelineEndSeconds = ''] = value.split(':', 2);
2241
- return {
2242
- timelineEndSeconds,
2243
- timelineStartSeconds
2244
- };
2245
- };
2246
- const handleTimelineStartSeconds = (state, value) => {
2247
- const nextState = {
2248
- ...state,
2249
- timelineStartSeconds: value
2250
- };
2251
- return withPreservedSelection$1(state, nextState);
2252
- };
2253
- const handleTimelineEndSeconds = (state, value) => {
2254
- const nextState = {
2255
- ...state,
2256
- timelineEndSeconds: value
2257
- };
2258
- return withPreservedSelection$1(state, nextState);
2259
- };
2260
- const handleTimelineRangePreset = (state, value) => {
2261
- const nextState = {
2262
- ...state,
2263
- ...parseTimelineRangePreset(value)
2264
- };
2265
- return withPreservedSelection$1(state, nextState);
2266
- };
2267
-
2268
- const handleTimelineDoubleClick = state => {
2269
- const nextState = handleTimelineRangePreset(state, '');
2270
- return clearTimelineSelectionState(nextState);
2271
- };
2272
-
2273
- const getTimelineEvents = state => {
2274
- const {
2275
- eventCategoryFilter,
2276
- events,
2277
- filterValue,
2278
- showEventStreamFinishedEvents,
2279
- showInputEvents,
2280
- showResponsePartEvents
2281
- } = state;
2282
- return getFilteredEvents(events, filterValue, eventCategoryFilter, showInputEvents, showResponsePartEvents, showEventStreamFinishedEvents);
2283
- };
2284
-
2285
- const getTimelineLeft = state => {
2286
- return state.x + viewPadding + timelineHorizontalPadding;
2287
- };
2288
- const getTimelineWidth = state => {
2289
- return Math.max(0, getMainWidth(state.width) - timelineHorizontalPadding * 2);
2290
- };
2291
-
2292
- const trailingZeroFractionRegex = /\.0+$/;
2293
- const trailingFractionZeroRegex = /(\.\d*?)0+$/;
2294
- const formatTimelinePresetValue = value => {
2295
- return value.toFixed(3).replace(trailingZeroFractionRegex, '').replace(trailingFractionZeroRegex, '$1');
2296
- };
2297
-
2298
- const getTimelineSecondsFromClientX = (events, eventX, timelineLeft, timelineWidth) => {
2299
- if (timelineWidth <= 0) {
2300
- return undefined;
2301
- }
2302
- const durationSeconds = getTimelineDurationSeconds(events);
2303
- const relativeX = Math.min(Math.max(eventX - timelineLeft, 0), timelineWidth);
2304
- const ratio = relativeX / timelineWidth;
2305
- return formatTimelinePresetValue(durationSeconds * ratio);
2306
- };
2307
-
2308
- const handleTimelinePointerDown = (state, eventX) => {
2309
- const timelineEvents = getTimelineEvents(state);
2310
- const timelineLeft = getTimelineLeft(state);
2311
- const timelineWidth = getTimelineWidth(state);
2312
- const clientX = state.x + eventX;
2313
- const seconds = getTimelineSecondsFromClientX(timelineEvents, clientX, timelineLeft, timelineWidth);
2314
- if (seconds === undefined) {
2315
- return state;
2316
- }
2317
- return {
2318
- ...state,
2319
- timelineSelectionActive: true,
2320
- timelineSelectionAnchorSeconds: seconds,
2321
- timelineSelectionFocusSeconds: seconds
2322
- };
2323
- };
2324
-
2325
- const handleTimelinePointerMove = (state, eventX) => {
2326
- if (!state.timelineSelectionActive) {
2327
- return state;
2328
- }
2329
- const timelineEvents = getTimelineEvents(state);
2330
- const timelineLeft = getTimelineLeft(state);
2331
- const timelineWidth = getTimelineWidth(state);
2332
- const clientX = state.x + eventX;
2333
- const seconds = getTimelineSecondsFromClientX(timelineEvents, clientX, timelineLeft, timelineWidth);
2334
- if (seconds === undefined) {
2335
- return state;
2336
- }
2337
- return {
2338
- ...state,
2339
- timelineSelectionFocusSeconds: seconds
2340
- };
2341
- };
2342
-
2343
- const handleTimelinePointerUp = (state, eventX) => {
2344
- if (!state.timelineSelectionActive) {
2345
- return state;
2346
- }
2347
- const timelineEvents = getTimelineEvents(state);
2348
- const timelineLeft = getTimelineLeft(state);
2349
- const timelineWidth = getTimelineWidth(state);
2350
- const clientX = state.x + eventX;
2351
- const focusSeconds = getTimelineSecondsFromClientX(timelineEvents, clientX, timelineLeft, timelineWidth);
2352
- if (focusSeconds === undefined) {
2353
- return clearTimelineSelectionState(state);
2354
- }
2355
- const anchor = Number.parseFloat(state.timelineSelectionAnchorSeconds);
2356
- const focus = Number.parseFloat(focusSeconds);
2357
- const startSeconds = formatTimelinePresetValue(Math.min(anchor, focus));
2358
- const endSeconds = formatTimelinePresetValue(Math.max(anchor, focus));
2359
- const nextState = handleTimelineRangePreset(state, `${startSeconds}:${endSeconds}`);
2360
- return clearTimelineSelectionState(nextState);
2361
- };
2362
-
2363
- const handleUseDevtoolsLayout = (state, checked) => {
2364
- const useDevtoolsLayout = getBoolean(checked);
2365
- const selectedEventIndex = useDevtoolsLayout ? getSelectedEventIndex$1(state) : null;
2366
- return {
2367
- ...state,
2368
- selectedEvent: useDevtoolsLayout && selectedEventIndex !== null ? state.selectedEvent : null,
2369
- selectedEventId: useDevtoolsLayout && selectedEventIndex !== null ? state.selectedEventId : null,
2370
- selectedEventIndex,
2371
- useDevtoolsLayout
2372
- };
2373
- };
2374
-
2375
- const handleShowEventStreamFinishedEvents = (state, checked) => {
2376
- const nextState = {
2377
- ...state,
2378
- showEventStreamFinishedEvents: getBoolean(checked)
2379
- };
2380
- return withPreservedSelection$1(state, nextState);
2381
- };
2382
- const handleShowInputEvents = (state, checked) => {
2383
- const nextState = {
2384
- ...state,
2385
- showInputEvents: getBoolean(checked)
2386
- };
2387
- return withPreservedSelection$1(state, nextState);
2388
- };
2389
- const handleShowResponsePartEvents = (state, checked) => {
2390
- const nextState = {
2391
- ...state,
2392
- showResponsePartEvents: getBoolean(checked)
2393
- };
2394
- return withPreservedSelection$1(state, nextState);
2395
- };
2396
-
2397
- const getFailedToLoadMessage = sessionId => {
2398
- return `Failed to load chat debug session "${sessionId}". Please try again.`;
2399
- };
2400
-
2401
- const getIndexedDbNotSupportedMessage = () => {
2402
- return 'Unable to load chat debug session: IndexedDB is not supported in this environment.';
2403
- };
2404
-
2405
- const ParseChatDebugUriErrorCode = {
2406
- InvalidSessionId: 'invalid-session-id',
2407
- InvalidUriEncoding: 'invalid-uri-encoding',
2408
- InvalidUriFormat: 'invalid-uri-format',
2409
- MissingUri: 'missing-uri'
2410
- };
2411
-
2412
- const getInvalidUriMessage = (uri, code) => {
2413
- if (code === ParseChatDebugUriErrorCode.MissingUri) {
2414
- return 'Unable to load debug session: missing URI. Expected format: chat-debug://<sessionId>.';
2415
- }
2416
- return `Unable to load debug session: invalid URI "${uri}". Expected format: chat-debug://<sessionId>.`;
2417
- };
2418
-
2419
- const getSessionNotFoundMessage = sessionId => {
2420
- return `No chat session found for sessionId "${sessionId}".`;
2421
- };
2422
-
2423
- const filterEventsBySessionId = (events, sessionId) => {
2424
- return events.filter(event => event.sessionId === sessionId);
2425
- };
2426
-
2427
- // cspell:ignore IDBP
2428
-
2429
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
2430
- const getAllEvents = async store => {
2431
- const all = await store.getAll();
2432
- return all;
2433
- };
2434
-
2435
- const getEndTime = event => {
2436
- return event.ended ?? event.endTime ?? event.timestamp;
2437
- };
2438
-
2439
- const getStartTime = event => {
2440
- return event.started ?? event.startTime ?? event.timestamp;
2441
- };
2442
-
2443
- const getDuration = event => {
2444
- const explicitDuration = event.durationMs ?? event.duration;
2445
- if (typeof explicitDuration === 'number' && Number.isFinite(explicitDuration)) {
2446
- return explicitDuration;
2447
- }
2448
- const start = toTimeNumber(getStartTime(event));
2449
- const end = toTimeNumber(getEndTime(event));
2450
- if (start === undefined || end === undefined || !Number.isFinite(start) || !Number.isFinite(end)) {
2451
- return 0;
2452
- }
2453
- return Math.max(0, end - start);
2454
- };
2455
-
2456
- const isTimeValue = value => {
2457
- return typeof value === 'number' || typeof value === 'string';
2458
- };
2459
-
2460
- const getLightweightEvent = (event, fallbackEventId) => {
2461
- const startTime = getStartTime(event);
2462
- const endTime = getEndTime(event);
2463
- return {
2464
- duration: getDuration(event),
2465
- ...(isTimeValue(endTime) ? {
2466
- endTime
2467
- } : {}),
2468
- eventId: typeof event.eventId === 'number' ? event.eventId : fallbackEventId,
2469
- ...(isTimeValue(startTime) ? {
2470
- startTime
2471
- } : {}),
2472
- type: event.type
2473
- };
2474
- };
2475
-
2476
- // cspell:ignore IDBP
2477
-
2478
- const toLightweightEvents = events => {
2479
- const eventsWithIds = events.map((event, index) => {
2480
- return {
2481
- ...event,
2482
- eventId: index + 1
2483
- };
2484
- });
2485
- return collapseToolExecutionEvents(eventsWithIds).map((event, index) => getLightweightEvent(event, index + 1));
2486
- };
2487
- const getEventsBySessionId = async (store, sessionId, sessionIdIndexName) => {
2488
- if (store.indexNames.contains(sessionIdIndexName)) {
2489
- const index = store.index(sessionIdIndexName);
2490
- const events = await index.getAll(sessionId);
2491
- return toLightweightEvents(filterEventsBySessionId(events, sessionId));
2492
- }
2493
- const all = await getAllEvents(store);
2494
- return toLightweightEvents(filterEventsBySessionId(all, sessionId));
2495
- };
2496
-
2497
- let indexedDbSupportOverride;
2498
- const getIndexedDbSupportOverride = () => {
2499
- return indexedDbSupportOverride;
2500
- };
2501
- const setIndexedDbSupportOverride = supported => {
2502
- indexedDbSupportOverride = supported;
2503
- };
2504
-
2505
- const isIndexedDbSupported = indexedDbSupportOverride => {
2506
- if (typeof indexedDbSupportOverride === 'boolean') {
2507
- return indexedDbSupportOverride;
2508
- }
2509
- const override = getIndexedDbSupportOverride();
2510
- if (typeof override === 'boolean') {
2511
- return override;
2512
- }
2513
- return globalThis.indexedDB !== undefined;
2514
- };
2515
-
2516
- const listChatViewEventsDependencies = {
2517
- getEventsBySessionId: getEventsBySessionId,
2518
- listChatViewEventsFromWorker: listChatViewEvents$1,
2519
- openDatabase: openDatabase
2520
- };
2521
- const listChatViewEvents = async (sessionId, databaseName, dataBaseVersion, eventStoreName, sessionIdIndexName, indexedDbSupportOverride) => {
2522
- if (!isIndexedDbSupported(indexedDbSupportOverride)) {
2523
- return {
2524
- type: 'not-supported'
2525
- };
2526
- }
2527
- try {
2528
- const database = await listChatViewEventsDependencies.openDatabase(databaseName, dataBaseVersion);
2529
- try {
2530
- if (!database.objectStoreNames.contains(eventStoreName)) {
2531
- return {
2532
- events: [],
2533
- type: 'success'
2534
- };
2535
- }
2536
- const transaction = database.transaction(eventStoreName, 'readonly');
2537
- const store = transaction.objectStore(eventStoreName);
2538
- if (!sessionId) {
2539
- return {
2540
- events: [],
2541
- type: 'success'
2542
- };
2543
- }
2544
- const events = await listChatViewEventsDependencies.getEventsBySessionId(store, sessionId, sessionIdIndexName);
2545
- return {
2546
- events,
2547
- type: 'success'
2548
- };
2549
- } finally {
2550
- database.close();
2551
- }
2552
- } catch (error) {
2553
- return {
2554
- error,
2555
- type: 'error'
2556
- };
2557
- }
2558
- };
2559
-
2560
- const chatDebugUriPattern = /^chat-debug:\/\/([^/?#]+)$/;
2561
- const invalidSessionIdPattern = /[/?#]/;
2562
- const parseChatDebugUri = uri => {
2563
- if (!uri) {
2564
- return {
2565
- code: ParseChatDebugUriErrorCode.MissingUri,
2566
- message: 'Missing URI',
2567
- type: 'error'
2568
- };
2569
- }
2570
- const match = uri.match(chatDebugUriPattern);
2571
- if (!match) {
2572
- return {
2573
- code: ParseChatDebugUriErrorCode.InvalidUriFormat,
2574
- message: 'Invalid URI format',
2575
- type: 'error'
2576
- };
2577
- }
2578
- const encodedSessionId = match[1];
2579
- let sessionId;
2580
- try {
2581
- sessionId = decodeURIComponent(encodedSessionId);
2582
- } catch {
2583
- return {
2584
- code: ParseChatDebugUriErrorCode.InvalidUriEncoding,
2585
- message: 'Invalid URI encoding',
2586
- type: 'error'
2587
- };
2588
- }
2589
- if (!sessionId || invalidSessionIdPattern.test(sessionId)) {
2590
- return {
2591
- code: ParseChatDebugUriErrorCode.InvalidSessionId,
2592
- message: 'Invalid session id',
2593
- type: 'error'
2594
- };
2595
- }
2596
- return {
2597
- sessionId,
2598
- type: 'success'
2599
- };
2600
- };
2601
-
2602
- const loadEventsDependencies = {
2603
- listChatViewEvents: listChatViewEvents,
2604
- loadSelectedEvent: loadSelectedEvent
2605
- };
2606
- const getCurrentEvents = state => {
2607
- const filteredEvents = getFilteredEvents(state.events, state.filterValue, state.eventCategoryFilter, state.showInputEvents, state.showResponsePartEvents, state.showEventStreamFinishedEvents);
2608
- return filterEventsByTimelineRange(filteredEvents, state.timelineStartSeconds, state.timelineEndSeconds);
2609
- };
2610
- const restoreSelectedEvent = async state => {
2611
- if (state.selectedEventId === null) {
2612
- return {
2613
- ...state,
2614
- selectedEvent: null,
2615
- selectedEventIndex: null
2616
- };
2617
- }
2618
- const currentEvents = getCurrentEvents(state);
2619
- const selectedEventIndex = currentEvents.findIndex(event => event.eventId === state.selectedEventId);
2620
- if (selectedEventIndex === -1) {
2621
- return {
2622
- ...state,
2623
- selectedEvent: null,
2624
- selectedEventId: null,
2625
- selectedEventIndex: null
2626
- };
2627
- }
2628
- const selectedEvent = currentEvents[selectedEventIndex];
2629
- if (!selectedEvent || typeof selectedEvent.eventId !== 'number') {
2630
- return {
2631
- ...state,
2632
- selectedEvent: null,
2633
- selectedEventId: null,
2634
- selectedEventIndex: null
2635
- };
2636
- }
2637
- const selectedEventDetails = await loadEventsDependencies.loadSelectedEvent(state.databaseName, state.dataBaseVersion, state.eventStoreName, state.sessionId, state.sessionIdIndexName, selectedEvent.eventId, selectedEvent.type);
2638
- return {
2639
- ...state,
2640
- selectedEvent: selectedEventDetails,
2641
- selectedEventId: selectedEvent.eventId,
2642
- selectedEventIndex
2643
- };
2644
- };
2645
- const getStateWithInvalidUri = state => {
2646
- const parsed = parseChatDebugUri(state.uri);
2647
- if (parsed.type !== 'error') {
2648
- return state;
2649
- }
2650
- return {
2651
- ...state,
2652
- errorMessage: getInvalidUriMessage(state.uri, parsed.code),
2653
- events: [],
2654
- initial: false,
2655
- selectedEvent: null,
2656
- selectedEventId: null,
2657
- selectedEventIndex: null,
2658
- sessionId: ''
2659
- };
2660
- };
2661
- const getSessionIdFromUri = state => {
2662
- const parsed = parseChatDebugUri(state.uri);
2663
- if (parsed.type === 'error') {
2664
- return undefined;
2665
- }
2666
- return parsed.sessionId;
2667
- };
2668
- const loadEventsForSessionId = async (state, sessionId) => {
2669
- const {
2670
- databaseName,
2671
- dataBaseVersion,
2672
- eventStoreName,
2673
- indexedDbSupportOverride,
2674
- sessionIdIndexName
2675
- } = state;
2676
- const result = await loadEventsDependencies.listChatViewEvents(sessionId, databaseName, dataBaseVersion, eventStoreName, sessionIdIndexName, indexedDbSupportOverride);
2677
- if (result.type === 'not-supported') {
2678
- return {
2679
- ...state,
2680
- errorMessage: getIndexedDbNotSupportedMessage(),
2681
- events: [],
2682
- initial: false,
2683
- selectedEvent: null,
2684
- selectedEventId: null,
2685
- selectedEventIndex: null,
2686
- sessionId
2687
- };
2688
- }
2689
- if (result.type === 'error') {
2690
- return {
2691
- ...state,
2692
- errorMessage: getFailedToLoadMessage(sessionId),
2693
- events: [],
2694
- initial: false,
2695
- selectedEvent: null,
2696
- selectedEventId: null,
2697
- selectedEventIndex: null,
2698
- sessionId
2699
- };
2700
- }
2701
- const {
2702
- events
2703
- } = result;
2704
- if (events.length === 0) {
2705
- return {
2706
- ...state,
2707
- errorMessage: getSessionNotFoundMessage(sessionId),
2708
- events: [],
2709
- initial: false,
2710
- selectedEvent: null,
2711
- selectedEventId: null,
2712
- selectedEventIndex: null,
2713
- sessionId
2714
- };
2715
- }
2716
- const nextState = {
2717
- ...state,
2718
- errorMessage: '',
2719
- events,
2720
- initial: false,
2721
- sessionId
2722
- };
2723
- return restoreSelectedEvent(nextState);
2724
- };
2725
- const loadEventsFromUri = async state => {
2726
- const sessionId = getSessionIdFromUri(state);
2727
- if (!sessionId) {
2728
- return getStateWithInvalidUri(state);
2729
- }
2730
- return loadEventsForSessionId(state, sessionId);
2731
- };
2732
- const refreshEvents = async state => {
2733
- const sessionId = state.sessionId || getSessionIdFromUri(state);
2734
- if (!sessionId) {
2735
- return getStateWithInvalidUri(state);
2736
- }
2737
- return loadEventsForSessionId(state, sessionId);
2738
- };
2739
-
2740
- const loadContent = async state => {
2741
- return loadEventsFromUri(state);
2742
- };
2743
-
2744
- const refresh = async state => {
2745
- return refreshEvents(state);
2746
- };
2747
-
2748
- const Button = 1;
2749
- const Div = 4;
2750
- const Input = 6;
2751
- const Span = 8;
2752
- const Table = 9;
2753
- const TBody = 10;
2754
- const Td = 11;
2755
- const Text = 12;
2756
- const Th = 13;
2757
- const THead = 14;
2758
- const Tr = 15;
2759
- const Search = 42;
2760
- const Label = 66;
2761
- const Reference = 100;
2762
-
2763
- const ClientX = 'event.clientX';
2764
- const ClientY = 'event.clientY';
2765
- const TargetName = 'event.target.name';
2766
- const TargetValue = 'event.target.value';
2767
-
2768
- const SetCss = 'Viewlet.setCss';
2769
- const SetDom2 = 'Viewlet.setDom2';
2770
- const SetPatches = 'Viewlet.setPatches';
2771
-
2772
- const getCss = state => {
2773
- const tableWidth = clampTableWidth(state.width, state.tableWidth);
2774
- const detailsWidth = getDetailsWidth(state.width, state.tableWidth);
2775
- return `
2776
- .ChatDebugView {
2777
- --ChatDebugViewDetailsWidth: ${detailsWidth}px;
2778
- --ChatDebugViewSashWidth: ${sashWidth}px;
2779
- --ChatDebugViewTableWidth: ${tableWidth}px;
2780
- padding: ${viewPadding}px;
2781
- display: flex;
2782
- flex-direction: column;
2783
- height: 100%;
2784
- box-sizing: border-box;
2785
- gap: 8px;
2786
- contain: strict;
2787
- }
2788
-
2789
- .ChatDebugView--devtools {
2790
- gap: 4px;
2791
- }
2792
-
2793
- .ChatDebugViewTop {
2794
- display: flex;
2795
- align-items: center;
2796
- gap: 12px;
2797
- flex-wrap: wrap;
2798
- contain: content;
2799
- }
2800
-
2801
- .ChatDebugViewTop--devtools {
2802
- align-items: stretch;
2803
- }
2804
-
2805
- .ChatDebugViewFilterInput {
2806
- flex: 1;
2807
- min-width: 0;
2808
- max-width: 500px;
2809
- contain: content;
2810
- }
2811
-
2812
- .ChatDebugViewFilterInput--devtools {
2813
- flex: 0 1 80px;
2814
- width: 100%;
2815
- max-width: 80px;
2816
- }
2817
-
2818
- .ChatDebugViewQuickFilterPill {
2819
- display: flex;
2820
- align-items: center;
2821
- justify-content: center;
2822
- min-height: 22px;
2823
- padding: 0 10px;
2824
- border: 1px solid var(--vscode-editorWidget-border, #454545);
2825
- border-radius: 999px;
2826
- cursor: pointer;
2827
- white-space: nowrap;
2828
- transition:
2829
- background 120ms ease-out,
2830
- border-color 120ms ease-out,
2831
- color 120ms ease-out,
2832
- transform 120ms ease-out;
2833
- contain: content;
2834
- }
2835
-
2836
- .ChatDebugViewQuickFilterPill:not(.ChatDebugViewQuickFilterPillSelected):hover {
2837
- border-color: var(--vscode-focusBorder, #007fd4);
2838
- background: color-mix(in srgb, var(--vscode-list-hoverBackground, rgba(90, 93, 94, 0.16)) 82%, transparent 18%);
2839
- color: var(--vscode-list-hoverForeground, inherit);
2840
- transform: translateY(-1px);
2841
- }
2842
-
2843
-
2844
- .ChatDebugViewQuickFilters {
2845
- display: flex;
2846
- align-items: center;
2847
- gap: 8px;
2848
- justify-content: center;
2849
- min-height: 28px;
2850
- font-size: 12px;
2851
- line-height: 1;
2852
- contain: content;
2853
- }
2854
-
2855
- .ChatDebugViewQuickFilterPillSelected {
2856
- border-color: var(--vscode-focusBorder, #007fd4);
2857
- background: var(--vscode-list-activeSelectionBackground, rgba(14, 99, 156, 0.35));
2858
- color: var(--vscode-list-activeSelectionForeground, inherit);
2859
- }
2860
-
2861
- .ChatDebugViewQuickFilterInput {
2862
- position: absolute;
2863
- opacity: 0;
2864
- pointer-events: none;
2865
- contain: content;
2866
- }
2867
-
2868
- .ChatDebugViewEvents {
2869
- display: flex;
2870
- flex-direction: column;
2871
- overflow: auto;
2872
- min-width: 0;
2873
- min-height: 0;
2874
- scrollbar-width: thin;
2875
- scrollbar-color: var(--vscode-scrollbarSlider-background, rgba(121, 121, 121, 0.4)) transparent;
2876
- contain: strict;
2877
- }
2878
-
2879
- .ChatDebugView--devtools .ChatDebugViewEvents {
2880
- border-radius: 6px;
2881
- margin-bottom: 0;
2882
- overflow: hidden;
2883
- }
2884
-
2885
- .ChatDebugViewEventsFullWidth {
2886
- flex: 1 1 100%;
2887
- }
2888
-
2889
- .ChatDebugViewDevtoolsMain {
2890
- display: flex;
2891
- flex-direction: column;
2892
- flex: 1;
2893
- align-items: stretch;
2894
- gap: 0;
2895
- min-width: 0;
2896
- min-height: 0;
2897
- contain: strict;
2898
- }
2899
-
2900
- .ChatDebugViewDevtoolsMain > .ChatDebugViewTimeline {
2901
- flex: 0 0 auto;
2902
- }
2903
-
2904
- .ChatDebugViewDevtoolsSplit {
2905
- display: flex;
2906
- flex: 1;
2907
- align-items: stretch;
2908
- gap: 0;
2909
- min-width: 0;
2910
- min-height: 0;
2911
- overflow: hidden;
2912
- contain: strict;
2913
- }
2914
-
2915
- .ChatDebugViewDevtoolsSplit > .ChatDebugViewEvents {
2916
- flex: 0 1 var(--ChatDebugViewTableWidth);
2917
- min-width: 0;
2918
- }
2919
-
2920
- .ChatDebugViewDevtoolsSplit > .ChatDebugViewEvents.ChatDebugViewEventsFullWidth {
2921
- flex: 1 1 100%;
2922
- }
2923
-
2924
- .ChatDebugViewDevtoolsSplit > .ChatDebugViewDetails {
2925
- border-left: 0;
2926
- border-top-left-radius: 0;
2927
- border-bottom-left-radius: 0;
2928
- flex: 1;
2929
- }
2930
-
2931
- .ChatDebugViewSash {
2932
- flex: 0 0 var(--ChatDebugViewSashWidth);
2933
- position: relative;
2934
- cursor: col-resize;
2935
- display: flex;
2936
- justify-content: center;
2937
- min-height: 0;
2938
- contain: strict;
2939
- }
2940
-
2941
- .ChatDebugViewSashLine {
2942
- width: 1px;
2943
- height: 100%;
2944
- background: var(--vscode-editorWidget-border, #454545);
2945
- pointer-events: none;
2946
- contain: strict;
2947
- }
2948
-
2949
- .ChatDebugViewSash:hover .ChatDebugViewSashLine {
2950
- background: var(--vscode-focusBorder, #007fd4);
2951
- }
2952
-
2953
- .ChatDebugViewTable {
2954
- display: flex;
2955
- flex-direction: column;
2956
- min-height: 0;
2957
- flex: 1 1 auto;
2958
- contain: strict;
2959
- }
2960
-
2961
- .ChatDebugViewTimeline {
2962
- display: flex;
2963
- flex-direction: column;
2964
- gap: 6px;
2965
- padding: 6px ${timelineHorizontalPadding}px 8px;
2966
- border-bottom: 1px solid var(--vscode-editorWidget-border, #454545);
2967
- background: color-mix(in srgb, var(--vscode-editorWidget-background, transparent) 82%, var(--vscode-list-hoverBackground, rgba(90, 93, 94, 0.12)) 18%);
2968
- contain: content;
2969
- }
2970
-
2971
- .ChatDebugViewTimelineTop {
2972
- display: flex;
2973
- align-items: center;
2974
- contain: content;
2975
- }
2976
-
2977
- .ChatDebugViewTimelineSummary {
2978
- display: flex;
2979
- align-items: center;
2980
- font-size: 12px;
2981
- line-height: 16px;
2982
- opacity: 0.8;
2983
- contain: content;
2984
- }
2985
-
2986
- .ChatDebugViewTimelineControls {
2987
- display: flex;
2988
- align-items: center;
2989
- gap: 8px;
2990
- flex-wrap: wrap;
2991
- contain: content;
2992
- }
2993
-
2994
- .ChatDebugViewTimelineBuckets {
2995
- display: flex;
2996
- align-items: end;
2997
- gap: 3px;
2998
- flex: 1 1 auto;
2999
- min-height: 52px;
3000
- pointer-events: none;
3001
- contain: strict;
3002
- }
3003
-
3004
- .ChatDebugViewTimelineInteractive {
3005
- display: flex;
3006
- position: relative;
3007
- min-height: 52px;
3008
- cursor: crosshair;
3009
- user-select: none;
3010
- contain: strict;
3011
- }
3012
-
3013
- .ChatDebugViewTimelineSelectionOverlay {
3014
- position: absolute;
3015
- inset: 0;
3016
- pointer-events: none;
3017
- contain: strict;
3018
- }
3019
-
3020
- .ChatDebugViewTimelineSelectionRange {
3021
- position: absolute;
3022
- top: 0;
3023
- bottom: 0;
3024
- background: color-mix(in srgb, var(--vscode-charts-blue, #75beff) 20%, transparent 80%);
3025
- border-left: 1px solid color-mix(in srgb, var(--vscode-charts-blue, #75beff) 65%, transparent 35%);
3026
- border-right: 1px solid color-mix(in srgb, var(--vscode-charts-blue, #75beff) 65%, transparent 35%);
3027
- contain: strict;
3028
- }
3029
-
3030
- .ChatDebugViewTimelineSelectionMarker {
3031
- position: absolute;
3032
- top: 0;
3033
- bottom: 0;
3034
- width: 1px;
3035
- margin-left: -0.5px;
3036
- background: var(--vscode-focusBorder, #007fd4);
3037
- box-shadow: 0 0 0 1px color-mix(in srgb, var(--vscode-focusBorder, #007fd4) 24%, transparent 76%);
3038
- contain: strict;
3039
- }
3040
-
3041
- .ChatDebugViewTimelineBucket {
3042
- --ChatDebugViewTimelineBucketBarBackground: color-mix(in srgb, var(--vscode-list-hoverBackground, rgba(90, 93, 94, 0.16)) 74%, transparent 26%);
3043
- --ChatDebugViewTimelineBucketBarBorderColor: transparent;
3044
- display: flex;
3045
- align-items: stretch;
3046
- flex: 1 1 10px;
3047
- min-width: 10px;
3048
- min-height: 52px;
3049
- contain: strict;
3050
- }
3051
-
3052
- .ChatDebugViewTimelineBucketSelected {
3053
- --ChatDebugViewTimelineBucketBarBackground: color-mix(in srgb, var(--vscode-charts-blue, #75beff) 72%, transparent 28%);
3054
- --ChatDebugViewTimelineBucketBarBorderColor: var(--vscode-focusBorder, #007fd4);
3055
- }
3056
-
3057
- .ChatDebugViewTimelinePresetInput {
3058
- position: absolute;
3059
- opacity: 0;
3060
- pointer-events: none;
3061
- contain: content;
3062
- }
3063
-
3064
- .ChatDebugViewTimelineBucketBar {
3065
- display: flex;
3066
- flex-direction: column;
3067
- justify-content: flex-end;
3068
- gap: 2px;
3069
- padding: 6px 1px 2px;
3070
- border: 1px solid transparent;
3071
- border-radius: 2px;
3072
- width: 100%;
3073
- background: var(--ChatDebugViewTimelineBucketBarBackground);
3074
- border-color: var(--ChatDebugViewTimelineBucketBarBorderColor);
3075
- contain: strict;
3076
- }
3077
-
3078
- .ChatDebugViewTimelineBucketBarSelected {
3079
- background: color-mix(in srgb, var(--vscode-charts-blue, #75beff) 72%, transparent 28%);
3080
- border-color: var(--vscode-focusBorder, #007fd4);
3081
- }
3082
-
3083
- .ChatDebugViewTimelineBucketUnit {
3084
- width: 100%;
3085
- height: 4px;
3086
- border-radius: 999px;
3087
- background: var(--vscode-charts-blue, #75beff);
3088
- contain: strict;
3089
- }
3090
-
3091
- .ChatDebugViewTimelineBucketUnitEmpty {
3092
- opacity: 0.35;
3093
- background: var(--vscode-editorWidget-border, #454545);
3094
- }
3095
-
3096
- .ChatDebugViewTableHeaderRow,
3097
- .ChatDebugViewEventRow {
3098
- display: flex;
3099
- align-items: center;
3100
- gap: 8px;
3101
- contain: content;
3102
- }
3103
-
3104
- .ChatDebugViewTableHeader {
3105
- padding: 3px 8px;
3106
- border-bottom: 1px solid var(--vscode-editorWidget-border, #454545);
3107
- background: var(--vscode-editorWidget-background, transparent);
3108
- position: sticky;
3109
- top: 0;
3110
- z-index: 1;
3111
- contain: content;
3112
- }
3113
-
3114
- .ChatDebugViewHeaderCell {
3115
- display: flex;
3116
- align-items: center;
3117
- overflow: hidden;
3118
- text-overflow: ellipsis;
3119
- white-space: nowrap;
3120
- min-width: 0;
3121
- font-size: 11px;
3122
- letter-spacing: 0.04em;
3123
- opacity: 0.8;
3124
- contain: content;
3125
- }
3126
-
3127
- .ChatDebugViewTableHeaderRow > .ChatDebugViewHeaderCell:nth-child(1) {
3128
- flex: 1 1 140px;
3129
- min-width: 0;
3130
- }
3131
-
3132
- .ChatDebugViewTableHeaderRow > .ChatDebugViewHeaderCell:nth-child(2) {
3133
- flex: 0 0 90px;
3134
- justify-content: flex-end;
3135
- }
3136
-
3137
- .ChatDebugViewTableHeaderRow > .ChatDebugViewHeaderCell:nth-child(3) {
3138
- flex: 0 0 96px;
3139
- justify-content: flex-end;
3140
- }
3141
-
3142
- .ChatDebugViewTableBody {
3143
- display: flex;
3144
- flex-direction: column;
3145
- overflow: auto;
3146
- min-height: 0;
3147
- flex: 1 1 auto;
3148
- contain: strict;
3149
- }
3150
-
3151
- .ChatDebugViewEventRowLabel {
3152
- display: block;
3153
- contain: content;
3154
- }
3155
-
3156
- .ChatDebugViewEventRowLabelSelected .ChatDebugViewEventRow,
3157
- .ChatDebugViewEventRowSelected {
3158
- background: var(--vscode-list-activeSelectionBackground, rgba(14, 99, 156, 0.35));
3159
- color: var(--vscode-list-activeSelectionForeground, inherit);
3160
- }
3161
-
3162
- .ChatDebugViewEventRowInput {
3163
- position: absolute;
3164
- opacity: 0;
3165
- pointer-events: none;
3166
- contain: content;
3167
- }
3168
-
3169
- .ChatDebugViewEventRow {
3170
- padding: 2px 8px;
3171
- background: color-mix(in srgb, var(--vscode-editorWidget-background, transparent) 92%, var(--vscode-list-hoverBackground, rgba(90, 93, 94, 0.31)) 8%);
3172
- cursor: default;
3173
- }
3174
-
3175
- .ChatDebugViewTableBody > .ChatDebugViewEventRow:nth-child(even) {
3176
- background: color-mix(in srgb, var(--vscode-editorWidget-background, transparent) 84%, var(--vscode-list-hoverBackground, rgba(90, 93, 94, 0.31)) 16%);
3177
- }
3178
-
3179
- .ChatDebugViewEventRow:hover {
3180
- background: var(--vscode-list-hoverBackground, rgba(90, 93, 94, 0.31));
3181
- color: var(--vscode-list-hoverForeground, inherit);
3182
- }
3183
-
3184
- .ChatDebugViewCell {
3185
- display: flex;
3186
- align-items: center;
3187
- overflow: hidden;
3188
- text-overflow: ellipsis;
3189
- white-space: nowrap;
3190
- min-width: 0;
3191
- pointer-events: none;
3192
- contain: content;
3193
- }
3194
-
3195
- .ChatDebugViewCellType {
3196
- flex: 1 1 140px;
3197
- min-width: 0;
3198
- }
3199
-
3200
- .ChatDebugViewCellTime {
3201
- flex: 1 1 180px;
3202
- min-width: 0;
3203
- }
3204
-
3205
- .ChatDebugViewCellDuration {
3206
- flex: 0 0 90px;
3207
- justify-content: flex-end;
3208
- text-align: right;
3209
- }
3210
-
3211
- .ChatDebugViewCellStatus {
3212
- flex: 0 0 64px;
3213
- justify-content: flex-end;
3214
- text-align: right;
3215
- }
3216
-
3217
- .ChatDebugViewCellStatusError {
3218
- color: var(--vscode-errorForeground, #f14c4c);
3219
- }
3220
-
3221
- .ChatDebugViewDetails {
3222
- border: 1px solid var(--vscode-editorWidget-border, #454545);
3223
- border-radius: 6px;
3224
- overflow: hidden;
3225
- min-width: 0;
3226
- min-height: 0;
3227
- display: flex;
3228
- flex-direction: column;
3229
- contain: strict;
3230
- }
3231
-
3232
- .ChatDebugViewDetailsTop {
3233
- display: flex;
3234
- align-items: stretch;
3235
- justify-content: flex-start;
3236
- gap: 8px;
3237
- padding: 0 8px;
3238
- border-bottom: 1px solid var(--vscode-editorWidget-border, #454545);
3239
- background: color-mix(in srgb, var(--vscode-editorWidget-background, transparent) 72%, var(--vscode-list-hoverBackground, rgba(90, 93, 94, 0.18)) 28%);
3240
- contain: content;
3241
- }
3242
-
3243
- .ChatDebugViewDetailsClose {
3244
- width: 18px;
3245
- height: 18px;
3246
- appearance: none;
3247
- border: none;
3248
- border-radius: 4px;
3249
- cursor: pointer;
3250
- position: relative;
3251
- color: var(--vscode-foreground, #cccccc);
3252
- background: transparent;
3253
- align-self: center;
3254
- flex: 0 0 auto;
3255
- contain: strict;
3256
- }
3257
-
3258
- .ChatDebugViewDetailsClose:hover {
3259
- background: var(--vscode-toolbar-hoverBackground, rgba(90, 93, 94, 0.31));
3260
- }
3261
-
3262
- .ChatDebugViewDetailsClose::before,
3263
- .ChatDebugViewDetailsClose::after {
3264
- content: '';
3265
- position: absolute;
3266
- left: 50%;
3267
- top: 50%;
3268
- width: 10px;
3269
- height: 1px;
3270
- background: currentColor;
3271
- }
3272
-
3273
- .ChatDebugViewDetailsClose::before {
3274
- transform: translate(-50%, -50%) rotate(45deg);
3275
- }
3276
-
3277
- .ChatDebugViewDetailsClose::after {
3278
- transform: translate(-50%, -50%) rotate(-45deg);
3279
- }
3280
-
3281
- .ChatDebugViewDetailsBody {
3282
- display: flex;
3283
- flex-direction: column;
3284
- overflow: hidden;
3285
- padding: 0;
3286
- flex: 1 1 auto;
3287
- min-height: 0;
3288
- align-items: stretch;
3289
- contain: strict;
3290
- }
3291
-
3292
- .ChatDebugViewDetailsTabs {
3293
- display: flex;
3294
- align-items: center;
3295
- flex: 1 1 auto;
3296
- gap: 2px;
3297
- min-width: 0;
3298
- padding: 0;
3299
- overflow-x: auto;
3300
- contain: content;
3301
- }
3302
-
3303
- .ChatDebugViewDetailsTab {
3304
- display: flex;
3305
- align-items: center;
3306
- justify-content: center;
3307
- min-height: 32px;
3308
- padding: 0 10px;
3309
- appearance: none;
3310
- background: transparent;
3311
- border: 0;
3312
- border-bottom: 2px solid transparent;
3313
- color: var(--vscode-descriptionForeground, var(--vscode-foreground, #cccccc));
3314
- cursor: pointer;
3315
- white-space: nowrap;
3316
- contain: content;
3317
- }
3318
-
3319
- .ChatDebugViewDetailsTab:hover {
3320
- color: var(--vscode-foreground, #cccccc);
3321
- }
3322
-
3323
- .ChatDebugViewDetailsTabSelected {
3324
- border-bottom-color: var(--vscode-focusBorder, #007fd4);
3325
- color: var(--vscode-focusBorder, #007fd4);
3326
- }
3327
-
3328
- .ChatDebugViewDetailsPanel {
3329
- display: flex;
3330
- flex-direction: column;
3331
- overflow: auto;
3332
- padding: 8px;
3333
- flex: 1 1 auto;
3334
- min-height: 0;
3335
- align-items: flex-start;
3336
- contain: strict;
3337
- }
3338
-
3339
- .ChatDebugViewEvents::-webkit-scrollbar {
3340
- width: 10px;
3341
- height: 10px;
3342
- }
3343
-
3344
- .ChatDebugViewEvents::-webkit-scrollbar-track {
3345
- background: transparent;
3346
- }
3347
-
3348
- .ChatDebugViewEvents::-webkit-scrollbar-thumb {
3349
- background: var(--vscode-scrollbarSlider-background, rgba(121, 121, 121, 0.4));
3350
- border-radius: 999px;
3351
- border: 2px solid transparent;
3352
- background-clip: content-box;
3353
- }
3354
-
3355
- .ChatDebugViewEvents::-webkit-scrollbar-thumb:hover {
3356
- background: var(--vscode-scrollbarSlider-hoverBackground, rgba(100, 100, 100, 0.7));
3357
- }
3358
-
3359
- .ChatDebugViewEvents::-webkit-scrollbar-thumb:active {
3360
- background: var(--vscode-scrollbarSlider-activeBackground, rgba(191, 191, 191, 0.4));
3361
- }
3362
-
3363
- .ChatDebugViewEvent {
3364
- display: flex;
3365
- flex-direction: column;
3366
- width: max-content;
3367
- min-width: 100%;
3368
- margin: 0;
3369
- padding: 8px;
3370
- border: 1px solid var(--vscode-editorWidget-border, #454545);
3371
- border-radius: 6px;
3372
- margin-bottom: 8px;
3373
- white-space: nowrap;
3374
- font-family: var(--vscode-editor-font-family, monospace);
3375
- font-size: 12px;
3376
- user-select: text;
3377
- contain: content;
3378
- }
3379
-
3380
- .row {
3381
- display: flex;
3382
- align-items: baseline;
3383
- gap: 12px;
3384
- min-width: 100%;
3385
- width: max-content;
3386
- white-space: nowrap;
3387
- contain: strict;
3388
- height: 20px;
3389
- }
3390
-
3391
- .ChatDebugViewEventLineNumber {
3392
- display: flex;
3393
- justify-content: flex-end;
3394
- flex: 0 0 3ch;
3395
- opacity: 0.6;
3396
- user-select: none;
3397
- contain: content;
3398
- }
3399
-
3400
- .ChatDebugViewEventLineContent {
3401
- display: flex;
3402
- white-space: pre;
3403
- contain: content;
3404
- }
3405
-
3406
- .ChatDebugViewDetailsPanel > .ChatDebugViewEvent {
3407
- border: 0;
3408
- border-radius: 0;
3409
- margin-bottom: 0;
3410
- }
3411
-
3412
- .ChatDebugViewTiming {
3413
- display: flex;
3414
- flex-direction: column;
3415
- width: 100%;
3416
- contain: strict;
3417
- flex: 1;
3418
- }
3419
-
3420
- .ChatDebugViewTimingRow {
3421
- display: flex;
3422
- align-items: center;
3423
- justify-content: space-between;
3424
- gap: 12px;
3425
- padding: 8px 10px;
3426
- border-bottom: 1px solid var(--vscode-editorWidget-border, #454545);
3427
- contain: content;
3428
- }
3429
-
3430
- .ChatDebugViewTimingRow:last-child {
3431
- border-bottom: 0;
3432
- }
3433
-
3434
- .ChatDebugViewTimingLabel {
3435
- opacity: 0.8;
3436
- contain: content;
3437
- }
3438
-
3439
- .ChatDebugViewTimingValue {
3440
- text-align: right;
3441
- font-family: var(--vscode-editor-font-family, monospace);
3442
- contain: content;
3443
- }
3444
-
3445
- .ChatDebugViewEmpty {
3446
- display: flex;
3447
- align-items: center;
3448
- opacity: 0.8;
3449
- contain: content;
3450
- }
3451
-
3452
- .ChatDebugViewError {
3453
- display: flex;
3454
- color: var(--vscode-errorForeground, #f14c4c);
3455
- white-space: normal;
3456
- contain: content;
3457
- }
3458
-
3459
- .TokenText {
3460
- color: var(--vscode-editor-foreground, inherit);
3461
- }
3462
-
3463
- .TokenKey {
3464
- color: var(--vscode-symbolIcon-propertyForeground, var(--vscode-editor-foreground, inherit));
3465
- }
3466
-
3467
- .TokenString {
3468
- color: var(--vscode-debugTokenExpression-string, var(--vscode-charts-green, #89d185));
3469
- }
3470
-
3471
- .TokenNumeric {
3472
- color: var(--vscode-debugTokenExpression-number, var(--vscode-charts-blue, #75beff));
3473
- }
3474
-
3475
- .TokenBoolean {
3476
- color: var(--vscode-debugTokenExpression-boolean, var(--vscode-charts-yellow, #dcdcaa));
3477
- }
3478
-
3479
- .ChatOrderedList{
3480
- display:flex;
3481
- flex-direction:column;
3482
- margin:0;
3483
- padding:0;
3484
- padding-left:10px;
3485
- contain: content;
3486
- }
3487
-
3488
- .ChatOrderedListItem{
3489
- display:flex;
3490
- margin:0;
3491
- padding:0;
3492
- contain: content;
3493
- }
3494
-
3495
- .ChatToolCalls{
3496
- display:flex;
3497
- flex-direction:column;
3498
- margin:0;
3499
- padding:0;
3500
- contain: content;
3501
- }
3502
- `;
3503
- };
3504
-
3505
- const renderCss = (oldState, newState) => {
3506
- const css = getCss(newState);
3507
- return [SetCss, newState.uid, css];
3508
- };
3509
-
3510
- const text = data => {
3511
- return {
3512
- childCount: 0,
3513
- text: data,
3514
- type: Text
3515
- };
3516
- };
3517
-
3518
- const SetText = 1;
3519
- const Replace = 2;
3520
- const SetAttribute = 3;
3521
- const RemoveAttribute = 4;
3522
- const Add = 6;
3523
- const NavigateChild = 7;
3524
- const NavigateParent = 8;
3525
- const RemoveChild = 9;
3526
- const NavigateSibling = 10;
3527
- const SetReferenceNodeUid = 11;
3528
-
3529
- const isKey = key => {
3530
- return key !== 'type' && key !== 'childCount';
3531
- };
3532
-
3533
- const getKeys = node => {
3534
- const keys = Object.keys(node).filter(isKey);
3535
- return keys;
3536
- };
3537
-
3538
- const arrayToTree = nodes => {
3539
- const result = [];
3540
- let i = 0;
3541
- while (i < nodes.length) {
3542
- const node = nodes[i];
3543
- const {
3544
- children,
3545
- nodesConsumed
3546
- } = getChildrenWithCount(nodes, i + 1, node.childCount || 0);
3547
- result.push({
3548
- node,
3549
- children
3550
- });
3551
- i += 1 + nodesConsumed;
3552
- }
3553
- return result;
3554
- };
3555
- const getChildrenWithCount = (nodes, startIndex, childCount) => {
3556
- if (childCount === 0) {
3557
- return {
3558
- children: [],
3559
- nodesConsumed: 0
3560
- };
3561
- }
3562
- const children = [];
3563
- let i = startIndex;
3564
- let remaining = childCount;
3565
- let totalConsumed = 0;
3566
- while (remaining > 0 && i < nodes.length) {
3567
- const node = nodes[i];
3568
- const nodeChildCount = node.childCount || 0;
3569
- const {
3570
- children: nodeChildren,
3571
- nodesConsumed
3572
- } = getChildrenWithCount(nodes, i + 1, nodeChildCount);
3573
- children.push({
3574
- node,
3575
- children: nodeChildren
3576
- });
3577
- const nodeSize = 1 + nodesConsumed;
3578
- i += nodeSize;
3579
- totalConsumed += nodeSize;
3580
- remaining--;
3581
- }
3582
- return {
3583
- children,
3584
- nodesConsumed: totalConsumed
3585
- };
3586
- };
3587
-
3588
- const compareNodes = (oldNode, newNode) => {
3589
- const patches = [];
3590
- // Check if node type changed - return null to signal incompatible nodes
3591
- // (caller should handle this with a Replace operation)
3592
- if (oldNode.type !== newNode.type) {
3593
- return null;
3594
- }
3595
- // Handle reference nodes - special handling for uid changes
3596
- if (oldNode.type === Reference) {
3597
- if (oldNode.uid !== newNode.uid) {
3598
- patches.push({
3599
- type: SetReferenceNodeUid,
3600
- uid: newNode.uid
3601
- });
3602
- }
3603
- return patches;
3604
- }
3605
- // Handle text nodes
3606
- if (oldNode.type === Text && newNode.type === Text) {
3607
- if (oldNode.text !== newNode.text) {
3608
- patches.push({
3609
- type: SetText,
3610
- value: newNode.text
3611
- });
3612
- }
3613
- return patches;
3614
- }
3615
- // Compare attributes
3616
- const oldKeys = getKeys(oldNode);
3617
- const newKeys = getKeys(newNode);
3618
- // Check for attribute changes
3619
- for (const key of newKeys) {
3620
- if (oldNode[key] !== newNode[key]) {
3621
- patches.push({
3622
- type: SetAttribute,
3623
- key,
3624
- value: newNode[key]
3625
- });
3626
- }
3627
- }
3628
- // Check for removed attributes
3629
- for (const key of oldKeys) {
3630
- if (!(key in newNode)) {
3631
- patches.push({
3632
- type: RemoveAttribute,
3633
- key
3634
- });
3635
- }
3636
- }
3637
- return patches;
3638
- };
3639
-
3640
- const treeToArray = node => {
3641
- const result = [node.node];
3642
- for (const child of node.children) {
3643
- result.push(...treeToArray(child));
3644
- }
3645
- return result;
3646
- };
3647
-
3648
- const diffChildren = (oldChildren, newChildren, patches) => {
3649
- const maxLength = Math.max(oldChildren.length, newChildren.length);
3650
- // Track where we are: -1 means at parent, >= 0 means at child index
3651
- let currentChildIndex = -1;
3652
- // Collect indices of children to remove (we'll add these patches at the end in reverse order)
3653
- const indicesToRemove = [];
3654
- for (let i = 0; i < maxLength; i++) {
3655
- const oldNode = oldChildren[i];
3656
- const newNode = newChildren[i];
3657
- if (!oldNode && !newNode) {
3658
- continue;
3659
- }
3660
- if (!oldNode) {
3661
- // Add new node - we should be at the parent
3662
- if (currentChildIndex >= 0) {
3663
- // Navigate back to parent
3664
- patches.push({
3665
- type: NavigateParent
3666
- });
3667
- currentChildIndex = -1;
3668
- }
3669
- // Flatten the entire subtree so renderInternal can handle it
3670
- const flatNodes = treeToArray(newNode);
3671
- patches.push({
3672
- type: Add,
3673
- nodes: flatNodes
3674
- });
3675
- } else if (newNode) {
3676
- // Compare nodes to see if we need any patches
3677
- const nodePatches = compareNodes(oldNode.node, newNode.node);
3678
- // If nodePatches is null, the node types are incompatible - need to replace
3679
- if (nodePatches === null) {
3680
- // Navigate to this child
3681
- if (currentChildIndex === -1) {
3682
- patches.push({
3683
- type: NavigateChild,
3684
- index: i
3685
- });
3686
- currentChildIndex = i;
3687
- } else if (currentChildIndex !== i) {
3688
- patches.push({
3689
- type: NavigateSibling,
3690
- index: i
3691
- });
3692
- currentChildIndex = i;
3693
- }
3694
- // Replace the entire subtree
3695
- const flatNodes = treeToArray(newNode);
3696
- patches.push({
3697
- type: Replace,
3698
- nodes: flatNodes
3699
- });
3700
- // After replace, we're at the new element (same position)
3701
- continue;
3702
- }
3703
- // Check if we need to recurse into children
3704
- const hasChildrenToCompare = oldNode.children.length > 0 || newNode.children.length > 0;
3705
- // Only navigate to this element if we need to do something
3706
- if (nodePatches.length > 0 || hasChildrenToCompare) {
3707
- // Navigate to this child if not already there
3708
- if (currentChildIndex === -1) {
3709
- patches.push({
3710
- type: NavigateChild,
3711
- index: i
3712
- });
3713
- currentChildIndex = i;
3714
- } else if (currentChildIndex !== i) {
3715
- patches.push({
3716
- type: NavigateSibling,
3717
- index: i
3718
- });
3719
- currentChildIndex = i;
3720
- }
3721
- // Apply node patches (these apply to the current element, not children)
3722
- if (nodePatches.length > 0) {
3723
- patches.push(...nodePatches);
3724
- }
3725
- // Compare children recursively
3726
- if (hasChildrenToCompare) {
3727
- diffChildren(oldNode.children, newNode.children, patches);
3728
- }
3729
- }
3730
- } else {
3731
- // Remove old node - collect the index for later removal
3732
- indicesToRemove.push(i);
3733
- }
3734
- }
3735
- // Navigate back to parent if we ended at a child
3736
- if (currentChildIndex >= 0) {
3737
- patches.push({
3738
- type: NavigateParent
3739
- });
3740
- currentChildIndex = -1;
3741
- }
3742
- // Add remove patches in reverse order (highest index first)
3743
- // This ensures indices remain valid as we remove
3744
- for (let j = indicesToRemove.length - 1; j >= 0; j--) {
3745
- patches.push({
3746
- type: RemoveChild,
3747
- index: indicesToRemove[j]
3748
- });
3749
- }
3750
- };
3751
- const diffTrees = (oldTree, newTree, patches, path) => {
3752
- // At the root level (path.length === 0), we're already AT the element
3753
- // So we compare the root node directly, then compare its children
3754
- if (path.length === 0 && oldTree.length === 1 && newTree.length === 1) {
3755
- const oldNode = oldTree[0];
3756
- const newNode = newTree[0];
3757
- // Compare root nodes
3758
- const nodePatches = compareNodes(oldNode.node, newNode.node);
3759
- // If nodePatches is null, the root node types are incompatible - need to replace
3760
- if (nodePatches === null) {
3761
- const flatNodes = treeToArray(newNode);
3762
- patches.push({
3763
- type: Replace,
3764
- nodes: flatNodes
3765
- });
3766
- return;
3767
- }
3768
- if (nodePatches.length > 0) {
3769
- patches.push(...nodePatches);
3770
- }
3771
- // Compare children
3772
- if (oldNode.children.length > 0 || newNode.children.length > 0) {
3773
- diffChildren(oldNode.children, newNode.children, patches);
3774
- }
3775
- } else {
3776
- // Non-root level or multiple root elements - use the regular comparison
3777
- diffChildren(oldTree, newTree, patches);
3778
- }
3779
- };
3780
-
3781
- const removeTrailingNavigationPatches = patches => {
3782
- // Find the last non-navigation patch
3783
- let lastNonNavigationIndex = -1;
3784
- for (let i = patches.length - 1; i >= 0; i--) {
3785
- const patch = patches[i];
3786
- if (patch.type !== NavigateChild && patch.type !== NavigateParent && patch.type !== NavigateSibling) {
3787
- lastNonNavigationIndex = i;
3788
- break;
3789
- }
3790
- }
3791
- // Return patches up to and including the last non-navigation patch
3792
- return lastNonNavigationIndex === -1 ? [] : patches.slice(0, lastNonNavigationIndex + 1);
3793
- };
3794
-
3795
- const diffTree = (oldNodes, newNodes) => {
3796
- // Step 1: Convert flat arrays to tree structures
3797
- const oldTree = arrayToTree(oldNodes);
3798
- const newTree = arrayToTree(newNodes);
3799
- // Step 3: Compare the trees
3800
- const patches = [];
3801
- diffTrees(oldTree, newTree, patches, []);
3802
- // Remove trailing navigation patches since they serve no purpose
3803
- return removeTrailingNavigationPatches(patches);
3804
- };
3805
-
3806
- const ChatDebugView = 'ChatDebugView';
3807
- const ChatDebugViewDevtools = 'ChatDebugView--devtools';
3808
- const ChatDebugViewDetails = 'ChatDebugViewDetails';
3809
- const ChatDebugViewDetailsBody = 'ChatDebugViewDetailsBody';
3810
- const ChatDebugViewDetailsClose = 'ChatDebugViewDetailsClose';
3811
- const ChatDebugViewDetailsPanel = 'ChatDebugViewDetailsPanel';
3812
- const ChatDebugViewDetailsTab = 'ChatDebugViewDetailsTab';
3813
- const ChatDebugViewDetailsTabSelected = 'ChatDebugViewDetailsTabSelected';
3814
- const ChatDebugViewDetailsTabs = 'ChatDebugViewDetailsTabs';
3815
- const ChatDebugViewDetailsTop = 'ChatDebugViewDetailsTop';
3816
- const ChatDebugViewDevtoolsMain = 'ChatDebugViewDevtoolsMain';
3817
- const ChatDebugViewDevtoolsSplit = 'ChatDebugViewDevtoolsSplit';
3818
- const ChatDebugViewEmpty = 'ChatDebugViewEmpty';
3819
- const ChatDebugViewError = 'ChatDebugViewError';
3820
- const ChatDebugViewEvent = 'ChatDebugViewEvent';
3821
- const ChatDebugViewEventLineContent = 'ChatDebugViewEventLineContent';
3822
- const ChatDebugViewEventLineNumber = 'ChatDebugViewEventLineNumber';
3823
- const ChatDebugViewEventRow = 'ChatDebugViewEventRow';
3824
- const ChatDebugViewEventRowSelected = 'ChatDebugViewEventRowSelected';
3825
- const ChatDebugViewEvents = 'ChatDebugViewEvents';
3826
- const ChatDebugViewEventsFullWidth = 'ChatDebugViewEventsFullWidth';
3827
- const ChatDebugViewFilterInput = 'ChatDebugViewFilterInput';
3828
- const ChatDebugViewFilterInputDevtools = 'ChatDebugViewFilterInput--devtools';
3829
- const ChatDebugViewHeaderCell = 'ChatDebugViewHeaderCell';
3830
- const ChatDebugViewQuickFilterInput = 'ChatDebugViewQuickFilterInput';
3831
- const ChatDebugViewQuickFilterPill = 'ChatDebugViewQuickFilterPill';
3832
- const ChatDebugViewQuickFilterPillSelected = 'ChatDebugViewQuickFilterPillSelected';
3833
- const ChatDebugViewQuickFilters = 'ChatDebugViewQuickFilters';
3834
- const ChatDebugViewSash = 'ChatDebugViewSash';
3835
- const ChatDebugViewSashLine = 'ChatDebugViewSashLine';
3836
- const ChatDebugViewTable = 'ChatDebugViewTable';
3837
- const ChatDebugViewTableBody = 'ChatDebugViewTableBody';
3838
- const ChatDebugViewTableHeader = 'ChatDebugViewTableHeader';
3839
- const ChatDebugViewTableHeaderRow = 'ChatDebugViewTableHeaderRow';
3840
- const ChatDebugViewTimeline = 'ChatDebugViewTimeline';
3841
- const ChatDebugViewTimelineBucket = 'ChatDebugViewTimelineBucket';
3842
- const ChatDebugViewTimelineBucketBar = 'ChatDebugViewTimelineBucketBar';
3843
- const ChatDebugViewTimelineBucketBarSelected = 'ChatDebugViewTimelineBucketBarSelected';
3844
- const ChatDebugViewTimelineBucketSelected = 'ChatDebugViewTimelineBucketSelected';
3845
- const ChatDebugViewTimelineBucketUnit = 'ChatDebugViewTimelineBucketUnit';
3846
- const ChatDebugViewTimelineBucketUnitEmpty = 'ChatDebugViewTimelineBucketUnitEmpty';
3847
- const ChatDebugViewTimelineBuckets = 'ChatDebugViewTimelineBuckets';
3848
- const ChatDebugViewTimelineInteractive = 'ChatDebugViewTimelineInteractive';
3849
- const ChatDebugViewTimelinePresetInput = 'ChatDebugViewTimelinePresetInput';
3850
- const ChatDebugViewTimelineSelectionMarker = 'ChatDebugViewTimelineSelectionMarker';
3851
- const ChatDebugViewTimelineSelectionMarkerEnd = 'ChatDebugViewTimelineSelectionMarkerEnd';
3852
- const ChatDebugViewTimelineSelectionMarkerStart = 'ChatDebugViewTimelineSelectionMarkerStart';
3853
- const ChatDebugViewTimelineSelectionOverlay = 'ChatDebugViewTimelineSelectionOverlay';
3854
- const ChatDebugViewTimelineSelectionRange = 'ChatDebugViewTimelineSelectionRange';
3855
- const ChatDebugViewTimelineSummary = 'ChatDebugViewTimelineSummary';
3856
- const ChatDebugViewTimelineTop = 'ChatDebugViewTimelineTop';
3857
- const ChatDebugViewTiming = 'ChatDebugViewTiming';
3858
- const ChatDebugViewTimingLabel = 'ChatDebugViewTimingLabel';
3859
- const ChatDebugViewTimingRow = 'ChatDebugViewTimingRow';
3860
- const ChatDebugViewTimingValue = 'ChatDebugViewTimingValue';
3861
- const ChatDebugViewTop = 'ChatDebugViewTop';
3862
- const ChatDebugViewTopDevtools = 'ChatDebugViewTop--devtools';
3863
- const ChatDebugViewCell = 'ChatDebugViewCell';
3864
- const ChatDebugViewCellDuration = 'ChatDebugViewCellDuration';
3865
- const ChatDebugViewCellStatus = 'ChatDebugViewCellStatus';
3866
- const ChatDebugViewCellStatusError = 'ChatDebugViewCellStatusError';
3867
- const ChatDebugViewCellType = 'ChatDebugViewCellType';
3868
- const InputBox = 'InputBox';
3869
- const Row = 'row';
3870
- const TokenBoolean = 'TokenBoolean';
3871
- const TokenKey = 'TokenKey';
3872
- const TokenNumeric = 'TokenNumeric';
3873
- const TokenString = 'TokenString';
3874
- const TokenText = 'TokenText';
3875
- const joinClassNames = (...classNames) => {
3876
- return classNames.filter(Boolean).join(' ');
3877
- };
3878
-
3879
- const getDebugErrorDom = errorMessage => {
3880
- return [{
3881
- childCount: 1,
3882
- className: ChatDebugView,
3883
- type: Div
3884
- }, {
3885
- childCount: 1,
3886
- className: ChatDebugViewError,
3887
- type: Div
3888
- }, text(errorMessage)];
3889
- };
3890
-
3891
- const HandleEventCategoryFilter = 4;
3892
- const HandleFilterInput = 5;
3893
- const HandleDetailTab = 6;
3894
- const HandleEventRowClick = 7;
3895
- const HandleHeaderContextMenu = 8;
3896
- const HandleSashPointerDown = 9;
3897
- const HandleSashPointerMove = 10;
3898
- const HandleSashPointerUp = 11;
3899
- const HandleTableBodyContextMenu = 12;
3900
- const HandleDetailsContextMenu = 13;
3901
- const HandleTimelinePointerDown = 14;
3902
- const HandleTimelinePointerMove = 15;
3903
- const HandleTimelinePointerUp = 16;
3904
- const HandleTimelineDoubleClick = 17;
3905
- const HandleTableKeyDown = 18;
3906
- const HandleTimelineRangePreset = 19;
3907
- const HandleCloseDetails = 20;
3908
-
3909
- const getDebugViewTopDom = (filterValue, useDevtoolsLayout, quickFilterNodes) => {
3910
- if (useDevtoolsLayout) {
3911
- return [{
3912
- childCount: 1 + (quickFilterNodes.length > 0 ? 1 : 0),
3913
- className: joinClassNames(ChatDebugViewTop, ChatDebugViewTopDevtools),
3914
- onContextMenu: HandleHeaderContextMenu,
3915
- type: Search
3916
- }, {
3917
- autocomplete: 'off',
3918
- childCount: 0,
3919
- className: joinClassNames(InputBox, ChatDebugViewFilterInput, ChatDebugViewFilterInputDevtools),
3920
- inputType: 'search',
3921
- name: Filter,
3922
- onInput: HandleFilterInput,
3923
- placeholder: 'Filter events',
3924
- type: Input,
3925
- value: filterValue
3926
- }, ...quickFilterNodes];
3927
- }
3928
- return [{
3929
- childCount: 1,
3930
- className: ChatDebugViewTop,
3931
- onContextMenu: HandleHeaderContextMenu,
3932
- type: Search
3933
- }, {
3934
- autocomplete: 'off',
3935
- childCount: 0,
3936
- className: joinClassNames(InputBox, ChatDebugViewFilterInput),
3937
- inputType: 'search',
3938
- name: Filter,
3939
- onInput: HandleFilterInput,
3940
- placeholder: 'Filter events',
3941
- type: Input,
3942
- value: filterValue
3943
- }];
3944
- };
3945
-
3946
- const getDurationText = event => {
3947
- const explicitDuration = event.durationMs ?? event.duration;
3948
- if (typeof explicitDuration === 'number' && Number.isFinite(explicitDuration)) {
3949
- return `${explicitDuration}ms`;
3950
- }
3951
- const start = toTimeNumber(event.started ?? event.startTime ?? event.startTimestamp ?? event.timestamp);
3952
- const end = toTimeNumber(event.ended ?? event.endTime ?? event.endTimestamp ?? event.timestamp);
3953
- if (start === undefined || end === undefined || end < start) {
3954
- return '-';
3955
- }
3956
- return `${end - start}ms`;
3957
- };
3958
-
3959
- const timestampFormatter = new Intl.DateTimeFormat('en-US', {
3960
- day: '2-digit',
3961
- fractionalSecondDigits: 3,
3962
- hour: '2-digit',
3963
- hourCycle: 'h23',
3964
- minute: '2-digit',
3965
- month: 'short',
3966
- second: '2-digit',
3967
- timeZone: 'UTC',
3968
- year: 'numeric'
3969
- });
3970
- const formatTimestamp = date => {
3971
- return `${timestampFormatter.format(date)} UTC`;
3972
- };
3973
-
3974
- const getTimestampText = value => {
3975
- if (typeof value === 'string') {
3976
- const timestamp = Date.parse(value);
3977
- if (!Number.isNaN(timestamp)) {
3978
- return formatTimestamp(new Date(timestamp));
3979
- }
3980
- return value;
3981
- }
3982
- if (typeof value === 'number' && Number.isFinite(value)) {
3983
- return formatTimestamp(new Date(value));
3984
- }
3985
- return '-';
3986
- };
3987
-
3988
- const getEndText = event => {
3989
- return getTimestampText(event.ended ?? event.endTime ?? event.endTimestamp ?? event.timestamp);
3990
- };
3991
-
3992
- const getStartText = event => {
3993
- return getTimestampText(event.started ?? event.startTime ?? event.startTimestamp ?? event.timestamp);
3994
- };
3995
-
3996
- const getTimingRowDom = (label, value) => {
3997
- return [{
3998
- childCount: 2,
3999
- className: ChatDebugViewTimingRow,
4000
- type: Div
4001
- }, {
4002
- childCount: 1,
4003
- className: ChatDebugViewTimingLabel,
4004
- type: Span
4005
- }, text(label), {
4006
- childCount: 1,
4007
- className: ChatDebugViewTimingValue,
4008
- type: Span
4009
- }, text(value)];
4010
- };
4011
- const getTimingDetailsDom = event => {
4012
- return [{
4013
- childCount: 3,
4014
- className: ChatDebugViewTiming,
4015
- type: Div
4016
- }, ...getTimingRowDom('Started', getStartText(event)), ...getTimingRowDom('Ended', getEndText(event)), ...getTimingRowDom('Duration', getDurationText(event))];
4017
- };
4018
-
4019
- const getTabId = detailTab => {
4020
- return `ChatDebugViewDetailsTab-${detailTab}`;
4021
- };
4022
- const getPanelId = detailTab => {
4023
- return `ChatDebugViewDetailsPanel-${detailTab}`;
4024
- };
4025
- const getTabNodes = selectedDetailTab => {
4026
- return detailTabs.flatMap(detailTab => {
4027
- const isSelected = detailTab === selectedDetailTab;
4028
- return [{
4029
- 'aria-controls': getPanelId(detailTab),
4030
- 'aria-selected': isSelected,
4031
- childCount: 1,
4032
- className: joinClassNames(ChatDebugViewDetailsTab, isSelected && ChatDebugViewDetailsTabSelected),
4033
- id: getTabId(detailTab),
4034
- name: DetailTab,
4035
- onChange: HandleDetailTab,
4036
- onClick: HandleDetailTab,
4037
- role: 'tab',
4038
- tabIndex: isSelected ? 0 : -1,
4039
- type: Button,
4040
- value: detailTab
4041
- }, text(getDetailTabLabel(detailTab))];
4042
- });
4043
- };
4044
- const getDetailsDom = (previewEventNodes, responseEventNodes = previewEventNodes, selectedEvent = null, selectedDetailTab = Response) => {
4045
- if (previewEventNodes.length === 0 && responseEventNodes.length === 0) {
4046
- return [];
4047
- }
4048
- const contentNodes = selectedDetailTab === Timing && selectedEvent ? getTimingDetailsDom(selectedEvent) : selectedDetailTab === Preview ? previewEventNodes : responseEventNodes;
4049
- return [{
4050
- childCount: 2,
4051
- className: ChatDebugViewDetails,
4052
- type: Div
4053
- }, {
4054
- childCount: 2,
4055
- className: ChatDebugViewDetailsTop,
4056
- type: Div
4057
- }, {
4058
- 'aria-label': 'Close details',
4059
- childCount: 0,
4060
- className: ChatDebugViewDetailsClose,
4061
- name: CloseDetails,
4062
- onChange: HandleCloseDetails,
4063
- onClick: HandleCloseDetails,
4064
- type: Button,
4065
- value: 'close'
4066
- }, {
4067
- 'aria-label': 'Detail sections',
4068
- childCount: detailTabs.length,
4069
- className: ChatDebugViewDetailsTabs,
4070
- role: 'tablist',
4071
- type: Div
4072
- }, ...getTabNodes(selectedDetailTab), {
4073
- childCount: 1,
4074
- className: ChatDebugViewDetailsBody,
4075
- role: 'document',
4076
- type: Div
4077
- }, {
4078
- 'aria-labelledby': getTabId(selectedDetailTab),
4079
- childCount: 1,
4080
- className: ChatDebugViewDetailsPanel,
4081
- id: getPanelId(selectedDetailTab),
4082
- onContextMenu: HandleDetailsContextMenu,
4083
- role: 'tabpanel',
4084
- type: Div
4085
- }, ...contentNodes];
4086
- };
4087
-
4088
- const toolExecutionTypePrefix = 'tool-execution';
4089
- const getToolName = event => {
4090
- if (typeof event.toolName === 'string' && event.toolName) {
4091
- return event.toolName;
4092
- }
4093
- if (typeof event.name === 'string' && event.name) {
4094
- return event.name;
4095
- }
4096
- const {
4097
- arguments: toolArguments
4098
- } = event;
4099
- if (!toolArguments || typeof toolArguments !== 'object') {
4100
- return undefined;
4101
- }
4102
- const {
4103
- name
4104
- } = toolArguments;
4105
- if (typeof name !== 'string' || !name) {
4106
- return undefined;
4107
- }
4108
- return name;
4109
- };
4110
- const getEventTypeLabel = event => {
4111
- if (!event.type.startsWith(toolExecutionTypePrefix)) {
4112
- return event.type;
4113
- }
4114
- const toolName = getToolName(event);
4115
- if (!toolName) {
4116
- return event.type;
4117
- }
4118
- return `${event.type}, ${toolName}`;
4119
- };
4120
-
4121
- const isRecord = value => {
4122
- return typeof value === 'object' && value !== null;
4123
- };
4124
- const isErrorStatusCode = value => {
4125
- if (typeof value === 'number') {
4126
- return value >= 400;
4127
- }
4128
- if (typeof value === 'string') {
4129
- const parsedStatus = Number(value);
4130
- return Number.isFinite(parsedStatus) && parsedStatus >= 400;
4131
- }
4132
- return false;
4133
- };
4134
- const hasErrorStatus = event => {
4135
- if (event.type === 'error') {
4136
- return true;
4137
- }
4138
- if (event.success === false || event.ok === false) {
4139
- return true;
4140
- }
4141
- const {
4142
- status
4143
- } = event;
4144
- if (isErrorStatusCode(status)) {
4145
- return true;
4146
- }
4147
- const {
4148
- result
4149
- } = event;
4150
- if (isRecord(result)) {
4151
- if (isErrorStatusCode(result.status)) {
4152
- return true;
4153
- }
4154
- if (typeof result.error === 'string' || typeof result.errorMessage === 'string' || typeof result.exception === 'string') {
4155
- return true;
4156
- }
4157
- }
4158
- return typeof event.error === 'string' || typeof event.errorMessage === 'string' || typeof event.exception === 'string';
4159
- };
4160
-
4161
- const getStatusText = event => {
4162
- return hasErrorStatus(event) ? '400' : '200';
4163
- };
4164
-
4165
- const getDevtoolsRows = (events, selectedEventIndex) => {
4166
- return events.flatMap((event, i) => {
4167
- const isSelected = selectedEventIndex === i;
4168
- const isErrorStatus = hasErrorStatus(event);
4169
- const rowIndex = String(i);
4170
- return [{
4171
- childCount: 3,
4172
- className: joinClassNames(ChatDebugViewEventRow, isSelected && ChatDebugViewEventRowSelected),
4173
- 'data-index': rowIndex,
4174
- type: Tr
4175
- }, {
4176
- childCount: 1,
4177
- className: joinClassNames(ChatDebugViewCell, ChatDebugViewCellType),
4178
- type: Td
4179
- }, text(getEventTypeLabel(event)), {
4180
- childCount: 1,
4181
- className: joinClassNames(ChatDebugViewCell, ChatDebugViewCellDuration),
4182
- type: Td
4183
- }, text(getDurationText(event)), {
4184
- childCount: 1,
4185
- className: joinClassNames(ChatDebugViewCell, ChatDebugViewCellStatus, isErrorStatus && ChatDebugViewCellStatusError),
4186
- type: Td
4187
- }, text(getStatusText(event))];
4188
- });
4189
- };
4190
-
4191
- const getEmptyStateDom = emptyMessage => {
4192
- return [{
4193
- childCount: 1,
4194
- className: ChatDebugViewEmpty,
4195
- type: Div
4196
- }, text(emptyMessage)];
4197
- };
4198
-
4199
- const pushToken = (segments, className, value) => {
4200
- if (!value) {
4201
- return segments;
4202
- }
4203
- const lastSegment = segments.at(-1);
4204
- if (lastSegment && lastSegment.className === className) {
4205
- const merged = {
4206
- className,
4207
- value: lastSegment.value + value
4208
- };
4209
- return [...segments.slice(0, -1), merged];
4210
- }
4211
- return [...segments, {
4212
- className,
4213
- value
4214
- }];
4215
- };
4216
-
4217
- const numberRegex = /^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/;
4218
- const whitespaceRegex = /\s/u;
4219
- const getTokenSegments = json => {
4220
- let segments = [];
4221
- let i = 0;
4222
- while (i < json.length) {
4223
- const character = json[i];
4224
- if (character === '"') {
4225
- const start = i;
4226
- i++;
4227
- while (i < json.length) {
4228
- const currentCharacter = json[i];
4229
- if (currentCharacter === '\\') {
4230
- i += 2;
4231
- continue;
4232
- }
4233
- if (currentCharacter === '"') {
4234
- i++;
4235
- break;
4236
- }
4237
- i++;
4238
- }
4239
- const tokenValue = json.slice(start, i);
4240
- let lookAheadIndex = i;
4241
- while (lookAheadIndex < json.length && whitespaceRegex.test(json[lookAheadIndex])) {
4242
- lookAheadIndex++;
4243
- }
4244
- const className = json[lookAheadIndex] === ':' ? TokenKey : TokenString;
4245
- segments = pushToken(segments, className, tokenValue);
4246
- continue;
4247
- }
4248
- const numberMatch = numberRegex.exec(json.slice(i));
4249
- if (numberMatch) {
4250
- segments = pushToken(segments, TokenNumeric, numberMatch[0]);
4251
- i += numberMatch[0].length;
4252
- continue;
4253
- }
4254
- if (json.startsWith('true', i)) {
4255
- segments = pushToken(segments, TokenBoolean, 'true');
4256
- i += 4;
4257
- continue;
4258
- }
4259
- if (json.startsWith('false', i)) {
4260
- segments = pushToken(segments, TokenBoolean, 'false');
4261
- i += 5;
4262
- continue;
4263
- }
4264
- if (json.startsWith('null', i)) {
4265
- segments = pushToken(segments, TokenBoolean, 'null');
4266
- i += 4;
4267
- continue;
4268
- }
4269
- segments = pushToken(segments, TokenText, character);
4270
- i++;
4271
- }
4272
- return segments;
4273
- };
4274
-
4275
- const getJsonLines = value => {
4276
- const json = JSON.stringify(value, null, 2);
4277
- if (!json) {
4278
- return [[{
4279
- className: TokenText,
4280
- value: String(json)
4281
- }]];
4282
- }
4283
- const segments = getTokenSegments(json);
4284
- const lines = [];
4285
- let currentLine = [];
4286
- for (const segment of segments) {
4287
- const parts = segment.value.split('\n');
4288
- for (let i = 0; i < parts.length; i++) {
4289
- const part = parts[i];
4290
- if (part) {
4291
- currentLine.push({
4292
- className: segment.className,
4293
- value: part
4294
- });
4295
- }
4296
- if (i < parts.length - 1) {
4297
- lines.push(currentLine);
4298
- currentLine = [];
4299
- }
4300
- }
4301
- }
4302
- lines.push(currentLine);
4303
- return lines;
4304
- };
4305
- const getLineContentNodes = line => {
4306
- return line.flatMap(segment => {
4307
- return [{
4308
- childCount: 1,
4309
- className: segment.className,
4310
- type: Span
4311
- }, text(segment.value)];
4312
- });
4313
- };
4314
- const getLineNodes = lines => {
4315
- return lines.flatMap((line, index) => {
4316
- const lineContentNodes = getLineContentNodes(line);
4317
- return [{
4318
- childCount: 2,
4319
- className: Row,
4320
- type: Div
4321
- }, {
4322
- childCount: 1,
4323
- className: ChatDebugViewEventLineNumber,
4324
- type: Span
4325
- }, text(String(index + 1)), {
4326
- childCount: lineContentNodes.length / 2,
4327
- className: ChatDebugViewEventLineContent,
4328
- type: Span
4329
- }, ...lineContentNodes];
4330
- });
4331
- };
4332
- const isChatViewEvent = value => {
4333
- return typeof value === 'object' && value !== null && typeof value.type === 'string';
4334
- };
4335
- const getEventNode = value => {
4336
- const renderedValue = isChatViewEvent(value) ? {
4337
- ...value,
4338
- type: getEventTypeLabel(value)
4339
- } : value;
4340
- const lines = getJsonLines(renderedValue);
4341
- const lineNodes = getLineNodes(lines);
4342
- return [{
4343
- childCount: lines.length,
4344
- className: ChatDebugViewEvent,
4345
- type: Div
4346
- }, ...lineNodes];
4347
- };
4348
-
4349
- const getEventsClassName = hasSelectedEvent => {
4350
- const widthClassName = joinClassNames(ChatDebugViewEvents, !hasSelectedEvent && ChatDebugViewEventsFullWidth);
4351
- return widthClassName;
4352
- };
4353
-
4354
- const hasOwn = (event, key) => {
4355
- return Object.hasOwn(event, key);
4356
- };
4357
- const isChatMessageUpdatedEvent = event => {
4358
- return event.type === 'chat-message-updated';
4359
- };
4360
- const getPreviewName = event => {
4361
- if (typeof event.name === 'string' && event.name) {
4362
- return event.name;
4363
- }
4364
- if (typeof event.toolName === 'string' && event.toolName) {
4365
- return event.toolName;
4366
- }
4367
- return undefined;
4368
- };
4369
- const shouldIncludeArguments = (event, name) => {
4370
- if (!hasOwn(event, 'arguments')) {
4371
- return false;
4372
- }
4373
- if (name === 'getWorkspaceUri') {
4374
- return false;
4375
- }
4376
- return true;
4377
- };
4378
- const getPreviewEvent = event => {
4379
- if (isChatMessageUpdatedEvent(event) && typeof event.text === 'string') {
4380
- return event.text;
4381
- }
4382
- const name = getPreviewName(event);
4383
- const previewEvent = {
4384
- ...(name === undefined ? {} : {
4385
- name
4386
- }),
4387
- ...(shouldIncludeArguments(event, name) ? {
4388
- arguments: event.arguments
4389
- } : {}),
4390
- ...(hasOwn(event, 'result') ? {
4391
- result: event.result
4392
- } : {})
4393
- };
4394
- if (Object.keys(previewEvent).length > 0) {
4395
- return previewEvent;
4396
- }
4397
- return event;
4398
- };
4399
-
4400
- const getSashNodesDom = hasSelectedEvent => {
4401
- if (!hasSelectedEvent) {
4402
- return [];
4403
- }
4404
- return [{
4405
- childCount: 1,
4406
- className: ChatDebugViewSash,
4407
- onPointerDown: HandleSashPointerDown,
4408
- type: Div
4409
- }, {
4410
- childCount: 0,
4411
- className: ChatDebugViewSashLine,
4412
- type: Div
4413
- }];
4414
- };
4415
-
4416
- const getTableBodyDom = (rowNodes, eventCount) => {
4417
- return [{
4418
- childCount: eventCount === 0 ? 1 : eventCount,
4419
- className: ChatDebugViewTableBody,
4420
- onContextMenu: HandleTableBodyContextMenu,
4421
- onPointerDown: HandleEventRowClick,
4422
- type: TBody
4423
- }, ...rowNodes];
4424
- };
4425
-
4426
- const getTableHeaderDom = () => {
4427
- return [{
4428
- childCount: 1,
4429
- className: ChatDebugViewTableHeader,
4430
- type: THead
4431
- }, {
4432
- childCount: 3,
4433
- className: ChatDebugViewTableHeaderRow,
4434
- type: Tr
4435
- }, {
4436
- childCount: 1,
4437
- className: ChatDebugViewHeaderCell,
4438
- scope: 'col',
4439
- type: Th
4440
- }, text('Type'), {
4441
- childCount: 1,
4442
- className: ChatDebugViewHeaderCell,
4443
- scope: 'col',
4444
- type: Th
4445
- }, text('Duration'), {
4446
- childCount: 1,
4447
- className: ChatDebugViewHeaderCell,
4448
- scope: 'col',
4449
- type: Th
4450
- }, text('Status')];
4451
- };
4452
-
4453
- const getTableDom = (rowNodes, eventCount) => {
4454
- return [{
4455
- childCount: 2,
4456
- className: ChatDebugViewTable,
4457
- type: Table
4458
- }, ...getTableHeaderDom(), ...getTableBodyDom(rowNodes, eventCount)];
4459
- };
4460
-
4461
- const formatPercent = value => {
4462
- return `${Number(value.toFixed(3))}%`;
4463
- };
4464
-
4465
- const getBucketUnitDom = unitCount => {
4466
- if (unitCount === 0) {
4467
- return [{
4468
- childCount: 0,
4469
- className: joinClassNames(ChatDebugViewTimelineBucketUnit, ChatDebugViewTimelineBucketUnitEmpty),
4470
- type: Div
4471
- }];
4472
- }
4473
- return Array.from({
4474
- length: unitCount
4475
- }).fill({
4476
- childCount: 0,
4477
- className: ChatDebugViewTimelineBucketUnit,
4478
- type: Div
4479
- });
4480
- };
4481
-
4482
- const getBucketDom = bucket => {
4483
- const presetValue = `${formatTimelinePresetValue(bucket.startSeconds)}:${formatTimelinePresetValue(bucket.endSeconds)}`;
4484
- return [{
4485
- childCount: 2,
4486
- className: joinClassNames(ChatDebugViewTimelineBucket, bucket.isSelected && ChatDebugViewTimelineBucketSelected),
4487
- type: Label
4488
- }, {
4489
- checked: false,
4490
- childCount: 0,
4491
- className: ChatDebugViewTimelinePresetInput,
4492
- inputType: 'radio',
4493
- name: TimelineRangePreset,
4494
- onChange: HandleTimelineRangePreset,
4495
- type: Input,
4496
- value: presetValue
4497
- }, {
4498
- childCount: bucket.unitCount === 0 ? 1 : bucket.unitCount,
4499
- className: joinClassNames(ChatDebugViewTimelineBucketBar, bucket.isSelected && ChatDebugViewTimelineBucketBarSelected),
4500
- type: Div
4501
- }, ...getBucketUnitDom(bucket.unitCount)];
4502
- };
4503
-
4504
- const getEffectiveTimelineRange = (timelineStartSeconds, timelineEndSeconds, timelineSelectionActive, timelineSelectionAnchorSeconds, timelineSelectionFocusSeconds) => {
4505
- if (!timelineSelectionActive) {
4506
- return {
4507
- endSeconds: timelineEndSeconds,
4508
- startSeconds: timelineStartSeconds
4509
- };
4510
- }
4511
- return {
4512
- endSeconds: timelineSelectionFocusSeconds,
4513
- startSeconds: timelineSelectionAnchorSeconds
4514
- };
4515
- };
4516
-
4517
- const formatTimelineSeconds = value => {
4518
- if (Number.isInteger(value)) {
4519
- return `${value}s`;
4520
- }
4521
- return `${Number(value.toFixed(1))}s`;
4522
- };
4523
-
4524
- const getTimelineSummary = (timelineEvents, timelineStartSeconds, timelineEndSeconds) => {
4525
- const timelineInfo = getTimelineInfo(timelineEvents, timelineStartSeconds, timelineEndSeconds);
4526
- if (timelineInfo.hasSelection && timelineInfo.startSeconds !== null && timelineInfo.endSeconds !== null) {
4527
- return `Window ${formatTimelineSeconds(timelineInfo.startSeconds)}-${formatTimelineSeconds(timelineInfo.endSeconds)} of ${formatTimelineSeconds(timelineInfo.durationSeconds)}`;
4528
- }
4529
- return `Window 0s-${formatTimelineSeconds(timelineInfo.durationSeconds)} of ${formatTimelineSeconds(timelineInfo.durationSeconds)}`;
4530
- };
4531
-
4532
- const getTimelineNodes = (timelineEvents, timelineStartSeconds, timelineEndSeconds, timelineSelectionActive = false, timelineSelectionAnchorSeconds = '', timelineSelectionFocusSeconds = '') => {
4533
- const effectiveRange = getEffectiveTimelineRange(timelineStartSeconds, timelineEndSeconds, timelineSelectionActive, timelineSelectionAnchorSeconds, timelineSelectionFocusSeconds);
4534
- const timelineInfo = getTimelineInfo(timelineEvents, effectiveRange.startSeconds, effectiveRange.endSeconds);
4535
- if (timelineInfo.buckets.length === 0) {
4536
- return [];
4537
- }
4538
- const selectionNodes = timelineInfo.hasSelection && timelineInfo.selectionStartPercent !== null && timelineInfo.selectionEndPercent !== null ? [{
4539
- childCount: 0,
4540
- className: ChatDebugViewTimelineSelectionRange,
4541
- style: `left:${formatPercent(timelineInfo.selectionStartPercent)};width:${formatPercent(timelineInfo.selectionEndPercent - timelineInfo.selectionStartPercent)};`,
4542
- type: Div
4543
- }, {
4544
- childCount: 0,
4545
- className: joinClassNames(ChatDebugViewTimelineSelectionMarker, ChatDebugViewTimelineSelectionMarkerStart),
4546
- style: `left:${formatPercent(timelineInfo.selectionStartPercent)};`,
4547
- type: Div
4548
- }, {
4549
- childCount: 0,
4550
- className: joinClassNames(ChatDebugViewTimelineSelectionMarker, ChatDebugViewTimelineSelectionMarkerEnd),
4551
- style: `left:${formatPercent(timelineInfo.selectionEndPercent)};`,
4552
- type: Div
4553
- }] : [];
4554
- return [{
4555
- childCount: 2,
4556
- className: ChatDebugViewTimeline,
4557
- type: Div
4558
- }, {
4559
- childCount: 1,
4560
- className: ChatDebugViewTimelineTop,
4561
- type: Div
4562
- }, {
4563
- childCount: 1,
4564
- className: ChatDebugViewTimelineSummary,
4565
- type: Div
4566
- }, text(getTimelineSummary(timelineEvents, effectiveRange.startSeconds, effectiveRange.endSeconds)), {
4567
- childCount: 2,
4568
- className: ChatDebugViewTimelineInteractive,
4569
- onDoubleClick: HandleTimelineDoubleClick,
4570
- onPointerDown: HandleTimelinePointerDown,
4571
- type: Div
4572
- }, {
4573
- childCount: timelineInfo.buckets.length,
4574
- className: ChatDebugViewTimelineBuckets,
4575
- type: Div
4576
- }, ...timelineInfo.buckets.flatMap(getBucketDom), {
4577
- childCount: selectionNodes.length,
4578
- className: ChatDebugViewTimelineSelectionOverlay,
4579
- type: Div
4580
- }, ...selectionNodes];
4581
- };
4582
-
4583
- const getDevtoolsDom = (events, selectedEvent, selectedEventIndex, timelineEvents, timelineStartSeconds, timelineEndSeconds, emptyMessage = 'No events have been found', timelineSelectionActive = false, timelineSelectionAnchorSeconds = '', timelineSelectionFocusSeconds = '', selectedDetailTab = Response) => {
4584
- const rowNodes = getDevtoolsRows(events, selectedEventIndex);
4585
- const timelineNodes = getTimelineNodes(timelineEvents, timelineStartSeconds, timelineEndSeconds, timelineSelectionActive, timelineSelectionAnchorSeconds, timelineSelectionFocusSeconds);
4586
- const previewEventNodes = selectedEvent ? getEventNode(getPreviewEvent(selectedEvent)) : [];
4587
- const responseEventNodes = selectedEvent ? getEventNode(selectedEvent) : [];
4588
- const hasSelectedEvent = responseEventNodes.length > 0;
4589
- const tableNodes = events.length === 0 ? getEmptyStateDom(emptyMessage) : getTableDom(rowNodes, events.length);
4590
- const eventsClassName = getEventsClassName(hasSelectedEvent);
4591
- const detailsNodes = getDetailsDom(previewEventNodes, responseEventNodes, selectedEvent, isDetailTab(selectedDetailTab) ? selectedDetailTab : Response);
4592
- const sashNodes = getSashNodesDom(hasSelectedEvent);
4593
- const splitChildCount = hasSelectedEvent ? 3 : 1;
4594
- const mainChildCount = 1 + (timelineNodes.length > 0 ? 1 : 0);
4595
- return [{
4596
- childCount: mainChildCount,
4597
- className: ChatDebugViewDevtoolsMain,
4598
- type: Div
4599
- }, ...timelineNodes, {
4600
- childCount: splitChildCount,
4601
- className: ChatDebugViewDevtoolsSplit,
4602
- type: Div
4603
- }, {
4604
- childCount: 1,
4605
- className: eventsClassName,
4606
- onKeyDown: HandleTableKeyDown,
4607
- role: 'application',
4608
- tabIndex: 0,
4609
- type: Div
4610
- }, ...tableNodes, ...sashNodes, ...detailsNodes];
4611
- };
4612
-
4613
- const getLegacyEventsDom = (errorMessage, emptyMessage, eventNodes) => {
4614
- return [{
4615
- childCount: eventNodes.length === 0 ? 1 : eventNodes.length,
4616
- className: ChatDebugViewEvents,
4617
- role: 'application',
4618
- tabIndex: 0,
4619
- type: Div
4620
- }, ...(eventNodes.length === 0 ? [{
4621
- childCount: 1,
4622
- className: errorMessage ? ChatDebugViewError : ChatDebugViewEmpty,
4623
- type: Div
4624
- }, text(errorMessage || emptyMessage)] : eventNodes)];
4625
- };
4626
-
4627
- const getQuickFilterNodes = (eventCategoryFilter, eventCategoryFilterOptions) => {
4628
- return [{
4629
- childCount: eventCategoryFilterOptions.length,
4630
- className: ChatDebugViewQuickFilters,
4631
- type: Div
4632
- }, ...eventCategoryFilterOptions.flatMap(option => {
4633
- const isSelected = option.value === eventCategoryFilter;
4634
- return [{
4635
- childCount: 2,
4636
- className: joinClassNames(ChatDebugViewQuickFilterPill, isSelected && ChatDebugViewQuickFilterPillSelected),
4637
- type: Label
4638
- }, {
4639
- checked: isSelected,
4640
- childCount: 0,
4641
- className: ChatDebugViewQuickFilterInput,
4642
- inputType: 'radio',
4643
- name: EventCategoryFilter,
4644
- onChange: HandleEventCategoryFilter,
4645
- type: Input,
4646
- value: option.value
4647
- }, text(option.label)];
4648
- })];
4649
- };
4650
-
4651
- const getTimelineFilterDescription = (timelineStartSeconds, timelineEndSeconds) => {
4652
- const trimmedStart = timelineStartSeconds.trim();
4653
- const trimmedEnd = timelineEndSeconds.trim();
4654
- if (trimmedStart && trimmedEnd) {
4655
- return `${trimmedStart}s-${trimmedEnd}s`;
4656
- }
4657
- if (trimmedStart) {
4658
- return `from ${trimmedStart}s`;
4659
- }
4660
- if (trimmedEnd) {
4661
- return `to ${trimmedEnd}s`;
4662
- }
4663
- return '';
4664
- };
4665
-
4666
- const getChatDebugViewDom = (errorMessage, filterValue, eventCategoryFilter, eventCategoryFilterOptions, _showEventStreamFinishedEvents, _showInputEvents, _showResponsePartEvents, useDevtoolsLayout, selectedEvent, selectedEventIndex, timelineStartSeconds, timelineEndSeconds, timelineEvents, events, timelineSelectionActive = false, timelineSelectionAnchorSeconds = '', timelineSelectionFocusSeconds = '', selectedDetailTab = Response) => {
4667
- if (errorMessage) {
4668
- return getDebugErrorDom(errorMessage);
4669
- }
4670
- const trimmedFilterValue = filterValue.trim();
4671
- const filterDescriptionParts = [];
4672
- if (eventCategoryFilter !== All) {
4673
- filterDescriptionParts.push(getEventCategoryFilterLabel(eventCategoryFilter).toLowerCase());
4674
- }
4675
- if (trimmedFilterValue) {
4676
- filterDescriptionParts.push(trimmedFilterValue);
4677
- }
4678
- const timelineFilterDescription = getTimelineFilterDescription(timelineStartSeconds, timelineEndSeconds);
4679
- if (timelineFilterDescription) {
4680
- filterDescriptionParts.push(timelineFilterDescription);
4681
- }
4682
- const hasTimelineFilter = Boolean(timelineFilterDescription);
4683
- const hasFilterValue = filterDescriptionParts.length > 0;
4684
- const filterDescription = filterDescriptionParts.join(' ');
4685
- const noFilteredEventsMessage = `no events found matching ${filterDescription}`;
4686
- const useNoToolCallEventsMessage = eventCategoryFilter === Tools && !trimmedFilterValue && !hasTimelineFilter;
4687
- const emptyMessage = events.length === 0 && hasFilterValue ? useNoToolCallEventsMessage ? 'No tool call events.' : noFilteredEventsMessage : 'No events have been found';
4688
- const safeSelectedEventIndex = selectedEventIndex === null || selectedEventIndex < 0 || selectedEventIndex >= events.length ? null : selectedEventIndex;
4689
- const contentNodes = useDevtoolsLayout ? getDevtoolsDom(events, selectedEvent, safeSelectedEventIndex, timelineEvents, timelineStartSeconds, timelineEndSeconds, emptyMessage, timelineSelectionActive, timelineSelectionAnchorSeconds, timelineSelectionFocusSeconds, isDetailTab(selectedDetailTab) ? selectedDetailTab : Response) : getLegacyEventsDom(errorMessage, emptyMessage, events.flatMap(getEventNode));
4690
- const quickFilterNodes = useDevtoolsLayout ? getQuickFilterNodes(eventCategoryFilter, eventCategoryFilterOptions) : [];
4691
- const debugViewTopDom = getDebugViewTopDom(filterValue, useDevtoolsLayout, quickFilterNodes);
4692
- const rootChildCount = 2;
4693
- return [{
4694
- childCount: rootChildCount,
4695
- className: joinClassNames(ChatDebugView, useDevtoolsLayout && ChatDebugViewDevtools),
4696
- type: Div
4697
- }, ...debugViewTopDom, ...contentNodes];
4698
- };
4699
-
4700
- const withSessionEventIds = events => {
4701
- return events.map((event, index) => {
4702
- return {
4703
- ...event,
4704
- eventId: typeof event.eventId === 'number' ? event.eventId : index + 1
4705
- };
4706
- });
4707
- };
4708
- const renderItems = (oldState, newState) => {
4709
- if (newState.initial) {
4710
- return [SetDom2, newState.uid, []];
4711
- }
4712
- const timelineEvents = getTimelineEvents(newState);
4713
- const filteredEvents = filterEventsByTimelineRange(timelineEvents, newState.timelineStartSeconds, newState.timelineEndSeconds);
4714
- const dom = getChatDebugViewDom(newState.errorMessage, newState.filterValue, newState.eventCategoryFilter, newState.eventCategoryFilterOptions, newState.showEventStreamFinishedEvents, newState.showInputEvents, newState.showResponsePartEvents, newState.useDevtoolsLayout, newState.selectedEvent, newState.selectedEventIndex, newState.timelineStartSeconds, newState.timelineEndSeconds, withSessionEventIds(timelineEvents), withSessionEventIds(filteredEvents), newState.timelineSelectionActive, newState.timelineSelectionAnchorSeconds, newState.timelineSelectionFocusSeconds, newState.selectedDetailTab);
4715
- return [SetDom2, newState.uid, dom];
4716
- };
4717
-
4718
- const renderIncremental = (oldState, newState) => {
4719
- const oldDom = renderItems(oldState, oldState)[2];
4720
- const newDom = renderItems(newState, newState)[2];
4721
- const patches = diffTree(oldDom, newDom);
4722
- return [SetPatches, newState.uid, patches];
4723
- };
4724
-
4725
- const getRenderer = diffType => {
4726
- switch (diffType) {
4727
- case RenderCss:
4728
- return renderCss;
4729
- case RenderIncremental:
4730
- return renderIncremental;
4731
- case RenderItems:
4732
- return renderItems;
4733
- default:
4734
- throw new Error('unknown renderer');
4735
- }
4736
- };
4737
-
4738
- const applyRender = (oldState, newState, diffResult) => {
4739
- const commands = [];
4740
- for (const item of diffResult) {
4741
- const fn = getRenderer(item);
4742
- const result = fn(oldState, newState);
4743
- if (result.length > 0) {
4744
- commands.push(result);
4745
- }
4746
- }
4747
- return commands;
4748
- };
4749
-
4750
- const render2 = (uid, diffResult) => {
4751
- const {
4752
- newState,
4753
- oldState
4754
- } = get(uid);
4755
- set(uid, newState, newState);
4756
- return applyRender(oldState, newState, diffResult);
4757
- };
4758
-
4759
- const renderEventListeners = () => {
4760
- return [{
4761
- name: HandleEventRowClick,
4762
- params: ['handleEventRowClick', 'event.target.dataset.index', 'event.button']
4763
- }, {
4764
- name: HandleTableBodyContextMenu,
4765
- params: ['handleTableBodyContextMenu'],
4766
- preventDefault: true
4767
- }, {
4768
- name: HandleFilterInput,
4769
- params: ['handleInput', TargetName, TargetValue]
4770
- }, {
4771
- name: HandleEventCategoryFilter,
4772
- params: ['handleEventCategoryFilter', TargetValue]
4773
- }, {
4774
- name: HandleDetailTab,
4775
- params: ['handleDetailTab', TargetValue]
4776
- }, {
4777
- name: HandleTimelineRangePreset,
4778
- params: ['handleTimelineRangePreset', TargetValue]
4779
- }, {
4780
- name: HandleCloseDetails,
4781
- params: ['handleCloseDetails']
4782
- }, {
4783
- name: HandleSashPointerDown,
4784
- params: ['handleSashPointerDown', ClientX, ClientY],
4785
- trackPointerEvents: [HandleSashPointerMove, HandleSashPointerUp]
4786
- }, {
4787
- name: HandleSashPointerMove,
4788
- params: ['handleSashPointerMove', ClientX, ClientY]
4789
- }, {
4790
- name: HandleSashPointerUp,
4791
- params: ['handleSashPointerUp', ClientX, ClientY]
4792
- }, {
4793
- name: HandleTimelinePointerDown,
4794
- params: ['handleTimelinePointerDown', ClientX],
4795
- trackPointerEvents: [HandleTimelinePointerMove, HandleTimelinePointerUp]
4796
- }, {
4797
- name: HandleTimelinePointerMove,
4798
- params: ['handleTimelinePointerMove', ClientX]
4799
- }, {
4800
- name: HandleTimelinePointerUp,
4801
- params: ['handleTimelinePointerUp', ClientX]
4802
- }, {
4803
- name: HandleTimelineDoubleClick,
4804
- params: ['handleTimelineDoubleClick']
4805
- }];
4806
- };
4807
-
4808
- const rerender = state => {
4809
- return structuredClone(state);
4810
- };
4811
-
4812
- const handleResize = (state, dimensions) => {
4813
- const nextState = {
4814
- ...state,
4815
- ...dimensions
4816
- };
4817
- return {
4818
- ...nextState,
4819
- tableWidth: clampTableWidth(nextState.width, state.tableWidth)
4820
- };
4821
- };
4822
-
4823
- const isResizeDimensions = value => {
4824
- return typeof value === 'object' && value !== null;
4825
- };
4826
- const resize = (state, dimensions) => {
4827
- if (!isResizeDimensions(dimensions)) {
4828
- return state;
4829
- }
4830
- return handleResize(state, dimensions);
4831
- };
4832
-
4833
- const saveState = state => {
4834
- const {
4835
- eventCategoryFilter,
4836
- filterValue,
4837
- height,
4838
- selectedEventId,
4839
- sessionId,
4840
- tableWidth,
4841
- timelineEndSeconds,
4842
- timelineStartSeconds,
4843
- width,
4844
- x,
4845
- y
4846
- } = state;
4847
- return {
4848
- eventCategoryFilter,
4849
- filterValue,
4850
- height,
4851
- selectedEventId,
4852
- sessionId,
4853
- tableWidth,
4854
- timelineEndSeconds,
4855
- timelineStartSeconds,
4856
- width,
4857
- x,
4858
- y
4859
- };
4860
- };
4861
-
4862
- const setEvents = (state, events) => {
4863
- return {
4864
- ...state,
4865
- errorMessage: '',
4866
- events,
4867
- initial: false,
4868
- selectedEvent: null,
4869
- selectedEventId: null,
4870
- selectedEventIndex: null
4871
- };
4872
- };
4873
-
4874
- const setIndexedDbSupportForTest = supported => {
4875
- return setIndexedDbSupportOverride(supported);
4876
- };
4877
-
4878
- const setSessionIdDependencies = {
4879
- listChatViewEvents: listChatViewEvents
4880
- };
4881
- const setSessionId = async (state, sessionId) => {
4882
- const result = await setSessionIdDependencies.listChatViewEvents(sessionId, state.databaseName, state.dataBaseVersion, state.eventStoreName, state.sessionIdIndexName, state.indexedDbSupportOverride);
4883
- if (result.type === 'not-supported') {
4884
- return {
4885
- ...state,
4886
- errorMessage: getIndexedDbNotSupportedMessage(),
4887
- events: [],
4888
- initial: false,
4889
- selectedEvent: null,
4890
- selectedEventId: null,
4891
- selectedEventIndex: null,
4892
- sessionId
4893
- };
4894
- }
4895
- if (result.type === 'error') {
4896
- return {
4897
- ...state,
4898
- errorMessage: getFailedToLoadMessage(sessionId),
4899
- events: [],
4900
- initial: false,
4901
- selectedEvent: null,
4902
- selectedEventId: null,
4903
- selectedEventIndex: null,
4904
- sessionId
4905
- };
4906
- }
4907
- const {
4908
- events
4909
- } = result;
4910
- return {
4911
- ...state,
4912
- errorMessage: '',
4913
- events,
4914
- initial: false,
4915
- selectedEvent: null,
4916
- selectedEventId: null,
4917
- selectedEventIndex: null,
4918
- sessionId
4919
- };
4920
- };
4921
-
4922
- const commandMap = {
4923
- 'ChatDebug.create': create,
4924
- 'ChatDebug.diff2': diff2,
4925
- 'ChatDebug.getCommandIds': getCommandIds,
4926
- 'ChatDebug.handleCloseDetails': wrapCommand(handleCloseDetails),
4927
- 'ChatDebug.handleDetailsContextMenu': wrapCommand(handleDetailsContextMenu),
4928
- 'ChatDebug.handleDetailTab': wrapCommand(handleDetailTab),
4929
- 'ChatDebug.handleEventCategoryFilter': wrapCommand(handleEventCategoryFilter),
4930
- 'ChatDebug.handleEventRowClick': wrapCommand(handleEventRowClick),
4931
- 'ChatDebug.handleHeaderContextMenu': wrapCommand(handleHeaderContextMenu),
4932
- 'ChatDebug.handleInput': wrapCommand(handleInput),
4933
- 'ChatDebug.handleSashPointerDown': wrapCommand(handleSashPointerDown),
4934
- 'ChatDebug.handleSashPointerMove': wrapCommand(handleSashPointerMove),
4935
- 'ChatDebug.handleSashPointerUp': wrapCommand(handleSashPointerUp),
4936
- 'ChatDebug.handleShowEventStreamFinishedEvents': wrapCommand(handleShowEventStreamFinishedEvents),
4937
- 'ChatDebug.handleShowInputEvents': wrapCommand(handleShowInputEvents),
4938
- 'ChatDebug.handleShowResponsePartEvents': wrapCommand(handleShowResponsePartEvents),
4939
- 'ChatDebug.handleTableBodyContextMenu': wrapCommand(handleTableBodyContextMenu),
4940
- 'ChatDebug.handleTimelineDoubleClick': wrapCommand(handleTimelineDoubleClick),
4941
- 'ChatDebug.handleTimelineEndSeconds': wrapCommand(handleTimelineEndSeconds),
4942
- 'ChatDebug.handleTimelinePointerDown': wrapCommand(handleTimelinePointerDown),
4943
- 'ChatDebug.handleTimelinePointerMove': wrapCommand(handleTimelinePointerMove),
4944
- 'ChatDebug.handleTimelinePointerUp': wrapCommand(handleTimelinePointerUp),
4945
- 'ChatDebug.handleTimelineRangePreset': wrapCommand(handleTimelineRangePreset),
4946
- 'ChatDebug.handleTimelineStartSeconds': wrapCommand(handleTimelineStartSeconds),
4947
- 'ChatDebug.handleUseDevtoolsLayout': wrapCommand(handleUseDevtoolsLayout),
4948
- 'ChatDebug.loadContent': wrapCommand(loadContent),
4949
- 'ChatDebug.loadContent2': wrapCommand(loadContent),
4950
- 'ChatDebug.refresh': wrapCommand(refresh),
4951
- 'ChatDebug.render2': render2,
4952
- 'ChatDebug.renderEventListeners': renderEventListeners,
4953
- 'ChatDebug.rerender': wrapCommand(rerender),
4954
- 'ChatDebug.resize': wrapCommand(resize),
4955
- 'ChatDebug.saveState': wrapGetter(saveState),
4956
- 'ChatDebug.setEvents': wrapCommand(setEvents),
4957
- 'ChatDebug.setIndexedDbSupportForTest': setIndexedDbSupportForTest,
4958
- 'ChatDebug.setSessionId': wrapCommand(setSessionId),
4959
- 'ChatDebug.terminate': terminate
4960
- };
4961
-
4962
- const listen = async () => {
4963
- registerCommands(commandMap);
4964
- const rpc = await create$2({
4965
- commandMap: commandMap
4966
- });
4967
- setWorkerRpc(rpc);
4968
- };
4969
-
4970
- const main = async () => {
4971
- await listen();
4972
- };
4973
-
4974
- main();