shadow-claw 1.40.1 → 1.41.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 -0
- package/dist/cli/build/build.js +1 -1
- package/dist/cli/{chunk-Bfz2NYgD.js → chunk-0IeC97mU.js} +7 -7
- package/dist/cli/chunk-3oLxlxPn.js +1 -0
- package/dist/cli/{chunk-BXg4-9Rq2.js → chunk-8CrZyP1b2.js} +1 -1
- package/dist/cli/{chunk-BP5Hg6CM.js → chunk-B--ueArB.js} +1 -1
- package/dist/cli/chunk-BIh7rXlJ2.js +1 -0
- package/dist/cli/{chunk-Drr0VSGA2.js → chunk-BKnTOLLS2.js} +1 -1
- package/dist/cli/{chunk-C5PuRV08.js → chunk-BLMC1Bxv.js} +1 -1
- package/dist/cli/{chunk-B2tNSlFy2.js → chunk-BOigzz2U2.js} +1 -1
- package/dist/cli/{chunk-DOf3DZdR.js → chunk-BOzn335y.js} +1 -1
- package/dist/cli/chunk-BjOeVLb42.js +1 -0
- package/dist/cli/{chunk-DqTx0rRp2.js → chunk-Bjqh5_SU2.js} +1 -1
- package/dist/cli/chunk-BqWBd_jF2.js +1 -0
- package/dist/cli/{chunk-Bc9nRNyN.js → chunk-BvVUnHTq.js} +12 -9
- package/dist/cli/{chunk-DIbSoQmd2.js → chunk-C6FFByBU2.js} +2 -2
- package/dist/cli/{chunk-Drq18VZe.js → chunk-C9-aL3rF.js} +1 -1
- package/dist/cli/{chunk-BUhqHeEA2.js → chunk-C9czddEh2.js} +2 -2
- package/dist/cli/chunk-CCx8WOwz2.js +1 -0
- package/dist/cli/{chunk-BkMSjVJb.js → chunk-CK6ejMig.js} +1 -1
- package/dist/cli/chunk-CUUERioR2.js +1 -0
- package/dist/cli/chunk-CXAobnJd.js +1 -0
- package/dist/cli/chunk-CY1X0pOF2.js +1 -0
- package/dist/cli/chunk-CZvvgLVv.js +1 -0
- package/dist/cli/chunk-CbcwbfJB.js +1 -0
- package/dist/cli/{chunk-quilB3TV2.js → chunk-Ci9OJGcd2.js} +1 -1
- package/dist/cli/chunk-Cj9wl0qx.js +1 -0
- package/dist/cli/{chunk-3gRhOmGo2.js → chunk-CjJsVrKI2.js} +1 -1
- package/dist/cli/{chunk-CmEfzm-_.js → chunk-ClPZ4Rea.js} +1 -1
- package/dist/cli/{chunk-WMPAfIvV2.js → chunk-DHJCGRuG2.js} +1 -1
- package/dist/cli/{chunk-C7Y2xIk4.js → chunk-DKVkYTV9.js} +1 -1
- package/dist/cli/chunk-DR2XtWRo.js +1 -0
- package/dist/cli/{chunk-DID5VvOG.js → chunk-DTES-dE6.js} +3 -3
- package/dist/cli/{chunk-BiVJVh_S.js → chunk-DUlIqkaX.js} +7 -7
- package/dist/cli/{chunk-CkpueGaZ2.js → chunk-DjWle8FF2.js} +1 -1
- package/dist/cli/{chunk-CSvHmNOk.js → chunk-DmRXVLfy.js} +1 -1
- package/dist/cli/{chunk-BT1xXZn72.js → chunk-HlSiTC-u2.js} +1 -1
- package/dist/cli/{chunk-da0bsiOn.js → chunk-P4JSeFBI.js} +1 -1
- package/dist/cli/chunk-UcNbHaRQ.js +1 -0
- package/dist/cli/{chunk-BXFHFbEd.js → chunk-UweLmfQS.js} +1 -1
- package/dist/cli/chunk-bQQkVCw-.js +94 -0
- package/dist/cli/{chunk-CGiXWHTi2.js → chunk-gwpxl-0W2.js} +1 -1
- package/dist/cli/{chunk-NH8koEis2.js → chunk-nmDhxXH_2.js} +1 -1
- package/dist/cli/chunk-p0n_c-I2.js +1 -0
- package/dist/cli/{chunk-D7xP72La.js → chunk-q7r4FosZ.js} +1 -1
- package/dist/cli/cli.js +1 -1
- package/dist/cli/prerender/dsd-shell/prerender-dsd-shell.js +1 -1
- package/dist/electron/main.cjs +1 -1
- package/dist/headless-agent.js +1 -1
- package/dist/lib/{app-routes-BAEMLu9g.js → app-routes-CKkiX12g.js} +7 -2
- package/dist/lib/app-routes-CKkiX12g.js.map +1 -0
- package/dist/lib/components/index.js +26 -26
- 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/syncSlottedSidebarActiveLinks.d.ts +10 -0
- package/dist/lib/components/shadow-claw-a2ui.js +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/{config-CPHDmyTx.js → config-DZkF9LiO.js} +2 -2
- package/dist/lib/{config-CPHDmyTx.js.map → config-DZkF9LiO.js.map} +1 -1
- package/dist/lib/{configurePeerJs-BsJoycQd.js → configurePeerJs-B3IE9BY2.js} +3 -3
- package/dist/lib/{configurePeerJs-BsJoycQd.js.map → configurePeerJs-B3IE9BY2.js.map} +1 -1
- package/dist/lib/{connections-BdIru7bF.js → connections-CalJGWvZ.js} +2 -2
- package/dist/lib/{connections-BdIru7bF.js.map → connections-CalJGWvZ.js.map} +1 -1
- package/dist/lib/{downloadGroupFile-Dn0KsMlV.js → downloadGroupFile-DDE1fIhJ.js} +2 -2
- package/dist/lib/{downloadGroupFile-Dn0KsMlV.js.map → downloadGroupFile-DDE1fIhJ.js.map} +1 -1
- package/dist/lib/{file-viewer-BYrXXu-X.js → file-viewer-Bll2EoGc.js} +5 -5
- package/dist/lib/{file-viewer-BYrXXu-X.js.map → file-viewer-Bll2EoGc.js.map} +1 -1
- package/dist/lib/{getGroupDir-DF-RZO8X.js → getGroupDir-MHv7Lvmp.js} +4 -4
- package/dist/lib/{getGroupDir-DF-RZO8X.js.map → getGroupDir-MHv7Lvmp.js.map} +1 -1
- package/dist/lib/{git-s_0cgKm1.js → git-Bv_M3dgw.js} +3 -3
- package/dist/lib/{git-s_0cgKm1.js.map → git-Bv_M3dgw.js.map} +1 -1
- package/dist/lib/{iframe-sanitizer-DFdda1jJ.js → iframe-sanitizer-C7ZGDjEI.js} +2 -2
- package/dist/lib/{iframe-sanitizer-DFdda1jJ.js.map → iframe-sanitizer-C7ZGDjEI.js.map} +1 -1
- package/dist/lib/{iframe-storage-proxy-qrhZmQyO.js → iframe-storage-proxy-CR8ZYHPd.js} +2 -2
- package/dist/lib/{iframe-storage-proxy-qrhZmQyO.js.map → iframe-storage-proxy-CR8ZYHPd.js.map} +1 -1
- package/dist/lib/index.js +27 -27
- package/dist/lib/{initChatSplitResize-DuNlwCuI.js → initChatSplitResize-DiKTI-wk.js} +2 -2
- package/dist/lib/{initChatSplitResize-DuNlwCuI.js.map → initChatSplitResize-DiKTI-wk.js.map} +1 -1
- package/dist/lib/{initControlPlane-D4UZ4EhV.js → initControlPlane-CzjtQ4aM.js} +15 -15
- package/dist/lib/{initControlPlane-D4UZ4EhV.js.map → initControlPlane-CzjtQ4aM.js.map} +1 -1
- package/dist/lib/{markdown-CRRwbN9h.js → markdown-k8wA9LKy.js} +4 -4
- package/dist/lib/{markdown-CRRwbN9h.js.map → markdown-k8wA9LKy.js.map} +1 -1
- package/dist/lib/{mcp-reconnect-COdZ-cea.js → mcp-reconnect-CGIdfZnS.js} +2 -2
- package/dist/lib/{mcp-reconnect-COdZ-cea.js.map → mcp-reconnect-CGIdfZnS.js.map} +1 -1
- package/dist/lib/{memoryStorage-BsMe2FOQ.js → memoryStorage-DL-Bo3dh.js} +2 -2
- package/dist/lib/{memoryStorage-BsMe2FOQ.js.map → memoryStorage-DL-Bo3dh.js.map} +1 -1
- package/dist/lib/{orchestrator-D9f5fDCb.js → orchestrator-DKHCoikY.js} +11 -11
- package/dist/lib/{orchestrator-D9f5fDCb.js.map → orchestrator-DKHCoikY.js.map} +1 -1
- package/dist/lib/{orchestrator-CMN43L0F.js → orchestrator-Dn1ZOz9B.js} +12 -12
- package/dist/lib/{orchestrator-CMN43L0F.js.map → orchestrator-Dn1ZOz9B.js.map} +1 -1
- package/dist/lib/{peerjs-6u8KtenE.js → peerjs-BK41iBvP.js} +7 -7
- package/dist/lib/{peerjs-6u8KtenE.js.map → peerjs-BK41iBvP.js.map} +1 -1
- package/dist/lib/{push-client-DCnB2-OU.js → push-client-DKgVFD2Z.js} +3 -3
- package/dist/lib/{push-client-DCnB2-OU.js.map → push-client-DKgVFD2Z.js.map} +1 -1
- package/dist/lib/{readGroupFileBytes-nKNJ6sbl.js → readGroupFileBytes-CgU_UfGv.js} +2 -2
- package/dist/lib/{readGroupFileBytes-nKNJ6sbl.js.map → readGroupFileBytes-CgU_UfGv.js.map} +1 -1
- package/dist/lib/{shadow-claw-4x3LqlII.js → shadow-claw-CtCj5Rn_.js} +121 -16
- package/dist/lib/shadow-claw-CtCj5Rn_.js.map +1 -0
- package/dist/lib/{shadow-claw-a2ui-Dipe8nY2.js → shadow-claw-a2ui-CvK5w940.js} +2 -2
- package/dist/lib/{shadow-claw-a2ui-Dipe8nY2.js.map → shadow-claw-a2ui-CvK5w940.js.map} +1 -1
- package/dist/lib/{shadow-claw-accounts-BgCkz3Zv.js → shadow-claw-accounts-Br3XdHro.js} +3 -3
- package/dist/lib/{shadow-claw-accounts-BgCkz3Zv.js.map → shadow-claw-accounts-Br3XdHro.js.map} +1 -1
- package/dist/lib/{shadow-claw-channel-config-CIm_Bxd2.js → shadow-claw-channel-config-Da2dN19M.js} +3 -3
- package/dist/lib/{shadow-claw-channel-config-CIm_Bxd2.js.map → shadow-claw-channel-config-Da2dN19M.js.map} +1 -1
- package/dist/lib/{shadow-claw-channels-CaceK52s.js → shadow-claw-channels-BofYHgz8.js} +3 -3
- package/dist/lib/{shadow-claw-channels-CaceK52s.js.map → shadow-claw-channels-BofYHgz8.js.map} +1 -1
- package/dist/lib/{shadow-claw-chat-BD18-mAR.js → shadow-claw-chat-Dw32DPV2.js} +12 -12
- package/dist/lib/{shadow-claw-chat-BD18-mAR.js.map → shadow-claw-chat-Dw32DPV2.js.map} +1 -1
- package/dist/lib/{shadow-claw-control-plane-U6LsfRPm.js → shadow-claw-control-plane-CwFotFDh.js} +7 -7
- package/dist/lib/{shadow-claw-control-plane-U6LsfRPm.js.map → shadow-claw-control-plane-CwFotFDh.js.map} +1 -1
- package/dist/lib/{shadow-claw-conversations-CDsza_oB.js → shadow-claw-conversations-0UXge23k.js} +5 -5
- package/dist/lib/{shadow-claw-conversations-CDsza_oB.js.map → shadow-claw-conversations-0UXge23k.js.map} +1 -1
- package/dist/lib/{shadow-claw-file-viewer-CuDhkVcL.js → shadow-claw-file-viewer-CAsn9NxH.js} +10 -10
- package/dist/lib/{shadow-claw-file-viewer-CuDhkVcL.js.map → shadow-claw-file-viewer-CAsn9NxH.js.map} +1 -1
- package/dist/lib/{shadow-claw-files-BI0P3m8a.js → shadow-claw-files-xGGhsHNH.js} +9 -9
- package/dist/lib/{shadow-claw-files-BI0P3m8a.js.map → shadow-claw-files-xGGhsHNH.js.map} +1 -1
- package/dist/lib/{shadow-claw-git-xRApLEMN.js → shadow-claw-git-B606hcMU.js} +6 -6
- package/dist/lib/{shadow-claw-git-xRApLEMN.js.map → shadow-claw-git-B606hcMU.js.map} +1 -1
- package/dist/lib/{shadow-claw-integrations-B2e1Nfg1.js → shadow-claw-integrations-Bwq5cba1.js} +4 -4
- package/dist/lib/{shadow-claw-integrations-B2e1Nfg1.js.map → shadow-claw-integrations-Bwq5cba1.js.map} +1 -1
- package/dist/lib/{shadow-claw-llm-Bc2mWuGb.js → shadow-claw-llm-BgpcMBIy.js} +6 -6
- package/dist/lib/{shadow-claw-llm-Bc2mWuGb.js.map → shadow-claw-llm-BgpcMBIy.js.map} +1 -1
- package/dist/lib/{shadow-claw-mcp-remote-D_Bh3aeC.js → shadow-claw-mcp-remote-DvQCA-Bk.js} +4 -4
- package/dist/lib/{shadow-claw-mcp-remote-D_Bh3aeC.js.map → shadow-claw-mcp-remote-DvQCA-Bk.js.map} +1 -1
- package/dist/lib/{shadow-claw-networking-F5W3n5ci.js → shadow-claw-networking-Cxvf9c7E.js} +2 -2
- package/dist/lib/{shadow-claw-networking-F5W3n5ci.js.map → shadow-claw-networking-Cxvf9c7E.js.map} +1 -1
- package/dist/lib/{shadow-claw-notifications-lvMt9WJ1.js → shadow-claw-notifications-CGVcFYBy.js} +3 -3
- package/dist/lib/{shadow-claw-notifications-lvMt9WJ1.js.map → shadow-claw-notifications-CGVcFYBy.js.map} +1 -1
- package/dist/lib/{shadow-claw-page-header-6gq6EMqX.js → shadow-claw-page-header-DAYz3I_o.js} +2 -2
- package/dist/lib/{shadow-claw-page-header-6gq6EMqX.js.map → shadow-claw-page-header-DAYz3I_o.js.map} +1 -1
- package/dist/lib/{shadow-claw-pages-Bo8_z2S-.js → shadow-claw-pages-BLeEZb9k.js} +24 -12
- package/dist/lib/shadow-claw-pages-BLeEZb9k.js.map +1 -0
- package/dist/lib/{shadow-claw-peerjs-DRTLCVDQ.js → shadow-claw-peerjs-BcFnbK74.js} +3 -3
- package/dist/lib/{shadow-claw-peerjs-DRTLCVDQ.js.map → shadow-claw-peerjs-BcFnbK74.js.map} +1 -1
- package/dist/lib/{shadow-claw-settings-D00B4p4L.js → shadow-claw-settings-B7o0Z4hu.js} +9 -9
- package/dist/lib/{shadow-claw-settings-D00B4p4L.js.map → shadow-claw-settings-B7o0Z4hu.js.map} +1 -1
- package/dist/lib/{shadow-claw-storage-DgMe7-Zo.js → shadow-claw-storage-afMVqB7E.js} +5 -5
- package/dist/lib/{shadow-claw-storage-DgMe7-Zo.js.map → shadow-claw-storage-afMVqB7E.js.map} +1 -1
- package/dist/lib/{shadow-claw-task-server-D103YOuI.js → shadow-claw-task-server-B9-MQjl6.js} +2 -2
- package/dist/lib/{shadow-claw-task-server-D103YOuI.js.map → shadow-claw-task-server-B9-MQjl6.js.map} +1 -1
- package/dist/lib/{shadow-claw-tasks-6OhALkq1.js → shadow-claw-tasks-Dc4BC-t-.js} +8 -8
- package/dist/lib/{shadow-claw-tasks-6OhALkq1.js.map → shadow-claw-tasks-Dc4BC-t-.js.map} +1 -1
- package/dist/lib/{shadow-claw-terminal-BGtxA1qD.js → shadow-claw-terminal-BINcTdsk.js} +2 -2
- package/dist/lib/{shadow-claw-terminal-BGtxA1qD.js.map → shadow-claw-terminal-BINcTdsk.js.map} +1 -1
- package/dist/lib/{shadow-claw-tools-OeIwAnnd.js → shadow-claw-tools-BjFgXNLR.js} +7 -7
- package/dist/lib/{shadow-claw-tools-OeIwAnnd.js.map → shadow-claw-tools-BjFgXNLR.js.map} +1 -1
- package/dist/lib/{shadow-claw-webvm-gVFZ197u.js → shadow-claw-webvm-Xe3ByMDw.js} +3 -3
- package/dist/lib/{shadow-claw-webvm-gVFZ197u.js.map → shadow-claw-webvm-Xe3ByMDw.js.map} +1 -1
- package/dist/lib/subsystems/mcp/webmcp.d.ts +64 -0
- package/dist/lib/{syncWebMcpRegistration-Bbph0XZl.js → syncWebMcpRegistration-D7alChz0.js} +21 -6
- package/dist/lib/syncWebMcpRegistration-D7alChz0.js.map +1 -0
- package/dist/lib/{tools-D0OlSzMD.js → tools-Cmhpk3X8.js} +4 -4
- package/dist/lib/{tools-D0OlSzMD.js.map → tools-Cmhpk3X8.js.map} +1 -1
- package/dist/lib/utils/index.js +1 -1
- package/dist/lib/utils/namespacedStorage.js +1 -1
- package/dist/lib/utils/utils.js +1 -1
- package/dist/lib/{utils-DYdrO2KI.js → utils-CzgKe_XZ.js} +4 -4
- package/dist/lib/{utils-DYdrO2KI.js.map → utils-CzgKe_XZ.js.map} +1 -1
- package/dist/lib/{webmcp-D2bocsgh.js → webmcp-oEP9YpR2.js} +119 -3
- package/dist/lib/{webmcp-D2bocsgh.js.map → webmcp-oEP9YpR2.js.map} +1 -1
- 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 +2 -1
- package/dist/public/README.md +1 -0
- package/dist/public/agent.worker.js +1 -1
- package/dist/public/app-routes-C6-H2zPH.js +1 -0
- 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-pages/shadow-claw-pages.css +1 -1
- package/dist/public/{config-D4lVqMs8.js → config-Dewnqegf.js} +1 -1
- package/dist/public/{configurePeerJs-DDOAVSaH.js → configurePeerJs-CaPU2sN5.js} +1 -1
- package/dist/public/{connections-CiukjGiH.js → connections-CwE7jE9l.js} +1 -1
- package/dist/public/{custom-element-security-piU2U-Ec.js → custom-element-security-DLgHMf5R.js} +1 -1
- package/dist/public/docs/example/article/index.html +4 -4
- package/dist/public/docs/guides/publishing-to-github-pages.md +49 -6
- package/dist/public/docs/publishing/index.html +4 -4
- package/dist/public/docs/skill-creator/index.html +4 -4
- package/dist/public/docs/subsystems/pages.md +10 -3
- package/dist/public/docs/subsystems/webmcp.md +89 -1
- package/dist/public/{downloadGroupFile-BiZQYY-O.js → downloadGroupFile-ChWHuap_.js} +1 -1
- package/dist/public/e2e/README.md +2 -2
- package/dist/public/{e2e-bridge-CybB810Q.js → e2e-bridge-BkaldjV2.js} +1 -1
- package/dist/public/{file-viewer-DLUBvOVD.js → file-viewer-Df4qUJCn.js} +1 -1
- package/dist/public/{getGroupDir-CLz5c8cg.js → getGroupDir-CeSr4fzS.js} +1 -1
- package/dist/public/{git-Ba8AeviI.js → git-Bscc1tK-.js} +2 -2
- package/dist/public/{iframe-sanitizer-CKOO7cxp.js → iframe-sanitizer-BVdkQsor.js} +1 -1
- package/dist/public/{iframe-storage-proxy-BvRiccH0.js → iframe-storage-proxy-Cg8aFw7o.js} +1 -1
- package/dist/public/index.css +1 -1
- package/dist/public/index.html +4 -4
- package/dist/public/index.js +1 -1
- package/dist/public/{initChatSplitResize-osJXM2gu.js → initChatSplitResize-C3Rp1LeZ.js} +1 -1
- package/dist/public/{initControlPlane-CNggzsRw.js → initControlPlane-C1pnzG16.js} +1 -1
- package/dist/public/llms.txt +1 -1
- package/dist/public/main/index.html +4 -4
- package/dist/public/main/memory/index.html +4 -4
- package/dist/public/{markdown-CZA-Ye2Q.js → markdown-D3A902nT.js} +1 -1
- package/dist/public/{mcp-reconnect-BK1bYBdC.js → mcp-reconnect-BJWxQBm_.js} +1 -1
- package/dist/public/{memoryStorage-Bew1X8Uy.js → memoryStorage-ykv-Ri-y.js} +1 -1
- package/dist/public/{orchestrator-D6tel2Zp.js → orchestrator-BVnC4Vtt.js} +2 -2
- package/dist/public/{orchestrator-Dc_Q73La.js → orchestrator-CQcc7OFA.js} +2 -2
- package/dist/public/{peerjs-CYs1F7sq.js → peerjs-CYC2cI1Y.js} +1 -1
- package/dist/public/{push-client-_HUyJlFJ.js → push-client-BJrnOULM.js} +1 -1
- package/dist/public/service-worker/fetch-proxy.js +1 -1
- package/dist/public/service-worker.js +1 -1
- package/dist/public/{shadow-claw-Dabb2AEp.js → shadow-claw-WwfOu-tu.js} +33 -3
- package/dist/public/{shadow-claw-accounts-BqGrm47Z.js → shadow-claw-accounts-BFZxrPsH.js} +1 -1
- package/dist/public/{shadow-claw-channels-Ci2UPaaA.js → shadow-claw-channels-C0w0c1EF.js} +1 -1
- package/dist/public/{shadow-claw-chat-BxR6cBYQ.js → shadow-claw-chat-DIJ0A-QN.js} +1 -1
- package/dist/public/{shadow-claw-control-plane-C1A-CZ9H.js → shadow-claw-control-plane-DZoxUd-1.js} +2 -2
- package/dist/public/{shadow-claw-conversations-DcwG05-H.js → shadow-claw-conversations-DMyG_5zj.js} +1 -1
- package/dist/public/{shadow-claw-file-viewer-CDs1QGXk.js → shadow-claw-file-viewer-DYgZjZb9.js} +1 -1
- package/dist/public/{shadow-claw-files-B774Xz1d.js → shadow-claw-files-DIOUdKJr.js} +1 -1
- package/dist/public/{shadow-claw-git-CTIPP0vs.js → shadow-claw-git-if5S0QJr.js} +2 -2
- package/dist/public/{shadow-claw-integrations-CjtkA6l0.js → shadow-claw-integrations-BQt4hcWe.js} +1 -1
- package/dist/public/{shadow-claw-llm-DfmITHde.js → shadow-claw-llm-9uf1KFA0.js} +2 -2
- package/dist/public/{shadow-claw-mcp-remote-BPuV22So.js → shadow-claw-mcp-remote-COpNIzJd.js} +1 -1
- package/dist/public/{shadow-claw-networking-DEMMygy0.js → shadow-claw-networking-AOVRUn6B.js} +1 -1
- package/dist/public/{shadow-claw-notifications-B9Xhcj1P.js → shadow-claw-notifications-CKB-W1TA.js} +1 -1
- package/dist/public/{shadow-claw-page-header-CAXokjQy.js → shadow-claw-page-header-D4LmUigA.js} +1 -1
- package/dist/public/{shadow-claw-pages-BRQw8bTm.js → shadow-claw-pages-BpHRY4vH.js} +12 -3
- package/dist/public/{shadow-claw-settings-BGrDNyqh.js → shadow-claw-settings-CE-aUo_J.js} +3 -3
- package/dist/public/{shadow-claw-storage-DK3pf11w.js → shadow-claw-storage-CFKC-Y3V.js} +1 -1
- package/dist/public/{shadow-claw-task-server-CMp5Vjza.js → shadow-claw-task-server-B_ZjqK4B.js} +1 -1
- package/dist/public/{shadow-claw-tasks-BO8aXM2B.js → shadow-claw-tasks-CGsEv48K.js} +1 -1
- package/dist/public/{shadow-claw-terminal-BSeTuyDa.js → shadow-claw-terminal-DcaS7cPH.js} +1 -1
- package/dist/public/{shadow-claw-tools-Bj6DLZ-2.js → shadow-claw-tools-Cnu9hKy0.js} +1 -1
- package/dist/public/{shadow-claw-webvm-M7d5RH8H.js → shadow-claw-webvm-BB8SFvJ8.js} +1 -1
- package/dist/public/syncWebMcpRegistration-D2Zx4oA1.js +1 -0
- package/dist/public/theme-init.js +1 -1
- package/dist/public/{tools-nysPKnGT.js → tools-sOLCHTj8.js} +1 -1
- package/dist/public/{webmcp-Bo3KTgRb.js → webmcp-YFt6vM1_.js} +1 -1
- package/dist/server.js +188 -188
- package/package.json +1 -1
- package/src/cli/prerender/dsd-shell/prerender-dsd-shell.test.ts +4 -1
- package/src/cli/prerender/dsd-shell/prerender-dsd-shell.ts +7 -1
- package/src/cli/prerender/utils/insert-before-closing-head.test.ts +12 -0
- package/src/cli/prerender/utils/insert-before-closing-head.ts +4 -6
- package/src/cli/site-config/apply.test.ts +90 -0
- package/src/cli/site-config/apply.ts +181 -13
- package/src/components/shadow-claw/shadow-claw.css +26 -0
- package/src/components/shadow-claw/shadow-claw.html +4 -0
- package/src/components/shadow-claw/utils/applyRoute.ts +3 -0
- package/src/components/shadow-claw/utils/bindEventListeners.test.ts +6 -0
- package/src/components/shadow-claw/utils/bindEventListeners.ts +30 -1
- package/src/components/shadow-claw/utils/getRoute.test.ts +52 -0
- package/src/components/shadow-claw/utils/getRoute.ts +18 -0
- package/src/components/shadow-claw/utils/navigateToRoute.test.ts +21 -0
- package/src/components/shadow-claw/utils/navigateToRoute.ts +10 -0
- package/src/components/shadow-claw/utils/sidebarVisibility.ts +12 -4
- package/src/components/shadow-claw/utils/syncSlottedSidebarActiveLinks.test.ts +93 -0
- package/src/components/shadow-claw/utils/syncSlottedSidebarActiveLinks.ts +100 -0
- package/src/components/shadow-claw-pages/shadow-claw-pages.css +10 -1
- package/src/components/shadow-claw-pages/utils/removePreviewIframe.ts +3 -0
- package/src/core/orchestrator/utils/syncWebMcpRegistration.test.ts +52 -0
- package/src/core/orchestrator/utils/syncWebMcpRegistration.ts +28 -1
- package/src/server/middleware/static-files.test.ts +36 -0
- package/src/server/middleware/static-files.ts +14 -6
- package/src/storage/staticRouting.test.ts +36 -0
- package/src/storage/staticRouting.ts +31 -3
- package/src/subsystems/mcp/webmcp.test.ts +255 -0
- package/src/subsystems/mcp/webmcp.ts +253 -0
- package/dist/cli/chunk-00GAzVPl2.js +0 -1
- package/dist/cli/chunk-2hnFoNNC.js +0 -1
- package/dist/cli/chunk-BKQL4nzF2.js +0 -1
- package/dist/cli/chunk-BQ4K3fqj2.js +0 -1
- package/dist/cli/chunk-BVCGo6uf2.js +0 -1
- package/dist/cli/chunk-BcTH_-FL.js +0 -1
- package/dist/cli/chunk-BmD_sPRt.js +0 -1
- package/dist/cli/chunk-BsxNqqer.js +0 -1
- package/dist/cli/chunk-CCcF5T-c.js +0 -1
- package/dist/cli/chunk-CFhvwUeL.js +0 -91
- package/dist/cli/chunk-CwWtvULn.js +0 -1
- package/dist/cli/chunk-Drf-hXIR2.js +0 -1
- package/dist/cli/chunk-Dt5HNYVi.js +0 -1
- package/dist/cli/chunk-DwZQi9Ax.js +0 -1
- package/dist/cli/chunk-m9ZX7TyF2.js +0 -1
- package/dist/lib/app-routes-BAEMLu9g.js.map +0 -1
- package/dist/lib/shadow-claw-4x3LqlII.js.map +0 -1
- package/dist/lib/shadow-claw-pages-Bo8_z2S-.js.map +0 -1
- package/dist/lib/syncWebMcpRegistration-Bbph0XZl.js.map +0 -1
- package/dist/public/app-routes-BMQ4HFaM.js +0 -1
- package/dist/public/syncWebMcpRegistration-4bT0YUyZ.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-viewer-
|
|
1
|
+
{"version":3,"file":"file-viewer-Bll2EoGc.js","names":[],"sources":["../../src/storage/getGroupFile.ts","../../src/stores/file-viewer.ts"],"sourcesContent":["import { getGroupDir } from \"./getGroupDir.js\";\nimport { parsePath } from \"./parsePath.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Get a native File object from a file in a group's workspace.\n */\nexport async function getGroupFile(\n db: ShadowClawDatabase,\n groupId: string,\n filePath: string,\n): Promise<File> {\n const groupDir = await getGroupDir(db, groupId);\n const { dirs, filename } = parsePath(filePath);\n\n let dir = groupDir;\n for (const seg of dirs) {\n dir = await dir.getDirectoryHandle(seg);\n }\n\n const fileHandle = await dir.getFileHandle(filename);\n\n return await fileHandle.getFile();\n}\n","import { Signal } from \"signal-polyfill\";\n\nimport { readGroupFile } from \"../storage/readGroupFile.js\";\nimport { readGroupFileBytes } from \"../storage/readGroupFileBytes.js\";\nimport { getGroupFile } from \"../storage/getGroupFile.js\";\nimport { DEFAULT_GROUP_ID } from \"../config/config.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\nexport interface FileInfo {\n name: string;\n path?: string;\n groupId?: string;\n content: string;\n kind: \"text\" | \"pdf\" | \"binary\";\n binaryContent: Uint8Array | null;\n nativeFile?: File | null;\n mimeType: string;\n}\n\nexport interface FileViewerState {\n file: FileInfo | null;\n openFile: (\n db: ShadowClawDatabase,\n path: string,\n groupId?: string,\n ) => Promise<void>;\n closeFile: () => void;\n}\n\nexport class FileViewerStore {\n private _file: Signal.State<FileInfo | null>;\n\n constructor() {\n this._file = new Signal.State(null);\n }\n\n /**\n * Close the current file\n */\n closeFile() {\n this._file.set(null);\n }\n\n get file(): FileInfo | null {\n return this._file.get();\n }\n\n /**\n * Get current file\n */\n getFile(): FileInfo | null {\n return this.file;\n }\n\n /**\n * Get preview binary MIME type\n */\n getPreviewBinaryMimeType(fileName: string): string {\n const extension = fileName.toLowerCase().split(\".\").pop() || \"\";\n\n const mimeTypes: Record<string, string> = {\n \"3gp\": \"video/3gpp\",\n \"7z\": \"application/x-7z-compressed\",\n aac: \"audio/aac\",\n apng: \"image/apng\",\n avi: \"video/x-msvideo\",\n avif: \"image/avif\",\n bin: \"application/octet-stream\",\n bmp: \"image/bmp\",\n db: \"application/vnd.sqlite3\",\n dll: \"application/octet-stream\",\n dmg: \"application/octet-stream\",\n dylib: \"application/octet-stream\",\n exe: \"application/vnd.microsoft.portable-executable\",\n flac: \"audio/flac\",\n flv: \"video/x-flv\",\n gif: \"image/gif\",\n gz: \"application/gzip\",\n heic: \"image/heic\",\n heif: \"image/heif\",\n ico: \"image/x-icon\",\n iso: \"application/octet-stream\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n m4a: \"audio/mp4\",\n m4v: \"video/mp4\",\n mkv: \"video/x-matroska\",\n mov: \"video/mp4\",\n mp3: \"audio/mpeg\",\n mp4: \"video/mp4\",\n oga: \"audio/ogg\",\n ogg: \"audio/ogg\",\n ogv: \"video/ogg\",\n png: \"image/png\",\n rar: \"application/vnd.rar\",\n so: \"application/octet-stream\",\n sqlite: \"application/vnd.sqlite3\",\n sqlite3: \"application/vnd.sqlite3\",\n tar: \"application/x-tar\",\n tif: \"image/tiff\",\n tiff: \"image/tiff\",\n wasm: \"application/wasm\",\n wav: \"audio/wav\",\n weba: \"audio/webm\",\n webm: \"video/webm\",\n webp: \"image/webp\",\n wmv: \"video/x-ms-wmv\",\n zip: \"application/zip\",\n };\n\n return mimeTypes[extension] || \"\";\n }\n\n /**\n * Open a file\n */\n async openFile(\n db: ShadowClawDatabase,\n path: string,\n groupId: string = DEFAULT_GROUP_ID,\n ): Promise<void> {\n try {\n const name = path.split(\"/\").pop() || path;\n const isPdf = /\\.pdf$/i.test(name);\n const binaryMimeType = this.getPreviewBinaryMimeType(name);\n\n if (isPdf) {\n const binaryContent = await readGroupFileBytes(db, groupId, path);\n\n this._file.set({\n name,\n path,\n groupId,\n content: \"\",\n kind: \"pdf\",\n binaryContent,\n mimeType: \"application/pdf\",\n });\n\n return;\n }\n\n if (binaryMimeType) {\n const nativeFile = await getGroupFile(db, groupId, path);\n\n this._file.set({\n name,\n path,\n groupId,\n content: \"\",\n kind: \"binary\",\n binaryContent: null,\n nativeFile,\n mimeType: binaryMimeType,\n });\n\n return;\n }\n\n const content = await readGroupFile(db, groupId, path);\n this._file.set({\n name,\n path,\n groupId,\n content,\n kind: \"text\",\n binaryContent: null,\n mimeType: \"text/plain\",\n });\n } catch (err) {\n console.error(\"Failed to open file:\", path, err);\n\n throw err;\n }\n }\n}\n\nexport const fileViewerStore = new FileViewerStore();\n"],"mappings":";;;;;;;;;;;AAOA,eAAsB,aACpB,IACA,SACA,UACe;CACf,MAAM,WAAW,MAAM,YAAY,IAAI,OAAO;CAC9C,MAAM,EAAE,MAAM,aAAa,UAAU,QAAQ;CAE7C,IAAI,MAAM;CACV,KAAK,MAAM,OAAO,MAChB,MAAM,MAAM,IAAI,mBAAmB,GAAG;CAKxC,OAAO,OAAM,MAFY,IAAI,cAAc,QAAQ,EAE5B,CAAC,QAAQ;AAClC;;;;ACMA,IAAa,kBAAb,MAA6B;CAC3B,AAAQ;CAER,cAAc;EACZ,KAAK,QAAQ,IAAI,OAAO,MAAM,IAAI;CACpC;;;;CAKA,YAAY;EACV,KAAK,MAAM,IAAI,IAAI;CACrB;CAEA,IAAI,OAAwB;EAC1B,OAAO,KAAK,MAAM,IAAI;CACxB;;;;CAKA,UAA2B;EACzB,OAAO,KAAK;CACd;;;;CAKA,yBAAyB,UAA0B;EAqDjD,OAAO;GAjDL,OAAO;GACP,MAAM;GACN,KAAK;GACL,MAAM;GACN,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,IAAI;GACJ,KAAK;GACL,KAAK;GACL,OAAO;GACP,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,IAAI;GACJ,MAAM;GACN,MAAM;GACN,KAAK;GACL,KAAK;GACL,MAAM;GACN,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,IAAI;GACJ,QAAQ;GACR,SAAS;GACT,KAAK;GACL,KAAK;GACL,MAAM;GACN,MAAM;GACN,KAAK;GACL,MAAM;GACN,MAAM;GACN,MAAM;GACN,KAAK;GACL,KAAK;EAGQ,EApDG,SAAS,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,OAoD9B;CACjC;;;;CAKA,MAAM,SACJ,IACA,MACA,UAAkB,kBACH;EACf,IAAI;GACF,MAAM,OAAO,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK;GACtC,MAAM,QAAQ,UAAU,KAAK,IAAI;GACjC,MAAM,iBAAiB,KAAK,yBAAyB,IAAI;GAEzD,IAAI,OAAO;IACT,MAAM,gBAAgB,MAAM,mBAAmB,IAAI,SAAS,IAAI;IAEhE,KAAK,MAAM,IAAI;KACb;KACA;KACA;KACA,SAAS;KACT,MAAM;KACN;KACA,UAAU;IACZ,CAAC;IAED;GACF;GAEA,IAAI,gBAAgB;IAClB,MAAM,aAAa,MAAM,aAAa,IAAI,SAAS,IAAI;IAEvD,KAAK,MAAM,IAAI;KACb;KACA;KACA;KACA,SAAS;KACT,MAAM;KACN,eAAe;KACf;KACA,UAAU;IACZ,CAAC;IAED;GACF;GAEA,MAAM,UAAU,MAAM,cAAc,IAAI,SAAS,IAAI;GACrD,KAAK,MAAM,IAAI;IACb;IACA;IACA;IACA;IACA,MAAM;IACN,eAAe;IACf,UAAU;GACZ,CAAC;EACH,SAAS,KAAK;GACZ,QAAQ,MAAM,wBAAwB,MAAM,GAAG;GAE/C,MAAM;EACR;CACF;AACF;AAEA,MAAa,kBAAkB,IAAI,gBAAgB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as __exportAll } from "./rolldown-runtime-DZ8SGSJo.js";
|
|
2
2
|
import { t as txPromise } from "./txPromise-DdeRXi7G.js";
|
|
3
3
|
import { r as isHeadlessMode } from "./headless-Ci9RT8g6.js";
|
|
4
|
-
import { r as CONFIG_KEYS, x as OPFS_ROOT } from "./config-
|
|
5
|
-
import { a as getDeploymentNamespace } from "./app-routes-
|
|
4
|
+
import { r as CONFIG_KEYS, x as OPFS_ROOT } from "./config-DZkF9LiO.js";
|
|
5
|
+
import { a as getDeploymentNamespace } from "./app-routes-CKkiX12g.js";
|
|
6
6
|
import { t as getConfig } from "./getConfig-B7JdRqIY.js";
|
|
7
|
-
import { t as getMemoryOpfsRoot } from "./memoryStorage-
|
|
7
|
+
import { t as getMemoryOpfsRoot } from "./memoryStorage-DL-Bo3dh.js";
|
|
8
8
|
|
|
9
9
|
//#region src/storage/getNestedDir.ts
|
|
10
10
|
/**
|
|
@@ -173,4 +173,4 @@ async function getGroupDir(db, groupId) {
|
|
|
173
173
|
|
|
174
174
|
//#endregion
|
|
175
175
|
export { getStorageStatus as a, resetStorageDirectory as c, getStorageRoot as i, setStorageRoot as l, getGroupDir_exports as n, invalidateStorageRoot as o, getOpfsRootDirName as r, isStaleHandleError as s, getGroupDir as t };
|
|
176
|
-
//# sourceMappingURL=getGroupDir-
|
|
176
|
+
//# sourceMappingURL=getGroupDir-MHv7Lvmp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGroupDir-DF-RZO8X.js","names":[],"sources":["../../src/storage/getNestedDir.ts","../../src/db/deleteConfig.ts","../../src/storage/storage.ts","../../src/storage/getGroupDir.ts"],"sourcesContent":["/**\n * Get a handle to a nested directory, creating intermediate dirs.\n */\nexport async function getNestedDir(\n root: FileSystemDirectoryHandle,\n ...segments: string[]\n): Promise<FileSystemDirectoryHandle> {\n let current = root;\n\n for (const seg of segments) {\n const child = await current.getDirectoryHandle(seg, { create: true });\n\n // Guard against stale handles (e.g. Electron after app restart) where\n // getDirectoryHandle returns the same directory instead of navigating.\n if (\n typeof current.isSameEntry === \"function\" &&\n (await current.isSameEntry(child))\n ) {\n throw new Error(\n `Directory navigation failed: \"${seg}\" resolved to the same directory as its parent. ` +\n \"The stored directory handle may be stale — try re-selecting the storage folder.\",\n );\n }\n\n current = child;\n }\n\n return current;\n}\n","import { txPromise } from \"./txPromise.js\";\nimport type { ShadowClawDatabase } from \"./types.js\";\n\n/**\n * Delete a config value\n */\nexport function deleteConfig(\n db: ShadowClawDatabase,\n key: string,\n): Promise<void> {\n return txPromise(db, \"config\", \"readwrite\", (store) =>\n store.delete(key),\n ).then(() => undefined);\n}\n","import { CONFIG_KEYS, OPFS_ROOT } from \"../config/config.js\";\nimport { getDeploymentNamespace } from \"../core/app-routes.js\";\nimport { deleteConfig } from \"../db/deleteConfig.js\";\nimport { getConfig } from \"../db/getConfig.js\";\nimport { getMemoryOpfsRoot } from \"./memoryStorage.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\nexport interface StorageStatus {\n type: \"opfs\" | \"local\";\n permission: \"granted\" | \"denied\" | \"prompt\";\n name: string | null;\n}\n\nlet explicitRoot: FileSystemDirectoryHandle | null = null;\n\n/**\n * Set the storage root to a real filesystem directory (headless CLI mode).\n * Call this early in the agent bootstrap, before any tool or skill execution.\n */\nexport function setStorageRootFromPath(fsPath: string): void {\n const handler = (globalThis as any).__setStorageRootFromPath;\n if (typeof handler === \"function\") {\n handler(fsPath);\n return;\n }\n throw new Error(\n \"setStorageRootFromPath requires node-fs-handle in Node.js environments\",\n );\n}\n\n/**\n * Verify whether a directory handle is actually functional by attempting\n * to iterate its entries.\n */\nasync function probeHandleAccess(\n handle: FileSystemDirectoryHandle,\n reportedPermission: \"granted\" | \"denied\" | \"prompt\",\n): Promise<\"granted\" | \"denied\" | \"prompt\"> {\n try {\n const iter = (handle as any).entries();\n await iter.next();\n\n // I/O succeeded — the handle is functional regardless of what\n // queryPermission reported.\n\n return \"granted\";\n } catch {\n return reportedPermission;\n }\n}\n\n/**\n * Get the OPFS root directory name taking into account deployment namespace.\n */\nexport function getOpfsRootDirName(): string {\n const ns = getDeploymentNamespace();\n\n return ns ? `${OPFS_ROOT}-${ns}` : OPFS_ROOT;\n}\n\nasync function getOpfsRoot(): Promise<FileSystemDirectoryHandle> {\n try {\n if (\n typeof navigator !== \"undefined\" &&\n navigator.storage &&\n typeof navigator.storage.getDirectory === \"function\"\n ) {\n const opfsRoot = await navigator.storage.getDirectory();\n const opfsRootName = getOpfsRootDirName();\n\n return await opfsRoot.getDirectoryHandle(opfsRootName, {\n create: true,\n });\n }\n } catch (err) {\n console.warn(\n \"OPFS is unavailable (e.g. Firefox Private Browsing). Using in-memory storage fallback:\",\n err,\n );\n }\n\n return getMemoryOpfsRoot();\n}\n\n/**\n * Determine whether a value behaves like a FileSystemDirectoryHandle.\n */\nfunction isDirectoryHandle(handle: any): handle is FileSystemDirectoryHandle {\n if (!handle || typeof handle !== \"object\") {\n return false;\n }\n\n const ctor = globalThis.FileSystemDirectoryHandle;\n if (typeof ctor !== \"undefined\" && handle instanceof ctor) {\n return true;\n }\n\n return (\n typeof handle.getDirectoryHandle === \"function\" &&\n typeof handle.getFileHandle === \"function\"\n );\n}\n\n/**\n * Get the current storage root handle.\n */\nexport async function getStorageRoot(\n db: ShadowClawDatabase,\n): Promise<FileSystemDirectoryHandle> {\n if (explicitRoot) {\n return explicitRoot;\n }\n\n try {\n const storedHandle = await getConfig(db, CONFIG_KEYS.STORAGE_HANDLE);\n if (isDirectoryHandle(storedHandle)) {\n const handle = storedHandle as any;\n // Check if we still have permission (main thread only)\n if (typeof handle.queryPermission === \"function\") {\n const status = await handle.queryPermission({\n mode: \"readwrite\",\n });\n\n // Electron (and some other embedders) report \"prompt\" even when the\n // handle is functional. Try to silently re-activate the permission\n // so downstream code doesn't hit stale-handle errors.\n if (\n status !== \"granted\" &&\n typeof handle.requestPermission === \"function\"\n ) {\n try {\n await handle.requestPermission({ mode: \"readwrite\" });\n } catch {\n // requestPermission may throw in some contexts — that's OK\n }\n }\n }\n\n // If we have a handle but no permission, we still return it so tools\n // fail with a clear \"permission denied\" error instead of silently\n // falling back to OPFS and causing \"split brain\".\n\n return handle;\n }\n } catch (err) {\n console.warn(\"Failed to retrieve local storage handle from DB:\", err);\n }\n\n // Fallback to OPFS root only if NO local handle is configured\n\n return getOpfsRoot();\n}\n\n/**\n * Set an explicit storage root handle (used to sync handle to workers or in headless CLI mode).\n */\nexport function setStorageRoot(handle: FileSystemDirectoryHandle | null): void {\n explicitRoot = handle;\n}\n\n/**\n * Clear the cached storage root so the next call to getStorageRoot()\n * re-acquires a fresh handle. Call this when an InvalidStateError\n * indicates the cached handle has gone stale.\n */\nexport function invalidateStorageRoot() {\n explicitRoot = null;\n}\n\n/**\n * Detect a stale-handle DOMException (\"InvalidStateError\") thrown by\n * the File System Access API when the underlying entry has changed\n * since the handle was obtained.\n */\nexport function isStaleHandleError(err: unknown): boolean {\n if (!(err instanceof DOMException)) {\n return false;\n }\n\n return err.name === \"InvalidStateError\";\n}\n\n/**\n * Reset storage to use browser-internal OPFS.\n */\nexport async function resetStorageDirectory(\n db: ShadowClawDatabase,\n): Promise<void> {\n await deleteConfig(db, CONFIG_KEYS.STORAGE_HANDLE);\n\n explicitRoot = null;\n}\n\n/**\n * Get the current storage status.\n */\nexport async function getStorageStatus(\n db: ShadowClawDatabase,\n): Promise<StorageStatus> {\n if (explicitRoot) {\n try {\n const permission = await (explicitRoot as any).queryPermission({\n mode: \"readwrite\",\n });\n\n // Electron may report \"prompt\" even when the handle works.\n // Test actual functionality before reporting the permission level.\n const effectivePermission =\n permission === \"granted\"\n ? \"granted\"\n : await probeHandleAccess(explicitRoot, permission);\n\n return {\n type: \"local\",\n permission: effectivePermission,\n name: explicitRoot.name,\n };\n } catch {\n // If queryPermission fails, explicitRoot might be stale\n console.warn(\"Getting storage status failed for explicit storage root.\");\n }\n }\n\n try {\n const storedHandle = await getConfig(db, CONFIG_KEYS.STORAGE_HANDLE);\n\n if (isDirectoryHandle(storedHandle)) {\n const handle = storedHandle as any;\n const permission = await handle.queryPermission({\n mode: \"readwrite\",\n });\n\n const effectivePermission =\n permission === \"granted\"\n ? \"granted\"\n : await probeHandleAccess(handle, permission);\n\n return {\n type: \"local\",\n permission: effectivePermission,\n name: handle.name,\n };\n }\n } catch (err) {\n console.warn(\"Failed to check storage status:\", err);\n }\n\n return { type: \"opfs\", permission: \"granted\", name: \"OPFS\" };\n}\n","import { isHeadlessMode } from \"../config/headless.js\";\nimport { getNestedDir } from \"./getNestedDir.js\";\nimport { getStorageRoot } from \"./storage.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Get the group workspace directory.\n * In headless mode, the storage root is the workspace directory directly.\n */\nexport async function getGroupDir(\n db: ShadowClawDatabase,\n groupId: string,\n): Promise<FileSystemDirectoryHandle> {\n const root = await getStorageRoot(db);\n if (isHeadlessMode()) {\n return root;\n }\n // Sanitize groupId for filesystem: replace colons with dashes\n const safeId = groupId.replace(/:/g, \"-\");\n\n return getNestedDir(root, \"groups\", safeId);\n}\n"],"mappings":";;;;;;;;;;;;AAGA,eAAsB,aACpB,MACA,GAAG,UACiC;CACpC,IAAI,UAAU;CAEd,KAAK,MAAM,OAAO,UAAU;EAC1B,MAAM,QAAQ,MAAM,QAAQ,mBAAmB,KAAK,EAAE,QAAQ,KAAK,CAAC;EAIpE,IACE,OAAO,QAAQ,gBAAgB,cAC9B,MAAM,QAAQ,YAAY,KAAK,GAEhC,MAAM,IAAI,MACR,iCAAiC,IAAI,gIAEvC;EAGF,UAAU;CACZ;CAEA,OAAO;AACT;;;;;;;ACtBA,SAAgB,aACd,IACA,KACe;CACf,OAAO,UAAU,IAAI,UAAU,cAAc,UAC3C,MAAM,OAAO,GAAG,CAClB,CAAC,CAAC,WAAW,MAAS;AACxB;;;;ACAA,IAAI,eAAiD;;;;;AAqBrD,eAAe,kBACb,QACA,oBAC0C;CAC1C,IAAI;EAEF,MADc,OAAe,QACpB,CAAC,CAAC,KAAK;EAKhB,OAAO;CACT,QAAQ;EACN,OAAO;CACT;AACF;;;;AAKA,SAAgB,qBAA6B;CAC3C,MAAM,KAAK,uBAAuB;CAElC,OAAO,KAAK,GAAG,UAAU,GAAG,OAAO;AACrC;AAEA,eAAe,cAAkD;CAC/D,IAAI;EACF,IACE,OAAO,cAAc,eACrB,UAAU,WACV,OAAO,UAAU,QAAQ,iBAAiB,YAC1C;GACA,MAAM,WAAW,MAAM,UAAU,QAAQ,aAAa;GACtD,MAAM,eAAe,mBAAmB;GAExC,OAAO,MAAM,SAAS,mBAAmB,cAAc,EACrD,QAAQ,KACV,CAAC;EACH;CACF,SAAS,KAAK;EACZ,QAAQ,KACN,0FACA,GACF;CACF;CAEA,OAAO,kBAAkB;AAC3B;;;;AAKA,SAAS,kBAAkB,QAAkD;CAC3E,IAAI,CAAC,UAAU,OAAO,WAAW,UAC/B,OAAO;CAGT,MAAM,OAAO,WAAW;CACxB,IAAI,OAAO,SAAS,eAAe,kBAAkB,MACnD,OAAO;CAGT,OACE,OAAO,OAAO,uBAAuB,cACrC,OAAO,OAAO,kBAAkB;AAEpC;;;;AAKA,eAAsB,eACpB,IACoC;CACpC,IAAI,cACF,OAAO;CAGT,IAAI;EACF,MAAM,eAAe,MAAM,UAAU,IAAI,YAAY,cAAc;EACnE,IAAI,kBAAkB,YAAY,GAAG;GACnC,MAAM,SAAS;GAEf,IAAI,OAAO,OAAO,oBAAoB,YAQpC;QACE,MARmB,OAAO,gBAAgB,EAC1C,MAAM,YACR,CAAC,MAMY,aACX,OAAO,OAAO,sBAAsB,YAEpC,IAAI;KACF,MAAM,OAAO,kBAAkB,EAAE,MAAM,YAAY,CAAC;IACtD,QAAQ,CAER;GACF;GAOF,OAAO;EACT;CACF,SAAS,KAAK;EACZ,QAAQ,KAAK,oDAAoD,GAAG;CACtE;CAIA,OAAO,YAAY;AACrB;;;;AAKA,SAAgB,eAAe,QAAgD;CAC7E,eAAe;AACjB;;;;;;AAOA,SAAgB,wBAAwB;CACtC,eAAe;AACjB;;;;;;AAOA,SAAgB,mBAAmB,KAAuB;CACxD,IAAI,EAAE,eAAe,eACnB,OAAO;CAGT,OAAO,IAAI,SAAS;AACtB;;;;AAKA,eAAsB,sBACpB,IACe;CACf,MAAM,aAAa,IAAI,YAAY,cAAc;CAEjD,eAAe;AACjB;;;;AAKA,eAAsB,iBACpB,IACwB;CACxB,IAAI,cACF,IAAI;EACF,MAAM,aAAa,MAAO,aAAqB,gBAAgB,EAC7D,MAAM,YACR,CAAC;EASD,OAAO;GACL,MAAM;GACN,YANA,eAAe,YACX,YACA,MAAM,kBAAkB,cAAc,UAAU;GAKpD,MAAM,aAAa;EACrB;CACF,QAAQ;EAEN,QAAQ,KAAK,0DAA0D;CACzE;CAGF,IAAI;EACF,MAAM,eAAe,MAAM,UAAU,IAAI,YAAY,cAAc;EAEnE,IAAI,kBAAkB,YAAY,GAAG;GACnC,MAAM,SAAS;GACf,MAAM,aAAa,MAAM,OAAO,gBAAgB,EAC9C,MAAM,YACR,CAAC;GAOD,OAAO;IACL,MAAM;IACN,YANA,eAAe,YACX,YACA,MAAM,kBAAkB,QAAQ,UAAU;IAK9C,MAAM,OAAO;GACf;EACF;CACF,SAAS,KAAK;EACZ,QAAQ,KAAK,mCAAmC,GAAG;CACrD;CAEA,OAAO;EAAE,MAAM;EAAQ,YAAY;EAAW,MAAM;CAAO;AAC7D;;;;;;;;;AC/OA,eAAsB,YACpB,IACA,SACoC;CACpC,MAAM,OAAO,MAAM,eAAe,EAAE;CACpC,IAAI,eAAe,GACjB,OAAO;CAKT,OAAO,aAAa,MAAM,UAFX,QAAQ,QAAQ,MAAM,GAEI,CAAC;AAC5C"}
|
|
1
|
+
{"version":3,"file":"getGroupDir-MHv7Lvmp.js","names":[],"sources":["../../src/storage/getNestedDir.ts","../../src/db/deleteConfig.ts","../../src/storage/storage.ts","../../src/storage/getGroupDir.ts"],"sourcesContent":["/**\n * Get a handle to a nested directory, creating intermediate dirs.\n */\nexport async function getNestedDir(\n root: FileSystemDirectoryHandle,\n ...segments: string[]\n): Promise<FileSystemDirectoryHandle> {\n let current = root;\n\n for (const seg of segments) {\n const child = await current.getDirectoryHandle(seg, { create: true });\n\n // Guard against stale handles (e.g. Electron after app restart) where\n // getDirectoryHandle returns the same directory instead of navigating.\n if (\n typeof current.isSameEntry === \"function\" &&\n (await current.isSameEntry(child))\n ) {\n throw new Error(\n `Directory navigation failed: \"${seg}\" resolved to the same directory as its parent. ` +\n \"The stored directory handle may be stale — try re-selecting the storage folder.\",\n );\n }\n\n current = child;\n }\n\n return current;\n}\n","import { txPromise } from \"./txPromise.js\";\nimport type { ShadowClawDatabase } from \"./types.js\";\n\n/**\n * Delete a config value\n */\nexport function deleteConfig(\n db: ShadowClawDatabase,\n key: string,\n): Promise<void> {\n return txPromise(db, \"config\", \"readwrite\", (store) =>\n store.delete(key),\n ).then(() => undefined);\n}\n","import { CONFIG_KEYS, OPFS_ROOT } from \"../config/config.js\";\nimport { getDeploymentNamespace } from \"../core/app-routes.js\";\nimport { deleteConfig } from \"../db/deleteConfig.js\";\nimport { getConfig } from \"../db/getConfig.js\";\nimport { getMemoryOpfsRoot } from \"./memoryStorage.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\nexport interface StorageStatus {\n type: \"opfs\" | \"local\";\n permission: \"granted\" | \"denied\" | \"prompt\";\n name: string | null;\n}\n\nlet explicitRoot: FileSystemDirectoryHandle | null = null;\n\n/**\n * Set the storage root to a real filesystem directory (headless CLI mode).\n * Call this early in the agent bootstrap, before any tool or skill execution.\n */\nexport function setStorageRootFromPath(fsPath: string): void {\n const handler = (globalThis as any).__setStorageRootFromPath;\n if (typeof handler === \"function\") {\n handler(fsPath);\n return;\n }\n throw new Error(\n \"setStorageRootFromPath requires node-fs-handle in Node.js environments\",\n );\n}\n\n/**\n * Verify whether a directory handle is actually functional by attempting\n * to iterate its entries.\n */\nasync function probeHandleAccess(\n handle: FileSystemDirectoryHandle,\n reportedPermission: \"granted\" | \"denied\" | \"prompt\",\n): Promise<\"granted\" | \"denied\" | \"prompt\"> {\n try {\n const iter = (handle as any).entries();\n await iter.next();\n\n // I/O succeeded — the handle is functional regardless of what\n // queryPermission reported.\n\n return \"granted\";\n } catch {\n return reportedPermission;\n }\n}\n\n/**\n * Get the OPFS root directory name taking into account deployment namespace.\n */\nexport function getOpfsRootDirName(): string {\n const ns = getDeploymentNamespace();\n\n return ns ? `${OPFS_ROOT}-${ns}` : OPFS_ROOT;\n}\n\nasync function getOpfsRoot(): Promise<FileSystemDirectoryHandle> {\n try {\n if (\n typeof navigator !== \"undefined\" &&\n navigator.storage &&\n typeof navigator.storage.getDirectory === \"function\"\n ) {\n const opfsRoot = await navigator.storage.getDirectory();\n const opfsRootName = getOpfsRootDirName();\n\n return await opfsRoot.getDirectoryHandle(opfsRootName, {\n create: true,\n });\n }\n } catch (err) {\n console.warn(\n \"OPFS is unavailable (e.g. Firefox Private Browsing). Using in-memory storage fallback:\",\n err,\n );\n }\n\n return getMemoryOpfsRoot();\n}\n\n/**\n * Determine whether a value behaves like a FileSystemDirectoryHandle.\n */\nfunction isDirectoryHandle(handle: any): handle is FileSystemDirectoryHandle {\n if (!handle || typeof handle !== \"object\") {\n return false;\n }\n\n const ctor = globalThis.FileSystemDirectoryHandle;\n if (typeof ctor !== \"undefined\" && handle instanceof ctor) {\n return true;\n }\n\n return (\n typeof handle.getDirectoryHandle === \"function\" &&\n typeof handle.getFileHandle === \"function\"\n );\n}\n\n/**\n * Get the current storage root handle.\n */\nexport async function getStorageRoot(\n db: ShadowClawDatabase,\n): Promise<FileSystemDirectoryHandle> {\n if (explicitRoot) {\n return explicitRoot;\n }\n\n try {\n const storedHandle = await getConfig(db, CONFIG_KEYS.STORAGE_HANDLE);\n if (isDirectoryHandle(storedHandle)) {\n const handle = storedHandle as any;\n // Check if we still have permission (main thread only)\n if (typeof handle.queryPermission === \"function\") {\n const status = await handle.queryPermission({\n mode: \"readwrite\",\n });\n\n // Electron (and some other embedders) report \"prompt\" even when the\n // handle is functional. Try to silently re-activate the permission\n // so downstream code doesn't hit stale-handle errors.\n if (\n status !== \"granted\" &&\n typeof handle.requestPermission === \"function\"\n ) {\n try {\n await handle.requestPermission({ mode: \"readwrite\" });\n } catch {\n // requestPermission may throw in some contexts — that's OK\n }\n }\n }\n\n // If we have a handle but no permission, we still return it so tools\n // fail with a clear \"permission denied\" error instead of silently\n // falling back to OPFS and causing \"split brain\".\n\n return handle;\n }\n } catch (err) {\n console.warn(\"Failed to retrieve local storage handle from DB:\", err);\n }\n\n // Fallback to OPFS root only if NO local handle is configured\n\n return getOpfsRoot();\n}\n\n/**\n * Set an explicit storage root handle (used to sync handle to workers or in headless CLI mode).\n */\nexport function setStorageRoot(handle: FileSystemDirectoryHandle | null): void {\n explicitRoot = handle;\n}\n\n/**\n * Clear the cached storage root so the next call to getStorageRoot()\n * re-acquires a fresh handle. Call this when an InvalidStateError\n * indicates the cached handle has gone stale.\n */\nexport function invalidateStorageRoot() {\n explicitRoot = null;\n}\n\n/**\n * Detect a stale-handle DOMException (\"InvalidStateError\") thrown by\n * the File System Access API when the underlying entry has changed\n * since the handle was obtained.\n */\nexport function isStaleHandleError(err: unknown): boolean {\n if (!(err instanceof DOMException)) {\n return false;\n }\n\n return err.name === \"InvalidStateError\";\n}\n\n/**\n * Reset storage to use browser-internal OPFS.\n */\nexport async function resetStorageDirectory(\n db: ShadowClawDatabase,\n): Promise<void> {\n await deleteConfig(db, CONFIG_KEYS.STORAGE_HANDLE);\n\n explicitRoot = null;\n}\n\n/**\n * Get the current storage status.\n */\nexport async function getStorageStatus(\n db: ShadowClawDatabase,\n): Promise<StorageStatus> {\n if (explicitRoot) {\n try {\n const permission = await (explicitRoot as any).queryPermission({\n mode: \"readwrite\",\n });\n\n // Electron may report \"prompt\" even when the handle works.\n // Test actual functionality before reporting the permission level.\n const effectivePermission =\n permission === \"granted\"\n ? \"granted\"\n : await probeHandleAccess(explicitRoot, permission);\n\n return {\n type: \"local\",\n permission: effectivePermission,\n name: explicitRoot.name,\n };\n } catch {\n // If queryPermission fails, explicitRoot might be stale\n console.warn(\"Getting storage status failed for explicit storage root.\");\n }\n }\n\n try {\n const storedHandle = await getConfig(db, CONFIG_KEYS.STORAGE_HANDLE);\n\n if (isDirectoryHandle(storedHandle)) {\n const handle = storedHandle as any;\n const permission = await handle.queryPermission({\n mode: \"readwrite\",\n });\n\n const effectivePermission =\n permission === \"granted\"\n ? \"granted\"\n : await probeHandleAccess(handle, permission);\n\n return {\n type: \"local\",\n permission: effectivePermission,\n name: handle.name,\n };\n }\n } catch (err) {\n console.warn(\"Failed to check storage status:\", err);\n }\n\n return { type: \"opfs\", permission: \"granted\", name: \"OPFS\" };\n}\n","import { isHeadlessMode } from \"../config/headless.js\";\nimport { getNestedDir } from \"./getNestedDir.js\";\nimport { getStorageRoot } from \"./storage.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Get the group workspace directory.\n * In headless mode, the storage root is the workspace directory directly.\n */\nexport async function getGroupDir(\n db: ShadowClawDatabase,\n groupId: string,\n): Promise<FileSystemDirectoryHandle> {\n const root = await getStorageRoot(db);\n if (isHeadlessMode()) {\n return root;\n }\n // Sanitize groupId for filesystem: replace colons with dashes\n const safeId = groupId.replace(/:/g, \"-\");\n\n return getNestedDir(root, \"groups\", safeId);\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as __toESM, t as __commonJSMin } from "./rolldown-runtime-DZ8SGSJo.js";
|
|
2
2
|
import { r as isHeadlessMode } from "./headless-Ci9RT8g6.js";
|
|
3
|
-
import { a as DEFAULT_DEV_PORT, i as DEFAULT_DEV_HOST } from "./config-
|
|
3
|
+
import { a as DEFAULT_DEV_PORT, i as DEFAULT_DEV_HOST } from "./config-DZkF9LiO.js";
|
|
4
4
|
import { t as require_browser } from "./browser-FvTfy_Ym.js";
|
|
5
5
|
import { t as require_buffer } from "./buffer-BEXn271X.js";
|
|
6
6
|
import { a as require_common, i as require_messages, n as require_inflate$1, o as require_zstream, r as require_deflate$1, t as require_constants } from "./constants-DsXVuJVP.js";
|
|
@@ -15545,7 +15545,7 @@ async function initGitFs() {
|
|
|
15545
15545
|
console.warn("OPFS is unavailable for git root, falling back to memory:", err);
|
|
15546
15546
|
}
|
|
15547
15547
|
if (!opfsRoot) {
|
|
15548
|
-
const { getMemoryOpfsRoot } = await import("./memoryStorage-
|
|
15548
|
+
const { getMemoryOpfsRoot } = await import("./memoryStorage-DL-Bo3dh.js").then((n) => n.n);
|
|
15549
15549
|
opfsRoot = getMemoryOpfsRoot();
|
|
15550
15550
|
}
|
|
15551
15551
|
_fs = makeDirHandleFs(opfsRoot);
|
|
@@ -16461,4 +16461,4 @@ async function gitUnstage({ repo, filepath, groupRoot }) {
|
|
|
16461
16461
|
|
|
16462
16462
|
//#endregion
|
|
16463
16463
|
export { buildAuthCallbacks, ensureCoreFilemodeFalse, ensureDir, getGitTargetAddressSpace, getProxyUrl, getRemoteUrl, gitAdd, gitBranch, gitCheckout, gitClone, gitCommit, gitConfig, gitCurrentBranch, gitDeleteBranch, gitDeleteRepo, gitDiff, gitFetch, gitInit, gitListBranches, gitListRepos, gitListTags, gitLog, gitMerge, gitPull, gitPush, gitReadFileAtRef, gitRemote, gitReset, gitShow, gitStatus, gitTag, gitUnstage, initGitContext, initGitFs, makeDirHandleFs, makeOpfsFs, repoDir, repoNameFromUrl, rmdirRecursive };
|
|
16464
|
-
//# sourceMappingURL=git-
|
|
16464
|
+
//# sourceMappingURL=git-Bv_M3dgw.js.map
|