sliccy 6.63.0 → 6.64.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 (224) hide show
  1. package/README.md +2 -0
  2. package/dist/ui/assets/{account-store-P-uwmSFx.js → account-store-BJB_m8Y2.js} +1 -1
  3. package/dist/ui/assets/{account-store--mQPlEOh.js → account-store-CFoCJTKN.js} +1 -1
  4. package/dist/ui/assets/{adobe-DBloDPcl.js → adobe-DUf4uhj7.js} +1 -1
  5. package/dist/ui/assets/{adobe-D17MExBc.js → adobe-sWl4oQ2E.js} +1 -1
  6. package/dist/ui/assets/andromeeda-vGVdxbeo.js +1 -0
  7. package/dist/ui/assets/angular-html-Cm4-xod0.js +1 -0
  8. package/dist/ui/assets/angular-ts-Dopuir71.js +1 -0
  9. package/dist/ui/assets/{apply-layout-BHWQoSq1.js → apply-layout-Bua8PIuZ.js} +1 -1
  10. package/dist/ui/assets/{apps-CyWFvQRy.js → apps-ByySDRTh.js} +1 -1
  11. package/dist/ui/assets/astro-E_b8esPp.js +1 -0
  12. package/dist/ui/assets/aurora-x-CDeNXAV0.js +1 -0
  13. package/dist/ui/assets/ayu-dark-DluEY0Gj.js +1 -0
  14. package/dist/ui/assets/ayu-light-C3h-C4tm.js +1 -0
  15. package/dist/ui/assets/ayu-mirage-Bqwy1Gya.js +1 -0
  16. package/dist/ui/assets/{azure-openai-DKbIvhqp.js → azure-openai-BRi8b7qn.js} +1 -1
  17. package/dist/ui/assets/{azure-openai-C89pwMy1.js → azure-openai-yUZ6ozsj.js} +1 -1
  18. package/dist/ui/assets/blade-mj2TcBTp.js +1 -0
  19. package/dist/ui/assets/c-BNQJhXlP.js +1 -0
  20. package/dist/ui/assets/catppuccin-frappe-3VR1Za6u.js +1 -0
  21. package/dist/ui/assets/catppuccin-latte-DwIHMF0Q.js +1 -0
  22. package/dist/ui/assets/catppuccin-macchiato-DYnBP6_5.js +1 -0
  23. package/dist/ui/assets/catppuccin-mocha-DYhrFGRu.js +1 -0
  24. package/dist/ui/assets/{cerebras-wFIQBsYG.js → cerebras-68VoDLsA.js} +1 -1
  25. package/dist/ui/assets/{cerebras-CeJqkOvi.js → cerebras-BJZCWpnh.js} +1 -1
  26. package/dist/ui/assets/coffee-BP03ytLP.js +1 -0
  27. package/dist/ui/assets/{connect-surface-CdFY1tCb.js → connect-surface-DKLddQIX.js} +1 -1
  28. package/dist/ui/assets/cpp-CdhRINFH.js +1 -0
  29. package/dist/ui/assets/css-vJJohHMc.js +1 -0
  30. package/dist/ui/assets/csv-Dx-8-gkx.js +1 -0
  31. package/dist/ui/assets/dark-plus-Cs2F2srj.js +1 -0
  32. package/dist/ui/assets/diff-woXpYk--.js +1 -0
  33. package/dist/ui/assets/dist-B1CEIrnR.js +12 -0
  34. package/dist/ui/assets/{dist-CBorQZnx.js → dist-Cd-ycvqP.js} +1 -1
  35. package/dist/ui/assets/dist-YOzumI7I.js +1547 -0
  36. package/dist/ui/assets/dracula-BHWKrbxM.js +1 -0
  37. package/dist/ui/assets/dracula-soft-5eyTD99u.js +1 -0
  38. package/dist/ui/assets/everforest-dark-sB-x3p7T.js +1 -0
  39. package/dist/ui/assets/everforest-light-Df2xbC6M.js +1 -0
  40. package/dist/ui/assets/{fs-BbrGVSwk.js → fs-GEpUZAWU.js} +1 -1
  41. package/dist/ui/assets/fs-jK1akXME.js +2 -0
  42. package/dist/ui/assets/{github-BKQsxFQz.js → github-CoECTOH9.js} +1 -1
  43. package/dist/ui/assets/{github-B8MZ-gS1.js → github-DlT0GT-a.js} +2 -2
  44. package/dist/ui/assets/{github-copilot-DhORoX8I.js → github-copilot-Bebbbd77.js} +1 -1
  45. package/dist/ui/assets/{github-copilot-DaHws-OF.js → github-copilot-DX22w3Om.js} +1 -1
  46. package/dist/ui/assets/github-dark-C-LZuMrd.js +1 -0
  47. package/dist/ui/assets/github-dark-default-DXG-b-1a.js +1 -0
  48. package/dist/ui/assets/github-dark-dimmed-Bx1FflLF.js +1 -0
  49. package/dist/ui/assets/github-dark-high-contrast-B_tTalzw.js +1 -0
  50. package/dist/ui/assets/{github-install-TJPohv2J.js → github-install-8yxo8pC2.js} +1 -1
  51. package/dist/ui/assets/github-light-EUqPIrTm.js +1 -0
  52. package/dist/ui/assets/github-light-default-BXViO-2h.js +1 -0
  53. package/dist/ui/assets/github-light-high-contrast-B68TUdTA.js +1 -0
  54. package/dist/ui/assets/{github-zip-BAgJ3tKT.js → github-zip-6xE0zlxR.js} +1 -1
  55. package/dist/ui/assets/glsl-CyFpZtQv.js +1 -0
  56. package/dist/ui/assets/go-BJwz_mda.js +1 -0
  57. package/dist/ui/assets/graphql-CnvUopjy.js +1 -0
  58. package/dist/ui/assets/gruvbox-dark-hard-C820rvS2.js +1 -0
  59. package/dist/ui/assets/gruvbox-dark-medium-BPjhmG05.js +1 -0
  60. package/dist/ui/assets/gruvbox-dark-soft-MrdJrrXF.js +1 -0
  61. package/dist/ui/assets/gruvbox-light-hard-BC_s9l72.js +1 -0
  62. package/dist/ui/assets/gruvbox-light-medium-BAWPOn9u.js +1 -0
  63. package/dist/ui/assets/gruvbox-light-soft-BSMLrYjP.js +1 -0
  64. package/dist/ui/assets/haml-DboNpPfQ.js +1 -0
  65. package/dist/ui/assets/handlebars-Bv_jLwHk.js +1 -0
  66. package/dist/ui/assets/horizon-CE9ld1lL.js +1 -0
  67. package/dist/ui/assets/horizon-bright-Br1oVSNq.js +1 -0
  68. package/dist/ui/assets/houston-CsvMBhTu.js +1 -0
  69. package/dist/ui/assets/html-BLkwJ0Yd.js +1 -0
  70. package/dist/ui/assets/html-derivative-B3p5VrMH.js +1 -0
  71. package/dist/ui/assets/http-BVbz03xV.js +1 -0
  72. package/dist/ui/assets/hurl-CKN67r30.js +1 -0
  73. package/dist/ui/assets/imba-DsUTQ-LC.js +1 -0
  74. package/dist/ui/assets/isomorphic-git-BeYQ5wpt.js +69 -0
  75. package/dist/ui/assets/java-D7h0NA_A.js +1 -0
  76. package/dist/ui/assets/javascript-DcMHgNcu.js +1 -0
  77. package/dist/ui/assets/jinja-BeFOxtqS.js +1 -0
  78. package/dist/ui/assets/jison-Ru_S5AEn.js +1 -0
  79. package/dist/ui/assets/json-qhed-kSA.js +1 -0
  80. package/dist/ui/assets/json5-BR5RXkoi.js +1 -0
  81. package/dist/ui/assets/jsonc-CYpm1nAK.js +1 -0
  82. package/dist/ui/assets/jsonl-CmCQp5Yx.js +1 -0
  83. package/dist/ui/assets/jsx-BUUYi3qs.js +1 -0
  84. package/dist/ui/assets/julia-DibC-h6i.js +1 -0
  85. package/dist/ui/assets/kanagawa-dragon-CXtmUGW6.js +1 -0
  86. package/dist/ui/assets/kanagawa-lotus-BN08jTvb.js +1 -0
  87. package/dist/ui/assets/kanagawa-wave-CTweb8Dz.js +1 -0
  88. package/dist/ui/assets/{kernel-worker-CDffDfr6.js → kernel-worker-Ueycf43a.js} +670 -642
  89. package/dist/ui/assets/laserwave-C_8bwKvT.js +1 -0
  90. package/dist/ui/assets/less-DVTAwKKz.js +1 -0
  91. package/dist/ui/assets/light-plus-DVQuIRkW.js +1 -0
  92. package/dist/ui/assets/{local-llm-w-7eGyNW.js → local-llm-Di_yKEJ9.js} +1 -1
  93. package/dist/ui/assets/{local-llm-Bz589xAD.js → local-llm-XxBSKOCL.js} +1 -1
  94. package/dist/ui/assets/{main-BS3rtRRa.js → main-Lumvt4kM.js} +3 -3
  95. package/dist/ui/assets/markdown-BYOwaDjH.js +1 -0
  96. package/dist/ui/assets/marko-C3klgjEa.js +1 -0
  97. package/dist/ui/assets/material-theme-Bm3Qr25_.js +1 -0
  98. package/dist/ui/assets/material-theme-darker-2IIEA8gg.js +1 -0
  99. package/dist/ui/assets/material-theme-lighter-uhdI0v04.js +1 -0
  100. package/dist/ui/assets/material-theme-ocean-CHQ94UKr.js +1 -0
  101. package/dist/ui/assets/material-theme-palenight-B5W6OYN7.js +1 -0
  102. package/dist/ui/assets/mdc-Otire2H_.js +1 -0
  103. package/dist/ui/assets/mdx-DQZ5AkYe.js +1 -0
  104. package/dist/ui/assets/min-dark-BSWPekZh.js +1 -0
  105. package/dist/ui/assets/min-light-DDpmG2fV.js +1 -0
  106. package/dist/ui/assets/monokai-CdkpiU2Y.js +1 -0
  107. package/dist/ui/assets/{mount-DBib8LTP.js → mount-CHKlYFT-.js} +1 -1
  108. package/dist/ui/assets/{mount-CZGSaILZ.js → mount-CWNvXk1g.js} +2 -2
  109. package/dist/ui/assets/{mount-recovery-LwWZQhHy.js → mount-recovery-mbbBLLT8.js} +1 -1
  110. package/dist/ui/assets/{new-session-DT_ha-eM.js → new-session-lALCcTPx.js} +2 -2
  111. package/dist/ui/assets/night-owl-DhmEMT88.js +1 -0
  112. package/dist/ui/assets/night-owl-light-eJ-hLW7d.js +1 -0
  113. package/dist/ui/assets/nord-Cb4Vim4T.js +1 -0
  114. package/dist/ui/assets/{oauth-bootstrap-BLIhPFnS.js → oauth-bootstrap-CDn9395Z.js} +2 -2
  115. package/dist/ui/assets/one-dark-pro-CLwyXe_n.js +1 -0
  116. package/dist/ui/assets/one-light-D7Lr4KcI.js +1 -0
  117. package/dist/ui/assets/{openai-codex-CMmbejU1.js → openai-codex-ChLYDjXh.js} +1 -1
  118. package/dist/ui/assets/{openai-codex-K5GoWDt8.js → openai-codex-CpHnAN7y.js} +1 -1
  119. package/dist/ui/assets/{openrouter-DtU563Fb.js → openrouter-CGa35AEV.js} +1 -1
  120. package/dist/ui/assets/{openrouter-CTyy27OU.js → openrouter-Do4DD6O0.js} +1 -1
  121. package/dist/ui/assets/{openrouter-oauth-Blg1RQLf.js → openrouter-oauth-Ba_5A1Nz.js} +1 -1
  122. package/dist/ui/assets/{openrouter-oauth-CGJSjNUU.js → openrouter-oauth-uich0QQO.js} +1 -1
  123. package/dist/ui/assets/{panel-rpc-handlers-DxdIbuic.js → panel-rpc-handlers-DqcRA7Wi.js} +2 -2
  124. package/dist/ui/assets/{panelize-shell-BeUFfvlg.js → panelize-shell-DV0pnT2b.js} +1 -1
  125. package/dist/ui/assets/php-BidqsJNR.js +1 -0
  126. package/dist/ui/assets/pierre-dark-CpLgRqie.js +1 -0
  127. package/dist/ui/assets/pierre-dark-protanopia-deuteranopia-B35FxJx-.js +1 -0
  128. package/dist/ui/assets/pierre-dark-soft-kZQmAZld.js +1 -0
  129. package/dist/ui/assets/pierre-dark-tritanopia-CpjhbsIL.js +1 -0
  130. package/dist/ui/assets/pierre-dark-vibrant-CpQYzh95.js +1 -0
  131. package/dist/ui/assets/pierre-light-CoaEpmwp.js +1 -0
  132. package/dist/ui/assets/pierre-light-protanopia-deuteranopia-0fSaH845.js +1 -0
  133. package/dist/ui/assets/pierre-light-soft-lWLdNTOI.js +1 -0
  134. package/dist/ui/assets/pierre-light-tritanopia-CEbqgOJL.js +1 -0
  135. package/dist/ui/assets/pierre-light-vibrant-D80Fkn33.js +1 -0
  136. package/dist/ui/assets/plastic-DQwYfKfQ.js +1 -0
  137. package/dist/ui/assets/poimandres-DRFjx7u4.js +1 -0
  138. package/dist/ui/assets/postcss-BXeXVLqQ.js +1 -0
  139. package/dist/ui/assets/{provider-DT_xAoSr.js → provider-CxBYqil2.js} +1 -1
  140. package/dist/ui/assets/{provider-CBtnkC1n.js → provider-DoyToh_v.js} +2 -2
  141. package/dist/ui/assets/{provider-settings-CDtl2c3I.js → provider-settings-D2Dq-byK.js} +1 -1
  142. package/dist/ui/assets/{provider-settings-MQ2XDV5J.js → provider-settings-V57yN2iO.js} +1 -1
  143. package/dist/ui/assets/provider-store-access-CJ-mz2bB.js +1 -0
  144. package/dist/ui/assets/{provider-store-access-V022Q04i.js → provider-store-access-DTv3X6lJ.js} +2 -2
  145. package/dist/ui/assets/{providers-B9hH766t.js → providers-CA-kEndk.js} +2 -2
  146. package/dist/ui/assets/{providers-O3nQlXhD.js → providers-DwqnL601.js} +1 -1
  147. package/dist/ui/assets/pug-BPcX_o8k.js +1 -0
  148. package/dist/ui/assets/python-gzcpVVnB.js +1 -0
  149. package/dist/ui/assets/{quick-llm-BSZ7misP.js → quick-llm-CW9fUtdA.js} +1 -1
  150. package/dist/ui/assets/r-Dzep-lPg.js +1 -0
  151. package/dist/ui/assets/{recovery-screen-_wED17UU.js → recovery-screen-CQsafiWg.js} +1 -1
  152. package/dist/ui/assets/red-CJ3rzSJv.js +1 -0
  153. package/dist/ui/assets/{redirect-uri-CPxq-zzZ.js → redirect-uri-CrgECCeX.js} +1 -1
  154. package/dist/ui/assets/regexp-I2jnduhj.js +1 -0
  155. package/dist/ui/assets/rose-pine-BthvhNj6.js +1 -0
  156. package/dist/ui/assets/rose-pine-dawn-Dg85fqjY.js +1 -0
  157. package/dist/ui/assets/rose-pine-moon-hon4tzzS.js +1 -0
  158. package/dist/ui/assets/rust-Cfkwpbl8.js +1 -0
  159. package/dist/ui/assets/safe-buffer-BwTVRVVo.js +1 -0
  160. package/dist/ui/assets/sass-DXrisJhu.js +1 -0
  161. package/dist/ui/assets/scss-0nEf0IT-.js +1 -0
  162. package/dist/ui/assets/{session-freezer-B50mVxhd.js → session-freezer-TQy3be2y.js} +3 -3
  163. package/dist/ui/assets/{setup-feature-flags-remote-CMv-Mb2h.js → setup-feature-flags-remote-0Q0ueQo8.js} +1 -1
  164. package/dist/ui/assets/{setup-standalone-prelude-CYFRACEv.js → setup-standalone-prelude-D-bbyR_A.js} +1 -1
  165. package/dist/ui/assets/{setup-sudo-B9dNYWci.js → setup-sudo-CH5E-ECe.js} +2 -2
  166. package/dist/ui/assets/shellscript-CLZ0U2zV.js +1 -0
  167. package/dist/ui/assets/skills-hCh6y3rV.js +6 -0
  168. package/dist/ui/assets/slack-dark-DnToyrRv.js +1 -0
  169. package/dist/ui/assets/slack-ochin-B2OO5cIa.js +1 -0
  170. package/dist/ui/assets/snazzy-light-4G7pJPwS.js +1 -0
  171. package/dist/ui/assets/solarized-dark-DV17i1UV.js +1 -0
  172. package/dist/ui/assets/solarized-light-DSh2HLQt.js +1 -0
  173. package/dist/ui/assets/sql-69VAgb2g.js +1 -0
  174. package/dist/ui/assets/src-CJ0eU-9m.js +7012 -0
  175. package/dist/ui/assets/{store-C1VGOTxc.js → store-BaGEtl_B.js} +1 -1
  176. package/dist/ui/assets/{store-CNGLCklj.js → store-DlEux-zS.js} +1 -1
  177. package/dist/ui/assets/stylus-B6D30XZt.js +1 -0
  178. package/dist/ui/assets/sudo-CFxjkR-s.js +5 -0
  179. package/dist/ui/assets/svelte-B4PVQJ-7.js +1 -0
  180. package/dist/ui/assets/swift-DonLKvLd.js +1 -0
  181. package/dist/ui/assets/synthwave-84-nFMaYfgc.js +1 -0
  182. package/dist/ui/assets/tokyo-night-oM2G3aXe.js +1 -0
  183. package/dist/ui/assets/toml-CcmNWLt0.js +1 -0
  184. package/dist/ui/assets/ts-tags-BUIgHz80.js +1 -0
  185. package/dist/ui/assets/tsx-DvWhG4dC.js +1 -0
  186. package/dist/ui/assets/typescript-BTGs5etX.js +1 -0
  187. package/dist/ui/assets/{upgrade-detection-DtMu1r0K.js → upgrade-detection-CMPpB9fk.js} +1 -1
  188. package/dist/ui/assets/vesper-D5bVUKB1.js +1 -0
  189. package/dist/ui/assets/vitesse-black-fwtXNY1n.js +1 -0
  190. package/dist/ui/assets/vitesse-dark-BZCL-v6S.js +1 -0
  191. package/dist/ui/assets/vitesse-light-VbXTXTou.js +1 -0
  192. package/dist/ui/assets/vue-Dg0Kv3qp.js +1 -0
  193. package/dist/ui/assets/vue-html-BXjKVtKk.js +1 -0
  194. package/dist/ui/assets/vue-vine-DdvC-EE2.js +1 -0
  195. package/dist/ui/assets/wasm-BnjxR4X6.js +1 -0
  196. package/dist/ui/assets/wasm-ByWQv1Qj.js +1 -0
  197. package/dist/ui/assets/{wc-attach-3A9p5w25.js → wc-attach-DF-TvlDU.js} +2 -2
  198. package/dist/ui/assets/{wc-extension-CuFyrgJB.js → wc-extension-3mI-I1o2.js} +2 -2
  199. package/dist/ui/assets/{wc-follower-ifN_9dKC.js → wc-follower-Dp9ye3P1.js} +3 -3
  200. package/dist/ui/assets/wc-live-DYVvIGHn.js +8 -0
  201. package/dist/ui/assets/{wc-nav-C2Lmr_pe.js → wc-nav-_svU5Qwo.js} +2 -2
  202. package/dist/ui/assets/{wc-onboarding-C2uPf288.js → wc-onboarding-LDdRqgsr.js} +2 -2
  203. package/dist/ui/assets/{wc-placeholder-C60uP72h.js → wc-placeholder-41QnsU2H.js} +2 -2
  204. package/dist/ui/assets/{wc-settings-BoAuO-S9.js → wc-settings-B_-F0ljn.js} +2 -2
  205. package/dist/ui/assets/{wc-shell-CTdX6rP7.js → wc-shell-ZQyuGbWX.js} +3 -3
  206. package/dist/ui/assets/{wc-sprinkles-C07PqqyS.js → wc-sprinkles-BdNNp1Rl.js} +2 -2
  207. package/dist/ui/assets/{wc-tray-BTWvUgMV.js → wc-tray-ClMAH1_0.js} +2 -2
  208. package/dist/ui/assets/wgsl-BsKzXJz4.js +1 -0
  209. package/dist/ui/assets/wit-DdvCle-K.js +1 -0
  210. package/dist/ui/assets/{xai-grok-6Je_eDZP.js → xai-grok-DuO1THL9.js} +1 -1
  211. package/dist/ui/assets/{xai-grok-Cp5O0a5p.js → xai-grok-btaaA2hg.js} +1 -1
  212. package/dist/ui/assets/xml-C01ajBW7.js +1 -0
  213. package/dist/ui/assets/yaml-rwi0_p6S.js +1 -0
  214. package/dist/ui/index.html +6 -6
  215. package/dist/ui/packages/webapp/index.html +6 -6
  216. package/dist/ui/slicc-diff.js +709 -1052
  217. package/package.json +1 -1
  218. package/dist/ui/assets/dist-C8opQrif.js +0 -12
  219. package/dist/ui/assets/fs-CDBIiCo7.js +0 -2
  220. package/dist/ui/assets/provider-store-access-0HKcl308.js +0 -1
  221. package/dist/ui/assets/skills-D0DZI_97.js +0 -6
  222. package/dist/ui/assets/src-SZZWiNhu.js +0 -5811
  223. package/dist/ui/assets/sudo-BmAsyPPp.js +0 -5
  224. package/dist/ui/assets/wc-live-4ck1Msua.js +0 -8
@@ -0,0 +1 @@
1
+ var e=Object.freeze(JSON.parse(`{"colors":{"activityBar.background":"#f6f6f6","activityBar.foreground":"#9E9E9E","activityBarBadge.background":"#616161","badge.background":"#E0E0E0","badge.foreground":"#616161","button.background":"#757575","button.hoverBackground":"#616161","debugIcon.breakpointCurrentStackframeForeground":"#1976D2","debugIcon.breakpointDisabledForeground":"#848484","debugIcon.breakpointForeground":"#D32F2F","debugIcon.breakpointStackframeForeground":"#1976D2","debugIcon.continueForeground":"#6f42c1","debugIcon.disconnectForeground":"#6f42c1","debugIcon.pauseForeground":"#6f42c1","debugIcon.restartForeground":"#1976D2","debugIcon.startForeground":"#1976D2","debugIcon.stepBackForeground":"#6f42c1","debugIcon.stepIntoForeground":"#6f42c1","debugIcon.stepOutForeground":"#6f42c1","debugIcon.stepOverForeground":"#6f42c1","debugIcon.stopForeground":"#1976D2","diffEditor.insertedTextBackground":"#b7e7a44b","diffEditor.removedTextBackground":"#e597af52","editor.background":"#ffffff","editor.foreground":"#212121","editor.lineHighlightBorder":"#f2f2f2","editorBracketMatch.background":"#E7F3FF","editorBracketMatch.border":"#c8e1ff","editorGroupHeader.tabsBackground":"#f6f6f6","editorGroupHeader.tabsBorder":"#fff","editorIndentGuide.background":"#EEE","editorLineNumber.activeForeground":"#757575","editorLineNumber.foreground":"#CCC","editorSuggestWidget.background":"#F3F3F3","extensionButton.prominentBackground":"#000000AA","extensionButton.prominentHoverBackground":"#000000BB","focusBorder":"#D0D0D0","foreground":"#757575","gitDecoration.ignoredResourceForeground":"#AAAAAA","input.border":"#E9E9E9","inputOption.activeBackground":"#EDEDED","list.activeSelectionBackground":"#EEE","list.activeSelectionForeground":"#212121","list.focusBackground":"#ddd","list.focusForeground":"#212121","list.highlightForeground":"#212121","list.inactiveSelectionBackground":"#E0E0E0","list.inactiveSelectionForeground":"#212121","panel.background":"#fff","panel.border":"#f4f4f4","panelTitle.activeBorder":"#fff","panelTitle.inactiveForeground":"#BDBDBD","peekView.border":"#E0E0E0","peekViewEditor.background":"#f8f8f8","pickerGroup.foreground":"#000","progressBar.background":"#000","scrollbar.shadow":"#FFF","sideBar.background":"#f6f6f6","sideBar.border":"#f6f6f6","sideBarSectionHeader.background":"#EEE","sideBarTitle.foreground":"#999","statusBar.background":"#f6f6f6","statusBar.border":"#f6f6f6","statusBar.debuggingBackground":"#f6f6f6","statusBar.foreground":"#7E7E7E","statusBar.noFolderBackground":"#f6f6f6","statusBarItem.prominentBackground":"#0000001a","statusBarItem.remoteBackground":"#f6f6f600","statusBarItem.remoteForeground":"#7E7E7E","symbolIcon.classForeground":"#dd8500","symbolIcon.constructorForeground":"#6f42c1","symbolIcon.enumeratorForeground":"#dd8500","symbolIcon.enumeratorMemberForeground":"#1976D2","symbolIcon.eventForeground":"#dd8500","symbolIcon.fieldForeground":"#1976D2","symbolIcon.functionForeground":"#6f42c1","symbolIcon.interfaceForeground":"#1976D2","symbolIcon.methodForeground":"#6f42c1","symbolIcon.variableForeground":"#1976D2","tab.activeBorder":"#FFF","tab.activeForeground":"#424242","tab.border":"#f6f6f6","tab.inactiveBackground":"#f6f6f6","tab.inactiveForeground":"#BDBDBD","tab.unfocusedActiveBorder":"#fff","terminal.ansiBlack":"#333","terminal.ansiBlue":"#e0e0e0","terminal.ansiBrightBlack":"#a1a1a1","terminal.ansiBrightBlue":"#6871ff","terminal.ansiBrightCyan":"#57d9ad","terminal.ansiBrightGreen":"#a3d900","terminal.ansiBrightMagenta":"#a37acc","terminal.ansiBrightRed":"#d6656a","terminal.ansiBrightWhite":"#7E7E7E","terminal.ansiBrightYellow":"#e7c547","terminal.ansiCyan":"#4dbf99","terminal.ansiGreen":"#77cc00","terminal.ansiMagenta":"#9966cc","terminal.ansiRed":"#D32F2F","terminal.ansiWhite":"#c7c7c7","terminal.ansiYellow":"#f29718","terminal.background":"#fff","textLink.activeForeground":"#000","textLink.foreground":"#000","titleBar.activeBackground":"#f6f6f6","titleBar.border":"#FFFFFF00","titleBar.inactiveBackground":"#f6f6f6"},"displayName":"Min Light","name":"min-light","tokenColors":[{"settings":{"foreground":"#24292eff"}},{"scope":["keyword.operator.accessor","meta.group.braces.round.function.arguments","meta.template.expression","markup.fenced_code meta.embedded.block"],"settings":{"foreground":"#24292eff"}},{"scope":"emphasis","settings":{"fontStyle":"italic"}},{"scope":["strong","markup.heading.markdown","markup.bold.markdown"],"settings":{"fontStyle":"bold"}},{"scope":["markup.italic.markdown"],"settings":{"fontStyle":"italic"}},{"scope":"meta.link.inline.markdown","settings":{"fontStyle":"underline","foreground":"#1976D2"}},{"scope":["string","markup.fenced_code","markup.inline"],"settings":{"foreground":"#2b5581"}},{"scope":["comment","string.quoted.docstring.multi"],"settings":{"foreground":"#c2c3c5"}},{"scope":["constant.numeric","constant.language","constant.other.placeholder","constant.character.format.placeholder","variable.language.this","variable.other.object","variable.other.class","variable.other.constant","meta.property-name","meta.property-value","support"],"settings":{"foreground":"#1976D2"}},{"scope":["keyword","storage.modifier","storage.type","storage.control.clojure","entity.name.function.clojure","entity.name.tag.yaml","support.function.node","support.type.property-name.json","punctuation.separator.key-value","punctuation.definition.template-expression"],"settings":{"foreground":"#D32F2F"}},{"scope":"variable.parameter.function","settings":{"foreground":"#FF9800"}},{"scope":["support.function","entity.name.type","entity.other.inherited-class","meta.function-call","meta.instance.constructor","entity.other.attribute-name","entity.name.function","constant.keyword.clojure"],"settings":{"foreground":"#6f42c1"}},{"scope":["entity.name.tag","string.quoted","string.regexp","string.interpolated","string.template","string.unquoted.plain.out.yaml","keyword.other.template"],"settings":{"foreground":"#22863a"}},{"scope":"token.info-token","settings":{"foreground":"#316bcd"}},{"scope":"token.warn-token","settings":{"foreground":"#cd9731"}},{"scope":"token.error-token","settings":{"foreground":"#cd3131"}},{"scope":"token.debug-token","settings":{"foreground":"#800080"}},{"scope":["strong","markup.heading.markdown","markup.bold.markdown"],"settings":{"foreground":"#6f42c1"}},{"scope":["punctuation.definition.arguments","punctuation.definition.dict","punctuation.separator","meta.function-call.arguments"],"settings":{"foreground":"#212121"}},{"scope":["markup.underline.link","punctuation.definition.metadata.markdown"],"settings":{"foreground":"#22863a"}},{"scope":["beginning.punctuation.definition.list.markdown"],"settings":{"foreground":"#6f42c1"}},{"scope":["punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown","string.other.link.title.markdown","string.other.link.description.markdown"],"settings":{"foreground":"#d32f2f"}}],"type":"light"}`));export{e as default};
@@ -0,0 +1 @@
1
+ var e=Object.freeze(JSON.parse(`{"colors":{"activityBar.background":"#272822","activityBar.foreground":"#f8f8f2","badge.background":"#75715E","badge.foreground":"#f8f8f2","button.background":"#75715E","debugToolBar.background":"#1e1f1c","diffEditor.insertedTextBackground":"#4b661680","diffEditor.removedTextBackground":"#90274A70","dropdown.background":"#414339","dropdown.listBackground":"#1e1f1c","editor.background":"#272822","editor.foreground":"#f8f8f2","editor.lineHighlightBackground":"#3e3d32","editor.selectionBackground":"#878b9180","editor.selectionHighlightBackground":"#575b6180","editor.wordHighlightBackground":"#4a4a7680","editor.wordHighlightStrongBackground":"#6a6a9680","editorCursor.foreground":"#f8f8f0","editorGroup.border":"#34352f","editorGroup.dropBackground":"#41433980","editorGroupHeader.tabsBackground":"#1e1f1c","editorHoverWidget.background":"#414339","editorHoverWidget.border":"#75715E","editorIndentGuide.activeBackground":"#767771","editorIndentGuide.background":"#464741","editorLineNumber.activeForeground":"#c2c2bf","editorLineNumber.foreground":"#90908a","editorSuggestWidget.background":"#272822","editorSuggestWidget.border":"#75715E","editorWhitespace.foreground":"#464741","editorWidget.background":"#1e1f1c","focusBorder":"#99947c","input.background":"#414339","inputOption.activeBorder":"#75715E","inputValidation.errorBackground":"#90274A","inputValidation.errorBorder":"#f92672","inputValidation.infoBackground":"#546190","inputValidation.infoBorder":"#819aff","inputValidation.warningBackground":"#848528","inputValidation.warningBorder":"#e2e22e","list.activeSelectionBackground":"#75715E","list.dropBackground":"#414339","list.highlightForeground":"#f8f8f2","list.hoverBackground":"#3e3d32","list.inactiveSelectionBackground":"#414339","menu.background":"#1e1f1c","menu.foreground":"#cccccc","minimap.selectionHighlight":"#878b9180","panel.border":"#414339","panelTitle.activeBorder":"#75715E","panelTitle.activeForeground":"#f8f8f2","panelTitle.inactiveForeground":"#75715E","peekView.border":"#75715E","peekViewEditor.background":"#272822","peekViewEditor.matchHighlightBackground":"#75715E","peekViewResult.background":"#1e1f1c","peekViewResult.matchHighlightBackground":"#75715E","peekViewResult.selectionBackground":"#414339","peekViewTitle.background":"#1e1f1c","pickerGroup.foreground":"#75715E","ports.iconRunningProcessForeground":"#ccccc7","progressBar.background":"#75715E","quickInputList.focusBackground":"#414339","selection.background":"#878b9180","settings.focusedRowBackground":"#4143395A","sideBar.background":"#1e1f1c","sideBarSectionHeader.background":"#272822","statusBar.background":"#414339","statusBar.debuggingBackground":"#75715E","statusBar.noFolderBackground":"#414339","statusBarItem.remoteBackground":"#AC6218","tab.border":"#1e1f1c","tab.inactiveBackground":"#34352f","tab.inactiveForeground":"#ccccc7","tab.lastPinnedBorder":"#414339","terminal.ansiBlack":"#333333","terminal.ansiBlue":"#6A7EC8","terminal.ansiBrightBlack":"#666666","terminal.ansiBrightBlue":"#819aff","terminal.ansiBrightCyan":"#66D9EF","terminal.ansiBrightGreen":"#A6E22E","terminal.ansiBrightMagenta":"#AE81FF","terminal.ansiBrightRed":"#f92672","terminal.ansiBrightWhite":"#f8f8f2","terminal.ansiBrightYellow":"#e2e22e","terminal.ansiCyan":"#56ADBC","terminal.ansiGreen":"#86B42B","terminal.ansiMagenta":"#8C6BC8","terminal.ansiRed":"#C4265E","terminal.ansiWhite":"#e3e3dd","terminal.ansiYellow":"#B3B42B","titleBar.activeBackground":"#1e1f1c","widget.shadow":"#00000098"},"displayName":"Monokai","name":"monokai","semanticHighlighting":true,"tokenColors":[{"settings":{"foreground":"#F8F8F2"}},{"scope":["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],"settings":{"foreground":"#F8F8F2"}},{"scope":"comment","settings":{"foreground":"#88846f"}},{"scope":"string","settings":{"foreground":"#E6DB74"}},{"scope":["punctuation.definition.template-expression","punctuation.section.embedded"],"settings":{"foreground":"#F92672"}},{"scope":["meta.template.expression"],"settings":{"foreground":"#F8F8F2"}},{"scope":"constant.numeric","settings":{"foreground":"#AE81FF"}},{"scope":"constant.language","settings":{"foreground":"#AE81FF"}},{"scope":"constant.character, constant.other","settings":{"foreground":"#AE81FF"}},{"scope":"variable","settings":{"fontStyle":"","foreground":"#F8F8F2"}},{"scope":"keyword","settings":{"foreground":"#F92672"}},{"scope":"storage","settings":{"fontStyle":"","foreground":"#F92672"}},{"scope":"storage.type","settings":{"fontStyle":"italic","foreground":"#66D9EF"}},{"scope":"entity.name.type, entity.name.class, entity.name.namespace, entity.name.scope-resolution","settings":{"fontStyle":"underline","foreground":"#A6E22E"}},{"scope":["entity.other.inherited-class","punctuation.separator.namespace.ruby"],"settings":{"fontStyle":"italic underline","foreground":"#A6E22E"}},{"scope":"entity.name.function","settings":{"fontStyle":"","foreground":"#A6E22E"}},{"scope":"variable.parameter","settings":{"fontStyle":"italic","foreground":"#FD971F"}},{"scope":"entity.name.tag","settings":{"fontStyle":"","foreground":"#F92672"}},{"scope":"entity.other.attribute-name","settings":{"fontStyle":"","foreground":"#A6E22E"}},{"scope":"support.function","settings":{"fontStyle":"","foreground":"#66D9EF"}},{"scope":"support.constant","settings":{"fontStyle":"","foreground":"#66D9EF"}},{"scope":"support.type, support.class","settings":{"fontStyle":"italic","foreground":"#66D9EF"}},{"scope":"support.other.variable","settings":{"fontStyle":""}},{"scope":"invalid","settings":{"fontStyle":"","foreground":"#F44747"}},{"scope":"invalid.deprecated","settings":{"foreground":"#F44747"}},{"scope":"meta.structure.dictionary.json string.quoted.double.json","settings":{"foreground":"#CFCFC2"}},{"scope":"meta.diff, meta.diff.header","settings":{"foreground":"#75715E"}},{"scope":"markup.deleted","settings":{"foreground":"#F92672"}},{"scope":"markup.inserted","settings":{"foreground":"#A6E22E"}},{"scope":"markup.changed","settings":{"foreground":"#E6DB74"}},{"scope":"constant.numeric.line-number.find-in-files - match","settings":{"foreground":"#AE81FFA0"}},{"scope":"entity.name.filename.find-in-files","settings":{"foreground":"#E6DB74"}},{"scope":"markup.quote","settings":{"foreground":"#F92672"}},{"scope":"markup.list","settings":{"foreground":"#E6DB74"}},{"scope":"markup.bold, markup.italic","settings":{"foreground":"#66D9EF"}},{"scope":"markup.inline.raw","settings":{"fontStyle":"","foreground":"#FD971F"}},{"scope":"markup.heading","settings":{"foreground":"#A6E22E"}},{"scope":"markup.heading.setext","settings":{"fontStyle":"bold","foreground":"#A6E22E"}},{"scope":"markup.heading.markdown","settings":{"fontStyle":"bold"}},{"scope":"markup.quote.markdown","settings":{"fontStyle":"italic","foreground":"#75715E"}},{"scope":"markup.bold.markdown","settings":{"fontStyle":"bold"}},{"scope":"string.other.link.title.markdown,string.other.link.description.markdown","settings":{"foreground":"#AE81FF"}},{"scope":"markup.underline.link.markdown,markup.underline.link.image.markdown","settings":{"foreground":"#E6DB74"}},{"scope":"markup.italic.markdown","settings":{"fontStyle":"italic"}},{"scope":"markup.strikethrough","settings":{"fontStyle":"strikethrough"}},{"scope":"markup.list.unnumbered.markdown, markup.list.numbered.markdown","settings":{"foreground":"#f8f8f2"}},{"scope":["punctuation.definition.list.begin.markdown"],"settings":{"foreground":"#A6E22E"}},{"scope":"token.info-token","settings":{"foreground":"#6796e6"}},{"scope":"token.warn-token","settings":{"foreground":"#cd9731"}},{"scope":"token.error-token","settings":{"foreground":"#f44747"}},{"scope":"token.debug-token","settings":{"foreground":"#b267e6"}},{"scope":"variable.language","settings":{"foreground":"#FD971F"}}],"type":"dark"}`));export{e as default};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,t as n}from"./base64-Ba7QB87Z.js";import"./src-CcFD5QfS.js";import{o as r,r as i,t as a}from"./proxied-fetch-B30CBbDZ.js";import{t as o}from"./runtime-env-DadgceZk.js";import{t as s}from"./mime-types-D7IV6i7k.js";import{t as c}from"./port-bridge-client-BdgO9OHy.js";import"./backend-local-CsZd2f8u.js";import"./runtime-env-DVGQx9p3.js";import{t as l}from"./types-idfTVsM8.js";import{t as u}from"./remote-cache-JAv9sQH_.js";function d(e,t,n){let r=`----DaMount${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`,i=new TextEncoder,a=i.encode(`--${r}\r\nContent-Disposition: form-data; name="data"; filename="${e}"\r\nContent-Type: ${t}\r\n\r\n`),o=i.encode(`\r\n--${r}--\r\n`),s=new Uint8Array(a.byteLength+n.byteLength+o.byteLength);return s.set(a,0),s.set(n,a.byteLength),s.set(o,a.byteLength+n.byteLength),{contentType:`multipart/form-data; boundary=${r}`,body:s}}function f(e){return e.split(`/`).pop()||`data`}function p(e){let t=e.match(/^da:\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid DA source '${e}' — expected da://org/repo[/path]`);return{org:t[1],repo:t[2],path:(t[3]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var m=class{kind=`da`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=p(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??5242880,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new l(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toSourcePath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/source/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}toListPath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/list/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,path:this.toSourcePath(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new l(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new l(`EACCES`,`da access denied`,e);if(i.status>=400)throw new l(`EIO`,`da readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=i.headers.get(`etag`)??``,u=c.startsWith(`W/`)?c.slice(2):c;return await this.cache.putBody(t,s,u),s}async writeFile(e,t){if(this.assertOpen(e),t.byteLength>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes`,e);let n=this.toMountRelative(e),r=await this.cache.getBody(n),i=d(f(e),s(e),t),a={"content-type":i.contentType,"content-length":String(i.body.byteLength)};r?.etag?a[`if-match`]=r.etag.startsWith(`W/`)?r.etag.slice(2):r.etag:r||(a[`if-none-match`]=`*`);let o=()=>this.transport({method:`POST`,path:this.toSourcePath(n),headers:a,body:i.body}),c,u=1;try{c=await o()}catch{u=2,c=await o()}if(c.status===412){if(u===2){let r=await this.transport({method:`HEAD`,path:this.toSourcePath(n)});if(r.status>=400)throw new l(`EIO`,`da reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new l(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(c.status===401||c.status===403)throw new l(`EACCES`,`da write denied`,e);if(c.status>=400)throw new l(`EIO`,`da writeFile failed: ${c.status}`,e);let p=c.headers.get(`etag`)??``;await this.cache.putBody(n,t,p);let m=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(m)}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.transport({method:`GET`,path:this.toListPath(t)});if(r.status===404)throw new l(`ENOENT`,`no such directory`,e);if(r.status>=400)throw new l(`EIO`,`da list failed: ${r.status}`,e);let i=(await r.json()).map(e=>e.ext?{name:`${e.name}.${e.ext}`,kind:`file`,etag:e.etag,lastModified:e.lastModified}:{name:e.name,kind:`directory`,lastModified:e.lastModified});return await this.cache.putListing(t,i),i}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.size,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new l(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,path:this.toSourcePath(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`),r=n?Date.parse(n):0;if(o){let n=o.entries.map(n=>n.name===i&&n.kind===`file`?{...n,size:e,etag:t,lastModified:r}:n);await this.cache.putListing(a,n)}return{kind:`file`,size:e,mtime:r,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new l(`ENOENT`,`no such file or directory`,e)}throw new l(`EIO`,`da stat failed: ${s.status}`,e)}async mkdir(e){}async remove(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.transport({method:`DELETE`,path:this.toSourcePath(t)});if(n.status===404)throw new l(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new l(`EACCES`,`da delete denied`,e);if(n.status>=400)throw new l(`EIO`,`da delete failed: ${n.status}`,e);await this.cache.invalidateBody(t);let r=t.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(r)}async refresh(e){this.assertOpen(`/`);let t={added:[],removed:[],changed:[],unchanged:0,errors:[]},n=[``];for(;n.length>0;){let e=n.pop();try{await this.refreshDir(e,t,n)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}}return e?.bodies&&await this.refreshBodies(t),t}async classifyFile(e,t,n){let r=await this.cache.getBody(e);r?t&&r.etag!==t?(await this.cache.invalidateBody(e),n.changed.push(e)):n.unchanged++:n.added.push(e)}async refreshDir(e,t,n){let r=await this.transport({method:`GET`,path:this.toListPath(e)});if(r.status>=400){t.errors.push({path:e,message:`list failed: ${r.status}`});return}let i=await r.json(),a=[];for(let r of i)if(r.ext){let n=e?`${e}/${r.name}.${r.ext}`:`${r.name}.${r.ext}`;a.push({name:`${r.name}.${r.ext}`,kind:`file`,etag:r.etag,lastModified:r.lastModified}),await this.classifyFile(n,r.etag,t)}else a.push({name:r.name,kind:`directory`}),n.push(e?`${e}/${r.name}`:r.name);await this.cache.putListing(e,a)}async refreshBodies(e){for(let t of e.changed)try{await this.readFile(t)}catch(n){e.errors.push({path:t,message:n instanceof Error?n.message:String(n)})}}describe(){return{displayName:`${this.parsed.org}/${this.parsed.repo}${this.parsed.path?`/${this.parsed.path}`:``}`,source:this.source,profile:this.profile}}async close(){this.closed||=!0}};function h(e){let t=e.match(/^s3:\/\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid S3 source '${e}' — expected s3://bucket[/prefix]`);return{bucket:t[1],prefix:(t[2]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var g=class{kind=`s3`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=h(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??26214400,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new l(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toS3Key(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``);return[this.parsed.prefix,t].filter(e=>e.length>0).join(`/`)}toMountRelativeKey(e){return this.parsed.prefix?e.slice(this.parsed.prefix.length+1):e}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:this.toS3Key(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new l(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new l(`EACCES`,`s3 access denied`,e);if(i.status>=400)throw new l(`EIO`,`s3 readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes (${o} > ${this.maxBodyBytes})`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=i.headers.get(`etag`)??``;return await this.cache.putBody(t,s,c),s}async writeFile(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t.byteLength>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=await this.cache.getBody(n),i={"content-type":`application/octet-stream`,"content-length":String(t.byteLength)};r?i[`if-match`]=r.etag:i[`if-none-match`]=`*`;let a=()=>this.transport({method:`PUT`,bucket:this.parsed.bucket,key:this.toS3Key(n),headers:i,body:t}),o,s=1;try{o=await a()}catch{s=2,o=await a()}if(o.status===412){if(s===2){let r=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status>=400)throw new l(`EIO`,`s3 reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new l(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(o.status===401||o.status===403)throw new l(`EACCES`,`s3 write denied`,e);if(o.status>=400)throw new l(`EIO`,`s3 writeFile failed: ${o.status}`,e);let c=o.headers.get(`etag`)??``;await this.cache.putBody(n,t,c);let u=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(u)}async listObjectsV2(){let e=[],t;do{let n={"list-type":`2`};this.parsed.prefix&&(n.prefix=`${this.parsed.prefix}/`),t&&(n[`continuation-token`]=t);let r=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:``,query:n});if(r.status>=400)throw new l(`EIO`,`s3 list failed: ${r.status}`,`/`);let i=await r.text(),a=this.parseListingXml(i);e.push(...a.contents),t=a.nextContinuationToken}while(t);return e}parseListingXml(e){let t=[];for(let n of e.matchAll(/<Contents>([\s\S]*?)<\/Contents>/g)){let e=n[1],r=e.match(/<Key>([^<]+)<\/Key>/)?.[1]??``,i=e.match(/<ETag>([^<]+)<\/ETag>/)?.[1]??``,a=e.match(/<Size>([^<]+)<\/Size>/)?.[1]??`0`,o=e.match(/<LastModified>([^<]+)<\/LastModified>/)?.[1]??``;t.push({key:r,etag:i,size:Number(a),lastModified:o?Date.parse(o):0})}return{contents:t,nextContinuationToken:e.match(/<IsTruncated>([^<]+)<\/IsTruncated>/)?.[1]===`true`?e.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1]:void 0}}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.listObjectsV2(),i=this.groupByDir(r);for(let[e,t]of i)await this.cache.putListing(e,t);return i.get(t)??[]}groupByDir(e){let t=new Map,n=e=>(t.has(e)||t.set(e,[]),t.get(e));n(``);for(let t of e){let e=this.toMountRelativeKey(t.key).split(`/`),r=e.pop();n(e.join(`/`)).push({name:r,kind:`file`,size:t.size,etag:t.etag,lastModified:t.lastModified});let i=``;for(let t of e){let e=i;i=i?`${i}/${t}`:t;let r=n(e);r.find(e=>e.name===t&&e.kind===`directory`)||r.push({name:t,kind:`directory`}),n(i)}}return t}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.body.byteLength,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new l(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`);return{kind:`file`,size:e,mtime:n?Date.parse(n):0,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new l(`ENOENT`,`no such file or directory`,e)}throw new l(`EIO`,`s3 stat failed: ${s.status}`,e)}async refresh(e){this.assertOpen(`/`);let t=await this.listObjectsV2(),n=new Set(t.map(e=>this.toMountRelativeKey(e.key))),r=new Map(t.map(e=>[this.toMountRelativeKey(e.key),e.etag])),i={added:[],removed:[],changed:[],unchanged:0,errors:[]};for(let e of n){let t=await this.cache.getBody(e),n=r.get(e);t?t.etag===n?i.unchanged++:(await this.cache.invalidateBody(e),i.changed.push(e)):i.added.push(e)}let a=this.groupByDir(t);for(let[e,t]of a)await this.cache.putListing(e,t);if(e?.bodies)for(let e of i.changed)try{await this.readFile(e)}catch(t){i.errors.push({path:e,message:t instanceof Error?t.message:String(t)})}return i}async mkdir(e){}async remove(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t?.recursive)throw new l(`EINVAL`,`recursive remove not yet supported on S3`,e);let r=await this.transport({method:`DELETE`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status===404)throw new l(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new l(`EACCES`,`s3 delete denied`,e);if(r.status>=400)throw new l(`EIO`,`s3 delete failed: ${r.status}`,e);await this.cache.invalidateBody(n);let i=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(i)}describe(){return{displayName:this.parsed.prefix?`${this.parsed.bucket}/${this.parsed.prefix}`:this.parsed.bucket,source:this.source,profile:this.profile}}async close(){this.closed||=!0}},_=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function v(){let{getAccounts:e}=await import(`./account-store-P-uwmSFx.js`).then(e=>e.r),t=e().find(e=>e.providerId===`adobe`);if(!t?.accessToken)throw new _(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>t.accessToken}}const y=c({portName:`mount.sign-and-forward`,panelRpcOp:`mount-sign-and-forward`,timeoutMs:12e4,onUnavailable:`reject`,makeError:e=>new l(`EIO`,`mount transport failed: ${e}`),logNamespace:`mount-bridge`,toPortMessage:({type:e,envelope:t})=>({type:e,envelope:t}),toPanelRpcPayload:({type:e,envelope:t})=>({type:e,envelope:t})});function b(e,t){return y({type:e,envelope:t})}const x=n,S=t,C=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),w=new Set([101,103,204,205,304]);function T(e){if(!e.ok)throw e.errorCode===`profile_not_configured`||e.errorCode===`invalid_profile`?new l(`EACCES`,e.error):e.errorCode===`invalid_request`?new l(`EINVAL`,e.error):e.errorCode===`fetch_failed`||e.errorCode===`internal`||C.has(String(e.errorCode))?new l(`EIO`,e.error):new l(`EINVAL`,`mount transport returned unrecognized errorCode '${e.errorCode}': ${e.error}`);let t;try{t=x(e.bodyBase64)}catch(e){throw new l(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=w.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}async function E(e,t){let n;try{n=await fetch(r(e),{method:`POST`,headers:a({"content-type":`application/json`}),body:JSON.stringify(t)})}catch(e){throw new l(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (SLICC backend at localhost may not be running)`)}try{return await n.json()}catch(e){throw new l(`EIO`,`mount transport: response is not a JSON envelope (status ${n.status}): ${e instanceof Error?e.message:String(e)}`)}}async function D(e,t){try{return await chrome.runtime.sendMessage({type:e,envelope:t})}catch(e){throw new l(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (extension service worker not responding)`)}}async function O(e,t,n){return o()?D(e,n):i()?b(e,n):E(t,n)}function k(e){return async t=>T(await O(`mount.s3-sign-and-forward`,`/api/s3-sign-and-forward`,{profile:e,method:t.method,bucket:t.bucket,key:t.key,query:t.query,headers:t.headers,bodyBase64:t.body?S(t.body):void 0}))}function A(e){let t=e?.getImsToken??(async()=>(await v()).getBearerToken());return async e=>{let n;try{n=await t()}catch(e){throw new l(`EACCES`,`DA mount: ${e instanceof Error?e.message:String(e)}`)}return T(await O(`mount.da-sign-and-forward`,`/api/da-sign-and-forward`,{imsToken:n,method:e.method,path:e.path,query:e.query,headers:e.headers,bodyBase64:e.body?S(e.body):void 0}))}}var j=e({DaMountBackend:()=>m,RemoteMountCache:()=>u,S3MountBackend:()=>g,makeSignedFetchDa:()=>A,makeSignedFetchS3:()=>k});export{m as a,g as i,A as n,k as r,j as t};
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,t as n}from"./base64-Ba7QB87Z.js";import"./src-CcFD5QfS.js";import{o as r,r as i,t as a}from"./proxied-fetch-B30CBbDZ.js";import{t as o}from"./runtime-env-DadgceZk.js";import{t as s}from"./mime-types-D7IV6i7k.js";import{t as c}from"./port-bridge-client-BdgO9OHy.js";import"./backend-local-CsZd2f8u.js";import"./runtime-env-DVGQx9p3.js";import{t as l}from"./types-idfTVsM8.js";import{t as u}from"./remote-cache-JAv9sQH_.js";function d(e,t,n){let r=`----DaMount${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`,i=new TextEncoder,a=i.encode(`--${r}\r\nContent-Disposition: form-data; name="data"; filename="${e}"\r\nContent-Type: ${t}\r\n\r\n`),o=i.encode(`\r\n--${r}--\r\n`),s=new Uint8Array(a.byteLength+n.byteLength+o.byteLength);return s.set(a,0),s.set(n,a.byteLength),s.set(o,a.byteLength+n.byteLength),{contentType:`multipart/form-data; boundary=${r}`,body:s}}function f(e){return e.split(`/`).pop()||`data`}function p(e){let t=e.match(/^da:\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid DA source '${e}' — expected da://org/repo[/path]`);return{org:t[1],repo:t[2],path:(t[3]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var m=class{kind=`da`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=p(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??5242880,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new l(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toSourcePath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/source/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}toListPath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/list/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,path:this.toSourcePath(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new l(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new l(`EACCES`,`da access denied`,e);if(i.status>=400)throw new l(`EIO`,`da readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=i.headers.get(`etag`)??``,u=c.startsWith(`W/`)?c.slice(2):c;return await this.cache.putBody(t,s,u),s}async writeFile(e,t){if(this.assertOpen(e),t.byteLength>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes`,e);let n=this.toMountRelative(e),r=await this.cache.getBody(n),i=d(f(e),s(e),t),a={"content-type":i.contentType,"content-length":String(i.body.byteLength)};r?.etag?a[`if-match`]=r.etag.startsWith(`W/`)?r.etag.slice(2):r.etag:r||(a[`if-none-match`]=`*`);let o=()=>this.transport({method:`POST`,path:this.toSourcePath(n),headers:a,body:i.body}),c,u=1;try{c=await o()}catch{u=2,c=await o()}if(c.status===412){if(u===2){let r=await this.transport({method:`HEAD`,path:this.toSourcePath(n)});if(r.status>=400)throw new l(`EIO`,`da reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new l(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(c.status===401||c.status===403)throw new l(`EACCES`,`da write denied`,e);if(c.status>=400)throw new l(`EIO`,`da writeFile failed: ${c.status}`,e);let p=c.headers.get(`etag`)??``;await this.cache.putBody(n,t,p);let m=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(m)}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.transport({method:`GET`,path:this.toListPath(t)});if(r.status===404)throw new l(`ENOENT`,`no such directory`,e);if(r.status>=400)throw new l(`EIO`,`da list failed: ${r.status}`,e);let i=(await r.json()).map(e=>e.ext?{name:`${e.name}.${e.ext}`,kind:`file`,etag:e.etag,lastModified:e.lastModified}:{name:e.name,kind:`directory`,lastModified:e.lastModified});return await this.cache.putListing(t,i),i}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.size,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new l(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,path:this.toSourcePath(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`),r=n?Date.parse(n):0;if(o){let n=o.entries.map(n=>n.name===i&&n.kind===`file`?{...n,size:e,etag:t,lastModified:r}:n);await this.cache.putListing(a,n)}return{kind:`file`,size:e,mtime:r,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new l(`ENOENT`,`no such file or directory`,e)}throw new l(`EIO`,`da stat failed: ${s.status}`,e)}async mkdir(e){}async remove(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.transport({method:`DELETE`,path:this.toSourcePath(t)});if(n.status===404)throw new l(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new l(`EACCES`,`da delete denied`,e);if(n.status>=400)throw new l(`EIO`,`da delete failed: ${n.status}`,e);await this.cache.invalidateBody(t);let r=t.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(r)}async refresh(e){this.assertOpen(`/`);let t={added:[],removed:[],changed:[],unchanged:0,errors:[]},n=[``];for(;n.length>0;){let e=n.pop();try{await this.refreshDir(e,t,n)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}}return e?.bodies&&await this.refreshBodies(t),t}async classifyFile(e,t,n){let r=await this.cache.getBody(e);r?t&&r.etag!==t?(await this.cache.invalidateBody(e),n.changed.push(e)):n.unchanged++:n.added.push(e)}async refreshDir(e,t,n){let r=await this.transport({method:`GET`,path:this.toListPath(e)});if(r.status>=400){t.errors.push({path:e,message:`list failed: ${r.status}`});return}let i=await r.json(),a=[];for(let r of i)if(r.ext){let n=e?`${e}/${r.name}.${r.ext}`:`${r.name}.${r.ext}`;a.push({name:`${r.name}.${r.ext}`,kind:`file`,etag:r.etag,lastModified:r.lastModified}),await this.classifyFile(n,r.etag,t)}else a.push({name:r.name,kind:`directory`}),n.push(e?`${e}/${r.name}`:r.name);await this.cache.putListing(e,a)}async refreshBodies(e){for(let t of e.changed)try{await this.readFile(t)}catch(n){e.errors.push({path:t,message:n instanceof Error?n.message:String(n)})}}describe(){return{displayName:`${this.parsed.org}/${this.parsed.repo}${this.parsed.path?`/${this.parsed.path}`:``}`,source:this.source,profile:this.profile}}async close(){this.closed||=!0}};function h(e){let t=e.match(/^s3:\/\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid S3 source '${e}' — expected s3://bucket[/prefix]`);return{bucket:t[1],prefix:(t[2]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var g=class{kind=`s3`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=h(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??26214400,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new l(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toS3Key(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``);return[this.parsed.prefix,t].filter(e=>e.length>0).join(`/`)}toMountRelativeKey(e){return this.parsed.prefix?e.slice(this.parsed.prefix.length+1):e}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:this.toS3Key(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new l(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new l(`EACCES`,`s3 access denied`,e);if(i.status>=400)throw new l(`EIO`,`s3 readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes (${o} > ${this.maxBodyBytes})`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=i.headers.get(`etag`)??``;return await this.cache.putBody(t,s,c),s}async writeFile(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t.byteLength>this.maxBodyBytes)throw new l(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=await this.cache.getBody(n),i={"content-type":`application/octet-stream`,"content-length":String(t.byteLength)};r?i[`if-match`]=r.etag:i[`if-none-match`]=`*`;let a=()=>this.transport({method:`PUT`,bucket:this.parsed.bucket,key:this.toS3Key(n),headers:i,body:t}),o,s=1;try{o=await a()}catch{s=2,o=await a()}if(o.status===412){if(s===2){let r=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status>=400)throw new l(`EIO`,`s3 reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new l(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(o.status===401||o.status===403)throw new l(`EACCES`,`s3 write denied`,e);if(o.status>=400)throw new l(`EIO`,`s3 writeFile failed: ${o.status}`,e);let c=o.headers.get(`etag`)??``;await this.cache.putBody(n,t,c);let u=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(u)}async listObjectsV2(){let e=[],t;do{let n={"list-type":`2`};this.parsed.prefix&&(n.prefix=`${this.parsed.prefix}/`),t&&(n[`continuation-token`]=t);let r=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:``,query:n});if(r.status>=400)throw new l(`EIO`,`s3 list failed: ${r.status}`,`/`);let i=await r.text(),a=this.parseListingXml(i);e.push(...a.contents),t=a.nextContinuationToken}while(t);return e}parseListingXml(e){let t=[];for(let n of e.matchAll(/<Contents>([\s\S]*?)<\/Contents>/g)){let e=n[1],r=e.match(/<Key>([^<]+)<\/Key>/)?.[1]??``,i=e.match(/<ETag>([^<]+)<\/ETag>/)?.[1]??``,a=e.match(/<Size>([^<]+)<\/Size>/)?.[1]??`0`,o=e.match(/<LastModified>([^<]+)<\/LastModified>/)?.[1]??``;t.push({key:r,etag:i,size:Number(a),lastModified:o?Date.parse(o):0})}return{contents:t,nextContinuationToken:e.match(/<IsTruncated>([^<]+)<\/IsTruncated>/)?.[1]===`true`?e.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1]:void 0}}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.listObjectsV2(),i=this.groupByDir(r);for(let[e,t]of i)await this.cache.putListing(e,t);return i.get(t)??[]}groupByDir(e){let t=new Map,n=e=>(t.has(e)||t.set(e,[]),t.get(e));n(``);for(let t of e){let e=this.toMountRelativeKey(t.key).split(`/`),r=e.pop();n(e.join(`/`)).push({name:r,kind:`file`,size:t.size,etag:t.etag,lastModified:t.lastModified});let i=``;for(let t of e){let e=i;i=i?`${i}/${t}`:t;let r=n(e);r.find(e=>e.name===t&&e.kind===`directory`)||r.push({name:t,kind:`directory`}),n(i)}}return t}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.body.byteLength,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new l(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`);return{kind:`file`,size:e,mtime:n?Date.parse(n):0,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new l(`ENOENT`,`no such file or directory`,e)}throw new l(`EIO`,`s3 stat failed: ${s.status}`,e)}async refresh(e){this.assertOpen(`/`);let t=await this.listObjectsV2(),n=new Set(t.map(e=>this.toMountRelativeKey(e.key))),r=new Map(t.map(e=>[this.toMountRelativeKey(e.key),e.etag])),i={added:[],removed:[],changed:[],unchanged:0,errors:[]};for(let e of n){let t=await this.cache.getBody(e),n=r.get(e);t?t.etag===n?i.unchanged++:(await this.cache.invalidateBody(e),i.changed.push(e)):i.added.push(e)}let a=this.groupByDir(t);for(let[e,t]of a)await this.cache.putListing(e,t);if(e?.bodies)for(let e of i.changed)try{await this.readFile(e)}catch(t){i.errors.push({path:e,message:t instanceof Error?t.message:String(t)})}return i}async mkdir(e){}async remove(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t?.recursive)throw new l(`EINVAL`,`recursive remove not yet supported on S3`,e);let r=await this.transport({method:`DELETE`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status===404)throw new l(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new l(`EACCES`,`s3 delete denied`,e);if(r.status>=400)throw new l(`EIO`,`s3 delete failed: ${r.status}`,e);await this.cache.invalidateBody(n);let i=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(i)}describe(){return{displayName:this.parsed.prefix?`${this.parsed.bucket}/${this.parsed.prefix}`:this.parsed.bucket,source:this.source,profile:this.profile}}async close(){this.closed||=!0}},_=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function v(){let{getAccounts:e}=await import(`./account-store-BJB_m8Y2.js`).then(e=>e.r),t=e().find(e=>e.providerId===`adobe`);if(!t?.accessToken)throw new _(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>t.accessToken}}const y=c({portName:`mount.sign-and-forward`,panelRpcOp:`mount-sign-and-forward`,timeoutMs:12e4,onUnavailable:`reject`,makeError:e=>new l(`EIO`,`mount transport failed: ${e}`),logNamespace:`mount-bridge`,toPortMessage:({type:e,envelope:t})=>({type:e,envelope:t}),toPanelRpcPayload:({type:e,envelope:t})=>({type:e,envelope:t})});function b(e,t){return y({type:e,envelope:t})}const x=n,S=t,C=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),w=new Set([101,103,204,205,304]);function T(e){if(!e.ok)throw e.errorCode===`profile_not_configured`||e.errorCode===`invalid_profile`?new l(`EACCES`,e.error):e.errorCode===`invalid_request`?new l(`EINVAL`,e.error):e.errorCode===`fetch_failed`||e.errorCode===`internal`||C.has(String(e.errorCode))?new l(`EIO`,e.error):new l(`EINVAL`,`mount transport returned unrecognized errorCode '${e.errorCode}': ${e.error}`);let t;try{t=x(e.bodyBase64)}catch(e){throw new l(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=w.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}async function E(e,t){let n;try{n=await fetch(r(e),{method:`POST`,headers:a({"content-type":`application/json`}),body:JSON.stringify(t)})}catch(e){throw new l(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (SLICC backend at localhost may not be running)`)}try{return await n.json()}catch(e){throw new l(`EIO`,`mount transport: response is not a JSON envelope (status ${n.status}): ${e instanceof Error?e.message:String(e)}`)}}async function D(e,t){try{return await chrome.runtime.sendMessage({type:e,envelope:t})}catch(e){throw new l(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (extension service worker not responding)`)}}async function O(e,t,n){return o()?D(e,n):i()?b(e,n):E(t,n)}function k(e){return async t=>T(await O(`mount.s3-sign-and-forward`,`/api/s3-sign-and-forward`,{profile:e,method:t.method,bucket:t.bucket,key:t.key,query:t.query,headers:t.headers,bodyBase64:t.body?S(t.body):void 0}))}function A(e){let t=e?.getImsToken??(async()=>(await v()).getBearerToken());return async e=>{let n;try{n=await t()}catch(e){throw new l(`EACCES`,`DA mount: ${e instanceof Error?e.message:String(e)}`)}return T(await O(`mount.da-sign-and-forward`,`/api/da-sign-and-forward`,{imsToken:n,method:e.method,path:e.path,query:e.query,headers:e.headers,bodyBase64:e.body?S(e.body):void 0}))}}var j=e({DaMountBackend:()=>m,RemoteMountCache:()=>u,S3MountBackend:()=>g,makeSignedFetchDa:()=>A,makeSignedFetchS3:()=>k});export{m as a,g as i,A as n,k as r,j as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/account-store--mQPlEOh.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/bedrock-camp-C8bCNVSq.js","assets/diagnostics-DN_idNHx.js","assets/transform-messages-N_eMsP2M.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-CrhNqqEN.js","assets/logger-DDBAeTLF.js","assets/src-CAWTvdAa.js","assets/proxied-fetch-DLOgqk5A.js","assets/base64-DpPqYZJF.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-CnKyhZKB.js","assets/runtime-env-E-i2SW1s.js","assets/secrets-bridge-client-Bz8CHwrq.js","assets/port-bridge-client-Bw9y6i0a.js","assets/tool-ui-DfXu6quJ.js","assets/tool-result-images-D8kQ0hH0.js","assets/providers-B9hH766t.js","assets/panel-rpc-B3MSVImO.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./mime-types-ugOWOUZ9.js";import{n,t as r}from"./base64-DpPqYZJF.js";import"./src-CAWTvdAa.js";import{o as i,r as a,t as o}from"./proxied-fetch-DLOgqk5A.js";import{n as s}from"./runtime-env-Dlaokqg1.js";import"./runtime-env-CgsZ7LTp.js";import{t as c}from"./types-idfTVsM8.js";import"./backend-local-1YuE96fx.js";import"./mount-table-store-dY2IfQ5S.js";import{t as l}from"./mount-bridge-client-D5axbHW9.js";function u(e,t,n){let r=`----DaMount${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`,i=new TextEncoder,a=i.encode(`--${r}\r\nContent-Disposition: form-data; name="data"; filename="${e}"\r\nContent-Type: ${t}\r\n\r\n`),o=i.encode(`\r\n--${r}--\r\n`),s=new Uint8Array(a.byteLength+n.byteLength+o.byteLength);return s.set(a,0),s.set(n,a.byteLength),s.set(o,a.byteLength+n.byteLength),{contentType:`multipart/form-data; boundary=${r}`,body:s}}function d(e){return e.split(`/`).pop()||`data`}function f(e){let t=e.match(/^da:\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid DA source '${e}' — expected da://org/repo[/path]`);return{org:t[1],repo:t[2],path:(t[3]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var p=5242880,m=class{kind=`da`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=f(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??p,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new c(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toSourcePath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/source/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}toListPath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/list/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,path:this.toSourcePath(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new c(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new c(`EACCES`,`da access denied`,e);if(i.status>=400)throw new c(`EIO`,`da readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=i.headers.get(`etag`)??``,u=l.startsWith(`W/`)?l.slice(2):l;return await this.cache.putBody(t,s,u),s}async writeFile(e,n){if(this.assertOpen(e),n.byteLength>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=this.toMountRelative(e),i=await this.cache.getBody(r),a=u(d(e),t(e),n),o={"content-type":a.contentType,"content-length":String(a.body.byteLength)};i?.etag?o[`if-match`]=i.etag.startsWith(`W/`)?i.etag.slice(2):i.etag:i||(o[`if-none-match`]=`*`);let s=()=>this.transport({method:`POST`,path:this.toSourcePath(r),headers:o,body:a.body}),l,f=1;try{l=await s()}catch{f=2,l=await s()}if(l.status===412){if(f===2){let t=await this.transport({method:`HEAD`,path:this.toSourcePath(r)});if(t.status>=400)throw new c(`EIO`,`da reconcile HEAD failed: ${t.status}`,e);let i=t.headers.get(`etag`)??``;await this.cache.putBody(r,n,i);let a=r.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(r);try{await this.readFile(e)}catch{}throw new c(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(l.status===401||l.status===403)throw new c(`EACCES`,`da write denied`,e);if(l.status>=400)throw new c(`EIO`,`da writeFile failed: ${l.status}`,e);let p=l.headers.get(`etag`)??``;await this.cache.putBody(r,n,p);let m=r.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(m)}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.transport({method:`GET`,path:this.toListPath(t)});if(r.status===404)throw new c(`ENOENT`,`no such directory`,e);if(r.status>=400)throw new c(`EIO`,`da list failed: ${r.status}`,e);let i=(await r.json()).map(e=>e.ext?{name:`${e.name}.${e.ext}`,kind:`file`,etag:e.etag,lastModified:e.lastModified}:{name:e.name,kind:`directory`,lastModified:e.lastModified});return await this.cache.putListing(t,i),i}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.size,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new c(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,path:this.toSourcePath(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`),r=n?Date.parse(n):0;if(o){let n=o.entries.map(n=>n.name===i&&n.kind===`file`?{...n,size:e,etag:t,lastModified:r}:n);await this.cache.putListing(a,n)}return{kind:`file`,size:e,mtime:r,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new c(`ENOENT`,`no such file or directory`,e)}throw new c(`EIO`,`da stat failed: ${s.status}`,e)}async mkdir(e){}async remove(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.transport({method:`DELETE`,path:this.toSourcePath(t)});if(n.status===404)throw new c(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new c(`EACCES`,`da delete denied`,e);if(n.status>=400)throw new c(`EIO`,`da delete failed: ${n.status}`,e);await this.cache.invalidateBody(t);let r=t.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(r)}async refresh(e){this.assertOpen(`/`);let t={added:[],removed:[],changed:[],unchanged:0,errors:[]},n=[``];for(;n.length>0;){let e=n.pop();try{await this.refreshDir(e,t,n)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}}return e?.bodies&&await this.refreshBodies(t),t}async classifyFile(e,t,n){let r=await this.cache.getBody(e);r?t&&r.etag!==t?(await this.cache.invalidateBody(e),n.changed.push(e)):n.unchanged++:n.added.push(e)}async refreshDir(e,t,n){let r=await this.transport({method:`GET`,path:this.toListPath(e)});if(r.status>=400){t.errors.push({path:e,message:`list failed: ${r.status}`});return}let i=await r.json(),a=[];for(let r of i)if(r.ext){let n=e?`${e}/${r.name}.${r.ext}`:`${r.name}.${r.ext}`;a.push({name:`${r.name}.${r.ext}`,kind:`file`,etag:r.etag,lastModified:r.lastModified}),await this.classifyFile(n,r.etag,t)}else a.push({name:r.name,kind:`directory`}),n.push(e?`${e}/${r.name}`:r.name);await this.cache.putListing(e,a)}async refreshBodies(e){for(let t of e.changed)try{await this.readFile(t)}catch(n){e.errors.push({path:t,message:n instanceof Error?n.message:String(n)})}}describe(){return{displayName:`${this.parsed.org}/${this.parsed.repo}${this.parsed.path?`/${this.parsed.path}`:``}`,source:this.source,profile:this.profile}}async close(){this.closed||=!0}};function h(e){let t=e.match(/^s3:\/\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid S3 source '${e}' — expected s3://bucket[/prefix]`);return{bucket:t[1],prefix:(t[2]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var g=26214400,_=class{kind=`s3`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=h(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??g,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new c(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toS3Key(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``);return[this.parsed.prefix,t].filter(e=>e.length>0).join(`/`)}toMountRelativeKey(e){return this.parsed.prefix?e.slice(this.parsed.prefix.length+1):e}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:this.toS3Key(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new c(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new c(`EACCES`,`s3 access denied`,e);if(i.status>=400)throw new c(`EIO`,`s3 readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes (${o} > ${this.maxBodyBytes})`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=i.headers.get(`etag`)??``;return await this.cache.putBody(t,s,l),s}async writeFile(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t.byteLength>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=await this.cache.getBody(n),i={"content-type":`application/octet-stream`,"content-length":String(t.byteLength)};r?i[`if-match`]=r.etag:i[`if-none-match`]=`*`;let a=()=>this.transport({method:`PUT`,bucket:this.parsed.bucket,key:this.toS3Key(n),headers:i,body:t}),o,s=1;try{o=await a()}catch{s=2,o=await a()}if(o.status===412){if(s===2){let r=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status>=400)throw new c(`EIO`,`s3 reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new c(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(o.status===401||o.status===403)throw new c(`EACCES`,`s3 write denied`,e);if(o.status>=400)throw new c(`EIO`,`s3 writeFile failed: ${o.status}`,e);let l=o.headers.get(`etag`)??``;await this.cache.putBody(n,t,l);let u=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(u)}async listObjectsV2(){let e=[],t;do{let n={"list-type":`2`};this.parsed.prefix&&(n.prefix=`${this.parsed.prefix}/`),t&&(n[`continuation-token`]=t);let r=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:``,query:n});if(r.status>=400)throw new c(`EIO`,`s3 list failed: ${r.status}`,`/`);let i=await r.text(),a=this.parseListingXml(i);e.push(...a.contents),t=a.nextContinuationToken}while(t);return e}parseListingXml(e){let t=[];for(let n of e.matchAll(/<Contents>([\s\S]*?)<\/Contents>/g)){let e=n[1],r=e.match(/<Key>([^<]+)<\/Key>/)?.[1]??``,i=e.match(/<ETag>([^<]+)<\/ETag>/)?.[1]??``,a=e.match(/<Size>([^<]+)<\/Size>/)?.[1]??`0`,o=e.match(/<LastModified>([^<]+)<\/LastModified>/)?.[1]??``;t.push({key:r,etag:i,size:Number(a),lastModified:o?Date.parse(o):0})}return{contents:t,nextContinuationToken:e.match(/<IsTruncated>([^<]+)<\/IsTruncated>/)?.[1]===`true`?e.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1]:void 0}}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.listObjectsV2(),i=this.groupByDir(r);for(let[e,t]of i)await this.cache.putListing(e,t);return i.get(t)??[]}groupByDir(e){let t=new Map,n=e=>(t.has(e)||t.set(e,[]),t.get(e));n(``);for(let t of e){let e=this.toMountRelativeKey(t.key).split(`/`),r=e.pop();n(e.join(`/`)).push({name:r,kind:`file`,size:t.size,etag:t.etag,lastModified:t.lastModified});let i=``;for(let t of e){let e=i;i=i?`${i}/${t}`:t;let r=n(e);r.find(e=>e.name===t&&e.kind===`directory`)||r.push({name:t,kind:`directory`}),n(i)}}return t}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.body.byteLength,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new c(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`);return{kind:`file`,size:e,mtime:n?Date.parse(n):0,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new c(`ENOENT`,`no such file or directory`,e)}throw new c(`EIO`,`s3 stat failed: ${s.status}`,e)}async refresh(e){this.assertOpen(`/`);let t=await this.listObjectsV2(),n=new Set(t.map(e=>this.toMountRelativeKey(e.key))),r=new Map(t.map(e=>[this.toMountRelativeKey(e.key),e.etag])),i={added:[],removed:[],changed:[],unchanged:0,errors:[]};for(let e of n){let t=await this.cache.getBody(e),n=r.get(e);t?t.etag===n?i.unchanged++:(await this.cache.invalidateBody(e),i.changed.push(e)):i.added.push(e)}let a=this.groupByDir(t);for(let[e,t]of a)await this.cache.putListing(e,t);if(e?.bodies)for(let e of i.changed)try{await this.readFile(e)}catch(t){i.errors.push({path:e,message:t instanceof Error?t.message:String(t)})}return i}async mkdir(e){}async remove(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t?.recursive)throw new c(`EINVAL`,`recursive remove not yet supported on S3`,e);let r=await this.transport({method:`DELETE`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status===404)throw new c(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new c(`EACCES`,`s3 delete denied`,e);if(r.status>=400)throw new c(`EIO`,`s3 delete failed: ${r.status}`,e);await this.cache.invalidateBody(n);let i=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(i)}describe(){return{displayName:this.parsed.prefix?`${this.parsed.bucket}/${this.parsed.prefix}`:this.parsed.bucket,source:this.source,profile:this.profile}}async close(){this.closed||=!0}},v=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function y(){let{getAccounts:t}=await e(async()=>{let{getAccounts:e}=await import(`./account-store--mQPlEOh.js`).then(e=>e.r);return{getAccounts:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22])),n=t().find(e=>e.providerId===`adobe`);if(!n?.accessToken)throw new v(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>n.accessToken}}var b=`slicc-mount-cache`,x=`listings`,S=`bodies`,C=class{mountId;ttlMs;dbName;dbPromise=null;constructor(e){this.mountId=e.mountId,this.ttlMs=e.ttlMs,this.dbName=e.dbName??b}isStale(e,t){return Date.now()-e>=(t??this.ttlMs)}async openDb(){return this.dbPromise||=new Promise((e,t)=>{let n=indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(x)||e.createObjectStore(x),e.objectStoreNames.contains(S)||e.createObjectStore(S)},n.onsuccess=()=>{let t=n.result;t.onversionchange=()=>{t.close(),this.dbPromise=null},t.onclose=()=>{this.dbPromise=null},e(t)},n.onerror=()=>t(n.error)}),this.dbPromise}key(e){return`${this.mountId}::${e}`}async getListing(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(x,`readonly`).objectStore(x).get(this.key(e));i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async putListing(e,t){let n=await this.openDb();return new Promise((r,i)=>{let a=n.transaction(x,`readwrite`),o={entries:t,cachedAt:Date.now()};a.objectStore(x).put(o,this.key(e)),a.oncomplete=()=>r(),a.onerror=()=>i(a.error)})}async invalidateListing(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(x,`readwrite`);i.objectStore(x).delete(this.key(e)),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async getBody(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(S,`readonly`).objectStore(S).get(this.key(e));i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async putBody(e,t,n){let r=await this.openDb(),i={body:t,etag:n,size:t.byteLength,cachedAt:Date.now()};try{await this.txPut(r,S,this.key(e),i)}catch(t){if(t instanceof DOMException&&t.name===`QuotaExceededError`){await this.evictLru(.25);try{await this.txPut(r,S,this.key(e),i)}catch{}return}throw t}}async invalidateBody(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(S,`readwrite`);i.objectStore(S).delete(this.key(e)),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async clearMount(){let e=await this.openDb(),t=`${this.mountId}::`,n=n=>new Promise((r,i)=>{let a=e.transaction(n,`readwrite`),o=a.objectStore(n),s=o.getAllKeys();s.onsuccess=()=>{for(let e of s.result)typeof e==`string`&&e.startsWith(t)&&o.delete(e)},a.oncomplete=()=>r(),a.onerror=()=>i(a.error)});await Promise.all([n(x),n(S)])}txPut(e,t,n,r){return new Promise((i,a)=>{let o=e.transaction(t,`readwrite`);o.objectStore(t).put(r,n),o.oncomplete=()=>i(),o.onerror=()=>a(o.error)})}async evictLru(e){let t=await this.openDb(),n=`${this.mountId}::`,r=await new Promise((e,r)=>{let i=t.transaction(S,`readonly`).objectStore(S),a=[],o=i.openCursor();o.onsuccess=()=>{let t=o.result;if(!t){e(a);return}if(typeof t.key==`string`&&t.key.startsWith(n)){let e=t.value;a.push({key:t.key,cachedAt:e.cachedAt})}t.continue()},o.onerror=()=>r(o.error)});r.sort((e,t)=>e.cachedAt-t.cachedAt);let i=Math.max(1,Math.ceil(r.length*e)),a=r.slice(0,i);await new Promise((e,n)=>{let r=t.transaction(S,`readwrite`),i=r.objectStore(S);for(let{key:e}of a)i.delete(e);r.oncomplete=()=>e(),r.onerror=()=>n(r.error)})}},w=r,T=n,E=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),D=new Set([101,103,204,205,304]);function O(e){if(!e.ok)throw e.errorCode===`profile_not_configured`||e.errorCode===`invalid_profile`?new c(`EACCES`,e.error):e.errorCode===`invalid_request`?new c(`EINVAL`,e.error):e.errorCode===`fetch_failed`||e.errorCode===`internal`||E.has(String(e.errorCode))?new c(`EIO`,e.error):new c(`EINVAL`,`mount transport returned unrecognized errorCode '${e.errorCode}': ${e.error}`);let t;try{t=w(e.bodyBase64)}catch(e){throw new c(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=D.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}async function k(e,t){let n;try{n=await fetch(i(e),{method:`POST`,headers:o({"content-type":`application/json`}),body:JSON.stringify(t)})}catch(e){throw new c(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (SLICC backend at localhost may not be running)`)}try{return await n.json()}catch(e){throw new c(`EIO`,`mount transport: response is not a JSON envelope (status ${n.status}): ${e instanceof Error?e.message:String(e)}`)}}async function A(e,t){try{return await chrome.runtime.sendMessage({type:e,envelope:t})}catch(e){throw new c(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (extension service worker not responding)`)}}async function j(e,t,n){return s()?A(e,n):a()?l(e,n):k(t,n)}function M(e){return async t=>O(await j(`mount.s3-sign-and-forward`,`/api/s3-sign-and-forward`,{profile:e,method:t.method,bucket:t.bucket,key:t.key,query:t.query,headers:t.headers,bodyBase64:t.body?T(t.body):void 0}))}function N(e){let t=e?.getImsToken??(async()=>(await y()).getBearerToken());return async e=>{let n;try{n=await t()}catch(e){throw new c(`EACCES`,`DA mount: ${e instanceof Error?e.message:String(e)}`)}return O(await j(`mount.da-sign-and-forward`,`/api/da-sign-and-forward`,{imsToken:n,method:e.method,path:e.path,query:e.query,headers:e.headers,bodyBase64:e.body?T(e.body):void 0}))}}export{m as DaMountBackend,C as RemoteMountCache,_ as S3MountBackend,N as makeSignedFetchDa,M as makeSignedFetchS3};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/account-store-CFoCJTKN.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/bedrock-camp-C8bCNVSq.js","assets/diagnostics-DN_idNHx.js","assets/transform-messages-N_eMsP2M.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-CrhNqqEN.js","assets/logger-DDBAeTLF.js","assets/src-CAWTvdAa.js","assets/proxied-fetch-DLOgqk5A.js","assets/base64-DpPqYZJF.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-CnKyhZKB.js","assets/runtime-env-E-i2SW1s.js","assets/secrets-bridge-client-Bz8CHwrq.js","assets/port-bridge-client-Bw9y6i0a.js","assets/tool-ui-DfXu6quJ.js","assets/tool-result-images-D8kQ0hH0.js","assets/providers-CA-kEndk.js","assets/panel-rpc-B3MSVImO.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./mime-types-ugOWOUZ9.js";import{n,t as r}from"./base64-DpPqYZJF.js";import"./src-CAWTvdAa.js";import{o as i,r as a,t as o}from"./proxied-fetch-DLOgqk5A.js";import{n as s}from"./runtime-env-Dlaokqg1.js";import"./runtime-env-CgsZ7LTp.js";import{t as c}from"./types-idfTVsM8.js";import"./backend-local-1YuE96fx.js";import"./mount-table-store-dY2IfQ5S.js";import{t as l}from"./mount-bridge-client-D5axbHW9.js";function u(e,t,n){let r=`----DaMount${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`,i=new TextEncoder,a=i.encode(`--${r}\r\nContent-Disposition: form-data; name="data"; filename="${e}"\r\nContent-Type: ${t}\r\n\r\n`),o=i.encode(`\r\n--${r}--\r\n`),s=new Uint8Array(a.byteLength+n.byteLength+o.byteLength);return s.set(a,0),s.set(n,a.byteLength),s.set(o,a.byteLength+n.byteLength),{contentType:`multipart/form-data; boundary=${r}`,body:s}}function d(e){return e.split(`/`).pop()||`data`}function f(e){let t=e.match(/^da:\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid DA source '${e}' — expected da://org/repo[/path]`);return{org:t[1],repo:t[2],path:(t[3]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var p=5242880,m=class{kind=`da`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=f(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??p,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new c(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toSourcePath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/source/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}toListPath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/list/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,path:this.toSourcePath(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new c(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new c(`EACCES`,`da access denied`,e);if(i.status>=400)throw new c(`EIO`,`da readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=i.headers.get(`etag`)??``,u=l.startsWith(`W/`)?l.slice(2):l;return await this.cache.putBody(t,s,u),s}async writeFile(e,n){if(this.assertOpen(e),n.byteLength>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=this.toMountRelative(e),i=await this.cache.getBody(r),a=u(d(e),t(e),n),o={"content-type":a.contentType,"content-length":String(a.body.byteLength)};i?.etag?o[`if-match`]=i.etag.startsWith(`W/`)?i.etag.slice(2):i.etag:i||(o[`if-none-match`]=`*`);let s=()=>this.transport({method:`POST`,path:this.toSourcePath(r),headers:o,body:a.body}),l,f=1;try{l=await s()}catch{f=2,l=await s()}if(l.status===412){if(f===2){let t=await this.transport({method:`HEAD`,path:this.toSourcePath(r)});if(t.status>=400)throw new c(`EIO`,`da reconcile HEAD failed: ${t.status}`,e);let i=t.headers.get(`etag`)??``;await this.cache.putBody(r,n,i);let a=r.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(r);try{await this.readFile(e)}catch{}throw new c(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(l.status===401||l.status===403)throw new c(`EACCES`,`da write denied`,e);if(l.status>=400)throw new c(`EIO`,`da writeFile failed: ${l.status}`,e);let p=l.headers.get(`etag`)??``;await this.cache.putBody(r,n,p);let m=r.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(m)}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.transport({method:`GET`,path:this.toListPath(t)});if(r.status===404)throw new c(`ENOENT`,`no such directory`,e);if(r.status>=400)throw new c(`EIO`,`da list failed: ${r.status}`,e);let i=(await r.json()).map(e=>e.ext?{name:`${e.name}.${e.ext}`,kind:`file`,etag:e.etag,lastModified:e.lastModified}:{name:e.name,kind:`directory`,lastModified:e.lastModified});return await this.cache.putListing(t,i),i}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.size,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new c(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,path:this.toSourcePath(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`),r=n?Date.parse(n):0;if(o){let n=o.entries.map(n=>n.name===i&&n.kind===`file`?{...n,size:e,etag:t,lastModified:r}:n);await this.cache.putListing(a,n)}return{kind:`file`,size:e,mtime:r,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new c(`ENOENT`,`no such file or directory`,e)}throw new c(`EIO`,`da stat failed: ${s.status}`,e)}async mkdir(e){}async remove(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.transport({method:`DELETE`,path:this.toSourcePath(t)});if(n.status===404)throw new c(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new c(`EACCES`,`da delete denied`,e);if(n.status>=400)throw new c(`EIO`,`da delete failed: ${n.status}`,e);await this.cache.invalidateBody(t);let r=t.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(r)}async refresh(e){this.assertOpen(`/`);let t={added:[],removed:[],changed:[],unchanged:0,errors:[]},n=[``];for(;n.length>0;){let e=n.pop();try{await this.refreshDir(e,t,n)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}}return e?.bodies&&await this.refreshBodies(t),t}async classifyFile(e,t,n){let r=await this.cache.getBody(e);r?t&&r.etag!==t?(await this.cache.invalidateBody(e),n.changed.push(e)):n.unchanged++:n.added.push(e)}async refreshDir(e,t,n){let r=await this.transport({method:`GET`,path:this.toListPath(e)});if(r.status>=400){t.errors.push({path:e,message:`list failed: ${r.status}`});return}let i=await r.json(),a=[];for(let r of i)if(r.ext){let n=e?`${e}/${r.name}.${r.ext}`:`${r.name}.${r.ext}`;a.push({name:`${r.name}.${r.ext}`,kind:`file`,etag:r.etag,lastModified:r.lastModified}),await this.classifyFile(n,r.etag,t)}else a.push({name:r.name,kind:`directory`}),n.push(e?`${e}/${r.name}`:r.name);await this.cache.putListing(e,a)}async refreshBodies(e){for(let t of e.changed)try{await this.readFile(t)}catch(n){e.errors.push({path:t,message:n instanceof Error?n.message:String(n)})}}describe(){return{displayName:`${this.parsed.org}/${this.parsed.repo}${this.parsed.path?`/${this.parsed.path}`:``}`,source:this.source,profile:this.profile}}async close(){this.closed||=!0}};function h(e){let t=e.match(/^s3:\/\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid S3 source '${e}' — expected s3://bucket[/prefix]`);return{bucket:t[1],prefix:(t[2]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var g=26214400,_=class{kind=`s3`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=h(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??g,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new c(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toS3Key(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``);return[this.parsed.prefix,t].filter(e=>e.length>0).join(`/`)}toMountRelativeKey(e){return this.parsed.prefix?e.slice(this.parsed.prefix.length+1):e}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:this.toS3Key(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new c(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new c(`EACCES`,`s3 access denied`,e);if(i.status>=400)throw new c(`EIO`,`s3 readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes (${o} > ${this.maxBodyBytes})`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes`,e);let l=i.headers.get(`etag`)??``;return await this.cache.putBody(t,s,l),s}async writeFile(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t.byteLength>this.maxBodyBytes)throw new c(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=await this.cache.getBody(n),i={"content-type":`application/octet-stream`,"content-length":String(t.byteLength)};r?i[`if-match`]=r.etag:i[`if-none-match`]=`*`;let a=()=>this.transport({method:`PUT`,bucket:this.parsed.bucket,key:this.toS3Key(n),headers:i,body:t}),o,s=1;try{o=await a()}catch{s=2,o=await a()}if(o.status===412){if(s===2){let r=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status>=400)throw new c(`EIO`,`s3 reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new c(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(o.status===401||o.status===403)throw new c(`EACCES`,`s3 write denied`,e);if(o.status>=400)throw new c(`EIO`,`s3 writeFile failed: ${o.status}`,e);let l=o.headers.get(`etag`)??``;await this.cache.putBody(n,t,l);let u=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(u)}async listObjectsV2(){let e=[],t;do{let n={"list-type":`2`};this.parsed.prefix&&(n.prefix=`${this.parsed.prefix}/`),t&&(n[`continuation-token`]=t);let r=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:``,query:n});if(r.status>=400)throw new c(`EIO`,`s3 list failed: ${r.status}`,`/`);let i=await r.text(),a=this.parseListingXml(i);e.push(...a.contents),t=a.nextContinuationToken}while(t);return e}parseListingXml(e){let t=[];for(let n of e.matchAll(/<Contents>([\s\S]*?)<\/Contents>/g)){let e=n[1],r=e.match(/<Key>([^<]+)<\/Key>/)?.[1]??``,i=e.match(/<ETag>([^<]+)<\/ETag>/)?.[1]??``,a=e.match(/<Size>([^<]+)<\/Size>/)?.[1]??`0`,o=e.match(/<LastModified>([^<]+)<\/LastModified>/)?.[1]??``;t.push({key:r,etag:i,size:Number(a),lastModified:o?Date.parse(o):0})}return{contents:t,nextContinuationToken:e.match(/<IsTruncated>([^<]+)<\/IsTruncated>/)?.[1]===`true`?e.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1]:void 0}}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.listObjectsV2(),i=this.groupByDir(r);for(let[e,t]of i)await this.cache.putListing(e,t);return i.get(t)??[]}groupByDir(e){let t=new Map,n=e=>(t.has(e)||t.set(e,[]),t.get(e));n(``);for(let t of e){let e=this.toMountRelativeKey(t.key).split(`/`),r=e.pop();n(e.join(`/`)).push({name:r,kind:`file`,size:t.size,etag:t.etag,lastModified:t.lastModified});let i=``;for(let t of e){let e=i;i=i?`${i}/${t}`:t;let r=n(e);r.find(e=>e.name===t&&e.kind===`directory`)||r.push({name:t,kind:`directory`}),n(i)}}return t}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.body.byteLength,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new c(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`);return{kind:`file`,size:e,mtime:n?Date.parse(n):0,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new c(`ENOENT`,`no such file or directory`,e)}throw new c(`EIO`,`s3 stat failed: ${s.status}`,e)}async refresh(e){this.assertOpen(`/`);let t=await this.listObjectsV2(),n=new Set(t.map(e=>this.toMountRelativeKey(e.key))),r=new Map(t.map(e=>[this.toMountRelativeKey(e.key),e.etag])),i={added:[],removed:[],changed:[],unchanged:0,errors:[]};for(let e of n){let t=await this.cache.getBody(e),n=r.get(e);t?t.etag===n?i.unchanged++:(await this.cache.invalidateBody(e),i.changed.push(e)):i.added.push(e)}let a=this.groupByDir(t);for(let[e,t]of a)await this.cache.putListing(e,t);if(e?.bodies)for(let e of i.changed)try{await this.readFile(e)}catch(t){i.errors.push({path:e,message:t instanceof Error?t.message:String(t)})}return i}async mkdir(e){}async remove(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t?.recursive)throw new c(`EINVAL`,`recursive remove not yet supported on S3`,e);let r=await this.transport({method:`DELETE`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status===404)throw new c(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new c(`EACCES`,`s3 delete denied`,e);if(r.status>=400)throw new c(`EIO`,`s3 delete failed: ${r.status}`,e);await this.cache.invalidateBody(n);let i=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(i)}describe(){return{displayName:this.parsed.prefix?`${this.parsed.bucket}/${this.parsed.prefix}`:this.parsed.bucket,source:this.source,profile:this.profile}}async close(){this.closed||=!0}},v=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function y(){let{getAccounts:t}=await e(async()=>{let{getAccounts:e}=await import(`./account-store-CFoCJTKN.js`).then(e=>e.r);return{getAccounts:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22])),n=t().find(e=>e.providerId===`adobe`);if(!n?.accessToken)throw new v(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>n.accessToken}}var b=`slicc-mount-cache`,x=`listings`,S=`bodies`,C=class{mountId;ttlMs;dbName;dbPromise=null;constructor(e){this.mountId=e.mountId,this.ttlMs=e.ttlMs,this.dbName=e.dbName??b}isStale(e,t){return Date.now()-e>=(t??this.ttlMs)}async openDb(){return this.dbPromise||=new Promise((e,t)=>{let n=indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(x)||e.createObjectStore(x),e.objectStoreNames.contains(S)||e.createObjectStore(S)},n.onsuccess=()=>{let t=n.result;t.onversionchange=()=>{t.close(),this.dbPromise=null},t.onclose=()=>{this.dbPromise=null},e(t)},n.onerror=()=>t(n.error)}),this.dbPromise}key(e){return`${this.mountId}::${e}`}async getListing(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(x,`readonly`).objectStore(x).get(this.key(e));i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async putListing(e,t){let n=await this.openDb();return new Promise((r,i)=>{let a=n.transaction(x,`readwrite`),o={entries:t,cachedAt:Date.now()};a.objectStore(x).put(o,this.key(e)),a.oncomplete=()=>r(),a.onerror=()=>i(a.error)})}async invalidateListing(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(x,`readwrite`);i.objectStore(x).delete(this.key(e)),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async getBody(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(S,`readonly`).objectStore(S).get(this.key(e));i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async putBody(e,t,n){let r=await this.openDb(),i={body:t,etag:n,size:t.byteLength,cachedAt:Date.now()};try{await this.txPut(r,S,this.key(e),i)}catch(t){if(t instanceof DOMException&&t.name===`QuotaExceededError`){await this.evictLru(.25);try{await this.txPut(r,S,this.key(e),i)}catch{}return}throw t}}async invalidateBody(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(S,`readwrite`);i.objectStore(S).delete(this.key(e)),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async clearMount(){let e=await this.openDb(),t=`${this.mountId}::`,n=n=>new Promise((r,i)=>{let a=e.transaction(n,`readwrite`),o=a.objectStore(n),s=o.getAllKeys();s.onsuccess=()=>{for(let e of s.result)typeof e==`string`&&e.startsWith(t)&&o.delete(e)},a.oncomplete=()=>r(),a.onerror=()=>i(a.error)});await Promise.all([n(x),n(S)])}txPut(e,t,n,r){return new Promise((i,a)=>{let o=e.transaction(t,`readwrite`);o.objectStore(t).put(r,n),o.oncomplete=()=>i(),o.onerror=()=>a(o.error)})}async evictLru(e){let t=await this.openDb(),n=`${this.mountId}::`,r=await new Promise((e,r)=>{let i=t.transaction(S,`readonly`).objectStore(S),a=[],o=i.openCursor();o.onsuccess=()=>{let t=o.result;if(!t){e(a);return}if(typeof t.key==`string`&&t.key.startsWith(n)){let e=t.value;a.push({key:t.key,cachedAt:e.cachedAt})}t.continue()},o.onerror=()=>r(o.error)});r.sort((e,t)=>e.cachedAt-t.cachedAt);let i=Math.max(1,Math.ceil(r.length*e)),a=r.slice(0,i);await new Promise((e,n)=>{let r=t.transaction(S,`readwrite`),i=r.objectStore(S);for(let{key:e}of a)i.delete(e);r.oncomplete=()=>e(),r.onerror=()=>n(r.error)})}},w=r,T=n,E=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),D=new Set([101,103,204,205,304]);function O(e){if(!e.ok)throw e.errorCode===`profile_not_configured`||e.errorCode===`invalid_profile`?new c(`EACCES`,e.error):e.errorCode===`invalid_request`?new c(`EINVAL`,e.error):e.errorCode===`fetch_failed`||e.errorCode===`internal`||E.has(String(e.errorCode))?new c(`EIO`,e.error):new c(`EINVAL`,`mount transport returned unrecognized errorCode '${e.errorCode}': ${e.error}`);let t;try{t=w(e.bodyBase64)}catch(e){throw new c(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=D.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}async function k(e,t){let n;try{n=await fetch(i(e),{method:`POST`,headers:o({"content-type":`application/json`}),body:JSON.stringify(t)})}catch(e){throw new c(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (SLICC backend at localhost may not be running)`)}try{return await n.json()}catch(e){throw new c(`EIO`,`mount transport: response is not a JSON envelope (status ${n.status}): ${e instanceof Error?e.message:String(e)}`)}}async function A(e,t){try{return await chrome.runtime.sendMessage({type:e,envelope:t})}catch(e){throw new c(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (extension service worker not responding)`)}}async function j(e,t,n){return s()?A(e,n):a()?l(e,n):k(t,n)}function M(e){return async t=>O(await j(`mount.s3-sign-and-forward`,`/api/s3-sign-and-forward`,{profile:e,method:t.method,bucket:t.bucket,key:t.key,query:t.query,headers:t.headers,bodyBase64:t.body?T(t.body):void 0}))}function N(e){let t=e?.getImsToken??(async()=>(await y()).getBearerToken());return async e=>{let n;try{n=await t()}catch(e){throw new c(`EACCES`,`DA mount: ${e instanceof Error?e.message:String(e)}`)}return O(await j(`mount.da-sign-and-forward`,`/api/da-sign-and-forward`,{imsToken:n,method:e.method,path:e.path,query:e.query,headers:e.headers,bodyBase64:e.body?T(e.body):void 0}))}}export{m as DaMountBackend,C as RemoteMountCache,_ as S3MountBackend,N as makeSignedFetchDa,M as makeSignedFetchS3};
@@ -1,2 +1,2 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./backend-local-CsZd2f8u.js";import{a as n,i as r,n as i,r as a}from"./mount-DBib8LTP.js";import{n as o}from"./mount-table-store-DrF_Ifaz.js";import{t as s}from"./remote-cache-JAv9sQH_.js";var c=e({formatMountRecoveryPrompt:()=>f,mdInlineCode:()=>d,recoverMounts:()=>l,shellQuote:()=>u});async function l(e,c,l){let u=[],d=[];for(let f of e){let{targetPath:e,descriptor:p}=f;if(p.kind===`local`){let n=await o(p.idbHandleKey),r=typeof n?.name==`string`?n.name:``;if(!n||!(`queryPermission`in n)){d.push({kind:`local`,path:e,dirName:r});continue}let i;try{i=await n.queryPermission({mode:`readwrite`})}catch(t){l?.warn?.(`queryPermission threw on persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),d.push({kind:`local`,path:e,dirName:r});continue}if(i!==`granted`){d.push({kind:`local`,path:e,dirName:r});continue}try{let i=t.fromHandle(n,{mountId:p.mountId});await c.mount(e,i),l?.info?.(`Restored mount from previous session`,{path:e,name:r}),u.push({kind:`local`,path:e,dirName:r})}catch(t){l?.warn?.(`Failed to re-mount persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),d.push({kind:`local`,path:e,dirName:r})}continue}if(p.kind===`s3`){try{let t=new s({mountId:p.mountId,ttlMs:3e4}),n=new r({source:p.source,profile:p.profile,cache:t,mountId:p.mountId,signedFetch:a(p.profile)});await c.mount(e,n),l?.info?.(`Restored S3 mount from previous session`,{path:e,source:p.source}),u.push({kind:`s3`,path:e,source:p.source,profile:p.profile,reason:``})}catch(t){let n=t instanceof Error?t.message:String(t);l?.warn?.(`Failed to restore S3 mount`,{path:e,error:n}),d.push({kind:`s3`,path:e,source:p.source,profile:p.profile,reason:n})}continue}if(p.kind===`da`)try{let t=new s({mountId:p.mountId,ttlMs:3e4}),r=new n({source:p.source,profile:p.profile,cache:t,mountId:p.mountId,signedFetch:i()});await c.mount(e,r),l?.info?.(`Restored DA mount from previous session`,{path:e,source:p.source}),u.push({kind:`da`,path:e,source:p.source,profile:p.profile,reason:``})}catch(t){let n=t instanceof Error?t.message:String(t);l?.warn?.(`Failed to restore DA mount`,{path:e,error:n}),d.push({kind:`da`,path:e,source:p.source,profile:p.profile,reason:n})}}return{restored:u,needsRecovery:d}}function u(e){return`'${e.replace(/'/g,`'\\''`)}'`}function d(e){let t=e.replace(/\r\n|[\r\n]/g,` `),n=t.match(/`+/g),r=n?Math.max(...n.map(e=>e.length))+1:1,i="`".repeat(r);return`${i}${t.startsWith("`")||t.endsWith("`")?` ${t} `:t}${i}`}function f(e){if(!Array.isArray(e)||e.length===0)return null;let t=e.length===1?`mount point`:`mount points`,n=e.length===1?`it`:`them`,r=e.filter(e=>e.kind===`local`),i=e.filter(e=>e.kind===`s3`||e.kind===`da`),a=[`[Session Reload] Mount recovery required for ${e.length} ${t}.`,``];if(r.length>0){let e=r.map(({path:e,dirName:t})=>{let n=t?` (previously mounted from ${d(t)})`:``;return`- ${d(e)}${n}`}),i=r.map(({path:e})=>` mount ${u(e)}`);a.push(`The page was reloaded and the following local ${t} lost filesystem permission. The browser cannot restore access without a fresh user gesture, so ${n} cannot be used until the user re-authorizes:`,``,...e,``,`Please tell the user what happened and ask whether they want to re-mount. If yes, run the corresponding command(s) so the folder picker opens and they can re-select the same directory:`,``,...i,``)}if(i.length>0){let e=i.map(({path:e,source:t,profile:n,reason:r})=>{let i=n==="default"?``:` --profile ${u(n)}`,a=`mount --source ${u(t)}${i} ${u(e)}`;return`- ${d(e)} (${d(t)}, profile ${d(n)}) — ${r}\n Retry: ${d(a)}`});a.push(`The following remote ${t} could not be auto-restored:`,``,...e,``)}return a.push("If the user no longer needs a mount, run `mount unmount <path>` (with the path shell-quoted the same way) to clear the stale entry instead."),a.join(`
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./backend-local-CsZd2f8u.js";import{a as n,i as r,n as i,r as a}from"./mount-CHKlYFT-.js";import{n as o}from"./mount-table-store-DrF_Ifaz.js";import{t as s}from"./remote-cache-JAv9sQH_.js";var c=e({formatMountRecoveryPrompt:()=>f,mdInlineCode:()=>d,recoverMounts:()=>l,shellQuote:()=>u});async function l(e,c,l){let u=[],d=[];for(let f of e){let{targetPath:e,descriptor:p}=f;if(p.kind===`local`){let n=await o(p.idbHandleKey),r=typeof n?.name==`string`?n.name:``;if(!n||!(`queryPermission`in n)){d.push({kind:`local`,path:e,dirName:r});continue}let i;try{i=await n.queryPermission({mode:`readwrite`})}catch(t){l?.warn?.(`queryPermission threw on persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),d.push({kind:`local`,path:e,dirName:r});continue}if(i!==`granted`){d.push({kind:`local`,path:e,dirName:r});continue}try{let i=t.fromHandle(n,{mountId:p.mountId});await c.mount(e,i),l?.info?.(`Restored mount from previous session`,{path:e,name:r}),u.push({kind:`local`,path:e,dirName:r})}catch(t){l?.warn?.(`Failed to re-mount persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),d.push({kind:`local`,path:e,dirName:r})}continue}if(p.kind===`s3`){try{let t=new s({mountId:p.mountId,ttlMs:3e4}),n=new r({source:p.source,profile:p.profile,cache:t,mountId:p.mountId,signedFetch:a(p.profile)});await c.mount(e,n),l?.info?.(`Restored S3 mount from previous session`,{path:e,source:p.source}),u.push({kind:`s3`,path:e,source:p.source,profile:p.profile,reason:``})}catch(t){let n=t instanceof Error?t.message:String(t);l?.warn?.(`Failed to restore S3 mount`,{path:e,error:n}),d.push({kind:`s3`,path:e,source:p.source,profile:p.profile,reason:n})}continue}if(p.kind===`da`)try{let t=new s({mountId:p.mountId,ttlMs:3e4}),r=new n({source:p.source,profile:p.profile,cache:t,mountId:p.mountId,signedFetch:i()});await c.mount(e,r),l?.info?.(`Restored DA mount from previous session`,{path:e,source:p.source}),u.push({kind:`da`,path:e,source:p.source,profile:p.profile,reason:``})}catch(t){let n=t instanceof Error?t.message:String(t);l?.warn?.(`Failed to restore DA mount`,{path:e,error:n}),d.push({kind:`da`,path:e,source:p.source,profile:p.profile,reason:n})}}return{restored:u,needsRecovery:d}}function u(e){return`'${e.replace(/'/g,`'\\''`)}'`}function d(e){let t=e.replace(/\r\n|[\r\n]/g,` `),n=t.match(/`+/g),r=n?Math.max(...n.map(e=>e.length))+1:1,i="`".repeat(r);return`${i}${t.startsWith("`")||t.endsWith("`")?` ${t} `:t}${i}`}function f(e){if(!Array.isArray(e)||e.length===0)return null;let t=e.length===1?`mount point`:`mount points`,n=e.length===1?`it`:`them`,r=e.filter(e=>e.kind===`local`),i=e.filter(e=>e.kind===`s3`||e.kind===`da`),a=[`[Session Reload] Mount recovery required for ${e.length} ${t}.`,``];if(r.length>0){let e=r.map(({path:e,dirName:t})=>{let n=t?` (previously mounted from ${d(t)})`:``;return`- ${d(e)}${n}`}),i=r.map(({path:e})=>` mount ${u(e)}`);a.push(`The page was reloaded and the following local ${t} lost filesystem permission. The browser cannot restore access without a fresh user gesture, so ${n} cannot be used until the user re-authorizes:`,``,...e,``,`Please tell the user what happened and ask whether they want to re-mount. If yes, run the corresponding command(s) so the folder picker opens and they can re-select the same directory:`,``,...i,``)}if(i.length>0){let e=i.map(({path:e,source:t,profile:n,reason:r})=>{let i=n==="default"?``:` --profile ${u(n)}`,a=`mount --source ${u(t)}${i} ${u(e)}`;return`- ${d(e)} (${d(t)}, profile ${d(n)}) — ${r}\n Retry: ${d(a)}`});a.push(`The following remote ${t} could not be auto-restored:`,``,...e,``)}return a.push("If the user no longer needs a mount, run `mount unmount <path>` (with the path shell-quoted the same way) to clear the stale entry instead."),a.join(`
2
2
  `)}export{c as n,u as r,f as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-BSZ7misP.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store--mQPlEOh.js","assets/preload-helper-Czpn1I53.js","assets/bedrock-camp-C8bCNVSq.js","assets/diagnostics-DN_idNHx.js","assets/transform-messages-N_eMsP2M.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-CrhNqqEN.js","assets/logger-DDBAeTLF.js","assets/src-CAWTvdAa.js","assets/proxied-fetch-DLOgqk5A.js","assets/base64-DpPqYZJF.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-CnKyhZKB.js","assets/runtime-env-E-i2SW1s.js","assets/secrets-bridge-client-Bz8CHwrq.js","assets/port-bridge-client-Bw9y6i0a.js","assets/tool-ui-DfXu6quJ.js","assets/tool-result-images-D8kQ0hH0.js","assets/providers-B9hH766t.js","assets/panel-rpc-B3MSVImO.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-DtQGhvkp.js"])))=>i.map(i=>d[i]);
2
- import{F as e,m as t}from"./account-store--mQPlEOh.js";import{t as n}from"./preload-helper-Czpn1I53.js";import{t as r}from"./logger-DDBAeTLF.js";import{r as i}from"./feature-flags-Cf-Bv5AK.js";import"./provider-settings-CDtl2c3I.js";import{t as a}from"./llm-session-id-bZQs6gBN.js";import{t as o}from"./chat-session-store-pWb1-jNp.js";import{a as s,i as c,n as l,r as u,t as d}from"./session-freezer-B50mVxhd.js";var f=r(`new-session`),p=`ui-new-session`,m=2e4,h=250;async function g(n){try{let r=await n.openVfs(),i=t()??void 0;if(!i)return;let o;try{o=e()}catch{return}let c=o.provider===`adobe`?{"X-Session-Id":a(p)}:void 0;await s({vfs:r,model:o,apiKey:i,headers:c}),n.onComplete?.()}catch(e){f.warn(`Pending session catch-up failed (boot continues)`,{error:e instanceof Error?e.message:String(e)})}}function _(e){(e.schedule??v)(()=>{g(e)})}function v(e){if(typeof globalThis.requestIdleCallback==`function`){globalThis.requestIdleCallback(e,{timeout:5e3});return}setTimeout(e,0)}function y(e){if(i(`agentic-memory`)){if(!e.agenticMemorySpawn){f.info(`Agentic memory enabled but agent bridge unavailable — using legacy enrichment`);return}return e.agenticMemorySpawn}}async function b(e,t,n,r,i,a){let o=await u({sessionStore:t,vfs:e.vfs,mode:`quick`,agenticMemorySpawn:a});if(!o)return null;if(e.captureCompleteSnapshot)try{await e.captureCompleteSnapshot(o)}catch(t){let n=t?.code??`unknown`;f.warn(`captureCompleteSnapshot failed`,{code:n}),o.completeSnapshotUnavailable=!0;try{await c(e.vfs,o.filename)}catch{}}return x(e,t,n,r,i,a,o),o}async function x(e,t,r,i,a,o,s){let c=s;try{let t=await l(e.vfs,s,{model:r,apiKey:i,headers:a,skipMemory:!0,pickIcon:e=>n(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BSZ7misP.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25])).then(({pickLucideIcon:t})=>t(e))});t&&(c={...t,archive:s.archive},e.onBackgroundEnriched?.(t))}catch(e){f.warn(`Agentic title enrichment threw (draft stays pending)`,{filename:s.filename,error:e instanceof Error?e.message:String(e)})}let u=await d({sessionStore:t,vfs:e.vfs,mode:`full`,model:r,apiKey:i,headers:a,agenticMemorySpawn:o},c).catch(e=>(f.warn(`Agentic memory curator threw (entry stays pending)`,{filename:c.filename,error:e instanceof Error?e.message:String(e)}),null));f.info(`Agentic memory curator finished`,{filename:c.filename,memoryPending:!u||u.memoryPending===!0}),e.onBackgroundEnriched?.(u)}async function S(e,t,n,r){for(let i of n){let n=`${t}/${i.name}`;r.has(n)||i.type===`directory`&&(await S(e,n,await e.readDir(n),r),[...r].some(e=>e.startsWith(`${n}/`)))||await e.rm(n)}}async function C(e){let t=new Set((await e.listMountPoints()).map(({path:e})=>e).filter(e=>e===`/tmp`||e.startsWith(`/tmp/`)));if(t.has(`/tmp`))return;let n;try{n=await e.readDir(`/tmp`)}catch(t){if(t?.code!==`ENOENT`)throw t;await e.mkdir(`/tmp`,{recursive:!0});return}await S(e,`/tmp`,n,t),await e.mkdir(`/tmp`,{recursive:!0})}async function w(r){let i=r.enrichmentRaceMs??m,s=t()??void 0,d;try{d=e()}catch(e){f.info(`No active model — freezing without LLM enrichment`,{error:e instanceof Error?e.message:String(e)})}let h=d?.provider===`adobe`?{"X-Session-Id":a(p)}:void 0,g=new o;try{await g.init()}catch(e){return f.warn(`SessionStore init failed — cannot freeze`,{error:e instanceof Error?e.message:String(e)}),null}let _=s&&d?y(r):void 0;if(_)return await b(r,g,d,s,h,_);let v=await u({sessionStore:g,vfs:r.vfs,mode:`quick`});if(!v)return null;if(r.captureCompleteSnapshot)try{await r.captureCompleteSnapshot(v)}catch(e){let t=e?.code??`unknown`;f.warn(`captureCompleteSnapshot failed`,{code:t}),v.completeSnapshotUnavailable=!0;try{await c(r.vfs,v.filename)}catch{}}if(!s||!d)return f.info(`Frozen without enrichment (no LLM credentials) — left pending`,{filename:v.filename}),v;let x=d,S=l(r.vfs,v,{model:x,apiKey:s,headers:h,pickIcon:e=>n(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BSZ7misP.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25])).then(({pickLucideIcon:t})=>t(e))}).catch(e=>(f.warn(`Single-click enrichment threw (entry stays pending)`,{filename:v.filename,error:e instanceof Error?e.message:String(e)}),null)),C=await T(S,i,r.onProgress);return C.kind===`llm`?C.updated?{...C.updated,archive:v.archive}:v:(S.then(e=>{f.info(`Background enrichment resolved after race window`,{filename:v.filename,enriched:e?.filename??null}),r.onBackgroundEnriched?.(e)}),v)}async function T(e,t,n){let r=Date.now(),i,a;n?.(0),n&&(i=setInterval(()=>{n(Math.min(1,(Date.now()-r)/t))},h));let o=new Promise(e=>{a=setTimeout(()=>e({kind:`timer`}),t)}),s=e.then(e=>({kind:`llm`,updated:e}));try{return await Promise.race([s,o])}finally{i&&clearInterval(i),a&&clearTimeout(a),n?.(null)}}async function E(e){let t=new o;try{await t.init()}catch(e){return f.warn(`SessionStore init failed — cannot quick-freeze`,{error:e instanceof Error?e.message:String(e)}),null}let n=await u({sessionStore:t,vfs:e.vfs,mode:`quick`});if(n&&e.captureCompleteSnapshot)try{await e.captureCompleteSnapshot(n)}catch(t){let r=t?.code??`unknown`;f.warn(`captureCompleteSnapshot failed (quick-freeze)`,{code:r}),n.completeSnapshotUnavailable=!0;try{await c(e.vfs,n.filename)}catch{}}return n}export{C as resetNewSessionTmp,w as runNewSessionFreeze,E as runNewSessionFreezeQuick,_ as schedulePendingSessionCatchup};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-CW9fUtdA.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-CFoCJTKN.js","assets/preload-helper-Czpn1I53.js","assets/bedrock-camp-C8bCNVSq.js","assets/diagnostics-DN_idNHx.js","assets/transform-messages-N_eMsP2M.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-CrhNqqEN.js","assets/logger-DDBAeTLF.js","assets/src-CAWTvdAa.js","assets/proxied-fetch-DLOgqk5A.js","assets/base64-DpPqYZJF.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-CnKyhZKB.js","assets/runtime-env-E-i2SW1s.js","assets/secrets-bridge-client-Bz8CHwrq.js","assets/port-bridge-client-Bw9y6i0a.js","assets/tool-ui-DfXu6quJ.js","assets/tool-result-images-D8kQ0hH0.js","assets/providers-CA-kEndk.js","assets/panel-rpc-B3MSVImO.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-DtQGhvkp.js"])))=>i.map(i=>d[i]);
2
+ import{F as e,m as t}from"./account-store-CFoCJTKN.js";import{t as n}from"./preload-helper-Czpn1I53.js";import{t as r}from"./logger-DDBAeTLF.js";import{r as i}from"./feature-flags-Cf-Bv5AK.js";import"./provider-settings-D2Dq-byK.js";import{t as a}from"./llm-session-id-bZQs6gBN.js";import{t as o}from"./chat-session-store-pWb1-jNp.js";import{a as s,i as c,n as l,r as u,t as d}from"./session-freezer-TQy3be2y.js";var f=r(`new-session`),p=`ui-new-session`,m=2e4,h=250;async function g(n){try{let r=await n.openVfs(),i=t()??void 0;if(!i)return;let o;try{o=e()}catch{return}let c=o.provider===`adobe`?{"X-Session-Id":a(p)}:void 0;await s({vfs:r,model:o,apiKey:i,headers:c}),n.onComplete?.()}catch(e){f.warn(`Pending session catch-up failed (boot continues)`,{error:e instanceof Error?e.message:String(e)})}}function _(e){(e.schedule??v)(()=>{g(e)})}function v(e){if(typeof globalThis.requestIdleCallback==`function`){globalThis.requestIdleCallback(e,{timeout:5e3});return}setTimeout(e,0)}function y(e){if(i(`agentic-memory`)){if(!e.agenticMemorySpawn){f.info(`Agentic memory enabled but agent bridge unavailable — using legacy enrichment`);return}return e.agenticMemorySpawn}}async function b(e,t,n,r,i,a){let o=await u({sessionStore:t,vfs:e.vfs,mode:`quick`,agenticMemorySpawn:a});if(!o)return null;if(e.captureCompleteSnapshot)try{await e.captureCompleteSnapshot(o)}catch(t){let n=t?.code??`unknown`;f.warn(`captureCompleteSnapshot failed`,{code:n}),o.completeSnapshotUnavailable=!0;try{await c(e.vfs,o.filename)}catch{}}return x(e,t,n,r,i,a,o),o}async function x(e,t,r,i,a,o,s){let c=s;try{let t=await l(e.vfs,s,{model:r,apiKey:i,headers:a,skipMemory:!0,pickIcon:e=>n(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-CW9fUtdA.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25])).then(({pickLucideIcon:t})=>t(e))});t&&(c={...t,archive:s.archive},e.onBackgroundEnriched?.(t))}catch(e){f.warn(`Agentic title enrichment threw (draft stays pending)`,{filename:s.filename,error:e instanceof Error?e.message:String(e)})}let u=await d({sessionStore:t,vfs:e.vfs,mode:`full`,model:r,apiKey:i,headers:a,agenticMemorySpawn:o},c).catch(e=>(f.warn(`Agentic memory curator threw (entry stays pending)`,{filename:c.filename,error:e instanceof Error?e.message:String(e)}),null));f.info(`Agentic memory curator finished`,{filename:c.filename,memoryPending:!u||u.memoryPending===!0}),e.onBackgroundEnriched?.(u)}async function S(e,t,n,r){for(let i of n){let n=`${t}/${i.name}`;r.has(n)||i.type===`directory`&&(await S(e,n,await e.readDir(n),r),[...r].some(e=>e.startsWith(`${n}/`)))||await e.rm(n)}}async function C(e){let t=new Set((await e.listMountPoints()).map(({path:e})=>e).filter(e=>e===`/tmp`||e.startsWith(`/tmp/`)));if(t.has(`/tmp`))return;let n;try{n=await e.readDir(`/tmp`)}catch(t){if(t?.code!==`ENOENT`)throw t;await e.mkdir(`/tmp`,{recursive:!0});return}await S(e,`/tmp`,n,t),await e.mkdir(`/tmp`,{recursive:!0})}async function w(r){let i=r.enrichmentRaceMs??m,s=t()??void 0,d;try{d=e()}catch(e){f.info(`No active model — freezing without LLM enrichment`,{error:e instanceof Error?e.message:String(e)})}let h=d?.provider===`adobe`?{"X-Session-Id":a(p)}:void 0,g=new o;try{await g.init()}catch(e){return f.warn(`SessionStore init failed — cannot freeze`,{error:e instanceof Error?e.message:String(e)}),null}let _=s&&d?y(r):void 0;if(_)return await b(r,g,d,s,h,_);let v=await u({sessionStore:g,vfs:r.vfs,mode:`quick`});if(!v)return null;if(r.captureCompleteSnapshot)try{await r.captureCompleteSnapshot(v)}catch(e){let t=e?.code??`unknown`;f.warn(`captureCompleteSnapshot failed`,{code:t}),v.completeSnapshotUnavailable=!0;try{await c(r.vfs,v.filename)}catch{}}if(!s||!d)return f.info(`Frozen without enrichment (no LLM credentials) — left pending`,{filename:v.filename}),v;let x=d,S=l(r.vfs,v,{model:x,apiKey:s,headers:h,pickIcon:e=>n(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-CW9fUtdA.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25])).then(({pickLucideIcon:t})=>t(e))}).catch(e=>(f.warn(`Single-click enrichment threw (entry stays pending)`,{filename:v.filename,error:e instanceof Error?e.message:String(e)}),null)),C=await T(S,i,r.onProgress);return C.kind===`llm`?C.updated?{...C.updated,archive:v.archive}:v:(S.then(e=>{f.info(`Background enrichment resolved after race window`,{filename:v.filename,enriched:e?.filename??null}),r.onBackgroundEnriched?.(e)}),v)}async function T(e,t,n){let r=Date.now(),i,a;n?.(0),n&&(i=setInterval(()=>{n(Math.min(1,(Date.now()-r)/t))},h));let o=new Promise(e=>{a=setTimeout(()=>e({kind:`timer`}),t)}),s=e.then(e=>({kind:`llm`,updated:e}));try{return await Promise.race([s,o])}finally{i&&clearInterval(i),a&&clearTimeout(a),n?.(null)}}async function E(e){let t=new o;try{await t.init()}catch(e){return f.warn(`SessionStore init failed — cannot quick-freeze`,{error:e instanceof Error?e.message:String(e)}),null}let n=await u({sessionStore:t,vfs:e.vfs,mode:`quick`});if(n&&e.captureCompleteSnapshot)try{await e.captureCompleteSnapshot(n)}catch(t){let r=t?.code??`unknown`;f.warn(`captureCompleteSnapshot failed (quick-freeze)`,{code:r}),n.completeSnapshotUnavailable=!0;try{await c(e.vfs,n.filename)}catch{}}return n}export{C as resetNewSessionTmp,w as runNewSessionFreeze,E as runNewSessionFreezeQuick,_ as schedulePendingSessionCatchup};
@@ -0,0 +1 @@
1
+ var e=Object.freeze(JSON.parse(`{"colors":{"activityBar.background":"#011627","activityBar.border":"#011627","activityBar.dropBackground":"#5f7e97","activityBar.foreground":"#5f7e97","activityBarBadge.background":"#44596b","activityBarBadge.foreground":"#ffffff","badge.background":"#5f7e97","badge.foreground":"#ffffff","breadcrumb.activeSelectionForeground":"#FFFFFF","breadcrumb.focusForeground":"#ffffff","breadcrumb.foreground":"#A599E9","breadcrumbPicker.background":"#001122","button.background":"#7e57c2cc","button.foreground":"#ffffffcc","button.hoverBackground":"#7e57c2","contrastBorder":"#122d42","debugExceptionWidget.background":"#011627","debugExceptionWidget.border":"#5f7e97","debugToolBar.background":"#011627","diffEditor.insertedTextBackground":"#99b76d23","diffEditor.removedTextBackground":"#ef535033","dropdown.background":"#011627","dropdown.border":"#5f7e97","dropdown.foreground":"#ffffffcc","editor.background":"#011627","editor.findMatchBackground":"#5f7e9779","editor.findMatchHighlightBackground":"#1085bb5d","editor.findRangeHighlightBackground":null,"editor.foreground":"#d6deeb","editor.hoverHighlightBackground":"#7e57c25a","editor.inactiveSelectionBackground":"#7e57c25a","editor.lineHighlightBackground":"#28707d29","editor.lineHighlightBorder":null,"editor.rangeHighlightBackground":"#7e57c25a","editor.selectionBackground":"#1d3b53","editor.selectionHighlightBackground":"#5f7e9779","editor.wordHighlightBackground":"#f6bbe533","editor.wordHighlightStrongBackground":"#e2a2f433","editorCodeLens.foreground":"#5e82ceb4","editorCursor.foreground":"#80a4c2","editorError.border":null,"editorError.foreground":"#EF5350","editorGroup.border":"#011627","editorGroup.dropBackground":"#7e57c273","editorGroup.emptyBackground":"#011627","editorGroupHeader.noTabsBackground":"#011627","editorGroupHeader.tabsBackground":"#011627","editorGroupHeader.tabsBorder":"#262A39","editorGutter.addedBackground":"#9CCC65","editorGutter.background":"#011627","editorGutter.deletedBackground":"#EF5350","editorGutter.modifiedBackground":"#e2b93d","editorHoverWidget.background":"#011627","editorHoverWidget.border":"#5f7e97","editorIndentGuide.activeBackground":"#7E97AC","editorIndentGuide.background":"#5e81ce52","editorInlayHint.background":"#0000","editorInlayHint.foreground":"#829D9D","editorLineNumber.activeForeground":"#C5E4FD","editorLineNumber.foreground":"#4b6479","editorLink.activeForeground":null,"editorMarkerNavigation.background":"#0b2942","editorMarkerNavigationError.background":"#EF5350","editorMarkerNavigationWarning.background":"#FFCA28","editorOverviewRuler.commonContentForeground":"#7e57c2","editorOverviewRuler.currentContentForeground":"#7e57c2","editorOverviewRuler.incomingContentForeground":"#7e57c2","editorRuler.foreground":"#5e81ce52","editorSuggestWidget.background":"#2C3043","editorSuggestWidget.border":"#2B2F40","editorSuggestWidget.foreground":"#d6deeb","editorSuggestWidget.highlightForeground":"#ffffff","editorSuggestWidget.selectedBackground":"#5f7e97","editorWarning.border":null,"editorWarning.foreground":"#b39554","editorWhitespace.foreground":null,"editorWidget.background":"#021320","editorWidget.border":"#5f7e97","errorForeground":"#EF5350","extensionButton.prominentBackground":"#7e57c2cc","extensionButton.prominentForeground":"#ffffffcc","extensionButton.prominentHoverBackground":"#7e57c2","focusBorder":"#122d42","foreground":"#d6deeb","gitDecoration.conflictingResourceForeground":"#ffeb95cc","gitDecoration.deletedResourceForeground":"#EF535090","gitDecoration.ignoredResourceForeground":"#395a75","gitDecoration.modifiedResourceForeground":"#a2bffc","gitDecoration.untrackedResourceForeground":"#c5e478ff","input.background":"#0b253a","input.border":"#5f7e97","input.foreground":"#ffffffcc","input.placeholderForeground":"#5f7e97","inputOption.activeBorder":"#ffffffcc","inputValidation.errorBackground":"#AB0300F2","inputValidation.errorBorder":"#EF5350","inputValidation.infoBackground":"#00589EF2","inputValidation.infoBorder":"#64B5F6","inputValidation.warningBackground":"#675700F2","inputValidation.warningBorder":"#FFCA28","list.activeSelectionBackground":"#234d708c","list.activeSelectionForeground":"#ffffff","list.dropBackground":"#011627","list.focusBackground":"#010d18","list.focusForeground":"#ffffff","list.highlightForeground":"#ffffff","list.hoverBackground":"#011627","list.hoverForeground":"#ffffff","list.inactiveSelectionBackground":"#0e293f","list.inactiveSelectionForeground":"#5f7e97","list.invalidItemForeground":"#975f94","merge.border":null,"merge.currentContentBackground":null,"merge.currentHeaderBackground":"#5f7e97","merge.incomingContentBackground":null,"merge.incomingHeaderBackground":"#7e57c25a","meta.objectliteral.js":"#82AAFF","notificationCenter.border":"#262a39","notificationLink.foreground":"#80CBC4","notificationToast.border":"#262a39","notifications.background":"#01111d","notifications.border":"#262a39","notifications.foreground":"#ffffffcc","panel.background":"#011627","panel.border":"#5f7e97","panelTitle.activeBorder":"#5f7e97","panelTitle.activeForeground":"#ffffffcc","panelTitle.inactiveForeground":"#d6deeb80","peekView.border":"#5f7e97","peekViewEditor.background":"#011627","peekViewEditor.matchHighlightBackground":"#7e57c25a","peekViewResult.background":"#011627","peekViewResult.fileForeground":"#5f7e97","peekViewResult.lineForeground":"#5f7e97","peekViewResult.matchHighlightBackground":"#ffffffcc","peekViewResult.selectionBackground":"#2E3250","peekViewResult.selectionForeground":"#5f7e97","peekViewTitle.background":"#011627","peekViewTitleDescription.foreground":"#697098","peekViewTitleLabel.foreground":"#5f7e97","pickerGroup.border":"#011627","pickerGroup.foreground":"#d1aaff","progress.background":"#7e57c2","punctuation.definition.generic.begin.html":"#ef5350f2","scrollbar.shadow":"#010b14","scrollbarSlider.activeBackground":"#084d8180","scrollbarSlider.background":"#084d8180","scrollbarSlider.hoverBackground":"#084d8180","selection.background":"#4373c2","sideBar.background":"#011627","sideBar.border":"#011627","sideBar.foreground":"#89a4bb","sideBarSectionHeader.background":"#011627","sideBarSectionHeader.foreground":"#5f7e97","sideBarTitle.foreground":"#5f7e97","source.elm":"#5f7e97","statusBar.background":"#011627","statusBar.border":"#262A39","statusBar.debuggingBackground":"#202431","statusBar.debuggingBorder":"#1F2330","statusBar.debuggingForeground":null,"statusBar.foreground":"#5f7e97","statusBar.noFolderBackground":"#011627","statusBar.noFolderBorder":"#25293A","statusBar.noFolderForeground":null,"statusBarItem.activeBackground":"#202431","statusBarItem.hoverBackground":"#202431","statusBarItem.prominentBackground":"#202431","statusBarItem.prominentHoverBackground":"#202431","string.quoted.single.js":"#ffffff","tab.activeBackground":"#0b2942","tab.activeBorder":"#262A39","tab.activeForeground":"#d2dee7","tab.border":"#272B3B","tab.inactiveBackground":"#01111d","tab.inactiveForeground":"#5f7e97","tab.unfocusedActiveBorder":"#262A39","tab.unfocusedActiveForeground":"#5f7e97","tab.unfocusedInactiveForeground":"#5f7e97","terminal.ansiBlack":"#011627","terminal.ansiBlue":"#82AAFF","terminal.ansiBrightBlack":"#575656","terminal.ansiBrightBlue":"#82AAFF","terminal.ansiBrightCyan":"#7fdbca","terminal.ansiBrightGreen":"#22da6e","terminal.ansiBrightMagenta":"#C792EA","terminal.ansiBrightRed":"#EF5350","terminal.ansiBrightWhite":"#ffffff","terminal.ansiBrightYellow":"#ffeb95","terminal.ansiCyan":"#21c7a8","terminal.ansiGreen":"#22da6e","terminal.ansiMagenta":"#C792EA","terminal.ansiRed":"#EF5350","terminal.ansiWhite":"#ffffff","terminal.ansiYellow":"#c5e478","terminal.selectionBackground":"#1b90dd4d","terminalCursor.background":"#234d70","textCodeBlock.background":"#4f4f4f","titleBar.activeBackground":"#011627","titleBar.activeForeground":"#eeefff","titleBar.inactiveBackground":"#010e1a","titleBar.inactiveForeground":null,"walkThrough.embeddedEditorBackground":"#011627","welcomePage.buttonBackground":"#011627","welcomePage.buttonHoverBackground":"#011627","widget.shadow":"#011627"},"displayName":"Night Owl","name":"night-owl","semanticHighlighting":false,"tokenColors":[{"scope":["markup.changed","meta.diff.header.git","meta.diff.header.from-file","meta.diff.header.to-file"],"settings":{"fontStyle":"italic","foreground":"#a2bffc"}},{"scope":"markup.deleted.diff","settings":{"fontStyle":"italic","foreground":"#EF535090"}},{"scope":"markup.inserted.diff","settings":{"fontStyle":"italic","foreground":"#c5e478ff"}},{"settings":{"background":"#011627","foreground":"#d6deeb"}},{"scope":["comment","punctuation.definition.comment"],"settings":{"fontStyle":"italic","foreground":"#637777"}},{"scope":"string","settings":{"foreground":"#ecc48d"}},{"scope":["string.quoted","variable.other.readwrite.js"],"settings":{"foreground":"#ecc48d"}},{"scope":"support.constant.math","settings":{"foreground":"#c5e478"}},{"scope":["constant.numeric","constant.character.numeric"],"settings":{"fontStyle":"","foreground":"#F78C6C"}},{"scope":["constant.language","punctuation.definition.constant","variable.other.constant"],"settings":{"foreground":"#82AAFF"}},{"scope":["constant.character","constant.other"],"settings":{"foreground":"#82AAFF"}},{"scope":"constant.character.escape","settings":{"foreground":"#F78C6C"}},{"scope":["string.regexp","string.regexp keyword.other"],"settings":{"foreground":"#5ca7e4"}},{"scope":"meta.function punctuation.separator.comma","settings":{"foreground":"#5f7e97"}},{"scope":"variable","settings":{"foreground":"#c5e478"}},{"scope":["punctuation.accessor","keyword"],"settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":["storage","meta.var.expr","meta.class meta.method.declaration meta.var.expr storage.type.js","storage.type.property.js","storage.type.property.ts","storage.type.property.tsx"],"settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":"storage.type","settings":{"foreground":"#c792ea"}},{"scope":"storage.type.function.arrow.js","settings":{"fontStyle":""}},{"scope":["entity.name.class","meta.class entity.name.type.class"],"settings":{"foreground":"#ffcb8b"}},{"scope":"entity.other.inherited-class","settings":{"foreground":"#c5e478"}},{"scope":"entity.name.function","settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":["punctuation.definition.tag","meta.tag"],"settings":{"foreground":"#7fdbca"}},{"scope":["entity.name.tag","meta.tag.other.html","meta.tag.other.js","meta.tag.other.tsx","entity.name.tag.tsx","entity.name.tag.js","entity.name.tag","meta.tag.js","meta.tag.tsx","meta.tag.html"],"settings":{"fontStyle":"","foreground":"#caece6"}},{"scope":"entity.other.attribute-name","settings":{"fontStyle":"italic","foreground":"#c5e478"}},{"scope":"entity.name.tag.custom","settings":{"foreground":"#f78c6c"}},{"scope":["support.function","support.constant"],"settings":{"foreground":"#82AAFF"}},{"scope":"support.constant.meta.property-value","settings":{"foreground":"#7fdbca"}},{"scope":["support.type","support.class"],"settings":{"foreground":"#c5e478"}},{"scope":"support.variable.dom","settings":{"foreground":"#c5e478"}},{"scope":"invalid","settings":{"background":"#ff2c83","foreground":"#ffffff"}},{"scope":"invalid.deprecated","settings":{"background":"#d3423e","foreground":"#ffffff"}},{"scope":"keyword.operator","settings":{"fontStyle":"","foreground":"#7fdbca"}},{"scope":"keyword.operator.relational","settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":"keyword.operator.assignment","settings":{"foreground":"#c792ea"}},{"scope":"keyword.operator.arithmetic","settings":{"foreground":"#c792ea"}},{"scope":"keyword.operator.bitwise","settings":{"foreground":"#c792ea"}},{"scope":"keyword.operator.increment","settings":{"foreground":"#c792ea"}},{"scope":"keyword.operator.ternary","settings":{"foreground":"#c792ea"}},{"scope":"comment.line.double-slash","settings":{"foreground":"#637777"}},{"scope":"object","settings":{"foreground":"#cdebf7"}},{"scope":"constant.language.null","settings":{"foreground":"#ff5874"}},{"scope":"meta.brace","settings":{"foreground":"#d6deeb"}},{"scope":"meta.delimiter.period","settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":"punctuation.definition.string","settings":{"foreground":"#d9f5dd"}},{"scope":"punctuation.definition.string.begin.markdown","settings":{"foreground":"#ff5874"}},{"scope":"constant.language.boolean","settings":{"foreground":"#ff5874"}},{"scope":"object.comma","settings":{"foreground":"#ffffff"}},{"scope":"variable.parameter.function","settings":{"fontStyle":"","foreground":"#7fdbca"}},{"scope":["support.type.vendor.property-name","support.constant.vendor.property-value","support.type.property-name","meta.property-list entity.name.tag"],"settings":{"fontStyle":"","foreground":"#80CBC4"}},{"scope":"meta.property-list entity.name.tag.reference","settings":{"foreground":"#57eaf1"}},{"scope":"constant.other.color.rgb-value punctuation.definition.constant","settings":{"foreground":"#F78C6C"}},{"scope":"constant.other.color","settings":{"foreground":"#FFEB95"}},{"scope":"keyword.other.unit","settings":{"foreground":"#FFEB95"}},{"scope":"meta.selector","settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":"entity.other.attribute-name.id","settings":{"foreground":"#FAD430"}},{"scope":"meta.property-name","settings":{"foreground":"#80CBC4"}},{"scope":["entity.name.tag.doctype","meta.tag.sgml.doctype"],"settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":"punctuation.definition.parameters","settings":{"foreground":"#d9f5dd"}},{"scope":"keyword.control.operator","settings":{"foreground":"#7fdbca"}},{"scope":"keyword.operator.logical","settings":{"fontStyle":"","foreground":"#c792ea"}},{"scope":["variable.instance","variable.other.instance","variable.readwrite.instance","variable.other.readwrite.instance","variable.other.property"],"settings":{"foreground":"#baebe2"}},{"scope":["variable.other.object.property"],"settings":{"fontStyle":"italic","foreground":"#faf39f"}},{"scope":["variable.other.object.js"],"settings":{"fontStyle":""}},{"scope":["entity.name.function"],"settings":{"fontStyle":"italic","foreground":"#82AAFF"}},{"scope":["variable.language.this.js"],"settings":{"fontStyle":"italic","foreground":"#41eec6"}},{"scope":["keyword.operator.comparison","keyword.control.flow.js","keyword.control.flow.ts","keyword.control.flow.tsx","keyword.control.ruby","keyword.control.module.ruby","keyword.control.class.ruby","keyword.control.def.ruby","keyword.control.loop.js","keyword.control.loop.ts","keyword.control.import.js","keyword.control.import.ts","keyword.control.import.tsx","keyword.control.from.js","keyword.control.from.ts","keyword.control.from.tsx","keyword.operator.instanceof.js","keyword.operator.expression.instanceof.ts","keyword.operator.expression.instanceof.tsx"],"settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":["keyword.control.conditional.js","keyword.control.conditional.ts","keyword.control.switch.js","keyword.control.switch.ts"],"settings":{"fontStyle":"","foreground":"#c792ea"}},{"scope":["support.constant","keyword.other.special-method","keyword.other.new","keyword.other.debugger","keyword.control"],"settings":{"foreground":"#7fdbca"}},{"scope":"support.function","settings":{"foreground":"#c5e478"}},{"scope":"invalid.broken","settings":{"background":"#F78C6C","foreground":"#020e14"}},{"scope":"invalid.unimplemented","settings":{"background":"#8BD649","foreground":"#ffffff"}},{"scope":"invalid.illegal","settings":{"background":"#ec5f67","foreground":"#ffffff"}},{"scope":"variable.language","settings":{"foreground":"#7fdbca"}},{"scope":"support.variable.property","settings":{"foreground":"#7fdbca"}},{"scope":"variable.function","settings":{"foreground":"#82AAFF"}},{"scope":"variable.interpolation","settings":{"foreground":"#ec5f67"}},{"scope":"meta.function-call","settings":{"foreground":"#82AAFF"}},{"scope":"punctuation.section.embedded","settings":{"foreground":"#d3423e"}},{"scope":["punctuation.terminator.expression","punctuation.definition.arguments","punctuation.definition.array","punctuation.section.array","meta.array"],"settings":{"foreground":"#d6deeb"}},{"scope":["punctuation.definition.list.begin","punctuation.definition.list.end","punctuation.separator.arguments","punctuation.definition.list"],"settings":{"foreground":"#d9f5dd"}},{"scope":"string.template meta.template.expression","settings":{"foreground":"#d3423e"}},{"scope":"string.template punctuation.definition.string","settings":{"foreground":"#d6deeb"}},{"scope":"italic","settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":"bold","settings":{"fontStyle":"bold","foreground":"#c5e478"}},{"scope":"quote","settings":{"fontStyle":"italic","foreground":"#697098"}},{"scope":"raw","settings":{"foreground":"#80CBC4"}},{"scope":"variable.assignment.coffee","settings":{"foreground":"#31e1eb"}},{"scope":"variable.parameter.function.coffee","settings":{"foreground":"#d6deeb"}},{"scope":"variable.assignment.coffee","settings":{"foreground":"#7fdbca"}},{"scope":"variable.other.readwrite.cs","settings":{"foreground":"#d6deeb"}},{"scope":["entity.name.type.class.cs","storage.type.cs"],"settings":{"foreground":"#ffcb8b"}},{"scope":"entity.name.type.namespace.cs","settings":{"foreground":"#B2CCD6"}},{"scope":"string.unquoted.preprocessor.message.cs","settings":{"foreground":"#d6deeb"}},{"scope":["punctuation.separator.hash.cs","keyword.preprocessor.region.cs","keyword.preprocessor.endregion.cs"],"settings":{"fontStyle":"bold","foreground":"#ffcb8b"}},{"scope":"variable.other.object.cs","settings":{"foreground":"#B2CCD6"}},{"scope":"entity.name.type.enum.cs","settings":{"foreground":"#c5e478"}},{"scope":["string.interpolated.single.dart","string.interpolated.double.dart"],"settings":{"foreground":"#FFCB8B"}},{"scope":"support.class.dart","settings":{"foreground":"#FFCB8B"}},{"scope":["entity.name.tag.css","entity.name.tag.less","entity.name.tag.custom.css","support.constant.property-value.css"],"settings":{"fontStyle":"","foreground":"#ff6363"}},{"scope":["entity.name.tag.wildcard.css","entity.name.tag.wildcard.less","entity.name.tag.wildcard.scss","entity.name.tag.wildcard.sass"],"settings":{"foreground":"#7fdbca"}},{"scope":"keyword.other.unit.css","settings":{"foreground":"#FFEB95"}},{"scope":["meta.attribute-selector.css entity.other.attribute-name.attribute","variable.other.readwrite.js"],"settings":{"foreground":"#F78C6C"}},{"scope":["source.elixir support.type.elixir","source.elixir meta.module.elixir entity.name.class.elixir"],"settings":{"foreground":"#82AAFF"}},{"scope":"source.elixir entity.name.function","settings":{"foreground":"#c5e478"}},{"scope":["source.elixir constant.other.symbol.elixir","source.elixir constant.other.keywords.elixir"],"settings":{"foreground":"#82AAFF"}},{"scope":"source.elixir punctuation.definition.string","settings":{"foreground":"#c5e478"}},{"scope":["source.elixir variable.other.readwrite.module.elixir","source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir"],"settings":{"foreground":"#c5e478"}},{"scope":"source.elixir .punctuation.binary.elixir","settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":"constant.keyword.clojure","settings":{"foreground":"#7fdbca"}},{"scope":"source.go meta.function-call.go","settings":{"foreground":"#DDDDDD"}},{"scope":["source.go keyword.package.go","source.go keyword.import.go","source.go keyword.function.go","source.go keyword.type.go","source.go keyword.struct.go","source.go keyword.interface.go","source.go keyword.const.go","source.go keyword.var.go","source.go keyword.map.go","source.go keyword.channel.go","source.go keyword.control.go"],"settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":["source.go constant.language.go","source.go constant.other.placeholder.go"],"settings":{"foreground":"#ff5874"}},{"scope":["entity.name.function.preprocessor.cpp","entity.scope.name.cpp"],"settings":{"foreground":"#7fdbcaff"}},{"scope":["meta.namespace-block.cpp"],"settings":{"foreground":"#e0dec6"}},{"scope":["storage.type.language.primitive.cpp"],"settings":{"foreground":"#ff5874"}},{"scope":["meta.preprocessor.macro.cpp"],"settings":{"foreground":"#d6deeb"}},{"scope":["variable.parameter"],"settings":{"foreground":"#ffcb8b"}},{"scope":["variable.other.readwrite.powershell"],"settings":{"foreground":"#82AAFF"}},{"scope":["support.function.powershell"],"settings":{"foreground":"#7fdbcaff"}},{"scope":"entity.other.attribute-name.id.html","settings":{"foreground":"#c5e478"}},{"scope":"punctuation.definition.tag.html","settings":{"foreground":"#6ae9f0"}},{"scope":"meta.tag.sgml.doctype.html","settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":"meta.class entity.name.type.class.js","settings":{"foreground":"#ffcb8b"}},{"scope":"meta.method.declaration storage.type.js","settings":{"foreground":"#82AAFF"}},{"scope":"terminator.js","settings":{"foreground":"#d6deeb"}},{"scope":"meta.js punctuation.definition.js","settings":{"foreground":"#d6deeb"}},{"scope":["entity.name.type.instance.jsdoc","entity.name.type.instance.phpdoc"],"settings":{"foreground":"#5f7e97"}},{"scope":["variable.other.jsdoc","variable.other.phpdoc"],"settings":{"foreground":"#78ccf0"}},{"scope":["variable.other.meta.import.js","meta.import.js variable.other","variable.other.meta.export.js","meta.export.js variable.other"],"settings":{"foreground":"#d6deeb"}},{"scope":"variable.parameter.function.js","settings":{"foreground":"#7986E7"}},{"scope":["variable.other.object.js","variable.other.object.jsx","variable.object.property.js","variable.object.property.jsx"],"settings":{"foreground":"#d6deeb"}},{"scope":["variable.js","variable.other.js"],"settings":{"foreground":"#d6deeb"}},{"scope":["entity.name.type.js","entity.name.type.module.js"],"settings":{"fontStyle":"","foreground":"#ffcb8b"}},{"scope":"support.class.js","settings":{"foreground":"#d6deeb"}},{"scope":"support.type.property-name.json","settings":{"foreground":"#7fdbca"}},{"scope":"support.constant.json","settings":{"foreground":"#c5e478"}},{"scope":"meta.structure.dictionary.value.json string.quoted.double","settings":{"foreground":"#c789d6"}},{"scope":"string.quoted.double.json punctuation.definition.string.json","settings":{"foreground":"#80CBC4"}},{"scope":"meta.structure.dictionary.json meta.structure.dictionary.value constant.language","settings":{"foreground":"#ff5874"}},{"scope":"variable.other.object.js","settings":{"fontStyle":"italic","foreground":"#7fdbca"}},{"scope":["variable.other.ruby"],"settings":{"foreground":"#d6deeb"}},{"scope":["entity.name.type.class.ruby"],"settings":{"foreground":"#ecc48d"}},{"scope":"constant.language.symbol.hashkey.ruby","settings":{"foreground":"#7fdbca"}},{"scope":"constant.language.symbol.ruby","settings":{"foreground":"#7fdbca"}},{"scope":"entity.name.tag.less","settings":{"foreground":"#7fdbca"}},{"scope":"keyword.other.unit.css","settings":{"foreground":"#FFEB95"}},{"scope":"meta.attribute-selector.less entity.other.attribute-name.attribute","settings":{"foreground":"#F78C6C"}},{"scope":["markup.heading","markup.heading.setext.1","markup.heading.setext.2"],"settings":{"foreground":"#82b1ff"}},{"scope":"markup.italic","settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":"markup.bold","settings":{"fontStyle":"bold","foreground":"#c5e478"}},{"scope":"markup.quote","settings":{"fontStyle":"italic","foreground":"#697098"}},{"scope":"markup.inline.raw","settings":{"foreground":"#80CBC4"}},{"scope":["markup.underline.link","markup.underline.link.image"],"settings":{"foreground":"#ff869a"}},{"scope":["string.other.link.title.markdown","string.other.link.description.markdown"],"settings":{"foreground":"#d6deeb"}},{"scope":["punctuation.definition.string.markdown","punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown","meta.link.inline.markdown punctuation.definition.string"],"settings":{"foreground":"#82b1ff"}},{"scope":["punctuation.definition.metadata.markdown"],"settings":{"foreground":"#7fdbca"}},{"scope":["beginning.punctuation.definition.list.markdown"],"settings":{"foreground":"#82b1ff"}},{"scope":"markup.inline.raw.string.markdown","settings":{"foreground":"#c5e478"}},{"scope":["variable.other.php","variable.other.property.php"],"settings":{"foreground":"#bec5d4"}},{"scope":"support.class.php","settings":{"foreground":"#ffcb8b"}},{"scope":"meta.function-call.php punctuation","settings":{"foreground":"#d6deeb"}},{"scope":"variable.other.global.php","settings":{"foreground":"#c5e478"}},{"scope":"variable.other.global.php punctuation.definition.variable","settings":{"foreground":"#c5e478"}},{"scope":"constant.language.python","settings":{"foreground":"#ff5874"}},{"scope":["variable.parameter.function.python","meta.function-call.arguments.python"],"settings":{"foreground":"#82AAFF"}},{"scope":["meta.function-call.python","meta.function-call.generic.python"],"settings":{"foreground":"#B2CCD6"}},{"scope":"punctuation.python","settings":{"foreground":"#d6deeb"}},{"scope":"entity.name.function.decorator.python","settings":{"foreground":"#c5e478"}},{"scope":"source.python variable.language.special","settings":{"foreground":"#8EACE3"}},{"scope":"keyword.control","settings":{"fontStyle":"italic","foreground":"#c792ea"}},{"scope":["variable.scss","variable.sass","variable.parameter.url.scss","variable.parameter.url.sass"],"settings":{"foreground":"#c5e478"}},{"scope":["source.css.scss meta.at-rule variable","source.css.sass meta.at-rule variable"],"settings":{"foreground":"#82AAFF"}},{"scope":["source.css.scss meta.at-rule variable","source.css.sass meta.at-rule variable"],"settings":{"foreground":"#bec5d4"}},{"scope":["meta.attribute-selector.scss entity.other.attribute-name.attribute","meta.attribute-selector.sass entity.other.attribute-name.attribute"],"settings":{"foreground":"#F78C6C"}},{"scope":["entity.name.tag.scss","entity.name.tag.sass"],"settings":{"foreground":"#7fdbca"}},{"scope":["keyword.other.unit.scss","keyword.other.unit.sass"],"settings":{"foreground":"#FFEB95"}},{"scope":["variable.other.readwrite.alias.ts","variable.other.readwrite.alias.tsx","variable.other.readwrite.ts","variable.other.readwrite.tsx","variable.other.object.ts","variable.other.object.tsx","variable.object.property.ts","variable.object.property.tsx","variable.other.ts","variable.other.tsx","variable.tsx","variable.ts"],"settings":{"foreground":"#d6deeb"}},{"scope":["entity.name.type.ts","entity.name.type.tsx"],"settings":{"foreground":"#ffcb8b"}},{"scope":["support.class.node.ts","support.class.node.tsx"],"settings":{"foreground":"#82AAFF"}},{"scope":["meta.type.parameters.ts entity.name.type","meta.type.parameters.tsx entity.name.type"],"settings":{"foreground":"#5f7e97"}},{"scope":["meta.import.ts punctuation.definition.block","meta.import.tsx punctuation.definition.block","meta.export.ts punctuation.definition.block","meta.export.tsx punctuation.definition.block"],"settings":{"foreground":"#d6deeb"}},{"scope":["meta.decorator punctuation.decorator.ts","meta.decorator punctuation.decorator.tsx"],"settings":{"foreground":"#82AAFF"}},{"scope":"meta.tag.js meta.jsx.children.tsx","settings":{"foreground":"#82AAFF"}},{"scope":"entity.name.tag.yaml","settings":{"foreground":"#7fdbca"}},{"scope":["variable.other.readwrite.js","variable.parameter"],"settings":{"foreground":"#d7dbe0"}},{"scope":["support.class.component.js","support.class.component.tsx"],"settings":{"fontStyle":"","foreground":"#f78c6c"}},{"scope":["meta.jsx.children","meta.jsx.children.js","meta.jsx.children.tsx"],"settings":{"foreground":"#d6deeb"}},{"scope":"meta.class entity.name.type.class.tsx","settings":{"foreground":"#ffcb8b"}},{"scope":["entity.name.type.tsx","entity.name.type.module.tsx"],"settings":{"foreground":"#ffcb8b"}},{"scope":["meta.class.ts meta.var.expr.ts storage.type.ts","meta.class.tsx meta.var.expr.tsx storage.type.tsx"],"settings":{"foreground":"#C792EA"}},{"scope":["meta.method.declaration storage.type.ts","meta.method.declaration storage.type.tsx"],"settings":{"foreground":"#82AAFF"}},{"scope":"markup.deleted","settings":{"foreground":"#ff0000"}},{"scope":"markup.inserted","settings":{"foreground":"#036A07"}},{"scope":"markup.underline","settings":{"fontStyle":"underline"}},{"scope":["meta.property-list.css meta.property-value.css variable.other.less","meta.property-list.scss variable.scss","meta.property-list.sass variable.sass","meta.brace","keyword.operator.operator","keyword.operator.or.regexp","keyword.operator.expression.in","keyword.operator.relational","keyword.operator.assignment","keyword.operator.comparison","keyword.operator.type","keyword.operator","keyword","punctuation.definintion.string","punctuation","variable.other.readwrite.js","storage.type","source.css","string.quoted"],"settings":{"fontStyle":""}}],"type":"dark"}`));export{e as default};
@@ -0,0 +1 @@
1
+ var e=Object.freeze(JSON.parse(`{"colors":{"activityBar.background":"#F0F0F0","activityBar.border":"#F0F0F0","activityBar.dropBackground":"#D0D0D0","activityBar.foreground":"#403f53","activityBarBadge.background":"#403f53","activityBarBadge.foreground":"#F0F0F0","badge.background":"#2AA298","badge.foreground":"#F0F0F0","button.background":"#2AA298","button.foreground":"#F0F0F0","debugExceptionWidget.background":"#F0F0F0","debugExceptionWidget.border":"#d9d9d9","debugToolBar.background":"#F0F0F0","descriptionForeground":"#403f53","dropdown.background":"#F0F0F0","dropdown.border":"#d9d9d9","dropdown.foreground":"#403f53","editor.background":"#FBFBFB","editor.findMatchBackground":"#93A1A16c","editor.findMatchHighlightBackground":"#93a1a16c","editor.findRangeHighlightBackground":"#7497a633","editor.foreground":"#403f53","editor.hoverHighlightBackground":"#339cec33","editor.lineHighlightBackground":"#F0F0F0","editor.rangeHighlightBackground":"#7497a633","editor.selectionBackground":"#E0E0E0","editor.selectionHighlightBackground":"#339cec33","editor.wordHighlightBackground":"#339cec33","editor.wordHighlightStrongBackground":"#007dd659","editorCodeLens.foreground":"#403f53","editorCursor.foreground":"#90A7B2","editorError.border":"#FBFBFB","editorError.foreground":"#E64D49","editorGroup.background":"#F6F6F6","editorGroup.border":"#F0F0F0","editorGroupHeader.noTabsBackground":"#F0F0F0","editorGroupHeader.tabsBackground":"#F0F0F0","editorGroupHeader.tabsBorder":"#F0F0F0","editorGutter.addedBackground":"#49d0c5","editorGutter.deletedBackground":"#f76e6e","editorGutter.modifiedBackground":"#6fbef6","editorHoverWidget.background":"#F0F0F0","editorHoverWidget.border":"#d9d9d9","editorIndentGuide.background":"#d9d9d9","editorInlayHint.background":"#F0F0F0","editorInlayHint.foreground":"#403f53","editorLineNumber.activeForeground":"#403f53","editorLineNumber.foreground":"#90A7B2","editorMarkerNavigation.background":"#D0D0D0","editorMarkerNavigationError.background":"#f76e6e","editorMarkerNavigationWarning.background":"#daaa01","editorOverviewRuler.errorForeground":"#E64D49","editorOverviewRuler.warningForeground":"#daaa01","editorRuler.foreground":"#d9d9d9","editorSuggestWidget.background":"#F0F0F0","editorSuggestWidget.border":"#d9d9d9","editorSuggestWidget.foreground":"#403f53","editorSuggestWidget.highlightForeground":"#403f53","editorSuggestWidget.selectedBackground":"#d3e8f8","editorWarning.border":"#daaa01","editorWarning.foreground":"#daaa01","editorWhitespace.foreground":"#d9d9d9","editorWidget.background":"#F0F0F0","editorWidget.border":"#d9d9d9","errorForeground":"#403f53","extensionButton.prominentBackground":"#2AA298","extensionButton.prominentForeground":"#F0F0F0","focusBorder":"#93A1A1","foreground":"#403f53","input.background":"#F0F0F0","input.border":"#d9d9d9","input.foreground":"#403f53","input.placeholderForeground":"#93A1A1","inputOption.activeBorder":"#2AA298","inputValidation.errorBackground":"#f76e6e","inputValidation.errorBorder":"#de3d3b","inputValidation.infoBackground":"#F0F0F0","inputValidation.infoBorder":"#D0D0D0","inputValidation.warningBackground":"#daaa01","inputValidation.warningBorder":"#E0AF02","list.activeSelectionBackground":"#d3e8f8","list.activeSelectionForeground":"#403f53","list.errorForeground":"#E64D49","list.focusBackground":"#d3e8f8","list.focusForeground":"#403f53","list.highlightForeground":"#403f53","list.hoverBackground":"#d3e8f8","list.hoverForeground":"#403f53","list.inactiveSelectionBackground":"#E0E7EA","list.inactiveSelectionForeground":"#403f53","list.warningForeground":"#daaa01","notificationCenter.border":"#CCCCCC","notificationCenterHeader.background":"#F0F0F0","notificationCenterHeader.foreground":"#403f53","notificationLink.foreground":"#994cc3","notificationToast.border":"#CCCCCC","notifications.background":"#F0F0F0","notifications.border":"#CCCCCC","notifications.foreground":"#403f53","panel.background":"#F0F0F0","panel.border":"#d9d9d9","peekView.border":"#d9d9d9","peekViewEditor.background":"#F6F6F6","peekViewEditor.matchHighlightBackground":"#49d0c5","peekViewEditorGutter.background":"#F6F6F6","peekViewResult.background":"#F0F0F0","peekViewResult.fileForeground":"#403f53","peekViewResult.lineForeground":"#403f53","peekViewResult.matchHighlightBackground":"#49d0c5","peekViewResult.selectionBackground":"#E0E7EA","peekViewResult.selectionForeground":"#403f53","peekViewTitle.background":"#F0F0F0","peekViewTitleDescription.foreground":"#403f53","peekViewTitleLabel.foreground":"#403f53","pickerGroup.border":"#d9d9d9","pickerGroup.foreground":"#403f53","progressBar.background":"#2AA298","scrollbar.shadow":"#CCCCCC","selection.background":"#7a8181ad","sideBar.background":"#F0F0F0","sideBar.border":"#F0F0F0","sideBar.foreground":"#403f53","sideBarTitle.foreground":"#403f53","statusBar.background":"#F0F0F0","statusBar.border":"#F0F0F0","statusBar.debuggingBackground":"#F0F0F0","statusBar.debuggingForeground":"#403f53","statusBar.foreground":"#403f53","statusBar.noFolderBackground":"#F0F0F0","statusBar.noFolderForeground":"#403f53","tab.activeBackground":"#F6F6F6","tab.activeForeground":"#403f53","tab.activeModifiedBorder":"#2AA298","tab.border":"#F0F0F0","tab.inactiveBackground":"#F0F0F0","tab.inactiveForeground":"#403f53","tab.inactiveModifiedBorder":"#93A1A1","tab.unfocusedActiveModifiedBorder":"#93A1A1","tab.unfocusedInactiveModifiedBorder":"#93A1A1","terminal.ansiBlack":"#403f53","terminal.ansiBlue":"#288ed7","terminal.ansiBrightBlack":"#403f53","terminal.ansiBrightBlue":"#288ed7","terminal.ansiBrightCyan":"#2AA298","terminal.ansiBrightGreen":"#08916a","terminal.ansiBrightMagenta":"#d6438a","terminal.ansiBrightRed":"#de3d3b","terminal.ansiBrightWhite":"#93A1A1","terminal.ansiBrightYellow":"#daaa01","terminal.ansiCyan":"#2AA298","terminal.ansiGreen":"#08916a","terminal.ansiMagenta":"#d6438a","terminal.ansiRed":"#de3d3b","terminal.ansiWhite":"#93A1A1","terminal.ansiYellow":"#E0AF02","terminal.background":"#F6F6F6","terminal.foreground":"#403f53","titleBar.activeBackground":"#F0F0F0","widget.shadow":"#d9d9d9"},"displayName":"Night Owl Light","name":"night-owl-light","semanticHighlighting":false,"tokenColors":[{"scope":["markup.changed","meta.diff.header.git","meta.diff.header.from-file","meta.diff.header.to-file"],"settings":{"fontStyle":"italic","foreground":"#a2bffc"}},{"scope":"markup.deleted.diff","settings":{"fontStyle":"italic","foreground":"#EF535090"}},{"scope":"markup.inserted.diff","settings":{"fontStyle":"italic","foreground":"#4876d6ff"}},{"settings":{"foreground":"#403f53"}},{"scope":["comment","punctuation.definition.comment"],"settings":{"fontStyle":"italic","foreground":"#989fb1"}},{"scope":"string","settings":{"foreground":"#4876d6"}},{"scope":["string.quoted","variable.other.readwrite.js"],"settings":{"foreground":"#c96765"}},{"scope":"support.constant.math","settings":{"foreground":"#4876d6"}},{"scope":["constant.numeric","constant.character.numeric"],"settings":{"fontStyle":"","foreground":"#aa0982"}},{"scope":["constant.language","punctuation.definition.constant","variable.other.constant"],"settings":{"foreground":"#4876d6"}},{"scope":["constant.character","constant.other"],"settings":{"foreground":"#4876d6"}},{"scope":"constant.character.escape","settings":{"foreground":"#aa0982"}},{"scope":["string.regexp","string.regexp keyword.other"],"settings":{"foreground":"#5ca7e4"}},{"scope":"meta.function punctuation.separator.comma","settings":{"foreground":"#5f7e97"}},{"scope":"variable","settings":{"foreground":"#4876d6"}},{"scope":["punctuation.accessor","keyword"],"settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":["storage","meta.var.expr","meta.class meta.method.declaration meta.var.expr storage.type.js","storage.type.property.js","storage.type.property.ts","storage.type.property.tsx"],"settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":"storage.type","settings":{"foreground":"#994cc3"}},{"scope":"storage.type.function.arrow.js","settings":{"fontStyle":""}},{"scope":["entity.name.class","meta.class entity.name.type.class"],"settings":{"foreground":"#111111"}},{"scope":"entity.other.inherited-class","settings":{"foreground":"#4876d6"}},{"scope":"entity.name.function","settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":["punctuation.definition.tag","meta.tag"],"settings":{"foreground":"#994cc3"}},{"scope":["entity.name.tag","meta.tag.other.html","meta.tag.other.js","meta.tag.other.tsx","entity.name.tag.tsx","entity.name.tag.js","entity.name.tag","meta.tag.js","meta.tag.tsx","meta.tag.html"],"settings":{"fontStyle":"","foreground":"#994cc3"}},{"scope":"entity.other.attribute-name","settings":{"fontStyle":"italic","foreground":"#4876d6"}},{"scope":"entity.name.tag.custom","settings":{"foreground":"#4876d6"}},{"scope":["support.function","support.constant"],"settings":{"foreground":"#4876d6"}},{"scope":"support.constant.meta.property-value","settings":{"foreground":"#0c969b"}},{"scope":["support.type","support.class"],"settings":{"foreground":"#4876d6"}},{"scope":"support.variable.dom","settings":{"foreground":"#4876d6"}},{"scope":"invalid","settings":{"foreground":"#ff2c83"}},{"scope":"invalid.deprecated","settings":{"foreground":"#d3423e"}},{"scope":"keyword.operator","settings":{"fontStyle":"","foreground":"#0c969b"}},{"scope":"keyword.operator.relational","settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":"keyword.operator.assignment","settings":{"foreground":"#994cc3"}},{"scope":"keyword.operator.arithmetic","settings":{"foreground":"#994cc3"}},{"scope":"keyword.operator.bitwise","settings":{"foreground":"#994cc3"}},{"scope":"keyword.operator.increment","settings":{"foreground":"#994cc3"}},{"scope":"keyword.operator.ternary","settings":{"foreground":"#994cc3"}},{"scope":"comment.line.double-slash","settings":{"foreground":"#939dbb"}},{"scope":"object","settings":{"foreground":"#cdebf7"}},{"scope":"constant.language.null","settings":{"foreground":"#bc5454"}},{"scope":"meta.brace","settings":{"foreground":"#403f53"}},{"scope":"meta.delimiter.period","settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":"punctuation.definition.string","settings":{"foreground":"#111111"}},{"scope":"punctuation.definition.string.begin.markdown","settings":{"foreground":"#bc5454"}},{"scope":"constant.language.boolean","settings":{"foreground":"#bc5454"}},{"scope":"object.comma","settings":{"foreground":"#ffffff"}},{"scope":"variable.parameter.function","settings":{"fontStyle":"","foreground":"#0c969b"}},{"scope":["support.type.vendor.property-name","support.constant.vendor.property-value","support.type.property-name","meta.property-list entity.name.tag"],"settings":{"fontStyle":"","foreground":"#0c969b"}},{"scope":"meta.property-list entity.name.tag.reference","settings":{"foreground":"#57eaf1"}},{"scope":"constant.other.color.rgb-value punctuation.definition.constant","settings":{"foreground":"#aa0982"}},{"scope":"constant.other.color","settings":{"foreground":"#aa0982"}},{"scope":"keyword.other.unit","settings":{"foreground":"#aa0982"}},{"scope":"meta.selector","settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":"entity.other.attribute-name.id","settings":{"foreground":"#aa0982"}},{"scope":"meta.property-name","settings":{"foreground":"#0c969b"}},{"scope":["entity.name.tag.doctype","meta.tag.sgml.doctype"],"settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":"punctuation.definition.parameters","settings":{"foreground":"#111111"}},{"scope":"keyword.control.operator","settings":{"foreground":"#0c969b"}},{"scope":"keyword.operator.logical","settings":{"fontStyle":"","foreground":"#994cc3"}},{"scope":["variable.instance","variable.other.instance","variable.readwrite.instance","variable.other.readwrite.instance","variable.other.property"],"settings":{"foreground":"#0c969b"}},{"scope":["variable.other.object.property"],"settings":{"fontStyle":"italic","foreground":"#111111"}},{"scope":["variable.other.object.js"],"settings":{"fontStyle":""}},{"scope":["entity.name.function"],"settings":{"fontStyle":"italic","foreground":"#4876d6"}},{"scope":["keyword.operator.comparison","keyword.control.flow.js","keyword.control.flow.ts","keyword.control.flow.tsx","keyword.control.ruby","keyword.control.module.ruby","keyword.control.class.ruby","keyword.control.def.ruby","keyword.control.loop.js","keyword.control.loop.ts","keyword.control.import.js","keyword.control.import.ts","keyword.control.import.tsx","keyword.control.from.js","keyword.control.from.ts","keyword.control.from.tsx","keyword.operator.instanceof.js","keyword.operator.expression.instanceof.ts","keyword.operator.expression.instanceof.tsx"],"settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":["keyword.control.conditional.js","keyword.control.conditional.ts","keyword.control.switch.js","keyword.control.switch.ts"],"settings":{"fontStyle":"","foreground":"#994cc3"}},{"scope":["support.constant","keyword.other.special-method","keyword.other.new","keyword.other.debugger","keyword.control"],"settings":{"foreground":"#0c969b"}},{"scope":"support.function","settings":{"foreground":"#4876d6"}},{"scope":"invalid.broken","settings":{"foreground":"#aa0982"}},{"scope":"invalid.unimplemented","settings":{"foreground":"#8BD649"}},{"scope":"invalid.illegal","settings":{"foreground":"#c96765"}},{"scope":"variable.language","settings":{"foreground":"#0c969b"}},{"scope":"support.variable.property","settings":{"foreground":"#0c969b"}},{"scope":"variable.function","settings":{"foreground":"#4876d6"}},{"scope":"variable.interpolation","settings":{"foreground":"#ec5f67"}},{"scope":"meta.function-call","settings":{"foreground":"#4876d6"}},{"scope":"punctuation.section.embedded","settings":{"foreground":"#d3423e"}},{"scope":["punctuation.terminator.expression","punctuation.definition.arguments","punctuation.definition.array","punctuation.section.array","meta.array"],"settings":{"foreground":"#403f53"}},{"scope":["punctuation.definition.list.begin","punctuation.definition.list.end","punctuation.separator.arguments","punctuation.definition.list"],"settings":{"foreground":"#111111"}},{"scope":"string.template meta.template.expression","settings":{"foreground":"#d3423e"}},{"scope":"string.template punctuation.definition.string","settings":{"foreground":"#403f53"}},{"scope":"italic","settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":"bold","settings":{"fontStyle":"bold","foreground":"#4876d6"}},{"scope":"quote","settings":{"fontStyle":"italic","foreground":"#697098"}},{"scope":"raw","settings":{"foreground":"#0c969b"}},{"scope":"variable.assignment.coffee","settings":{"foreground":"#31e1eb"}},{"scope":"variable.parameter.function.coffee","settings":{"foreground":"#403f53"}},{"scope":"variable.assignment.coffee","settings":{"foreground":"#0c969b"}},{"scope":"variable.other.readwrite.cs","settings":{"foreground":"#403f53"}},{"scope":["entity.name.type.class.cs","storage.type.cs"],"settings":{"foreground":"#4876d6"}},{"scope":"entity.name.type.namespace.cs","settings":{"foreground":"#0c969b"}},{"scope":["entity.name.tag.css","entity.name.tag.less","entity.name.tag.custom.css","support.constant.property-value.css"],"settings":{"fontStyle":"","foreground":"#c96765"}},{"scope":["entity.name.tag.wildcard.css","entity.name.tag.wildcard.less","entity.name.tag.wildcard.scss","entity.name.tag.wildcard.sass"],"settings":{"foreground":"#0c969b"}},{"scope":"keyword.other.unit.css","settings":{"foreground":"#4876d6"}},{"scope":["meta.attribute-selector.css entity.other.attribute-name.attribute","variable.other.readwrite.js"],"settings":{"foreground":"#aa0982"}},{"scope":["source.elixir support.type.elixir","source.elixir meta.module.elixir entity.name.class.elixir"],"settings":{"foreground":"#4876d6"}},{"scope":"source.elixir entity.name.function","settings":{"foreground":"#4876d6"}},{"scope":["source.elixir constant.other.symbol.elixir","source.elixir constant.other.keywords.elixir"],"settings":{"foreground":"#4876d6"}},{"scope":"source.elixir punctuation.definition.string","settings":{"foreground":"#4876d6"}},{"scope":["source.elixir variable.other.readwrite.module.elixir","source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir"],"settings":{"foreground":"#4876d6"}},{"scope":"source.elixir .punctuation.binary.elixir","settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":"constant.keyword.clojure","settings":{"foreground":"#0c969b"}},{"scope":"source.go meta.function-call.go","settings":{"foreground":"#0c969b"}},{"scope":["source.go keyword.package.go","source.go keyword.import.go","source.go keyword.function.go","source.go keyword.type.go","source.go keyword.struct.go","source.go keyword.interface.go","source.go keyword.const.go","source.go keyword.var.go","source.go keyword.map.go","source.go keyword.channel.go","source.go keyword.control.go"],"settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":["source.go constant.language.go","source.go constant.other.placeholder.go"],"settings":{"foreground":"#bc5454"}},{"scope":["entity.name.function.preprocessor.cpp","entity.scope.name.cpp"],"settings":{"foreground":"#0c969bff"}},{"scope":["meta.namespace-block.cpp"],"settings":{"foreground":"#111111"}},{"scope":["storage.type.language.primitive.cpp"],"settings":{"foreground":"#bc5454"}},{"scope":["meta.preprocessor.macro.cpp"],"settings":{"foreground":"#403f53"}},{"scope":["variable.parameter"],"settings":{"foreground":"#111111"}},{"scope":["variable.other.readwrite.powershell"],"settings":{"foreground":"#4876d6"}},{"scope":["support.function.powershell"],"settings":{"foreground":"#0c969bff"}},{"scope":"entity.other.attribute-name.id.html","settings":{"foreground":"#4876d6"}},{"scope":"punctuation.definition.tag.html","settings":{"foreground":"#994cc3"}},{"scope":"meta.tag.sgml.doctype.html","settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":"meta.class entity.name.type.class.js","settings":{"foreground":"#111111"}},{"scope":"meta.method.declaration storage.type.js","settings":{"foreground":"#4876d6"}},{"scope":"terminator.js","settings":{"foreground":"#403f53"}},{"scope":"meta.js punctuation.definition.js","settings":{"foreground":"#403f53"}},{"scope":["entity.name.type.instance.jsdoc","entity.name.type.instance.phpdoc"],"settings":{"foreground":"#5f7e97"}},{"scope":["variable.other.jsdoc","variable.other.phpdoc"],"settings":{"foreground":"#78ccf0"}},{"scope":["variable.other.meta.import.js","meta.import.js variable.other","variable.other.meta.export.js","meta.export.js variable.other"],"settings":{"foreground":"#403f53"}},{"scope":"variable.parameter.function.js","settings":{"foreground":"#7986E7"}},{"scope":["variable.other.object.js","variable.other.object.jsx","variable.object.property.js","variable.object.property.jsx"],"settings":{"foreground":"#403f53"}},{"scope":["variable.js","variable.other.js"],"settings":{"foreground":"#403f53"}},{"scope":["entity.name.type.js","entity.name.type.module.js"],"settings":{"fontStyle":"","foreground":"#111111"}},{"scope":"support.class.js","settings":{"foreground":"#403f53"}},{"scope":"support.type.property-name.json","settings":{"foreground":"#0c969b"}},{"scope":"support.constant.json","settings":{"foreground":"#4876d6"}},{"scope":"meta.structure.dictionary.value.json string.quoted.double","settings":{"foreground":"#c789d6"}},{"scope":"string.quoted.double.json punctuation.definition.string.json","settings":{"foreground":"#0c969b"}},{"scope":"meta.structure.dictionary.json meta.structure.dictionary.value constant.language","settings":{"foreground":"#bc5454"}},{"scope":"variable.other.object.js","settings":{"fontStyle":"italic","foreground":"#0c969b"}},{"scope":["variable.other.ruby"],"settings":{"foreground":"#403f53"}},{"scope":["entity.name.type.class.ruby"],"settings":{"foreground":"#c96765"}},{"scope":"constant.language.symbol.hashkey.ruby","settings":{"foreground":"#0c969b"}},{"scope":"constant.language.symbol.ruby","settings":{"foreground":"#0c969b"}},{"scope":"entity.name.tag.less","settings":{"foreground":"#994cc3"}},{"scope":"keyword.other.unit.css","settings":{"foreground":"#0c969b"}},{"scope":"meta.attribute-selector.less entity.other.attribute-name.attribute","settings":{"foreground":"#aa0982"}},{"scope":["markup.heading","markup.heading.setext.1","markup.heading.setext.2"],"settings":{"foreground":"#4876d6"}},{"scope":"markup.italic","settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":"markup.bold","settings":{"fontStyle":"bold","foreground":"#4876d6"}},{"scope":"markup.quote","settings":{"fontStyle":"italic","foreground":"#697098"}},{"scope":"markup.inline.raw","settings":{"foreground":"#0c969b"}},{"scope":["markup.underline.link","markup.underline.link.image"],"settings":{"foreground":"#ff869a"}},{"scope":["string.other.link.title.markdown","string.other.link.description.markdown"],"settings":{"foreground":"#403f53"}},{"scope":["punctuation.definition.string.markdown","punctuation.definition.string.begin.markdown","punctuation.definition.string.end.markdown","meta.link.inline.markdown punctuation.definition.string"],"settings":{"foreground":"#4876d6"}},{"scope":["punctuation.definition.metadata.markdown"],"settings":{"foreground":"#0c969b"}},{"scope":["beginning.punctuation.definition.list.markdown"],"settings":{"foreground":"#4876d6"}},{"scope":"markup.inline.raw.string.markdown","settings":{"foreground":"#4876d6"}},{"scope":["variable.other.php","variable.other.property.php"],"settings":{"foreground":"#111111"}},{"scope":"support.class.php","settings":{"foreground":"#111111"}},{"scope":"meta.function-call.php punctuation","settings":{"foreground":"#403f53"}},{"scope":"variable.other.global.php","settings":{"foreground":"#4876d6"}},{"scope":"variable.other.global.php punctuation.definition.variable","settings":{"foreground":"#4876d6"}},{"scope":"constant.language.python","settings":{"foreground":"#bc5454"}},{"scope":["variable.parameter.function.python","meta.function-call.arguments.python"],"settings":{"foreground":"#4876d6"}},{"scope":["meta.function-call.python","meta.function-call.generic.python"],"settings":{"foreground":"#0c969b"}},{"scope":"punctuation.python","settings":{"foreground":"#403f53"}},{"scope":"entity.name.function.decorator.python","settings":{"foreground":"#4876d6"}},{"scope":"source.python variable.language.special","settings":{"foreground":"#aa0982"}},{"scope":"keyword.control","settings":{"fontStyle":"italic","foreground":"#994cc3"}},{"scope":["variable.scss","variable.sass","variable.parameter.url.scss","variable.parameter.url.sass"],"settings":{"foreground":"#4876d6"}},{"scope":["source.css.scss meta.at-rule variable","source.css.sass meta.at-rule variable"],"settings":{"foreground":"#4876d6"}},{"scope":["source.css.scss meta.at-rule variable","source.css.sass meta.at-rule variable"],"settings":{"foreground":"#111111"}},{"scope":["meta.attribute-selector.scss entity.other.attribute-name.attribute","meta.attribute-selector.sass entity.other.attribute-name.attribute"],"settings":{"foreground":"#aa0982"}},{"scope":["entity.name.tag.scss","entity.name.tag.sass"],"settings":{"foreground":"#0c969b"}},{"scope":["keyword.other.unit.scss","keyword.other.unit.sass"],"settings":{"foreground":"#994cc3"}},{"scope":["variable.other.readwrite.alias.ts","variable.other.readwrite.alias.tsx","variable.other.readwrite.ts","variable.other.readwrite.tsx","variable.other.object.ts","variable.other.object.tsx","variable.object.property.ts","variable.object.property.tsx","variable.other.ts","variable.other.tsx","variable.tsx","variable.ts"],"settings":{"foreground":"#403f53"}},{"scope":["entity.name.type.ts","entity.name.type.tsx"],"settings":{"foreground":"#111111"}},{"scope":["support.class.node.ts","support.class.node.tsx"],"settings":{"foreground":"#4876d6"}},{"scope":["meta.type.parameters.ts entity.name.type","meta.type.parameters.tsx entity.name.type"],"settings":{"foreground":"#5f7e97"}},{"scope":["meta.import.ts punctuation.definition.block","meta.import.tsx punctuation.definition.block","meta.export.ts punctuation.definition.block","meta.export.tsx punctuation.definition.block"],"settings":{"foreground":"#403f53"}},{"scope":["meta.decorator punctuation.decorator.ts","meta.decorator punctuation.decorator.tsx"],"settings":{"foreground":"#4876d6"}},{"scope":"meta.tag.js meta.jsx.children.tsx","settings":{"foreground":"#4876d6"}},{"scope":"entity.name.tag.yaml","settings":{"foreground":"#111111"}},{"scope":["variable.other.readwrite.js","variable.parameter"],"settings":{"foreground":"#403f53"}},{"scope":["support.class.component.js","support.class.component.tsx"],"settings":{"fontStyle":"","foreground":"#aa0982"}},{"scope":["meta.jsx.children","meta.jsx.children.js","meta.jsx.children.tsx"],"settings":{"foreground":"#403f53"}},{"scope":"meta.class entity.name.type.class.tsx","settings":{"foreground":"#111111"}},{"scope":["entity.name.type.tsx","entity.name.type.module.tsx"],"settings":{"foreground":"#111111"}},{"scope":["meta.class.ts meta.var.expr.ts storage.type.ts","meta.class.tsx meta.var.expr.tsx storage.type.tsx"],"settings":{"foreground":"#994CC3"}},{"scope":["meta.method.declaration storage.type.ts","meta.method.declaration storage.type.tsx"],"settings":{"foreground":"#4876d6"}},{"scope":["meta.property-list.css meta.property-value.css variable.other.less","meta.property-list.scss variable.scss","meta.property-list.sass variable.sass","meta.brace","keyword.operator.operator","keyword.operator.or.regexp","keyword.operator.expression.in","keyword.operator.relational","keyword.operator.assignment","keyword.operator.comparison","keyword.operator.type","keyword.operator","keyword","punctuation.definintion.string","punctuation","variable.other.readwrite.js","storage.type","source.css","string.quoted"],"settings":{"fontStyle":""}}],"type":"light"}`));export{e as default};