@hienlh/ppm 0.22.2 → 0.22.3

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 (1249) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/assets/skills/ppm/SKILL.md +1 -1
  3. package/assets/skills/ppm/references/cli-reference.md +4 -4
  4. package/assets/skills/ppm/references/http-api.md +1 -1
  5. package/dist/web/assets/abap-IN2yINdN.js.br +0 -0
  6. package/dist/web/assets/abap-IN2yINdN.js.gz +0 -0
  7. package/dist/web/assets/accounts-settings-section-DbJ7QQg4.js +1 -0
  8. package/dist/web/assets/accounts-settings-section-DbJ7QQg4.js.br +0 -0
  9. package/dist/web/assets/accounts-settings-section-DbJ7QQg4.js.gz +0 -0
  10. package/dist/web/assets/actionscript-3-C_t772eR.js.br +0 -0
  11. package/dist/web/assets/actionscript-3-C_t772eR.js.gz +0 -0
  12. package/dist/web/assets/ada-DPme3emm.js.br +0 -0
  13. package/dist/web/assets/ada-DPme3emm.js.gz +0 -0
  14. package/dist/web/assets/{ai-resource-editor-C4ecid2g.js → ai-resource-editor-B24DvHYZ.js} +1 -1
  15. package/dist/web/assets/ai-resource-editor-B24DvHYZ.js.br +0 -0
  16. package/dist/web/assets/ai-resource-editor-B24DvHYZ.js.gz +0 -0
  17. package/dist/web/assets/{ai-settings-section-Cqz13gRt.js → ai-settings-section-BgEN9JJn.js} +1 -1
  18. package/dist/web/assets/{ai-settings-section-BOwGdiyH.js → ai-settings-section-Bq1-gIlM.js} +1 -1
  19. package/dist/web/assets/ai-settings-section-Bq1-gIlM.js.br +0 -0
  20. package/dist/web/assets/ai-settings-section-Bq1-gIlM.js.gz +0 -0
  21. package/dist/web/assets/andromeeda-DSV4i4mZ.js.br +0 -0
  22. package/dist/web/assets/andromeeda-DSV4i4mZ.js.gz +0 -0
  23. package/dist/web/assets/angular-html-G66FNlyn.js.br +0 -0
  24. package/dist/web/assets/angular-html-G66FNlyn.js.gz +0 -0
  25. package/dist/web/assets/angular-ts-B-PnUMyt.js.br +0 -0
  26. package/dist/web/assets/angular-ts-B-PnUMyt.js.gz +0 -0
  27. package/dist/web/assets/apache-CWr8s8I8.js.br +0 -0
  28. package/dist/web/assets/apache-CWr8s8I8.js.gz +0 -0
  29. package/dist/web/assets/apex-Z20JnDF5.js.br +0 -0
  30. package/dist/web/assets/apex-Z20JnDF5.js.gz +0 -0
  31. package/dist/web/assets/api-client-Jn3njtNw.js.br +0 -0
  32. package/dist/web/assets/api-client-Jn3njtNw.js.gz +0 -0
  33. package/dist/web/assets/api-settings-BxijvPBR.js.br +0 -0
  34. package/dist/web/assets/api-settings-BxijvPBR.js.gz +0 -0
  35. package/dist/web/assets/apl-BmDqqwE8.js.br +0 -0
  36. package/dist/web/assets/apl-BmDqqwE8.js.gz +0 -0
  37. package/dist/web/assets/{appearance-settings-section-DbA8L-Vz.js → appearance-settings-section-DEPNZnJ2.js} +1 -1
  38. package/dist/web/assets/appearance-settings-section-DEPNZnJ2.js.br +0 -0
  39. package/dist/web/assets/appearance-settings-section-DEPNZnJ2.js.gz +0 -0
  40. package/dist/web/assets/applescript-BKNPu3ga.js.br +0 -0
  41. package/dist/web/assets/applescript-BKNPu3ga.js.gz +0 -0
  42. package/dist/web/assets/ara-hWdY3O96.js.br +0 -0
  43. package/dist/web/assets/ara-hWdY3O96.js.gz +0 -0
  44. package/dist/web/assets/asciidoc-eynhq496.js.br +0 -0
  45. package/dist/web/assets/asciidoc-eynhq496.js.gz +0 -0
  46. package/dist/web/assets/asm-Bu02Kq4P.js.br +0 -0
  47. package/dist/web/assets/asm-Bu02Kq4P.js.gz +0 -0
  48. package/dist/web/assets/astro-BfwMNfxr.js.br +0 -0
  49. package/dist/web/assets/astro-BfwMNfxr.js.gz +0 -0
  50. package/dist/web/assets/{audio-preview-CxJd8wRV.js → audio-preview-D9nCryTq.js} +1 -1
  51. package/dist/web/assets/audio-preview-D9nCryTq.js.br +0 -0
  52. package/dist/web/assets/audio-preview-D9nCryTq.js.gz +0 -0
  53. package/dist/web/assets/aurora-x-BHBGXbIZ.js.br +0 -0
  54. package/dist/web/assets/aurora-x-BHBGXbIZ.js.gz +0 -0
  55. package/dist/web/assets/awk-B4ojezyv.js.br +0 -0
  56. package/dist/web/assets/awk-B4ojezyv.js.gz +0 -0
  57. package/dist/web/assets/ayu-dark-D0GQzFi9.js.br +0 -0
  58. package/dist/web/assets/ayu-dark-D0GQzFi9.js.gz +0 -0
  59. package/dist/web/assets/ayu-light-BVYb5Yn8.js.br +0 -0
  60. package/dist/web/assets/ayu-light-BVYb5Yn8.js.gz +0 -0
  61. package/dist/web/assets/ayu-mirage-BGFW6oNb.js.br +0 -0
  62. package/dist/web/assets/ayu-mirage-BGFW6oNb.js.gz +0 -0
  63. package/dist/web/assets/ballerina-B6Og3IKT.js.br +0 -0
  64. package/dist/web/assets/ballerina-B6Og3IKT.js.gz +0 -0
  65. package/dist/web/assets/bat-D8YFILfx.js.br +0 -0
  66. package/dist/web/assets/bat-D8YFILfx.js.gz +0 -0
  67. package/dist/web/assets/beancount-BjlbBBuX.js.br +0 -0
  68. package/dist/web/assets/beancount-BjlbBBuX.js.gz +0 -0
  69. package/dist/web/assets/berry-Cz1ygeoj.js.br +0 -0
  70. package/dist/web/assets/berry-Cz1ygeoj.js.gz +0 -0
  71. package/dist/web/assets/bibtex-CVkJceJh.js.br +0 -0
  72. package/dist/web/assets/bibtex-CVkJceJh.js.gz +0 -0
  73. package/dist/web/assets/bicep-DrhYI5GX.js.br +0 -0
  74. package/dist/web/assets/bicep-DrhYI5GX.js.gz +0 -0
  75. package/dist/web/assets/bird2-BV-KJtmc.js.br +0 -0
  76. package/dist/web/assets/bird2-BV-KJtmc.js.gz +0 -0
  77. package/dist/web/assets/blade-BsFV4pnN.js.br +0 -0
  78. package/dist/web/assets/blade-BsFV4pnN.js.gz +0 -0
  79. package/dist/web/assets/{branch-review-tab-CMTa2uSR.js → branch-review-tab-ruiWErmR.js} +1 -1
  80. package/dist/web/assets/branch-review-tab-ruiWErmR.js.br +0 -0
  81. package/dist/web/assets/branch-review-tab-ruiWErmR.js.gz +0 -0
  82. package/dist/web/assets/bsl-Cw9Outng.js.br +0 -0
  83. package/dist/web/assets/bsl-Cw9Outng.js.gz +0 -0
  84. package/dist/web/assets/button-B9CTrsEf.js.br +0 -0
  85. package/dist/web/assets/button-B9CTrsEf.js.gz +0 -0
  86. package/dist/web/assets/c-CuLlvxbG.js.br +0 -0
  87. package/dist/web/assets/c-CuLlvxbG.js.gz +0 -0
  88. package/dist/web/assets/c3-CI7-1CJ0.js.br +0 -0
  89. package/dist/web/assets/c3-CI7-1CJ0.js.gz +0 -0
  90. package/dist/web/assets/cadence-DjxhNP3Q.js.br +0 -0
  91. package/dist/web/assets/cadence-DjxhNP3Q.js.gz +0 -0
  92. package/dist/web/assets/cairo-DOK5Wqnd.js.br +0 -0
  93. package/dist/web/assets/cairo-DOK5Wqnd.js.gz +0 -0
  94. package/dist/web/assets/can-open-in-ppm-cv5--yHX.js.br +0 -0
  95. package/dist/web/assets/can-open-in-ppm-cv5--yHX.js.gz +0 -0
  96. package/dist/web/assets/catppuccin-frappe-CEozpJRh.js.br +0 -0
  97. package/dist/web/assets/catppuccin-frappe-CEozpJRh.js.gz +0 -0
  98. package/dist/web/assets/catppuccin-latte-C4sXQFMc.js.br +0 -0
  99. package/dist/web/assets/catppuccin-latte-C4sXQFMc.js.gz +0 -0
  100. package/dist/web/assets/catppuccin-macchiato-Ci-fDhXy.js.br +0 -0
  101. package/dist/web/assets/catppuccin-macchiato-Ci-fDhXy.js.gz +0 -0
  102. package/dist/web/assets/catppuccin-mocha-CH7YXw8d.js.br +0 -0
  103. package/dist/web/assets/catppuccin-mocha-CH7YXw8d.js.gz +0 -0
  104. package/dist/web/assets/chat-tab-BeBe2z3X.js +15 -0
  105. package/dist/web/assets/chat-tab-BeBe2z3X.js.br +0 -0
  106. package/dist/web/assets/chat-tab-BeBe2z3X.js.gz +0 -0
  107. package/dist/web/assets/clarity-BWrJ7UmT.js.br +0 -0
  108. package/dist/web/assets/clarity-BWrJ7UmT.js.gz +0 -0
  109. package/dist/web/assets/clojure-C94fh2hb.js.br +0 -0
  110. package/dist/web/assets/clojure-C94fh2hb.js.gz +0 -0
  111. package/dist/web/assets/cmake-CtvCkMsG.js.br +0 -0
  112. package/dist/web/assets/cmake-CtvCkMsG.js.gz +0 -0
  113. package/dist/web/assets/cobol-DRaRy4FK.js.br +0 -0
  114. package/dist/web/assets/cobol-DRaRy4FK.js.gz +0 -0
  115. package/dist/web/assets/code-editor-C7XqHn9o.js +7 -0
  116. package/dist/web/assets/code-editor-C7XqHn9o.js.br +0 -0
  117. package/dist/web/assets/code-editor-C7XqHn9o.js.gz +0 -0
  118. package/dist/web/assets/codeql-BOoP5HY2.js.br +0 -0
  119. package/dist/web/assets/codeql-BOoP5HY2.js.gz +0 -0
  120. package/dist/web/assets/{codex-daily-guard-ChDPiXDx.js → codex-daily-guard-DetGq_en.js} +1 -1
  121. package/dist/web/assets/codex-daily-guard-DetGq_en.js.br +0 -0
  122. package/dist/web/assets/codex-daily-guard-DetGq_en.js.gz +0 -0
  123. package/dist/web/assets/coffee-DvXuBmEJ.js.br +0 -0
  124. package/dist/web/assets/coffee-DvXuBmEJ.js.gz +0 -0
  125. package/dist/web/assets/common-lisp-B9nlMFJd.js.br +0 -0
  126. package/dist/web/assets/common-lisp-B9nlMFJd.js.gz +0 -0
  127. package/dist/web/assets/{conflict-editor-Axs9Ad7A.js → conflict-editor-DHUpVDGB.js} +3 -3
  128. package/dist/web/assets/conflict-editor-DHUpVDGB.js.br +0 -0
  129. package/dist/web/assets/conflict-editor-DHUpVDGB.js.gz +0 -0
  130. package/dist/web/assets/context-menu-C6pIsf83.js.br +0 -0
  131. package/dist/web/assets/context-menu-C6pIsf83.js.gz +0 -0
  132. package/dist/web/assets/coq-CgzIQiSH.js.br +0 -0
  133. package/dist/web/assets/coq-CgzIQiSH.js.gz +0 -0
  134. package/dist/web/assets/cpp-zCmm8rKA.js.br +0 -0
  135. package/dist/web/assets/cpp-zCmm8rKA.js.gz +0 -0
  136. package/dist/web/assets/createLucideIcon-DoiEKeJ_.js.br +0 -0
  137. package/dist/web/assets/createLucideIcon-DoiEKeJ_.js.gz +0 -0
  138. package/dist/web/assets/crystal-CdQx6lB6.js.br +0 -0
  139. package/dist/web/assets/crystal-CdQx6lB6.js.gz +0 -0
  140. package/dist/web/assets/csharp-4xAIx3jw.js.br +0 -0
  141. package/dist/web/assets/csharp-4xAIx3jw.js.gz +0 -0
  142. package/dist/web/assets/css-D4YoLYGn.js.br +0 -0
  143. package/dist/web/assets/css-D4YoLYGn.js.gz +0 -0
  144. package/dist/web/assets/csv-C2v-ZakW.js.br +0 -0
  145. package/dist/web/assets/csv-C2v-ZakW.js.gz +0 -0
  146. package/dist/web/assets/csv-parser-DpCmuupp.js.br +0 -0
  147. package/dist/web/assets/csv-parser-DpCmuupp.js.gz +0 -0
  148. package/dist/web/assets/{csv-preview-DTUAW2HW.js → csv-preview-DXGt24yG.js} +1 -1
  149. package/dist/web/assets/csv-preview-DXGt24yG.js.br +0 -0
  150. package/dist/web/assets/csv-preview-DXGt24yG.js.gz +0 -0
  151. package/dist/web/assets/cue-Bbznh_an.js.br +0 -0
  152. package/dist/web/assets/cue-Bbznh_an.js.gz +0 -0
  153. package/dist/web/assets/cypher-BKhVEARF.js.br +0 -0
  154. package/dist/web/assets/cypher-BKhVEARF.js.gz +0 -0
  155. package/dist/web/assets/d-D6IhWopl.js.br +0 -0
  156. package/dist/web/assets/d-D6IhWopl.js.gz +0 -0
  157. package/dist/web/assets/dark-plus-xAWu790O.js.br +0 -0
  158. package/dist/web/assets/dark-plus-xAWu790O.js.gz +0 -0
  159. package/dist/web/assets/dart-Bj6S9O1j.js.br +0 -0
  160. package/dist/web/assets/dart-Bj6S9O1j.js.gz +0 -0
  161. package/dist/web/assets/data-grid-overlay-editor-6xUCeLHh.js.br +0 -0
  162. package/dist/web/assets/data-grid-overlay-editor-6xUCeLHh.js.gz +0 -0
  163. package/dist/web/assets/data-grid-types-C5bthITf.js.br +0 -0
  164. package/dist/web/assets/data-grid-types-C5bthITf.js.gz +0 -0
  165. package/dist/web/assets/{database-viewer-qXDiWeXj.js → database-viewer-zMGckF4c.js} +1 -1
  166. package/dist/web/assets/database-viewer-zMGckF4c.js.br +0 -0
  167. package/dist/web/assets/database-viewer-zMGckF4c.js.gz +0 -0
  168. package/dist/web/assets/dax-CF2zvaqq.js.br +0 -0
  169. package/dist/web/assets/dax-CF2zvaqq.js.gz +0 -0
  170. package/dist/web/assets/desktop-CnmyxMKE.js.br +0 -0
  171. package/dist/web/assets/desktop-CnmyxMKE.js.gz +0 -0
  172. package/dist/web/assets/dialog-B84_DJQ8.js.br +0 -0
  173. package/dist/web/assets/dialog-B84_DJQ8.js.gz +0 -0
  174. package/dist/web/assets/diff-Qi8WuJsI.js.br +0 -0
  175. package/dist/web/assets/diff-Qi8WuJsI.js.gz +0 -0
  176. package/dist/web/assets/{diff-viewer-BtLiSpqe.js → diff-viewer-D8ORwKJO.js} +1 -1
  177. package/dist/web/assets/diff-viewer-D8ORwKJO.js.br +0 -0
  178. package/dist/web/assets/diff-viewer-D8ORwKJO.js.gz +0 -0
  179. package/dist/web/assets/dist-Bjseolz4.js.br +0 -0
  180. package/dist/web/assets/dist-Bjseolz4.js.gz +0 -0
  181. package/dist/web/assets/dist-Czq7BUMy.js.br +0 -0
  182. package/dist/web/assets/dist-Czq7BUMy.js.gz +0 -0
  183. package/dist/web/assets/docker-vLbbNP5d.js.br +0 -0
  184. package/dist/web/assets/docker-vLbbNP5d.js.gz +0 -0
  185. package/dist/web/assets/docx-preview-Gzi4QBez.js.br +0 -0
  186. package/dist/web/assets/docx-preview-Gzi4QBez.js.gz +0 -0
  187. package/dist/web/assets/dotenv-DJMvvNzn.js.br +0 -0
  188. package/dist/web/assets/dotenv-DJMvvNzn.js.gz +0 -0
  189. package/dist/web/assets/dracula-CtAh2rhB.js.br +0 -0
  190. package/dist/web/assets/dracula-CtAh2rhB.js.gz +0 -0
  191. package/dist/web/assets/dracula-soft-CXtuAAf6.js.br +0 -0
  192. package/dist/web/assets/dracula-soft-CXtuAAf6.js.gz +0 -0
  193. package/dist/web/assets/dream-maker-D5YQyK49.js.br +0 -0
  194. package/dist/web/assets/dream-maker-D5YQyK49.js.gz +0 -0
  195. package/dist/web/assets/edge-E8QLt7oi.js.br +0 -0
  196. package/dist/web/assets/edge-E8QLt7oi.js.gz +0 -0
  197. package/dist/web/assets/edit-diff-preview-CVv7EOFu.js.br +0 -0
  198. package/dist/web/assets/edit-diff-preview-CVv7EOFu.js.gz +0 -0
  199. package/dist/web/assets/{editor-language-service-D75GuLXP.js → editor-language-service-DlXOJKTM.js} +1 -1
  200. package/dist/web/assets/editor-language-service-DlXOJKTM.js.br +0 -0
  201. package/dist/web/assets/editor-language-service-DlXOJKTM.js.gz +0 -0
  202. package/dist/web/assets/elixir-DPb_-72P.js.br +0 -0
  203. package/dist/web/assets/elixir-DPb_-72P.js.gz +0 -0
  204. package/dist/web/assets/elm-BMzJY5b0.js.br +0 -0
  205. package/dist/web/assets/elm-BMzJY5b0.js.gz +0 -0
  206. package/dist/web/assets/emacs-lisp-CGTjbiqF.js.br +0 -0
  207. package/dist/web/assets/emacs-lisp-CGTjbiqF.js.gz +0 -0
  208. package/dist/web/assets/erb-AABQNtMK.js.br +0 -0
  209. package/dist/web/assets/erb-AABQNtMK.js.gz +0 -0
  210. package/dist/web/assets/erlang-CEIKOkfP.js.br +0 -0
  211. package/dist/web/assets/erlang-CEIKOkfP.js.gz +0 -0
  212. package/dist/web/assets/esm-B9RVMpwV.js.br +0 -0
  213. package/dist/web/assets/esm-B9RVMpwV.js.gz +0 -0
  214. package/dist/web/assets/everforest-dark-D59p7vAQ.js.br +0 -0
  215. package/dist/web/assets/everforest-dark-D59p7vAQ.js.gz +0 -0
  216. package/dist/web/assets/everforest-light-B3Qtud3V.js.br +0 -0
  217. package/dist/web/assets/everforest-light-B3Qtud3V.js.gz +0 -0
  218. package/dist/web/assets/explorer-body-CvLKavSL.js +2 -0
  219. package/dist/web/assets/explorer-body-CvLKavSL.js.br +0 -0
  220. package/dist/web/assets/explorer-body-CvLKavSL.js.gz +0 -0
  221. package/dist/web/assets/{explorer-window-content-BeQocW3i.js → explorer-window-content-DLPV_kMF.js} +1 -1
  222. package/dist/web/assets/explorer-window-content-DLPV_kMF.js.br +0 -0
  223. package/dist/web/assets/explorer-window-content-DLPV_kMF.js.gz +0 -0
  224. package/dist/web/assets/{extension-manager-section-Bm2v3P-n.js → extension-manager-section-CAy3LVt7.js} +1 -1
  225. package/dist/web/assets/extension-manager-section-CAy3LVt7.js.br +0 -0
  226. package/dist/web/assets/extension-manager-section-CAy3LVt7.js.gz +0 -0
  227. package/dist/web/assets/{extension-webview-CzxrAHyL.js → extension-webview-BHg6PTCh.js} +1 -1
  228. package/dist/web/assets/extension-webview-BHg6PTCh.js.br +0 -0
  229. package/dist/web/assets/extension-webview-BHg6PTCh.js.gz +0 -0
  230. package/dist/web/assets/fennel-BCyHNUwf.js.br +0 -0
  231. package/dist/web/assets/fennel-BCyHNUwf.js.gz +0 -0
  232. package/dist/web/assets/file-icons-wS-OmEVu.js.br +0 -0
  233. package/dist/web/assets/file-icons-wS-OmEVu.js.gz +0 -0
  234. package/dist/web/assets/file-icons.generated-BtBErEwb.css.br +0 -0
  235. package/dist/web/assets/file-icons.generated-BtBErEwb.css.gz +0 -0
  236. package/dist/web/assets/file-store-Ds3qJ4hC.js.br +0 -0
  237. package/dist/web/assets/file-store-Ds3qJ4hC.js.gz +0 -0
  238. package/dist/web/assets/{files-settings-section-Bd-_GeZU.js → files-settings-section-ND3D08W7.js} +1 -1
  239. package/dist/web/assets/files-settings-section-ND3D08W7.js.br +0 -0
  240. package/dist/web/assets/files-settings-section-ND3D08W7.js.gz +0 -0
  241. package/dist/web/assets/fish-DDDlLV2G.js.br +0 -0
  242. package/dist/web/assets/fish-DDDlLV2G.js.gz +0 -0
  243. package/dist/web/assets/fluent-By54R9tl.js.br +0 -0
  244. package/dist/web/assets/fluent-By54R9tl.js.gz +0 -0
  245. package/dist/web/assets/format-file-meta-PPi3ptkm.js.br +0 -0
  246. package/dist/web/assets/format-file-meta-PPi3ptkm.js.gz +0 -0
  247. package/dist/web/assets/fortran-fixed-form-CrXvLHyi.js.br +0 -0
  248. package/dist/web/assets/fortran-fixed-form-CrXvLHyi.js.gz +0 -0
  249. package/dist/web/assets/fortran-free-form-tP8mRym_.js.br +0 -0
  250. package/dist/web/assets/fortran-free-form-tP8mRym_.js.gz +0 -0
  251. package/dist/web/assets/fsharp-DCI4qAz_.js.br +0 -0
  252. package/dist/web/assets/fsharp-DCI4qAz_.js.gz +0 -0
  253. package/dist/web/assets/gdresource-Vb2kO1MG.js.br +0 -0
  254. package/dist/web/assets/gdresource-Vb2kO1MG.js.gz +0 -0
  255. package/dist/web/assets/gdscript-nHC2z6Te.js.br +0 -0
  256. package/dist/web/assets/gdscript-nHC2z6Te.js.gz +0 -0
  257. package/dist/web/assets/gdshader-K-cSmPlW.js.br +0 -0
  258. package/dist/web/assets/gdshader-K-cSmPlW.js.gz +0 -0
  259. package/dist/web/assets/general-settings-section-SJbTkh0b.js +1 -0
  260. package/dist/web/assets/general-settings-section-SJbTkh0b.js.br +0 -0
  261. package/dist/web/assets/general-settings-section-SJbTkh0b.js.gz +0 -0
  262. package/dist/web/assets/genie-BAcRhvEe.js.br +0 -0
  263. package/dist/web/assets/genie-BAcRhvEe.js.gz +0 -0
  264. package/dist/web/assets/gherkin-CcifxMLb.js.br +0 -0
  265. package/dist/web/assets/gherkin-CcifxMLb.js.gz +0 -0
  266. package/dist/web/assets/git-commit-BMI_OWn-.js.br +0 -0
  267. package/dist/web/assets/git-commit-BMI_OWn-.js.gz +0 -0
  268. package/dist/web/assets/{git-log-panel-CtGxPzH6.js → git-log-panel-_yL7W4EQ.js} +1 -1
  269. package/dist/web/assets/git-log-panel-_yL7W4EQ.js.br +0 -0
  270. package/dist/web/assets/git-log-panel-_yL7W4EQ.js.gz +0 -0
  271. package/dist/web/assets/git-repo-store-BCEPfUGT.js.br +0 -0
  272. package/dist/web/assets/git-repo-store-BCEPfUGT.js.gz +0 -0
  273. package/dist/web/assets/github-dark-67KKlMdB.js.br +0 -0
  274. package/dist/web/assets/github-dark-67KKlMdB.js.gz +0 -0
  275. package/dist/web/assets/github-dark-default-tja8pidR.js.br +0 -0
  276. package/dist/web/assets/github-dark-default-tja8pidR.js.gz +0 -0
  277. package/dist/web/assets/github-dark-dimmed-CtjhYQtx.js.br +0 -0
  278. package/dist/web/assets/github-dark-dimmed-CtjhYQtx.js.gz +0 -0
  279. package/dist/web/assets/github-dark-high-contrast-Bf-LPFgn.js.br +0 -0
  280. package/dist/web/assets/github-dark-high-contrast-Bf-LPFgn.js.gz +0 -0
  281. package/dist/web/assets/github-light-CbJxE7n3.js.br +0 -0
  282. package/dist/web/assets/github-light-CbJxE7n3.js.gz +0 -0
  283. package/dist/web/assets/github-light-default-DRQmdHxt.js.br +0 -0
  284. package/dist/web/assets/github-light-default-DRQmdHxt.js.gz +0 -0
  285. package/dist/web/assets/github-light-high-contrast-CJkDgTeM.js.br +0 -0
  286. package/dist/web/assets/github-light-high-contrast-CJkDgTeM.js.gz +0 -0
  287. package/dist/web/assets/gleam-D4LCl2ri.js.br +0 -0
  288. package/dist/web/assets/gleam-D4LCl2ri.js.gz +0 -0
  289. package/dist/web/assets/{glide-data-grid-iSo2vP0q.js → glide-data-grid-CfH4uK1t.js} +4 -4
  290. package/dist/web/assets/glide-data-grid-CfH4uK1t.js.br +0 -0
  291. package/dist/web/assets/glide-data-grid-CfH4uK1t.js.gz +0 -0
  292. package/dist/web/assets/glide-data-grid-nthEL3fk.css.br +0 -0
  293. package/dist/web/assets/glide-data-grid-nthEL3fk.css.gz +0 -0
  294. package/dist/web/assets/glimmer-js-BmNNiR0Z.js.br +0 -0
  295. package/dist/web/assets/glimmer-js-BmNNiR0Z.js.gz +0 -0
  296. package/dist/web/assets/glimmer-ts-DQE2Ufha.js.br +0 -0
  297. package/dist/web/assets/glimmer-ts-DQE2Ufha.js.gz +0 -0
  298. package/dist/web/assets/glsl-BcIDsxRJ.js.br +0 -0
  299. package/dist/web/assets/glsl-BcIDsxRJ.js.gz +0 -0
  300. package/dist/web/assets/gn-COY8zZmC.js.br +0 -0
  301. package/dist/web/assets/gn-COY8zZmC.js.gz +0 -0
  302. package/dist/web/assets/gnuplot-ROk1VitR.js.br +0 -0
  303. package/dist/web/assets/gnuplot-ROk1VitR.js.gz +0 -0
  304. package/dist/web/assets/go-H30c3p0C.js.br +0 -0
  305. package/dist/web/assets/go-H30c3p0C.js.gz +0 -0
  306. package/dist/web/assets/graphql-DGKSLmGH.js.br +0 -0
  307. package/dist/web/assets/graphql-DGKSLmGH.js.gz +0 -0
  308. package/dist/web/assets/groovy-DBLCaelV.js.br +0 -0
  309. package/dist/web/assets/groovy-DBLCaelV.js.gz +0 -0
  310. package/dist/web/assets/group-chat-tab-CprxuYA-.js +1 -0
  311. package/dist/web/assets/group-chat-tab-CprxuYA-.js.br +0 -0
  312. package/dist/web/assets/group-chat-tab-CprxuYA-.js.gz +0 -0
  313. package/dist/web/assets/gruvbox-dark-hard-DJy4irps.js.br +0 -0
  314. package/dist/web/assets/gruvbox-dark-hard-DJy4irps.js.gz +0 -0
  315. package/dist/web/assets/gruvbox-dark-medium-Dhfw1QTO.js.br +0 -0
  316. package/dist/web/assets/gruvbox-dark-medium-Dhfw1QTO.js.gz +0 -0
  317. package/dist/web/assets/gruvbox-dark-soft-BncJU-8w.js.br +0 -0
  318. package/dist/web/assets/gruvbox-dark-soft-BncJU-8w.js.gz +0 -0
  319. package/dist/web/assets/gruvbox-light-hard-Cq12_YvM.js.br +0 -0
  320. package/dist/web/assets/gruvbox-light-hard-Cq12_YvM.js.gz +0 -0
  321. package/dist/web/assets/gruvbox-light-medium-DqVja5_v.js.br +0 -0
  322. package/dist/web/assets/gruvbox-light-medium-DqVja5_v.js.gz +0 -0
  323. package/dist/web/assets/gruvbox-light-soft-IvwhveGF.js.br +0 -0
  324. package/dist/web/assets/gruvbox-light-soft-IvwhveGF.js.gz +0 -0
  325. package/dist/web/assets/hack-YiC8bEIb.js.br +0 -0
  326. package/dist/web/assets/hack-YiC8bEIb.js.gz +0 -0
  327. package/dist/web/assets/haml-DjblxAsz.js.br +0 -0
  328. package/dist/web/assets/haml-DjblxAsz.js.gz +0 -0
  329. package/dist/web/assets/handlebars-BQepOXaU.js.br +0 -0
  330. package/dist/web/assets/handlebars-BQepOXaU.js.gz +0 -0
  331. package/dist/web/assets/haskell-DA1JV-MC.js.br +0 -0
  332. package/dist/web/assets/haskell-DA1JV-MC.js.gz +0 -0
  333. package/dist/web/assets/haxe-V9RTRc5E.js.br +0 -0
  334. package/dist/web/assets/haxe-V9RTRc5E.js.gz +0 -0
  335. package/dist/web/assets/hcl-hr1lyZ10.js.br +0 -0
  336. package/dist/web/assets/hcl-hr1lyZ10.js.gz +0 -0
  337. package/dist/web/assets/hjson-D3vW3i7X.js.br +0 -0
  338. package/dist/web/assets/hjson-D3vW3i7X.js.gz +0 -0
  339. package/dist/web/assets/hlsl-BB85gfJT.js.br +0 -0
  340. package/dist/web/assets/hlsl-BB85gfJT.js.gz +0 -0
  341. package/dist/web/assets/horizon-DU8OOnj8.js.br +0 -0
  342. package/dist/web/assets/horizon-DU8OOnj8.js.gz +0 -0
  343. package/dist/web/assets/horizon-bright-DNMUclW6.js.br +0 -0
  344. package/dist/web/assets/horizon-bright-DNMUclW6.js.gz +0 -0
  345. package/dist/web/assets/houston-DAiZKf6T.js.br +0 -0
  346. package/dist/web/assets/houston-DAiZKf6T.js.gz +0 -0
  347. package/dist/web/assets/html-Cayj_2GP.js.br +0 -0
  348. package/dist/web/assets/html-Cayj_2GP.js.gz +0 -0
  349. package/dist/web/assets/http-BeLfdGdz.js.br +0 -0
  350. package/dist/web/assets/http-BeLfdGdz.js.gz +0 -0
  351. package/dist/web/assets/hurl-D9rypCLK.js.br +0 -0
  352. package/dist/web/assets/hurl-D9rypCLK.js.gz +0 -0
  353. package/dist/web/assets/hxml-clG8mmSH.js.br +0 -0
  354. package/dist/web/assets/hxml-clG8mmSH.js.gz +0 -0
  355. package/dist/web/assets/hy-C6Zv0LMe.js.br +0 -0
  356. package/dist/web/assets/hy-C6Zv0LMe.js.gz +0 -0
  357. package/dist/web/assets/icons-DQjqk0lJ.js.br +0 -0
  358. package/dist/web/assets/icons-DQjqk0lJ.js.gz +0 -0
  359. package/dist/web/assets/imba-Didnp6Y-.js.br +0 -0
  360. package/dist/web/assets/imba-Didnp6Y-.js.gz +0 -0
  361. package/dist/web/assets/index-8M7JWSZx.js +52 -0
  362. package/dist/web/assets/index-8M7JWSZx.js.br +0 -0
  363. package/dist/web/assets/index-8M7JWSZx.js.gz +0 -0
  364. package/dist/web/assets/index-CWL5emyr.css +1 -0
  365. package/dist/web/assets/index-CWL5emyr.css.br +0 -0
  366. package/dist/web/assets/index-CWL5emyr.css.gz +0 -0
  367. package/dist/web/assets/ini-m0T7q4gQ.js.br +5 -0
  368. package/dist/web/assets/ini-m0T7q4gQ.js.gz +0 -0
  369. package/dist/web/assets/java-Buy07jGn.js.br +0 -0
  370. package/dist/web/assets/java-Buy07jGn.js.gz +0 -0
  371. package/dist/web/assets/javascript-Cjq3CbRL.js.br +0 -0
  372. package/dist/web/assets/javascript-Cjq3CbRL.js.gz +0 -0
  373. package/dist/web/assets/jinja-BShBWfs5.js.br +0 -0
  374. package/dist/web/assets/jinja-BShBWfs5.js.gz +0 -0
  375. package/dist/web/assets/{jira-watcher-section-kyifZPTv.js → jira-watcher-section-_pTAalcO.js} +1 -1
  376. package/dist/web/assets/jira-watcher-section-_pTAalcO.js.br +0 -0
  377. package/dist/web/assets/jira-watcher-section-_pTAalcO.js.gz +0 -0
  378. package/dist/web/assets/jison-dN2Nf_Dr.js.br +0 -0
  379. package/dist/web/assets/jison-dN2Nf_Dr.js.gz +0 -0
  380. package/dist/web/assets/json-BSVu8IqD.js.br +0 -0
  381. package/dist/web/assets/json-BSVu8IqD.js.gz +0 -0
  382. package/dist/web/assets/json5-NN_Vb7e6.js.br +0 -0
  383. package/dist/web/assets/json5-NN_Vb7e6.js.gz +0 -0
  384. package/dist/web/assets/jsonc-BdyZhBUw.js.br +0 -0
  385. package/dist/web/assets/jsonc-BdyZhBUw.js.gz +0 -0
  386. package/dist/web/assets/jsonl-BsDSNvwi.js.br +0 -0
  387. package/dist/web/assets/jsonl-BsDSNvwi.js.gz +0 -0
  388. package/dist/web/assets/jsonnet-Gm963F-U.js.br +0 -0
  389. package/dist/web/assets/jsonnet-Gm963F-U.js.gz +0 -0
  390. package/dist/web/assets/jssm-Ds3bKWgJ.js.br +0 -0
  391. package/dist/web/assets/jssm-Ds3bKWgJ.js.gz +0 -0
  392. package/dist/web/assets/jsx-BT5mW58X.js.br +0 -0
  393. package/dist/web/assets/jsx-BT5mW58X.js.gz +0 -0
  394. package/dist/web/assets/julia-5U0vR-uJ.js.br +0 -0
  395. package/dist/web/assets/julia-5U0vR-uJ.js.gz +0 -0
  396. package/dist/web/assets/just-BMppVRy6.js.br +0 -0
  397. package/dist/web/assets/just-BMppVRy6.js.gz +0 -0
  398. package/dist/web/assets/kanagawa-dragon-BvNvf7xd.js.br +0 -0
  399. package/dist/web/assets/kanagawa-dragon-BvNvf7xd.js.gz +0 -0
  400. package/dist/web/assets/kanagawa-lotus-CuSiliSn.js.br +0 -0
  401. package/dist/web/assets/kanagawa-lotus-CuSiliSn.js.gz +0 -0
  402. package/dist/web/assets/kanagawa-wave-C6g-d6jT.js.br +0 -0
  403. package/dist/web/assets/kanagawa-wave-C6g-d6jT.js.gz +0 -0
  404. package/dist/web/assets/kdl-Bx4kZef-.js.br +0 -0
  405. package/dist/web/assets/kdl-Bx4kZef-.js.gz +0 -0
  406. package/dist/web/assets/keybindings-store-BwDohs5S.js +1 -0
  407. package/dist/web/assets/{keyboard-shortcuts-section-D2uJq4x9.js → keyboard-shortcuts-section-DpW1qIXk.js} +1 -1
  408. package/dist/web/assets/keyboard-shortcuts-section-DpW1qIXk.js.br +0 -0
  409. package/dist/web/assets/keyboard-shortcuts-section-DpW1qIXk.js.gz +0 -0
  410. package/dist/web/assets/kotlin-qvaVvCcm.js.br +0 -0
  411. package/dist/web/assets/kotlin-qvaVvCcm.js.gz +0 -0
  412. package/dist/web/assets/kusto-BPLyNCN6.js.br +0 -0
  413. package/dist/web/assets/kusto-BPLyNCN6.js.gz +0 -0
  414. package/dist/web/assets/laserwave-Sf8ZEhWP.js.br +0 -0
  415. package/dist/web/assets/laserwave-Sf8ZEhWP.js.gz +0 -0
  416. package/dist/web/assets/latex-DSSOKjis.js.br +0 -0
  417. package/dist/web/assets/latex-DSSOKjis.js.gz +0 -0
  418. package/dist/web/assets/lean-DGe6uqgk.js.br +0 -0
  419. package/dist/web/assets/lean-DGe6uqgk.js.gz +0 -0
  420. package/dist/web/assets/less-CqM85x-9.js.br +0 -0
  421. package/dist/web/assets/less-CqM85x-9.js.gz +0 -0
  422. package/dist/web/assets/lib-DBeVwCnC.js.br +0 -0
  423. package/dist/web/assets/lib-DBeVwCnC.js.gz +0 -0
  424. package/dist/web/assets/libesm-CPh1Av0r.js.br +0 -0
  425. package/dist/web/assets/libesm-CPh1Av0r.js.gz +0 -0
  426. package/dist/web/assets/light-plus-DBtKwhFA.js.br +0 -0
  427. package/dist/web/assets/light-plus-DBtKwhFA.js.gz +0 -0
  428. package/dist/web/assets/liquid-C24dKoyI.js.br +0 -0
  429. package/dist/web/assets/liquid-C24dKoyI.js.gz +0 -0
  430. package/dist/web/assets/llvm-Dpbq3gky.js.br +0 -0
  431. package/dist/web/assets/llvm-Dpbq3gky.js.gz +0 -0
  432. package/dist/web/assets/log-qKMcPm9S.js.br +0 -0
  433. package/dist/web/assets/log-qKMcPm9S.js.gz +0 -0
  434. package/dist/web/assets/logo-DFo7i5KH.js.br +0 -0
  435. package/dist/web/assets/logo-DFo7i5KH.js.gz +0 -0
  436. package/dist/web/assets/lua-DNOsnyhn.js.br +0 -0
  437. package/dist/web/assets/lua-DNOsnyhn.js.gz +0 -0
  438. package/dist/web/assets/luau-DGlqWFyL.js.br +0 -0
  439. package/dist/web/assets/luau-DGlqWFyL.js.gz +0 -0
  440. package/dist/web/assets/make-CixdvUQe.js.br +0 -0
  441. package/dist/web/assets/make-CixdvUQe.js.gz +0 -0
  442. package/dist/web/assets/markdown-CmRnbngE.js.br +0 -0
  443. package/dist/web/assets/markdown-CmRnbngE.js.gz +0 -0
  444. package/dist/web/assets/{markdown-renderer-CLUux0vA.js → markdown-renderer-BzkIv5_4.js} +1 -1
  445. package/dist/web/assets/markdown-renderer-CjEg_HGP.js +3 -0
  446. package/dist/web/assets/markdown-renderer-CjEg_HGP.js.br +0 -0
  447. package/dist/web/assets/markdown-renderer-CjEg_HGP.js.gz +0 -0
  448. package/dist/web/assets/marko-26MHO_Q9.js.br +0 -0
  449. package/dist/web/assets/marko-26MHO_Q9.js.gz +0 -0
  450. package/dist/web/assets/material-theme-WDUbafB-.js.br +0 -0
  451. package/dist/web/assets/material-theme-WDUbafB-.js.gz +0 -0
  452. package/dist/web/assets/material-theme-darker-u8y2xpOk.js.br +0 -0
  453. package/dist/web/assets/material-theme-darker-u8y2xpOk.js.gz +0 -0
  454. package/dist/web/assets/material-theme-lighter-cyQZK3Tg.js.br +0 -0
  455. package/dist/web/assets/material-theme-lighter-cyQZK3Tg.js.gz +0 -0
  456. package/dist/web/assets/material-theme-ocean-LBAVvw7k.js.br +0 -0
  457. package/dist/web/assets/material-theme-ocean-LBAVvw7k.js.gz +0 -0
  458. package/dist/web/assets/material-theme-palenight-BJqhBxL0.js.br +0 -0
  459. package/dist/web/assets/material-theme-palenight-BJqhBxL0.js.gz +0 -0
  460. package/dist/web/assets/matlab-B38sOJee.js.br +0 -0
  461. package/dist/web/assets/matlab-B38sOJee.js.gz +0 -0
  462. package/dist/web/assets/mdc-Dhw9mGrC.js.br +0 -0
  463. package/dist/web/assets/mdc-Dhw9mGrC.js.gz +0 -0
  464. package/dist/web/assets/mdx-C8QrE_IW.js.br +0 -0
  465. package/dist/web/assets/mdx-C8QrE_IW.js.gz +0 -0
  466. package/dist/web/assets/mermaid-BQ-eeU8A.js.br +0 -0
  467. package/dist/web/assets/mermaid-BQ-eeU8A.js.gz +0 -0
  468. package/dist/web/assets/min-dark-D4gNa5tv.js.br +0 -0
  469. package/dist/web/assets/min-dark-D4gNa5tv.js.gz +0 -0
  470. package/dist/web/assets/min-light-Dfbhn_PL.js.br +0 -0
  471. package/dist/web/assets/min-light-Dfbhn_PL.js.gz +0 -0
  472. package/dist/web/assets/mipsasm-bLOhJkdm.js.br +0 -0
  473. package/dist/web/assets/mipsasm-bLOhJkdm.js.gz +0 -0
  474. package/dist/web/assets/mobile-bottom-sheet-C3TniEP-.js.br +0 -0
  475. package/dist/web/assets/mobile-bottom-sheet-C3TniEP-.js.gz +0 -0
  476. package/dist/web/assets/{mobile-explorer-sheet-BHQDzpwK.js → mobile-explorer-sheet-DjeEB2i8.js} +1 -1
  477. package/dist/web/assets/mobile-explorer-sheet-DjeEB2i8.js.br +0 -0
  478. package/dist/web/assets/mobile-explorer-sheet-DjeEB2i8.js.gz +0 -0
  479. package/dist/web/assets/mojo-B0BCOMQW.js.br +0 -0
  480. package/dist/web/assets/mojo-B0BCOMQW.js.gz +0 -0
  481. package/dist/web/assets/monaco/vs/_commonjsHelpers-CT9FvmAN.js +1 -0
  482. package/dist/web/assets/monaco/vs/abap-D-t0cyap.js +1 -0
  483. package/dist/web/assets/monaco/vs/abap-D-t0cyap.js.br +0 -0
  484. package/dist/web/assets/monaco/vs/abap-D-t0cyap.js.gz +0 -0
  485. package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js +1 -0
  486. package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js.br +0 -0
  487. package/dist/web/assets/monaco/vs/apex-CcIm7xu6.js.gz +0 -0
  488. package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js +93 -0
  489. package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js.br +0 -0
  490. package/dist/web/assets/monaco/vs/assets/css.worker-HnVq6Ewq.js.gz +0 -0
  491. package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js +26 -0
  492. package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js.br +0 -0
  493. package/dist/web/assets/monaco/vs/assets/editor.worker-Be8ye1pW.js.gz +0 -0
  494. package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js +470 -0
  495. package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js.br +0 -0
  496. package/dist/web/assets/monaco/vs/assets/html.worker-B51mlPHg.js.gz +0 -0
  497. package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js +58 -0
  498. package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js.br +0 -0
  499. package/dist/web/assets/monaco/vs/assets/json.worker-DKiEKt88.js.gz +0 -0
  500. package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js +67731 -0
  501. package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js.br +0 -0
  502. package/dist/web/assets/monaco/vs/assets/ts.worker-CMbG-7ft.js.gz +0 -0
  503. package/dist/web/assets/monaco/vs/azcli-BA0tQDCg.js +1 -0
  504. package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js +1 -0
  505. package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js.br +0 -0
  506. package/dist/web/assets/monaco/vs/basic-languages/monaco.contribution.js.gz +0 -0
  507. package/dist/web/assets/monaco/vs/bat-C397hTD6.js +1 -0
  508. package/dist/web/assets/monaco/vs/bat-C397hTD6.js.br +0 -0
  509. package/dist/web/assets/monaco/vs/bat-C397hTD6.js.gz +0 -0
  510. package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js +2 -0
  511. package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js.br +0 -0
  512. package/dist/web/assets/monaco/vs/bicep-DF5aW17k.js.gz +0 -0
  513. package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js +1 -0
  514. package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js.br +0 -0
  515. package/dist/web/assets/monaco/vs/cameligo-plsz8qhj.js.gz +0 -0
  516. package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js +1 -0
  517. package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js.br +0 -0
  518. package/dist/web/assets/monaco/vs/clojure-Y2auQMzK.js.gz +0 -0
  519. package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js +1 -0
  520. package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js.br +0 -0
  521. package/dist/web/assets/monaco/vs/coffee-Bu45yuWE.js.gz +0 -0
  522. package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js +1 -0
  523. package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js.br +0 -0
  524. package/dist/web/assets/monaco/vs/cpp-CkKPQIni.js.gz +0 -0
  525. package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js +1 -0
  526. package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js.br +0 -0
  527. package/dist/web/assets/monaco/vs/csharp-CX28MZyh.js.gz +0 -0
  528. package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js +1 -0
  529. package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js.br +0 -0
  530. package/dist/web/assets/monaco/vs/csp-D8uWnyxW.js.gz +0 -0
  531. package/dist/web/assets/monaco/vs/css-CaeNmE3S.js +3 -0
  532. package/dist/web/assets/monaco/vs/css-CaeNmE3S.js.br +0 -0
  533. package/dist/web/assets/monaco/vs/css-CaeNmE3S.js.gz +0 -0
  534. package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js +1 -0
  535. package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js.br +0 -0
  536. package/dist/web/assets/monaco/vs/cssMode-CjiAH6dQ.js.gz +0 -0
  537. package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js +1 -0
  538. package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js.br +0 -0
  539. package/dist/web/assets/monaco/vs/cypher-DVThT8BS.js.gz +0 -0
  540. package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js +1 -0
  541. package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js.br +0 -0
  542. package/dist/web/assets/monaco/vs/dart-CmGfCvrO.js.gz +0 -0
  543. package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js +1 -0
  544. package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js.br +0 -0
  545. package/dist/web/assets/monaco/vs/dockerfile-CZqqYdch.js.gz +0 -0
  546. package/dist/web/assets/monaco/vs/ecl-30fUercY.js +1 -0
  547. package/dist/web/assets/monaco/vs/ecl-30fUercY.js.br +0 -0
  548. package/dist/web/assets/monaco/vs/ecl-30fUercY.js.gz +0 -0
  549. package/dist/web/assets/monaco/vs/editor/editor.main.css +1 -0
  550. package/dist/web/assets/monaco/vs/editor/editor.main.css.br +0 -0
  551. package/dist/web/assets/monaco/vs/editor/editor.main.css.gz +0 -0
  552. package/dist/web/assets/monaco/vs/editor/editor.main.js +5 -0
  553. package/dist/web/assets/monaco/vs/editor/editor.main.js.br +0 -0
  554. package/dist/web/assets/monaco/vs/editor/editor.main.js.gz +0 -0
  555. package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js +903 -0
  556. package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js.br +0 -0
  557. package/dist/web/assets/monaco/vs/editor.api-CalNCsUg.js.gz +0 -0
  558. package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js +1 -0
  559. package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js.br +0 -0
  560. package/dist/web/assets/monaco/vs/elixir-xjPaIfzF.js.gz +0 -0
  561. package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js +1 -0
  562. package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js.br +0 -0
  563. package/dist/web/assets/monaco/vs/flow9-DqtmStfK.js.gz +0 -0
  564. package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js +3 -0
  565. package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js.br +0 -0
  566. package/dist/web/assets/monaco/vs/freemarker2-Cz_sV6Md.js.gz +0 -0
  567. package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js +1 -0
  568. package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js.br +0 -0
  569. package/dist/web/assets/monaco/vs/fsharp-BOMdg4U1.js.gz +0 -0
  570. package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js +1 -0
  571. package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js.br +0 -0
  572. package/dist/web/assets/monaco/vs/go-D_hbi-Jt.js.gz +0 -0
  573. package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js +1 -0
  574. package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js.br +0 -0
  575. package/dist/web/assets/monaco/vs/graphql-CKUU4kLG.js.gz +0 -0
  576. package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js +1 -0
  577. package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js.br +0 -0
  578. package/dist/web/assets/monaco/vs/handlebars-OwglfO-1.js.gz +0 -0
  579. package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js +1 -0
  580. package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js.br +0 -0
  581. package/dist/web/assets/monaco/vs/hcl-DTaboeZW.js.gz +0 -0
  582. package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js +1 -0
  583. package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js.br +0 -0
  584. package/dist/web/assets/monaco/vs/html-Pa1xEWsY.js.gz +0 -0
  585. package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js +1 -0
  586. package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js.br +0 -0
  587. package/dist/web/assets/monaco/vs/htmlMode-Bz67EXwp.js.gz +0 -0
  588. package/dist/web/assets/monaco/vs/ini-CsNwO04R.js +1 -0
  589. package/dist/web/assets/monaco/vs/ini-CsNwO04R.js.br +0 -0
  590. package/dist/web/assets/monaco/vs/ini-CsNwO04R.js.gz +0 -0
  591. package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js +1 -0
  592. package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js.br +0 -0
  593. package/dist/web/assets/monaco/vs/java-CI4ZMsH9.js.gz +0 -0
  594. package/dist/web/assets/monaco/vs/javascript-PczUCGdz.js +1 -0
  595. package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js +7 -0
  596. package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js.br +0 -0
  597. package/dist/web/assets/monaco/vs/jsonMode-DULH5oaX.js.gz +0 -0
  598. package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js +1 -0
  599. package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js.br +0 -0
  600. package/dist/web/assets/monaco/vs/julia-BwzEvaQw.js.gz +0 -0
  601. package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js +1 -0
  602. package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js.br +0 -0
  603. package/dist/web/assets/monaco/vs/kotlin-IUYPiTV8.js.gz +0 -0
  604. package/dist/web/assets/monaco/vs/language/css/monaco.contribution.js +1 -0
  605. package/dist/web/assets/monaco/vs/language/html/monaco.contribution.js +1 -0
  606. package/dist/web/assets/monaco/vs/language/json/monaco.contribution.js +1 -0
  607. package/dist/web/assets/monaco/vs/language/typescript/monaco.contribution.js +1 -0
  608. package/dist/web/assets/monaco/vs/less-C0eDYdqa.js +2 -0
  609. package/dist/web/assets/monaco/vs/less-C0eDYdqa.js.br +0 -0
  610. package/dist/web/assets/monaco/vs/less-C0eDYdqa.js.gz +0 -0
  611. package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js +1 -0
  612. package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js.br +0 -0
  613. package/dist/web/assets/monaco/vs/lexon-iON-Kj97.js.gz +0 -0
  614. package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js +1 -0
  615. package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js.br +0 -0
  616. package/dist/web/assets/monaco/vs/liquid-DqKjdPGy.js.gz +0 -0
  617. package/dist/web/assets/monaco/vs/loader.js +1368 -0
  618. package/dist/web/assets/monaco/vs/loader.js.br +0 -0
  619. package/dist/web/assets/monaco/vs/loader.js.gz +0 -0
  620. package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js +4 -0
  621. package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js.br +0 -0
  622. package/dist/web/assets/monaco/vs/lspLanguageFeatures-kM9O9rjY.js.gz +0 -0
  623. package/dist/web/assets/monaco/vs/lua-DtygF91M.js +1 -0
  624. package/dist/web/assets/monaco/vs/lua-DtygF91M.js.br +0 -0
  625. package/dist/web/assets/monaco/vs/lua-DtygF91M.js.gz +0 -0
  626. package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js +1 -0
  627. package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js.br +0 -0
  628. package/dist/web/assets/monaco/vs/m3-CsR4AuFi.js.gz +0 -0
  629. package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js +1 -0
  630. package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js.br +0 -0
  631. package/dist/web/assets/monaco/vs/markdown-C_rD0bIw.js.gz +0 -0
  632. package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js +1 -0
  633. package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js.br +0 -0
  634. package/dist/web/assets/monaco/vs/mdx-DEWtB1K5.js.gz +0 -0
  635. package/dist/web/assets/monaco/vs/mips-CiYP61RB.js +1 -0
  636. package/dist/web/assets/monaco/vs/mips-CiYP61RB.js.br +0 -0
  637. package/dist/web/assets/monaco/vs/mips-CiYP61RB.js.gz +0 -0
  638. package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js +1 -0
  639. package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js.br +0 -0
  640. package/dist/web/assets/monaco/vs/monaco.contribution-D2OdxNBt.js.gz +0 -0
  641. package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js +1 -0
  642. package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js.br +0 -0
  643. package/dist/web/assets/monaco/vs/monaco.contribution-DO3azKX8.js.gz +0 -0
  644. package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js +1 -0
  645. package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js.br +0 -0
  646. package/dist/web/assets/monaco/vs/monaco.contribution-EcChJV6a.js.gz +0 -0
  647. package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js +1 -0
  648. package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js.br +0 -0
  649. package/dist/web/assets/monaco/vs/monaco.contribution-qLAYrEOP.js.gz +0 -0
  650. package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js +1 -0
  651. package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js.br +0 -0
  652. package/dist/web/assets/monaco/vs/msdax-C38-sJlp.js.gz +0 -0
  653. package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js +1 -0
  654. package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js.br +0 -0
  655. package/dist/web/assets/monaco/vs/mysql-CdtbpvbG.js.gz +0 -0
  656. package/dist/web/assets/monaco/vs/nls.messages-loader.js +1 -0
  657. package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js +1 -0
  658. package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js.br +0 -0
  659. package/dist/web/assets/monaco/vs/objective-c-CntZFaHX.js.gz +0 -0
  660. package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js +1 -0
  661. package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js.br +0 -0
  662. package/dist/web/assets/monaco/vs/pascal-r6kuqfl_.js.gz +0 -0
  663. package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
  664. package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js.br +0 -0
  665. package/dist/web/assets/monaco/vs/pascaligo-BiXoTmXh.js.gz +0 -0
  666. package/dist/web/assets/monaco/vs/perl-DABw_TcH.js +1 -0
  667. package/dist/web/assets/monaco/vs/perl-DABw_TcH.js.br +0 -0
  668. package/dist/web/assets/monaco/vs/perl-DABw_TcH.js.gz +0 -0
  669. package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js +1 -0
  670. package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js.br +0 -0
  671. package/dist/web/assets/monaco/vs/pgsql-me_jFXeX.js.gz +0 -0
  672. package/dist/web/assets/monaco/vs/php-D_kh-9LK.js +1 -0
  673. package/dist/web/assets/monaco/vs/php-D_kh-9LK.js.br +0 -0
  674. package/dist/web/assets/monaco/vs/php-D_kh-9LK.js.gz +0 -0
  675. package/dist/web/assets/monaco/vs/pla-VfZjczW0.js +1 -0
  676. package/dist/web/assets/monaco/vs/pla-VfZjczW0.js.br +0 -0
  677. package/dist/web/assets/monaco/vs/pla-VfZjczW0.js.gz +0 -0
  678. package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js +1 -0
  679. package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js.br +0 -0
  680. package/dist/web/assets/monaco/vs/postiats-BBSzz8Pk.js.gz +0 -0
  681. package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
  682. package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js.br +0 -0
  683. package/dist/web/assets/monaco/vs/powerquery-Dt-g_2cc.js.gz +0 -0
  684. package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js +1 -0
  685. package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js.br +0 -0
  686. package/dist/web/assets/monaco/vs/powershell-B-7ap1zc.js.gz +0 -0
  687. package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js +2 -0
  688. package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js.br +0 -0
  689. package/dist/web/assets/monaco/vs/protobuf-BmtuEB1A.js.gz +0 -0
  690. package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js +1 -0
  691. package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js.br +0 -0
  692. package/dist/web/assets/monaco/vs/pug-BRpRNeEb.js.gz +0 -0
  693. package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js +1 -0
  694. package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js.br +0 -0
  695. package/dist/web/assets/monaco/vs/python-Cr0UkIbn.js.gz +0 -0
  696. package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js +1 -0
  697. package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js.br +0 -0
  698. package/dist/web/assets/monaco/vs/qsharp-BzsFaUU9.js.gz +0 -0
  699. package/dist/web/assets/monaco/vs/r-f8dDdrp4.js +1 -0
  700. package/dist/web/assets/monaco/vs/r-f8dDdrp4.js.br +0 -0
  701. package/dist/web/assets/monaco/vs/r-f8dDdrp4.js.gz +0 -0
  702. package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js +1 -0
  703. package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js.br +0 -0
  704. package/dist/web/assets/monaco/vs/razor-BYAHOTkz.js.gz +0 -0
  705. package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js +1 -0
  706. package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js.br +0 -0
  707. package/dist/web/assets/monaco/vs/redis-fvZQY4PI.js.gz +0 -0
  708. package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js +1 -0
  709. package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js.br +0 -0
  710. package/dist/web/assets/monaco/vs/redshift-45Et0LQi.js.gz +0 -0
  711. package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
  712. package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js.br +0 -0
  713. package/dist/web/assets/monaco/vs/restructuredtext-C7UUFKFD.js.gz +0 -0
  714. package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js +1 -0
  715. package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js.br +0 -0
  716. package/dist/web/assets/monaco/vs/ruby-CZO8zYTz.js.gz +0 -0
  717. package/dist/web/assets/monaco/vs/rust-Bfetafyc.js +1 -0
  718. package/dist/web/assets/monaco/vs/rust-Bfetafyc.js.br +0 -0
  719. package/dist/web/assets/monaco/vs/rust-Bfetafyc.js.gz +0 -0
  720. package/dist/web/assets/monaco/vs/sb-3GYllVck.js +1 -0
  721. package/dist/web/assets/monaco/vs/sb-3GYllVck.js.br +0 -0
  722. package/dist/web/assets/monaco/vs/sb-3GYllVck.js.gz +0 -0
  723. package/dist/web/assets/monaco/vs/scala-foMgrKo1.js +1 -0
  724. package/dist/web/assets/monaco/vs/scala-foMgrKo1.js.br +0 -0
  725. package/dist/web/assets/monaco/vs/scala-foMgrKo1.js.gz +0 -0
  726. package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js +1 -0
  727. package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js.br +0 -0
  728. package/dist/web/assets/monaco/vs/scheme-CHdMtr7p.js.gz +0 -0
  729. package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js +3 -0
  730. package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js.br +0 -0
  731. package/dist/web/assets/monaco/vs/scss-C1cmLt9V.js.gz +0 -0
  732. package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js +1 -0
  733. package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js.br +0 -0
  734. package/dist/web/assets/monaco/vs/shell-ClXCKCEW.js.gz +0 -0
  735. package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js +1 -0
  736. package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js.br +0 -0
  737. package/dist/web/assets/monaco/vs/solidity-MZ6ExpPy.js.gz +0 -0
  738. package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js +1 -0
  739. package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js.br +0 -0
  740. package/dist/web/assets/monaco/vs/sophia-DWkuSsPQ.js.gz +0 -0
  741. package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js +1 -0
  742. package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js.br +0 -0
  743. package/dist/web/assets/monaco/vs/sparql-AUGFYSyk.js.gz +0 -0
  744. package/dist/web/assets/monaco/vs/sql-32GpJSV2.js +1 -0
  745. package/dist/web/assets/monaco/vs/sql-32GpJSV2.js.br +0 -0
  746. package/dist/web/assets/monaco/vs/sql-32GpJSV2.js.gz +0 -0
  747. package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js +1 -0
  748. package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js.br +0 -0
  749. package/dist/web/assets/monaco/vs/st-CuDFIVZ_.js.gz +0 -0
  750. package/dist/web/assets/monaco/vs/swift-n-2HociN.js +3 -0
  751. package/dist/web/assets/monaco/vs/swift-n-2HociN.js.br +0 -0
  752. package/dist/web/assets/monaco/vs/swift-n-2HociN.js.gz +0 -0
  753. package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
  754. package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js.br +0 -0
  755. package/dist/web/assets/monaco/vs/systemverilog-Ch4vA8Yt.js.gz +0 -0
  756. package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js +1 -0
  757. package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js.br +0 -0
  758. package/dist/web/assets/monaco/vs/tcl-D74tq1nH.js.gz +0 -0
  759. package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js +11 -0
  760. package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js.br +0 -0
  761. package/dist/web/assets/monaco/vs/tsMode-CZz1Umrk.js.gz +0 -0
  762. package/dist/web/assets/monaco/vs/twig-C6taOxMV.js +1 -0
  763. package/dist/web/assets/monaco/vs/twig-C6taOxMV.js.br +0 -0
  764. package/dist/web/assets/monaco/vs/twig-C6taOxMV.js.gz +0 -0
  765. package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js +1 -0
  766. package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js.br +0 -0
  767. package/dist/web/assets/monaco/vs/typescript-DfOrAzoV.js.gz +0 -0
  768. package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js +1 -0
  769. package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js.br +0 -0
  770. package/dist/web/assets/monaco/vs/typespec-D-PIh9Xw.js.gz +0 -0
  771. package/dist/web/assets/monaco/vs/vb-Dyb2648j.js +1 -0
  772. package/dist/web/assets/monaco/vs/vb-Dyb2648j.js.br +0 -0
  773. package/dist/web/assets/monaco/vs/vb-Dyb2648j.js.gz +0 -0
  774. package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js +298 -0
  775. package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js.br +0 -0
  776. package/dist/web/assets/monaco/vs/wgsl-BhLXMOR0.js.gz +0 -0
  777. package/dist/web/assets/monaco/vs/workers-DcJshg-q.js +1 -0
  778. package/dist/web/assets/monaco/vs/workers-DcJshg-q.js.br +0 -0
  779. package/dist/web/assets/monaco/vs/workers-DcJshg-q.js.gz +0 -0
  780. package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js +1 -0
  781. package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js.br +0 -0
  782. package/dist/web/assets/monaco/vs/xml-CdsdnY8S.js.gz +0 -0
  783. package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js +1 -0
  784. package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js.br +0 -0
  785. package/dist/web/assets/monaco/vs/yaml-DYGvmE88.js.gz +0 -0
  786. package/dist/web/assets/monokai-Bdw_07OM.js.br +0 -0
  787. package/dist/web/assets/monokai-Bdw_07OM.js.gz +0 -0
  788. package/dist/web/assets/moonbit-BFdGaeuk.js.br +0 -0
  789. package/dist/web/assets/moonbit-BFdGaeuk.js.gz +0 -0
  790. package/dist/web/assets/move-CyXQFGPM.js.br +0 -0
  791. package/dist/web/assets/move-CyXQFGPM.js.gz +0 -0
  792. package/dist/web/assets/narrat-9DvTD3_3.js.br +0 -0
  793. package/dist/web/assets/narrat-9DvTD3_3.js.gz +0 -0
  794. package/dist/web/assets/nextflow-groovy-C4VY3kNY.js.br +0 -0
  795. package/dist/web/assets/nextflow-groovy-C4VY3kNY.js.gz +0 -0
  796. package/dist/web/assets/nextflow-xH4oJTex.js.br +0 -0
  797. package/dist/web/assets/nextflow-xH4oJTex.js.gz +0 -0
  798. package/dist/web/assets/nginx-CMz4w0M8.js.br +0 -0
  799. package/dist/web/assets/nginx-CMz4w0M8.js.gz +0 -0
  800. package/dist/web/assets/night-owl-feYm66V0.js.br +0 -0
  801. package/dist/web/assets/night-owl-feYm66V0.js.gz +0 -0
  802. package/dist/web/assets/night-owl-light-DALqFjvx.js.br +0 -0
  803. package/dist/web/assets/night-owl-light-DALqFjvx.js.gz +0 -0
  804. package/dist/web/assets/nim-D8FnIYsx.js.br +0 -0
  805. package/dist/web/assets/nim-D8FnIYsx.js.gz +0 -0
  806. package/dist/web/assets/nix-C1kPA9Sw.js.br +0 -0
  807. package/dist/web/assets/nix-C1kPA9Sw.js.gz +0 -0
  808. package/dist/web/assets/nord-1dvrj1Al.js.br +0 -0
  809. package/dist/web/assets/nord-1dvrj1Al.js.gz +0 -0
  810. package/dist/web/assets/notification-store-D8VycLI7.js +1 -0
  811. package/dist/web/assets/{notifications-settings-section-DqlPDfNX.js → notifications-settings-section-4gjKK-DH.js} +1 -1
  812. package/dist/web/assets/notifications-settings-section-4gjKK-DH.js.br +5 -0
  813. package/dist/web/assets/notifications-settings-section-4gjKK-DH.js.gz +0 -0
  814. package/dist/web/assets/number-overlay-editor-CRGwULhR.js.br +0 -0
  815. package/dist/web/assets/number-overlay-editor-CRGwULhR.js.gz +0 -0
  816. package/dist/web/assets/nushell-DSQ_9Uqj.js.br +0 -0
  817. package/dist/web/assets/nushell-DSQ_9Uqj.js.gz +0 -0
  818. package/dist/web/assets/objective-c-Dhcn5ZK8.js.br +0 -0
  819. package/dist/web/assets/objective-c-Dhcn5ZK8.js.gz +0 -0
  820. package/dist/web/assets/objective-cpp-CGVYCSrp.js.br +0 -0
  821. package/dist/web/assets/objective-cpp-CGVYCSrp.js.gz +0 -0
  822. package/dist/web/assets/ocaml-rxXW21An.js.br +0 -0
  823. package/dist/web/assets/ocaml-rxXW21An.js.gz +0 -0
  824. package/dist/web/assets/odin-ClSJX2DE.js.br +0 -0
  825. package/dist/web/assets/odin-ClSJX2DE.js.gz +0 -0
  826. package/dist/web/assets/onboarding-entry-kqfwlUXT.js +1 -0
  827. package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js +1 -0
  828. package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js.br +0 -0
  829. package/dist/web/assets/onboarding-quick-orientation-Dqmis-E5.js.gz +0 -0
  830. package/dist/web/assets/one-dark-pro-3gbWDfFW.js.br +0 -0
  831. package/dist/web/assets/one-dark-pro-3gbWDfFW.js.gz +0 -0
  832. package/dist/web/assets/one-light-C2q5ZZAw.js.br +0 -0
  833. package/dist/web/assets/one-light-C2q5ZZAw.js.gz +0 -0
  834. package/dist/web/assets/openscad-eHXeafBl.js.br +0 -0
  835. package/dist/web/assets/openscad-eHXeafBl.js.gz +0 -0
  836. package/dist/web/assets/{overview-panel-Di-3aV9p.js → overview-panel-CF7BuqLZ.js} +1 -1
  837. package/dist/web/assets/overview-panel-CF7BuqLZ.js.br +0 -0
  838. package/dist/web/assets/overview-panel-CF7BuqLZ.js.gz +0 -0
  839. package/dist/web/assets/panel-store-D20Zuf3i.js.br +0 -0
  840. package/dist/web/assets/panel-store-D20Zuf3i.js.gz +0 -0
  841. package/dist/web/assets/pascal-kKha3Txs.js.br +0 -0
  842. package/dist/web/assets/pascal-kKha3Txs.js.gz +0 -0
  843. package/dist/web/assets/pdf-preview-OvVOptPh.js.br +0 -0
  844. package/dist/web/assets/pdf-preview-OvVOptPh.js.gz +0 -0
  845. package/dist/web/assets/perl-D9iNWYwb.js.br +0 -0
  846. package/dist/web/assets/perl-D9iNWYwb.js.gz +0 -0
  847. package/dist/web/assets/php-Bw3Qo0Zv.js.br +0 -0
  848. package/dist/web/assets/php-Bw3Qo0Zv.js.gz +0 -0
  849. package/dist/web/assets/pkl-CTiPytg-.js.br +0 -0
  850. package/dist/web/assets/pkl-CTiPytg-.js.gz +0 -0
  851. package/dist/web/assets/plastic-D1Ygezi4.js.br +0 -0
  852. package/dist/web/assets/plastic-D1Ygezi4.js.gz +0 -0
  853. package/dist/web/assets/plsql-D_gbgZIr.js.br +0 -0
  854. package/dist/web/assets/plsql-D_gbgZIr.js.gz +0 -0
  855. package/dist/web/assets/po-BkhbDUnq.js.br +0 -0
  856. package/dist/web/assets/po-BkhbDUnq.js.gz +0 -0
  857. package/dist/web/assets/poimandres-Do6NywrA.js.br +0 -0
  858. package/dist/web/assets/poimandres-Do6NywrA.js.gz +0 -0
  859. package/dist/web/assets/polar-B3B23wca.js.br +0 -0
  860. package/dist/web/assets/polar-B3B23wca.js.gz +0 -0
  861. package/dist/web/assets/postcss-Dv_YBvWd.js.br +0 -0
  862. package/dist/web/assets/postcss-Dv_YBvWd.js.gz +0 -0
  863. package/dist/web/assets/{postgres-viewer-DPRsmgP5.js → postgres-viewer-DBwUXRLA.js} +1 -1
  864. package/dist/web/assets/postgres-viewer-DBwUXRLA.js.br +0 -0
  865. package/dist/web/assets/postgres-viewer-DBwUXRLA.js.gz +0 -0
  866. package/dist/web/assets/powerquery-fKJWI-Sh.js.br +0 -0
  867. package/dist/web/assets/powerquery-fKJWI-Sh.js.gz +0 -0
  868. package/dist/web/assets/powershell-B4Y7KIgx.js.br +0 -0
  869. package/dist/web/assets/powershell-B4Y7KIgx.js.gz +0 -0
  870. package/dist/web/assets/{ppmbot-settings-section-B5N1jHgm.js → ppmbot-settings-section-ByROaaIk.js} +1 -1
  871. package/dist/web/assets/ppmbot-settings-section-ByROaaIk.js.br +0 -0
  872. package/dist/web/assets/ppmbot-settings-section-ByROaaIk.js.gz +0 -0
  873. package/dist/web/assets/prisma-J--XdTXX.js.br +0 -0
  874. package/dist/web/assets/prisma-J--XdTXX.js.gz +0 -0
  875. package/dist/web/assets/problems-panel-D-iHH0j8.js +1 -0
  876. package/dist/web/assets/problems-panel-D-iHH0j8.js.br +0 -0
  877. package/dist/web/assets/problems-panel-D-iHH0j8.js.gz +0 -0
  878. package/dist/web/assets/{process-table-DahflyQn.js → process-table-CSgGG2La.js} +1 -1
  879. package/dist/web/assets/process-table-CSgGG2La.js.br +0 -0
  880. package/dist/web/assets/process-table-CSgGG2La.js.gz +0 -0
  881. package/dist/web/assets/project-store-hNvwfqX3.js.br +0 -0
  882. package/dist/web/assets/project-store-hNvwfqX3.js.gz +0 -0
  883. package/dist/web/assets/prolog-BBTg4Vb3.js.br +0 -0
  884. package/dist/web/assets/prolog-BBTg4Vb3.js.gz +0 -0
  885. package/dist/web/assets/proto-DWlum3T8.js.br +0 -0
  886. package/dist/web/assets/proto-DWlum3T8.js.gz +0 -0
  887. package/dist/web/assets/{proxy-settings-section-CLg_nlxn.js → proxy-settings-section-Cz98fxZn.js} +1 -1
  888. package/dist/web/assets/proxy-settings-section-Cz98fxZn.js.br +0 -0
  889. package/dist/web/assets/proxy-settings-section-Cz98fxZn.js.gz +0 -0
  890. package/dist/web/assets/pug-fT5JC6Vm.js.br +0 -0
  891. package/dist/web/assets/pug-fT5JC6Vm.js.gz +0 -0
  892. package/dist/web/assets/puppet-ZiUfc9JV.js.br +0 -0
  893. package/dist/web/assets/puppet-ZiUfc9JV.js.gz +0 -0
  894. package/dist/web/assets/purescript-CmT8SCHB.js.br +0 -0
  895. package/dist/web/assets/purescript-CmT8SCHB.js.gz +0 -0
  896. package/dist/web/assets/python-BURpj-fq.js.br +0 -0
  897. package/dist/web/assets/python-BURpj-fq.js.gz +0 -0
  898. package/dist/web/assets/qml-P_wEDB1w.js.br +0 -0
  899. package/dist/web/assets/qml-P_wEDB1w.js.gz +0 -0
  900. package/dist/web/assets/qss-C-zdz0i5.js.br +0 -0
  901. package/dist/web/assets/qss-C-zdz0i5.js.gz +0 -0
  902. package/dist/web/assets/query-audit-section-OsYip7HO.js.br +0 -0
  903. package/dist/web/assets/query-audit-section-OsYip7HO.js.gz +0 -0
  904. package/dist/web/assets/r-K56BeS-s.js.br +0 -0
  905. package/dist/web/assets/r-K56BeS-s.js.gz +0 -0
  906. package/dist/web/assets/racket-gkn6Z_Jw.js.br +0 -0
  907. package/dist/web/assets/racket-gkn6Z_Jw.js.gz +0 -0
  908. package/dist/web/assets/raku-C0ZBuKlx.js.br +0 -0
  909. package/dist/web/assets/raku-C0ZBuKlx.js.gz +0 -0
  910. package/dist/web/assets/razor-Drrt2_Ph.js.br +0 -0
  911. package/dist/web/assets/razor-Drrt2_Ph.js.gz +0 -0
  912. package/dist/web/assets/red-BWZ6x-3p.js.br +0 -0
  913. package/dist/web/assets/red-BWZ6x-3p.js.gz +0 -0
  914. package/dist/web/assets/reg-Dt_EsyGR.js.br +0 -0
  915. package/dist/web/assets/reg-Dt_EsyGR.js.gz +0 -0
  916. package/dist/web/assets/regexp-CT6BLG2C.js.br +0 -0
  917. package/dist/web/assets/regexp-CT6BLG2C.js.gz +0 -0
  918. package/dist/web/assets/rel-MJ2LcyzJ.js.br +0 -0
  919. package/dist/web/assets/rel-MJ2LcyzJ.js.gz +0 -0
  920. package/dist/web/assets/{remote-desktop-clipboard-notice-Fi6cieGM.js → remote-desktop-clipboard-notice-fjTRSMfw.js} +1 -1
  921. package/dist/web/assets/remote-desktop-clipboard-notice-fjTRSMfw.js.br +0 -0
  922. package/dist/web/assets/remote-desktop-clipboard-notice-fjTRSMfw.js.gz +0 -0
  923. package/dist/web/assets/{remote-desktop-mobile-sheet-lLZ-oK73.js → remote-desktop-mobile-sheet-BGzXIOnN.js} +2 -2
  924. package/dist/web/assets/remote-desktop-mobile-sheet-BGzXIOnN.js.br +0 -0
  925. package/dist/web/assets/remote-desktop-mobile-sheet-BGzXIOnN.js.gz +0 -0
  926. package/dist/web/assets/{remote-desktop-mobile-view-j3v-4rYa.js → remote-desktop-mobile-view-DC-_I2st.js} +1 -1
  927. package/dist/web/assets/remote-desktop-mobile-view-DC-_I2st.js.br +0 -0
  928. package/dist/web/assets/remote-desktop-mobile-view-DC-_I2st.js.gz +0 -0
  929. package/dist/web/assets/{remote-desktop-readiness-gate-CeLvcX_w.js → remote-desktop-readiness-gate-BBFhTM_C.js} +1 -1
  930. package/dist/web/assets/remote-desktop-readiness-gate-BBFhTM_C.js.br +0 -0
  931. package/dist/web/assets/remote-desktop-readiness-gate-BBFhTM_C.js.gz +0 -0
  932. package/dist/web/assets/remote-desktop-window-content-S1LNG0iM.js +1 -0
  933. package/dist/web/assets/remote-desktop-window-content-S1LNG0iM.js.br +0 -0
  934. package/dist/web/assets/remote-desktop-window-content-S1LNG0iM.js.gz +0 -0
  935. package/dist/web/assets/resolve-theme-B_ukrg_8.js.br +0 -0
  936. package/dist/web/assets/resolve-theme-B_ukrg_8.js.gz +0 -0
  937. package/dist/web/assets/riscv-BZYWzMAA.js.br +0 -0
  938. package/dist/web/assets/riscv-BZYWzMAA.js.gz +0 -0
  939. package/dist/web/assets/ron-CLbwHWMn.js.br +0 -0
  940. package/dist/web/assets/ron-CLbwHWMn.js.gz +0 -0
  941. package/dist/web/assets/rose-pine-BPiI_daR.js.br +0 -0
  942. package/dist/web/assets/rose-pine-BPiI_daR.js.gz +0 -0
  943. package/dist/web/assets/rose-pine-dawn-BjkJc7dW.js.br +0 -0
  944. package/dist/web/assets/rose-pine-dawn-BjkJc7dW.js.gz +0 -0
  945. package/dist/web/assets/rose-pine-moon-BQSxkt7g.js.br +0 -0
  946. package/dist/web/assets/rose-pine-moon-BQSxkt7g.js.gz +0 -0
  947. package/dist/web/assets/rosmsg-yt4151pJ.js.br +0 -0
  948. package/dist/web/assets/rosmsg-yt4151pJ.js.gz +0 -0
  949. package/dist/web/assets/rst-Dr2mW4-h.js.br +0 -0
  950. package/dist/web/assets/rst-Dr2mW4-h.js.gz +0 -0
  951. package/dist/web/assets/ruby-C6EpUsTY.js.br +0 -0
  952. package/dist/web/assets/ruby-C6EpUsTY.js.gz +0 -0
  953. package/dist/web/assets/rust-1dAcengL.js.br +0 -0
  954. package/dist/web/assets/rust-1dAcengL.js.gz +0 -0
  955. package/dist/web/assets/sas-D8ZEeP6v.js.br +0 -0
  956. package/dist/web/assets/sas-D8ZEeP6v.js.gz +0 -0
  957. package/dist/web/assets/sass-DUgtQJsg.js.br +0 -0
  958. package/dist/web/assets/sass-DUgtQJsg.js.gz +0 -0
  959. package/dist/web/assets/scala-CxoGYpS0.js.br +0 -0
  960. package/dist/web/assets/scala-CxoGYpS0.js.gz +0 -0
  961. package/dist/web/assets/{schedules-settings-section-C8OS0o80.js → schedules-settings-section-BERxYmYn.js} +1 -1
  962. package/dist/web/assets/schedules-settings-section-BERxYmYn.js.br +0 -0
  963. package/dist/web/assets/schedules-settings-section-BERxYmYn.js.gz +0 -0
  964. package/dist/web/assets/scheme-B2K3u9e3.js.br +0 -0
  965. package/dist/web/assets/scheme-B2K3u9e3.js.gz +0 -0
  966. package/dist/web/assets/scroll-area-BzeiOd-B.js.br +0 -0
  967. package/dist/web/assets/scroll-area-BzeiOd-B.js.gz +0 -0
  968. package/dist/web/assets/scss-ITL7jQ1f.js.br +0 -0
  969. package/dist/web/assets/scss-ITL7jQ1f.js.gz +0 -0
  970. package/dist/web/assets/sdbl-C0Ygk0n6.js.br +0 -0
  971. package/dist/web/assets/sdbl-C0Ygk0n6.js.gz +0 -0
  972. package/dist/web/assets/send-to-chat-DuRTOS7_.js.br +0 -0
  973. package/dist/web/assets/send-to-chat-DuRTOS7_.js.gz +0 -0
  974. package/dist/web/assets/settings-body-C31PdcMj.js +2 -0
  975. package/dist/web/assets/settings-body-C31PdcMj.js.br +0 -0
  976. package/dist/web/assets/settings-body-C31PdcMj.js.gz +0 -0
  977. package/dist/web/assets/{settings-store-CsVSVgLp.js → settings-store-DhU2tx3Y.js} +2 -2
  978. package/dist/web/assets/settings-store-DhU2tx3Y.js.br +0 -0
  979. package/dist/web/assets/settings-store-DhU2tx3Y.js.gz +0 -0
  980. package/dist/web/assets/{settings-tab-ChOs94iB.js → settings-tab-D6QZSBqI.js} +1 -1
  981. package/dist/web/assets/{settings-window-content-BnKMmg2a.js → settings-window-content-DLLcDkV0.js} +1 -1
  982. package/dist/web/assets/shaderlab-mW-IIlhk.js.br +0 -0
  983. package/dist/web/assets/shaderlab-mW-IIlhk.js.gz +0 -0
  984. package/dist/web/assets/shellscript-C2CvhqMk.js.br +0 -0
  985. package/dist/web/assets/shellscript-C2CvhqMk.js.gz +0 -0
  986. package/dist/web/assets/slack-dark-DYdgzRGj.js.br +0 -0
  987. package/dist/web/assets/slack-dark-DYdgzRGj.js.gz +0 -0
  988. package/dist/web/assets/slack-ochin-X-WD0WCg.js.br +0 -0
  989. package/dist/web/assets/slack-ochin-X-WD0WCg.js.gz +0 -0
  990. package/dist/web/assets/smalltalk-Dp7g_zb9.js.br +0 -0
  991. package/dist/web/assets/smalltalk-Dp7g_zb9.js.gz +0 -0
  992. package/dist/web/assets/snazzy-light-DWHWr-a6.js.br +0 -0
  993. package/dist/web/assets/snazzy-light-DWHWr-a6.js.gz +0 -0
  994. package/dist/web/assets/solarized-dark-CxdLsjvb.js.br +0 -0
  995. package/dist/web/assets/solarized-dark-CxdLsjvb.js.gz +0 -0
  996. package/dist/web/assets/solarized-light-Cz9rAvG5.js.br +0 -0
  997. package/dist/web/assets/solarized-light-Cz9rAvG5.js.gz +0 -0
  998. package/dist/web/assets/solidity-D33gHHdn.js.br +0 -0
  999. package/dist/web/assets/solidity-D33gHHdn.js.gz +0 -0
  1000. package/dist/web/assets/soy-SdY0Qjtr.js.br +0 -0
  1001. package/dist/web/assets/soy-SdY0Qjtr.js.gz +0 -0
  1002. package/dist/web/assets/sparql-ftqZo2i-.js.br +0 -0
  1003. package/dist/web/assets/sparql-ftqZo2i-.js.gz +0 -0
  1004. package/dist/web/assets/splunk-BFbOroYw.js.br +0 -0
  1005. package/dist/web/assets/splunk-BFbOroYw.js.gz +0 -0
  1006. package/dist/web/assets/sql-ChpxvmdY.js.br +0 -0
  1007. package/dist/web/assets/sql-ChpxvmdY.js.gz +0 -0
  1008. package/dist/web/assets/{sql-query-editor-BJZIIQsm.js → sql-query-editor-BXaAQmLJ.js} +1 -1
  1009. package/dist/web/assets/sql-query-editor-BXaAQmLJ.js.br +0 -0
  1010. package/dist/web/assets/sql-query-editor-BXaAQmLJ.js.gz +0 -0
  1011. package/dist/web/assets/{sqlite-viewer--cMeCZum.js → sqlite-viewer-DWpzKvve.js} +1 -1
  1012. package/dist/web/assets/sqlite-viewer-DWpzKvve.js.br +0 -0
  1013. package/dist/web/assets/sqlite-viewer-DWpzKvve.js.gz +0 -0
  1014. package/dist/web/assets/ssh-config-CUuSQ6JG.js.br +0 -0
  1015. package/dist/web/assets/ssh-config-CUuSQ6JG.js.gz +0 -0
  1016. package/dist/web/assets/stata-Bj7Yjb4b.js.br +0 -0
  1017. package/dist/web/assets/stata-Bj7Yjb4b.js.gz +0 -0
  1018. package/dist/web/assets/stylus-DDihP0_W.js.br +0 -0
  1019. package/dist/web/assets/stylus-DDihP0_W.js.gz +0 -0
  1020. package/dist/web/assets/surrealql-CLhYGAfB.js.br +0 -0
  1021. package/dist/web/assets/surrealql-CLhYGAfB.js.gz +0 -0
  1022. package/dist/web/assets/svelte-DTAlRHhK.js.br +0 -0
  1023. package/dist/web/assets/svelte-DTAlRHhK.js.gz +0 -0
  1024. package/dist/web/assets/swift-XoalUn4x.js.br +0 -0
  1025. package/dist/web/assets/swift-XoalUn4x.js.gz +0 -0
  1026. package/dist/web/assets/synthwave-84-DjkG0Bff.js.br +0 -0
  1027. package/dist/web/assets/synthwave-84-DjkG0Bff.js.gz +0 -0
  1028. package/dist/web/assets/{system-monitor-body-CXiIrn0N.js → system-monitor-body-CKoLYd_G.js} +2 -2
  1029. package/dist/web/assets/system-monitor-body-CKoLYd_G.js.br +0 -0
  1030. package/dist/web/assets/system-monitor-body-CKoLYd_G.js.gz +0 -0
  1031. package/dist/web/assets/{system-monitor-tab-BJKrTSl0.js → system-monitor-tab-CerUeEbU.js} +1 -1
  1032. package/dist/web/assets/{system-monitor-window-content-Dy9fZJE3.js → system-monitor-window-content-CYFnoCgb.js} +1 -1
  1033. package/dist/web/assets/system-verilog-f_pLKMYd.js.br +0 -0
  1034. package/dist/web/assets/system-verilog-f_pLKMYd.js.gz +0 -0
  1035. package/dist/web/assets/systemd-DjDcLfxp.js.br +0 -0
  1036. package/dist/web/assets/systemd-DjDcLfxp.js.gz +0 -0
  1037. package/dist/web/assets/{tab-host-window-content-BezqrAwC.js → tab-host-window-content-CloVeb9a.js} +1 -1
  1038. package/dist/web/assets/tab-host-window-content-CloVeb9a.js.br +0 -0
  1039. package/dist/web/assets/tab-host-window-content-CloVeb9a.js.gz +0 -0
  1040. package/dist/web/assets/talonscript-BpUzYcDl.js.br +0 -0
  1041. package/dist/web/assets/talonscript-BpUzYcDl.js.gz +0 -0
  1042. package/dist/web/assets/tasl-DP-cUbg8.js.br +0 -0
  1043. package/dist/web/assets/tasl-DP-cUbg8.js.gz +0 -0
  1044. package/dist/web/assets/tcl-BHoy-dfE.js.br +0 -0
  1045. package/dist/web/assets/tcl-BHoy-dfE.js.gz +0 -0
  1046. package/dist/web/assets/{team-member-sheet-CVM2QC3H.js → team-member-sheet-BXmTXQCt.js} +2 -2
  1047. package/dist/web/assets/team-member-sheet-BXmTXQCt.js.br +0 -0
  1048. package/dist/web/assets/team-member-sheet-BXmTXQCt.js.gz +0 -0
  1049. package/dist/web/assets/{team-member-window-content-D4RYKplm.js → team-member-window-content-BST7Cs5l.js} +1 -1
  1050. package/dist/web/assets/team-member-window-content-BST7Cs5l.js.br +0 -0
  1051. package/dist/web/assets/team-member-window-content-BST7Cs5l.js.gz +0 -0
  1052. package/dist/web/assets/templ-BMfhACxb.js.br +0 -0
  1053. package/dist/web/assets/templ-BMfhACxb.js.gz +0 -0
  1054. package/dist/web/assets/terminal-tab-BVZhZnTh.js +3 -0
  1055. package/dist/web/assets/terminal-tab-BVZhZnTh.js.br +0 -0
  1056. package/dist/web/assets/terminal-tab-BVZhZnTh.js.gz +0 -0
  1057. package/dist/web/assets/terraform-vCVxN25B.js.br +0 -0
  1058. package/dist/web/assets/terraform-vCVxN25B.js.gz +0 -0
  1059. package/dist/web/assets/tex-BcssM-QA.js.br +0 -0
  1060. package/dist/web/assets/tex-BcssM-QA.js.gz +0 -0
  1061. package/dist/web/assets/tokyo-night-D0u4xZba.js.br +0 -0
  1062. package/dist/web/assets/tokyo-night-D0u4xZba.js.gz +0 -0
  1063. package/dist/web/assets/toml-BS8D0__A.js.br +0 -0
  1064. package/dist/web/assets/toml-BS8D0__A.js.gz +0 -0
  1065. package/dist/web/assets/{tool-cards-D5jCQvqn.js → tool-cards-F7hDZH6M.js} +5 -5
  1066. package/dist/web/assets/tool-cards-F7hDZH6M.js.br +0 -0
  1067. package/dist/web/assets/tool-cards-F7hDZH6M.js.gz +0 -0
  1068. package/dist/web/assets/ts-tags-CrR5IYI8.js.br +0 -0
  1069. package/dist/web/assets/ts-tags-CrR5IYI8.js.gz +0 -0
  1070. package/dist/web/assets/tsx-DF8YeRgG.js.br +0 -0
  1071. package/dist/web/assets/tsx-DF8YeRgG.js.gz +0 -0
  1072. package/dist/web/assets/turtle-Bhx1GlIy.js.br +0 -0
  1073. package/dist/web/assets/turtle-Bhx1GlIy.js.gz +0 -0
  1074. package/dist/web/assets/twig-DchfUmyI.js.br +0 -0
  1075. package/dist/web/assets/twig-DchfUmyI.js.gz +0 -0
  1076. package/dist/web/assets/typescript-CAVD2Wb6.js.br +0 -0
  1077. package/dist/web/assets/typescript-CAVD2Wb6.js.gz +0 -0
  1078. package/dist/web/assets/typespec-D7mchdY_.js.br +0 -0
  1079. package/dist/web/assets/typespec-D7mchdY_.js.gz +0 -0
  1080. package/dist/web/assets/typst-CeXzq6Yw.js.br +0 -0
  1081. package/dist/web/assets/typst-CeXzq6Yw.js.gz +0 -0
  1082. package/dist/web/assets/{use-inline-blame-BF8Y1KfV.js → use-inline-blame-BmY9SN79.js} +3 -3
  1083. package/dist/web/assets/use-inline-blame-BmY9SN79.js.br +0 -0
  1084. package/dist/web/assets/use-inline-blame-BmY9SN79.js.gz +0 -0
  1085. package/dist/web/assets/{use-lsp-Bx4oVtlk.js → use-lsp-CEq09fZR.js} +1 -1
  1086. package/dist/web/assets/use-lsp-CEq09fZR.js.br +0 -0
  1087. package/dist/web/assets/use-lsp-CEq09fZR.js.gz +0 -0
  1088. package/dist/web/assets/{use-monaco-theme-DHczXLMb.js → use-monaco-theme-CBB5mAYT.js} +1 -1
  1089. package/dist/web/assets/{use-websocket-BWZkbleJ.js → use-websocket-BfuA8Guj.js} +1 -1
  1090. package/dist/web/assets/utils-Bmf_8h7Y.js.br +0 -0
  1091. package/dist/web/assets/utils-Bmf_8h7Y.js.gz +0 -0
  1092. package/dist/web/assets/v-DhzO54je.js.br +0 -0
  1093. package/dist/web/assets/v-DhzO54je.js.gz +0 -0
  1094. package/dist/web/assets/vala-Dw_RAk3E.js.br +0 -0
  1095. package/dist/web/assets/vala-Dw_RAk3E.js.gz +0 -0
  1096. package/dist/web/assets/vb-CiXdNh2Y.js.br +0 -0
  1097. package/dist/web/assets/vb-CiXdNh2Y.js.gz +0 -0
  1098. package/dist/web/assets/vendor-markdown-CuWCHIVb.js.br +0 -0
  1099. package/dist/web/assets/vendor-markdown-CuWCHIVb.js.gz +0 -0
  1100. package/dist/web/assets/vendor-mermaid-BitiXJlL.js.br +0 -0
  1101. package/dist/web/assets/vendor-mermaid-BitiXJlL.js.gz +0 -0
  1102. package/dist/web/assets/vendor-ui-DmZ-Mb-H.js.br +0 -0
  1103. package/dist/web/assets/vendor-ui-DmZ-Mb-H.js.gz +0 -0
  1104. package/dist/web/assets/vendor-xterm-DkTCHfhq.css.br +0 -0
  1105. package/dist/web/assets/vendor-xterm-DkTCHfhq.css.gz +0 -0
  1106. package/dist/web/assets/vendor-xterm-JV4hEJsv.js.br +0 -0
  1107. package/dist/web/assets/vendor-xterm-JV4hEJsv.js.gz +0 -0
  1108. package/dist/web/assets/verilog-fITdxqwV.js.br +0 -0
  1109. package/dist/web/assets/verilog-fITdxqwV.js.gz +0 -0
  1110. package/dist/web/assets/vesper-B1wm_At7.js.br +0 -0
  1111. package/dist/web/assets/vesper-B1wm_At7.js.gz +0 -0
  1112. package/dist/web/assets/vhdl-ebHjqKp9.js.br +0 -0
  1113. package/dist/web/assets/vhdl-ebHjqKp9.js.gz +0 -0
  1114. package/dist/web/assets/{video-preview-D191TvX9.js → video-preview-C9Aqfcru.js} +1 -1
  1115. package/dist/web/assets/video-preview-C9Aqfcru.js.br +0 -0
  1116. package/dist/web/assets/video-preview-C9Aqfcru.js.gz +0 -0
  1117. package/dist/web/assets/viml-Dgmnoxoo.js.br +0 -0
  1118. package/dist/web/assets/viml-Dgmnoxoo.js.gz +0 -0
  1119. package/dist/web/assets/vitesse-black-BZ5gMb7l.js.br +0 -0
  1120. package/dist/web/assets/vitesse-black-BZ5gMb7l.js.gz +0 -0
  1121. package/dist/web/assets/vitesse-dark-Lij7kkOt.js.br +0 -0
  1122. package/dist/web/assets/vitesse-dark-Lij7kkOt.js.gz +0 -0
  1123. package/dist/web/assets/vitesse-light-DW6Wq7VC.js.br +0 -0
  1124. package/dist/web/assets/vitesse-light-DW6Wq7VC.js.gz +0 -0
  1125. package/dist/web/assets/vue-1EL6Pw1h.js.br +0 -0
  1126. package/dist/web/assets/vue-1EL6Pw1h.js.gz +0 -0
  1127. package/dist/web/assets/vue-html-BPQNwPC6.js.br +0 -0
  1128. package/dist/web/assets/vue-html-BPQNwPC6.js.gz +0 -0
  1129. package/dist/web/assets/vue-vine-Bb_dsWLt.js.br +0 -0
  1130. package/dist/web/assets/vue-vine-Bb_dsWLt.js.gz +0 -0
  1131. package/dist/web/assets/vyper-6FxDnVNg.js.br +0 -0
  1132. package/dist/web/assets/vyper-6FxDnVNg.js.gz +0 -0
  1133. package/dist/web/assets/wasm-BDxaNPCj.js.br +0 -0
  1134. package/dist/web/assets/wasm-BDxaNPCj.js.gz +0 -0
  1135. package/dist/web/assets/wasm-DKhAtzfe.js.br +0 -0
  1136. package/dist/web/assets/wasm-DKhAtzfe.js.gz +0 -0
  1137. package/dist/web/assets/wenyan-C0k0DYG_.js.br +0 -0
  1138. package/dist/web/assets/wenyan-C0k0DYG_.js.gz +0 -0
  1139. package/dist/web/assets/wgsl-Y2zagbdn.js.br +0 -0
  1140. package/dist/web/assets/wgsl-Y2zagbdn.js.gz +0 -0
  1141. package/dist/web/assets/wikitext-C4QGWzkY.js.br +0 -0
  1142. package/dist/web/assets/wikitext-C4QGWzkY.js.gz +0 -0
  1143. package/dist/web/assets/window-store-UC1jJeLM.js.br +0 -0
  1144. package/dist/web/assets/window-store-UC1jJeLM.js.gz +0 -0
  1145. package/dist/web/assets/wit-CQESzjHy.js.br +0 -0
  1146. package/dist/web/assets/wit-CQESzjHy.js.gz +0 -0
  1147. package/dist/web/assets/wolfram-B-ia69Ia.js.br +0 -0
  1148. package/dist/web/assets/wolfram-B-ia69Ia.js.gz +0 -0
  1149. package/dist/web/assets/xml-dxkLNA0K.js.br +0 -0
  1150. package/dist/web/assets/xml-dxkLNA0K.js.gz +0 -0
  1151. package/dist/web/assets/xsl-Bw2adwrl.js.br +0 -0
  1152. package/dist/web/assets/xsl-Bw2adwrl.js.gz +0 -0
  1153. package/dist/web/assets/yaml-CEYYTQPm.js.br +0 -0
  1154. package/dist/web/assets/yaml-CEYYTQPm.js.gz +0 -0
  1155. package/dist/web/assets/zenscript-BggWXIeJ.js.br +0 -0
  1156. package/dist/web/assets/zenscript-BggWXIeJ.js.gz +0 -0
  1157. package/dist/web/assets/zig-CbaUfBQe.js.br +0 -0
  1158. package/dist/web/assets/zig-CbaUfBQe.js.gz +0 -0
  1159. package/dist/web/index.html +7 -7
  1160. package/dist/web/index.html.br +0 -0
  1161. package/dist/web/index.html.gz +0 -0
  1162. package/dist/web/sw.js +1 -1
  1163. package/dist/web/sw.js.br +0 -0
  1164. package/dist/web/sw.js.gz +0 -0
  1165. package/docs/architecture/ai-chat-and-providers.md +10 -0
  1166. package/docs/architecture/workspace-and-ui.md +63 -0
  1167. package/docs/project-roadmap.md +6 -0
  1168. package/package.json +1 -1
  1169. package/scripts/release.sh +6 -0
  1170. package/src/providers/codex-app-server/codex-event-mapper.ts +7 -3
  1171. package/src/providers/codex-app-server/codex-provider.ts +10 -0
  1172. package/src/server/index.ts +5 -0
  1173. package/src/server/routes/chat.ts +3 -7
  1174. package/src/server/routes/files.ts +11 -75
  1175. package/src/server/routes/html-preview.ts +116 -0
  1176. package/src/server/routes/settings.ts +8 -1
  1177. package/src/services/chat.service.ts +2 -4
  1178. package/src/services/project-content-search.service.ts +119 -0
  1179. package/src/types/chat.ts +18 -0
  1180. package/src/web/app.tsx +9 -1
  1181. package/src/web/components/chat/chat-history-bar.tsx +11 -6
  1182. package/src/web/components/chat/chat-tab.tsx +25 -1
  1183. package/src/web/components/chat/chat-welcome.tsx +2 -0
  1184. package/src/web/components/chat/message-events.tsx +6 -6
  1185. package/src/web/components/chat/message-input.tsx +23 -1
  1186. package/src/web/components/chat/model-thinking-selector.tsx +15 -4
  1187. package/src/web/components/chat/session-list-panel.tsx +2 -6
  1188. package/src/web/components/chat/session-picker.tsx +2 -6
  1189. package/src/web/components/editor/code-editor.tsx +65 -12
  1190. package/src/web/components/editor/html-preview-toolbar.tsx +80 -0
  1191. package/src/web/components/editor/html-preview.tsx +30 -0
  1192. package/src/web/components/explorer/search-panel.tsx +37 -6
  1193. package/src/web/components/git/git-status-panel.tsx +32 -4
  1194. package/src/web/components/layout/mobile-drawer.tsx +6 -4
  1195. package/src/web/components/layout/project-switcher.tsx +1 -0
  1196. package/src/web/components/layout/sidebar.tsx +1 -1
  1197. package/src/web/components/onboarding/onboarding-entry.tsx +15 -0
  1198. package/src/web/components/onboarding/onboarding-file-help.tsx +31 -0
  1199. package/src/web/components/onboarding/onboarding-guide.tsx +45 -0
  1200. package/src/web/components/onboarding/onboarding-hint.tsx +43 -0
  1201. package/src/web/components/onboarding/onboarding-quick-orientation.tsx +81 -0
  1202. package/src/web/components/onboarding/onboarding-root.tsx +137 -0
  1203. package/src/web/components/onboarding/onboarding-run-document-preview.tsx +23 -0
  1204. package/src/web/components/onboarding/onboarding-setup.tsx +50 -0
  1205. package/src/web/components/onboarding/onboarding-step-transition.tsx +27 -0
  1206. package/src/web/components/onboarding/use-onboarding-session-check.ts +32 -0
  1207. package/src/web/components/settings/general-settings-section.tsx +7 -0
  1208. package/src/web/components/terminal/terminal-tab.tsx +15 -1
  1209. package/src/web/hooks/use-chat.ts +14 -1
  1210. package/src/web/hooks/use-session-history.ts +2 -6
  1211. package/src/web/lib/chat-attempt-lifecycle.ts +46 -0
  1212. package/src/web/lib/onboarding/onboarding-copy.ts +57 -0
  1213. package/src/web/lib/onboarding/onboarding-state.ts +77 -0
  1214. package/src/web/lib/onboarding/onboarding-steps.ts +16 -0
  1215. package/src/web/lib/onboarding/onboarding-types.ts +39 -0
  1216. package/src/web/lib/onboarding/run-instructions.ts +22 -0
  1217. package/src/web/stores/onboarding-store.ts +74 -0
  1218. package/vite.config.ts +5 -1
  1219. package/dist/web/assets/accounts-settings-section-CLEAA_Jc.js +0 -1
  1220. package/dist/web/assets/chat-tab-BpdgqjSL.js +0 -15
  1221. package/dist/web/assets/code-editor-B7y7-5KE.js +0 -7
  1222. package/dist/web/assets/explorer-body-xg1-MhlW.js +0 -2
  1223. package/dist/web/assets/general-settings-section-CfNPHQUk.js +0 -1
  1224. package/dist/web/assets/group-chat-tab-D1lx0zz-.js +0 -1
  1225. package/dist/web/assets/index-BH99TIE0.css +0 -1
  1226. package/dist/web/assets/index-CN0G8uYY.js +0 -52
  1227. package/dist/web/assets/keybindings-store-L5vV8DEJ.js +0 -1
  1228. package/dist/web/assets/markdown-renderer-BX1Q00sC.js +0 -3
  1229. package/dist/web/assets/notification-store-BHgSy-ci.js +0 -1
  1230. package/dist/web/assets/problems-panel-D_wZ4_Qg.js +0 -1
  1231. package/dist/web/assets/remote-desktop-window-content-lwbkLsTC.js +0 -1
  1232. package/dist/web/assets/settings-body-DgN22Z0W.js +0 -2
  1233. package/dist/web/assets/streaming-store-BYukdB56.js +0 -1
  1234. package/dist/web/assets/terminal-tab-jikhQLct.js +0 -3
  1235. /package/dist/web/assets/{api-themes-CSUarkzD.js → api-themes-B3RwKXw-.js} +0 -0
  1236. /package/dist/web/assets/{csv-parser-_oDBUkwQ.js → csv-parser-DpCmuupp.js} +0 -0
  1237. /package/dist/web/assets/{docx-preview-Dxvy6h13.js → docx-preview-Gzi4QBez.js} +0 -0
  1238. /package/dist/web/assets/{edit-diff-preview-BGGGecVw.js → edit-diff-preview-CVv7EOFu.js} +0 -0
  1239. /package/dist/web/assets/{format-bytes-D1AQyUCt.js → format-bytes-CmnPxZjG.js} +0 -0
  1240. /package/dist/web/assets/{image-preview-DeGD0HJu.js → image-preview-xFLgpolc.js} +0 -0
  1241. /package/dist/web/assets/{lib-CD6pOS4u.js → lib-DBeVwCnC.js} +0 -0
  1242. /package/dist/web/assets/{media-url-DKK0YHxL.js → media-url-BmIBOO3z.js} +0 -0
  1243. /package/dist/web/assets/{pdf-preview-DAcfhfGm.js → pdf-preview-OvVOptPh.js} +0 -0
  1244. /package/dist/web/assets/{query-audit-section-BrfSo0s_.js → query-audit-section-OsYip7HO.js} +0 -0
  1245. /package/dist/web/assets/{run-in-terminal-D7W4IKb9.js → run-in-terminal-Bu3ph5pY.js} +0 -0
  1246. /package/dist/web/assets/{send-to-chat-DNKhmHbi.js → send-to-chat-DuRTOS7_.js} +0 -0
  1247. /package/dist/web/assets/{separator-TRMsJUYe.js → separator-tjXX_Sky.js} +0 -0
  1248. /package/dist/web/assets/{use-open-team-member-C3mrUzIC.js → use-open-team-member-CHpGPALV.js} +0 -0
  1249. /package/dist/web/assets/{vendor-xterm-BHEY6Ctu.js → vendor-xterm-JV4hEJsv.js} +0 -0
@@ -9,7 +9,7 @@
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com" />
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
11
11
  <link href="https://fonts.googleapis.com/css2?family=Geist+Mono:wght@400;500;600;700&family=Geist:wght@400;500;600;700&display=swap" rel="stylesheet" />
12
- <script type="module" crossorigin src="/assets/index-CN0G8uYY.js"></script>
12
+ <script type="module" crossorigin src="/assets/index-8M7JWSZx.js"></script>
13
13
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-FhOqtrmT.js">
14
14
  <link rel="modulepreload" crossorigin href="/assets/vendor-mermaid-BitiXJlL.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/vendor-markdown-CuWCHIVb.js">
@@ -19,31 +19,31 @@
19
19
  <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-DoiEKeJ_.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/api-client-Jn3njtNw.js">
21
21
  <link rel="modulepreload" crossorigin href="/assets/react-Bghu0NUO.js">
22
- <link rel="modulepreload" crossorigin href="/assets/settings-store-CsVSVgLp.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/settings-store-DhU2tx3Y.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/file-store-Ds3qJ4hC.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/window-store-UC1jJeLM.js">
25
25
  <link rel="modulepreload" crossorigin href="/assets/panel-store-D20Zuf3i.js">
26
26
  <link rel="modulepreload" crossorigin href="/assets/window-pip-registry-D1oXq-Dq.js">
27
- <link rel="modulepreload" crossorigin href="/assets/format-file-meta-PPi3ptkm.js">
28
27
  <link rel="modulepreload" crossorigin href="/assets/portal-container-context-BarKmT4S.js">
29
28
  <link rel="modulepreload" crossorigin href="/assets/icons-DQjqk0lJ.js">
30
- <link rel="modulepreload" crossorigin href="/assets/context-menu-C6pIsf83.js">
31
29
  <link rel="modulepreload" crossorigin href="/assets/dialog-B84_DJQ8.js">
30
+ <link rel="modulepreload" crossorigin href="/assets/use-is-mobile-TkcwP1Gx.js">
31
+ <link rel="modulepreload" crossorigin href="/assets/onboarding-quick-orientation-Dqmis-E5.js">
32
+ <link rel="modulepreload" crossorigin href="/assets/format-file-meta-PPi3ptkm.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/context-menu-C6pIsf83.js">
32
34
  <link rel="modulepreload" crossorigin href="/assets/input-C7Q8FxeL.js">
33
35
  <link rel="modulepreload" crossorigin href="/assets/use-visual-viewport-Lp878uzs.js">
34
36
  <link rel="modulepreload" crossorigin href="/assets/mobile-bottom-sheet-C3TniEP-.js">
35
37
  <link rel="modulepreload" crossorigin href="/assets/scroll-area-BzeiOd-B.js">
36
- <link rel="modulepreload" crossorigin href="/assets/use-is-mobile-TkcwP1Gx.js">
37
38
  <link rel="modulepreload" crossorigin href="/assets/project-framework-store-ViZgce6y.js">
38
39
  <link rel="modulepreload" crossorigin href="/assets/file-icons-wS-OmEVu.js">
39
40
  <link rel="modulepreload" crossorigin href="/assets/git-repo-store-BCEPfUGT.js">
40
41
  <link rel="modulepreload" crossorigin href="/assets/project-store-hNvwfqX3.js">
41
42
  <link rel="modulepreload" crossorigin href="/assets/ws-auth-BG-cdrQ8.js">
42
- <link rel="modulepreload" crossorigin href="/assets/streaming-store-BYukdB56.js">
43
43
  <link rel="modulepreload" crossorigin href="/assets/tab-store-krAuHQ6_.js">
44
44
  <link rel="modulepreload" crossorigin href="/assets/apply-theme-CbR31K6I.js">
45
45
  <link rel="modulepreload" crossorigin href="/assets/resolve-theme-B_ukrg_8.js">
46
- <link rel="stylesheet" crossorigin href="/assets/index-BH99TIE0.css">
46
+ <link rel="stylesheet" crossorigin href="/assets/index-CWL5emyr.css">
47
47
  <link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
48
48
  <body class="text-text font-sans antialiased" style="background: var(--bg)">
49
49
  <!-- FOUC guard: apply the persisted theme mode before first paint.
Binary file
Binary file
package/dist/web/sw.js CHANGED
@@ -1 +1 @@
1
- try{self[`workbox:core:7.3.0`]&&_()}catch{}var e=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},t=class extends Error{constructor(t,n){let r=e(t,n);super(r),this.name=t,this.details=n}},n={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},r=e=>[n.prefix,e,n.suffix].filter(e=>e&&e.length>0).join(`-`),i=e=>{for(let t of Object.keys(n))e(t)},a={updateDetails:e=>{i(t=>{typeof e[t]==`string`&&(n[t]=e[t])})},getGoogleAnalyticsName:e=>e||r(n.googleAnalytics),getPrecacheName:e=>e||r(n.precache),getPrefix:()=>n.prefix,getRuntimeName:e=>e||r(n.runtime),getSuffix:()=>n.suffix};function o(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.3.0`]&&_()}catch{}var s=`__WB_REVISION__`;function c(e){if(!e)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:n,url:r}=e;if(!r)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(!n){let e=new URL(r,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(r,location.href),a=new URL(r,location.href);return i.searchParams.set(s,n),{cacheKey:i.href,url:a.href}}var l=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},u=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},d;function f(){if(d===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),d=!0}catch{d=!1}d=!1}return d}async function p(e,n){let r=null;if(e.url&&(r=new URL(e.url).origin),r!==self.location.origin)throw new t(`cross-origin-copy-response`,{origin:r});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=n?n(a):a,s=f()?i.body:await i.blob();return new Response(s,o)}var m=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``);function h(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function g(e,t,n,r){let i=h(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===h(t.url,n))return e.match(t,r)}var v=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}},y=new Set;async function b(){for(let e of y)await e()}function x(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.3.0`]&&_()}catch{}function S(e){return typeof e==`string`?new Request(e):e}var C=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:n}=this,r=S(e);if(r.mode===`navigate`&&n instanceof FetchEvent&&n.preloadResponse){let e=await n.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?r.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))r=await e({request:r.clone(),event:n})}catch(e){if(e instanceof Error)throw new t(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=r.clone();try{let e;e=await fetch(r,r.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let t of this.iterateCallbacks(`fetchDidSucceed`))e=await t({event:n,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:n,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=S(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,n){let r=S(e);await x(0);let i=await this.getCacheKey(r,`write`);if(!n)throw new t(`cache-put-with-no-response`,{url:m(i.url)});let a=await this._ensureResponseSafeToCache(n);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await g(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await b(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=S(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},w=class{constructor(e={}){this.cacheName=a.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new C(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,n,r){await e.runCallbacks(`handlerWillStart`,{event:r,request:n});let i;try{if(i=await this._handle(n,e),!i||i.type===`error`)throw new t(`no-response`,{url:n.url})}catch(t){if(t instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:t,event:r,request:n}),i)break}if(!i)throw t}for(let t of e.iterateCallbacks(`handlerWillRespond`))i=await t({event:r,request:n,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},T=class e extends w{constructor(t={}){t.cacheName=a.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,n){let r,i=n.params||{};if(this._fallbackToNetwork){let t=i.integrity,a=e.integrity,o=!a||a===t;r=await n.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||t})),t&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await n.cachePut(e,r.clone()))}else throw new t(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return r}async _handleInstall(e,n){this._useDefaultCacheabilityPluginIfNeeded();let r=await n.fetch(e);if(!await n.cachePut(e,r.clone()))throw new t(`bad-precaching-response`,{url:e.url,status:r.status});return r}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};T.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},T.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await p(e):e}};var E=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new T({cacheName:a.getPrecacheName(e),plugins:[...t,new u({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let n=[];for(let r of e){typeof r==`string`?n.push(r):r&&r.revision===void 0&&n.push(r.url);let{cacheKey:e,url:i}=c(r),a=typeof r!=`string`&&r.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new t(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof r!=`string`&&r.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==r.integrity)throw new t(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,r.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),n.length>0){let e=`Workbox is precaching URLs without revision info: ${n.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return o(e,async()=>{let t=new l;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return o(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let n=this.getCacheKeyForURL(e);if(!n)throw new t(`non-precached-url`,{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:n},t.params),this.strategy.handle(t))}},D,O=()=>(D||=new E,D);try{self[`workbox:routing:7.3.0`]&&_()}catch{}var k=e=>e&&typeof e==`object`?e:{handle:e},A=class{constructor(e,t,n=`GET`){this.handler=k(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=k(e)}},j=class extends A{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&!(t.origin!==location.origin&&n.index!==0))return n.slice(1)},t,n)}},M=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,k(e))}setCatchHandler(e){this._catchHandler=k(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t(`unregister-route-but-not-found-with-method`,{method:e.method});let n=this._routes.get(e.method).indexOf(e);if(n>-1)this._routes.get(e.method).splice(n,1);else throw new t(`unregister-route-route-not-registered`)}},N,P=()=>(N||(N=new M,N.addFetchListener(),N.addCacheListener()),N);function F(e,n,r){let i;if(typeof e==`string`){let t=new URL(e,location.href);i=new A(({url:e})=>e.href===t.href,n,r)}else if(e instanceof RegExp)i=new j(e,n,r);else if(typeof e==`function`)i=new A(e,n,r);else if(e instanceof A)i=e;else throw new t(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return P().registerRoute(i),i}function I(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*L(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=I(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var R=class extends A{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of L(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function z(e){F(new R(O(),e))}var B=`-precache-`,V=async(e,t=B)=>{let n=(await self.caches.keys()).filter(n=>n.includes(t)&&n.includes(self.registration.scope)&&n!==e);return await Promise.all(n.map(e=>self.caches.delete(e))),n};function H(){self.addEventListener(`activate`,(e=>{let t=a.getPrecacheName();e.waitUntil(V(t).then(e=>{}))}))}function U(e){O().precache(e)}function W(e,t){U(e),z(t)}var G=class extends w{async _handle(e,n){let r=await n.cacheMatch(e),i;if(!r)try{r=await n.fetchAndCachePut(e)}catch(e){e instanceof Error&&(i=e)}if(!r)throw new t(`no-response`,{url:e.url,error:i});return r}};W([{"revision":"206312c0035b4551edbf7f8f5cf4d80f","url":"index.html"},{"revision":"26dccd02a2ef7522892015154f5e3680","url":"manifest.webmanifest"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":null,"url":"assets/index-CN0G8uYY.js"},{"revision":null,"url":"assets/index-BH99TIE0.css"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"26dccd02a2ef7522892015154f5e3680","url":"manifest.webmanifest"}]),H();var K=e=>(e.headers.get(`content-type`)??``).startsWith(`text/html`);F(({url:e})=>e.pathname.startsWith(`/assets/`),new G({cacheName:`ppm-assets`,plugins:[{cacheWillUpdate:async({response:e})=>K(e)?null:e,cachedResponseWillBeUsed:async({cachedResponse:e})=>e&&K(e)?null:e}]})),self.skipWaiting(),self.addEventListener(`activate`,()=>{self.clients.claim()});
1
+ try{self[`workbox:core:7.3.0`]&&_()}catch{}var e=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},t=class extends Error{constructor(t,n){let r=e(t,n);super(r),this.name=t,this.details=n}},n={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},r=e=>[n.prefix,e,n.suffix].filter(e=>e&&e.length>0).join(`-`),i=e=>{for(let t of Object.keys(n))e(t)},a={updateDetails:e=>{i(t=>{typeof e[t]==`string`&&(n[t]=e[t])})},getGoogleAnalyticsName:e=>e||r(n.googleAnalytics),getPrecacheName:e=>e||r(n.precache),getPrefix:()=>n.prefix,getRuntimeName:e=>e||r(n.runtime),getSuffix:()=>n.suffix};function o(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.3.0`]&&_()}catch{}var s=`__WB_REVISION__`;function c(e){if(!e)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:n,url:r}=e;if(!r)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(!n){let e=new URL(r,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(r,location.href),a=new URL(r,location.href);return i.searchParams.set(s,n),{cacheKey:i.href,url:a.href}}var l=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},u=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},d;function f(){if(d===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),d=!0}catch{d=!1}d=!1}return d}async function p(e,n){let r=null;if(e.url&&(r=new URL(e.url).origin),r!==self.location.origin)throw new t(`cross-origin-copy-response`,{origin:r});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=n?n(a):a,s=f()?i.body:await i.blob();return new Response(s,o)}var m=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``);function h(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function g(e,t,n,r){let i=h(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===h(t.url,n))return e.match(t,r)}var v=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}},y=new Set;async function b(){for(let e of y)await e()}function x(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.3.0`]&&_()}catch{}function S(e){return typeof e==`string`?new Request(e):e}var C=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:n}=this,r=S(e);if(r.mode===`navigate`&&n instanceof FetchEvent&&n.preloadResponse){let e=await n.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?r.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))r=await e({request:r.clone(),event:n})}catch(e){if(e instanceof Error)throw new t(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=r.clone();try{let e;e=await fetch(r,r.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let t of this.iterateCallbacks(`fetchDidSucceed`))e=await t({event:n,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:n,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=S(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,n){let r=S(e);await x(0);let i=await this.getCacheKey(r,`write`);if(!n)throw new t(`cache-put-with-no-response`,{url:m(i.url)});let a=await this._ensureResponseSafeToCache(n);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await g(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await b(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=S(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},w=class{constructor(e={}){this.cacheName=a.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new C(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,n,r){await e.runCallbacks(`handlerWillStart`,{event:r,request:n});let i;try{if(i=await this._handle(n,e),!i||i.type===`error`)throw new t(`no-response`,{url:n.url})}catch(t){if(t instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:t,event:r,request:n}),i)break}if(!i)throw t}for(let t of e.iterateCallbacks(`handlerWillRespond`))i=await t({event:r,request:n,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},T=class e extends w{constructor(t={}){t.cacheName=a.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,n){let r,i=n.params||{};if(this._fallbackToNetwork){let t=i.integrity,a=e.integrity,o=!a||a===t;r=await n.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||t})),t&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await n.cachePut(e,r.clone()))}else throw new t(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return r}async _handleInstall(e,n){this._useDefaultCacheabilityPluginIfNeeded();let r=await n.fetch(e);if(!await n.cachePut(e,r.clone()))throw new t(`bad-precaching-response`,{url:e.url,status:r.status});return r}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};T.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},T.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await p(e):e}};var E=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new T({cacheName:a.getPrecacheName(e),plugins:[...t,new u({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let n=[];for(let r of e){typeof r==`string`?n.push(r):r&&r.revision===void 0&&n.push(r.url);let{cacheKey:e,url:i}=c(r),a=typeof r!=`string`&&r.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new t(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof r!=`string`&&r.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==r.integrity)throw new t(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,r.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),n.length>0){let e=`Workbox is precaching URLs without revision info: ${n.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return o(e,async()=>{let t=new l;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return o(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let n=this.getCacheKeyForURL(e);if(!n)throw new t(`non-precached-url`,{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:n},t.params),this.strategy.handle(t))}},D,O=()=>(D||=new E,D);try{self[`workbox:routing:7.3.0`]&&_()}catch{}var k=e=>e&&typeof e==`object`?e:{handle:e},A=class{constructor(e,t,n=`GET`){this.handler=k(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=k(e)}},j=class extends A{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&!(t.origin!==location.origin&&n.index!==0))return n.slice(1)},t,n)}},M=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,k(e))}setCatchHandler(e){this._catchHandler=k(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t(`unregister-route-but-not-found-with-method`,{method:e.method});let n=this._routes.get(e.method).indexOf(e);if(n>-1)this._routes.get(e.method).splice(n,1);else throw new t(`unregister-route-route-not-registered`)}},N,P=()=>(N||(N=new M,N.addFetchListener(),N.addCacheListener()),N);function F(e,n,r){let i;if(typeof e==`string`){let t=new URL(e,location.href);i=new A(({url:e})=>e.href===t.href,n,r)}else if(e instanceof RegExp)i=new j(e,n,r);else if(typeof e==`function`)i=new A(e,n,r);else if(e instanceof A)i=e;else throw new t(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return P().registerRoute(i),i}function I(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*L(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=I(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var R=class extends A{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of L(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function z(e){F(new R(O(),e))}var B=`-precache-`,V=async(e,t=B)=>{let n=(await self.caches.keys()).filter(n=>n.includes(t)&&n.includes(self.registration.scope)&&n!==e);return await Promise.all(n.map(e=>self.caches.delete(e))),n};function H(){self.addEventListener(`activate`,(e=>{let t=a.getPrecacheName();e.waitUntil(V(t).then(e=>{}))}))}function U(e){O().precache(e)}function W(e,t){U(e),z(t)}var G=class extends w{async _handle(e,n){let r=await n.cacheMatch(e),i;if(!r)try{r=await n.fetchAndCachePut(e)}catch(e){e instanceof Error&&(i=e)}if(!r)throw new t(`no-response`,{url:e.url,error:i});return r}};W([{"revision":"804a5c60d7798b266ab577754b149c86","url":"index.html"},{"revision":"26dccd02a2ef7522892015154f5e3680","url":"manifest.webmanifest"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":null,"url":"assets/index-CWL5emyr.css"},{"revision":null,"url":"assets/index-8M7JWSZx.js"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-192.svg"},{"revision":"a0fb34fc84eb148d51812cd62669f20d","url":"icon-512.svg"},{"revision":"26dccd02a2ef7522892015154f5e3680","url":"manifest.webmanifest"}]),H();var K=e=>(e.headers.get(`content-type`)??``).startsWith(`text/html`);F(({url:e})=>e.pathname.startsWith(`/assets/`),new G({cacheName:`ppm-assets`,plugins:[{cacheWillUpdate:async({response:e})=>K(e)?null:e,cachedResponseWillBeUsed:async({cachedResponse:e})=>e&&K(e)?null:e}]})),self.skipWaiting(),self.addEventListener(`activate`,()=>{self.clients.claim()});
Binary file
Binary file
@@ -11,6 +11,16 @@ opens its first allowance on Monday. Slots are 24 hours from the weekly reset
11
11
  time and use UTC weekdays, consistently in the server and browser. This does not
12
12
  change Codex's reset schedule. Users can disable the guard per account.
13
13
 
14
+ ## Model discovery cache
15
+
16
+ The chat model picker shares successful model lists across chat tabs, keyed by
17
+ project and provider, in browser memory for five minutes. Expired lists remain
18
+ visible while a refresh runs; failed or empty refreshes retain the last usable
19
+ list. Reloading the page clears this browser cache. Codex discovery also keeps
20
+ a five-minute server memory cache, shares concurrent discovery requests, and
21
+ serves its previous list while refreshing. The first uncached request still
22
+ waits for Codex app-server initialization and model discovery.
23
+
14
24
  ## Codex context settings
15
25
 
16
26
  **AI Settings → Codex** exposes **Context window (tokens)** and **Auto-compact
@@ -2,6 +2,63 @@
2
2
 
3
3
  > Part of the [PPM system architecture](../system-architecture.md).
4
4
 
5
+ ## Adaptive guided tour
6
+
7
+ The optional welcome card and Settings → General → Learn PPM open a two-screen chooser:
8
+ experience (beginner/familiar/advanced), then goal (AI/explore/developer). Shared step IDs
9
+ and level-specific copy live in `src/web/lib/onboarding/`; `onboarding-store.ts` owns
10
+ versioned browser-local progress. Active guidance restores paused after reload. This is
11
+ per browser/origin, not an account profile; changing devices or tunnel origins does not
12
+ sync progress. Denied or corrupt storage falls back safely.
13
+
14
+ Quick orientation is available from the welcome/resume card, active guide, chat welcome
15
+ and General settings. Its optional Command Palette and navigation reference uses the
16
+ canonical sidebar icon/label registry, explains desktop/mobile entry points and utility
17
+ buttons, and opens the real palette on request. It never changes tour progress. While
18
+ the reference or palette is open, Escape closes that surface without pausing the tour;
19
+ the tour card is hidden behind the palette so it cannot cover its controls.
20
+
21
+ Step changes use the shared `OnboardingStepTransition`: a 200ms fade and 12px horizontal
22
+ slide, reversed for Back. It animates the existing DOM node without delaying state or
23
+ duplicating controls. Rapid navigation cancels the previous animation; reduced-motion
24
+ preferences skip animation and cancel any running transition when changed live.
25
+
26
+ `OnboardingRoot` mounts only inside the authenticated app. Nonmodal hints preserve real
27
+ workspace interactions; mobile navigation reuses the project sheet and drawer, including
28
+ the shared SearchPanel. Collapsed guidance moves above content controls to keep Send reachable.
29
+ Typed `ppm:onboarding-evidence` events report actual text-editor, search, terminal and Git
30
+ readiness. Chat uses an optional transport lifecycle observer and a client-local attempt ID;
31
+ partial output after cancellation/error/disconnection never counts as success. Canonical
32
+ session migration preserves identity. `ppm:onboarding-refresh` requests existing readiness
33
+ only, never replays a user send or search. History uses the chat toolbar's menu.
34
+
35
+ The tour never sends prompts, executes terminal commands, edits files or changes provider
36
+ permissions automatically. Suggestions fill only an empty hydrated focused composer after
37
+ a user click. Completed and skipped steps remain separate. The run-instructions step is
38
+ orientation, not proof that a program ran. Images and preview-only files offer a text-file
39
+ alternative or skip. Settings and chat welcome can resume a paused/dismissed tour.
40
+
41
+ The file-reading step accepts any successfully loaded text/source file and Markdown
42
+ Preview, regardless of filename. Empty visible project roots offer an explicit skip;
43
+ the tour never creates sample files. Root-list errors do not masquerade as emptiness,
44
+ and stale requests cannot replace the current guidance. On mobile, collapsed guidance
45
+ hides while the navigation drawer/project picker is open so the first file remains tappable.
46
+
47
+ Project content search resolves grep from PATH or Git for Windows without changing the
48
+ server environment. It runs asynchronously with timeout/output bounds, uses project-relative
49
+ NUL-delimited filenames, and distinguishes errors from successful zero-result searches.
50
+ The frontend surfaces the actual retryable error. The sandbox no longer injects grep into PATH.
51
+
52
+ The run-instructions action opens a readable root README directly, falling back to
53
+ package.json. A loaded visible README Markdown preview qualifies for this orientation
54
+ step without switching to Edit, and Markdown previews also qualify for general file reading.
55
+ Missing documents and list failures show a retry/browse/skip explanation. Only the
56
+ user's explicit acknowledgment completes the run-instructions step.
57
+
58
+ Verification uses `tests/e2e/onboarding-tour.mjs` and its isolated fixtures: fresh database,
59
+ scratch project, local ports, allowlisted test provider and real HTTP/WebSocket routes.
60
+ Playwright captures desktop/mobile screenshots and videos without live AI credentials.
61
+
5
62
  ## New Chat Provider
6
63
 
7
64
  Settings → AI offers `Always use default provider` and `Follow last focused chat`.
@@ -157,6 +214,12 @@ When switching projects, workspaces are preserved instead of destroyed:
157
214
 
158
215
  ---
159
216
 
217
+ ### HTML file preview
218
+
219
+ Saved `.html` and `.htm` files open with a single toolbar row: breadcrumb, Refresh preview, Code / Preview and an overflow menu. The single refresh button reloads the entry document, also restoring it after following an image or link inside the sandbox. Download, wrap, blame, language and language-server settings live in the menu; Code mode also offers Reload code from disk (disabled while unsaved). Controls support desktop, mobile and external files from OS Explorer. Preview renders the saved file; refreshing it does not replace the editor buffer. Once opened, the code editor stays mounted across mode changes to retain undo and cursor state. Existing tab pop-out/redock also hosts the preview.
220
+
221
+ `POST /api/html-preview` requires normal API authentication and returns a one-hour capability URL under `/api/html-preview/content/:token/`. The capability serves static assets from the HTML file's directory and descendants with byte-range support for video. Realpath containment, filesystem credential guards, hidden asset restrictions and a static extension allowlist apply to each request. No PPM login token is embedded in the document. Both the iframe and response CSP sandbox scripts without same-origin privileges; resource/fetch access is limited to that preview directory. External CDNs, parent-directory assets, forms, nested frames and browser storage are intentionally unsupported. Refresh renews an expired capability; at most 128 capabilities are retained per server.
222
+
160
223
  ## Terminal Flow
161
224
 
162
225
  ```
@@ -14,6 +14,12 @@ PPM is the **lightest path from phone to code** — a self-hosted, BYOK, multi-d
14
14
 
15
15
  ## Completed Milestones
16
16
 
17
+ ### Adaptive onboarding (0.22.3)
18
+
19
+ - Adaptive onboarding: choose experience and goal, follow contextual guidance, pause/resume,
20
+ skip or replay. Includes mobile project-content search. Verified in an isolated sandbox;
21
+ AI recordings use a deterministic test provider, not live accounts.
22
+
17
23
  ### v0.18 — Windows, floating windows, whole-machine tooling (Released)
18
24
  - **Tab pop-out → floating window → Document Picture-in-Picture** — any desktop tab detaches into an
19
25
  in-app floating window and from there into an always-on-top browser PiP window; both directions
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hienlh/ppm",
3
- "version": "0.22.2",
3
+ "version": "0.22.3",
4
4
  "description": "Personal Project Manager — mobile-first web IDE with AI assistance",
5
5
  "author": "hienlh",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -69,6 +69,12 @@ echo " ✓ on main · clean · in sync with origin · version $VERSION"
69
69
  echo "[1/6] Regenerating skill assets + building frontend..."
70
70
  bun run generate:skill || fail "generate:skill failed."
71
71
  bun run build:web || fail "build:web failed."
72
+ # `npm publish --ignore-scripts` below deliberately skips `prepublishOnly`, so
73
+ # the release path must run the two post-build steps itself. Monaco is loaded
74
+ # dynamically from `dist/web/assets/monaco/vs`; without this copy an editor
75
+ # receives its file contents but spins forever waiting for the AMD loader.
76
+ bun scripts/copy-monaco.ts || fail "copy-monaco failed."
77
+ bun scripts/precompress-web.ts || fail "precompress-web failed."
72
78
 
73
79
  # Skill assets are generated artifacts kept in git (mirrors the published pkg).
74
80
  # Commit + push them if regeneration changed anything, so the tag we cut below
@@ -197,12 +197,16 @@ export function mapCodexEvent(notif: Notif, sessionId: string): ChatEvent[] {
197
197
  return typeof p.delta === "string" ? [{ type: "text", content: p.delta }] : [];
198
198
 
199
199
  case "item/reasoning/textDelta":
200
- // `summary` is what turn/start requests for PPM's Thinking switch. Recent
201
- // app-server builds stream it under this method, while older builds used
202
- // textDelta directly. Both are safe, user-visible reasoning summaries.
200
+ // Preserve provider text verbatim; summaryTextDelta is the summary stream
201
+ // requested by turn/start, textDelta is the supported content stream.
203
202
  case "item/reasoning/summaryTextDelta":
204
203
  return typeof p.delta === "string" ? [{ type: "thinking", content: p.delta }] : [];
205
204
 
205
+ case "item/reasoning/summaryPartAdded":
206
+ // Separate sections, including the first section of a new reasoning item,
207
+ // without inserting whitespace between individual streaming chunks.
208
+ return [{ type: "thinking", content: "\n\n" }];
209
+
206
210
  case "item/started": {
207
211
  const item = asObj(p.item) as Item;
208
212
  if (item.type === "contextCompaction") return [{ type: "system", subtype: "compacting" }];
@@ -305,6 +305,7 @@ export class CodexAppServerProvider implements AIProvider {
305
305
  private unstartedSessions = new Set<string>();
306
306
  private live = new Map<string, LiveSession>();
307
307
  private modelsCache: { models: ModelOption[]; expiry: number } | null = null;
308
+ private modelsPending: Promise<ModelOption[]> | null = null;
308
309
  /** Keyed by `cwd\0codexHome` — skills differ per workspace AND per account. */
309
310
  private skillsCache = new Map<string, { skills: CodexSkill[]; expiry: number }>();
310
311
 
@@ -1075,6 +1076,15 @@ export class CodexAppServerProvider implements AIProvider {
1075
1076
 
1076
1077
  async listModels(): Promise<ModelOption[]> {
1077
1078
  if (this.modelsCache && Date.now() < this.modelsCache.expiry) return this.modelsCache.models;
1079
+ if (!this.modelsPending) {
1080
+ this.modelsPending = this.loadModels().finally(() => { this.modelsPending = null; });
1081
+ }
1082
+ // A refresh must not block the picker once a successful list is available.
1083
+ if (this.modelsCache) return this.modelsCache.models;
1084
+ return this.modelsPending;
1085
+ }
1086
+
1087
+ private async loadModels(): Promise<ModelOption[]> {
1078
1088
  const client = new CodexJsonRpcClient();
1079
1089
  try {
1080
1090
  // Without a CODEX_HOME the app-server falls back to the machine's own
@@ -20,6 +20,7 @@ import { fsBrowseRoutes } from "./routes/fs-browse.ts";
20
20
  import { fsOpsRoutes } from "./routes/fs-ops.ts";
21
21
  import { fsUploadRoutes } from "./routes/fs-upload.ts";
22
22
  import { fsSqliteRoutes } from "./routes/fs-sqlite.ts";
23
+ import { htmlPreviewRoutes } from "./routes/html-preview.ts";
23
24
  import { accountsRoutes } from "./routes/accounts.ts";
24
25
  import { proxyRoutes } from "./routes/proxy.ts";
25
26
  import { mcpRoutes } from "./routes/mcp.ts";
@@ -176,10 +177,14 @@ if (process.env.NODE_ENV !== "production") {
176
177
  // Proxy routes — before auth middleware (uses own auth key)
177
178
  app.route("/proxy", proxyRoutes);
178
179
 
180
+ // HTML assets authenticate with bounded preview capabilities, never the PPM session token.
181
+ app.route("/api/html-preview/content", htmlPreviewRoutes.content);
182
+
179
183
  // Auth check endpoint (behind auth middleware)
180
184
  app.use("/api/*", authMiddleware);
181
185
  app.use("/api/*", gzipJson);
182
186
  app.get("/api/auth/check", (c) => c.json(ok(true)));
187
+ app.route("/api/html-preview", htmlPreviewRoutes.api);
183
188
 
184
189
  // Port forwarding — starts per-port Cloudflare tunnels
185
190
  app.route("/api/preview", portForwardingRoutes);
@@ -31,7 +31,7 @@ import {
31
31
  getIndexStatus as chatSearchGetIndexStatus,
32
32
  getKnownSessionCount as chatSearchKnownCount,
33
33
  } from "../../services/chat-search.service.ts";
34
- import type { ChatSearchResult, ChatSearchResponse } from "../../types/chat.ts";
34
+ import { compareSessionsByActivity, type ChatSearchResult, type ChatSearchResponse } from "../../types/chat.ts";
35
35
  import { ok, err } from "../../types/api.ts";
36
36
 
37
37
  type Env = { Variables: { projectPath: string; projectName: string } };
@@ -227,12 +227,8 @@ chatRoutes.get("/sessions", async (c) => {
227
227
  // most recently active node). Pinned sessions are never collapsed.
228
228
  const collapsed = collapseTreesToHeads(enriched);
229
229
 
230
- // Sort: pinned first, then by createdAt desc
231
- collapsed.sort((a, b) => {
232
- if (a.pinned && !b.pinned) return -1;
233
- if (!a.pinned && b.pinned) return 1;
234
- return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();
235
- });
230
+ // Pinned first, then most recently active (not merely most recently created).
231
+ collapsed.sort(compareSessionsByActivity);
236
232
 
237
233
  // Server-side search + tag filter
238
234
  let filtered = collapsed;
@@ -1,3 +1,4 @@
1
+ import { searchProjectContent, ProjectSearchError } from "../../services/project-content-search.service";
1
2
  import { Hono } from "hono";
2
3
  import { resolve, isAbsolute } from "node:path";
3
4
  import { existsSync, mkdirSync } from "node:fs";
@@ -303,23 +304,6 @@ fileRoutes.post("/rename", async (c) => {
303
304
  }
304
305
  });
305
306
 
306
- /** Convert glob pattern (VSCode-style) to RegExp for path filtering.
307
- * - `*.ts` → matches any .ts file in any directory
308
- * - `src/**` → matches any file under src/
309
- * - `src/**\/*.ts` → matches .ts files under src/
310
- */
311
- function globToPathRegex(glob: string): RegExp {
312
- const escaped = glob
313
- .replace(/[.+^${}()|[\]\\]/g, "\\$&") // escape regex special chars
314
- .replace(/\*\*/g, "\x00") // temp placeholder for **
315
- .replace(/\*/g, "[^/]*") // * = within one segment
316
- .replace(/\x00/g, ".*") // ** = across segments
317
- .replace(/\?/g, "[^/]"); // ? = single non-slash char
318
- // No slash in pattern → match at any depth (like **/<pattern>)
319
- const re = glob.includes("/") ? `^${escaped}($|/)` : `(^|/)${escaped}($|/)`;
320
- return new RegExp(re);
321
- }
322
-
323
307
  /** GET /files/resolve?name=filename — resolve filename to project path(s) */
324
308
  fileRoutes.get("/resolve", (c) => {
325
309
  try {
@@ -335,67 +319,19 @@ fileRoutes.get("/resolve", (c) => {
335
319
  }
336
320
  });
337
321
 
338
- /** GET /files/search?q=...&caseSensitive=false — search file content with grep */
322
+ /** GET /files/search ? bounded, asynchronous project content search. */
339
323
  fileRoutes.get("/search", async (c) => {
340
- const projectPath = c.get("projectPath");
341
- const q = (c.req.query("q") ?? "").trim();
342
- const caseSensitive = c.req.query("caseSensitive") === "true";
343
- const wholeWord = c.req.query("wholeWord") === "true";
344
- const useRegex = c.req.query("regex") === "true";
345
- const include = (c.req.query("include") ?? "").trim();
346
-
347
- if (!useRegex && q.length < 2) return c.json(ok({ results: [], total: 0 }));
348
- if (useRegex && q.length < 1) return c.json(ok({ results: [], total: 0 }));
349
-
350
- // Build include path filter regexes (post-filter, supports paths + globs)
351
- const includeFilters = include
352
- ? include.split(",").map((s) => s.trim()).filter(Boolean).map(globToPathRegex)
353
- : [];
354
-
355
- // Build the grep pattern
356
- let pattern = useRegex ? q : q.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
357
- if (wholeWord) pattern = `\\b${pattern}\\b`;
358
-
359
324
  try {
360
- const EXCLUDE_DIRS = ["node_modules", ".git", "dist", ".next", "build", ".turbo", "coverage", "__pycache__"];
361
- const excludeDirArgs = EXCLUDE_DIRS.flatMap((d) => ["--exclude-dir", d]);
362
- const excludeArgs = ["--exclude=*.min.js", "--exclude=*.map", "--exclude=*.lock", "--exclude=bun.lock"];
363
- const flags = ["-rn", "--max-count=5", "-I", "-E", ...(caseSensitive ? [] : ["-i"])];
364
-
365
- const proc = Bun.spawnSync({
366
- cmd: ["grep", ...flags, ...excludeDirArgs, ...excludeArgs, "--", pattern, projectPath],
367
- stdout: "pipe",
368
- stderr: "pipe",
325
+ const result = await searchProjectContent(c.get("projectPath"), {
326
+ query: (c.req.query("q") ?? "").trim(),
327
+ caseSensitive: c.req.query("caseSensitive") === "true",
328
+ wholeWord: c.req.query("wholeWord") === "true",
329
+ regex: c.req.query("regex") === "true",
330
+ include: (c.req.query("include") ?? "").trim(),
369
331
  });
370
-
371
- const raw = proc.stdout.toString();
372
- if (!raw.trim()) return c.json(ok({ results: [], total: 0 }));
373
-
374
- // Parse grep output: /abs/path/file.ts:42:content
375
- const fileMap = new Map<string, { lineNum: number; content: string }[]>();
376
- for (const line of raw.split("\n")) {
377
- if (!line) continue;
378
- // Strip projectPath prefix, then split on first two colons
379
- const rel = line.startsWith(projectPath) ? line.slice(projectPath.length + 1) : line;
380
- const firstColon = rel.indexOf(":");
381
- if (firstColon < 0) continue;
382
- const secondColon = rel.indexOf(":", firstColon + 1);
383
- if (secondColon < 0) continue;
384
- const filePath = rel.slice(0, firstColon);
385
- const lineNum = parseInt(rel.slice(firstColon + 1, secondColon), 10);
386
- const content = rel.slice(secondColon + 1).trimEnd();
387
- if (!filePath || isNaN(lineNum)) continue;
388
- // Apply include path filter if specified
389
- if (includeFilters.length > 0 && !includeFilters.some((re) => re.test(filePath))) continue;
390
- if (!fileMap.has(filePath)) fileMap.set(filePath, []);
391
- fileMap.get(filePath)!.push({ lineNum, content });
392
- }
393
-
394
- const results = Array.from(fileMap.entries()).map(([file, matches]) => ({ file, matches }));
395
- const total = results.reduce((sum, r) => sum + r.matches.length, 0);
396
- return c.json(ok({ results, total }));
397
- } catch (e) {
398
- return c.json(err((e as Error).message), 500);
332
+ return c.json(ok(result));
333
+ } catch (error) {
334
+ return c.json(err((error as Error).message), error instanceof ProjectSearchError ? error.status : 500);
399
335
  }
400
336
  });
401
337
 
@@ -0,0 +1,116 @@
1
+ import { Hono } from "hono";
2
+ import { realpath, stat } from "node:fs/promises";
3
+ import { basename, dirname, extname, isAbsolute, relative, resolve, sep } from "node:path";
4
+ import { assertAllowed, assertNotPpmDir, resolvePath } from "../../services/fs-path-guard.service.ts";
5
+ import { ok, err } from "../../types/api.ts";
6
+ import { rangeFileResponse } from "../helpers/range-file-response.ts";
7
+ import { resolveProjectPath } from "../helpers/resolve-project.ts";
8
+
9
+ const PREFIX = "/api/html-preview/content";
10
+ const TTL = 60 * 60 * 1000;
11
+ const MAX_SESSIONS = 128;
12
+ const ASSETS = new Set([".html", ".htm", ".css", ".js", ".mjs", ".json", ".png", ".jpg", ".jpeg", ".gif", ".webp", ".avif", ".svg", ".ico", ".mp4", ".webm", ".mov", ".mp3", ".wav", ".ogg", ".m4a", ".woff", ".woff2", ".ttf", ".otf", ".vtt"]);
13
+ interface PreviewSession { root: string; expires: number }
14
+
15
+ function denied(): never {
16
+ throw Object.assign(new Error("Preview path is not allowed"), { status: 403 });
17
+ }
18
+
19
+ function inside(root: string, path: string): boolean {
20
+ const rel = relative(root, path);
21
+ return rel !== ".." && !rel.startsWith(`..${sep}`) && !isAbsolute(rel);
22
+ }
23
+
24
+ function guardAsset(path: string, root = dirname(path)): void {
25
+ assertAllowed(path);
26
+ assertNotPpmDir(path);
27
+ // Only web assets, never hidden directories, dotenv, database or key files.
28
+ if (relative(root, path).split(/[\\/]/).some((part) => part.startsWith(".")) || !ASSETS.has(extname(path).toLowerCase())) denied();
29
+ }
30
+
31
+ /** Independent capability store per router pair; no session credentials enter iframe URLs. */
32
+ export function createHtmlPreviewRoutes(now = Date.now) {
33
+ const sessions = new Map<string, PreviewSession>();
34
+ const api = new Hono();
35
+ const content = new Hono();
36
+
37
+ api.post("/", async (c) => {
38
+ try {
39
+ const body = await c.req.json().catch(() => null);
40
+ if (!body || typeof body.filePath !== "string" || !body.filePath ||
41
+ (body.projectName !== undefined && typeof body.projectName !== "string")) {
42
+ return c.json(err("filePath and optional projectName are required"), 400);
43
+ }
44
+ let candidate: string;
45
+ if (isAbsolute(body.filePath) || body.filePath.startsWith("~")) {
46
+ candidate = resolvePath(body.filePath);
47
+ } else {
48
+ if (!body.projectName) return c.json(err("projectName is required for relative paths"), 400);
49
+ const projectRoot = resolveProjectPath(body.projectName);
50
+ candidate = resolve(projectRoot, body.filePath);
51
+ if (!inside(projectRoot, candidate)) denied();
52
+ if (!inside(await realpath(projectRoot), await realpath(candidate))) denied();
53
+ }
54
+ guardAsset(candidate);
55
+ const path = await realpath(candidate);
56
+ guardAsset(path);
57
+ if (!/\.html?$/i.test(path)) return c.json(err("Preview requires an HTML file"), 400);
58
+ if (!(await stat(path)).isFile()) return c.json(err("File not found"), 404);
59
+ for (const [token, session] of sessions) if (session.expires <= now()) sessions.delete(token);
60
+ if (sessions.size >= MAX_SESSIONS) sessions.delete(sessions.keys().next().value!);
61
+ const token = crypto.randomUUID();
62
+ sessions.set(token, { root: dirname(path), expires: now() + TTL });
63
+ return c.json(ok({ url: `${PREFIX}/${token}/${encodeURIComponent(basename(path))}` }));
64
+ } catch (error) {
65
+ const status = (error as { status?: number; code?: string }).status === 403 ? 403 :
66
+ (error as { code?: string }).code === "ENOENT" ? 404 : 400;
67
+ return c.json(err(status === 403 ? "Access denied" : "Cannot preview this file"), status);
68
+ }
69
+ });
70
+
71
+ content.get("/:token/*", async (c) => {
72
+ const token = c.req.param("token");
73
+ const session = sessions.get(token);
74
+ if (!session || session.expires <= now()) {
75
+ sessions.delete(token);
76
+ return c.json(err("Preview expired; refresh to reopen"), 404);
77
+ }
78
+ try {
79
+ const encoded = new URL(c.req.url).pathname.slice(`${PREFIX}/${token}/`.length);
80
+ const asset = decodeURIComponent(encoded);
81
+ if (!asset || asset.includes("\\") || asset.includes("\0") || asset.includes(":")) denied();
82
+ const candidate = resolve(session.root, asset);
83
+ if (!inside(session.root, candidate)) denied();
84
+ guardAsset(candidate, session.root);
85
+ const path = await realpath(candidate);
86
+ if (!inside(session.root, path)) denied();
87
+ guardAsset(path, session.root);
88
+ if (!(await stat(path)).isFile()) return c.json(err("File not found"), 404);
89
+ // Bun reconstructs req.url with its listening port. Preserve the browser's
90
+ // Host through Vite/tunnels; validate before inserting into a CSP directive.
91
+ const requestHost = c.req.header("host") ?? "";
92
+ const host = /^(?:[a-z0-9.-]+|\[[a-f0-9:]+\])(?::\d{1,5})?$/i.test(requestHost)
93
+ ? requestHost : new URL(c.req.url).host;
94
+ // A scheme-less host source follows the document's actual scheme through tunnels.
95
+ const source = `${host}${PREFIX}/${token}/`;
96
+ const policy = ["sandbox allow-scripts", "default-src 'none'", `script-src 'unsafe-inline' ${source}`,
97
+ `style-src 'unsafe-inline' ${source}`, `img-src ${source} data: blob:`,
98
+ `media-src ${source} blob:`, `font-src ${source} data:`, `connect-src ${source}`,
99
+ "base-uri 'none'", "form-action 'none'", "frame-ancestors 'self'", "object-src 'none'"].join("; ");
100
+ return rangeFileResponse(path, c.req.raw, {
101
+ "Content-Security-Policy": policy,
102
+ "Referrer-Policy": "no-referrer",
103
+ "Cache-Control": "no-store",
104
+ "X-Content-Type-Options": "nosniff",
105
+ // Module scripts/fonts fetch from the sandbox's opaque origin.
106
+ "Access-Control-Allow-Origin": "*",
107
+ }, /\.html?$/i.test(path) ? "text/html; charset=utf-8" : undefined);
108
+ } catch (error) {
109
+ const status = (error as { status?: number }).status === 403 ? 403 : 404;
110
+ return c.json(err(status === 403 ? "Access denied" : "Preview asset not found"), status);
111
+ }
112
+ });
113
+ return { api, content };
114
+ }
115
+
116
+ export const htmlPreviewRoutes = createHtmlPreviewRoutes();
@@ -205,7 +205,14 @@ settingsRoutes.put("/ai", async (c) => {
205
205
  // Validate each provider config
206
206
  if (body.providers) {
207
207
  for (const [name, providerConfig] of Object.entries(body.providers)) {
208
- const errors = validateAIProviderConfig(providerConfig);
208
+ // Field-only updates still need the saved provider kind and CLI command.
209
+ // Validate submitted values without revalidating unrelated legacy settings.
210
+ const existing = currentAi.providers[name];
211
+ const errors = validateAIProviderConfig({
212
+ type: existing?.type,
213
+ cli_command: existing?.cli_command,
214
+ ...providerConfig,
215
+ });
209
216
  if (errors.length > 0) {
210
217
  return c.json(err(`Provider "${name}": ${errors.join(", ")}`), 400);
211
218
  }