shadow-claw 1.59.6 → 1.59.7

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 (324) hide show
  1. package/.well-known/mcp/server-card.json +12 -4
  2. package/.well-known/mcp.json +12 -4
  3. package/dist/cli/build/build.js +1 -1
  4. package/dist/cli/{chunk-DM4xsTry.js → chunk-3vNYrs_L.js} +1 -1
  5. package/dist/cli/{chunk-Ctg5L55n.js → chunk-66BvqAV0.js} +1 -1
  6. package/dist/cli/{chunk-Bq38OubR.js → chunk-B0qusANw.js} +1 -1
  7. package/dist/cli/{chunk-yiVdvGCJ.js → chunk-B3TrWbca.js} +7 -7
  8. package/dist/cli/{chunk-C8DBACtx.js → chunk-B88Z8T_9.js} +1 -1
  9. package/dist/cli/chunk-BCjL0JXf.js +1 -0
  10. package/dist/cli/chunk-BNcu1oiT.js +1 -0
  11. package/dist/cli/{chunk-gvNsvav0.js → chunk-C5ypckWC.js} +7 -7
  12. package/dist/cli/{chunk-Dw8GndPD.js → chunk-CAAeGOdy.js} +1 -1
  13. package/dist/cli/chunk-CFxww5Yz.js +1 -0
  14. package/dist/cli/chunk-CGIgtL6R.js +1 -0
  15. package/dist/cli/{chunk-DJqHK-qS.js → chunk-CQaCgswD.js} +7 -7
  16. package/dist/cli/chunk-CZdCRqNe.js +7 -0
  17. package/dist/cli/chunk-CafdvLx-.js +1 -0
  18. package/dist/cli/{chunk-Bc_weULz.js → chunk-CncW6_WL.js} +1 -1
  19. package/dist/cli/chunk-DDvuLVfW.js +1 -0
  20. package/dist/cli/{chunk-Cq_kQohv.js → chunk-DMs7kREC.js} +1 -1
  21. package/dist/cli/{chunk-CX2itile.js → chunk-D_te8ufL.js} +1 -1
  22. package/dist/cli/{chunk-3wTukVof.js → chunk-DhOU6GYX.js} +1 -1
  23. package/dist/cli/chunk-Dhap1VwA.js +1 -0
  24. package/dist/cli/chunk-DwvavohW.js +1 -0
  25. package/dist/cli/{chunk-DLde6nuO.js → chunk-SRBRVorc.js} +1 -1
  26. package/dist/cli/{chunk-D3y7h9Xe.js → chunk-SxK79JmB.js} +1 -1
  27. package/dist/cli/chunk-_a0CkUNS.js +139 -0
  28. package/dist/cli/{chunk-C9o6lXP3.js → chunk-hVf839t7.js} +1 -1
  29. package/dist/cli/chunk-iB8OoMmW.js +7 -0
  30. package/dist/cli/cli.js +1 -1
  31. package/dist/headless-agent.js +1 -1
  32. package/dist/lib/{app-routes-DJdIjp2V.js → app-routes-BXiRvlNl.js} +7 -25
  33. package/dist/lib/{app-routes-DJdIjp2V.js.map → app-routes-BXiRvlNl.js.map} +1 -1
  34. package/dist/lib/{attachment-capabilities-Dbb-4ZP5.js → attachment-capabilities-BjkEPip8.js} +2 -2
  35. package/dist/lib/{attachment-capabilities-Dbb-4ZP5.js.map → attachment-capabilities-BjkEPip8.js.map} +1 -1
  36. package/dist/lib/{channel-Dlru5ofR.js → channel-mmdGzPkT.js} +3 -3
  37. package/dist/lib/{channel-Dlru5ofR.js.map → channel-mmdGzPkT.js.map} +1 -1
  38. package/dist/lib/{chat-template-BuuLY8l7.js → chat-template-DPEKGJhB.js} +2 -2
  39. package/dist/lib/{chat-template-BuuLY8l7.js.map → chat-template-DPEKGJhB.js.map} +1 -1
  40. package/dist/lib/{compact-context-BtR55YPU.js → compact-context-CY9BBlUQ.js} +19 -19
  41. package/dist/lib/{compact-context-BtR55YPU.js.map → compact-context-CY9BBlUQ.js.map} +1 -1
  42. package/dist/lib/components/common/shadow-claw-provider-model-picker.js +1 -1
  43. package/dist/lib/components/index.js +27 -27
  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-a2ui.js +1 -1
  58. package/dist/lib/components/shadow-claw-accounts.js +1 -1
  59. package/dist/lib/components/shadow-claw-channel-config.js +1 -1
  60. package/dist/lib/components/shadow-claw-channels.js +1 -1
  61. package/dist/lib/components/shadow-claw-chat.js +1 -1
  62. package/dist/lib/components/shadow-claw-control-plane.js +1 -1
  63. package/dist/lib/components/shadow-claw-conversations.js +1 -1
  64. package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
  65. package/dist/lib/components/shadow-claw-files.js +1 -1
  66. package/dist/lib/components/shadow-claw-git.js +1 -1
  67. package/dist/lib/components/shadow-claw-integrations.js +1 -1
  68. package/dist/lib/components/shadow-claw-llm.js +1 -1
  69. package/dist/lib/components/shadow-claw-mcp-remote.js +1 -1
  70. package/dist/lib/components/shadow-claw-networking.js +1 -1
  71. package/dist/lib/components/shadow-claw-notifications.js +1 -1
  72. package/dist/lib/components/shadow-claw-page-header.js +1 -1
  73. package/dist/lib/components/shadow-claw-pages.js +1 -1
  74. package/dist/lib/components/shadow-claw-peerjs.js +1 -1
  75. package/dist/lib/components/shadow-claw-provider-model-picker.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/{config-DxNI3TlW.js → config-BrHR97zt.js} +2 -2
  85. package/dist/lib/{config-DxNI3TlW.js.map → config-BrHR97zt.js.map} +1 -1
  86. package/dist/lib/{configure-peer-js-ChDhOZU4.js → configure-peer-js-ccNvax2N.js} +3 -3
  87. package/dist/lib/{configure-peer-js-ChDhOZU4.js.map → configure-peer-js-ccNvax2N.js.map} +1 -1
  88. package/dist/lib/{connections-DC4NZkJE.js → connections-C1FWsBsE.js} +2 -2
  89. package/dist/lib/{connections-DC4NZkJE.js.map → connections-C1FWsBsE.js.map} +1 -1
  90. package/dist/lib/{credentials-5vpz0XPk.js → credentials-CZbngHXW.js} +2 -2
  91. package/dist/lib/{credentials-5vpz0XPk.js.map → credentials-CZbngHXW.js.map} +1 -1
  92. package/dist/lib/{discover-skills-CD0sKvAI.js → discover-skills-OwlQ2sXA.js} +13 -13
  93. package/dist/lib/{discover-skills-CD0sKvAI.js.map → discover-skills-OwlQ2sXA.js.map} +1 -1
  94. package/dist/lib/{download-group-file-Dk3qaxhJ.js → download-group-file-D0wgg10Q.js} +2 -2
  95. package/dist/lib/{download-group-file-Dk3qaxhJ.js.map → download-group-file-D0wgg10Q.js.map} +1 -1
  96. package/dist/lib/{file-viewer-B4pRW-_G.js → file-viewer-DOfvX6yy.js} +5 -5
  97. package/dist/lib/{file-viewer-B4pRW-_G.js.map → file-viewer-DOfvX6yy.js.map} +1 -1
  98. package/dist/lib/{get-or-create-subscriber-id-HCcgDEPz.js → get-or-create-subscriber-id-wyzaML7Z.js} +2 -2
  99. package/dist/lib/{get-or-create-subscriber-id-HCcgDEPz.js.map → get-or-create-subscriber-id-wyzaML7Z.js.map} +1 -1
  100. package/dist/lib/{git-B3Q1euc5.js → git-D2J_j9X9.js} +5 -5
  101. package/dist/lib/{git-B3Q1euc5.js.map → git-D2J_j9X9.js.map} +1 -1
  102. package/dist/lib/{iframe-bridge-scripts-D8iuFhUk.js → iframe-bridge-scripts-Dx825LLG.js} +2 -2
  103. package/dist/lib/{iframe-bridge-scripts-D8iuFhUk.js.map → iframe-bridge-scripts-Dx825LLG.js.map} +1 -1
  104. package/dist/lib/index.js +28 -28
  105. package/dist/lib/{init-chat-split-resize-B0ODULx9.js → init-chat-split-resize-Cc0bd2z9.js} +2 -2
  106. package/dist/lib/{init-chat-split-resize-B0ODULx9.js.map → init-chat-split-resize-Cc0bd2z9.js.map} +1 -1
  107. package/dist/lib/{init-control-plane-C1FRRmjC.js → init-control-plane-B7blDVIE.js} +15 -15
  108. package/dist/lib/{init-control-plane-C1FRRmjC.js.map → init-control-plane-B7blDVIE.js.map} +1 -1
  109. package/dist/lib/{invoke-agent-CzN7sVh-.js → invoke-agent-SxvudiDT.js} +11 -11
  110. package/dist/lib/{invoke-agent-CzN7sVh-.js.map → invoke-agent-SxvudiDT.js.map} +1 -1
  111. package/dist/lib/{markdown-mbNo7cV3.js → markdown--6vTAPEH.js} +2 -2
  112. package/dist/lib/{markdown-mbNo7cV3.js.map → markdown--6vTAPEH.js.map} +1 -1
  113. package/dist/lib/{mcp-reconnect-3T7yWGEY.js → mcp-reconnect-BeqQvNWO.js} +3 -3
  114. package/dist/lib/{mcp-reconnect-3T7yWGEY.js.map → mcp-reconnect-BeqQvNWO.js.map} +1 -1
  115. package/dist/lib/{model-ranking-DGNSWYwN.js → model-ranking-BhsJV7vb.js} +2 -2
  116. package/dist/lib/{model-ranking-DGNSWYwN.js.map → model-ranking-BhsJV7vb.js.map} +1 -1
  117. package/dist/lib/{move-group-entry-NMTJ59M9.js → move-group-entry-DDpjxa10.js} +5 -5
  118. package/dist/lib/{move-group-entry-NMTJ59M9.js.map → move-group-entry-DDpjxa10.js.map} +1 -1
  119. package/dist/lib/{orchestrator-B8FV1V7x.js → orchestrator-C7fkh7T7.js} +24 -24
  120. package/dist/lib/{orchestrator-B8FV1V7x.js.map → orchestrator-C7fkh7T7.js.map} +1 -1
  121. package/dist/lib/{orchestrator-i_QJ-o22.js → orchestrator-CCARkxQC.js} +11 -11
  122. package/dist/lib/orchestrator-CCARkxQC.js.map +1 -0
  123. package/dist/lib/{parse-path-DPCn-HwI.js → parse-path-BOHQP_IQ.js} +3 -3
  124. package/dist/lib/{parse-path-DPCn-HwI.js.map → parse-path-BOHQP_IQ.js.map} +1 -1
  125. package/dist/lib/{peerjs-z5zeioPV.js → peerjs-Bfw_FWLB.js} +8 -8
  126. package/dist/lib/{peerjs-z5zeioPV.js.map → peerjs-Bfw_FWLB.js.map} +1 -1
  127. package/dist/lib/{process-peer-query-param-CJp7w7AU.js → process-peer-query-param-BxYiZNdf.js} +5 -5
  128. package/dist/lib/{process-peer-query-param-CJp7w7AU.js.map → process-peer-query-param-BxYiZNdf.js.map} +1 -1
  129. package/dist/lib/{process-pending-shared-payloads-B6_TlBFA.js → process-pending-shared-payloads-DPIbwRb3.js} +4 -4
  130. package/dist/lib/{process-pending-shared-payloads-B6_TlBFA.js.map → process-pending-shared-payloads-DPIbwRb3.js.map} +1 -1
  131. package/dist/lib/{process-room-query-param-C3FFGGn6.js → process-room-query-param-B2_d50nE.js} +4 -4
  132. package/dist/lib/{process-room-query-param-C3FFGGn6.js.map → process-room-query-param-B2_d50nE.js.map} +1 -1
  133. package/dist/lib/{provider-DcQZypu5.js → provider-BC9KPI14.js} +3 -3
  134. package/dist/lib/{provider-DcQZypu5.js.map → provider-BC9KPI14.js.map} +1 -1
  135. package/dist/lib/{push-client-Cx5rMs6J.js → push-client-rrjTdc-U.js} +5 -5
  136. package/dist/lib/{push-client-Cx5rMs6J.js.map → push-client-rrjTdc-U.js.map} +1 -1
  137. package/dist/lib/{read-group-file-bytes-CXOG_YyM.js → read-group-file-bytes-UQIk1eJG.js} +2 -2
  138. package/dist/lib/{read-group-file-bytes-CXOG_YyM.js.map → read-group-file-bytes-UQIk1eJG.js.map} +1 -1
  139. package/dist/lib/{rooms-CwlkYLDU.js → rooms-bwGoYb1q.js} +2 -2
  140. package/dist/lib/{rooms-CwlkYLDU.js.map → rooms-bwGoYb1q.js.map} +1 -1
  141. package/dist/lib/{shadow-claw-DoQ7fgl5.js → shadow-claw-CypGVlVO.js} +17 -20
  142. package/dist/lib/shadow-claw-CypGVlVO.js.map +1 -0
  143. package/dist/lib/{shadow-claw-a2ui-Br6qJMs1.js → shadow-claw-a2ui-lG0vQbW8.js} +2 -2
  144. package/dist/lib/{shadow-claw-a2ui-Br6qJMs1.js.map → shadow-claw-a2ui-lG0vQbW8.js.map} +1 -1
  145. package/dist/lib/{shadow-claw-accounts-BTDILfWw.js → shadow-claw-accounts-CkqyCxwp.js} +3 -3
  146. package/dist/lib/{shadow-claw-accounts-BTDILfWw.js.map → shadow-claw-accounts-CkqyCxwp.js.map} +1 -1
  147. package/dist/lib/{shadow-claw-channel-config-IKiL34tI.js → shadow-claw-channel-config-DJpDovkF.js} +4 -4
  148. package/dist/lib/{shadow-claw-channel-config-IKiL34tI.js.map → shadow-claw-channel-config-DJpDovkF.js.map} +1 -1
  149. package/dist/lib/{shadow-claw-channels-JgEzuHWK.js → shadow-claw-channels-DJLwRovH.js} +3 -3
  150. package/dist/lib/{shadow-claw-channels-JgEzuHWK.js.map → shadow-claw-channels-DJLwRovH.js.map} +1 -1
  151. package/dist/lib/{shadow-claw-chat-SGUDT31r.js → shadow-claw-chat-B92cPaft.js} +15 -15
  152. package/dist/lib/{shadow-claw-chat-SGUDT31r.js.map → shadow-claw-chat-B92cPaft.js.map} +1 -1
  153. package/dist/lib/{shadow-claw-control-plane-CRWFZ3vD.js → shadow-claw-control-plane-fvn-qyHj.js} +7 -7
  154. package/dist/lib/{shadow-claw-control-plane-CRWFZ3vD.js.map → shadow-claw-control-plane-fvn-qyHj.js.map} +1 -1
  155. package/dist/lib/{shadow-claw-conversations-D23GJ7qo.js → shadow-claw-conversations-CsVyDOny.js} +7 -7
  156. package/dist/lib/{shadow-claw-conversations-D23GJ7qo.js.map → shadow-claw-conversations-CsVyDOny.js.map} +1 -1
  157. package/dist/lib/{shadow-claw-file-viewer-C1V8WTiU.js → shadow-claw-file-viewer-DFfyP7s5.js} +10 -10
  158. package/dist/lib/{shadow-claw-file-viewer-C1V8WTiU.js.map → shadow-claw-file-viewer-DFfyP7s5.js.map} +1 -1
  159. package/dist/lib/{shadow-claw-files-DN7irmE1.js → shadow-claw-files-cT6HL7ye.js} +11 -11
  160. package/dist/lib/{shadow-claw-files-DN7irmE1.js.map → shadow-claw-files-cT6HL7ye.js.map} +1 -1
  161. package/dist/lib/{shadow-claw-git-D-1oIh65.js → shadow-claw-git-Cv9mQgTx.js} +6 -6
  162. package/dist/lib/{shadow-claw-git-D-1oIh65.js.map → shadow-claw-git-Cv9mQgTx.js.map} +1 -1
  163. package/dist/lib/{shadow-claw-integrations-CZjnm7cM.js → shadow-claw-integrations-RZZ-m-Id.js} +4 -4
  164. package/dist/lib/{shadow-claw-integrations-CZjnm7cM.js.map → shadow-claw-integrations-RZZ-m-Id.js.map} +1 -1
  165. package/dist/lib/{shadow-claw-llm-4Gefh5FN.js → shadow-claw-llm-CKOYzPDp.js} +9 -9
  166. package/dist/lib/{shadow-claw-llm-4Gefh5FN.js.map → shadow-claw-llm-CKOYzPDp.js.map} +1 -1
  167. package/dist/lib/{shadow-claw-mcp-remote-B9ssb3YV.js → shadow-claw-mcp-remote-BKFROurv.js} +4 -4
  168. package/dist/lib/{shadow-claw-mcp-remote-B9ssb3YV.js.map → shadow-claw-mcp-remote-BKFROurv.js.map} +1 -1
  169. package/dist/lib/{shadow-claw-networking-BN5BB4hb.js → shadow-claw-networking-DYfiUQaH.js} +2 -2
  170. package/dist/lib/{shadow-claw-networking-BN5BB4hb.js.map → shadow-claw-networking-DYfiUQaH.js.map} +1 -1
  171. package/dist/lib/{shadow-claw-notifications-71KARtkY.js → shadow-claw-notifications-JJlzriuX.js} +3 -3
  172. package/dist/lib/{shadow-claw-notifications-71KARtkY.js.map → shadow-claw-notifications-JJlzriuX.js.map} +1 -1
  173. package/dist/lib/{shadow-claw-page-header-DMGO-TSe.js → shadow-claw-page-header-C_Qr3xZM.js} +2 -2
  174. package/dist/lib/{shadow-claw-page-header-DMGO-TSe.js.map → shadow-claw-page-header-C_Qr3xZM.js.map} +1 -1
  175. package/dist/lib/{shadow-claw-pages-BiRM6qiA.js → shadow-claw-pages-BCo3ihZI.js} +11 -11
  176. package/dist/lib/{shadow-claw-pages-BiRM6qiA.js.map → shadow-claw-pages-BCo3ihZI.js.map} +1 -1
  177. package/dist/lib/{shadow-claw-peerjs-BZu7jNSe.js → shadow-claw-peerjs-CFNjfrY5.js} +6 -6
  178. package/dist/lib/{shadow-claw-peerjs-BZu7jNSe.js.map → shadow-claw-peerjs-CFNjfrY5.js.map} +1 -1
  179. package/dist/lib/{shadow-claw-provider-model-picker-BXYXEobD.js → shadow-claw-provider-model-picker-B-Ct4yW-.js} +2 -2
  180. package/dist/lib/{shadow-claw-provider-model-picker-BXYXEobD.js.map → shadow-claw-provider-model-picker-B-Ct4yW-.js.map} +1 -1
  181. package/dist/lib/{shadow-claw-settings-CcT5EK08.js → shadow-claw-settings-BMwne0bh.js} +7 -7
  182. package/dist/lib/{shadow-claw-settings-CcT5EK08.js.map → shadow-claw-settings-BMwne0bh.js.map} +1 -1
  183. package/dist/lib/{shadow-claw-storage-eTOpbvpi.js → shadow-claw-storage-DUY8B9m-.js} +5 -5
  184. package/dist/lib/{shadow-claw-storage-eTOpbvpi.js.map → shadow-claw-storage-DUY8B9m-.js.map} +1 -1
  185. package/dist/lib/{shadow-claw-task-server-DFImTUbw.js → shadow-claw-task-server-yWeoA3eL.js} +2 -2
  186. package/dist/lib/{shadow-claw-task-server-DFImTUbw.js.map → shadow-claw-task-server-yWeoA3eL.js.map} +1 -1
  187. package/dist/lib/{shadow-claw-tasks-BjaxsmUx.js → shadow-claw-tasks-Bg0uM15I.js} +9 -9
  188. package/dist/lib/{shadow-claw-tasks-BjaxsmUx.js.map → shadow-claw-tasks-Bg0uM15I.js.map} +1 -1
  189. package/dist/lib/{shadow-claw-terminal-C-4wreFe.js → shadow-claw-terminal-fyJPppY_.js} +2 -2
  190. package/dist/lib/{shadow-claw-terminal-C-4wreFe.js.map → shadow-claw-terminal-fyJPppY_.js.map} +1 -1
  191. package/dist/lib/{shadow-claw-tools-COdrGZJk.js → shadow-claw-tools-D0T8m3go.js} +7 -7
  192. package/dist/lib/{shadow-claw-tools-COdrGZJk.js.map → shadow-claw-tools-D0T8m3go.js.map} +1 -1
  193. package/dist/lib/{shadow-claw-webvm-sxqVjO0L.js → shadow-claw-webvm-CQvzJwKI.js} +3 -3
  194. package/dist/lib/{shadow-claw-webvm-sxqVjO0L.js.map → shadow-claw-webvm-CQvzJwKI.js.map} +1 -1
  195. package/dist/lib/{sync-web-mcp-registration-D4hdUwtv.js → sync-web-mcp-registration-BFtG_4kx.js} +6 -6
  196. package/dist/lib/{sync-web-mcp-registration-D4hdUwtv.js.map → sync-web-mcp-registration-BFtG_4kx.js.map} +1 -1
  197. package/dist/lib/{system-prompt-DT_KeYaL.js → system-prompt-bhGRLoL2.js} +7 -7
  198. package/dist/lib/{system-prompt-DT_KeYaL.js.map → system-prompt-bhGRLoL2.js.map} +1 -1
  199. package/dist/lib/{tools-Beuyh8y1.js → tools-B8OJ4sMF.js} +4 -4
  200. package/dist/lib/{tools-Beuyh8y1.js.map → tools-B8OJ4sMF.js.map} +1 -1
  201. package/dist/lib/{transformers-DydnReu4.js → transformers-BMURofG6.js} +2 -2
  202. package/dist/lib/{transformers-DydnReu4.js.map → transformers-BMURofG6.js.map} +1 -1
  203. package/dist/lib/{trusted-types-CfwZl_rr.js → trusted-types-HwsGS5Nj.js} +19 -17
  204. package/dist/lib/{trusted-types-CfwZl_rr.js.map → trusted-types-HwsGS5Nj.js.map} +1 -1
  205. package/dist/lib/{upload-group-file-BbBzjTcN.js → upload-group-file-CJpoNjEb.js} +3 -3
  206. package/dist/lib/{upload-group-file-BbBzjTcN.js.map → upload-group-file-CJpoNjEb.js.map} +1 -1
  207. package/dist/lib/utils/index.js +1 -1
  208. package/dist/lib/utils/namespaced-storage.js +1 -1
  209. package/dist/lib/utils/runtime-assets.js +1 -1
  210. package/dist/lib/utils/utils.js +1 -1
  211. package/dist/lib/{webmcp-DCfAFiIO.js → webmcp-BoMTvgmX.js} +3 -3
  212. package/dist/lib/{webmcp-DCfAFiIO.js.map → webmcp-BoMTvgmX.js.map} +1 -1
  213. package/dist/lib/{write-group-file-bytes-Ccn-VFUU.js → write-group-file-bytes-CNT7DqOZ.js} +3 -3
  214. package/dist/lib/{write-group-file-bytes-Ccn-VFUU.js.map → write-group-file-bytes-CNT7DqOZ.js.map} +1 -1
  215. package/dist/public/.well-known/mcp/server-card.json +12 -4
  216. package/dist/public/.well-known/mcp.json +12 -4
  217. package/dist/public/agent.worker.js +1 -1
  218. package/dist/public/attachment-capabilities-AdwXt3--.js +1 -0
  219. package/dist/public/{channel-BylT3rJC.js → channel-Dk7wl-Av.js} +1 -1
  220. package/dist/public/{chat-template-DPHJy7tr.js → chat-template-BwAnTFKf.js} +1 -1
  221. package/dist/public/{compact-context-BINQh64w.js → compact-context-fOTqwKF6.js} +2 -2
  222. package/dist/public/config-C16fFWtP.js +1 -0
  223. package/dist/public/{configure-peer-js-DChhcOfe.js → configure-peer-js-BOV0tR6G.js} +1 -1
  224. package/dist/public/{connections-CHaw0VqP.js → connections-Dxwj8yK_.js} +1 -1
  225. package/dist/public/{create-model-cache-fetch-DQebkoPL.js → create-model-cache-fetch-DSAFjOwc.js} +1 -1
  226. package/dist/public/{credentials-CgVqS119.js → credentials-CJUQ5Ep2.js} +1 -1
  227. package/dist/public/{custom-element-security-kiDhPfb8.js → custom-element-security-B2daIE5r.js} +2 -2
  228. package/dist/public/{discover-skills-Cvmx5I9V.js → discover-skills-D1sNTy2r.js} +6 -6
  229. package/dist/public/docs/example/article/index.html +28 -29
  230. package/dist/public/docs/example/article.html +28 -29
  231. package/dist/public/docs/publishing/index.html +28 -29
  232. package/dist/public/docs/publishing.html +28 -29
  233. package/dist/public/docs/skill-creator/index.html +28 -29
  234. package/dist/public/docs/skill-creator.html +28 -29
  235. package/dist/public/{download-group-file-BapoRgfU.js → download-group-file-BkMH-JKi.js} +1 -1
  236. package/dist/public/{e2e-bridge-C0g8vZKr.js → e2e-bridge-Cz95DLlb.js} +1 -1
  237. package/dist/public/get-group-dir-D--BiEyk.js +1 -0
  238. package/dist/public/{get-or-create-subscriber-id-GvRZYXwA.js → get-or-create-subscriber-id-jVHnQfbr.js} +1 -1
  239. package/dist/public/{git-CaAAZfVd.js → git-BmMlwIMP.js} +2 -2
  240. package/dist/public/{iframe-bridge-scripts-BnqtKhE4.js → iframe-bridge-scripts-Cibg0m6A.js} +1 -1
  241. package/dist/public/index.html +28 -29
  242. package/dist/public/index.js +1 -1
  243. package/dist/public/{init-chat-split-resize-Btonoy8u.js → init-chat-split-resize-C8AqCCiK.js} +1 -1
  244. package/dist/public/init-control-plane-Cb31yLTY.js +1 -0
  245. package/dist/public/{invoke-agent-B3Osw6K7.js → invoke-agent-CN7mSV0Z.js} +1 -1
  246. package/dist/public/main/index.html +28 -29
  247. package/dist/public/main/memory/index.html +28 -29
  248. package/dist/public/main/memory.html +28 -29
  249. package/dist/public/main.html +28 -29
  250. package/dist/public/{markdown-CPbU4r1U.js → markdown-CDSb5Hrl.js} +1 -1
  251. package/dist/public/{mcp-reconnect-CzROVsXG.js → mcp-reconnect-iPZPihwX.js} +1 -1
  252. package/dist/public/{memory-storage-BkoMlxOr.js → memory-storage-2m7KZ-aP.js} +1 -1
  253. package/dist/public/{model-ranking-CK0iBo3Z.js → model-ranking-BgOSaNIy.js} +1 -1
  254. package/dist/public/{move-group-entry-CTxoq7lw.js → move-group-entry-CXneuNVa.js} +1 -1
  255. package/dist/public/orchestrator-DBO4NZqd.js +63 -0
  256. package/dist/public/{orchestrator-BrDjQbGf.js → orchestrator-Dyylc8IU.js} +2 -2
  257. package/dist/public/{peerjs-CgF4Iz5W.js → peerjs-l0jiBoh6.js} +1 -1
  258. package/dist/public/{process-peer-query-param-BL2k0Hu-.js → process-peer-query-param-s-aSP1Rq.js} +1 -1
  259. package/dist/public/{process-pending-shared-payloads-C1AgGvn8.js → process-pending-shared-payloads-BN3GigPT.js} +1 -1
  260. package/dist/public/{process-room-query-param-DM0QCq3_.js → process-room-query-param-B2Qe0F0M.js} +1 -1
  261. package/dist/public/provider-YPZmsuHR.js +1 -0
  262. package/dist/public/{push-client-DJEOz7bi.js → push-client-B2LC8Qp9.js} +1 -1
  263. package/dist/public/{rooms-C6LXIJl4.js → rooms-ChCEOvkw.js} +1 -1
  264. package/dist/public/service-worker.js +1 -1
  265. package/dist/public/shadow-claw-Br8mWDUx.js +1176 -0
  266. package/dist/public/{shadow-claw-accounts--4hd_oCz.js → shadow-claw-accounts-Dm6G7KMP.js} +1 -1
  267. package/dist/public/{shadow-claw-card-IbNlZAdK.js → shadow-claw-card-CggS8uSa.js} +1 -1
  268. package/dist/public/{shadow-claw-channels-Vq_pPGa2.js → shadow-claw-channels-088vhuWO.js} +1 -1
  269. package/dist/public/{shadow-claw-chat-D7_GS25e.js → shadow-claw-chat-BRwRlq-n.js} +3 -3
  270. package/dist/public/{shadow-claw-control-plane-WTMEV8_p.js → shadow-claw-control-plane-rhKACK85.js} +2 -2
  271. package/dist/public/{shadow-claw-conversations-CLQgU1IT.js → shadow-claw-conversations-CF_yUfKl.js} +1 -1
  272. package/dist/public/{shadow-claw-empty-state-D4CrFGsN.js → shadow-claw-empty-state-CkpOSXCS.js} +1 -1
  273. package/dist/public/{shadow-claw-file-viewer-BhqiqLWQ.js → shadow-claw-file-viewer-DWCejuY3.js} +4 -4
  274. package/dist/public/{shadow-claw-files-senDiG9l.js → shadow-claw-files-L6_ioyzh.js} +2 -2
  275. package/dist/public/{shadow-claw-git-DOOCqY23.js → shadow-claw-git-DsdkwLqQ.js} +2 -2
  276. package/dist/public/{shadow-claw-integrations-Bsvc3Agq.js → shadow-claw-integrations-CSbRTOm3.js} +1 -1
  277. package/dist/public/{shadow-claw-llm-actYICAk.js → shadow-claw-llm-BitaeAVc.js} +2 -2
  278. package/dist/public/{shadow-claw-mcp-remote-BYUgrK3v.js → shadow-claw-mcp-remote-gSbV5riy.js} +1 -1
  279. package/dist/public/{shadow-claw-networking-Dk3p5Ny_.js → shadow-claw-networking-Dn_y6Cl9.js} +1 -1
  280. package/dist/public/{shadow-claw-notifications-CzPAlay8.js → shadow-claw-notifications-Cj4Lqx8U.js} +1 -1
  281. package/dist/public/{shadow-claw-page-header-CjJpVkyL.js → shadow-claw-page-header-DR4OZFt2.js} +1 -1
  282. package/dist/public/{shadow-claw-page-header-action-button-2DH5O1TD.js → shadow-claw-page-header-action-button-BnCV_2Kb.js} +1 -1
  283. package/dist/public/{shadow-claw-pages-3r5I-wI8.js → shadow-claw-pages-mpDOtNYj.js} +6 -6
  284. package/dist/public/{shadow-claw-pdf-viewer-BiCEwsoY.js → shadow-claw-pdf-viewer-DZ_84qJH.js} +1 -1
  285. package/dist/public/{shadow-claw-settings-DgB9RSZN.js → shadow-claw-settings-CfFTYTEy.js} +2 -2
  286. package/dist/public/{shadow-claw-storage-JB_43nd8.js → shadow-claw-storage-DLmiT4bG.js} +1 -1
  287. package/dist/public/{shadow-claw-task-server-oi5UIxdA.js → shadow-claw-task-server-BoMBCsiS.js} +1 -1
  288. package/dist/public/{shadow-claw-tasks-CnyiOt81.js → shadow-claw-tasks-ChEp1j7x.js} +3 -3
  289. package/dist/public/{shadow-claw-terminal-BC3RynHt.js → shadow-claw-terminal-BaoVbOda.js} +1 -1
  290. package/dist/public/{shadow-claw-toast-YjG--2Za.js → shadow-claw-toast-e8oz7z6Z.js} +1 -1
  291. package/dist/public/{shadow-claw-tools-Bbwk4vlT.js → shadow-claw-tools-BYjUBiJz.js} +1 -1
  292. package/dist/public/{shadow-claw-webvm-HZqzl2H5.js → shadow-claw-webvm-xGb13TME.js} +1 -1
  293. package/dist/public/{sync-web-mcp-registration-BaH2nAP0.js → sync-web-mcp-registration-CQluj-Kz.js} +1 -1
  294. package/dist/public/{system-prompt-Dck3N8T0.js → system-prompt-CTJn0tK-.js} +1 -1
  295. package/dist/public/{tools-DHA1dK2I.js → tools-D-52Zmfc.js} +1 -1
  296. package/dist/public/{transformers-C-DuTM2K.js → transformers-CQ9ss9rD.js} +1 -1
  297. package/dist/public/{upload-group-file-Cejr3zo1.js → upload-group-file-A8kB7lvO.js} +1 -1
  298. package/dist/public/{webmcp-CMRtu57-.js → webmcp-DIUZjVF5.js} +1 -1
  299. package/dist/public/{write-group-file-CmJuVQNO.js → write-group-file-R67DjJ-q.js} +1 -1
  300. package/dist/public/{write-group-file-bytes-Cejr3zo1.js → write-group-file-bytes-A8kB7lvO.js} +1 -1
  301. package/dist/public/{zip-reader-CuQ13eLe.js → zip-reader-DN7FB-Q0.js} +1 -1
  302. package/dist/server.js +1 -1
  303. package/package.json +1 -1
  304. package/dist/cli/chunk-BFziiMKt.js +0 -7
  305. package/dist/cli/chunk-BM3llsxb.js +0 -1
  306. package/dist/cli/chunk-Bj5qFsDi.js +0 -7
  307. package/dist/cli/chunk-Bj95zm-y.js +0 -1
  308. package/dist/cli/chunk-BpyP-esT.js +0 -1
  309. package/dist/cli/chunk-CX696s3_.js +0 -1
  310. package/dist/cli/chunk-DRxCrCAA.js +0 -139
  311. package/dist/cli/chunk-DjbCHa0h.js +0 -1
  312. package/dist/cli/chunk-DsQhAF31.js +0 -1
  313. package/dist/cli/chunk-VM-dECyG.js +0 -1
  314. package/dist/cli/chunk-heu2xRw1.js +0 -1
  315. package/dist/lib/orchestrator-i_QJ-o22.js.map +0 -1
  316. package/dist/lib/shadow-claw-DoQ7fgl5.js.map +0 -1
  317. package/dist/public/app-routes-V_-URXc5.js +0 -1
  318. package/dist/public/attachment-capabilities-B6ibLwQB.js +0 -1
  319. package/dist/public/config-C-YdSFZB.js +0 -1
  320. package/dist/public/get-group-dir-DL44kvqW.js +0 -1
  321. package/dist/public/init-control-plane-BoJijVtf.js +0 -1
  322. package/dist/public/orchestrator-CaUpEVkQ.js +0 -63
  323. package/dist/public/provider-DNIL4-Hw.js +0 -1
  324. package/dist/public/shadow-claw-DdgeYPg5.js +0 -1176
@@ -1,1176 +0,0 @@
1
- import{o as e,r as t}from"./config-C-YdSFZB.js";import{a as n,f as r,g as i,h as a,l as o,n as s,r as c,u as l}from"./app-routes-V_-URXc5.js";import{r as u}from"./db-BUuJo1Gf.js";import{t as d}from"./get-config-Bkvl__ZS.js";import{t as f}from"./dist-CeFyqf9k.js";import{Q as p,U as m,a as h,f as g,h as _,p as v,t as y}from"./orchestrator-CaUpEVkQ.js";import{t as b}from"./set-config-DSiuMe0k.js";import{s as ee}from"./tools-DHA1dK2I.js";import{t as te}from"./get-group-dir-DL44kvqW.js";import{n as ne}from"./write-group-file-CmJuVQNO.js";import{a as re,r as ie}from"./toast-CtIuHprH.js";import{t as ae}from"./parse-boolean-config-BigJ9U46.js";import{n as oe,r as se,t as ce}from"./constants-DiETpg52.js";import{a as le,l as ue,p as de,r as fe,t as pe}from"./transformers-C-DuTM2K.js";var x=class extends HTMLElement{static component;static styles;static template;_cleanups=[];constructor(){super();let{template:e,styles:t}=this.constructor;if(!this.shadowRoot){let t=this.attachShadow({mode:`open`});if(e&&Array.isArray(e)){let n=e.map(e=>e.cloneNode(!0));t.append(...n)}}this.shadowRoot&&t instanceof CSSStyleSheet&&(this.shadowRoot.adoptedStyleSheets=[t],this.shadowRoot.querySelectorAll(`style[data-dsd-style], link[rel="stylesheet"]:not([data-theme-stylesheet])`).forEach(e=>e.remove())),this.ensureShadowDialogs()}connectedCallback(){this.ensureShadowDialogs(),this.render()}disconnectedCallback(){this.disposeCleanups()}addCleanup(e){this._cleanups.push(e)}disposeCleanups(){this._cleanups.forEach(e=>e()),this._cleanups=[]}ensureShadowDialogs(){if(!this.shadowRoot)return;let e=this.shadowRoot.querySelectorAll(`shadow-claw-dialog`);for(let t of e)t instanceof HTMLElement&&customElements.upgrade(t),typeof t.ensureDialog==`function`&&t.ensureDialog()}render(){}};let S=!0;const C=new f.subtle.Watcher(()=>{S&&(S=!1,globalThis.queueMicrotask(me))});function me(){S=!0;for(let e of C.getPending())e.get();C.watch()}function w(e){let t,n=new f.Computed(()=>{typeof t==`function`&&t(),t=e()});return C.watch(n),n.get(),()=>{C.unwatch(n),typeof t==`function`&&t(),t=void 0}}function T(){if(typeof window>`u`&&typeof globalThis>`u`)return!1;let e=typeof window<`u`?window:globalThis;return!e.TRANSFORMERS_CONFIG&&!!(e.LanguageModel&&typeof e.LanguageModel.create==`function`||e.ai?.languageModel&&typeof e.ai.languageModel.create==`function`)}async function he(){if(!T())return!1;let e=typeof window<`u`?window:globalThis,t=e.LanguageModel||e.ai?.languageModel;if(typeof t?.availability==`function`)try{let e=await t.availability();return e!==`unavailable`&&e!==`no`}catch{return!1}return!0}function ge(e){let t=[`ShadowClaw uses the browser-native Prompt API for local, private AI inference.`,`If native browser Prompt API is unavailable, ShadowClaw falls back to running a local ONNX model in your browser (defaulting to Qwen 0.6B).`,`To enable native Prompt API: enable the Prompt API flags and optimization guide under your browser's experimental flags (chrome://flags or edge://flags).`];return e&&e.trim()&&t.push(`Details: ${e.trim()}`),{mode:`info`,title:`Prompt API Setup & Info`,message:`ShadowClaw is configured to use the browser-native Prompt API.`,details:t,confirmLabel:`OK`,autoCloseSeconds:30,links:[{label:`Prompt API Documentation`,href:`https://developer.chrome.com/docs/ai/built-in`}]}}async function _e(e,t,n){let r=await te(e,t),{dirs:i,filename:a}=ne(n),o=r;for(let e of i)o=await o.getDirectoryHandle(e);return await(await o.getFileHandle(a)).getFile()}const E=new class{_file;constructor(){this._file=new f.State(null)}closeFile(){this._file.set(null)}get file(){return this._file.get()}getFile(){return this.file}getPreviewBinaryMimeType(e){return{"3gp":`video/3gpp`,"7z":`application/x-7z-compressed`,aac:`audio/aac`,apng:`image/apng`,avi:`video/x-msvideo`,avif:`image/avif`,bin:`application/octet-stream`,bmp:`image/bmp`,db:`application/vnd.sqlite3`,dll:`application/octet-stream`,dmg:`application/octet-stream`,dylib:`application/octet-stream`,exe:`application/vnd.microsoft.portable-executable`,flac:`audio/flac`,flv:`video/x-flv`,gif:`image/gif`,gz:`application/gzip`,heic:`image/heic`,heif:`image/heif`,ico:`image/x-icon`,iso:`application/octet-stream`,jpeg:`image/jpeg`,jpg:`image/jpeg`,m4a:`audio/mp4`,m4v:`video/mp4`,mkv:`video/x-matroska`,mov:`video/mp4`,mp3:`audio/mpeg`,mp4:`video/mp4`,oga:`audio/ogg`,ogg:`audio/ogg`,ogv:`video/ogg`,png:`image/png`,rar:`application/vnd.rar`,so:`application/octet-stream`,sqlite:`application/vnd.sqlite3`,sqlite3:`application/vnd.sqlite3`,tar:`application/x-tar`,tif:`image/tiff`,tiff:`image/tiff`,wasm:`application/wasm`,wav:`audio/wav`,weba:`audio/webm`,webm:`video/webm`,webp:`image/webp`,wmv:`video/x-ms-wmv`,zip:`application/zip`}[e.toLowerCase().split(`.`).pop()||``]||``}async openFile(t,n,r=e){try{let e=n.split(`/`).pop()||n,i=/\.pdf$/i.test(e),a=this.getPreviewBinaryMimeType(e);if(i){let i=await le(t,r,n);this._file.set({name:e,path:n,groupId:r,content:``,kind:`pdf`,binaryContent:i,mimeType:`application/pdf`});return}if(a){let i=await _e(t,r,n);this._file.set({name:e,path:n,groupId:r,content:``,kind:`binary`,binaryContent:null,nativeFile:i,mimeType:a});return}let o=await ee(t,r,n);this._file.set({name:e,path:n,groupId:r,content:o,kind:`text`,binaryContent:null,mimeType:`text/plain`})}catch(e){throw console.error(`Failed to open file:`,n,e),e}}},D={Light:`light`,Dark:`dark`,System:`system`},O=`shadow-claw-theme`;function ve(){return typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function k(e){return e===`system`?ve():e}function A(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`))),typeof document<`u`&&document.body&&(e===`dark`?(document.body.classList.add(`dark-mode`),document.body.classList.remove(`light-mode`)):(document.body.classList.add(`light-mode`),document.body.classList.remove(`dark-mode`))),window.dispatchEvent(new CustomEvent(`shadow-claw-theme-change`,{detail:{theme:e}}))}const j=g(O)||`system`,ye=k(j);A(ye);const M=new class{_resolved;_theme;constructor(){this._theme=new f.State(j),this._resolved=new f.State(ye)}getTheme(){return{theme:this.theme,resolved:this.resolved}}init(){typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{let e=ve();_(O,`system`),A(e),this._theme.set(`system`),this._resolved.set(e)}),window.addEventListener(`storage`,e=>{let t=v(O);e.key===t&&e.newValue&&this.setTheme(e.newValue)})}get resolved(){return this._resolved.get()}setTheme(e){let t=k(e);_(O,e),A(t),this._theme.set(e),this._resolved.set(t)}get theme(){return this._theme.get()}};M.init();async function N(e,t=3){for(let n=0;n<t;n++){if(e())return;await new Promise(e=>{requestAnimationFrame(()=>e())})}}function P(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 be(e,t,n,r){return n&&t===`pages`?e.sidebarDefaultPage===`pages`?`pages`:P(e,r):t}function xe(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 Se(e,t,n,r){let i=n;if(!i)return;let a=xe(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 Ce={pages:()=>import(`./shadow-claw-pages-3r5I-wI8.js`),chat:()=>import(`./shadow-claw-chat-D7_GS25e.js`),conversations:()=>import(`./shadow-claw-conversations-CLQgU1IT.js`),tasks:()=>import(`./shadow-claw-tasks-CnyiOt81.js`),files:()=>import(`./shadow-claw-files-senDiG9l.js`),settings:()=>import(`./shadow-claw-settings-DgB9RSZN.js`),tools:()=>import(`./shadow-claw-tools-Bbwk4vlT.js`),channels:()=>import(`./shadow-claw-channels-Vq_pPGa2.js`),terminal:()=>import(`./shadow-claw-terminal-BC3RynHt.js`),"file-viewer":()=>import(`./shadow-claw-file-viewer-BhqiqLWQ.js`),"pdf-viewer":()=>import(`./shadow-claw-pdf-viewer-BiCEwsoY.js`)},F=/* @__PURE__ */ new Map;async function I(e){let t=F.get(e);if(!t){let n=Ce[e];n?(t=n().then(()=>void 0),F.set(e,t)):t=Promise.resolve()}await t}function L(e,t,n,r,i){r&&I(`terminal`).catch(console.error),i!==null&&cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=null,Se(e,t,n,r)})}function we(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 R(e,t){if(e)for(let n of we(e))n.setMainCollapsedOverride?.(t)}function z(e,t,n){if(!e)return;let r=e.querySelector(`.activity-log-toggle`);r instanceof HTMLButtonElement&&(r.hidden=t!==`chat`||n===0)}function Te(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 B(e,t){if(!e)return;let n=e.querySelector(`.header-main-toggle`);if(!(n instanceof HTMLButtonElement))return;let r=typeof t==`boolean`?t:Te(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 V(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 H={pages:`shadow-claw-pages`,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 U(e,t){let n=H[t];if(!n)return;let r=e.querySelector(`[data-page-id="${t}"]`);!r||r.children.length>0||r.appendChild(document.createElement(n))}function W(e,t,n,r,i,a=!0,o=!0){if(!e)return;let s=be(r,i,t.pagesSidebarHidden,t),c=!!t.chatSplitViewEnabled&&s!==`chat`,l=e.querySelector(`.main-content`),u=e.querySelector(`.chat-split-resize-handle`);if(c){I(`conversations`).catch(console.error),t.orchestrator?.ensureWorkerReady&&t.orchestrator.ensureWorkerReady(),typeof r?.loadHistory==`function`&&r.loadHistory().catch(console.error);let n=H.chat;n&&customElements.get(n)?U(e,`chat`):I(`chat`).then(()=>{e&&U(e,`chat`)}).catch(console.error),l&&l.classList.add(`split-chat-active`),u&&u.removeAttribute(`hidden`)}else l&&l.classList.remove(`split-chat-active`),u&&u.setAttribute(`hidden`,`hidden`);let d=H[s];d&&customElements.get(d)?(U(e,s),I(s).catch(console.error)):I(s).then(()=>{e&&U(e,s)}).catch(console.error),e.querySelectorAll(`.page`).forEach(e=>{e.classList.remove(`active`)}),e.querySelectorAll(`.nav-item`).forEach(e=>{e.classList.remove(`active`)});let f=e.querySelector(`[data-page-id="${s}"]`);f&&f.classList.add(`active`);let p=e.querySelector(`[data-page="${s}"]`);if(p&&p.classList.add(`active`),t.currentPage=s,a&&n&&r.setActivePage(n,s).catch(console.error),L(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame),R(e,t.headerMainCollapsedOverride),B(e,t.headerMainCollapsedOverride),z(e,t.currentPage,r.activityLog.length),V(e,t.currentPage,t.terminalVisible,t.vmStatus),o){let t=e.querySelector(`.page.active`);if(t){let e=t;typeof e.scrollTo==`function`&&e.scrollTo(0,0)}}if(s===`chat`){I(`conversations`).catch(console.error),t.orchestrator?.ensureWorkerReady&&t.orchestrator.ensureWorkerReady(),typeof r?.loadHistory==`function`&&r.loadHistory().catch(console.error);let n=e.querySelector(`shadow-claw-chat`);n&&typeof n.checkPromptApiOnboarding==`function`&&n.checkPromptApiOnboarding()}if(s===`tasks`&&(t.orchestrator?.ensureWorkerReady&&t.orchestrator.ensureWorkerReady(),n&&typeof r?.loadTasks==`function`&&r.loadTasks(n).catch(console.error)),s===`files`&&n&&r.loadFiles(n).catch(console.error),s===`pages`){let t=e.querySelector(`shadow-claw-pages`);t&&typeof t.renderSelectedPage==`function`&&(t.renderSelectedPage(),typeof t.setupAutoRefreshTimer==`function`&&t.setupAutoRefreshTimer())}}function Ee(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 De(e){if(!e||typeof window>`u`)return()=>{};let t=t=>Ee(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 G(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&&(l?W(e,t,n,i,u,!0,!1):W(e,t,n,i,u)),u===`files`&&c){if(/\.[^./]+$/u.test(c))try{await r.openFile(n,c,s||i.activeGroupId),l&&await N(()=>{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 N(()=>typeof t.handleAnchorNavigation==`function`&&!!t.handleAnchorNavigation(l),10))}Ee(t)}async function K(e,t,o,c,l,u){let d=typeof history<`u`?history.state:null,f=typeof document<`u`&&(!!document.getElementById(`postsFeed`)||!!e?.querySelector(`#postsFeed`)||!!(e?.querySelector(`shadow-claw-pages`))?.shadowRoot?.querySelector(`#postsFeed`)||!!document.querySelector(`shadow-claw`)?.shadowRoot?.querySelector(`#postsFeed`)||!!(document.querySelector(`shadow-claw`)?.shadowRoot?.querySelector(`shadow-claw-pages`))?.shadowRoot?.querySelector(`#postsFeed`)||!!document.querySelector(`shadow-claw-pages`)?.shadowRoot?.querySelector(`#postsFeed`));if((d?.inFeedScroll||d?.scrollSpy||d?.suppressRouter)&&f)return;let p=u.pathname,m=n();m!==`/`&&p.startsWith(m)&&(p=`/`+p.slice(m.length));let g=p.split(`/`).filter(Boolean),_=g.length===0||g.length===1&&g[0]===`index.html`,v=l.defaultPinnedPage||a(h()),y=v||l.effectiveDefaultPage;if(_&&y){let n={page:`pages`,groupId:y.groupId||l.activeGroupId||`br:main`,path:y.path};if(v){let e=await i(n);if(e&&e!==`/`&&typeof window<`u`&&window.history){let t=s(e);window.history.replaceState(null,``,t)}}await G(e,t,o,c,l,n);return}let b=await r(u,l.activeGroupId);b&&await G(e,t,o,c,l,b)}let q=null;function Oe(e){q=e}function ke(e,t){if(!e)return;let n=t;if(n.navigationType===`reload`)return;let r=typeof n?.destination?.getState==`function`?n.destination.getState():null,i=n.navigationType===`replace`?q:null,a=r||n?.info||i||(n.navigationType===`replace`&&typeof history<`u`?history.state:null);if(a?.inFeedScroll||a?.scrollSpy||a?.suppressRouter)return;let s=n?.destination?.url;if(typeof s!=`string`)return;let c=new URL(s);if(c.origin===window.location.origin&&!o(c.pathname)&&l(c.pathname))return{parsedUrl:c,navigateEvent:n}}function J(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 Y(e,n){if(e)try{await b(e,t.SIDEBAR_WIDTH,n)}catch{}}function X(e,t){let n=e?.querySelector(`.app-body`);if(!(n instanceof HTMLElement))return;let r=J(e,t);n.style.setProperty(`--sidebar-width`,`${r}px`)}async function Ae(e,n,r,i){if(!e)return;let a=e.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 t=e.querySelector(`.app-body`);if(!(t instanceof HTMLElement))return 250;let n=parseFloat(t.style.getPropertyValue(`--sidebar-width`));return Number.isFinite(n)&&n>0?n:r.getBoundingClientRect().width||250},s=()=>{let t=Math.round(J(e,o())),n=Math.round(J(e,2**53-1));a.setAttribute(`aria-valuemin`,`200`),a.setAttribute(`aria-valuemax`,String(n)),a.setAttribute(`aria-valuenow`,String(t))};try{let n=i?await d(i,t.SIDEBAR_WIDTH):void 0;typeof n==`number`&&Number.isFinite(n)&&n>0?X(e,n):X(e,250)}catch{X(e,250)}let c=null,l=0,u=0,f=t=>{if(t.pointerId!==c)return;let n=t.clientX-l;X(e,u+n),s()},p=()=>{if(c===null)return;c=null,a.classList.remove(`active`),document.removeEventListener(`pointermove`,f);let t=e.querySelector(`.app-body`);if(t instanceof HTMLElement){let e=parseFloat(t.style.getPropertyValue(`--sidebar-width`));Number.isFinite(e)&&e>0&&i&&Y(i,e)}},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,l=e.clientX,u=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`,()=>{X(e,250),i&&Y(i,250),s()}),a.addEventListener(`keydown`,t=>{if(window.innerWidth<896)return;let n=t.shiftKey?32:12,r=o(),a=null;t.key===`ArrowRight`?a=r+n:t.key===`ArrowLeft`?a=r-n:t.key===`Home`?a=200:t.key===`End`&&(a=J(e,2**53-1)),a!==null&&(t.preventDefault(),X(e,a),s(),i&&Y(i,J(e,o())))}),s(),n.addCleanup(()=>{p(),a.removeEventListener(`pointerup`,m),a.removeEventListener(`pointercancel`,p)})}async function Z(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 je={pages:t.SIDEBAR_PAGES_HIDDEN,chat:t.SIDEBAR_CHAT_HIDDEN,tasks:t.SIDEBAR_TASKS_HIDDEN,files:t.SIDEBAR_FILES_HIDDEN};function Me(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 Ne(e){switch(e){case`pages`:return`pagesSidebarHidden`;case`chat`:return`chatSidebarHidden`;case`tasks`:return`tasksSidebarHidden`;case`files`:return`filesSidebarHidden`}}async function Pe(e,t,n,r){for(let[n,i]of Object.entries(je)){let a=n,o=!1;if(r)try{let e=await d(r,i);o=ae(e)}catch{o=!1}let s=Ne(a);t[s]=o,Me(e,a,o),a===`chat`&&!o&&await I(`conversations`)}}function Q(e,t,n,r,i,a){switch(i){case`pages`:t.pagesSidebarHidden=a;break;case`chat`:t.chatSidebarHidden=a,a||I(`conversations`).catch(console.error);break;case`tasks`:t.tasksSidebarHidden=a;break;case`files`:t.filesSidebarHidden=a}Me(e,i,a),a&&t.currentPage===i&&W(e,t,r,n,P(n,t))}function Fe(e,t,n,r,i){Q(e,t,n,r,`pages`,i)}function Ie(){let e=window.navigation;return!!(e&&typeof e.addEventListener==`function`&&typeof e.navigate==`function`)}function Le(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 Re(e,t){if(!e)return;let n=e.querySelector(`shadow-claw-chat`);n&&typeof n.setActivityLogCollapsedOverride==`function`&&n.setActivityLogCollapsedOverride(t)}function ze(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 Be(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),Re(e.shadowRoot,e.activityLogCollapsedOverride),ze(e.shadowRoot,e.activityLogCollapsedOverride)}function Ve(e){e.headerMainCollapsedOverride=!(typeof e.headerMainCollapsedOverride==`boolean`?e.headerMainCollapsedOverride:Te(e.shadowRoot)?.isMainCollapsed?.()??!1),R(e.shadowRoot,e.headerMainCollapsedOverride),B(e.shadowRoot,e.headerMainCollapsedOverride)}function He(e,t){t.terminalVisible=!t.terminalVisible,V(e,t.currentPage,t.terminalVisible,t.vmStatus),L(e,t.currentPage,t.terminalElement,t.terminalVisible,t.terminalPlacementFrame)}function Ue(e,t){e===D.Dark?(t.add(`dark-mode`),t.remove(`light-mode`)):(t.add(`light-mode`),t.remove(`dark-mode`))}function We(e,t){if(!e)return;let n=e.querySelector(`.sun-icon`),r=e.querySelector(`.moon-icon`);n&&r&&(t===D.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 Ge(e,t,n,r,i,a,s,c,l){if(!n||!e||!t)return;n.querySelectorAll(`.nav-item[data-page]`).forEach(e=>{let r=e;r.addEventListener(`click`,()=>{let e=r.dataset.page||P(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 u=n.getElementById(`menu-button`),d=n.querySelector(`.sidebar`);if(u&&d){u.addEventListener(`click`,()=>{d.classList.toggle(`open`)}),n.querySelectorAll(`.nav-item, .settings-btn`).forEach(t=>{t.addEventListener(`click`,()=>{e.innerWidth<896&&d.classList.remove(`open`)})}),d.addEventListener(`click`,t=>{let n=t.target;e.innerWidth<896&&n?.closest(`a, button, .nav-item, .sidebar-link, .sidebar-item`)&&d.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`)&&d.classList.remove(`open`)}),t.addEventListener(`click`,t=>{let n=t.composedPath();e.innerWidth<896&&d.classList.contains(`open`)&&!n.includes(d)&&!n.includes(u)&&d.classList.remove(`open`)});let a=e.matchMedia?e.matchMedia(`(min-width: 56rem)`):{matches:!1,addEventListener:()=>{},removeEventListener:()=>{}},o=e=>{e.matches&&d.classList.remove(`open`)};o(a),a.addEventListener(`change`,o),Ae(n,r,d,i)}typeof r?.addEventListener==`function`&&r.addEventListener(`click`,t=>{let n=typeof t.composedPath==`function`?t.composedPath():[],r=null;for(let e of n)if(e instanceof HTMLAnchorElement||e&&e.tagName===`A`&&e.href){r=e;break}!r&&t.target?.closest&&(r=t.target.closest(`a[href]`));let i=e.location?.origin||window.location?.origin;if(r&&i){let n=null;try{let e=typeof r.getAttribute==`function`&&r.getAttribute(`href`)||r.href;n=new URL(e,i)}catch{}n&&n.origin===i&&o(n.pathname)&&(t.preventDefault(),typeof e.location?.assign==`function`?e.location.assign(n.href):typeof window.location?.assign==`function`&&window.location.assign(n.href))}});let f=n.querySelector(`[data-action="show-settings"]`);f&&f.addEventListener(`click`,()=>{t.dispatchEvent(new CustomEvent(`shadow-claw-navigate`,{detail:{page:`settings`},bubbles:!0,composed:!0}))}),n.querySelector(`.header-main-toggle`)?.addEventListener(`click`,()=>{Ve(r)}),n.querySelector(`.activity-log-toggle`)?.addEventListener(`click`,()=>{Be(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=>{Fe(n,r,a,i,!!e.detail?.hidden)}),n.addEventListener(`sidebar-chat-visibility-change`,e=>{Q(n,r,a,i,`chat`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-tasks-visibility-change`,e=>{Q(n,r,a,i,`tasks`,!!e.detail?.hidden)}),n.addEventListener(`sidebar-files-visibility-change`,e=>{Q(n,r,a,i,`files`,!!e.detail?.hidden)}),n.addEventListener(`chat-split-view-change`,e=>{r.chatSplitViewEnabled=!!e.detail?.enabled,W(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 p=n.querySelector(`.theme-mode-toggle`);if(p&&p.addEventListener(`click`,()=>{let{resolved:e}=c.getTheme(),t=e===D.Dark?D.Light:D.Dark;c.setTheme(t)}),n.querySelector(`.webvm-toggle`)?.addEventListener(`click`,()=>He(n,r)),n.addEventListener(`shadow-claw-terminal-slot-ready`,()=>{L(n,r.currentPage,r.terminalElement,r.terminalVisible,r.terminalPlacementFrame),R(n,r.headerMainCollapsedOverride),B(n,r.headerMainCollapsedOverride)}),e.addEventListener(`resize`,()=>{r.headerMainCollapsedOverride===null&&B(n,r.headerMainCollapsedOverride)}),t.addEventListener(`shadow-claw-navigate`,r.shadowClawNav),Ie()){if(e.history&&!e.history.__scReplaceStateTracked){let t=e.history.replaceState;e.history.replaceState=function(e,n,r){return Oe(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 o=t?.state||e.history?.state;o?.inFeedScroll||o?.scrollSpy||o?.suppressRouter||K(n,r,i,s,a,new URL(e.location.href))},e.addEventListener(`popstate`,r.popstateListener),e.addEventListener(`hashchange`,r.popstateListener),t.addEventListener(`click`,r.fallbackClickListener),r.fallbackClickListenerAttached=!0;e.addEventListener(`shadow-claw-theme-change`,e=>{let t=e.detail.theme;We(n,t),Ue(t,r.classList)}),e.addEventListener(`shadow-claw-peer-error`,e=>{let r=e.detail,i=r.remotePeerId,a=r.error;Z(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 m=c.resolved;We(n,m),Ue(m,r.classList),r.appLifecycleCleanup&&=(r.appLifecycleCleanup(),null),r.orchestrator&&(r.appLifecycleCleanup=Le(e,t,r.orchestrator)),De(r)}function Ke(e){if(e===void 0)return;e.documentElement.classList.remove(oe,`sc-prerender-override`);let t=e.querySelector(`shadow-claw`);t?.removeAttribute(ce),t?.removeAttribute(se)}function qe(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 i=r.getAttribute(`href`)||``;return!i||i.startsWith(`javascript:`)||i.startsWith(`mailto:`)||i.startsWith(`tel:`)||r.target&&r.target!==`_self`||r.origin!==e.origin||!l(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 Je(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 Ye(e,t,n,r){let i=await Je(e,t,r);m(n.orchestrator,r.id,i)}async function Xe(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);ie(`Failed to open file from tool: ${r}`,5e3);return}}async function Ze(e,t,n){n?.providerId===`llamafile`?await Z(e,t,de(n.reason)):n?.providerId===`transformers_js_local`?await Z(e,t,pe(n.reason)):n?.providerId===`prompt_api`?await Z(e,t,ge(n.reason)):n?.providerId&&n.helpType&&await Z(e,t,fe(n.providerId,n.helpType,n.reason))}async function Qe(e,t,n,r,i,a){if(r&&a?.roomId&&a?.hostPeerId&&await Z(e,t,{mode:`confirm`,title:`Room invitation`,message:`${a.fromAlias||a.fromPeerId} invited you to join "${a.roomName}".`,confirmLabel:`Join`,cancelLabel:`Decline`}))try{ue(n.orchestrator,a.roomId,a.hostPeerId,a.roomName),await i.switchConversation(r,`room:${a.roomId}`),W(t,n,r,i,`chat`),re(`Joined room "${a.roomName}"`)}catch(e){let t=e instanceof Error?e.message:String(e);ie(`Failed to join room: ${t}`,6e3)}}function $e(e,t,n){let r=n.useTrailingSlash&&!t.includes(`#`)?t.endsWith(`/`)?t:t+`/`:t;n.replace?e.replaceState({},``,r):e.pushState({},``,r)}async function et(e,t,n,r,i,a,o={replace:!1}){let l=c(a),u=s(l),d=typeof window<`u`&&window.location?`${window.location.pathname}${window.location.search}${window.location.hash}`:``;d&&u===d?await G(e,t,n,r,i,a):Ie()?window.navigation.navigate(u,{history:o.replace?`replace`:`push`}):(u!==window.location.pathname&&$e(globalThis.history,u,{...o,useTrailingSlash:!1}),await G(e,t,n,r,i,a))}function tt(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 nt(e,t,n,r,i,a){let o=a.detail;o&&await et(e,t,n,r,i,{page:tt(String(o.page||`chat`)),groupId:o.groupId,path:o.path,anchor:o.anchor})}async function rt(e,t,n,r){await Pe(e,t,n,r)}function it(e,t,n,r){e&&(w(()=>{let t=E.file;t&&(I(`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`&&I(`pdf-viewer`).catch(console.error))}),w(()=>{let e=r.state;e===`idle`&&(t.previousOrchestratorState===`thinking`||t.previousOrchestratorState===`responding`)&&re(`Response complete`,2500),t.previousOrchestratorState=e}),w(()=>{let i=r.activePage;i!==t.currentPage&&W(e,t,n,r,i,!1)}),w(()=>{r.activityLog,z(e,t.currentPage,r.activityLog.length)}))}const at=new CSSStyleSheet;at.replaceSync(`*,
2
- *::before,
3
- *::after {
4
- box-sizing: border-box;
5
- }
6
-
7
- .hidden,
8
- [hidden] {
9
- display: none !important;
10
- }
11
-
12
- a {
13
- color: var(--shadow-claw-link);
14
- text-decoration: underline;
15
- text-underline-offset: 0.125rem;
16
- }
17
-
18
- a:hover {
19
- color: var(--shadow-claw-link-hover);
20
- }
21
-
22
- .header {
23
- align-items: center;
24
- background-color: var(--shadow-claw-bg-secondary);
25
- border-bottom: 0.0625rem solid var(--shadow-claw-border-color);
26
- display: flex;
27
- gap: 0.5rem;
28
- height: 4rem;
29
- justify-content: start;
30
- max-height: 4rem;
31
- padding: 0.5rem 1rem;
32
- width: 100%;
33
- }
34
-
35
- .header h1 {
36
- align-items: center;
37
- color: var(--shadow-claw-text-primary);
38
- display: flex;
39
- flex-direction: row;
40
- margin: 0;
41
- width: 100%;
42
- }
43
-
44
- #menu-button {
45
- align-items: center;
46
- background: transparent;
47
- border: none;
48
- border-radius: 0.25rem;
49
- color: var(--shadow-claw-text-secondary);
50
- cursor: pointer;
51
- display: flex;
52
- justify-content: center;
53
- padding: 0.5rem;
54
- }
55
-
56
- #menu-button:hover,
57
- .theme-toggle:hover {
58
- background-color: var(--shadow-claw-bg-tertiary);
59
- color: var(--shadow-claw-text-primary);
60
- }
61
-
62
- .header-actions {
63
- align-items: center;
64
- display: flex;
65
- gap: 0.5rem;
66
- margin-left: auto;
67
- }
68
-
69
- .theme-toggle {
70
- align-items: center;
71
- background: transparent;
72
- border: none;
73
- border-radius: 0.25rem;
74
- color: var(--shadow-claw-text-secondary);
75
- cursor: pointer;
76
- display: flex;
77
- justify-content: center;
78
- padding: 0.5rem;
79
- }
80
-
81
- .theme-mode-toggle .sun-icon {
82
- display: none;
83
- }
84
-
85
- .theme-mode-toggle .moon-icon {
86
- display: block;
87
- }
88
-
89
- .theme-toggle svg {
90
- transition: transform 0.2s ease;
91
- }
92
-
93
- .header-main-toggle {
94
- display: var(--shadow-claw-header-main-toggle-display, block);
95
- }
96
-
97
- .header-main-toggle[aria-pressed="true"],
98
- .activity-log-toggle[aria-pressed="true"] {
99
- box-shadow: 0 0 0.5rem
100
- color-mix(
101
- in srgb,
102
- var(--shadow-claw-warning-color, #d97706) 50%,
103
- transparent
104
- );
105
- color: var(--shadow-claw-warning-color, #d97706);
106
- }
107
-
108
- .header-main-toggle[aria-pressed="true"] svg {
109
- transform: rotate(180deg);
110
- }
111
-
112
- .activity-log-toggle[aria-pressed="true"] svg {
113
- transform: rotate(180deg);
114
- }
115
-
116
- .webvm-toggle--booting,
117
- .webvm-toggle--ready,
118
- .webvm-toggle--visible {
119
- color: var(--shadow-claw-success-color);
120
- }
121
-
122
- .webvm-toggle--error {
123
- color: var(--shadow-claw-error-color);
124
- }
125
-
126
- .app {
127
- background-color: var(--shadow-claw-bg-primary);
128
- color: var(--shadow-claw-text-primary);
129
- display: flex;
130
- flex-direction: column;
131
- font-family: var(--shadow-claw-font-sans);
132
- /* Punch through the \`visibility: hidden\` set on the shadow-claw host
133
- by the sc-prerender-override global CSS rule. The existing boot-pending
134
- opacity rules still hide the real pre-rendered content; the skeleton
135
- overlays and header remain fully visible. */
136
- visibility: visible;
137
- width: 100%;
138
- }
139
-
140
- .app-body {
141
- --sidebar-width: 15.625rem;
142
- display: flex;
143
- flex: 1;
144
- flex-direction: row;
145
- min-height: 0;
146
- overflow: hidden;
147
- }
148
-
149
- .sidebar {
150
- background-color: var(--shadow-claw-bg-secondary);
151
- border-right: 0.0625rem solid var(--shadow-claw-bg-tertiary);
152
- display: flex;
153
- flex: none;
154
- flex-direction: column;
155
- overflow-y: auto;
156
- position: relative;
157
- width: var(--sidebar-width);
158
- }
159
-
160
- .sidebar-resize-handle {
161
- background: transparent;
162
- cursor: col-resize;
163
- flex: none;
164
- outline: none;
165
- position: relative;
166
- touch-action: none;
167
- user-select: none;
168
- width: 0.75rem;
169
- }
170
-
171
- .sidebar-resize-handle::before {
172
- background: color-mix(
173
- in srgb,
174
- var(--shadow-claw-bg-secondary) 72%,
175
- var(--shadow-claw-border-color)
176
- );
177
- border: 0.0625rem solid
178
- color-mix(in srgb, var(--shadow-claw-border-color) 80%, transparent);
179
- border-radius: var(--shadow-claw-radius-pill);
180
- content: "";
181
- height: 4.25rem;
182
- left: 50%;
183
- position: absolute;
184
- top: 50%;
185
- transform: translate(-50%, -50%);
186
- transition:
187
- background-color 0.15s,
188
- border-color 0.15s,
189
- box-shadow 0.15s;
190
- width: 0.5625rem;
191
- }
192
-
193
- .sidebar-resize-handle::after {
194
- background: var(--shadow-claw-border-color);
195
- border-radius: var(--shadow-claw-radius-pill);
196
- content: "";
197
- height: 2.75rem;
198
- left: 50%;
199
- position: absolute;
200
- top: 50%;
201
- transform: translate(-50%, -50%);
202
- transition: background-color 0.15s;
203
- width: 0.1875rem;
204
- }
205
-
206
- .sidebar-resize-handle:hover::before,
207
- .sidebar-resize-handle.active::before {
208
- background: color-mix(
209
- in srgb,
210
- var(--shadow-claw-accent-primary) 20%,
211
- var(--shadow-claw-bg-secondary)
212
- );
213
- border-color: color-mix(
214
- in srgb,
215
- var(--shadow-claw-accent-primary) 45%,
216
- transparent
217
- );
218
- box-shadow: 0 0 0.5rem
219
- color-mix(in srgb, var(--shadow-claw-accent-primary) 18%, transparent);
220
- }
221
-
222
- .sidebar-resize-handle:hover::after,
223
- .sidebar-resize-handle.active::after {
224
- background: var(--shadow-claw-accent-primary);
225
- }
226
-
227
- .sidebar-resize-handle:focus-visible::before {
228
- background: color-mix(
229
- in srgb,
230
- var(--shadow-claw-accent-primary) 20%,
231
- var(--shadow-claw-bg-secondary)
232
- );
233
- border-color: color-mix(
234
- in srgb,
235
- var(--shadow-claw-accent-primary) 45%,
236
- transparent
237
- );
238
- box-shadow: 0 0 0.5rem
239
- color-mix(in srgb, var(--shadow-claw-accent-primary) 18%, transparent);
240
- }
241
-
242
- .sidebar-resize-handle:focus-visible::after {
243
- background: var(--shadow-claw-accent-primary);
244
- }
245
-
246
- .sidebar-resize-handle:focus-visible {
247
- outline: 0.125rem solid
248
- color-mix(in srgb, var(--shadow-claw-accent-primary) 60%, transparent);
249
- outline-offset: 0.0625rem;
250
- }
251
-
252
- @media (max-width: 55.9375rem) {
253
- .sidebar {
254
- display: none;
255
- }
256
-
257
- .sidebar.open {
258
- border-radius: 0 var(--shadow-claw-radius-m) var(--shadow-claw-radius-m) 0;
259
- box-shadow: var(--shadow-claw-shadow-lg);
260
- display: flex;
261
- height: calc(100vh - 4rem);
262
- height: calc(100dvh - 4rem);
263
- position: absolute;
264
- width: min(85vw, 20rem);
265
- z-index: 100;
266
- }
267
-
268
- .sidebar-resize-handle {
269
- display: none;
270
- }
271
- }
272
-
273
- @media (min-width: 56rem) {
274
- #menu-button {
275
- display: none;
276
- }
277
- }
278
-
279
- .nav-menu {
280
- display: var(--shadow-claw-sidebar-nav-display, flex);
281
- flex-direction: column;
282
- flex: none;
283
- list-style: none;
284
- margin: 0;
285
- padding: 0.5rem;
286
- }
287
-
288
- .nav-menu:not(:has(.nav-item:not([hidden]))) {
289
- display: none;
290
- }
291
-
292
- slot[name="sidebar"],
293
- slot[name="sidebar-nav"],
294
- slot[name="sidebar-content"],
295
- slot[name="sidebar-footer"] {
296
- display: block;
297
- }
298
-
299
- ::slotted([slot="sidebar"]),
300
- ::slotted([slot="sidebar-nav"]),
301
- ::slotted([slot="sidebar-content"]),
302
- ::slotted([slot="sidebar-footer"]) {
303
- display: block;
304
- }
305
-
306
- .sidebar-footer {
307
- display: var(--shadow-claw-sidebar-footer-display, block);
308
- }
309
-
310
- .sidebar-spacer {
311
- flex: 1;
312
- }
313
-
314
- shadow-claw-conversations {
315
- display: flex;
316
- flex: none;
317
- flex-direction: column;
318
- min-height: 0;
319
- overflow: hidden;
320
- }
321
-
322
- .nav-item {
323
- border-radius: var(--shadow-claw-radius-m);
324
- color: var(--shadow-claw-text-secondary);
325
- cursor: pointer;
326
- font-size: var(--shadow-claw-font-size-sm);
327
- font-weight: 500;
328
- margin-bottom: 0.5rem;
329
- padding: 0.625rem 0.75rem;
330
- transition:
331
- background-color 0.15s,
332
- color 0.15s;
333
- }
334
-
335
- .nav-item:hover {
336
- background-color: var(--shadow-claw-text-secondary);
337
- color: var(--shadow-claw-on-primary);
338
- }
339
-
340
- .nav-item.active {
341
- background-color: var(--shadow-claw-accent-primary);
342
- color: var(--shadow-claw-on-primary);
343
- }
344
-
345
- .sidebar-footer {
346
- border-top: 0.0625rem solid var(--shadow-claw-border-color);
347
- flex: none;
348
- margin-bottom: 0.5rem;
349
- padding: 0.75rem;
350
- }
351
-
352
- .settings-btn {
353
- background-color: transparent;
354
- border: 0.0625rem solid var(--shadow-claw-border-color);
355
- border-radius: var(--shadow-claw-radius-pill);
356
- color: var(--shadow-claw-text-secondary);
357
- cursor: pointer;
358
- font-size: 0.8125rem;
359
- padding: 0.625rem 0.75rem;
360
- transition: all var(--shadow-claw-duration-min) var(--shadow-claw-ease-out);
361
- width: 100%;
362
- }
363
-
364
- .settings-btn:hover {
365
- border-color: var(--shadow-claw-text-primary);
366
- box-shadow: var(--shadow-claw-shadow-md);
367
- color: var(--shadow-claw-text-primary);
368
- }
369
-
370
- .main-content {
371
- --chat-split-height: 20rem;
372
- display: flex;
373
- flex: 1;
374
- flex-direction: column;
375
- height: calc(100vh - 4rem);
376
- height: calc(100dvh - 4rem);
377
- min-height: 0;
378
- overflow: hidden;
379
- position: relative;
380
- }
381
-
382
- .page {
383
- display: flex;
384
- display: none;
385
- flex: 1;
386
- flex-direction: column;
387
- min-height: 0;
388
- overflow: auto;
389
- }
390
-
391
- .page.active {
392
- display: flex;
393
- }
394
-
395
- .chat-split-resize-handle {
396
- background: transparent;
397
- cursor: row-resize;
398
- display: none;
399
- flex: none;
400
- height: 0.75rem;
401
- outline: none;
402
- position: relative;
403
- touch-action: none;
404
- user-select: none;
405
- width: 100%;
406
- }
407
-
408
- .main-content.split-chat-active .page.active {
409
- order: 1;
410
- }
411
-
412
- .main-content.split-chat-active .chat-split-resize-handle {
413
- display: flex;
414
- margin-bottom: -0.375rem;
415
- margin-top: -0.375rem;
416
- order: 2;
417
- z-index: 10;
418
- }
419
-
420
- .chat-split-resize-handle::before {
421
- background: color-mix(
422
- in srgb,
423
- var(--shadow-claw-bg-secondary) 72%,
424
- var(--shadow-claw-border-color)
425
- );
426
- border: 0.0625rem solid
427
- color-mix(in srgb, var(--shadow-claw-border-color) 80%, transparent);
428
- border-radius: var(--shadow-claw-radius-pill);
429
- content: "";
430
- height: 0.5625rem;
431
- left: 50%;
432
- position: absolute;
433
- top: 50%;
434
- transform: translate(-50%, -50%);
435
- transition:
436
- background-color 0.15s,
437
- border-color 0.15s,
438
- box-shadow 0.15s;
439
- width: 4.25rem;
440
- }
441
-
442
- .chat-split-resize-handle::after {
443
- background: var(--shadow-claw-border-color);
444
- border-radius: var(--shadow-claw-radius-pill);
445
- content: "";
446
- height: 0.1875rem;
447
- left: 50%;
448
- position: absolute;
449
- top: 50%;
450
- transform: translate(-50%, -50%);
451
- transition: background-color 0.15s;
452
- width: 2.75rem;
453
- }
454
-
455
- .chat-split-resize-handle:hover::before,
456
- .chat-split-resize-handle.active::before,
457
- .chat-split-resize-handle:focus-visible::before {
458
- background: color-mix(
459
- in srgb,
460
- var(--shadow-claw-accent-primary) 20%,
461
- var(--shadow-claw-bg-secondary)
462
- );
463
- border-color: color-mix(
464
- in srgb,
465
- var(--shadow-claw-accent-primary) 45%,
466
- transparent
467
- );
468
- box-shadow: 0 0 0.5rem
469
- color-mix(in srgb, var(--shadow-claw-accent-primary) 18%, transparent);
470
- }
471
-
472
- .chat-split-resize-handle:hover::after,
473
- .chat-split-resize-handle.active::after,
474
- .chat-split-resize-handle:focus-visible::after {
475
- background: var(--shadow-claw-accent-primary);
476
- }
477
-
478
- .chat-split-resize-handle:focus-visible {
479
- outline: 0.125rem solid
480
- color-mix(in srgb, var(--shadow-claw-accent-primary) 60%, transparent);
481
- outline-offset: 0.0625rem;
482
- }
483
-
484
- .main-content.split-chat-active .chat-page:not(.active) {
485
- border-top: 0.0625rem solid var(--shadow-claw-border-color);
486
- display: flex;
487
- flex: none;
488
- height: var(--chat-split-height);
489
- max-height: calc(100% - 6.25rem);
490
- min-height: 9.375rem;
491
- order: 3;
492
- }
493
-
494
- @media (max-width: 55.9375rem) {
495
- .chat-split-resize-handle {
496
- display: none !important;
497
- }
498
-
499
- .main-content.split-chat-active .chat-page:not(.active) {
500
- display: none !important;
501
- }
502
- }
503
-
504
- .app-dialog {
505
- background: var(--shadow-claw-bg-secondary);
506
- border: 0.0625rem solid var(--shadow-claw-border-color);
507
- border-radius: var(--shadow-claw-radius-l);
508
- box-shadow: var(--shadow-claw-shadow-lg);
509
- color: var(--shadow-claw-text-primary);
510
- max-width: min(90vw, 28rem);
511
- padding: 0;
512
- }
513
-
514
- .app-dialog::backdrop {
515
- background: color-mix(in srgb, black 50%, transparent);
516
- }
517
-
518
- .app-confirm-dialog__form {
519
- display: flex;
520
- flex-direction: column;
521
- gap: 0.75rem;
522
- margin: 0;
523
- padding: 1rem;
524
- }
525
-
526
- .app-dialog__title {
527
- font-size: 1rem;
528
- margin: 0;
529
- }
530
-
531
- .app-dialog__message {
532
- color: var(--shadow-claw-text-secondary);
533
- margin: 0;
534
- }
535
-
536
- .app-dialog__details {
537
- color: var(--shadow-claw-text-secondary);
538
- display: flex;
539
- flex-direction: column;
540
- gap: 0.25rem;
541
- margin: 0;
542
- padding-left: 1rem;
543
- }
544
-
545
- .app-dialog__links {
546
- display: flex;
547
- flex-wrap: wrap;
548
- gap: 0.5rem;
549
- }
550
-
551
- .app-dialog__link {
552
- color: var(--shadow-claw-accent-primary);
553
- font-size: 0.9375rem;
554
- text-decoration: none;
555
- }
556
-
557
- .app-dialog__link:hover,
558
- .app-dialog__link:focus-visible {
559
- text-decoration: underline;
560
- }
561
-
562
- .app-dialog__countdown {
563
- color: var(--shadow-claw-text-secondary);
564
- font-size: 0.875rem;
565
- margin: 0;
566
- }
567
-
568
- .app-confirm-dialog__actions {
569
- display: flex;
570
- gap: 0.5rem;
571
- justify-content: flex-end;
572
- }
573
-
574
- .app-dialog__btn {
575
- border: 0.0625rem solid var(--shadow-claw-border-color);
576
- border-radius: var(--shadow-claw-radius-m);
577
- cursor: pointer;
578
- font: inherit;
579
- padding: 0.5rem 0.75rem;
580
- }
581
-
582
- .app-dialog__btn--cancel {
583
- background: var(--shadow-claw-bg-primary);
584
- color: var(--shadow-claw-text-primary);
585
- }
586
-
587
- .app-dialog__btn--confirm {
588
- background: var(--shadow-claw-accent-primary);
589
- border-color: var(--shadow-claw-accent-primary);
590
- color: var(--shadow-claw-on-primary);
591
- }
592
-
593
- .app-prompt-dialog__form {
594
- display: flex;
595
- flex-direction: column;
596
- gap: 0.75rem;
597
- margin: 0;
598
- padding: 1rem;
599
- }
600
-
601
- .app-prompt-dialog__title {
602
- font-size: 1rem;
603
- margin: 0;
604
- }
605
-
606
- .app-prompt-dialog__message {
607
- color: var(--shadow-claw-text-secondary);
608
- margin: 0;
609
- }
610
-
611
- .app-prompt-dialog__input-area {
612
- display: flex;
613
- flex-direction: column;
614
- gap: 0.5rem;
615
- margin-top: 0.5rem;
616
- }
617
-
618
- .app-prompt-dialog__input {
619
- background: var(--shadow-claw-bg-primary);
620
- border: 0.0625rem solid var(--shadow-claw-border-color);
621
- border-radius: var(--shadow-claw-radius-s);
622
- color: var(--shadow-claw-text-primary);
623
- font: inherit;
624
- padding: 0.5rem;
625
- width: 100%;
626
- }
627
-
628
- .app-prompt-dialog__actions {
629
- display: flex;
630
- gap: 0.5rem;
631
- justify-content: flex-end;
632
- margin-top: 0.5rem;
633
- }
634
-
635
- form:tool-form-active,
636
- .app-confirm-dialog__form:tool-form-active,
637
- .app-prompt-dialog__form:tool-form-active {
638
- outline: 2px dashed var(--shadow-claw-accent-primary, #3b82f6);
639
- outline-offset: 4px;
640
- }
641
-
642
- button:tool-submit-active {
643
- outline: 2px dashed var(--shadow-claw-warning, #f59e0b);
644
- outline-offset: 2px;
645
- }
646
-
647
- .chat-page {
648
- flex-direction: column;
649
- }
650
-
651
- :host([data-prerender-no-seed="true"]) .nav-item,
652
- :host([data-prerender-no-seed="true"]) shadow-claw-conversations,
653
- :host([data-prerender-no-seed="true"]) .sidebar-footer,
654
- :host([data-prerender-no-seed="true"]) .page.active,
655
- :host([data-prerender-no-seed="true"]) shadow-claw-file-viewer,
656
- :host([data-prerender-no-seed="true"]) shadow-claw-toast {
657
- opacity: 1;
658
- transform: translateY(0);
659
- transition:
660
- opacity var(--shadow-claw-duration-min) var(--shadow-claw-ease-out),
661
- transform var(--shadow-claw-duration-min) var(--shadow-claw-ease-out);
662
- }
663
-
664
- :host([data-prerender-no-seed="true"][data-hydration-pending="true"]) .nav-item,
665
- :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
666
- shadow-claw-conversations,
667
- :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
668
- .sidebar-footer,
669
- :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
670
- .page.active,
671
- :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
672
- shadow-claw-file-viewer,
673
- :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
674
- shadow-claw-toast,
675
- :host([data-prerender-no-seed="true"][data-js-boot-pending="true"]) .nav-item,
676
- :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
677
- shadow-claw-conversations,
678
- :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
679
- .sidebar-footer,
680
- :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
681
- .page.active,
682
- :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
683
- shadow-claw-file-viewer,
684
- :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
685
- shadow-claw-toast {
686
- opacity: 0;
687
- pointer-events: none;
688
- transform: translateY(0.25rem);
689
- }
690
-
691
- @media (prefers-reduced-motion: reduce) {
692
- :host([data-prerender-no-seed="true"]) .nav-item,
693
- :host([data-prerender-no-seed="true"]) shadow-claw-conversations,
694
- :host([data-prerender-no-seed="true"]) .sidebar-footer,
695
- :host([data-prerender-no-seed="true"]) .page.active,
696
- :host([data-prerender-no-seed="true"]) shadow-claw-file-viewer,
697
- :host([data-prerender-no-seed="true"]) shadow-claw-toast {
698
- transform: none;
699
- transition: none;
700
- }
701
- }
702
-
703
- /* Premium Loading & Hydration Skeletons */
704
- .sidebar-boot-skeleton {
705
- background-color: var(--shadow-claw-bg-secondary);
706
- bottom: 0;
707
- display: flex;
708
- flex-direction: column;
709
- left: 0;
710
- opacity: 0;
711
- padding: 1rem 0.75rem;
712
- pointer-events: none;
713
- position: absolute;
714
- right: 0;
715
- top: 0;
716
- transition:
717
- opacity var(--shadow-claw-duration-regular) var(--shadow-claw-ease-out),
718
- visibility var(--shadow-claw-duration-regular) var(--shadow-claw-ease-out);
719
- visibility: hidden;
720
- z-index: 10;
721
- }
722
-
723
- :host([data-js-boot-pending="true"]) .sidebar-boot-skeleton,
724
- :host([data-hydration-pending="true"]) .sidebar-boot-skeleton {
725
- opacity: 1;
726
- pointer-events: auto;
727
- visibility: visible;
728
- }
729
-
730
- .skeleton-nav-wrapper {
731
- display: none;
732
- flex-direction: column;
733
- gap: 0.5rem;
734
- margin-bottom: 0.5rem;
735
- }
736
-
737
- :host([data-prerender-no-seed="true"]) .skeleton-nav-wrapper {
738
- display: flex;
739
- }
740
-
741
- .skeleton-divider {
742
- border-top: 0.0625rem solid var(--shadow-claw-border-color);
743
- display: none;
744
- margin: 0.75rem 0;
745
- }
746
-
747
- :host([data-prerender-no-seed="true"]) .skeleton-divider {
748
- display: block;
749
- }
750
-
751
- .skeleton-convo-wrapper {
752
- display: flex;
753
- flex-direction: column;
754
- gap: 0.75rem;
755
- margin-top: 0.5rem;
756
- }
757
-
758
- .skeleton-item {
759
- animation: skeleton-pulse 1.8s ease-in-out infinite;
760
- background: linear-gradient(
761
- 90deg,
762
- var(--shadow-claw-bg-secondary) 25%,
763
- var(--shadow-claw-bg-tertiary) 50%,
764
- var(--shadow-claw-bg-secondary) 75%
765
- );
766
- background-size: 200% 100%;
767
- }
768
-
769
- .skeleton-nav {
770
- border-radius: var(--shadow-claw-radius-m);
771
- height: 2.25rem;
772
- width: 100%;
773
- }
774
-
775
- /* Give items dynamic-looking varied widths for extra premium feel */
776
- .skeleton-nav:nth-child(1) {
777
- width: 85%;
778
- }
779
-
780
- .skeleton-nav:nth-child(2) {
781
- width: 90%;
782
- }
783
-
784
- .skeleton-nav:nth-child(3) {
785
- width: 75%;
786
- }
787
-
788
- .skeleton-nav:nth-child(4) {
789
- width: 80%;
790
- }
791
-
792
- .skeleton-convo {
793
- border-radius: var(--shadow-claw-radius-m);
794
- height: 3.5rem;
795
- width: 100%;
796
- }
797
-
798
- .main-content-boot-skeleton {
799
- align-items: center;
800
- background-color: var(--shadow-claw-bg-primary);
801
- bottom: 0;
802
- display: flex;
803
- flex-direction: column;
804
- justify-content: center;
805
- left: 0;
806
- opacity: 0;
807
- padding: 2rem;
808
- pointer-events: none;
809
- position: absolute;
810
- right: 0;
811
- top: 0;
812
- transition:
813
- opacity var(--shadow-claw-duration-regular) var(--shadow-claw-ease-out),
814
- visibility var(--shadow-claw-duration-regular) var(--shadow-claw-ease-out);
815
- visibility: hidden;
816
- z-index: 10;
817
- }
818
-
819
- :host([data-prerender-no-seed="true"][data-js-boot-pending="true"])
820
- .main-content-boot-skeleton,
821
- :host([data-prerender-no-seed="true"][data-hydration-pending="true"])
822
- .main-content-boot-skeleton {
823
- opacity: 1;
824
- pointer-events: auto;
825
- visibility: visible;
826
- }
827
-
828
- .boot-loading-svg {
829
- color: var(--shadow-claw-text-secondary);
830
- height: 4.5rem;
831
- opacity: 0.85;
832
- transition: color var(--shadow-claw-duration-min) var(--shadow-claw-ease-out);
833
- width: 4.5rem;
834
- }
835
-
836
- .boot-loading-text {
837
- color: var(--shadow-claw-text-secondary);
838
- font-size: var(--shadow-claw-font-size-sm);
839
- font-weight: 600;
840
- letter-spacing: 0.075em;
841
- margin-top: 1.25rem;
842
- text-transform: uppercase;
843
- }
844
-
845
- @keyframes skeleton-pulse {
846
- 0% {
847
- background-position: 200% 0;
848
- }
849
-
850
- 100% {
851
- background-position: -200% 0;
852
- }
853
- }
854
- `);const $=new DOMParser().parseFromString(`<template>
855
- <div class="app">
856
- <!-- Header -->
857
- <header class="header">
858
- <button aria-label="Open menu" title="Open menu" id="menu-button">
859
- <svg
860
- height="1.5rem"
861
- fill="currentColor"
862
- viewBox="0 -960 960 960"
863
- width="1.5rem"
864
- xmlns="http://www.w3.org/2000/svg"
865
- >
866
- <path d="M120-680v-80h720v80zm0 480v-80h720v80zm0-240v-80h720v80z" />
867
- </svg>
868
- </button>
869
- <h1>
870
- <slot name="header-title-link"></slot>
871
- <div class="header-actions">
872
- <button
873
- aria-label="Toggle theme"
874
- title="Toggle theme"
875
- class="theme-toggle theme-mode-toggle"
876
- >
877
- <svg
878
- class="sun-icon"
879
- height="1.5rem"
880
- fill="currentColor"
881
- hidden
882
- viewBox="0 -960 960 960"
883
- width="1.5rem"
884
- xmlns="http://www.w3.org/2000/svg"
885
- >
886
- <path
887
- 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"
888
- />
889
- </svg>
890
- <svg
891
- class="moon-icon"
892
- height="1.5rem"
893
- fill="currentColor"
894
- viewBox="0 -960 960 960"
895
- width="1.5rem"
896
- xmlns="http://www.w3.org/2000/svg"
897
- >
898
- <path
899
- 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"
900
- />
901
- </svg>
902
- </button>
903
- <button
904
- aria-label="Hide action header"
905
- title="Hide action header"
906
- aria-pressed="false"
907
- class="theme-toggle header-main-toggle"
908
- type="button"
909
- >
910
- <svg
911
- height="1.5rem"
912
- fill="currentColor"
913
- viewBox="0 -960 960 960"
914
- width="1.5rem"
915
- xmlns="http://www.w3.org/2000/svg"
916
- >
917
- <path
918
- d="M280-200h400v-80H280v80Zm200-200L280-600l56-56 104 104v-328h80v328l104-104 56 56-200 200Z"
919
- />
920
- </svg>
921
- </button>
922
- <button
923
- aria-label="Hide activity log"
924
- title="Hide activity log"
925
- aria-pressed="false"
926
- class="theme-toggle activity-log-toggle"
927
- type="button"
928
- hidden
929
- >
930
- <svg
931
- xmlns="http://www.w3.org/2000/svg"
932
- height="24px"
933
- viewBox="0 -960 960 960"
934
- width="24px"
935
- fill="currentColor"
936
- >
937
- <path
938
- 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"
939
- />
940
- </svg>
941
- </button>
942
- <button
943
- aria-label="Hide WebVM terminal"
944
- title="Hide WebVM terminal"
945
- aria-pressed="true"
946
- class="theme-toggle webvm-toggle"
947
- type="button"
948
- hidden
949
- >
950
- <svg
951
- height="1.5rem"
952
- fill="currentColor"
953
- viewBox="0 -960 960 960"
954
- width="1.5rem"
955
- xmlns="http://www.w3.org/2000/svg"
956
- >
957
- <path
958
- 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"
959
- />
960
- </svg>
961
- </button>
962
- <slot name="header-actions-logo"></slot>
963
- </div>
964
- </h1>
965
- </header>
966
-
967
- <!-- Main Body -->
968
- <div class="app-body">
969
- <!-- Sidebar -->
970
- <aside class="sidebar">
971
- <div class="sidebar-boot-skeleton" aria-hidden="true">
972
- <div class="skeleton-nav-wrapper">
973
- <div class="skeleton-item skeleton-nav"></div>
974
- <div class="skeleton-item skeleton-nav"></div>
975
- <div class="skeleton-item skeleton-nav"></div>
976
- <div class="skeleton-item skeleton-nav"></div>
977
- </div>
978
- <div class="skeleton-divider"></div>
979
- <div class="skeleton-convo-wrapper">
980
- <div class="skeleton-item skeleton-convo"></div>
981
- <div class="skeleton-item skeleton-convo"></div>
982
- <div class="skeleton-item skeleton-convo"></div>
983
- </div>
984
- </div>
985
-
986
- <nav>
987
- <ul class="nav-menu">
988
- <li class="nav-item active" data-page="pages">📚 Pages</li>
989
- <li class="nav-item" data-page="chat">💬 Chat</li>
990
- <li class="nav-item" data-page="tasks">&nbsp;✓&nbsp;Tasks</li>
991
- <li class="nav-item" data-page="files">📁 Files</li>
992
- </ul>
993
- </nav>
994
- <slot name="sidebar-nav"></slot>
995
- <slot name="sidebar"></slot>
996
- <slot name="sidebar-content"></slot>
997
- <div class="sidebar-spacer"></div>
998
- <shadow-claw-conversations></shadow-claw-conversations>
999
- <slot name="sidebar-footer"></slot>
1000
- <div class="sidebar-footer">
1001
- <button class="settings-btn" data-action="show-settings">
1002
- ⚙️ Settings
1003
- </button>
1004
- </div>
1005
- </aside>
1006
- <div class="sidebar-resize-handle" title="Drag to resize sidebar"></div>
1007
-
1008
- <!-- Main Content -->
1009
- <main class="main-content">
1010
- <div class="main-content-boot-skeleton" aria-hidden="true">
1011
- <svg
1012
- class="boot-loading-svg"
1013
- viewBox="0 0 44 44"
1014
- xmlns="http://www.w3.org/2000/svg"
1015
- >
1016
- <g
1017
- fill="none"
1018
- fill-rule="evenodd"
1019
- stroke-width="2"
1020
- stroke="currentColor"
1021
- >
1022
- <circle cx="22" cy="22" r="1">
1023
- <animate
1024
- attributeName="r"
1025
- begin="0s"
1026
- dur="1.8s"
1027
- values="1; 20"
1028
- calcMode="spline"
1029
- keyTimes="0; 1"
1030
- keySplines="0.165, 0.84, 0.44, 1"
1031
- repeatCount="indefinite"
1032
- />
1033
- <animate
1034
- attributeName="stroke-opacity"
1035
- begin="0s"
1036
- dur="1.8s"
1037
- values="1; 0"
1038
- calcMode="spline"
1039
- keyTimes="0; 1"
1040
- keySplines="0.3, 0.61, 0.355, 1"
1041
- repeatCount="indefinite"
1042
- />
1043
- </circle>
1044
- <circle cx="22" cy="22" r="1">
1045
- <animate
1046
- attributeName="r"
1047
- begin="-0.9s"
1048
- dur="1.8s"
1049
- values="1; 20"
1050
- calcMode="spline"
1051
- keyTimes="0; 1"
1052
- keySplines="0.165, 0.84, 0.44, 1"
1053
- repeatCount="indefinite"
1054
- />
1055
- <animate
1056
- attributeName="stroke-opacity"
1057
- begin="-0.9s"
1058
- dur="1.8s"
1059
- values="1; 0"
1060
- calcMode="spline"
1061
- keyTimes="0; 1"
1062
- keySplines="0.3, 0.61, 0.355, 1"
1063
- repeatCount="indefinite"
1064
- />
1065
- </circle>
1066
- </g>
1067
- </svg>
1068
- <div class="boot-loading-text">Preparing workspace...</div>
1069
- </div>
1070
-
1071
- <!-- Chat Page — element stamped on first navigation via showPage() -->
1072
- <div class="page chat-page" data-page-id="chat"></div>
1073
-
1074
- <!-- Tasks Page — element stamped on first navigation via showPage() -->
1075
- <div class="page" data-page-id="tasks"></div>
1076
-
1077
- <!-- Files Page — element stamped on first navigation via showPage() -->
1078
- <div class="page" data-page-id="files"></div>
1079
-
1080
- <!-- Pages Page — element stamped on first navigation via showPage() -->
1081
- <div class="page" data-page-id="pages"></div>
1082
-
1083
- <!-- Settings Page — element stamped on first navigation via showPage() -->
1084
- <div class="page" data-page-id="settings"></div>
1085
-
1086
- <!-- Tools Config Page — element stamped on first navigation via showPage() -->
1087
- <div class="page" data-page-id="tools"></div>
1088
-
1089
- <!-- Channels Config Page — element stamped on first navigation via showPage() -->
1090
- <div class="page" data-page-id="channels"></div>
1091
-
1092
- <!-- Chat Split View Resize Handle -->
1093
- <div
1094
- class="chat-split-resize-handle"
1095
- title="Drag to resize chat panel"
1096
- hidden
1097
- ></div>
1098
-
1099
- <!-- file-viewer is stamped lazily by setupEffects when a file is opened -->
1100
- <shadow-claw-toast></shadow-claw-toast>
1101
- </main>
1102
- </div>
1103
-
1104
- <shadow-claw-dialog
1105
- dialog-class="app-dialog"
1106
- dialog-aria-labelledby="appDialogTitle"
1107
- >
1108
- <form
1109
- method="dialog"
1110
- class="app-confirm-dialog__form"
1111
- toolname="app_dialog_confirm"
1112
- tooldescription="Confirm or cancel an application modal dialog prompt"
1113
- >
1114
- <h2 id="appDialogTitle" class="app-dialog__title">Confirm</h2>
1115
- <p class="app-dialog__message"></p>
1116
- <ul class="app-dialog__details" hidden></ul>
1117
- <div class="app-dialog__links" hidden></div>
1118
- <p
1119
- class="app-dialog__countdown"
1120
- hidden
1121
- role="status"
1122
- aria-live="polite"
1123
- aria-atomic="true"
1124
- ></p>
1125
- <div class="app-confirm-dialog__actions">
1126
- <button
1127
- type="submit"
1128
- value="cancel"
1129
- class="app-dialog__btn app-dialog__btn--cancel"
1130
- >
1131
- Cancel
1132
- </button>
1133
- <button
1134
- type="submit"
1135
- value="confirm"
1136
- class="app-dialog__btn app-dialog__btn--confirm"
1137
- >
1138
- Confirm
1139
- </button>
1140
- </div>
1141
- </form>
1142
- </shadow-claw-dialog>
1143
-
1144
- <shadow-claw-dialog
1145
- dialog-class="app-dialog app-prompt-dialog"
1146
- dialog-aria-labelledby="appPromptTitle"
1147
- >
1148
- <form
1149
- method="dialog"
1150
- class="app-prompt-dialog__form"
1151
- toolname="app_dialog_prompt"
1152
- tooldescription="Submit user response or selection to an interactive dialog prompt"
1153
- >
1154
- <h2 id="appPromptTitle" class="app-prompt-dialog__title">
1155
- Agent Question
1156
- </h2>
1157
- <p class="app-prompt-dialog__message"></p>
1158
-
1159
- <div class="app-prompt-dialog__input-area">
1160
- <!-- Will be populated dynamically with either a select or text input -->
1161
- </div>
1162
-
1163
- <div class="app-prompt-dialog__actions">
1164
- <button
1165
- type="submit"
1166
- value="submit"
1167
- class="app-dialog__btn app-dialog__btn--confirm app-prompt-dialog__submit"
1168
- >
1169
- Submit
1170
- </button>
1171
- </div>
1172
- </form>
1173
- </shadow-claw-dialog>
1174
- </div>
1175
- </template>
1176
- `,`text/html`),ot=$.querySelector(`template`);let st=[];st=ot?Array.from(ot.content.children):Array.from($.head.children).concat(Array.from($.body.children));var ct=st;const lt=`shadow-claw`;var ut=class extends x{static styles=at;static template=ct;activityLogCollapsedOverride=null;appLifecycleCleanup=null;chatSidebarHidden=!1;chatSplitViewEnabled=!1;currentPage=y.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`);let e=typeof window<`u`&&window.location?.href?new URL(window.location.href):null;await p();try{let{Orchestrator:t}=await import(`./orchestrator-BrDjQbGf.js`);await p();let n=()=>{Promise.all([import(`./shadow-claw-dialog-BVGf_c3S.js`),import(`./shadow-claw-toast-YjG--2Za.js`)]).catch(console.error)};typeof window<`u`&&`requestIdleCallback`in window?window.requestIdleCallback(n):setTimeout(n,200),await p(),this.orchestrator||=new t,this.db=await this.orchestrator.init(),await p(),await y.init(this.db,this.orchestrator),u(this.db),await p(),await this.render(),await p();let r=!this.chatSidebarHidden||!this.tasksSidebarHidden||!this.filesSidebarHidden,i=y.activePage===`pages`&&this.pagesSidebarHidden&&y.sidebarDefaultPage!==`pages`&&r||y.activePage===`chat`&&this.chatSidebarHidden||y.activePage===`tasks`&&this.tasksSidebarHidden||y.activePage===`files`&&this.filesSidebarHidden;y.hadPersistedActivePage&&!i?W(this.shadowRoot,this,this.db,y,y.activePage,!1):i?W(this.shadowRoot,this,this.db,y,P(y,this),!1):W(this.shadowRoot,this,this.db,y,y.activePage,!1),await K(this.shadowRoot,this,this.db,E,y,e||new URL(window.location.href));let a=e||(typeof window<`u`&&window.location?.href?new URL(window.location.href):null);if(a?.searchParams?.has(`peer`)){let{processPeerQueryParam:e}=await import(`./process-peer-query-param-BL2k0Hu-.js`);await e(this.shadowRoot,this,this.db,this.orchestrator)}if(a?.searchParams?.has(`room`)||a?.searchParams?.has(`host`)){let{processRoomQueryParam:e}=await import(`./process-room-query-param-DM0QCq3_.js`);await e(window,this.shadowRoot,this,this.db,this.orchestrator,y)}let o=async()=>{if(!this.db)return;let{processPendingSharedPayloads:e}=await import(`./process-pending-shared-payloads-C1AgGvn8.js`);await e(window,this.shadowRoot,this,y,E,this.db,a||new URL(window.location.href))};if(a?.searchParams?.has(`share-target`)||globalThis.__SHADOWCLAW_E2E_ENABLE__===!0?await o():typeof window<`u`&&`requestIdleCallback`in window?window.requestIdleCallback(()=>{o().catch(console.error)}):setTimeout(()=>{o().catch(console.error)},1e3),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:s}=await import(`./memory-storage-BkoMlxOr.js`).then(e=>e.n);if(s()){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)}y.setReady()}finally{Ke(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),window.removeEventListener(`hashchange`,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=qe(window.location,e);t&&($e(globalThis.history,t,{replace:!1,useTrailingSlash:!1}),K(this.shadowRoot,this,this.db,E,y,new URL(window.location.href)))};handleNavigationApiNavigate=e=>{let{parsedUrl:t,navigateEvent:n}=ke(this.db,e)??{};t&&n&&typeof n.intercept==`function`&&n.intercept({scroll:`manual`,handler:async()=>{let{parseRouteFromUrlAsync:e}=await import(`./app-routes-V_-URXc5.js`).then(e=>e.t),n=await e(t,y.activeGroupId);n&&await G(this.shadowRoot,this,this.db,E,y,n)}})};shadowClawNav=e=>{this.shadowRoot&&this.db&&nt(this.shadowRoot,this,this.db,E,y,e)};async render(){if(Ge(window,document,this.shadowRoot,this,this.db,y,E,M,new URL(window.location.href)),await rt(this.shadowRoot,this,y,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-C-YdSFZB.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.chatSplitViewEnabled&&!this.chatSidebarHidden&&this.shadowRoot&&e instanceof HTMLElement){let{initChatSplitResize:t}=await import(`./init-chat-split-resize-Btonoy8u.js`);await t(this.shadowRoot,this,e,this.db)}this.terminalElement=document.createElement(`shadow-claw-terminal`),this.terminalElement&&(this.terminalElement.orchestrator=this.orchestrator),V(this.shadowRoot,this.currentPage,this.terminalVisible,this.vmStatus),L(this.shadowRoot,this.currentPage,this.terminalElement,this.terminalVisible,this.terminalPlacementFrame),R(this.shadowRoot,this.headerMainCollapsedOverride),B(this.shadowRoot,this.headerMainCollapsedOverride),z(this.shadowRoot,this.currentPage,y.activityLog.length);let t=e=>{this.vmStatus=e,e.error&&this.terminalVisible&&(this.terminalVisible=!1,this.terminalElement&&(this.terminalElement.hidden=!0),L(this.shadowRoot,this.currentPage,this.terminalElement,this.terminalVisible,this.terminalPlacementFrame)),V(this.shadowRoot,this.currentPage,this.terminalVisible,this.vmStatus)};this.vmStatus=this.orchestrator.vmStatus||this.vmStatus,V(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=>Xe(this.db,y,E,e)),this.orchestrator.events.on(`provider-help`,e=>Ze(document,this.shadowRoot,e)),this.orchestrator.events.on(`room-invite`,e=>Qe(document,this.shadowRoot,this,this.db,y,e)),this.orchestrator.events.on(`ask-user`,e=>Ye(document,this.shadowRoot,this,e)),it(this.shadowRoot,this,this.db,y)}async requestDialog(e){return Z(document,this.shadowRoot,e)}};customElements.get(lt)||customElements.define(lt,ut);export{w as a,T as i,E as n,x as o,he as r,W as t};