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
|
@@ -18,6 +18,7 @@ export * from "./normalize-string-list.js";
|
|
|
18
18
|
export * from "./normalize-workspace-path.js";
|
|
19
19
|
export * from "./parse-boolean-config.js";
|
|
20
20
|
export * from "./parse-stored-string-list.js";
|
|
21
|
+
export * from "./resolve-page-script-dependencies.js";
|
|
21
22
|
export * from "./retry.js";
|
|
22
23
|
export * from "./seo.js";
|
|
23
24
|
export * from "./ulid.js";
|
package/dist/lib/utils/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { IMAGE_MIME_TYPES, MIME_TYPES, getImageMimeType, getMimeType, guessMimeT
|
|
|
5
5
|
import { ulid } from "./ulid.js";
|
|
6
6
|
import { bufferToHex, computeSha256, toArrayBuffer } from "./crypto.js";
|
|
7
7
|
import { escapeHtml, escapeJsonForHtmlScript, stripHtml, unescapeHtml } from "./html.js";
|
|
8
|
-
import { o as handleSpecialLinkNavigation, s as sanitizeHtml } from "../trusted-types-
|
|
8
|
+
import { o as handleSpecialLinkNavigation, s as sanitizeHtml } from "../trusted-types-0cu5Dm6M.js";
|
|
9
9
|
import { isTruthyConfigValue, parseBooleanConfig } from "./parse-boolean-config.js";
|
|
10
10
|
import { asNumber, asStringArray, asUidArray, coerce, coerceArray, coerceNumber, coerceStringArray, coerceUidArray } from "./coerce.js";
|
|
11
11
|
import { basename, cleanFilename, sanitizeFilename } from "./filename.js";
|
|
@@ -20,6 +20,7 @@ import { applyJsonPatch } from "./json-patch.js";
|
|
|
20
20
|
import { parseStoredStringList } from "./parse-stored-string-list.js";
|
|
21
21
|
import { createFrontmatterDetailsElement, createFrontmatterElement, renderFrontmatterMarkup, splitFrontmatter } from "./frontmatter.js";
|
|
22
22
|
import { formatDateForFilename, formatTimestamp } from "./date.js";
|
|
23
|
+
import { resolvePageScriptDependencies } from "./resolve-page-script-dependencies.js";
|
|
23
24
|
import { extractMarkdownDescription, formatSeoTitle, patchHtmlHeadMetadata, resolveCanonicalUrl } from "./seo.js";
|
|
24
25
|
import { isLocalOrPrivateHost, isLoopbackHost, isPrivateIp, isRemoteEnvironment } from "./network.js";
|
|
25
26
|
|
|
@@ -84,6 +85,7 @@ var utils_exports = /* @__PURE__ */ __exportAll({
|
|
|
84
85
|
removeNamespacedItem: () => removeNamespacedItem,
|
|
85
86
|
renderFrontmatterMarkup: () => renderFrontmatterMarkup,
|
|
86
87
|
resolveCanonicalUrl: () => resolveCanonicalUrl,
|
|
88
|
+
resolvePageScriptDependencies: () => resolvePageScriptDependencies,
|
|
87
89
|
sanitizeFilename: () => sanitizeFilename,
|
|
88
90
|
sanitizeHtml: () => sanitizeHtml,
|
|
89
91
|
setNamespacedItem: () => setNamespacedItem,
|
|
@@ -100,5 +102,5 @@ var utils_exports = /* @__PURE__ */ __exportAll({
|
|
|
100
102
|
});
|
|
101
103
|
|
|
102
104
|
//#endregion
|
|
103
|
-
export { HttpError, IMAGE_MIME_TYPES, MIME_TYPES, RETRYABLE_STATUS_CODES, applyJsonPatch, asNumber, asStringArray, asUidArray, base64, base64ToBytes, basename, bufferToHex, bytesToBase64, cleanFilename, coerce, coerceArray, coerceNumber, coerceStringArray, coerceUidArray, computeDelay, computeSha256, createFrontmatterDetailsElement, createFrontmatterElement, escapeHtml, escapeJsonForHtmlScript, extractMarkdownDescription, formatDateForFilename, formatSeoTitle, formatTimestamp, getImageMimeType, getMimeType, getNamespacedItem, getNamespacedStorageKey, guessMimeTypeFromFilename, handleSpecialLinkNavigation, hasPathTraversal, inferAttachmentMimeType, isBinary, isBinaryContent, isBinaryContentType, isImagePath, isLocalOrPrivateHost, isLoopbackHost, isMimeType, isPagePathAllowed, isPrivateIp, isRemoteEnvironment, isRetryableFetchError, isRetryableHttpError, isTruthyConfigValue, mime, normalizeStringList, normalizeWorkspacePath, parseBooleanConfig, parseStoredStringList, patchHtmlHeadMetadata, removeNamespacedItem, renderFrontmatterMarkup, resolveCanonicalUrl, sanitizeFilename, sanitizeHtml, setNamespacedItem, sleep, splitFrontmatter, stripHtml, utils_exports as t, toArrayBuffer, toPosixPath, trimSlashes, ulid, unescapeHtml, withRetry, yieldToMain };
|
|
105
|
+
export { HttpError, IMAGE_MIME_TYPES, MIME_TYPES, RETRYABLE_STATUS_CODES, applyJsonPatch, asNumber, asStringArray, asUidArray, base64, base64ToBytes, basename, bufferToHex, bytesToBase64, cleanFilename, coerce, coerceArray, coerceNumber, coerceStringArray, coerceUidArray, computeDelay, computeSha256, createFrontmatterDetailsElement, createFrontmatterElement, escapeHtml, escapeJsonForHtmlScript, extractMarkdownDescription, formatDateForFilename, formatSeoTitle, formatTimestamp, getImageMimeType, getMimeType, getNamespacedItem, getNamespacedStorageKey, guessMimeTypeFromFilename, handleSpecialLinkNavigation, hasPathTraversal, inferAttachmentMimeType, isBinary, isBinaryContent, isBinaryContentType, isImagePath, isLocalOrPrivateHost, isLoopbackHost, isMimeType, isPagePathAllowed, isPrivateIp, isRemoteEnvironment, isRetryableFetchError, isRetryableHttpError, isTruthyConfigValue, mime, normalizeStringList, normalizeWorkspacePath, parseBooleanConfig, parseStoredStringList, patchHtmlHeadMetadata, removeNamespacedItem, renderFrontmatterMarkup, resolveCanonicalUrl, resolvePageScriptDependencies, sanitizeFilename, sanitizeHtml, setNamespacedItem, sleep, splitFrontmatter, stripHtml, utils_exports as t, toArrayBuffer, toPosixPath, trimSlashes, ulid, unescapeHtml, withRetry, yieldToMain };
|
|
104
106
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/utils/index.ts"],"sourcesContent":["export * from \"./base64.js\";\nexport * from \"./coerce.js\";\nexport * from \"./crypto.js\";\nexport * from \"./date.js\";\nexport * from \"./delay.js\";\nexport * from \"./filename.js\";\nexport * from \"./frontmatter.js\";\nexport * from \"./has-path-traversal.js\";\nexport * from \"./html.js\";\nexport * from \"./http-error.js\";\nexport * from \"./is-binary.js\";\nexport * from \"./is-page-path-allowed.js\";\nexport * from \"./json-patch.js\";\nexport * from \"./mime.js\";\nexport * from \"./namespaced-storage.js\";\nexport * from \"./network.js\";\nexport * from \"./normalize-string-list.js\";\nexport * from \"./normalize-workspace-path.js\";\nexport * from \"./parse-boolean-config.js\";\nexport * from \"./parse-stored-string-list.js\";\nexport * from \"./retry.js\";\nexport * from \"./seo.js\";\nexport * from \"./ulid.js\";\nexport * from \"./utils.js\";\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/utils/index.ts"],"sourcesContent":["export * from \"./base64.js\";\nexport * from \"./coerce.js\";\nexport * from \"./crypto.js\";\nexport * from \"./date.js\";\nexport * from \"./delay.js\";\nexport * from \"./filename.js\";\nexport * from \"./frontmatter.js\";\nexport * from \"./has-path-traversal.js\";\nexport * from \"./html.js\";\nexport * from \"./http-error.js\";\nexport * from \"./is-binary.js\";\nexport * from \"./is-page-path-allowed.js\";\nexport * from \"./json-patch.js\";\nexport * from \"./mime.js\";\nexport * from \"./namespaced-storage.js\";\nexport * from \"./network.js\";\nexport * from \"./normalize-string-list.js\";\nexport * from \"./normalize-workspace-path.js\";\nexport * from \"./parse-boolean-config.js\";\nexport * from \"./parse-stored-string-list.js\";\nexport * from \"./resolve-page-script-dependencies.js\";\nexport * from \"./retry.js\";\nexport * from \"./seo.js\";\nexport * from \"./ulid.js\";\nexport * from \"./utils.js\";\n"],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface PageScriptDependencySource {
|
|
2
|
+
src: string;
|
|
3
|
+
id?: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
global?: boolean;
|
|
6
|
+
autoload?: boolean;
|
|
7
|
+
type?: string;
|
|
8
|
+
async?: boolean;
|
|
9
|
+
defer?: boolean;
|
|
10
|
+
hasInit?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resolves script dependencies for a page given a list of approved script descriptors
|
|
14
|
+
* and frontmatter/dependency declarations.
|
|
15
|
+
*
|
|
16
|
+
* Always includes scripts marked as `global` or `autoload`.
|
|
17
|
+
* Gracefully ignores any unknown dependency IDs or missing scripts without throwing.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolvePageScriptDependencies(descriptors?: Array<string | PageScriptDependencySource>, frontmatterOrDependencies?: Record<string, any> | string[] | string | null, content?: string | null): PageScriptDependencySource[];
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
//#region src/utils/resolve-page-script-dependencies.ts
|
|
2
|
+
function stripScriptPrefix(s) {
|
|
3
|
+
return s.replace(/^\.?\//, "").replace(/^pages\/main\//, "").toLowerCase().trim();
|
|
4
|
+
}
|
|
5
|
+
function getFilename(filepath) {
|
|
6
|
+
return (filepath.split("/").pop() || "").toLowerCase().trim();
|
|
7
|
+
}
|
|
8
|
+
function getFilenameStem(filepath) {
|
|
9
|
+
return getFilename(filepath).replace(/\.(js|mjs|cjs|ts)$/i, "").toLowerCase().trim();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Resolves script dependencies for a page given a list of approved script descriptors
|
|
13
|
+
* and frontmatter/dependency declarations.
|
|
14
|
+
*
|
|
15
|
+
* Always includes scripts marked as `global` or `autoload`.
|
|
16
|
+
* Gracefully ignores any unknown dependency IDs or missing scripts without throwing.
|
|
17
|
+
*/
|
|
18
|
+
function resolvePageScriptDependencies(descriptors = [], frontmatterOrDependencies, content) {
|
|
19
|
+
if (!Array.isArray(descriptors) || descriptors.length === 0) return [];
|
|
20
|
+
const normalizedDescriptors = descriptors.map((item) => {
|
|
21
|
+
if (typeof item === "string") return { src: item };
|
|
22
|
+
if (item && typeof item === "object" && typeof item.src === "string") return item;
|
|
23
|
+
return null;
|
|
24
|
+
}).filter((entry) => entry !== null);
|
|
25
|
+
const resolved = [];
|
|
26
|
+
const addedSrcs = /* @__PURE__ */ new Set();
|
|
27
|
+
for (const desc of normalizedDescriptors) if (desc.global === true || desc.autoload === true) {
|
|
28
|
+
if (!addedSrcs.has(desc.src)) {
|
|
29
|
+
addedSrcs.add(desc.src);
|
|
30
|
+
resolved.push(desc);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (!frontmatterOrDependencies && !content) return resolved;
|
|
34
|
+
const rawItems = [];
|
|
35
|
+
if (Array.isArray(frontmatterOrDependencies)) rawItems.push(...frontmatterOrDependencies);
|
|
36
|
+
else if (typeof frontmatterOrDependencies === "string") rawItems.push(...frontmatterOrDependencies.split(/[,;\s]+/));
|
|
37
|
+
else if (typeof frontmatterOrDependencies === "object" && frontmatterOrDependencies !== null) {
|
|
38
|
+
const data = frontmatterOrDependencies;
|
|
39
|
+
if (Array.isArray(data.dependencies)) rawItems.push(...data.dependencies);
|
|
40
|
+
else if (typeof data.dependencies === "string") rawItems.push(...data.dependencies.split(/[,;\s]+/));
|
|
41
|
+
if (Array.isArray(data.scripts)) rawItems.push(...data.scripts);
|
|
42
|
+
else if (typeof data.scripts === "string") rawItems.push(...data.scripts.split(/[,;\s]+/));
|
|
43
|
+
}
|
|
44
|
+
if (typeof content === "string" && content) {
|
|
45
|
+
const inlineScriptMatches = content.matchAll(/<script\b[^>]*src=["']([^"']+)["'][^>]*>/gi);
|
|
46
|
+
for (const match of inlineScriptMatches) if (match[1]) rawItems.push(match[1]);
|
|
47
|
+
for (const desc of normalizedDescriptors) {
|
|
48
|
+
const candidates = [
|
|
49
|
+
desc.id,
|
|
50
|
+
desc.name,
|
|
51
|
+
getFilenameStem(desc.src),
|
|
52
|
+
getFilename(desc.src)
|
|
53
|
+
].filter(Boolean);
|
|
54
|
+
for (const tag of candidates) if (tag.includes("-")) {
|
|
55
|
+
if (new RegExp(`<${tag}[\\s>/]`, "i").test(content)) {
|
|
56
|
+
rawItems.push(tag);
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const requestedKeys = [];
|
|
63
|
+
for (const item of rawItems) if (typeof item === "string") {
|
|
64
|
+
const trimmed = item.trim();
|
|
65
|
+
if (trimmed) requestedKeys.push(trimmed);
|
|
66
|
+
} else if (item && typeof item === "object") {
|
|
67
|
+
const key = item.id || item.name || item.src;
|
|
68
|
+
if (typeof key === "string" && key.trim()) requestedKeys.push(key.trim());
|
|
69
|
+
}
|
|
70
|
+
for (const key of requestedKeys) {
|
|
71
|
+
const keyLower = key.toLowerCase();
|
|
72
|
+
const keyNorm = stripScriptPrefix(key);
|
|
73
|
+
const keyFilename = getFilename(key);
|
|
74
|
+
const keyStem = getFilenameStem(key);
|
|
75
|
+
const match = normalizedDescriptors.find((desc) => {
|
|
76
|
+
if (desc.id && desc.id.toLowerCase() === keyLower) return true;
|
|
77
|
+
if (desc.name && desc.name.toLowerCase() === keyLower) return true;
|
|
78
|
+
if (desc.src === key || desc.src.toLowerCase() === keyLower) return true;
|
|
79
|
+
if (stripScriptPrefix(desc.src) === keyNorm) return true;
|
|
80
|
+
const descFilename = getFilename(desc.src);
|
|
81
|
+
if (descFilename && (descFilename === keyFilename || descFilename === keyLower)) return true;
|
|
82
|
+
const descStem = getFilenameStem(desc.src);
|
|
83
|
+
if (descStem && (descStem === keyStem || descStem === keyLower)) return true;
|
|
84
|
+
return false;
|
|
85
|
+
});
|
|
86
|
+
if (match) {
|
|
87
|
+
if (!addedSrcs.has(match.src)) {
|
|
88
|
+
addedSrcs.add(match.src);
|
|
89
|
+
resolved.push(match);
|
|
90
|
+
}
|
|
91
|
+
} else console.warn(`[ShadowClaw] Script dependency "${key}" declared in page frontmatter was not found in approved customElements.scripts config.`);
|
|
92
|
+
}
|
|
93
|
+
return resolved;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//#endregion
|
|
97
|
+
export { resolvePageScriptDependencies };
|
|
98
|
+
//# sourceMappingURL=resolve-page-script-dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-page-script-dependencies.js","names":[],"sources":["../../../src/utils/resolve-page-script-dependencies.ts"],"sourcesContent":["export interface PageScriptDependencySource {\n src: string;\n id?: string;\n name?: string;\n global?: boolean;\n autoload?: boolean;\n type?: string;\n async?: boolean;\n defer?: boolean;\n hasInit?: boolean;\n}\n\nfunction stripScriptPrefix(s: string): string {\n return s\n .replace(/^\\.?\\//, \"\")\n .replace(/^pages\\/main\\//, \"\")\n .toLowerCase()\n .trim();\n}\n\nfunction getFilename(filepath: string): string {\n const parts = filepath.split(\"/\");\n return (parts.pop() || \"\").toLowerCase().trim();\n}\n\nfunction getFilenameStem(filepath: string): string {\n const filename = getFilename(filepath);\n return filename\n .replace(/\\.(js|mjs|cjs|ts)$/i, \"\")\n .toLowerCase()\n .trim();\n}\n\n/**\n * Resolves script dependencies for a page given a list of approved script descriptors\n * and frontmatter/dependency declarations.\n *\n * Always includes scripts marked as `global` or `autoload`.\n * Gracefully ignores any unknown dependency IDs or missing scripts without throwing.\n */\nexport function resolvePageScriptDependencies(\n descriptors: Array<string | PageScriptDependencySource> = [],\n frontmatterOrDependencies?: Record<string, any> | string[] | string | null,\n content?: string | null,\n): PageScriptDependencySource[] {\n if (!Array.isArray(descriptors) || descriptors.length === 0) {\n return [];\n }\n\n // Normalize all descriptors to objects with at least a `src`\n const normalizedDescriptors: PageScriptDependencySource[] = descriptors\n .map((item) => {\n if (typeof item === \"string\") {\n return { src: item };\n }\n if (item && typeof item === \"object\" && typeof item.src === \"string\") {\n return item;\n }\n return null;\n })\n .filter((entry): entry is PageScriptDependencySource => entry !== null);\n\n const resolved: PageScriptDependencySource[] = [];\n const addedSrcs = new Set<string>();\n\n // 1. Automatically include all global / autoload scripts\n for (const desc of normalizedDescriptors) {\n if (desc.global === true || desc.autoload === true) {\n if (!addedSrcs.has(desc.src)) {\n addedSrcs.add(desc.src);\n resolved.push(desc);\n }\n }\n }\n\n if (!frontmatterOrDependencies && !content) {\n return resolved;\n }\n\n // 2. Extract requested dependency names / IDs / paths\n const rawItems: any[] = [];\n if (Array.isArray(frontmatterOrDependencies)) {\n rawItems.push(...frontmatterOrDependencies);\n } else if (typeof frontmatterOrDependencies === \"string\") {\n rawItems.push(...frontmatterOrDependencies.split(/[,;\\s]+/));\n } else if (\n typeof frontmatterOrDependencies === \"object\" &&\n frontmatterOrDependencies !== null\n ) {\n const data = frontmatterOrDependencies;\n if (Array.isArray(data.dependencies)) {\n rawItems.push(...data.dependencies);\n } else if (typeof data.dependencies === \"string\") {\n rawItems.push(...data.dependencies.split(/[,;\\s]+/));\n }\n\n if (Array.isArray(data.scripts)) {\n rawItems.push(...data.scripts);\n } else if (typeof data.scripts === \"string\") {\n rawItems.push(...data.scripts.split(/[,;\\s]+/));\n }\n }\n\n // 2b. Auto-detect inline scripts and custom element tags from markdown content\n if (typeof content === \"string\" && content) {\n const inlineScriptMatches = content.matchAll(\n /<script\\b[^>]*src=[\"']([^\"']+)[\"'][^>]*>/gi,\n );\n for (const match of inlineScriptMatches) {\n if (match[1]) {\n rawItems.push(match[1]);\n }\n }\n\n for (const desc of normalizedDescriptors) {\n const candidates = [\n desc.id,\n desc.name,\n getFilenameStem(desc.src),\n getFilename(desc.src),\n ].filter(Boolean) as string[];\n\n for (const tag of candidates) {\n if (tag.includes(\"-\")) {\n const tagRegex = new RegExp(`<${tag}[\\\\s>/]`, \"i\");\n if (tagRegex.test(content)) {\n rawItems.push(tag);\n break;\n }\n }\n }\n }\n }\n\n // Flatten and normalize tokens\n const requestedKeys: string[] = [];\n for (const item of rawItems) {\n if (typeof item === \"string\") {\n const trimmed = item.trim();\n if (trimmed) {\n requestedKeys.push(trimmed);\n }\n } else if (item && typeof item === \"object\") {\n const key = item.id || item.name || item.src;\n if (typeof key === \"string\" && key.trim()) {\n requestedKeys.push(key.trim());\n }\n }\n }\n\n // 3. Resolve requested keys against approved descriptors\n for (const key of requestedKeys) {\n const keyLower = key.toLowerCase();\n const keyNorm = stripScriptPrefix(key);\n const keyFilename = getFilename(key);\n const keyStem = getFilenameStem(key);\n\n const match = normalizedDescriptors.find((desc) => {\n if (desc.id && desc.id.toLowerCase() === keyLower) {\n return true;\n }\n if (desc.name && desc.name.toLowerCase() === keyLower) {\n return true;\n }\n if (desc.src === key || desc.src.toLowerCase() === keyLower) {\n return true;\n }\n if (stripScriptPrefix(desc.src) === keyNorm) {\n return true;\n }\n const descFilename = getFilename(desc.src);\n if (\n descFilename &&\n (descFilename === keyFilename || descFilename === keyLower)\n ) {\n return true;\n }\n const descStem = getFilenameStem(desc.src);\n if (descStem && (descStem === keyStem || descStem === keyLower)) {\n return true;\n }\n return false;\n });\n\n if (match) {\n if (!addedSrcs.has(match.src)) {\n addedSrcs.add(match.src);\n resolved.push(match);\n }\n } else {\n console.warn(\n `[ShadowClaw] Script dependency \"${key}\" declared in page frontmatter was not found in approved customElements.scripts config.`,\n );\n }\n }\n\n return resolved;\n}\n"],"mappings":"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"}
|
package/dist/lib/utils/utils.js
CHANGED