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