@hienlh/ppm 0.18.10 → 0.18.11

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 (575) hide show
  1. package/.spike/cdp-client.ts +116 -0
  2. package/.spike/cleanup-ppm-workspace.mjs +44 -0
  3. package/.spike/pip-eval.ts +17 -0
  4. package/.spike/pip-page-helpers.js +119 -0
  5. package/.spike/pip-results-editor-glue.json +105 -0
  6. package/.spike/pip-results-editor.json +158 -0
  7. package/.spike/pip-results-input-isolation.json +28 -0
  8. package/.spike/pip-results-key-probe.json +58 -0
  9. package/.spike/pip-results-listener-survival.json +98 -0
  10. package/.spike/pip-results-listeners.json +36 -0
  11. package/.spike/pip-results-pagehide.json +92 -0
  12. package/.spike/pip-results-resize.json +104 -0
  13. package/.spike/pip-results-terminal-debug.json +99 -0
  14. package/.spike/pip-results-terminal-v2.json +191 -0
  15. package/.spike/pip-results-terminal.json +220 -0
  16. package/.spike/pip-results-xterm-trace.json +73 -0
  17. package/.spike/pip-spike-common.ts +83 -0
  18. package/.spike/pip-spike-editor-glue.ts +82 -0
  19. package/.spike/pip-spike-editor.ts +129 -0
  20. package/.spike/pip-spike-input-isolation.ts +38 -0
  21. package/.spike/pip-spike-key-probe.ts +34 -0
  22. package/.spike/pip-spike-listener-survival.ts +54 -0
  23. package/.spike/pip-spike-listeners.ts +19 -0
  24. package/.spike/pip-spike-pagehide.ts +59 -0
  25. package/.spike/pip-spike-resize.ts +42 -0
  26. package/.spike/pip-spike-setup.ts +63 -0
  27. package/.spike/pip-spike-terminal-debug.ts +81 -0
  28. package/.spike/pip-spike-terminal-v2.ts +139 -0
  29. package/.spike/pip-spike-terminal.ts +169 -0
  30. package/.spike/pip-spike-xterm-trace.ts +36 -0
  31. package/.spike/probe-drag-memo-error.mjs +67 -0
  32. package/.spike/read-dev-db.ts +15 -0
  33. package/.spike/scratch-editor-target.ts +7 -0
  34. package/.spike/smoke-unified-chrome-pip.mjs +353 -0
  35. package/.spike/tunnel.err +41 -0
  36. package/.spike/vite-restart.err +663 -0
  37. package/.spike/w.err +543 -0
  38. package/CHANGELOG.md +13 -0
  39. package/assets/skills/ppm/SKILL.md +1 -1
  40. package/assets/skills/ppm/references/http-api.md +1 -1
  41. package/dist/web/assets/adaptive-context-menu-DGCKKeTy.js +1 -0
  42. package/dist/web/assets/ai-resource-editor-BOHHTTe7.js +1 -0
  43. package/dist/web/assets/ai-settings-section-BigC_nZR.js +1 -0
  44. package/dist/web/assets/{angular-html-Ctz0zN01.js → angular-html-BYPaydvh.js} +1 -1
  45. package/dist/web/assets/{angular-ts-QXHpgB1C.js → angular-ts-Bb4AMKlk.js} +1 -1
  46. package/dist/web/assets/api-client-DTZEgjBQ.js +1 -0
  47. package/dist/web/assets/{api-settings-kQHV6pYZ.js → api-settings-Bd3M4YpI.js} +1 -1
  48. package/dist/web/assets/api-settings-kd1j4iR8.js +1 -0
  49. package/dist/web/assets/{api-themes-CrK0tkW_.js → api-themes-Cpx419SL.js} +1 -1
  50. package/dist/web/assets/{apl-b9KVk-O4.js → apl-DB2VjFCS.js} +1 -1
  51. package/dist/web/assets/architecture-PBZL5I3N-8dCMT9r7.js +1 -0
  52. package/dist/web/assets/{astro-BlFEeGYr.js → astro-BeoJdVpk.js} +1 -1
  53. package/dist/web/assets/{audio-preview-CZLmhf__.js → audio-preview-BgFuTn-0.js} +1 -1
  54. package/dist/web/assets/{blade-CGkj2MUI.js → blade-Cf2q1sPf.js} +1 -1
  55. package/dist/web/assets/{bsl-CVsbb6ap.js → bsl-W1kOaNpu.js} +1 -1
  56. package/dist/web/assets/{button-BA_fJOtX.js → button-5zTrkEoN.js} +1 -1
  57. package/dist/web/assets/{cairo-BbIHl2iE.js → cairo-BoAZFcje.js} +1 -1
  58. package/dist/web/assets/chat-tab-E3bf_V8X.js +15 -0
  59. package/dist/web/assets/chevron-down-Dp0rpHb8.js +1 -0
  60. package/dist/web/assets/clipboard-7fw0Shic.js +1 -0
  61. package/dist/web/assets/{cobol-BWSGjmWb.js → cobol-B0Nm7RXj.js} +1 -1
  62. package/dist/web/assets/code-editor-BUlM2gXk.js +10 -0
  63. package/dist/web/assets/{coffee-CWGNOxds.js → coffee-BakMn3on.js} +1 -1
  64. package/dist/web/assets/{conflict-editor-fRTU3f1o.js → conflict-editor-BUs5k9q_.js} +4 -4
  65. package/dist/web/assets/context-menu-Bq92km4s.js +1 -0
  66. package/dist/web/assets/{cpp-DHGV24J2.js → cpp-BRAJQHK2.js} +1 -1
  67. package/dist/web/assets/{crystal-Vlwf2UMP.js → crystal-kqqO3zkK.js} +1 -1
  68. package/dist/web/assets/{csv-preview-D1d0cxOJ.js → csv-preview-ByoDgLAZ.js} +1 -1
  69. package/dist/web/assets/{data-grid-overlay-editor-D9il5DZS.js → data-grid-overlay-editor-Brkf9z41.js} +1 -1
  70. package/dist/web/assets/database-viewer-Btc3h8Yu.js +1 -0
  71. package/dist/web/assets/dialog-DwtGlowE.js +1 -0
  72. package/dist/web/assets/diff-viewer-CZaDnR4w.js +4 -0
  73. package/dist/web/assets/docx-preview-DAD_vg59.js +12 -0
  74. package/dist/web/assets/{edge-Bhqk64zS.js → edge-Cq1ZKZuE.js} +1 -1
  75. package/dist/web/assets/{edit-diff-preview-gq6ALf2B.js → edit-diff-preview-B_VE7ppQ.js} +1 -1
  76. package/dist/web/assets/{elixir-D466WCFm.js → elixir-BM_JoJRk.js} +1 -1
  77. package/dist/web/assets/{elm-Bfs2qNPR.js → elm-Dw7oO08Y.js} +1 -1
  78. package/dist/web/assets/{erb-WI7jUaB6.js → erb-CfKOGAfk.js} +1 -1
  79. package/dist/web/assets/{erlang-BCBe8nCc.js → erlang-DlDmGVeE.js} +1 -1
  80. package/dist/web/assets/{esm-CZs9WVDO.js → esm-DGAP0GFh.js} +1 -1
  81. package/dist/web/assets/explorer-body-9aBmyVpZ.js +2 -0
  82. package/dist/web/assets/explorer-window-content-DRtqoSPA.js +1 -0
  83. package/dist/web/assets/extension-store-Cpfh2vMm.js +1 -0
  84. package/dist/web/assets/{extension-webview-BH_mWYMe.js → extension-webview-B2OnjuCu.js} +2 -2
  85. package/dist/web/assets/external-link-B8BynhvY.js +1 -0
  86. package/dist/web/assets/file-store-aOERIEo-.js +1 -0
  87. package/dist/web/assets/folder-symlink-B8XrtvQK.js +1 -0
  88. package/dist/web/assets/{fortran-fixed-form-CXLIv8Ox.js → fortran-fixed-form-XnAhQWxS.js} +1 -1
  89. package/dist/web/assets/{fsharp-CZsYmiw9.js → fsharp-CdNvy0PG.js} +1 -1
  90. package/dist/web/assets/{gdresource-BGRvoWfC.js → gdresource-DxuG5i8i.js} +1 -1
  91. package/dist/web/assets/{git-commit-DH6mY3Km.js → git-commit-3lMonsur.js} +1 -1
  92. package/dist/web/assets/git-log-panel-Co0PBPHC.js +1 -0
  93. package/dist/web/assets/{git-rebase-C5Gql6Ma.js → git-rebase-N8Z9kIMf.js} +1 -1
  94. package/dist/web/assets/gitGraph-HDMCJU4V-2e_8dfbs.js +1 -0
  95. package/dist/web/assets/{glide-data-grid-n4ox_uev.js → glide-data-grid-C4_zIneN.js} +8 -8
  96. package/dist/web/assets/{glimmer-js-1-6JMJlj.js → glimmer-js-Dp9OXiib.js} +1 -1
  97. package/dist/web/assets/{glimmer-ts-C_Njj0nK.js → glimmer-ts-CDVKBcDj.js} +1 -1
  98. package/dist/web/assets/{glsl-DbkxE1TN.js → glsl-DPJxI4us.js} +1 -1
  99. package/dist/web/assets/{graphql-BK75fiXl.js → graphql-BrFhaQQl.js} +1 -1
  100. package/dist/web/assets/group-chat-tab-rOd8J8GC.js +1 -0
  101. package/dist/web/assets/{hack-DG151vit.js → hack-BzXbDMlA.js} +1 -1
  102. package/dist/web/assets/{haml-DKeIPQWM.js → haml-CPpkX0s5.js} +1 -1
  103. package/dist/web/assets/{handlebars-398uCI13.js → handlebars-BqrApy52.js} +1 -1
  104. package/dist/web/assets/{html-NLWdst5q.js → html-DmjUl-OA.js} +1 -1
  105. package/dist/web/assets/{html-derivative-CJf_Le2z.js → html-derivative-Cnd6XFR5.js} +1 -1
  106. package/dist/web/assets/{http-G1K2FozA.js → http-DMLWYun2.js} +1 -1
  107. package/dist/web/assets/{hurl-WDC6sSBz.js → hurl-CKkCVxbj.js} +1 -1
  108. package/dist/web/assets/{hxml-Dc3jBXuf.js → hxml-CAx19TtQ.js} +1 -1
  109. package/dist/web/assets/image-preview-DHUoylQ1.js +1 -0
  110. package/dist/web/assets/index-BImUaigO.js +52 -0
  111. package/dist/web/assets/index-CSfi6DSU.css +2 -0
  112. package/dist/web/assets/info-3K5VOQVL-BZi1Gha1.js +1 -0
  113. package/dist/web/assets/input-DcEk7mA3.js +1 -0
  114. package/dist/web/assets/{jinja-CWsQj2y0.js → jinja-BmB9YN9l.js} +1 -1
  115. package/dist/web/assets/{jison-CciJg2NW.js → jison-BaVsKKpw.js} +1 -1
  116. package/dist/web/assets/{julia-IOQNJAB7.js → julia-BgVBLveX.js} +1 -1
  117. package/dist/web/assets/{just-BGdHchwS.js → just-C2ENIbl9.js} +1 -1
  118. package/dist/web/assets/keybindings-store-BGIyqXHI.js +1 -0
  119. package/dist/web/assets/keybindings-store-CzV2sPls.js +1 -0
  120. package/dist/web/assets/{latex-D6TOl-L2.js → latex-BiDIWxKL.js} +1 -1
  121. package/dist/web/assets/{liquid-CVSvu_Wn.js → liquid-NxpapreE.js} +1 -1
  122. package/dist/web/assets/loader-circle-gSPVxfvH.js +1 -0
  123. package/dist/web/assets/lock-Did-87UV.js +1 -0
  124. package/dist/web/assets/{lua-CcKiU6HW.js → lua-DVepQvwH.js} +1 -1
  125. package/dist/web/assets/markdown-renderer-CcbR33VG.js +1 -0
  126. package/dist/web/assets/{markdown-renderer-B317vEys.js → markdown-renderer-DlcDhgrF.js} +3 -3
  127. package/dist/web/assets/{marko--UOicMGo.js → marko-CJ2606Xl.js} +1 -1
  128. package/dist/web/assets/{mdc-D690aU2C.js → mdc-D2bjqclE.js} +1 -1
  129. package/dist/web/assets/{media-url-CylYQld1.js → media-url-H17XJF-I.js} +1 -1
  130. package/dist/web/assets/mobile-bottom-sheet-g-r2hCFa.js +1 -0
  131. package/dist/web/assets/mobile-explorer-sheet-SIwQXlwA.js +1 -0
  132. package/dist/web/assets/monitor-Dv8vn_6O.js +1 -0
  133. package/dist/web/assets/{nextflow-DR8PhpF8.js → nextflow-BtJwUbfF.js} +1 -1
  134. package/dist/web/assets/{nginx-Qb9pUk1g.js → nginx-j4gyIhHE.js} +1 -1
  135. package/dist/web/assets/{nim-DLa8R3NS.js → nim-ClH_gjP5.js} +1 -1
  136. package/dist/web/assets/notification-store-DV5QtUTg.js +1 -0
  137. package/dist/web/assets/{number-overlay-editor-D9SkFg1Y.js → number-overlay-editor-C1EqJnWq.js} +1 -1
  138. package/dist/web/assets/{overview-panel-BxDohIEa.js → overview-panel-vTeeJYVZ.js} +1 -1
  139. package/dist/web/assets/packet-RMMSAZCW-o5htEcin.js +1 -0
  140. package/dist/web/assets/panel-store-BSnkjgHt.js +1 -0
  141. package/dist/web/assets/pdf-preview-CqFGRY0Z.js +1 -0
  142. package/dist/web/assets/pencil-BlIIg6RH.js +1 -0
  143. package/dist/web/assets/{perl-AMNGIneF.js → perl-C9H7X7CT.js} +1 -1
  144. package/dist/web/assets/{php-CDsOOxXn.js → php-Bx2U-cQ_.js} +1 -1
  145. package/dist/web/assets/pie-UPGHQEXC-BXAIFSAD.js +1 -0
  146. package/dist/web/assets/play-4MZi1Axp.js +1 -0
  147. package/dist/web/assets/portal-container-context-Cm5HipFr.js +1 -0
  148. package/dist/web/assets/{postgres-viewer-BWZLW7kI.js → postgres-viewer-DHwcQucn.js} +3 -3
  149. package/dist/web/assets/process-table-BGRJNlpn.js +1 -0
  150. package/dist/web/assets/{project-store-B8BkHXy5.js → project-store--nvQiy75.js} +1 -1
  151. package/dist/web/assets/{pug-C2kdkhQ6.js → pug-Cw74sKsE.js} +1 -1
  152. package/dist/web/assets/{qml-DRDkUp75.js → qml-BXD94Eqz.js} +1 -1
  153. package/dist/web/assets/radar-KQ55EAFF-Dbt2Aebl.js +1 -0
  154. package/dist/web/assets/{razor-wY_6wUeC.js → razor-DZ0-Ge0S.js} +1 -1
  155. package/dist/web/assets/refresh-cw-B06yaBrW.js +1 -0
  156. package/dist/web/assets/rotate-ccw-COXu_9oj.js +1 -0
  157. package/dist/web/assets/{rst-BRpofyNs.js → rst-Dtdh0QUj.js} +1 -1
  158. package/dist/web/assets/{ruby-ieATBhWm.js → ruby-BC51BW2Q.js} +1 -1
  159. package/dist/web/assets/{run-in-terminal-CyS5Itj-.js → run-in-terminal-Sd3KyjN4.js} +1 -1
  160. package/dist/web/assets/{sas-CoOOEbOO.js → sas-BN8i4qOU.js} +1 -1
  161. package/dist/web/assets/scroll-area-0gljZ6lF.js +1 -0
  162. package/dist/web/assets/{scss-_nWV0bsb.js → scss-H-QtA7Rz.js} +1 -1
  163. package/dist/web/assets/send-BlyNJAzy.js +1 -0
  164. package/dist/web/assets/{send-to-chat-BcO39BDR.js → send-to-chat-u6m8l-rH.js} +1 -1
  165. package/dist/web/assets/{settings-store-C20lqh0G.js → settings-store-CHY6Kzin.js} +2 -2
  166. package/dist/web/assets/settings-tab-Dic6TKkU.js +1 -0
  167. package/dist/web/assets/settings-tab-IY6K1MiZ.js +3 -0
  168. package/dist/web/assets/{shaderlab-XkqfIfO8.js → shaderlab-CalNsj_x.js} +1 -1
  169. package/dist/web/assets/shallow-DYo6goJ4.js +1 -0
  170. package/dist/web/assets/{shellsession-BKBIqTlM.js → shellsession-BFrcoR8x.js} +1 -1
  171. package/dist/web/assets/{soy-oVDnPzzh.js → soy-CNbku7vP.js} +1 -1
  172. package/dist/web/assets/{sparql-N2VclEsF.js → sparql-BN_orcVp.js} +1 -1
  173. package/dist/web/assets/{sql-query-editor-BwPjEaP9.js → sql-query-editor-C6pC3I8l.js} +1 -1
  174. package/dist/web/assets/sqlite-viewer-DTr5PzUb.js +1 -0
  175. package/dist/web/assets/{stata-BuuClVDg.js → stata-C6a5Ijzq.js} +1 -1
  176. package/dist/web/assets/{surrealql-DE5_63MS.js → surrealql-ClplI_HY.js} +1 -1
  177. package/dist/web/assets/{svelte--YWjlOrK.js → svelte-DNm-UNXB.js} +1 -1
  178. package/dist/web/assets/switch-DKvKya9y.js +1 -0
  179. package/dist/web/assets/system-monitor-body-iwGiCns9.js +2 -0
  180. package/dist/web/assets/system-monitor-tab-DdXQhEel.js +1 -0
  181. package/dist/web/assets/system-monitor-window-content-BUqRsPK2.js +1 -0
  182. package/dist/web/assets/tab-host-window-content-BnqGPu8a.js +1 -0
  183. package/dist/web/assets/{tab-store-DAsvpx4t.js → tab-store-CJuJRapl.js} +1 -1
  184. package/dist/web/assets/team-member-sheet-LkAFSCvb.js +2 -0
  185. package/dist/web/assets/team-member-window-content-T4Q5JI-G.js +1 -0
  186. package/dist/web/assets/{templ-MlpvJx4a.js → templ-CSdqVobu.js} +1 -1
  187. package/dist/web/assets/terminal-tab-Bb2rZegQ.js +3 -0
  188. package/dist/web/assets/{tex-0loAoXJG.js → tex-DzSJ4kcZ.js} +1 -1
  189. package/dist/web/assets/text-wrap-CBT4Gxtg.js +1 -0
  190. package/dist/web/assets/tool-cards-lhqhrDTT.js +8 -0
  191. package/dist/web/assets/trash-2-Bk4yYlck.js +1 -0
  192. package/dist/web/assets/treemap-KZPCXAKY-DUbnl9dz.js +1 -0
  193. package/dist/web/assets/triangle-alert-B8EYecpe.js +1 -0
  194. package/dist/web/assets/{ts-tags-pt-Ug0hK.js → ts-tags-C28w3bTg.js} +1 -1
  195. package/dist/web/assets/{twig-DOePpLOL.js → twig-i5jY3QXB.js} +1 -1
  196. package/dist/web/assets/upload-BNlX8D07.js +1 -0
  197. package/dist/web/assets/{use-blob-url-BKyVxOZw.js → use-blob-url-Dsq9OjTh.js} +1 -1
  198. package/dist/web/assets/{use-monaco-theme-DSCdlrjO.js → use-monaco-theme-BZvlsoBv.js} +1 -1
  199. package/dist/web/assets/use-open-team-member-DkiEjFYE.js +1 -0
  200. package/dist/web/assets/{use-websocket-iJfc7EbK.js → use-websocket-B8R50f7f.js} +1 -1
  201. package/dist/web/assets/{vendor-mermaid-DrwG0NYt.js → vendor-mermaid-By4AVvJY.js} +1 -1
  202. package/dist/web/assets/video-preview-m0-3p7QZ.js +1 -0
  203. package/dist/web/assets/{vue-D6f-rprj.js → vue-Ceyet_lv.js} +1 -1
  204. package/dist/web/assets/{vue-html-DEYRkS1V.js → vue-html-GuU7g_hg.js} +1 -1
  205. package/dist/web/assets/{vue-vine-CxSG2ojf.js → vue-vine-CxXoaJr2.js} +1 -1
  206. package/dist/web/assets/window-store-CsEW6jiE.js +1 -0
  207. package/dist/web/assets/{xml-DhrxbATj.js → xml-CbqOVhkP.js} +1 -1
  208. package/dist/web/assets/{xsl-CU0ZndUO.js → xsl-KfAmCauy.js} +1 -1
  209. package/dist/web/index.html +56 -27
  210. package/dist/web/sw.js +1 -1
  211. package/docs/code-standards.md +8 -0
  212. package/docs/codebase-summary.md +19 -5
  213. package/docs/design-guidelines.md +13 -2
  214. package/docs/project-roadmap.md +9 -0
  215. package/docs/system-architecture.md +83 -6
  216. package/package.json +1 -1
  217. package/src/web/components/chat/file-picker.tsx +5 -2
  218. package/src/web/components/chat/mode-selector.tsx +5 -2
  219. package/src/web/components/chat/model-selector.tsx +5 -2
  220. package/src/web/components/chat/model-thinking-selector.tsx +5 -2
  221. package/src/web/components/chat/provider-selector.tsx +5 -2
  222. package/src/web/components/chat/slash-command-picker.tsx +5 -2
  223. package/src/web/components/editor/code-editor.tsx +13 -3
  224. package/src/web/components/editor/conflict-editor.tsx +9 -0
  225. package/src/web/components/editor/diff-viewer.tsx +9 -0
  226. package/src/web/components/floating-window/floating-window.tsx +23 -15
  227. package/src/web/components/floating-window/pip/pip-caption-button.tsx +108 -0
  228. package/src/web/components/floating-window/pip/pip-focus-target.ts +58 -0
  229. package/src/web/components/floating-window/pip/pip-geometry.ts +46 -0
  230. package/src/web/components/floating-window/pip/pip-host.ts +156 -0
  231. package/src/web/components/floating-window/pip/pip-key-forward.ts +59 -0
  232. package/src/web/components/floating-window/pip/pip-resize-signal.ts +33 -0
  233. package/src/web/components/floating-window/pip/pip-style-copy.ts +108 -0
  234. package/src/web/components/floating-window/pip/pip-support.ts +33 -0
  235. package/src/web/components/floating-window/tab-host-window-content.tsx +80 -0
  236. package/src/web/components/floating-window/use-window-body-element.ts +67 -0
  237. package/src/web/components/floating-window/use-window-drag.ts +5 -0
  238. package/src/web/components/floating-window/use-window-gesture-context.ts +14 -0
  239. package/src/web/components/floating-window/use-window-resize.ts +5 -0
  240. package/src/web/components/floating-window/window-content-registry.ts +4 -16
  241. package/src/web/components/floating-window/window-layer.tsx +1 -2
  242. package/src/web/components/floating-window/window-persistence.ts +9 -2
  243. package/src/web/components/floating-window/window-pip-placeholder.tsx +31 -0
  244. package/src/web/components/floating-window/window-pip-registry.ts +69 -0
  245. package/src/web/components/floating-window/window-skin-chrome.tsx +21 -0
  246. package/src/web/components/floating-window/window-store-types.ts +8 -2
  247. package/src/web/components/layout/reparenting-tab.tsx +136 -0
  248. package/src/web/components/layout/tab-bar.tsx +2 -0
  249. package/src/web/components/layout/tab-pool-collect.ts +38 -2
  250. package/src/web/components/layout/tab-pool-registry.ts +48 -0
  251. package/src/web/components/layout/tab-pool.tsx +54 -168
  252. package/src/web/components/layout/tab-pop-out-menu-item.tsx +42 -0
  253. package/src/web/components/layout/use-window-panel-reconcile.ts +48 -0
  254. package/src/web/components/os-explorer/skins/macos-window-chrome.tsx +16 -7
  255. package/src/web/components/os-explorer/skins/windows-window-chrome.tsx +14 -8
  256. package/src/web/components/ui/context-menu.tsx +10 -3
  257. package/src/web/components/ui/dialog.tsx +10 -1
  258. package/src/web/components/ui/dropdown-menu.tsx +10 -3
  259. package/src/web/components/ui/mobile-bottom-sheet.tsx +7 -4
  260. package/src/web/components/ui/portal-container-context.tsx +40 -0
  261. package/src/web/components/ui/select.tsx +3 -1
  262. package/src/web/components/ui/tooltip.tsx +3 -1
  263. package/src/web/hooks/use-terminal.ts +24 -3
  264. package/src/web/stores/panel-store.ts +72 -7
  265. package/src/web/stores/panel-utils.ts +36 -0
  266. package/src/web/stores/window-panel-actions.ts +211 -0
  267. package/src/web/stores/window-panel-persistence.ts +115 -0
  268. package/src/web/stores/window-panel-reconcile.ts +97 -0
  269. package/dist/web/assets/ai-resource-editor-mdDKG-rw.js +0 -1
  270. package/dist/web/assets/api-client-CzABTreM.js +0 -1
  271. package/dist/web/assets/api-settings-nblja3Rk.js +0 -1
  272. package/dist/web/assets/architecture-PBZL5I3N-C7ra20CE.js +0 -1
  273. package/dist/web/assets/chat-tab-C060A94y.js +0 -15
  274. package/dist/web/assets/code-editor-WELegzdp.js +0 -10
  275. package/dist/web/assets/context-menu-Cq0u3SK9.js +0 -1
  276. package/dist/web/assets/database-viewer-DevnWTV4.js +0 -1
  277. package/dist/web/assets/diff-viewer-DGxVg1pD.js +0 -4
  278. package/dist/web/assets/docx-preview-Cx-zLwAw.js +0 -12
  279. package/dist/web/assets/explorer-body-j_4hVc34.js +0 -2
  280. package/dist/web/assets/explorer-window-content-DdrGwk3w.js +0 -1
  281. package/dist/web/assets/git-log-panel-CfpXRJcP.js +0 -1
  282. package/dist/web/assets/gitGraph-HDMCJU4V-D4hYLNJU.js +0 -1
  283. package/dist/web/assets/group-chat-tab-dYuuknLN.js +0 -1
  284. package/dist/web/assets/image-preview-Ss38ex8g.js +0 -1
  285. package/dist/web/assets/index-BiTiXgBZ.css +0 -2
  286. package/dist/web/assets/index-Ch8l9de-.js +0 -52
  287. package/dist/web/assets/info-3K5VOQVL-lRlrTlkb.js +0 -1
  288. package/dist/web/assets/keybindings-store-CDfTjwZX.js +0 -1
  289. package/dist/web/assets/markdown-renderer-CpRlpLHw.js +0 -1
  290. package/dist/web/assets/mobile-bottom-sheet-BUOJgiaZ.js +0 -1
  291. package/dist/web/assets/mobile-explorer-sheet-D1Bv9UCT.js +0 -1
  292. package/dist/web/assets/notification-store-KwTAZT8b.js +0 -1
  293. package/dist/web/assets/packet-RMMSAZCW-BIhk1mvp.js +0 -1
  294. package/dist/web/assets/panel-store-DCD82zc1.js +0 -1
  295. package/dist/web/assets/pdf-preview-dwRe54ht.js +0 -1
  296. package/dist/web/assets/pie-UPGHQEXC-SLS6i76l.js +0 -1
  297. package/dist/web/assets/process-table-CI-fnVsy.js +0 -1
  298. package/dist/web/assets/radar-KQ55EAFF-JJ6O1Er_.js +0 -1
  299. package/dist/web/assets/settings-tab-mPxrKkfm.js +0 -1
  300. package/dist/web/assets/sqlite-viewer-Cs-_D942.js +0 -1
  301. package/dist/web/assets/system-monitor-body-CV7-0hZG.js +0 -2
  302. package/dist/web/assets/system-monitor-tab-Ce-8Axhh.js +0 -1
  303. package/dist/web/assets/system-monitor-window-content-CetwYOQy.js +0 -1
  304. package/dist/web/assets/team-member-sheet-CjgaQjsZ.js +0 -2
  305. package/dist/web/assets/team-member-window-content-DNJiYWS7.js +0 -1
  306. package/dist/web/assets/terminal-tab-DF7521sT.js +0 -3
  307. package/dist/web/assets/tool-cards-DCAXGDJI.js +0 -8
  308. package/dist/web/assets/treemap-KZPCXAKY-Be3KNmns.js +0 -1
  309. package/dist/web/assets/use-open-team-member-H4k74HnV.js +0 -1
  310. package/dist/web/assets/video-preview-B0ZWpX0F.js +0 -1
  311. package/src/web/components/floating-window/default-window-chrome.tsx +0 -71
  312. package/src/web/components/os-explorer/skins/explorer-skin-chrome.tsx +0 -17
  313. /package/dist/web/assets/{abap-MRbmsXOs.js → abap-C6nB04tn.js} +0 -0
  314. /package/dist/web/assets/{actionscript-3-BDDHKqa4.js → actionscript-3-Vx4rw2sC.js} +0 -0
  315. /package/dist/web/assets/{ada-DpuV9KwV.js → ada-Ccd8vM20.js} +0 -0
  316. /package/dist/web/assets/{andromeeda-D6qUCKJo.js → andromeeda-DnBX5xMg.js} +0 -0
  317. /package/dist/web/assets/{apache-CX1NU_Tl.js → apache-B-9_sx0g.js} +0 -0
  318. /package/dist/web/assets/{apex-B4-aoQ3K.js → apex-_wPVBYoL.js} +0 -0
  319. /package/dist/web/assets/{api-client-BSB14J4w.js → api-client-aQb5hHE5.js} +0 -0
  320. /package/dist/web/assets/{applescript-Dm9NI6KR.js → applescript-CcvD-qr0.js} +0 -0
  321. /package/dist/web/assets/{apply-theme-BH_d4amk.js → apply-theme-BeLRfsSu.js} +0 -0
  322. /package/dist/web/assets/{ara-BGN8GAYn.js → ara-C40Ztoms.js} +0 -0
  323. /package/dist/web/assets/{asciidoc-s_yVuR3t.js → asciidoc-CybYkJV4.js} +0 -0
  324. /package/dist/web/assets/{asm-BzQdSvTe.js → asm-9eOKwzR0.js} +0 -0
  325. /package/dist/web/assets/{aurora-x-BJTLETG_.js → aurora-x-B5ZH4t7t.js} +0 -0
  326. /package/dist/web/assets/{awk-BQEGWxvX.js → awk-Dqilob-2.js} +0 -0
  327. /package/dist/web/assets/{ayu-dark-CpTORmLc.js → ayu-dark-CPgRhf5r.js} +0 -0
  328. /package/dist/web/assets/{ayu-light-D8PVj-e6.js → ayu-light-Do06Q52f.js} +0 -0
  329. /package/dist/web/assets/{ayu-mirage-DyElQHtm.js → ayu-mirage-_BhxcrxY.js} +0 -0
  330. /package/dist/web/assets/{ballerina-C82NkRtj.js → ballerina-DDwK54QW.js} +0 -0
  331. /package/dist/web/assets/{bat-0X7DtGI-.js → bat-BGyGlzGk.js} +0 -0
  332. /package/dist/web/assets/{beancount-Xgvy6YRl.js → beancount-CRWBdapI.js} +0 -0
  333. /package/dist/web/assets/{berry-CCT2pZcQ.js → berry-DbSFn2gO.js} +0 -0
  334. /package/dist/web/assets/{bibtex-CpXgZ9M_.js → bibtex-QpsV9gm9.js} +0 -0
  335. /package/dist/web/assets/{bicep-fkeSA62l.js → bicep-CxS8CUve.js} +0 -0
  336. /package/dist/web/assets/{bird2-Co7SeAI8.js → bird2-CuZhQzYR.js} +0 -0
  337. /package/dist/web/assets/{bot-CunPuEdW.js → bot-D6sx11y0.js} +0 -0
  338. /package/dist/web/assets/{c-BpmrTvJh.js → c-9bnDqE3g.js} +0 -0
  339. /package/dist/web/assets/{c3-BZ_Z0RrR.js → c3-JMZTrOhA.js} +0 -0
  340. /package/dist/web/assets/{cadence-B0GBC8OF.js → cadence-DsDNayJS.js} +0 -0
  341. /package/dist/web/assets/{can-open-in-ppm-omBzUBBq.js → can-open-in-ppm-BJfpynya.js} +0 -0
  342. /package/dist/web/assets/{catppuccin-frappe-DIt_xR7m.js → catppuccin-frappe-DYIKXXBe.js} +0 -0
  343. /package/dist/web/assets/{catppuccin-latte-Dw40AcqA.js → catppuccin-latte-IYYOnUJ8.js} +0 -0
  344. /package/dist/web/assets/{catppuccin-macchiato-BJ7DfVEF.js → catppuccin-macchiato-BrJ_7mfS.js} +0 -0
  345. /package/dist/web/assets/{catppuccin-mocha-NI2lfXzU.js → catppuccin-mocha-gzSu7v7-.js} +0 -0
  346. /package/dist/web/assets/{chevron-right-BLOtX8Vy.js → chevron-right-De-Wz5Lz.js} +0 -0
  347. /package/dist/web/assets/{circle-hjUGru6R.js → circle-BCy0AUCo.js} +0 -0
  348. /package/dist/web/assets/{clarity-F39L0xMJ.js → clarity-DLzsC0Hb.js} +0 -0
  349. /package/dist/web/assets/{clock-CvhF4DJP.js → clock-C1CQUQPZ.js} +0 -0
  350. /package/dist/web/assets/{clojure-DloMkd8K.js → clojure-DS1BvoTt.js} +0 -0
  351. /package/dist/web/assets/{cmake-CwerJun_.js → cmake-CDvsJwYp.js} +0 -0
  352. /package/dist/web/assets/{code-DDPoqVri.js → code-DJgYrFzm.js} +0 -0
  353. /package/dist/web/assets/{codeowners-CQyVz4Qf.js → codeowners-BjsYiflJ.js} +0 -0
  354. /package/dist/web/assets/{codeql-Bb229zuY.js → codeql-CG-7ARat.js} +0 -0
  355. /package/dist/web/assets/{common-lisp-KMlIwq5I.js → common-lisp-DSO1Lbh9.js} +0 -0
  356. /package/dist/web/assets/{copy-DKn11Pye.js → copy-BewHj66E.js} +0 -0
  357. /package/dist/web/assets/{coq-DHX_3IIo.js → coq-DYdh3oP_.js} +0 -0
  358. /package/dist/web/assets/{csharp-CEmCZv9Q.js → csharp-DxEBz5s0.js} +0 -0
  359. /package/dist/web/assets/{css-CqZqBD05.js → css-dal3Q-8C.js} +0 -0
  360. /package/dist/web/assets/{csv-l1g_V5MV.js → csv-CpqjMGiA.js} +0 -0
  361. /package/dist/web/assets/{csv-parser-CnS0wqr6.js → csv-parser-3umBA4NY.js} +0 -0
  362. /package/dist/web/assets/{cue-BrxRmilg.js → cue-DinoJ_5k.js} +0 -0
  363. /package/dist/web/assets/{cypher-rZkKwqZc.js → cypher-DzxqmkUW.js} +0 -0
  364. /package/dist/web/assets/{d-BALR-QuP.js → d-BxNwJuEC.js} +0 -0
  365. /package/dist/web/assets/{dark-plus-Cj7rVwh-.js → dark-plus-Clmv3V-0.js} +0 -0
  366. /package/dist/web/assets/{dart-CWQcdkXk.js → dart-BWVtXD35.js} +0 -0
  367. /package/dist/web/assets/{data-grid-types-CYvF-xK5.js → data-grid-types-B4n51Fck.js} +0 -0
  368. /package/dist/web/assets/{database-BH0urvbs.js → database-Y3ESDK4-.js} +0 -0
  369. /package/dist/web/assets/{dax-BNHD-QBA.js → dax-DsImuWgJ.js} +0 -0
  370. /package/dist/web/assets/{desktop-CN0IXPrP.js → desktop-B0jJuG2r.js} +0 -0
  371. /package/dist/web/assets/{diff-BtOXapES.js → diff-CWqAAxoE.js} +0 -0
  372. /package/dist/web/assets/{dist-DB1Oaqcc.js → dist-B-EXdSYE.js} +0 -0
  373. /package/dist/web/assets/{dist-Di6G_5jU.js → dist-C0eNNfbt.js} +0 -0
  374. /package/dist/web/assets/{docker-DNsAo_qO.js → docker-CYFCJdIL.js} +0 -0
  375. /package/dist/web/assets/{dotenv-D6Pl6aOU.js → dotenv-CKDUjURg.js} +0 -0
  376. /package/dist/web/assets/{download-zCATy4x4.js → download-DG3_9xXy.js} +0 -0
  377. /package/dist/web/assets/{dracula-C3m-w12D.js → dracula-CSoPspHE.js} +0 -0
  378. /package/dist/web/assets/{dracula-soft-BYqvXm6Z.js → dracula-soft-BuFjw5L1.js} +0 -0
  379. /package/dist/web/assets/{dream-maker-DZAPbPTi.js → dream-maker-B6PdDRZu.js} +0 -0
  380. /package/dist/web/assets/{emacs-lisp-Ao5SW8ay.js → emacs-lisp-CMcXvD0G.js} +0 -0
  381. /package/dist/web/assets/{everforest-dark-uC8QYotQ.js → everforest-dark-cU8-wYzi.js} +0 -0
  382. /package/dist/web/assets/{everforest-light-CTgsVNMr.js → everforest-light-KhorllqK.js} +0 -0
  383. /package/dist/web/assets/{fennel-WuBw6IR1.js → fennel-BCELZK87.js} +0 -0
  384. /package/dist/web/assets/{file-exclamation-point-COAwgNGw.js → file-exclamation-point-CZ4DiR75.js} +0 -0
  385. /package/dist/web/assets/{fish-Byy9dusu.js → fish-BQc0y_jy.js} +0 -0
  386. /package/dist/web/assets/{fluent-CDxb_sgw.js → fluent-BTINnwF6.js} +0 -0
  387. /package/dist/web/assets/{format-bytes-BE_W3UBg.js → format-bytes-WVcFxJuT.js} +0 -0
  388. /package/dist/web/assets/{fortran-free-form-DKWSTamT.js → fortran-free-form-BQim9wDz.js} +0 -0
  389. /package/dist/web/assets/{gdscript-prYHMgtD.js → gdscript-03w5u8un.js} +0 -0
  390. /package/dist/web/assets/{gdshader-D-RM-SQk.js → gdshader-Dp2daNzU.js} +0 -0
  391. /package/dist/web/assets/{genie-CowkJhej.js → genie-CoNcjPiD.js} +0 -0
  392. /package/dist/web/assets/{gherkin-CLFpoVYJ.js → gherkin-NrPOSPQL.js} +0 -0
  393. /package/dist/web/assets/{github-dark-default-BK_1Qgb8.js → github-dark-default-DOKw-1cI.js} +0 -0
  394. /package/dist/web/assets/{github-dark-dimmed-Cv9lj6f-.js → github-dark-dimmed-DJRNMkEA.js} +0 -0
  395. /package/dist/web/assets/{github-dark-high-contrast-CW5ZgIDh.js → github-dark-high-contrast-Bj7jJ_Gs.js} +0 -0
  396. /package/dist/web/assets/{github-dark-nW2F-RLd.js → github-dark-z4RE9ZqA.js} +0 -0
  397. /package/dist/web/assets/{github-light-D4PqBHGZ.js → github-light-B4k_yMFu.js} +0 -0
  398. /package/dist/web/assets/{github-light-default-B-cHtJJV.js → github-light-default-BHc-Uzhs.js} +0 -0
  399. /package/dist/web/assets/{github-light-high-contrast-Dt0HJq50.js → github-light-high-contrast-CHisIywL.js} +0 -0
  400. /package/dist/web/assets/{gleam-DwSyXJWP.js → gleam-CfbypZ4q.js} +0 -0
  401. /package/dist/web/assets/{gn-Cv5WEzHc.js → gn-YoAjyhJa.js} +0 -0
  402. /package/dist/web/assets/{gnuplot-D7bRdY_M.js → gnuplot-xVkc1f1c.js} +0 -0
  403. /package/dist/web/assets/{go-DiRVJ22U.js → go-GPCwP3Gu.js} +0 -0
  404. /package/dist/web/assets/{groovy-BHAgLTeO.js → groovy-Crh4Yww9.js} +0 -0
  405. /package/dist/web/assets/{gruvbox-dark-hard-C8QZ3gzY.js → gruvbox-dark-hard-BluUFuDS.js} +0 -0
  406. /package/dist/web/assets/{gruvbox-dark-medium-Dp1eeid2.js → gruvbox-dark-medium-Cxk1FWQp.js} +0 -0
  407. /package/dist/web/assets/{gruvbox-dark-soft-Cwq0dWVj.js → gruvbox-dark-soft-CHXMiFmj.js} +0 -0
  408. /package/dist/web/assets/{gruvbox-light-hard-CLQCq2-w.js → gruvbox-light-hard-B6eKPjAD.js} +0 -0
  409. /package/dist/web/assets/{gruvbox-light-medium-APHsh6Mo.js → gruvbox-light-medium-pDwMm1ut.js} +0 -0
  410. /package/dist/web/assets/{gruvbox-light-soft-CX-fYc64.js → gruvbox-light-soft-Cxu6kHqK.js} +0 -0
  411. /package/dist/web/assets/{haskell-C4Tw-TDa.js → haskell-C6JKHjbK.js} +0 -0
  412. /package/dist/web/assets/{haxe-B7fSduTQ.js → haxe-BuBNdF0a.js} +0 -0
  413. /package/dist/web/assets/{hcl-Bi3ho6yC.js → hcl-DZpDdGj2.js} +0 -0
  414. /package/dist/web/assets/{hjson-BXwae2M1.js → hjson-CBkhYRuo.js} +0 -0
  415. /package/dist/web/assets/{hlsl-CRuQLBSa.js → hlsl-C5nMxnp9.js} +0 -0
  416. /package/dist/web/assets/{horizon-DtdQ6qjv.js → horizon-VAFvA6R6.js} +0 -0
  417. /package/dist/web/assets/{horizon-bright-BXSF_uKq.js → horizon-bright-BC0xn7T3.js} +0 -0
  418. /package/dist/web/assets/{houston-C6ASpUjT.js → houston-BxrUivmz.js} +0 -0
  419. /package/dist/web/assets/{hy-BrWBHtHY.js → hy-DLtOXoaH.js} +0 -0
  420. /package/dist/web/assets/{image-gallery-CGvlv8zR.js → image-gallery-Gnf7TdCR.js} +0 -0
  421. /package/dist/web/assets/{imba-C_JJXckG.js → imba-BdpFXM2W.js} +0 -0
  422. /package/dist/web/assets/{ini-DEE_vSHQ.js → ini-BInJO_T0.js} +0 -0
  423. /package/dist/web/assets/{java-CnmpcjcT.js → java-Dxuddnkb.js} +0 -0
  424. /package/dist/web/assets/{javascript-C-M7sa2e.js → javascript-CVamJfLY.js} +0 -0
  425. /package/dist/web/assets/{json-BjZ3dAk6.js → json-BLZ0ozYk.js} +0 -0
  426. /package/dist/web/assets/{json5-BQ2vpqjp.js → json5-BnXzmMKs.js} +0 -0
  427. /package/dist/web/assets/{jsonc-C5MjoWGx.js → jsonc-CSgkSga7.js} +0 -0
  428. /package/dist/web/assets/{jsonl-JvhrmQJI.js → jsonl-CY5W2nF2.js} +0 -0
  429. /package/dist/web/assets/{jsonnet-C5pdZVuo.js → jsonnet-CEJYH3sF.js} +0 -0
  430. /package/dist/web/assets/{jssm-Db17uybX.js → jssm-CsJc7Uhk.js} +0 -0
  431. /package/dist/web/assets/{jsx-tJp2Cyqu.js → jsx-jCiRaHU7.js} +0 -0
  432. /package/dist/web/assets/{kanagawa-dragon-BculT_Y1.js → kanagawa-dragon-DfoA_GxX.js} +0 -0
  433. /package/dist/web/assets/{kanagawa-lotus-yQgHUGwU.js → kanagawa-lotus-BOLYJpWd.js} +0 -0
  434. /package/dist/web/assets/{kanagawa-wave-CyGoWN4d.js → kanagawa-wave-DfKlbT1G.js} +0 -0
  435. /package/dist/web/assets/{kdl-Bn8R1REF.js → kdl-CmssIFTi.js} +0 -0
  436. /package/dist/web/assets/{kotlin-DWughK73.js → kotlin-BRsNgp6x.js} +0 -0
  437. /package/dist/web/assets/{kusto--serPb0x.js → kusto-T8X9jUab.js} +0 -0
  438. /package/dist/web/assets/{laserwave-DfAPJ1tt.js → laserwave-DkJMVJ8Z.js} +0 -0
  439. /package/dist/web/assets/{lean-UAm1HOKl.js → lean-C65KGVPq.js} +0 -0
  440. /package/dist/web/assets/{less-Xj6Ka0fF.js → less-exIPdDlf.js} +0 -0
  441. /package/dist/web/assets/{lib-DgNcCtj3.js → lib-mC1NZfuw.js} +0 -0
  442. /package/dist/web/assets/{libesm-CPh1Av0r.js → libesm-DSutUtl1.js} +0 -0
  443. /package/dist/web/assets/{light-plus-BfS7gPcj.js → light-plus-DiHUXAZt.js} +0 -0
  444. /package/dist/web/assets/{llvm-DvWiVwvU.js → llvm-CJBnEzFM.js} +0 -0
  445. /package/dist/web/assets/{log-Bo5z9bNz.js → log-DxMyUMuP.js} +0 -0
  446. /package/dist/web/assets/{logo-CrIjcMZT.js → logo-CC9NKzca.js} +0 -0
  447. /package/dist/web/assets/{luau-C9TsYwNt.js → luau-Bw10I6zf.js} +0 -0
  448. /package/dist/web/assets/{make-GYq4qVbx.js → make-C_6M90m6.js} +0 -0
  449. /package/dist/web/assets/{markdown-p5mNledS.js → markdown-bR9_R-LF.js} +0 -0
  450. /package/dist/web/assets/{material-theme-CWYOVxsP.js → material-theme-BUx2Qujn.js} +0 -0
  451. /package/dist/web/assets/{material-theme-darker-BDGty7YH.js → material-theme-darker-CRJrPgKm.js} +0 -0
  452. /package/dist/web/assets/{material-theme-lighter-JbgOgV3n.js → material-theme-lighter-CUAYppPa.js} +0 -0
  453. /package/dist/web/assets/{material-theme-ocean-EMOpLpa2.js → material-theme-ocean-DuINF1fg.js} +0 -0
  454. /package/dist/web/assets/{material-theme-palenight-CY5hgm7h.js → material-theme-palenight-W6_icGCj.js} +0 -0
  455. /package/dist/web/assets/{matlab-C-He_NTH.js → matlab-rfqn_b3z.js} +0 -0
  456. /package/dist/web/assets/{mdx-Cr2TR5fj.js → mdx-Bh1B_YOJ.js} +0 -0
  457. /package/dist/web/assets/{mermaid-BYc0-B0U.js → mermaid-Dxf6Ya2k.js} +0 -0
  458. /package/dist/web/assets/{min-dark-CMJwqJqB.js → min-dark-CivZ2L0h.js} +0 -0
  459. /package/dist/web/assets/{min-light-Cx6vFiEX.js → min-light-B1Ykqtma.js} +0 -0
  460. /package/dist/web/assets/{mipsasm-Bjer5HwK.js → mipsasm-DynHaM0d.js} +0 -0
  461. /package/dist/web/assets/{mojo-t90PR-Y2.js → mojo-Clw5PbGH.js} +0 -0
  462. /package/dist/web/assets/{monokai-dci_PdCm.js → monokai-DFIooFZT.js} +0 -0
  463. /package/dist/web/assets/{moonbit-AAzI-Hd-.js → moonbit-DnBSZWGM.js} +0 -0
  464. /package/dist/web/assets/{move-kwBhnhrG.js → move-CCcL2PfL.js} +0 -0
  465. /package/dist/web/assets/{narrat-CXww2YQL.js → narrat-BDarg5Lk.js} +0 -0
  466. /package/dist/web/assets/{nextflow-groovy-CJXsuXGB.js → nextflow-groovy-DrZOeCNW.js} +0 -0
  467. /package/dist/web/assets/{night-owl-_GD204Wr.js → night-owl-BnZZCK7v.js} +0 -0
  468. /package/dist/web/assets/{night-owl-light-DNgkw3kl.js → night-owl-light-CEwBsVHS.js} +0 -0
  469. /package/dist/web/assets/{nix-BgiorKFd.js → nix-amCzOPMR.js} +0 -0
  470. /package/dist/web/assets/{nord-CaBmcxFC.js → nord-BIs2BC6q.js} +0 -0
  471. /package/dist/web/assets/{nushell-DUh4UGx1.js → nushell-Y02fo4yw.js} +0 -0
  472. /package/dist/web/assets/{objective-c-Cl9KU86S.js → objective-c-7xOZtWW1.js} +0 -0
  473. /package/dist/web/assets/{objective-cpp-DVkIA8A0.js → objective-cpp-eVtjUvVB.js} +0 -0
  474. /package/dist/web/assets/{ocaml-vvoHTak0.js → ocaml-Bi6ZwqG4.js} +0 -0
  475. /package/dist/web/assets/{odin-Cyjw8woZ.js → odin-8xf1Y0S9.js} +0 -0
  476. /package/dist/web/assets/{one-dark-pro-B1cviILi.js → one-dark-pro-hVv-_y_b.js} +0 -0
  477. /package/dist/web/assets/{one-light-BPGUJeYI.js → one-light-CJJ3MtHt.js} +0 -0
  478. /package/dist/web/assets/{openscad-BLMdTUU8.js → openscad-B2HcywLk.js} +0 -0
  479. /package/dist/web/assets/{pascal-i5niy3e7.js → pascal-C7fllV_7.js} +0 -0
  480. /package/dist/web/assets/{pkl-CuOV7SsU.js → pkl-qvLC1IWP.js} +0 -0
  481. /package/dist/web/assets/{plastic-Bf_zE5KL.js → plastic-BT1wHZv2.js} +0 -0
  482. /package/dist/web/assets/{plsql-cfqEtMD3.js → plsql-1MsmdmJD.js} +0 -0
  483. /package/dist/web/assets/{plus-BM-Ty0fp.js → plus-BhMZqFsN.js} +0 -0
  484. /package/dist/web/assets/{po-CFJcWgjr.js → po-BigskytD.js} +0 -0
  485. /package/dist/web/assets/{poimandres-G5YoaIFf.js → poimandres-DuklniF7.js} +0 -0
  486. /package/dist/web/assets/{polar-rcjs3i9R.js → polar-e2pjN_sp.js} +0 -0
  487. /package/dist/web/assets/{postcss-CBKY1FTZ.js → postcss-DtAeYjWw.js} +0 -0
  488. /package/dist/web/assets/{powerquery-Db7SXLbO.js → powerquery-Cr2PtehI.js} +0 -0
  489. /package/dist/web/assets/{powershell-LFy3MUTP.js → powershell-BxFTGLJ4.js} +0 -0
  490. /package/dist/web/assets/{prisma-BE8GR1lH.js → prisma-COWJiwdZ.js} +0 -0
  491. /package/dist/web/assets/{prolog-DOn5lR1e.js → prolog-DFvGKRx6.js} +0 -0
  492. /package/dist/web/assets/{proto-wr-TpAK_.js → proto-CcK80lFt.js} +0 -0
  493. /package/dist/web/assets/{puppet-D2Dkv62u.js → puppet-BF60bZ4F.js} +0 -0
  494. /package/dist/web/assets/{purescript-DvgJgPdy.js → purescript-zL_69MzU.js} +0 -0
  495. /package/dist/web/assets/{python-C7TlkHhK.js → python-CIwKhfb_.js} +0 -0
  496. /package/dist/web/assets/{qmldir-CtZMwhcW.js → qmldir-CXNe04Lo.js} +0 -0
  497. /package/dist/web/assets/{qss-dNZ2btnl.js → qss-C8lAWe6G.js} +0 -0
  498. /package/dist/web/assets/{r-BlqnNkHS.js → r-CL5ZVL3_.js} +0 -0
  499. /package/dist/web/assets/{racket-CzRQrGc4.js → racket-BBfh0uh0.js} +0 -0
  500. /package/dist/web/assets/{raku-BwutWhBF.js → raku-o6E8R5Q3.js} +0 -0
  501. /package/dist/web/assets/{react-I_EwPIZi.js → react-CBTnT4sY.js} +0 -0
  502. /package/dist/web/assets/{red-BMXMywmL.js → red-GomRF2Xp.js} +0 -0
  503. /package/dist/web/assets/{reg-BqOKrIOw.js → reg-_ffDIvx9.js} +0 -0
  504. /package/dist/web/assets/{regexp-Bero1BN2.js → regexp-Bl5sF65W.js} +0 -0
  505. /package/dist/web/assets/{rel-BXKWIElA.js → rel-DgMdqDuj.js} +0 -0
  506. /package/dist/web/assets/{resolve-theme-B9ABAH_3.js → resolve-theme-CRt_7wpd.js} +0 -0
  507. /package/dist/web/assets/{riscv-BbbBYJBo.js → riscv-8b3-Ye4X.js} +0 -0
  508. /package/dist/web/assets/{ron-BtVTWW4b.js → ron-DrmU1KHP.js} +0 -0
  509. /package/dist/web/assets/{rose-pine-hvkvQzvU.js → rose-pine-C_-E2tF1.js} +0 -0
  510. /package/dist/web/assets/{rose-pine-dawn-D7lwhUei.js → rose-pine-dawn-DEfhNlFH.js} +0 -0
  511. /package/dist/web/assets/{rose-pine-moon-CoHDmsIw.js → rose-pine-moon-BdvX3gdn.js} +0 -0
  512. /package/dist/web/assets/{rosmsg-CdaZFgI8.js → rosmsg-B6GhGpd5.js} +0 -0
  513. /package/dist/web/assets/{rust-Dy2qsphD.js → rust-DmC97M1-.js} +0 -0
  514. /package/dist/web/assets/{sass-Bz7NVxDb.js → sass-B0tJOHLM.js} +0 -0
  515. /package/dist/web/assets/{save-C4z1p51e.js → save-CtIGOjmx.js} +0 -0
  516. /package/dist/web/assets/{scala-sXSwsNyq.js → scala-n8zaFOXv.js} +0 -0
  517. /package/dist/web/assets/{scheme-DS7TUbN7.js → scheme-BKD9ztBU.js} +0 -0
  518. /package/dist/web/assets/{sdbl-iISFvIep.js → sdbl-D8gB5-rS.js} +0 -0
  519. /package/dist/web/assets/{shellscript-BkIl4ApC.js → shellscript-BfXlf_Ao.js} +0 -0
  520. /package/dist/web/assets/{shield-check-C5laObJv.js → shield-check-B0iGUiOK.js} +0 -0
  521. /package/dist/web/assets/{shield-off-DULFtyLS.js → shield-off-BNLWBhcq.js} +0 -0
  522. /package/dist/web/assets/{slack-dark-B1eg0_m2.js → slack-dark-CylEddse.js} +0 -0
  523. /package/dist/web/assets/{slack-ochin-mdkc1ldu.js → slack-ochin-w8wg8vuC.js} +0 -0
  524. /package/dist/web/assets/{smalltalk-CORtd03t.js → smalltalk-hiAXA64u.js} +0 -0
  525. /package/dist/web/assets/{snazzy-light-Bc6Q2G89.js → snazzy-light-BwlV3Xty.js} +0 -0
  526. /package/dist/web/assets/{solarized-dark-CF83zRXM.js → solarized-dark-vmNGdykz.js} +0 -0
  527. /package/dist/web/assets/{solarized-light-BoKQZaYU.js → solarized-light-DGv_0JXq.js} +0 -0
  528. /package/dist/web/assets/{solidity-DOgi1N4w.js → solidity-Y7QSH0B1.js} +0 -0
  529. /package/dist/web/assets/{sparkles-Dqsf3hq6.js → sparkles-Dh-_J2Rd.js} +0 -0
  530. /package/dist/web/assets/{splunk-BXfw5ZLy.js → splunk-BtgpLjHi.js} +0 -0
  531. /package/dist/web/assets/{sql-BcVs-eX4.js → sql-CRHYhOia.js} +0 -0
  532. /package/dist/web/assets/{ssh-config-CLCtNkkd.js → ssh-config-DOqSs3au.js} +0 -0
  533. /package/dist/web/assets/{stylus-DdP992aO.js → stylus-crCAEaBT.js} +0 -0
  534. /package/dist/web/assets/{swift-BnGb6Lgc.js → swift-eE3rT7TC.js} +0 -0
  535. /package/dist/web/assets/{synthwave-84-cg9264l9.js → synthwave-84-BWy14LBX.js} +0 -0
  536. /package/dist/web/assets/{system-verilog-GbHpszs3.js → system-verilog-DC0-DZM4.js} +0 -0
  537. /package/dist/web/assets/{systemd-Dz-bNsDQ.js → systemd-to5p6N8I.js} +0 -0
  538. /package/dist/web/assets/{table-CHmxuh6M.js → table-Bbc783ko.js} +0 -0
  539. /package/dist/web/assets/{talonscript-CFIidoBA.js → talonscript-DoTcU8wm.js} +0 -0
  540. /package/dist/web/assets/{tasl-Cu-TRTKx.js → tasl-cNZvUs95.js} +0 -0
  541. /package/dist/web/assets/{tcl-DwCHCB1K.js → tcl-mZE8sZH8.js} +0 -0
  542. /package/dist/web/assets/{terraform-BzZw4T1z.js → terraform-CqHPpIfu.js} +0 -0
  543. /package/dist/web/assets/{tokyo-night-RKsj2-tv.js → tokyo-night-Tp2rTIZd.js} +0 -0
  544. /package/dist/web/assets/{toml-CirbOgDP.js → toml-CU_vscgn.js} +0 -0
  545. /package/dist/web/assets/{tsv-CraRcWdU.js → tsv-ik7iFB9D.js} +0 -0
  546. /package/dist/web/assets/{tsx-CjFg0lgw.js → tsx-BMvvMKiv.js} +0 -0
  547. /package/dist/web/assets/{turtle-B-WBIOa6.js → turtle-DBqKCq9o.js} +0 -0
  548. /package/dist/web/assets/{typescript-MpLarYn1.js → typescript-DXJDmMZZ.js} +0 -0
  549. /package/dist/web/assets/{typespec-B7QlHMZ_.js → typespec-CBseCMtZ.js} +0 -0
  550. /package/dist/web/assets/{typst-CcHSKFZj.js → typst-4oY25U9y.js} +0 -0
  551. /package/dist/web/assets/{use-is-mobile-BXGVvczu.js → use-is-mobile-D1weanbj.js} +0 -0
  552. /package/dist/web/assets/{utils-DoY4yTP-.js → utils-BNRH507E.js} +0 -0
  553. /package/dist/web/assets/{v-xTGhWZuD.js → v-BXaZ_1oy.js} +0 -0
  554. /package/dist/web/assets/{vala-DwebjH3H.js → vala-BImWJE7z.js} +0 -0
  555. /package/dist/web/assets/{vb-BxJT2RAy.js → vb-CLfj2_sy.js} +0 -0
  556. /package/dist/web/assets/{vendor-xterm-CU6zIYMB.js → vendor-xterm-_yyu5n32.js} +0 -0
  557. /package/dist/web/assets/{verilog-CvV6RHPD.js → verilog-BWa8Ed2b.js} +0 -0
  558. /package/dist/web/assets/{vesper-CY3qd7E_.js → vesper-BGj1cg6m.js} +0 -0
  559. /package/dist/web/assets/{vhdl-B9ZX-sUL.js → vhdl-mByK7mlx.js} +0 -0
  560. /package/dist/web/assets/{viml-Y42h_ExQ.js → viml-CugmlW5g.js} +0 -0
  561. /package/dist/web/assets/{vitesse-black-DkXP6Sv-.js → vitesse-black-vPdpy9TL.js} +0 -0
  562. /package/dist/web/assets/{vitesse-dark-B9CkIB6r.js → vitesse-dark-BuQK3dUh.js} +0 -0
  563. /package/dist/web/assets/{vitesse-light-C7DHrJCK.js → vitesse-light-B3nz1XL9.js} +0 -0
  564. /package/dist/web/assets/{vyper-Cnd9s5j-.js → vyper-DH_GTIHG.js} +0 -0
  565. /package/dist/web/assets/{wasm-DQE71XTB.js → wasm-C-LF9GjX.js} +0 -0
  566. /package/dist/web/assets/{wasm-iWe7Fzjc.js → wasm-DfVbVJlW.js} +0 -0
  567. /package/dist/web/assets/{wenyan-Bc5Pnm9l.js → wenyan-CzQkHyHx.js} +0 -0
  568. /package/dist/web/assets/{wgsl-D-YUAWkP.js → wgsl-Du_M1DW9.js} +0 -0
  569. /package/dist/web/assets/{wikitext-DYQDUYf2.js → wikitext-BWN_w5S7.js} +0 -0
  570. /package/dist/web/assets/{wit-P6u7mfwy.js → wit-BR13v5HD.js} +0 -0
  571. /package/dist/web/assets/{wolfram-6SXLUqao.js → wolfram-BoXxp_Xl.js} +0 -0
  572. /package/dist/web/assets/{x-BcqfTY_7.js → x-nhriOX9o.js} +0 -0
  573. /package/dist/web/assets/{yaml-CQiMLVcZ.js → yaml-DpR_EF-d.js} +0 -0
  574. /package/dist/web/assets/{zenscript-DFMywo_P.js → zenscript-C-EdUtUd.js} +0 -0
  575. /package/dist/web/assets/{zig-CtAjaIiF.js → zig-BD4eA5nU.js} +0 -0
@@ -1 +0,0 @@
1
- import{H as e}from"./vendor-mermaid-DrwG0NYt.js";export{e as createInfoServices};
@@ -1 +0,0 @@
1
- import"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import"./api-client-BSB14J4w.js";import{fn as e}from"./index-Ch8l9de-.js";export{e as useKeybindingsStore};
@@ -1 +0,0 @@
1
- import"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import"./api-client-BSB14J4w.js";import"./vendor-mermaid-DrwG0NYt.js";import"./settings-store-C20lqh0G.js";import"./panel-store-DCD82zc1.js";import"./project-store-B8BkHXy5.js";import"./tab-store-DAsvpx4t.js";import{t as e}from"./markdown-renderer-B317vEys.js";import"./run-in-terminal-CyS5Itj-.js";export{e as MarkdownRenderer};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import{ft as r}from"./vendor-ui-CaeeFO0B.js";import{n as i}from"./utils-DoY4yTP-.js";var a=e(t(),1),o=80;function s(e){let t=e;for(;t&&t!==document.body;){let e=getComputedStyle(t).overflowY;if((e===`auto`||e===`scroll`)&&t.scrollHeight>t.clientHeight)return t;t=t.parentElement}return null}function c(e){let[t,n]=(0,a.useState)(0),r=(0,a.useRef)(0),i=(0,a.useRef)(!1),c=(0,a.useRef)(0),l=(0,a.useRef)(null);return{dragY:t,swipeHandlers:{onTouchStart:(0,a.useCallback)(e=>{r.current=e.touches[0].clientY,i.current=!0,c.current=0,l.current=s(e.target),n(0)},[]),onTouchMove:(0,a.useCallback)(e=>{if(!i.current)return;let t=e.touches[0].clientY,a=l.current;if(a&&a.scrollTop>0){r.current=t,c.current!==0&&(c.current=0,n(0));return}let o=t-r.current,s=Math.max(0,o);c.current=s,n(s)},[]),onTouchEnd:(0,a.useCallback)(()=>{i.current&&(i.current=!1,c.current>=o&&e(),c.current=0,n(0))},[e])},dragStyle:t>0?{transform:`translateY(${t}px)`}:void 0,backdropOpacity:t>0?Math.max(0,1-t/300):1,isDragging:t>0}}var l=120;function u(e){let t=Math.max(0,window.innerHeight-e.height-e.offsetTop);return{height:e.height,keyboardInset:t,keyboardOpen:t>=l}}function d(e){let[t,n]=(0,a.useState)(null);return(0,a.useEffect)(()=>{let t=window.visualViewport;if(!e||!t){n(null);return}let r=null,i=()=>{r=null,n(e=>{let n=u(t);return e&&e.height===n.height&&e.keyboardInset===n.keyboardInset?e:n})},a=()=>{r===null&&(r=requestAnimationFrame(i))};return i(),t.addEventListener(`resize`,a),t.addEventListener(`scroll`,a),()=>{r!==null&&cancelAnimationFrame(r),t.removeEventListener(`resize`,a),t.removeEventListener(`scroll`,a)}},[e]),t}var f=e(r(),1),p=n();function m({open:e,onClose:t,children:n,className:r,zIndex:a=50}){let{dragY:o,swipeHandlers:s,dragStyle:l,backdropOpacity:u,isDragging:m}=c(t),g=d(e);return e?(0,f.createPortal)((0,p.jsxs)(`div`,{className:`fixed inset-0`,style:{zIndex:a,"--sheet-vh":g?`${g.height}px`:`100dvh`,"--sheet-kb":g?`${g.keyboardInset}px`:`0px`},onClick:t,children:[(0,p.jsx)(`div`,{className:`absolute inset-0 bg-black/40 animate-in fade-in-0 duration-200`,style:m?{opacity:u}:void 0}),(0,p.jsxs)(`div`,{className:i(`absolute bottom-0 left-0 right-0 rounded-t-2xl bg-popover text-popover-foreground border-t border-border`,g?.keyboardOpen?`pb-[var(--sheet-kb,0px)]`:`pb-[max(0.5rem,env(safe-area-inset-bottom))]`,!m&&`animate-in slide-in-from-bottom duration-200`,r),style:l,onClick:e=>e.stopPropagation(),...s,children:[(0,p.jsx)(`div`,{className:`flex justify-center pt-3 pb-1 shrink-0`,children:(0,p.jsx)(`div`,{className:`w-10 h-1 rounded-full bg-border`})}),n]})]}),h()):null}function h(){return document.getElementById(`root`)??document.body}var g=(0,a.createContext)({open:!1,setOpen:()=>{}});function _({children:e,onClick:t,variant:n,className:r,disabled:o}){let{setOpen:s}=(0,a.useContext)(g);return(0,p.jsx)(`button`,{disabled:o,className:i(`flex w-full items-center gap-2 rounded-lg px-3 py-3 text-sm text-left`,`active:bg-accent transition-colors select-none`,`disabled:pointer-events-none disabled:opacity-50`,n===`destructive`&&`text-destructive`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,r),onClick:e=>{t?.(e),s(!1)},children:e})}function v({className:e}){return(0,p.jsx)(`div`,{className:i(`-mx-1 my-1 h-px bg-border`,e)})}function y({children:e,className:t}){return(0,p.jsx)(`div`,{className:i(`flex items-center gap-2 px-3 py-2 text-xs font-medium text-muted-foreground select-none`,`[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,t),children:e})}function b({children:e,className:t}){return(0,p.jsx)(`div`,{className:i(`pl-2`,t),children:e})}export{b as a,v as i,g as n,y as o,_ as r,d as s,m as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./explorer-body-j_4hVc34.js";import"./context-menu-Cq0u3SK9.js";import"./api-client-BSB14J4w.js";import"./vendor-mermaid-DrwG0NYt.js";import"./settings-store-C20lqh0G.js";import"./panel-store-DCD82zc1.js";import"./tab-store-DAsvpx4t.js";import"./button-BA_fJOtX.js";import"./use-is-mobile-BXGVvczu.js";import{t as i}from"./mobile-bottom-sheet-BUOJgiaZ.js";import{Ct as a,nt as o,rt as s}from"./index-Ch8l9de-.js";var c=e(t(),1),l=n();function u(){let e=s(e=>e.isOpen),t=s(e=>e.close),n=s(e=>e.setSelectMode),u=a(e=>e.slices[o]?.path),d=a(e=>e.slices[o]?.inlineEdit?.kind===`rename`);(0,c.useEffect)(()=>{n(!1)},[u,n]);let f=e=>{d&&e.stopPropagation()};return e?(0,l.jsx)(i,{open:e,onClose:t,zIndex:45,className:`flex h-[var(--sheet-vh)] flex-col p-0`,children:(0,l.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,onTouchStart:f,onTouchMove:f,children:u?(0,l.jsx)(r,{windowId:o,initialPath:u,variant:`sheet`}):(0,l.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-text-2`,children:`Loading…`})})}):null}export{u as MobileExplorerSheet};
@@ -1 +0,0 @@
1
- import"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import"./api-client-BSB14J4w.js";import{xn as e}from"./index-Ch8l9de-.js";export{e as useNotificationStore};
@@ -1 +0,0 @@
1
- import{B as e}from"./vendor-mermaid-DrwG0NYt.js";export{e as createPacketServices};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-I_EwPIZi.js";import{r as t}from"./utils-DoY4yTP-.js";var n=`__dock__`,r=new Set([`terminal`,`system-monitor`]);function i(){return{id:n,tabs:[],activeTabId:null,tabHistory:[]}}function a(){return`panel-${t()}`}function o(e=[],t=null){return{id:a(),tabs:e,activeTabId:t,tabHistory:t?[t]:[]}}function s(e){return e?1:3}function c(e,t){return e.map(e=>e.filter(e=>e!==t)).filter(e=>e.length>0)}function l(e,t){return!t||t===`__global__`?e:e.filter(e=>!e.projectId||e.projectId===t)}function u(e,t){for(let n=0;n<e.length;n++){let r=e[n].indexOf(t);if(r!==-1)return{row:n,col:r}}return null}function d(e){let t=0;for(let n of Object.values(e))for(let e of n.tabs){let n=e.id.match(/^editor:untitled-(\d+)$/);n&&(t=Math.max(t,Number(n[1])))}return t+1}function f(e,n){switch(e){case`editor`:return n?.viewerKey?`editor:viewer:${n.viewerKey}`:n?.isUntitled?`editor:untitled-${n.untitledNumber??1}`:`editor:${n?.filePath??`untitled`}`;case`chat`:return`chat:${n?.providerId??`default`}/${n?.sessionId??t()}`;case`terminal`:return`terminal:${n?.terminalIndex??1}`;case`database`:return`database:${n?.connectionId??`default`}:${n?.tableName??``}`;case`sqlite`:return`sqlite:${n?.filePath??`default`}`;case`postgres`:return`postgres:${n?.connectionId??`default`}:${n?.tableName??``}`;case`extension`:return`extension:${String(n?.viewType??`unknown`).replace(/\.view$/,``)}`;case`git-diff`:return`git-diff:${n?.filePath??`unknown`}`;case`conflict-editor`:return`conflict-editor:${n?.filePath??`unknown`}`;case`settings`:return`settings`;case`group`:return`group:${n?.groupId??`unknown`}`;default:return`${e}:${t()}`}}var p=new Set([`ports`,`tunnels`]);function m(e){if(!e.tabs.some(e=>p.has(e.type)))return e;let t=new Set(e.tabs.filter(e=>p.has(e.type)).map(e=>e.id)),n=e.tabs.filter(e=>!t.has(e.id)),r=e.tabHistory.filter(e=>!t.has(e)),i=e.activeTabId&&!t.has(e.activeTabId)?e.activeTabId:r[r.length-1]??n[n.length-1]?.id??null;return{...e,tabs:n,tabHistory:r,activeTabId:i}}function h(e){let t={};for(let[n,r]of Object.entries(e.panels))t[n]=m(r);let n=e.dockPanel?m(e.dockPanel):e.dockPanel;return{...e,panels:t,dockPanel:n}}function g(e){let t={...e,panels:{...e.panels}};for(let[e,n]of Object.entries(t.panels)){let r=n.tabs.map(e=>{if(e.id.startsWith(`tab-`)){let t=f(e.type,e.metadata);return{...e,id:t}}return e}),i=new Map;n.tabs.forEach((e,t)=>{e.id!==r[t].id&&i.set(e.id,r[t].id)});let a=i.get(n.activeTabId??``)??n.activeTabId,o=n.tabHistory.map(e=>i.get(e)??e);t.panels[e]={...n,tabs:r,activeTabId:a,tabHistory:o}}return t}var _=`ppm-panels-`,v=`ppm-tabs-`;function y(e){return`${_}${e}`}function b(e,t){try{let n={...t,updatedAt:new Date().toISOString()};localStorage.setItem(y(e),JSON.stringify(n)),e!==`__global__`&&T(e,t)}catch{}}function x(e){try{let t=localStorage.getItem(y(e));if(t)return S(g(h(JSON.parse(t))))}catch{}let t=O(e);return t?S(h(t)):null}function S(e){let t=e.dock??{visible:!1,height:30},n;if(!e.dockPanel)n=i();else{let t=e.dockPanel.tabs.filter(e=>r.has(e.type)),i=new Set(t.map(e=>e.id)),a=e.dockPanel.tabHistory.filter(e=>i.has(e)),o=e.dockPanel.activeTabId&&i.has(e.dockPanel.activeTabId)?e.dockPanel.activeTabId:a[a.length-1]??t[t.length-1]?.id??null;n={...e.dockPanel,tabs:t,tabHistory:a,activeTabId:o}}return{...e,dock:t,dockPanel:n}}async function C(e){if(e===`__global__`)return null;try{let t={},n=localStorage.getItem(`ppm-auth-token`);n&&(t.Authorization=`Bearer ${n}`);let r=await fetch(`/api/project/${encodeURIComponent(e)}/workspace`,{headers:t});if(!r.ok)return null;let i=await r.json();return!i.ok||!i.data?null:{...i.data.layout,updatedAt:i.data.updatedAt}}catch{return null}}var w=new Map;function T(e,t){let n=w.get(e);n&&clearTimeout(n),w.set(e,setTimeout(async()=>{w.delete(e);try{let n={"Content-Type":`application/json`},r=localStorage.getItem(`ppm-auth-token`);r&&(n.Authorization=`Bearer ${r}`);let i=await fetch(`/api/project/${encodeURIComponent(e)}/workspace`,{method:`PUT`,headers:n,body:JSON.stringify({layout:t})});if(i.ok){let t=await i.json();if(t.data?.updatedAt){let n=`${_}${e}`,r=localStorage.getItem(n);if(r){let e=JSON.parse(r);e.updatedAt=t.data.updatedAt,localStorage.setItem(n,JSON.stringify(e))}}}}catch{}},1500))}function E(e,t){if(!e&&!t)return null;if(!e)return t;if(!t)return e;let n=new Date(e.updatedAt).getTime();return new Date(t.updatedAt).getTime()>=n?t:e}async function D(e){if(e===`__global__`)return!1;let t=await C(e);if(!t)return!1;let n=`${_}${e}`,r=null;try{let e=localStorage.getItem(n);r=e?JSON.parse(e):null}catch{}if(E(r,t)!==t)return!1;try{let e={...h(t),updatedAt:t.updatedAt};return localStorage.setItem(n,JSON.stringify(e)),!0}catch{return!1}}function O(e){try{let t=localStorage.getItem(`${v}${e}`);if(!t)return null;let n=JSON.parse(t);if(!n.tabs?.length)return null;let r=o(n.tabs,n.activeTabId),i={panels:{[r.id]:r},grid:[[r.id]],focusedPanelId:r.id};return b(e,i),localStorage.removeItem(`${v}${e}`),i}catch{return null}}var k=15,A=85;function j(e){return Math.min(A,Math.max(k,e))}function M(e,t){let n=e.filter(e=>e!==t);return n.push(t),n.length>50&&n.shift(),n}function N(e){let t=e().panels[n];if(!t)return 0;let r=e().currentProject;return t.tabs.filter(e=>!e.projectId||!r||e.projectId===r).length}function P(e){let t=e().currentProject;e().openInDock({type:`terminal`,title:`Terminal`,projectId:t??null,closable:!0,metadata:t?{projectName:t}:void 0})}function F(e,t){return function(){let{dock:n}=t(),r=!n.visible;e({dock:{...n,visible:r}}),B(t),r&&N(t)===0&&P(t)}}function I(e,t){return function(n){let{dock:r}=t();e({dock:{...r,visible:n}}),B(t)}}function L(e,t){return function(n){let{dock:r}=t();e({dock:{...r,height:j(n)}}),B(t)}}function R(e,t){return function(r){let{panels:a,dock:o}=t(),s=a.__dock__??i(),c=r;if(r.type===`terminal`&&!r.metadata?.terminalIndex){let e=Object.values(a).flatMap(e=>e.tabs).filter(e=>e.type===`terminal`).map(e=>{let t=e.id.match(/^terminal:(\d+)/);return t?parseInt(t[1],10):0}),t=e.length>0?Math.max(...e)+1:1;c={...r,metadata:{...r.metadata,terminalIndex:t}}}let l=f(c.type,c.metadata);if(s.tabs.find(e=>e.id===l))return e(e=>({dock:{...e.dock,visible:!0},panels:{...e.panels,[n]:{...s,activeTabId:l,tabHistory:M(s.tabHistory,l)}}})),B(t),l;let u={...c,id:l},d=[...s.tabs,u],p=M(s.tabHistory,l);return e(e=>({dock:{...e.dock,visible:!0},panels:{...e.panels,[n]:{...s,tabs:d,activeTabId:l,tabHistory:p}}})),B(t),l}}function z(e,t){return function(r,i){t().moveTab(r,i,n);let{dock:a}=t();e({dock:{...a,visible:!0}}),B(t)}}function B(e){let{currentProject:t,panels:n,grid:r,focusedPanelId:a,dock:o}=e();if(!t)return;let s=new Set(r.flat()),c={};for(let[e,t]of Object.entries(n))s.has(e)&&(c[e]=t);b(t,{panels:c,grid:r,focusedPanelId:a,dock:o,dockPanel:n.__dock__??i()})}function V(e,t,n){return{...n,[e]:t}}function H(e,t){return t[e]??{visible:!1,height:30}}function U(e,t){return t&&e.visible?{...e,visible:!1}:e}var W=new Set([`settings`,`git-log`]),G=new Set([`projects`,`git-status`,`git-graph`]);function K(e,t){if(!e)return null;let n=e.tabs.filter(e=>!e.projectId||e.projectId===t);if(n.length===0)return null;for(let t=e.tabHistory.length-1;t>=0;t--){let r=e.tabHistory[t];if(n.some(e=>e.id===r))return r}return n[n.length-1].id}function q(e,t){let n=e.filter(e=>e!==t);return n.push(t),n.length>50&&n.shift(),n}function J(e,t){let n=Date.now();return e.map(e=>e.id===t?{...e,metadata:{...e.metadata,lastActiveAt:n}}:e)}function Y(){let e=o(),t=i();return{panels:{[e.id]:e,[n]:t},grid:[[e.id]],focusedPanelId:e.id}}var X=e()((e,t)=>{function r(){let{currentProject:e,panels:r,grid:i,focusedPanelId:a,dock:o}=t();if(!e)return;let s=new Set(i.flat()),c={};for(let[e,t]of Object.entries(r))s.has(e)&&(c[e]=t);b(e,{panels:c,grid:i,focusedPanelId:a,dock:o,dockPanel:r[n]})}function a(e){return Object.values(t().panels).find(t=>t.tabs.some(t=>t.id===e))}function d(e){return e??t().focusedPanelId}return{...Y(),currentProject:null,projectGrids:{},projectFocused:{},dock:{visible:!1,height:30},projectDock:{},dockExpanded:!1,toggleDock:F(e,t),setDockVisible:I(e,t),setDockHeight:L(e,t),toggleDockExpanded:()=>e(e=>({dockExpanded:!e.dockExpanded})),openInDock:R(e,t),redockTab:z(e,t),switchProject:r=>{let{currentProject:a,panels:s,grid:u,focusedPanelId:d,projectGrids:f,projectFocused:p,dock:m,projectDock:h}=t();if(a===r)return;let g={...f},_={...p},v=a?V(a,m,h):{...h};if(a){g[a]=u,_[a]=d;let e=new Set(u.flat()),t={};for(let[n,r]of Object.entries(s))e.has(n)&&(t[n]=r);b(a,{panels:t,grid:u,focusedPanelId:d,dock:m,dockPanel:s[n]})}if(g[r]){let t=g[r],i=_[r]??t[0]?.[0]??``,a=H(r,v),o=s[n];e({currentProject:r,panels:o?{...s,[n]:{...o,activeTabId:K(o,r)}}:s,grid:t,focusedPanelId:i,projectGrids:g,projectFocused:_,dock:a,projectDock:v});return}let y=x(r);if(y&&Object.keys(y.panels).length>0){let a=!1,o={};for(let[e,t]of Object.entries(y.panels)){let n=l(t.tabs,r).filter(e=>!G.has(e.type));n.length!==t.tabs.length&&(a=!0);let i=t.tabHistory.filter(e=>n.some(t=>t.id===e)),s=t.activeTabId&&n.some(e=>e.id===t.activeTabId)?t.activeTabId:i[i.length-1]??n[0]?.id??null;o[e]={...t,tabs:n,tabHistory:i,activeTabId:s}}let u=y.grid;for(let e of u.flat())if(!((o[e]?.tabs.length??0)>0)){if(u.flat().length<=1)break;u=c(u,e),delete o[e],a=!0}let d=u.flat().includes(y.focusedPanelId)?y.focusedPanelId:u.flat()[0]??y.focusedPanelId,f=s.__dock__??i(),p=y.dockPanel??i(),m=[...f.tabs];for(let e of p.tabs)m.some(t=>t.id===e.id)||m.push(e);let h={...f,tabs:m,tabHistory:[...new Set([...f.tabHistory,...p.tabHistory])].filter(e=>m.some(t=>t.id===e)),activeTabId:null};h.activeTabId=K(h,r);let x={...s,...o,[n]:h};g[r]=u,_[r]=d;let S=U(y.dock??H(r,v),t().isMobile());e({currentProject:r,panels:x,grid:u,focusedPanelId:d,projectGrids:g,projectFocused:_,dock:S,projectDock:v}),a&&b(r,{panels:o,grid:u,focusedPanelId:d,dock:S,dockPanel:h})}else{let t=o(),i=[[t.id]],a={...s,[t.id]:t};g[r]=i,_[r]=t.id;let c=H(r,v);b(r,{panels:{[t.id]:t},grid:i,focusedPanelId:t.id,dock:c,dockPanel:s[n]}),e({currentProject:r,panels:a,grid:i,focusedPanelId:t.id,projectGrids:g,projectFocused:_,dock:c,projectDock:v})}},reloadProject:r=>{let{projectGrids:i,projectFocused:a,projectDock:o,panels:s}=t(),c={...i},l={...a},u={...o};delete c[r],delete l[r],delete u[r];let d=i[r],f=d?new Set(d.flat()):new Set,p={...s};for(let e of f)e!==`__dock__`&&delete p[e];let m=p[n];if(m){let e=m.tabs.filter(e=>e.projectId!==r),t=new Set(e.map(e=>e.id));p[n]={...m,tabs:e,tabHistory:m.tabHistory.filter(e=>t.has(e)),activeTabId:m.activeTabId&&t.has(m.activeTabId)?m.activeTabId:e[e.length-1]?.id??null}}e({projectGrids:c,projectFocused:l,projectDock:u,panels:p,currentProject:null}),t().switchProject(r)},setFocusedPanel:n=>{t().panels[n]&&e({focusedPanelId:n})},openTab:(n,i)=>{let a=t().isMobile(),o=a?t().grid[0]?.[0]??d(i):d(i);if(!t().panels[o])return``;if(n.type===`terminal`&&!n.metadata?.terminalIndex){let e=Object.values(t().panels).flatMap(e=>e.tabs).filter(e=>e.type===`terminal`).map(e=>{let t=e.id.match(/^terminal:(\d+)/);return t?parseInt(t[1],10):0}),r=e.length>0?Math.max(...e)+1:1;n={...n,metadata:{...n.metadata,terminalIndex:r}}}let s=f(n.type,n.metadata);if(n.type===`chat`&&n.metadata?.sessionId){let i=n.metadata.sessionId;for(let n of Object.values(t().panels)){let t=n.tabs.find(e=>e.type===`chat`&&e.metadata?.sessionId===i);if(t)return e(e=>({focusedPanelId:n.id,panels:{...e.panels,[n.id]:{...n,tabs:J(n.tabs,t.id),activeTabId:t.id,tabHistory:q(n.tabHistory,t.id)}}})),r(),t.id}}if(W.has(n.type))for(let n of Object.values(t().panels)){let t=n.tabs.find(e=>e.id===s);if(t)return e(e=>({focusedPanelId:n.id,panels:{...e.panels,[n.id]:{...n,tabs:J(n.tabs,t.id),activeTabId:t.id,tabHistory:q(n.tabHistory,t.id)}}})),r(),t.id}if(a)for(let n of t().grid.flat()){let i=t().panels[n];if(!i)continue;let a=i.tabs.find(e=>e.id===s||e.id.startsWith(`${s}@`));if(a)return e(e=>({focusedPanelId:i.id,panels:{...e.panels,[i.id]:{...i,tabs:J(i.tabs,a.id),activeTabId:a.id,tabHistory:q(i.tabHistory,a.id)}}})),r(),a.id}let c=t().panels[o],l=c.tabs.find(e=>e.id===s);if(l)return e(e=>({panels:{...e.panels,[o]:{...c,tabs:J(c.tabs,l.id),activeTabId:l.id,tabHistory:q(c.tabHistory,l.id)}}})),r(),l.id;let u=Object.values(t().panels).some(e=>e.id!==o&&e.tabs.some(e=>e.id===s))?`${s}@${o}`:s,p={...n,id:u,metadata:{...n.metadata,lastActiveAt:Date.now()}};return e(e=>{let t=e.panels[o];return{focusedPanelId:o,panels:{...e.panels,[o]:{...t,tabs:[...t.tabs,p],activeTabId:u,tabHistory:q(t.tabHistory,u)}}}}),r(),u},closeTab:(n,i)=>{let o=i?t().panels[i]:a(n);if(!o)return;let s=o.id;if(n.startsWith(`terminal:`))try{localStorage.removeItem(`ppm:terminal-session:${n}`)}catch{}e(e=>{let t=e.panels[s],r=t.tabs.filter(e=>e.id!==n),i=t.tabHistory.filter(e=>e!==n),a=t.activeTabId;if(t.activeTabId===n){let e=i.length>0?i[i.length-1]:null;a=e&&r.some(t=>t.id===e)?e:r[r.length-1]?.id??null}let o=e.grid.flat().length;if(r.length===0&&o>1&&s!==`__dock__`){let{[s]:t,...n}=e.panels,r=c(e.grid,s);return{panels:n,grid:r,focusedPanelId:e.focusedPanelId===s?r.flat()[0]??Object.keys(n)[0]:e.focusedPanelId}}return{panels:{...e.panels,[s]:{...t,tabs:r,activeTabId:a,tabHistory:i}}}}),r(),s===`__dock__`&&N(t)===0&&t().setDockVisible(!1)},setActiveTab:(n,i)=>{let o=i?t().panels[i]:a(n);if(!o)return;let s=o.id;e(e=>{let t=e.panels[s];return{focusedPanelId:s,panels:{...e.panels,[s]:{...t,tabs:J(t.tabs,n),activeTabId:n,tabHistory:q(t.tabHistory,n)}}}}),r()},updateTab:(t,n)=>{let i=a(t);i&&(e(e=>({panels:{...e.panels,[i.id]:{...i,tabs:i.tabs.map(e=>e.id===t?{...e,...n}:e)}}})),r())},reorderTab:(n,i,a)=>{let o=t().panels[i];if(!o)return;let s=o.tabs.findIndex(e=>e.id===n);if(s===-1||s===a)return;let c=[...o.tabs],[l]=c.splice(s,1);c.splice(a,0,l),e(e=>({panels:{...e.panels,[i]:{...o,tabs:c}}})),r()},moveTab:(n,i,a,o)=>{if(i===a)return;let s=t().panels[i],l=t().panels[a];if(!s||!l)return;let u=s.tabs.find(e=>e.id===n);if(!u)return;let d=s.tabs.filter(e=>e.id!==n),f=s.tabHistory.filter(e=>e!==n),p=s.activeTabId===n?f[f.length-1]??d[d.length-1]?.id??null:s.activeTabId,m=[...l.tabs];o===void 0?m.push(u):m.splice(o,0,u),e(e=>{let t=e.grid.flat().length;if(d.length===0&&t>1&&i!==`__dock__`){let{[i]:t,...r}=e.panels;return{panels:{...r,[a]:{...l,tabs:m,activeTabId:n,tabHistory:q(l.tabHistory,n)}},grid:c(e.grid,i),focusedPanelId:a}}return{focusedPanelId:a,panels:{...e.panels,[i]:{...s,tabs:d,activeTabId:p,tabHistory:f},[a]:{...l,tabs:m,activeTabId:n,tabHistory:q(l.tabHistory,n)}}}}),r()},splitPanel:(n,i,a,l)=>{let{grid:d,panels:f}=t(),p=t().isMobile(),m=f[a];if(!m)return!1;let h=m.tabs.find(e=>e.id===i);if(!h)return!1;let g=u(d,l??a);if(!g)return!1;let _=n===`left`||n===`right`,v=n===`up`||n===`down`;if(_&&(d[g.row]?.length??0)>=s(p)||v&&d.length>=3)return!1;let y=o([h],h.id);y.tabHistory=[h.id];let b=m.tabs.filter(e=>e.id!==i),x=m.tabHistory.filter(e=>e!==i),S=m.activeTabId===i?x[x.length-1]??b[b.length-1]?.id??null:m.activeTabId,C;if(_)C=d.map((e,t)=>{if(t!==g.row)return e;let r=[...e],i=n===`right`?g.col+1:g.col;return r.splice(i,0,y.id),r});else{C=[...d];let e=n===`down`?g.row+1:g.row;C.splice(e,0,[y.id])}return e(e=>{let t=e.grid.flat().length,n={...e.panels,[y.id]:y};if(b.length===0&&t>1){let{[a]:e,...t}=n;n=t,C=c(C,a)}else n[a]={...m,tabs:b,activeTabId:S,tabHistory:x};return{panels:n,grid:C,focusedPanelId:y.id}}),r(),!0},closePanel:n=>{let{panels:i,grid:a}=t();if(a.flat().length<=1)return;let o=i[n];if(!o)return;u(a,n);let s=a.flat(),l=s.indexOf(n),d=l>0?s[l-1]:s[1],f=i[d];f&&(e(e=>{let{[n]:t,...r}=e.panels,i=[...f.tabs,...o.tabs],a=f.activeTabId??o.activeTabId;return{panels:{...r,[d]:{...f,tabs:i,activeTabId:a,tabHistory:[...f.tabHistory,...o.tabHistory]}},grid:c(e.grid,n),focusedPanelId:d}}),r())},getPanelForTab:e=>a(e),isMobile:()=>typeof window<`u`&&window.innerWidth<768}});export{d as a,l as c,u as i,n,D as o,o as r,s,X as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./file-exclamation-point-COAwgNGw.js";import{i,r as a}from"./api-client-BSB14J4w.js";import{$n as o,vr as s}from"./index-Ch8l9de-.js";var c=e(t(),1),l=n();function u({filePath:e,projectName:t}){let n=(0,c.useRef)(null),[u,d]=(0,c.useState)(!1),[f,p]=(0,c.useState)(!1),m=(0,c.useMemo)(()=>{let n=/^(\/|[A-Za-z]:[/\\])/.test(e)?`/api/fs/raw?path=${encodeURIComponent(e)}`:`${i(t)}/files/raw?path=${encodeURIComponent(e)}`,r=a();return r?`${n}&token=${encodeURIComponent(r)}`:n},[e,t]);(0,c.useEffect)(()=>{let r=r=>{let i=r.detail;if(!(i.projectName!==t||i.path!==e))try{n.current?.contentWindow?.location.reload()}catch{}};return window.addEventListener(`file:changed`,r),()=>window.removeEventListener(`file:changed`,r)},[e,t]);let h=(0,c.useCallback)(()=>{window.open(m,`_blank`)},[m]);return f?(0,l.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,l.jsx)(r,{className:`size-10 text-text-subtle`}),(0,l.jsx)(`p`,{className:`text-sm`,children:`Failed to load PDF.`})]}):(0,l.jsxs)(`div`,{className:`flex flex-col h-full`,children:[!u&&(0,l.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,l.jsx)(o,{className:`size-5 animate-spin text-text-subtle`})}),(0,l.jsxs)(`div`,{className:`flex flex-col h-full ${u?``:`hidden`}`,children:[(0,l.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1.5 border-b border-border bg-background shrink-0`,children:[(0,l.jsx)(`span`,{className:`text-xs text-text-secondary truncate`,children:e}),(0,l.jsxs)(`button`,{onClick:h,className:`flex items-center gap-1 text-xs text-text-secondary hover:text-text-primary transition-colors`,children:[(0,l.jsx)(s,{className:`size-3`}),` Open in new tab`]})]}),(0,l.jsx)(`iframe`,{ref:n,src:m,title:e,className:`flex-1 w-full border-none`,onLoad:()=>d(!0),onError:()=>p(!0)})]})]})}export{u as PdfPreview};
@@ -1 +0,0 @@
1
- import{R as e}from"./vendor-mermaid-DrwG0NYt.js";export{e as createPieServices};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./chevron-right-BLOtX8Vy.js";import{t as i}from"./x-BcqfTY_7.js";import{r as a,s as o}from"./api-client-BSB14J4w.js";import{n as s}from"./utils-DoY4yTP-.js";import{t as c}from"./button-BA_fJOtX.js";import{n as l}from"./use-is-mobile-BXGVvczu.js";import{t as u}from"./mobile-bottom-sheet-BUOJgiaZ.js";import{$t as d,Bn as f,Dr as p,Ft as m,G as h,Jt as g,Mr as _,Nr as v,Qt as y,Yt as b}from"./index-Ch8l9de-.js";import{n as x,t as S}from"./format-bytes-BE_W3UBg.js";var C=e(t(),1);function w(e,t){return{cpu:e.cpu,ramMB:e.ramMB,name:t,diskReadBps:e.diskReadBps,diskWriteBps:e.diskWriteBps,gpuPct:e.gpuPct,gpuMemMB:e.gpuMemMB,netInBps:e.netInBps,netOutBps:e.netOutBps}}function T(e,t){if(!(e===void 0&&t===void 0))return(e??0)+(t??0)}function E(e,t){return e===`disk`?T(t.diskReadBps,t.diskWriteBps):e===`net`?T(t.netInBps,t.netOutBps):e===`gpu`?t.gpuPct:t.gpuMemMB}function D(e){return e===`disk`||e===`gpu`||e===`gpuMem`||e===`net`}function O(e,t,n,r){return t?[...e].sort((e,i)=>{let a=r(e),o=r(i);if(t===`name`){let e=a.name.localeCompare(o.name);return n===`asc`?e:-e}if(t===`cpu`)return n===`asc`?a.cpu-o.cpu:o.cpu-a.cpu;if(t===`ram`)return n===`asc`?a.ramMB-o.ramMB:o.ramMB-a.ramMB;if(D(t)){let e=E(t,a),r=E(t,o);return e===void 0&&r===void 0?0:e===void 0?1:r===void 0?-1:n===`asc`?e-r:r-e}return 0}):e}var k={cpu:0,ramMB:0,count:0};function A(e,t){return t===void 0?e:(e??0)+t}function j(e,t,n){return{cpu:e.cpu+t.cpu,ramMB:e.ramMB+t.ramMB,count:e.count+n,diskReadBps:A(e.diskReadBps,t.diskReadBps),diskWriteBps:A(e.diskWriteBps,t.diskWriteBps),gpuMemMB:A(e.gpuMemMB,t.gpuMemMB),netInBps:A(e.netInBps,t.netInBps),netOutBps:A(e.netOutBps,t.netOutBps)}}function M(e,t){return e.toLowerCase().includes(t)}function N(e,t){return M(e.name,t)||M(e.command,t)}function ee(e){let{processes:t,groups:n,mode:r,ppmOnly:i,query:a,sortKey:o,sortDir:s,expanded:c}=e,l=a.trim().toLowerCase(),u=new Map(t.map(e=>[e.pid,e]));if(r===`flat`){let e=i?t.filter(e=>e.ppm):t;l&&(e=e.filter(e=>N(e,l))),e=O(e,o,s,e=>w(e,e.name));let n=e.reduce((e,t)=>j(e,t,1),k);return{rows:e.map(e=>({kind:`process`,proc:e,indent:!1})),totals:n,autoExpanded:new Set}}let d=i?n.filter(e=>e.ppm):n,f=new Set;l&&(d=d.filter(e=>{let t=M(e.label,l),n=e.pids.some(e=>{let t=u.get(e);return t?N(t,l):!1}),r=t||n;return r&&n&&f.add(e.key),r})),d=O(d,o,s,e=>w(e,e.label));let p=[];for(let e of d){let t=l&&f.has(e.key)||c.has(e.key);if(p.push({kind:`group`,group:e,expanded:t}),!t)continue;let n=e.pids.map(e=>u.get(e)).filter(e=>e!==void 0);l&&(n=n.filter(e=>N(e,l))),n=O(n,o,s,e=>w(e,e.name));for(let e of n)p.push({kind:`process`,proc:e,indent:!0})}return{rows:p,totals:d.reduce((e,t)=>j(e,t,t.count),k),autoExpanded:f}}function te(e,t,n){return e===n?t===`desc`?[n,`asc`]:[null,`desc`]:[n,`desc`]}var P=[`disk`,`gpu`,`net`],ne={cpu:64,ram:80,disk:120,gpu:90,net:120},F=`minmax(0,1fr)`,I=`44px`;function re(e){return e===`disk`||e===`gpu`||e===`net`}function L(e){return Math.round(Math.min(400,Math.max(48,e)))}function R(e,t){let n=t[e];return typeof n==`number`&&Number.isFinite(n)?L(n):ne[e]}function ie(e,t,n={}){let r=P.filter(t=>e[t]),i=re(t)&&e[t]?t:null,a=e=>`${R(e,n)}px`,o=[F,a(`cpu`),a(`ram`)];return{wideTemplate:[...o,...r.map(a),I].join(` `),narrowTemplate:[...o,...i?[a(i)]:[],I].join(` `),columns:e,narrowExtra:i}}var z=`grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`;function B(e){return{"--sysmon-grid-n":e.narrowTemplate,"--sysmon-grid-w":e.wideTemplate}}function V(e,t){return e.narrowExtra===t?`block`:`hidden @lg:block`}function H(e){return e>80?`text-error`:e>50?`text-warning`:`text-success`}function ae(e){if(!e)return``;let t=Math.round((Date.now()-e)/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}function U(e,t){return e===void 0&&t===void 0?`—`:`↓ ${S(e??0)} ↑ ${S(t??0)}`}function W(e,t){return e===void 0&&t===void 0?`—`:`↓ ${S(e??0)} ↑ ${S(t??0)}`}function G(e,t){return e===void 0&&t===void 0?`—`:`${e===void 0?`—`:`${e.toFixed(0)}%`} · ${t===void 0?`—`:x(t)}`}function K(e,t){if(!(e===void 0&&t===void 0))return(e??0)+(t??0)}var q=n();function J({label:e,field:t,activeKey:n,activeDir:r,onClick:i,align:a=`right`,testId:o,className:c,resizeKey:l,resize:u}){let d=n===t,f=d?r===`asc`?_:v:null,p=d?r===`asc`?`ascending`:`descending`:`none`;return(0,q.jsxs)(`div`,{role:`columnheader`,"aria-sort":p,className:s(`relative py-1.5 px-2 font-medium select-none`,a===`left`?`text-left`:`text-right`,c),children:[(0,q.jsxs)(`button`,{type:`button`,"data-testid":o,onClick:()=>i(t),className:s(`flex items-center gap-0.5 w-full min-h-11 md:min-h-0 cursor-pointer hover:text-text-primary transition-colors`,a===`left`?`justify-start`:`justify-end`,d&&`text-text-primary`),children:[(0,q.jsx)(`span`,{className:`truncate`,children:e}),f&&(0,q.jsx)(f,{className:`size-3 shrink-0`})]}),l&&u&&(0,q.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize ${e} column`,"data-testid":o?`${o}-resize`:void 0,onPointerDown:e=>u.onResizeStart(l,e),onDoubleClick:()=>u.onResizeReset(l),className:`hidden md:block absolute top-0 -right-1 h-full w-2 cursor-col-resize hover:bg-primary/40 active:bg-primary/60`})]})}var oe=150;function se({mode:e,onModeChange:t,ppmOnly:n,onPpmOnlyChange:r,onQueryChange:i}){let[a,o]=(0,C.useState)(``),c=(0,C.useRef)(null);return(0,C.useEffect)(()=>(c.current&&clearTimeout(c.current),c.current=setTimeout(()=>i(a),oe),()=>{c.current&&clearTimeout(c.current)}),[a]),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 p-2 border-b border-border shrink-0`,children:[(0,q.jsxs)(`div`,{className:`relative flex-1 min-w-[140px]`,children:[(0,q.jsx)(f,{className:`absolute left-2 top-1/2 -translate-y-1/2 size-3.5 text-text-subtle`}),(0,q.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),placeholder:`Search processes`,"aria-label":`Search processes`,"data-testid":`sysmon-process-search`,className:`w-full min-h-11 md:min-h-8 pl-7 pr-2 text-sm rounded-md border border-border bg-transparent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>t(e===`grouped`?`flat`:`grouped`),"aria-pressed":e===`flat`,"data-testid":`sysmon-toggle-flat`,className:`min-h-11 md:min-h-8 px-3 text-xs rounded-md border border-border hover:bg-surface-hover transition-colors`,children:e===`flat`?`Flat`:`Grouped`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>r(!n),"aria-pressed":n,"data-testid":`sysmon-filter-ppm`,className:s(`min-h-11 md:min-h-8 px-3 text-xs rounded-md border transition-colors`,n?`border-primary bg-primary/10 text-primary`:`border-border hover:bg-surface-hover`),children:`PPM only`})]})}function ce({sortKey:e,sortDir:t,grid:n,onSort:r,resize:i}){let a={activeKey:e,activeDir:t,onClick:r,resize:i};return(0,q.jsxs)(`div`,{role:`row`,className:s(`grid gap-1 px-3 py-1.5 text-[11px] text-text-subtle border-b border-border sticky top-0 bg-background z-10`,z),children:[(0,q.jsx)(J,{label:`Process`,field:`name`,...a,resize:void 0,align:`left`,testId:`sysmon-sort-name`}),(0,q.jsx)(J,{label:`CPU`,field:`cpu`,...a,resizeKey:`cpu`,testId:`sysmon-sort-cpu`}),(0,q.jsx)(J,{label:`RAM`,field:`ram`,...a,resizeKey:`ram`,testId:`sysmon-sort-ram`}),n.columns.disk&&(0,q.jsx)(J,{label:`Disk`,field:`disk`,...a,resizeKey:`disk`,testId:`sysmon-col-disk`,className:V(n,`disk`)}),n.columns.gpu&&(0,q.jsx)(J,{label:`GPU`,field:`gpu`,...a,resizeKey:`gpu`,testId:`sysmon-col-gpu`,className:V(n,`gpu`)}),n.columns.net&&(0,q.jsx)(J,{label:`Net`,field:`net`,...a,resizeKey:`net`,testId:`sysmon-col-net`,className:V(n,`net`)}),(0,q.jsx)(`span`,{})]})}function le({totals:e,grid:t,gpuUtilPercent:n}){return(0,q.jsxs)(`div`,{className:s(`grid gap-1 px-3 py-1.5 text-xs font-medium border-t border-border shrink-0`,z),"data-testid":`sysmon-total`,"data-process-count":e.count,children:[(0,q.jsxs)(`span`,{className:`truncate`,children:[`Total (`,e.count,` processes)`]}),(0,q.jsxs)(`span`,{className:s(`text-right`,H(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:x(e.ramMB)}),t.columns.disk&&(0,q.jsx)(`span`,{className:s(`text-right text-text-secondary tabular-nums truncate`,V(t,`disk`)),children:U(e.diskReadBps,e.diskWriteBps)}),t.columns.gpu&&(0,q.jsx)(`span`,{className:s(`text-right text-text-secondary tabular-nums truncate`,V(t,`gpu`)),children:G(n,e.gpuMemMB)}),t.columns.net&&(0,q.jsx)(`span`,{className:s(`text-right text-text-secondary tabular-nums truncate`,V(t,`net`)),children:W(e.netInBps,e.netOutBps)}),(0,q.jsx)(`span`,{})]})}var ue=`Protected: this app contains a PPM or OS-critical process — cannot be ended as a whole.`;function de({group:e,expanded:t,grid:n,killProtected:a,onToggle:o,onKillClick:c}){let l=t?p:r;return(0,q.jsxs)(`div`,{className:`grid items-center gap-1 min-h-11 md:min-h-7 px-3 text-xs cursor-pointer hover:bg-surface-hover transition-colors group/proc grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`,onClick:()=>o(e.key),"data-testid":`sysmon-group-row`,"data-group-key":e.key,"data-count":e.count,"data-disk-bps":K(e.diskReadBps,e.diskWriteBps),"data-gpu-pct":e.gpuPct,"data-net-bps":K(e.netInBps,e.netOutBps),children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),o(e.key)},"aria-expanded":t,"aria-label":`${t?`Collapse`:`Expand`} ${e.label}`,"data-testid":`sysmon-group-expand`,className:`flex items-center justify-center size-11 md:size-7 -ml-2 shrink-0`,children:(0,q.jsx)(l,{className:`size-3.5 text-text-subtle`})}),(0,q.jsx)(`span`,{className:`truncate font-medium`,children:e.label}),(0,q.jsxs)(`span`,{className:`text-text-subtle shrink-0`,children:[`(`,e.count,`)`]})]}),(0,q.jsxs)(`span`,{className:s(`text-right`,H(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:x(e.ramMB)}),n.columns.disk&&(0,q.jsx)(`span`,{className:s(`text-right text-text-secondary tabular-nums truncate`,V(n,`disk`)),children:U(e.diskReadBps,e.diskWriteBps)}),n.columns.gpu&&(0,q.jsx)(`span`,{className:s(`text-right text-text-secondary tabular-nums truncate`,V(n,`gpu`)),children:G(e.gpuPct,e.gpuMemMB)}),n.columns.net&&(0,q.jsx)(`span`,{className:s(`text-right text-text-secondary tabular-nums truncate`,V(n,`net`)),children:W(e.netInBps,e.netOutBps)}),(0,q.jsx)(`div`,{className:`flex justify-end`,children:(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),c(e)},disabled:a,"aria-label":`End ${e.label} and its ${e.count} processes`,title:a?ue:`End ${e.label} (${e.count} processes)`,"data-testid":`sysmon-group-kill-btn`,className:s(`flex items-center justify-center size-11 md:size-7 rounded transition-all`,`can-hover:opacity-0 can-hover:group-hover/proc:opacity-100`,a?`opacity-40 cursor-not-allowed`:`hover:bg-error/20 hover:text-error active:bg-error/30`),children:(0,q.jsx)(i,{className:`size-3.5`})})})]})}var fe=`Protected: PPM or OS-critical process — cannot be ended.`;function pe({proc:e,indent:t,grid:n,onKillClick:r}){return(0,q.jsxs)(`div`,{className:`grid items-center gap-1 min-h-11 md:min-h-7 px-3 text-xs group/proc hover:bg-surface-hover transition-colors grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`,"data-testid":`sysmon-process-row`,"data-pid":e.pid,"data-ppm":e.ppm,"data-protected":e.protected,"data-disk-bps":K(e.diskReadBps,e.diskWriteBps),"data-gpu-pct":e.gpuPct,"data-net-bps":K(e.netInBps,e.netOutBps),children:[(0,q.jsxs)(`div`,{className:s(`flex items-start gap-1.5 min-w-0`,t&&`pl-6`),children:[(0,q.jsx)(`span`,{className:`text-text-subtle shrink-0`,children:e.pid}),(0,q.jsx)(`span`,{className:`truncate text-text-secondary`,title:e.startedAt?`${e.command}\nRunning ${ae(e.startedAt)}`:e.command,children:e.command})]}),(0,q.jsxs)(`span`,{className:s(`text-right`,H(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:x(e.ramMB)}),n.columns.disk&&(0,q.jsx)(`span`,{className:s(`text-right text-text-secondary tabular-nums truncate`,V(n,`disk`)),children:U(e.diskReadBps,e.diskWriteBps)}),n.columns.gpu&&(0,q.jsx)(`span`,{className:s(`text-right text-text-secondary tabular-nums truncate`,V(n,`gpu`)),children:G(e.gpuPct,e.gpuMemMB)}),n.columns.net&&(0,q.jsx)(`span`,{className:s(`text-right text-text-secondary tabular-nums truncate`,V(n,`net`)),children:W(e.netInBps,e.netOutBps)}),(0,q.jsx)(`div`,{className:`flex justify-end`,children:(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),r(e)},disabled:e.protected,"aria-label":`End process ${e.name} (${e.pid})`,title:e.protected?fe:`End process ${e.name}`,"data-testid":`sysmon-kill-btn`,className:s(`flex items-center justify-center size-11 md:size-7 rounded transition-all`,`can-hover:opacity-0 can-hover:group-hover/proc:opacity-100`,e.protected?`opacity-40 cursor-not-allowed`:`hover:bg-error/20 hover:text-error active:bg-error/30`),children:(0,q.jsx)(i,{className:`size-3.5`})})})]})}function me({target:e,onConfirm:t,onCancel:n}){let r=l(),[i,a]=(0,C.useState)(!1);if((0,C.useEffect)(()=>{e||a(!1)},[e]),!e)return null;let o=e.kind===`group`,s=o?`End app`:`End process`,f=o?e.group.cpu:e.proc.cpu,p=o?e.group.ramMB:e.proc.ramMB,m=(0,q.jsxs)(`div`,{className:`space-y-4`,"data-testid":`sysmon-kill-confirm`,"data-kill-kind":e.kind,children:[o?(0,q.jsxs)(`p`,{className:`text-sm`,children:[`End `,(0,q.jsx)(`span`,{className:`font-medium`,children:e.group.label}),` and all its`,` `,(0,q.jsx)(`span`,{className:`font-medium`,children:e.members.length}),` processes?`]}):(0,q.jsxs)(`p`,{className:`text-sm`,children:[`End `,(0,q.jsx)(`span`,{className:`font-medium`,children:e.proc.name}),` (pid `,e.proc.pid,`)?`]}),(0,q.jsxs)(`p`,{className:`text-xs text-text-subtle`,children:[`CPU `,f.toFixed(1),`% · RAM `,x(p)]}),!o&&(0,q.jsxs)(`label`,{className:`flex items-center justify-between gap-3 min-h-11 py-1`,children:[(0,q.jsx)(`span`,{className:`text-sm`,children:`Also end child processes`}),(0,q.jsx)(h,{checked:i,onCheckedChange:a,"data-testid":`sysmon-kill-tree`,"aria-label":`Also end child processes`})]}),(0,q.jsxs)(`div`,{className:`flex flex-col-reverse md:flex-row gap-2 md:justify-end pt-2`,children:[(0,q.jsx)(c,{variant:`outline`,onClick:n,"data-testid":`sysmon-kill-confirm-cancel`,className:`min-h-11`,children:`Cancel`}),(0,q.jsx)(c,{variant:`destructive`,autoFocus:!1,onClick:()=>t(e,i),"data-testid":`sysmon-kill-confirm-ok`,className:`min-h-11`,children:o?`End ${e.members.length} processes`:`End process`})]})]});return r?(0,q.jsx)(u,{open:!0,onClose:n,children:(0,q.jsxs)(`div`,{className:`px-4 pb-4`,children:[(0,q.jsx)(`h2`,{className:`text-base font-semibold mb-3`,children:s}),m]})}):(0,q.jsx)(g,{open:!0,onOpenChange:e=>!e&&n(),children:(0,q.jsxs)(b,{children:[(0,q.jsx)(y,{children:(0,q.jsx)(d,{children:s})}),m]})})}function Y(e,t){return{pid:e.pid,startedAt:e.startedAt,tree:t}}function he(e,t){let n=e.rootPid===null?void 0:t.find(t=>t.pid===e.rootPid);return n?[Y(n,!0)]:t.map(e=>Y(e,!1))}function ge(e){return e.some(e=>e.protected)}async function X(e){let t=a(),n={"Content-Type":`application/json`,"X-PPM-Request":`1`};t&&(n.Authorization=`Bearer ${t}`);let r=await fetch(`/api/system/resources/kill`,{method:`POST`,headers:n,body:JSON.stringify(e)}),i;try{i=await r.json()}catch{throw Error(r.ok?`Empty response from server`:`Server error (HTTP ${r.status})`)}if(i.ok===!1)throw Error(i.error??`HTTP ${r.status}`);return i.data}function _e(e){let[t,n]=(0,C.useState)(null),r=(0,C.useCallback)(t=>{let n=new Map(e.processes.map(e=>[e.pid,e]));return t.pids.map(e=>n.get(e)).filter(e=>!!e)},[e.processes]),i=(0,C.useMemo)(()=>new Map(e.groups.map(e=>[e.key,ge(r(e))])),[e.groups,r]),a=(0,C.useCallback)(e=>n({kind:`process`,proc:e}),[]),s=(0,C.useCallback)(e=>n({kind:`group`,group:e,members:r(e)}),[r]),c=(0,C.useCallback)(()=>n(null),[]);return{pendingKill:t,groupProtected:i,requestKillProcess:a,requestKillGroup:s,confirmKill:(0,C.useCallback)(async(e,t)=>{if(n(null),e.kind===`process`){let{proc:n}=e;try{await X(Y(n,t)),o.success(`Ended ${n.name} (${n.pid})`)}catch(e){o.error(e instanceof Error?e.message:`Failed to end ${n.name}`)}return}let{group:r,members:i}=e,a=[];for(let e of he(r,i))try{await X(e)}catch(t){a.push(t instanceof Error?t.message:`pid ${e.pid}`)}a.length===0?o.success(`Ended ${r.label} (${i.length} processes)`):o.error(`${r.label}: ${a.length} of ${i.length} could not be ended — ${a[0]}`)},[]),cancelKill:c}}var Z=`ppm-sysmon-col-widths`;function Q(){try{let e=localStorage.getItem(Z);if(!e)return{};let t=JSON.parse(e),n={};for(let e of[`cpu`,`ram`,`disk`,`gpu`,`net`]){let r=t[e];typeof r==`number`&&Number.isFinite(r)&&(n[e]=L(r))}return n}catch{return{}}}function $(e){try{Object.keys(e).length===0?localStorage.removeItem(Z):localStorage.setItem(Z,JSON.stringify(e))}catch{}}function ve(){let[e,t]=(0,C.useState)(()=>typeof localStorage>`u`?{}:Q()),n=(0,C.useRef)(null);return(0,C.useEffect)(()=>{let e=e=>{let r=n.current;if(!r)return;let i=L(r.startWidth+(e.clientX-r.startX));t(e=>e[r.key]===i?e:{...e,[r.key]:i})},r=()=>{n.current&&(n.current=null,document.body.style.cursor=``,t(e=>($(e),e)))};return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,r),window.addEventListener(`pointercancel`,r),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,r),window.removeEventListener(`pointercancel`,r)}},[]),{widths:e,begin:(0,C.useCallback)((t,r)=>{r.preventDefault(),n.current={key:t,startX:r.clientX,startWidth:R(t,e)},document.body.style.cursor=`col-resize`},[e]),reset:(0,C.useCallback)(e=>{t(t=>{if(!(e in t))return t;let{[e]:n,...r}=t;return $(r),r})},[])}}var ye={disk:!1,gpu:!1,net:!1};function be({snapshot:e}){let t=l(),n=(0,C.useRef)(null),[r,i]=(0,C.useState)(`grouped`),[a,o]=(0,C.useState)(!1),[s,c]=(0,C.useState)(``),[u,d]=(0,C.useState)(null),[f,p]=(0,C.useState)(`desc`),[h,g]=(0,C.useState)(()=>new Set),{pendingKill:_,groupProtected:v,requestKillProcess:y,requestKillGroup:b,confirmKill:x,cancelKill:S}=_e(e),{widths:w,begin:T,reset:E}=ve(),{rows:D,totals:O}=(0,C.useMemo)(()=>ee({processes:e.processes,groups:e.groups,mode:r,ppmOnly:a,query:s,sortKey:u,sortDir:f,expanded:h}),[e.processes,e.groups,r,a,s,u,f,h]),k=e.processColumns??ye,A=(0,C.useMemo)(()=>ie(k,u,w),[k,u,w]),j=e.system.gpus[0]?.utilPercent,M=m({count:D.length,getScrollElement:()=>n.current,estimateSize:()=>t?44:28,overscan:12}),N=(0,C.useCallback)(e=>{let[t,n]=te(u,f,e);d(t),p(n)},[u,f]),P=(0,C.useCallback)(e=>{g(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return(0,q.jsxs)(`div`,{className:`h-full flex flex-col min-h-0 @container`,style:B(A),"data-testid":`sysmon-processes`,"data-row-count":D.length,children:[(0,q.jsx)(se,{mode:r,onModeChange:i,ppmOnly:a,onPpmOnlyChange:o,onQueryChange:c}),(0,q.jsx)(ce,{sortKey:u,sortDir:f,grid:A,onSort:N,resize:{onResizeStart:T,onResizeReset:E}}),(0,q.jsx)(`div`,{ref:n,className:`flex-1 min-h-0 overflow-y-auto`,children:(0,q.jsx)(`div`,{style:{height:M.getTotalSize(),position:`relative`},children:M.getVirtualItems().map(e=>{let t=D[e.index];return t?(0,q.jsx)(`div`,{style:{position:`absolute`,top:0,left:0,right:0,transform:`translateY(${e.start}px)`},children:t.kind===`group`?(0,q.jsx)(de,{group:t.group,expanded:t.expanded,grid:A,killProtected:v.get(t.group.key)??!0,onToggle:P,onKillClick:b}):(0,q.jsx)(pe,{proc:t.proc,indent:t.indent,grid:A,onKillClick:y})},t.kind===`group`?t.group.key:`p:${t.proc.pid}`):null})})}),(0,q.jsx)(le,{totals:O,grid:A,gpuUtilPercent:j}),(0,q.jsx)(me,{target:_,onConfirm:x,onCancel:S})]})}export{be as ProcessTable};
@@ -1 +0,0 @@
1
- import{I as e}from"./vendor-mermaid-DrwG0NYt.js";export{e as createRadarServices};
@@ -1 +0,0 @@
1
- import"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import"./context-menu-Cq0u3SK9.js";import"./api-client-BSB14J4w.js";import"./vendor-mermaid-DrwG0NYt.js";import"./settings-store-C20lqh0G.js";import"./project-store-B8BkHXy5.js";import"./button-BA_fJOtX.js";import"./use-is-mobile-BXGVvczu.js";import"./mobile-bottom-sheet-BUOJgiaZ.js";import"./api-settings-kQHV6pYZ.js";import{I as e}from"./index-Ch8l9de-.js";export{e as SettingsTab};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./database-BH0urvbs.js";import{t as i}from"./glide-data-grid-n4ox_uev.js";import{t as a}from"./table-CHmxuh6M.js";import{i as o,n as s,s as c}from"./api-client-BSB14J4w.js";import"./vendor-mermaid-DrwG0NYt.js";import"./settings-store-C20lqh0G.js";import"./panel-store-DCD82zc1.js";import"./tab-store-DAsvpx4t.js";import{$n as l,Cr as u,Un as d}from"./index-Ch8l9de-.js";import"./data-grid-types-CYvF-xK5.js";import"./use-monaco-theme-DSCdlrjO.js";import{t as f}from"./sql-query-editor-BwPjEaP9.js";var p=e(t(),1);function m(e,t,n){let[r,i]=(0,p.useState)([]),[a,l]=(0,p.useState)(null),[u,d]=(0,p.useState)(null),[f,m]=(0,p.useState)([]),[h,g]=(0,p.useState)(!1),[_,v]=(0,p.useState)(null),[y,b]=(0,p.useState)(1),[x,S]=(0,p.useState)(null),[C,w]=(0,p.useState)(null),[T,E]=(0,p.useState)(!1),D=n?`/api/db/connections/${n}`:null,O=!n&&!e&&/^(\/|[A-Za-z]:[/\\])/.test(t),k=D??(O?`/api/fs/sqlite`:`${o(e)}/sqlite`),A=D?``:`path=${encodeURIComponent(t)}`,j=(0,p.useCallback)(async()=>{g(!0),v(null);try{let e=D?`?cached=1`:A?`?${A}`:``,t=await s.get(`${k}/tables${e}`);i(t),!D&&t.length>0&&!a&&l(t[0].name)}catch(e){v(e.message)}finally{g(!1)}},[k,A,D]);(0,p.useEffect)(()=>{j()},[j]);let M=(0,p.useCallback)(async()=>{if(a){g(!0);try{let e=A?`${A}&`:``,[t,n]=await Promise.all([s.get(`${k}/data?${e}table=${encodeURIComponent(a)}&page=${y}&limit=100`),s.get(`${k}/schema?${e}table=${encodeURIComponent(a)}`)]);d(t),m(n)}catch(e){v(e.message)}finally{g(!1)}}},[k,A,a,y]);(0,p.useEffect)(()=>{M()},[M]);let N=(0,p.useCallback)(e=>{l(e),b(1),S(null)},[]),P=(0,p.useCallback)(async e=>{E(!0),w(null);try{let n=D?{sql:e}:{path:t,sql:e},r=await s.post(`${k}/query`,n);S(r),r.changeType===`modify`&&M()}catch(e){w(e.message)}finally{E(!1)}},[k,D,t,M]),F=(0,p.useCallback)((e,t)=>{let n=t.message;v(n),c.error(`${e} failed`,{description:n})},[]);return{tables:r,selectedTable:a,selectTable:N,tableData:u,schema:f,loading:h,error:_,page:y,setPage:b,queryResult:x,queryError:C,queryLoading:T,executeQuery:P,updateCell:(0,p.useCallback)(async(e,n,r)=>{if(a)try{D?await s.put(`${k}/cell`,{table:a,pkColumn:`rowid`,pkValue:e,column:n,value:r}):await s.put(`${k}/cell`,{path:t,table:a,rowid:e,column:n,value:r}),M()}catch(e){F(`Update cell`,e)}},[k,D,t,a,M,F]),deleteRow:(0,p.useCallback)(async e=>{if(a)try{D?await s.del(`${k}/row`,{table:a,pkColumn:`rowid`,pkValue:e}):await s.del(`${k}/row`,{path:t,table:a,rowid:e}),M(),j()}catch(e){F(`Delete row`,e)}},[k,D,t,a,M,j,F]),refreshTables:j,refreshData:M}}var h=n();function g({tables:e,selectedTable:t,onSelect:n,onRefresh:r}){return(0,h.jsxs)(`div`,{className:`w-48 shrink-0 flex flex-col bg-background overflow-hidden`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border`,children:[(0,h.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Tables`}),(0,h.jsx)(`button`,{type:`button`,onClick:r,className:`text-muted-foreground hover:text-foreground transition-colors`,title:`Refresh tables`,children:(0,h.jsx)(d,{className:`size-3`})})]}),(0,h.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[e.map(e=>(0,h.jsxs)(`button`,{type:`button`,onClick:()=>n(e.name),className:`w-full flex items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors ${t===e.name?`bg-muted text-foreground`:`text-muted-foreground hover:bg-muted/50 hover:text-foreground`}`,children:[(0,h.jsx)(a,{className:`size-3 shrink-0`}),(0,h.jsx)(`span`,{className:`truncate flex-1`,children:e.name}),(0,h.jsx)(`span`,{className:`text-[10px] opacity-60`,children:e.rowCount})]},e.name)),e.length===0&&(0,h.jsx)(`p`,{className:`px-3 py-4 text-xs text-muted-foreground text-center`,children:`No tables found`})]})]})}function _({onExecute:e,loading:t}){return(0,h.jsx)(f,{onExecute:e,loading:t})}function v({metadata:e}){let t=e?.filePath,n=e?.projectName,i=e?.connectionId,a=e?.tableName,[o,s]=(0,p.useState)(!1);if(i)return(0,h.jsx)(y,{projectName:``,dbPath:``,connectionId:i,connectionName:e?.connectionName,initialTable:a,queryPanelOpen:o,onToggleQueryPanel:()=>s(e=>!e),hideTableList:!0});let c=!!t&&!n&&/^(\/|[A-Za-z]:[/\\])/.test(t);return!t||!n&&!c?(0,h.jsxs)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:[(0,h.jsx)(r,{className:`size-5 mr-2`}),` No database file selected.`]}):(0,h.jsx)(y,{projectName:n??``,dbPath:t,queryPanelOpen:o,onToggleQueryPanel:()=>s(e=>!e)})}function y({projectName:e,dbPath:t,connectionId:n,connectionName:a,initialTable:o,queryPanelOpen:s,onToggleQueryPanel:c,hideTableList:d}){let f=m(e,t,n),v=(0,p.useRef)(!1);return(0,p.useEffect)(()=>{o&&!v.current&&f.tables.length>0&&(v.current=!0,f.selectTable(o))},[o,f.tables]),f.error&&f.tables.length===0?(0,h.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,h.jsx)(u,{className:`size-10 text-destructive`}),(0,h.jsx)(`p`,{className:`text-sm`,children:f.error})]}):f.loading&&f.tables.length===0?(0,h.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2 text-text-secondary`,children:[(0,h.jsx)(l,{className:`size-5 animate-spin`}),(0,h.jsx)(`span`,{className:`text-sm`,children:`Loading database...`})]}):(0,h.jsxs)(`div`,{className:`flex h-full w-full overflow-hidden`,children:[!d&&(0,h.jsx)(g,{tables:f.tables,selectedTable:f.selectedTable,onSelect:f.selectTable,onRefresh:f.refreshTables}),(0,h.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden ${d?``:`border-l border-border`}`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b border-border bg-background shrink-0`,children:[(0,h.jsx)(r,{className:`size-3.5 text-muted-foreground`}),(0,h.jsx)(`span`,{className:`text-xs text-muted-foreground truncate`,children:a??t}),(0,h.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:f.selectedTable&&`/ ${f.selectedTable}`}),(0,h.jsx)(`div`,{className:`ml-auto`,children:(0,h.jsx)(`button`,{type:`button`,onClick:c,className:`px-2 py-1 rounded text-xs transition-colors ${s?`bg-muted text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:`SQL`})})]}),(0,h.jsx)(`div`,{className:`flex-1 overflow-hidden ${s?`max-h-[60%]`:``}`,children:f.tableData?(0,h.jsx)(i,{columns:f.tableData.columns,rows:f.tableData.rows,total:f.tableData.total,limit:f.tableData.limit,schema:f.schema.map(e=>({name:e.name,type:e.type,nullable:!e.notnull,pk:!!e.pk,defaultValue:e.dflt_value,fk:e.fk??null})),loading:f.loading,page:f.page,onPageChange:f.setPage,onCellUpdate:(e,t,n,r)=>f.updateCell(t,n,r),onRowDelete:(e,t)=>f.deleteRow(t)}):(0,h.jsx)(`div`,{className:`flex items-center justify-center h-full text-xs text-muted-foreground`,children:f.loading?(0,h.jsx)(l,{className:`size-4 animate-spin`}):`Select a table`})}),s&&(0,h.jsx)(`div`,{className:`border-t border-border h-[40%] shrink-0`,children:(0,h.jsx)(_,{onExecute:f.executeQuery,loading:f.queryLoading})})]})]})}export{v as SqliteViewer};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/overview-panel-BxDohIEa.js","assets/rolldown-runtime-FhOqtrmT.js","assets/vendor-markdown-Ls5AcU91.js","assets/utils-DoY4yTP-.js","assets/format-bytes-BE_W3UBg.js","assets/process-table-CI-fnVsy.js","assets/index-Ch8l9de-.js","assets/vendor-mermaid-DrwG0NYt.js","assets/vendor-ui-CaeeFO0B.js","assets/button-BA_fJOtX.js","assets/createLucideIcon-D8pyde1A.js","assets/eye-off-CUdzgmX8.js","assets/bot-CunPuEdW.js","assets/context-menu-Cq0u3SK9.js","assets/chevron-right-BLOtX8Vy.js","assets/circle-hjUGru6R.js","assets/clock-CvhF4DJP.js","assets/sparkles-Dqsf3hq6.js","assets/copy-DKn11Pye.js","assets/database-BH0urvbs.js","assets/download-zCATy4x4.js","assets/plus-BM-Ty0fp.js","assets/x-BcqfTY_7.js","assets/api-client-BSB14J4w.js","assets/react-I_EwPIZi.js","assets/mobile-bottom-sheet-BUOJgiaZ.js","assets/use-is-mobile-BXGVvczu.js","assets/api-settings-kQHV6pYZ.js","assets/project-store-B8BkHXy5.js","assets/panel-store-DCD82zc1.js","assets/settings-store-C20lqh0G.js","assets/tab-store-DAsvpx4t.js","assets/apply-theme-BH_d4amk.js","assets/resolve-theme-B9ABAH_3.js","assets/index-BiTiXgBZ.css"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import{t as r}from"./createLucideIcon-D8pyde1A.js";import{q as i}from"./vendor-mermaid-DrwG0NYt.js";import{n as a}from"./utils-DoY4yTP-.js";import{Tn as o,h as s}from"./index-Ch8l9de-.js";var c=r(`wifi`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M2 8.82a15 15 0 0 1 20 0`,key:`dnpr2z`}],[`path`,{d:`M5 12.859a10 10 0 0 1 14 0`,key:`1x1e6c`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}]]),l=e(t(),1),u=n(),d=(0,l.lazy)(()=>i(()=>import(`./overview-panel-BxDohIEa.js`).then(e=>({default:e.OverviewPanel})),__vite__mapDeps([0,1,2,3,4]))),f=(0,l.lazy)(()=>i(()=>import(`./process-table-CI-fnVsy.js`).then(e=>({default:e.ProcessTable})),__vite__mapDeps([5,1,6,7,8,2,9,3,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,4])));function p({isConnected:e,elapsed:t,tickCount:n}){return(0,u.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-text-subtle`,"data-testid":`sysmon-connection`,"data-tick-count":n,children:[e?(0,u.jsx)(c,{className:`size-3 text-success`}):(0,u.jsx)(o,{className:`size-3 text-error`}),(0,u.jsx)(`span`,{children:e?`Updated ${t}s ago`:`Disconnected`})]})}var m=(0,l.memo)(function({initialTab:e=`overview`,onTabChange:t,variant:n=`tab`}){let{latest:r,history:i,isConnected:o,tickCount:c}=s({processes:!0}),[m,h]=(0,l.useState)(e),g=e=>{h(e),t?.(e)},_=r?Math.round((Date.now()-r.ts)/1e3):0,v=r?.warnings??[];return(0,u.jsxs)(`div`,{className:`h-full flex flex-col overflow-hidden`,"data-testid":`system-monitor-window`,children:[n===`tab`&&(0,u.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[(0,u.jsx)(`h2`,{className:`text-sm font-medium`,children:`System Monitor`}),(0,u.jsx)(p,{isConnected:o,elapsed:_,tickCount:c})]}),v.length>0&&(0,u.jsx)(`div`,{className:`px-3 py-1.5 text-[11px] text-warning bg-warning/10 border-b border-border shrink-0 space-y-0.5`,"data-testid":`sysmon-warnings`,children:v.map((e,t)=>(0,u.jsx)(`div`,{children:e},t))}),(0,u.jsxs)(`div`,{className:`flex items-center border-b border-border shrink-0`,role:`tablist`,children:[(0,u.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":m===`overview`,"data-testid":`sysmon-tab-overview`,onClick:()=>g(`overview`),className:a(`flex-1 md:flex-none min-h-11 px-4 text-sm font-medium transition-colors`,m===`overview`?`text-text-primary border-b-2 border-primary -mb-px`:`text-text-subtle hover:text-text-secondary`),children:`Overview`}),(0,u.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":m===`processes`,"data-testid":`sysmon-tab-processes`,onClick:()=>g(`processes`),className:a(`flex-1 md:flex-none min-h-11 px-4 text-sm font-medium transition-colors`,m===`processes`?`text-text-primary border-b-2 border-primary -mb-px`:`text-text-subtle hover:text-text-secondary`),children:`Processes`}),n===`window`&&(0,u.jsx)(`div`,{className:`ml-auto pr-3`,children:(0,u.jsx)(p,{isConnected:o,elapsed:_,tickCount:c})})]}),(0,u.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto`,children:(0,u.jsx)(l.Suspense,{fallback:(0,u.jsx)(`div`,{className:`p-4 text-xs text-text-subtle`,children:`Loading…`}),children:r?m===`overview`?(0,u.jsx)(d,{system:r.system,history:i}):(0,u.jsx)(f,{snapshot:r}):(0,u.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-subtle text-sm p-4`,children:o?`Waiting for data…`:`Connecting to resource monitor…`})})})]})});export{m as t};
@@ -1 +0,0 @@
1
- import{x as e}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t}from"./system-monitor-body-CV7-0hZG.js";import"./api-client-BSB14J4w.js";import"./vendor-mermaid-DrwG0NYt.js";var n=e(),r=()=>(0,n.jsx)(t,{});export{r as SystemMonitorTab};
@@ -1 +0,0 @@
1
- import{x as e}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t}from"./system-monitor-body-CV7-0hZG.js";import"./api-client-BSB14J4w.js";import"./vendor-mermaid-DrwG0NYt.js";import{ot as n}from"./index-Ch8l9de-.js";var r=e();function i({id:e,payload:i}){let a=n(e=>e.setPayload);return(0,r.jsx)(t,{initialTab:i?.tab===`processes`?`processes`:`overview`,onTabChange:t=>a(e,{tab:t}),variant:`window`})}export{i as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/team-member-window-content-DNJiYWS7.js","assets/rolldown-runtime-FhOqtrmT.js","assets/index-Ch8l9de-.js","assets/vendor-mermaid-DrwG0NYt.js","assets/vendor-ui-CaeeFO0B.js","assets/vendor-markdown-Ls5AcU91.js","assets/button-BA_fJOtX.js","assets/utils-DoY4yTP-.js","assets/createLucideIcon-D8pyde1A.js","assets/eye-off-CUdzgmX8.js","assets/bot-CunPuEdW.js","assets/context-menu-Cq0u3SK9.js","assets/chevron-right-BLOtX8Vy.js","assets/circle-hjUGru6R.js","assets/clock-CvhF4DJP.js","assets/sparkles-Dqsf3hq6.js","assets/copy-DKn11Pye.js","assets/database-BH0urvbs.js","assets/download-zCATy4x4.js","assets/plus-BM-Ty0fp.js","assets/x-BcqfTY_7.js","assets/api-client-BSB14J4w.js","assets/react-I_EwPIZi.js","assets/mobile-bottom-sheet-BUOJgiaZ.js","assets/use-is-mobile-BXGVvczu.js","assets/api-settings-kQHV6pYZ.js","assets/project-store-B8BkHXy5.js","assets/panel-store-DCD82zc1.js","assets/settings-store-C20lqh0G.js","assets/tab-store-DAsvpx4t.js","assets/apply-theme-BH_d4amk.js","assets/resolve-theme-B9ABAH_3.js","assets/index-BiTiXgBZ.css","assets/tool-cards-DCAXGDJI.js","assets/circle-question-mark-CzR7YRc-.js","assets/code-DDPoqVri.js","assets/use-blob-url-BKyVxOZw.js","assets/image-gallery-CGvlv8zR.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./x-BcqfTY_7.js";import{q as i}from"./vendor-mermaid-DrwG0NYt.js";import"./use-is-mobile-BXGVvczu.js";import{t as a}from"./mobile-bottom-sheet-BUOJgiaZ.js";import{n as o}from"./use-open-team-member-H4k74HnV.js";var s=e(t(),1),c=n(),l=(0,s.lazy)(()=>i(()=>import(`./team-member-window-content-DNJiYWS7.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37])));function u(){let e=o(e=>e.payload),t=o(e=>e.close);return e?(0,c.jsxs)(a,{open:!0,onClose:t,zIndex:45,className:`flex h-[var(--sheet-vh)] flex-col p-0`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 shrink-0`,children:[(0,c.jsxs)(`span`,{className:`truncate text-sm font-medium text-text-primary`,children:[`Session — `,e.memberName]}),(0,c.jsx)(`button`,{type:`button`,onClick:t,className:`ml-auto flex size-11 items-center justify-center rounded text-text-secondary hover:text-text-primary`,"aria-label":`Close`,children:(0,c.jsx)(r,{className:`size-5`})})]}),(0,c.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:(0,c.jsx)(s.Suspense,{fallback:(0,c.jsx)(`div`,{className:`p-4 text-sm text-text-2`,children:`Loading…`}),children:(0,c.jsx)(l,{id:`sheet-${e.memberName}`,payload:e})})})]}):null}export{u as TeamMemberSheet};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./tool-cards-DCAXGDJI.js";import{n as i}from"./api-client-BSB14J4w.js";import"./vendor-mermaid-DrwG0NYt.js";import{n as a}from"./utils-DoY4yTP-.js";import"./panel-store-DCD82zc1.js";import"./tab-store-DAsvpx4t.js";import{$n as o,Un as s}from"./index-Ch8l9de-.js";import"./use-blob-url-BKyVxOZw.js";var c=e(t(),1),l=n();function u({payload:e}){let{teamName:t,memberName:n,projectName:u}=e??{},[d,f]=(0,c.useState)([]),[p,m]=(0,c.useState)(!0),[h,g]=(0,c.useState)(null),[_,v]=(0,c.useState)(0);return(0,c.useEffect)(()=>{if(!t||!n){g(`Missing team or member`),m(!1);return}let e=!1;return m(!0),g(null),i.get(`/api/teams/${encodeURIComponent(t)}/members/${encodeURIComponent(n)}/transcript`).then(t=>{e||f(t?.events??[])}).catch(()=>{e||g(`Could not read this member's session`)}).finally(()=>{e||m(!1)}),()=>{e=!0}},[t,n,_]),(0,l.jsxs)(`div`,{className:`flex flex-col h-full min-h-0 bg-surface`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b border-border/30 shrink-0`,children:[(0,l.jsx)(`span`,{className:`text-xs font-medium truncate`,children:n}),(0,l.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:d.length>0?`${d.length} steps`:``}),(0,l.jsx)(`button`,{type:`button`,onClick:()=>v(e=>e+1),className:`ml-auto text-text-subtle hover:text-foreground p-1 shrink-0`,"aria-label":`Reload session`,children:(0,l.jsx)(s,{className:a(`size-3`,p&&`animate-spin`)})})]}),p&&d.length===0?(0,l.jsxs)(`div`,{className:`flex-1 flex items-center justify-center gap-2 text-xs text-text-subtle`,children:[(0,l.jsx)(o,{className:`size-3 animate-spin`}),`Loading session…`]}):h?(0,l.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-xs text-error px-4 text-center`,children:h}):d.length===0?(0,l.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-xs text-text-subtle`,children:`This member has no recorded session`}):(0,l.jsx)(r,{events:d,projectName:u,className:`flex-1 min-h-0 overflow-y-auto px-3 py-2 space-y-1`})]})}export{u as default};
@@ -1,3 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./createLucideIcon-D8pyde1A.js";import{t as i}from"./copy-DKn11Pye.js";import{n as a,s as o}from"./api-client-BSB14J4w.js";import"./vendor-mermaid-DrwG0NYt.js";import{t as s}from"./settings-store-C20lqh0G.js";import{n as c}from"./utils-DoY4yTP-.js";import{t as l}from"./panel-store-DCD82zc1.js";import{t as u}from"./mobile-bottom-sheet-BUOJgiaZ.js";import{t as d}from"./resolve-theme-B9ABAH_3.js";import{r as f,t as p}from"./apply-theme-BH_d4amk.js";import{$n as m,Hn as h,Xn as g,a as _,en as v,tr as y,vr as b,xr as x}from"./index-Ch8l9de-.js";import{r as S}from"./send-to-chat-BcO39BDR.js";import{n as C,t as w}from"./run-in-terminal-CyS5Itj-.js";import{i as T,n as E,r as D,t as O}from"./vendor-xterm-CU6zIYMB.js";var k=r(`link-2-off`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7`,key:`10o201`}],[`path`,{d:`M15 7h2a5 5 0 0 1 4 8`,key:`1d3206`}],[`line`,{x1:`8`,x2:`12`,y1:`12`,y2:`12`,key:`rvw6j4`}],[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}]]),A=r(`log-in`,[[`path`,{d:`m10 17 5-5-5-5`,key:`1bsop3`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,key:`u53s6r`}]]),j=r(`text-select`,[[`path`,{d:`M14 21h1`,key:`v9vybs`}],[`path`,{d:`M14 3h1`,key:`1ec4yj`}],[`path`,{d:`M19 3a2 2 0 0 1 2 2`,key:`18rm91`}],[`path`,{d:`M21 14v1`,key:`169vum`}],[`path`,{d:`M21 19a2 2 0 0 1-2 2`,key:`1j7049`}],[`path`,{d:`M21 9v1`,key:`mxsmne`}],[`path`,{d:`M3 14v1`,key:`vnatye`}],[`path`,{d:`M3 9v1`,key:`1r0deq`}],[`path`,{d:`M5 21a2 2 0 0 1-2-2`,key:`sbafld`}],[`path`,{d:`M5 3a2 2 0 0 0-2 2`,key:`y57alp`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}],[`path`,{d:`M7 16h6`,key:`1vyc9m`}],[`path`,{d:`M7 8h8`,key:`1jbsf9`}],[`path`,{d:`M9 21h1`,key:`15o7lz`}],[`path`,{d:`M9 3h1`,key:`1yesri`}]]),M=e(t(),1);function N(e){let t=e.tokens;if(e.terminal){let n=e.terminal.ansi;return{background:t.bgSolid,foreground:t.text,cursor:e.terminal.cursor,cursorAccent:e.terminal.cursorAccent??t.bgSolid,selectionBackground:e.terminal.selection,black:n[0],red:n[1],green:n[2],yellow:n[3],blue:n[4],magenta:n[5],cyan:n[6],white:n[7],brightBlack:n[8],brightRed:n[9],brightGreen:n[10],brightYellow:n[11],brightBlue:n[12],brightMagenta:n[13],brightCyan:n[14],brightWhite:n[15]}}let n=e.mode===`dark`,r=n?`#1b1f2a`:`#2b2f38`,i=n?`#d7dce8`:`#e9edf5`,a=t.text3,o=n?`#f7f9ff`:`#ffffff`;return{background:t.bgSolid,foreground:t.text,cursor:t.accent,cursorAccent:t.bgSolid,selectionBackground:t.accentWash,black:r,red:t.error,green:t.success,yellow:t.warning,blue:t.accent,magenta:t.accent2,cyan:t.info,white:i,brightBlack:a,brightRed:t.error,brightGreen:t.success,brightYellow:t.warning,brightBlue:t.accent,brightMagenta:t.accent2,brightCyan:t.info,brightWhite:o}}function P(){let e=s.getState();return N(f()??d(e.themeStyle,e.themeMode,e.customThemes,e.customThemeId))}var F=/[).,;:'"\]}>]+$/,ee=/\bhttps?:\/\/[^\s<>"'`]+/g,te=5e3,ne=100,re=250,I=3e3,L=`RESIZE:`,R=`PING`,z=`PONG`,B=15e3,V=35e3;function H(e){let{sessionId:t,containerRef:n}=e,r=(0,M.useRef)(null),i=(0,M.useRef)(null),a=(0,M.useRef)(null),o=(0,M.useRef)(null),s=(0,M.useRef)(0),c=(0,M.useRef)(!1),l=(0,M.useRef)(Date.now()),[u,d]=(0,M.useState)(!1),[f,m]=(0,M.useState)(!1),[h,g]=(0,M.useState)(!1),[v,y]=(0,M.useState)(!1),b=(0,M.useRef)(null),x=(0,M.useRef)(null),S=e.tabId?`ppm:terminal-session:${e.tabId}`:null,C=(0,M.useRef)((()=>{if(S)try{return localStorage.getItem(S)??t}catch{}return t})()),w=(0,M.useRef)(0),k=(0,M.useRef)(-1),A=(0,M.useCallback)(e=>{let t=a.current;t?.readyState===WebSocket.OPEN&&t.send(e)},[]),j=(0,M.useCallback)(()=>{b.current&&clearTimeout(b.current),b.current=setTimeout(()=>y(!0),re)},[]),N=(0,M.useCallback)(()=>r.current?.getSelection()??``,[]),H=(0,M.useCallback)(()=>{let e=r.current;if(!e)return``;let t=e.buffer.active,n=w.current,i=t.baseY+t.cursorY,a=[];for(let e=n;e<=i;e++){let n=t.getLine(e);n&&a.push(n.translateToString(!0))}for(;a.length>0&&a[a.length-1].trim()===``;)a.pop();return a.join(`
2
- `)},[]),U=(0,M.useCallback)(()=>{let e=r.current;return!e||k.current<0?``:e.buffer.active.getLine(k.current)?.translateToString(!0).trimEnd()??``},[]),W=(0,M.useCallback)(()=>{let e=r.current;if(!e)return[];let t=e.buffer.active,n=t.baseY+t.cursorY,i=Math.max(0,n-te),a=[],o=``;for(let e=i;e<=n;e++){let n=t.getLine(e);n&&(o+=n.translateToString(!0),!t.getLine(e+1)?.isWrapped&&(a.push(o),o=``))}o&&a.push(o);let s=new Set,c=[];for(let e of a)for(let t of e.match(ee)??[]){let e=t.replace(F,``);!e||s.has(e)||(s.add(e),c.push(e))}return c.reverse()},[]),G=(0,M.useCallback)(()=>{let e=r.current,t=a.current;e&&t?.readyState===WebSocket.OPEN&&t.send(`${L}${e.cols},${e.rows}`)},[]),K=(0,M.useCallback)(()=>{if(o.current&&clearTimeout(o.current),a.current?.close(),a.current=null,C.current=`new`,S)try{localStorage.removeItem(S)}catch{}s.current=0,g(!1),y(!1),d(!1),m(!1),setTimeout(()=>q(),0)},[]),q=(0,M.useCallback)(()=>{o.current&&=(clearTimeout(o.current),null),a.current&&=(a.current.onclose=null,a.current.close(),null);let t=r.current;if(!t)return;let n=window.location.protocol===`https:`?`wss:`:`ws:`,i=e.projectName??``,u=C.current,f=u===`new`&&e.cwd?`?cwd=${encodeURIComponent(e.cwd)}`:``,p=_(`/ws/project/${encodeURIComponent(i)}/terminal/${u}${f}`),h=`${n}//${window.location.host}${p}`,v=new WebSocket(h);a.current=v,v.onopen=()=>{c.current&&r.current&&r.current.clear(),c.current=!0,l.current=Date.now(),d(!0),m(!1),s.current=0,C.current===`new`&&y(!1),x.current&&clearTimeout(x.current),x.current=setTimeout(()=>y(!0),I),G()},v.onmessage=e=>{if(l.current=Date.now(),typeof e.data==`string`){if(e.data===z)return;if(e.data.startsWith(`{`))try{let n=JSON.parse(e.data);if(n.type){if(n.type===`session`&&n.id&&(C.current=n.id,S))try{localStorage.setItem(S,n.id)}catch{}n.type===`error`&&t.write(`\r\n\x1b[31mError: ${n.message}\x1b[0m\r\n`),n.type===`exited`&&g(!0);return}}catch{}j(),t.write(e.data)}},v.onclose=()=>{d(!1),Y()},v.onerror=()=>{v.close()}},[G]),J=(0,M.useCallback)(()=>{if(document.visibilityState!==`visible`)return;let e=a.current;if(!e||e.readyState!==WebSocket.OPEN){q();return}if(Date.now()-l.current>V){q();return}try{e.send(R)}catch{q()}},[q]);function Y(){let e=Math.min(1e3*2**s.current,3e4);s.current++,m(!0),o.current=setTimeout(()=>{q()},e)}return(0,M.useEffect)(()=>{let e=n.current;if(!e)return;let t=new T({cursorBlink:!0,fontSize:13,scrollback:5e4,fontFamily:`Consolas, 'Cascadia Mono', Menlo, 'DejaVu Sans Mono', 'Courier New', monospace`,theme:P()}),s=new D,c=new E;if(t.loadAddon(s),t.loadAddon(c),t.open(e),!(`ontouchstart`in window||navigator.maxTouchPoints>0))try{let e=new O;e.onContextLoss(()=>e.dispose()),t.loadAddon(e)}catch{}s.fit(),r.current=t,i.current=s,t.onData(e=>{if(e.includes(`\r`)||e.includes(`
3
- `)){let e=t.buffer.active;k.current=e.baseY+e.cursorY,w.current=k.current+1}let n=a.current;n?.readyState===WebSocket.OPEN&&n.send(e)}),q();let l=setInterval(J,B),u=()=>{document.visibilityState===`visible`&&J()};document.addEventListener(`visibilitychange`,u);let d=null,f=new ResizeObserver(e=>{let t=e[0];!t||t.contentRect.width===0||t.contentRect.height===0||(d&&clearTimeout(d),d=setTimeout(()=>{try{s.fit(),G()}catch{}},ne))});f.observe(e);let m=()=>{t.options.theme=P()};window.addEventListener(p,m);let h=()=>window.removeEventListener(p,m);return()=>{h(),d&&clearTimeout(d),f.disconnect(),clearInterval(l),document.removeEventListener(`visibilitychange`,u),o.current&&clearTimeout(o.current),b.current&&clearTimeout(b.current),x.current&&clearTimeout(x.current),a.current?.close(),a.current=null,t.dispose(),r.current=null,i.current=null}},[]),{connected:u,reconnecting:f,exited:h,shellReady:v,sendData:A,getSelection:N,getLastCommandOutput:H,getLastCommand:U,getBufferUrls:W,restart:K}}function U(e,t,n){return new MouseEvent(e,{bubbles:!0,cancelable:!0,view:window,clientX:t.clientX,clientY:t.clientY,screenX:t.screenX,screenY:t.screenY,button:0,buttons:n,detail:1})}function W(e,t){(0,M.useEffect)(()=>{let n=e.current;if(!t||!n)return;let r=n.querySelector(`.xterm`);if(!r)return;let i=e=>{let t=e.touches[0];!t||e.touches.length>1||(e.preventDefault(),e.stopPropagation(),r.dispatchEvent(U(`mousedown`,t,1)))},a=e=>{let t=e.touches[0];t&&(e.preventDefault(),e.stopPropagation(),document.dispatchEvent(U(`mousemove`,t,1)))},o=e=>{let t=e.changedTouches[0];t&&(e.preventDefault(),e.stopPropagation(),document.dispatchEvent(U(`mouseup`,t,0)))},s={capture:!0,passive:!1};return n.addEventListener(`touchstart`,i,s),n.addEventListener(`touchmove`,a,s),n.addEventListener(`touchend`,o,s),n.addEventListener(`touchcancel`,o,s),()=>{n.removeEventListener(`touchstart`,i,s),n.removeEventListener(`touchmove`,a,s),n.removeEventListener(`touchend`,o,s),n.removeEventListener(`touchcancel`,o,s)}},[e,t])}var G=40;function K(e){if(!e||typeof e.checkVisibility==`function`&&!e.checkVisibility({visibilityProperty:!0}))return!1;let t=e.getBoundingClientRect();return t.width<G||t.height<G?!1:t.bottom>0&&t.right>0&&t.top<window.innerHeight&&t.left<window.innerWidth}function q({tabId:e,metadata:t,shellReady:n,sendData:r,focusTerminal:i,containerRef:a}){let o=(0,M.useRef)(null),[s,c]=(0,M.useState)(0),u=(0,M.useCallback)(e=>{o.current=e,c(e=>e+1)},[]),d=t?.pendingCommand;(0,M.useEffect)(()=>{if(!(typeof d!=`string`||!d)&&(u(d),e)){let n={...t??{}};delete n.pendingCommand,l.getState().updateTab(e,{metadata:n})}},[d,e,u]),(0,M.useEffect)(()=>{let e=e=>{let t=e.detail;t?.command&&K(a.current)&&(u(t.command),window.dispatchEvent(new Event(w)))};return window.addEventListener(C,e),()=>window.removeEventListener(C,e)},[a,u]),(0,M.useEffect)(()=>{if(!n)return;let e=o.current;e&&(o.current=null,r(e),i())},[n,s,r,i])}var J=n(),Y=[{label:`Tab`,value:` `},{label:`Esc`,value:`\x1B`},{label:`Ctrl`,value:null},{label:`↑`,value:`\x1B[A`},{label:`↓`,value:`\x1B[B`},{label:`←`,value:`\x1B[D`},{label:`→`,value:`\x1B[C`},{label:`^C`,value:``}],X=`flex items-center justify-center shrink-0 min-w-11 min-h-11 rounded text-xs bg-surface-elevated text-text-primary active:bg-primary active:text-primary-foreground transition-colors select-none`;function ie({ctrlMode:e,onToggleCtrl:t,selectMode:n,onToggleSelect:r,onKey:a,onCopy:o,onPaste:s,onSendToChat:l,onOpenLinks:u}){return(0,J.jsxs)(`div`,{className:`relative shrink-0 bg-surface border-t border-border`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1.5 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:[(0,J.jsx)(`button`,{onClick:r,"aria-label":`Select text`,"aria-pressed":n,className:c(X,n&&`bg-primary text-primary-foreground`),children:(0,J.jsx)(j,{size:16})}),(0,J.jsx)(`button`,{onClick:o,"aria-label":`Copy`,className:X,children:(0,J.jsx)(i,{size:16})}),(0,J.jsx)(`button`,{onClick:s,"aria-label":`Paste`,className:X,children:(0,J.jsx)(x,{size:16})}),(0,J.jsx)(`button`,{onClick:u,"aria-label":`Links`,className:X,children:(0,J.jsx)(y,{size:16})}),(0,J.jsx)(`button`,{onClick:l,"aria-label":`Send to Chat`,className:X,children:(0,J.jsx)(g,{size:16})}),(0,J.jsx)(`div`,{className:`w-px h-6 shrink-0 bg-border mx-0.5`}),Y.map(n=>(0,J.jsx)(`button`,{onClick:()=>n.value===null?t():a(n.value),className:c(X,`font-mono`,n.value===null&&e&&`bg-primary text-primary-foreground`),children:n.label},n.label)),(0,J.jsx)(`div`,{className:`w-6 shrink-0`,"aria-hidden":!0})]}),(0,J.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 right-0 w-8 bg-gradient-to-l from-surface to-transparent`,"aria-hidden":!0})]})}var ae=new Set([`localhost`,`::1`]);function Z(e){let t=e.replace(/^\[|\]$/g,``).toLowerCase();return ae.has(t)?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(t)}function Q(e){let t;try{t=new URL(e)}catch{return null}let n=t.searchParams.get(`redirect_uri`)??t.searchParams.get(`redirectUri`);if(!n)return null;try{let e=new URL(n);return Z(e.hostname)?e.port||(e.protocol===`https:`?`443`:`80`):null}catch{return null}}function $(e){try{let t=new URL(e.trim());return(t.protocol===`http:`||t.protocol===`https:`)&&Z(t.hostname)}catch{return!1}}function oe({onDone:e}){let[t,n]=(0,M.useState)(``),[r,i]=(0,M.useState)(!1),s=t.trim(),c=!r&&$(s),l=async()=>{i(!0);try{await a.post(`/api/loopback/callback`,{url:s}),o.success(`Sent to the waiting command`,{duration:2e3}),n(``),e()}catch(e){o.error(e.message,{duration:4e3})}finally{i(!1)}};return(0,J.jsxs)(`div`,{className:`shrink-0 border-t border-border px-3 py-3`,children:[(0,J.jsx)(`p`,{className:`pb-2 text-[11px] leading-snug text-text-secondary`,children:`Finished signing in and landed on a page that would not load? Paste that address here — the machine will deliver it to the command still waiting.`}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`input`,{value:t,onChange:e=>n(e.target.value),inputMode:`url`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,placeholder:`http://127.0.0.1:54132/oauth/callback?code=…`,"aria-label":`Callback address`,className:`h-11 min-w-0 flex-1 rounded-lg border border-border bg-surface px-3 font-mono text-xs text-foreground placeholder:text-text-subtle`}),(0,J.jsx)(`button`,{onClick:()=>void l(),disabled:!c,"aria-label":`Finish login`,className:`flex size-11 shrink-0 items-center justify-center rounded-lg bg-primary text-primary-foreground disabled:opacity-40 active:opacity-80 transition-opacity`,children:r?(0,J.jsx)(m,{className:`size-4 animate-spin`}):(0,J.jsx)(A,{className:`size-4`})})]}),s!==``&&!$(s)&&(0,J.jsx)(`p`,{className:`pt-1.5 text-[11px] text-error`,children:`Needs to be the http://127.0.0.1:… address the sign-in redirected to.`})]})}function se({open:e,onClose:t,urls:n}){let r=async e=>{let n=await v(e);o[n?`success`:`error`](n?`Link copied`:`Could not copy link`,{duration:1500}),t()},a=[...new Set(n.map(Q).filter(e=>!!e))];return(0,J.jsxs)(u,{open:e,onClose:t,zIndex:70,className:`flex flex-col max-h-[70vh]`,children:[(0,J.jsx)(`div`,{className:`shrink-0 px-4 pb-2 text-xs font-medium text-text-secondary`,children:n.length>0?`Links in terminal (${n.length})`:`Links in terminal`}),(0,J.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto px-2 pb-2`,children:n.length===0?(0,J.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-4 py-8 text-center text-sm text-text-secondary`,children:[(0,J.jsx)(k,{className:`size-5 text-text-subtle`}),`No links found in the visible scrollback.`]}):n.map(e=>{let n=Q(e);return(0,J.jsxs)(`div`,{children:[(0,J.jsxs)(`div`,{className:`flex items-stretch gap-1`,children:[(0,J.jsxs)(`a`,{href:e,target:`_blank`,rel:`noreferrer noopener`,onClick:t,className:`flex min-h-11 flex-1 min-w-0 items-center gap-2 rounded-lg px-3 py-2 text-sm text-foreground active:bg-accent transition-colors`,children:[(0,J.jsx)(b,{className:`size-4 shrink-0 text-text-subtle`}),(0,J.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-left font-mono text-xs`,children:e})]}),(0,J.jsx)(`button`,{onClick:()=>void r(e),"aria-label":`Copy ${e}`,className:`flex size-11 shrink-0 items-center justify-center rounded-lg text-text-secondary active:bg-accent transition-colors`,children:(0,J.jsx)(i,{className:`size-4`})})]}),n&&(0,J.jsxs)(`p`,{className:`px-3 pb-2 text-[11px] leading-snug text-text-secondary`,children:[`Signing in here sends you back to port `,n,` `,(0,J.jsx)(`strong`,{children:`on the machine`}),`, not this device — so the terminal keeps waiting. Afterwards, paste the address bar below to finish it.`]})]},e)})}),a.length>0&&(0,J.jsx)(oe,{onDone:t})]})}var ce=(0,M.memo)(function({metadata:e,tabId:t}){let n=e?.sessionId??`new`,r=e?.projectName,i=e?.cwd,a=(0,M.useRef)(null),{connected:s,reconnecting:l,exited:u,shellReady:d,sendData:f,getSelection:p,getLastCommandOutput:m,getLastCommand:_,getBufferUrls:y,restart:b}=H({sessionId:n,projectName:r,cwd:i,containerRef:a,tabId:t}),[x,C]=(0,M.useState)(!1),[w,T]=(0,M.useState)(!1),[E,D]=(0,M.useState)(!1);W(a,w);let O=(0,M.useCallback)(()=>{(a.current?.querySelector(`.xterm-helper-textarea`))?.focus()},[]);q({tabId:t,metadata:e,shellReady:d,sendData:f,focusTerminal:O,containerRef:a}),(0,M.useEffect)(()=>{let e=a.current;if(!e||w)return;let t=()=>O();return e.addEventListener(`touchend`,t,{capture:!0}),()=>e.removeEventListener(`touchend`,t,{capture:!0})},[O,w]);let k=(0,M.useCallback)(e=>{if(O(),x&&e.length===1){let t=e.toLowerCase().charCodeAt(0)-96;t>=1&&t<=26&&f(String.fromCharCode(t)),C(!1);return}f(e)},[x,f,O]),A=(0,M.useCallback)(async()=>{let e=p(),t=e||m();if(!t.trim()){o(`Nothing to copy`,{duration:1500});return}let n=await v(t);o[n?`success`:`error`](n?e?`Selection copied`:`Last output copied`:`Could not copy`,{duration:1500})},[p,m]),j=(0,M.useCallback)(async()=>{try{let e=await navigator.clipboard.readText();e&&(f(e),O())}catch{o.error(`Clipboard blocked — paste with the keyboard instead`,{duration:2500})}},[f,O]),N=(0,M.useCallback)(()=>{let e=p(),t=e||m();if(!t.trim())return;let n=e?``:_();S({text:"```bash\n"+(n?`${n}\n${t}`:t)+"\n```",label:e?`Terminal selection`:`Terminal output`,projectName:r}),o.success(`Sent to chat`,{duration:1500})},[p,m,_,r]),P=typeof window<`u`&&`ontouchstart`in window;return(0,J.jsxs)(`div`,{className:`flex flex-col h-full min-h-0`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1 bg-surface border-b border-border text-xs`,children:[(0,J.jsx)(`span`,{className:c(`size-2 rounded-full`,u?`bg-error`:s?`bg-success`:l?`bg-warning`:`bg-error`)}),(0,J.jsx)(`span`,{className:`text-text-secondary`,children:u?`Process exited`:s?`Connected`:l?`Reconnecting...`:`Disconnected`}),u&&(0,J.jsxs)(`button`,{onClick:b,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-xs bg-surface-elevated text-text-primary hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground transition-colors`,children:[(0,J.jsx)(h,{size:10}),`Restart`]}),(0,J.jsxs)(`button`,{onClick:N,title:`Send to Chat`,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-xs bg-surface-elevated text-text-primary hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground transition-colors ml-auto`,children:[(0,J.jsx)(g,{size:10}),`Chat`]}),(0,J.jsx)(`span`,{className:`text-text-subtle font-mono`,children:n})]}),(0,J.jsx)(`div`,{ref:a,onClick:w?void 0:O,className:c(`flex-1 min-h-0 bg-background p-1`,w&&`touch-none`)}),P&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(ie,{ctrlMode:x,onToggleCtrl:()=>C(!x),selectMode:w,onToggleSelect:()=>T(!w),onKey:k,onCopy:()=>void A(),onPaste:()=>void j(),onSendToChat:N,onOpenLinks:()=>D(!0)}),(0,J.jsx)(se,{open:E,onClose:()=>D(!1),urls:E?y():[]})]})]})});export{ce as TerminalTab};
@@ -1,8 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/markdown-renderer-CpRlpLHw.js","assets/vendor-mermaid-DrwG0NYt.js","assets/rolldown-runtime-FhOqtrmT.js","assets/vendor-ui-CaeeFO0B.js","assets/vendor-markdown-Ls5AcU91.js","assets/markdown-renderer-B317vEys.js","assets/index-Ch8l9de-.js","assets/button-BA_fJOtX.js","assets/utils-DoY4yTP-.js","assets/createLucideIcon-D8pyde1A.js","assets/eye-off-CUdzgmX8.js","assets/bot-CunPuEdW.js","assets/context-menu-Cq0u3SK9.js","assets/chevron-right-BLOtX8Vy.js","assets/circle-hjUGru6R.js","assets/clock-CvhF4DJP.js","assets/sparkles-Dqsf3hq6.js","assets/copy-DKn11Pye.js","assets/database-BH0urvbs.js","assets/download-zCATy4x4.js","assets/plus-BM-Ty0fp.js","assets/x-BcqfTY_7.js","assets/api-client-BSB14J4w.js","assets/react-I_EwPIZi.js","assets/mobile-bottom-sheet-BUOJgiaZ.js","assets/use-is-mobile-BXGVvczu.js","assets/api-settings-kQHV6pYZ.js","assets/project-store-B8BkHXy5.js","assets/panel-store-DCD82zc1.js","assets/settings-store-C20lqh0G.js","assets/tab-store-DAsvpx4t.js","assets/apply-theme-BH_d4amk.js","assets/resolve-theme-B9ABAH_3.js","assets/index-BiTiXgBZ.css","assets/image-gallery-CGvlv8zR.js","assets/run-in-terminal-CyS5Itj-.js","assets/edit-diff-preview-gq6ALf2B.js","assets/libesm-CPh1Av0r.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import{t as r}from"./createLucideIcon-D8pyde1A.js";import{n as i,t as a}from"./circle-question-mark-CzR7YRc-.js";import{t as o}from"./bot-CunPuEdW.js";import{t as s}from"./chevron-right-BLOtX8Vy.js";import{t as c}from"./clock-CvhF4DJP.js";import{t as l}from"./code-DDPoqVri.js";import{n as u,t as d}from"./sparkles-Dqsf3hq6.js";import{q as f}from"./vendor-mermaid-DrwG0NYt.js";import{t as p}from"./utils-DoY4yTP-.js";import{t as m}from"./tab-store-DAsvpx4t.js";import{$n as h,Bn as g,Cr as _,Dr as v,En as y,It as b,Mn as x,Sr as S,en as ee,r as C,sr as w,vr as T,zn as E}from"./index-Ch8l9de-.js";import{t as D}from"./use-blob-url-BKyVxOZw.js";import{r as O,t as k}from"./image-gallery-CGvlv8zR.js";var A=r(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),j=r(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),M=r(`file-pen`,[[`path`,{d:`M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34`,key:`o6klzx`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z`,key:`zhnas1`}]]),N=r(`file-plus-corner`,[[`path`,{d:`M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35`,key:`17jvcc`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M14 19h6`,key:`bvotb8`}],[`path`,{d:`M17 16v6`,key:`18yu1i`}]]),P=r(`file-search`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`11.5`,cy:`14.5`,r:`2.5`,key:`1bq0ko`}],[`path`,{d:`M13.3 16.3 15 18`,key:`2quom7`}]]),te=r(`list-checks`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}]]),F=r(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),I=e(t(),1),L=n(),ne=(0,I.lazy)(()=>f(()=>import(`./markdown-renderer-CpRlpLHw.js`).then(e=>({default:e.MarkdownRenderer})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35])));function R({content:e,maxHeight:t=`max-h-48`}){return(0,L.jsx)(I.Suspense,{fallback:(0,L.jsx)(`div`,{className:`animate-pulse h-4 bg-muted rounded`}),children:(0,L.jsx)(ne,{content:e,className:`text-text-secondary overflow-auto ${t}`})})}var z={task_assignment:{label:`task`,className:`bg-primary/20 text-primary`},idle_notification:{label:`idle`,className:`bg-warning/20 text-warning`},completion:{label:`done`,className:`bg-success/20 text-success`},shutdown_request:{label:`shutdown`,className:`bg-error/20 text-error`},shutdown_approved:{label:`shutdown ✓`,className:`bg-text-3/20 text-text-3`},shutdown_response:{label:`shutdown reply`,className:`bg-text-3/20 text-text-3`},plan_approval_request:{label:`plan review`,className:`bg-primary/20 text-primary`},plan_approval_response:{label:`plan reply`,className:`bg-primary/20 text-primary`}},re=new Set([`to`,`message`,`summary`,`notify_when_idle`,`recipient`,`content`,`type`]),B=e=>typeof e==`string`?e:e==null?``:String(e);function V(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e;return typeof t.type!=`string`||!t.type?null:{type:t.type,request_id:typeof t.request_id==`string`?t.request_id:void 0,approve:typeof t.approve==`boolean`?t.approve:void 0,reason:typeof t.reason==`string`?t.reason:void 0,feedback:typeof t.feedback==`string`?t.feedback:void 0}}function ie(e){let t=e.trim();if(!t.startsWith(`{`))return null;try{return V(JSON.parse(t))}catch{return null}}function H(e){let t=B(e.to)||B(e.recipient),n=e.message??e.content,r=V(n)??ie(B(n)),i=r?``:B(n),a=B(e.type),o=r?.type||(a&&a!==`message`?a:`message`),s=B(e.summary).trim(),c=Object.entries(e).filter(([e])=>!re.has(e)).map(([e,t])=>({key:e,value:typeof t==`string`?t:JSON.stringify(t)??``}));return{to:t,summary:s||void 0,text:i,firstLine:i.split(`
3
- `).map(e=>e.trim()).find(e=>e.length>0)??``,protocol:r??void 0,kind:o,notifyWhenIdle:e.notify_when_idle===!0,extras:c}}function U(e){if(!e)return null;let t;try{t=JSON.parse(e)}catch{return null}if(Array.isArray(t)){let e=B(t.find(e=>e&&typeof e==`object`&&e.type===`text`)?.text);if(!e)return null;try{t=JSON.parse(e)}catch{return null}}if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t;if(typeof n.success!=`boolean`)return null;let r=n.pin&&typeof n.pin==`object`?n.pin:null;return{ok:n.success,detail:B(n.message)||B(n.error)||void 0,peer:r&&B(r.name)||void 0,ref:r&&B(r.ref)||void 0}}function ae({kind:e}){if(e===`message`)return null;let t=z[e];return(0,L.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] ${t?.className??`bg-panel-2 text-text-3`}`,children:t?.label??e})}function oe({name:e,input:t}){let n=H(t),r=n.summary||n.firstLine||(n.protocol?n.kind:``),a=r.length>72?`${r.slice(0,72)}…`:r;return(0,L.jsxs)(L.Fragment,{children:[e,` `,(0,L.jsxs)(`span`,{className:`text-text-subtle`,children:[(0,L.jsx)(i,{className:`size-3 inline`}),` `,n.to||`unknown`,a?` · ${a}`:``]}),n.notifyWhenIdle&&(0,L.jsx)(c,{className:`size-3 inline ml-1 text-text-3`})]})}function se({input:e}){let t=H(e);return(0,L.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,L.jsx)(`span`,{className:`text-text-subtle`,children:`To`}),(0,L.jsx)(`span`,{className:`font-medium text-text-primary`,children:t.to||`unknown`}),(0,L.jsx)(ae,{kind:t.kind}),t.notifyWhenIdle&&(0,L.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] bg-panel-2 text-text-3`,children:[(0,L.jsx)(c,{className:`size-3`}),` notify when idle`]})]}),!!t.text&&(0,L.jsx)(R,{content:t.text,maxHeight:`max-h-40`}),t.protocol&&(0,L.jsxs)(`div`,{className:`space-y-0.5 text-text-secondary`,children:[t.protocol.approve!=null&&(0,L.jsxs)(`p`,{children:[t.protocol.approve?`Approved`:`Rejected`,t.protocol.request_id?(0,L.jsxs)(`span`,{className:`text-text-subtle font-mono`,children:[` · `,t.protocol.request_id]}):null]}),!!t.protocol.reason&&(0,L.jsx)(`p`,{className:`text-text-subtle`,children:t.protocol.reason}),!!t.protocol.feedback&&(0,L.jsx)(`p`,{className:`text-text-subtle`,children:t.protocol.feedback})]}),t.extras.length>0&&(0,L.jsx)(`div`,{className:`space-y-0.5`,children:t.extras.map(e=>(0,L.jsxs)(`p`,{className:`text-text-subtle`,children:[(0,L.jsx)(`span`,{className:`font-mono`,children:e.key}),`: `,e.value]},e.key))})]})}function ce({output:e}){let[t,n]=(0,I.useState)(!1),r=U(e);return r?(0,L.jsxs)(`div`,{className:`border-t border-border pt-1.5 space-y-1`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[r.ok?(0,L.jsx)(S,{className:`size-3 text-success shrink-0`}):(0,L.jsx)(A,{className:`size-3 text-error shrink-0`}),(0,L.jsx)(`span`,{className:r.ok?`text-success`:`text-error`,children:r.ok?`Delivered`:`Not delivered`}),!!r.detail&&(0,L.jsxs)(`span`,{className:`text-text-subtle`,children:[`· `,r.detail]}),!!r.ref&&(0,L.jsxs)(`span`,{className:`text-text-3 font-mono text-[10px]`,children:[`[`,r.ref,`]`]})]}),(0,L.jsxs)(`button`,{type:`button`,onClick:()=>n(!t),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,L.jsx)(l,{className:`size-3`}),t?`Hide`:`Show`,` raw`]}),t&&(0,L.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono max-h-40 whitespace-pre-wrap break-all text-[10px]`,children:e})]}):null}var le=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.webp`,`.bmp`,`.avif`,`.ico`]);function ue(e){let t=e.lastIndexOf(`.`);return t===-1?!1:le.has(e.slice(t).toLowerCase())}var de=/^\[image(?: · [\d.]+(?:B|KB|MB))?\]$/;function fe(e){if(!e.startsWith(`[`))return!1;let t;try{t=JSON.parse(e)}catch{return!1}return Array.isArray(t)?t.some(e=>{let t=e;return t?.type===`text`&&typeof t.text==`string`&&de.test(t.text)}):!1}var pe=`Async agent launched successfully`;function me(e){return!!e&&e.includes(pe)}var he=`text-[var(--img-meta-label)] @max-[470px]:hidden`,ge=[`60%`,`45%`,`80%`];function _e({aspect:e,actions:t}){return(0,L.jsxs)(`div`,{className:`grid grid-cols-[132px_1fr] items-start gap-[14px] overflow-hidden rounded-lg border border-border bg-panel p-[14px] @max-[470px]:grid-cols-[64px_1fr] @max-[470px]:gap-[11px] @max-[470px]:p-[11px]`,children:[(0,L.jsx)(`div`,{className:`img-skeleton rounded-lg`,style:{aspectRatio:e}}),(0,L.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-[9px]`,children:[(0,L.jsx)(`div`,{className:`img-skeleton h-[13px] w-2/5 rounded @max-[470px]:hidden`}),(0,L.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-[14px] gap-y-[4px] font-mono text-[11.5px] @max-[470px]:grid-cols-[1fr]`,children:[`dimensions`,`size`,`path`].map((e,t)=>(0,L.jsxs)(I.Fragment,{children:[(0,L.jsx)(`dt`,{className:he,children:e}),(0,L.jsx)(`dd`,{className:`flex items-center`,children:(0,L.jsx)(`span`,{className:`img-skeleton h-[11px] rounded`,style:{width:ge[t]}})})]},e))}),t]})]})}function ve({code:e,onRetry:t}){return(0,L.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-border bg-panel px-2.5 py-2 font-mono text-[12px] text-text-2`,children:[(0,L.jsx)(_,{className:`size-3 shrink-0`}),(0,L.jsxs)(`span`,{className:`truncate`,children:[`preview unavailable`,e?` · ${e}`:``]}),(0,L.jsx)(`button`,{type:`button`,onClick:t,className:`ml-auto shrink-0 text-accent`,children:`retry`})]})}var ye=.62;function be(e,t){let n=e.w/e.h;if(n>2.4)return{variant:`band`,aspect:n,fit:`contain`};let r=Math.max(ye,n),i=t/r;return e.w<t&&e.h<i?{variant:`split`,aspect:r,fit:`native`}:{variant:`split`,aspect:r,fit:n<.62?`contain`:`cover`}}function xe(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function Se(e,t){let n=`${e.w} × ${e.h} px`;return t===`native`?`${n} · shown 1:1`:n}var W=new Map;function Ce(e){return W.get(e)}function we(e,t){W.set(e,t)}var Te=4/5,G=`text-[var(--img-meta-label)] @max-[470px]:hidden`,K=`truncate text-text @max-[470px]:text-text-2`,q=`h-[30px] @max-[470px]:h-[36px] shrink-0 rounded-[7px] px-[9px] font-mono text-[11.5px] text-text-2 bg-[var(--img-ghost)] border border-[var(--img-ghost-border)] backdrop-blur-[6px] transition-colors can-hover:hover:bg-[var(--img-ghost-hover)] can-hover:hover:border-[var(--img-ghost-hover-border)] can-hover:hover:text-text`;function Ee({filePath:e,projectName:t}){let[n,r]=(0,I.useState)(0),{blobUrl:i,blob:a,error:o,errorCode:s}=D(e,t,void 0,n),[c,l]=(0,I.useState)(()=>Ce(e)),[u,d]=(0,I.useState)(!1),[f,h]=(0,I.useState)(!1),g=C(e=>e.open),{openTab:_}=m(b(e=>({openTab:e.openTab}))),v=p(e);(0,I.useEffect)(()=>{if(!f)return;let e=setTimeout(()=>h(!1),1200);return()=>clearTimeout(e)},[f]);let y=t=>{let n={w:t.naturalWidth,h:t.naturalHeight};if(!n.w||!n.h)return d(!0);we(e,n),l(n)},x=()=>{d(!1),r(e=>e+1)};if(o||u)return(0,L.jsx)(`div`,{className:`border-t border-border pt-1.5`,children:(0,L.jsx)(ve,{code:u?void 0:s??void 0,onRetry:x})});let S=c?be(c,132):null,w=S?.aspect??Te,T=(0,L.jsxs)(`div`,{className:`flex flex-wrap gap-[6px]`,children:[(0,L.jsxs)(`button`,{type:`button`,onClick:E,className:q,children:[(0,L.jsx)(`span`,{className:`@max-[470px]:hidden`,children:`open in editor`}),(0,L.jsx)(`span`,{className:`hidden @max-[470px]:inline`,children:`open`})]}),(0,L.jsx)(`button`,{type:`button`,onClick:A,className:q,children:f?`copied`:`copy path`}),(0,L.jsx)(`button`,{type:`button`,onClick:j,className:q,children:`full size`})]});function E(){t&&_({type:`editor`,title:v,metadata:{filePath:e,projectName:t},projectId:t,closable:!0})}function A(){ee(e).then(()=>h(!0))}function j(e){i&&g(i,v,O(e.currentTarget))}if(!i||!S||!c)return(0,L.jsxs)(`div`,{className:`@container border-t border-border pt-1.5`,children:[i&&(0,L.jsx)(`img`,{src:i,alt:``,className:`hidden`,onLoad:e=>y(e.currentTarget),onError:()=>d(!0)}),(0,L.jsx)(_e,{aspect:w,actions:T})]});let M=(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{className:G,children:`dimensions`}),(0,L.jsx)(`dd`,{className:K,children:Se(c,S.fit)}),a&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`dt`,{className:G,children:`size`}),(0,L.jsxs)(`dd`,{className:K,children:[xe(a.size),a.type?` · ${a.type}`:``]})]}),(0,L.jsx)(`dt`,{className:G,children:`path`}),(0,L.jsx)(`dd`,{dir:`rtl`,className:`${K} text-left`,children:e})]}),N=(0,L.jsx)(`img`,{src:i,alt:v,[k]:``,onLoad:e=>y(e.currentTarget),onError:()=>d(!0),className:S.fit===`cover`?`size-full object-cover`:S.fit===`contain`?`size-full object-contain`:`max-h-full max-w-full`});return(0,L.jsx)(`div`,{className:`@container border-t border-border pt-1.5`,children:(0,L.jsxs)(`div`,{className:`relative overflow-hidden rounded-lg border border-border p-[14px] @max-[470px]:p-[11px]`,children:[(0,L.jsx)(`img`,{"aria-hidden":`true`,alt:``,src:i,className:`absolute inset-0 size-full object-cover`,style:{filter:`var(--img-backdrop)`,transform:`scale(1.3)`}}),(0,L.jsx)(`div`,{className:`absolute inset-0`,style:{background:`var(--img-veil)`}}),S.variant===`band`?(0,L.jsxs)(`div`,{className:`relative grid gap-[11px]`,children:[(0,L.jsx)(`button`,{type:`button`,onClick:j,title:`Open ${v}`,className:`img-checkerboard w-full cursor-zoom-in overflow-hidden rounded-lg border border-[var(--img-plate-border)]`,style:{aspectRatio:S.aspect},children:N}),(0,L.jsx)(`dl`,{className:`grid grid-cols-[auto_auto_1fr] gap-x-[18px] font-mono text-[11.5px] [&_dt]:hidden`,children:M}),T]}):(0,L.jsxs)(`div`,{className:`relative grid grid-cols-[132px_1fr] items-start gap-[14px] @max-[470px]:grid-cols-[64px_1fr] @max-[470px]:gap-[11px]`,children:[(0,L.jsx)(`button`,{type:`button`,onClick:j,title:`Open ${v}`,className:`cursor-zoom-in overflow-hidden rounded-lg border border-[var(--img-plate-border)] bg-[var(--img-plate)] shadow-[var(--img-plate-shadow)] ${S.fit===`cover`?``:`img-checkerboard flex items-center justify-center`}`,style:{aspectRatio:S.aspect},children:N}),(0,L.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-[9px]`,children:[(0,L.jsx)(`p`,{className:`truncate text-[13px] font-semibold text-text @max-[470px]:hidden`,children:v}),(0,L.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-[14px] gap-y-[4px] font-mono text-[11.5px] @max-[470px]:grid-cols-[1fr]`,children:M}),T]})]})]})})}function J(e,t){if(e!==`Agent`&&e!==`Task`)return null;let n=t.name;return typeof n==`string`&&n.trim()?n.trim():null}function De(e,t,n=!1){if(t&&(e===`Bash`||e===`PowerShell`))return{Icon:x,cls:`bg-error/15 text-error`};if(n)return{Icon:y,cls:`bg-accent-2/15 text-accent-2`};switch(e){case`Read`:case`Glob`:case`LS`:return{Icon:P,cls:`bg-accent-wash text-primary`};case`Grep`:case`Search`:case`WebSearch`:case`ToolSearch`:return{Icon:g,cls:`bg-accent-wash text-primary`};case`WebFetch`:case`Fetch`:return{Icon:w,cls:`bg-info/15 text-info`};case`Edit`:case`MultiEdit`:case`NotebookEdit`:return{Icon:M,cls:`bg-accent-2/15 text-accent-2`};case`Write`:return{Icon:N,cls:`bg-success/15 text-success`};case`Bash`:case`PowerShell`:return{Icon:x,cls:`bg-panel-2 text-text-2`};case`TodoWrite`:return{Icon:te,cls:`bg-warning/15 text-warning`};case`Task`:case`Agent`:return{Icon:o,cls:`bg-accent-wash text-primary`};case`SendMessage`:return{Icon:E,cls:`bg-info/15 text-info`};case`AskUserQuestion`:return{Icon:a,cls:`bg-accent-wash text-primary`};case`ExitPlanMode`:return{Icon:j,cls:`bg-accent-wash text-primary`};case`Skill`:return{Icon:d,cls:`bg-accent-2/15 text-accent-2`};default:return{Icon:l,cls:`bg-panel-2 text-text-2`}}}function Oe(e){let t=e.type===`approval_request`;return{toolName:e.type===`tool_use`?e.tool:t?e.tool??`Tool`:`Tool`,input:e.type===`tool_use`?e.input:t?e.input??{}:{}}}function Y(e){if(e.type!==`tool_use`||e.tool!==`Read`)return null;let t=e.input?.file_path;return typeof t!=`string`||!/^(\/|[A-Za-z]:[/\\])/.test(t)?null:ue(t)?t:null}function X({tool:e,result:t,completed:n,projectName:r,bashPartialOutput:i}){let[a,o]=(0,I.useState)(()=>{let n=(e.type,e.tool),r=t?.type===`tool_result`&&!!t.isError;return(n===`Edit`||n===`MultiEdit`)&&!r?!0:!!Y(e)});if(e.type===`error`)return(0,L.jsxs)(`div`,{className:`flex items-center gap-2 rounded bg-error/10 border border-error/20 px-2 py-1.5 text-xs text-error`,children:[(0,L.jsx)(_,{className:`size-3`}),(0,L.jsx)(`span`,{children:e.message})]});let{toolName:c,input:l}=Oe(e),u=t?.type===`tool_result`,d=u&&!!t.isError,f=c===`AskUserQuestion`&&!!l?.answers,p=e.type===`approval_request`&&e.approved!=null,m=(c===`Agent`||c===`Task`)&&e.type===`tool_use`,g=m?e.children:void 0,y=g&&g.length>0,b=m&&e.type===`tool_use`?e.bgStatus:void 0,x=m&&(b!=null||u&&!d&&me(String(t.output??``)))&&b==null,ee=b===`failed`||b===`stopped`,C=x?!1:u||f||p||n,w=[`Edit`,`MultiEdit`,`Write`,`NotebookEdit`].includes(c),T=Y(e),E=u&&fe(String(t.output??``)),D=e.type===`tool_use`?e.toolUseId:void 0,O=(c===`Bash`||c===`PowerShell`)&&!u&&D?i?.current?.get(D):void 0,k=!!O;(0,I.useEffect)(()=>{k&&!a&&o(!0)},[k]);let j=(0,I.useRef)(!1);(0,I.useEffect)(()=>{d&&(c===`Edit`||c===`MultiEdit`)&&!j.current&&(j.current=!0,o(!1))},[d,c]);let{Icon:M,cls:N}=De(c,d,!!J(c,l)),P=c===`AskUserQuestion`||c===`ExitPlanMode`||m;return(0,L.jsxs)(`div`,{"data-tool-ref":D,className:`rounded-[11px] border overflow-hidden text-xs bg-panel ${P?`border-accent-wash-border`:`border-border`}`,children:[(0,L.jsxs)(`button`,{onClick:()=>o(!a),className:`flex items-center gap-2.5 px-2.5 py-2 w-full text-left hover:bg-panel-2/40 transition-colors min-w-0`,children:[(0,L.jsx)(`span`,{className:`inline-flex items-center justify-center size-6 rounded-[7px] shrink-0 ${N}`,children:(0,L.jsx)(M,{className:`size-3.5`})}),(0,L.jsx)(`span`,{className:`truncate text-text font-medium`,children:(0,L.jsx)(ke,{name:c,input:l})}),(0,L.jsxs)(`span`,{className:`ml-auto flex items-center gap-2 shrink-0`,children:[k&&(0,L.jsxs)(`span`,{className:`text-[10px] text-warning`,children:[O.lineCount,` line`,O.lineCount===1?``:`s`,` streaming…`]}),y&&!k&&(0,L.jsxs)(`span`,{className:`text-[10px] text-text-3 font-mono`,children:[g.length,` steps`]}),x&&(0,L.jsx)(`span`,{className:`text-[10px] text-primary`,children:`running…`}),d||ee?(0,L.jsx)(A,{className:`size-3.5 text-error`}):C?(0,L.jsx)(S,{className:`size-3.5 text-success`}):(0,L.jsx)(h,{className:`size-3.5 text-primary animate-spin`}),a?(0,L.jsx)(v,{className:`size-3 text-text-3`}):(0,L.jsx)(s,{className:`size-3 text-text-3`})]})]}),a&&(0,L.jsxs)(`div`,{className:`px-2 pb-2 space-y-1.5 select-text`,children:[(e.type===`tool_use`||e.type===`approval_request`)&&(0,L.jsx)(Ae,{name:c,input:l,projectName:r,toolUseId:D}),O&&(0,L.jsx)(Pe,{content:O.content,lineCount:O.lineCount}),y&&(0,L.jsx)(Q,{events:g,projectName:r}),T&&(0,L.jsx)(Ee,{filePath:T,projectName:r??``}),u&&!(w&&!d)&&!(E&&!d)&&(0,L.jsx)(Me,{toolName:c,output:t.output})]})]})}function ke({name:e,input:t}){let n=e=>String(e??``);switch(e){case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:return(0,L.jsxs)(L.Fragment,{children:[e,` `,(0,L.jsx)(`span`,{className:`text-text-subtle`,children:p(n(t.file_path))})]});case`Bash`:case`PowerShell`:{let r=t.description?n(t.description):n(t.command);return(0,L.jsxs)(L.Fragment,{children:[e,` `,(0,L.jsx)(`span`,{className:`text-text-subtle${t.description?``:` font-mono`}`,children:$(r,60)})]})}case`Glob`:return(0,L.jsxs)(L.Fragment,{children:[e,` `,(0,L.jsx)(`span`,{className:`font-mono text-text-subtle`,children:n(t.pattern)})]});case`Grep`:return(0,L.jsxs)(L.Fragment,{children:[e,` `,(0,L.jsx)(`span`,{className:`font-mono text-text-subtle`,children:$(n(t.pattern),40)})]});case`WebSearch`:return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(g,{className:`size-3 inline`}),` `,e,` `,(0,L.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.query),50)})]});case`WebFetch`:return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(w,{className:`size-3 inline`}),` `,e,` `,(0,L.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.url),50)})]});case`ToolSearch`:return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(g,{className:`size-3 inline`}),` `,e,` `,(0,L.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.query),50)})]});case`Agent`:case`Task`:{let r=J(e,t),i=$(n(t.description||t.prompt),r?44:60);return(0,L.jsxs)(L.Fragment,{children:[!r&&(0,L.jsx)(o,{className:`size-3 inline`}),` `,e,` `,r&&(0,L.jsx)(`span`,{className:`text-text-primary font-medium`,children:r}),(0,L.jsx)(`span`,{className:`text-text-subtle`,children:r?` · ${i}`:i})]})}case`SendMessage`:return(0,L.jsx)(oe,{name:e,input:t});case`TodoWrite`:{let n=Array.isArray(t.todos)?t.todos:[],r=n.filter(e=>e.status===`completed`).length;return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(F,{className:`size-3 inline`}),` `,e,` `,(0,L.jsxs)(`span`,{className:`text-text-subtle`,children:[r,`/`,n.length,` done`]})]})}case`AskUserQuestion`:{let n=Array.isArray(t.questions)?t.questions:[],r=!!t.answers;return(0,L.jsxs)(L.Fragment,{children:[e,` `,(0,L.jsxs)(`span`,{className:`text-text-subtle`,children:[n.length,` question`,n.length===1?``:`s`,r?` ✓`:``]})]})}case`ScheduleWakeup`:return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(c,{className:`size-3 inline`}),` `,e,` `,(0,L.jsxs)(`span`,{className:`text-text-subtle`,children:[`in `,Re(Number(t.delaySeconds)),t.reason?` — ${$(n(t.reason),50)}`:``]})]});case`TaskCreate`:return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(F,{className:`size-3 inline`}),` `,e,` `,(0,L.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.subject),60)})]});case`TaskUpdate`:return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(F,{className:`size-3 inline`}),` `,e,` `,(0,L.jsxs)(`span`,{className:`text-text-subtle`,children:[`#`,n(t.taskId),` → `,n(t.status)]})]});case`TaskStop`:return(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(F,{className:`size-3 inline`}),` `,e,` `,(0,L.jsxs)(`span`,{className:`text-text-subtle`,children:[`#`,n(t.taskId),` stopped`]})]});default:return(0,L.jsx)(L.Fragment,{children:e})}}function Ae({name:e,input:t,projectName:n,toolUseId:r}){let i=e=>String(e??``),{openTab:a}=m(b(e=>({openTab:e.openTab}))),o=e=>{n&&a({type:`editor`,title:p(e),metadata:{filePath:e,projectName:n},projectId:n,closable:!0})},s=(e,t,r)=>{a({type:`git-diff`,title:`Diff ${p(e)}`,metadata:{filePath:e,projectName:n,original:t,modified:r},projectId:n??null,closable:!0})};switch(e){case`Bash`:case`PowerShell`:return(0,L.jsxs)(`div`,{className:`space-y-1`,children:[!!t.description&&(0,L.jsx)(`p`,{className:`text-text-subtle italic`,children:i(t.description)}),(0,L.jsx)(`pre`,{className:`font-mono text-text-secondary overflow-x-auto whitespace-pre-wrap break-all`,children:i(t.command)})]});case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:{let n=i(t.notebook_path||t.file_path),a=e===`Edit`&&(!!t.old_string||!!t.new_string),c=e=>r?`${r}-${e}`:void 0;return(0,L.jsxs)(`div`,{className:`space-y-1`,children:[(0,L.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`font-mono text-text-secondary break-all hover:text-primary hover:underline text-left flex items-center gap-1 min-w-0`,onClick:()=>o(n),title:`Open file in editor`,children:[(0,L.jsx)(T,{className:`size-3 shrink-0`}),n]}),a&&(0,L.jsxs)(`button`,{type:`button`,className:`text-text-subtle hover:text-primary hover:underline flex items-center gap-1 shrink-0 whitespace-nowrap`,onClick:()=>s(n,i(t.old_string),i(t.new_string)),title:`View diff in new tab`,children:[(0,L.jsx)(u,{className:`size-3 shrink-0`}),`View Diff`]})]}),a&&(0,L.jsx)(`div`,{"data-edit-ref":c(0),children:(0,L.jsx)(Le,{oldStr:i(t.old_string),newStr:i(t.new_string),filePath:n})}),e===`MultiEdit`&&Array.isArray(t.edits)&&(0,L.jsx)(`div`,{className:`space-y-1.5`,children:t.edits.map((e,t)=>(0,L.jsxs)(`div`,{"data-edit-ref":c(t),className:`space-y-0.5`,children:[(0,L.jsxs)(`p`,{className:`text-text-subtle text-[10px]`,children:[`Edit `,t+1]}),(0,L.jsx)(Le,{oldStr:i(e.old_string),newStr:i(e.new_string),filePath:n})]},t))}),e===`Write`&&!!t.content&&(0,L.jsx)(`pre`,{"data-edit-ref":c(0),className:`font-mono text-text-subtle overflow-x-auto max-h-32 whitespace-pre-wrap`,children:$(i(t.content),300)})]})}case`Glob`:return(0,L.jsxs)(`p`,{className:`font-mono text-text-secondary`,children:[i(t.pattern),t.path?` in ${i(t.path)}`:``]});case`Grep`:return(0,L.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,L.jsxs)(`p`,{className:`font-mono text-text-secondary`,children:[`/`,i(t.pattern),`/`]}),!!t.path&&(0,L.jsxs)(`p`,{className:`text-text-subtle`,children:[`in `,i(t.path)]})]});case`TodoWrite`:return(0,L.jsx)(je,{todos:t.todos??[]});case`Agent`:case`Task`:{let n=J(e,t);return(0,L.jsxs)(`div`,{className:`space-y-1`,children:[!!n&&(0,L.jsxs)(`p`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,L.jsx)(`span`,{className:`text-text-subtle`,children:`Name`}),(0,L.jsx)(`span`,{className:`font-medium text-text-primary`,children:n}),(0,L.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] bg-accent-2/15 text-accent-2`,children:`teammate`}),t.isolation===`worktree`&&(0,L.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] bg-panel-2 text-text-3`,children:`worktree`})]}),!!t.description&&(0,L.jsx)(`p`,{className:`text-text-secondary font-medium`,children:i(t.description)}),!!t.subagent_type&&(0,L.jsxs)(`p`,{className:`text-text-subtle`,children:[`Type: `,i(t.subagent_type)]}),!!t.prompt&&(0,L.jsx)(R,{content:i(t.prompt),maxHeight:`max-h-48`})]})}case`SendMessage`:return(0,L.jsx)(se,{input:t});case`ToolSearch`:return(0,L.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,L.jsx)(`p`,{className:`font-mono text-text-secondary`,children:i(t.query)}),!!t.max_results&&(0,L.jsxs)(`p`,{className:`text-text-subtle`,children:[`Max results: `,i(t.max_results)]})]});case`WebFetch`:return(0,L.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,L.jsxs)(`a`,{href:i(t.url),target:`_blank`,rel:`noopener noreferrer`,className:`font-mono text-primary hover:underline break-all flex items-center gap-1`,children:[(0,L.jsx)(w,{className:`size-3 shrink-0`}),i(t.url)]}),!!t.prompt&&(0,L.jsx)(`p`,{className:`text-text-subtle`,children:$(i(t.prompt),100)})]});case`AskUserQuestion`:{let e=t.questions??[],n=t.answers??{};return(0,L.jsx)(`div`,{className:`space-y-2`,children:e.map((e,t)=>(0,L.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,L.jsxs)(`p`,{className:`text-text-primary font-medium`,children:[e.header?`${e.header}: `:``,e.question]}),(0,L.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.options.map((t,r)=>(0,L.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-xs border ${(n[e.question]??``).split(`, `).includes(t.label)?`border-primary bg-primary/20 text-text-primary`:`border-border text-text-subtle`}`,children:t.label},r))}),n[e.question]&&(0,L.jsxs)(`p`,{className:`text-foreground text-xs`,children:[`Answer: `,n[e.question]]})]},t))})}case`ScheduleWakeup`:{let e=Number(t.delaySeconds)||0;return(0,L.jsxs)(`div`,{className:`space-y-1`,children:[(0,L.jsxs)(`p`,{className:`text-text-secondary`,children:[(0,L.jsx)(c,{className:`size-3 inline mr-1`}),`Wake in `,(0,L.jsx)(`span`,{className:`font-medium text-text-primary`,children:Re(e)}),(0,L.jsxs)(`span`,{className:`text-text-subtle`,children:[` (`,e,`s)`]})]}),!!t.reason&&(0,L.jsx)(`p`,{className:`text-text-secondary italic`,children:i(t.reason)}),!!t.prompt&&(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`p`,{className:`text-text-subtle text-[10px] mb-0.5`,children:`Prompt on wake`}),(0,L.jsx)(R,{content:i(t.prompt),maxHeight:`max-h-48`})]})]})}case`TaskCreate`:return(0,L.jsxs)(`div`,{className:`space-y-1`,children:[(0,L.jsx)(`p`,{className:`text-text-primary font-medium`,children:i(t.subject)}),!!t.description&&(0,L.jsx)(`p`,{className:`text-text-subtle`,children:i(t.description)}),!!t.activeForm&&(0,L.jsx)(`p`,{className:`text-text-subtle italic`,children:i(t.activeForm)})]});case`TaskUpdate`:return(0,L.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,L.jsxs)(`span`,{className:`font-mono text-text-secondary`,children:[`#`,i(t.taskId)]}),(0,L.jsx)(Z,{status:i(t.status)})]});case`TaskStop`:return(0,L.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,L.jsxs)(`span`,{className:`font-mono text-text-secondary`,children:[`#`,i(t.taskId)]}),(0,L.jsx)(Z,{status:`stopped`})]});default:return(0,L.jsx)(`pre`,{className:`overflow-x-auto text-text-secondary font-mono whitespace-pre-wrap break-all`,children:JSON.stringify(t,null,2)})}}function Z({status:e}){return(0,L.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] border ${e===`completed`?`text-success border-success/30 bg-success/10`:e===`in_progress`?`text-warning border-warning/30 bg-warning/10`:`text-text-subtle border-border bg-surface`}`,children:e})}function je({todos:e}){return(0,L.jsx)(`div`,{className:`space-y-0.5`,children:e.map((e,t)=>(0,L.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,L.jsx)(`span`,{className:`shrink-0 mt-0.5 ${e.status===`completed`?`text-success`:e.status===`in_progress`?`text-warning`:`text-text-subtle`}`,children:e.status===`completed`?`✓`:e.status===`in_progress`?`▶`:`○`}),(0,L.jsx)(`span`,{className:e.status===`completed`?`line-through text-text-subtle`:`text-text-secondary`,children:e.content})]},t))})}function Me({toolName:e,output:t}){let[n,r]=(0,I.useState)(!1),i=(0,I.useMemo)(()=>{if(e!==`Agent`&&e!==`Task`)return null;try{let e=JSON.parse(t);if(Array.isArray(e)){let t=e.filter(e=>e.type===`text`&&e.text).map(e=>e.text).join(`
4
-
5
- `);if(t)return t}if(typeof e==`string`)return e}catch{if(t&&!t.startsWith(`[{`))return t}return null},[e,t]);return e===`SendMessage`&&U(t)?(0,L.jsx)(ce,{output:t}):i?(0,L.jsxs)(`div`,{className:`border-t border-border pt-1.5 space-y-1`,children:[(0,L.jsx)(R,{content:i,maxHeight:`max-h-60`}),(0,L.jsxs)(`button`,{type:`button`,onClick:()=>r(!n),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,L.jsx)(l,{className:`size-3`}),n?`Hide`:`Show`,` raw`]}),n&&(0,L.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono max-h-40 whitespace-pre-wrap break-all text-[10px]`,children:t})]}):(0,L.jsx)(Ne,{output:t})}function Ne({output:e}){let t=e.split(`
6
- `).length,n=t>3||e.length>200,[r,i]=(0,I.useState)(n);return(0,L.jsxs)(`div`,{className:`border-t border-border pt-1.5`,children:[n&&(0,L.jsxs)(`button`,{type:`button`,onClick:()=>i(!r),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors mb-1`,children:[r?(0,L.jsx)(s,{className:`size-3`}):(0,L.jsx)(v,{className:`size-3`}),`Output (`,t,` lines)`]}),(0,L.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono whitespace-pre-wrap break-all ${r?`max-h-16 overflow-hidden`:`max-h-60`}`,children:e})]})}function Q({events:e,projectName:t,className:n}){let r=[],i=``;for(let t of e)if(t.type===`text`)i+=t.content;else if(t.type===`tool_use`)i&&=(r.push({kind:`text`,content:i}),``),r.push({kind:`tool`,tool:t});else if(t.type===`tool_result`){let e=t.toolUseId,n=e?r.find(t=>t.kind===`tool`&&t.tool.type===`tool_use`&&t.tool.toolUseId===e&&!t.result):r.findLast(e=>e.kind===`tool`&&!e.result);n&&(n.result=t)}i&&r.push({kind:`text`,content:i});let a=(0,I.useRef)(null),o=(0,I.useRef)(!1);return(0,I.useEffect)(()=>{a.current&&!o.current&&(a.current.scrollTop=a.current.scrollHeight)},[r.length]),(0,L.jsx)(`div`,{ref:a,onScroll:e=>{let t=e.currentTarget;o.current=t.scrollTop+t.clientHeight<t.scrollHeight-20},className:n??`border-l-2 border-accent/20 pl-2 space-y-1 mt-1 max-h-64 md:max-h-96 overflow-y-auto`,children:r.map((e,n)=>e.kind===`text`?(0,L.jsx)(`div`,{className:`text-text-secondary text-[11px]`,children:(0,L.jsx)(R,{content:e.content,maxHeight:`max-h-24`})},`st-${n}`):(0,L.jsx)(X,{tool:e.tool,result:e.result,completed:!!e.result,projectName:t},`sc-${n}`))})}function Pe({content:e,lineCount:t}){let n=(0,I.useRef)(null),r=(0,I.useRef)(!1);return(0,I.useEffect)(()=>{n.current&&!r.current&&(n.current.scrollTop=n.current.scrollHeight)},[e]),(0,L.jsxs)(`div`,{className:`border-t border-border pt-1.5`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-warning mb-1`,children:[(0,L.jsx)(h,{className:`size-3 animate-spin`}),(0,L.jsxs)(`span`,{children:[`Output (`,t,` line`,t===1?``:`s`,`, streaming...)`]})]}),(0,L.jsx)(`pre`,{ref:n,onScroll:e=>{let t=e.currentTarget;r.current=t.scrollTop+t.clientHeight<t.scrollHeight-20},className:`overflow-x-auto overflow-y-auto max-h-60 text-text-subtle font-mono whitespace-pre-wrap break-all text-[11px]`,children:e.split(`
7
- `).slice(-200).join(`
8
- `)})]})}var Fe=f(()=>import(`./edit-diff-preview-gq6ALf2B.js`),__vite__mapDeps([36,2,4,37])),Ie=(0,I.lazy)(()=>Fe);function Le(e){return(0,L.jsx)(I.Suspense,{fallback:(0,L.jsx)(`div`,{className:`animate-pulse h-8 bg-muted rounded`}),children:(0,L.jsx)(Ie,{...e})})}function $(e,t=50){return e?e.length>t?e.slice(0,t)+`…`:e:``}function Re(e){if(!Number.isFinite(e)||e<=0)return`0s`;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.round(e%60),i=[];return t&&i.push(`${t}h`),n&&i.push(`${n}m`),(r||i.length===0)&&i.push(`${r}s`),i.join(` `)}export{j as a,F as i,X as n,A as o,z as r,Q as t};
@@ -1 +0,0 @@
1
- import{P as e}from"./vendor-mermaid-DrwG0NYt.js";export{e as createTreemapServices};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t}from"./vendor-markdown-Ls5AcU91.js";import{t as n}from"./react-I_EwPIZi.js";import{n as r}from"./use-is-mobile-BXGVvczu.js";import{ot as i}from"./index-Ch8l9de-.js";var a=e(t(),1),o=n(e=>({payload:null,open:t=>e({payload:t}),close:()=>e({payload:null})}));function s(){let e=r(),t=i(e=>e.open),n=o(e=>e.open);return(0,a.useCallback)(r=>{e?n(r):t(`team-member`,r)},[e,n,t])}export{o as n,s as t};
@@ -1 +0,0 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./createLucideIcon-D8pyde1A.js";import{t as i}from"./download-zCATy4x4.js";import{t as a}from"./file-exclamation-point-COAwgNGw.js";import"./api-client-BSB14J4w.js";import{t as o}from"./button-BA_fJOtX.js";import{$n as s,Bt as c,Hn as l,Ht as u,Ln as d,Lt as f,On as p,Rt as m,Ut as h,Vn as g,Vt as _,Wn as v,qt as y,zt as b}from"./index-Ch8l9de-.js";import{a as ee,i as te,n as x,r as S,t as C}from"./media-url-CylYQld1.js";import{o as w}from"./can-open-in-ppm-omBzUBBq.js";var T=r(`flip-horizontal-2`,[[`path`,{d:`m3 7 5 5-5 5V7`,key:`couhi7`}],[`path`,{d:`m21 7-5 5 5 5V7`,key:`6ouia7`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 14v2`,key:`8jcxud`}],[`path`,{d:`M12 8v2`,key:`1woqiv`}],[`path`,{d:`M12 2v2`,key:`tus03m`}]]),E=r(`flip-vertical-2`,[[`path`,{d:`m17 3-5 5-5-5h10`,key:`1ftt6x`}],[`path`,{d:`m17 21-5-5-5 5h10`,key:`1m0wmu`}],[`path`,{d:`M4 12H2`,key:`rhcxmi`}],[`path`,{d:`M10 12H8`,key:`s88cx1`}],[`path`,{d:`M16 12h-2`,key:`10asgb`}],[`path`,{d:`M22 12h-2`,key:`14jgyd`}]]),D=r(`maximize`,[[`path`,{d:`M8 3H5a2 2 0 0 0-2 2v3`,key:`1dcmit`}],[`path`,{d:`M21 8V5a2 2 0 0 0-2-2h-3`,key:`1e4gt3`}],[`path`,{d:`M3 16v3a2 2 0 0 0 2 2h3`,key:`wsl5sc`}],[`path`,{d:`M16 21h3a2 2 0 0 0 2-2v-3`,key:`18trek`}]]),O=r(`minimize`,[[`path`,{d:`M8 3v3a2 2 0 0 1-2 2H3`,key:`hohbtr`}],[`path`,{d:`M21 8h-3a2 2 0 0 1-2-2V3`,key:`5jw1f3`}],[`path`,{d:`M3 16h3a2 2 0 0 1 2 2v3`,key:`198tvr`}],[`path`,{d:`M16 21v-3a2 2 0 0 1 2-2h3`,key:`ph8mxp`}]]),k=r(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),A=r(`volume-2`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`,key:`1q6k2b`}],[`path`,{d:`M19.364 18.364a9 9 0 0 0 0-12.728`,key:`ijwkga`}]]),j=r(`volume-1`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`,key:`1q6k2b`}]]),M=r(`volume-x`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`line`,{x1:`22`,x2:`16`,y1:`9`,y2:`15`,key:`1ewh16`}],[`line`,{x1:`16`,x2:`22`,y1:`9`,y2:`15`,key:`5ykzw1`}]]),N=e(t(),1),P={rotation:0,flipH:!1,flipV:!1};function F(e){return{...e,rotation:(e.rotation+90)%360}}function I(e){return{...e,rotation:(e.rotation+270)%360}}function L(e){return e.rotation===0&&!e.flipH&&!e.flipV}function R(e){let t=[];return e.rotation&&t.push(`rotate(${e.rotation}deg)`),e.flipH&&t.push(`scaleX(-1)`),e.flipV&&t.push(`scaleY(-1)`),t.length?t.join(` `):`none`}function z(e,t){return e.rotation===90||e.rotation===270?{maxWidth:t.height,maxHeight:t.width}:{maxWidth:t.width,maxHeight:t.height}}var B=[[`Space / K`,`Play / pause`],[`← / →`,`Seek 5s`],[`J / L or Shift+← / →`,`Seek 10s`],[`↑ / ↓`,`Volume`],[`M`,`Mute`],[`F`,`Fullscreen`],[`< / >`,`Speed`],[`R / Shift+R`,`Rotate`]];function ne(e){return(0,N.useCallback)(t=>{let n=t.target;if(n.tagName===`INPUT`||n.tagName===`TEXTAREA`||n.isContentEditable||t.ctrlKey||t.metaKey||t.altKey)return;let r=!0;switch(t.key){case` `:case`k`:case`K`:e.togglePlay();break;case`ArrowLeft`:e.seekBy(t.shiftKey?-10:-5);break;case`ArrowRight`:e.seekBy(t.shiftKey?10:5);break;case`j`:case`J`:e.seekBy(-10);break;case`l`:case`L`:e.seekBy(10);break;case`ArrowUp`:e.volumeBy(.1);break;case`ArrowDown`:e.volumeBy(-.1);break;case`m`:case`M`:e.toggleMute();break;case`f`:case`F`:e.toggleFullscreen();break;case`<`:case`,`:e.speedStep(-1);break;case`>`:case`.`:e.speedStep(1);break;case`r`:e.rotate(1);break;case`R`:e.rotate(-1);break;default:r=!1}r&&t.preventDefault()},[e])}var V=n(),H=[.25,.5,.75,1,1.25,1.5,2,3];function U({speed:e,onSpeed:t,transform:n,onRotate:r,onFlipH:i,onFlipV:a,onResetTransform:s}){return(0,V.jsxs)(f,{children:[(0,V.jsx)(y,{asChild:!0,children:(0,V.jsxs)(o,{variant:`ghost`,size:`icon`,className:`size-11 shrink-0 relative`,"aria-label":`Playback settings`,children:[(0,V.jsx)(d,{className:`size-5`}),e!==1&&(0,V.jsxs)(`span`,{className:`absolute -top-0.5 -right-0.5 text-[10px] leading-none px-1 rounded bg-primary text-primary-foreground tabular-nums`,children:[e,`x`]})]})}),(0,V.jsxs)(m,{align:`end`,className:`w-60 max-h-[70vh] overflow-y-auto`,children:[(0,V.jsx)(c,{children:`Speed`}),(0,V.jsx)(_,{value:String(e),onValueChange:e=>t(Number(e)),children:(0,V.jsx)(`div`,{className:`grid grid-cols-4 gap-1 px-1 pb-1`,children:H.map(e=>(0,V.jsxs)(u,{value:String(e),className:`justify-center pl-2 min-h-11 text-xs tabular-nums data-[state=checked]:bg-accent [&>span:first-child]:hidden`,children:[e,`x`]},e))})}),(0,V.jsx)(h,{}),(0,V.jsx)(c,{children:`Orientation`}),(0,V.jsxs)(b,{className:`min-h-11`,onSelect:e=>{e.preventDefault(),r(1)},children:[(0,V.jsx)(g,{className:`size-4`}),` Rotate right `,(0,V.jsx)(`span`,{className:`ml-auto text-xs text-text-subtle`,children:`R`})]}),(0,V.jsxs)(b,{className:`min-h-11`,onSelect:e=>{e.preventDefault(),r(-1)},children:[(0,V.jsx)(l,{className:`size-4`}),` Rotate left `,(0,V.jsx)(`span`,{className:`ml-auto text-xs text-text-subtle`,children:`⇧R`})]}),(0,V.jsxs)(b,{className:`min-h-11`,onSelect:e=>{e.preventDefault(),i()},children:[(0,V.jsx)(T,{className:`size-4`}),` Flip horizontal `,n.flipH&&(0,V.jsx)(`span`,{className:`ml-auto text-xs`,children:`✓`})]}),(0,V.jsxs)(b,{className:`min-h-11`,onSelect:e=>{e.preventDefault(),a()},children:[(0,V.jsx)(E,{className:`size-4`}),` Flip vertical `,n.flipV&&(0,V.jsx)(`span`,{className:`ml-auto text-xs`,children:`✓`})]}),!L(n)&&(0,V.jsxs)(b,{className:`min-h-11`,onSelect:s,children:[(0,V.jsx)(p,{className:`size-4`}),` Reset orientation`]}),(0,V.jsx)(h,{}),(0,V.jsx)(c,{children:`Keyboard`}),(0,V.jsx)(`div`,{className:`px-2 pb-2 grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs text-text-secondary`,children:B.map(([e,t])=>(0,V.jsxs)(`div`,{className:`contents`,children:[(0,V.jsx)(`kbd`,{className:`font-mono text-text-subtle whitespace-nowrap`,children:e}),(0,V.jsx)(`span`,{children:t})]},e))})]})]})}function re(e){let t=e.muted||e.volume===0?M:e.volume<.5?j:A,n=t=>e.onSeek(Number(t.target.value));return(0,V.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 bg-surface border-t border-border`,children:[(0,V.jsx)(o,{variant:`ghost`,size:`icon`,className:`size-11 shrink-0`,onClick:e.onTogglePlay,"aria-label":e.playing?`Pause`:`Play`,children:e.playing?(0,V.jsx)(k,{className:`size-5`}):(0,V.jsx)(v,{className:`size-5`})}),(0,V.jsxs)(`span`,{className:`text-xs tabular-nums text-text-secondary shrink-0 min-w-[4.5rem] text-center`,children:[W(e.position),e.duration?` / ${W(e.duration)}`:``]}),e.duration?(0,V.jsx)(`input`,{type:`range`,min:0,max:e.duration,step:.1,value:Math.min(e.position,e.duration),"aria-label":`Seek`,className:`flex-1 h-11 accent-primary cursor-pointer min-w-0`,onChange:t=>e.onScrub(Number(t.target.value)),onPointerUp:n,onKeyUp:n,onTouchEnd:n}):(0,V.jsx)(`div`,{className:`flex-1`}),(0,V.jsxs)(`div`,{className:`flex items-center shrink-0`,children:[(0,V.jsx)(o,{variant:`ghost`,size:`icon`,className:`size-11`,onClick:e.onToggleMute,"aria-label":e.muted?`Unmute`:`Mute`,children:(0,V.jsx)(t,{className:`size-5`})}),(0,V.jsx)(`input`,{type:`range`,min:0,max:1,step:.05,value:e.muted?0:e.volume,"aria-label":`Volume`,className:`hidden sm:block w-20 h-11 accent-primary cursor-pointer`,onChange:t=>e.onVolume(Number(t.target.value))})]}),(0,V.jsx)(U,{speed:e.speed,onSpeed:e.onSpeed,transform:e.transform,onRotate:e.onRotate,onFlipH:e.onFlipH,onFlipV:e.onFlipV,onResetTransform:e.onResetTransform}),(0,V.jsx)(o,{variant:`ghost`,size:`icon`,className:`size-11 shrink-0`,onClick:e.onToggleFullscreen,"aria-label":e.fullscreen?`Exit fullscreen`:`Fullscreen`,children:e.fullscreen?(0,V.jsx)(O,{className:`size-5`}):(0,V.jsx)(D,{className:`size-5`})})]})}function W(e){let t=Math.max(0,Math.floor(Number.isFinite(e)?e:0)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60,a=n?String(r).padStart(2,`0`):String(r);return`${n?`${n}:`:``}${a}:${String(i).padStart(2,`0`)}`}function G({filePath:e,projectName:t,mode:n,probeDuration:r=null,onNativeError:i}){let a=(0,N.useRef)(null),c=(0,N.useRef)(null),l=(0,N.useRef)(null),u=(0,N.useRef)(!0),[d]=(0,N.useState)(C),[f,p]=(0,N.useState)(0),[m,h]=(0,N.useState)(0),[g,_]=(0,N.useState)(null),[v,y]=(0,N.useState)(!1),[b,x]=(0,N.useState)(!0),[w,T]=(0,N.useState)(null),[E,D]=(0,N.useState)(1),[O,k]=(0,N.useState)(!1),[A,j]=(0,N.useState)(1),[M,L]=(0,N.useState)(P),[B,U]=(0,N.useState)(!1),[W,G]=(0,N.useState)({width:0,height:0}),[K,q]=(0,N.useState)(null),J=n===`transcode`,Y=J?ee(e,t,f,d):S(e,t),X=J?r:g,ie=w??(J?f+m:m);(0,N.useEffect)(()=>{h(0),x(!0),q(null)},[Y]),(0,N.useEffect)(()=>{p(0),_(null),L(P)},[e,n]),(0,N.useEffect)(()=>{let e=l.current;e&&(e.volume=E,e.muted=O)},[E,O]),(0,N.useEffect)(()=>{let e=l.current;e&&(e.playbackRate=A)},[A,Y]),(0,N.useEffect)(()=>{let n=l.current,r=()=>{J&&te(e,t,d)};return window.addEventListener(`pagehide`,r),()=>{window.removeEventListener(`pagehide`,r),n&&!n.isConnected&&(n.pause(),n.removeAttribute(`src`),n.load(),r())}},[e,t,J,d]),(0,N.useEffect)(()=>{let e=()=>U(document.fullscreenElement===a.current);return document.addEventListener(`fullscreenchange`,e),()=>document.removeEventListener(`fullscreenchange`,e)},[]),(0,N.useEffect)(()=>{let e=c.current;if(!e)return;let t=new ResizeObserver(()=>G({width:e.clientWidth,height:e.clientHeight}));return t.observe(e),()=>t.disconnect()},[]);let Z=(0,N.useCallback)(e=>{let t=l.current,n=Math.max(0,X?Math.min(e,X-.5):e);if(T(null),!J){t&&(t.currentTime=n);return}Math.abs(n-(f+(t?.currentTime??0)))<.5||p(n)},[X,J,f]),Q=(0,N.useMemo)(()=>({togglePlay:()=>{let e=l.current;e&&(u.current=e.paused,e.paused?e.play().catch(()=>{}):e.pause())},seekBy:e=>Z((J?f:0)+(l.current?.currentTime??0)+e),toggleFullscreen:()=>{document.fullscreenElement?document.exitFullscreen():a.current?.requestFullscreen?.()},toggleMute:()=>k(e=>!e),volumeBy:e=>{k(!1),D(t=>Math.min(1,Math.max(0,Math.round((t+e)*100)/100)))},speedStep:e=>j(t=>{let n=H.indexOf(t);return H[Math.min(H.length-1,Math.max(0,(n===-1?3:n)+e))]??1}),rotate:e=>L(t=>e===1?F(t):I(t))}),[Z,J,f]),ae=ne(Q),$=z(M,W),oe=()=>{q(null),p(e=>e+.001)};return(0,V.jsxs)(`div`,{ref:a,"data-testid":`video-player`,tabIndex:0,onKeyDown:ae,className:`flex flex-col h-full bg-black outline-none focus-visible:ring-1 focus-visible:ring-primary/60`,children:[(0,V.jsxs)(`div`,{ref:c,className:`relative flex-1 min-h-0 flex items-center justify-center overflow-hidden`,onClick:e=>{a.current?.focus(),e.detail===1&&Q.togglePlay()},onDoubleClick:Q.toggleFullscreen,children:[(0,V.jsx)(`video`,{ref:l,src:Y,autoPlay:!0,playsInline:!0,preload:J?`auto`:`metadata`,style:{transform:R(M),maxWidth:$.maxWidth||void 0,maxHeight:$.maxHeight||void 0},onLoadedMetadata:e=>{let t=e.currentTarget;t.playbackRate=A,t.volume=E,t.muted=O,!J&&Number.isFinite(t.duration)&&_(t.duration),J&&!u.current&&t.pause()},onPlay:()=>y(!0),onPause:()=>y(!1),onWaiting:()=>x(!0),onPlaying:()=>x(!1),onCanPlay:()=>x(!1),onTimeUpdate:e=>h(e.currentTarget.currentTime),onEnded:()=>{y(!1),u.current=!1},onError:()=>{J?q(`Transcoding failed. ffmpeg may have stopped or the file is corrupt.`):i?.()}}),b&&!K&&(0,V.jsx)(s,{className:`absolute size-8 animate-spin text-white/80 pointer-events-none`}),K&&(0,V.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-3 bg-black/85 text-text-secondary p-4 text-center`,onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:[(0,V.jsx)(`p`,{className:`text-sm`,children:K}),(0,V.jsx)(o,{variant:`outline`,size:`sm`,className:`h-11 px-4`,onClick:oe,children:`Retry`})]})]}),(0,V.jsx)(re,{playing:v,position:ie,duration:X,volume:E,muted:O,speed:A,transform:M,fullscreen:B,onTogglePlay:Q.togglePlay,onScrub:T,onSeek:Z,onVolume:e=>{D(e),k(e===0)},onToggleMute:Q.toggleMute,onSpeed:j,onRotate:Q.rotate,onFlipH:()=>L(e=>({...e,flipH:!e.flipH})),onFlipV:()=>L(e=>({...e,flipV:!e.flipV})),onResetTransform:()=>L(P),onToggleFullscreen:Q.toggleFullscreen})]})}var K=new Set([`mp4`,`m4v`,`webm`,`ogg`,`ogv`,`mov`]);function q({filePath:e,projectName:t}){let n=w(e),[r,i]=(0,N.useState)(()=>K.has(n)?{kind:`native`}:{kind:`probing`});return(0,N.useEffect)(()=>{i(K.has(w(e))?{kind:`native`}:{kind:`probing`})},[e]),(0,N.useEffect)(()=>{if(r.kind!==`probing`)return;let n=!1;return x(e,t).then(e=>{n||i(e.transcodable?{kind:`transcode`,probe:e}:{kind:`unsupported`,probe:e})}).catch(()=>{n||i({kind:`unsupported`,probe:null})}),()=>{n=!0}},[r.kind,e,t]),r.kind===`probing`?(0,V.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,V.jsx)(s,{className:`size-5 animate-spin text-text-subtle`})}):r.kind===`transcode`?(0,V.jsx)(G,{filePath:e,projectName:t,mode:`transcode`,probeDuration:r.probe.duration}):r.kind===`unsupported`?(0,V.jsx)(J,{filePath:e,projectName:t,probe:r.probe}):(0,V.jsx)(G,{filePath:e,projectName:t,mode:`native`,onNativeError:()=>i({kind:`probing`})})}function J({filePath:e,projectName:t,probe:n}){let r=[n?.video?.codec,n?.audio?.codec].filter(Boolean).join(` + `);return(0,V.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary p-6 text-center`,children:[(0,V.jsx)(a,{className:`size-10 text-text-subtle`}),(0,V.jsxs)(`p`,{className:`text-sm`,children:[`This video cannot be played in the browser`,r?` (${r})`:``,`.`]}),(0,V.jsxs)(`p`,{className:`text-xs text-text-subtle max-w-sm`,children:[`Install `,(0,V.jsx)(`code`,{children:`ffmpeg`}),` on the PPM server (e.g. `,(0,V.jsx)(`code`,{children:`winget install ffmpeg`}),`, `,(0,V.jsx)(`code`,{children:`brew install ffmpeg`}),`,`,` `,(0,V.jsx)(`code`,{children:`apt install ffmpeg`}),`) and restart PPM to transcode it on the fly.`]}),(0,V.jsx)(o,{asChild:!0,variant:`outline`,size:`sm`,className:`h-11 px-4`,children:(0,V.jsxs)(`a`,{href:`${S(e,t)}&download=true`,download:!0,children:[(0,V.jsx)(i,{className:`size-4 mr-2`}),` Download file`]})})]})}export{q as VideoPreview};
@@ -1,71 +0,0 @@
1
- /**
2
- * Neutral titlebar used until an OS skin supplies its own chrome. Uses PPM semantic tokens
3
- * so it inherits the active theme instead of hard-coding a platform look.
4
- *
5
- * A chrome is a component, not a render callback: a skin is free to hold its own hover,
6
- * focus or animation state without entangling itself with the window frame's hooks.
7
- */
8
-
9
- import { Minus, Square, Copy, X } from "lucide-react";
10
- import { cn } from "@/lib/utils";
11
- import { TITLEBAR_HEIGHT, type WindowChromeProps } from "./window-chrome-contract";
12
-
13
- /**
14
- * Caption buttons follow the Windows metric (44 px wide) rather than a square 44 px touch
15
- * target: the window layer never renders below the `md` breakpoint, where mobile sheets
16
- * take over, so the titlebar can stay at desktop height.
17
- */
18
- const CAPTION_BUTTON = "grid place-items-center w-11 self-stretch text-text-2 can-hover:hover:bg-surface-elevated can-hover:hover:text-text transition-colors";
19
-
20
- export function DefaultWindowChrome({
21
- title,
22
- state,
23
- focused,
24
- titlebarProps,
25
- onMinimize,
26
- onToggleMaximize,
27
- onClose,
28
- }: WindowChromeProps) {
29
- const { className, style, ...rest } = titlebarProps;
30
- return (
31
- <div
32
- {...rest}
33
- style={{ height: TITLEBAR_HEIGHT, ...style }}
34
- className={cn(
35
- "flex items-stretch shrink-0 border-b border-border bg-panel-2 rounded-t-[8px] overflow-hidden",
36
- "outline-none focus-visible:ring-1 focus-visible:ring-primary focus-visible:ring-inset",
37
- className,
38
- )}
39
- >
40
- <div className="flex-1 min-w-0 flex items-center px-3 cursor-default">
41
- <span className={cn("truncate text-xs font-medium", focused ? "text-text" : "text-text-2")}>
42
- {title}
43
- </span>
44
- </div>
45
- <button
46
- type="button"
47
- aria-label="Minimize window"
48
- className={CAPTION_BUTTON}
49
- onClick={onMinimize}
50
- >
51
- <Minus className="size-3.5" />
52
- </button>
53
- <button
54
- type="button"
55
- aria-label={state === "maximized" ? "Restore window" : "Maximize window"}
56
- className={CAPTION_BUTTON}
57
- onClick={onToggleMaximize}
58
- >
59
- {state === "maximized" ? <Copy className="size-3" /> : <Square className="size-3" />}
60
- </button>
61
- <button
62
- type="button"
63
- aria-label="Close window"
64
- className={cn(CAPTION_BUTTON, "can-hover:hover:bg-destructive can-hover:hover:text-white")}
65
- onClick={onClose}
66
- >
67
- <X className="size-3.5" />
68
- </button>
69
- </div>
70
- );
71
- }
@@ -1,17 +0,0 @@
1
- /**
2
- * The one thing `window-content-registry.ts` needs to import to give explorer windows a
3
- * skinned titlebar: a plain (non-lazy) component matching `WindowChromeProps` that picks
4
- * the current skin and delegates to its real chrome. `FloatingWindow` renders `chrome`
5
- * directly with no `<Suspense>` around it, so this entry point cannot be `lazy()` the way
6
- * the window body is — it has to resolve synchronously, which is exactly what a small
7
- * wrapper component (rather than the whole explorer body) affords.
8
- */
9
-
10
- import type { WindowChromeProps } from "@/components/floating-window/window-chrome-contract";
11
- import { useExplorerSkin } from "./use-explorer-skin";
12
-
13
- export function ExplorerSkinChrome(props: WindowChromeProps) {
14
- const skin = useExplorerSkin();
15
- const Chrome = skin.chrome;
16
- return <Chrome {...props} />;
17
- }