shadow-claw 1.59.6 → 1.59.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.well-known/mcp/server-card.json +12 -4
- package/.well-known/mcp.json +12 -4
- package/dist/cli/build/build.js +1 -1
- package/dist/cli/{chunk-DM4xsTry.js → chunk-3vNYrs_L.js} +1 -1
- package/dist/cli/{chunk-Ctg5L55n.js → chunk-66BvqAV0.js} +1 -1
- package/dist/cli/{chunk-Bq38OubR.js → chunk-B0qusANw.js} +1 -1
- package/dist/cli/{chunk-yiVdvGCJ.js → chunk-B3TrWbca.js} +7 -7
- package/dist/cli/{chunk-C8DBACtx.js → chunk-B88Z8T_9.js} +1 -1
- package/dist/cli/chunk-BCjL0JXf.js +1 -0
- package/dist/cli/chunk-BNcu1oiT.js +1 -0
- package/dist/cli/{chunk-gvNsvav0.js → chunk-C5ypckWC.js} +7 -7
- package/dist/cli/{chunk-Dw8GndPD.js → chunk-CAAeGOdy.js} +1 -1
- package/dist/cli/chunk-CFxww5Yz.js +1 -0
- package/dist/cli/chunk-CGIgtL6R.js +1 -0
- package/dist/cli/{chunk-DJqHK-qS.js → chunk-CQaCgswD.js} +7 -7
- package/dist/cli/chunk-CZdCRqNe.js +7 -0
- package/dist/cli/chunk-CafdvLx-.js +1 -0
- package/dist/cli/{chunk-Bc_weULz.js → chunk-CncW6_WL.js} +1 -1
- package/dist/cli/chunk-DDvuLVfW.js +1 -0
- package/dist/cli/{chunk-Cq_kQohv.js → chunk-DMs7kREC.js} +1 -1
- package/dist/cli/{chunk-CX2itile.js → chunk-D_te8ufL.js} +1 -1
- package/dist/cli/{chunk-3wTukVof.js → chunk-DhOU6GYX.js} +1 -1
- package/dist/cli/chunk-Dhap1VwA.js +1 -0
- package/dist/cli/chunk-DwvavohW.js +1 -0
- package/dist/cli/{chunk-DLde6nuO.js → chunk-SRBRVorc.js} +1 -1
- package/dist/cli/{chunk-D3y7h9Xe.js → chunk-SxK79JmB.js} +1 -1
- package/dist/cli/chunk-_a0CkUNS.js +139 -0
- package/dist/cli/{chunk-C9o6lXP3.js → chunk-hVf839t7.js} +1 -1
- package/dist/cli/chunk-iB8OoMmW.js +7 -0
- package/dist/cli/cli.js +1 -1
- package/dist/headless-agent.js +1 -1
- package/dist/lib/{app-routes-DJdIjp2V.js → app-routes-BXiRvlNl.js} +7 -25
- package/dist/lib/{app-routes-DJdIjp2V.js.map → app-routes-BXiRvlNl.js.map} +1 -1
- package/dist/lib/{attachment-capabilities-Dbb-4ZP5.js → attachment-capabilities-BjkEPip8.js} +2 -2
- package/dist/lib/{attachment-capabilities-Dbb-4ZP5.js.map → attachment-capabilities-BjkEPip8.js.map} +1 -1
- package/dist/lib/{channel-Dlru5ofR.js → channel-mmdGzPkT.js} +3 -3
- package/dist/lib/{channel-Dlru5ofR.js.map → channel-mmdGzPkT.js.map} +1 -1
- package/dist/lib/{chat-template-BuuLY8l7.js → chat-template-DPEKGJhB.js} +2 -2
- package/dist/lib/{chat-template-BuuLY8l7.js.map → chat-template-DPEKGJhB.js.map} +1 -1
- package/dist/lib/{compact-context-BtR55YPU.js → compact-context-CY9BBlUQ.js} +19 -19
- package/dist/lib/{compact-context-BtR55YPU.js.map → compact-context-CY9BBlUQ.js.map} +1 -1
- package/dist/lib/components/common/shadow-claw-provider-model-picker.js +1 -1
- package/dist/lib/components/index.js +27 -27
- 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-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-provider-model-picker.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-DxNI3TlW.js → config-BrHR97zt.js} +2 -2
- package/dist/lib/{config-DxNI3TlW.js.map → config-BrHR97zt.js.map} +1 -1
- package/dist/lib/{configure-peer-js-ChDhOZU4.js → configure-peer-js-ccNvax2N.js} +3 -3
- package/dist/lib/{configure-peer-js-ChDhOZU4.js.map → configure-peer-js-ccNvax2N.js.map} +1 -1
- package/dist/lib/{connections-DC4NZkJE.js → connections-C1FWsBsE.js} +2 -2
- package/dist/lib/{connections-DC4NZkJE.js.map → connections-C1FWsBsE.js.map} +1 -1
- package/dist/lib/{credentials-5vpz0XPk.js → credentials-CZbngHXW.js} +2 -2
- package/dist/lib/{credentials-5vpz0XPk.js.map → credentials-CZbngHXW.js.map} +1 -1
- package/dist/lib/{discover-skills-CD0sKvAI.js → discover-skills-OwlQ2sXA.js} +13 -13
- package/dist/lib/{discover-skills-CD0sKvAI.js.map → discover-skills-OwlQ2sXA.js.map} +1 -1
- package/dist/lib/{download-group-file-Dk3qaxhJ.js → download-group-file-D0wgg10Q.js} +2 -2
- package/dist/lib/{download-group-file-Dk3qaxhJ.js.map → download-group-file-D0wgg10Q.js.map} +1 -1
- package/dist/lib/{file-viewer-B4pRW-_G.js → file-viewer-DOfvX6yy.js} +5 -5
- package/dist/lib/{file-viewer-B4pRW-_G.js.map → file-viewer-DOfvX6yy.js.map} +1 -1
- package/dist/lib/{get-or-create-subscriber-id-HCcgDEPz.js → get-or-create-subscriber-id-wyzaML7Z.js} +2 -2
- package/dist/lib/{get-or-create-subscriber-id-HCcgDEPz.js.map → get-or-create-subscriber-id-wyzaML7Z.js.map} +1 -1
- package/dist/lib/{git-B3Q1euc5.js → git-D2J_j9X9.js} +5 -5
- package/dist/lib/{git-B3Q1euc5.js.map → git-D2J_j9X9.js.map} +1 -1
- package/dist/lib/{iframe-bridge-scripts-D8iuFhUk.js → iframe-bridge-scripts-Dx825LLG.js} +2 -2
- package/dist/lib/{iframe-bridge-scripts-D8iuFhUk.js.map → iframe-bridge-scripts-Dx825LLG.js.map} +1 -1
- package/dist/lib/index.js +28 -28
- package/dist/lib/{init-chat-split-resize-B0ODULx9.js → init-chat-split-resize-Cc0bd2z9.js} +2 -2
- package/dist/lib/{init-chat-split-resize-B0ODULx9.js.map → init-chat-split-resize-Cc0bd2z9.js.map} +1 -1
- package/dist/lib/{init-control-plane-C1FRRmjC.js → init-control-plane-B7blDVIE.js} +15 -15
- package/dist/lib/{init-control-plane-C1FRRmjC.js.map → init-control-plane-B7blDVIE.js.map} +1 -1
- package/dist/lib/{invoke-agent-CzN7sVh-.js → invoke-agent-SxvudiDT.js} +11 -11
- package/dist/lib/{invoke-agent-CzN7sVh-.js.map → invoke-agent-SxvudiDT.js.map} +1 -1
- package/dist/lib/{markdown-mbNo7cV3.js → markdown--6vTAPEH.js} +2 -2
- package/dist/lib/{markdown-mbNo7cV3.js.map → markdown--6vTAPEH.js.map} +1 -1
- package/dist/lib/{mcp-reconnect-3T7yWGEY.js → mcp-reconnect-BeqQvNWO.js} +3 -3
- package/dist/lib/{mcp-reconnect-3T7yWGEY.js.map → mcp-reconnect-BeqQvNWO.js.map} +1 -1
- package/dist/lib/{model-ranking-DGNSWYwN.js → model-ranking-BhsJV7vb.js} +2 -2
- package/dist/lib/{model-ranking-DGNSWYwN.js.map → model-ranking-BhsJV7vb.js.map} +1 -1
- package/dist/lib/{move-group-entry-NMTJ59M9.js → move-group-entry-DDpjxa10.js} +5 -5
- package/dist/lib/{move-group-entry-NMTJ59M9.js.map → move-group-entry-DDpjxa10.js.map} +1 -1
- package/dist/lib/{orchestrator-B8FV1V7x.js → orchestrator-C7fkh7T7.js} +24 -24
- package/dist/lib/{orchestrator-B8FV1V7x.js.map → orchestrator-C7fkh7T7.js.map} +1 -1
- package/dist/lib/{orchestrator-i_QJ-o22.js → orchestrator-CCARkxQC.js} +11 -11
- package/dist/lib/orchestrator-CCARkxQC.js.map +1 -0
- package/dist/lib/{parse-path-DPCn-HwI.js → parse-path-BOHQP_IQ.js} +3 -3
- package/dist/lib/{parse-path-DPCn-HwI.js.map → parse-path-BOHQP_IQ.js.map} +1 -1
- package/dist/lib/{peerjs-z5zeioPV.js → peerjs-Bfw_FWLB.js} +8 -8
- package/dist/lib/{peerjs-z5zeioPV.js.map → peerjs-Bfw_FWLB.js.map} +1 -1
- package/dist/lib/{process-peer-query-param-CJp7w7AU.js → process-peer-query-param-BxYiZNdf.js} +5 -5
- package/dist/lib/{process-peer-query-param-CJp7w7AU.js.map → process-peer-query-param-BxYiZNdf.js.map} +1 -1
- package/dist/lib/{process-pending-shared-payloads-B6_TlBFA.js → process-pending-shared-payloads-DPIbwRb3.js} +4 -4
- package/dist/lib/{process-pending-shared-payloads-B6_TlBFA.js.map → process-pending-shared-payloads-DPIbwRb3.js.map} +1 -1
- package/dist/lib/{process-room-query-param-C3FFGGn6.js → process-room-query-param-B2_d50nE.js} +4 -4
- package/dist/lib/{process-room-query-param-C3FFGGn6.js.map → process-room-query-param-B2_d50nE.js.map} +1 -1
- package/dist/lib/{provider-DcQZypu5.js → provider-BC9KPI14.js} +3 -3
- package/dist/lib/{provider-DcQZypu5.js.map → provider-BC9KPI14.js.map} +1 -1
- package/dist/lib/{push-client-Cx5rMs6J.js → push-client-rrjTdc-U.js} +5 -5
- package/dist/lib/{push-client-Cx5rMs6J.js.map → push-client-rrjTdc-U.js.map} +1 -1
- package/dist/lib/{read-group-file-bytes-CXOG_YyM.js → read-group-file-bytes-UQIk1eJG.js} +2 -2
- package/dist/lib/{read-group-file-bytes-CXOG_YyM.js.map → read-group-file-bytes-UQIk1eJG.js.map} +1 -1
- package/dist/lib/{rooms-CwlkYLDU.js → rooms-bwGoYb1q.js} +2 -2
- package/dist/lib/{rooms-CwlkYLDU.js.map → rooms-bwGoYb1q.js.map} +1 -1
- package/dist/lib/{shadow-claw-DoQ7fgl5.js → shadow-claw-CypGVlVO.js} +17 -20
- package/dist/lib/shadow-claw-CypGVlVO.js.map +1 -0
- package/dist/lib/{shadow-claw-a2ui-Br6qJMs1.js → shadow-claw-a2ui-lG0vQbW8.js} +2 -2
- package/dist/lib/{shadow-claw-a2ui-Br6qJMs1.js.map → shadow-claw-a2ui-lG0vQbW8.js.map} +1 -1
- package/dist/lib/{shadow-claw-accounts-BTDILfWw.js → shadow-claw-accounts-CkqyCxwp.js} +3 -3
- package/dist/lib/{shadow-claw-accounts-BTDILfWw.js.map → shadow-claw-accounts-CkqyCxwp.js.map} +1 -1
- package/dist/lib/{shadow-claw-channel-config-IKiL34tI.js → shadow-claw-channel-config-DJpDovkF.js} +4 -4
- package/dist/lib/{shadow-claw-channel-config-IKiL34tI.js.map → shadow-claw-channel-config-DJpDovkF.js.map} +1 -1
- package/dist/lib/{shadow-claw-channels-JgEzuHWK.js → shadow-claw-channels-DJLwRovH.js} +3 -3
- package/dist/lib/{shadow-claw-channels-JgEzuHWK.js.map → shadow-claw-channels-DJLwRovH.js.map} +1 -1
- package/dist/lib/{shadow-claw-chat-SGUDT31r.js → shadow-claw-chat-B92cPaft.js} +15 -15
- package/dist/lib/{shadow-claw-chat-SGUDT31r.js.map → shadow-claw-chat-B92cPaft.js.map} +1 -1
- package/dist/lib/{shadow-claw-control-plane-CRWFZ3vD.js → shadow-claw-control-plane-fvn-qyHj.js} +7 -7
- package/dist/lib/{shadow-claw-control-plane-CRWFZ3vD.js.map → shadow-claw-control-plane-fvn-qyHj.js.map} +1 -1
- package/dist/lib/{shadow-claw-conversations-D23GJ7qo.js → shadow-claw-conversations-CsVyDOny.js} +7 -7
- package/dist/lib/{shadow-claw-conversations-D23GJ7qo.js.map → shadow-claw-conversations-CsVyDOny.js.map} +1 -1
- package/dist/lib/{shadow-claw-file-viewer-C1V8WTiU.js → shadow-claw-file-viewer-DFfyP7s5.js} +10 -10
- package/dist/lib/{shadow-claw-file-viewer-C1V8WTiU.js.map → shadow-claw-file-viewer-DFfyP7s5.js.map} +1 -1
- package/dist/lib/{shadow-claw-files-DN7irmE1.js → shadow-claw-files-cT6HL7ye.js} +11 -11
- package/dist/lib/{shadow-claw-files-DN7irmE1.js.map → shadow-claw-files-cT6HL7ye.js.map} +1 -1
- package/dist/lib/{shadow-claw-git-D-1oIh65.js → shadow-claw-git-Cv9mQgTx.js} +6 -6
- package/dist/lib/{shadow-claw-git-D-1oIh65.js.map → shadow-claw-git-Cv9mQgTx.js.map} +1 -1
- package/dist/lib/{shadow-claw-integrations-CZjnm7cM.js → shadow-claw-integrations-RZZ-m-Id.js} +4 -4
- package/dist/lib/{shadow-claw-integrations-CZjnm7cM.js.map → shadow-claw-integrations-RZZ-m-Id.js.map} +1 -1
- package/dist/lib/{shadow-claw-llm-4Gefh5FN.js → shadow-claw-llm-CKOYzPDp.js} +9 -9
- package/dist/lib/{shadow-claw-llm-4Gefh5FN.js.map → shadow-claw-llm-CKOYzPDp.js.map} +1 -1
- package/dist/lib/{shadow-claw-mcp-remote-B9ssb3YV.js → shadow-claw-mcp-remote-BKFROurv.js} +4 -4
- package/dist/lib/{shadow-claw-mcp-remote-B9ssb3YV.js.map → shadow-claw-mcp-remote-BKFROurv.js.map} +1 -1
- package/dist/lib/{shadow-claw-networking-BN5BB4hb.js → shadow-claw-networking-DYfiUQaH.js} +2 -2
- package/dist/lib/{shadow-claw-networking-BN5BB4hb.js.map → shadow-claw-networking-DYfiUQaH.js.map} +1 -1
- package/dist/lib/{shadow-claw-notifications-71KARtkY.js → shadow-claw-notifications-JJlzriuX.js} +3 -3
- package/dist/lib/{shadow-claw-notifications-71KARtkY.js.map → shadow-claw-notifications-JJlzriuX.js.map} +1 -1
- package/dist/lib/{shadow-claw-page-header-DMGO-TSe.js → shadow-claw-page-header-C_Qr3xZM.js} +2 -2
- package/dist/lib/{shadow-claw-page-header-DMGO-TSe.js.map → shadow-claw-page-header-C_Qr3xZM.js.map} +1 -1
- package/dist/lib/{shadow-claw-pages-BiRM6qiA.js → shadow-claw-pages-BCo3ihZI.js} +11 -11
- package/dist/lib/{shadow-claw-pages-BiRM6qiA.js.map → shadow-claw-pages-BCo3ihZI.js.map} +1 -1
- package/dist/lib/{shadow-claw-peerjs-BZu7jNSe.js → shadow-claw-peerjs-CFNjfrY5.js} +6 -6
- package/dist/lib/{shadow-claw-peerjs-BZu7jNSe.js.map → shadow-claw-peerjs-CFNjfrY5.js.map} +1 -1
- package/dist/lib/{shadow-claw-provider-model-picker-BXYXEobD.js → shadow-claw-provider-model-picker-B-Ct4yW-.js} +2 -2
- package/dist/lib/{shadow-claw-provider-model-picker-BXYXEobD.js.map → shadow-claw-provider-model-picker-B-Ct4yW-.js.map} +1 -1
- package/dist/lib/{shadow-claw-settings-CcT5EK08.js → shadow-claw-settings-BMwne0bh.js} +7 -7
- package/dist/lib/{shadow-claw-settings-CcT5EK08.js.map → shadow-claw-settings-BMwne0bh.js.map} +1 -1
- package/dist/lib/{shadow-claw-storage-eTOpbvpi.js → shadow-claw-storage-DUY8B9m-.js} +5 -5
- package/dist/lib/{shadow-claw-storage-eTOpbvpi.js.map → shadow-claw-storage-DUY8B9m-.js.map} +1 -1
- package/dist/lib/{shadow-claw-task-server-DFImTUbw.js → shadow-claw-task-server-yWeoA3eL.js} +2 -2
- package/dist/lib/{shadow-claw-task-server-DFImTUbw.js.map → shadow-claw-task-server-yWeoA3eL.js.map} +1 -1
- package/dist/lib/{shadow-claw-tasks-BjaxsmUx.js → shadow-claw-tasks-Bg0uM15I.js} +9 -9
- package/dist/lib/{shadow-claw-tasks-BjaxsmUx.js.map → shadow-claw-tasks-Bg0uM15I.js.map} +1 -1
- package/dist/lib/{shadow-claw-terminal-C-4wreFe.js → shadow-claw-terminal-fyJPppY_.js} +2 -2
- package/dist/lib/{shadow-claw-terminal-C-4wreFe.js.map → shadow-claw-terminal-fyJPppY_.js.map} +1 -1
- package/dist/lib/{shadow-claw-tools-COdrGZJk.js → shadow-claw-tools-D0T8m3go.js} +7 -7
- package/dist/lib/{shadow-claw-tools-COdrGZJk.js.map → shadow-claw-tools-D0T8m3go.js.map} +1 -1
- package/dist/lib/{shadow-claw-webvm-sxqVjO0L.js → shadow-claw-webvm-CQvzJwKI.js} +3 -3
- package/dist/lib/{shadow-claw-webvm-sxqVjO0L.js.map → shadow-claw-webvm-CQvzJwKI.js.map} +1 -1
- package/dist/lib/{sync-web-mcp-registration-D4hdUwtv.js → sync-web-mcp-registration-BFtG_4kx.js} +6 -6
- package/dist/lib/{sync-web-mcp-registration-D4hdUwtv.js.map → sync-web-mcp-registration-BFtG_4kx.js.map} +1 -1
- package/dist/lib/{system-prompt-DT_KeYaL.js → system-prompt-bhGRLoL2.js} +7 -7
- package/dist/lib/{system-prompt-DT_KeYaL.js.map → system-prompt-bhGRLoL2.js.map} +1 -1
- package/dist/lib/{tools-Beuyh8y1.js → tools-B8OJ4sMF.js} +4 -4
- package/dist/lib/{tools-Beuyh8y1.js.map → tools-B8OJ4sMF.js.map} +1 -1
- package/dist/lib/{transformers-DydnReu4.js → transformers-BMURofG6.js} +2 -2
- package/dist/lib/{transformers-DydnReu4.js.map → transformers-BMURofG6.js.map} +1 -1
- package/dist/lib/{trusted-types-CfwZl_rr.js → trusted-types-HwsGS5Nj.js} +19 -17
- package/dist/lib/{trusted-types-CfwZl_rr.js.map → trusted-types-HwsGS5Nj.js.map} +1 -1
- package/dist/lib/{upload-group-file-BbBzjTcN.js → upload-group-file-CJpoNjEb.js} +3 -3
- package/dist/lib/{upload-group-file-BbBzjTcN.js.map → upload-group-file-CJpoNjEb.js.map} +1 -1
- package/dist/lib/utils/index.js +1 -1
- package/dist/lib/utils/namespaced-storage.js +1 -1
- package/dist/lib/utils/runtime-assets.js +1 -1
- package/dist/lib/utils/utils.js +1 -1
- package/dist/lib/{webmcp-DCfAFiIO.js → webmcp-BoMTvgmX.js} +3 -3
- package/dist/lib/{webmcp-DCfAFiIO.js.map → webmcp-BoMTvgmX.js.map} +1 -1
- package/dist/lib/{write-group-file-bytes-Ccn-VFUU.js → write-group-file-bytes-CNT7DqOZ.js} +3 -3
- package/dist/lib/{write-group-file-bytes-Ccn-VFUU.js.map → write-group-file-bytes-CNT7DqOZ.js.map} +1 -1
- package/dist/public/.well-known/mcp/server-card.json +12 -4
- package/dist/public/.well-known/mcp.json +12 -4
- package/dist/public/agent.worker.js +1 -1
- package/dist/public/attachment-capabilities-AdwXt3--.js +1 -0
- package/dist/public/{channel-BylT3rJC.js → channel-Dk7wl-Av.js} +1 -1
- package/dist/public/{chat-template-DPHJy7tr.js → chat-template-BwAnTFKf.js} +1 -1
- package/dist/public/{compact-context-BINQh64w.js → compact-context-fOTqwKF6.js} +2 -2
- package/dist/public/config-C16fFWtP.js +1 -0
- package/dist/public/{configure-peer-js-DChhcOfe.js → configure-peer-js-BOV0tR6G.js} +1 -1
- package/dist/public/{connections-CHaw0VqP.js → connections-Dxwj8yK_.js} +1 -1
- package/dist/public/{create-model-cache-fetch-DQebkoPL.js → create-model-cache-fetch-DSAFjOwc.js} +1 -1
- package/dist/public/{credentials-CgVqS119.js → credentials-CJUQ5Ep2.js} +1 -1
- package/dist/public/{custom-element-security-kiDhPfb8.js → custom-element-security-B2daIE5r.js} +2 -2
- package/dist/public/{discover-skills-Cvmx5I9V.js → discover-skills-D1sNTy2r.js} +6 -6
- package/dist/public/docs/example/article/index.html +28 -29
- package/dist/public/docs/example/article.html +28 -29
- package/dist/public/docs/publishing/index.html +28 -29
- package/dist/public/docs/publishing.html +28 -29
- package/dist/public/docs/skill-creator/index.html +28 -29
- package/dist/public/docs/skill-creator.html +28 -29
- package/dist/public/{download-group-file-BapoRgfU.js → download-group-file-BkMH-JKi.js} +1 -1
- package/dist/public/{e2e-bridge-C0g8vZKr.js → e2e-bridge-Cz95DLlb.js} +1 -1
- package/dist/public/get-group-dir-D--BiEyk.js +1 -0
- package/dist/public/{get-or-create-subscriber-id-GvRZYXwA.js → get-or-create-subscriber-id-jVHnQfbr.js} +1 -1
- package/dist/public/{git-CaAAZfVd.js → git-BmMlwIMP.js} +2 -2
- package/dist/public/{iframe-bridge-scripts-BnqtKhE4.js → iframe-bridge-scripts-Cibg0m6A.js} +1 -1
- package/dist/public/index.html +28 -29
- package/dist/public/index.js +1 -1
- package/dist/public/{init-chat-split-resize-Btonoy8u.js → init-chat-split-resize-C8AqCCiK.js} +1 -1
- package/dist/public/init-control-plane-Cb31yLTY.js +1 -0
- package/dist/public/{invoke-agent-B3Osw6K7.js → invoke-agent-CN7mSV0Z.js} +1 -1
- package/dist/public/main/index.html +28 -29
- package/dist/public/main/memory/index.html +28 -29
- package/dist/public/main/memory.html +28 -29
- package/dist/public/main.html +28 -29
- package/dist/public/{markdown-CPbU4r1U.js → markdown-CDSb5Hrl.js} +1 -1
- package/dist/public/{mcp-reconnect-CzROVsXG.js → mcp-reconnect-iPZPihwX.js} +1 -1
- package/dist/public/{memory-storage-BkoMlxOr.js → memory-storage-2m7KZ-aP.js} +1 -1
- package/dist/public/{model-ranking-CK0iBo3Z.js → model-ranking-BgOSaNIy.js} +1 -1
- package/dist/public/{move-group-entry-CTxoq7lw.js → move-group-entry-CXneuNVa.js} +1 -1
- package/dist/public/orchestrator-DBO4NZqd.js +63 -0
- package/dist/public/{orchestrator-BrDjQbGf.js → orchestrator-Dyylc8IU.js} +2 -2
- package/dist/public/{peerjs-CgF4Iz5W.js → peerjs-l0jiBoh6.js} +1 -1
- package/dist/public/{process-peer-query-param-BL2k0Hu-.js → process-peer-query-param-s-aSP1Rq.js} +1 -1
- package/dist/public/{process-pending-shared-payloads-C1AgGvn8.js → process-pending-shared-payloads-BN3GigPT.js} +1 -1
- package/dist/public/{process-room-query-param-DM0QCq3_.js → process-room-query-param-B2Qe0F0M.js} +1 -1
- package/dist/public/provider-YPZmsuHR.js +1 -0
- package/dist/public/{push-client-DJEOz7bi.js → push-client-B2LC8Qp9.js} +1 -1
- package/dist/public/{rooms-C6LXIJl4.js → rooms-ChCEOvkw.js} +1 -1
- package/dist/public/service-worker.js +1 -1
- package/dist/public/shadow-claw-Br8mWDUx.js +1176 -0
- package/dist/public/{shadow-claw-accounts--4hd_oCz.js → shadow-claw-accounts-Dm6G7KMP.js} +1 -1
- package/dist/public/{shadow-claw-card-IbNlZAdK.js → shadow-claw-card-CggS8uSa.js} +1 -1
- package/dist/public/{shadow-claw-channels-Vq_pPGa2.js → shadow-claw-channels-088vhuWO.js} +1 -1
- package/dist/public/{shadow-claw-chat-D7_GS25e.js → shadow-claw-chat-BRwRlq-n.js} +3 -3
- package/dist/public/{shadow-claw-control-plane-WTMEV8_p.js → shadow-claw-control-plane-rhKACK85.js} +2 -2
- package/dist/public/{shadow-claw-conversations-CLQgU1IT.js → shadow-claw-conversations-CF_yUfKl.js} +1 -1
- package/dist/public/{shadow-claw-empty-state-D4CrFGsN.js → shadow-claw-empty-state-CkpOSXCS.js} +1 -1
- package/dist/public/{shadow-claw-file-viewer-BhqiqLWQ.js → shadow-claw-file-viewer-DWCejuY3.js} +4 -4
- package/dist/public/{shadow-claw-files-senDiG9l.js → shadow-claw-files-L6_ioyzh.js} +2 -2
- package/dist/public/{shadow-claw-git-DOOCqY23.js → shadow-claw-git-DsdkwLqQ.js} +2 -2
- package/dist/public/{shadow-claw-integrations-Bsvc3Agq.js → shadow-claw-integrations-CSbRTOm3.js} +1 -1
- package/dist/public/{shadow-claw-llm-actYICAk.js → shadow-claw-llm-BitaeAVc.js} +2 -2
- package/dist/public/{shadow-claw-mcp-remote-BYUgrK3v.js → shadow-claw-mcp-remote-gSbV5riy.js} +1 -1
- package/dist/public/{shadow-claw-networking-Dk3p5Ny_.js → shadow-claw-networking-Dn_y6Cl9.js} +1 -1
- package/dist/public/{shadow-claw-notifications-CzPAlay8.js → shadow-claw-notifications-Cj4Lqx8U.js} +1 -1
- package/dist/public/{shadow-claw-page-header-CjJpVkyL.js → shadow-claw-page-header-DR4OZFt2.js} +1 -1
- package/dist/public/{shadow-claw-page-header-action-button-2DH5O1TD.js → shadow-claw-page-header-action-button-BnCV_2Kb.js} +1 -1
- package/dist/public/{shadow-claw-pages-3r5I-wI8.js → shadow-claw-pages-mpDOtNYj.js} +6 -6
- package/dist/public/{shadow-claw-pdf-viewer-BiCEwsoY.js → shadow-claw-pdf-viewer-DZ_84qJH.js} +1 -1
- package/dist/public/{shadow-claw-settings-DgB9RSZN.js → shadow-claw-settings-CfFTYTEy.js} +2 -2
- package/dist/public/{shadow-claw-storage-JB_43nd8.js → shadow-claw-storage-DLmiT4bG.js} +1 -1
- package/dist/public/{shadow-claw-task-server-oi5UIxdA.js → shadow-claw-task-server-BoMBCsiS.js} +1 -1
- package/dist/public/{shadow-claw-tasks-CnyiOt81.js → shadow-claw-tasks-ChEp1j7x.js} +3 -3
- package/dist/public/{shadow-claw-terminal-BC3RynHt.js → shadow-claw-terminal-BaoVbOda.js} +1 -1
- package/dist/public/{shadow-claw-toast-YjG--2Za.js → shadow-claw-toast-e8oz7z6Z.js} +1 -1
- package/dist/public/{shadow-claw-tools-Bbwk4vlT.js → shadow-claw-tools-BYjUBiJz.js} +1 -1
- package/dist/public/{shadow-claw-webvm-HZqzl2H5.js → shadow-claw-webvm-xGb13TME.js} +1 -1
- package/dist/public/{sync-web-mcp-registration-BaH2nAP0.js → sync-web-mcp-registration-CQluj-Kz.js} +1 -1
- package/dist/public/{system-prompt-Dck3N8T0.js → system-prompt-CTJn0tK-.js} +1 -1
- package/dist/public/{tools-DHA1dK2I.js → tools-D-52Zmfc.js} +1 -1
- package/dist/public/{transformers-C-DuTM2K.js → transformers-CQ9ss9rD.js} +1 -1
- package/dist/public/{upload-group-file-Cejr3zo1.js → upload-group-file-A8kB7lvO.js} +1 -1
- package/dist/public/{webmcp-CMRtu57-.js → webmcp-DIUZjVF5.js} +1 -1
- package/dist/public/{write-group-file-CmJuVQNO.js → write-group-file-R67DjJ-q.js} +1 -1
- package/dist/public/{write-group-file-bytes-Cejr3zo1.js → write-group-file-bytes-A8kB7lvO.js} +1 -1
- package/dist/public/{zip-reader-CuQ13eLe.js → zip-reader-DN7FB-Q0.js} +1 -1
- package/dist/server.js +1 -1
- package/package.json +1 -1
- package/dist/cli/chunk-BFziiMKt.js +0 -7
- package/dist/cli/chunk-BM3llsxb.js +0 -1
- package/dist/cli/chunk-Bj5qFsDi.js +0 -7
- package/dist/cli/chunk-Bj95zm-y.js +0 -1
- package/dist/cli/chunk-BpyP-esT.js +0 -1
- package/dist/cli/chunk-CX696s3_.js +0 -1
- package/dist/cli/chunk-DRxCrCAA.js +0 -139
- package/dist/cli/chunk-DjbCHa0h.js +0 -1
- package/dist/cli/chunk-DsQhAF31.js +0 -1
- package/dist/cli/chunk-VM-dECyG.js +0 -1
- package/dist/cli/chunk-heu2xRw1.js +0 -1
- package/dist/lib/orchestrator-i_QJ-o22.js.map +0 -1
- package/dist/lib/shadow-claw-DoQ7fgl5.js.map +0 -1
- package/dist/public/app-routes-V_-URXc5.js +0 -1
- package/dist/public/attachment-capabilities-B6ibLwQB.js +0 -1
- package/dist/public/config-C-YdSFZB.js +0 -1
- package/dist/public/get-group-dir-DL44kvqW.js +0 -1
- package/dist/public/init-control-plane-BoJijVtf.js +0 -1
- package/dist/public/orchestrator-CaUpEVkQ.js +0 -63
- package/dist/public/provider-DNIL4-Hw.js +0 -1
- package/dist/public/shadow-claw-DdgeYPg5.js +0 -1176
|
@@ -216,10 +216,10 @@ ${o}
|
|
|
216
216
|
`));let c=t.theme||{};if(c.stylesheet){let e=kl(c.stylesheet),t=`<link rel="stylesheet" href="${Q(e)}" />`,n=Q(e).replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),r=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),a=RegExp(`<link\\s+[^>]*href=["'](?:${r}|${n})["'][^>]*>`,`iu`),o=ic(i),s=(o===-1?i:i.slice(0,o)).replace(/<script\b[\s\S]*?<\/script>/gi,``);a.test(s)||(i=/<link\s+rel="stylesheet"\s+href="index\.css"\s*\/?>/iu.test(i)?i.replace(/(<link\s+rel="stylesheet"\s+href="index\.css"\s*\/?>)/iu,`$1\n ${t}`):ac(i,` ${t}`))}let{allowedDomains:l}=Tl(t,c),u=Dl(t,l),d=`<script id="shadow-claw-site-config" type="application/json">${JSON.stringify(u).replace(/</g,`\\u003c`).replace(/>/g,`\\u003e`).replace(/\//g,`\\u002f`)}<\/script>`;i=i.includes(`<script id="shadow-claw-site-config"`)?i.replace(/<script\s+id="shadow-claw-site-config"[\s\S]*?<\/script>/iu,()=>d):i.includes(`<script src="theme-init.js">`)?i.replace(`<script src="theme-init.js">`,`${d}\n <script src="theme-init.js">`):/<script\b[^>]*>\s*var\s+ShadowClawThemeInit\b/iu.test(i)?i.replace(/(<script\b[^>]*>\s*var\s+ShadowClawThemeInit\b)/iu,`${d}\n $1`):ac(i,` ${d}`),i=i.replace(/\s*<meta\s+name="shadow-claw-override-prerender-skeleton"[^>]*>/giu,``),typeof t.settings?.overridePrerenderSkeleton==`boolean`&&(i=i.replace(`<script id="shadow-claw-site-config"`,`<meta name="shadow-claw-override-prerender-skeleton" content="${t.settings.overridePrerenderSkeleton}" />\n <script id="shadow-claw-site-config"`));let f=n||t.sidebar?.slotHtml||(t.sidebar?.sections?Nl(t.sidebar.sections):``);if(f){let e=f.trim();/\bslot="sidebar(?:-nav|-content|-footer)?"/iu.test(e)||(e=`<div slot="sidebar" class="sidebar-custom-sections">\n${e}\n</div>`);let t=i.match(/<[^>]+?\bslot="sidebar(?:-nav|-content|-footer)?"[^>]*>[\s\S]*?<\/[^>]+>/iu);t&&(i=i.replace(t[0],``)),i.includes(`</shadow-claw>`)?i=i.replace(`</shadow-claw>`,` ${e}\n</shadow-claw>`):i.includes(`<shadow-claw></shadow-claw>`)&&(i=i.replace(`<shadow-claw></shadow-claw>`,`<shadow-claw>\n ${e}\n</shadow-claw>`))}if(t.sidebar&&(i=Uc(i,t.sidebar)),t.feed===!0||typeof t.feed==`object`&&t.feed?.enabled===!0){let e=o.titleText||a.title||`ShadowClaw`,t=o.siteUrl?o.siteUrl.endsWith(`/`)?o.siteUrl:`${o.siteUrl}/`:``,n=`<link rel="alternate" type="application/rss+xml" title="${Q(e)} » Feed" href="${Q(t)}feed/" />`,r=`<link rel="alternate" type="application/atom+xml" title="${Q(e)} » Atom Feed" href="${Q(t)}feed/atom/" />`,s=`<link rel="alternate" type="application/rdf+xml" title="${Q(e)} » RDF Feed" href="${Q(t)}feed/rdf/" />`;i.includes(`type="application/rss+xml"`)||(i=ac(i,` ${n}`)),i.includes(`type="application/atom+xml"`)||(i=ac(i,` ${r}`)),i.includes(`type="application/rdf+xml"`)||(i=ac(i,` ${s}`))}return i}function zl(e){let t=(e.src||``).replace(/^(pages\/)?(resources\/|deps\/|main\/)?/,``),n=e.type||(t.endsWith(`.svg`)?`image/svg+xml`:t.endsWith(`.png`)?`image/png`:`image/x-icon`),r=(e.purpose||`any`).trim();return n===`image/svg+xml`||t.endsWith(`.svg`)?[{...e,src:t,type:n,purpose:`any`}]:r.includes(`any`)&&r.includes(`maskable`)?[{...e,src:t,type:n,purpose:`any`},{...e,src:t,type:n,purpose:`maskable`}]:[{...e,src:t,type:n,purpose:r}]}function Bl(e,t){let n=typeof e==`string`?JSON.parse(e):e,r=t.pwa||{},i=t.site||{},a=C.env.PAGES_ORIGIN;if((r.name||i.title)&&(n.name=r.name||i.title),(r.shortName||i.title)&&(n.short_name=r.shortName||i.title),i.description&&(n.description=i.description),r.backgroundColor&&(n.background_color=r.backgroundColor),(r.themeColor||i.themeColor)&&(n.theme_color=r.themeColor||i.themeColor),r.startUrl?n.start_url=r.startUrl:a?n.start_url=a:n.start_url||=`./`,r.icons&&Array.isArray(r.icons)){let e=r.icons.flatMap(zl),t=Array.isArray(n.icons)?n.icons.flatMap(zl):[],i=new Set(e.map(e=>e.src));n.icons=[...e,...t.filter(e=>!i.has(e.src))]}else Array.isArray(n.icons)&&(n.icons=n.icons.flatMap(zl));return r.screenshots&&Array.isArray(r.screenshots)&&(n.screenshots=r.screenshots.map(e=>{let t=(e.src||``).replace(/^(pages\/)?(resources\/|deps\/|main\/)?/,``);return{...e,src:t}})),JSON.stringify(n,null,2)}function Vl(e,t){if(!t)return e;let n=t.endsWith(`/`)?t:t+`/`;return/<loc>/i.test(e)?e.replace(/<loc>([^<]*)<\/loc>/giu,(e,t)=>{try{let e=new URL(t.trim()),r=new URL(n),i=r.pathname.replace(/\/$/,``);return`<loc>${Q(r.origin+i+e.pathname+e.search)}</loc>`}catch{return`<loc>${Q(n)}</loc>`}}):e.split(`
|
|
217
217
|
`).map(e=>{let t=e.trim();if(!t)return e;if(t.startsWith(`http://`)||t.startsWith(`https://`))try{let e=new URL(t),r=new URL(n);return e.protocol=r.protocol,e.host=r.host,e.pathname=(r.pathname.endsWith(`/`)?r.pathname.slice(0,-1):r.pathname)+e.pathname,e.toString()}catch{return n}if(t.startsWith(`/`))try{return new URL(t,n).toString()}catch{return e}return e}).join(`
|
|
218
218
|
`)}function Hl(e,t,n){let r=e,i=t.site||{};if(i.title&&(r=r.replace(/<title>[^<]*<\/title>/iu,`<title>${Q(i.title)} - Not Found</title>`)),n){let e=n.endsWith(`/`)?n:n+`/`;r=r.replace(/l\.replace\(["']\/shadow-claw\/["']\)/gu,`l.replace("${Q(e)}")`)}return r}function Ul(e){let t=m.resolve(e),n=t.split(m.sep),r=n[n.length-1],i=n[n.length-2];return(r===`resources`||r===`deps`)&&i===`pages`?m.resolve(t,`../..`):r===`resources`||r===`deps`||r===`pages`?m.resolve(t,`..`):t}function Wl(e){let t=m.resolve(e),n=m.basename(t);return n===`resources`||n===`deps`||n===`pages`?m.resolve(t,`..`):t}function Gl(e,t,n){if(!e||typeof e!=`string`)return[];if(m.isAbsolute(e))return[e];let r=e.replace(/^\/+/,``).replace(/^(pages\/)?(resources\/|deps\/|main\/)?/,``),i=Ul(t);return[m.resolve(t,`resources`,r),m.resolve(t,`deps`,r),m.resolve(t,`main`,r),m.resolve(i,`pages`,`resources`,r),m.resolve(i,`pages`,`resources`,e),m.resolve(i,`pages`,`deps`,r),m.resolve(i,`pages`,`deps`,e),m.resolve(i,`resources`,r),m.resolve(i,`resources`,e),m.resolve(i,`deps`,r),m.resolve(i,`deps`,e),m.resolve(n,`pages`,`resources`,r),m.resolve(n,`pages`,`deps`,r),m.resolve(n,`resources`,r),m.resolve(n,`deps`,r),m.resolve(n,`pages`,e),m.resolve(n,`pages`,r),m.resolve(n,`pages`,`main`,r),m.resolve(i,`pages`,e),m.resolve(i,`pages`,r),m.resolve(i,`pages`,`main`,r),m.resolve(i,`pages`,`main`,e),m.resolve(t,e),m.resolve(t,r),m.resolve(n,e),m.resolve(n,r),m.resolve(i,e),m.resolve(i,r)]}async function Kl(e,t,n){if(!n)return null;let r=await ql([...Xa(e),...Xa(t),...Xa(Ul(e))]);if(!r)return null;let i=await Al(r);return i?ll(i,n):null}async function ql(e){for(let t of e)if(t)try{return await I(t),t}catch{}return null}async function Jl(e,t,n){let r=n?m.dirname(m.resolve(n)):C.cwd(),i=Wl(r),a=Ul(r),o=[m.resolve(r,`resources`),m.resolve(r,`deps`),m.resolve(i,`resources`),m.resolve(i,`deps`),m.resolve(i,`pages`,`resources`),m.resolve(i,`pages`,`deps`),m.resolve(a,`resources`),m.resolve(a,`deps`),m.resolve(a,`pages`,`resources`),m.resolve(a,`pages`,`deps`)];for(let e of o)try{let n=await M(e,{withFileTypes:!0});for(let r of n){let n=m.join(e,r.name),i=m.join(t,r.name);r.isDirectory()?await k(n,i,{recursive:!0,force:!0}):r.isFile()&&(await A(m.dirname(i),{recursive:!0}),await O(n,i))}}catch{}let s=await ql([...e.pages?.notFoundPath?Gl(e.pages.notFoundPath,r,i):[],...e.branding?.notFoundPath?Gl(e.branding.notFoundPath,r,i):[],...e.notFoundPath?Gl(e.notFoundPath,r,i):[],...Gl(`404.html`,r,i)]);if(s)try{await O(s,m.join(t,`404.html`)),console.log(` Copied custom 404.html: ${s}`)}catch(e){console.warn(` Warning: Could not copy custom 404.html: ${e.message}`)}let c=await ql([...e.pwa?.manifestPath?Gl(e.pwa.manifestPath,r,i):[],...e.manifestPath?Gl(e.manifestPath,r,i):[],...Gl(`manifest.json`,r,i)]);if(c)try{await O(c,m.join(t,`manifest.json`)),console.log(` Copied custom manifest.json: ${c}`)}catch(e){console.warn(` Warning: Could not copy custom manifest.json: ${e.message}`)}if(e.feedPath){let n=await ql(Gl(e.feedPath,r,i));if(n)try{let e=m.basename(n);await O(n,m.join(t,e)),console.log(` Copied custom feed: ${n} → ${e}`)}catch(e){console.warn(` Warning: Could not copy custom feed: ${e.message}`)}}let l=!1;if(e.sitemapPath){let n=await ql(Gl(e.sitemapPath,r,i));if(n)try{let e=m.basename(n);await O(n,m.join(t,e)),console.log(` Copied custom sitemap: ${n} → ${e}`),l=!0}catch(e){console.warn(` Warning: Could not copy custom sitemap: ${e.message}`)}}if(!l){let e=await ql(Gl(`sitemap.xml`,r,i));if(e)try{await O(e,m.join(t,`sitemap.xml`)),console.log(` Copied custom sitemap.xml: ${e}`)}catch(e){console.warn(` Warning: Could not copy custom sitemap.xml: ${e.message}`)}let n=await ql(Gl(`sitemap.txt`,r,i));if(n)try{await O(n,m.join(t,`sitemap.txt`)),console.log(` Copied custom sitemap.txt: ${n}`)}catch(e){console.warn(` Warning: Could not copy custom sitemap.txt: ${e.message}`)}}let u=e.overwriteAssets===!0||e.branding?.overwriteAssets===!0,d=Array.isArray(e.assets)?e.assets:[e.assetsDir,e.assets].filter(Boolean),f=Array.from(new Set([...d.flatMap(e=>Gl(e,r,i)),...Gl(`assets`,r,i)].filter(e=>e&&typeof e==`string`))),p=m.join(t,`assets`);if(u)try{await F(p,{recursive:!0,force:!0}),await A(p,{recursive:!0}),console.log(` Cleared dist public assets for complete template asset overwrite.`)}catch{}let h=/* @__PURE__ */ new Set,g=[...f].reverse();for(let e of g)if(!h.has(e))try{let t=await I(e);if(h.add(e),t.isDirectory())await k(e,p,{recursive:!0,force:!0}),console.log(` Copied custom assets: ${e} → ${p}`);else if(t.isFile()){let t=m.basename(e);await A(p,{recursive:!0}),await O(e,m.join(p,t)),console.log(` Copied custom asset file: ${e} → ${p}`)}}catch{}}async function Yl(e,t,n){let r=e.theme||{};if(!r.stylesheet)return;let i=n?m.dirname(m.resolve(n)):C.cwd(),a=Wl(i),o=await ql(Gl(r.stylesheet,i,a));if(!o)return;let s=r.stylesheet.replace(/^(pages\/)?(resources\/|deps\/|main\/)?/,``),c=m.join(t,s);try{await A(m.dirname(c),{recursive:!0}),await O(o,c),console.log(` Copied theme stylesheet: ${o} → ${c}`)}catch(e){console.warn(` Warning: Could not copy theme stylesheet ${o}: ${e.message}`)}}async function Xl(e,t,n){let r=(e.customElements&&typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.scripts:void 0)||e.scripts||[];if(!Array.isArray(r)||r.length===0)return;let i=n?m.dirname(m.resolve(n)):C.cwd(),a=Wl(i);for(let e of r){let n=typeof e==`string`?e:e?.src;if(!n||n.startsWith(`http://`)||n.startsWith(`https://`)||n.startsWith(`//`))continue;let r=await ql(Gl(n,i,a));if(r){let e=n.replace(/^(pages\/)?(resources\/|deps\/|main\/)?/,``),i=m.join(t,e);try{await A(m.dirname(i),{recursive:!0}),await O(r,i),console.log(` Copied custom script: ${r} → ${i}`)}catch(e){console.warn(` Warning: Could not copy custom script ${r}: ${e.message}`)}}}}async function Zl(e,t,n){let r=e.branding||{},i=e.pwa||{},a=n?m.dirname(m.resolve(n)):C.cwd(),o=Wl(a),s=[],c=await ql(Gl(i.manifestPath||e.manifestPath||`manifest.json`,a,o));if(c){let e=await Al(c);e&&Array.isArray(e.icons)&&(s=e.icons.map(e=>e?.src).filter(Boolean))}let l=[r.faviconPath,r.appleTouchIconPath,`assets/icons/favicon.svg`,`assets/icons/favicon.ico`,`favicon.svg`,`favicon.ico`,`pages/resources/assets/icons/favicon.svg`,`pages/resources/assets/icons/favicon.ico`,`pages/resources/favicon.svg`,`pages/deps/favicon.svg`,`pages/main/favicon.svg`,...Array.isArray(i.icons)?i.icons.map(e=>e.src):[],...s].filter(e=>!!e&&typeof e==`string`&&!e.startsWith(`http://`)&&!e.startsWith(`https://`)&&!e.startsWith(`//`));if(l.length===0)return;let u=/* @__PURE__ */ new Set,d=/* @__PURE__ */ new Set;for(let e of l){if(u.has(e))continue;u.add(e);let n=await ql(Gl(e,a,o));if(n){let r=e.replace(/^(pages\/)?(resources\/|deps\/|main\/)?/,``),i=m.join(t,r);if(d.has(i))continue;d.add(i);try{await A(m.dirname(i),{recursive:!0}),await O(n,i),console.log(` Copied branding asset: ${n} → ${i}`)}catch(e){console.warn(` Warning: Could not copy branding asset ${n}: ${e.message}`)}}}}async function Ql(e,t,n){let r=await Al(t);if(!r)return console.log(`No site-config.json found — skipping site configuration.`),{applied:!1};console.log(`Applying site-config.json...`);let i=n?.pagesOrigin||C.env.PAGES_ORIGIN||``,a=n?.basePath||C.env.PAGES_BASE_PATH||``,o=n?.isProduction??C.env.NODE_ENV===`production`;await Jl(r,e,t);let s=t?m.dirname(m.resolve(t)):C.cwd(),c=Wl(s),l;if(r.sidebar?.slotHtml)l=r.sidebar.slotHtml;else if(r.sidebar?.sections)l=Nl(r.sidebar.sections);else{let e=await ql([r.sidebar?.slotPath,`pages/main/sidebar.html`,`pages/sidebar.html`,`sidebar.html`,`resources/sidebar.html`].filter(Boolean).flatMap(e=>Gl(e,s,c)));e&&(l=await jl(e)??void 0,console.log(` Found slotted sidebar: ${e}`))}let u=m.join(e,`index.html`),d=await jl(u);d&&(await Ml(u,Rl(d,r,l,{basePath:a,pagesOrigin:i,isProduction:o})),console.log(` Patched index.html`));let f=m.join(e,`share/share-target.html`),p=await jl(f);if(p){let e=`/`;a&&a.trim()?e=a:o&&(i||r.branding?.siteUrl)&&(e=Il({pagesOrigin:i,siteUrl:r.branding?.siteUrl})),await Ml(f,Ll(p,e)),console.log(` Patched share/share-target.html`)}let h=m.join(e,`manifest.json`),g=await jl(h);g&&(await Ml(h,Bl(g,r)),console.log(` Patched manifest.json`));let _=m.join(e,`sitemap.xml`),v=!!await jl(m.join(e,`sitemap.txt`)),y=!1;if(!await jl(_)&&!v){let e=await Kl(s,c,i||r.branding?.siteUrl||``);e&&(await Ml(_,e),y=!0,console.log(` Generated sitemap.xml from routes.json`))}let b=y?``:await jl(_);b&&(await Ml(_,Vl(b,i)),console.log(` Patched sitemap.xml`));let x=m.join(e,`sitemap.txt`),S=await jl(x);if(S&&(await Ml(x,Vl(S,i)),console.log(` Patched sitemap.txt`)),r.feed===!0||typeof r.feed==`object`&&r.feed?.enabled===!0){let t=await ql([...Xa(s),...Xa(c),...Xa(Ul(s))]);if(t){let n=await Al(t);if(n){let t=await ql([m.join(e,`pages/main`),m.join(e,`files/main`),m.join(e,`static-main`),m.join(s,`pages/main`),m.join(s,`main`),m.join(c,`pages/main`),m.resolve(`pages/main`)]),a=await wl({routesJson:n,siteConfig:r,origin:i||r.branding?.siteUrl||``,pagesDir:t||void 0});for(let[t,n]of Object.entries(a.files)){let r=m.join(e,t);await A(m.dirname(r),{recursive:!0}),await Ml(r,t.endsWith(`.xml`)?Cl(n,i):n)}console.log(` Generated RSS 2.0, Atom, and RDF feeds`)}}}let w=m.join(e,`404.html`),T=await jl(w);return T&&(await Ml(w,Hl(T,r,a)),console.log(` Patched 404.html`)),await Yl(r,e,t),await Xl(r,e,t),await Zl(r,e,t),console.log(`Site configuration applied successfully.`),{applied:!0}}async function $l(){let[e,t]=C.argv.slice(2);(!e||!t)&&(console.error(`Usage: node bin/site-config/apply.mjs <distPublicDir> <siteConfigPath>`),C.exit(1)),await Ql(e,t)}C.argv[1]&&m.resolve(C.argv[1])===m.resolve(S(import.meta.url))&&$l().catch(e=>{console.error(`site-config/apply.ts failed:`,e),C.exit(1)});function eu(e){let t=e.replace(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/mu,``).match(/^#+\s+(.+)$/m);return t?t[1].trim():``}async function tu(e={}){let t=m.resolve(e.publicDir||`dist/public`),n=m.resolve(e.routesPath||`pages/routes.json`),r=m.resolve(e.sourcePath||`pages/main`),i=m.resolve(e.indexPath||m.join(t,`index.html`)),a=e.siteConfig||{},s=!!e.siteConfig;if(!e.siteConfig){let n=[e.siteConfigPath,m.resolve(m.dirname(r),`shadow-claw.config.json`),m.resolve(m.dirname(r),`site-config.json`),m.resolve(`shadow-claw.config.json`),m.resolve(`site-config.json`),m.join(t,`shadow-claw.config.json`),m.join(t,`site-config.json`)].filter(Boolean);for(let i of n)try{let n=await j(i,`utf8`);a=JSON.parse(n),(e.siteConfigPath||i.startsWith(m.dirname(r))||i.startsWith(t)||t.startsWith(C.cwd()))&&(s=!0);break}catch{}}let l=rc(e.prerenderPages===void 0?C.env.PRERENDER_PAGES??1:e.prerenderPages),u;try{u=await j(n,`utf8`)}catch(e){if(e?.code===`ENOENT`)return{count:0,skipped:!0,reason:`No routes.json found`};throw e}let d;try{d=JSON.parse(u)}catch(e){return console.warn(`Failed to parse ${n}:`,e),{count:0,skipped:!0,reason:`Invalid JSON in routes.json`}}if(!d||typeof d!=`object`)return{count:0,skipped:!0,reason:`Invalid routes.json`};d.routes||(d.routes={});let f={...d.routes||{}},p=/* @__PURE__ */ new Set;async function h(e,t){if(!e.subRoutes)return;let n=Array.isArray(e.subRoutes)?e.subRoutes:Object.values(e.subRoutes);for(let e of n){let n=m.resolve(m.dirname(t),e);if(typeof e==`string`&&e.startsWith(`pages/`)&&(n=m.resolve(e)),!p.has(n)){p.add(n);try{let e=await j(n,`utf8`),t=JSON.parse(e);t.routes&&Object.assign(f,t.routes),await h(t,n)}catch(e){console.warn(`Failed to read subRoute: ${n}`,e?.message)}}}}await h(d,n),Object.assign(d.routes,f),Array.isArray(d.subRoutes)&&delete d.subRoutes;let g={allowList:a?.pages?.allowList??a?.pages?.allowlist??a?.allowList??a?.allowlist,denyList:a?.pages?.denyList??a?.pages?.denylist??a?.denyList??a?.denylist};for(let[e,t]of Object.entries(f)){let n=Qc(e);(!o(n,{...g,basePathPrefix:r})||!o(e,g)||t?.prettyPath&&!o(t.prettyPath,g))&&(delete f[e],delete d.routes[e])}let _=Object.entries(f);if(_.length===0)return{count:0,skipped:!0,reason:`Empty routes table`};let v=JSON.stringify(d,null,2),y=m.join(t,`static-routing.json`);await A(t,{recursive:!0}),await L(y,v,`utf8`);let b=JSON.stringify(d),x=m.join(t,`components/shadow-claw/shadow-claw.html`),S=m.join(t,`components/shadow-claw-pages/shadow-claw-pages.html`),w=m.join(t,`components/shadow-claw-page-header/shadow-claw-page-header.html`),T=m.join(t,`components/shadow-claw/shadow-claw.css`),E=m.join(t,`components/shadow-claw-pages/shadow-claw-pages.css`),D=m.join(t,`components/shadow-claw-page-header/shadow-claw-page-header.css`),[O,ee,N,P,F,R,z,B]=await Promise.all([j(i,`utf8`),j(x,`utf8`),j(S,`utf8`).catch(()=>``),j(w,`utf8`).catch(()=>``),kc(r,`desc`,{allowList:a?.pages?.allowList??a?.pages?.allowlist??a?.allowList??a?.allowlist,denyList:a?.pages?.denyList??a?.pages?.denylist??a?.denyList??a?.denylist}),j(T,`utf8`).catch(()=>``),j(E,`utf8`).catch(()=>``),j(D,`utf8`).catch(()=>``)]),V=e.isProduction??C.env.NODE_ENV===`production`,H=e.singleFile??!1,U=e.basePath===void 0?C.env.PAGES_BASE_PATH||``:e.basePath,W=e.pagesOrigin||C.env.PAGES_ORIGIN||``,te=s&&(V||e.basePath===void 0)?a?.branding?.siteUrl:void 0,ne=O.match(/<base\s+href="([^"]*)"/i),re=ne?ne[1]:`/`,ie=U||W||te?Il({basePath:U,pagesOrigin:W,siteUrl:te,defaultBasePath:re}):re,ae=ne?Ll(O,U===``?ie===`/`?re:ie:U):O,oe=(await Promise.all(F.map(async e=>{let t=typeof e.inlineContent==`string`?e.inlineContent:await j(e.absolutePath,`utf8`);return{...e,content:t}}))).filter(e=>!(e.displayPath.endsWith(`.md`)&&/^---\r?\n[\s\S]*?slug:\s*"shadow-claw--purge-pages"[\s\S]*?---/mu.test(e.content||``))),se=await Jc(Yc($c(ae,b)),t,{isProduction:V,singleFile:H});await L(i,se,`utf8`);let G=Tc(ee),ce=Tc(N),le=Tc(P),K=oe.map(e=>({displayPath:e.displayPath,content:e.content})),q=m.join(t,`static-main-manifest.json`),J={};try{J=JSON.parse(await j(q,`utf8`))}catch{}let ue={pages:K,...Array.isArray(J.skills)?{skills:J.skills}:{},...Array.isArray(J.tools)?{tools:J.tools}:{},...J.skillsPurgeId?{skillsPurgeId:J.skillsPurgeId}:{},...J.preRenderedStaticPages?{preRenderedStaticPages:J.preRenderedStaticPages}:{},...J.purgeId?{purgeId:J.purgeId}:{}};await L(q,JSON.stringify(ue,null,2),`utf8`);try{if((await I(r)).isDirectory()){let e=m.join(t,`static-main`);await A(e,{recursive:!0}),await k(r,e,{recursive:!0});let n=m.join(t,`files/main`);await A(n,{recursive:!0}),await k(r,n,{recursive:!0})}}catch{}let de=[],fe=0;for(let[e,n]of _){if(!n||!n.prettyPath)continue;let i=c(n.prettyPath);if(i===`feed`||i.startsWith(`feed/`)||e.endsWith(`.xml`))continue;let o=Qc(e),s=oe.find(e=>e.displayPath===o);if(!s)try{let e=m.join(r,o);s={absolutePath:e,displayPath:o,content:await j(e,`utf8`)}}catch{console.warn(`Could not find page file for route: ${e} (${o})`);continue}let u=oe.filter(e=>e.displayPath!==s.displayPath),d=[],f=[];l===`all`?(d=[s,...u],f=d.map(e=>({displayPath:e.displayPath,content:e.content}))):typeof l==`number`&&(l===0?(d=[],f=[]):(d=[s,...u.slice(0,l-1)],f=d.map(e=>({displayPath:e.displayPath,content:e.content}))));let p=wc(s.content||``),h=p.data&&p.data.title?p.data.title:``,g=(a?.customElements?.scripts||[]).map(e=>typeof e==`string`?e:e?.src).filter(Boolean),_=await Mc(s.content||``,s.displayPath,{approvedScripts:g}),v=a?.theme?.stylesheet,y=``;if(typeof v==`string`&&v.trim()){let e=yc(v.trim());y=e.startsWith(`http://`)||e.startsWith(`https://`)||e.startsWith(`//`)?e:e.replace(/^\/+/,``)}let x;x=l===0?Gc(G,R,a.sidebar):Wc(G,zc(ce,d,_,le,h,z,B,y),R,a.sidebar);let S=oc(qc(Kc(ae,x)),JSON.stringify({pages:f,...Array.isArray(J.skills)?{skills:J.skills}:{},...Array.isArray(J.tools)?{tools:J.tools}:{},...J.skillsPurgeId?{skillsPurgeId:J.skillsPurgeId}:{},...J.preRenderedStaticPages?{preRenderedStaticPages:J.preRenderedStaticPages}:{},...J.purgeId?{purgeId:J.purgeId}:{}})),C=c(n.prettyPath),w=C===``||C===`index.html`||n.prettyPath===`/`,T=ae.match(/<base\s+href="([^"]*)"/i),E=T?T[1]:void 0,D=a?.branding?.siteUrl||void 0,O=ol(S,{title:el({pageTitle:n.title||p.data?.seo_title||p.data?.seoTitle||p.data?.title||eu(s.content||``),siteTitle:a?.site?.title||`ShadowClaw`,siteDescription:a?.site?.description,separator:a?.site?.titleSeparator??a?.site?.sep,titleTemplate:a?.site?.titleTemplate,isHome:w}),description:n.description||p.data?.seo_description||p.data?.seoDescription||p.data?.description||p.data?.excerpt||p.data?.summary||tl(s.content||``,{fallback:a?.site?.description})||a?.site?.description,canonicalUrl:nl({origin:D,basePath:E,prettyPath:n.prettyPath}),siteTitle:a?.site?.title||`ShadowClaw`,type:w?`website`:`article`}),ee=mc(a?.customElements?.scripts||[],p.data,s.content),N=O;if(ee.length>0){let e=N.match(/<head[^>]*>([\s\S]*?)<\/head>/i),t=e?e[1]:``,n=ee.filter(e=>!t.includes(`src="${e.src}"`)&&!t.includes(`src='${e.src}'`));if(n.length>0){let e=_c(n);N=ac(N,` ${e.trim()}`)}}let P=await Jc(Yc($c(N,b)),t,{isProduction:V,singleFile:H}),F;F=C.endsWith(`.html`)?C:m.join(C,`index.html`);let I=m.join(t,F),U=m.dirname(I);if(await A(U,{recursive:!0}),await L(I,P,`utf8`),s&&s.absolutePath)try{let e=m.dirname(s.absolutePath),t=await M(e,{withFileTypes:!0});for(let n of t)n.isFile()&&!Dc(n.name)&&n.name!==`routes.json`&&await k(m.join(e,n.name),m.join(U,n.name))}catch(t){console.warn(`Failed to copy co-located assets for ${e}:`,t)}if(de.push(F.replace(/\\/g,`/`)),!C.endsWith(`.html`)&&C.length>0){let e=`${C}.html`,n=m.join(t,e);await A(m.dirname(n),{recursive:!0}),await L(n,P,`utf8`),de.push(e.replace(/\\/g,`/`))}fe++}return(e.silent??C.env.NODE_ENV===`test`)||console.log(`Prerendered ${fe} pretty path page${fe===1?``:`s`} from ${n} (prerender-pages: ${l}).`),{count:fe,generatedPaths:de,skipped:!1}}async function nu(){let e=C.argv.slice(2).filter(e=>!e.startsWith(`--`)),t=C.argv.slice(2).filter(e=>e.startsWith(`--`)),n;for(let e of t)e.startsWith(`--prerender-pages=`)?n=e.slice(18):e.startsWith(`--pages=`)&&(n=e.slice(8));let r=e[0]||`dist/public`;await tu({publicDir:r,routesPath:e[1]||`pages/routes.json`,sourcePath:e[2]||`pages/main`,indexPath:e[3]||m.join(r,`index.html`),prerenderPages:n})}C.argv[1]&&m.resolve(C.argv[1])===m.resolve(S(import.meta.url))&&nu().catch(e=>{console.error(e),C.exit(1)});function ru(){return[`const shadowClawServiceWorkerTrustedTypesFactory = Reflect.get(self, "trustedTypes");`,`let shadowClawServiceWorkerTrustedTypesPolicy = null;`,`if (shadowClawServiceWorkerTrustedTypesFactory && typeof shadowClawServiceWorkerTrustedTypesFactory.createPolicy === "function") {`,` try {`,` if (typeof shadowClawServiceWorkerTrustedTypesFactory.getPolicy === "function") {`,` shadowClawServiceWorkerTrustedTypesPolicy =`,` shadowClawServiceWorkerTrustedTypesFactory.getPolicy("default") ||`,` shadowClawServiceWorkerTrustedTypesFactory.getPolicy("shadowclaw-sandbox") ||`,` null;`,` }`,``,` if (!shadowClawServiceWorkerTrustedTypesPolicy) {`,` shadowClawServiceWorkerTrustedTypesPolicy =`,` shadowClawServiceWorkerTrustedTypesFactory.createPolicy("default", {`,` createHTML: (input) => input,`,` createScriptURL: (input) => input,`,` });`,` }`,` } catch {`,` // Ignore policy creation failures and fall back to raw importScripts.`,` }`,`}`,``,`const shadowClawNativeImportScripts = typeof importScripts === "function" ? importScripts.bind(self) : null;`,``,`const shadowClawImportScripts = (...urls) => {`,` if (!shadowClawNativeImportScripts) {`,` return;`,` }`,``,` if (!shadowClawServiceWorkerTrustedTypesPolicy || typeof shadowClawServiceWorkerTrustedTypesPolicy.createScriptURL !== "function") {`,` shadowClawNativeImportScripts(...urls);`,``,` return;`,` }`,``,` shadowClawNativeImportScripts(...urls.map((url) => shadowClawServiceWorkerTrustedTypesPolicy.createScriptURL(url)));`,`};`].join(`
|
|
219
|
-
`)}function iu(e){return e.includes(`shadowClawImportScripts`)||!e.includes(`if(!self.define){`)||!e.includes(`importScripts(`)?e:`${ru()}\n${e.replace(/importScripts\(/g,`shadowClawImportScripts(`)}`}const au=b(C.cwd(),`dist/public/service-worker.js`);async function ou(e=au,{readFileImpl:t=j,writeFileImpl:n=L,patchImpl:r=iu,logImpl:i=console.log}={}){let a=await t(e,`utf8`),o=r(a);o!==a&&(await n(e,o,`utf8`),i(`Patched Trusted Types imports in ${e}`))}async function su(){await ou(C.argv[2]||au)}C.argv[1]&&m.resolve(C.argv[1])===m.resolve(S(import.meta.url))&&su().catch(e=>{console.error(e),C.exit(1)});async function cu(e,{writeFileImpl:t=L}={}){let r=e||_(n(import.meta.url),`dist`,`public`);await t(_(r,`.nojekyll`),``,`utf-8`)}C.argv[1]&&m.resolve(C.argv[1])===m.resolve(S(import.meta.url))&&await cu();const lu=n(import.meta.url);async function $(e){try{return await I(e),!0}catch{return!1}}async function uu(e,t){let n=[t?_(t,`package.json`):``,_(lu,`package.json`),_(e,`package.json`)].filter(Boolean);for(let e of n)if(await $(e))try{let t=JSON.parse(await j(e,`utf8`));if(t.name===`shadow-claw`&&t.version)return t.version}catch{}let r=_(e,`package.json`);if(await $(r))try{let e=JSON.parse(await j(r,`utf8`)),t=e.dependencies?.[`shadow-claw`]||e.devDependencies?.[`shadow-claw`];if(typeof t==`string`&&t.trim()){let e=t.replace(/^[~^>=<v\s]+/,``);if(e)return e}}catch{}return`latest`}async function du(e){let{indexPath:t,mainSourcePath:n,contentRoot:r,toolchainRoot:o,cdnBase:s,isQuiet:c,log:l}=e;if(c||l(`Embedding pages, theme, and CDN runtime for single-file distribution...`),await $(t)){let
|
|
220
|
-
`)}`))}catch{}let
|
|
221
|
-
`);
|
|
222
|
-
`);
|
|
223
|
-
`);
|
|
224
|
-
`,`utf8`))}catch{}}}}catch{}try{let e=`dist/public/index.html`,t=await j(e,`utf8`);await L(e,Ll(t,g),`utf8`);let n=`dist/public/share/share-target.html`;if(await $(n)){let e=await j(n,`utf8`);await L(n,Ll(e,g),`utf8`)}}catch{}if(s){if(r(`Running production post-build steps...`),r(` PAGES_ORIGIN : ${m||`(relative ./)`}`),r(` PAGES_BASE_PATH: ${g}`),m)try{let e=`dist/public/manifest.json`,t=await j(e,`utf8`),n=JSON.parse(t);n.start_url&&(n.start_url=m,await L(e,JSON.stringify(n,null,2),`utf8`))}catch{}await cu(`dist/public`);let e=``;try{e=D(`npm run -s build:pkg:get:meta`,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{}e&&await d(`npm run -s build:pkg:meta "${e}"`)}await tu({publicDir:`dist/public`,routesPath:await Ja(Xa())||`pages/routes.json`,sourcePath:`pages/main`,prerenderPages:l,siteConfigPath:f,basePath:g,pagesOrigin:m,isProduction:s,singleFile:e.singleFile}),await d(`npm run -s build:service-worker`);let v=`dist/public/service-worker.js`;if(await $(v)&&await ou(v,{logImpl:()=>{}}),s)try{let{precompressAssets:e}=await import(`./chunk-C7i38c2x.js`),n=await e(`dist/public`,{silent:t});!t&&n.count>0&&r(`Pre-compressed ${n.count} assets (.br and .gz).`)}catch(e){t||console.warn(`Notice: Asset pre-compression encountered an issue:`,e)}e.singleFile&&await du({indexPath:`dist/public/index.html`,mainSourcePath:`pages/main`,contentRoot:i,toolchainRoot:a,cdnBase:e.cdn,isQuiet:t,log:r}),r(`Build completed successfully.`);return}let f=e.outDir||`dist/public`,p=b(i,f);await Ga(p),await A(p,{recursive:!0}),await A(_(p,`assets`),{recursive:!0});let m=_(a,`dist/public`);await $(_(m,`index.js`))||(r(`Building ShadowClaw core toolchain...`),await Ga(_(a,`dist/public`)),await Ga(_(a,`dist-electron`)),await d(`npm run -s rolldown`,{cwd:a})),await k(m,p,{recursive:!0,filter:e=>{if(e.includes(`/assets/cache/`)||e.includes(`\\assets\\cache\\`)||e.includes(`/.cache/`)||e.includes(`\\.cache\\`)||e.includes(`/cache/`)||e.includes(`\\cache\\`)||e.endsWith(`/cache`)||e.endsWith(`\\cache`))return!1;if(i!==a){let t=y(m,e).replace(/\\/g,`/`);if(t===`docs`||t.startsWith(`docs/`)||t===`main`||t.startsWith(`main/`)||t===`main.html`||t.startsWith(`main.html.`)||t===`static-main`||t.startsWith(`static-main/`)||t===`static-main-manifest.json`||t.startsWith(`static-main-manifest.json.`)||t===`static-routing.json`||t.startsWith(`static-routing.json.`)||t===`files`||t.startsWith(`files/`)||t===`pages`||t.startsWith(`pages/`)||t===`sitemap.xml`||t.startsWith(`sitemap.xml.`)||t===`sitemap.txt`||t.startsWith(`sitemap.txt.`)||t===`llms.txt`||t.startsWith(`llms.txt.`)||t===`README.md`||t.startsWith(`README.md.`)||t===`AGENTS.md`||t.startsWith(`AGENTS.md.`))return!1}return!0}}),i!==a&&(await Ga(_(p,`sitemap.xml`)),await Ga(_(p,`sitemap.txt`)));let g=_(a,`assets`);if(i!==a&&await $(g)){let e=_(g,`icons`);await $(e)&&await k(e,_(p,`assets/icons`),{recursive:!0,force:!1,errorOnExist:!1});let t=_(g,`screenshots`);await $(t)&&await k(t,_(p,`assets/screenshots`),{recursive:!0,force:!1,errorOnExist:!1});let n=_(g,`fonts`);await $(n)&&await k(n,_(p,`assets/fonts`),{recursive:!0,force:!1,errorOnExist:!1})}let v=_(i,`assets`);await $(v)&&(c?await k(v,p,{recursive:!0,force:!0}):(await $(_(v,`icons`))&&await k(_(v,`icons`),_(p,`assets/icons`),{recursive:!0,force:!0}),await $(_(v,`screenshots`))&&await k(_(v,`screenshots`),_(p,`assets/screenshots`),{recursive:!0,force:!0}),await $(_(v,`fonts`))&&await k(_(v,`fonts`),_(p,`assets/fonts`),{recursive:!0,force:!0}))),await Ka([`pages/resources`,`pages/deps`,`resources`,`deps`,`pages/assets`,`pages/main/assets`],p,{baseDir:i});let x=Ya({contentRoot:i,toolchainRoot:a,distPublicDir:p});for(let e of x)await qa(e.sources,e.dest,e.opts||{});let S=_(i,`pages`);await $(S)&&await k(S,_(p,`pages`),{recursive:!0,force:!0});let C=_(i,`pages/main`);await $(C)&&(await k(C,_(p,`files/main`),{recursive:!0,force:!0}),await k(C,_(p,`static-main`),{recursive:!0,force:!0}));try{let{migrateLegacyWorkspaceLayout:e}=await import(`./chunk-CeuR-KKG.js`);await $(_(i,`.agents`))&&await e(i),i!==a&&await $(_(a,`.agents`))&&await e(a)}catch{}let E=_(i,`.agents/skills`);await $(E)&&await k(E,_(p,`.agents/skills`),{recursive:!0,force:!0});let O=_(a,`.agents/skills`);i!==a&&await $(O)&&await k(O,_(p,`.agents/skills`),{recursive:!0,force:!1,errorOnExist:!1});let ee=_(i,`.agents/tools`);if(await $(ee))await k(ee,_(p,`.agents/tools`),{recursive:!0,force:!0});else{let e=_(a,`.agents/tools`);await $(e)&&await k(e,_(p,`.agents/tools`),{recursive:!0,force:!0})}let M=_(i,`.agents/scripts`);if(await $(M))await k(M,_(p,`.agents/scripts`),{recursive:!0,force:!0});else{let e=_(a,`.agents/scripts`);await $(e)&&await k(e,_(p,`.agents/scripts`),{recursive:!0,force:!0})}let N=_(a,`.well-known`);await $(N)&&await k(N,_(p,`.well-known`),{recursive:!0,force:!0});let P=_(i,`.well-known`);if(i!==a&&await $(P)&&await k(P,_(p,`.well-known`),{recursive:!0,force:!0}),await $(_(p,`.agents/skills`)))try{let{generateSkillsIndex:e}=await import(`./chunk-zkXQUEv6.js`);if(await e(p,{metadataRoot:i,outDir:`.well-known/agent-skills`,toolchainRoot:a,includeBundled:!0}),await $(E))try{await e(i,{toolchainRoot:a,includeBundled:!0})}catch{}}catch(e){console.warn(`Notice: Failed to auto-generate agent-skills index:`,e)}let F=await Ja(Za(i)),I=F||_(i,`pages/site-config.json`),z=u,B;if(F)try{B=JSON.parse(await j(F,`utf8`))}catch{}e.prerenderMainMemory===void 0&&B&&(B?.settings?.prerenderMainMemory===!1?(z=!1,r(` site-config: prerenderMainMemory=false — pages DSD pre-rendering disabled.`)):B?.settings?.overridePrerenderSkeleton===!1&&r(` site-config: overridePrerenderSkeleton=false — skeleton overlay disabled.`));let V=_(p,`index.html`)
|
|
225
|
-
`,`utf8`))}catch{}}}await L(V,e,`utf8`);let n=_(p,`share/share-target.html`);if(await $(n)){let e=await j(n,`utf8`);await L(n,Ll(e,
|
|
219
|
+
`)}function iu(e){return e.includes(`shadowClawImportScripts`)||!e.includes(`if(!self.define){`)||!e.includes(`importScripts(`)?e:`${ru()}\n${e.replace(/importScripts\(/g,`shadowClawImportScripts(`)}`}const au=b(C.cwd(),`dist/public/service-worker.js`);async function ou(e=au,{readFileImpl:t=j,writeFileImpl:n=L,patchImpl:r=iu,logImpl:i=console.log}={}){let a=await t(e,`utf8`),o=r(a);o!==a&&(await n(e,o,`utf8`),i(`Patched Trusted Types imports in ${e}`))}async function su(){await ou(C.argv[2]||au)}C.argv[1]&&m.resolve(C.argv[1])===m.resolve(S(import.meta.url))&&su().catch(e=>{console.error(e),C.exit(1)});async function cu(e,{writeFileImpl:t=L}={}){let r=e||_(n(import.meta.url),`dist`,`public`);await t(_(r,`.nojekyll`),``,`utf-8`)}C.argv[1]&&m.resolve(C.argv[1])===m.resolve(S(import.meta.url))&&await cu();const lu=n(import.meta.url);async function $(e){try{return await I(e),!0}catch{return!1}}async function uu(e,t){let n=[t?_(t,`package.json`):``,_(lu,`package.json`),_(e,`package.json`)].filter(Boolean);for(let e of n)if(await $(e))try{let t=JSON.parse(await j(e,`utf8`));if(t.name===`shadow-claw`&&t.version)return t.version}catch{}let r=_(e,`package.json`);if(await $(r))try{let e=JSON.parse(await j(r,`utf8`)),t=e.dependencies?.[`shadow-claw`]||e.devDependencies?.[`shadow-claw`];if(typeof t==`string`&&t.trim()){let e=t.replace(/^[~^>=<v\s]+/,``);if(e)return e}}catch{}return`latest`}async function du(e){let{indexPath:t,mainSourcePath:n,contentRoot:r,toolchainRoot:o,cdnBase:s,isQuiet:c,log:l}=e;if(c||l(`Embedding pages, theme, and CDN runtime for single-file distribution...`),await $(t)){let c=await j(t,`utf8`),l=await Ja([_(n,`theme.css`),_(r,`pages/main/theme.css`),_(r,`pages/theme.css`),_(r,`theme.css`)]);if(l)try{let e=await j(l,`utf8`);if(e.trim()&&!c.includes(`id="shadow-claw-theme"`)){let t=`<style id="shadow-claw-theme">\n${e.trim()}\n</style>`;c=ac(c,` ${t}`)}}catch{}try{let e=await kc(n),t=[];for(let n of e){let e=null;if(typeof n.inlineContent==`string`?e=n.inlineContent:n.absolutePath&&await $(n.absolutePath)&&(e=await j(n.absolutePath,`utf8`)),typeof e==`string`){let r=/^memory\.(md|markdown)$/iu.test(n.displayPath)&&e.trim()===a.trim(),o=n.displayPath===`index.html`&&e.trim()===i.trim();r||o?t.push(`<!-- prettier-ignore -->\n <script type="text/markdown" data-shadow-claw-page="${n.displayPath}"><\/script>`):t.push(`<!-- prettier-ignore -->\n <script type="text/markdown" data-shadow-claw-page="${n.displayPath}">${e}<\/script>`)}}t.length>0&&(c=ac(c,` ${t.join(`
|
|
220
|
+
`)}`))}catch{}let u=s||T.SHADOWCLAW_CDN;u||=`https://cdn.jsdelivr.net/npm/shadow-claw@${await uu(r,o)}`,u=u.replace(/\/+$/,``);let d=`${u}/dist/public/`;c=c.includes(`name="shadow-claw-asset-base"`)?c.replace(/<meta\s+name="shadow-claw-asset-base"[^>]*>/i,`<meta name="shadow-claw-asset-base" content="${d}" />`):/<base\s+href="[^"]*"\s*\/?>/i.test(c)?c.replace(/(<base\s+href="[^"]*"\s*\/?>)/i,`$1\n <meta name="shadow-claw-asset-base" content="${d}" />`):ac(c,` <meta name="shadow-claw-asset-base" content="${d}" />`),c=c.replace(/<script\b[^>]*>\s*var\s+ShadowClawThemeInit\b[\s\S]*?<\/script>/giu,`<script src="${d}theme-init.js"><\/script>`),c=c.replace(/<script\s+src="[^"]*?theme-init\.js"><\/script>/gi,`<script src="${d}theme-init.js"><\/script>`),c=/index\.css/i.test(c)?c.replace(/<link\b([^>]*?)href="[^"]*?index\.css"([^>]*?)\/?>/gi,`<link$1href="${d}index.css"$2 />`):ac(c,` <link rel="stylesheet" href="${d}index.css" />`);let f=e.siteConfig;if(!f&&e.siteConfigPath&&await $(e.siteConfigPath))try{f=JSON.parse(await j(e.siteConfigPath,`utf8`))}catch{}let p=f?.branding||{},m=f?.pwa||{},h=p.siteUrl||e.pagesOrigin,g=typeof h==`string`&&h.trim()?h.trim().replace(/\/*$/,`/`):``,v=(m.manifestPath||p.manifestPath||`manifest.json`).replace(/^\/+/,``),y=g?`${g}${v}`:`${d}manifest.json`;c=c.replace(/<link\b[^>]*\b(?:href="[^"]*?manifest\.json"|rel=["']?manifest["']?)[^>]*\/?>/giu,`<link rel="manifest" href="${y}" />`);let b=(p.faviconPath||`assets/icons/favicon.ico`).replace(/^\/+/,``).replace(/^pages\/main\//,``),x=g?`${g}${b}`:`${d}assets/icons/favicon.ico`,S=b.endsWith(`.svg`)?`image/svg+xml`:b.endsWith(`.png`)?`image/png`:`image/x-icon`,C=!1;c=c.replace(/<link\b[^>]*\brel=["']?(?:shortcut\s+)?icon["']?[^>]*\/?>/giu,()=>C?``:(C=!0,`<link rel="icon" href="${x}" type="${S}" />`)),C||(c=ac(c,` <link rel="icon" href="${x}" type="${S}" />`));let w=(p.appleTouchIconPath||`assets/icons/180.png`).replace(/^\/+/,``).replace(/^pages\/main\//,``),E=g?`${g}${w}`:`${d}assets/icons/180.png`,D=!1;if(c=c.replace(/<link\b[^>]*\brel=["']?apple-touch-icon["']?[^>]*\/?>/giu,()=>D?``:(D=!0,`<link rel="apple-touch-icon" href="${E}" />`)),!D&&g&&(c=ac(c,` <link rel="apple-touch-icon" href="${E}" />`)),c=c.replace(/\s*<script\s+type="module"\s+src="(?:\.\/|\/)?index\.js"><\/script>/gi,``),c=c.replace(/\s*<script\s+type="module"\s+src="(?:\.\/|\/)?service-worker\/init\.js"><\/script>/gi,``),c.includes(`<script type="importmap">`))c=c.replace(/"shadow-claw":\s*"[^"]*?\/dist\/lib\/index\.js"/g,`"shadow-claw": "${u}/dist/lib/index.js"`),c=c.replace(/"shadow-claw\/":\s*"[^"]*?"/g,`"shadow-claw/": "${u}/"`);else{let e=[` <!-- Import Map -->`,` <script type="importmap">`,` {`,` "imports": {`,` "shadow-claw": "${u}/dist/lib/index.js",`,` "shadow-claw/": "${u}/"`,` }`,` }`,` <\/script>`,` <!-- ShadowClaw Library Module -->`,` <script type="module">`,` import "shadow-claw";`,` <\/script>`].join(`
|
|
221
|
+
`);c=ac(c,e)}if(!c.includes(`data-shadow-claw-dedent="true"`)){let e=[` <!-- Dedent embedded markdown scripts if indented by formatters (e.g. Prettier) -->`,` <script data-shadow-claw-dedent="true">`,` for (const el of document.querySelectorAll('script[type="text/markdown"][data-shadow-claw-page]')) {`,` const text = el.textContent || '';`,` const m = text.match(/^\\r?\\n([ \\t]+)/);`,` if (m) {`,` const indent = m[1].length;`," const regex = new RegExp(`^[ \\\\t]{1,${indent}}`, 'gm');",` el.textContent = text.replace(/^\\r?\\n/, '').replace(regex, '').replace(/\\r?\\n[ \\t]*$/, '\\n');`,` }`,` }`,` <\/script>`].join(`
|
|
222
|
+
`);c=ac(c,e)}if(!c.includes(`data-shadow-claw-opfs-cleanup="true"`)){let e=[` <!-- Self-heal stale pre-seeded OPFS files with leading whitespace before frontmatter -->`,` <script data-shadow-claw-opfs-cleanup="true">`,` (async () => {`,` try {`,` if (!navigator.storage?.getDirectory) return;`,` const root = await navigator.storage.getDirectory();`,` const scDir = await root.getDirectoryHandle("shadowclaw", { create: false }).catch(() => null);`,` if (!scDir) return;`,` const groupsDir = await scDir.getDirectoryHandle("groups", { create: false }).catch(() => null);`,` if (!groupsDir) return;`,` for await (const [, grp] of groupsDir.entries()) {`,` if (grp.kind !== "directory") continue;`,` async function cleanDir(dir) {`,` for await (const [name, handle] of dir.entries()) {`,` if (handle.kind === "directory") {`,` await cleanDir(handle);`,` } else if (handle.kind === "file") {`,` try {`,` const file = await handle.getFile();`,` const text = await file.text();`,` if (/^(?:\\r?\\n)+[ \\t]*---/.test(text) || /^[ \\t]+---/.test(text)) {`,` await dir.removeEntry(name);`,` }`,` } catch {}`,` }`,` }`,` }`,` await cleanDir(grp);`,` }`,` } catch {}`,` })();`,` <\/script>`].join(`
|
|
223
|
+
`);c=ac(c,e)}await L(t,c,`utf8`)}}async function fu(e={}){let t=R.env.NODE_ENV;try{let t=e.quiet??(R.env.NODE_ENV===`test`&&!R.env.VERBOSE),n=e.stdio??(R.env.NODE_ENV===`test`&&!R.env.VERBOSE?`pipe`:`inherit`),r=(...e)=>{t||console.log(...e)},i=b(e.contentRoot||T.SHADOWCLAW_CONTENT_ROOT||R.cwd()),a=b(e.toolchainRoot||lu),o=i===a,{isProduction:s,copyAllAssets:c,prerenderPages:l,prerenderMainMemory:u}=Qa({...T,...e.isProduction===void 0?{}:{NODE_ENV:e.isProduction?`production`:`development`},...e.copyAllAssets===void 0?{}:{COPY_ALL_ASSETS:String(e.copyAllAssets)},...e.prerenderPages===void 0?{}:{PRERENDER_PAGES:String(e.prerenderPages)},...e.prerenderMainMemory===void 0?{}:{PRERENDER_MAIN_MEMORY:String(e.prerenderMainMemory)}});s?R.env.NODE_ENV=`production`:e.isProduction===!1&&(R.env.NODE_ENV=`development`);async function d(e,r={}){!t&&!r.quiet&&console.log(`> ${e}`);let i=r.stdio??n,a={...R.env,...s?{NODE_ENV:`production`}:{},...r.env||{}};D(e,{stdio:i,...r,env:a})}if(o){if(w(lu),await Ga(`dist/public`),await A(`dist/public/assets`,{recursive:!0}),c)await k(`assets`,`dist/public`,{recursive:!0});else{await k(`assets/icons`,`dist/public/assets/icons`,{recursive:!0}),await k(`assets/screenshots`,`dist/public/assets/screenshots`,{recursive:!0});try{await k(`assets/fonts`,`dist/public/assets/fonts`,{recursive:!0})}catch{}}await Ka([`pages/resources`,`pages/deps`,`resources`,`deps`,`pages/assets`,`pages/main/assets`],`dist/public`);for(let e of Ya())await qa(e.sources,e.dest,e.opts||{});try{await k(`e2e/README.md`,`dist/public/e2e/README.md`)}catch{}try{await k(`pages`,`dist/public/pages`,{recursive:!0})}catch{}try{await k(`pages/main`,`dist/public/files/main`,{recursive:!0})}catch{}let n;try{let{isTestFileOrDir:e}=await import(`./chunk-zkXQUEv6.js`);n=t=>!e(h(t),t)}catch{}try{await k(`pages/main`,`dist/public/static-main`,{recursive:!0})}catch{}try{let{migrateLegacyWorkspaceLayout:e}=await import(`./chunk-CeuR-KKG.js`);await e(R.cwd())}catch{}try{await k(`.agents/skills`,`dist/public/.agents/skills`,{recursive:!0,...n?{filter:n}:{}})}catch{}try{await k(`.agents/tools`,`dist/public/.agents/tools`,{recursive:!0,...n?{filter:n}:{}})}catch{}try{await k(`.agents/scripts`,`dist/public/.agents/scripts`,{recursive:!0,...n?{filter:n}:{}})}catch{}if(await $(`.agents/skills`))try{let{generateSkillsIndex:e}=await import(`./chunk-zkXQUEv6.js`);await e(lu)}catch(e){console.warn(`Notice: Failed to auto-generate agent-skills index:`,e)}if(await $(`.well-known`))try{await k(`.well-known`,`dist/public/.well-known`,{recursive:!0,force:!0})}catch{}await d(`npm run -s rolldown`);let o=await Ja(Za()),f=o||`pages/site-config.json`,p;if(o)try{p=JSON.parse(await j(o,`utf8`))}catch{}let m=e.pagesOrigin||T.PAGES_ORIGIN,g=s?Il({basePath:e.basePath||T.PAGES_BASE_PATH,pagesOrigin:m,siteUrl:p?.branding?.siteUrl,defaultBasePath:`/shadow-claw/`}):e.basePath||T.PAGES_BASE_PATH||`/`;u?await Xc({indexPath:`dist/public/index.html`,sourcePath:`pages/main`,prerenderPages:l,siteConfigPath:f,isProduction:s,singleFile:e.singleFile}):await Xc({indexPath:`dist/public/index.html`,noSeed:!0,siteConfigPath:f,isProduction:s,singleFile:e.singleFile});try{await Ql(`dist/public`,f,{basePath:g,pagesOrigin:m,isProduction:s})}catch{}try{let e=JSON.parse(await j(`package.json`,`utf8`));if(e.version){let t=`dist/public/index.html`,n=await j(t,`utf8`);await L(t,n.replace(/<meta\s+name="version"[^>]*>/,`<meta name="version" content="${e.version}" />`),`utf8`);for(let t of[`.well-known/mcp.json`,`.well-known/mcp/server-card.json`]){let n=_(`dist/public`,t);if(await $(n))try{let t=JSON.parse(await j(n,`utf8`));t.version!==e.version&&(t.version=e.version,await L(n,JSON.stringify(t,null,2)+`
|
|
224
|
+
`,`utf8`))}catch{}}}}catch{}try{let e=`dist/public/index.html`,t=await j(e,`utf8`);await L(e,Ll(t,g),`utf8`);let n=`dist/public/share/share-target.html`;if(await $(n)){let e=await j(n,`utf8`);await L(n,Ll(e,g),`utf8`)}}catch{}if(s){if(r(`Running production post-build steps...`),r(` PAGES_ORIGIN : ${m||`(relative ./)`}`),r(` PAGES_BASE_PATH: ${g}`),m)try{let e=`dist/public/manifest.json`,t=await j(e,`utf8`),n=JSON.parse(t);n.start_url&&(n.start_url=m,await L(e,JSON.stringify(n,null,2),`utf8`))}catch{}await cu(`dist/public`);let e=``;try{e=D(`npm run -s build:pkg:get:meta`,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{}e&&await d(`npm run -s build:pkg:meta "${e}"`)}await tu({publicDir:`dist/public`,routesPath:await Ja(Xa())||`pages/routes.json`,sourcePath:`pages/main`,prerenderPages:l,siteConfigPath:f,basePath:g,pagesOrigin:m,isProduction:s,singleFile:e.singleFile}),await d(`npm run -s build:service-worker`);let v=`dist/public/service-worker.js`;if(await $(v)&&await ou(v,{logImpl:()=>{}}),s)try{let{precompressAssets:e}=await import(`./chunk-C7i38c2x.js`),n=await e(`dist/public`,{silent:t});!t&&n.count>0&&r(`Pre-compressed ${n.count} assets (.br and .gz).`)}catch(e){t||console.warn(`Notice: Asset pre-compression encountered an issue:`,e)}e.singleFile&&await du({indexPath:`dist/public/index.html`,mainSourcePath:`pages/main`,contentRoot:i,toolchainRoot:a,cdnBase:e.cdn,siteConfig:p,siteConfigPath:f,pagesOrigin:m,isQuiet:t,log:r}),r(`Build completed successfully.`);return}let f=e.outDir||`dist/public`,p=b(i,f);await Ga(p),await A(p,{recursive:!0}),await A(_(p,`assets`),{recursive:!0});let m=_(a,`dist/public`);await $(_(m,`index.js`))||(r(`Building ShadowClaw core toolchain...`),await Ga(_(a,`dist/public`)),await Ga(_(a,`dist-electron`)),await d(`npm run -s rolldown`,{cwd:a})),await k(m,p,{recursive:!0,filter:e=>{if(e.includes(`/assets/cache/`)||e.includes(`\\assets\\cache\\`)||e.includes(`/.cache/`)||e.includes(`\\.cache\\`)||e.includes(`/cache/`)||e.includes(`\\cache\\`)||e.endsWith(`/cache`)||e.endsWith(`\\cache`))return!1;if(i!==a){let t=y(m,e).replace(/\\/g,`/`);if(t===`docs`||t.startsWith(`docs/`)||t===`main`||t.startsWith(`main/`)||t===`main.html`||t.startsWith(`main.html.`)||t===`static-main`||t.startsWith(`static-main/`)||t===`static-main-manifest.json`||t.startsWith(`static-main-manifest.json.`)||t===`static-routing.json`||t.startsWith(`static-routing.json.`)||t===`files`||t.startsWith(`files/`)||t===`pages`||t.startsWith(`pages/`)||t===`sitemap.xml`||t.startsWith(`sitemap.xml.`)||t===`sitemap.txt`||t.startsWith(`sitemap.txt.`)||t===`llms.txt`||t.startsWith(`llms.txt.`)||t===`README.md`||t.startsWith(`README.md.`)||t===`AGENTS.md`||t.startsWith(`AGENTS.md.`))return!1}return!0}}),i!==a&&(await Ga(_(p,`sitemap.xml`)),await Ga(_(p,`sitemap.txt`)));let g=_(a,`assets`);if(i!==a&&await $(g)){let e=_(g,`icons`);await $(e)&&await k(e,_(p,`assets/icons`),{recursive:!0,force:!1,errorOnExist:!1});let t=_(g,`screenshots`);await $(t)&&await k(t,_(p,`assets/screenshots`),{recursive:!0,force:!1,errorOnExist:!1});let n=_(g,`fonts`);await $(n)&&await k(n,_(p,`assets/fonts`),{recursive:!0,force:!1,errorOnExist:!1})}let v=_(i,`assets`);await $(v)&&(c?await k(v,p,{recursive:!0,force:!0}):(await $(_(v,`icons`))&&await k(_(v,`icons`),_(p,`assets/icons`),{recursive:!0,force:!0}),await $(_(v,`screenshots`))&&await k(_(v,`screenshots`),_(p,`assets/screenshots`),{recursive:!0,force:!0}),await $(_(v,`fonts`))&&await k(_(v,`fonts`),_(p,`assets/fonts`),{recursive:!0,force:!0}))),await Ka([`pages/resources`,`pages/deps`,`resources`,`deps`,`pages/assets`,`pages/main/assets`],p,{baseDir:i});let x=Ya({contentRoot:i,toolchainRoot:a,distPublicDir:p});for(let e of x)await qa(e.sources,e.dest,e.opts||{});let S=_(i,`pages`);await $(S)&&await k(S,_(p,`pages`),{recursive:!0,force:!0});let C=_(i,`pages/main`);await $(C)&&(await k(C,_(p,`files/main`),{recursive:!0,force:!0}),await k(C,_(p,`static-main`),{recursive:!0,force:!0}));try{let{migrateLegacyWorkspaceLayout:e}=await import(`./chunk-CeuR-KKG.js`);await $(_(i,`.agents`))&&await e(i),i!==a&&await $(_(a,`.agents`))&&await e(a)}catch{}let E=_(i,`.agents/skills`);await $(E)&&await k(E,_(p,`.agents/skills`),{recursive:!0,force:!0});let O=_(a,`.agents/skills`);i!==a&&await $(O)&&await k(O,_(p,`.agents/skills`),{recursive:!0,force:!1,errorOnExist:!1});let ee=_(i,`.agents/tools`);if(await $(ee))await k(ee,_(p,`.agents/tools`),{recursive:!0,force:!0});else{let e=_(a,`.agents/tools`);await $(e)&&await k(e,_(p,`.agents/tools`),{recursive:!0,force:!0})}let M=_(i,`.agents/scripts`);if(await $(M))await k(M,_(p,`.agents/scripts`),{recursive:!0,force:!0});else{let e=_(a,`.agents/scripts`);await $(e)&&await k(e,_(p,`.agents/scripts`),{recursive:!0,force:!0})}let N=_(a,`.well-known`);await $(N)&&await k(N,_(p,`.well-known`),{recursive:!0,force:!0});let P=_(i,`.well-known`);if(i!==a&&await $(P)&&await k(P,_(p,`.well-known`),{recursive:!0,force:!0}),await $(_(p,`.agents/skills`)))try{let{generateSkillsIndex:e}=await import(`./chunk-zkXQUEv6.js`);if(await e(p,{metadataRoot:i,outDir:`.well-known/agent-skills`,toolchainRoot:a,includeBundled:!0}),await $(E))try{await e(i,{toolchainRoot:a,includeBundled:!0})}catch{}}catch(e){console.warn(`Notice: Failed to auto-generate agent-skills index:`,e)}let F=await Ja(Za(i)),I=F||_(i,`pages/site-config.json`),z=u,B;if(F)try{B=JSON.parse(await j(F,`utf8`))}catch{}e.prerenderMainMemory===void 0&&B&&(B?.settings?.prerenderMainMemory===!1?(z=!1,r(` site-config: prerenderMainMemory=false — pages DSD pre-rendering disabled.`)):B?.settings?.overridePrerenderSkeleton===!1&&r(` site-config: overridePrerenderSkeleton=false — skeleton overlay disabled.`));let V=_(p,`index.html`),H=await $(C);z&&(H||e.singleFile)?await Xc({indexPath:V,sourcePath:H?C:_(a,`pages/main`),prerenderPages:l,siteConfigPath:I,isProduction:s,singleFile:e.singleFile}):await Xc({indexPath:V,noSeed:!0,siteConfigPath:I,isProduction:s,singleFile:e.singleFile});let U=e.pagesOrigin||T.PAGES_ORIGIN,W=s?Il({basePath:e.basePath||T.PAGES_BASE_PATH,pagesOrigin:U,siteUrl:B?.branding?.siteUrl,defaultBasePath:`/`}):e.basePath||T.PAGES_BASE_PATH||`/`;try{await Ql(p,I,{basePath:W,pagesOrigin:U,isProduction:s})}catch{}try{let e=await j(V,`utf8`);e=Ll(e,W);let t=``;try{let e=await Ja([_(i,`package.json`),_(a,`package.json`)]);e&&(t=JSON.parse(await j(e,`utf8`)).version||``)}catch{}if(t){e=e.replace(/<meta\s+name="version"[^>]*>/,`<meta name="version" content="${t}" />`);for(let e of[`.well-known/mcp.json`,`.well-known/mcp/server-card.json`]){let n=_(p,e);if(await $(n))try{let e=JSON.parse(await j(n,`utf8`));e.version!==t&&(e.version=t,await L(n,JSON.stringify(e,null,2)+`
|
|
225
|
+
`,`utf8`))}catch{}}}await L(V,e,`utf8`);let n=_(p,`share/share-target.html`);if(await $(n)){let e=await j(n,`utf8`);await L(n,Ll(e,W),`utf8`)}}catch{}if(s){if(r(`Running production post-build steps...`),r(` PAGES_ORIGIN : ${U||`(relative ./)`}`),r(` PAGES_BASE_PATH: ${W}`),U)try{let e=_(p,`manifest.json`),t=await j(e,`utf8`),n=JSON.parse(t);n.start_url&&(n.start_url=U,await L(e,JSON.stringify(n,null,2),`utf8`))}catch{}await L(_(p,`.nojekyll`),``,`utf8`);let e=``;try{e=D(`git rev-parse HEAD`,{cwd:i,encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{try{e=D(`git rev-parse HEAD`,{cwd:a,encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{}}if(e){let t=await j(V,`utf8`);await L(V,t.replace(/<meta\s+name="revision"[^>]*>/,`<meta name="revision" content="${e}" />`),`utf8`)}}let te=await Ja(Xa(i))||_(i,`pages/routes.json`),ne=await $(C)?C:_(a,`pages/main`);await tu({publicDir:p,routesPath:te,sourcePath:ne,prerenderPages:l,siteConfigPath:I,basePath:W,pagesOrigin:U,isProduction:s,singleFile:e.singleFile});let re=_(p,`service-worker.js`);if(await $(re)&&await ou(re,{logImpl:()=>{}}),s)try{let{precompressAssets:e}=await import(`./chunk-C7i38c2x.js`),n=await e(p,{silent:t});!t&&n.count>0&&r(`Pre-compressed ${n.count} assets (.br and .gz).`)}catch(e){t||console.warn(`Notice: Asset pre-compression encountered an issue:`,e)}e.singleFile&&await du({indexPath:_(p,`index.html`),mainSourcePath:ne,contentRoot:i,toolchainRoot:a,cdnBase:e.cdn,siteConfig:B,siteConfigPath:I,pagesOrigin:U,isQuiet:t,log:r}),r(`Build completed successfully.`)}finally{t===void 0?delete R.env.NODE_ENV:R.env.NODE_ENV=t}}R.argv[1]&&b(R.argv[1])===b(S(import.meta.url))&&fu().catch(e=>{console.error(e),E(1)});export{fu as t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as e,n as t,o as n,r}from"./chunk-D1JOfP9r.js";import{n as i}from"./chunk-BQhU06JO.js";import a from"node:fs";import o from"node:path";import s from"node:http";import{tmpdir as c}from"node:os";function l(e={}){let t=e.agent!==!1,n;if(e.workspace)n=o.resolve(e.workspace);else{let e=o.join(c(),`shadow-claw`);a.mkdirSync(e,{recursive:!0}),n=a.mkdtempSync(o.join(e,`workspace-`))}let r=e.transfersDir||o.join(n,`transfers`),s={"send-message":async(n,r)=>{let i=n?.text??n?.prompt??n?.message;if(!i||typeof i!=`string`||!i.trim())throw Error(`Missing text or prompt parameter`);let a=r?.remotePeerId||`remote`,o=n.groupId||`peer:${a}`;if(!t)return e.verbose&&console.log(`[webrtc-listen] Message received from ${a} (agent disabled): "${i.trim()}"`),{success:!0,queued:!0,groupId:o,text:`Message received (agent disabled)`};e.verbose&&console.log(`[webrtc-listen] Prompt from ${a}: "${i.length>80?i.slice(0,77)+`...`:i}"`);let s=await(e.runAgent||(async(e,t)=>{let{runAgentRun:n}=await import(`./chunk-
|
|
1
|
+
import{a as e,n as t,o as n,r}from"./chunk-D1JOfP9r.js";import{n as i}from"./chunk-BQhU06JO.js";import a from"node:fs";import o from"node:path";import s from"node:http";import{tmpdir as c}from"node:os";function l(e={}){let t=e.agent!==!1,n;if(e.workspace)n=o.resolve(e.workspace);else{let e=o.join(c(),`shadow-claw`);a.mkdirSync(e,{recursive:!0}),n=a.mkdtempSync(o.join(e,`workspace-`))}let r=e.transfersDir||o.join(n,`transfers`),s={"send-message":async(n,r)=>{let i=n?.text??n?.prompt??n?.message;if(!i||typeof i!=`string`||!i.trim())throw Error(`Missing text or prompt parameter`);let a=r?.remotePeerId||`remote`,o=n.groupId||`peer:${a}`;if(!t)return e.verbose&&console.log(`[webrtc-listen] Message received from ${a} (agent disabled): "${i.trim()}"`),{success:!0,queued:!0,groupId:o,text:`Message received (agent disabled)`};e.verbose&&console.log(`[webrtc-listen] Prompt from ${a}: "${i.length>80?i.slice(0,77)+`...`:i}"`);let s=await(e.runAgent||(async(e,t)=>{let{runAgentRun:n}=await import(`./chunk-CafdvLx-.js`);return n(e,t)}))(i.trim(),{workspace:e.workspace,cacheDir:e.cacheDir,model:e.model,provider:e.provider,apiKey:e.apiKey,systemPrompt:e.systemPrompt,systemPromptFile:e.systemPromptFile,tools:e.tools,allowInternet:e.allowInternet,group:o,quiet:!e.verbose,stream:!1});if(!s?.success)throw Error(s?.error||`Agent execution failed`);return{success:!0,reply:s.response,text:s.response,model:s.model,provider:s.provider,groupId:o}},prompt:async(e,t)=>s[`send-message`](e,t),"send-file":async(n,s)=>{let{fileName:c,data:l,prompt:u,groupId:d}=n||{};if(!c||typeof c!=`string`||!l)throw Error(`Missing fileName or data in send-file args`);let f=i(c);await a.promises.mkdir(r,{recursive:!0});let p=o.join(r,f),m=Buffer.isBuffer(l)?l:Buffer.from(l,`base64`);await a.promises.writeFile(p,m);let h=s?.remotePeerId||`remote`,g=d||`peer:${h}`;e.verbose&&console.log(`[webrtc-listen] Saved file "${f}" (${m.length} bytes) to ${p}`);let _;if(u&&typeof u==`string`&&u.trim()&&t){let t=await(e.runAgent||(async(e,t)=>{let{runAgentRun:n}=await import(`./chunk-CafdvLx-.js`);return n(e,t)}))(`[Attached file: ${f} (${m.length} bytes) saved at ${p}]\n\n${u.trim()}`,{workspace:e.workspace,cacheDir:e.cacheDir,model:e.model,provider:e.provider,apiKey:e.apiKey,systemPrompt:e.systemPrompt,systemPromptFile:e.systemPromptFile,tools:e.tools,allowInternet:e.allowInternet,group:g,quiet:!e.verbose,stream:!1});t?.success&&(_=t.response)}return{success:!0,fileName:f,path:p,size:m.length,reply:_,text:_}},"transfer-file":async(e,t)=>s[`send-file`](e,t),"list-tools":async()=>{try{let{TOOL_DEFINITIONS:e}=await import(`./chunk-bKcol4wy.js`);return{tools:e.map(e=>e.name)}}catch{return{tools:[]}}},ping:async t=>({ok:!0,peerId:e.peerId||``,timestamp:Date.now()})};return s}function u(t,n){return new Promise((r,i)=>{let c=e(n);try{a.unlinkSync(c)}catch{}try{a.mkdirSync(o.dirname(c),{recursive:!0})}catch{}let l=s.createServer(async(e,n)=>{if(e.method===`GET`&&e.url===`/ping`)n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify({ok:!0,peerId:t.cliPeerId}));else if(e.method===`GET`&&e.url===`/clients`){let e=Array.from(t._connections.keys()).map(e=>{let n=t._peerCards?.get(e);return{clientId:e,peerId:e,deviceLabel:n?.name||`Browser Peer (${e})`,capabilities:n?.capabilities||[`webrtc`,`peerjs`],version:n?.version||`1.0.0`,transport:`webrtc`,connectedAt:Date.now(),lastSeen:Date.now()}});n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify({ok:!0,clients:e}))}else if(e.method===`POST`&&e.url===`/command`){let r=``;e.on(`data`,e=>r+=e),e.on(`end`,async()=>{try{let{targetPeerId:e,action:i,args:a,timeoutMs:o}=JSON.parse(r);if(!e){n.writeHead(400,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:`targetPeerId is required`}));return}let s=t._connections.get(e);if(!s){let r=Array.from(t._connections.keys());n.writeHead(503,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:`No DataChannel open to peer "${e}". Make sure the browser has connected to this listener first.`+(r.length?` Connected peers: ${r.join(`, `)}`:` No peers are currently connected.`)}));return}let c=`${Date.now()}-${Math.random().toString(36).slice(2)}`,l={id:c,type:`command:execute`,payload:{commandId:c,action:i,args:a||{}}},u=await new Promise((e,n)=>{let r=setTimeout(()=>{t._pendingIpc.delete(c),n(/* @__PURE__ */ Error(`Command "${i}" timed out after ${o||3e4}ms`))},o||3e4);t._pendingIpc.set(c,t=>{clearTimeout(r),e(t)});try{s.send(l)}catch(e){clearTimeout(r),t._pendingIpc.delete(c),n(e)}});n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify(u))}catch(e){n.writeHead(500,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:e.message}))}})}else n.writeHead(404),n.end()});l.listen(c,()=>{console.log(`[webrtc-listen] IPC socket: ${c}`),r(l)}),l.on(`error`,i)})}async function d(e={}){let i=e.host||process.env.SHADOWCLAW_HOST||`127.0.0.1`,a=e.port?parseInt(String(e.port),10):parseInt(process.env.SHADOWCLAW_PORT||`8888`,10),o=e.path||`/`,s=!!(e.secure||e.https||[`1`,`true`,`yes`].includes((process.env.SHADOWCLAW_HTTPS||``).toLowerCase().trim())),c=!!(e.insecure===!1||[`0`,`false`,`no`].includes((process.env.SHADOWCLAW_TLS_REJECT_UNAUTHORIZED||``).toLowerCase().trim())),d=e.trustedPeer?Array.isArray(e.trustedPeer)?e.trustedPeer:[e.trustedPeer]:[],f=n(e.peerId,e.cacheDir);console.log(`WebRTC CLI Peer ID : ${f}`),console.log(`Signaling server : ${s?`wss`:`ws`}://${i}:${a}${o}`),s&&!c&&console.log(`TLS verification : disabled (self-signed cert allowed)`),d.length>0?console.log(`Trusted peers : ${d.join(`, `)}`):console.log(`Trusted peers : (any — add --trusted-peer <id> to restrict)`),console.log(``),console.log(`Add this CLI Peer ID as a trusted peer in the browser:`),console.log(` Settings → WebRTC/PeerJS → Trusted Peer IDs → "${f}"`),console.log(``);let p={...l({...e,peerId:f}),...e.handlers||{}},m=new t({host:i,port:a,path:o,secure:s,rejectUnauthorized:c,trustedPeerIds:d,peerId:e.peerId,cacheDir:e.cacheDir,renewPeerId:!!e.renewPeerId,verbose:!!e.verbose,handlers:p}),h=/* @__PURE__ */ new Map;m._pendingIpc=h;let g=m._setupConnection.bind(m);m._setupConnection=function(e,t){g(e,t),e.on(`data`,e=>{let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return}if(t&&typeof t==`object`&&t.type===`command:result`){let e=t.payload||{},n=h.get(e.commandId);n&&(h.delete(e.commandId),n(e))}})};let _=t=>{if(console.log(`
|
|
2
2
|
[webrtc-listen] Shutting down…`),r(e.cacheDir),t)try{t.close()}catch{}m.close(),process.exit(0)};try{await m.start();let t=await u(m,e.cacheDir);process.on(`SIGINT`,()=>_(t)),process.on(`SIGTERM`,()=>_(t)),console.log(`[webrtc-listen] Ready. Run commands with:
|
|
3
3
|
node bin/cli.mjs send --transport webrtc --client <browser-peer-id> "message"`),await new Promise(()=>{})}catch(t){r(e.cacheDir),console.error(`Error starting WebRTC listener: ${t.message}`),process.exitCode=1}}export{d as n,u as r,l as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{t as getAgentCore}from"./chunk-CncW6_WL.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{n as runWebRtcListenCommand}from"./chunk-CAAeGOdy.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e}from"./chunk-BVLsV89M.js";import{t}from"./chunk-BQhU06JO.js";import{t as n}from"./chunk-
|
|
1
|
+
import{i as e}from"./chunk-BVLsV89M.js";import{t}from"./chunk-BQhU06JO.js";import{t as n}from"./chunk-B88Z8T_9.js";import{n as r,t as i}from"./chunk-glBuRjUn.js";import{t as a}from"./chunk-Byi0_1tu.js";import{n as o,r as s,t as c}from"./chunk-vVEl6p-f.js";import{t as l}from"./chunk-Ds5-K-9o.js";import u,{existsSync as d}from"node:fs";import f from"node:path";import p from"node:process";import{spawn as m}from"node:child_process";import{access as h,constants as g,cp as _,mkdir as v,mkdtemp as y,readFile as b,readdir as x,rm as S,stat as C,writeFile as w}from"node:fs/promises";import{tmpdir as T}from"node:os";import E from"node:readline/promises";import D from"node:tty";function O(){let e=p.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(p,t,...n)};t.__suppressed=!0,p.emitWarning=t}O();const k=[`shadow-claw.config.json`,`shadow-claw-config.json`,`shadowclaw.config.json`,`site-config.json`];async function A(e){try{return await h(e,g.F_OK),!0}catch{return!1}}async function j(e,t){let n=[];if(e&&n.push(f.resolve(e)),t){let e=f.resolve(t);n.includes(e)||n.push(e)}if(e&&f.basename(f.resolve(e))===`.cache`){let t=f.dirname(f.resolve(e));n.includes(t)||n.push(t)}for(let e of n)for(let t of k){let n=f.join(e,t);if(await A(n))try{let e=await b(n,`utf8`),t=JSON.parse(e);if(t&&typeof t==`object`)return{configPath:n,config:t}}catch{}}return null}function M(){return f.join(T(),`shadow-claw`)}function N(e){let t=f.resolve(e||p.cwd()),n=[f.join(t,`shadow-claw-config.json`),f.join(t,`shadow-claw.config.json`),f.join(t,`shadowclaw.config.json`),f.join(t,`pages`,`shadow-claw-config.json`),f.join(t,`pages`,`shadow-claw.config.json`),f.join(t,`site-config.json`),f.join(t,`pages`,`site-config.json`)];for(let e of n)if(u.existsSync(e))try{let n=u.readFileSync(e,`utf8`),r=JSON.parse(n);if(r&&typeof r.cacheDir==`string`&&r.cacheDir.trim())return f.resolve(t,r.cacheDir.trim());if(r&&r.server&&typeof r.server.cacheDir==`string`&&r.server.cacheDir.trim())return f.resolve(t,r.server.cacheDir.trim())}catch{}return null}function P(e,t=`.cache`){let n=f.resolve(e||p.cwd()),r=f.join(n,t),i=f.join(r,`database`),a=[r,f.join(r,`control-token.json`),f.join(r,`cli-peer-id`),i,f.join(i,`clients.db`),f.join(i,`agent.db`),f.join(i,`scheduled-tasks.db`),f.join(i,`push-subscriptions.db`),f.join(n,`database`,`clients.db`),f.join(n,`database`,`agent.db`)];for(let e of a)if(u.existsSync(e))return!0;return!1}async function F({contentRoot:e,stdin:t=p.stdin,stdout:n=p.stdout,onExit:r=e=>p.exit(e)}={}){let i=f.resolve(e||p.cwd()),a=f.join(i,`.cache`),o=M(),s=t,c=n,l=!1,d=null;if(t===p.stdin&&!p.stdin.isTTY&&!p.env.CI&&(p.stderr.isTTY||p.stdout.isTTY))try{let e=p.platform===`win32`?`CONIN$`:`/dev/tty`;d=u.openSync(e,`r`),s=new D.ReadStream(d),c=p.stderr.isTTY?p.stderr:p.stdout,l=!0}catch{try{let e=p.platform===`win32`?`CONIN$`:`/dev/tty`;s=u.createReadStream(e),c=p.stderr.isTTY?p.stderr:p.stdout,l=!0}catch{}}let m=E.createInterface({input:s,output:c}),h=!1,g=()=>{if(!h){h=!0,c.write(`
|
|
2
2
|
Operation cancelled.
|
|
3
3
|
`);try{m.close()}catch{}r(130)}};m.on(`SIGINT`,g),s&&typeof s.on==`function`&&s!==p.stdin&&s.on(`SIGINT`,g);let _=()=>g();p.on(`SIGINT`,_);let v=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&g()};s&&typeof s.on==`function`&&s.on(`data`,v);try{c.write(`
|
|
4
4
|
ShadowClaw needs a directory to store cache and database files:
|
|
@@ -12,18 +12,18 @@ ShadowClaw needs a directory to store cache and database files:
|
|
|
12
12
|
|
|
13
13
|
`);let e=(await m.question(`Enter choice [1-3] or a directory path (default: 1): `)).trim();if(!e||e===`1`||e.toLowerCase()===`y`||e.toLowerCase()===`yes`)return n.write(`Using current directory cache: ${a}\n\n`),a;if(e===`2`||e.toLowerCase()===`tmp`||e.toLowerCase()===`temp`||e.toLowerCase()===`t`)return n.write(`Using temporary directory: ${o}\n\n`),o;if(e.toLowerCase()===`n`||e.toLowerCase()===`no`){let e=(await m.question(`Use temporary directory (${o}) instead? (Y/n): `)).trim();return e.toLowerCase()===`n`||e.toLowerCase()===`no`?(n.write(`Operation cancelled.
|
|
14
14
|
`),r(0),o):(n.write(`Using temporary directory: ${o}\n\n`),o)}if(e===`3`||e.toLowerCase()===`c`||e.toLowerCase()===`custom`){let e=(await m.question(`Enter custom directory path: `)).trim();if(!e)return n.write(`Using current directory cache: ${a}\n\n`),a;let t=f.resolve(i,e);return n.write(`Using custom directory: ${t}\n\n`),t}let t=f.resolve(i,e);return c.write(`Using directory: ${t}\n\n`),t}finally{p.removeListener(`SIGINT`,_),s&&typeof s.removeListener==`function`&&(s!==p.stdin&&s.removeListener(`SIGINT`,g),s.removeListener(`data`,v));try{m.close()}catch{}if(l){if(s&&typeof s.destroy==`function`)try{s.destroy()}catch{}if(d!=null)try{u.closeSync(d)}catch{}}}}async function I(e={}){let t=f.resolve(e.contentRoot||p.cwd());if(e.tmp||e.temp||[`1`,`true`,`yes`].includes((p.env.SHADOWCLAW_TMP||p.env.SHADOWCLAW_TEMP||``).toLowerCase().trim())){let n=M();return{cacheDir:n,databaseDir:e.databaseDir?f.resolve(t,e.databaseDir):f.join(n,`database`)}}let n=(e.cacheDir||p.env.SHADOWCLAW_CACHE_DIR||``).trim();if(n){let r=f.resolve(t,n);return{cacheDir:r,databaseDir:e.databaseDir?f.resolve(t,e.databaseDir):f.join(r,`database`)}}let r=(e.databaseDir||p.env.SHADOWCLAW_DATABASE_DIR||``).trim();if(r){let e=f.resolve(t,r);return{cacheDir:f.basename(e)===`database`?f.dirname(e):f.resolve(e,`..`),databaseDir:e}}let i=N(t);if(i)return{cacheDir:i,databaseDir:f.join(i,`database`)};let a=P(t),o=f.join(t,`.cache`),s=f.join(o,`database`);if(a||e.yes||e.y||[`1`,`true`,`yes`].includes((p.env.SHADOWCLAW_YES||``).toLowerCase().trim()))return{cacheDir:o,databaseDir:s};let c=e.stdin?!!e.stdin.isTTY:!!p.stdin.isTTY,l=!e.stdin&&!p.stdin.isTTY&&!!(p.stderr.isTTY||p.stdout.isTTY),u=e.isTTY===void 0?c||l:!!e.isTTY,d=e.isCI===void 0?e.isTTY===void 0&&!(!p.env.CI||[`0`,`false`].includes(p.env.CI.toLowerCase())):!!e.isCI;if(!u||d||e.quiet)return{cacheDir:o,databaseDir:s};let m=await F({contentRoot:t,stdin:e.stdin,stdout:e.stdout,onExit:e.onExit});return{cacheDir:m,databaseDir:f.join(m,`database`)}}function L(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 R(e={}){let t=e.core||await n();t.setHeadlessMode(!0);let r,i;if(e.workspace)r=f.resolve(e.workspace),i=e.databaseDir?f.resolve(e.databaseDir):e.cacheDir?f.resolve(e.cacheDir,`database`):f.resolve(r,`database`);else{let t=await I({contentRoot:p.cwd(),cacheDir:e.cacheDir,databaseDir:e.databaseDir,tmp:e.tmp||e.temp,yes:e.yes||e.y,quiet:e.quiet,isTTY:e.isTTY,stdin:e.stdin,stdout:e.stdout}),n=f.join(T(),`shadow-claw`);await v(n,{recursive:!0}),r=await y(f.join(n,`workspace-`)),i=t.databaseDir}await v(r,{recursive:!0}),await v(i,{recursive:!0});let a=f.join(i,`agent.db`),o=t.openSqliteDatabase(a);t.setDB(o),t.setStorageRootFromPath(r);let s=(await j(r))?.config||{},c=s.settings||{},l=e.internetAccess??e.allowInternet??c.internetAccess??c.vm_bash_full_internet_access??c.fullInternetAccess??s.internetAccess;if(l!==void 0&&typeof t.setConfig==`function`){let e=t.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await t.setConfig(o,e,l?`true`:`false`)}let u={response:t=>{!e.quiet&&t.payload?.text&&console.log(t.payload.text)},error:t=>{!e.quiet&&t.payload?.error&&console.error(`Error: ${t.payload.error}`)},"tool-activity":t=>{!e.quiet&&e.verbose&&t.payload&&console.log(`[Tool] ${t.payload.tool} (${t.payload.status||`executing`})`)},"thinking-log":t=>{if(!e.quiet&&e.verbose&&t.payload){let e=t.payload.label||t.payload.level||`Log`;console.log(`[${e}] ${t.payload.message||``}`)}},"request-native-ai-task":e=>{L(t,o,e.payload)}};return t.setPostHandler(e=>{u[e.type]?.(e)}),{db:o,workspaceDir:r,dbPath:a,core:t}}function z(e={}){let{force:t=!1,stdin:n=p.stdin,timeoutMs:r}=e,i=n;return!t&&i?.isTTY?Promise.resolve(null):new Promise((e,t)=>{let n=[],a=!1,o;r!=null&&r>0&&(o=setTimeout(()=>{a=!0,typeof i?.destroy==`function`&&i.destroy(),e(null)},r)),typeof i?.setEncoding==`function`&&i.setEncoding(`utf8`),i.on(`data`,e=>{a||n.push(typeof e==`string`?e:e.toString(`utf8`))}),i.on(`end`,()=>{if(o&&clearTimeout(o),a)return;let t=n.join(``).trim();e(t.length>0?t:null)}),i.on(`error`,e=>{o&&clearTimeout(o),!a&&t(e)})})}function B(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}}function V(e){return(Array.isArray(e)?e:e?[e]:[]).map(e=>String(e)).filter(Boolean)}async function ee(t){let n=[];for(let r of t){let t=f.resolve(r),i;try{i=await b(t)}catch(e){throw Error(`Error: Failed to read attachment file "${r}": ${e.message}`)}let a=f.basename(t),o=e(a,``);n.push({fileName:a,mimeType:o,size:i.length,source:{kind:`local-file`,file:new Blob([new Uint8Array(i)],{type:o})}})}return n}async function H(e){try{let t=f.join(f.resolve(e),`skills-lock.json`),n=await b(t,`utf8`);return JSON.parse(n)}catch{return null}}async function U(e,t){try{let n=f.join(f.resolve(e),`skills-lock.json`),r=await b(n,`utf8`),i=JSON.parse(r);if(i?.skills?.[t])return delete i.skills[t],await w(n,JSON.stringify(i,null,2)+`
|
|
15
|
-
`,`utf8`),!0}catch{}return!1}async function W(e,t,n={}){let r=t.trim().toLowerCase().replace(/[^a-z0-9-_]/g,`-`);if(!r)throw Error(`Skill name is required`);let i=n.flat===!1?f.join(`.agents`,`skills`,`main`,r):f.join(`.agents`,`skills`,r),a=f.join(f.resolve(e),i),o=f.join(a,`SKILL.md`);await v(a,{recursive:!0});let s=`---\nname: ${r}\ndescription: ${n.description||`Instructions and workflow for the ${r} skill.`}\n---\n\n# ${r}\n\nProvide step-by-step instructions for the agent when this skill is activated.\n`;return await w(o,s,`utf8`),{name:r,path:f.posix.join(...i.split(f.sep),`SKILL.md`)}}function G(){let e=p.platform===`win32`,t=e?`npx.cmd`:`npx`;try{let n=f.join(f.dirname(p.execPath),t);if(d(n))return{command:n,shell:e}}catch{}return{command:t,shell:e}}function K(e,t={}){let n=f.resolve(t.workspaceDir||p.cwd()),{command:r,shell:i}=G(),a=[`--yes`,`skills`,...e];return t.execFn?t.execFn(r,a,{cwd:n,env:p.env,timeoutMs:t.timeoutMs,shell:i}).then(e=>({success:e.exitCode===0,exitCode:e.exitCode??0,stdout:e.stdout||``,stderr:e.stderr||``})).catch(e=>({success:!1,exitCode:1,stdout:``,stderr:String(e),error:String(e)})):new Promise(t=>{let a=m(r,[`--yes`,`skills`,...e],{cwd:n,env:p.env,stdio:[`ignore`,`pipe`,`pipe`],shell:i}),o=``,s=``;a.stdout?.on(`data`,e=>o+=String(e)),a.stderr?.on(`data`,e=>s+=String(e)),a.on(`error`,e=>{t({success:!1,exitCode:1,stdout:o,stderr:s,error:e.message})}),a.on(`close`,e=>{t({success:e===0,exitCode:e??1,stdout:o,stderr:s,...e===0?{}:{error:s||`Process exited with code ${e}`}})})})}async function q(e,t=[]){try{let n=await x(e,{withFileTypes:!0});for(let r of n){if(r.name===`node_modules`||r.name===`.git`)continue;let n=f.join(e,r.name);r.isDirectory()?await q(n,t):r.name.toLowerCase()===`skill.md`&&t.push(n)}}catch{}return t}async function te(e,t,n={}){let r=f.resolve(e.replace(/^file:\/\//,``)),i=f.resolve(t),o=[],s=[],c=[],l=n.skillNames&&n.skillNames.length>0?new Set(n.skillNames):null,u=n.targetSubdir?f.join(i,`.agents`,`skills`,n.targetSubdir):f.join(i,`.agents`,`skills`);try{let e=await q(r);if(e.length===0){let t=f.join(r,`SKILL.md`);try{await C(t),e.push(t)}catch{}}for(let t of e.sort()){let e=f.dirname(t);try{let r=await b(t,`utf8`),i=a(t,r);if(l&&!l.has(i.name))continue;let c=f.join(u,i.name),d=f.join(c,`SKILL.md`),p=!1;try{await C(d),p=!0}catch{}if(p&&!n.overwrite){s.push(i.name);continue}await v(c,{recursive:!0}),await _(e,c,{recursive:!0,force:!0}),o.push(i.name)}catch(t){c.push({name:f.basename(e),error:t instanceof Error?t.message:String(t)})}}}catch(e){c.push({name:f.basename(r),error:e?.message||String(e)})}return{imported:o,skipped:s,failed:c}}async function J(e,t,n=[]){try{let r=await x(e,{withFileTypes:!0});for(let i of r){if(i.name===`node_modules`||i.name===`.git`)continue;let r=f.join(e,i.name);i.isDirectory()?await J(r,t,n):t.includes(f.extname(i.name).toLowerCase())&&n.push(r)}}catch{}return n}async function Y(e,t,n,r={}){let i=f.resolve(t.replace(/^file:\/\//,``)),a=[f.join(i,`.agents`,e),f.join(i,e)];f.basename(i)===e&&a.push(i);let o=e===`tools`?[`.json`]:[`.js`,`.mjs`],s=r.names&&r.names.length>0?new Set(r.names):null,c=r.targetSubdir?f.join(f.resolve(n),`.agents`,e,r.targetSubdir):f.join(f.resolve(n),`.agents`,e),l=[],u=[],d=[],p=/* @__PURE__ */ new Set;for(let t of a)for(let n of(await J(t,o)).sort()){let t=f.basename(n),i=t.replace(/\.[^.]+$/,``);if(!p.has(t)&&(p.add(t),!s||s.has(i)||s.has(t)))try{if(e===`tools`&&!/^[a-z][a-z0-9_]{0,63}$/.test(i))throw Error(`Invalid tool name: ${i}`);let a=f.join(c,t),o=!1;try{await C(a),o=!0}catch{}if(o&&!r.overwrite){u.push(i);continue}await v(c,{recursive:!0}),await _(n,a,{force:!0}),l.push(i)}catch(e){d.push({name:i,error:e?.message||String(e)})}}return{imported:l,skipped:u,failed:d}}function ne(e){let t=(e||``).trim();return!t||/^(?:\.\/|\.\.\/|\/|[a-zA-Z]:[\\/]|file:\/\/)/.test(t)?!1:t.startsWith(`http://`)||t.startsWith(`https://`)?/github\.com|gitlab\.com/i.test(t):/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_.-]+(?:@[a-zA-Z0-9_.-]+)?$/.test(t)}const X=/* @__PURE__ */ 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`]),Z=`server:main`;async function re(e={}){let t;if(e.workspace)t=f.resolve(e.workspace);else{let e=f.join(T(),`shadow-claw`);await v(e,{recursive:!0}),t=await y(f.join(e,`workspace-`))}let n=f.join(t,`.agents`,`skills`),i=f.join(t,`.agents`,`tools`),a=f.join(t,`database`);await v(t,{recursive:!0}),await v(n,{recursive:!0}),await v(i,{recursive:!0}),await v(a,{recursive:!0});let o=e.provider,s=e.model,c=e.stdin?!!e.stdin.isTTY:!!p.stdin.isTTY,l=!e.stdin&&!p.stdin.isTTY&&!!(p.stderr.isTTY||p.stdout.isTTY),u=e.isTTY===void 0?c||l:!!e.isTTY,d=e.isCI===void 0?e.isTTY===void 0&&!(!p.env.CI||[`0`,`false`].includes(p.env.CI.toLowerCase())):!!e.isCI,m=u&&!d&&!e.quiet&&!e.yes&&!e.y;if(!o&&!s&&m){let{promptForAgentModel:n}=await import(`./chunk-
|
|
16
|
-
`,`utf8`)}if(e.download&&(o===`transformers_js_local`||o===`llamafile`)){let{downloadLocalModel:t}=await import(`./chunk-
|
|
15
|
+
`,`utf8`),!0}catch{}return!1}async function W(e,t,n={}){let r=t.trim().toLowerCase().replace(/[^a-z0-9-_]/g,`-`);if(!r)throw Error(`Skill name is required`);let i=n.flat===!1?f.join(`.agents`,`skills`,`main`,r):f.join(`.agents`,`skills`,r),a=f.join(f.resolve(e),i),o=f.join(a,`SKILL.md`);await v(a,{recursive:!0});let s=`---\nname: ${r}\ndescription: ${n.description||`Instructions and workflow for the ${r} skill.`}\n---\n\n# ${r}\n\nProvide step-by-step instructions for the agent when this skill is activated.\n`;return await w(o,s,`utf8`),{name:r,path:f.posix.join(...i.split(f.sep),`SKILL.md`)}}function G(){let e=p.platform===`win32`,t=e?`npx.cmd`:`npx`;try{let n=f.join(f.dirname(p.execPath),t);if(d(n))return{command:n,shell:e}}catch{}return{command:t,shell:e}}function K(e,t={}){let n=f.resolve(t.workspaceDir||p.cwd()),{command:r,shell:i}=G(),a=[`--yes`,`skills`,...e];return t.execFn?t.execFn(r,a,{cwd:n,env:p.env,timeoutMs:t.timeoutMs,shell:i}).then(e=>({success:e.exitCode===0,exitCode:e.exitCode??0,stdout:e.stdout||``,stderr:e.stderr||``})).catch(e=>({success:!1,exitCode:1,stdout:``,stderr:String(e),error:String(e)})):new Promise(t=>{let a=m(r,[`--yes`,`skills`,...e],{cwd:n,env:p.env,stdio:[`ignore`,`pipe`,`pipe`],shell:i}),o=``,s=``;a.stdout?.on(`data`,e=>o+=String(e)),a.stderr?.on(`data`,e=>s+=String(e)),a.on(`error`,e=>{t({success:!1,exitCode:1,stdout:o,stderr:s,error:e.message})}),a.on(`close`,e=>{t({success:e===0,exitCode:e??1,stdout:o,stderr:s,...e===0?{}:{error:s||`Process exited with code ${e}`}})})})}async function q(e,t=[]){try{let n=await x(e,{withFileTypes:!0});for(let r of n){if(r.name===`node_modules`||r.name===`.git`)continue;let n=f.join(e,r.name);r.isDirectory()?await q(n,t):r.name.toLowerCase()===`skill.md`&&t.push(n)}}catch{}return t}async function te(e,t,n={}){let r=f.resolve(e.replace(/^file:\/\//,``)),i=f.resolve(t),o=[],s=[],c=[],l=n.skillNames&&n.skillNames.length>0?new Set(n.skillNames):null,u=n.targetSubdir?f.join(i,`.agents`,`skills`,n.targetSubdir):f.join(i,`.agents`,`skills`);try{let e=await q(r);if(e.length===0){let t=f.join(r,`SKILL.md`);try{await C(t),e.push(t)}catch{}}for(let t of e.sort()){let e=f.dirname(t);try{let r=await b(t,`utf8`),i=a(t,r);if(l&&!l.has(i.name))continue;let c=f.join(u,i.name),d=f.join(c,`SKILL.md`),p=!1;try{await C(d),p=!0}catch{}if(p&&!n.overwrite){s.push(i.name);continue}await v(c,{recursive:!0}),await _(e,c,{recursive:!0,force:!0}),o.push(i.name)}catch(t){c.push({name:f.basename(e),error:t instanceof Error?t.message:String(t)})}}}catch(e){c.push({name:f.basename(r),error:e?.message||String(e)})}return{imported:o,skipped:s,failed:c}}async function J(e,t,n=[]){try{let r=await x(e,{withFileTypes:!0});for(let i of r){if(i.name===`node_modules`||i.name===`.git`)continue;let r=f.join(e,i.name);i.isDirectory()?await J(r,t,n):t.includes(f.extname(i.name).toLowerCase())&&n.push(r)}}catch{}return n}async function Y(e,t,n,r={}){let i=f.resolve(t.replace(/^file:\/\//,``)),a=[f.join(i,`.agents`,e),f.join(i,e)];f.basename(i)===e&&a.push(i);let o=e===`tools`?[`.json`]:[`.js`,`.mjs`],s=r.names&&r.names.length>0?new Set(r.names):null,c=r.targetSubdir?f.join(f.resolve(n),`.agents`,e,r.targetSubdir):f.join(f.resolve(n),`.agents`,e),l=[],u=[],d=[],p=/* @__PURE__ */ new Set;for(let t of a)for(let n of(await J(t,o)).sort()){let t=f.basename(n),i=t.replace(/\.[^.]+$/,``);if(!p.has(t)&&(p.add(t),!s||s.has(i)||s.has(t)))try{if(e===`tools`&&!/^[a-z][a-z0-9_]{0,63}$/.test(i))throw Error(`Invalid tool name: ${i}`);let a=f.join(c,t),o=!1;try{await C(a),o=!0}catch{}if(o&&!r.overwrite){u.push(i);continue}await v(c,{recursive:!0}),await _(n,a,{force:!0}),l.push(i)}catch(e){d.push({name:i,error:e?.message||String(e)})}}return{imported:l,skipped:u,failed:d}}function ne(e){let t=(e||``).trim();return!t||/^(?:\.\/|\.\.\/|\/|[a-zA-Z]:[\\/]|file:\/\/)/.test(t)?!1:t.startsWith(`http://`)||t.startsWith(`https://`)?/github\.com|gitlab\.com/i.test(t):/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_.-]+(?:@[a-zA-Z0-9_.-]+)?$/.test(t)}const X=/* @__PURE__ */ 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`]),Z=`server:main`;async function re(e={}){let t;if(e.workspace)t=f.resolve(e.workspace);else{let e=f.join(T(),`shadow-claw`);await v(e,{recursive:!0}),t=await y(f.join(e,`workspace-`))}let n=f.join(t,`.agents`,`skills`),i=f.join(t,`.agents`,`tools`),a=f.join(t,`database`);await v(t,{recursive:!0}),await v(n,{recursive:!0}),await v(i,{recursive:!0}),await v(a,{recursive:!0});let o=e.provider,s=e.model,c=e.stdin?!!e.stdin.isTTY:!!p.stdin.isTTY,l=!e.stdin&&!p.stdin.isTTY&&!!(p.stderr.isTTY||p.stdout.isTTY),u=e.isTTY===void 0?c||l:!!e.isTTY,d=e.isCI===void 0?e.isTTY===void 0&&!(!p.env.CI||[`0`,`false`].includes(p.env.CI.toLowerCase())):!!e.isCI,m=u&&!d&&!e.quiet&&!e.yes&&!e.y;if(!o&&!s&&m){let{promptForAgentModel:n}=await import(`./chunk-hVf839t7.js`),r=await n({workspaceDir:t,contentRoot:p.cwd(),cacheDir:e.cacheDir,stdin:e.stdin,stdout:e.stdout,quiet:e.quiet,isTTY:u});o=r.providerId,s=r.model}if(o||=`transformers_js_local`,!s){let{DEFAULT_LOCAL_MODEL:e}=await import(`./chunk-hVf839t7.js`);s=o===`transformers_js_local`?e:`openrouter/free`}if(!await j(t)){let e=f.join(t,`shadow-claw.config.json`);await w(e,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:o,defaultModel:s}},null,2)+`
|
|
16
|
+
`,`utf8`)}if(e.download&&(o===`transformers_js_local`||o===`llamafile`)){let{downloadLocalModel:t}=await import(`./chunk-hVf839t7.js`);await t(s,{cacheDir:e.cacheDir,verbose:e.verbose,isTTY:e.isTTY})}return await R({workspace:t,quiet:!0}),await r(t),{success:!0,workspace:t}}async function Q(e={}){let t=e.workspace||p.cwd(),{db:n,workspaceDir:i,core:a}=await R({...e,workspace:t}),o=e.group||a.DEFAULT_SERVER_GROUP_ID||Z;await r(i);let s=await a.discoverSkills(n,o),c=await H(i);return{skills:s.skills.map(e=>{let t=c?.skills?.[e.name];return t?{...e,lockSource:t.source,lockSourceType:t.sourceType,lockHash:t.computedHash}:e}),diagnostics:s.diagnostics,...c?{lockfile:c}:{}}}async function ie(e=`list`,t=[],n={}){let r=n.workspace||p.cwd(),a=(e||`list`).trim().toLowerCase();if(a===`list`||a===`ls`){let e=await Q({...n,workspace:r});if(!n.quiet){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){let e=t.lockSource?` [source: ${t.lockSource}]`:``;console.log(` - ${t.name}${e}: ${t.description||`No description`}`)}}}return{success:!0,...e}}let{workspaceDir:o}=await R({...n,workspace:r,quiet:!0});if(a===`add`||a===`install`||a===`i`||a===`a`){let e=t[0];if(!e){let e=`Error: Package or skill source required. Usage: shadow-claw agent skills add <package-or-url>`;return n.quiet||console.error(e),p.exitCode=1,{success:!1,error:e}}let r=t.slice(1);if(n.useNpxSkills!==!1&&(n.npxSkillsExecFn||!n.fetchFn)){let t=[`add`,e,`-a`,`universal`];if((n.yes!==!1||n.quiet||!p.stdin.isTTY)&&!r.includes(`-y`)&&!r.includes(`--yes`)&&t.push(`-y`),n.skills){let e=Array.isArray(n.skills)?n.skills:String(n.skills).split(`,`).map(e=>e.trim()).filter(Boolean);e.length>0&&t.push(`--skill`,...e)}t.push(...r);let i=await K(t,{workspaceDir:o,execFn:n.npxSkillsExecFn});if(i.success)return!n.quiet&&i.stdout.trim()&&console.log(i.stdout.trim()),{success:!0,delegatedToNpxSkills:!0,skills:(await Q({...n,workspace:o,quiet:!0})).skills,stdout:i.stdout}}let i=await $(e,{...n,workspace:o,useNpxSkills:!1}),a=await Q({...n,workspace:o,quiet:!0});return{success:i.success,delegatedToNpxSkills:!1,fallbackUsed:!0,skills:a.skills,importResult:i,...i.error?{error:i.error}:{}}}if(a===`remove`||a===`rm`||a===`r`||a===`uninstall`){let e=t.filter(e=>!e.startsWith(`-`));if(e.length===0){let e=`Error: Skill name(s) required. Usage: shadow-claw agent skills remove <name...>`;return n.quiet||console.error(e),p.exitCode=1,{success:!1,error:e}}n.useNpxSkills!==!1&&await K([`remove`,...e,`-y`],{workspaceDir:o,execFn:n.npxSkillsExecFn});let r=[];for(let t of e){let e=[f.join(o,`.agents`,`skills`,t),f.join(o,`.agents`,`skills`,`main`,t)],n=!1;for(let t of e)try{(await C(t)).isDirectory()&&(await S(t,{recursive:!0,force:!0}),n=!0)}catch{}let i=await U(o,t);(n||i)&&r.push(t)}return n.quiet||(r.length>0?console.log(`Removed skill(s): ${r.join(`, `)}`):console.log(`No matching skills found to remove.`)),{success:!0,removed:r}}if(a===`init`){let e=t[0]||`my-skill`;if(n.useNpxSkills===!0&&n.npxSkillsExecFn&&(await K([`init`,e],{workspaceDir:o,execFn:n.npxSkillsExecFn})).success)return{success:!0,name:e,delegatedToNpxSkills:!0};try{let t=await W(o,e,{description:n.description,flat:n.flat!==!1});return n.quiet||console.log(`Initialized skill "${t.name}" at ${t.path}`),{success:!0,...t}}catch(e){let t=e instanceof Error?e.message:String(e);return n.quiet||console.error(`Error: ${t}`),p.exitCode=1,{success:!1,error:t}}}if(a===`sync`){n.useNpxSkills!==!1&&n.npxSkillsExecFn&&await K([`experimental_sync`,`-y`],{workspaceDir:o,execFn:n.npxSkillsExecFn});let e=await i(o,{overwrite:!!n.overwrite});return n.quiet||console.log(`Synced skills (migrated: ${e.migratedSkills.length}).`),{success:!0,...e,syncedToFlat:e.migratedSkills,syncedToMain:[]}}if(a===`find`||a===`search`||a===`f`||a===`s`){let e=t.join(` `).trim()||n.query||``;if(n.useNpxSkills!==!1&&(n.npxSkillsExecFn||!n.fetchFn)&&e){let t=await K([`find`,e],{workspaceDir:o,execFn:n.npxSkillsExecFn});if(t.success)return!n.quiet&&t.stdout.trim()&&console.log(t.stdout.trim()),{success:!0,delegatedToNpxSkills:!0,stdout:t.stdout,results:[]}}let r=n.fetchFn||globalThis.fetch;try{let t=await r(`https://skills.sh/api/search?q=${encodeURIComponent(e)}&limit=10`);if(!t.ok)throw Error(`HTTP ${t.status}`);let i=((await t.json()).skills||[]).map(e=>({name:e.name,package:`${e.source||e.id}@${e.name}`,source:e.source||e.id,installs:e.installs||0}));if(!n.quiet){if(i.length===0)console.log(`No skills found for "${e}".`);else{console.log(`Found ${i.length} skill(s):\n`);for(let e of i)console.log(` - ${e.package} (${e.installs} installs)`)}}return{success:!0,delegatedToNpxSkills:!1,results:i}}catch(e){let t=e instanceof Error?e.message:String(e);return n.quiet||console.error(`Error searching skills: ${t}`),{success:!1,error:t,results:[]}}}if(a===`update`||a===`up`||a===`check`||a===`restore`||a===`experimental_install`){let e=a===`restore`?`experimental_install`:a===`up`?`update`:a,r=await K([e,...t],{workspaceDir:o,execFn:n.npxSkillsExecFn});if(r.success)return!n.quiet&&r.stdout.trim()&&console.log(r.stdout.trim()),{success:!0,delegatedToNpxSkills:!0,stdout:r.stdout};if(a===`restore`||a===`experimental_install`){let e=await H(o);if(e&&Object.keys(e.skills).length>0){let t=0;for(let[r,i]of Object.entries(e.skills)){let e=i,a=e?.sourceType===`github`?`${e.source}@${r}`:e?.sourceUrl||e?.source;if(!a)continue;let s=await $(a,{...n,workspace:o,useNpxSkills:!1,quiet:!0});s.success&&(t+=s.importedCount||0)}return{success:!0,delegatedToNpxSkills:!1,fallbackUsed:!0,importedCount:t}}}return{success:!1,error:r.error||`Failed to run npx skills ${e}`}}let s=`Unknown skills subcommand "${e}". Available: list, add, remove, find, init, sync, update, check, restore`;return n.quiet||console.error(s),p.exitCode=1,{success:!1,error:s}}async function ae(e={}){let{db:t,core:n}=await R(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||Z,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:!X.has(e.name),...i?{enabled:i.has(e.name)}:{}}))}}async function oe(e,t,n={}){let{db:r,workspaceDir:i,core:a}=await R(n),o=n.group||a.DEFAULT_SERVER_GROUP_ID||Z,s=(a.TOOL_DEFINITIONS||[]).find(t=>t.name===e);if(!s&&typeof a.loadDeclarativeTools==`function`)try{s=(await a.loadDeclarativeTools(r,o)).tools.find(t=>t.name===e)}catch{}if(!s){let t=`Error: Tool "${e}" not found.`;return n.quiet||console.error(t),p.exitCode=1,{success:!1,error:t}}let c=!X.has(s.name),l=t??n.input;if(l===`-`&&(l=void 0),l==null&&n._stdinData!=null){let e=n._stdinData,t;try{t=JSON.parse(e)}catch{t=B(e,s.input_schema)}l=t}if(l!=null){let t={};if(typeof l==`string`)try{t=JSON.parse(l)}catch(e){let t=`Error: Failed to parse input JSON: ${e.message}`;return n.quiet||console.error(t),p.exitCode=1,{success:!1,error:t}}else typeof l==`object`&&(t=l);let u;try{let e=await le(r,a,i,{...n,interactive:!1});u={db:r,provider:e.providerId,model:e.model,apiKey:e.apiKey}}catch{}try{let i=await a.executeTool(r,e,t,o,{invokeContext:u}),l=typeof i==`string`?i:JSON.stringify(i,null,2);return n.output?(await w(f.resolve(n.output),l,`utf8`),n.quiet||p.stderr.write(`Output written to ${n.output}\n`)):n.quiet||p.stdout.write(l+`
|
|
17
17
|
`),{success:!0,tool:s,headlessSafe:c,output:i}}catch(t){let r=t instanceof Error?t.message:String(t);return n.quiet||console.error(`Error executing tool "${e}": ${r}`),p.exitCode=1,{success:!1,error:r}}}if(!n.quiet){let e=c?`[headless-safe]`:`[browser-only]`;console.log(`Tool: ${s.name} ${e}\n`),console.log(`Description:\n ${s.description}\n`),s.input_schema&&(console.log(`Parameters (JSON Schema):`),console.log(JSON.stringify(s.input_schema,null,2)),console.log()),console.log(`Usage:`),console.log(` Direct CLI: npx shadow-claw agent tool ${s.name} '<json-input>'`),console.log(` Pipe input: echo '<text>' | npx shadow-claw agent tool ${s.name}`),console.log(` Agent Prompt: npx shadow-claw agent run "<instruction>"
|
|
18
|
-
`)}return{success:!0,tool:s,headlessSafe:c}}async function se(e={}){let{db:t,core:n}=await R(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||Z,{clearGroupMessages:i}=await import(`./chunk-CAxYfMhR.js`);return await i(t,r),e.quiet||console.log(`Cleared conversation history for group "${r}".`),{success:!0,groupId:r}}async function ce(e,t={}){let{db:n,core:r}=await R(t),i=t.group||r.DEFAULT_SERVER_GROUP_ID||Z,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 le(e,t,n,r={}){let i=r.contentRoot??p.cwd(),a=await j(n,i),o=a?.config||{},s=o.settings||{},c=o.agent||s.agent||{},l=r.provider||p.env.SHADOW_CLAW_PROVIDER||p.env.SHADOW_CLAW_DEFAULT_PROVIDER;if(!l&&typeof t.getConfig==`function`&&(l=await t.getConfig(e,t.CONFIG_KEYS?.PROVIDER||`provider`)),!l&&r.model){let{isLlamafile:e,isAgentfile:t}=await import(`./chunk-
|
|
18
|
+
`)}return{success:!0,tool:s,headlessSafe:c}}async function se(e={}){let{db:t,core:n}=await R(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||Z,{clearGroupMessages:i}=await import(`./chunk-CAxYfMhR.js`);return await i(t,r),e.quiet||console.log(`Cleared conversation history for group "${r}".`),{success:!0,groupId:r}}async function ce(e,t={}){let{db:n,core:r}=await R(t),i=t.group||r.DEFAULT_SERVER_GROUP_ID||Z,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 le(e,t,n,r={}){let i=r.contentRoot??p.cwd(),a=await j(n,i),o=a?.config||{},s=o.settings||{},c=o.agent||s.agent||{},l=r.provider||p.env.SHADOW_CLAW_PROVIDER||p.env.SHADOW_CLAW_DEFAULT_PROVIDER;if(!l&&typeof t.getConfig==`function`&&(l=await t.getConfig(e,t.CONFIG_KEYS?.PROVIDER||`provider`)),!l&&r.model){let{isLlamafile:e,isAgentfile:t}=await import(`./chunk-hVf839t7.js`);t(r.model)?l=`agentfile`:e(r.model)?l=`llamafile`:/onnx/i.test(r.model)&&(l=`transformers_js_local`)}l||=c.defaultProvider||c.provider||s.defaultProvider||s.provider||o.defaultProvider;let u=r.stdin?!!r.stdin.isTTY:!!p.stdin.isTTY,d=!r.stdin&&!p.stdin.isTTY&&!!(p.stderr.isTTY||p.stdout.isTTY),f=r.isTTY===void 0?u||d:!!r.isTTY,m=r.isCI===void 0?r.isTTY===void 0&&!(!p.env.CI||[`0`,`false`].includes(p.env.CI.toLowerCase())):!!r.isCI,h=f&&!m&&!r.quiet&&r.interactive!==!1;if(!l){if(h){let{promptForAgentModel:e}=await import(`./chunk-hVf839t7.js`),t=await e({workspaceDir:n,contentRoot:i,cacheDir:r.cacheDir,stdin:r.stdin,stdout:r.stdout,quiet:r.quiet,isTTY:f,service:r._transformersService});l=t.providerId,r.model=t.model}else l=`openrouter`}let g=typeof t.getProvider==`function`?t.getProvider(l):null;if(!g){let e=`Error: Unknown provider "${l}".`;throw Error(e)}let _;if(r.apiKey!==void 0)_=r.apiKey;else{if(_=p.env.SHADOW_CLAW_API_KEY,!_)switch(l){case`openrouter`:_=p.env.OPENROUTER_API_KEY;break;case`huggingface`:_=p.env.HUGGINGFACE_API_KEY||p.env.HF_TOKEN;break;case`gemini_proxy`:_=p.env.GEMINI_API_KEY}!_&&typeof t.getConfig==`function`&&(_=await t.getConfig(e,`api_key:${l}`)||await t.getConfig(e,`apiKey`))}let v=r.model||p.env.SHADOW_CLAW_MODEL||p.env.SHADOW_CLAW_DEFAULT_MODEL||(typeof t.getConfig==`function`?await t.getConfig(e,t.CONFIG_KEYS?.MODEL||`model`):null)||c.defaultModel||c.model||s.defaultModel||s.model||o.defaultModel||g?.defaultModel||(l===`transformers_js_local`?(await import(`./chunk-hVf839t7.js`)).DEFAULT_LOCAL_MODEL:`default`);if(l===`transformers_js_local`||l===`llamafile`||l===`agentfile`){let{isModelLocallyCached:e,downloadLocalModel:t}=await import(`./chunk-hVf839t7.js`),i=r.cacheDir||c.cacheDir||o.cacheDir||s.cacheDir;if(!(e(v,i)||n&&e(v,n))){let e=r.stdout||p.stderr;if(r.download||r.yes||r.y)r.quiet||e.write(`\nDownloading ${v} from Hugging Face...\n`),await t(v,{cacheDir:i||r.cacheDir,stream:e,isTTY:f,service:r._transformersService,progress:!r.quiet&&r.progress!==!1&&!r.noProgress,quiet:r.quiet,verbose:r.verbose});else if(h){let n=await import(`node:readline/promises`),a=await import(`node:tty`),o=await import(`node:fs`),s=r.stdin||p.stdin,c=e,l=!1,u=null;if(s===p.stdin&&!p.stdin.isTTY&&!p.env.CI&&(p.stderr.isTTY||p.stdout.isTTY))try{let e=p.platform===`win32`?`CONIN$`:`/dev/tty`;u=o.openSync(e,`r`),s=new a.ReadStream(u),c=p.stderr.isTTY?p.stderr:p.stdout,l=!0}catch{try{let e=p.platform===`win32`?`CONIN$`:`/dev/tty`;s=o.createReadStream(e),c=p.stderr.isTTY?p.stderr:p.stdout,l=!0}catch{}}let d=n.createInterface({input:s,output:c}),m=!1,h=()=>{if(!m){m=!0,c.write(`
|
|
19
19
|
Operation cancelled.
|
|
20
20
|
`);try{d.close()}catch{}typeof r.onExit==`function`?r.onExit(130):p.exit(130)}};d.on(`SIGINT`,h),s&&typeof s.on==`function`&&s!==p.stdin&&s.on(`SIGINT`,h);let g=()=>h();p.on(`SIGINT`,g);let _=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&h()};s&&typeof s.on==`function`&&s.on(`data`,_);let y=``;try{y=(await d.question(`\nModel "${v}" is not yet downloaded to local disk.\nDownload model weights now? (Y/n) [default: Y]: `)).trim().toLowerCase()}finally{p.removeListener(`SIGINT`,g),s&&typeof s.removeListener==`function`&&(s!==p.stdin&&s.removeListener(`SIGINT`,h),s.removeListener(`data`,_));try{d.close()}catch{}if(l){if(s&&typeof s.destroy==`function`)try{s.destroy()}catch{}if(u!=null)try{o.closeSync(u)}catch{}}}if(y===``||y===`y`||y===`yes`)r.quiet||e.write(`\nDownloading ${v} from Hugging Face...\n`),await t(v,{cacheDir:i||r.cacheDir,stream:e,isTTY:f,service:r._transformersService,progress:!r.quiet&&r.progress!==!1&&!r.noProgress,quiet:r.quiet,verbose:r.verbose});else throw Error(`Model "${v}" is not downloaded. Download aborted.`)}else throw Error(`Model "${v}" is not downloaded. Run with --download or --yes to download model weights automatically.`)}}let y=r.baseUrl||r.providerBaseUrl||c?.baseUrl||s?.baseUrl||s?.providerBaseUrl;return y&&g&&(g={...g,baseUrl:y}),{providerId:l,providerConfig:g,apiKey:_||``,model:v,workspaceConfigData:a,workspaceConfig:o,workspaceSettings:s,workspaceAgent:c}}async function ue(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=>!X.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)!X.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 de(e,n={}){let{db:r,workspaceDir:i,core:a}=await R(n),u=n.group||a.DEFAULT_SERVER_GROUP_ID||Z,d=n._stdinData??null;if(e===`-`?e=d||``:d&&(e=e?`${e}\n\n${d}`:d),!e){let e=`Error: Prompt required. Provide a prompt argument or pipe text to stdin.`;return n.quiet||console.error(e),p.exitCode=1,{success:!1,error:e}}let m=[],h=/* @__PURE__ */ new Map;try{let e=await ee(V(n.file));for(let t of e)if(t.source?.kind===`local-file`){let e=await t.source.file.arrayBuffer();h.set(t.fileName,new Uint8Array(e))}m=await t(r,u,e);for(let e of m)e.path&&h.has(e.fileName)&&h.set(e.path,h.get(e.fileName))}catch(e){return n.quiet||console.error(e.message),p.exitCode=1,{success:!1,error:e.message}}let g,_,v,y,x,S,C,T;try{let e=await le(r,a,i,n);g=e.providerId,_=e.providerConfig,v=e.apiKey,y=e.model,x=e.workspaceConfigData,S=e.workspaceConfig,C=e.workspaceSettings,T=e.workspaceAgent}catch(e){return n.quiet||console.error(e.message),p.exitCode=1,{success:!1,error:e.message}}let E=n.internetAccess??n.allowInternet??C?.internetAccess??C?.vm_bash_full_internet_access??C?.fullInternetAccess??S?.internetAccess;if(E!==void 0&&typeof a.setConfig==`function`){let e=a.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await a.setConfig(r,e,E?`true`:`false`)}if(_.requiresApiKey!==!1&&!v){let e=g===`huggingface`?`HUGGINGFACE_API_KEY`:`${g.toUpperCase()}_API_KEY`,t=`Error: Provider "${g}" requires an API key, but none was provided.\nPlease provide an API key via --api-key <key> or export ${e}="...".`;return n.quiet||console.error(t),p.exitCode=1,{success:!1,error:t}}let D=[];if(n.history!==!1&&typeof a.getRecentMessages==`function`)try{let e=await a.getRecentMessages(r,u,50);D=await Promise.all(e.map(async e=>{if(e?.role===`user`&&Array.isArray(e?.attachments)&&e.attachments.length>0){let t=await l(e.attachments,async e=>{if(e.path&&r)try{return await c(r,u,e.path)}catch{}return null});if(t.length>0){let n=typeof e.content==`string`?e.content:``;return{...e,content:n?[{type:`text`,text:n},...t]:t}}}return e}))}catch{}let O={id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:u,role:`user`,sender:`user`,channel:`chat`,isFromMe:!1,isTrigger:!0,content:e,timestamp:Date.now(),...m.length>0?{attachments:m}:{}};if(typeof a.saveMessage==`function`)try{await a.saveMessage(r,O)}catch{}let k=O;if(m.length>0){let t=await l(m,async e=>{if(e.path&&h.has(e.path))return h.get(e.path);if(h.has(e.fileName))return h.get(e.fileName);if(e.path&&r)try{return await c(r,u,e.path)}catch{}return null});t.length>0&&(k={...O,content:e?[{type:`text`,text:e},...t]:t})}let A=_?.supportsStreaming===!0,j=n.stream!==!1&&n.streaming!==!1&&!n.noStream,M=A&&j,N=Number(n.maxTokens)||(typeof a.getModelMaxTokens==`function`?a.getModelMaxTokens(y):a.DEFAULT_MAX_TOKENS||8192);if(n.verbose&&!n.quiet){let e=_?.name||g,t=M?`streaming`:`standard`;p.stderr.write(`[Agent] Connecting to ${e} (${y}) [${t}]...\n`),p.stderr.write(`[Agent] Workspace: ${i}\n[Agent] Group: ${u}\n[Agent] Max tokens: ${N}\n`)}let P,F,I=!1,z=``,B=[];a.setPostHandler(async e=>{({"streaming-start":()=>{I=!0},"streaming-chunk":e=>{e.payload?.text&&(I=!0,z+=e.payload.text,P=(P||``)+e.payload.text,!n.quiet&&!n.output&&p.stdout.write(e.payload.text))},"streaming-done":()=>{},"streaming-end":()=>{I=!1,z=``},response:e=>{if(e.payload?.text){if(P=e.payload.text,n.output){let t=w(f.resolve(n.output),e.payload.text,`utf8`).then(()=>{n.quiet||p.stderr.write(`Output written to ${n.output}\n`)}).catch(()=>{});B.push(t)}else n.quiet||(I&&typeof z==`string`&&z.trim()===e.payload.text.trim()?e.payload.text.endsWith(`
|
|
21
21
|
`)||p.stdout.write(`
|
|
22
22
|
`):p.stdout.write(e.payload.text+`
|
|
23
|
-
`))}},"intermediate-response":e=>{n.verbose&&!n.quiet&&e.payload?.text&&p.stderr.write(`[Thought] ${e.payload.text}\n`)},error:e=>{e.payload?.error&&(F=e.payload.error,n.quiet||console.error(`Error: ${e.payload.error}`))},"tool-activity":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.tool||`tool`,n=e.payload.status||`executing`;p.stderr.write(`[Tool] ${t} (${n})\n`)}},"thinking-log":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;p.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},status:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label?`[${e.payload.label}] `:``;p.stderr.write(`${t}${e.payload.message||``}\n`)}},log:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;p.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},"token-usage":e=>{if(n.verbose&&!n.quiet&&e.payload?.usage){let t=e.payload.usage,n=t.prompt_tokens??t.input_tokens??0,r=t.completion_tokens??t.output_tokens??0,i=t.total_tokens??n+r;p.stderr.write(`[Tokens] Prompt: ${n}, Completion: ${r}, Total: ${i}\n`)}},"request-native-ai-task":e=>{L(a,r,e.payload)}})[e.type]?.(e)});let H;try{H=await ue(r,a,u,S,C,T,n)}catch(e){let t=e.message||String(e);return n.quiet||console.error(t),p.exitCode=1,{success:!1,error:t}}let{enabledTools:U,profileSystemPromptOverride:W}=H;if(U.length>0&&!n.quiet){let{getCuratedModelToolSupport:e}=await import(`./chunk-
|
|
23
|
+
`))}},"intermediate-response":e=>{n.verbose&&!n.quiet&&e.payload?.text&&p.stderr.write(`[Thought] ${e.payload.text}\n`)},error:e=>{e.payload?.error&&(F=e.payload.error,n.quiet||console.error(`Error: ${e.payload.error}`))},"tool-activity":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.tool||`tool`,n=e.payload.status||`executing`;p.stderr.write(`[Tool] ${t} (${n})\n`)}},"thinking-log":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;p.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},status:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label?`[${e.payload.label}] `:``;p.stderr.write(`${t}${e.payload.message||``}\n`)}},log:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;p.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},"token-usage":e=>{if(n.verbose&&!n.quiet&&e.payload?.usage){let t=e.payload.usage,n=t.prompt_tokens??t.input_tokens??0,r=t.completion_tokens??t.output_tokens??0,i=t.total_tokens??n+r;p.stderr.write(`[Tokens] Prompt: ${n}, Completion: ${r}, Total: ${i}\n`)}},"request-native-ai-task":e=>{L(a,r,e.payload)}})[e.type]?.(e)});let H;try{H=await ue(r,a,u,S,C,T,n)}catch(e){let t=e.message||String(e);return n.quiet||console.error(t),p.exitCode=1,{success:!1,error:t}}let{enabledTools:U,profileSystemPromptOverride:W}=H;if(U.length>0&&!n.quiet){let{getCuratedModelToolSupport:e}=await import(`./chunk-hVf839t7.js`);e(y)===!1&&p.stderr.write(`[Agent] Warning: Model "${y}" does not support tool calling; tools will be ignored. Use --tools none or choose a tool-capable model (e.g. onnx-community/gemma-4-E2B-it-ONNX).\n`)}if(m.length>0&&!n.quiet){let e=s(y);for(let t of m){let n=o(t.mimeType,t.fileName);n===`image`&&!e.images&&!e.routerByFeatures?p.stderr.write(`[Agent] Warning: Model "${y}" does not accept image input; "${t.fileName}" will be passed as a reference only.\n`):n===`audio`&&!e.audio&&!e.routerByFeatures?p.stderr.write(`[Agent] Warning: Model "${y}" does not accept audio input; "${t.fileName}" will be passed as a reference only.\n`):n===`video`&&!e.video&&!e.routerByFeatures?p.stderr.write(`[Agent] Warning: Model "${y}" does not accept video input; "${t.fileName}" will be passed as a reference only.\n`):n===`document`&&!e.documents&&!e.routerByFeatures&&p.stderr.write(`[Agent] Warning: Model "${y}" does not accept PDF/document input; "${t.fileName}" will be passed as a reference only.\n`)}}let G;if(n.systemPrompt===`none`||n.systemPrompt===``||n.systemPrompt===!1||n.noSystemPrompt===!0)G=``;else{if(G=n.systemPrompt,!G&&n.systemPromptFile)try{let e=f.resolve(n.systemPromptFile);G=await b(e,`utf8`)}catch(e){let t=`Error: Failed to read system prompt file "${n.systemPromptFile}": ${e.message}`;return n.quiet||console.error(t),p.exitCode=1,{success:!1,error:t}}if(G||=p.env.SHADOW_CLAW_SYSTEM_PROMPT||p.env.SHADOWCLAW_SYSTEM_PROMPT,!G&&W&&(G=W),!G&&T?.systemPromptFile)try{let e=x?.configPath?f.dirname(x.configPath):i,t=f.resolve(e,T.systemPromptFile);G=await b(t,`utf8`)}catch(e){n.verbose&&!n.quiet&&console.error(`Warning: Failed to read systemPromptFile from config: ${e.message}`)}if(G||=T?.systemPrompt||C?.systemPrompt||C?.systemPromptOverride,!G&&typeof a.getConfig==`function`)try{let e=await a.getConfig(r,a.CONFIG_KEYS?.SYSTEM_PROMPT_OVERRIDE||`system_prompt_override`);e&&typeof e==`string`&&(G=e)}catch{}G||=`You are ShadowClaw, a helpful AI assistant operating in a headless workspace. Answer concisely.`}let K={apiKey:v||``,assistantName:`ShadowClaw`,enabledTools:U,groupId:u,maxTokens:N,messages:[...D,k],model:y,provider:g,..._?.baseUrl?{baseUrl:_.baseUrl}:{},streaming:M,verbose:!!n.verbose,systemPrompt:G},q=new AbortController;n.abortSignal&&(n.abortSignal.aborted?q.abort():n.abortSignal.addEventListener(`abort`,()=>q.abort(),{once:!0}));let te=e=>{typeof n.onExit==`function`?n.onExit(e):!p.env.JEST_WORKER_ID&&p.env.NODE_ENV!==`test`&&p.exit(e)},J=!1,Y=null,ne=()=>{if(J)Y&&=(clearTimeout(Y),null),te(130);else{J=!0,q.abort();try{typeof a.cleanupAllLlamafileProcesses==`function`&&a.cleanupAllLlamafileProcesses()}catch{}Y=setTimeout(()=>{te(130)},1500),Y.unref?.()}};p.on(`SIGINT`,ne);let X=n.invokeHandler||a.handleInvoke;try{await X(r,K,q.signal)}catch(e){F=e instanceof Error?e.message:String(e),!J&&!n.quiet&&console.error(`Error: ${F}`)}finally{p.removeListener(`SIGINT`,ne),Y&&=(clearTimeout(Y),null)}if(J)return n.quiet||p.stderr.write(`
|
|
24
24
|
Operation cancelled.
|
|
25
25
|
`),p.exitCode=130,typeof n.onExit==`function`&&n.onExit(130),{success:!1,error:`Operation cancelled.`};if(F&&I&&!n.quiet&&!n.output&&p.stdout.write(`
|
|
26
|
-
`),F)return p.exitCode=1,{success:!1,error:F};if(P&&typeof a.saveMessage==`function`)try{await a.saveMessage(r,{id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:u,role:`assistant`,content:P,timestamp:Date.now()})}catch{}if(n.output&&P&&B.length===0){let e=w(f.resolve(n.output),P,`utf8`).then(()=>{n.quiet||p.stderr.write(`Output written to ${n.output}\n`)}).catch(()=>{});B.push(e)}return await Promise.all(B),typeof a.setPostHandler==`function`&&a.setPostHandler(null),{success:!0,response:P,model:y,provider:g}}async function fe(e=`list`,t,n={}){let{listLocalModels:r,listLlamafileModels:i,downloadLocalModel:a,fetchRemoteModels:o,DEFAULT_LOCAL_MODEL:s}=await import(`./chunk-
|
|
26
|
+
`),F)return p.exitCode=1,{success:!1,error:F};if(P&&typeof a.saveMessage==`function`)try{await a.saveMessage(r,{id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:u,role:`assistant`,content:P,timestamp:Date.now()})}catch{}if(n.output&&P&&B.length===0){let e=w(f.resolve(n.output),P,`utf8`).then(()=>{n.quiet||p.stderr.write(`Output written to ${n.output}\n`)}).catch(()=>{});B.push(e)}return await Promise.all(B),typeof a.setPostHandler==`function`&&a.setPostHandler(null),{success:!0,response:P,model:y,provider:g}}async function fe(e=`list`,t,n={}){let{listLocalModels:r,listLlamafileModels:i,downloadLocalModel:a,fetchRemoteModels:o,DEFAULT_LOCAL_MODEL:s}=await import(`./chunk-hVf839t7.js`),c=n.workspace?f.resolve(n.workspace):p.cwd(),l=e||`list`;if(l===`list`||l===`remote`){let e=l===`remote`||!!(n.remote||n.all||n.huggingface),a=await j(c),u=a?.config?.agent?.defaultModel||a?.config?.settings?.defaultModel||s;if(e){n.quiet||p.stdout.write(`
|
|
27
27
|
Fetching available ONNX models from Hugging Face (onnx-community)...
|
|
28
28
|
`);let e=await o({cacheDir:n.cacheDir,query:n.query||(l===`remote`&&t?t:void 0)});if(!n.quiet){if(e.length===0)p.stdout.write(`No models found on Hugging Face or could not reach huggingface.co.
|
|
29
29
|
|
|
@@ -38,4 +38,4 @@ Curated Transformers.js Models (Local ONNX):
|
|
|
38
38
|
|
|
39
39
|
`);for(let e of f){let t=e.fileName===u||e.id===u||u.endsWith(e.fileName),n=e.cached?` [Cached]`:` [Not downloaded]`,r=t?` (Default)`:``;p.stdout.write(` • ${e.fileName}${r}${n}\n`),p.stdout.write(` Name: ${e.name}\n`),p.stdout.write(` URL: ${e.url}\n`),p.stdout.write(` ${e.description}\n\n`)}p.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:d,llamafileModels:f,defaultModel:u}}if(l===`download`){let e=t||n.model||s;n.verbose&&!n.quiet&&p.stderr.write(`Preparing to download model: ${e}\n`);let r=await a(e,{cacheDir:n.cacheDir,verbose:n.verbose,isTTY:n.isTTY,progress:n.progress!==!1&&!n.noProgress});return r.success||(p.exitCode=1),r}if(l===`set`){let e=t||n.model;if(!e){let e=`Error: Please specify a model ID to set as default.`;return n.quiet||console.error(e),p.exitCode=1,{success:!1,error:e}}let r=await j(c),i=r?.configPath||f.join(c,`shadow-claw.config.json`),a=r?.config||{},o={...a,agent:{...a.agent||{},defaultModel:e}};return await w(i,JSON.stringify(o,null,2)+`
|
|
40
40
|
`,`utf8`),n.quiet||p.stdout.write(`Updated default CLI agent model to: ${e}\n`),{success:!0,model:e,configPath:i}}let u=`Unknown model action: "${l}". Available: list, download, set`;return n.quiet||console.error(u),p.exitCode=1,{success:!1,error:u}}async function $(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),p.exitCode=1,{success:!1,error:e}}let r=t.workspace||p.cwd(),{db:i,workspaceDir:a,core:o}=await R({...t,workspace:r}),s=t.group||o.DEFAULT_SERVER_GROUP_ID||Z,c=e=>e?Array.isArray(e)?e.map(e=>String(e).trim()).filter(Boolean):String(e).split(`,`).map(e=>e.trim()).filter(Boolean):[];if(n.startsWith(`./`)||n.startsWith(`../`)||n.startsWith(`/`)||n.startsWith(`file://`)||/^[a-zA-Z]:[\\/]/.test(n)){let e=!!(t.tools||t.skills||t.scripts)&&!t.all,r={overwrite:!!t.overwrite,targetSubdir:t.targetSubdir},i={imported:[],skipped:[],failed:[]},o=e&&!t.skills?i:await te(n,a,{...r,skillNames:t.skills?c(t.skills):void 0}),s=e&&!t.tools?i:await Y(`tools`,n,a,{...r,names:c(t.tools)}),l=e&&!t.scripts?i:await Y(`scripts`,n,a,{...r,names:c(t.scripts)}),u=(e,t,n)=>[...e.imported.map(e=>({name:e,path:`.agents/${t}/${n(e)}`,status:`imported`})),...e.skipped.map(e=>({name:e,path:`.agents/${t}/${n(e)}`,status:`skipped`})),...e.failed.map(e=>({name:e.name,path:``,status:`failed`,error:e.error}))],d=o.imported.length+s.imported.length+l.imported.length,f=o.skipped.length+s.skipped.length+l.skipped.length,m=[...o.failed.map(e=>({...e,kind:`Skill`})),...s.failed.map(e=>({...e,kind:`Tool`})),...l.failed.map(e=>({...e,kind:`Script`}))],h=m.length,g=h===0||d>0;return g||(p.exitCode=1),{success:g,siteUrl:n,manifestUrl:n,result:{tools:u(s,`tools`,e=>`${e}.json`),scripts:u(l,`scripts`,e=>`${e}.js`),skills:u(o,`skills`,e=>`${e}/SKILL.md`),diagnostics:m.map(e=>`${e.kind} ${e.name}: ${e.error}`)},importedCount:d,skippedCount:f,failedCount:h,...h>0&&d===0?{error:m[0]?.error}:{}}}if(ne(n)&&t.useNpxSkills!==!1&&(t.npxSkillsExecFn||!t.fetchFn)){let e=await o.discoverSkills(i,s),r=new Set(e.skills.map(e=>e.name)),l=[`add`,n,`-a`,`universal`,`-y`];if(t.skills){let e=c(t.skills);e.length>0&&l.push(`--skill`,...e)}if((await K(l,{workspaceDir:a,execFn:t.npxSkillsExecFn})).success){let e=await o.discoverSkills(i,s),t=e.skills.filter(e=>!r.has(e.name)),a=t.length>0?t:e.skills;return{success:!0,siteUrl:n,manifestUrl:n,result:{tools:[],scripts:[],skills:a.map(e=>({name:e.name,path:e.path,status:`imported`})),diagnostics:[]},importedCount:a.length,skippedCount:0,failedCount:0}}}let l=o.fetchDiscoveryManifest||(await import(`./chunk-CtMaOnRj.js`)).fetchDiscoveryManifest,u=o.importRemoteArtifacts||(await import(`./chunk-COBNl0vP.js`)).importRemoteArtifacts,d=t.fetchFn||globalThis.fetch;t.quiet||console.log(`Fetching discovery manifest from ${n}...`);let f;try{f=await l(n,d)}catch(e){let n=`Failed to fetch discovery manifest: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),p.exitCode=1,{success:!1,error:n}}let{manifest:m,siteUrl:h,manifestUrl:g}=f,_=m.tools||[],v=m.skills||[],y=m.scripts||[];t.quiet||console.log(`Discovered: ${m.name||`Remote Site`} (${v.length} skill${v.length===1?``:`s`}, ${_.length} tool${_.length===1?``:`s`}, ${y.length} script${y.length===1?``:`s`})`);let b=_.map(e=>e.name),x=v.map(e=>e.name),S=y.map(e=>e.name),C,w,T;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):[];C=e(t.tools),w=e(t.skills),T=e(t.scripts)}else C=b,w=x,T=S;let E=t.autoEnable!==!1,D=!!t.overwrite,O;try{O=await u(i,s,m,{toolNames:C,skillNames:w,scriptNames:T},{autoEnable:E,overwrite:D,fetchFn:d,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}`),p.exitCode=1,{success:!1,error:n}}let k=O.tools.filter(e=>e.status===`imported`),A=O.skills.filter(e=>e.status===`imported`),j=O.scripts.filter(e=>e.status===`imported`),M=O.tools.filter(e=>e.status===`skipped`),N=O.skills.filter(e=>e.status===`skipped`),P=O.scripts.filter(e=>e.status===`skipped`),F=O.tools.filter(e=>e.status===`failed`),I=O.skills.filter(e=>e.status===`failed`),L=O.scripts.filter(e=>e.status===`failed`),z=k.length+A.length+j.length,B=M.length+N.length+P.length,V=F.length+I.length+L.length;if(!t.quiet){console.log(`
|
|
41
|
-
Importing artifacts:`);for(let e of[...O.tools,...O.skills,...O.scripts]){let t=O.tools.includes(e)?`tool`:O.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(V>0?`\nCompleted with ${V} error${V===1?``:`s`}. Successfully imported ${z} items, ${B} skipped.`:`\nSuccessfully imported ${z} item${z===1?``:`s`} (${k.length} tool${k.length===1?``:`s`}, ${A.length} skill${A.length===1?``:`s`}, ${j.length} script${j.length===1?``:`s`}).`)}let ee=V===0||z>0;return ee||(p.exitCode=1),{success:ee,manifest:m,siteUrl:h,manifestUrl:g,result:O,importedCount:z,skippedCount:B,failedCount:V}}async function pe(e,t=[],n={}){let r=t,i=n;if(!Array.isArray(t)&&typeof t==`object`&&(i=t,r=[]),i._stdinData===void 0)try{i={...i,_stdinData:p.stdin.isTTY?null:await z({timeoutMs:500})}}catch{i={...i,_stdinData:null}}switch(e){case`init`:{let e=r[0]||i.workspace,t=await re({...i,workspace:e});return console.log(`Headless agent workspace initialized at: ${t.workspace}`),t}case`skills`:{let e=r[0],t={...i,workspace:i.workspace||p.cwd()};if(e)return await ie(e,r.slice(1),t);let n=await Q(t);if(n.skills.length===0)console.log(`No skills found in workspace (.agents/skills/).`);else{console.log(`Available skills (${n.skills.length}):\n`);for(let e of n.skills){let t=e.lockSource?` [source: ${e.lockSource}]`:``;console.log(` - ${e.name}${t}: ${e.description||`No description`}`)}}return n}case`tools`:{let e=r[0];if(e)return await oe(e,r[1],i);let t=await ae(i);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=r[0];if(!e){console.error(`Error: Tool name required. Usage: shadow-claw agent tool <name> [input-json]`),p.exitCode=1;return}return await oe(e,r[1],i)}case`skill`:{let e=r[0];if(!e){console.error(`Error: Skill name required. Usage: shadow-claw agent skill <name>`),p.exitCode=1;return}return await ce(e,i)}case`clear`:return await se(i);case`run`:return await de(r.join(` `)||`-`,i);case`models`:case`model`:{let e=r[0]||`list`,t=r[1];return await fe(e,t,i)}case`import`:{let e=r[0];return e?await $(e,{...i,workspace:i.workspace||p.cwd()}):(console.error(`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`),p.exitCode=1,{success:!1,error:`Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`})}case`listen`:return await(i.listenFn||(async e=>{let{runWebRtcListenCommand:t}=await import(`./chunk-
|
|
41
|
+
Importing artifacts:`);for(let e of[...O.tools,...O.skills,...O.scripts]){let t=O.tools.includes(e)?`tool`:O.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(V>0?`\nCompleted with ${V} error${V===1?``:`s`}. Successfully imported ${z} items, ${B} skipped.`:`\nSuccessfully imported ${z} item${z===1?``:`s`} (${k.length} tool${k.length===1?``:`s`}, ${A.length} skill${A.length===1?``:`s`}, ${j.length} script${j.length===1?``:`s`}).`)}let ee=V===0||z>0;return ee||(p.exitCode=1),{success:ee,manifest:m,siteUrl:h,manifestUrl:g,result:O,importedCount:z,skippedCount:B,failedCount:V}}async function pe(e,t=[],n={}){let r=t,i=n;if(!Array.isArray(t)&&typeof t==`object`&&(i=t,r=[]),i._stdinData===void 0)try{i={...i,_stdinData:p.stdin.isTTY?null:await z({timeoutMs:500})}}catch{i={...i,_stdinData:null}}switch(e){case`init`:{let e=r[0]||i.workspace,t=await re({...i,workspace:e});return console.log(`Headless agent workspace initialized at: ${t.workspace}`),t}case`skills`:{let e=r[0],t={...i,workspace:i.workspace||p.cwd()};if(e)return await ie(e,r.slice(1),t);let n=await Q(t);if(n.skills.length===0)console.log(`No skills found in workspace (.agents/skills/).`);else{console.log(`Available skills (${n.skills.length}):\n`);for(let e of n.skills){let t=e.lockSource?` [source: ${e.lockSource}]`:``;console.log(` - ${e.name}${t}: ${e.description||`No description`}`)}}return n}case`tools`:{let e=r[0];if(e)return await oe(e,r[1],i);let t=await ae(i);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=r[0];if(!e){console.error(`Error: Tool name required. Usage: shadow-claw agent tool <name> [input-json]`),p.exitCode=1;return}return await oe(e,r[1],i)}case`skill`:{let e=r[0];if(!e){console.error(`Error: Skill name required. Usage: shadow-claw agent skill <name>`),p.exitCode=1;return}return await ce(e,i)}case`clear`:return await se(i);case`run`:return await de(r.join(` `)||`-`,i);case`models`:case`model`:{let e=r[0]||`list`,t=r[1];return await fe(e,t,i)}case`import`:{let e=r[0];return e?await $(e,{...i,workspace:i.workspace||p.cwd()}):(console.error(`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`),p.exitCode=1,{success:!1,error:`Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`})}case`listen`:return await(i.listenFn||(async e=>{let{runWebRtcListenCommand:t}=await import(`./chunk-CGIgtL6R.js`);return t(e)}))({...i,agent:!0});default:console.log(`Usage: shadow-claw agent <init|model|skills|tools|tool|skill|import|run|clear|listen> [args...]`)}}export{j as _,$ as a,de as c,ie as d,oe as f,I as g,R as h,pe as i,ce as l,K as m,G as n,re as o,ae as p,se as r,fe as s,le as t,Q as u};
|