shadow-claw 1.59.7 → 1.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.well-known/mcp/server-card.json +4 -12
- package/.well-known/mcp.json +4 -12
- package/README.md +6 -2
- package/dist/cli/build/build.js +1 -1
- package/dist/cli/{chunk-DDvuLVfW.js → chunk-3C5izdQW.js} +1 -1
- package/dist/cli/chunk-B-75h9gX.js +1 -0
- package/dist/cli/{chunk-hVf839t7.js → chunk-B7Kn-otm.js} +1 -1
- package/dist/cli/{chunk-YX32FcN7.js → chunk-BBczgswQ.js} +1 -1
- package/dist/cli/{chunk-DcNxjqH6.js → chunk-BE-lYWcn.js} +1 -1
- package/dist/cli/{chunk-CQaCgswD.js → chunk-BECr0WxI.js} +11 -11
- package/dist/cli/chunk-BEz1PD1_.js +1 -0
- package/dist/cli/chunk-BLzI1Fp2.js +1 -0
- package/dist/cli/{chunk-B3TrWbca.js → chunk-BVSC1MNQ.js} +11 -11
- package/dist/cli/{chunk-D_te8ufL.js → chunk-BdWcep6o.js} +1 -1
- package/dist/cli/{chunk-SRBRVorc.js → chunk-BfTpnSS4.js} +1 -1
- package/dist/cli/{chunk-D2_eAO83.js → chunk-BgvqTf7w.js} +1 -1
- package/dist/cli/chunk-BwsJfUT3.js +1 -0
- package/dist/cli/{chunk--PFY91kE.js → chunk-C9b4b7c_.js} +1 -1
- package/dist/cli/{chunk-SxK79JmB.js → chunk-CAw9XYFe.js} +1 -1
- package/dist/cli/chunk-CFCcbFs2.js +396 -0
- package/dist/cli/{chunk-Cnjb8Usu.js → chunk-CTarF4FC.js} +1 -1
- package/dist/cli/{chunk-3vNYrs_L.js → chunk-Cbq5hpjb.js} +4 -4
- package/dist/cli/chunk-CjTjKy_v.js +310 -0
- package/dist/cli/chunk-Cjyu4cr_.js +36 -0
- package/dist/cli/{chunk-DUGZPka_.js → chunk-ClMKygjZ.js} +1 -1
- package/dist/cli/chunk-Cppnq1KF.js +1 -0
- package/dist/cli/{chunk-DvemF16v.js → chunk-D9QCNFMO.js} +1 -1
- package/dist/cli/{chunk-iB8OoMmW.js → chunk-DB21BMqt.js} +1 -1
- package/dist/cli/{chunk-_Vo-o_e3.js → chunk-DHoIWvCc.js} +1 -1
- package/dist/cli/chunk-DZEN9T5y.js +1 -0
- package/dist/cli/{chunk-5rLO4DWS.js → chunk-Dl14OyYO.js} +9 -9
- package/dist/cli/chunk-Dl_vv0dI.js +1 -0
- package/dist/cli/chunk-Dpmfhlyl.js +1 -0
- package/dist/cli/{chunk-BrR1DOBS.js → chunk-Du7Xtucq.js} +1 -1
- package/dist/cli/{chunk-B88Z8T_9.js → chunk-DxcDFUi_.js} +1 -1
- package/dist/cli/{chunk-Dt7-hzJU.js → chunk-DyyEWbV7.js} +1 -1
- package/dist/cli/chunk-N0x3mXU0.js +1 -0
- package/dist/cli/{chunk-CGoE4llV.js → chunk-V-w0Bata.js} +1 -1
- package/dist/cli/{chunk-CncW6_WL.js → chunk-ZxDxSSn-.js} +1 -1
- package/dist/cli/{chunk-CZdCRqNe.js → chunk-lPvFUkd5.js} +1 -1
- package/dist/cli/{chunk-66BvqAV0.js → chunk-n5s-sCdU.js} +1 -1
- package/dist/cli/{chunk-CAAeGOdy.js → chunk-nD9VPVMq.js} +1 -1
- package/dist/cli/{chunk-DMs7kREC.js → chunk-rFuy8aS_.js} +1 -1
- package/dist/cli/{chunk-B0qusANw.js → chunk-wjM6JXWa.js} +1 -1
- package/dist/cli/{chunk-DhOU6GYX.js → chunk-zcES9rut.js} +1 -1
- package/dist/cli/cli.js +3 -3
- package/dist/headless-agent.js +1 -1
- package/dist/lib/{channel-mmdGzPkT.js → channel-DB77spML.js} +2 -2
- package/dist/lib/{channel-mmdGzPkT.js.map → channel-DB77spML.js.map} +1 -1
- package/dist/lib/{compact-context-CY9BBlUQ.js → compact-context-Q9t9aL1e.js} +7 -7
- package/dist/lib/{compact-context-CY9BBlUQ.js.map → compact-context-Q9t9aL1e.js.map} +1 -1
- package/dist/lib/components/index.js +21 -21
- 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-llm.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-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-llm.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-pages.js +1 -1
- package/dist/lib/components/shadow-claw-peerjs.js +1 -1
- package/dist/lib/components/shadow-claw-settings.js +1 -1
- package/dist/lib/components/shadow-claw-storage.js +1 -1
- package/dist/lib/components/shadow-claw-task-server.js +1 -1
- package/dist/lib/components/shadow-claw-tasks.js +1 -1
- package/dist/lib/components/shadow-claw-terminal.js +1 -1
- package/dist/lib/components/shadow-claw-tools.js +1 -1
- package/dist/lib/components/shadow-claw-webvm.js +1 -1
- package/dist/lib/components/shadow-claw.js +1 -1
- package/dist/lib/{configure-peer-js-ccNvax2N.js → configure-peer-js-CgFiwoxY.js} +2 -2
- package/dist/lib/{configure-peer-js-ccNvax2N.js.map → configure-peer-js-CgFiwoxY.js.map} +1 -1
- package/dist/lib/content/build-attachment-content-blocks.d.ts +2 -0
- package/dist/lib/{discover-skills-OwlQ2sXA.js → discover-skills-CXyaWHKi.js} +5 -5
- package/dist/lib/{discover-skills-OwlQ2sXA.js.map → discover-skills-CXyaWHKi.js.map} +1 -1
- package/dist/lib/{git-D2J_j9X9.js → git-CogDRlEz.js} +2 -2
- package/dist/lib/{git-D2J_j9X9.js.map → git-CogDRlEz.js.map} +1 -1
- package/dist/lib/index.js +21 -21
- package/dist/lib/{init-control-plane-B7blDVIE.js → init-control-plane-CEGdzgWX.js} +7 -7
- package/dist/lib/{init-control-plane-B7blDVIE.js.map → init-control-plane-CEGdzgWX.js.map} +1 -1
- package/dist/lib/{invoke-agent-SxvudiDT.js → invoke-agent-cac3gCsj.js} +6 -6
- package/dist/lib/{invoke-agent-SxvudiDT.js.map → invoke-agent-cac3gCsj.js.map} +1 -1
- package/dist/lib/{move-group-entry-DDpjxa10.js → move-group-entry-D8dptMg0.js} +2 -2
- package/dist/lib/{move-group-entry-DDpjxa10.js.map → move-group-entry-D8dptMg0.js.map} +1 -1
- package/dist/lib/{orchestrator-C7fkh7T7.js → orchestrator-BBAwy9Nm.js} +12 -12
- package/dist/lib/{orchestrator-C7fkh7T7.js.map → orchestrator-BBAwy9Nm.js.map} +1 -1
- package/dist/lib/{orchestrator-CCARkxQC.js → orchestrator-cRBe3lhq.js} +2 -2
- package/dist/lib/{orchestrator-CCARkxQC.js.map → orchestrator-cRBe3lhq.js.map} +1 -1
- package/dist/lib/{peerjs-Bfw_FWLB.js → peerjs-BLg8aGUj.js} +3 -3
- package/dist/lib/{peerjs-Bfw_FWLB.js.map → peerjs-BLg8aGUj.js.map} +1 -1
- package/dist/lib/{process-peer-query-param-BxYiZNdf.js → process-peer-query-param-BnsVnxzH.js} +5 -5
- package/dist/lib/{process-peer-query-param-BxYiZNdf.js.map → process-peer-query-param-BnsVnxzH.js.map} +1 -1
- package/dist/lib/{process-pending-shared-payloads-DPIbwRb3.js → process-pending-shared-payloads-DBZfZOOa.js} +2 -2
- package/dist/lib/{process-pending-shared-payloads-DPIbwRb3.js.map → process-pending-shared-payloads-DBZfZOOa.js.map} +1 -1
- package/dist/lib/{process-room-query-param-B2_d50nE.js → process-room-query-param-B8EYg_-r.js} +4 -4
- package/dist/lib/{process-room-query-param-B2_d50nE.js.map → process-room-query-param-B8EYg_-r.js.map} +1 -1
- package/dist/lib/{push-client-rrjTdc-U.js → push-client-CAm6UMvE.js} +3 -3
- package/dist/lib/{push-client-rrjTdc-U.js.map → push-client-CAm6UMvE.js.map} +1 -1
- package/dist/lib/{rooms-bwGoYb1q.js → rooms-Dzphx3rK.js} +2 -2
- package/dist/lib/{rooms-bwGoYb1q.js.map → rooms-Dzphx3rK.js.map} +1 -1
- package/dist/lib/{shadow-claw-CypGVlVO.js → shadow-claw-CGl8tXtG.js} +6 -6
- package/dist/lib/{shadow-claw-CypGVlVO.js.map → shadow-claw-CGl8tXtG.js.map} +1 -1
- package/dist/lib/{shadow-claw-channel-config-DJpDovkF.js → shadow-claw-channel-config-BNIWCdsL.js} +4 -4
- package/dist/lib/{shadow-claw-channel-config-DJpDovkF.js.map → shadow-claw-channel-config-BNIWCdsL.js.map} +1 -1
- package/dist/lib/{shadow-claw-channels-DJLwRovH.js → shadow-claw-channels-C2QSn4Ew.js} +2 -2
- package/dist/lib/{shadow-claw-channels-DJLwRovH.js.map → shadow-claw-channels-C2QSn4Ew.js.map} +1 -1
- package/dist/lib/{shadow-claw-chat-B92cPaft.js → shadow-claw-chat-Wx3y9y6c.js} +3 -3
- package/dist/lib/{shadow-claw-chat-B92cPaft.js.map → shadow-claw-chat-Wx3y9y6c.js.map} +1 -1
- package/dist/lib/{shadow-claw-control-plane-fvn-qyHj.js → shadow-claw-control-plane-D5E4cFGu.js} +6 -6
- package/dist/lib/{shadow-claw-control-plane-fvn-qyHj.js.map → shadow-claw-control-plane-D5E4cFGu.js.map} +1 -1
- package/dist/lib/{shadow-claw-conversations-CsVyDOny.js → shadow-claw-conversations-BtDv7GRW.js} +2 -2
- package/dist/lib/{shadow-claw-conversations-CsVyDOny.js.map → shadow-claw-conversations-BtDv7GRW.js.map} +1 -1
- package/dist/lib/{shadow-claw-file-viewer-DFfyP7s5.js → shadow-claw-file-viewer-CG40kwWV.js} +2 -2
- package/dist/lib/{shadow-claw-file-viewer-DFfyP7s5.js.map → shadow-claw-file-viewer-CG40kwWV.js.map} +1 -1
- package/dist/lib/{shadow-claw-files-cT6HL7ye.js → shadow-claw-files-BOUULrlX.js} +3 -3
- package/dist/lib/{shadow-claw-files-cT6HL7ye.js.map → shadow-claw-files-BOUULrlX.js.map} +1 -1
- package/dist/lib/{shadow-claw-git-Cv9mQgTx.js → shadow-claw-git-BeHV73_9.js} +3 -3
- package/dist/lib/{shadow-claw-git-Cv9mQgTx.js.map → shadow-claw-git-BeHV73_9.js.map} +1 -1
- package/dist/lib/{shadow-claw-llm-CKOYzPDp.js → shadow-claw-llm-KONyWKZM.js} +2 -2
- package/dist/lib/{shadow-claw-llm-CKOYzPDp.js.map → shadow-claw-llm-KONyWKZM.js.map} +1 -1
- package/dist/lib/{shadow-claw-networking-DYfiUQaH.js → shadow-claw-networking-Diy3JJkc.js} +2 -2
- package/dist/lib/{shadow-claw-networking-DYfiUQaH.js.map → shadow-claw-networking-Diy3JJkc.js.map} +1 -1
- package/dist/lib/{shadow-claw-notifications-JJlzriuX.js → shadow-claw-notifications-C-upPa-4.js} +2 -2
- package/dist/lib/{shadow-claw-notifications-JJlzriuX.js.map → shadow-claw-notifications-C-upPa-4.js.map} +1 -1
- package/dist/lib/{shadow-claw-pages-BCo3ihZI.js → shadow-claw-pages-CfAjUKgd.js} +2 -2
- package/dist/lib/{shadow-claw-pages-BCo3ihZI.js.map → shadow-claw-pages-CfAjUKgd.js.map} +1 -1
- package/dist/lib/{shadow-claw-peerjs-CFNjfrY5.js → shadow-claw-peerjs-t4YibS9s.js} +5 -5
- package/dist/lib/{shadow-claw-peerjs-CFNjfrY5.js.map → shadow-claw-peerjs-t4YibS9s.js.map} +1 -1
- package/dist/lib/{shadow-claw-settings-BMwne0bh.js → shadow-claw-settings-Cg5V0e9g.js} +2 -2
- package/dist/lib/{shadow-claw-settings-BMwne0bh.js.map → shadow-claw-settings-Cg5V0e9g.js.map} +1 -1
- package/dist/lib/{shadow-claw-storage-DUY8B9m-.js → shadow-claw-storage-C7tCnsSG.js} +2 -2
- package/dist/lib/{shadow-claw-storage-DUY8B9m-.js.map → shadow-claw-storage-C7tCnsSG.js.map} +1 -1
- package/dist/lib/{shadow-claw-task-server-yWeoA3eL.js → shadow-claw-task-server-BObsRdf8.js} +2 -2
- package/dist/lib/{shadow-claw-task-server-yWeoA3eL.js.map → shadow-claw-task-server-BObsRdf8.js.map} +1 -1
- package/dist/lib/{shadow-claw-tasks-Bg0uM15I.js → shadow-claw-tasks-B2EEqrcY.js} +3 -3
- package/dist/lib/{shadow-claw-tasks-Bg0uM15I.js.map → shadow-claw-tasks-B2EEqrcY.js.map} +1 -1
- package/dist/lib/{shadow-claw-terminal-fyJPppY_.js → shadow-claw-terminal-DSHfO2b9.js} +2 -2
- package/dist/lib/{shadow-claw-terminal-fyJPppY_.js.map → shadow-claw-terminal-DSHfO2b9.js.map} +1 -1
- package/dist/lib/{shadow-claw-tools-D0T8m3go.js → shadow-claw-tools-DwPBADua.js} +3 -3
- package/dist/lib/{shadow-claw-tools-D0T8m3go.js.map → shadow-claw-tools-DwPBADua.js.map} +1 -1
- package/dist/lib/{shadow-claw-webvm-CQvzJwKI.js → shadow-claw-webvm-CY4qGaMB.js} +2 -2
- package/dist/lib/{shadow-claw-webvm-CQvzJwKI.js.map → shadow-claw-webvm-CY4qGaMB.js.map} +1 -1
- package/dist/lib/{sync-web-mcp-registration-BFtG_4kx.js → sync-web-mcp-registration-BiOZvW-R.js} +3 -3
- package/dist/lib/{sync-web-mcp-registration-BFtG_4kx.js.map → sync-web-mcp-registration-BiOZvW-R.js.map} +1 -1
- package/dist/lib/{system-prompt-bhGRLoL2.js → system-prompt-CxJ3Nx4c.js} +4 -3
- package/dist/lib/system-prompt-CxJ3Nx4c.js.map +1 -0
- package/dist/public/.well-known/mcp/server-card.json +4 -12
- package/dist/public/.well-known/mcp.json +4 -12
- package/dist/public/AGENTS.md +3 -1
- package/dist/public/README.md +6 -2
- package/dist/public/agent.worker.js +1 -1
- package/dist/public/{channel-Dk7wl-Av.js → channel-DIpDQekL.js} +1 -1
- package/dist/public/{chat-template-BwAnTFKf.js → chat-template-CXKs8lFR.js} +1 -1
- package/dist/public/compact-context-BQ2ZXoAc.js +5 -0
- package/dist/public/{compact-context-fOTqwKF6.js → compact-context-dHitmPsV.js} +2 -2
- package/dist/public/{configure-peer-js-BOV0tR6G.js → configure-peer-js-DV1rqvFX.js} +1 -1
- package/dist/public/{create-model-cache-fetch-DSAFjOwc.js → create-model-cache-fetch-B0mSCEk6.js} +1 -1
- package/dist/public/{discover-skills-D1sNTy2r.js → discover-skills-BWJB8HUA.js} +1 -1
- package/dist/public/docs/architecture/overview.md +1 -1
- package/dist/public/docs/example/article/index.html +21 -21
- package/dist/public/docs/example/article.html +21 -21
- package/dist/public/docs/publishing/index.html +21 -21
- package/dist/public/docs/publishing.html +21 -21
- package/dist/public/docs/skill-creator/index.html +21 -21
- package/dist/public/docs/skill-creator.html +21 -21
- package/dist/public/docs/subsystems/attachment-capabilities.md +14 -1
- package/dist/public/docs/subsystems/cli.md +95 -51
- package/dist/public/docs/subsystems/pages.md +5 -0
- package/dist/public/e2e/README.md +1 -1
- package/dist/public/{e2e-bridge-Cz95DLlb.js → e2e-bridge-lP2qqiv3.js} +1 -1
- package/dist/public/{git-BmMlwIMP.js → git-DjmQ16rm.js} +1 -1
- package/dist/public/{iframe-bridge-scripts-Cibg0m6A.js → iframe-bridge-scripts-CO0izGjW.js} +1 -1
- package/dist/public/index.html +21 -21
- package/dist/public/index.js +1 -1
- package/dist/public/{init-control-plane-Cb31yLTY.js → init-control-plane-Ctz7FI8M.js} +1 -1
- package/dist/public/{invoke-agent-CN7mSV0Z.js → invoke-agent-C_geruwq.js} +1 -1
- package/dist/public/llms.txt +1 -1
- package/dist/public/main/index.html +21 -21
- package/dist/public/main/memory/index.html +21 -21
- package/dist/public/main/memory.html +21 -21
- package/dist/public/main.html +21 -21
- package/dist/public/{move-group-entry-CXneuNVa.js → move-group-entry-QQ9Hkk54.js} +1 -1
- package/dist/public/{orchestrator-Dyylc8IU.js → orchestrator-C1kaTltu.js} +2 -2
- package/dist/public/{orchestrator-DBO4NZqd.js → orchestrator-Li1UAsv7.js} +1 -1
- package/dist/public/{peerjs-l0jiBoh6.js → peerjs-DbBryE-9.js} +1 -1
- package/dist/public/{process-peer-query-param-s-aSP1Rq.js → process-peer-query-param-DQIgr3KL.js} +1 -1
- package/dist/public/{process-pending-shared-payloads-BN3GigPT.js → process-pending-shared-payloads-Ctb-TFqB.js} +1 -1
- package/dist/public/{process-room-query-param-B2Qe0F0M.js → process-room-query-param-F-XnIVoZ.js} +1 -1
- package/dist/public/{push-client-B2LC8Qp9.js → push-client-DRx9Eggz.js} +1 -1
- package/dist/public/{rooms-ChCEOvkw.js → rooms-BurBI7is.js} +1 -1
- package/dist/public/service-worker/init.js +1 -1
- package/dist/public/service-worker.js +1 -1
- package/dist/public/{shadow-claw-Br8mWDUx.js → shadow-claw-Bg9AQ5x_.js} +2 -2
- package/dist/public/{shadow-claw-accounts-Dm6G7KMP.js → shadow-claw-accounts-B3mjYI0M.js} +1 -1
- package/dist/public/{shadow-claw-card-CggS8uSa.js → shadow-claw-card-tcXRS1GF.js} +1 -1
- package/dist/public/{shadow-claw-channels-088vhuWO.js → shadow-claw-channels-BiSfLvWv.js} +1 -1
- package/dist/public/{shadow-claw-chat-BRwRlq-n.js → shadow-claw-chat-N5jMsXZZ.js} +1 -1
- package/dist/public/{shadow-claw-control-plane-rhKACK85.js → shadow-claw-control-plane-DFVe_Xdq.js} +2 -2
- package/dist/public/{shadow-claw-conversations-CF_yUfKl.js → shadow-claw-conversations-wAR06_ya.js} +1 -1
- package/dist/public/{shadow-claw-empty-state-CkpOSXCS.js → shadow-claw-empty-state-CnPm3NVM.js} +1 -1
- package/dist/public/{shadow-claw-file-viewer-DWCejuY3.js → shadow-claw-file-viewer-sZN_FCDW.js} +2 -2
- package/dist/public/{shadow-claw-files-L6_ioyzh.js → shadow-claw-files-CnvkCbd4.js} +2 -2
- package/dist/public/{shadow-claw-git-DsdkwLqQ.js → shadow-claw-git-BBHfClGk.js} +2 -2
- package/dist/public/{shadow-claw-integrations-CSbRTOm3.js → shadow-claw-integrations-DvdBqzRJ.js} +1 -1
- package/dist/public/{shadow-claw-llm-BitaeAVc.js → shadow-claw-llm-YfohG519.js} +1 -1
- package/dist/public/{shadow-claw-mcp-remote-gSbV5riy.js → shadow-claw-mcp-remote-BAVbf5pi.js} +1 -1
- package/dist/public/{shadow-claw-networking-Dn_y6Cl9.js → shadow-claw-networking-CZ4LWPW7.js} +1 -1
- package/dist/public/{shadow-claw-notifications-Cj4Lqx8U.js → shadow-claw-notifications-BHwyREkG.js} +1 -1
- package/dist/public/{shadow-claw-page-header-DR4OZFt2.js → shadow-claw-page-header-De6Qf6eY.js} +1 -1
- package/dist/public/{shadow-claw-page-header-action-button-BnCV_2Kb.js → shadow-claw-page-header-action-button-FSOhTc9z.js} +1 -1
- package/dist/public/{shadow-claw-pages-mpDOtNYj.js → shadow-claw-pages-D_oPyDca.js} +1 -1
- package/dist/public/{shadow-claw-pdf-viewer-DZ_84qJH.js → shadow-claw-pdf-viewer-CrU4wqRq.js} +1 -1
- package/dist/public/{shadow-claw-settings-CfFTYTEy.js → shadow-claw-settings-DkUhvxVr.js} +2 -2
- package/dist/public/{shadow-claw-storage-DLmiT4bG.js → shadow-claw-storage-D0o56Tjw.js} +1 -1
- package/dist/public/{shadow-claw-task-server-BoMBCsiS.js → shadow-claw-task-server-4rkroO9K.js} +1 -1
- package/dist/public/{shadow-claw-tasks-ChEp1j7x.js → shadow-claw-tasks-BdP7lmvu.js} +1 -1
- package/dist/public/{shadow-claw-terminal-BaoVbOda.js → shadow-claw-terminal-DVHX7Fsu.js} +1 -1
- package/dist/public/{shadow-claw-toast-e8oz7z6Z.js → shadow-claw-toast-B9Y9tSkW.js} +1 -1
- package/dist/public/{shadow-claw-tools-BYjUBiJz.js → shadow-claw-tools-BwwY53Lr.js} +1 -1
- package/dist/public/{shadow-claw-webvm-xGb13TME.js → shadow-claw-webvm-CXGdkCNM.js} +1 -1
- package/dist/public/{sync-web-mcp-registration-CQluj-Kz.js → sync-web-mcp-registration-DVK_IhXZ.js} +1 -1
- package/dist/public/{system-prompt-CTJn0tK-.js → system-prompt-BmswoQwF.js} +2 -2
- package/dist/public/{workbox-92eae37e.js → workbox-e4022e15.js} +1 -1
- package/dist/public/{zip-reader-DN7FB-Q0.js → zip-reader-JHoTbATw.js} +1 -1
- package/dist/server.js +5 -5
- package/package.json +1 -1
- package/dist/cli/chunk-2gZFafgY.js +0 -1
- package/dist/cli/chunk-BCjL0JXf.js +0 -1
- package/dist/cli/chunk-BNcu1oiT.js +0 -1
- package/dist/cli/chunk-BUNoeMKY.js +0 -36
- package/dist/cli/chunk-C5ypckWC.js +0 -225
- package/dist/cli/chunk-CFxww5Yz.js +0 -1
- package/dist/cli/chunk-CGIgtL6R.js +0 -1
- package/dist/cli/chunk-CafdvLx-.js +0 -1
- package/dist/cli/chunk-Dhap1VwA.js +0 -1
- package/dist/cli/chunk-Ds5-K-9o.js +0 -1
- package/dist/cli/chunk-DwvavohW.js +0 -1
- package/dist/cli/chunk-_a0CkUNS.js +0 -139
- package/dist/lib/system-prompt-bhGRLoL2.js.map +0 -1
- package/dist/public/compact-context-CX4H8V57.js +0 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c as isStaleHandleError, i as getOpfsRootDirName, n as getGroupDir, o as getStorageStatus, s as invalidateStorageRoot, t as parsePath } from "./parse-path-BOHQP_IQ.js";
|
|
2
2
|
import { o as DEFAULT_GROUP_ID } from "./config-BrHR97zt.js";
|
|
3
3
|
import { c as writeFileHandle, l as writeOpfsPathViaWorker } from "./tools-B8OJ4sMF.js";
|
|
4
|
-
import { d as setMainGroupMemorySuppressed, o as suppressPage, p as setMainGroupIndexSuppressed, t as orchestratorStore } from "./orchestrator-
|
|
4
|
+
import { d as setMainGroupMemorySuppressed, o as suppressPage, p as setMainGroupIndexSuppressed, t as orchestratorStore } from "./orchestrator-cRBe3lhq.js";
|
|
5
5
|
|
|
6
6
|
//#region src/storage/copy-group-entry.ts
|
|
7
7
|
/**
|
|
@@ -166,4 +166,4 @@ async function moveGroupEntry(db, sourceGroupId, targetGroupId, sourcePath, targ
|
|
|
166
166
|
|
|
167
167
|
//#endregion
|
|
168
168
|
export { copyGroupEntry as i, deleteGroupFile as n, createGroupDirectory as r, moveGroupEntry as t };
|
|
169
|
-
//# sourceMappingURL=move-group-entry-
|
|
169
|
+
//# sourceMappingURL=move-group-entry-D8dptMg0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-group-entry-DDpjxa10.js","names":[],"sources":["../../src/storage/copy-group-entry.ts","../../src/storage/create-group-directory.ts","../../src/storage/delete-group-file.ts","../../src/storage/move-group-entry.ts"],"sourcesContent":["import { getGroupDir } from \"./get-group-dir.js\";\nimport { parsePath } from \"./parse-path.js\";\nimport {\n getOpfsRootDirName,\n getStorageStatus,\n invalidateStorageRoot,\n isStaleHandleError,\n} from \"./storage.js\";\nimport {\n writeFileHandle,\n writeOpfsPathViaWorker,\n} from \"./write-file-handle.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Copy a file or directory in a group's workspace to a new path.\n */\nexport async function copyGroupEntry(\n db: ShadowClawDatabase,\n sourceGroupId: string,\n targetGroupId: string,\n sourcePath: string,\n targetPath: string,\n): Promise<void> {\n const normSource = sourcePath.replace(/\\/$/, \"\");\n const normTarget = targetPath.replace(/\\/$/, \"\");\n\n if (sourceGroupId === targetGroupId && normSource === normTarget) {\n throw new Error(\"Source and target paths are identical\");\n }\n\n const { dirs: srcDirs, filename: srcName } = parsePath(normSource);\n const { dirs: tgtDirs, filename: tgtName } = parsePath(normTarget);\n\n if (!srcName || !tgtName) {\n throw new Error(\"Invalid path\");\n }\n\n for (let attempt = 0; attempt < 2; attempt++) {\n try {\n const srcGroupDir = await getGroupDir(db, sourceGroupId);\n const tgtGroupDir = await getGroupDir(db, targetGroupId);\n\n // Resolve source parent\n let srcParent = srcGroupDir;\n for (const seg of srcDirs) {\n srcParent = await srcParent.getDirectoryHandle(seg);\n }\n\n // Resolve target parent\n let tgtParent = tgtGroupDir;\n for (const seg of tgtDirs) {\n tgtParent = await tgtParent.getDirectoryHandle(seg, { create: true });\n }\n\n // Assert target does not exist\n if (\n (await tryGetFileHandle(tgtParent, tgtName)) ||\n (await tryGetDirectoryHandle(tgtParent, tgtName))\n ) {\n throw new Error(`Target already exists: ${tgtName}`);\n }\n\n // Check if source is a directory\n const sourceDir = await tryGetDirectoryHandle(srcParent, srcName);\n if (sourceDir) {\n const targetDir = await tgtParent.getDirectoryHandle(tgtName, {\n create: true,\n });\n\n const safeId = targetGroupId.replace(/:/g, \"-\");\n const currentPathSegments = [\n getOpfsRootDirName(),\n \"groups\",\n safeId,\n ...tgtDirs,\n tgtName,\n ];\n\n try {\n await copyDirectoryContents(\n db,\n targetGroupId,\n sourceDir,\n targetDir,\n currentPathSegments,\n );\n } catch (copyErr) {\n await tgtParent\n .removeEntry(tgtName, { recursive: true })\n .catch(() => undefined);\n throw copyErr;\n }\n\n return;\n }\n\n // Check if source is a file\n const sourceFile = await tryGetFileHandle(srcParent, srcName);\n if (sourceFile) {\n const file = await sourceFile.getFile();\n const targetFile = await tgtParent.getFileHandle(tgtName, {\n create: true,\n });\n\n try {\n await writeFileHandle(targetFile, file);\n } catch (writeErr) {\n const message =\n writeErr instanceof Error ? writeErr.message : String(writeErr);\n const needsOpfsWorkerFallback =\n message.includes(\"Writable file streams are not supported\") &&\n (await getStorageStatus(db)).type === \"opfs\";\n\n if (!needsOpfsWorkerFallback) {\n await tgtParent.removeEntry(tgtName).catch(() => undefined);\n\n throw writeErr;\n }\n\n const safeId = targetGroupId.replace(/:/g, \"-\");\n await writeOpfsPathViaWorker(\n [getOpfsRootDirName(), \"groups\", safeId, ...tgtDirs, tgtName],\n file,\n );\n }\n\n return;\n }\n\n throw new Error(`Entry not found: ${sourcePath}`);\n } catch (err) {\n if (attempt === 0 && isStaleHandleError(err)) {\n invalidateStorageRoot();\n\n continue;\n }\n\n throw err;\n }\n }\n}\n\nasync function tryGetDirectoryHandle(\n parentDir: FileSystemDirectoryHandle,\n name: string,\n): Promise<FileSystemDirectoryHandle | null> {\n try {\n return await parentDir.getDirectoryHandle(name);\n } catch {\n return null;\n }\n}\n\nasync function tryGetFileHandle(\n parentDir: FileSystemDirectoryHandle,\n name: string,\n): Promise<FileSystemFileHandle | null> {\n try {\n return await parentDir.getFileHandle(name);\n } catch {\n return null;\n }\n}\n\nasync function copyDirectoryContents(\n db: ShadowClawDatabase,\n targetGroupId: string,\n sourceDir: FileSystemDirectoryHandle,\n targetDir: FileSystemDirectoryHandle,\n currentPathSegments: string[],\n): Promise<void> {\n for await (const [name, handle] of (sourceDir as any).entries()) {\n if (handle.kind === \"directory\") {\n const nextTargetDir = await targetDir.getDirectoryHandle(name, {\n create: true,\n });\n await copyDirectoryContents(db, targetGroupId, handle, nextTargetDir, [\n ...currentPathSegments,\n name,\n ]);\n\n continue;\n }\n\n const file = await handle.getFile();\n const targetFileHandle = await targetDir.getFileHandle(name, {\n create: true,\n });\n\n try {\n await writeFileHandle(targetFileHandle, file);\n } catch (writeErr) {\n const message =\n writeErr instanceof Error ? writeErr.message : String(writeErr);\n const needsOpfsWorkerFallback =\n message.includes(\"Writable file streams are not supported\") &&\n (await getStorageStatus(db)).type === \"opfs\";\n\n if (!needsOpfsWorkerFallback) {\n throw writeErr;\n }\n\n await writeOpfsPathViaWorker([...currentPathSegments, name], file);\n }\n }\n}\n","import { getGroupDir } from \"./get-group-dir.js\";\nimport { invalidateStorageRoot, isStaleHandleError } from \"./storage.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Create a directory (and any missing parent directories) in a group's workspace.\n */\nexport async function createGroupDirectory(\n db: ShadowClawDatabase,\n groupId: string,\n dirPath: string,\n): Promise<void> {\n const normalized = dirPath\n .replace(/\\\\/g, \"/\")\n .replace(/^\\/home\\/user\\//, \"/\")\n .replace(/^\\/+/, \"\")\n .replace(/\\/+$/, \"\");\n\n const parts = normalized.split(\"/\").filter(Boolean);\n if (parts.length === 0) {\n throw new Error(\"Empty directory path\");\n }\n\n for (let attempt = 0; attempt < 2; attempt++) {\n try {\n let dir = await getGroupDir(db, groupId);\n for (const segment of parts) {\n dir = await dir.getDirectoryHandle(segment, { create: true });\n }\n\n return;\n } catch (err) {\n if (attempt === 0 && isStaleHandleError(err)) {\n invalidateStorageRoot();\n\n continue;\n }\n\n throw err;\n }\n }\n}\n","import { getGroupDir } from \"./get-group-dir.js\";\nimport { parsePath } from \"./parse-path.js\";\nimport { setMainGroupMemorySuppressed } from \"./ensure-main-group-memory.js\";\nimport { setMainGroupIndexSuppressed } from \"./ensure-main-group-index.js\";\nimport { DEFAULT_GROUP_ID } from \"../config/config.js\";\nimport { orchestratorStore } from \"../stores/orchestrator.js\";\nimport { suppressPage } from \"./suppressed-pages.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Delete a file from a group's workspace.\n */\nexport async function deleteGroupFile(\n db: ShadowClawDatabase,\n groupId: string,\n filePath: string,\n): Promise<void> {\n const groupDir = await getGroupDir(db, groupId);\n const { dirs, filename } = parsePath(filePath);\n\n let dir = groupDir;\n for (const seg of dirs) {\n dir = await dir.getDirectoryHandle(seg);\n }\n\n await dir.removeEntry(filename);\n\n if (groupId === DEFAULT_GROUP_ID && dirs.length === 0) {\n if (filename === \"MEMORY.md\") {\n await setMainGroupMemorySuppressed(db, true);\n } else if (filename === \"index.html\") {\n await setMainGroupIndexSuppressed(db, true);\n }\n }\n\n try {\n await suppressPage(db, groupId, filePath);\n } catch {}\n\n try {\n await orchestratorStore.removePage(db, filePath, groupId);\n } catch {\n // Orchestrator store might not be instantiated in isolated storage unit test\n }\n}\n","import { copyGroupEntry } from \"./copy-group-entry.js\";\nimport { getGroupDir } from \"./get-group-dir.js\";\nimport { parsePath } from \"./parse-path.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Move (rename and/or relocate) a file or directory in a group's workspace.\n */\nexport async function moveGroupEntry(\n db: ShadowClawDatabase,\n sourceGroupId: string,\n targetGroupId: string,\n sourcePath: string,\n targetPath: string,\n): Promise<void> {\n const normSource = sourcePath.replace(/\\/$/, \"\");\n const normTarget = targetPath.replace(/\\/$/, \"\");\n\n if (sourceGroupId === targetGroupId && normSource === normTarget) {\n return; // No-op\n }\n\n // 1. Copy source to target\n await copyGroupEntry(\n db,\n sourceGroupId,\n targetGroupId,\n normSource,\n normTarget,\n );\n\n // 2. Remove source\n const { dirs, filename } = parsePath(normSource);\n if (!filename) {\n throw new Error(\"Invalid source path\");\n }\n\n const groupDir = await getGroupDir(db, sourceGroupId);\n let parentDir = groupDir;\n for (const seg of dirs) {\n parentDir = await parentDir.getDirectoryHandle(seg);\n }\n\n await parentDir.removeEntry(filename, { recursive: true });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"move-group-entry-D8dptMg0.js","names":[],"sources":["../../src/storage/copy-group-entry.ts","../../src/storage/create-group-directory.ts","../../src/storage/delete-group-file.ts","../../src/storage/move-group-entry.ts"],"sourcesContent":["import { getGroupDir } from \"./get-group-dir.js\";\nimport { parsePath } from \"./parse-path.js\";\nimport {\n getOpfsRootDirName,\n getStorageStatus,\n invalidateStorageRoot,\n isStaleHandleError,\n} from \"./storage.js\";\nimport {\n writeFileHandle,\n writeOpfsPathViaWorker,\n} from \"./write-file-handle.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Copy a file or directory in a group's workspace to a new path.\n */\nexport async function copyGroupEntry(\n db: ShadowClawDatabase,\n sourceGroupId: string,\n targetGroupId: string,\n sourcePath: string,\n targetPath: string,\n): Promise<void> {\n const normSource = sourcePath.replace(/\\/$/, \"\");\n const normTarget = targetPath.replace(/\\/$/, \"\");\n\n if (sourceGroupId === targetGroupId && normSource === normTarget) {\n throw new Error(\"Source and target paths are identical\");\n }\n\n const { dirs: srcDirs, filename: srcName } = parsePath(normSource);\n const { dirs: tgtDirs, filename: tgtName } = parsePath(normTarget);\n\n if (!srcName || !tgtName) {\n throw new Error(\"Invalid path\");\n }\n\n for (let attempt = 0; attempt < 2; attempt++) {\n try {\n const srcGroupDir = await getGroupDir(db, sourceGroupId);\n const tgtGroupDir = await getGroupDir(db, targetGroupId);\n\n // Resolve source parent\n let srcParent = srcGroupDir;\n for (const seg of srcDirs) {\n srcParent = await srcParent.getDirectoryHandle(seg);\n }\n\n // Resolve target parent\n let tgtParent = tgtGroupDir;\n for (const seg of tgtDirs) {\n tgtParent = await tgtParent.getDirectoryHandle(seg, { create: true });\n }\n\n // Assert target does not exist\n if (\n (await tryGetFileHandle(tgtParent, tgtName)) ||\n (await tryGetDirectoryHandle(tgtParent, tgtName))\n ) {\n throw new Error(`Target already exists: ${tgtName}`);\n }\n\n // Check if source is a directory\n const sourceDir = await tryGetDirectoryHandle(srcParent, srcName);\n if (sourceDir) {\n const targetDir = await tgtParent.getDirectoryHandle(tgtName, {\n create: true,\n });\n\n const safeId = targetGroupId.replace(/:/g, \"-\");\n const currentPathSegments = [\n getOpfsRootDirName(),\n \"groups\",\n safeId,\n ...tgtDirs,\n tgtName,\n ];\n\n try {\n await copyDirectoryContents(\n db,\n targetGroupId,\n sourceDir,\n targetDir,\n currentPathSegments,\n );\n } catch (copyErr) {\n await tgtParent\n .removeEntry(tgtName, { recursive: true })\n .catch(() => undefined);\n throw copyErr;\n }\n\n return;\n }\n\n // Check if source is a file\n const sourceFile = await tryGetFileHandle(srcParent, srcName);\n if (sourceFile) {\n const file = await sourceFile.getFile();\n const targetFile = await tgtParent.getFileHandle(tgtName, {\n create: true,\n });\n\n try {\n await writeFileHandle(targetFile, file);\n } catch (writeErr) {\n const message =\n writeErr instanceof Error ? writeErr.message : String(writeErr);\n const needsOpfsWorkerFallback =\n message.includes(\"Writable file streams are not supported\") &&\n (await getStorageStatus(db)).type === \"opfs\";\n\n if (!needsOpfsWorkerFallback) {\n await tgtParent.removeEntry(tgtName).catch(() => undefined);\n\n throw writeErr;\n }\n\n const safeId = targetGroupId.replace(/:/g, \"-\");\n await writeOpfsPathViaWorker(\n [getOpfsRootDirName(), \"groups\", safeId, ...tgtDirs, tgtName],\n file,\n );\n }\n\n return;\n }\n\n throw new Error(`Entry not found: ${sourcePath}`);\n } catch (err) {\n if (attempt === 0 && isStaleHandleError(err)) {\n invalidateStorageRoot();\n\n continue;\n }\n\n throw err;\n }\n }\n}\n\nasync function tryGetDirectoryHandle(\n parentDir: FileSystemDirectoryHandle,\n name: string,\n): Promise<FileSystemDirectoryHandle | null> {\n try {\n return await parentDir.getDirectoryHandle(name);\n } catch {\n return null;\n }\n}\n\nasync function tryGetFileHandle(\n parentDir: FileSystemDirectoryHandle,\n name: string,\n): Promise<FileSystemFileHandle | null> {\n try {\n return await parentDir.getFileHandle(name);\n } catch {\n return null;\n }\n}\n\nasync function copyDirectoryContents(\n db: ShadowClawDatabase,\n targetGroupId: string,\n sourceDir: FileSystemDirectoryHandle,\n targetDir: FileSystemDirectoryHandle,\n currentPathSegments: string[],\n): Promise<void> {\n for await (const [name, handle] of (sourceDir as any).entries()) {\n if (handle.kind === \"directory\") {\n const nextTargetDir = await targetDir.getDirectoryHandle(name, {\n create: true,\n });\n await copyDirectoryContents(db, targetGroupId, handle, nextTargetDir, [\n ...currentPathSegments,\n name,\n ]);\n\n continue;\n }\n\n const file = await handle.getFile();\n const targetFileHandle = await targetDir.getFileHandle(name, {\n create: true,\n });\n\n try {\n await writeFileHandle(targetFileHandle, file);\n } catch (writeErr) {\n const message =\n writeErr instanceof Error ? writeErr.message : String(writeErr);\n const needsOpfsWorkerFallback =\n message.includes(\"Writable file streams are not supported\") &&\n (await getStorageStatus(db)).type === \"opfs\";\n\n if (!needsOpfsWorkerFallback) {\n throw writeErr;\n }\n\n await writeOpfsPathViaWorker([...currentPathSegments, name], file);\n }\n }\n}\n","import { getGroupDir } from \"./get-group-dir.js\";\nimport { invalidateStorageRoot, isStaleHandleError } from \"./storage.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Create a directory (and any missing parent directories) in a group's workspace.\n */\nexport async function createGroupDirectory(\n db: ShadowClawDatabase,\n groupId: string,\n dirPath: string,\n): Promise<void> {\n const normalized = dirPath\n .replace(/\\\\/g, \"/\")\n .replace(/^\\/home\\/user\\//, \"/\")\n .replace(/^\\/+/, \"\")\n .replace(/\\/+$/, \"\");\n\n const parts = normalized.split(\"/\").filter(Boolean);\n if (parts.length === 0) {\n throw new Error(\"Empty directory path\");\n }\n\n for (let attempt = 0; attempt < 2; attempt++) {\n try {\n let dir = await getGroupDir(db, groupId);\n for (const segment of parts) {\n dir = await dir.getDirectoryHandle(segment, { create: true });\n }\n\n return;\n } catch (err) {\n if (attempt === 0 && isStaleHandleError(err)) {\n invalidateStorageRoot();\n\n continue;\n }\n\n throw err;\n }\n }\n}\n","import { getGroupDir } from \"./get-group-dir.js\";\nimport { parsePath } from \"./parse-path.js\";\nimport { setMainGroupMemorySuppressed } from \"./ensure-main-group-memory.js\";\nimport { setMainGroupIndexSuppressed } from \"./ensure-main-group-index.js\";\nimport { DEFAULT_GROUP_ID } from \"../config/config.js\";\nimport { orchestratorStore } from \"../stores/orchestrator.js\";\nimport { suppressPage } from \"./suppressed-pages.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Delete a file from a group's workspace.\n */\nexport async function deleteGroupFile(\n db: ShadowClawDatabase,\n groupId: string,\n filePath: string,\n): Promise<void> {\n const groupDir = await getGroupDir(db, groupId);\n const { dirs, filename } = parsePath(filePath);\n\n let dir = groupDir;\n for (const seg of dirs) {\n dir = await dir.getDirectoryHandle(seg);\n }\n\n await dir.removeEntry(filename);\n\n if (groupId === DEFAULT_GROUP_ID && dirs.length === 0) {\n if (filename === \"MEMORY.md\") {\n await setMainGroupMemorySuppressed(db, true);\n } else if (filename === \"index.html\") {\n await setMainGroupIndexSuppressed(db, true);\n }\n }\n\n try {\n await suppressPage(db, groupId, filePath);\n } catch {}\n\n try {\n await orchestratorStore.removePage(db, filePath, groupId);\n } catch {\n // Orchestrator store might not be instantiated in isolated storage unit test\n }\n}\n","import { copyGroupEntry } from \"./copy-group-entry.js\";\nimport { getGroupDir } from \"./get-group-dir.js\";\nimport { parsePath } from \"./parse-path.js\";\nimport type { ShadowClawDatabase } from \"../db/types.js\";\n\n/**\n * Move (rename and/or relocate) a file or directory in a group's workspace.\n */\nexport async function moveGroupEntry(\n db: ShadowClawDatabase,\n sourceGroupId: string,\n targetGroupId: string,\n sourcePath: string,\n targetPath: string,\n): Promise<void> {\n const normSource = sourcePath.replace(/\\/$/, \"\");\n const normTarget = targetPath.replace(/\\/$/, \"\");\n\n if (sourceGroupId === targetGroupId && normSource === normTarget) {\n return; // No-op\n }\n\n // 1. Copy source to target\n await copyGroupEntry(\n db,\n sourceGroupId,\n targetGroupId,\n normSource,\n normTarget,\n );\n\n // 2. Remove source\n const { dirs, filename } = parsePath(normSource);\n if (!filename) {\n throw new Error(\"Invalid source path\");\n }\n\n const groupDir = await getGroupDir(db, sourceGroupId);\n let parentDir = groupDir;\n for (const seg of dirs) {\n parentDir = await parentDir.getDirectoryHandle(seg);\n }\n\n await parentDir.removeEntry(filename, { recursive: true });\n}\n"],"mappings":";;;;;;;;;AAiBA,eAAsB,eACpB,IACA,eACA,eACA,YACA,YACe;CACf,MAAM,aAAa,WAAW,QAAQ,OAAO,EAAE;CAC/C,MAAM,aAAa,WAAW,QAAQ,OAAO,EAAE;CAE/C,IAAI,kBAAkB,iBAAiB,eAAe,YACpD,MAAM,IAAI,MAAM,uCAAuC;CAGzD,MAAM,EAAE,MAAM,SAAS,UAAU,YAAY,UAAU,UAAU;CACjE,MAAM,EAAE,MAAM,SAAS,UAAU,YAAY,UAAU,UAAU;CAEjE,IAAI,CAAC,WAAW,CAAC,SACf,MAAM,IAAI,MAAM,cAAc;CAGhC,KAAK,IAAI,UAAU,GAAG,UAAU,GAAG,WACjC,IAAI;EACF,MAAM,cAAc,MAAM,YAAY,IAAI,aAAa;EACvD,MAAM,cAAc,MAAM,YAAY,IAAI,aAAa;EAGvD,IAAI,YAAY;EAChB,KAAK,MAAM,OAAO,SAChB,YAAY,MAAM,UAAU,mBAAmB,GAAG;EAIpD,IAAI,YAAY;EAChB,KAAK,MAAM,OAAO,SAChB,YAAY,MAAM,UAAU,mBAAmB,KAAK,EAAE,QAAQ,KAAK,CAAC;EAItE,IACG,MAAM,iBAAiB,WAAW,OAAO,KACzC,MAAM,sBAAsB,WAAW,OAAO,GAE/C,MAAM,IAAI,MAAM,0BAA0B,SAAS;EAIrD,MAAM,YAAY,MAAM,sBAAsB,WAAW,OAAO;EAChE,IAAI,WAAW;GACb,MAAM,YAAY,MAAM,UAAU,mBAAmB,SAAS,EAC5D,QAAQ,KACV,CAAC;GAED,MAAM,SAAS,cAAc,QAAQ,MAAM,GAAG;GAC9C,MAAM,sBAAsB;IAC1B,mBAAmB;IACnB;IACA;IACA,GAAG;IACH;GACF;GAEA,IAAI;IACF,MAAM,sBACJ,IACA,eACA,WACA,WACA,mBACF;GACF,SAAS,SAAS;IAChB,MAAM,UACH,YAAY,SAAS,EAAE,WAAW,KAAK,CAAC,CAAC,CACzC,YAAY,MAAS;IACxB,MAAM;GACR;GAEA;EACF;EAGA,MAAM,aAAa,MAAM,iBAAiB,WAAW,OAAO;EAC5D,IAAI,YAAY;GACd,MAAM,OAAO,MAAM,WAAW,QAAQ;GACtC,MAAM,aAAa,MAAM,UAAU,cAAc,SAAS,EACxD,QAAQ,KACV,CAAC;GAED,IAAI;IACF,MAAM,gBAAgB,YAAY,IAAI;GACxC,SAAS,UAAU;IAOjB,IAAI,GALF,oBAAoB,QAAQ,SAAS,UAAU,OAAO,QAAQ,EAEvD,CAAC,SAAS,yCAAyC,MACzD,MAAM,iBAAiB,EAAE,EAAC,CAAE,SAAS,SAEV;KAC5B,MAAM,UAAU,YAAY,OAAO,CAAC,CAAC,YAAY,MAAS;KAE1D,MAAM;IACR;IAEA,MAAM,SAAS,cAAc,QAAQ,MAAM,GAAG;IAC9C,MAAM,uBACJ;KAAC,mBAAmB;KAAG;KAAU;KAAQ,GAAG;KAAS;IAAO,GAC5D,IACF;GACF;GAEA;EACF;EAEA,MAAM,IAAI,MAAM,oBAAoB,YAAY;CAClD,SAAS,KAAK;EACZ,IAAI,YAAY,KAAK,mBAAmB,GAAG,GAAG;GAC5C,sBAAsB;GAEtB;EACF;EAEA,MAAM;CACR;AAEJ;AAEA,eAAe,sBACb,WACA,MAC2C;CAC3C,IAAI;EACF,OAAO,MAAM,UAAU,mBAAmB,IAAI;CAChD,QAAQ;EACN,OAAO;CACT;AACF;AAEA,eAAe,iBACb,WACA,MACsC;CACtC,IAAI;EACF,OAAO,MAAM,UAAU,cAAc,IAAI;CAC3C,QAAQ;EACN,OAAO;CACT;AACF;AAEA,eAAe,sBACb,IACA,eACA,WACA,WACA,qBACe;CACf,WAAW,MAAM,CAAC,MAAM,WAAY,UAAkB,QAAQ,GAAG;EAC/D,IAAI,OAAO,SAAS,aAAa;GAI/B,MAAM,sBAAsB,IAAI,eAAe,QAAQ,MAH3B,UAAU,mBAAmB,MAAM,EAC7D,QAAQ,KACV,CAAC,GACqE,CACpE,GAAG,qBACH,IACF,CAAC;GAED;EACF;EAEA,MAAM,OAAO,MAAM,OAAO,QAAQ;EAClC,MAAM,mBAAmB,MAAM,UAAU,cAAc,MAAM,EAC3D,QAAQ,KACV,CAAC;EAED,IAAI;GACF,MAAM,gBAAgB,kBAAkB,IAAI;EAC9C,SAAS,UAAU;GAOjB,IAAI,GALF,oBAAoB,QAAQ,SAAS,UAAU,OAAO,QAAQ,EAEvD,CAAC,SAAS,yCAAyC,MACzD,MAAM,iBAAiB,EAAE,EAAC,CAAE,SAAS,SAGtC,MAAM;GAGR,MAAM,uBAAuB,CAAC,GAAG,qBAAqB,IAAI,GAAG,IAAI;EACnE;CACF;AACF;;;;;;;ACvMA,eAAsB,qBACpB,IACA,SACA,SACe;CAOf,MAAM,QANa,QAChB,QAAQ,OAAO,GAAG,CAAC,CACnB,QAAQ,mBAAmB,GAAG,CAAC,CAC/B,QAAQ,QAAQ,EAAE,CAAC,CACnB,QAAQ,QAAQ,EAEI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO;CAClD,IAAI,MAAM,WAAW,GACnB,MAAM,IAAI,MAAM,sBAAsB;CAGxC,KAAK,IAAI,UAAU,GAAG,UAAU,GAAG,WACjC,IAAI;EACF,IAAI,MAAM,MAAM,YAAY,IAAI,OAAO;EACvC,KAAK,MAAM,WAAW,OACpB,MAAM,MAAM,IAAI,mBAAmB,SAAS,EAAE,QAAQ,KAAK,CAAC;EAG9D;CACF,SAAS,KAAK;EACZ,IAAI,YAAY,KAAK,mBAAmB,GAAG,GAAG;GAC5C,sBAAsB;GAEtB;EACF;EAEA,MAAM;CACR;AAEJ;;;;;;;AC7BA,eAAsB,gBACpB,IACA,SACA,UACe;CACf,MAAM,WAAW,MAAM,YAAY,IAAI,OAAO;CAC9C,MAAM,EAAE,MAAM,aAAa,UAAU,QAAQ;CAE7C,IAAI,MAAM;CACV,KAAK,MAAM,OAAO,MAChB,MAAM,MAAM,IAAI,mBAAmB,GAAG;CAGxC,MAAM,IAAI,YAAY,QAAQ;CAE9B,IAAI,yBAAgC,KAAK,WAAW,GAAG;EACrD,IAAI,aAAa,aACf,MAAM,6BAA6B,IAAI,IAAI;OACtC,IAAI,aAAa,cACtB,MAAM,4BAA4B,IAAI,IAAI;CAE9C;CAEA,IAAI;EACF,MAAM,aAAa,IAAI,SAAS,QAAQ;CAC1C,QAAQ,CAAC;CAET,IAAI;EACF,MAAM,kBAAkB,WAAW,IAAI,UAAU,OAAO;CAC1D,QAAQ,CAER;AACF;;;;;;;ACpCA,eAAsB,eACpB,IACA,eACA,eACA,YACA,YACe;CACf,MAAM,aAAa,WAAW,QAAQ,OAAO,EAAE;CAC/C,MAAM,aAAa,WAAW,QAAQ,OAAO,EAAE;CAE/C,IAAI,kBAAkB,iBAAiB,eAAe,YACpD;CAIF,MAAM,eACJ,IACA,eACA,eACA,YACA,UACF;CAGA,MAAM,EAAE,MAAM,aAAa,UAAU,UAAU;CAC/C,IAAI,CAAC,UACH,MAAM,IAAI,MAAM,qBAAqB;CAIvC,IAAI,YAAY,MADO,YAAY,IAAI,aAAa;CAEpD,KAAK,MAAM,OAAO,MAChB,YAAY,MAAM,UAAU,mBAAmB,GAAG;CAGpD,MAAM,UAAU,YAAY,UAAU,EAAE,WAAW,KAAK,CAAC;AAC3D"}
|
|
@@ -7,7 +7,7 @@ import { c as writeFileHandle, d as readGroupFile, l as writeOpfsPathViaWorker,
|
|
|
7
7
|
import { t as readGroupFileBytes } from "./read-group-file-bytes-UQIk1eJG.js";
|
|
8
8
|
import { yieldToMain } from "./utils/delay.js";
|
|
9
9
|
import { t as setConfig } from "./set-config-CUadvYZ1.js";
|
|
10
|
-
import { F as syncProxyConfigToServiceWorker, S as clearGroupMessages, g as saveMessage, m as updateTaskLastRun, t as orchestratorStore, y as listGroups } from "./orchestrator-
|
|
10
|
+
import { F as syncProxyConfigToServiceWorker, S as clearGroupMessages, g as saveMessage, m as updateTaskLastRun, t as orchestratorStore, y as listGroups } from "./orchestrator-cRBe3lhq.js";
|
|
11
11
|
import { ulid } from "./utils/ulid.js";
|
|
12
12
|
import { t as getOrCreateSubscriberId } from "./get-or-create-subscriber-id-wyzaML7Z.js";
|
|
13
13
|
import { _ as createModuleWorker } from "./trusted-types-HwsGS5Nj.js";
|
|
@@ -18,17 +18,17 @@ import { i as detectProviderHelpType } from "./transformers-BMURofG6.js";
|
|
|
18
18
|
import { n as handleRoomInvite } from "./room-QujMjoxG.js";
|
|
19
19
|
import { S as isPromptApiSupported, a as getApiKeyForRequest, b as stopTransformersProgressPolling, i as getApiKeyForHeaders, l as getProviderRuntimeHeaders, n as applyMeshLlmHeaders, r as cancelLlamafileRequest, t as applyLlamafileHeaders } from "./provider-BC9KPI14.js";
|
|
20
20
|
import { inferAttachmentMimeType } from "./utils/mime.js";
|
|
21
|
-
import { i as persistMessageAttachments, r as ROOM_METHOD, t as PeerJsChannel } from "./peerjs-
|
|
22
|
-
import { a as syncExistingPushSubscription } from "./push-client-
|
|
21
|
+
import { i as persistMessageAttachments, r as ROOM_METHOD, t as PeerJsChannel } from "./peerjs-BLg8aGUj.js";
|
|
22
|
+
import { a as syncExistingPushSubscription } from "./push-client-CAm6UMvE.js";
|
|
23
23
|
import { n as decryptValue, r as encryptValue } from "./crypto-Bikgpqfe.js";
|
|
24
|
-
import { f as submitMessage, n as clearPeerJsTypingState, t as applyAllChannelRunningStates, u as loadChannelEnabled } from "./channel-
|
|
25
|
-
import { a as roomIdFromGroupId, i as roomGroupId, n as deleteRoom, o as upsertRoom, r as getRoomMetadata } from "./rooms-
|
|
24
|
+
import { f as submitMessage, n as clearPeerJsTypingState, t as applyAllChannelRunningStates, u as loadChannelEnabled } from "./channel-DB77spML.js";
|
|
25
|
+
import { a as roomIdFromGroupId, i as roomGroupId, n as deleteRoom, o as upsertRoom, r as getRoomMetadata } from "./rooms-Dzphx3rK.js";
|
|
26
26
|
import { o as setWebMcpMode, s as unregisterWebMcpTools } from "./webmcp-BoMTvgmX.js";
|
|
27
|
-
import { a as shouldDeferTaskToServer, i as runTaskAsScheduled, p as getContextLimit, r as handleWorkerMessage, t as discoverSkills } from "./discover-skills-
|
|
28
|
-
import { r as syncWebMcpRegistration } from "./sync-web-mcp-registration-
|
|
27
|
+
import { a as shouldDeferTaskToServer, i as runTaskAsScheduled, p as getContextLimit, r as handleWorkerMessage, t as discoverSkills } from "./discover-skills-CXyaWHKi.js";
|
|
28
|
+
import { r as syncWebMcpRegistration } from "./sync-web-mcp-registration-BiOZvW-R.js";
|
|
29
29
|
import { t as fetchTokenizerConfig } from "./chat-template-DPEKGJhB.js";
|
|
30
|
-
import { i as estimateTokens, n as buildConversationMessages, r as buildDynamicContext, t as buildSystemPrompt } from "./system-prompt-
|
|
31
|
-
import { ensureControlPlaneConnected } from "./init-control-plane-
|
|
30
|
+
import { i as estimateTokens, n as buildConversationMessages, r as buildDynamicContext, t as buildSystemPrompt } from "./system-prompt-CxJ3Nx4c.js";
|
|
31
|
+
import { ensureControlPlaneConnected } from "./init-control-plane-CEGdzgWX.js";
|
|
32
32
|
|
|
33
33
|
//#region src/db/migrate-legacy-database.ts
|
|
34
34
|
/**
|
|
@@ -1257,7 +1257,7 @@ async function processQueue(o, db) {
|
|
|
1257
1257
|
o.processing = true;
|
|
1258
1258
|
const msg = o.messageQueue.shift();
|
|
1259
1259
|
try {
|
|
1260
|
-
const { invokeAgent } = await import("./invoke-agent-
|
|
1260
|
+
const { invokeAgent } = await import("./invoke-agent-cac3gCsj.js");
|
|
1261
1261
|
await invokeAgent(o, db, msg.groupId, msg.content, msg.freshContext, msg.subagent);
|
|
1262
1262
|
} catch (err) {
|
|
1263
1263
|
console.error("Failed to invoke agent:", err);
|
|
@@ -2608,7 +2608,7 @@ var Orchestrator = class {
|
|
|
2608
2608
|
const triggerContent = this.inFlightTriggerByGroup.get(groupId);
|
|
2609
2609
|
if (!triggerContent) return false;
|
|
2610
2610
|
this.stopCurrentRequest(groupId);
|
|
2611
|
-
const { invokeAgent } = await import("./invoke-agent-
|
|
2611
|
+
const { invokeAgent } = await import("./invoke-agent-cac3gCsj.js");
|
|
2612
2612
|
await invokeAgent(this, this.db, groupId, triggerContent);
|
|
2613
2613
|
return true;
|
|
2614
2614
|
}
|
|
@@ -2664,4 +2664,4 @@ var Orchestrator = class {
|
|
|
2664
2664
|
|
|
2665
2665
|
//#endregion
|
|
2666
2666
|
export { Orchestrator };
|
|
2667
|
-
//# sourceMappingURL=orchestrator-
|
|
2667
|
+
//# sourceMappingURL=orchestrator-BBAwy9Nm.js.map
|