shadow-claw 1.54.0 → 1.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/.well-known/mcp/server-card.json +1 -1
  2. package/.well-known/mcp.json +1 -1
  3. package/README.md +1 -1
  4. package/dist/cli/build/build.js +1 -1
  5. package/dist/cli/{chunk-DO2t9bUI.js → chunk--IuVyWfT.js} +24 -23
  6. package/dist/cli/{chunk-2ZYd9gYC.js → chunk--JpdI-Ht.js} +1 -1
  7. package/dist/cli/{chunk-m4Ineemy.js → chunk-4O8yrQuN.js} +1 -1
  8. package/dist/cli/{chunk-BiH9IXnQ.js → chunk-7S9Ywlfy.js} +1 -1
  9. package/dist/cli/{chunk-BmMOdYvk.js → chunk-B0SqqDSK.js} +1 -1
  10. package/dist/cli/chunk-BNaWaEm-.js +1 -0
  11. package/dist/cli/chunk-BXCsxO9e.js +1 -0
  12. package/dist/cli/chunk-Bq37qDoZ.js +18 -0
  13. package/dist/cli/{chunk-C1htf-nO.js → chunk-BrEeCKIo.js} +2 -2
  14. package/dist/cli/{chunk-BI1SOTM1.js → chunk-Bu3ylrhT.js} +8 -8
  15. package/dist/cli/{chunk-3smiGQoQ.js → chunk-C1v_s0Kb.js} +1 -1
  16. package/dist/cli/{chunk-DGeysxz3.js → chunk-C44G533y.js} +1 -1
  17. package/dist/cli/{chunk-9KiBalKu.js → chunk-C7hJLmsL.js} +1 -1
  18. package/dist/cli/{chunk-BFv9XSNd.js → chunk-CAaQWd6t.js} +1 -1
  19. package/dist/cli/chunk-CIkgn5Fh.js +1 -0
  20. package/dist/cli/chunk-CWEIN2kc.js +1 -0
  21. package/dist/cli/{chunk-BDeDZ-0L.js → chunk-CYg1lO1a.js} +1 -1
  22. package/dist/cli/{chunk-DXLmEQ3i.js → chunk-Ce09lwXT.js} +1 -1
  23. package/dist/cli/{chunk-XsfHeN4m.js → chunk-CpdqRSO-.js} +1 -1
  24. package/dist/cli/chunk-DB4x5L-B.js +1 -0
  25. package/dist/cli/{chunk-DaNyMqrk.js → chunk-DBvObsBQ.js} +1 -1
  26. package/dist/cli/chunk-DGPpt7Ka.js +1 -0
  27. package/dist/cli/chunk-DGagHluH.js +1 -0
  28. package/dist/cli/chunk-DUIs23D9.js +1 -0
  29. package/dist/cli/{chunk-CyvfQV16.js → chunk-DaurYOqg.js} +1 -1
  30. package/dist/cli/{chunk-DSFrcSyA.js → chunk-DfwRL0Ue.js} +1 -1
  31. package/dist/cli/{chunk-M2tZrzY5.js → chunk-DudYQk0p.js} +1 -1
  32. package/dist/cli/chunk-DvKo50Tp.js +2 -0
  33. package/dist/cli/{chunk-H_Mw5ypp.js → chunk-Dvrqte5Q.js} +2 -2
  34. package/dist/cli/{chunk-BtNO-m9T.js → chunk-DzhSExU0.js} +1 -1
  35. package/dist/cli/{chunk-IOMO88kZ.js → chunk-ENKlt3i9.js} +1 -1
  36. package/dist/cli/{chunk-Bspgzwsm.js → chunk-FWRwAX75.js} +8 -8
  37. package/dist/cli/chunk-Lf-Z-h48.js +32 -0
  38. package/dist/cli/{chunk-BucXnZ4Z.js → chunk-VRfkSLrD.js} +1 -1
  39. package/dist/cli/chunk-uaTxD024.js +1 -0
  40. package/dist/cli/cli.js +1 -1
  41. package/dist/cli/prerender/dsd-shell/prerender-dsd-shell.js +1 -1
  42. package/dist/headless-agent.js +2 -2
  43. package/dist/lib/components/index.js +25 -25
  44. package/dist/lib/components/settings/shadow-claw-accounts.js +1 -1
  45. package/dist/lib/components/settings/shadow-claw-channel-config.js +1 -1
  46. package/dist/lib/components/settings/shadow-claw-control-plane.js +1 -1
  47. package/dist/lib/components/settings/shadow-claw-git.js +1 -1
  48. package/dist/lib/components/settings/shadow-claw-integrations.js +1 -1
  49. package/dist/lib/components/settings/shadow-claw-llm.js +1 -1
  50. package/dist/lib/components/settings/shadow-claw-mcp-remote.js +1 -1
  51. package/dist/lib/components/settings/shadow-claw-networking.js +1 -1
  52. package/dist/lib/components/settings/shadow-claw-notifications.js +1 -1
  53. package/dist/lib/components/settings/shadow-claw-peerjs.js +1 -1
  54. package/dist/lib/components/settings/shadow-claw-storage.js +1 -1
  55. package/dist/lib/components/settings/shadow-claw-task-server.js +1 -1
  56. package/dist/lib/components/settings/shadow-claw-webvm.js +1 -1
  57. package/dist/lib/components/shadow-claw/utils/get-route.d.ts +3 -0
  58. package/dist/lib/components/shadow-claw/utils/sync-slotted-sidebar-active-links.d.ts +1 -1
  59. package/dist/lib/components/shadow-claw-accounts.js +1 -1
  60. package/dist/lib/components/shadow-claw-channel-config.js +1 -1
  61. package/dist/lib/components/shadow-claw-channels.js +1 -1
  62. package/dist/lib/components/shadow-claw-chat.js +1 -1
  63. package/dist/lib/components/shadow-claw-control-plane.js +1 -1
  64. package/dist/lib/components/shadow-claw-conversations.js +1 -1
  65. package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
  66. package/dist/lib/components/shadow-claw-files.js +1 -1
  67. package/dist/lib/components/shadow-claw-git.js +1 -1
  68. package/dist/lib/components/shadow-claw-integrations.js +1 -1
  69. package/dist/lib/components/shadow-claw-llm.js +1 -1
  70. package/dist/lib/components/shadow-claw-mcp-remote.js +1 -1
  71. package/dist/lib/components/shadow-claw-networking.js +1 -1
  72. package/dist/lib/components/shadow-claw-notifications.js +1 -1
  73. package/dist/lib/components/shadow-claw-page-header.js +1 -1
  74. package/dist/lib/components/shadow-claw-pages.js +1 -1
  75. package/dist/lib/components/shadow-claw-peerjs.js +1 -1
  76. package/dist/lib/components/shadow-claw-settings.js +1 -1
  77. package/dist/lib/components/shadow-claw-storage.js +1 -1
  78. package/dist/lib/components/shadow-claw-task-server.js +1 -1
  79. package/dist/lib/components/shadow-claw-tasks.js +1 -1
  80. package/dist/lib/components/shadow-claw-terminal.js +1 -1
  81. package/dist/lib/components/shadow-claw-tools.js +1 -1
  82. package/dist/lib/components/shadow-claw-webvm.js +1 -1
  83. package/dist/lib/components/shadow-claw.js +1 -1
  84. package/dist/lib/{configure-peer-js-D5jDCtLx.js → configure-peer-js-C9554Slv.js} +2 -2
  85. package/dist/lib/{configure-peer-js-D5jDCtLx.js.map → configure-peer-js-C9554Slv.js.map} +1 -1
  86. package/dist/lib/{file-viewer-B4CL4e0i.js → file-viewer-DBc5dxNy.js} +2 -2
  87. package/dist/lib/{file-viewer-B4CL4e0i.js.map → file-viewer-DBc5dxNy.js.map} +1 -1
  88. package/dist/lib/index.js +28 -27
  89. package/dist/lib/{init-control-plane-l2uFnhGV.js → init-control-plane-D-41Fm5q.js} +12 -12
  90. package/dist/lib/{init-control-plane-l2uFnhGV.js.map → init-control-plane-D-41Fm5q.js.map} +1 -1
  91. package/dist/lib/{markdown-0_p_zfxL.js → markdown-KnDWzWJJ.js} +2 -2
  92. package/dist/lib/{markdown-0_p_zfxL.js.map → markdown-KnDWzWJJ.js.map} +1 -1
  93. package/dist/lib/{orchestrator-D6wm8Sec.js → orchestrator-BEZcqgR5.js} +9 -9
  94. package/dist/lib/{orchestrator-D6wm8Sec.js.map → orchestrator-BEZcqgR5.js.map} +1 -1
  95. package/dist/lib/{orchestrator-Dh-hnIpK.js → orchestrator-Cda13e5U.js} +4 -4
  96. package/dist/lib/{orchestrator-Dh-hnIpK.js.map → orchestrator-Cda13e5U.js.map} +1 -1
  97. package/dist/lib/{peerjs-BWZnsD0B.js → peerjs-DYkUTcee.js} +5 -5
  98. package/dist/lib/{peerjs-BWZnsD0B.js.map → peerjs-DYkUTcee.js.map} +1 -1
  99. package/dist/lib/{push-client-MybDfOdi.js → push-client-CQtCFDaD.js} +3 -3
  100. package/dist/lib/{push-client-MybDfOdi.js.map → push-client-CQtCFDaD.js.map} +1 -1
  101. package/dist/lib/security/custom-element-security.d.ts +8 -4
  102. package/dist/lib/{shadow-claw-PdOpgTxH.js → shadow-claw-DYe9u6Tp.js} +142 -33
  103. package/dist/lib/shadow-claw-DYe9u6Tp.js.map +1 -0
  104. package/dist/lib/{shadow-claw-accounts-3bR76EOb.js → shadow-claw-accounts-D2URoHys.js} +2 -2
  105. package/dist/lib/{shadow-claw-accounts-3bR76EOb.js.map → shadow-claw-accounts-D2URoHys.js.map} +1 -1
  106. package/dist/lib/{shadow-claw-channel-config-ChdZ1iB8.js → shadow-claw-channel-config-buXoz2xv.js} +3 -3
  107. package/dist/lib/{shadow-claw-channel-config-ChdZ1iB8.js.map → shadow-claw-channel-config-buXoz2xv.js.map} +1 -1
  108. package/dist/lib/{shadow-claw-channels-CK9sc7h_.js → shadow-claw-channels-5yVJ1gLk.js} +3 -3
  109. package/dist/lib/{shadow-claw-channels-CK9sc7h_.js.map → shadow-claw-channels-5yVJ1gLk.js.map} +1 -1
  110. package/dist/lib/{shadow-claw-chat-B6uuZnJ7.js → shadow-claw-chat-CVc-7ycM.js} +7 -7
  111. package/dist/lib/{shadow-claw-chat-B6uuZnJ7.js.map → shadow-claw-chat-CVc-7ycM.js.map} +1 -1
  112. package/dist/lib/{shadow-claw-control-plane-BpRcl312.js → shadow-claw-control-plane-B5vsF91B.js} +6 -6
  113. package/dist/lib/{shadow-claw-control-plane-BpRcl312.js.map → shadow-claw-control-plane-B5vsF91B.js.map} +1 -1
  114. package/dist/lib/{shadow-claw-conversations-Dc_Xk2mB.js → shadow-claw-conversations-PGK5zqn3.js} +54 -12
  115. package/dist/lib/{shadow-claw-conversations-Dc_Xk2mB.js.map → shadow-claw-conversations-PGK5zqn3.js.map} +1 -1
  116. package/dist/lib/{shadow-claw-file-viewer-C4x1PtB2.js → shadow-claw-file-viewer-DSqn0hgx.js} +6 -6
  117. package/dist/lib/{shadow-claw-file-viewer-C4x1PtB2.js.map → shadow-claw-file-viewer-DSqn0hgx.js.map} +1 -1
  118. package/dist/lib/{shadow-claw-files-DhnHbXKf.js → shadow-claw-files-vOa9ZWbr.js} +6 -6
  119. package/dist/lib/{shadow-claw-files-DhnHbXKf.js.map → shadow-claw-files-vOa9ZWbr.js.map} +1 -1
  120. package/dist/lib/{shadow-claw-git-BeQ1ElUd.js → shadow-claw-git-D54Z85Bj.js} +4 -4
  121. package/dist/lib/{shadow-claw-git-BeQ1ElUd.js.map → shadow-claw-git-D54Z85Bj.js.map} +1 -1
  122. package/dist/lib/{shadow-claw-integrations-Bbdolk3w.js → shadow-claw-integrations-BTubMH9d.js} +2 -2
  123. package/dist/lib/{shadow-claw-integrations-Bbdolk3w.js.map → shadow-claw-integrations-BTubMH9d.js.map} +1 -1
  124. package/dist/lib/{shadow-claw-llm-DPda4L3C.js → shadow-claw-llm-8koGTNYs.js} +3 -3
  125. package/dist/lib/{shadow-claw-llm-DPda4L3C.js.map → shadow-claw-llm-8koGTNYs.js.map} +1 -1
  126. package/dist/lib/{shadow-claw-mcp-remote-Dn9c30WI.js → shadow-claw-mcp-remote-C2jwBsQt.js} +2 -2
  127. package/dist/lib/{shadow-claw-mcp-remote-Dn9c30WI.js.map → shadow-claw-mcp-remote-C2jwBsQt.js.map} +1 -1
  128. package/dist/lib/{shadow-claw-networking-zqNuyn3-.js → shadow-claw-networking-BV-rna16.js} +2 -2
  129. package/dist/lib/{shadow-claw-networking-zqNuyn3-.js.map → shadow-claw-networking-BV-rna16.js.map} +1 -1
  130. package/dist/lib/{shadow-claw-notifications-DFgdo33v.js → shadow-claw-notifications-Dku7VBLk.js} +2 -2
  131. package/dist/lib/{shadow-claw-notifications-DFgdo33v.js.map → shadow-claw-notifications-Dku7VBLk.js.map} +1 -1
  132. package/dist/lib/{shadow-claw-page-header-B7LFGQRf.js → shadow-claw-page-header-VPjYWfsT.js} +2 -2
  133. package/dist/lib/{shadow-claw-page-header-B7LFGQRf.js.map → shadow-claw-page-header-VPjYWfsT.js.map} +1 -1
  134. package/dist/lib/{shadow-claw-pages-DLspFqdK.js → shadow-claw-pages-DXrM6hgZ.js} +29 -19
  135. package/dist/lib/shadow-claw-pages-DXrM6hgZ.js.map +1 -0
  136. package/dist/lib/{shadow-claw-peerjs-D8xWwuWR.js → shadow-claw-peerjs-D3xonez5.js} +3 -3
  137. package/dist/lib/{shadow-claw-peerjs-D8xWwuWR.js.map → shadow-claw-peerjs-D3xonez5.js.map} +1 -1
  138. package/dist/lib/{shadow-claw-settings-NbvzXASD.js → shadow-claw-settings-DMTx6OS9.js} +5 -5
  139. package/dist/lib/{shadow-claw-settings-NbvzXASD.js.map → shadow-claw-settings-DMTx6OS9.js.map} +1 -1
  140. package/dist/lib/{shadow-claw-storage-B_NAoZmd.js → shadow-claw-storage-BJLnukxa.js} +3 -3
  141. package/dist/lib/{shadow-claw-storage-B_NAoZmd.js.map → shadow-claw-storage-BJLnukxa.js.map} +1 -1
  142. package/dist/lib/{shadow-claw-task-server-BaQJXhYJ.js → shadow-claw-task-server-DcMj20hD.js} +2 -2
  143. package/dist/lib/{shadow-claw-task-server-BaQJXhYJ.js.map → shadow-claw-task-server-DcMj20hD.js.map} +1 -1
  144. package/dist/lib/{shadow-claw-tasks-CAZua0-j.js → shadow-claw-tasks-BQBe4lVi.js} +7 -7
  145. package/dist/lib/{shadow-claw-tasks-CAZua0-j.js.map → shadow-claw-tasks-BQBe4lVi.js.map} +1 -1
  146. package/dist/lib/{shadow-claw-terminal-B2YJhkJL.js → shadow-claw-terminal-DPEzTxXv.js} +2 -2
  147. package/dist/lib/{shadow-claw-terminal-B2YJhkJL.js.map → shadow-claw-terminal-DPEzTxXv.js.map} +1 -1
  148. package/dist/lib/{shadow-claw-tools-CkZWxxTm.js → shadow-claw-tools-BCnU8FaK.js} +6 -6
  149. package/dist/lib/{shadow-claw-tools-CkZWxxTm.js.map → shadow-claw-tools-BCnU8FaK.js.map} +1 -1
  150. package/dist/lib/{shadow-claw-webvm-BL9cgrP9.js → shadow-claw-webvm-CnW-hoJ8.js} +2 -2
  151. package/dist/lib/{shadow-claw-webvm-BL9cgrP9.js.map → shadow-claw-webvm-CnW-hoJ8.js.map} +1 -1
  152. package/dist/lib/subsystems/mcp/webmcp.d.ts +15 -2
  153. package/dist/lib/{sync-web-mcp-registration-dW2MVCj4.js → sync-web-mcp-registration-DwpGjVdo.js} +10 -4
  154. package/dist/lib/sync-web-mcp-registration-DwpGjVdo.js.map +1 -0
  155. package/dist/lib/{tools-D7whby3H.js → tools-CP6G0HF7.js} +5 -6
  156. package/dist/lib/tools-CP6G0HF7.js.map +1 -0
  157. package/dist/lib/{trusted-types-d0cdkut_.js → trusted-types-0cu5Dm6M.js} +29 -4
  158. package/dist/lib/{trusted-types-d0cdkut_.js.map → trusted-types-0cu5Dm6M.js.map} +1 -1
  159. package/dist/lib/utils/index.d.ts +1 -0
  160. package/dist/lib/utils/index.js +4 -2
  161. package/dist/lib/utils/index.js.map +1 -1
  162. package/dist/lib/utils/resolve-page-script-dependencies.d.ts +19 -0
  163. package/dist/lib/utils/resolve-page-script-dependencies.js +98 -0
  164. package/dist/lib/utils/resolve-page-script-dependencies.js.map +1 -0
  165. package/dist/lib/utils/utils.js +1 -1
  166. package/dist/lib/webmcp-Bf9rT7uu.js +2001 -0
  167. package/dist/lib/webmcp-Bf9rT7uu.js.map +1 -0
  168. package/dist/public/.well-known/mcp/server-card.json +1 -1
  169. package/dist/public/.well-known/mcp.json +1 -1
  170. package/dist/public/AGENTS.md +3 -3
  171. package/dist/public/README.md +1 -1
  172. package/dist/public/agent.worker.js +2 -2
  173. package/dist/public/components/shadow-claw/shadow-claw.css +1 -1
  174. package/dist/public/components/shadow-claw/shadow-claw.html +1 -1
  175. package/dist/public/components/shadow-claw-conversations/shadow-claw-conversations.css +1 -1
  176. package/dist/public/components/shadow-claw-conversations/shadow-claw-conversations.html +1 -1
  177. package/dist/public/{configure-peer-js-WLRM7Qa7.js → configure-peer-js-OYl3V8sW.js} +1 -1
  178. package/dist/public/{custom-element-security-Cl991z-x.js → custom-element-security-BR4V40j4.js} +1 -1
  179. package/dist/public/docs/example/article/index.html +3 -3
  180. package/dist/public/docs/example/article.html +3 -3
  181. package/dist/public/docs/publishing/index.html +3 -3
  182. package/dist/public/docs/publishing.html +3 -3
  183. package/dist/public/docs/skill-creator/index.html +3 -3
  184. package/dist/public/docs/skill-creator.html +3 -3
  185. package/dist/public/docs/subsystems/custom-element-security.md +19 -5
  186. package/dist/public/docs/subsystems/pages.md +10 -2
  187. package/dist/public/docs/subsystems/tools.md +1 -2
  188. package/dist/public/docs/subsystems/webmcp.md +41 -6
  189. package/dist/public/{download-group-file-fFjoIIp4.js → download-group-file-BNmK8wac.js} +1 -1
  190. package/dist/public/e2e/README.md +2 -2
  191. package/dist/public/{e2e-bridge-CiSfBRT4.js → e2e-bridge-4phD1JUQ.js} +1 -1
  192. package/dist/public/{file-viewer-DFC3kfeO.js → file-viewer-Dbh3K9nL.js} +1 -1
  193. package/dist/public/index.html +3 -3
  194. package/dist/public/index.js +1 -1
  195. package/dist/public/{init-control-plane-BEbcwmmv.js → init-control-plane-DGOY_RNS.js} +1 -1
  196. package/dist/public/llms.txt +1 -1
  197. package/dist/public/main/index.html +3 -3
  198. package/dist/public/main/memory/index.html +3 -3
  199. package/dist/public/main/memory.html +3 -3
  200. package/dist/public/main.html +3 -3
  201. package/dist/public/{markdown-BeglYzw9.js → markdown-BPZYpfGm.js} +1 -1
  202. package/dist/public/{orchestrator-BlvEG3PO.js → orchestrator-OoUK7CF9.js} +1 -1
  203. package/dist/public/{orchestrator-DTNrntd4.js → orchestrator-a9047bGu.js} +1 -1
  204. package/dist/public/{peerjs-CnBdK94R.js → peerjs-Cbn310Tz.js} +1 -1
  205. package/dist/public/{push-client-DOHbdCyj.js → push-client-Dy4LGJy9.js} +1 -1
  206. package/dist/public/service-worker.js +1 -1
  207. package/dist/public/shadow-claw-B-HWC1uN.js +1180 -0
  208. package/dist/public/{shadow-claw-accounts-C6FXVw2K.js → shadow-claw-accounts-Di-anCZ1.js} +1 -1
  209. package/dist/public/{shadow-claw-channels-tr_r60Kq.js → shadow-claw-channels-RVwCE8pE.js} +1 -1
  210. package/dist/public/{shadow-claw-chat-BAAPhAOs.js → shadow-claw-chat-DI1q8UnX.js} +1 -1
  211. package/dist/public/{shadow-claw-control-plane-C_5VIx8E.js → shadow-claw-control-plane-KXEdLOGl.js} +2 -2
  212. package/dist/public/{shadow-claw-conversations-DGYZdDa3.js → shadow-claw-conversations-BCBGtS30.js} +40 -6
  213. package/dist/public/{shadow-claw-file-viewer-5j2-Z3fN.js → shadow-claw-file-viewer-CW3t6j-w.js} +1 -1
  214. package/dist/public/{shadow-claw-files-DKF4Yy0m.js → shadow-claw-files-JQ-o0ImX.js} +1 -1
  215. package/dist/public/{shadow-claw-git-CtUTJXKT.js → shadow-claw-git-D2M8VixW.js} +2 -2
  216. package/dist/public/{shadow-claw-integrations-CuBy9D3z.js → shadow-claw-integrations-Cgw6v9_1.js} +1 -1
  217. package/dist/public/{shadow-claw-llm-BIfNNjGL.js → shadow-claw-llm-74ieXp7i.js} +1 -1
  218. package/dist/public/{shadow-claw-mcp-remote-C17FXvrb.js → shadow-claw-mcp-remote-BX0BkSmy.js} +1 -1
  219. package/dist/public/{shadow-claw-networking-CjxQ1CLI.js → shadow-claw-networking-DNX8vaIQ.js} +1 -1
  220. package/dist/public/{shadow-claw-notifications-Brn2O3Ps.js → shadow-claw-notifications-BLTaGAny.js} +1 -1
  221. package/dist/public/{shadow-claw-page-header-Bn1P7Cxb.js → shadow-claw-page-header-CjFOdo9v.js} +1 -1
  222. package/dist/public/shadow-claw-pages-DOQqMm0_.js +645 -0
  223. package/dist/public/{shadow-claw-settings-CfDm0hVA.js → shadow-claw-settings-DFtl0Fy8.js} +2 -2
  224. package/dist/public/{shadow-claw-storage-DOOesRzw.js → shadow-claw-storage-gQGExZRq.js} +1 -1
  225. package/dist/public/{shadow-claw-task-server-H36iDDp2.js → shadow-claw-task-server-Ca45uY7S.js} +1 -1
  226. package/dist/public/{shadow-claw-tasks-4JsjSGkN.js → shadow-claw-tasks-CCTaaSdi.js} +1 -1
  227. package/dist/public/{shadow-claw-terminal-CTRTcYz-.js → shadow-claw-terminal-BfgulLkl.js} +1 -1
  228. package/dist/public/{shadow-claw-tools-Dm1LxNf4.js → shadow-claw-tools-V8NA4n18.js} +1 -1
  229. package/dist/public/{shadow-claw-webvm-JzuPe9Nr.js → shadow-claw-webvm-CxxI2bnC.js} +1 -1
  230. package/dist/public/sync-web-mcp-registration-CkCA8UFm.js +1 -0
  231. package/dist/public/{tools-FiTtOlIt.js → tools-CwQq5tJH.js} +2 -2
  232. package/dist/public/webmcp-CmtWOAFm.js +6 -0
  233. package/dist/server.js +2 -2
  234. package/package.json +3 -3
  235. package/src/cli/prerender/dsd-shell/prerender-dsd-shell.test.ts +16 -0
  236. package/src/cli/prerender/dsd-shell/prerender-dsd-shell.ts +62 -1
  237. package/src/cli/prerender/pretty-paths/prerender-pretty-paths.test.ts +277 -0
  238. package/src/cli/prerender/pretty-paths/prerender-pretty-paths.ts +28 -1
  239. package/src/cli/site-config/custom-elements/build-custom-element-script-tags.ts +13 -1
  240. package/src/components/shadow-claw/shadow-claw.css +12 -0
  241. package/src/components/shadow-claw/shadow-claw.html +12 -2
  242. package/src/components/shadow-claw/utils/bind-event-listeners.test.ts +18 -0
  243. package/src/components/shadow-claw/utils/bind-event-listeners.ts +14 -0
  244. package/src/components/shadow-claw/utils/get-route.test.ts +35 -0
  245. package/src/components/shadow-claw/utils/get-route.ts +18 -0
  246. package/src/components/shadow-claw/utils/sync-slotted-sidebar-active-links.test.ts +152 -1
  247. package/src/components/shadow-claw/utils/sync-slotted-sidebar-active-links.ts +139 -8
  248. package/src/components/shadow-claw-conversations/shadow-claw-conversations.css +11 -0
  249. package/src/components/shadow-claw-conversations/shadow-claw-conversations.html +27 -4
  250. package/src/components/shadow-claw-conversations/shadow-claw-conversations.ts +32 -4
  251. package/src/components/shadow-claw-pages/shadow-claw-pages-scripts.test.ts +266 -0
  252. package/src/components/shadow-claw-pages/shadow-claw-pages.ts +41 -17
  253. package/src/core/orchestrator/utils/sync-web-mcp-registration.test.ts +18 -1
  254. package/src/core/orchestrator/utils/sync-web-mcp-registration.ts +8 -0
  255. package/src/core/utils/init-control-plane.test.ts +9 -4
  256. package/src/security/custom-element-security.test.ts +65 -0
  257. package/src/security/custom-element-security.ts +67 -4
  258. package/src/stores/tools.test.ts +5 -3
  259. package/src/stores/tools.ts +5 -10
  260. package/src/subsystems/mcp/webmcp.test.ts +84 -13
  261. package/src/subsystems/mcp/webmcp.ts +73 -10
  262. package/src/utils/index.ts +1 -0
  263. package/src/utils/resolve-page-script-dependencies.test.ts +245 -0
  264. package/src/utils/resolve-page-script-dependencies.ts +198 -0
  265. package/dist/cli/chunk-B1hufJeO.js +0 -1
  266. package/dist/cli/chunk-BZpn8npn.js +0 -1
  267. package/dist/cli/chunk-Bw5aOTFr.js +0 -1
  268. package/dist/cli/chunk-C8nH01Gw.js +0 -32
  269. package/dist/cli/chunk-CK1ZoyoE.js +0 -17
  270. package/dist/cli/chunk-CVkhDr-7.js +0 -1
  271. package/dist/cli/chunk-Cum07Vlh.js +0 -1
  272. package/dist/cli/chunk-D3UhDDmV.js +0 -2
  273. package/dist/cli/chunk-D8GI6qj6.js +0 -1
  274. package/dist/cli/chunk-DEH-FvmP.js +0 -1
  275. package/dist/cli/chunk-DksvJ_kf.js +0 -1
  276. package/dist/cli/chunk-RGb9wM4R.js +0 -1
  277. package/dist/lib/shadow-claw-PdOpgTxH.js.map +0 -1
  278. package/dist/lib/shadow-claw-pages-DLspFqdK.js.map +0 -1
  279. package/dist/lib/sync-web-mcp-registration-dW2MVCj4.js.map +0 -1
  280. package/dist/lib/tools-D7whby3H.js.map +0 -1
  281. package/dist/lib/webmcp-CYTNZfkn.js +0 -1687
  282. package/dist/lib/webmcp-CYTNZfkn.js.map +0 -1
  283. package/dist/public/shadow-claw-CnNX-WCh.js +0 -1158
  284. package/dist/public/shadow-claw-pages-BwOOqRWW.js +0 -645
  285. package/dist/public/sync-web-mcp-registration-BnHVUjat.js +0 -1
  286. package/dist/public/webmcp-_TBqXlVW.js +0 -1
@@ -0,0 +1,1180 @@
1
+ import{r as e}from"./config-y_2Fg77m.js";import{a as t,d as n,h as r,l as i,m as a,n as o,r as s}from"./app-routes-H23VN-4O.js";import{r as c}from"./db-BUuJo1Gf.js";import{t as l}from"./get-config-Bkvl__ZS.js";import{t as u}from"./dist-CeFyqf9k.js";import{D as d,Dn as f,Tn as p,V as m,c as h,d as g,ft as _,i as ee,l as te,t as v,tn as ne,ut as re,wt as ie,xt as ae}from"./orchestrator-OoUK7CF9.js";import{a as oe}from"./tools-CwQq5tJH.js";import{t as se}from"./set-config-DSiuMe0k.js";import{t as y}from"./ulid-BSJxYh6W.js";import{t as ce}from"./parse-boolean-config-BigJ9U46.js";import{a as b,r as x}from"./toast-CtIuHprH.js";import{n as le,r as ue,t as de}from"./constants-DiETpg52.js";import{t as fe}from"./shadow-claw-element-DIrv3P6A.js";import{t as S}from"./effect-xrx5qhzv.js";import{t as pe}from"./prompt-api-BWe_j3Wg.js";import{t as C}from"./configure-peer-js-OYl3V8sW.js";import{t as w}from"./file-viewer-Dbh3K9nL.js";const T={Light:`light`,Dark:`dark`,System:`system`},E=`shadow-claw-theme`;function D(){return typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function O(e){return e===`system`?D():e}function k(e){let t=document.documentElement;e===`dark`?(t.classList.add(`dark-mode`),t.classList.remove(`light-mode`)):(t.classList.add(`light-mode`),t.classList.remove(`dark-mode`));let n=document.querySelector(`shadow-claw`);n&&(e===`dark`?(n.classList.add(`dark-mode`),n.classList.remove(`light-mode`)):(n.classList.add(`light-mode`),n.classList.remove(`dark-mode`))),window.dispatchEvent(new CustomEvent(`shadow-claw-theme-change`,{detail:{theme:e}}))}const A=h(E)||`system`,me=O(A);k(me);const he=new class{_resolved;_theme;constructor(){this._theme=new u.State(A),this._resolved=new u.State(me)}getTheme(){return{theme:this.theme,resolved:this.resolved}}init(){typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{let e=D();g(E,`system`),k(e),this._theme.set(`system`),this._resolved.set(e)}),window.addEventListener(`storage`,e=>{let t=te(E);e.key===t&&e.newValue&&this.setTheme(e.newValue)})}get resolved(){return this._resolved.get()}setTheme(e){let t=O(e);g(E,e),k(t),this._theme.set(e),this._resolved.set(t)}get theme(){return this._theme.get()}};he.init();async function j(e,t=3){for(let n=0;n<t;n++){if(e())return;await new Promise(e=>{requestAnimationFrame(()=>e())})}}function M(e,t){let n=e.sidebarDefaultPage,r=[n,`pages`,`chat`,`tasks`,`files`];if(!t)return n===`pages`||n===`chat`||n===`tasks`||n===`files`?n:`chat`;for(let e of r){if(e===`pages`&&!t.pagesSidebarHidden)return`pages`;if(e===`chat`&&!t.chatSidebarHidden)return`chat`;if(e===`tasks`&&!t.tasksSidebarHidden)return`tasks`;if(e===`files`&&!t.filesSidebarHidden)return`files`}return`pages`}function ge(e,t,n){return n&&t===`pages`?M(e):t}function _e(e,t){if(!e||![`chat`,`tasks`,`files`].includes(t))return null;let n=e.querySelector(`[data-page-id="${t}"]`);if(!(n instanceof HTMLElement))return null;let r=n.querySelector(`shadow-claw-chat, shadow-claw-tasks, shadow-claw-files`),i=r instanceof HTMLElement?r.shadowRoot?.querySelector(`[data-terminal-slot]`):null;return i instanceof HTMLElement?i:null}function ve(e,t,n,r){let i=n;if(!i)return;let a=_e(e,t);if(!a)return;i.parentElement!==a&&a.appendChild(i);let o=!r;i.hidden=o,o?(a.setAttribute(`hidden`,`hidden`),e?.querySelector(`shadow-claw-terminal`)?.setAttribute(`hidden`,`hidden`)):(a.removeAttribute(`hidden`),e?.querySelector(`shadow-claw-terminal`)?.removeAttribute(`hidden`))}const ye={pages:()=>import(`./shadow-claw-pages-DOQqMm0_.js`),chat:()=>import(`./shadow-claw-chat-DI1q8UnX.js`),tasks:()=>import(`./shadow-claw-tasks-CCTaaSdi.js`),files:()=>import(`./shadow-claw-files-JQ-o0ImX.js`),settings:()=>import(`./shadow-claw-settings-DFtl0Fy8.js`),tools:()=>import(`./shadow-claw-tools-V8NA4n18.js`),channels:()=>import(`./shadow-claw-channels-RVwCE8pE.js`),terminal:()=>import(`./shadow-claw-terminal-BfgulLkl.js`),"file-viewer":()=>import(`./shadow-claw-file-viewer-CW3t6j-w.js`),"pdf-viewer":()=>import(`./shadow-claw-pdf-viewer-BtDKlBOs.js`)},N=/* @__PURE__ */ new Map;async function P(e){let t=N.get(e);if(!t){let n=ye[e];n?(t=n().then(()=>void 0),N.set(e,t)):t=Promise.resolve()}await t}function F(e,t,n,r,i){r&&P(`terminal`).catch(console.error),i!==null&&cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=null,ve(e,t,n,r)})}function be(e){if(!e)return[];let t=[`shadow-claw-chat`,`shadow-claw-tasks`,`shadow-claw-files`,`shadow-claw-pages`,`shadow-claw-settings`,`shadow-claw-tools`,`shadow-claw-channels`],n=[];for(let r of t){let t=e.querySelector(r);if(!(t instanceof HTMLElement))continue;let i=t.shadowRoot?.querySelector(`shadow-claw-page-header`);i instanceof HTMLElement&&n.push(i)}return n}function I(e,t){if(e)for(let n of be(e))n.setMainCollapsedOverride?.(t)}function L(e,t,n){if(!e)return;let r=e.querySelector(`.activity-log-toggle`);r instanceof HTMLButtonElement&&(r.hidden=t!==`chat`||n===0)}function xe(e){if(!e)return null;let t=e.querySelector(`.page.active`);if(!(t instanceof HTMLElement))return null;let n=t.querySelector(`shadow-claw-chat, shadow-claw-tasks, shadow-claw-files, shadow-claw-pages, shadow-claw-settings, shadow-claw-tools, shadow-claw-channels`);if(!(n instanceof HTMLElement))return null;let r=n.shadowRoot?.querySelector(`shadow-claw-page-header`);return r instanceof HTMLElement?r:null}function R(e,t){if(!e)return;let n=e.querySelector(`.header-main-toggle`);if(!(n instanceof HTMLButtonElement))return;let r=typeof t==`boolean`?t:xe(e)?.isMainCollapsed?.()??!1;n.setAttribute(`aria-label`,r?`Show action header`:`Hide action header`),n.setAttribute(`title`,r?`Show action header`:`Hide action header`),n.setAttribute(`aria-pressed`,String(r))}function z(e,t,n,r){if(!e)return;let i=e.querySelector(`.webvm-toggle`);if(!(i instanceof HTMLButtonElement))return;let a=t===`chat`||t===`files`;i.hidden=!a,i.classList.toggle(`hidden`,!a),i.classList.remove(`webvm-toggle--hidden`,`webvm-toggle--visible`,`webvm-toggle--booting`,`webvm-toggle--ready`,`webvm-toggle--error`),a?(i.classList.add(n?`webvm-toggle--visible`:`webvm-toggle--hidden`),r.ready?i.classList.add(`webvm-toggle--ready`):(r.booting||r.bootAttempted)&&i.classList.add(`webvm-toggle--booting`),i.setAttribute(`aria-label`,n?`Hide WebVM terminal`:`Show WebVM terminal`),i.setAttribute(`title`,n?`Hide WebVM terminal`:`Show WebVM terminal`),i.setAttribute(`aria-pressed`,String(n))):i.classList.add(`webvm-toggle--error`)}const B={chat:`shadow-claw-chat`,tasks:`shadow-claw-tasks`,files:`shadow-claw-files`,settings:`shadow-claw-settings`,tools:`shadow-claw-tools`,channels:`shadow-claw-channels`};function V(e,t){let n=B[t];if(!n)return;let r=e.querySelector(`[data-page-id="${t}"]`);!r||r.children.length>0||r.appendChild(document.createElement(n))}function H(e,t,n,r,i,a=!0){if(!e)return;let o=ge(r,i,t.pagesSidebarHidden),s=!!t.chatSplitViewEnabled&&o!==`chat`,c=e.querySelector(`.main-content`),l=e.querySelector(`.chat-split-resize-handle`);if(s){let t=B.chat;t&&customElements.get(t)?V(e,`chat`):P(`chat`).then(()=>{e&&V(e,`chat`)}).catch(console.error),c&&c.classList.add(`split-chat-active`),l&&l.removeAttribute(`hidden`)}else c&&c.classList.remove(`split-chat-active`),l&&l.setAttribute(`hidden`,`hidden`);let u=B[o];u&&customElements.get(u)?V(e,o):P(o).then(()=>{e&&V(e,o)}).catch(console.error),e.querySelectorAll(`.page`).forEach(e=>{e.classList.remove(`active`)}),e.querySelectorAll(`.nav-item`).forEach(e=>{e.classList.remove(`active`)});let d=e.querySelector(`[data-page-id="${o}"]`);d&&d.classList.add(`active`);let f=e.querySelector(`[data-page="${o}"]`);f&&f.classList.add(`active`),t.currentPage=o,a&&n&&r.setActivePage(n,o).catch(console.error),F(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame),I(e,t.headerMainCollapsedOverride),R(e,t.headerMainCollapsedOverride),L(e,t.currentPage,r.activityLog.length),z(e,t.currentPage,t.terminalVisible,t.vmStatus);let p=e.querySelector(`.page.active`);if(p){let e=p;typeof e.scrollTo==`function`&&e.scrollTo(0,0)}if(o===`chat`){let t=e.querySelector(`shadow-claw-chat`);t&&typeof t.checkPromptApiOnboarding==`function`&&t.checkPromptApiOnboarding()}if(o===`files`&&n&&r.loadFiles(n).catch(console.error),o===`pages`){let t=e.querySelector(`shadow-claw-pages`);t&&typeof t.renderSelectedPage==`function`&&(t.renderSelectedPage(),typeof t.setupAutoRefreshTimer==`function`&&t.setupAutoRefreshTimer())}}function U(e,t){if(!e||typeof e.querySelectorAll!=`function`)return;let n=t||(typeof window<`u`&&window.location?.href?new URL(window.location.href):null);if(!n)return;let r=n.pathname.replace(/\/+$/,``)||`/`;e.querySelectorAll(`[slot="sidebar"] a[href], [slot="sidebar-nav"] a[href], [slot="sidebar-content"] a[href], [slot="sidebar-footer"] a[href], .sidebar-custom-sections a[href]`).forEach(e=>{try{let t=e.getAttribute(`href`)||``;if(!t||t.startsWith(`#`)||t.startsWith(`javascript:`)||t.startsWith(`mailto:`)||t.startsWith(`tel:`))return;let i=new URL(t,n.origin);if(i.origin!==n.origin){e.classList.remove(`active`),e.removeAttribute(`aria-current`);return}(i.pathname.replace(/\/+$/,``)||`/`)===r&&(i.hash?i.hash===n.hash:!n.hash)?(e.classList.add(`active`),e.setAttribute(`aria-current`,`page`)):(e.classList.remove(`active`),e.removeAttribute(`aria-current`))}catch{}})}function Se(e){if(!e||typeof window>`u`)return()=>{};let t=t=>U(e,t);t();let n=()=>t();window.addEventListener(`popstate`,n,{passive:!0});let r=e=>{let n=e?.detail?.url;if(n)try{t(new URL(n,window.location.href));return}catch{}t()};window.addEventListener(`shadow-claw-feed-scroll`,r),window.addEventListener(`shadow-claw-url-change`,r);let i=window.navigation,a=null,o=null,s=null;i&&typeof i.addEventListener==`function`&&(a=e=>{let n=e?.destination?.url;if(n)try{t(new URL(n));return}catch{}t()},o=()=>{t()},s=()=>{t()},i.addEventListener(`navigate`,a,{passive:!0}),i.addEventListener(`currententrychange`,o,{passive:!0}),i.addEventListener(`navigatesuccess`,s,{passive:!0}));let c=null,l=null,u=typeof window<`u`?window.history:null,d=null;if(u){c=u.replaceState,l=u.pushState;let e=function(e,n,r){let i=c?.apply(this,arguments);try{r?t(new URL(r.toString(),window.location.href)):t()}catch{t()}return i},n=function(e,n,r){let i=l?.apply(this,arguments);try{r?t(new URL(r.toString(),window.location.href)):t()}catch{t()}return i};u.replaceState=e,u.pushState=n,d=()=>{u.replaceState===e&&c&&(u.replaceState=c),u.pushState===n&&l&&(u.pushState=l)}}return()=>{window.removeEventListener(`popstate`,n),window.removeEventListener(`shadow-claw-feed-scroll`,r),window.removeEventListener(`shadow-claw-url-change`,r),i&&typeof i.removeEventListener==`function`&&(a&&i.removeEventListener(`navigate`,a),o&&i.removeEventListener(`currententrychange`,o),s&&i.removeEventListener(`navigatesuccess`,s)),d&&d()}}async function W(e,t,n,r,i,a){let{page:o,groupId:s,path:c,anchor:l}=a;if(!n)return;let u=o?String(o).toLowerCase():``;if(u&&r.file&&(u!==`files`||!c||c!==r.file.path||s&&s!==i.activeGroupId)){let t=e?.querySelector(`shadow-claw-file-viewer`);if(t&&typeof t.requestCloseViewer==`function`){if(!await t.requestCloseViewer())return}else r.closeFile()}if(s&&s!==i.activeGroupId?await i.switchConversation(n,s,u===`chat`):s&&(i.loadHistory(),(u===`tasks`||u===`files`)&&n&&i.loadFiles(n)),u&&H(e,t,n,i,u),u===`files`&&c){if(/\.[^./]+$/u.test(c))try{await r.openFile(n,c,s||i.activeGroupId),l&&await j(()=>{let t=e?.querySelector(`shadow-claw-file-viewer`);return t&&typeof t.handleAnchorNavigation==`function`?!!t.handleAnchorNavigation(l):!1})}catch(e){console.error(`Failed to open file via route navigation:`,c,e)}else try{await i.setCurrentPath(n,c),r.closeFile()}catch(e){console.error(`Failed to open folder via route navigation:`,c,e)}}if(u===`pages`){if(typeof customElements<`u`&&await customElements.whenDefined(`shadow-claw-pages`),c){let e=s||i.activeGroupId||`br:main`;if(typeof i.isPageAllowed!=`function`||i.isPageAllowed(c,e))await i.setActivePinnedPage(n,{groupId:e,path:c});else{let e=i.effectiveDefaultPage||i.pages&&i.pages[0]||null;await i.setActivePinnedPage(n,e)}}else{let e=i.effectiveDefaultPage||i.pages&&i.pages[0]||null;e&&await i.setActivePinnedPage(n,e)}let t=e?.querySelector(`shadow-claw-pages`);t&&typeof t.renderSelectedPage==`function`&&(await t.renderSelectedPage(),typeof t.setupAutoRefreshTimer==`function`&&t.setupAutoRefreshTimer(),l&&await j(()=>typeof t.handleAnchorNavigation==`function`&&!!t.handleAnchorNavigation(l)))}U(t)}async function G(e,i,s,c,l,u){let d=u.pathname,f=t();f!==`/`&&d.startsWith(f)&&(d=`/`+d.slice(f.length));let p=d.split(`/`).filter(Boolean),m=p.length===0||p.length===1&&p[0]===`index.html`,h=l.defaultPinnedPage||a(ee()),g=h||l.effectiveDefaultPage;if(m&&g){let t={page:`pages`,groupId:g.groupId||l.activeGroupId||`br:main`,path:g.path};if(h){let e=await r(t);if(e&&e!==`/`&&typeof window<`u`&&window.history){let t=o(e);window.history.replaceState(null,``,t)}}await W(e,i,s,c,l,t);return}let _=await n(u,l.activeGroupId);_&&await W(e,i,s,c,l,_)}let K=null;function Ce(e){K=e}function we(e,t){if(!e)return;let n=t;if(n.navigationType===`reload`)return;let r=typeof n?.destination?.getState==`function`?n.destination.getState():null,a=n.navigationType===`replace`?K:null,o=r||n?.info||a||(n.navigationType===`replace`&&typeof history<`u`?history.state:null);if(o?.inFeedScroll||o?.scrollSpy||o?.suppressRouter)return;let s=n?.destination?.url;if(typeof s!=`string`)return;let c=new URL(s);if(c.origin===window.location.origin&&i(c.pathname))return{parsedUrl:c,navigateEvent:n}}function q(e,t){let n=e?.querySelector(`.app-body`);if(!(n instanceof HTMLElement))return Math.max(200,Math.min(560,t));let r=Math.max(200,n.getBoundingClientRect().width-260);return Math.max(200,Math.min(Math.min(560,r),t))}async function J(t,n){if(t)try{await se(t,e.SIDEBAR_WIDTH,n)}catch{}}function Y(e,t){let n=e?.querySelector(`.app-body`);if(!(n instanceof HTMLElement))return;let r=q(e,t);n.style.setProperty(`--sidebar-width`,`${r}px`)}async function Te(t,n,r,i){if(!t)return;let a=t.querySelector(`.sidebar-resize-handle`);if(!(a instanceof HTMLElement))return;a.setAttribute(`tabindex`,`0`),a.setAttribute(`role`,`separator`),a.setAttribute(`aria-orientation`,`vertical`),a.setAttribute(`aria-label`,`Resize sidebar width`);let o=()=>{let e=t.querySelector(`.app-body`);if(!(e instanceof HTMLElement))return 250;let n=parseFloat(e.style.getPropertyValue(`--sidebar-width`));return Number.isFinite(n)&&n>0?n:r.getBoundingClientRect().width||250},s=()=>{let e=Math.round(q(t,o())),n=Math.round(q(t,2**53-1));a.setAttribute(`aria-valuemin`,`200`),a.setAttribute(`aria-valuemax`,String(n)),a.setAttribute(`aria-valuenow`,String(e))};try{let n=i?await l(i,e.SIDEBAR_WIDTH):void 0;typeof n==`number`&&Number.isFinite(n)&&n>0?Y(t,n):Y(t,250)}catch{Y(t,250)}let c=null,u=0,d=0,f=e=>{if(e.pointerId!==c)return;let n=e.clientX-u;Y(t,d+n),s()},p=()=>{if(c===null)return;c=null,a.classList.remove(`active`),document.removeEventListener(`pointermove`,f);let e=t.querySelector(`.app-body`);if(e instanceof HTMLElement){let t=parseFloat(e.style.getPropertyValue(`--sidebar-width`));Number.isFinite(t)&&t>0&&i&&J(i,t)}},m=e=>{e.pointerId===c&&p()};a.addEventListener(`pointerdown`,e=>{(e.pointerType!==`mouse`||e.button===0||e.button===-1)&&(window.innerWidth<896||(e.preventDefault(),c=e.pointerId,u=e.clientX,d=r.getBoundingClientRect().width,a.classList.add(`active`),a.setPointerCapture(e.pointerId),document.addEventListener(`pointermove`,f)))}),a.addEventListener(`pointerup`,m),a.addEventListener(`pointercancel`,p),a.addEventListener(`dblclick`,()=>{Y(t,250),i&&J(i,250),s()}),a.addEventListener(`keydown`,e=>{if(window.innerWidth<896)return;let n=e.shiftKey?32:12,r=o(),a=null;e.key===`ArrowRight`?a=r+n:e.key===`ArrowLeft`?a=r-n:e.key===`Home`?a=200:e.key===`End`&&(a=q(t,2**53-1)),a!==null&&(e.preventDefault(),Y(t,a),s(),i&&J(i,q(t,o())))}),s(),n.addCleanup(()=>{p(),a.removeEventListener(`pointerup`,m),a.removeEventListener(`pointercancel`,p)})}async function X(e,t,n){if(!t)return!1;let r=t.querySelector(`.app-dialog`),i=t.querySelector(`.app-dialog__title`),a=t.querySelector(`.app-dialog__message`),o=t.querySelector(`.app-dialog__details`),s=t.querySelector(`.app-dialog__links`),c=t.querySelector(`.app-dialog__btn--confirm`),l=t.querySelector(`.app-dialog__btn--cancel`),u=t.querySelector(`.app-dialog__countdown`);if(!r||!i||!a||!o||!s||!c||!l)return!1;r._autoCloseTimer&&=(clearInterval(r._autoCloseTimer),null),r.open&&r.close(),i.textContent=n.title,a.textContent=n.message,o.replaceChildren(),s.replaceChildren();let d=Array.isArray(n.details)?n.details:[];o.hidden=d.length===0;for(let t of d){let n=e.createElement(`li`);n.textContent=t,o.appendChild(n)}let f=Array.isArray(n.links)?n.links:[];s.hidden=f.length===0;for(let t of f){let n=e.createElement(`a`);n.className=`app-dialog__link`,n.href=t.href,n.rel=`noreferrer`,n.target=`_blank`,n.textContent=t.label,s.appendChild(n)}let p=n.mode||`confirm`,m=n.confirmLabel||(p===`info`?`OK`:`Confirm`);l.textContent=n.cancelLabel||`Cancel`,l.hidden=p===`info`;let h=null,g=()=>{h&&=(clearInterval(h),null),r._autoCloseTimer&&=null};if(typeof n.autoCloseSeconds==`number`&&n.autoCloseSeconds>0){let e=Math.max(1,Math.round(n.autoCloseSeconds));c.textContent=`${m} (${e}s)`,u&&(u.hidden=!1,u.textContent=`Auto-closing in ${e}s...`,u.setAttribute(`role`,`status`),u.setAttribute(`aria-live`,`polite`),u.setAttribute(`aria-atomic`,`true`)),h=setInterval(()=>{e--,e>0?(c.textContent=`${m} (${e}s)`,u&&(u.textContent=`Auto-closing in ${e}s...`)):(g(),r.returnValue=p===`info`?`confirm`:`cancel`,r.close(r.returnValue))},1e3),r._autoCloseTimer=h}else c.textContent=m,u&&(u.hidden=!0,u.textContent=``);return r.returnValue=``,await new Promise(e=>{let t=()=>{g(),r.removeEventListener(`close`,t),e(r.returnValue===`confirm`)};r.addEventListener(`close`,t),r.showModal()})}const Ee={pages:e.SIDEBAR_PAGES_HIDDEN,chat:e.SIDEBAR_CHAT_HIDDEN,tasks:e.SIDEBAR_TASKS_HIDDEN,files:e.SIDEBAR_FILES_HIDDEN};function De(e,t,n){if(!e)return;let r=e.querySelector(`.nav-item[data-page="${t}"]`);if(r&&(r.hidden=n,r.setAttribute(`aria-hidden`,String(n))),t===`chat`){let t=e.querySelector(`shadow-claw-conversations`);t&&(t.hidden=n,t.setAttribute(`aria-hidden`,String(n)))}}function Oe(e){switch(e){case`pages`:return`pagesSidebarHidden`;case`chat`:return`chatSidebarHidden`;case`tasks`:return`tasksSidebarHidden`;case`files`:return`filesSidebarHidden`}}async function ke(e,t,n,r){for(let[n,i]of Object.entries(Ee)){let a=n,o=!1;if(r)try{let e=await l(r,i);o=ce(e)}catch{o=!1}let s=Oe(a);t[s]=o,De(e,a,o)}}function Z(e,t,n,r,i,a){switch(i){case`pages`:t.pagesSidebarHidden=a;break;case`chat`:t.chatSidebarHidden=a;break;case`tasks`:t.tasksSidebarHidden=a;break;case`files`:t.filesSidebarHidden=a}De(e,i,a),a&&t.currentPage===i&&H(e,t,r,n,M(n,t))}function Ae(e,t,n,r,i){Z(e,t,n,r,`pages`,i)}function je(){let e=window.navigation;return!!(e&&typeof e.addEventListener==`function`&&typeof e.navigate==`function`)}function Me(e,t,n,r={}){let i=r.debounceMs??250,a=r.minSleepDurationMs??1e3,o=0,s=null,c=!1,l=e=>{e&&(c=!0),s!==null&&clearTimeout(s),s=setTimeout(()=>{s=null;let e=c;c=!1,n.ensureAllConnections({force:e})},i)},u=()=>{s!==null&&(clearTimeout(s),s=null),c=!1},d=()=>{if(t.visibilityState===`hidden`)o=Date.now(),u();else if(t.visibilityState===`visible`){let e=o>0&&Date.now()-o>=a;l(e)}},f=e=>{let n=!!(e&&e.persisted);l(n||t.visibilityState===`visible`)},p=()=>{t.visibilityState===`visible`&&l(!1)},m=()=>{l(!0)};return t.addEventListener(`visibilitychange`,d),e.addEventListener(`pageshow`,f),e.addEventListener(`focus`,p),e.addEventListener(`online`,m),()=>{u(),t.removeEventListener(`visibilitychange`,d),e.removeEventListener(`pageshow`,f),e.removeEventListener(`focus`,p),e.removeEventListener(`online`,m)}}function Ne(e,t){if(!e)return;let n=e.querySelector(`shadow-claw-chat`);n&&typeof n.setActivityLogCollapsedOverride==`function`&&n.setActivityLogCollapsedOverride(t)}function Pe(e,t){if(!e)return;let n=e.querySelector(`.activity-log-toggle`);if(!(n instanceof HTMLButtonElement))return;let r=typeof globalThis.matchMedia==`function`&&!globalThis.matchMedia(`(min-width: 56rem) and (min-height: 401px)`).matches,i=typeof t==`boolean`?t:r;n.setAttribute(`aria-label`,i?`Show activity log`:`Hide activity log`),n.setAttribute(`title`,i?`Show activity log`:`Hide activity log`),n.setAttribute(`aria-pressed`,String(i))}function Fe(e){let t=typeof globalThis.matchMedia==`function`&&!globalThis.matchMedia(`(min-width: 56rem) and (min-height: 401px)`).matches;e.activityLogCollapsedOverride=!(typeof e.activityLogCollapsedOverride==`boolean`?e.activityLogCollapsedOverride:t),Ne(e.shadowRoot,e.activityLogCollapsedOverride),Pe(e.shadowRoot,e.activityLogCollapsedOverride)}function Ie(e){e.headerMainCollapsedOverride=!(typeof e.headerMainCollapsedOverride==`boolean`?e.headerMainCollapsedOverride:xe(e.shadowRoot)?.isMainCollapsed?.()??!1),I(e.shadowRoot,e.headerMainCollapsedOverride),R(e.shadowRoot,e.headerMainCollapsedOverride)}function Le(e,t){t.terminalVisible=!t.terminalVisible,z(e,t.currentPage,t.terminalVisible,t.vmStatus),F(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame)}function Q(e,t){e===T.Dark?(t.add(`dark-mode`),t.remove(`light-mode`)):(t.add(`light-mode`),t.remove(`dark-mode`))}function Re(e,t){if(!e)return;let n=e.querySelector(`.sun-icon`),r=e.querySelector(`.moon-icon`);n&&r&&(t===T.Dark?(n.style.display=`block`,n.removeAttribute(`hidden`),n.classList.remove(`hidden`),r.style.display=`none`,r.setAttribute(`hidden`,`hidden`),r.classList.add(`hidden`)):(n.style.display=`none`,n.setAttribute(`hidden`,`hidden`),n.classList.add(`hidden`),r.style.display=`block`,r.removeAttribute(`hidden`),r.classList.remove(`hidden`)))}function ze(e,t,n,r,i,a,o,s,c){if(!n||!e||!t)return;n.querySelectorAll(`.nav-item[data-page]`).forEach(e=>{let r=e;r.addEventListener(`click`,()=>{let e=r.dataset.page||M(a);n.querySelectorAll(`.nav-item`).forEach(e=>e.classList.remove(`active`)),r.classList.add(`active`),setTimeout(()=>{t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:e},bubbles:!0,composed:!0}))},0)})});let l=n.getElementById(`menu-button`),u=n.querySelector(`.sidebar`);if(l&&u){l.addEventListener(`click`,()=>{u.classList.toggle(`open`)}),n.querySelectorAll(`.nav-item, .settings-btn`).forEach(t=>{t.addEventListener(`click`,()=>{e.innerWidth<896&&u.classList.remove(`open`)})}),u.addEventListener(`click`,t=>{let n=t.target;e.innerWidth<896&&n?.closest(`a, button, .nav-item, .sidebar-link, .sidebar-item`)&&u.classList.remove(`open`)}),typeof r?.addEventListener==`function`&&r.addEventListener(`click`,t=>{let n=t.target;e.innerWidth<896&&n?.closest(`[slot^="sidebar"] a, .sidebar-custom-sections a`)&&u.classList.remove(`open`)}),t.addEventListener(`click`,t=>{let n=t.composedPath();e.innerWidth<896&&u.classList.contains(`open`)&&!n.includes(u)&&!n.includes(l)&&u.classList.remove(`open`)});let a=e.matchMedia?e.matchMedia(`(min-width: 56rem)`):{matches:!1,addEventListener:()=>{},removeEventListener:()=>{}},o=e=>{e.matches&&u.classList.remove(`open`)};o(a),a.addEventListener(`change`,o),Te(n,r,u,i)}let d=n.querySelector(`[data-action="show-settings"]`);d&&d.addEventListener(`click`,()=>{t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`settings`},bubbles:!0,composed:!0}))}),n.querySelector(`.header-main-toggle`)?.addEventListener(`click`,()=>{Ie(r)}),n.querySelector(`.activity-log-toggle`)?.addEventListener(`click`,()=>{Fe(r)}),n.addEventListener(`navigate`,e=>{let n=e.detail?.page;n&&t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:n},bubbles:!0,composed:!0}))}),n.addEventListener(`sidebar-pages-visibility-change`,e=>{Ae(n,r,a,i,!!e.detail?.hidden)}),n.addEventListener(`sidebar-chat-visibility-change`,e=>{Z(n,r,a,i,`chat`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-tasks-visibility-change`,e=>{Z(n,r,a,i,`tasks`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-files-visibility-change`,e=>{Z(n,r,a,i,`files`,!!e.detail?.hidden)}),n.addEventListener(`chat-split-view-change`,e=>{r.chatSplitViewEnabled=!!e.detail?.enabled,H(n,r,i,a,r.currentPage,!1)}),n.addEventListener(`navigate-back`,()=>t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`settings`},bubbles:!0,composed:!0})));let f=n.querySelector(`.theme-mode-toggle`);if(f&&f.addEventListener(`click`,()=>{let{resolved:e}=s.getTheme(),t=e===T.Dark?T.Light:T.Dark;s.setTheme(t)}),n.querySelector(`.webvm-toggle`)?.addEventListener(`click`,()=>Le(n,r)),n.addEventListener(`shadow-claw-terminal-slot-ready`,()=>{F(n,r.currentPage,r.terminalElement,r.terminalVisible,r.terminalPlacementFrame),I(n,r.headerMainCollapsedOverride),R(n,r.headerMainCollapsedOverride)}),e.addEventListener(`resize`,()=>{r.headerMainCollapsedOverride===null&&R(n,r.headerMainCollapsedOverride)}),t.addEventListener(`shadow-claw-navigate`,r.shadowClawNav),je()){if(e.history&&!e.history.__scReplaceStateTracked){let t=e.history.replaceState;e.history.replaceState=function(e,n,r){return Ce(e),t.call(this,e,n,r)},e.history.__scReplaceStateTracked=!0}e.navigation.addEventListener(`navigate`,r.handleNavigationApiNavigate),r.navigationListenerAttached=!0}else r.popstateListener=t=>{let s=t?.state||e.history?.state;s?.inFeedScroll||s?.scrollSpy||s?.suppressRouter||G(n,r,i,o,a,new URL(e.location.href))},e.addEventListener(`popstate`,r.popstateListener),t.addEventListener(`click`,r.fallbackClickListener),r.fallbackClickListenerAttached=!0;e.addEventListener(`shadow-claw-theme-change`,e=>{let t=e.detail.theme;Re(n,t),Q(t,r.classList)}),e.addEventListener(`shadow-claw-peer-error`,e=>{let r=e.detail,i=r.remotePeerId,a=r.error;X(t,n,{mode:`info`,title:`Peer Connection Error`,message:i?`Failed to communicate with peer ${i}: ${a}`:`PeerJS error: ${a}`,confirmLabel:`Dismiss`,autoCloseSeconds:30})});let p=s.resolved;Re(n,p),Q(p,r.classList),r.appLifecycleCleanup&&=(r.appLifecycleCleanup(),null),r.orchestrator&&(r.appLifecycleCleanup=Me(e,t,r.orchestrator)),Se(r)}function Be(e){if(e===void 0)return;e.documentElement.classList.remove(le,`sc-prerender-override`);let t=e.querySelector(`shadow-claw`);t?.removeAttribute(de),t?.removeAttribute(ue)}function Ve(e,t){if(t.defaultPrevented||t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return null;let n=t.composedPath(),r=null;for(let e of n)if(e instanceof HTMLAnchorElement){r=e;break}if(!r)return null;let a=r.getAttribute(`href`)||``;return!a||a.startsWith(`javascript:`)||a.startsWith(`mailto:`)||a.startsWith(`tel:`)||r.target&&r.target!==`_self`||r.origin!==e.origin||!i(r.pathname)||r.pathname===e.pathname&&r.search===e.search&&r.hash!==e.hash?null:(t.preventDefault(),`${r.pathname}${r.search}${r.hash}`)}async function He(e,t,n){if(!t)return null;let r=t.querySelector(`.app-prompt-dialog`),i=t.querySelector(`.app-prompt-dialog__message`),a=t.querySelector(`.app-prompt-dialog__input-area`);if(!r||!i||!a)return null;if(r.open&&r.close(),i.textContent=n.question,a.replaceChildren(),Array.isArray(n.options)&&n.options.length>0){let t=e.createElement(`select`);t.className=`app-prompt-dialog__input`,t.name=`prompt-response`;for(let r of n.options){let n=e.createElement(`option`);n.value=r,n.textContent=r,t.appendChild(n)}a.appendChild(t)}else{let t=e.createElement(`input`);t.type=`text`,t.className=`app-prompt-dialog__input`,t.name=`prompt-response`,t.placeholder=`Enter your response...`,t.autocomplete=`off`,a.appendChild(t),setTimeout(()=>t.focus(),50)}return r.returnValue=``,await new Promise(e=>{let t=()=>{if(r.removeEventListener(`close`,t),r.returnValue===`submit`){let t=a.querySelector(`[name='prompt-response']`);e(t?t.value:null)}else e(null)};r.addEventListener(`close`,t),r.showModal()})}async function Ue(e,t,n,r){let i=await He(e,t,r);d(n.orchestrator,r.id,i)}async function We(e,t,n,r){let i=r.path,a=r.groupId||t.activeGroupId;if(i&&e)for(let t=0;t<=3;t++)try{await n.openFile(e,i,a);return}catch(e){let n=e instanceof DOMException&&e.name===`NotFoundError`;if(t<3&&n){await new Promise(e=>setTimeout(e,150*(t+1)));continue}let r=e instanceof Error?e.message:String(e);x(`Failed to open file from tool: ${r}`,5e3);return}}async function Ge(e,t,n){n?.providerId===`llamafile`?await X(e,t,_(n.reason)):n?.providerId===`transformers_js_local`?await X(e,t,re(n.reason)):n?.providerId===`prompt_api`?await X(e,t,pe(n.reason)):n?.providerId&&n.helpType&&await X(e,t,p(n.providerId,n.helpType,n.reason))}async function Ke(e,t,n,r,i,a){if(r&&a?.roomId&&a?.hostPeerId&&await X(e,t,{mode:`confirm`,title:`Room invitation`,message:`${a.fromAlias||a.fromPeerId} invited you to join "${a.roomName}".`,confirmLabel:`Join`,cancelLabel:`Decline`}))try{m(n.orchestrator,a.roomId,a.hostPeerId,a.roomName),await i.switchConversation(r,`room:${a.roomId}`),H(t,n,r,i,`chat`),b(`Joined room "${a.roomName}"`)}catch(e){let t=e instanceof Error?e.message:String(e);x(`Failed to join room: ${t}`,6e3)}}function qe(e,t,n){let r=n.useTrailingSlash&&!t.includes(`#`)?t.endsWith(`/`)?t:t+`/`:t;n.replace?e.replaceState({},``,r):e.pushState({},``,r)}async function Je(e,t,n,r,i,a,c={replace:!1}){let l=s(a),u=o(l),d=typeof window<`u`&&window.location?`${window.location.pathname}${window.location.search}${window.location.hash}`:``;d&&u===d?await W(e,t,n,r,i,a):je()?window.navigation.navigate(u,{history:c.replace?`replace`:`push`}):(u!==window.location.pathname&&qe(globalThis.history,u,{...c,useTrailingSlash:!1}),await W(e,t,n,r,i,a))}function Ye(e){let t=String(e||`chat`).toLowerCase();return t===`chat`||t===`files`||t===`tasks`||t===`pages`||t===`settings`||t===`tools`||t===`channels`?t:`chat`}async function Xe(e,t,n,r,i,a){let o=a.detail;o&&await Je(e,t,n,r,i,{page:Ye(String(o.page||`chat`)),groupId:o.groupId,path:o.path,anchor:o.anchor})}async function Ze(e,t,n,r){await ke(e,t,n,r)}async function Qe(e,t,n,r){if(!n)return;let i=new URL(window.location?.href||`http://localhost/`),a=i.searchParams.get(`peer`);if(!a)return;let o=a.trim();if(o)try{let a=ae(r),s=a.myPeerId;s||=y().toLowerCase();let c=new Set(a.trustedPeerIds);c.add(o),await C(r,n,s,Array.from(c),a.serverHost,a.serverPort,a.serverPath,a.serverSecure),a.enabled||await ie(r,n,`peerjs`,!0);let l=await v.ensurePeerConversation(n,o);await v.switchConversation(n,l),H(e,t,n,v,`chat`),i.searchParams.delete(`peer`);let u=`${i.pathname}${i.search}${i.hash}`;window.history.replaceState({},``,u||`/`),b(`Connected to Peer: ${o.substring(0,8)}`)}catch(e){let t=e instanceof Error?e.message:String(e);x(`Failed to process peer parameter: ${t}`,6e3)}}const $e=`pendingShares`;function et(e){return{id:typeof e?.id==`string`?e.id:``,createdAt:typeof e?.createdAt==`number`?e.createdAt:0,title:typeof e?.title==`string`?e.title:``,text:typeof e?.text==`string`?e.text:``,url:typeof e?.url==`string`?e.url:``,fileName:typeof e?.fileName==`string`?e.fileName:``,fileType:typeof e?.fileType==`string`?e.fileType:``,fileBytes:e?.fileBytes instanceof ArrayBuffer?e.fileBytes:null}}async function tt(e){return!e||typeof e.transaction!=`function`?[]:new Promise((t,n)=>{let r;try{r=e.transaction($e,`readwrite`)}catch(e){if(e instanceof DOMException&&e.name===`NotFoundError`){t([]);return}n(e);return}let i=r.objectStore($e),a=i.getAll();a.onerror=()=>{n(a.error||/* @__PURE__ */ Error(`Failed to read pending shares`))},a.onsuccess=()=>{let e=Array.isArray(a.result)?a.result.map(et).filter(e=>typeof e.id==`string`&&e.id.length>0).sort((e,t)=>e.createdAt-t.createdAt):[],r=i.clear();r.onerror=()=>{n(r.error||/* @__PURE__ */ Error(`Failed to clear pending shares`))},r.onsuccess=()=>{t(e)}},r.onabort=()=>{n(r.error||/* @__PURE__ */ Error(`Pending share transaction aborted`))}})}function nt(e){let t=[`# Shared Content`,``];return e.title&&t.push(`Title: ${e.title}`),e.url&&t.push(`URL: ${e.url}`),e.text&&t.push(``,e.text),t.join(`
2
+ `).trim()+`
3
+ `}async function rt(e,t){let n=/* @__PURE__ */ new Date,r=`Shared Files ${`${String(n.getFullYear())}-${String(n.getMonth()+1).padStart(2,`0`)}-${String(n.getDate()).padStart(2,`0`)}`}`,i=t.groups.find(e=>e.name===r);return i?(await t.switchConversation(e,i.groupId),i.groupId):(await t.createConversation(e,r)).groupId}function it(e,t){return(e.replace(/\\/g,`/`).split(`/`).filter(Boolean).pop()||``).replace(/\s+/g,`-`).replace(/[^A-Za-z0-9._-]/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``)||`${t}.txt`}async function at(e,t,n,r,i,a,o){if(!a)return;let s=await tt(a);if(s.length!==0)try{let c=await rt(a,r),l=[];for(let e=0;e<s.length;e++){let t=s[e],n=`shared-${Date.now()}-${e+1}`;if(t.fileBytes instanceof ArrayBuffer){let e=it(t.fileName||(t.fileType===`application/pdf`?`${n}.pdf`:`${n}.bin`),n);await ne(a,c,e,new Uint8Array(t.fileBytes)),l.push(e);continue}let r=it(t.fileName||`${n}.md`,n),i=nt(t);await oe(a,c,r,i),l.push(r)}await r.loadFiles(a),H(t,n,a,r,`files`),l.length>0&&await i.openFile(a,l[0],c),b(`Imported ${l.length} shared item${l.length===1?``:`s`}.`);let u=o;if(u.searchParams.has(`share-target`)){u.searchParams.delete(`share-target`);let t=`${u.pathname}${u.search}${u.hash}`;e.history.replaceState({},``,t||`/`)}}catch(e){let t=e instanceof Error?e.message:String(e);x(`Failed to import shared content: ${t}`,6e3)}}async function ot(e,t,n,r,i,a){if(!r)return;let o=new URL(window.location?.href||`http://localhost/`),s=(o.searchParams.get(`room`)||``).trim(),c=(o.searchParams.get(`host`)||``).trim(),l=(o.searchParams.get(`name`)||``).trim()||`Room`;if(s&&c)try{let u=ae(i),d=u.myPeerId;d||=y().toLowerCase();let f=new Set(u.trustedPeerIds);f.add(c),await C(i,r,d,Array.from(f),u.serverHost,u.serverPort,u.serverPath,u.serverSecure),u.enabled||await ie(i,r,`peerjs`,!0),m(i,s,c,l),await a.switchConversation(r,`room:${s}`),H(t,n,r,a,`chat`),o.searchParams.delete(`room`),o.searchParams.delete(`host`),o.searchParams.delete(`name`);let p=`${o.pathname}${o.search}${o.hash}`;e.history.replaceState({},``,p||`/`),b(`Joined room "${l}"`)}catch(e){let t=e instanceof Error?e.message:String(e);x(`Failed to join room: ${t}`,6e3)}}function st(e,t,n,r){e&&(S(()=>{let t=w.file;t&&(P(`file-viewer`).then(()=>{if(e&&!e.querySelector(`shadow-claw-file-viewer`)){let t=e.querySelector(`.main-content`);if(t){let e=document.createElement(`shadow-claw-file-viewer`);e.id=`file-viewer`,t.appendChild(e)}}}).catch(console.error),t.kind===`pdf`&&P(`pdf-viewer`).catch(console.error))}),S(()=>{let e=r.state;e===`idle`&&(t.previousOrchestratorState===`thinking`||t.previousOrchestratorState===`responding`)&&b(`Response complete`,2500),t.previousOrchestratorState=e}),S(()=>{let i=r.activePage;i!==t.currentPage&&H(e,t,n,r,i,!1)}),S(()=>{r.activityLog,L(e,t.currentPage,r.activityLog.length)}))}const ct=new CSSStyleSheet;ct.replaceSync(`*,
4
+ *::before,
5
+ *::after {
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ .hidden,
10
+ [hidden] {
11
+ display: none !important;
12
+ }
13
+
14
+ a {
15
+ color: var(--shadow-claw-link);
16
+ text-decoration: underline;
17
+ text-underline-offset: 0.125rem;
18
+ }
19
+
20
+ a:hover {
21
+ color: var(--shadow-claw-link-hover);
22
+ }
23
+
24
+ .header {
25
+ align-items: center;
26
+ background-color: var(--shadow-claw-bg-secondary);
27
+ border-bottom: 0.0625rem solid var(--shadow-claw-border-color);
28
+ display: flex;
29
+ gap: 0.5rem;
30
+ height: 4rem;
31
+ justify-content: start;
32
+ max-height: 4rem;
33
+ padding: 0.5rem 1rem;
34
+ width: 100%;
35
+ }
36
+
37
+ .header h1 {
38
+ align-items: center;
39
+ color: var(--shadow-claw-text-primary);
40
+ display: flex;
41
+ flex-direction: row;
42
+ margin: 0;
43
+ width: 100%;
44
+ }
45
+
46
+ #menu-button {
47
+ align-items: center;
48
+ background: transparent;
49
+ border: none;
50
+ border-radius: 0.25rem;
51
+ color: var(--shadow-claw-text-secondary);
52
+ cursor: pointer;
53
+ display: flex;
54
+ justify-content: center;
55
+ padding: 0.5rem;
56
+ }
57
+
58
+ #menu-button:hover,
59
+ .theme-toggle:hover {
60
+ background-color: var(--shadow-claw-bg-tertiary);
61
+ color: var(--shadow-claw-text-primary);
62
+ }
63
+
64
+ .header-actions {
65
+ align-items: center;
66
+ display: flex;
67
+ gap: 0.5rem;
68
+ margin-left: auto;
69
+ }
70
+
71
+ .theme-toggle {
72
+ align-items: center;
73
+ background: transparent;
74
+ border: none;
75
+ border-radius: 0.25rem;
76
+ color: var(--shadow-claw-text-secondary);
77
+ cursor: pointer;
78
+ display: flex;
79
+ justify-content: center;
80
+ padding: 0.5rem;
81
+ }
82
+
83
+ .theme-mode-toggle .sun-icon {
84
+ display: none;
85
+ }
86
+
87
+ .theme-mode-toggle .moon-icon {
88
+ display: block;
89
+ }
90
+
91
+ .theme-toggle svg {
92
+ transition: transform 0.2s ease;
93
+ }
94
+
95
+ .header-main-toggle {
96
+ display: var(--shadow-claw-header-main-toggle-display, block);
97
+ }
98
+
99
+ .header-main-toggle[aria-pressed="true"],
100
+ .activity-log-toggle[aria-pressed="true"] {
101
+ box-shadow: 0 0 0.5rem
102
+ color-mix(
103
+ in srgb,
104
+ var(--shadow-claw-warning-color, #d97706) 50%,
105
+ transparent
106
+ );
107
+ color: var(--shadow-claw-warning-color, #d97706);
108
+ }
109
+
110
+ .header-main-toggle[aria-pressed="true"] svg {
111
+ transform: rotate(180deg);
112
+ }
113
+
114
+ .activity-log-toggle[aria-pressed="true"] svg {
115
+ transform: rotate(180deg);
116
+ }
117
+
118
+ .webvm-toggle--booting,
119
+ .webvm-toggle--ready,
120
+ .webvm-toggle--visible {
121
+ color: var(--shadow-claw-success-color);
122
+ }
123
+
124
+ .webvm-toggle--error {
125
+ color: var(--shadow-claw-error-color);
126
+ }
127
+
128
+ .app {
129
+ background-color: var(--shadow-claw-bg-primary);
130
+ color: var(--shadow-claw-text-primary);
131
+ display: flex;
132
+ flex-direction: column;
133
+ font-family: var(--shadow-claw-font-sans);
134
+ /* Punch through the \`visibility: hidden\` set on the shadow-claw host
135
+ by the sc-prerender-override global CSS rule. The existing boot-pending
136
+ opacity rules still hide the real pre-rendered content; the skeleton
137
+ overlays and header remain fully visible. */
138
+ visibility: visible;
139
+ width: 100%;
140
+ }
141
+
142
+ .app-body {
143
+ --sidebar-width: 15.625rem;
144
+ display: flex;
145
+ flex: 1;
146
+ flex-direction: row;
147
+ min-height: 0;
148
+ overflow: hidden;
149
+ }
150
+
151
+ .sidebar {
152
+ background-color: var(--shadow-claw-bg-secondary);
153
+ border-right: 0.0625rem solid var(--shadow-claw-bg-tertiary);
154
+ display: flex;
155
+ flex: none;
156
+ flex-direction: column;
157
+ overflow-y: auto;
158
+ position: relative;
159
+ width: var(--sidebar-width);
160
+ }
161
+
162
+ .sidebar-resize-handle {
163
+ background: transparent;
164
+ cursor: col-resize;
165
+ flex: none;
166
+ outline: none;
167
+ position: relative;
168
+ touch-action: none;
169
+ user-select: none;
170
+ width: 0.75rem;
171
+ }
172
+
173
+ .sidebar-resize-handle::before {
174
+ background: color-mix(
175
+ in srgb,
176
+ var(--shadow-claw-bg-secondary) 72%,
177
+ var(--shadow-claw-border-color)
178
+ );
179
+ border: 0.0625rem solid
180
+ color-mix(in srgb, var(--shadow-claw-border-color) 80%, transparent);
181
+ border-radius: var(--shadow-claw-radius-pill);
182
+ content: "";
183
+ height: 4.25rem;
184
+ left: 50%;
185
+ position: absolute;
186
+ top: 50%;
187
+ transform: translate(-50%, -50%);
188
+ transition:
189
+ background-color 0.15s,
190
+ border-color 0.15s,
191
+ box-shadow 0.15s;
192
+ width: 0.5625rem;
193
+ }
194
+
195
+ .sidebar-resize-handle::after {
196
+ background: var(--shadow-claw-border-color);
197
+ border-radius: var(--shadow-claw-radius-pill);
198
+ content: "";
199
+ height: 2.75rem;
200
+ left: 50%;
201
+ position: absolute;
202
+ top: 50%;
203
+ transform: translate(-50%, -50%);
204
+ transition: background-color 0.15s;
205
+ width: 0.1875rem;
206
+ }
207
+
208
+ .sidebar-resize-handle:hover::before,
209
+ .sidebar-resize-handle.active::before {
210
+ background: color-mix(
211
+ in srgb,
212
+ var(--shadow-claw-accent-primary) 20%,
213
+ var(--shadow-claw-bg-secondary)
214
+ );
215
+ border-color: color-mix(
216
+ in srgb,
217
+ var(--shadow-claw-accent-primary) 45%,
218
+ transparent
219
+ );
220
+ box-shadow: 0 0 0.5rem
221
+ color-mix(in srgb, var(--shadow-claw-accent-primary) 18%, transparent);
222
+ }
223
+
224
+ .sidebar-resize-handle:hover::after,
225
+ .sidebar-resize-handle.active::after {
226
+ background: var(--shadow-claw-accent-primary);
227
+ }
228
+
229
+ .sidebar-resize-handle:focus-visible::before {
230
+ background: color-mix(
231
+ in srgb,
232
+ var(--shadow-claw-accent-primary) 20%,
233
+ var(--shadow-claw-bg-secondary)
234
+ );
235
+ border-color: color-mix(
236
+ in srgb,
237
+ var(--shadow-claw-accent-primary) 45%,
238
+ transparent
239
+ );
240
+ box-shadow: 0 0 0.5rem
241
+ color-mix(in srgb, var(--shadow-claw-accent-primary) 18%, transparent);
242
+ }
243
+
244
+ .sidebar-resize-handle:focus-visible::after {
245
+ background: var(--shadow-claw-accent-primary);
246
+ }
247
+
248
+ .sidebar-resize-handle:focus-visible {
249
+ outline: 0.125rem solid
250
+ color-mix(in srgb, var(--shadow-claw-accent-primary) 60%, transparent);
251
+ outline-offset: 0.0625rem;
252
+ }
253
+
254
+ @media (max-width: 55.9375rem) {
255
+ .sidebar {
256
+ display: none;
257
+ }
258
+
259
+ .sidebar.open {
260
+ border-radius: 0 var(--shadow-claw-radius-m) var(--shadow-claw-radius-m) 0;
261
+ box-shadow: var(--shadow-claw-shadow-lg);
262
+ display: flex;
263
+ height: calc(100vh - 4rem);
264
+ height: calc(100dvh - 4rem);
265
+ position: absolute;
266
+ width: min(85vw, 20rem);
267
+ z-index: 100;
268
+ }
269
+
270
+ .sidebar-resize-handle {
271
+ display: none;
272
+ }
273
+ }
274
+
275
+ @media (min-width: 56rem) {
276
+ #menu-button {
277
+ display: none;
278
+ }
279
+ }
280
+
281
+ .nav-menu {
282
+ display: var(--shadow-claw-sidebar-nav-display, flex);
283
+ flex-direction: column;
284
+ flex: none;
285
+ list-style: none;
286
+ margin: 0;
287
+ padding: 0.5rem;
288
+ }
289
+
290
+ .nav-menu:not(:has(.nav-item:not([hidden]))) {
291
+ display: none;
292
+ }
293
+
294
+ slot[name="sidebar"],
295
+ slot[name="sidebar-nav"],
296
+ slot[name="sidebar-content"],
297
+ slot[name="sidebar-footer"] {
298
+ display: block;
299
+ }
300
+
301
+ ::slotted([slot="sidebar"]),
302
+ ::slotted([slot="sidebar-nav"]),
303
+ ::slotted([slot="sidebar-content"]),
304
+ ::slotted([slot="sidebar-footer"]) {
305
+ display: block;
306
+ }
307
+
308
+ .sidebar-footer {
309
+ display: var(--shadow-claw-sidebar-footer-display, block);
310
+ }
311
+
312
+ .sidebar-spacer {
313
+ flex: 1;
314
+ }
315
+
316
+ shadow-claw-conversations {
317
+ display: flex;
318
+ flex: none;
319
+ flex-direction: column;
320
+ min-height: 0;
321
+ overflow: hidden;
322
+ }
323
+
324
+ .nav-item {
325
+ border-radius: var(--shadow-claw-radius-m);
326
+ color: var(--shadow-claw-text-secondary);
327
+ cursor: pointer;
328
+ font-size: var(--shadow-claw-font-size-sm);
329
+ font-weight: 500;
330
+ margin-bottom: 0.5rem;
331
+ padding: 0.625rem 0.75rem;
332
+ transition:
333
+ background-color 0.15s,
334
+ color 0.15s;
335
+ }
336
+
337
+ .nav-item:hover {
338
+ background-color: var(--shadow-claw-text-secondary);
339
+ color: var(--shadow-claw-on-primary);
340
+ }
341
+
342
+ .nav-item.active {
343
+ background-color: var(--shadow-claw-accent-primary);
344
+ color: var(--shadow-claw-on-primary);
345
+ }
346
+
347
+ .sidebar-footer {
348
+ border-top: 0.0625rem solid var(--shadow-claw-border-color);
349
+ flex: none;
350
+ margin-bottom: 0.5rem;
351
+ padding: 0.75rem;
352
+ }
353
+
354
+ .settings-btn {
355
+ background-color: transparent;
356
+ border: 0.0625rem solid var(--shadow-claw-border-color);
357
+ border-radius: var(--shadow-claw-radius-pill);
358
+ color: var(--shadow-claw-text-secondary);
359
+ cursor: pointer;
360
+ font-size: 0.8125rem;
361
+ padding: 0.625rem 0.75rem;
362
+ transition: all var(--shadow-claw-duration-min) var(--shadow-claw-ease-out);
363
+ width: 100%;
364
+ }
365
+
366
+ .settings-btn:hover {
367
+ border-color: var(--shadow-claw-text-primary);
368
+ box-shadow: var(--shadow-claw-shadow-md);
369
+ color: var(--shadow-claw-text-primary);
370
+ }
371
+
372
+ .main-content {
373
+ --chat-split-height: 20rem;
374
+ display: flex;
375
+ flex: 1;
376
+ flex-direction: column;
377
+ height: calc(100vh - 4rem);
378
+ height: calc(100dvh - 4rem);
379
+ min-height: 0;
380
+ overflow: hidden;
381
+ position: relative;
382
+ }
383
+
384
+ .page {
385
+ display: flex;
386
+ display: none;
387
+ flex: 1;
388
+ flex-direction: column;
389
+ min-height: 0;
390
+ overflow: auto;
391
+ }
392
+
393
+ .page.active {
394
+ display: flex;
395
+ }
396
+
397
+ .chat-split-resize-handle {
398
+ background: transparent;
399
+ cursor: row-resize;
400
+ display: none;
401
+ flex: none;
402
+ height: 0.75rem;
403
+ outline: none;
404
+ position: relative;
405
+ touch-action: none;
406
+ user-select: none;
407
+ width: 100%;
408
+ }
409
+
410
+ .main-content.split-chat-active .page.active {
411
+ order: 1;
412
+ }
413
+
414
+ .main-content.split-chat-active .chat-split-resize-handle {
415
+ display: flex;
416
+ margin-bottom: -0.375rem;
417
+ margin-top: -0.375rem;
418
+ order: 2;
419
+ z-index: 10;
420
+ }
421
+
422
+ .chat-split-resize-handle::before {
423
+ background: color-mix(
424
+ in srgb,
425
+ var(--shadow-claw-bg-secondary) 72%,
426
+ var(--shadow-claw-border-color)
427
+ );
428
+ border: 0.0625rem solid
429
+ color-mix(in srgb, var(--shadow-claw-border-color) 80%, transparent);
430
+ border-radius: var(--shadow-claw-radius-pill);
431
+ content: "";
432
+ height: 0.5625rem;
433
+ left: 50%;
434
+ position: absolute;
435
+ top: 50%;
436
+ transform: translate(-50%, -50%);
437
+ transition:
438
+ background-color 0.15s,
439
+ border-color 0.15s,
440
+ box-shadow 0.15s;
441
+ width: 4.25rem;
442
+ }
443
+
444
+ .chat-split-resize-handle::after {
445
+ background: var(--shadow-claw-border-color);
446
+ border-radius: var(--shadow-claw-radius-pill);
447
+ content: "";
448
+ height: 0.1875rem;
449
+ left: 50%;
450
+ position: absolute;
451
+ top: 50%;
452
+ transform: translate(-50%, -50%);
453
+ transition: background-color 0.15s;
454
+ width: 2.75rem;
455
+ }
456
+
457
+ .chat-split-resize-handle:hover::before,
458
+ .chat-split-resize-handle.active::before,
459
+ .chat-split-resize-handle:focus-visible::before {
460
+ background: color-mix(
461
+ in srgb,
462
+ var(--shadow-claw-accent-primary) 20%,
463
+ var(--shadow-claw-bg-secondary)
464
+ );
465
+ border-color: color-mix(
466
+ in srgb,
467
+ var(--shadow-claw-accent-primary) 45%,
468
+ transparent
469
+ );
470
+ box-shadow: 0 0 0.5rem
471
+ color-mix(in srgb, var(--shadow-claw-accent-primary) 18%, transparent);
472
+ }
473
+
474
+ .chat-split-resize-handle:hover::after,
475
+ .chat-split-resize-handle.active::after,
476
+ .chat-split-resize-handle:focus-visible::after {
477
+ background: var(--shadow-claw-accent-primary);
478
+ }
479
+
480
+ .chat-split-resize-handle:focus-visible {
481
+ outline: 0.125rem solid
482
+ color-mix(in srgb, var(--shadow-claw-accent-primary) 60%, transparent);
483
+ outline-offset: 0.0625rem;
484
+ }
485
+
486
+ .main-content.split-chat-active .chat-page:not(.active) {
487
+ border-top: 0.0625rem solid var(--shadow-claw-border-color);
488
+ display: flex;
489
+ flex: none;
490
+ height: var(--chat-split-height);
491
+ max-height: calc(100% - 6.25rem);
492
+ min-height: 9.375rem;
493
+ order: 3;
494
+ }
495
+
496
+ @media (max-width: 55.9375rem) {
497
+ .chat-split-resize-handle {
498
+ display: none !important;
499
+ }
500
+
501
+ .main-content.split-chat-active .chat-page:not(.active) {
502
+ display: none !important;
503
+ }
504
+ }
505
+
506
+ .app-dialog {
507
+ background: var(--shadow-claw-bg-secondary);
508
+ border: 0.0625rem solid var(--shadow-claw-border-color);
509
+ border-radius: var(--shadow-claw-radius-l);
510
+ box-shadow: var(--shadow-claw-shadow-lg);
511
+ color: var(--shadow-claw-text-primary);
512
+ max-width: min(90vw, 28rem);
513
+ padding: 0;
514
+ }
515
+
516
+ .app-dialog::backdrop {
517
+ background: color-mix(in srgb, black 50%, transparent);
518
+ }
519
+
520
+ .app-confirm-dialog__form {
521
+ display: flex;
522
+ flex-direction: column;
523
+ gap: 0.75rem;
524
+ margin: 0;
525
+ padding: 1rem;
526
+ }
527
+
528
+ .app-dialog__title {
529
+ font-size: 1rem;
530
+ margin: 0;
531
+ }
532
+
533
+ .app-dialog__message {
534
+ color: var(--shadow-claw-text-secondary);
535
+ margin: 0;
536
+ }
537
+
538
+ .app-dialog__details {
539
+ color: var(--shadow-claw-text-secondary);
540
+ display: flex;
541
+ flex-direction: column;
542
+ gap: 0.25rem;
543
+ margin: 0;
544
+ padding-left: 1rem;
545
+ }
546
+
547
+ .app-dialog__links {
548
+ display: flex;
549
+ flex-wrap: wrap;
550
+ gap: 0.5rem;
551
+ }
552
+
553
+ .app-dialog__link {
554
+ color: var(--shadow-claw-accent-primary);
555
+ font-size: 0.9375rem;
556
+ text-decoration: none;
557
+ }
558
+
559
+ .app-dialog__link:hover,
560
+ .app-dialog__link:focus-visible {
561
+ text-decoration: underline;
562
+ }
563
+
564
+ .app-dialog__countdown {
565
+ color: var(--shadow-claw-text-secondary);
566
+ font-size: 0.875rem;
567
+ margin: 0;
568
+ }
569
+
570
+ .app-confirm-dialog__actions {
571
+ display: flex;
572
+ gap: 0.5rem;
573
+ justify-content: flex-end;
574
+ }
575
+
576
+ .app-dialog__btn {
577
+ border: 0.0625rem solid var(--shadow-claw-border-color);
578
+ border-radius: var(--shadow-claw-radius-m);
579
+ cursor: pointer;
580
+ font: inherit;
581
+ padding: 0.5rem 0.75rem;
582
+ }
583
+
584
+ .app-dialog__btn--cancel {
585
+ background: var(--shadow-claw-bg-primary);
586
+ color: var(--shadow-claw-text-primary);
587
+ }
588
+
589
+ .app-dialog__btn--confirm {
590
+ background: var(--shadow-claw-accent-primary);
591
+ border-color: var(--shadow-claw-accent-primary);
592
+ color: var(--shadow-claw-on-primary);
593
+ }
594
+
595
+ .app-prompt-dialog__form {
596
+ display: flex;
597
+ flex-direction: column;
598
+ gap: 0.75rem;
599
+ margin: 0;
600
+ padding: 1rem;
601
+ }
602
+
603
+ .app-prompt-dialog__title {
604
+ font-size: 1rem;
605
+ margin: 0;
606
+ }
607
+
608
+ .app-prompt-dialog__message {
609
+ color: var(--shadow-claw-text-secondary);
610
+ margin: 0;
611
+ }
612
+
613
+ .app-prompt-dialog__input-area {
614
+ display: flex;
615
+ flex-direction: column;
616
+ gap: 0.5rem;
617
+ margin-top: 0.5rem;
618
+ }
619
+
620
+ .app-prompt-dialog__input {
621
+ background: var(--shadow-claw-bg-primary);
622
+ border: 0.0625rem solid var(--shadow-claw-border-color);
623
+ border-radius: var(--shadow-claw-radius-s);
624
+ color: var(--shadow-claw-text-primary);
625
+ font: inherit;
626
+ padding: 0.5rem;
627
+ width: 100%;
628
+ }
629
+
630
+ .app-prompt-dialog__actions {
631
+ display: flex;
632
+ gap: 0.5rem;
633
+ justify-content: flex-end;
634
+ margin-top: 0.5rem;
635
+ }
636
+
637
+ form:tool-form-active,
638
+ .app-confirm-dialog__form:tool-form-active,
639
+ .app-prompt-dialog__form:tool-form-active {
640
+ outline: 2px dashed var(--shadow-claw-accent-primary, #3b82f6);
641
+ outline-offset: 4px;
642
+ }
643
+
644
+ button:tool-submit-active {
645
+ outline: 2px dashed var(--shadow-claw-warning, #f59e0b);
646
+ outline-offset: 2px;
647
+ }
648
+
649
+ .chat-page {
650
+ flex-direction: column;
651
+ }
652
+
653
+ :host([data-prerender-no-seed="true"]) .nav-item,
654
+ :host([data-prerender-no-seed="true"]) shadow-claw-conversations,
655
+ :host([data-prerender-no-seed="true"]) .sidebar-footer,
656
+ :host([data-prerender-no-seed="true"]) .page.active,
657
+ :host([data-prerender-no-seed="true"]) shadow-claw-file-viewer,
658
+ :host([data-prerender-no-seed="true"]) shadow-claw-toast {
659
+ opacity: 1;
660
+ transform: translateY(0);
661
+ transition:
662
+ opacity var(--shadow-claw-duration-min) var(--shadow-claw-ease-out),
663
+ transform var(--shadow-claw-duration-min) var(--shadow-claw-ease-out);
664
+ }
665
+
666
+ :host([data-prerender-no-seed="true"][data-hydration-pending="true"]) .nav-item,
667
+ :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
668
+ shadow-claw-conversations,
669
+ :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
670
+ .sidebar-footer,
671
+ :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
672
+ .page.active,
673
+ :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
674
+ shadow-claw-file-viewer,
675
+ :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
676
+ shadow-claw-toast,
677
+ :host([data-prerender-no-seed="true"][data-js-boot-pending="true"]) .nav-item,
678
+ :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
679
+ shadow-claw-conversations,
680
+ :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
681
+ .sidebar-footer,
682
+ :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
683
+ .page.active,
684
+ :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
685
+ shadow-claw-file-viewer,
686
+ :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
687
+ shadow-claw-toast {
688
+ opacity: 0;
689
+ pointer-events: none;
690
+ transform: translateY(0.25rem);
691
+ }
692
+
693
+ @media (prefers-reduced-motion: reduce) {
694
+ :host([data-prerender-no-seed="true"]) .nav-item,
695
+ :host([data-prerender-no-seed="true"]) shadow-claw-conversations,
696
+ :host([data-prerender-no-seed="true"]) .sidebar-footer,
697
+ :host([data-prerender-no-seed="true"]) .page.active,
698
+ :host([data-prerender-no-seed="true"]) shadow-claw-file-viewer,
699
+ :host([data-prerender-no-seed="true"]) shadow-claw-toast {
700
+ transform: none;
701
+ transition: none;
702
+ }
703
+ }
704
+
705
+ /* Premium Loading & Hydration Skeletons */
706
+ .sidebar-boot-skeleton {
707
+ background-color: var(--shadow-claw-bg-secondary);
708
+ bottom: 0;
709
+ display: flex;
710
+ flex-direction: column;
711
+ left: 0;
712
+ opacity: 0;
713
+ padding: 1rem 0.75rem;
714
+ pointer-events: none;
715
+ position: absolute;
716
+ right: 0;
717
+ top: 0;
718
+ transition:
719
+ opacity var(--shadow-claw-duration-regular) var(--shadow-claw-ease-out),
720
+ visibility var(--shadow-claw-duration-regular) var(--shadow-claw-ease-out);
721
+ visibility: hidden;
722
+ z-index: 10;
723
+ }
724
+
725
+ :host([data-js-boot-pending="true"]) .sidebar-boot-skeleton,
726
+ :host([data-hydration-pending="true"]) .sidebar-boot-skeleton {
727
+ opacity: 1;
728
+ pointer-events: auto;
729
+ visibility: visible;
730
+ }
731
+
732
+ .skeleton-nav-wrapper {
733
+ display: none;
734
+ flex-direction: column;
735
+ gap: 0.5rem;
736
+ margin-bottom: 0.5rem;
737
+ }
738
+
739
+ :host([data-prerender-no-seed="true"]) .skeleton-nav-wrapper {
740
+ display: flex;
741
+ }
742
+
743
+ .skeleton-divider {
744
+ border-top: 0.0625rem solid var(--shadow-claw-border-color);
745
+ display: none;
746
+ margin: 0.75rem 0;
747
+ }
748
+
749
+ :host([data-prerender-no-seed="true"]) .skeleton-divider {
750
+ display: block;
751
+ }
752
+
753
+ .skeleton-convo-wrapper {
754
+ display: flex;
755
+ flex-direction: column;
756
+ gap: 0.75rem;
757
+ margin-top: 0.5rem;
758
+ }
759
+
760
+ .skeleton-item {
761
+ animation: skeleton-pulse 1.8s ease-in-out infinite;
762
+ background: linear-gradient(
763
+ 90deg,
764
+ var(--shadow-claw-bg-secondary) 25%,
765
+ var(--shadow-claw-bg-tertiary) 50%,
766
+ var(--shadow-claw-bg-secondary) 75%
767
+ );
768
+ background-size: 200% 100%;
769
+ }
770
+
771
+ .skeleton-nav {
772
+ border-radius: var(--shadow-claw-radius-m);
773
+ height: 2.25rem;
774
+ width: 100%;
775
+ }
776
+
777
+ /* Give items dynamic-looking varied widths for extra premium feel */
778
+ .skeleton-nav:nth-child(1) {
779
+ width: 85%;
780
+ }
781
+
782
+ .skeleton-nav:nth-child(2) {
783
+ width: 90%;
784
+ }
785
+
786
+ .skeleton-nav:nth-child(3) {
787
+ width: 75%;
788
+ }
789
+
790
+ .skeleton-nav:nth-child(4) {
791
+ width: 80%;
792
+ }
793
+
794
+ .skeleton-convo {
795
+ border-radius: var(--shadow-claw-radius-m);
796
+ height: 3.5rem;
797
+ width: 100%;
798
+ }
799
+
800
+ .main-content-boot-skeleton {
801
+ align-items: center;
802
+ background-color: var(--shadow-claw-bg-primary);
803
+ bottom: 0;
804
+ display: flex;
805
+ flex-direction: column;
806
+ justify-content: center;
807
+ left: 0;
808
+ opacity: 0;
809
+ padding: 2rem;
810
+ pointer-events: none;
811
+ position: absolute;
812
+ right: 0;
813
+ top: 0;
814
+ transition:
815
+ opacity var(--shadow-claw-duration-regular) var(--shadow-claw-ease-out),
816
+ visibility var(--shadow-claw-duration-regular) var(--shadow-claw-ease-out);
817
+ visibility: hidden;
818
+ z-index: 10;
819
+ }
820
+
821
+ :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
822
+ .main-content-boot-skeleton,
823
+ :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
824
+ .main-content-boot-skeleton {
825
+ opacity: 1;
826
+ pointer-events: auto;
827
+ visibility: visible;
828
+ }
829
+
830
+ .boot-loading-svg {
831
+ color: var(--shadow-claw-text-secondary);
832
+ height: 4.5rem;
833
+ opacity: 0.85;
834
+ transition: color var(--shadow-claw-duration-min) var(--shadow-claw-ease-out);
835
+ width: 4.5rem;
836
+ }
837
+
838
+ .boot-loading-text {
839
+ color: var(--shadow-claw-text-secondary);
840
+ font-size: var(--shadow-claw-font-size-sm);
841
+ font-weight: 600;
842
+ letter-spacing: 0.075em;
843
+ margin-top: 1.25rem;
844
+ text-transform: uppercase;
845
+ }
846
+
847
+ @keyframes skeleton-pulse {
848
+ 0% {
849
+ background-position: 200% 0;
850
+ }
851
+
852
+ 100% {
853
+ background-position: -200% 0;
854
+ }
855
+ }
856
+ `);const $=new DOMParser().parseFromString(`<template>
857
+ <div class="app">
858
+ <!-- Header -->
859
+ <header class="header">
860
+ <button aria-label="Open menu" title="Open menu" id="menu-button">
861
+ <svg
862
+ height="1.5rem"
863
+ fill="currentColor"
864
+ viewBox="0 -960 960 960"
865
+ width="1.5rem"
866
+ xmlns="http://www.w3.org/2000/svg"
867
+ >
868
+ <path d="M120-680v-80h720v80zm0 480v-80h720v80zm0-240v-80h720v80z" />
869
+ </svg>
870
+ </button>
871
+ <h1>
872
+ <slot name="header-title-link"></slot>
873
+ <div class="header-actions">
874
+ <button
875
+ aria-label="Toggle theme"
876
+ title="Toggle theme"
877
+ class="theme-toggle theme-mode-toggle"
878
+ >
879
+ <svg
880
+ class="sun-icon"
881
+ height="1.5rem"
882
+ fill="currentColor"
883
+ hidden
884
+ viewBox="0 -960 960 960"
885
+ width="1.5rem"
886
+ xmlns="http://www.w3.org/2000/svg"
887
+ >
888
+ <path
889
+ d="M480-360q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35zm0 80q-83 0-141.5-58.5T280-480q0-83 58.5-141.5T480-680q83 0 141.5 58.5T680-480q0 83-58.5 141.5T480-280zM200-440H40v-80h160v80zm720 0H760v-80h160v80zM440-760v-160h80v160h-80zm0 720v-160h80v160h-80zM256-650l-101-97 57-59 96 100-52 56zm492 496-97-101 53-55 101 97-57 59zm-98-550 97-101 59 57-101 97-55-53zM158-190l97-101 55 53-101 97-51-49z"
890
+ />
891
+ </svg>
892
+ <svg
893
+ class="moon-icon"
894
+ height="1.5rem"
895
+ fill="currentColor"
896
+ viewBox="0 -960 960 960"
897
+ width="1.5rem"
898
+ xmlns="http://www.w3.org/2000/svg"
899
+ >
900
+ <path
901
+ d="M480-120q-150 0-255-105T120-480q0-150 105-255t255-105q14 0 27.5 1t26.5 3q-41 29-65.5 75.5T444-660q0 90 63 153t153 63q52 0 99-24.5t75-65.5q2 13 3 26.5t1 27.5q0 150-105 255T480-120zm0-80q88 0 158-48.5T740-375q-20 5-40 8t-40 3q-123 0-209.5-86.5T364-660q0-20 3-40t8-40q-74 30-122.5 100T204-480q0 116 82 198t194 82zm-12-274z"
902
+ />
903
+ </svg>
904
+ </button>
905
+ <button
906
+ aria-label="Hide action header"
907
+ title="Hide action header"
908
+ aria-pressed="false"
909
+ class="theme-toggle header-main-toggle"
910
+ type="button"
911
+ >
912
+ <svg
913
+ height="1.5rem"
914
+ fill="currentColor"
915
+ viewBox="0 -960 960 960"
916
+ width="1.5rem"
917
+ xmlns="http://www.w3.org/2000/svg"
918
+ >
919
+ <path
920
+ d="M280-200h400v-80H280v80Zm200-200L280-600l56-56 104 104v-328h80v328l104-104 56 56-200 200Z"
921
+ />
922
+ </svg>
923
+ </button>
924
+ <button
925
+ aria-label="Hide activity log"
926
+ title="Hide activity log"
927
+ aria-pressed="false"
928
+ class="theme-toggle activity-log-toggle"
929
+ type="button"
930
+ hidden
931
+ >
932
+ <svg
933
+ xmlns="http://www.w3.org/2000/svg"
934
+ height="24px"
935
+ viewBox="0 -960 960 960"
936
+ width="24px"
937
+ fill="currentColor"
938
+ >
939
+ <path
940
+ d="M80-600v-160q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v160h-80v-160H160v160H80Zm80 360q-33 0-56.5-23.5T80-320v-200h80v200h640v-200h80v200q0 33-23.5 56.5T800-240H160ZM40-120v-80h880v80H40Zm440-420ZM80-520v-80h240q11 0 21 6t15 16l47 93 123-215q5-9 14-14.5t20-5.5q11 0 21 5.5t15 16.5l49 98h235v80H620q-11 0-21-5.5T584-542l-26-53-123 215q-5 10-15 15t-21 5q-11 0-20.5-6T364-382l-69-138H80Z"
941
+ />
942
+ </svg>
943
+ </button>
944
+ <button
945
+ aria-label="Hide WebVM terminal"
946
+ title="Hide WebVM terminal"
947
+ aria-pressed="true"
948
+ class="theme-toggle webvm-toggle"
949
+ type="button"
950
+ hidden
951
+ >
952
+ <svg
953
+ height="1.5rem"
954
+ fill="currentColor"
955
+ viewBox="0 -960 960 960"
956
+ width="1.5rem"
957
+ xmlns="http://www.w3.org/2000/svg"
958
+ >
959
+ <path
960
+ d="M320-280 120-480l200-200 56 56-104 104h568v80H272l104 104-56 56Zm320 0-56-56 104-104H120v-80h568L584-624l56-56 200 200-200 200Z"
961
+ />
962
+ </svg>
963
+ </button>
964
+ <slot name="header-actions-logo"></slot>
965
+ </div>
966
+ </h1>
967
+ </header>
968
+
969
+ <!-- Main Body -->
970
+ <div class="app-body">
971
+ <!-- Sidebar -->
972
+ <aside class="sidebar">
973
+ <div class="sidebar-boot-skeleton" aria-hidden="true">
974
+ <div class="skeleton-nav-wrapper">
975
+ <div class="skeleton-item skeleton-nav"></div>
976
+ <div class="skeleton-item skeleton-nav"></div>
977
+ <div class="skeleton-item skeleton-nav"></div>
978
+ <div class="skeleton-item skeleton-nav"></div>
979
+ </div>
980
+ <div class="skeleton-divider"></div>
981
+ <div class="skeleton-convo-wrapper">
982
+ <div class="skeleton-item skeleton-convo"></div>
983
+ <div class="skeleton-item skeleton-convo"></div>
984
+ <div class="skeleton-item skeleton-convo"></div>
985
+ </div>
986
+ </div>
987
+
988
+ <nav>
989
+ <ul class="nav-menu">
990
+ <li class="nav-item active" data-page="pages">📚 Pages</li>
991
+ <li class="nav-item" data-page="chat">💬 Chat</li>
992
+ <li class="nav-item" data-page="tasks">&nbsp;✓&nbsp;Tasks</li>
993
+ <li class="nav-item" data-page="files">📁 Files</li>
994
+ </ul>
995
+ </nav>
996
+ <slot name="sidebar-nav"></slot>
997
+ <slot name="sidebar"></slot>
998
+ <slot name="sidebar-content"></slot>
999
+ <div class="sidebar-spacer"></div>
1000
+ <shadow-claw-conversations></shadow-claw-conversations>
1001
+ <slot name="sidebar-footer"></slot>
1002
+ <div class="sidebar-footer">
1003
+ <button class="settings-btn" data-action="show-settings">
1004
+ ⚙️ Settings
1005
+ </button>
1006
+ </div>
1007
+ </aside>
1008
+ <div class="sidebar-resize-handle" title="Drag to resize sidebar"></div>
1009
+
1010
+ <!-- Main Content -->
1011
+ <main class="main-content">
1012
+ <div class="main-content-boot-skeleton" aria-hidden="true">
1013
+ <svg
1014
+ class="boot-loading-svg"
1015
+ viewBox="0 0 44 44"
1016
+ xmlns="http://www.w3.org/2000/svg"
1017
+ >
1018
+ <g
1019
+ fill="none"
1020
+ fill-rule="evenodd"
1021
+ stroke-width="2"
1022
+ stroke="currentColor"
1023
+ >
1024
+ <circle cx="22" cy="22" r="1">
1025
+ <animate
1026
+ attributeName="r"
1027
+ begin="0s"
1028
+ dur="1.8s"
1029
+ values="1; 20"
1030
+ calcMode="spline"
1031
+ keyTimes="0; 1"
1032
+ keySplines="0.165, 0.84, 0.44, 1"
1033
+ repeatCount="indefinite"
1034
+ />
1035
+ <animate
1036
+ attributeName="stroke-opacity"
1037
+ begin="0s"
1038
+ dur="1.8s"
1039
+ values="1; 0"
1040
+ calcMode="spline"
1041
+ keyTimes="0; 1"
1042
+ keySplines="0.3, 0.61, 0.355, 1"
1043
+ repeatCount="indefinite"
1044
+ />
1045
+ </circle>
1046
+ <circle cx="22" cy="22" r="1">
1047
+ <animate
1048
+ attributeName="r"
1049
+ begin="-0.9s"
1050
+ dur="1.8s"
1051
+ values="1; 20"
1052
+ calcMode="spline"
1053
+ keyTimes="0; 1"
1054
+ keySplines="0.165, 0.84, 0.44, 1"
1055
+ repeatCount="indefinite"
1056
+ />
1057
+ <animate
1058
+ attributeName="stroke-opacity"
1059
+ begin="-0.9s"
1060
+ dur="1.8s"
1061
+ values="1; 0"
1062
+ calcMode="spline"
1063
+ keyTimes="0; 1"
1064
+ keySplines="0.3, 0.61, 0.355, 1"
1065
+ repeatCount="indefinite"
1066
+ />
1067
+ </circle>
1068
+ </g>
1069
+ </svg>
1070
+ <div class="boot-loading-text">Preparing workspace...</div>
1071
+ </div>
1072
+
1073
+ <!-- Chat Page — element stamped on first navigation via showPage() -->
1074
+ <div class="page chat-page" data-page-id="chat"></div>
1075
+
1076
+ <!-- Tasks Page — element stamped on first navigation via showPage() -->
1077
+ <div class="page" data-page-id="tasks"></div>
1078
+
1079
+ <!-- Files Page — element stamped on first navigation via showPage() -->
1080
+ <div class="page" data-page-id="files"></div>
1081
+
1082
+ <!-- Pages Page — pre-stamped: this is the default landing route -->
1083
+ <div class="page active" data-page-id="pages">
1084
+ <shadow-claw-pages></shadow-claw-pages>
1085
+ </div>
1086
+
1087
+ <!-- Settings Page — element stamped on first navigation via showPage() -->
1088
+ <div class="page" data-page-id="settings"></div>
1089
+
1090
+ <!-- Tools Config Page — element stamped on first navigation via showPage() -->
1091
+ <div class="page" data-page-id="tools"></div>
1092
+
1093
+ <!-- Channels Config Page — element stamped on first navigation via showPage() -->
1094
+ <div class="page" data-page-id="channels"></div>
1095
+
1096
+ <!-- Chat Split View Resize Handle -->
1097
+ <div
1098
+ class="chat-split-resize-handle"
1099
+ title="Drag to resize chat panel"
1100
+ hidden
1101
+ ></div>
1102
+
1103
+ <!-- file-viewer is stamped lazily by setupEffects when a file is opened -->
1104
+ <shadow-claw-toast></shadow-claw-toast>
1105
+ </main>
1106
+ </div>
1107
+
1108
+ <shadow-claw-dialog
1109
+ dialog-class="app-dialog"
1110
+ dialog-aria-labelledby="appDialogTitle"
1111
+ >
1112
+ <form
1113
+ method="dialog"
1114
+ class="app-confirm-dialog__form"
1115
+ toolname="app_dialog_confirm"
1116
+ tooldescription="Confirm or cancel an application modal dialog prompt"
1117
+ >
1118
+ <h2 id="appDialogTitle" class="app-dialog__title">Confirm</h2>
1119
+ <p class="app-dialog__message"></p>
1120
+ <ul class="app-dialog__details" hidden></ul>
1121
+ <div class="app-dialog__links" hidden></div>
1122
+ <p
1123
+ class="app-dialog__countdown"
1124
+ hidden
1125
+ role="status"
1126
+ aria-live="polite"
1127
+ aria-atomic="true"
1128
+ ></p>
1129
+ <div class="app-confirm-dialog__actions">
1130
+ <button
1131
+ type="submit"
1132
+ value="cancel"
1133
+ class="app-dialog__btn app-dialog__btn--cancel"
1134
+ >
1135
+ Cancel
1136
+ </button>
1137
+ <button
1138
+ type="submit"
1139
+ value="confirm"
1140
+ class="app-dialog__btn app-dialog__btn--confirm"
1141
+ >
1142
+ Confirm
1143
+ </button>
1144
+ </div>
1145
+ </form>
1146
+ </shadow-claw-dialog>
1147
+
1148
+ <shadow-claw-dialog
1149
+ dialog-class="app-dialog app-prompt-dialog"
1150
+ dialog-aria-labelledby="appPromptTitle"
1151
+ >
1152
+ <form
1153
+ method="dialog"
1154
+ class="app-prompt-dialog__form"
1155
+ toolname="app_dialog_prompt"
1156
+ tooldescription="Submit user response or selection to an interactive dialog prompt"
1157
+ >
1158
+ <h2 id="appPromptTitle" class="app-prompt-dialog__title">
1159
+ Agent Question
1160
+ </h2>
1161
+ <p class="app-prompt-dialog__message"></p>
1162
+
1163
+ <div class="app-prompt-dialog__input-area">
1164
+ <!-- Will be populated dynamically with either a select or text input -->
1165
+ </div>
1166
+
1167
+ <div class="app-prompt-dialog__actions">
1168
+ <button
1169
+ type="submit"
1170
+ value="submit"
1171
+ class="app-dialog__btn app-dialog__btn--confirm app-prompt-dialog__submit"
1172
+ >
1173
+ Submit
1174
+ </button>
1175
+ </div>
1176
+ </form>
1177
+ </shadow-claw-dialog>
1178
+ </div>
1179
+ </template>
1180
+ `,`text/html`),lt=$.querySelector(`template`);let ut=[];ut=lt?Array.from(lt.content.children):Array.from($.head.children).concat(Array.from($.body.children));var dt=ut;const ft=`shadow-claw`;var pt=class extends fe{static styles=ct;static template=dt;activityLogCollapsedOverride=null;appLifecycleCleanup=null;chatSidebarHidden=!1;chatSplitViewEnabled=!1;currentPage=v.sidebarDefaultPage;db=null;fallbackClickListenerAttached=!1;filesSidebarHidden=!1;headerMainCollapsedOverride=null;navigationListenerAttached=!1;orchestrator;pagesSidebarHidden=!1;popstateListener=null;previousOrchestratorState=`idle`;tasksSidebarHidden=!1;terminalElement=null;terminalPlacementFrame=null;terminalVisible=!1;vmStatus={ready:!1,booting:!1,bootAttempted:!1,error:null};vmStatusCleanup=null;constructor(){super()}async connectedCallback(){if(!this.shadowRoot)throw Error(`shadowRoot not found`);await f();try{let{Orchestrator:e}=await import(`./orchestrator-a9047bGu.js`);await f();let t=()=>{Promise.all([import(`./shadow-claw-conversations-BCBGtS30.js`),import(`./shadow-claw-dialog-BVGf_c3S.js`),import(`./shadow-claw-toast-BmcOhMgX.js`)]).catch(console.error)};typeof window<`u`&&`requestIdleCallback`in window?window.requestIdleCallback(t):setTimeout(t,200),await f(),this.orchestrator||=new e,this.db=await this.orchestrator.init(),await f(),await v.init(this.db,this.orchestrator),c(this.db),await f(),await this.render(),await f();let n=v.activePage===`pages`&&this.pagesSidebarHidden||v.activePage===`chat`&&this.chatSidebarHidden||v.activePage===`tasks`&&this.tasksSidebarHidden||v.activePage===`files`&&this.filesSidebarHidden;if(v.hadPersistedActivePage&&!n?H(this.shadowRoot,this,this.db,v,v.activePage,!1):n?H(this.shadowRoot,this,this.db,v,M(v,this),!1):H(this.shadowRoot,this,this.db,v,v.activePage,!1),await G(this.shadowRoot,this,this.db,w,v,new URL(window.location.href)),await Qe(this.shadowRoot,this,this.db,this.orchestrator),await ot(window,this.shadowRoot,this,this.db,this.orchestrator,v),await at(window,this.shadowRoot,this,v,w,this.db,new URL(window.location.href)),console.log(`ShadowClaw UI initialized`),typeof customElements<`u`&&await customElements.whenDefined(`shadow-claw-${this.currentPage}`),this.currentPage===`pages`){let e=this.shadowRoot?.querySelector(`shadow-claw-pages`);e&&typeof e.renderSelectedPage==`function`&&!e.renderedKey&&await e.renderSelectedPage()}let{isMemoryStorageFallbackActive:r}=await import(`./memory-storage-BXMAJJV7.js`).then(e=>e.n);if(r()){let{showWarning:e}=await import(`./toast-CtIuHprH.js`).then(e=>e.c);e(`Private Browsing / Limited Storage: Operating in temporary in-memory mode. Files and changes will not persist across page reloads.`,7e3)}v.setReady()}finally{Be(document)}}disconnectedCallback(){if(super.disconnectedCallback(),this.vmStatusCleanup&&=(this.vmStatusCleanup(),null),this.appLifecycleCleanup&&=(this.appLifecycleCleanup(),null),this.terminalPlacementFrame!==null&&(cancelAnimationFrame(this.terminalPlacementFrame),this.terminalPlacementFrame=null),document.removeEventListener(`shadow-claw-navigate`,this.shadowClawNav),this.popstateListener&&=(window.removeEventListener(`popstate`,this.popstateListener),null),this.fallbackClickListenerAttached&&=(document.removeEventListener(`click`,this.fallbackClickListener),!1),this.navigationListenerAttached){let e=window.navigation;e&&typeof e.removeEventListener==`function`&&e.removeEventListener(`navigate`,this.handleNavigationApiNavigate),this.navigationListenerAttached=!1}}addCleanup(e){super.addCleanup(e)}fallbackClickListener=e=>{if(typeof window>`u`||!window.location)return;let t=Ve(window.location,e);t&&(qe(globalThis.history,t,{replace:!1,useTrailingSlash:!1}),G(this.shadowRoot,this,this.db,w,v,new URL(window.location.href)))};handleNavigationApiNavigate=e=>{let{parsedUrl:t,navigateEvent:n}=we(this.db,e)??{};t&&n&&typeof n.intercept==`function`&&n.intercept({handler:async()=>{let{parseRouteFromUrlAsync:e}=await import(`./app-routes-H23VN-4O.js`).then(e=>e.t),n=await e(t,v.activeGroupId);n&&await W(this.shadowRoot,this,this.db,w,v,n)}})};shadowClawNav=e=>{this.shadowRoot&&this.db&&Xe(this.shadowRoot,this,this.db,w,v,e)};async render(){if(ze(window,document,this.shadowRoot,this,this.db,v,w,he,new URL(window.location.href)),await Ze(this.shadowRoot,this,v,this.db),this.db)try{let{getConfig:e}=await import(`./get-config-Bkvl__ZS.js`).then(e=>e.n),{isTruthyConfigValue:t}=await import(`./parse-boolean-config-BigJ9U46.js`).then(e=>e.r),{CONFIG_KEYS:n}=await import(`./config-y_2Fg77m.js`).then(e=>e.k),r=await e(this.db,n.CHAT_SPLIT_VIEW_ENABLED);this.chatSplitViewEnabled=t(r)}catch{this.chatSplitViewEnabled=!1}let e=this.shadowRoot?.querySelector(`.chat-split-resize-handle`);if(this.shadowRoot&&e instanceof HTMLElement){let{initChatSplitResize:t}=await import(`./init-chat-split-resize-B3imbCxV.js`);await t(this.shadowRoot,this,e,this.db)}this.terminalElement=document.createElement(`shadow-claw-terminal`),this.terminalElement&&(this.terminalElement.orchestrator=this.orchestrator),z(this.shadowRoot,this.currentPage,this.terminalVisible,this.vmStatus),F(this.shadowRoot,this.currentPage,this.terminalElement,this.terminalVisible,this.terminalPlacementFrame),I(this.shadowRoot,this.headerMainCollapsedOverride),R(this.shadowRoot,this.headerMainCollapsedOverride),L(this.shadowRoot,this.currentPage,v.activityLog.length);let t=e=>{this.vmStatus=e,e.error&&this.terminalVisible&&(this.terminalVisible=!1,this.terminalElement&&(this.terminalElement.hidden=!0),F(this.shadowRoot,this.currentPage,this.terminalElement,this.terminalVisible,this.terminalPlacementFrame)),z(this.shadowRoot,this.currentPage,this.terminalVisible,this.vmStatus)};this.vmStatus=this.orchestrator.vmStatus||this.vmStatus,z(this.shadowRoot,this.currentPage,this.terminalVisible,this.vmStatus),this.orchestrator.events.on?.(`vm-status`,t),this.vmStatusCleanup=()=>{this.orchestrator.events.off?.(`vm-status`,t)},this.orchestrator.events.on(`open-file`,e=>We(this.db,v,w,e)),this.orchestrator.events.on(`provider-help`,e=>Ge(document,this.shadowRoot,e)),this.orchestrator.events.on(`room-invite`,e=>Ke(document,this.shadowRoot,this,this.db,v,e)),this.orchestrator.events.on(`ask-user`,e=>Ue(document,this.shadowRoot,this,e)),st(this.shadowRoot,this,this.db,v)}async requestDialog(e){return X(document,this.shadowRoot,e)}};customElements.get(ft)||customElements.define(ft,pt);