shadow-claw 1.40.1 → 1.41.1
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 +2 -1
- 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-63s8NnIS.js +93 -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-BATVgkFY.js +17 -0
- 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-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-Cmdxoq9q.js +13 -0
- 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-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-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 +8 -2
- package/dist/public/README.md +2 -1
- 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/README.md +1 -0
- package/dist/public/docs/example/article/index.html +4 -4
- package/dist/public/docs/guides/publishing-to-github-pages.md +95 -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/theming.md +242 -0
- 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 +3 -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 +2 -2
- 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/build/build.ts +18 -11
- package/src/cli/prerender/dsd-shell/prerender-dsd-shell.test.ts +4 -1
- package/src/cli/prerender/dsd-shell/prerender-dsd-shell.ts +13 -1
- package/src/cli/prerender/pretty-paths/prerender-pretty-paths.ts +22 -0
- package/src/cli/prerender/utils/insert-before-closing-head.test.ts +34 -1
- package/src/cli/prerender/utils/insert-before-closing-head.ts +20 -6
- package/src/cli/site-config/apply.test.ts +90 -0
- package/src/cli/site-config/apply.ts +189 -22
- 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-Bc9nRNyN.js +0 -11
- 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-DID5VvOG.js +0 -17
- 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,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./chunk-
|
|
1
|
+
import{t as e}from"./chunk-BLMC1Bxv.js";import t from"node:fs";import n from"node:path";import r from"node:process";import{access as i,constants as a,mkdir as o,mkdtemp as s,readFile as c,writeFile as l}from"node:fs/promises";import{tmpdir as u}from"node:os";import d from"node:readline/promises";import f from"node:tty";function p(){let e=r.emitWarning;if(!e||e.__suppressed)return;let t=function(t,...n){if(!(typeof t==`string`&&(n[0]===`ExperimentalWarning`||t.includes(`ExperimentalWarning`)||t.includes(`SQLite`)))&&!(t&&typeof t==`object`&&(t.name===`ExperimentalWarning`||typeof t.message==`string`&&t.message.includes(`SQLite`))))return e.call(r,t,...n)};t.__suppressed=!0,r.emitWarning=t}p();const m=[`shadow-claw.config.json`,`shadow-claw-config.json`,`shadowclaw.config.json`,`site-config.json`];async function h(e){try{return await i(e,a.F_OK),!0}catch{return!1}}async function g(e,t){let r=[];if(e&&r.push(n.resolve(e)),t){let e=n.resolve(t);r.includes(e)||r.push(e)}if(e&&n.basename(n.resolve(e))===`.cache`){let t=n.dirname(n.resolve(e));r.includes(t)||r.push(t)}for(let e of r)for(let t of m){let r=n.join(e,t);if(await h(r))try{let e=await c(r,`utf8`),t=JSON.parse(e);if(t&&typeof t==`object`)return{configPath:r,config:t}}catch{}}return null}function _(){return n.join(u(),`shadow-claw`)}function v(e){let i=n.resolve(e||r.cwd()),a=[n.join(i,`shadow-claw-config.json`),n.join(i,`shadow-claw.config.json`),n.join(i,`shadowclaw.config.json`),n.join(i,`pages`,`shadow-claw-config.json`),n.join(i,`pages`,`shadow-claw.config.json`),n.join(i,`site-config.json`),n.join(i,`pages`,`site-config.json`)];for(let e of a)if(t.existsSync(e))try{let r=t.readFileSync(e,`utf8`),a=JSON.parse(r);if(a&&typeof a.cacheDir==`string`&&a.cacheDir.trim())return n.resolve(i,a.cacheDir.trim());if(a&&a.server&&typeof a.server.cacheDir==`string`&&a.server.cacheDir.trim())return n.resolve(i,a.server.cacheDir.trim())}catch{}return null}function y(e,i=`.cache`){let a=n.resolve(e||r.cwd()),o=n.join(a,i),s=n.join(o,`database`),c=[o,n.join(o,`control-token.json`),n.join(o,`cli-peer-id`),s,n.join(s,`clients.db`),n.join(s,`agent.db`),n.join(s,`scheduled-tasks.db`),n.join(s,`push-subscriptions.db`),n.join(a,`database`,`clients.db`),n.join(a,`database`,`agent.db`)];for(let e of c)if(t.existsSync(e))return!0;return!1}async function b({contentRoot:e,stdin:i=r.stdin,stdout:a=r.stdout,onExit:o=e=>r.exit(e)}={}){let s=n.resolve(e||r.cwd()),c=n.join(s,`.cache`),l=_(),u=i,p=a,m=!1,h=null;if(i===r.stdin&&!r.stdin.isTTY&&!r.env.CI&&(r.stderr.isTTY||r.stdout.isTTY))try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;h=t.openSync(e,`r`),u=new f.ReadStream(h),p=r.stderr.isTTY?r.stderr:r.stdout,m=!0}catch{try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;u=t.createReadStream(e),p=r.stderr.isTTY?r.stderr:r.stdout,m=!0}catch{}}let g=d.createInterface({input:u,output:p}),v=!1,y=()=>{if(!v){v=!0,p.write(`
|
|
2
2
|
Operation cancelled.
|
|
3
3
|
`);try{g.close()}catch{}o(130)}};g.on(`SIGINT`,y),u&&typeof u.on==`function`&&u!==r.stdin&&u.on(`SIGINT`,y);let b=()=>y();r.on(`SIGINT`,b);let x=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&y()};u&&typeof u.on==`function`&&u.on(`data`,x);try{p.write(`
|
|
4
4
|
ShadowClaw needs a directory to store cache and database files:
|
|
@@ -11,10 +11,10 @@ ShadowClaw needs a directory to store cache and database files:
|
|
|
11
11
|
`),a.write(`Tip: You can pass --tmp, --cache-dir <dir>, set SHADOWCLAW_TMP=1, SHADOWCLAW_CACHE_DIR=<dir>, or configure "cacheDir" in shadow-claw.config.json to skip this prompt.
|
|
12
12
|
|
|
13
13
|
`);let e=(await g.question(`Enter choice [1-3] or a directory path (default: 1): `)).trim();if(!e||e===`1`||e.toLowerCase()===`y`||e.toLowerCase()===`yes`)return a.write(`Using current directory cache: ${c}\n\n`),c;if(e===`2`||e.toLowerCase()===`tmp`||e.toLowerCase()===`temp`||e.toLowerCase()===`t`)return a.write(`Using temporary directory: ${l}\n\n`),l;if(e.toLowerCase()===`n`||e.toLowerCase()===`no`){let e=(await g.question(`Use temporary directory (${l}) instead? (Y/n): `)).trim();return e.toLowerCase()===`n`||e.toLowerCase()===`no`?(a.write(`Operation cancelled.
|
|
14
|
-
`),o(0),l):(a.write(`Using temporary directory: ${l}\n\n`),l)}if(e===`3`||e.toLowerCase()===`c`||e.toLowerCase()===`custom`){let e=(await g.question(`Enter custom directory path: `)).trim();if(!e)return a.write(`Using current directory cache: ${c}\n\n`),c;let t=n.resolve(s,e);return a.write(`Using custom directory: ${t}\n\n`),t}let t=n.resolve(s,e);return p.write(`Using directory: ${t}\n\n`),t}finally{r.removeListener(`SIGINT`,b),u&&typeof u.removeListener==`function`&&(u!==r.stdin&&u.removeListener(`SIGINT`,y),u.removeListener(`data`,x));try{g.close()}catch{}if(m){if(u&&typeof u.destroy==`function`)try{u.destroy()}catch{}if(h!=null)try{t.closeSync(h)}catch{}}}}async function x(e={}){let t=n.resolve(e.contentRoot||r.cwd());if(e.tmp||e.temp||[`1`,`true`,`yes`].includes((r.env.SHADOWCLAW_TMP||r.env.SHADOWCLAW_TEMP||``).toLowerCase().trim())){let r=_();return{cacheDir:r,databaseDir:e.databaseDir?n.resolve(t,e.databaseDir):n.join(r,`database`)}}let i=(e.cacheDir||r.env.SHADOWCLAW_CACHE_DIR||``).trim();if(i){let r=n.resolve(t,i);return{cacheDir:r,databaseDir:e.databaseDir?n.resolve(t,e.databaseDir):n.join(r,`database`)}}let a=(e.databaseDir||r.env.SHADOWCLAW_DATABASE_DIR||``).trim();if(a){let e=n.resolve(t,a);return{cacheDir:n.basename(e)===`database`?n.dirname(e):n.resolve(e,`..`),databaseDir:e}}let o=v(t);if(o)return{cacheDir:o,databaseDir:n.join(o,`database`)};let s=y(t),c=n.join(t,`.cache`),l=n.join(c,`database`);if(s||e.yes||e.y||[`1`,`true`,`yes`].includes((r.env.SHADOWCLAW_YES||``).toLowerCase().trim()))return{cacheDir:c,databaseDir:l};let u=e.stdin?!!e.stdin.isTTY:!!r.stdin.isTTY,d=!e.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),f=e.isTTY===void 0?u||d:!!e.isTTY,p=e.isCI===void 0?e.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!e.isCI;if(!f||p||e.quiet)return{cacheDir:c,databaseDir:l};let m=await b({contentRoot:t,stdin:e.stdin,stdout:e.stdout,onExit:e.onExit});return{cacheDir:m,databaseDir:n.join(m,`database`)}}function S(e,t,n){if(!n||typeof e?.executeNativeAiTask!=`function`)return;let{id:r,groupId:i,taskType:a,input:o}=n;return e.executeNativeAiTask({taskType:a,input:o,groupId:i,db:t}).then(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].resolve(e),delete t[r])}).catch(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].reject(e),delete t[r])})}async function C(t={}){let i=t.core||await e();i.setHeadlessMode(!0);let a,c;if(t.workspace)a=n.resolve(t.workspace),c=t.databaseDir?n.resolve(t.databaseDir):t.cacheDir?n.resolve(t.cacheDir,`database`):n.resolve(a,`database`);else{let e=await x({contentRoot:r.cwd(),cacheDir:t.cacheDir,databaseDir:t.databaseDir,tmp:t.tmp||t.temp,yes:t.yes||t.y,quiet:t.quiet,isTTY:t.isTTY,stdin:t.stdin,stdout:t.stdout}),i=n.join(u(),`shadow-claw`);await o(i,{recursive:!0}),a=await s(n.join(i,`workspace-`)),c=e.databaseDir}await o(a,{recursive:!0}),await o(c,{recursive:!0});let l=n.join(c,`agent.db`),d=i.openSqliteDatabase(l);i.setDB(d),i.setStorageRootFromPath(a);let f=(await g(a))?.config||{},p=f.settings||{},m=t.internetAccess??t.allowInternet??p.internetAccess??p.vm_bash_full_internet_access??p.fullInternetAccess??f.internetAccess;if(m!==void 0&&typeof i.setConfig==`function`){let e=i.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await i.setConfig(d,e,m?`true`:`false`)}let h={response:e=>{!t.quiet&&e.payload?.text&&console.log(e.payload.text)},error:e=>{!t.quiet&&e.payload?.error&&console.error(`Error: ${e.payload.error}`)},"tool-activity":e=>{!t.quiet&&t.verbose&&e.payload&&console.log(`[Tool] ${e.payload.tool} (${e.payload.status||`executing`})`)},"thinking-log":e=>{if(!t.quiet&&t.verbose&&e.payload){let t=e.payload.label||e.payload.level||`Log`;console.log(`[${t}] ${e.payload.message||``}`)}},"request-native-ai-task":e=>{S(i,d,e.payload)}};return i.setPostHandler(e=>{h[e.type]?.(e)}),{db:d,workspaceDir:a,dbPath:l,core:i}}function w(e={}){let{force:t=!1,stdin:n=r.stdin,timeoutMs:i}=e,a=n;return!t&&a?.isTTY?Promise.resolve(null):new Promise((e,t)=>{let n=[],r=!1,o;i!=null&&i>0&&(o=setTimeout(()=>{r=!0,typeof a?.destroy==`function`&&a.destroy(),e(null)},i)),typeof a?.setEncoding==`function`&&a.setEncoding(`utf8`),a.on(`data`,e=>{r||n.push(typeof e==`string`?e:e.toString(`utf8`))}),a.on(`end`,()=>{if(o&&clearTimeout(o),r)return;let t=n.join(``).trim();e(t.length>0?t:null)}),a.on(`error`,e=>{o&&clearTimeout(o),!r&&t(e)})})}function T(e,t){let n=t&&typeof t==`object`?Object.keys(t.properties||{}):[];for(let t of[`text`,`prompt`,`content`,`input`])if(n.includes(t))return{[t]:e};return{input:e}}const E=new Set([`ask_user`,`attach_file_to_chat`,`clear_chat`,`create_room`,`invite_to_room`,`leave_room`,`list_components`,`list_room_members`,`open_file`,`render_component`,`send_file`,`show_toast`,`send_notification`,`spawn_subagent`]),D=`server:main`;async function O(e={}){let t;if(e.workspace)t=n.resolve(e.workspace);else{let e=n.join(u(),`shadow-claw`);await o(e,{recursive:!0}),t=await s(n.join(e,`workspace-`))}let i=n.join(t,`.agents`,`skills`),a=n.join(t,`.agents`,`tools`),c=n.join(t,`database`);await o(t,{recursive:!0}),await o(i,{recursive:!0}),await o(a,{recursive:!0}),await o(c,{recursive:!0});let d=e.provider,f=e.model,p=e.stdin?!!e.stdin.isTTY:!!r.stdin.isTTY,m=!e.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),h=e.isTTY===void 0?p||m:!!e.isTTY,_=e.isCI===void 0?e.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!e.isCI,v=h&&!_&&!e.quiet&&!e.yes&&!e.y;if(!d&&!f&&v){let{promptForAgentModel:n}=await import(`./chunk-
|
|
15
|
-
`,`utf8`),e.download&&(d===`transformers_js_local`||d===`llamafile`)){let{downloadLocalModel:t}=await import(`./chunk-
|
|
14
|
+
`),o(0),l):(a.write(`Using temporary directory: ${l}\n\n`),l)}if(e===`3`||e.toLowerCase()===`c`||e.toLowerCase()===`custom`){let e=(await g.question(`Enter custom directory path: `)).trim();if(!e)return a.write(`Using current directory cache: ${c}\n\n`),c;let t=n.resolve(s,e);return a.write(`Using custom directory: ${t}\n\n`),t}let t=n.resolve(s,e);return p.write(`Using directory: ${t}\n\n`),t}finally{r.removeListener(`SIGINT`,b),u&&typeof u.removeListener==`function`&&(u!==r.stdin&&u.removeListener(`SIGINT`,y),u.removeListener(`data`,x));try{g.close()}catch{}if(m){if(u&&typeof u.destroy==`function`)try{u.destroy()}catch{}if(h!=null)try{t.closeSync(h)}catch{}}}}async function x(e={}){let t=n.resolve(e.contentRoot||r.cwd());if(e.tmp||e.temp||[`1`,`true`,`yes`].includes((r.env.SHADOWCLAW_TMP||r.env.SHADOWCLAW_TEMP||``).toLowerCase().trim())){let r=_();return{cacheDir:r,databaseDir:e.databaseDir?n.resolve(t,e.databaseDir):n.join(r,`database`)}}let i=(e.cacheDir||r.env.SHADOWCLAW_CACHE_DIR||``).trim();if(i){let r=n.resolve(t,i);return{cacheDir:r,databaseDir:e.databaseDir?n.resolve(t,e.databaseDir):n.join(r,`database`)}}let a=(e.databaseDir||r.env.SHADOWCLAW_DATABASE_DIR||``).trim();if(a){let e=n.resolve(t,a);return{cacheDir:n.basename(e)===`database`?n.dirname(e):n.resolve(e,`..`),databaseDir:e}}let o=v(t);if(o)return{cacheDir:o,databaseDir:n.join(o,`database`)};let s=y(t),c=n.join(t,`.cache`),l=n.join(c,`database`);if(s||e.yes||e.y||[`1`,`true`,`yes`].includes((r.env.SHADOWCLAW_YES||``).toLowerCase().trim()))return{cacheDir:c,databaseDir:l};let u=e.stdin?!!e.stdin.isTTY:!!r.stdin.isTTY,d=!e.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),f=e.isTTY===void 0?u||d:!!e.isTTY,p=e.isCI===void 0?e.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!e.isCI;if(!f||p||e.quiet)return{cacheDir:c,databaseDir:l};let m=await b({contentRoot:t,stdin:e.stdin,stdout:e.stdout,onExit:e.onExit});return{cacheDir:m,databaseDir:n.join(m,`database`)}}function S(e,t,n){if(!n||typeof e?.executeNativeAiTask!=`function`)return;let{id:r,groupId:i,taskType:a,input:o}=n;return e.executeNativeAiTask({taskType:a,input:o,groupId:i,db:t}).then(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].resolve(e),delete t[r])}).catch(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].reject(e),delete t[r])})}async function C(t={}){let i=t.core||await e();i.setHeadlessMode(!0);let a,c;if(t.workspace)a=n.resolve(t.workspace),c=t.databaseDir?n.resolve(t.databaseDir):t.cacheDir?n.resolve(t.cacheDir,`database`):n.resolve(a,`database`);else{let e=await x({contentRoot:r.cwd(),cacheDir:t.cacheDir,databaseDir:t.databaseDir,tmp:t.tmp||t.temp,yes:t.yes||t.y,quiet:t.quiet,isTTY:t.isTTY,stdin:t.stdin,stdout:t.stdout}),i=n.join(u(),`shadow-claw`);await o(i,{recursive:!0}),a=await s(n.join(i,`workspace-`)),c=e.databaseDir}await o(a,{recursive:!0}),await o(c,{recursive:!0});let l=n.join(c,`agent.db`),d=i.openSqliteDatabase(l);i.setDB(d),i.setStorageRootFromPath(a);let f=(await g(a))?.config||{},p=f.settings||{},m=t.internetAccess??t.allowInternet??p.internetAccess??p.vm_bash_full_internet_access??p.fullInternetAccess??f.internetAccess;if(m!==void 0&&typeof i.setConfig==`function`){let e=i.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await i.setConfig(d,e,m?`true`:`false`)}let h={response:e=>{!t.quiet&&e.payload?.text&&console.log(e.payload.text)},error:e=>{!t.quiet&&e.payload?.error&&console.error(`Error: ${e.payload.error}`)},"tool-activity":e=>{!t.quiet&&t.verbose&&e.payload&&console.log(`[Tool] ${e.payload.tool} (${e.payload.status||`executing`})`)},"thinking-log":e=>{if(!t.quiet&&t.verbose&&e.payload){let t=e.payload.label||e.payload.level||`Log`;console.log(`[${t}] ${e.payload.message||``}`)}},"request-native-ai-task":e=>{S(i,d,e.payload)}};return i.setPostHandler(e=>{h[e.type]?.(e)}),{db:d,workspaceDir:a,dbPath:l,core:i}}function w(e={}){let{force:t=!1,stdin:n=r.stdin,timeoutMs:i}=e,a=n;return!t&&a?.isTTY?Promise.resolve(null):new Promise((e,t)=>{let n=[],r=!1,o;i!=null&&i>0&&(o=setTimeout(()=>{r=!0,typeof a?.destroy==`function`&&a.destroy(),e(null)},i)),typeof a?.setEncoding==`function`&&a.setEncoding(`utf8`),a.on(`data`,e=>{r||n.push(typeof e==`string`?e:e.toString(`utf8`))}),a.on(`end`,()=>{if(o&&clearTimeout(o),r)return;let t=n.join(``).trim();e(t.length>0?t:null)}),a.on(`error`,e=>{o&&clearTimeout(o),!r&&t(e)})})}function T(e,t){let n=t&&typeof t==`object`?Object.keys(t.properties||{}):[];for(let t of[`text`,`prompt`,`content`,`input`])if(n.includes(t))return{[t]:e};return{input:e}}const E=new Set([`ask_user`,`attach_file_to_chat`,`clear_chat`,`create_room`,`invite_to_room`,`leave_room`,`list_components`,`list_room_members`,`open_file`,`render_component`,`send_file`,`show_toast`,`send_notification`,`spawn_subagent`]),D=`server:main`;async function O(e={}){let t;if(e.workspace)t=n.resolve(e.workspace);else{let e=n.join(u(),`shadow-claw`);await o(e,{recursive:!0}),t=await s(n.join(e,`workspace-`))}let i=n.join(t,`.agents`,`skills`),a=n.join(t,`.agents`,`tools`),c=n.join(t,`database`);await o(t,{recursive:!0}),await o(i,{recursive:!0}),await o(a,{recursive:!0}),await o(c,{recursive:!0});let d=e.provider,f=e.model,p=e.stdin?!!e.stdin.isTTY:!!r.stdin.isTTY,m=!e.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),h=e.isTTY===void 0?p||m:!!e.isTTY,_=e.isCI===void 0?e.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!e.isCI,v=h&&!_&&!e.quiet&&!e.yes&&!e.y;if(!d&&!f&&v){let{promptForAgentModel:n}=await import(`./chunk-BKnTOLLS2.js`),i=await n({workspaceDir:t,contentRoot:r.cwd(),cacheDir:e.cacheDir,stdin:e.stdin,stdout:e.stdout,quiet:e.quiet,isTTY:h});d=i.providerId,f=i.model}if(d||=`transformers_js_local`,!f){let{DEFAULT_LOCAL_MODEL:e}=await import(`./chunk-BKnTOLLS2.js`);f=d===`transformers_js_local`?e:`openrouter/free`}if(await g(t)||await l(n.join(t,`shadow-claw.config.json`),JSON.stringify({$schema:`https://json-schema.org/draft/2020-12/schema`,site:{title:`ShadowClaw Agent Workspace`,description:`Headless CLI agent workspace`},settings:{defaultProvider:`openrouter`,defaultModel:`openrouter/free`},agent:{defaultProvider:d,defaultModel:f}},null,2)+`
|
|
15
|
+
`,`utf8`),e.download&&(d===`transformers_js_local`||d===`llamafile`)){let{downloadLocalModel:t}=await import(`./chunk-BKnTOLLS2.js`);await t(f,{cacheDir:e.cacheDir,verbose:e.verbose,isTTY:e.isTTY})}return await C({workspace:t,quiet:!0}),{success:!0,workspace:t}}async function k(e={}){let{db:t,core:n}=await C(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||D,i=await n.discoverSkills(t,r);return{skills:i.skills,diagnostics:i.diagnostics}}async function A(e={}){let{db:t,core:n}=await C(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||D,i=null;if(e.toolsProfile||e.profile){let r=String(e.toolsProfile||e.profile).trim().toLowerCase(),a=n.DEFAULT_BUILTIN_PROFILE||null,o=[];if(typeof n.getConfig==`function`)try{let e=await n.getConfig(t,n.CONFIG_KEYS?.TOOL_PROFILES||`tool_profiles`);typeof e==`string`?o=JSON.parse(e):Array.isArray(e)&&(o=e)}catch{}let s=[a,...o].filter(Boolean).find(e=>e.id&&String(e.id).toLowerCase()===r||e.name&&String(e.name).toLowerCase()===r);s&&(i=new Set(s.enabledToolNames||[]))}let a=[...n.TOOL_DEFINITIONS||[]];if(typeof n.loadDeclarativeTools==`function`)try{let e=await n.loadDeclarativeTools(t,r);if(e&&Array.isArray(e.tools))for(let t of e.tools)a.some(e=>e.name===t.name)||a.push(t)}catch{}return{tools:a.map(e=>({name:e.name,description:e.description,headlessSafe:!E.has(e.name),...i?{enabled:i.has(e.name)}:{}}))}}async function j(e,t,i={}){let{db:a,workspaceDir:o,core:s}=await C(i),c=i.group||s.DEFAULT_SERVER_GROUP_ID||D,u=(s.TOOL_DEFINITIONS||[]).find(t=>t.name===e);if(!u&&typeof s.loadDeclarativeTools==`function`)try{u=(await s.loadDeclarativeTools(a,c)).tools.find(t=>t.name===e)}catch{}if(!u){let t=`Error: Tool "${e}" not found.`;return i.quiet||console.error(t),r.exitCode=1,{success:!1,error:t}}let d=!E.has(u.name),f=t??i.input;if(f===`-`&&(f=void 0),f==null&&i._stdinData!=null){let e=i._stdinData,t;try{t=JSON.parse(e)}catch{t=T(e,u.input_schema)}f=t}if(f!=null){let t={};if(typeof f==`string`)try{t=JSON.parse(f)}catch(e){let t=`Error: Failed to parse input JSON: ${e.message}`;return i.quiet||console.error(t),r.exitCode=1,{success:!1,error:t}}else typeof f==`object`&&(t=f);let p;try{let e=await N(a,s,o,{...i,interactive:!1});p={db:a,provider:e.providerId,model:e.model,apiKey:e.apiKey}}catch{}try{let o=await s.executeTool(a,e,t,c,{invokeContext:p}),f=typeof o==`string`?o:JSON.stringify(o,null,2);return i.output?(await l(n.resolve(i.output),f,`utf8`),i.quiet||r.stderr.write(`Output written to ${i.output}\n`)):i.quiet||r.stdout.write(f+`
|
|
16
16
|
`),{success:!0,tool:u,headlessSafe:d,output:o}}catch(t){let n=t instanceof Error?t.message:String(t);return i.quiet||console.error(`Error executing tool "${e}": ${n}`),r.exitCode=1,{success:!1,error:n}}}if(!i.quiet){let e=d?`[headless-safe]`:`[browser-only]`;console.log(`Tool: ${u.name} ${e}\n`),console.log(`Description:\n ${u.description}\n`),u.input_schema&&(console.log(`Parameters (JSON Schema):`),console.log(JSON.stringify(u.input_schema,null,2)),console.log()),console.log(`Usage:`),console.log(` Direct CLI: npx shadow-claw agent tool ${u.name} '<json-input>'`),console.log(` Pipe input: echo '<text>' | npx shadow-claw agent tool ${u.name}`),console.log(` Agent Prompt: npx shadow-claw agent run "<instruction>"
|
|
17
|
-
`)}return{success:!0,tool:u,headlessSafe:d}}async function M(e,t={}){let{db:n,core:r}=await C(t),i=t.group||r.DEFAULT_SERVER_GROUP_ID||D,a=await r.loadSkill(n,i,e);if(!a)throw Error(`Skill "${e}" not found in workspace.`);if(a.execution?.type===`tools`&&Array.isArray(a.execution.tools)){let e=a.execution.tools.map(e=>({name:e.name||e.tool,input:e.input||e.arguments||{},suppressOutput:e.suppressOutput})),t=await r.executeToolChain(n,i,e,{isManual:!0});return{success:!0,skill:a,results:t.results,rawOutputs:t.rawOutputs}}return{success:!0,skill:a,message:`Skill "${e}" loaded (no declarative tools defined).`}}async function N(e,t,n,i={}){let a=i.contentRoot,o=await g(n,a),s=o?.config||{},c=s.settings||{},l=s.agent||c.agent||{},u=i.provider||r.env.SHADOW_CLAW_PROVIDER||r.env.SHADOW_CLAW_DEFAULT_PROVIDER;!u&&typeof t.getConfig==`function`&&(u=await t.getConfig(e,t.CONFIG_KEYS?.PROVIDER||`provider`)),u||=l.defaultProvider||l.provider||c.defaultProvider||c.provider||s.defaultProvider;let d=i.stdin?!!i.stdin.isTTY:!!r.stdin.isTTY,f=!i.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),p=i.isTTY===void 0?d||f:!!i.isTTY,m=i.isCI===void 0?i.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!i.isCI,h=p&&!m&&!i.quiet&&i.interactive!==!1;if(!u)if(h){let{promptForAgentModel:e}=await import(`./chunk-
|
|
17
|
+
`)}return{success:!0,tool:u,headlessSafe:d}}async function M(e,t={}){let{db:n,core:r}=await C(t),i=t.group||r.DEFAULT_SERVER_GROUP_ID||D,a=await r.loadSkill(n,i,e);if(!a)throw Error(`Skill "${e}" not found in workspace.`);if(a.execution?.type===`tools`&&Array.isArray(a.execution.tools)){let e=a.execution.tools.map(e=>({name:e.name||e.tool,input:e.input||e.arguments||{},suppressOutput:e.suppressOutput})),t=await r.executeToolChain(n,i,e,{isManual:!0});return{success:!0,skill:a,results:t.results,rawOutputs:t.rawOutputs}}return{success:!0,skill:a,message:`Skill "${e}" loaded (no declarative tools defined).`}}async function N(e,t,n,i={}){let a=i.contentRoot,o=await g(n,a),s=o?.config||{},c=s.settings||{},l=s.agent||c.agent||{},u=i.provider||r.env.SHADOW_CLAW_PROVIDER||r.env.SHADOW_CLAW_DEFAULT_PROVIDER;!u&&typeof t.getConfig==`function`&&(u=await t.getConfig(e,t.CONFIG_KEYS?.PROVIDER||`provider`)),u||=l.defaultProvider||l.provider||c.defaultProvider||c.provider||s.defaultProvider;let d=i.stdin?!!i.stdin.isTTY:!!r.stdin.isTTY,f=!i.stdin&&!r.stdin.isTTY&&!!(r.stderr.isTTY||r.stdout.isTTY),p=i.isTTY===void 0?d||f:!!i.isTTY,m=i.isCI===void 0?i.isTTY===void 0&&!!(r.env.CI&&![`0`,`false`].includes(r.env.CI.toLowerCase())):!!i.isCI,h=p&&!m&&!i.quiet&&i.interactive!==!1;if(!u)if(h){let{promptForAgentModel:e}=await import(`./chunk-BKnTOLLS2.js`),t=await e({workspaceDir:n,contentRoot:a,cacheDir:i.cacheDir,stdin:i.stdin,stdout:i.stdout,quiet:i.quiet,isTTY:p,service:i._transformersService});u=t.providerId,i.model=t.model}else u=`openrouter`;let _=typeof t.getProvider==`function`?t.getProvider(u):null;if(!_){let e=`Error: Unknown provider "${u}".`;throw Error(e)}let v;if(i.apiKey!==void 0)v=i.apiKey;else{if(v=r.env.SHADOW_CLAW_API_KEY,!v)switch(u){case`openrouter`:v=r.env.OPENROUTER_API_KEY;break;case`huggingface`:v=r.env.HUGGINGFACE_API_KEY||r.env.HF_TOKEN;break;case`gemini_proxy`:v=r.env.GEMINI_API_KEY;break}!v&&typeof t.getConfig==`function`&&(v=await t.getConfig(e,`api_key:${u}`)||await t.getConfig(e,`apiKey`))}let y=i.model||r.env.SHADOW_CLAW_MODEL||r.env.SHADOW_CLAW_DEFAULT_MODEL||(typeof t.getConfig==`function`?await t.getConfig(e,t.CONFIG_KEYS?.MODEL||`model`):null)||l.defaultModel||l.model||c.defaultModel||c.model||s.defaultModel||_?.defaultModel||(u===`transformers_js_local`?(await import(`./chunk-BKnTOLLS2.js`)).DEFAULT_LOCAL_MODEL:`default`);if(u===`transformers_js_local`||u===`llamafile`){let{isModelLocallyCached:e,downloadLocalModel:t}=await import(`./chunk-BKnTOLLS2.js`);if(!e(y,i.cacheDir)){let e=i.stdout||r.stderr;if(i.download)i.quiet||e.write(`\nDownloading ${y} from Hugging Face...\n`),await t(y,{cacheDir:i.cacheDir,stream:e,isTTY:p,service:i._transformersService,progress:i.progress!==!1&&!i.noProgress,verbose:i.verbose});else if(h){let n=await import(`node:readline/promises`),a=await import(`node:tty`),o=await import(`node:fs`),s=i.stdin||r.stdin,c=e,l=!1,u=null;if(s===r.stdin&&!r.stdin.isTTY&&!r.env.CI&&(r.stderr.isTTY||r.stdout.isTTY))try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;u=o.openSync(e,`r`),s=new a.ReadStream(u),c=r.stderr.isTTY?r.stderr:r.stdout,l=!0}catch{try{let e=r.platform===`win32`?`CONIN$`:`/dev/tty`;s=o.createReadStream(e),c=r.stderr.isTTY?r.stderr:r.stdout,l=!0}catch{}}let d=n.createInterface({input:s,output:c}),f=!1,m=()=>{if(!f){f=!0,c.write(`
|
|
18
18
|
Operation cancelled.
|
|
19
19
|
`);try{d.close()}catch{}typeof i.onExit==`function`?i.onExit(130):r.exit(130)}};d.on(`SIGINT`,m),s&&typeof s.on==`function`&&s!==r.stdin&&s.on(`SIGINT`,m);let h=()=>m();r.on(`SIGINT`,h);let g=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&m()};s&&typeof s.on==`function`&&s.on(`data`,g);let _=``;try{_=(await d.question(`\nModel "${y}" is not yet downloaded to local disk.\nDownload model weights now? (Y/n) [default: Y]: `)).trim().toLowerCase()}finally{r.removeListener(`SIGINT`,h),s&&typeof s.removeListener==`function`&&(s!==r.stdin&&s.removeListener(`SIGINT`,m),s.removeListener(`data`,g));try{d.close()}catch{}if(l){if(s&&typeof s.destroy==`function`)try{s.destroy()}catch{}if(u!=null)try{o.closeSync(u)}catch{}}}(_===``||_===`y`||_===`yes`)&&(e.write(`\nDownloading ${y} from Hugging Face...\n`),await t(y,{cacheDir:i.cacheDir,stream:e,isTTY:p,service:i._transformersService,progress:i.progress!==!1&&!i.noProgress,verbose:i.verbose}))}}}return{providerId:u,providerConfig:_,apiKey:v||``,model:y,workspaceConfigData:o,workspaceConfig:s,workspaceSettings:c,workspaceAgent:l}}async function P(e,t,n,r,i,a,o){let s=[...t.TOOL_DEFINITIONS||[]];if(typeof t.loadDeclarativeTools==`function`)try{let r=await t.loadDeclarativeTools(e,n);if(r&&Array.isArray(r.tools))for(let e of r.tools)s.some(t=>t.name===e.name)||s.push(e)}catch{}let c=s.filter(e=>!E.has(e.name)),l=c,u=null;async function d(){let n=t.DEFAULT_BUILTIN_PROFILE||null,a=[];if(typeof t.getConfig==`function`)try{let n=await t.getConfig(e,t.CONFIG_KEYS?.TOOL_PROFILES||`tool_profiles`);typeof n==`string`?a=JSON.parse(n):Array.isArray(n)&&(a=n)}catch{}let o=r?.toolProfiles||i?.toolProfiles||r?.profiles||[];return[n,...a,...o].filter(Boolean)}if(o.noTools===!0||o.tools===!1||o.tools===`none`||o.tools===``)return l=[],{enabledTools:l,profileSystemPromptOverride:u};if(o.tools!==void 0&&o.tools!==null)return l=(Array.isArray(o.tools)?o.tools:String(o.tools).split(`,`)).map(e=>String(e).trim()).filter(Boolean).map(e=>c.find(t=>t.name===String(e))).filter(Boolean),{enabledTools:l,profileSystemPromptOverride:u};if(o.toolsProfile){let e=await d(),t=String(o.toolsProfile).trim().toLowerCase(),n=e.find(e=>e.id&&String(e.id).toLowerCase()===t||e.name&&String(e.name).toLowerCase()===t);if(!n)throw Error(`Error: Tool profile "${o.toolsProfile}" not found.`);let r=new Set(n.enabledToolNames||[]);if(l=c.filter(e=>r.has(e.name)),n.customTools&&Array.isArray(n.customTools))for(let e of n.customTools)!E.has(e.name)&&!l.some(t=>t.name===e.name)&&l.push(e);return n.systemPromptOverride&&(u=n.systemPromptOverride),{enabledTools:l,profileSystemPromptOverride:u}}let f=a?.tools??a?.enabledTools;if(f!=null)return f===!1||f===`none`||f===``?(l=[],{enabledTools:l,profileSystemPromptOverride:u}):(l=(Array.isArray(f)?f:String(f).split(`,`)).map(e=>String(e).trim()).filter(Boolean).map(e=>c.find(t=>t.name===e)).filter(Boolean),{enabledTools:l,profileSystemPromptOverride:u});let p=a?.toolsProfile||a?.defaultToolsProfile;if(p){let e=await d(),t=String(p).trim().toLowerCase(),n=e.find(e=>e.id&&String(e.id).toLowerCase()===t||e.name&&String(e.name).toLowerCase()===t);if(n){let e=new Set(n.enabledToolNames||[]);return l=c.filter(t=>e.has(t.name)),n.systemPromptOverride&&(u=n.systemPromptOverride),{enabledTools:l,profileSystemPromptOverride:u}}}return{enabledTools:l,profileSystemPromptOverride:u}}async function F(e,t={}){let{db:i,workspaceDir:a,core:o}=await C(t),s=t.group||o.DEFAULT_SERVER_GROUP_ID||D,u=t._stdinData??null;if(e===`-`?e=u||``:u&&(e=e?`${e}\n\n${u}`:u),!e){let e=`Error: Prompt required. Provide a prompt argument or pipe text to stdin.`;return t.quiet||console.error(e),r.exitCode=1,{success:!1,error:e}}let d,f,p,m,h,g,_,v;try{let e=await N(i,o,a,t);d=e.providerId,f=e.providerConfig,p=e.apiKey,m=e.model,h=e.workspaceConfigData,g=e.workspaceConfig,_=e.workspaceSettings,v=e.workspaceAgent}catch(e){return t.quiet||console.error(e.message),r.exitCode=1,{success:!1,error:e.message}}let y=t.internetAccess??t.allowInternet??_?.internetAccess??_?.vm_bash_full_internet_access??_?.fullInternetAccess??g?.internetAccess;if(y!==void 0&&typeof o.setConfig==`function`){let e=o.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await o.setConfig(i,e,y?`true`:`false`)}if(f.requiresApiKey!==!1&&!p){let e=d===`huggingface`?`HUGGINGFACE_API_KEY`:`${d.toUpperCase()}_API_KEY`,n=`Error: Provider "${d}" requires an API key, but none was provided.\nPlease provide an API key via --api-key <key> or export ${e}="...".`;return t.quiet||console.error(n),r.exitCode=1,{success:!1,error:n}}let b=[];if(typeof o.getRecentMessages==`function`)try{b=await o.getRecentMessages(i,s,50)}catch{}let x={id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:s,role:`user`,content:e,timestamp:Date.now()};if(typeof o.saveMessage==`function`)try{await o.saveMessage(i,x)}catch{}let w=f?.supportsStreaming===!0,T=t.stream!==!1&&t.streaming!==!1&&!t.noStream,E=w&&T,O=Number(t.maxTokens)||(typeof o.getModelMaxTokens==`function`?o.getModelMaxTokens(m):o.DEFAULT_MAX_TOKENS||8192);if(t.verbose&&!t.quiet){let e=f?.name||d,t=E?`streaming`:`standard`;r.stderr.write(`[Agent] Connecting to ${e} (${m}) [${t}]...\n`),r.stderr.write(`[Agent] Workspace: ${a}\n[Agent] Group: ${s}\n[Agent] Max tokens: ${O}\n`)}let k,A,j=!1,M=[];o.setPostHandler(async e=>{({"streaming-start":()=>{j=!0},"streaming-chunk":e=>{e.payload?.text&&(j=!0,k=(k||``)+e.payload.text,!t.quiet&&!t.output&&r.stdout.write(e.payload.text))},"streaming-done":()=>{},"streaming-end":()=>{},response:e=>{if(e.payload?.text)if(k=e.payload.text,t.output){let i=l(n.resolve(t.output),e.payload.text,`utf8`).then(()=>{t.quiet||r.stderr.write(`Output written to ${t.output}\n`)}).catch(()=>{});M.push(i)}else t.quiet||(j?e.payload.text.endsWith(`
|
|
20
20
|
`)||r.stdout.write(`
|
|
@@ -22,7 +22,7 @@ Operation cancelled.
|
|
|
22
22
|
`))},"intermediate-response":e=>{t.verbose&&!t.quiet&&e.payload?.text&&r.stderr.write(`[Thought] ${e.payload.text}\n`)},error:e=>{e.payload?.error&&(A=e.payload.error,t.quiet||console.error(`Error: ${e.payload.error}`))},"tool-activity":e=>{if(t.verbose&&!t.quiet&&e.payload){let t=e.payload.tool||`tool`,n=e.payload.status||`executing`;r.stderr.write(`[Tool] ${t} (${n})\n`)}},"thinking-log":e=>{if(t.verbose&&!t.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;r.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},status:e=>{if(t.verbose&&!t.quiet&&e.payload){let t=e.payload.label?`[${e.payload.label}] `:``;r.stderr.write(`${t}${e.payload.message||``}\n`)}},log:e=>{if(t.verbose&&!t.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;r.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},"token-usage":e=>{if(t.verbose&&!t.quiet&&e.payload?.usage){let t=e.payload.usage,n=t.prompt_tokens??t.input_tokens??0,i=t.completion_tokens??t.output_tokens??0,a=t.total_tokens??n+i;r.stderr.write(`[Tokens] Prompt: ${n}, Completion: ${i}, Total: ${a}\n`)}},"request-native-ai-task":e=>{S(o,i,e.payload)}})[e.type]?.(e)});let F;try{F=await P(i,o,s,g,_,v,t)}catch(e){let n=e.message||String(e);return t.quiet||console.error(n),r.exitCode=1,{success:!1,error:n}}let{enabledTools:I,profileSystemPromptOverride:L}=F,R=t.systemPrompt;if(!R&&t.systemPromptFile)try{R=await c(n.resolve(t.systemPromptFile),`utf8`)}catch(e){let n=`Error: Failed to read system prompt file "${t.systemPromptFile}": ${e.message}`;return t.quiet||console.error(n),r.exitCode=1,{success:!1,error:n}}if(R||=r.env.SHADOW_CLAW_SYSTEM_PROMPT||r.env.SHADOWCLAW_SYSTEM_PROMPT,!R&&L&&(R=L),!R&&v?.systemPromptFile)try{let e=h?.configPath?n.dirname(h.configPath):a;R=await c(n.resolve(e,v.systemPromptFile),`utf8`)}catch(e){t.verbose&&!t.quiet&&console.error(`Warning: Failed to read systemPromptFile from config: ${e.message}`)}if(R||=v?.systemPrompt||_?.systemPrompt||_?.systemPromptOverride,!R&&typeof o.getConfig==`function`)try{let e=await o.getConfig(i,o.CONFIG_KEYS?.SYSTEM_PROMPT_OVERRIDE||`system_prompt_override`);e&&typeof e==`string`&&(R=e)}catch{}R||=`You are ShadowClaw, a helpful AI assistant operating in a headless workspace. Answer concisely.`;let z={apiKey:p||``,assistantName:`ShadowClaw`,enabledTools:I,groupId:s,maxTokens:O,messages:[...b,x],model:m,provider:d,streaming:E,verbose:!!t.verbose,systemPrompt:R},B=new AbortController;t.abortSignal&&(t.abortSignal.aborted?B.abort():t.abortSignal.addEventListener(`abort`,()=>B.abort(),{once:!0}));let V=!1,H=()=>{if(!V){V=!0,B.abort();try{typeof o.cleanupAllLlamafileProcesses==`function`&&o.cleanupAllLlamafileProcesses()}catch{}}};r.on(`SIGINT`,H);let U=t.invokeHandler||o.handleInvoke;try{await U(i,z,B.signal)}catch(e){A=e instanceof Error?e.message:String(e),!V&&!t.quiet&&console.error(`Error: ${A}`)}finally{r.removeListener(`SIGINT`,H)}if(V)return t.quiet||r.stderr.write(`
|
|
23
23
|
Operation cancelled.
|
|
24
24
|
`),r.exitCode=130,typeof t.onExit==`function`&&t.onExit(130),{success:!1,error:`Operation cancelled.`};if(A&&j&&!t.quiet&&!t.output&&r.stdout.write(`
|
|
25
|
-
`),A)return r.exitCode=1,{success:!1,error:A};if(k&&typeof o.saveMessage==`function`)try{await o.saveMessage(i,{id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:s,role:`assistant`,content:k,timestamp:Date.now()})}catch{}if(t.output&&k&&M.length===0){let e=l(n.resolve(t.output),k,`utf8`).then(()=>{t.quiet||r.stderr.write(`Output written to ${t.output}\n`)}).catch(()=>{});M.push(e)}return await Promise.all(M),typeof o.setPostHandler==`function`&&o.setPostHandler(null),{success:!0,response:k,model:m,provider:d}}async function I(e=`list`,t,i={}){let{listLocalModels:a,listLlamafileModels:o,downloadLocalModel:s,fetchRemoteModels:c,DEFAULT_LOCAL_MODEL:u}=await import(`./chunk-
|
|
25
|
+
`),A)return r.exitCode=1,{success:!1,error:A};if(k&&typeof o.saveMessage==`function`)try{await o.saveMessage(i,{id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:s,role:`assistant`,content:k,timestamp:Date.now()})}catch{}if(t.output&&k&&M.length===0){let e=l(n.resolve(t.output),k,`utf8`).then(()=>{t.quiet||r.stderr.write(`Output written to ${t.output}\n`)}).catch(()=>{});M.push(e)}return await Promise.all(M),typeof o.setPostHandler==`function`&&o.setPostHandler(null),{success:!0,response:k,model:m,provider:d}}async function I(e=`list`,t,i={}){let{listLocalModels:a,listLlamafileModels:o,downloadLocalModel:s,fetchRemoteModels:c,DEFAULT_LOCAL_MODEL:u}=await import(`./chunk-BKnTOLLS2.js`),d=i.workspace?n.resolve(i.workspace):r.cwd(),f=e||`list`;if(f===`list`||f===`remote`){let e=f===`remote`||!!(i.remote||i.all||i.huggingface),n=await g(d),s=n?.config?.agent?.defaultModel||n?.config?.settings?.defaultModel||u;if(e){i.quiet||r.stdout.write(`
|
|
26
26
|
Fetching available ONNX models from Hugging Face (onnx-community)...
|
|
27
27
|
`);let e=await c({cacheDir:i.cacheDir,query:i.query||(f===`remote`&&t?t:void 0)});if(!i.quiet)if(e.length===0)r.stdout.write(`No models found on Hugging Face or could not reach huggingface.co.
|
|
28
28
|
|
|
@@ -36,5 +36,5 @@ Curated Transformers.js Models (Local ONNX):
|
|
|
36
36
|
`);for(let e of l){let t=e.id===s,n=e.cached?` [Cached]`:` [Not downloaded]`,i=t?` (Default)`:``;r.stdout.write(` • ${e.id}${i}${n}\n`),r.stdout.write(` Name: ${e.name}\n`),r.stdout.write(` Context: ${e.contextLength.toLocaleString()} tokens | Tools: ${e.supportsTools?`Yes`:`No`}\n`),r.stdout.write(` ${e.description}\n\n`)}r.stdout.write(`Curated Llamafile Models (Local Executable):
|
|
37
37
|
|
|
38
38
|
`);for(let e of p){let t=e.fileName===s||e.id===s||s.endsWith(e.fileName),n=e.cached?` [Cached]`:` [Not downloaded]`,i=t?` (Default)`:``;r.stdout.write(` • ${e.fileName}${i}${n}\n`),r.stdout.write(` Name: ${e.name}\n`),r.stdout.write(` URL: ${e.url}\n`),r.stdout.write(` ${e.description}\n\n`)}r.stdout.write("Tip: Run `shadow-claw agent model list --remote` (or `shadow-claw agent model remote`) to browse all ONNX models from Hugging Face.\n\n")}return{success:!0,models:l,llamafileModels:p,defaultModel:s}}if(f===`download`){let e=t||i.model||u;i.verbose&&!i.quiet&&r.stderr.write(`Preparing to download model: ${e}\n`);let n=await s(e,{cacheDir:i.cacheDir,verbose:i.verbose,isTTY:i.isTTY,progress:i.progress!==!1&&!i.noProgress});return n.success||(r.exitCode=1),n}if(f===`set`){let e=t||i.model;if(!e){let e=`Error: Please specify a model ID to set as default.`;return i.quiet||console.error(e),r.exitCode=1,{success:!1,error:e}}let a=await g(d),o=a?.configPath||n.join(d,`shadow-claw.config.json`),s=a?.config||{},c={...s,agent:{...s.agent||{},defaultModel:e}};return await l(o,JSON.stringify(c,null,2)+`
|
|
39
|
-
`,`utf8`),i.quiet||r.stdout.write(`Updated default CLI agent model to: ${e}\n`),{success:!0,model:e,configPath:o}}let p=`Unknown model action: "${f}". Available: list, download, set`;return i.quiet||console.error(p),r.exitCode=1,{success:!1,error:p}}async function L(e,t={}){let n=(e||``).trim();if(!n){let e=`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`;return t.quiet||console.error(e),r.exitCode=1,{success:!1,error:e}}let{db:i,core:a}=await C(t),o=t.group||a.DEFAULT_SERVER_GROUP_ID||D,s=a.fetchDiscoveryManifest||(await import(`./chunk-
|
|
40
|
-
Importing artifacts:`);for(let e of[...E.tools,...E.skills,...E.scripts]){let t=E.tools.includes(e)?`tool`:E.skills.includes(e)?`skill`:`script`;e.status===`imported`?console.log(` [${t}] ${e.name} -> ${e.path} (imported)`):e.status===`skipped`?console.log(` [${t}] ${e.name} -> ${e.path} (skipped, already exists - use --overwrite to replace)`):console.log(` [${t}] ${e.name} (failed: ${e.error||`unknown error`})`)}console.log(z>0?`\nCompleted with ${z} error${z===1?``:`s`}. Successfully imported ${L} items, ${R} skipped.`:`\nSuccessfully imported ${L} item${L===1?``:`s`} (${O.length} tool${O.length===1?``:`s`}, ${k.length} skill${k.length===1?``:`s`}, ${A.length} script${A.length===1?``:`s`}).`)}let B=z===0||L>0;return B||(r.exitCode=1),{success:B,manifest:d,siteUrl:f,manifestUrl:p,result:E,importedCount:L,skippedCount:R,failedCount:z}}async function R(e,t=[],n={}){let i=t,a=n;if(!Array.isArray(t)&&typeof t==`object`&&(a=t,i=[]),a._stdinData===void 0)try{a={...a,_stdinData:r.stdin.isTTY?null:await w({timeoutMs:500})}}catch{a={...a,_stdinData:null}}switch(e){case`init`:{let e=i[0]||a.workspace,t=await O({...a,workspace:e});return console.log(`Headless agent workspace initialized at: ${t.workspace}`),t}case`skills`:{let e=await k(a);if(e.skills.length===0)console.log(`No skills found in workspace (.agents/skills/).`);else{console.log(`Available skills (${e.skills.length}):\n`);for(let t of e.skills)console.log(` - ${t.name}: ${t.description||`No description`}`)}return e}case`tools`:{let e=i[0];if(e)return await j(e,i[1],a);let t=await A(a);console.log(`Available tools (${t.tools.length}):\n`);for(let e of t.tools){let t=e.headlessSafe?`[headless-safe]`:`[browser-only]`;console.log(` - ${e.name.padEnd(25)} ${t} ${e.description||``}`)}return t}case`tool`:{let e=i[0];if(!e){console.error(`Error: Tool name required. Usage: shadow-claw agent tool <name> [input-json]`),r.exitCode=1;return}return await j(e,i[1],a)}case`skill`:{let e=i[0];if(!e){console.error(`Error: Skill name required. Usage: shadow-claw agent skill <name>`),r.exitCode=1;return}return await M(e,a)}case`run`:return await F(i.join(` `)||`-`,a);case`models`:case`model`:{let e=i[0]||`list`,t=i[1];return await I(e,t,a)}case`import`:{let e=i[0];return e?await L(e,a):(console.error(`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`),r.exitCode=1,{success:!1,error:`Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`})}case`listen`:return await(a.listenFn||(async e=>{let{runWebRtcListenCommand:t}=await import(`./chunk-
|
|
39
|
+
`,`utf8`),i.quiet||r.stdout.write(`Updated default CLI agent model to: ${e}\n`),{success:!0,model:e,configPath:o}}let p=`Unknown model action: "${f}". Available: list, download, set`;return i.quiet||console.error(p),r.exitCode=1,{success:!1,error:p}}async function L(e,t={}){let n=(e||``).trim();if(!n){let e=`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`;return t.quiet||console.error(e),r.exitCode=1,{success:!1,error:e}}let{db:i,core:a}=await C(t),o=t.group||a.DEFAULT_SERVER_GROUP_ID||D,s=a.fetchDiscoveryManifest||(await import(`./chunk-CUUERioR2.js`)).fetchDiscoveryManifest,c=a.importRemoteArtifacts||(await import(`./chunk-BIh7rXlJ2.js`)).importRemoteArtifacts,l=t.fetchFn||globalThis.fetch;t.quiet||console.log(`Fetching discovery manifest from ${n}...`);let u;try{u=await s(n,l)}catch(e){let n=`Failed to fetch discovery manifest: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),r.exitCode=1,{success:!1,error:n}}let{manifest:d,siteUrl:f,manifestUrl:p}=u,m=d.tools||[],h=d.skills||[],g=d.scripts||[];t.quiet||console.log(`Discovered: ${d.name||`Remote Site`} (${h.length} skill${h.length===1?``:`s`}, ${m.length} tool${m.length===1?``:`s`}, ${g.length} script${g.length===1?``:`s`})`);let _=m.map(e=>e.name),v=h.map(e=>e.name),y=g.map(e=>e.name),b,x,S;if((t.tools||t.skills||t.scripts)&&!t.all){let e=e=>e?Array.isArray(e)?e.map(e=>String(e).trim()).filter(Boolean):String(e).split(`,`).map(e=>e.trim()).filter(Boolean):[];b=e(t.tools),x=e(t.skills),S=e(t.scripts)}else b=_,x=v,S=y;let w=t.autoEnable!==!1,T=!!t.overwrite,E;try{E=await c(i,o,d,{toolNames:b,skillNames:x,scriptNames:S},{autoEnable:w,overwrite:T,fetchFn:l,siteSlug:t.siteSlug,targetSubdir:t.targetSubdir})}catch(e){let n=`Import failed: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),r.exitCode=1,{success:!1,error:n}}let O=E.tools.filter(e=>e.status===`imported`),k=E.skills.filter(e=>e.status===`imported`),A=E.scripts.filter(e=>e.status===`imported`),j=E.tools.filter(e=>e.status===`skipped`),M=E.skills.filter(e=>e.status===`skipped`),N=E.scripts.filter(e=>e.status===`skipped`),P=E.tools.filter(e=>e.status===`failed`),F=E.skills.filter(e=>e.status===`failed`),I=E.scripts.filter(e=>e.status===`failed`),L=O.length+k.length+A.length,R=j.length+M.length+N.length,z=P.length+F.length+I.length;if(!t.quiet){console.log(`
|
|
40
|
+
Importing artifacts:`);for(let e of[...E.tools,...E.skills,...E.scripts]){let t=E.tools.includes(e)?`tool`:E.skills.includes(e)?`skill`:`script`;e.status===`imported`?console.log(` [${t}] ${e.name} -> ${e.path} (imported)`):e.status===`skipped`?console.log(` [${t}] ${e.name} -> ${e.path} (skipped, already exists - use --overwrite to replace)`):console.log(` [${t}] ${e.name} (failed: ${e.error||`unknown error`})`)}console.log(z>0?`\nCompleted with ${z} error${z===1?``:`s`}. Successfully imported ${L} items, ${R} skipped.`:`\nSuccessfully imported ${L} item${L===1?``:`s`} (${O.length} tool${O.length===1?``:`s`}, ${k.length} skill${k.length===1?``:`s`}, ${A.length} script${A.length===1?``:`s`}).`)}let B=z===0||L>0;return B||(r.exitCode=1),{success:B,manifest:d,siteUrl:f,manifestUrl:p,result:E,importedCount:L,skippedCount:R,failedCount:z}}async function R(e,t=[],n={}){let i=t,a=n;if(!Array.isArray(t)&&typeof t==`object`&&(a=t,i=[]),a._stdinData===void 0)try{a={...a,_stdinData:r.stdin.isTTY?null:await w({timeoutMs:500})}}catch{a={...a,_stdinData:null}}switch(e){case`init`:{let e=i[0]||a.workspace,t=await O({...a,workspace:e});return console.log(`Headless agent workspace initialized at: ${t.workspace}`),t}case`skills`:{let e=await k(a);if(e.skills.length===0)console.log(`No skills found in workspace (.agents/skills/).`);else{console.log(`Available skills (${e.skills.length}):\n`);for(let t of e.skills)console.log(` - ${t.name}: ${t.description||`No description`}`)}return e}case`tools`:{let e=i[0];if(e)return await j(e,i[1],a);let t=await A(a);console.log(`Available tools (${t.tools.length}):\n`);for(let e of t.tools){let t=e.headlessSafe?`[headless-safe]`:`[browser-only]`;console.log(` - ${e.name.padEnd(25)} ${t} ${e.description||``}`)}return t}case`tool`:{let e=i[0];if(!e){console.error(`Error: Tool name required. Usage: shadow-claw agent tool <name> [input-json]`),r.exitCode=1;return}return await j(e,i[1],a)}case`skill`:{let e=i[0];if(!e){console.error(`Error: Skill name required. Usage: shadow-claw agent skill <name>`),r.exitCode=1;return}return await M(e,a)}case`run`:return await F(i.join(` `)||`-`,a);case`models`:case`model`:{let e=i[0]||`list`,t=i[1];return await I(e,t,a)}case`import`:{let e=i[0];return e?await L(e,a):(console.error(`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`),r.exitCode=1,{success:!1,error:`Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`})}case`listen`:return await(a.listenFn||(async e=>{let{runWebRtcListenCommand:t}=await import(`./chunk-DR2XtWRo.js`);return t(e)}))({...a,agent:!0});default:console.log(`Usage: shadow-claw agent <init|model|skills|tools|tool|skill|import|run|listen> [args...]`)}}export{I as a,k as c,C as d,x as f,O as i,j as l,R as n,F as o,g as p,L as r,M as s,N as t,A as u};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import e from"node:fs";import t from"node:path";import n from"node:process";import r from"node:readline/promises";import i from"node:tty";function a(e,t=1){if(!Number.isFinite(e)||e<=0)return`0 B`;let n=1024,r=t<0?0:t,i=[`B`,`KB`,`MB`,`GB`,`TB`],a=Math.floor(Math.log(e)/Math.log(n)),o=Math.min(a,i.length-1);return`${parseFloat((e/n**o).toFixed(r))} ${i[o]}`}function o(e={}){let{modelId:t=`model`,stream:r=n.stderr,barWidth:i=24,isTTY:o=!!(r&&typeof r==`object`&&r.isTTY),enabled:s=!0}=e;if(!s)return{update:()=>{},finish:()=>{},fail:e=>{r?.write&&r.write(`${e||`✖ Failed to download ${t}.`}\n`)}};let c=[],l=new Map,u=!1;function d(e){let t=Math.round(Math.max(0,Math.min(1,e))*i),n=i-t;return`[`+`=`.repeat(t)+(t<i?`>`:``)+` `.repeat(Math.max(0,n-+(t<i)))+`]`}function f(e,t=0,n=0){let i=l.get(e);return i||(i={lineIndex:c.length,lastPct:-1,lastRenderedTime:0,loaded:t,total:n,isDone:!1},l.set(e,i),c.push(e),o&&c.length>1&&r?.write&&r.write(`
|
|
2
|
-
`)),i}function p(e,t){if(!o||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,a=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${a}\x1b[${s}B\r`):r.write(`\r\x1b[2K${a}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!o&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(o){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}return}if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(o){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${a(l)} / ${a(u)})`:l>0&&(i=` (${a(l)})`);let o=n?` [${n}]`:``;p(n,`Downloading ${t}${o} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${a(l)} / ${a(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}return}if(e.status===`done`){let i=l.get(n);if(i)if(i.isDone=!0,o){let e=d(1),r=i.total||i.loaded,o=r>0?` (${a(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${o}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`);else!o&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const s=[{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B with Grouped Query Attention (Default)`,contextLength:32e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1}],c=`onnx-community/gemma-3-1b-it-ONNX-GQA`,l=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1}];function u(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function d(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function f(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||l.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function p(n,r){let i=d(r);if(!e.existsSync(i))return!1;let a=t.basename(n),o=a.endsWith(`.llamafile`)?a:`${a}.llamafile`,s=t.join(i,o);try{if(e.existsSync(s))return e.statSync(s).size>0}catch{}return!1}function m(n,r){if(f(n))return p(n,r);let i=u(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)&&e.readdirSync(t).length>0)return!0}catch{}return!1}function h(e){return s.map(t=>({...t,cached:m(t.id,e)}))}function g(e){return l.map(t=>({...t,cached:p(t.fileName,e)}))}async function _(e={}){let t=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=100`;try{let n=await fetch(t,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!n.ok)return[];let r=await n.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}return i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:m(t,e.cacheDir)}))}catch{return[]}}async function v(r,i={}){let{cacheDir:a,verbose:s=!1,isTTY:c,stream:u=n.stderr,progress:f,noProgress:p,abortSignal:m}=i,h=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),g,_;h?(g=h.url,_=h.fileName):r.startsWith(`http://`)||r.startsWith(`https://`)?(g=r,_=t.basename(new URL(r).pathname)):(_=t.basename(r).endsWith(`.llamafile`)?t.basename(r):`${t.basename(r)}.llamafile`,g=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${_}`);let v=d(a);e.mkdirSync(v,{recursive:!0});let y=t.join(v,_),b=t.join(v,`${_}.downloading.${Date.now()}`),x=o({modelId:_,stream:u,isTTY:c,enabled:f!==!1&&!p});try{s&&u?.write&&u.write(`[Llamafile] Downloading ${g}...\n`);let t=await(i.fetch||globalThis.fetch)(g,{headers:{"User-Agent":`ShadowClaw-CLI`},redirect:`follow`,signal:m});if(!t.ok)throw Error(`Failed to download ${g}: HTTP ${t.status} ${t.statusText}`);let n=parseInt(t.headers?.get?.(`content-length`)||`0`,10),a=e.createWriteStream(b),o=0;if(t.body){let{Readable:e}=await import(`node:stream`),r;if(typeof e.fromWeb==`function`&&typeof t.body.getReader==`function`)r=e.fromWeb(t.body);else if(typeof t.body[Symbol.asyncIterator]==`function`)r=t.body;else{let e=Buffer.from(await t.arrayBuffer());a.write(e),o=e.length}if(r)for await(let e of r){let t=Buffer.isBuffer(e)?e:Buffer.from(e);a.write(t),o+=t.length,x.update({status:`progress`,file:_,loaded:o,total:n,progress:n>0?o/n*100:void 0})}}a.end(),await new Promise((e,t)=>{a.on(`finish`,e),a.on(`error`,t)}),e.renameSync(b,y);try{e.chmodSync(y,493)}catch{}return x.finish(),{success:!0,modelId:r,path:y}}catch(t){try{e.existsSync(b)&&e.unlinkSync(b)}catch{}let n=t instanceof Error?t.message:String(t);return x.fail(`✖ Error downloading ${_}: ${n}`),{success:!1,modelId:r,error:n}}}async function y(e,t={}){if(f(e))return v(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:s,progress:c,noProgress:l}=t,u=s;if(!u){let{getAgentCore:e}=await import(`./chunk-
|
|
2
|
+
`)),i}function p(e,t){if(!o||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,a=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${a}\x1b[${s}B\r`):r.write(`\r\x1b[2K${a}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!o&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(o){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}return}if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(o){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${a(l)} / ${a(u)})`:l>0&&(i=` (${a(l)})`);let o=n?` [${n}]`:``;p(n,`Downloading ${t}${o} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${a(l)} / ${a(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}return}if(e.status===`done`){let i=l.get(n);if(i)if(i.isDone=!0,o){let e=d(1),r=i.total||i.loaded,o=r>0?` (${a(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${o}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`);else!o&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const s=[{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B with Grouped Query Attention (Default)`,contextLength:32e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1}],c=`onnx-community/gemma-3-1b-it-ONNX-GQA`,l=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!1}];function u(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function d(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function f(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||l.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function p(n,r){let i=d(r);if(!e.existsSync(i))return!1;let a=t.basename(n),o=a.endsWith(`.llamafile`)?a:`${a}.llamafile`,s=t.join(i,o);try{if(e.existsSync(s))return e.statSync(s).size>0}catch{}return!1}function m(n,r){if(f(n))return p(n,r);let i=u(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)&&e.readdirSync(t).length>0)return!0}catch{}return!1}function h(e){return s.map(t=>({...t,cached:m(t.id,e)}))}function g(e){return l.map(t=>({...t,cached:p(t.fileName,e)}))}async function _(e={}){let t=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=100`;try{let n=await fetch(t,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!n.ok)return[];let r=await n.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}return i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:m(t,e.cacheDir)}))}catch{return[]}}async function v(r,i={}){let{cacheDir:a,verbose:s=!1,isTTY:c,stream:u=n.stderr,progress:f,noProgress:p,abortSignal:m}=i,h=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),g,_;h?(g=h.url,_=h.fileName):r.startsWith(`http://`)||r.startsWith(`https://`)?(g=r,_=t.basename(new URL(r).pathname)):(_=t.basename(r).endsWith(`.llamafile`)?t.basename(r):`${t.basename(r)}.llamafile`,g=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${_}`);let v=d(a);e.mkdirSync(v,{recursive:!0});let y=t.join(v,_),b=t.join(v,`${_}.downloading.${Date.now()}`),x=o({modelId:_,stream:u,isTTY:c,enabled:f!==!1&&!p});try{s&&u?.write&&u.write(`[Llamafile] Downloading ${g}...\n`);let t=await(i.fetch||globalThis.fetch)(g,{headers:{"User-Agent":`ShadowClaw-CLI`},redirect:`follow`,signal:m});if(!t.ok)throw Error(`Failed to download ${g}: HTTP ${t.status} ${t.statusText}`);let n=parseInt(t.headers?.get?.(`content-length`)||`0`,10),a=e.createWriteStream(b),o=0;if(t.body){let{Readable:e}=await import(`node:stream`),r;if(typeof e.fromWeb==`function`&&typeof t.body.getReader==`function`)r=e.fromWeb(t.body);else if(typeof t.body[Symbol.asyncIterator]==`function`)r=t.body;else{let e=Buffer.from(await t.arrayBuffer());a.write(e),o=e.length}if(r)for await(let e of r){let t=Buffer.isBuffer(e)?e:Buffer.from(e);a.write(t),o+=t.length,x.update({status:`progress`,file:_,loaded:o,total:n,progress:n>0?o/n*100:void 0})}}a.end(),await new Promise((e,t)=>{a.on(`finish`,e),a.on(`error`,t)}),e.renameSync(b,y);try{e.chmodSync(y,493)}catch{}return x.finish(),{success:!0,modelId:r,path:y}}catch(t){try{e.existsSync(b)&&e.unlinkSync(b)}catch{}let n=t instanceof Error?t.message:String(t);return x.fail(`✖ Error downloading ${_}: ${n}`),{success:!1,modelId:r,error:n}}}async function y(e,t={}){if(f(e))return v(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:s,progress:c,noProgress:l}=t,u=s;if(!u){let{getAgentCore:e}=await import(`./chunk-3oLxlxPn.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);u=t.createTransformersRuntimeService()}let d=o({modelId:e,stream:a,isTTY:i,enabled:c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await u.prewarmModel({modelId:e,verbose:r,onProgress:e=>{d.update(e)}}),d.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return d.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function b(a={}){let o=t.resolve(a.contentRoot||n.cwd()),s=t.resolve(a.workspaceDir||o),l=a.cacheDir,u=a.onExit||(e=>n.exit(e)),d=a.stdin||n.stdin,h=a.stdout||n.stderr,g=!1,b=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;b=e.openSync(t,`r`),d=new i.ReadStream(b),h=n.stderr.isTTY?n.stderr:n.stdout,g=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),h=n.stderr.isTTY?n.stderr:n.stdout,g=!0}catch{}}let x=r.createInterface({input:d,output:h}),S=!1,C=()=>{if(!S){S=!0,h.write(`
|
|
3
3
|
Operation cancelled.
|
|
4
4
|
`);try{x.close()}catch{}u(130)}};x.on(`SIGINT`,C),d&&typeof d.on==`function`&&d!==n.stdin&&d.on(`SIGINT`,C);let w=()=>C();n.on(`SIGINT`,w);let T=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&C()};d&&typeof d.on==`function`&&d.on(`data`,T);try{h.write(`
|
|
5
5
|
ShadowClaw CLI Agent — Model Selection:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./chunk-
|
|
1
|
+
import{r as e}from"./chunk-CXAobnJd.js";import{i as t}from"./chunk-DFLqhyP_.js";import{t as n}from"./chunk-Dhh0lHO6.js";import"dompurify";let r=[`youtube.com`,`youtube-nocookie.com`,`youtu.be`,`xt-ml.github.io`,`kherrick.github.io`];function i(e){e.map(e=>a(e)).filter(Boolean)}i(r);function a(e){let t=e.trim();if(!t)return()=>!1;if(t.startsWith(`/`)&&(t.endsWith(`/`)||/\/[gimuy]*$/.test(t)))try{let e=t.lastIndexOf(`/`),n=t.slice(1,e),r=t.slice(e+1),i=new RegExp(n,r||`i`);return e=>i.test(e)}catch{}if(t.includes(`^`)||t.includes(`$`)||t.includes(`(`)&&t.includes(`)`))try{let e=new RegExp(t,`i`);return t=>e.test(t)}catch{}if(t.startsWith(`*.`)){let e=t.slice(2).toLowerCase();return t=>{let n=t.toLowerCase();return n===e||n.endsWith(`.`+e)}}let n=t.toLowerCase();return e=>{let t=e.toLowerCase();return t===n||t.endsWith(`.`+n)}}const o=[],s=[];let c=new Set(o.map(e=>e.toLowerCase().trim())),l=[...s];function u(e){e.map(e=>a(e)).filter(Boolean)}u(l);function d(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.toLowerCase().trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.toLowerCase().trim()).filter(Boolean):[]}function f(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):typeof e==`string`?e.split(/[\n,]+/).map(e=>e.trim()).filter(Boolean):[]}function p(e){let t=d(e);c=new Set(t)}function m(e){let t=f(e);l=t,u(t)}function h(e){if(!e||typeof e!=`string`)return!1;let t=e.trim().toLowerCase();return!t.includes(`-`)||t===`shadow-claw`||t.startsWith(`shadow-claw-`)?!0:c.has(t)}const g=`allow-modals allow-scripts allow-popups allow-popups-to-escape-sandbox`,_=[`'self'`,`blob:`,`data:`],v=[`'self'`,`blob:`,`data:`],y=[`'self'`,`'unsafe-inline'`,`https:`,`http:`],b=[`'self'`,`blob:`,`data:`,`https:`,`http:`];let x=g;[..._],[...v],[...y],[...b];function S(e){x=Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean).join(` `):typeof e==`string`&&e.trim()?e.trim():g}function C(e){if(!e||typeof e!=`object`)return;let t=e.allowedCustomElements||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedElements:void 0);t!==void 0&&p(t);let n=e.allowedCustomElementDomains||(typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.allowedDomains:void 0);n!==void 0&&m(n),e.security?.iframeSandbox===void 0?(e.security?.allowSameOrigin===!0||e.security?.allowIframeSameOrigin===!0)&&(x.includes(`allow-same-origin`)||(x=`${x} allow-same-origin`.trim())):S(e.security.iframeSandbox),e.security?.workerSrc!==void 0&&f(e.security.workerSrc),e.security?.connectSrc!==void 0&&f(e.security.connectSrc),e.security?.scriptSrc!==void 0&&f(e.security.scriptSrc),e.security?.styleSrc!==void 0&&f(e.security.styleSrc),e.security?.imgSrc!==void 0&&f(e.security.imgSrc)}function w(){if(typeof document>`u`)return;let e=document.getElementById(`shadow-claw-site-config`);if(e&&e.textContent)try{C(JSON.parse(e.textContent))}catch{}}async function T(r){try{let i=r??await t();if(!i)return;let[a,o]=await Promise.all([n(i,e.ALLOWED_CUSTOM_ELEMENTS),n(i,e.ALLOWED_CUSTOM_ELEMENT_HOST_PATTERNS)]);if(typeof a==`string`&&a.trim())try{p(JSON.parse(a))}catch{p(a)}if(typeof o==`string`&&o.trim())try{m(JSON.parse(o))}catch{m(o)}}catch(e){console.warn(`Failed to load custom element security from db:`,e)}}let E=null,D=!1;function O(){w(),!(D||typeof customElements>`u`||typeof customElements.define!=`function`)&&(E=customElements.define.bind(customElements),customElements.define=function(e,t,n){if(!h((e||``).toLowerCase().trim())){let t=`[Security] Registration blocked: <${e}> is not an approved custom element.`;throw console.error(t),Error(t)}return E(e,t,n)},D=!0)}function k(e=typeof document<`u`?document.documentElement:null){if(typeof MutationObserver>`u`||!e)return null;if(typeof e.querySelectorAll==`function`)try{e.querySelectorAll(`*`).forEach(e=>{let t=e.tagName?e.tagName.toLowerCase():``;t.includes(`-`)&&!h(t)&&(console.warn(`[Security] Removing existing unapproved custom element: <${t}>`),e.remove())})}catch{}let t=new MutationObserver(e=>{for(let t of e)t.addedNodes.forEach(e=>{if(e.nodeType===1){let t=e,n=t.tagName?t.tagName.toLowerCase():``;n.includes(`-`)&&!h(n)&&(console.warn(`[Security] Removing unapproved custom element: <${n}>`),t.remove())}})});return t.observe(e,{childList:!0,subtree:!0}),t}function A(e){if(e instanceof Blob)return e.arrayBuffer();if(e instanceof ArrayBuffer)return Promise.resolve(e.slice(0));let{buffer:t,byteOffset:n,byteLength:r}=e;return Promise.resolve(t.slice(n,n+r))}function j(e){return Array.from(new Uint8Array(e)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}async function M(e){let t=await A(e),n=globalThis.crypto?.subtle??globalThis.window?.crypto?.subtle??(typeof process<`u`?(await import(`node:crypto`)).webcrypto?.subtle:void 0);if(!n)throw Error(`crypto.subtle is not available in current environment`);return j(await n.digest(`SHA-256`,t))}const N=`shadowclaw`;let P;function F(){let e=globalThis.trustedTypes;return!e||typeof e.createPolicy!=`function`?null:e}function I(){if(P!==void 0)return P;let e=F();if(!e)return P=null,P;if(typeof e.getPolicy==`function`){let t=e.getPolicy(N);if(t)return P=t,P}try{P=e.createPolicy(N,{createHTML:e=>e,createScriptURL:e=>e})}catch{P=typeof e.getPolicy==`function`?e.getPolicy(N)??null:null}return P}function L(e){let t=I();return!t||typeof t.createScriptURL!=`function`?e:t.createScriptURL(e)}export{O as a,k as i,M as n,T as o,C as r,L as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./chunk-DxIsgrAF.js";import{t}from"./chunk-DFh_pp_7.js";import{a as n,i as r,n as i,r as a,t as o}from"./chunk-BQCWtrzh.js";import{c as s,o as c,u as l}from"./chunk-
|
|
1
|
+
import{t as e}from"./chunk-DxIsgrAF.js";import{t}from"./chunk-DFh_pp_7.js";import{a as n,i as r,n as i,r as a,t as o}from"./chunk-BQCWtrzh.js";import{c as s,o as c,u as l}from"./chunk-B--ueArB.js";import{_ as u,b as d,g as f,l as p,r as m,s as h,y as g}from"./chunk-CXAobnJd.js";import{a as _,i as v,n as y,o as b,r as x}from"./chunk-DFLqhyP_.js";import{t as S}from"./chunk-Dhh0lHO6.js";import{t as C}from"./chunk-P4JSeFBI.js";import{A as w,B as T,C as E,D,E as ee,F as O,H as k,I as A,L as te,M as j,N as M,O as ne,P as N,R as P,S as re,T as ie,U as ae,V as oe,W as se,_ as ce,a as le,b as F,c as ue,d as de,f as fe,g as I,h as L,i as pe,j as me,k as he,l as ge,m as _e,o as ve,p as ye,s as be,u as R,v as xe,w as Se,x as Ce,y as we,z as Te}from"./chunk-C6FFByBU2.js";import{d as Ee,i as De,l as Oe,n as ke,r as Ae,t as je}from"./chunk-nmDhxXH_2.js";import{t as Me}from"./chunk-FEL5dv0w2.js";import{n as Ne,t as Pe}from"./chunk-8CrZyP1b2.js";import{createRequire as Fe}from"node:module";import{constants as Ie,existsSync as Le}from"node:fs";import z from"node:path";import{fileURLToPath as Re}from"node:url";import{env as ze}from"node:process";import{exec as Be,spawn as Ve}from"node:child_process";import{access as He,mkdir as Ue,readFile as We,readdir as Ge,rm as Ke,rmdir as qe,stat as B,unlink as Je,writeFile as V}from"node:fs/promises";import H from"process";import{Buffer as U}from"buffer";import{EventEmitter as Ye}from"node:events";import{isIP as Xe}from"node:net";import{runInNewContext as Ze}from"node:vm";import{DatabaseSync as Qe}from"node:sqlite";var $e=class{kind=`file`;name;_path;constructor(e){this._path=e,this.name=z.basename(e)}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async getFile(){let e=await We(this._path);return{size:e.length,type:`application/octet-stream`,async text(){return e.toString(`utf8`)},async arrayBuffer(){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}}}async createWritable(){let e=[],t=this._path,n=async t=>{if(typeof t==`string`)e.push(U.from(t,`utf8`));else if(t instanceof Uint8Array)e.push(U.from(t));else if(t instanceof ArrayBuffer)e.push(U.from(t));else if(t instanceof Blob){if(typeof t.arrayBuffer==`function`){let n=await t.arrayBuffer();e.push(U.from(n))}else if(typeof t.bytes==`function`){let n=await t.bytes();e.push(U.from(n))}else if(typeof t.text==`function`){let n=await t.text();e.push(U.from(n,`utf8`))}else if(t._buffer)e.push(U.from(t._buffer));else if(typeof FileReader<`u`){let n=await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>e(r.result),r.onerror=n,r.readAsArrayBuffer(t)});e.push(U.from(n))}}else t&&typeof t==`object`&&`data`in t?await n(t.data):e.push(U.from(new Uint8Array(t)))};return{write:n,async close(){let n=U.concat(e);await V(t,n)}}}},et=class e{kind=`directory`;name;_path;_rootPath;constructor(e,t){this._path=z.resolve(e),this._rootPath=t?z.resolve(t):this._path,this.name=z.basename(this._path)||this._path}_resolveChild(e){if(!e||e===`.`||e.includes(`\0`)){let t=Error(`Invalid path name: "${e}"`);throw t.name=`TypeError`,t}let t=z.resolve(this._path,e),n=z.relative(this._path,t),r=z.relative(this._rootPath,t);if(n.startsWith(`..`)||z.isAbsolute(n)||r.startsWith(`..`)||z.isAbsolute(r)){let t=Error(`SecurityError: Path traversal outside workspace root is not allowed: "${e}"`);throw t.name=`SecurityError`,t}return t}async getDirectoryHandle(t,n){let r=this._resolveChild(t);if(n?.create)await Ue(r,{recursive:!0});else if(!Le(r)){let e=Error(`NotFoundError: ${r} does not exist`);throw e.name=`NotFoundError`,e}if(!(await B(r)).isDirectory()){let e=Error(`TypeMismatchError: "${t}" is a file, not a directory`);throw e.name=`TypeMismatchError`,e}return new e(r,this._rootPath)}async getFileHandle(e,t){let n=this._resolveChild(e);if(t?.create)Le(n)||await V(n,``);else if(!Le(n)){let e=Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await B(n)).isDirectory()){let t=Error(`TypeMismatchError: "${e}" is a directory, not a file`);throw t.name=`TypeMismatchError`,t}return new $e(n)}async*entries(){let t;try{t=await Ge(this._path)}catch{return}for(let n of t){let t=z.join(this._path,n);try{(await B(t)).isDirectory()?yield[n,new e(t,this._rootPath)]:yield[n,new $e(t)]}catch{}}}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async removeEntry(e,t){let n=this._resolveChild(e);if(!Le(n)){let e=Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await B(n)).isDirectory())if(t?.recursive)await Ke(n,{recursive:!0});else try{await qe(n)}catch(t){if(t.code===`ENOTEMPTY`){let t=Error(`InvalidModificationError: directory is not empty: "${e}"`);throw t.name=`InvalidModificationError`,t}throw t}else await Je(n)}};let tt=null;function nt(){return tt}function rt(e){tt=z.resolve(e),l(new et(e))}globalThis.__setStorageRootFromPath=rt,globalThis.__getStorageRootPath=nt;const it=({command:e,stdin:t,timeoutSec:n})=>new Promise(r=>{let i=nt?.()??globalThis.__getStorageRootPath?.()??H.cwd(),a=Be(e,{timeout:n*1e3,maxBuffer:10*1024*1024,cwd:i},(e,t,n)=>{let i=t||``;n&&(i+=(i?`
|
|
2
2
|
`:``)+n),e&&!i&&(i=e.message),r(i)});t&&a.stdin&&(a.stdin.write(t),a.stdin.end())});M(it),globalThis.__headlessBashExecutor=it;function at(e,t,n){let r=t.input_tokens||0,i=t.output_tokens||0,a=t.cache_read_input_tokens||0,o=t.cache_creation_input_tokens||0;return{type:`token-usage`,payload:{groupId:e,inputTokens:r,outputTokens:i,cacheReadTokens:a,cacheCreationTokens:o,totalTokens:r+i+a+o,contextLimit:n}}}function W(e,t,n,r){N(Te(e,t,n,r))}async function*ot(e,t){let n=e.getReader(),r=new TextDecoder,i=``;try{for(;!t?.aborted;){let{done:e,value:t}=await n.read();if(e)break;i+=r.decode(t,{stream:!0});let a=i.split(`
|
|
3
3
|
|
|
4
4
|
`);i=a.pop()||``;for(let e of a){let t=e.split(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./chunk-
|
|
1
|
+
import{r as e}from"./chunk-CXAobnJd.js";import{i as t}from"./chunk-DFLqhyP_.js";import{t as n}from"./chunk-Dhh0lHO6.js";import r from"process";
|
|
2
2
|
/*! @license DOMPurify 3.4.13 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.13/LICENSE */
|
|
3
3
|
function i(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function a(e){if(Array.isArray(e))return e}function o(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function s(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
4
4
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function c(e,t){return a(e)||o(e,t)||l(e,t)||s()}function l(e,t){if(e){if(typeof e==`string`)return i(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}const u=Object.entries,d=Object.setPrototypeOf,f=Object.isFrozen,ee=Object.getPrototypeOf,te=Object.getOwnPropertyDescriptor;let p=Object.freeze,m=Object.seal,h=Object.create,ne=typeof Reflect<`u`&&Reflect,g=ne.apply,_=ne.construct;p||=function(e){return e},m||=function(e){return e},g||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},_||=function(e){return new e(...[...arguments].slice(1))};const v=D(Array.prototype.forEach),re=D(Array.prototype.lastIndexOf),ie=D(Array.prototype.pop),y=D(Array.prototype.push),ae=D(Array.prototype.splice),b=Array.isArray,oe=D(String.prototype.toLowerCase),se=D(String.prototype.toString),ce=D(String.prototype.match),le=D(String.prototype.replace),ue=D(String.prototype.indexOf),de=D(String.prototype.trim),fe=D(Number.prototype.toString),pe=D(Boolean.prototype.toString),x=typeof BigInt>`u`?null:D(BigInt.prototype.toString),S=typeof Symbol>`u`?null:D(Symbol.prototype.toString),C=D(Object.prototype.hasOwnProperty),w=D(Object.prototype.toString),T=D(RegExp.prototype.test),E=O(TypeError);function D(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return g(e,t,n)}}function O(e){return function(){return _(e,[...arguments])}}function k(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:oe;if(d&&d(e,null),!b(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(f(t)||(t[r]=e),i=e)}e[i]=!0}return e}function me(e){for(let t=0;t<e.length;t++)C(e,t)||(e[t]=null);return e}function A(e){let t=h(null);for(let r of u(e)){var n=c(r,2);let i=n[0],a=n[1];C(e,i)&&(b(a)?t[i]=me(a):a&&typeof a==`object`&&a.constructor===Object?t[i]=A(a):t[i]=a)}return t}function he(e){switch(typeof e){case`string`:return e;case`number`:return fe(e);case`boolean`:return pe(e);case`bigint`:return x?x(e):`0`;case`symbol`:return S?S(e):`Symbol()`;case`undefined`:return w(e);case`function`:case`object`:{if(e===null)return w(e);let t=e,n=j(t,`toString`);if(typeof n==`function`){let e=n(t);return typeof e==`string`?e:w(e)}return w(e)}default:return w(e)}}function j(e,t){for(;e!==null;){let n=te(e,t);if(n){if(n.get)return D(n.get);if(typeof n.value==`function`)return D(n.value)}e=ee(e)}function n(){return null}return n}function ge(e){try{return T(e,``),!0}catch{return!1}}const _e=p(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),ve=p(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),ye=p([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),be=p([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),xe=p(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),Se=p([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),Ce=p([`#text`]),we=p(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.command.commandfor.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns`.split(`.`)),Te=p(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dominant-baseline.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-orientation.text-rendering.textlength.type.u1.u2.unicode.values.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),Ee=p(`accent.accentunder.align.bevelled.close.columnalign.columnlines.columnspacing.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lquote.lspace.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),De=p([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),Oe=m(/{{[\w\W]*|^[\w\W]*}}/g),ke=m(/<%[\w\W]*|^[\w\W]*%>/g),Ae=m(/\${[\w\W]*/g),je=m(/^data-[\-\w.\u00B7-\uFFFF]+$/),Me=m(/^aria-[\-\w]+$/),Ne=m(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Pe=m(/^(?:\w+script|data):/i),Fe=m(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Ie=m(/^html$/i),Le=m(/^[a-z][.\w]*(-[.\w]+)+$/i),Re=m(/<[/\w!]/g),ze=m(/<[/\w]/g),Be=m(/<\/no(script|embed|frames)/i),Ve=m(/\/>/i),M={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},He=function(){return typeof window>`u`?null:window},Ue=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},We=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},N=function(e,t,n,r){return C(e,t)&&b(e[t])?k(r.base?A(r.base):{},e[t],r.transform):n};function Ge(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:He(),t=e=>Ge(e);if(t.version=`3.4.13`,t.removed=[],!e||!e.document||e.document.nodeType!==M.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,d=e.trustedTypes,f=s.prototype,ee=j(f,`cloneNode`),te=j(f,`remove`),ne=j(f,`nextSibling`),g=j(f,`childNodes`),_=j(f,`parentNode`),fe=j(f,`shadowRoot`),pe=j(f,`attributes`),x=o&&o.prototype?j(o.prototype,`nodeType`):null,S=o&&o.prototype?j(o.prototype,`nodeName`):null,w=o&&o.prototype?j(o.prototype,`ownerDocument`):null;if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let D,O=``,me,Ke=!1,P=0,qe=function(){if(P>0)throw E(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},F=function(e){qe(),P++;try{return D.createHTML(e)}finally{P--}},Je=function(e){qe(),P++;try{return D.createScriptURL(e)}finally{P--}},Ye=function(){return Ke||=(me=Ue(d,i),!0),me},Xe=n,Ze=Xe.implementation,Qe=Xe.createNodeIterator,I=Xe.createDocumentFragment,$e=Xe.getElementsByTagName,et=r.importNode,L=We();t.isSupported=typeof u==`function`&&typeof _==`function`&&Ze&&Ze.createHTMLDocument!==void 0;let tt=Oe,nt=ke,rt=Ae,it=je,at=Me,ot=Pe,st=Fe,ct=Le,lt=Ne,R=null,ut=k({},[..._e,...ve,...ye,...xe,...Ce]),z=null,dt=k({},[...we,...Te,...Ee,...De]),B=Object.seal(h(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ft=null,pt=null,V=Object.seal(h(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),mt=!0,H=!0,ht=!1,gt=!0,U=!1,W=!0,G=!1,_t=!1,vt=null,yt=null,bt=!1,xt=!1,St=!1,Ct=!1,wt=!0,Tt=!1,Et=`user-content-`,Dt=!0,Ot=!1,kt={},K=null,At=k({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),jt=null,Mt=k({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Nt=null,Pt=k({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),Ft=`http://www.w3.org/1998/Math/MathML`,It=`http://www.w3.org/2000/svg`,q=`http://www.w3.org/1999/xhtml`,J=q,Lt=!1,Rt=null,zt=k({},[Ft,It,q],se),Bt=p([`mi`,`mo`,`mn`,`ms`,`mtext`]),Vt=k({},Bt),Ht=p([`annotation-xml`]),Ut=k({},Ht),Wt=k({},[`title`,`style`,`font`,`a`,`script`]),Gt=null,Kt=[`application/xhtml+xml`,`text/html`],Y=null,X=null,qt=n.createElement(`form`),Jt=function(e){return e instanceof RegExp||e instanceof Function},Yt=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(X&&X===e)return;(!e||typeof e!=`object`)&&(e={}),e=A(e),Gt=Kt.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,Y=Gt===`application/xhtml+xml`?se:oe,R=N(e,`ALLOWED_TAGS`,ut,{transform:Y}),z=N(e,`ALLOWED_ATTR`,dt,{transform:Y}),Rt=N(e,`ALLOWED_NAMESPACES`,zt,{transform:se}),Nt=N(e,`ADD_URI_SAFE_ATTR`,Pt,{transform:Y,base:Pt}),jt=N(e,`ADD_DATA_URI_TAGS`,Mt,{transform:Y,base:Mt}),K=N(e,`FORBID_CONTENTS`,At,{transform:Y}),ft=N(e,`FORBID_TAGS`,A({}),{transform:Y}),pt=N(e,`FORBID_ATTR`,A({}),{transform:Y}),kt=C(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?A(e.USE_PROFILES):e.USE_PROFILES:!1,mt=e.ALLOW_ARIA_ATTR!==!1,H=e.ALLOW_DATA_ATTR!==!1,ht=e.ALLOW_UNKNOWN_PROTOCOLS||!1,gt=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,U=e.SAFE_FOR_TEMPLATES||!1,W=e.SAFE_FOR_XML!==!1,G=e.WHOLE_DOCUMENT||!1,xt=e.RETURN_DOM||!1,St=e.RETURN_DOM_FRAGMENT||!1,Ct=e.RETURN_TRUSTED_TYPE||!1,bt=e.FORCE_BODY||!1,wt=e.SANITIZE_DOM!==!1,Tt=e.SANITIZE_NAMED_PROPS||!1,Dt=e.KEEP_CONTENT!==!1,Ot=e.IN_PLACE||!1,lt=ge(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:Ne,J=typeof e.NAMESPACE==`string`?e.NAMESPACE:q,Vt=C(e,`MATHML_TEXT_INTEGRATION_POINTS`)&&e.MATHML_TEXT_INTEGRATION_POINTS&&typeof e.MATHML_TEXT_INTEGRATION_POINTS==`object`?A(e.MATHML_TEXT_INTEGRATION_POINTS):k({},Bt),Ut=C(e,`HTML_INTEGRATION_POINTS`)&&e.HTML_INTEGRATION_POINTS&&typeof e.HTML_INTEGRATION_POINTS==`object`?A(e.HTML_INTEGRATION_POINTS):k({},Ht);let t=C(e,`CUSTOM_ELEMENT_HANDLING`)&&e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING==`object`?A(e.CUSTOM_ELEMENT_HANDLING):h(null);if(B=h(null),C(t,`tagNameCheck`)&&Jt(t.tagNameCheck)&&(B.tagNameCheck=t.tagNameCheck),C(t,`attributeNameCheck`)&&Jt(t.attributeNameCheck)&&(B.attributeNameCheck=t.attributeNameCheck),C(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(B.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),m(B),U&&(H=!1),St&&(xt=!0),kt&&(R=k({},Ce),z=h(null),kt.html===!0&&(k(R,_e),k(z,we)),kt.svg===!0&&(k(R,ve),k(z,Te),k(z,De)),kt.svgFilters===!0&&(k(R,ye),k(z,Te),k(z,De)),kt.mathMl===!0&&(k(R,xe),k(z,Ee),k(z,De))),V.tagCheck=null,V.attributeCheck=null,C(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?V.tagCheck=e.ADD_TAGS:b(e.ADD_TAGS)&&(R===ut&&(R=A(R)),k(R,e.ADD_TAGS,Y))),C(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?V.attributeCheck=e.ADD_ATTR:b(e.ADD_ATTR)&&(z===dt&&(z=A(z)),k(z,e.ADD_ATTR,Y))),C(e,`ADD_URI_SAFE_ATTR`)&&b(e.ADD_URI_SAFE_ATTR)&&k(Nt,e.ADD_URI_SAFE_ATTR,Y),C(e,`FORBID_CONTENTS`)&&b(e.FORBID_CONTENTS)&&(K===At&&(K=A(K)),k(K,e.FORBID_CONTENTS,Y)),C(e,`ADD_FORBID_CONTENTS`)&&b(e.ADD_FORBID_CONTENTS)&&(K===At&&(K=A(K)),k(K,e.ADD_FORBID_CONTENTS,Y)),Dt&&(R[`#text`]=!0),G&&k(R,[`html`,`head`,`body`]),R.table&&(k(R,[`tbody`]),delete ft.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw E(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw E(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=D;D=e.TRUSTED_TYPES_POLICY;try{O=F(``)}catch(e){throw D=t,e}}else e.TRUSTED_TYPES_POLICY===null?(D=void 0,O=``):(D===void 0&&(D=Ye()),D&&typeof O==`string`&&(O=F(``)));p&&p(e),X=e},Xt=k({},[...ve,...ye,...be]),Zt=k({},[...xe,...Se]),Qt=function(e,t,n){return t.namespaceURI===q?e===`svg`:t.namespaceURI===Ft?e===`svg`&&(n===`annotation-xml`||Vt[n]):!!Xt[e]},$t=function(e,t,n){return t.namespaceURI===q?e===`math`:t.namespaceURI===It?e===`math`&&Ut[n]:!!Zt[e]},en=function(e,t,n){return t.namespaceURI===It&&!Ut[n]||t.namespaceURI===Ft&&!Vt[n]?!1:!Zt[e]&&(Wt[e]||!Xt[e])},tn=function(e){let t=_(e);(!t||!t.tagName)&&(t={namespaceURI:J,tagName:`template`});let n=oe(e.tagName),r=oe(t.tagName);return Rt[e.namespaceURI]?e.namespaceURI===It?Qt(n,t,r):e.namespaceURI===Ft?$t(n,t,r):e.namespaceURI===q?en(n,t,r):!!(Gt===`application/xhtml+xml`&&Rt[e.namespaceURI]):!1},Z=function(e){y(t.removed,{element:e});try{_(e).removeChild(e)}catch{if(te(e),!_(e))throw E(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},nn=function(e){an(e);let t=g(e);if(t){let e=[];v(t,t=>{y(e,t)}),v(e,e=>{try{te(e)}catch{}})}let n=pe(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;if(typeof i==`string`)try{e.removeAttribute(i)}catch{}}},Q=function(e,n){try{y(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{y(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(xt||St)try{Z(n)}catch{}else try{n.setAttribute(e,``)}catch{}},rn=function(e){let t=pe(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;if(!(typeof i!=`string`||z[Y(i)]))try{e.removeAttribute(i)}catch{}}},an=function(e){let t=[e];for(;t.length>0;){let e=t.pop();(x?x(e):e.nodeType)===M.element&&rn(e);let n=g(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},on=function(e){if(!W)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=x?x(e):e.nodeType;if(n===M.processingInstruction||n===M.comment&&T(ze,e.data)){try{te(e)}catch{}continue}if(n===M.element){let t=e,n=Y(S?S(e):e.nodeName);try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&n!==`label`&&n!==`output`&&t.removeAttribute(`for`)}catch{}}let r=g(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},sn=function(e){let t=null,r=null;if(bt)e=`<remove></remove>`+e;else{let t=ce(e,/^[\r\n\t ]+/);r=t&&t[0]}Gt===`application/xhtml+xml`&&J===q&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=D?F(e):e;if(J===q)try{t=new l().parseFromString(i,Gt)}catch{}if(!t||!t.documentElement){t=Ze.createDocument(J,`template`,null);try{t.documentElement.innerHTML=Lt?O:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),J===q?$e.call(t,G?`html`:`body`)[0]:G?t.documentElement:a},cn=function(e){let t=w?w(e):e.ownerDocument;return Qe.call(t||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},ln=function(e){return e=le(e,tt,` `),e=le(e,nt,` `),e=le(e,rt,` `),e},un=function(e){e.normalize();let t=w?w(e):e.ownerDocument,n=Qe.call(t||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),r=n.nextNode();for(;r;)r.data=ln(r.data),r=n.nextNode();let i=e.querySelectorAll?.call(e,`template`);i&&v(i,e=>{fn(e.content)&&un(e.content)})},dn=function(e){let t=S?S(e):null;return typeof t!=`string`||Y(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==pe(e)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==x(e)||e.childNodes!==g(e)},fn=function(e){if(!x||typeof e!=`object`||!e)return!1;try{return x(e)===M.documentFragment}catch{return!1}},pn=function(e){if(!x||typeof e!=`object`||!e)return!1;try{return typeof x(e)==`number`}catch{return!1}};function $(e,n,r){e.length!==0&&v(e,e=>{e.call(t,n,r,X)})}let mn=function(e,t){return!!(W&&e.hasChildNodes()&&!pn(e.firstElementChild)&&T(Re,e.textContent)&&T(Re,e.innerHTML)||W&&e.namespaceURI===q&&t===`style`&&pn(e.firstElementChild)||e.nodeType===M.processingInstruction||W&&e.nodeType===M.comment&&T(ze,e.data))},hn=function(e,t,n){if(!ft[t]&&bn(t)&&(B.tagNameCheck instanceof RegExp&&T(B.tagNameCheck,t)||B.tagNameCheck instanceof Function&&B.tagNameCheck(t)))return!1;if(Dt&&!K[t]){let t=_(e),r=g(e);if(r&&t){let i=r.length;for(let a=i-1;a>=0;--a){let i=e===n?ee(r[a],!0):r[a];t.insertBefore(i,ne(e))}}}return Z(e),!0},gn=function(e,t,n,r){return e.length===0?t:t===n||t===r?A(t):t},_n=function(e,n){if($(L.beforeSanitizeElements,e,null),e!==n&&_(e)===null)return Ot&&an(e),!0;if(dn(e))return Z(e),!0;let r=Y(S?S(e):e.nodeName);if(R=gn(L.uponSanitizeElement,R,ut,vt),$(L.uponSanitizeElement,e,{tagName:r,allowedTags:R}),e!==n&&_(e)===null)return Ot&&an(e),!0;if(mn(e,r))return Z(e),!0;if(ft[r]||!(V.tagCheck instanceof Function&&V.tagCheck(r))&&!R[r]){let t=hn(e,r,n);return t===!1&&$(L.afterSanitizeElements,e,null),t}if((x?x(e):e.nodeType)===M.element&&!tn(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&T(Be,e.innerHTML))return Z(e),!0;if(U&&e.nodeType===M.text){let n=ln(e.textContent);e.textContent!==n&&(y(t.removed,{element:e.cloneNode()}),e.textContent=n)}return $(L.afterSanitizeElements,e,null),!1},vn=function(e,t,r){if(pt[t]||W&&t===`patchsrc`||W&&t===`for`&&e!==`label`&&e!==`output`||wt&&(t===`id`||t===`name`)&&(r in n||r in qt))return!1;let i=z[t]||V.attributeCheck instanceof Function&&V.attributeCheck(t,e);if(!(H&&T(it,t))&&!(mt&&T(at,t))){if(!i){if(!(bn(e)&&(B.tagNameCheck instanceof RegExp&&T(B.tagNameCheck,e)||B.tagNameCheck instanceof Function&&B.tagNameCheck(e))&&(B.attributeNameCheck instanceof RegExp&&T(B.attributeNameCheck,t)||B.attributeNameCheck instanceof Function&&B.attributeNameCheck(t,e))||t===`is`&&B.allowCustomizedBuiltInElements&&(B.tagNameCheck instanceof RegExp&&T(B.tagNameCheck,r)||B.tagNameCheck instanceof Function&&B.tagNameCheck(r))))return!1}else if(!Nt[t]&&!T(lt,le(r,st,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&ue(r,`data:`)===0&&jt[e])&&!(ht&&!T(ot,le(r,st,``)))&&r)return!1}return!0},yn=k({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),bn=function(e){return!yn[oe(e)]&&T(ct,e)},xn=function(e,t,n,r){if(D&&typeof d==`object`&&typeof d.getAttributeType==`function`&&!n)switch(d.getAttributeType(e,t)){case`TrustedHTML`:return F(r);case`TrustedScriptURL`:return Je(r)}return r},Sn=function(e,n,r,i){try{r?e.setAttributeNS(r,n,i):e.setAttribute(n,i),dn(e)?Z(e):ie(t.removed)}catch{Q(n,e)}},Cn=function(e){$(L.beforeSanitizeAttributes,e,null);let t=e.attributes;if(!t||dn(e))return;z=gn(L.uponSanitizeAttribute,z,dt,yt);let n={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:z,forceKeepAttr:void 0},r=t.length,i=Y(e.nodeName);for(;r--;){let a=t[r],o=a.name,s=a.namespaceURI,c=a.value,l=Y(o),u=c,d=o===`value`?u:de(u);if(n.attrName=l,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,$(L.uponSanitizeAttribute,e,n),d=n.attrValue,Tt&&(l===`id`||l===`name`)&&ue(d,Et)!==0&&(Q(o,e),d=Et+d),W&&T(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){Q(o,e);continue}if(l===`attributename`&&ce(d,`href`)){Q(o,e);continue}if(!n.forceKeepAttr){if(!n.keepAttr){Q(o,e);continue}if(!gt&&T(Ve,d)){Q(o,e);continue}if(U&&(d=ln(d)),!vn(i,l,d)){Q(o,e);continue}d=xn(i,l,s,d),d!==u&&Sn(e,o,s,d)}}$(L.afterSanitizeAttributes,e,null)},wn=function(e){let t=null,n=cn(e);for($(L.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if($(L.uponSanitizeShadowNode,t,null),_n(t,e),Cn(t),fn(t.content)&&wn(t.content),(x?x(t):t.nodeType)===M.element){let e=fe(t);fn(e)&&(Tn(e),wn(e))}$(L.afterSanitizeShadowDOM,e,null)},Tn=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){wn(e.shadow);continue}let n=e.node,r=(x?x(n):n.nodeType)===M.element,i=g(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=S?S(n):null;if(typeof e==`string`&&Y(e)===`template`){let e=n.content;fn(e)&&t.push({node:e,shadow:null})}}if(r){let e=fe(n);fn(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(Lt=!e,Lt&&(e=`<!-->`),typeof e!=`string`&&!pn(e)&&(e=he(e),typeof e!=`string`))throw E(`dirty is not a string, aborting`);if(!t.isSupported)return e;_t?(R=vt,z=yt):Yt(n),(L.uponSanitizeElement.length>0||L.uponSanitizeAttribute.length>0)&&(R=A(R)),L.uponSanitizeAttribute.length>0&&(z=A(z)),t.removed=[];let c=Ot&&typeof e!=`string`&&pn(e);if(c){on(e);let t=S?S(e):e.nodeName;if(typeof t==`string`){let n=Y(t);if(!R[n]||ft[n])throw nn(e),E(`root node is forbidden and cannot be sanitized in-place`)}if(dn(e))throw nn(e),E(`root node is clobbered and cannot be sanitized in-place`);try{Tn(e)}catch(t){throw nn(e),t}}else if(pn(e))i=sn(`<!---->`),a=i.ownerDocument.importNode(e,!0),a.nodeType===M.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),Tn(a);else{if(!xt&&!U&&!G&&e.indexOf(`<`)===-1)return D&&Ct?F(e):e;if(i=sn(e),!i)return xt?null:Ct?O:``}i&&bt&&Z(i.firstChild);let l=c?e:i;try{let e=cn(l);for(;o=e.nextNode();)_n(o,l),Cn(o),fn(o.content)&&wn(o.content)}catch(n){throw c&&(nn(e),v(t.removed,e=>{e.element&&an(e.element)})),n}if(c)return v(t.removed,e=>{e.element&&an(e.element)}),U&&un(e),e;if(xt){if(U&&un(i),St)for(s=I.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(z.shadowroot||z.shadowrootmode)&&(s=et.call(r,s,!0)),s}let u=G?i.outerHTML:i.innerHTML;return G&&R[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&T(Ie,i.ownerDocument.doctype.name)&&(u=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e,t}from"./chunk-0IeC97mU.js";export{t as resolveAgentProvider,e as runAgentRun};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as e}from"./chunk-
|
|
1
|
+
import{h as e}from"./chunk-CXAobnJd.js";function t(e,t){if(typeof DOMException<`u`)try{return new DOMException(e,t)}catch{}let n=Error(e);return n.name=t,n}function n(e){let t=e();return t[Symbol.asyncDispose??Symbol.for(`Symbol.asyncDispose`)]=async()=>{},t}var r=class{_file;_closed=!1;constructor(e){this._file=e}close(){this._closed=!0}flush(){}getSize(){if(this._closed)throw t(`SyncAccessHandle is closed`,`InvalidStateError`);return this._file.getRawData().byteLength}read(e,n){if(this._closed)throw t(`SyncAccessHandle is closed`,`InvalidStateError`);let r=this._file.getRawData(),i=n?.at??0;if(i>=r.byteLength)return 0;let a=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),o=r.subarray(i,i+a.byteLength);return a.set(o),o.byteLength}write(e,n){if(this._closed)throw t(`SyncAccessHandle is closed`,`InvalidStateError`);let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=n?.at??0,a=this._file.getRawData(),o=i+r.byteLength,s;return o>a.byteLength?(s=new Uint8Array(o),s.set(a)):s=new Uint8Array(a),s.set(r,i),this._file.setRawData(s),r.byteLength}truncate(e){if(this._closed)throw t(`SyncAccessHandle is closed`,`InvalidStateError`);let n=this._file.getRawData(),r=new Uint8Array(e);r.set(n.subarray(0,Math.min(n.byteLength,e))),this._file.setRawData(r)}},i=class{_file;_buffer;_position=0;_length=0;_closed=!1;constructor(e,t=!1){this._file=e;let n=e.getRawData();t?(this._buffer=new Uint8Array(n),this._length=n.byteLength):(this._buffer=new Uint8Array(1024),this._length=0)}async write(e){if(this._closed)throw t(`WritableStream is closed`,`InvalidStateError`);let n;if(typeof e==`string`)n=new TextEncoder().encode(e);else if(e instanceof Uint8Array)n=e;else if(e instanceof ArrayBuffer)n=new Uint8Array(e);else if(typeof Blob<`u`&&e instanceof Blob)n=typeof e.arrayBuffer==`function`?new Uint8Array(await e.arrayBuffer()):typeof e.text==`function`?new TextEncoder().encode(await e.text()):typeof FileReader<`u`?await new Promise(t=>{let n=new FileReader;n.onload=()=>{t(new Uint8Array(n.result))},n.onerror=()=>t(new Uint8Array),n.readAsArrayBuffer(e)}):new Uint8Array;else if(e&&typeof e==`object`&&`type`in e)if(e.type===`write`){typeof e.position==`number`&&(this._position=e.position);let t=e.data;n=typeof t==`string`?new TextEncoder().encode(t):t instanceof Uint8Array?t:t instanceof ArrayBuffer?new Uint8Array(t):typeof Blob<`u`&&t instanceof Blob&&typeof t.arrayBuffer==`function`?new Uint8Array(await t.arrayBuffer()):new Uint8Array}else if(e.type===`seek`){this._position=e.position??0;return}else if(e.type===`truncate`){this._truncate(e.size??0);return}else n=new Uint8Array;else n=new Uint8Array;let r=this._position+n.length;if(r>this._buffer.length){let e=Math.max(this._buffer.length*2,r,1024),t=new Uint8Array(e);t.set(this._buffer),this._buffer=t}this._buffer.set(n,this._position),this._position+=n.length,this._position>this._length&&(this._length=this._position)}_truncate(e){if(e<this._length)this._length=e;else if(e>this._length){if(e>this._buffer.length){let t=new Uint8Array(e);t.set(this._buffer),this._buffer=t}this._length=e}this._position>e&&(this._position=e)}async seek(e){if(this._closed)throw t(`WritableStream is closed`,`InvalidStateError`);this._position=e}async truncate(e){if(this._closed)throw t(`WritableStream is closed`,`InvalidStateError`);this._truncate(e)}async close(){if(this._closed)return;this._closed=!0;let e=this._buffer.slice(0,this._length);this._file.setRawData(e)}async abort(){this._closed=!0}},a=class{kind=`file`;name;_data;_lastModified;constructor(e,t=new Uint8Array){this.name=e,this._data=t,this._lastModified=Date.now()}getRawData(){return this._data}setRawData(e){this._data=e,this._lastModified=Date.now()}_getArrayBuffer(){let e=new ArrayBuffer(this._data.byteLength);return new Uint8Array(e).set(this._data),e}async getFile(){let e=this._getArrayBuffer(),t=this._data,n=this.name,r=this._lastModified,i={name:n,size:t.byteLength,type:``,lastModified:r,async text(){return new TextDecoder().decode(t)},async arrayBuffer(){return e},slice(n=0,r=t.byteLength){return new Blob([e.slice(n,r)])}};if(typeof File<`u`)try{let t=new File([e],this.name,{lastModified:this._lastModified});return typeof t.text!=`function`&&(t.text=i.text),typeof t.arrayBuffer!=`function`&&(t.arrayBuffer=i.arrayBuffer),t}catch{}return i}async createWritable(e){return new i(this,e?.keepExistingData??!1)}async createSyncAccessHandle(){return new r(this)}async isSameEntry(e){return this===e}async queryPermission(){return`granted`}async requestPermission(){return`granted`}},o=class e{kind=`directory`;name;_entries=new Map;constructor(e){this.name=e}_setEntry(e,t){this._entries.set(e,t)}async getDirectoryHandle(n,r){if(n===`.`||n===``)return this;if(n===`..`)throw t(`Cannot navigate to parent directory with '..'`,`SecurityError`);let i=this._entries.get(n);if(i){if(i.kind===`directory`)return i;throw t(`"${n}" is a file, not a directory`,`TypeMismatchError`)}if(r?.create){let t=new e(n);return this._entries.set(n,t),t}throw t(`A requested file or directory could not be found at "${n}"`,`NotFoundError`)}async getFileHandle(e,n){if(e===`.`||e===`..`||e===``)throw t(`Invalid file name "${e}"`,`TypeMismatchError`);let r=this._entries.get(e);if(r){if(r.kind===`file`)return r;throw t(`"${e}" is a directory, not a file`,`TypeMismatchError`)}if(n?.create){let t=new a(e);return this._entries.set(e,t),t}throw t(`A requested file could not be found at "${e}"`,`NotFoundError`)}async removeEntry(e,n){let r=this._entries.get(e);if(!r)throw t(`Entry "${e}" not found`,`NotFoundError`);if(r.kind===`directory`&&r._entries.size>0&&!n?.recursive)throw t(`Directory "${e}" is not empty`,`InvalidModificationError`);this._entries.delete(e)}async resolve(e){if(this===e)return[];for(let[t,n]of this._entries.entries()){if(n===e)return[t];if(n.kind===`directory`){let r=await n.resolve(e);if(r)return[t,...r]}}return null}entries(){let e=this;return n(async function*(){for(let[t,n]of e._entries.entries())yield[t,n]})}values(){let e=this;return n(async function*(){for(let t of e._entries.values())yield t})}keys(){let e=this;return n(async function*(){for(let t of e._entries.keys())yield t})}[Symbol.asyncIterator](){return this.entries()}async isSameEntry(e){return this===e}async queryPermission(){return`granted`}async requestPermission(){return`granted`}};let s=null;function c(){if(!s){let t=new o(`memory-root`),n=new o(e);t._setEntry(e,n),s=n}return s}export{c as a,i,a as n,r,o as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./chunk-DxIsgrAF.js";import{t}from"./chunk-yp4Svd6E.js";import{a as n,i as r,n as i,r as a,t as o}from"./chunk-BQCWtrzh.js";import{c as s,o as c,u as l}from"./chunk-
|
|
1
|
+
import{t as e}from"./chunk-DxIsgrAF.js";import{t}from"./chunk-yp4Svd6E.js";import{a as n,i as r,n as i,r as a,t as o}from"./chunk-BQCWtrzh.js";import{c as s,o as c,u as l}from"./chunk-C9-aL3rF.js";import{_ as u,b as d,g as f,l as p,r as m,s as h,y as g}from"./chunk-CXAobnJd.js";import{a as _,i as v,n as y,o as b,r as x}from"./chunk-DFLqhyP_.js";import{t as S}from"./chunk-Dhh0lHO6.js";import{t as C}from"./chunk-DmRXVLfy.js";import{A as w,B as T,C as E,D,E as ee,F as O,H as k,I as A,L as te,M as j,N as M,O as ne,P as N,R as P,S as re,T as ie,U as ae,V as oe,W as se,_ as ce,a as le,b as F,c as ue,d as de,f as fe,g as I,h as L,i as pe,j as me,k as he,l as ge,m as _e,o as ve,p as ye,s as be,u as R,v as xe,w as Se,x as Ce,y as we,z as Te}from"./chunk-C9czddEh2.js";import{d as Ee,i as De,l as Oe,n as ke,r as Ae,t as je}from"./chunk-CjJsVrKI2.js";import{t as Me}from"./chunk-FEL5dv0w2.js";import{n as Ne,t as Pe}from"./chunk-DHJCGRuG2.js";import{createRequire as Fe}from"node:module";import{constants as Ie,existsSync as Le}from"node:fs";import z from"node:path";import{fileURLToPath as Re}from"node:url";import{env as ze}from"node:process";import{exec as Be,spawn as Ve}from"node:child_process";import{access as He,mkdir as Ue,readFile as We,readdir as Ge,rm as Ke,rmdir as qe,stat as B,unlink as Je,writeFile as V}from"node:fs/promises";import{EventEmitter as Ye}from"node:events";import{isIP as Xe}from"node:net";import{runInNewContext as Ze}from"node:vm";import{DatabaseSync as Qe}from"node:sqlite";var $e=class{kind=`file`;name;_path;constructor(e){this._path=e,this.name=z.basename(e)}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async getFile(){let e=await We(this._path);return{size:e.length,type:`application/octet-stream`,async text(){return e.toString(`utf8`)},async arrayBuffer(){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}}}async createWritable(){let e=[],t=this._path,n=async t=>{if(typeof t==`string`)e.push(Buffer.from(t,`utf8`));else if(t instanceof Uint8Array)e.push(Buffer.from(t));else if(t instanceof ArrayBuffer)e.push(Buffer.from(t));else if(t instanceof Blob){if(typeof t.arrayBuffer==`function`){let n=await t.arrayBuffer();e.push(Buffer.from(n))}else if(typeof t.bytes==`function`){let n=await t.bytes();e.push(Buffer.from(n))}else if(typeof t.text==`function`){let n=await t.text();e.push(Buffer.from(n,`utf8`))}else if(t._buffer)e.push(Buffer.from(t._buffer));else if(typeof FileReader<`u`){let n=await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>e(r.result),r.onerror=n,r.readAsArrayBuffer(t)});e.push(Buffer.from(n))}}else t&&typeof t==`object`&&`data`in t?await n(t.data):e.push(Buffer.from(new Uint8Array(t)))};return{write:n,async close(){let n=Buffer.concat(e);await V(t,n)}}}},et=class e{kind=`directory`;name;_path;_rootPath;constructor(e,t){this._path=z.resolve(e),this._rootPath=t?z.resolve(t):this._path,this.name=z.basename(this._path)||this._path}_resolveChild(e){if(!e||e===`.`||e.includes(`\0`)){let t=Error(`Invalid path name: "${e}"`);throw t.name=`TypeError`,t}let t=z.resolve(this._path,e),n=z.relative(this._path,t),r=z.relative(this._rootPath,t);if(n.startsWith(`..`)||z.isAbsolute(n)||r.startsWith(`..`)||z.isAbsolute(r)){let t=Error(`SecurityError: Path traversal outside workspace root is not allowed: "${e}"`);throw t.name=`SecurityError`,t}return t}async getDirectoryHandle(t,n){let r=this._resolveChild(t);if(n?.create)await Ue(r,{recursive:!0});else if(!Le(r)){let e=Error(`NotFoundError: ${r} does not exist`);throw e.name=`NotFoundError`,e}if(!(await B(r)).isDirectory()){let e=Error(`TypeMismatchError: "${t}" is a file, not a directory`);throw e.name=`TypeMismatchError`,e}return new e(r,this._rootPath)}async getFileHandle(e,t){let n=this._resolveChild(e);if(t?.create)Le(n)||await V(n,``);else if(!Le(n)){let e=Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await B(n)).isDirectory()){let t=Error(`TypeMismatchError: "${e}" is a directory, not a file`);throw t.name=`TypeMismatchError`,t}return new $e(n)}async*entries(){let t;try{t=await Ge(this._path)}catch{return}for(let n of t){let t=z.join(this._path,n);try{(await B(t)).isDirectory()?yield[n,new e(t,this._rootPath)]:yield[n,new $e(t)]}catch{}}}async isSameEntry(e){return!e||typeof e!=`object`?!1:e.kind===this.kind&&e._path===this._path}async removeEntry(e,t){let n=this._resolveChild(e);if(!Le(n)){let e=Error(`NotFoundError: ${n} does not exist`);throw e.name=`NotFoundError`,e}if((await B(n)).isDirectory())if(t?.recursive)await Ke(n,{recursive:!0});else try{await qe(n)}catch(t){if(t.code===`ENOTEMPTY`){let t=Error(`InvalidModificationError: directory is not empty: "${e}"`);throw t.name=`InvalidModificationError`,t}throw t}else await Je(n)}};let tt=null;function nt(){return tt}function rt(e){tt=z.resolve(e),l(new et(e))}globalThis.__setStorageRootFromPath=rt,globalThis.__getStorageRootPath=nt;const H=({command:e,stdin:t,timeoutSec:n})=>new Promise(r=>{let i=nt?.()??globalThis.__getStorageRootPath?.()??process.cwd(),a=Be(e,{timeout:n*1e3,maxBuffer:10*1024*1024,cwd:i},(e,t,n)=>{let i=t||``;n&&(i+=(i?`
|
|
2
2
|
`:``)+n),e&&!i&&(i=e.message),r(i)});t&&a.stdin&&(a.stdin.write(t),a.stdin.end())});M(H),globalThis.__headlessBashExecutor=H;function it(e,t,n){let r=t.input_tokens||0,i=t.output_tokens||0,a=t.cache_read_input_tokens||0,o=t.cache_creation_input_tokens||0;return{type:`token-usage`,payload:{groupId:e,inputTokens:r,outputTokens:i,cacheReadTokens:a,cacheCreationTokens:o,totalTokens:r+i+a+o,contextLimit:n}}}function U(e,t,n,r){N(Te(e,t,n,r))}async function*at(e,t){let n=e.getReader(),r=new TextDecoder,i=``;try{for(;!t?.aborted;){let{done:e,value:t}=await n.read();if(e)break;i+=r.decode(t,{stream:!0});let a=i.split(`
|
|
3
3
|
|
|
4
4
|
`);i=a.pop()||``;for(let e of a){let t=e.split(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./chunk-8V8biNmG.js";import{t}from"./chunk-BoFC86Qh.js";import{a as n,c as r,i,l as a,n as o,r as s,s as c,t as l}from"./chunk-
|
|
1
|
+
import{a as e}from"./chunk-8V8biNmG.js";import{t}from"./chunk-BoFC86Qh.js";import{a as n,c as r,i,l as a,n as o,r as s,s as c,t as l}from"./chunk-B--ueArB.js";import{o as u,r as d}from"./chunk-CXAobnJd.js";import{t as f}from"./chunk-DFLqhyP_.js";import{t as p}from"./chunk-Dhh0lHO6.js";import{t as m}from"./chunk-FEL5dv0w2.js";import{a as h}from"./chunk-8CrZyP1b2.js";function g(e,t,n){return f(e,`config`,`readwrite`,e=>e.put({key:t,value:n})).then(()=>void 0)}async function _(e,t,n){let r=await i(e,t),{dirs:a,filename:o}=s(n),c=r;for(let e of a)c=await c.getDirectoryHandle(e);let l=await c.getFileHandle(o);try{let e=await l.createSyncAccessHandle(),t=e.getSize(),n=new Uint8Array(t);return e.read(n,{at:0}),e.close(),new TextDecoder(`utf-8`).decode(n)}catch{return(await l.getFile()).text()}}const v=/^[a-z][a-z0-9_]{0,63}$/;function y(e,t){if(!t||typeof t!=`object`)throw Error(`Tool at ${e} must be a JSON object`);let n=t,r=typeof n.name==`string`?n.name.trim():``,i=typeof n.description==`string`?n.description.trim():``,a=n.input_schema??n.parameters,o=n.execution??n.evaluation;if(!v.test(r))throw Error(`Tool name is invalid: ${r||`(missing)`}`);if(!i)throw Error(`Tool ${r} requires a description`);if(!a||typeof a!=`object`)throw Error(`Tool ${r} requires input_schema`);if(!o||typeof o!=`object`)throw Error(`Tool ${r} requires execution`);let s=o,c=s.type;if(c!==`bash`&&c!==`javascript`&&c!==`tool`)throw Error(`Tool ${r} execution type must be bash, javascript, or tool`);if(c===`tool`){if(typeof s.name!=`string`||!v.test(s.name))throw Error(`Tool ${r} execution requires a valid tool name`);return{name:r,description:i,input_schema:a,execution:{type:c,name:s.name,...s.input&&typeof s.input==`object`?{input:s.input}:{}},path:e}}let l=c===`bash`?`command`:`code`,u=s[l]??s.expression;if(typeof u!=`string`||u.trim()===``)throw Error(`Tool ${r} execution requires ${l}`);return{name:r,description:i,input_schema:a,execution:{type:c,[l]:u},path:e}}async function b(e,t=u){let n=[],r=[],a=t===`br:main`?[u]:[t,u];for(let t of a)try{let a=await i(e,t),o=[];async function s(e,t){for await(let[n,r]of e.entries()){let e=`${t}/${n}`;r.kind===`directory`?await s(r,e):n.endsWith(`.json`)&&e.startsWith(`.agents/tools/`)&&o.push(e)}}try{await s(await(await a.getDirectoryHandle(`.agents`)).getDirectoryHandle(`tools`),`.agents/tools`)}catch{continue}for(let i of o.sort())try{let r=y(i,JSON.parse(await _(e,t,i)));n.some(e=>e.name===r.name)||n.push(r)}catch(e){r.push(e instanceof Error?e.message:String(e))}}catch{}return{tools:n,diagnostics:r}}async function x(e,t=u,n){try{let{tools:r}=await b(e,t),i=r.find(e=>e.name===n)||null;if(!i)return null;let a=await p(e,d.DECLARATIVE_TOOLS_ENABLED);return Array.isArray(a)&&!a.includes(n)?null:i}catch{return null}}async function S(e,t,u,d){let{dirs:f,filename:p}=s(u);for(let s=0;s<2;s++)try{let r=await i(e,t);for(let e of f)r=await r.getDirectoryHandle(e,{create:!0});let a=await r.getFileHandle(p,{create:!0});try{await l(a,d);return}catch(t){if(!((t instanceof Error?t.message:String(t)).includes(`Writable file streams are not supported`)&&(await c(e)).type===`opfs`))throw t}let s=t.replace(/:/g,`-`);await o([n(),`groups`,s,...f,p],d);return}catch(e){if(s===0&&a(e)){r();continue}throw e}}async function C(e,t,n){try{return await _(e,t,n),!0}catch{return!1}}var w=e(t(),1);const T=/^[a-z0-9](?:[a-z0-9]|-(?!-))*[a-z0-9]$|^[a-z0-9]$/;function E(e){try{let t=(0,w.default)(e);return{data:t.data&&typeof t.data==`object`?t.data:{},content:t.content||``}}catch{let t=e.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(t){let e=t[1],n=t[2]||``,r=e.split(/\r?\n/).map(e=>{let t=e.match(/^([a-zA-Z0-9_-]+):\s*(.+)$/);if(t){let[,e,n]=t,r=n.trim();if(r&&r!==`true`&&r!==`false`&&r!==`null`&&!r.startsWith(`"`)&&!r.startsWith(`'`)&&!r.startsWith(`[`)&&!r.startsWith(`{`)&&r!==`>`&&r!==`|`&&r!==`>-`&&r!==`|-`&&!/^-?\d+(?:\.\d+)?$/.test(r))return`${e}: ${JSON.stringify(r)}`}return e});try{let e=(0,w.default)(`---\n${r.join(`
|
|
2
2
|
`)}\n---\n${n}`);return{data:e.data&&typeof e.data==`object`?e.data:{},content:e.content||``}}catch{}let i={},a=e.match(/^name:\s*["']?([^"'\r\n]+)["']?/m);a&&(i.name=a[1].trim());let o=e.match(/^description:\s*(.+)$/m);if(o){let e=o[1].trim();(e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`))&&(e=e.slice(1,-1)),i.description=e}let s=e.match(/^user-invocable:\s*(true|false)/im);s&&(i[`user-invocable`]=s[1].toLowerCase()===`true`);let c=e.match(/^disable-model-invocation:\s*(true|false)/im);c&&(i[`disable-model-invocation`]=c[1].toLowerCase()===`true`);let l=e.match(/^allowed-tools:\s*["']?([^"'\r\n]+)["']?/m);l&&(i[`allowed-tools`]=l[1].trim());let u=e.match(/allowed-tools:\s*\n((?:\s*-\s*[^\r\n]+\r?\n?)+)/m);if(u){let e=u[1].split(/\r?\n/).map(e=>e.replace(/^\s*-\s*/,``).trim()).filter(Boolean);e.length>0&&(i[`allowed-tools`]=e)}return{data:i,content:n}}return{data:{},content:e}}}function D(e){if(typeof e==`string`){let t=e.trim();return t.length>0?t:void 0}if(Array.isArray(e)){let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e.length>0);return t.length>0?t.join(` `):void 0}}function O(e,t){let n=E(t),r=n.data,i=typeof r.name==`string`?r.name.trim():``,a=typeof r.description==`string`?r.description.trim():``;if(!i)throw Error(`Skill at ${e} requires a name`);if(!a)throw Error(`Skill ${i} requires a description`);if(i.length>64||!T.test(i))throw Error(`Skill name must be 1-64 lowercase characters and hyphens: ${i}`);if(a.length>1024)throw Error(`Skill ${i} description must be 1024 characters or fewer`);let o=e.replace(/\/SKILL\.md$/u,``),s=r.metadata&&typeof r.metadata==`object`?r.metadata:void 0,c=D(s?.[`allowed-tools`])||D(s?.allowedTools)||D(r[`allowed-tools`])||D(r.allowedTools),l=[];if(s){for(let[e,t]of Object.entries(s))if(!(e===`execution`||t==null)){if(e===`allowed-tools`||e===`allowedTools`)c&&l.push([e,c]);else if(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)l.push([e,String(t)]);else if(Array.isArray(t)){let n=t.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(Boolean);n.length>0&&l.push([e,n.join(` `)])}}}let u=l.length>0?Object.fromEntries(l):void 0,d=s?.execution,f;if(d!==void 0){if(!d||typeof d!=`object`||d.type!==`tools`||!Array.isArray(d.tools))throw Error(`Skill ${i} has invalid tools execution`);let e=d,t=typeof e.suppressToast==`boolean`?e.suppressToast:void 0,n=typeof e.suppressOutput==`boolean`?e.suppressOutput:void 0,r=e.tools.map(e=>({...e,...t!==void 0&&e.suppressToast===void 0?{suppressToast:t}:{},...n!==void 0&&e.suppressOutput===void 0?{suppressOutput:n}:{}}));f={type:`tools`,...t===void 0?{}:{suppressToast:t},...n===void 0?{}:{suppressOutput:n},tools:r}}return{name:i,description:a,...typeof r.license==`string`?{license:r.license}:{},...typeof r.compatibility==`string`?{compatibility:r.compatibility}:{},...u?{metadata:u}:{},...typeof c==`string`?{allowedTools:c}:{},...typeof r[`user-invocable`]==`boolean`?{userInvocable:r[`user-invocable`]}:typeof r[`user-invocable`]==`string`&&(r[`user-invocable`].toLowerCase()===`true`||r[`user-invocable`].toLowerCase()===`false`)?{userInvocable:r[`user-invocable`].toLowerCase()===`true`}:{},...typeof r[`disable-model-invocation`]==`boolean`?{disableModelInvocation:r[`disable-model-invocation`]}:typeof r[`disable-model-invocation`]==`string`&&(r[`disable-model-invocation`].toLowerCase()===`true`||r[`disable-model-invocation`].toLowerCase()===`false`)?{disableModelInvocation:r[`disable-model-invocation`].toLowerCase()===`true`}:{},...f?{execution:f}:{},body:n.content.trim(),path:e,basePath:o}}const k=new Set(m.map(e=>e.name)),A=/^[a-z][a-z0-9_]{0,63}$/;function j(e){return e?.targetSubdir?e.targetSubdir:e?.siteSlug?`imported/${e.siteSlug}`:`main`}async function M(e,t=u,n,r){let i=(n.name||``).trim();if(k.has(i))return{name:i,path:``,status:`failed`,error:`Cannot shadow built-in tool: ${i}`};if(!A.test(i))return{name:i,path:``,status:`failed`,error:`Invalid tool name: ${i}`};let a=`.agents/tools/${j(r)}/${i}.json`;try{if(await C(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();if(n.digest&&!await h(s,n.digest))return{name:i,path:a,status:`failed`,error:`Integrity verification failed for tool definition`};let c;try{c=JSON.parse(s)}catch{return{name:i,path:a,status:`failed`,error:`Downloaded tool definition is not valid JSON`}}if(y(a,c),await S(e,t,a,JSON.stringify(c,null,2)),r?.autoEnable){let t=await p(e,d.DECLARATIVE_TOOLS_ENABLED),n=new Set(Array.isArray(t)?t:[]);n.add(i),await g(e,d.DECLARATIVE_TOOLS_ENABLED,Array.from(n))}return{name:i,path:a,status:`imported`}}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function N(e,t=u,n,r){let i=(n.name||``).trim(),a=`.agents/scripts/${j(r)}/${i.endsWith(`.js`)||i.endsWith(`.mjs`)?i:`${i}.js`}`;try{if(await C(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();return n.digest&&!await h(s,n.digest)?{name:i,path:a,status:`failed`,error:`Integrity verification failed for script`}:(await S(e,t,a,s),{name:i,path:a,status:`imported`})}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function P(e,t=u,n,r){let i=(n.name||``).trim(),a=`.agents/skills/${j(r)}/${i}/SKILL.md`;try{if(await C(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();return n.digest&&!await h(s,n.digest)?{name:i,path:a,status:`failed`,error:`Integrity verification failed for skill`}:(O(a,s),await S(e,t,a,s),{name:i,path:a,status:`imported`})}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function F(e,t=u,n,r,i){let a={tools:[],skills:[],scripts:[],diagnostics:[]},o=new Set(r.toolNames||[]),s=new Set(r.skillNames||[]),c=new Set(r.scriptNames||[]),l=n.tools||[],d=n.skills||[],f=n.scripts||[];for(let e of d)if(s.has(e.name)){if(Array.isArray(e.tools))for(let t of e.tools)o.add(t.name);if(Array.isArray(e.scripts))for(let t of e.scripts)c.add(t.name)}for(let n of f)if(c.has(n.name)){let r=await N(e,t,n,i);a.scripts.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Script ${n.name}: ${r.error}`)}for(let n of l)if(o.has(n.name)){let r=await M(e,t,n,i);a.tools.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Tool ${n.name}: ${r.error}`)}for(let n of d)if(s.has(n.name)){let r=await P(e,t,n,i);a.skills.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Skill ${n.name}: ${r.error}`)}return a}export{O as a,x as c,g as d,M as i,b as l,N as n,C as o,P as r,S as s,F as t,_ as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./chunk-UweLmfQS.js";export{e as getMemoryOpfsRoot};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,l as r,n as i,r as a,s as o,t as s}from"./chunk-
|
|
1
|
+
import{a as e,c as t,i as n,l as r,n as i,r as a,s as o,t as s}from"./chunk-B--ueArB.js";async function c(c,l,u,d){let{dirs:f,filename:p}=a(u);for(let a=0;a<2;a++)try{let t=await n(c,l);for(let e of f)t=await t.getDirectoryHandle(e,{create:!0});let r=await t.getFileHandle(p,{create:!0});try{await s(r,d);return}catch(e){if(!((e instanceof Error?e.message:String(e)).includes(`Writable file streams are not supported`)&&(await o(c)).type===`opfs`))throw e}let a=l.replace(/:/g,`-`);await i([e(),`groups`,a,...f,p],d);return}catch(e){if(a===0&&r(e)){t();continue}throw e}}function l(e,t=`attachment.bin`){if(!e)return t;let n=e.replace(/\\/g,`/`).split(`/`).filter(Boolean);return n[n.length-1]||t}function u(e,t={}){let n=t.replacement??`_`,r=t.fallback??`attachment.bin`,i=e.trim();t.stripControlChars&&(i=i.replace(/[\u0000-\u001f\u007f]+/g,``)),t.stripLeadingDots&&(i=i.replace(/^\.+/,``));let a=t.stripControlChars?/[\\/:*?"<>|]/g:/[\\/:*?"<>|\x00-\x1f\u007f]/g;if(t.collapseReplacement&&n){let e=n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);i=i.replace(t.stripControlChars?/[\\/:*?"<>|]+/g:/[\\/:*?"<>|\x00-\x1f\u007f]+/g,n),i=i.replace(RegExp(`${e}+`,`g`),n)}else i=i.replace(a,n);return i=i.trim(),t.stripLeadingDots&&(i=i.replace(/^\.+/,``).trim()),i||r}const d={apng:`image/apng`,avif:`image/avif`,bmp:`image/bmp`,gif:`image/gif`,heic:`image/heic`,heif:`image/heif`,ico:`image/x-icon`,jpeg:`image/jpeg`,jpg:`image/jpeg`,png:`image/png`,svg:`image/svg+xml`,tif:`image/tiff`,tiff:`image/tiff`,webp:`image/webp`},f={...d,"3gp":`video/3gpp`,aac:`audio/aac`,avi:`video/x-msvideo`,bin:`application/octet-stream`,css:`text/css`,csv:`text/csv`,db:`application/vnd.sqlite3`,dll:`application/octet-stream`,dmg:`application/octet-stream`,dylib:`application/octet-stream`,exe:`application/vnd.microsoft.portable-executable`,flac:`audio/flac`,flv:`video/x-flv`,gz:`application/gzip`,htm:`text/html`,html:`text/html`,iso:`application/octet-stream`,js:`text/javascript`,json:`application/json`,m4a:`audio/mp4`,m4v:`video/mp4`,markdown:`text/markdown`,md:`text/markdown`,mjs:`text/javascript`,mkv:`video/x-matroska`,mov:`video/mp4`,mp3:`audio/mpeg`,mp4:`video/mp4`,oga:`audio/ogg`,ogg:`audio/ogg`,ogv:`video/ogg`,pdf:`application/pdf`,rar:`application/vnd.rar`,so:`application/octet-stream`,sqlite:`application/vnd.sqlite3`,sqlite3:`application/vnd.sqlite3`,tar:`application/x-tar`,ts:`text/typescript`,tsx:`text/typescript`,txt:`text/plain`,wasm:`application/wasm`,wav:`audio/wav`,weba:`audio/webm`,webm:`video/webm`,wmv:`video/x-ms-wmv`,xml:`application/xml`,yaml:`text/yaml`,yml:`text/yaml`,zip:`application/zip`};function p(e){return e&&(e.split(/[?#]/,1)[0].replace(/\\/g,`/`).split(`/`).pop()||``).toLowerCase().split(`.`).pop()||``}function m(e,t){let n=p(e);return f[n]??t}function h(e){let t=p(e);return d[t]||null}function g(e){return h(e)!==null}function _(e){let t=p(e);if(t===`md`||t===`markdown`||t===`txt`)return`text/plain`;if(t===`pdf`)return`application/pdf`;if(d[t])return d[t]}export{l as a,g as i,m as n,u as o,_ as r,c as s,h as t};
|