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,3 +1,3 @@
|
|
|
1
|
-
import{et as e}from"./config-C16fFWtP.js";import{n as t}from"./create-model-cache-fetch-
|
|
1
|
+
import{et as e}from"./config-C16fFWtP.js";import{n as t}from"./create-model-cache-fetch-B0mSCEk6.js";var n=Object.defineProperty,r=(e,t,r)=>t in e?n(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,i=(e,t,n)=>(r(e,typeof t==`symbol`?t:t+``,n),n),a=Object.freeze({Text:`Text`,NumericLiteral:`NumericLiteral`,StringLiteral:`StringLiteral`,Identifier:`Identifier`,Equals:`Equals`,OpenParen:`OpenParen`,CloseParen:`CloseParen`,OpenStatement:`OpenStatement`,CloseStatement:`CloseStatement`,OpenExpression:`OpenExpression`,CloseExpression:`CloseExpression`,OpenSquareBracket:`OpenSquareBracket`,CloseSquareBracket:`CloseSquareBracket`,OpenCurlyBracket:`OpenCurlyBracket`,CloseCurlyBracket:`CloseCurlyBracket`,Comma:`Comma`,Dot:`Dot`,Colon:`Colon`,Pipe:`Pipe`,CallOperator:`CallOperator`,AdditiveBinaryOperator:`AdditiveBinaryOperator`,MultiplicativeBinaryOperator:`MultiplicativeBinaryOperator`,ExponentiationBinaryOperator:`ExponentiationBinaryOperator`,ComparisonBinaryOperator:`ComparisonBinaryOperator`,UnaryOperator:`UnaryOperator`,Comment:`Comment`});a.OpenStatement,a.CloseStatement,a.OpenExpression,a.CloseExpression,a.OpenParen,a.CloseParen,a.OpenCurlyBracket,a.CloseCurlyBracket,a.OpenSquareBracket,a.CloseSquareBracket,a.Comma,a.Dot,a.Colon,a.Pipe,a.ComparisonBinaryOperator,a.ComparisonBinaryOperator,a.ComparisonBinaryOperator,a.ComparisonBinaryOperator,a.ComparisonBinaryOperator,a.ComparisonBinaryOperator,a.AdditiveBinaryOperator,a.AdditiveBinaryOperator,a.AdditiveBinaryOperator,a.ExponentiationBinaryOperator,a.MultiplicativeBinaryOperator,a.MultiplicativeBinaryOperator,a.MultiplicativeBinaryOperator,a.MultiplicativeBinaryOperator,a.Equals;function o(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}function s(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function c(e,t,n,r){if(r===0)return e;let i=r==null||r<0?1/0:r,a=t.length===0?/* @__PURE__ */ RegExp(`(?=)`,`gu`):new RegExp(s(t),`gu`);return e.replaceAll(a,e=>i>0?(--i,n):e)}var l=/* @__PURE__ */ new Map,u=class{type=`RuntimeValue`;value;get builtins(){return l}constructor(e=void 0){this.value=e}__bool__(){return new m(!!this.value)}toString(){return String(this.value)}},d=class extends u{type=`IntegerValue`},f=class extends u{type=`FloatValue`;toString(){return Object.is(this.value,-0)?`-0.0`:this.value%1==0?this.value.toFixed(1):this.value.toString()}},p=class extends u{type=`StringValue`;_builtins;get builtins(){return this._builtins??=/* @__PURE__ */ new Map([[`upper`,new S(()=>new p(this.value.toUpperCase()))],[`lower`,new S(()=>new p(this.value.toLowerCase()))],[`strip`,new S(()=>new p(this.value.trim()))],[`title`,new S(()=>new p(o(this.value)))],[`capitalize`,new S(()=>new p(this.value.charAt(0).toUpperCase()+this.value.slice(1)))],[`length`,new d(this.value.length)],[`rstrip`,new S(()=>new p(this.value.trimEnd()))],[`lstrip`,new S(()=>new p(this.value.trimStart()))],[`startswith`,new S(e=>{if(e.length===0)throw Error(`startswith() requires at least one argument`);let t=e[0];if(t instanceof p)return new m(this.value.startsWith(t.value));if(t instanceof x){for(let e of t.value){if(!(e instanceof p))throw Error(`startswith() tuple elements must be strings`);if(this.value.startsWith(e.value))return new m(!0)}return new m(!1)}throw Error(`startswith() argument must be a string or tuple of strings`)})],[`endswith`,new S(e=>{if(e.length===0)throw Error(`endswith() requires at least one argument`);let t=e[0];if(t instanceof p)return new m(this.value.endsWith(t.value));if(t instanceof x){for(let e of t.value){if(!(e instanceof p))throw Error(`endswith() tuple elements must be strings`);if(this.value.endsWith(e.value))return new m(!0)}return new m(!1)}throw Error(`endswith() argument must be a string or tuple of strings`)})],[`split`,new S(e=>{let t=e[0]??new C;if(!(t instanceof p||t instanceof C))throw Error(`sep argument must be a string or null`);let n=e[1]??new d(-1);if(!(n instanceof d))throw Error(`maxsplit argument must be a number`);let r=[];if(t instanceof C){let e=this.value.trimStart();for(let{0:t,index:i}of e.matchAll(/\S+/g)){if(n.value!==-1&&r.length>=n.value&&i!==void 0){r.push(t+e.slice(i+t.length));break}r.push(t)}}else{if(t.value===``)throw Error(`empty separator`);r=this.value.split(t.value),n.value!==-1&&r.length>n.value&&r.push(r.splice(n.value).join(t.value))}return new x(r.map(e=>new p(e)))})],[`replace`,new S(e=>{if(e.length<2)throw Error(`replace() requires at least two arguments`);let t=e[0],n=e[1];if(!(t instanceof p&&n instanceof p))throw Error(`replace() arguments must be strings`);let r;if(r=e.length>2?e[2].type===`KeywordArgumentsValue`?e[2].value.get(`count`)??new C:e[2]:new C,!(r instanceof d||r instanceof C))throw Error(`replace() count argument must be a number or null`);return new p(c(this.value,t.value,n.value,r.value))})]])}},m=class extends u{type=`BooleanValue`},h=/[\x7f-\uffff]/g;function g(e){return e.replace(h,e=>`\\u`+e.charCodeAt(0).toString(16).padStart(4,`0`))}function _(e,t={},n=0,r=!0){let{indent:i=null,ensureAscii:a=!1,separators:o=null,sortKeys:s=!1}=t,c,l;switch(o?[c,l]=o:i?(c=`,`,l=`: `):(c=`, `,l=`: `),e.type){case`NullValue`:return`null`;case`UndefinedValue`:return r?`null`:`undefined`;case`IntegerValue`:case`FloatValue`:case`BooleanValue`:return JSON.stringify(e.value);case`StringValue`:{let t=JSON.stringify(e.value);return a&&(t=g(t)),t}case`ArrayValue`:case`NamespaceValue`:case`ObjectValue`:{let o=i?` `.repeat(i):``,u=`
|
|
2
2
|
`+o.repeat(n),d=u+o;if(e.type===`ArrayValue`){let a=e.value.map(e=>_(e,t,n+1,r));return i?`[${d}${a.join(`${c}${d}`)}${u}]`:`[${a.join(c)}]`}{let o=Array.from(e.value.entries());s&&(o=o.sort(([e],[t])=>e.localeCompare(t)));let f=o.map(([e,o])=>{let s=JSON.stringify(e);a&&(s=g(s));let c=`${s}${l}${_(o,t,n+1,r)}`;return i?`${d}${c}`:c});return i?`{${f.join(c)}${u}}`:`{${f.join(c)}}`}}default:throw Error(`Cannot convert to JSON: ${e.type}`)}}var v=class extends u{type=`ObjectValue`;_builtins;__bool__(){return new m(this.value.size>0)}get builtins(){return this._builtins??=/* @__PURE__ */ new Map([[`get`,new S(([e,t])=>{if(!(e instanceof p))throw Error(`Object key must be a string: got ${e.type}`);return this.value.get(e.value)??t??new C})],[`items`,new S(()=>this.items())],[`keys`,new S(()=>this.keys())],[`values`,new S(()=>this.values())],[`dictsort`,new S(e=>{let t=/* @__PURE__ */ new Map,n=e.filter(e=>e instanceof y?(t=e.value,!1):!0),r=n.at(0)??t.get(`case_sensitive`)??new m(!1);if(!(r instanceof m))throw Error(`case_sensitive must be a boolean`);let i=n.at(1)??t.get(`by`)??new p(`key`);if(!(i instanceof p))throw Error(`by must be a string`);if(![`key`,`value`].includes(i.value))throw Error(`by must be either 'key' or 'value'`);let a=n.at(2)??t.get(`reverse`)??new m(!1);if(!(a instanceof m))throw Error(`reverse must be a boolean`);return new x(Array.from(this.value.entries()).map(([e,t])=>new x([new p(e),t])).sort((e,t)=>{let n=i.value===`key`?0:1,o=e.value[n],s=t.value[n],c=k(o,s,r.value);return a.value?-c:c}))})]])}items(){return new x(Array.from(this.value.entries()).map(([e,t])=>new x([new p(e),t])))}keys(){return new x(Array.from(this.value.keys()).map(e=>new p(e)))}values(){return new x(Array.from(this.value.values()))}toString(){return _(this,{},0,!1)}},y=class extends v{type=`KeywordArgumentsValue`},b=class extends u{type=`NamespaceValue`;toString(){return _(this,{},0,!1)}},x=class extends u{type=`ArrayValue`;_builtins;get builtins(){return this._builtins??=/* @__PURE__ */ new Map([[`length`,new d(this.value.length)]])}__bool__(){return new m(this.value.length>0)}toString(){return _(this,{},0,!1)}},S=class extends u{type=`FunctionValue`},C=class extends u{type=`NullValue`},w=class extends u{type=`UndefinedValue`};function T(e){let t;if(e instanceof x?t=e.value:e instanceof p&&(t=Array.from(e.value,e=>new p(e))),!t||t.length!==2)throw Error(`namespace expected an object or an iterable of [key, value] pairs`);let[n,r]=t;if(!(n instanceof p))throw Error(`namespace keys must be strings`);return[n,r]}var E=class{constructor(e){this.parent=e}variables=/* @__PURE__ */ new Map([[`namespace`,new S(e=>{let t=e.slice(),n;if(t.at(-1)instanceof y&&(n=t.pop()),t.length>1)throw Error(`namespace expected at most 1 argument, got ${t.length}`);let r=/* @__PURE__ */ new Map;if(t.length===1){let e=t[0];if(e instanceof v)for(let[t,n]of e.value)r.set(t,n);else if(e instanceof x)for(let t of e.value){let[e,n]=T(t);r.set(e.value,n)}else throw Error(`'${e.type}' object is not iterable`)}if(n)for(let[e,t]of n.value)r.set(e,t);return new b(r)})]]);tests=E.TESTS;set(e,t){return this.declareVariable(e,A(t))}declareVariable(e,t){if(this.variables.has(e))throw SyntaxError(`Variable already declared: ${e}`);return this.variables.set(e,t),t}setVariable(e,t){return this.variables.set(e,t),t}resolve(e){if(this.variables.has(e))return this;if(this.parent)return this.parent.resolve(e);throw Error(`Unknown variable: ${e}`)}lookupVariable(e){try{return this.resolve(e).variables.get(e)??new w}catch{return new w}}};i(E,`TESTS`,/* @__PURE__ */ new Map([[`boolean`,e=>e.type===`BooleanValue`],[`callable`,e=>e instanceof S],[`odd`,e=>{if(!(e instanceof d))throw Error(`cannot odd on ${e.type}`);return e.value%2!=0}],[`even`,e=>{if(!(e instanceof d))throw Error(`cannot even on ${e.type}`);return e.value%2==0}],[`false`,e=>e.type===`BooleanValue`&&!e.value],[`true`,e=>e.type===`BooleanValue`&&e.value],[`none`,e=>e.type===`NullValue`],[`string`,e=>e.type===`StringValue`],[`number`,e=>e instanceof d||e instanceof f],[`integer`,e=>e instanceof d],[`iterable`,e=>e.type===`ArrayValue`||e.type===`StringValue`],[`mapping`,e=>e instanceof v],[`sequence`,e=>e instanceof x||e instanceof v||e instanceof p],[`lower`,e=>{let t=e.value;return e.type===`StringValue`&&t===t.toLowerCase()}],[`upper`,e=>{let t=e.value;return e.type===`StringValue`&&t===t.toUpperCase()}],[`none`,e=>e.type===`NullValue`],[`defined`,e=>e.type!==`UndefinedValue`],[`undefined`,e=>e.type===`UndefinedValue`],[`equalto`,(e,t)=>e.value===t.value],[`eq`,(e,t)=>e.value===t.value]]));function D(e){return e instanceof d||e instanceof f||e instanceof m}function O(e){return e instanceof m?Number(e.value):e.value}function k(e,t,n=!1){if(e instanceof C&&t instanceof C)return 0;if(e instanceof C||t instanceof C)throw Error(`Cannot compare ${e.type} with ${t.type}`);if(e instanceof w&&t instanceof w)return 0;if(e instanceof w||t instanceof w)throw Error(`Cannot compare ${e.type} with ${t.type}`);if(D(e)&&D(t)){let n=O(e),r=O(t);return n<r?-1:+(n>r)}if(e.type!==t.type)throw Error(`Cannot compare different types: ${e.type} and ${t.type}`);switch(e.type){case`StringValue`:{let r=e.value,i=t.value;return n||(r=r.toLowerCase(),i=i.toLowerCase()),r<i?-1:+(r>i)}default:throw Error(`Cannot compare type: ${e.type}`)}}function A(e){switch(typeof e){case`number`:return Number.isInteger(e)?new d(e):new f(e);case`string`:return new p(e);case`boolean`:return new m(e);case`undefined`:return new w;case`object`:return e===null?new C:Array.isArray(e)?new x(e.map(A)):new v(new Map(Object.entries(e).map(([e,t])=>[e,A(t)])));case`function`:return new S((t,n)=>A(e(...t.map(e=>e.value))??null));default:throw Error(`Cannot convert to runtime value: ${e}`)}}Object.freeze({CONDITIONAL:0,LOGICAL_OR:1,LOGICAL_AND:2,LOGICAL_NOT:3,COMPARISON:4,ADDITIVE:5,MULTIPLICATIVE:6,EXPONENTIATION:7,TEST:8,FILTER:9,UNARY_SIGN:10,ATOM:11});const j=/* @__PURE__ */ new Map;function M(e){return typeof e==`string`?e:e?Array.isArray(e)?e.map(e=>{if(!e)return``;if(typeof e==`string`)return e;if(e.type===`text`)return e.text||e.value||``;if(e.type===`tool_use`)return`[TOOL_CALL ${e.name}] ${JSON.stringify(e.input||{})}`;if(e.type===`tool_result`){let t=typeof e.content==`string`?e.content:JSON.stringify(e.content||``);return`[TOOL_RESULT ${e.tool_use_id||``}] ${t}`}return e.type===`attachment`?`[ATTACHMENT ${e.mediaType||`file`}] ${e.fileName||`attachment`}`:``}).filter(Boolean).join(`
|
|
3
3
|
`):typeof e==`object`?JSON.stringify(e):String(e):``}async function N(n,r){let i=String(n||``).trim();if(!i)return null;if(j.has(i))return j.get(i);let a=r||(typeof globalThis.fetch==`function`?globalThis.fetch.bind(globalThis):void 0);if(!a)return null;let o=r||t(a),s=`https://huggingface.co/${encodeURI(i)}/resolve/main/tokenizer_config.json`;try{let t=await o(s);if(t.ok){let n=await t.json();if(n&&typeof n==`object`){if(!n.chat_template)try{let e=await o(`https://huggingface.co/${encodeURI(i)}/resolve/main/chat_template.jinja`);if(e.ok){let t=await e.text();t&&t.trim()&&(n.chat_template=t.trim())}}catch{}if(typeof n.model_max_length==`number`&&Number.isFinite(n.model_max_length)&&n.model_max_length>0&&n.model_max_length<=2097152){let t=e.getModelInfo(i);e.registerModelInfo(i,{contextWindow:n.model_max_length,maxOutput:t?.maxOutput??null,...t||{}})}return j.set(i,n),n}}}catch{}return null}function P(e,t){let n=String(t||``).trim(),r=[],i=/* @__PURE__ */ new Map;for(let t of e){if(t?.tool_calls&&Array.isArray(t.tool_calls))for(let e of t.tool_calls){let t=e?.id||e?.tool_call_id,n=e?.function?.name||e?.name;t&&n&&i.set(t,n)}if(Array.isArray(t?.content))for(let e of t.content)e?.type===`tool_use`&&e.id&&e.name&&i.set(e.id,e.name)}for(let t of e){if(!t)continue;let e=String(t.role||`user`).toLowerCase(),a=M(t.content);if(e===`system`)n=n?`${n}\n\n${a}`:a;else if(e===`tool`){let e=t.name||(t.tool_call_id?i.get(t.tool_call_id):void 0)||`unknown`;r.push({role:`tool`,content:a,...t.tool_call_id?{tool_call_id:t.tool_call_id}:{},name:e})}else if(e===`assistant`||e===`model`){let e=t.tool_calls,n=a;if(Array.isArray(t.content)){let r=t.content.filter(e=>e?.type===`tool_use`);r.length>0&&(e||=r.map(e=>({id:e.id||`call_${Math.random().toString(36).slice(2,9)}`,type:`function`,function:{name:e.name,arguments:typeof e.input==`object`&&e.input!==null?e.input:{}}})),n=M(t.content.filter(e=>e?.type!==`tool_use`)))}Array.isArray(e)&&(e=e.map(e=>{if(!e||typeof e!=`object`)return e;let t=e.function;if(t&&typeof t==`object`&&typeof t.arguments==`string`)try{let n=JSON.parse(t.arguments);if(n&&typeof n==`object`&&!Array.isArray(n))return{...e,function:{...t,arguments:n}}}catch{}return e})),r.push({role:`assistant`,content:n,...e?{tool_calls:e}:{}})}else if(Array.isArray(t.content)&&t.content.some(e=>e?.type===`tool_result`))for(let e of t.content)if(e?.type===`tool_result`){let t=typeof e.content==`string`?e.content:JSON.stringify(e.content||``),n=e.name||(e.tool_use_id?i.get(e.tool_use_id):void 0)||`unknown`;r.push({role:`tool`,content:t,...e.tool_use_id?{tool_call_id:e.tool_use_id}:{},name:n})}else{let t=M([e]);t&&r.push({role:`user`,content:t})}else r.push({role:`user`,content:a})}let a=[];for(let e of r)if(a.length>0&&a[a.length-1].role===e.role&&e.role!==`tool`){let t=a[a.length-1];t.content=t.content?`${t.content}\n\n${e.content}`:e.content,e.tool_calls&&(t.tool_calls=[...t.tool_calls||[],...e.tool_calls])}else a.push({...e});a.length>0&&a[0].role===`assistant`&&a.unshift({role:`user`,content:`Hello`}),a.length===0&&!n&&a.push({role:`user`,content:`Hello`});let o=[];return n&&o.push({role:`system`,content:n}),o.push(...a),o}export{P as n,N as t};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{b as e,h as t,o as n,r}from"./config-CDttEBqp.js";import{n as i}from"./db-BUuJo1Gf.js";import{t as a}from"./get-config-CL2_eFkq.js";import{c as o,d as s,f as c,t as l,x as u}from"./tools-2TxJ2IVJ.js";import{B as d,C as f,R as p,S as m,V as h,_ as g,a as _,b as v,c as y,d as b,f as x,g as S,i as C,l as w,m as T,n as E,o as ee,p as D,r as O,s as k,t as A,u as j,v as M,x as N,y as P,z as F}from"./agent.worker.js";function I(e,t,n){let r=(t||``).toLowerCase();return r?n&&(r.includes(`api key not configured`)||r.includes(`go to settings to add your api key`)||r.includes(`missing api key`)||r.includes(`no api key`))?`api-key-missing`:n&&(r.includes(`invalid api key`)||r.includes(`incorrect api key`)||r.includes(`authentication failed`)||r.includes(`401`)||r.includes(`403`)||r.includes(`unauthorized`)||r.includes(`forbidden`))?`api-key-invalid`:r.includes(`429`)||r.includes(`rate limit`)||r.includes(`too many requests`)?`rate-limited`:r.includes(`failed to fetch`)||r.includes(`networkerror`)||r.includes(`network error`)||r.includes(`econnrefused`)||r.includes(`connection refused`)||r.includes(`enotfound`)||r.includes(`timed out`)||r.includes(`timeout`)||r.includes(`503`)||r.includes(`502`)?`provider-unreachable`:null:null}async function L(e=[],t,n={}){let r=n.maxInlineTextBytes??102400,i=n.maxImageBytes??3145728,a=[];for(let n of e){let e=n.mimeType||`application/octet-stream`,o=w(e,n.fileName),s=o===`text`?`file`:o===`document`?`document`:o,c=null;try{c=await t(n)}catch{c=null}let l=c?.length??(typeof n.size==`number`?n.size:0);if(o===`text`&&c&&l<=r)try{let e=new TextDecoder(`utf-8`).decode(c),t=e.includes("```")?`~~~~`:"```";a.push({type:`text`,text:`Attachment: ${n.fileName}\n${t}\n${e}\n${t}`});continue}catch{}let u={type:`attachment`,mediaType:s,fileName:n.fileName,mimeType:e,size:n.size,path:n.path};c&&(s===`image`&&l<=i||s===`audio`&&l<=5242880||s===`document`&&l<=20971520)&&(u.data=D(c)),a.push(u)}return a}async function R(e,t){let n=await v(e,t),r=await i();return await Promise.all(n.map(async t=>{if(t.isFromMe)return{role:`assistant`,content:t.content};let n=`${t.sender}: ${t.content}`,i=t.attachments||[];if(i.length===0)return{role:`user`,content:n};let a=await L(i,async t=>!r||!t.path?null:f(r,e,t.path));return a.length===0?{role:`user`,content:n}:{role:`user`,content:[{type:`text`,text:n},...a]}}))}function z(){try{return}catch(e){console.warn(`Audio chime failed:`,e)}}function B(e,t){return e.channelRegistry?.getChannelType(t)??`browser`}async function V(e,t,n,r){let i=B(e,n),a={channel:i,content:r,groupId:n,id:s(),isFromMe:!0,isTrigger:!1,sender:e.assistantName,timestamp:Date.now()};if(await M(t,a),i!==`browser`)try{await e.router?.send(n,r)}catch(t){let r=t instanceof Error?t:Error(String(t));console.error(`Failed to deliver intermediate channel response:`,r),e.events.emit(`error`,{groupId:n,error:`Failed to deliver response to ${i}: ${r.message}`})}e.events.emit(`message`,a)}async function H(e,t,n,r){let i={channel:B(e,n),content:r,groupId:n,id:s(),isFromMe:!0,isTrigger:!1,sender:e.assistantName,timestamp:Date.now()};await M(t,i);let a=null;try{await e.router?.send(n,r)}catch(e){a=e instanceof Error?e:Error(String(e)),console.error(`Failed to deliver channel response:`,a)}e.pendingScheduledTasks.has(n)&&(e.pendingScheduledTasks.delete(n),z()),e.events.emit(`message`,i),e.events.emit(`typing`,{groupId:n,typing:!1}),e.setState(`idle`,n),e.router?.setTyping(n,!1),n.startsWith(`peer:`)&&!a&&e.peerjs.completeActiveTask(n)&&e.peerCompletedContexts.add(n),a&&e.events.emit(`error`,{groupId:n,error:`Failed to deliver response to ${B(e,n)}: ${a.message}`})}function U(e){let t=e.toLowerCase();return t.includes(`assets/cache/llamafile`)||t.includes(`missing or invalid 'model' parameter for cli mode`)||t.includes(`failed to list llamafile binaries`)}function W(e){let t=e.toLowerCase();return t.includes(`transformers.js runtime is not installed`)||t.includes(`transformers.js runtime is unavailable`)||t.includes(`no supported transformers.js model loader`)||t.includes(`cannot find package`)&&t.includes(`@huggingface/transformers`)}function G(e,t,n,r){return{accessTokenExpiresAt:e.expiresIn?Date.now()+e.expiresIn*1e3:t.accessTokenExpiresAt,oauthReauthRequired:!1,oauthReauthRequiredAt:void 0,oauthRefreshFailureCount:0,refreshToken:r,scopes:e.scope?e.scope.split(/[\s,]+/).map(e=>e.trim()).filter(Boolean):t.scopes,token:n,tokenType:e.tokenType||t.tokenType}}async function te(e,t,n,i,a,o,s){if(!t.refreshToken)return{success:!1,error:`No refresh token available.`};let l=await d(t.refreshToken);if(!l)return{success:!1,error:`Failed to decrypt refresh token.`};let u=t.oauthClientSecret?await d(t.oauthClientSecret):void 0;try{let d=await fetch(`/oauth/refresh`,{body:JSON.stringify({clientId:t.oauthClientId,clientSecret:u||void 0,providerId:t.oauthProviderId,refreshToken:l,scope:t.scopes,tokenUrl:t.oauthCustomTokenUrl}),headers:{"content-type":`application/json`},method:`POST`});if(!d.ok)return{success:!1,error:`Token refresh request failed.`};let f=await d.json();if(!f.accessToken)return{success:!1,error:`No access token in refresh response.`};let m=await h(f.accessToken);if(!m)return{success:!1,error:`Failed to encrypt access token.`};let g=t.refreshToken;if(f.refreshToken){let e=await h(f.refreshToken);e&&(g=e)}let _=G({accessToken:f.accessToken,expiresIn:f.expiresIn,refreshToken:f.refreshToken,scope:f.scope,tokenType:f.tokenType},t,m,g);if(n===`service`&&o.accountId){let t=i.findIndex(e=>e.id===o.accountId);t!==-1&&(Object.assign(i[t],_),await c(e,r.SERVICE_ACCOUNTS,i))}else if(n===`git`&&o.gitAccountId){let t=a.findIndex(e=>e.id===o.gitAccountId);t!==-1&&(Object.assign(a[t],_),await c(e,r.GIT_ACCOUNTS,a))}return p(s),{success:!0}}catch(e){return{success:!1,error:`Silent refresh failed: ${e instanceof Error?e.message:String(e)}`}}}async function K(e,n,i={}){let o=await F(e,n);if(!o?.credentialRef)return{success:!1,error:`Connection not found.`};let s=o.credentialRef;if(s.authType!==`oauth`)return{success:!1,error:`This connection does not use OAuth authentication.`};let l=await a(e,r.SERVICE_ACCOUNTS),u=Array.isArray(l)?l:[],f=await a(e,r.GIT_ACCOUNTS),m=Array.isArray(f)?f:[],g,_=null;if(s.accountId?(g=u.find(e=>e.id===s.accountId),_=`service`):s.gitAccountId&&(g=m.find(e=>e.id===s.gitAccountId),_=`git`),!g||!_)return{error:`Linked account not found. Edit the connection to re-configure authentication.`,success:!1};let v=g.oauthClientId,y=g.oauthProviderId;if(!y||!v)return{error:`Account is missing OAuth provider or client ID. Edit the account in Settings → Accounts to fix.`,success:!1};if(g.refreshToken){let t=await te(e,g,_,u,m,s,n);if(t.success)return t}if(i.silentOnly)return{error:`Silent token refresh failed. Use Settings → Remote MCP → Reconnect OAuth for full re-authorization.`,success:!1};let b=g.oauthClientSecret?await d(g.oauthClientSecret):void 0,x=g.scopes,S=t[y],C=y===`custom_mcp`,w=C&&g.oauthCustomRedirectUri?g.oauthCustomRedirectUri:S?.redirectUri?S.redirectUri:`${globalThis.location?.origin||``}/oauth/callback`;try{let t=await fetch(`/oauth/authorize`,{body:JSON.stringify({providerId:y,clientId:v,clientSecret:b||void 0,redirectUri:w,scope:x,...C&&g.oauthCustomAuthorizeUrl?{authorizeUrl:g.oauthCustomAuthorizeUrl}:{},...C&&g.oauthCustomTokenUrl?{tokenUrl:g.oauthCustomTokenUrl}:{},...C&&typeof g.oauthCustomUsePkce==`boolean`?{usePkce:g.oauthCustomUsePkce}:{}}),headers:{"content-type":`application/json`},method:`POST`}),i=await t.json();if(!t.ok||!i.state||!i.authorizeUrl)throw Error(i.error||`OAuth authorize failed`);let a=window.open(i.authorizeUrl,`shadowclaw-oauth`,`popup=yes,width=540,height=720`);if(!a||a.closed||a.closed===void 0)throw Error(`OAuth popup was blocked by the browser. Please enable popups for this site and try again.`);let o=i.state,l=`pending`;for(let e=0;e<60;e++){let e=await fetch(`/oauth/session/${encodeURIComponent(o)}`),t=await e.json();if(!e.ok)throw Error(t.error||`OAuth session not found`);if(l=t.status||`pending`,l===`authorized`)break;if(l===`error`)throw Error(t.error||`OAuth authorization failed`);await new Promise(e=>setTimeout(e,1e3))}if(l!==`authorized`)throw Error(`OAuth authorization timed out`);let d=await fetch(`/oauth/token`,{body:JSON.stringify({state:o}),headers:{"content-type":`application/json`},method:`POST`}),f=await d.json();if(!d.ok||!f.accessToken)throw Error(f.error||`OAuth token exchange failed`);let S=await h(f.accessToken);if(!S)throw Error(`Failed to encrypt access token`);let T=g.refreshToken;if(f.refreshToken){let e=await h(f.refreshToken);e&&(T=e)}let E=G({accessToken:f.accessToken,expiresIn:f.expiresIn,refreshToken:f.refreshToken,scope:f.scope,tokenType:f.tokenType},g,S,T);if(_===`service`&&s.accountId){let t=u.findIndex(e=>e.id===s.accountId);t!==-1&&(Object.assign(u[t],E),await c(e,r.SERVICE_ACCOUNTS,u))}else if(_===`git`&&s.gitAccountId){let t=m.findIndex(e=>e.id===s.gitAccountId);t!==-1&&(Object.assign(m[t],E),await c(e,r.GIT_ACCOUNTS,m))}return p(n),{success:!0}}catch(e){return{success:!1,error:e instanceof Error?e.message:String(e)}}}async function ne(e){let t=await i(),n=await a(t,r.PUSH_PROXY_URL);if(!n&&typeof localStorage<`u`)try{n=localStorage.getItem(r.PUSH_PROXY_URL)||void 0}catch{}if(!n)return e;let o=e.startsWith(`/`)?e:`/${e}`;return`${n.endsWith(`/`)?n.slice(0,-1):n}${o}`}async function q(e){return await e.getApiKey()||``}function J(e,t,n=``,r){if(t===`llamafile`){let t=r?.llamafile,i={"x-llamafile-mode":t?.mode===`server`||t?.mode===`cli`?t.mode:e.llamafileMode,"x-llamafile-host":t?.host||e.llamafileHost,"x-llamafile-port":String(t?.port||e.llamafilePort),"x-llamafile-offline":t?.offline??e.llamafileOffline?`true`:`false`};return n&&(i[`x-shadowclaw-request-id`]=n),i}if(t===`bedrock_proxy`){let t=r?.bedrock_proxy,n={};return(t?.region||e.bedrockRegionFallback)&&(n[`x-bedrock-region`]=t?.region||e.bedrockRegionFallback),(t?.profile||e.bedrockProfileFallback)&&(n[`x-bedrock-profile`]=t?.profile||e.bedrockProfileFallback),n[`x-bedrock-auth-mode`]=t?.authMode||e.bedrockAuthMode,n}return{}}function Y(e,t){let n=e.transformersProgressPollers.get(t);typeof n==`number`&&(clearInterval(n),e.transformersProgressPollers.delete(t))}function re(e,t){let n=e.roomManager.createRoom(t);return e.events.emit(`rooms-changed`,e.roomManager.list()),n}function ie(e,t,n){return e.roomManager.invite(t,n)}function ae(e,t){e.roomManager.leaveRoom(t),e.events.emit(`rooms-changed`,e.roomManager.list())}function X(e,t={}){let n={...t};try{let t=typeof location<`u`?location.origin:`http://127.0.0.1:8888`,r=new URL(e,t).hostname.toLowerCase();r===`localhost`||r===`127.0.0.1`||r===`::1`||r===`[::1]`?n.targetAddressSpace=`loopback`:(/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/.test(r)||!r.includes(`.`)||r.endsWith(`.local`)||r.endsWith(`.lan`)||r.endsWith(`.home`)||r.endsWith(`.internal`))&&(n.targetAddressSpace=`private`)}catch{}return n}async function Z(e,t,n){if(!e.taskServerEnabled)return!0;if(!t.schedule)return Q(e,t.id,n);try{let r=`${e.taskServerUrl.replace(/\/$/,``)}/tasks`,i=await fetch(r,X(r,{body:JSON.stringify({...t,pushNotifications:!!t.pushNotifications,...n?{subscriberId:n}:{}}),headers:{"Content-Type":`application/json`},method:`POST`}));return i.ok?!0:(console.error(`Server rejected task sync:`,i.status),!1)}catch(e){return console.error(`Failed to sync task to server:`,e),!1}finally{oe(e)}}async function Q(e,t,n){if(!e.taskServerEnabled)return!0;try{let r=e.taskServerUrl.replace(/\/$/,``),i=n?`?subscriberId=${encodeURIComponent(n)}`:``,a=`${r}/tasks/${encodeURIComponent(t)}${i}`,o=await fetch(a,X(a,{method:`DELETE`}));return o.ok?!0:(console.error(`Server rejected task deletion:`,o.status),!1)}catch(e){return console.error(`Failed to delete task from server:`,e),!1}}async function oe(e){if(!e.pushSubscriptionWarned&&typeof navigator<`u`&&navigator.serviceWorker)try{await(await navigator.serviceWorker.ready).pushManager.getSubscription()||(e.pushSubscriptionWarned=!0,S(`Push notifications are not enabled. Scheduled tasks will only run while the app is open. Enable push in Settings for background execution.`,{type:`warning`}))}catch{}}const $=/* @__PURE__ */ new Map;$.set(`response`,async(e,t,n)=>{let{groupId:r,text:i}=n;Y(e,r),e.clearProviderRequest(r),e.inFlightTriggerByGroup.delete(r),e.inFlightEffectiveProviderByGroup.delete(r),await H(e,t,r,i)}),$.set(`streaming-start`,(e,t,n)=>{let{groupId:r}=n;e.setState(`responding`,r),e.events.emit(`streaming-start`,{groupId:r})}),$.set(`streaming-chunk`,(e,t,n)=>{let{groupId:r,text:i}=n;e.events.emit(`streaming-chunk`,{groupId:r,text:i})}),$.set(`intermediate-response`,async(e,t,n)=>{let{groupId:r,text:i}=n;await V(e,t,r,i)}),$.set(`streaming-end`,(e,t,n)=>{let{groupId:r}=n;e.events.emit(`streaming-end`,{groupId:r}),e.setState(`thinking`,r)}),$.set(`streaming-done`,(e,t,n)=>{let{groupId:r}=n;e.events.emit(`streaming-done`,{groupId:r})}),$.set(`streaming-error`,(e,t,n)=>{let{groupId:r,error:i}=n;e.events.emit(`streaming-error`,{groupId:r,error:i})}),$.set(`run-task`,(e,t,n)=>{let{task:r}=n;T.runTask(r,!0)}),$.set(`task-created`,async(e,t,n)=>{let{task:r}=n;if(r.groupId&&e.schedulerTriggeredGroups.has(r.groupId))S(`⚠️ Task creation blocked — scheduled tasks cannot create new tasks (recursion prevention).`,{type:`warning`,duration:8e3});else try{if(!await Z(e,r,await N(t))){S(`Failed to sync task to server — task was not saved.`,{type:`error`});return}await g(t,r),e.events.emit(`task-change`,{type:`created`,task:r})}catch(e){console.error(`Failed to save task from agent:`,e),S(`Failed to save task.`,{type:`error`})}}),$.set(`task-list-request`,async(e,t,n)=>{let{groupId:r}=n,i=(await o(t)).filter(e=>e.groupId===r);e.agentWorker?.postMessage({type:`task-list-response`,payload:{groupId:r,tasks:i}})}),$.set(`update-task`,async(e,t,n)=>{let{task:r}=n;if(r.groupId&&e.schedulerTriggeredGroups.has(r.groupId))S(`⚠️ Task update blocked — scheduled tasks cannot modify tasks (recursion prevention).`,{type:`warning`,duration:8e3});else try{if(!await Z(e,r,await N(t))){S(`Failed to sync task update to server — task was not updated.`,{type:`error`});return}await g(t,r),e.events.emit(`task-change`,{type:`updated`,task:r})}catch(e){console.error(`Failed to update task from agent:`,e),S(`Failed to update task.`,{type:`error`})}}),$.set(`delete-task`,async(e,t,n)=>{let{id:r,groupId:i}=n;if(i&&e.schedulerTriggeredGroups.has(i))S(`⚠️ Task deletion blocked — scheduled tasks cannot delete tasks (recursion prevention).`,{type:`warning`,duration:8e3});else try{if(!await Q(e,r,await N(t))){S(`Failed to delete task from server — task kept in view.`,{type:`error`});return}await m(t,r),e.events.emit(`task-change`,{type:`deleted`,id:r})}catch(e){console.error(`Failed to delete task from agent:`,e)}}),$.set(`room-action`,(e,t,n)=>{let r=n?.action;try{r===`create`?re(e,String(n.name||``).trim()):r===`invite`?ie(e,String(n.roomId),String(n.peerId)):r===`leave`&&ae(e,String(n.roomId))}catch(e){console.error(`Failed to handle room action from agent:`,e)}}),$.set(`error`,async(e,t,n)=>{let{groupId:r,error:i}=n;Y(e,r),e.clearProviderRequest(r),e.inFlightTriggerByGroup.delete(r);let a=i,o=!1,s=e.inFlightEffectiveProviderByGroup.get(r);e.inFlightEffectiveProviderByGroup.delete(r);let c=s?.providerId??e.provider,l=s?.providerConfig??e.providerConfig;if((i.includes(`413`)||i.includes(`tokens_limit_reached`)||i.includes(`context_length_exceeded`)||i.includes(`too many tokens`))&&(a+=`
|
|
2
|
+
|
|
3
|
+
⚠️ This model has a small context window. Try clicking **'Compact'** in the header to summarize the conversation and reduce token usage.`),c===`llamafile`&&U(i)&&(o=!0,e.events.emit(`provider-help`,{providerId:`llamafile`,reason:i})),c===`transformers_js_local`&&W(i)&&(o=!0,e.events.emit(`provider-help`,{providerId:`transformers_js_local`,reason:i})),!o){let t=I(c,i,l?.requiresApiKey!==!1);t&&e.events.emit(`provider-help`,{providerId:c,reason:i,helpType:t})}await H(e,t,r,`⚠️ Error: ${a}`)}),$.set(`typing`,(e,t,n)=>{let{groupId:r}=n;e.router?.setTyping(r,!0),e.events.emit(`typing`,{groupId:r,typing:!0})}),$.set(`tool-activity`,(e,t,n)=>{e.events.emit(`tool-activity`,n),(n.tool===`write_file`&&n.status===`done`||n.tool===`bash`&&n.status===`done`)&&e.events.emit(`file-change`,{groupId:n.groupId})}),$.set(`model-download-progress`,(e,t,n)=>{e.events.emit(`model-download-progress`,n)}),$.set(`thinking-log`,(e,t,n)=>{e.events.emit(`thinking-log`,n)}),$.set(`compact-done`,async(e,t,n)=>{e.clearProviderRequest(n.groupId),await e.handleCompactDone(t,n.groupId,n.summary)}),$.set(`token-usage`,(e,t,n)=>{e.events.emit(`token-usage`,n)}),$.set(`clear-chat`,async(e,t,n)=>{let{groupId:r}=n;try{await e.newSession(t,r)}catch(e){console.error(`Failed to clear chat from agent:`,e)}}),$.set(`show-toast`,(e,t,n)=>{let{message:r,type:i,duration:a}=n;S(r,{type:i||`info`,duration:a})}),$.set(`mcp-reauth-required`,async(e,t,n)=>{let{connectionId:r}=n,i=await F(t,r),a=i?.label||r;if(i?.autoReconnectOAuth){S(`🔑 MCP connection "${a}" returned 401 — auto-reconnecting OAuth…`,{type:`info`,duration:5e3});let n=await K(t,r,{silentOnly:!0});n.success?S(`🔑 OAuth reconnected for "${a}"`,{type:`success`,duration:5e3}):S(`🔑 OAuth auto-reconnect failed for "${a}": ${n.error}`,{action:{label:`Reconnect Now`,onClick:async()=>{let e=await K(t,r);e.success?S(`🔑 OAuth reconnected for "${a}"`,{type:`success`,duration:5e3}):S(`🔑 OAuth reconnect failed for "${a}": ${e.error}`,{type:`error`,duration:1e4})}},duration:15e3,type:`error`}),e.agentWorker?.postMessage({payload:{connectionId:r,success:n.success},type:`mcp-reauth-result`})}else S(`🔑 MCP connection "${a}" returned 401 — OAuth re-authentication required. Go to Settings → Remote MCP to reconnect.`,{type:`warning`,duration:1e4}),e.agentWorker?.postMessage({payload:{connectionId:r,success:!1},type:`mcp-reauth-result`});e.events.emit(`mcp-reauth-required`,{connectionId:r,label:a})}),$.set(`manage-tools`,async(e,t,n)=>{let{action:r,toolNames:i,profileId:a}=n;if(r===`activate_profile`&&a)await l.activateProfile(t,a);else if((r===`enable`||r===`disable`)&&i){let e=r===`enable`;for(let n of i)await l.setToolEnabled(t,n,e)}let o=n.groupId||`br:main`;e.agentWorker?.postMessage({type:`update-tools`,payload:{enabledTools:l.enabledTools,groupId:o,systemPromptOverride:l.systemPromptOverride}})}),$.set(`send-notification`,(e,t,n)=>{let{title:r,body:i,groupId:a}=n;a&&e.schedulerTriggeredGroups.has(a)?S(`⚠️ Notification blocked — scheduled tasks triggered via push cannot send push notifications (recursion prevention).`,{type:`warning`,duration:8e3}):ne(`/push/broadcast`).then(e=>{fetch(e,{body:JSON.stringify({title:r,body:i}),headers:{"Content-Type":`application/json`},method:`POST`}).catch(e=>console.error(`Failed to broadcast push notification:`,e))})}),$.set(`vm-status`,(e,t,n)=>{e.vmStatus={...n},e.events.emit(`vm-status`,e.vmStatus)}),$.set(`vm-terminal-opened`,(e,t,n)=>{e.events.emit(`vm-terminal-opened`,n)}),$.set(`vm-terminal-output`,(e,t,n)=>{e.events.emit(`vm-terminal-output`,n)}),$.set(`vm-terminal-closed`,(e,t,n)=>{e.events.emit(`vm-terminal-closed`,n)}),$.set(`vm-workspace-synced`,(e,t,n)=>{e.events.emit(`file-change`,{groupId:n?.groupId})}),$.set(`vm-terminal-error`,(e,t,n)=>{e.events.emit(`vm-terminal-error`,n)}),$.set(`open-file`,(e,t,n)=>{e.events.emit(`open-file`,n)}),$.set(`send-file`,(e,t,n)=>{let{groupId:r,path:i}=n;(async()=>{e.router?.setTyping(r,!0);try{await e.router?.send(r,``,[{path:i,fileName:i.split(`/`).pop()||i,mimeType:`application/octet-stream`,size:0}])}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`send-file: delivery failed:`,e),S(`Failed to send file to peer: ${t}`,{type:`error`,duration:6e3})}finally{e.router?.setTyping(r,!1)}})()}),$.set(`render-component`,(e,t,n)=>{let{groupId:r,envelope:i}=n;if(e.events.emit(`a2ui-surface`,{groupId:r,envelope:i}),r.startsWith(`peer:`)){let t=e.router?.findChannel(r);t&&`sendA2UI`in t&&t.sendA2UI(r,i).catch(e=>console.error(`render-component: peer delivery failed:`,e))}r.startsWith(`room:`)&&e.roomManager.broadcastA2UI(x(r),i)}),$.set(`request-native-ai-task`,(e,t,n)=>{let{id:r,groupId:i,taskType:a,input:o}=n;(async()=>{try{let n=t=>{e.events.emit(`model-download-progress`,{groupId:i,status:t.status,progress:t.progress,message:t.message})},s=i?e.inFlightEffectiveProviderByGroup?.get(i):void 0,c=s?.providerId||e.provider,l=s?.model||s?.providerConfig?.defaultModel||e.model,u=await q(e)||``,d=J(e,c,``),f=await k({taskType:a,input:o,groupId:i,db:t,providerId:c,model:l,apiKey:u,headers:d,maxTokens:e.maxTokens,onProgress:n});i&&e.events.emit(`model-download-progress`,{groupId:i,status:`done`,progress:1});let p=globalThis.pendingNativeAiResolvers;p&&p[r]&&(p[r].resolve(f),delete p[r]),e.agentWorker?.postMessage({type:`native-ai-task-response`,payload:{id:r,response:f}})}catch(t){i&&e.events.emit(`model-download-progress`,{groupId:i,status:`error`,progress:null,message:t?.message||String(t)});let n=globalThis.pendingNativeAiResolvers;n&&n[r]&&(n[r].reject(t instanceof Error?t:Error(String(t))),delete n[r]),e.agentWorker?.postMessage({type:`native-ai-task-response`,payload:{id:r,error:t?.message||String(t)}})}})()}),$.set(`ask-user`,(e,t,n)=>{e.events.emit(`ask-user`,n)});async function se(e,t,n){let r=$.get(n?.type);r&&await r(e,t,n?.payload,n)}async function ce(t,i,o=n){let s=(await P(i)).find(e=>e.groupId===o),c=s?.pinnedProvider??t.provider,d=s?.pinnedModel??(s?.pinnedProvider?e(s.pinnedProvider)?.defaultModel??t.model:t.model),f=(e(c)??t.providerConfig)?.requiresApiKey!==!1,p=c===t.provider?await q(t):await t.getApiKeyForSpecificProvider(i,c);if(f&&!p){let e=`API key not configured. Cannot compact context.`;t.events.emit(`provider-help`,{providerId:c,reason:e,helpType:I(c,e,f)}),t.events.emit(`error`,{groupId:o,error:e});return}if(t.state!==`idle`){t.events.emit(`error`,{groupId:o,error:`Cannot compact while processing. Wait for the current response to finish.`});return}t.setState(`thinking`,o),t.events.emit(`typing`,{groupId:o,typing:!0});let m=``;try{m=await u(i,o,`MEMORY.md`)}catch{}let h=l.enabledTools,g=T.getPeerState(o)||void 0,v=A(t.assistantName,m,h,l.systemPromptOverride,g,void 0,{groupId:o}),x=d;c===`prompt_api`&&(d===`browser-built-in`||!d)&&!O()&&(x=await a(i,r.PROMPT_API_FALLBACK_MODEL)||`onnx-community/Qwen3-0.6B-ONNX`);let S=y(x),w=_(v),D=await R(o,200),k=C(D,{contextLimit:S,systemPromptTokens:w,maxOutputTokens:4096,skimTop:t.contextCompressionEnabled}).messages;if(await a(i,r.COMPACTION_ENGINE_PREFERENCE)===`builtin_task_api`)try{let e=k.map(e=>`${e.role.toUpperCase()}: ${typeof e.content==`string`?e.content:JSON.stringify(e.content)}`).join(`
|
|
4
|
+
|
|
5
|
+
`),n=await b(e,{type:`key-points`,format:`markdown`,length:`medium`});await t.handleCompactDone(i,o,n);return}catch(e){await H(t,i,o,`⚠️ Built-in Task API compaction failed, falling back to provider: ${e instanceof Error?e.message:String(e)}`)}if(c===`prompt_api`){if(O()||await j(),!O()){t.events.emit(`error`,{groupId:o,error:`Prompt API is not available in this browser. Switch provider or enable experimental browser flags.`}),t.events.emit(`typing`,{groupId:o,typing:!1}),t.setState(`idle`,o);return}let e=new AbortController;t.promptControllers.set(o,e);try{let n=await E(ee(v),k,e.signal,async e=>{await se(t,i,e)},o);await t.handleCompactDone(i,o,n)}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;await H(t,i,o,`⚠️ Error: Compaction failed: ${e instanceof Error?e.message:String(e)}`)}finally{t.promptControllers.delete(o)}return}let M=t.createProviderRequestId(o);t.agentWorker?.postMessage({type:`compact`,payload:{apiKey:p,assistantName:t.assistantName,contextCompression:t.contextCompressionEnabled,contextLimit:y(x),groupId:o,memory:m,messages:k,model:d,provider:c,providerHeaders:J(t,c,M,s?.providerRuntimeOverrides),rateLimitAutoAdapt:t.rateLimitAutoAdapt,rateLimitCallsPerMinute:t.rateLimitCallsPerMinute,storageHandle:await a(i,r.STORAGE_HANDLE),systemPrompt:v}})}export{ce as compactContext};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e,r as t,t as n}from"./rolldown-runtime-DBVvNlSN.js";import{t as r}from"./browser-B1SoUj6D.js";import{I as i,L as a,P as o,m as s,n as c,o as l,r as u,u as d}from"./config-C16fFWtP.js";import{t as f}from"./get-config-Bkvl__ZS.js";import{n as p}from"./html-BwtE_7wp.js";import{E as m,X as h,Z as g,g as _,t as v,u as y}from"./orchestrator-
|
|
1
|
+
import{i as e,r as t,t as n}from"./rolldown-runtime-DBVvNlSN.js";import{t as r}from"./browser-B1SoUj6D.js";import{I as i,L as a,P as o,m as s,n as c,o as l,r as u,u as d}from"./config-C16fFWtP.js";import{t as f}from"./get-config-Bkvl__ZS.js";import{n as p}from"./html-BwtE_7wp.js";import{E as m,X as h,Z as g,g as _,t as v,u as y}from"./orchestrator-Li1UAsv7.js";import{t as b}from"./ulid-BSJxYh6W.js";import{a as x,c as S,o as C,r as w,s as T,t as E}from"./tools-D-52Zmfc.js";import{r as ee,t as D}from"./headless-D6caaop6.js";import{t as O}from"./get-group-dir-D--BiEyk.js";import{t as te}from"./write-group-file-R67DjJ-q.js";import{n as k}from"./parse-boolean-config-BigJ9U46.js";import{i as A,r as ne,t as re}from"./tools-CHxUdGxZ.js";import"./tools-C4xNCwrc.js";import{t as ie}from"./buffer-B98mcmH0.js";import{S as ae,a as oe,l as se,x as ce}from"./provider-YPZmsuHR.js";import{a as le,c as ue,d as de,f as fe,h as pe,i as me,l as he,m as ge,n as _e,o as ve,p as ye,r as be,s as xe,t as j,u as Se,y as Ce}from"./is-typed-array-BHSlUYDn.js";import{r as we,t as Te}from"./credentials-CJUQ5Ep2.js";import{n as Ee,r as M}from"./crypto-4ETeplbS.js";import{a as De,i as N,n as P,o as Oe,r as ke,s as Ae,t as je}from"./connections-Dxwj8yK_.js";import{n as F}from"./chat-template-CXKs8lFR.js";import{n as Me,r as Ne,t as Pe}from"./create-model-cache-fetch-B0mSCEk6.js";import{a as Fe,i as Ie}from"./transformers-CQ9ss9rD.js";import{i as Le,n as Re,o as ze,r as Be,u as Ve}from"./mcp-reconnect-iPZPihwX.js";import{a as He,r as Ue}from"./rooms-BurBI7is.js";import{a as We,n as Ge,r as Ke,t as qe}from"./mime-ClqNyXPc.js";import{t as Je}from"./upload-group-file-A8kB7lvO.js";import{n as Ye,t as Xe}from"./filename-kBumOBho.js";import{t as Ze}from"./write-group-file-bytes-A8kB7lvO.js";import{i as Qe,n as $e,r as et,t as tt}from"./move-group-entry-QQ9Hkk54.js";import{n as nt,r as rt,t as it}from"./coerce-44KevvoY.js";import{n as at,t as ot}from"./base64-Cwcsjvcj.js";import{_ as st,c as ct,g as lt,l as ut,n as dt,o as ft,p as pt,r as mt,s as ht,t as gt,u as _t}from"./discover-skills-BWJB8HUA.js";import{i as vt,n as yt,r as bt,t as xt}from"./system-prompt-BmswoQwF.js";function St(e,t,n,r){return{type:`thinking-log`,payload:{groupId:e,level:t,timestamp:Date.now(),label:n,message:r||``}}}function Ct(e,t,n){return{type:`tool-activity`,payload:{groupId:e,tool:t,status:n}}}let wt=null;function Tt(e){wt=e}const Et=/* @__PURE__ */ new Map;function Dt(e,t){Et.set(e,t)}function Ot(e){Et.delete(e)}function kt(e){let t=e?.payload?.groupId;t&&Et.has(t)?Et.get(t).push(e):wt?wt(e):typeof self<`u`&&typeof self.postMessage==`function`&&self.postMessage(e)}const At=/* @__PURE__ */ new Set;async function jt(){It()}async function Mt(e,t=900,n=null){{let e=Pt();return`Error: WebVM is not available. The VM requires local assets served at /assets/ (alpine-fs.json, libv86.mjs, etc). Use the "javascript" tool for code execution, or the "fetch_url" tool for HTTP requests.`+(e.error?`\nReason: ${e.error}`:e.booting?`
|
|
2
2
|
Reason: VM is still booting in the background...`:``)}}function Nt(){return!1}function Pt(){return{ready:!1,booting:!1,bootAttempted:!1,mode:null,error:`WebVM is disabled. Enable it in Settings to use WebVM.`}}function Ft(){return`disabled`}function It(){let e=Pt();At.forEach(t=>{try{t(e)}catch{}})}var Lt=/* @__PURE__ */ n((e=>{(function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function n(e){return i(o(e),arguments)}function r(e,t){return n.apply(null,[e].concat(t||[]))}function i(e,r){for(var i=1,a=e.length,o,s=``,c=0,l,u,d,f,p,m,h;c<a;c++)if(typeof e[c]==`string`)s+=e[c];else if(typeof e[c]==`object`){if(u=e[c],u.keys)for(o=r[i],l=0;l<u.keys.length;l++){if(o==null)throw Error(n(`[sprintf] Cannot access property "%s" of undefined value "%s"`,u.keys[l],u.keys[l-1]));o=o[u.keys[l]]}else o=u.param_no?r[u.param_no]:r[i++];if(t.not_type.test(u.type)&&t.not_primitive.test(u.type)&&o instanceof Function&&(o=o()),t.numeric_arg.test(u.type)&&typeof o!=`number`&&isNaN(o))throw TypeError(n(`[sprintf] expecting number but found %T`,o));switch(t.number.test(u.type)&&(m=o>=0),u.type){case`b`:o=parseInt(o,10).toString(2);break;case`c`:o=String.fromCharCode(parseInt(o,10));break;case`d`:case`i`:o=parseInt(o,10);break;case`j`:o=JSON.stringify(o,null,u.width?parseInt(u.width):0);break;case`e`:o=u.precision?parseFloat(o).toExponential(u.precision):parseFloat(o).toExponential();break;case`f`:o=u.precision?parseFloat(o).toFixed(u.precision):parseFloat(o);break;case`g`:o=u.precision?String(Number(o.toPrecision(u.precision))):parseFloat(o);break;case`o`:o=(parseInt(o,10)>>>0).toString(8);break;case`s`:o=String(o),o=u.precision?o.substring(0,u.precision):o;break;case`t`:o=String(!!o),o=u.precision?o.substring(0,u.precision):o;break;case`T`:o=Object.prototype.toString.call(o).slice(8,-1).toLowerCase(),o=u.precision?o.substring(0,u.precision):o;break;case`u`:o=parseInt(o,10)>>>0;break;case`v`:o=o.valueOf(),o=u.precision?o.substring(0,u.precision):o;break;case`x`:o=(parseInt(o,10)>>>0).toString(16);break;case`X`:o=(parseInt(o,10)>>>0).toString(16).toUpperCase()}t.json.test(u.type)?s+=o:(t.number.test(u.type)&&(!m||u.sign)?(h=m?`+`:`-`,o=o.toString().replace(t.sign,``)):h=``,f=u.pad_char?u.pad_char===`0`?`0`:u.pad_char.charAt(1):` `,p=u.width-(h+o).length,d=u.width&&p>0?f.repeat(p):``,s+=u.align?h+o+d:f===`0`?h+d+o:d+h+o)}return s}var a=Object.create(null);function o(e){if(a[e])return a[e];for(var n=e,r,i=[],o=0;n;){if((r=t.text.exec(n))!==null)i.push(r[0]);else if((r=t.modulo.exec(n))!==null)i.push(`%`);else if((r=t.placeholder.exec(n))!==null){if(r[2]){o|=1;var s=[],c=r[2],l=[];if((l=t.key.exec(c))!==null)for(s.push(l[1]);(c=c.substring(l[0].length))!==``;)if((l=t.key_access.exec(c))!==null)s.push(l[1]);else if((l=t.index_access.exec(c))!==null)s.push(l[1]);else throw SyntaxError(`[sprintf] failed to parse named argument key`);else throw SyntaxError(`[sprintf] failed to parse named argument key`);r[2]=s}else o|=2;if(o===3)throw Error(`[sprintf] mixing positional and named placeholders is not (yet) supported`);i.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}else throw SyntaxError(`[sprintf] unexpected placeholder`);n=n.substring(r[0].length)}return a[e]=i}e!==void 0&&(e.sprintf=n,e.vsprintf=r),typeof window<`u`&&(window.sprintf=n,window.vsprintf=r,typeof define==`function`&&define.amd&&define(function(){return{sprintf:n,vsprintf:r}}))})()})),Rt=/* @__PURE__ */ e(r(),1),zt=ie(),Bt=Lt();const Vt=(e,t,n)=>{let r=e instanceof RegExp?Ht(e,n):e,i=t instanceof RegExp?Ht(t,n):t,a=r!==null&&i!=null&&Ut(r,i,n);return a&&{start:a[0],end:a[1],pre:n.slice(0,a[0]),body:n.slice(a[0]+r.length,a[1]),post:n.slice(a[1]+i.length)}},Ht=(e,t)=>{let n=t.match(e);return n?n[0]:null},Ut=(e,t,n)=>{let r,i,a,o,s,c=n.indexOf(e),l=n.indexOf(t,c+1),u=c;if(c>=0&&l>0){if(e===t)return[c,l];for(r=[],a=n.length;u>=0&&!s;){if(u===c)r.push(u),c=n.indexOf(e,u+1);else if(r.length===1){let e=r.pop();e!==void 0&&(s=[e,l])}else i=r.pop(),i!==void 0&&i<a&&(a=i,o=l),l=n.indexOf(t,u+1);u=c<l&&c>=0?c:l}r.length&&o!==void 0&&(s=[a,o])}return s},Wt=`\0SLASH`+Math.random()+`\0`,Gt=`\0OPEN`+Math.random()+`\0`,Kt=`\0CLOSE`+Math.random()+`\0`,qt=`\0COMMA`+Math.random()+`\0`,Jt=`\0PERIOD`+Math.random()+`\0`,Yt=new RegExp(Wt,`g`),Xt=new RegExp(Gt,`g`),Zt=new RegExp(Kt,`g`),Qt=new RegExp(qt,`g`),$t=new RegExp(Jt,`g`),en=/\\\\/g,tn=/\\{/g,nn=/\\}/g,rn=/\\,/g,an=/\\\./g;function on(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function sn(e){return e.replace(en,Wt).replace(tn,Gt).replace(nn,Kt).replace(rn,qt).replace(an,Jt)}function cn(e){return e.replace(Yt,`\\`).replace(Xt,`{`).replace(Zt,`}`).replace(Qt,`,`).replace($t,`.`)}function ln(e,t){for(let n=0;n<t.length;n++)e.push(t[n])}function un(e){let t=[],n=``;for(;;){let r=Vt(`{`,`}`,e);if(!r){let r=e.split(`,`);return r[0]=n+r[0],ln(t,r),t}let{pre:i,body:a,post:o}=r,s=i.split(`,`);if(s[0]=n+s[0],s[s.length-1]+=`{`+a+`}`,!o.length)return ln(t,s),t;n=s.pop(),ln(t,s),e=o}}function dn(e,t={}){if(!e)return[];let{max:n=1e5,maxLength:r=4e6,maxDepth:i=1e3,maxRewrites:a=1e3}=t;return e.slice(0,2)===`{}`&&(e=`\\{\\}`+e.slice(2)),vn(sn(e),n,r,i,0,a,!0).map(cn)}function fn(e){return`{`+e+`}`}function pn(e){return/^-?0\d/.test(e)}function mn(e,t){return e<=t}function hn(e,t){return e>=t}function gn(e,t,n,r,i,a){let o=[],s=0;for(let c=0;c<e.length;c++)for(let l=0;l<n.length;l++){if(o.length>=r)return o;let u=e[c]+t+n[l];if(!a||u){if(s+u.length>i)return o;o.push(u),s+=u.length}}return o}function _n(e,t,n,r){let i=e.split(/\.\./),a=[];
|
|
3
3
|
/* c8 ignore start */
|
|
4
4
|
if(i[0]===void 0||i[1]===void 0)return a;
|
|
@@ -1893,7 +1893,7 @@ const restoreGlobals = applyGlobalShadows();
|
|
|
1893
1893
|
`);for(let e=0;e<o.length;e++){let t=o[e],n;if(d){let e=t.length>bV?t.slice(0,bV):t;n=d.test(e)}else n=t.includes(i);if(n){let n=t.length>500?t.slice(0,500)+`…`:t;if(p.push(`${r}:${e+1}: ${n}`),p.length>=500){p.push(`... (results truncated at 500 matches)`),g=!0;return}}}}}}return await v(a||`.`),h&&p.push(`... (file visit limit of ${l} reached; narrow your search with path or file_glob)`),p.length===0?`No matches found.`:p.join(`
|
|
1894
1894
|
`)}async function CV(e,t,n){if(!t.path||typeof t.path!=`string`)return`Error: send_file requires a valid path string.`;let r=t.peer_id&&typeof t.peer_id==`string`&&t.peer_id.trim()?t.peer_id.trim():``,i=r?r.startsWith(`peer:`)?r:`peer:${r}`:n,a=i.startsWith(`peer:`),o=i.startsWith(`room:`);if(!a&&!o)return`Error: send_file only works in peer or room conversations (groupId must start with 'peer:' or 'room:') or when peer_id is specified.`;let s=Xz(t.path);return s?Yz(s)?`Error: send_file path cannot contain '..' segments.`:await C(e,n,s)?(kt({payload:{groupId:i,path:s},type:`send-file`}),`Sending file to ${o?`room`:`peer`}: ${s}. The transfer will proceed in the background — you can continue chatting.`):`Error: send_file could not find ${s} in the workspace.`:`Error: send_file received an empty file path.`}async function wV(e,t,n){return await te(e,n,`MEMORY.md`,t.content),`Memory updated successfully.`}async function TV(e,t,n){return await te(e,n,t.path,t.content),`Written ${t.content.length} bytes to ${t.path}`}async function EV(e,t,n){let r=typeof t.name==`string`?t.name.trim():``,i=await gt(e,n),a=i.skills.map(e=>e.name),o=a.length>0?a.join(`, `):`(none)`;if(!r){let e=`Error: activate_skill requires a skill name. Available skills: ${o}.`;return i.diagnostics.length>0&&(e+=` (Note: ${i.diagnostics.length} skill file(s) had errors: ${i.diagnostics.map(e=>`${e.path}: ${e.message}`).join(`; `)})`),e}let s=await dt(e,n,r);if(!s){let e=i.diagnostics.find(e=>e.path.toLowerCase().includes(r.toLowerCase())||e.message.toLowerCase().includes(r.toLowerCase()));if(e)return`Error: skill "${r}" was found at "${e.path}" but failed to load: ${e.message}. Please fix the frontmatter in SKILL.md. Available skills: ${o}.`;let t=`Error: skill "${r}" was not found in this conversation workspace. Available skills: ${o}.`;return i.diagnostics.length>0&&(t+=` (Note: ${i.diagnostics.length} skill file(s) had errors: ${i.diagnostics.map(e=>`${e.path}: ${e.message}`).join(`; `)})`),t}return s.disableModelInvocation?`Error: skill "${r}" is not available for model-driven activation.`:[`<skill_content name="${s.name}">`,s.body||`(This skill has no instructions.)`,`Skill directory: ${s.basePath}`,`Resolve all relative paths against the skill directory.`,s.resources&&s.resources.length>0?[`<skill_resources>`,...s.resources.map(e=>` <file>${e}</file>`),`</skill_resources>`].join(`
|
|
1895
1895
|
`):``,`</skill_content>`].filter(Boolean).join(`
|
|
1896
|
-
`)}async function DV(e,t,n,r){if(ee()){let i=r?.invokeContext;return await ft({taskType:t,input:n,groupId:e,providerId:i?.provider,model:i?.model,apiKey:i?.apiKey,maxTokens:i?.maxTokens,headers:i?.providerHeaders,db:r?.db||i?.db})}let i=b();return kt({type:`request-native-ai-task`,payload:{id:i,groupId:e,taskType:t,input:n}}),await new Promise((e,t)=>{globalThis.pendingNativeAiResolvers=globalThis.pendingNativeAiResolvers||{},globalThis.pendingNativeAiResolvers[i]={resolve:e,reject:t}})}async function OV(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for summarize_text`;try{return await DV(t,`summarize`,{text:r,type:e.type,format:e.format,length:e.length,preference:e.preference,context:e.context,outputLanguage:e.outputLanguage,overridePrompt:e.overridePrompt,sharedContext:e.sharedContext},n)}catch(e){return`Error summarizing text: ${e instanceof Error?e.message:String(e)}`}}async function kV(e,t,n){let r=String(e.prompt||``).trim();if(!r)return`Error: prompt is required for write_text`;try{return await DV(t,`write`,{prompt:r,context:e.context,tone:e.tone,format:e.format,length:e.length,outputLanguage:e.outputLanguage,sharedContext:e.sharedContext},n)}catch(e){return`Error writing text: ${e instanceof Error?e.message:String(e)}`}}async function AV(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for rewrite_text`;try{return await DV(t,`rewrite`,{text:r,tone:e.tone,format:e.format,length:e.length,context:e.context,outputLanguage:e.outputLanguage,sharedContext:e.sharedContext},n)}catch(e){return`Error rewriting text: ${e instanceof Error?e.message:String(e)}`}}async function jV(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for proofread_text`;try{return await DV(t,`proofread`,{text:r,context:e.context},n)}catch(e){return`Error proofreading text: ${e instanceof Error?e.message:String(e)}`}}async function MV(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for detect_language`;try{let e=await DV(t,`detect-language`,{text:r},n);return typeof e==`string`?e:JSON.stringify(e,null,2)}catch(e){return`Error detecting language: ${e instanceof Error?e.message:String(e)}`}}async function NV(e,t,n){let r=String(e.text||``).trim(),i=String(e.sourceLanguage||``).trim(),a=String(e.targetLanguage||``).trim();if(!r||!i||!a)return`Error: text, sourceLanguage, and targetLanguage are required for translate_text`;try{return await DV(t,`translate`,{text:r,sourceLanguage:i,targetLanguage:a},n)}catch(e){return`Error translating text: ${e instanceof Error?e.message:String(e)}`}}async function PV(e,t,n){let r=e.text;if(!r||Array.isArray(r)&&r.length===0)return`Error: text is required for embed_text`;try{let i=await DV(t,`semantic-embedder`,{text:r,taskType:e.taskType},n);return typeof i==`string`?i:JSON.stringify(i,null,2)}catch(e){return`Error generating embeddings: ${e instanceof Error?e.message:String(e)}`}}async function FV(e,t={}){let{maxRetries:n=3,baseDelayMs:r=1e3,maxDelayMs:i=3e4,jitterFactor:a=.5,shouldRetry:o=()=>!0,onRetry:s,signal:c}=t,l;for(let t=0;t<=n;t++){if(c?.aborted)throw c.reason??new DOMException(`Aborted`,`AbortError`);try{return await e()}catch(e){if(l=e,e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`AbortError`)throw e;if(t>=n||!o(e,t+1))break;let u=h(t,r,i,a);s&&s(t+1,n,u,e),await g(u,c)}}throw l}const IV=/* @__PURE__ */ new Set([408,429,500,502,503,504]);function LV(e){return/network|ECONNRESET|ECONNREFUSED|ETIMEDOUT|fetch failed|EAI_AGAIN|EAI_NONAME|getaddrinfo/i.test(e.message)}function RV(e){if(e instanceof TypeError)return!0;if(typeof e?.status==`number`)return IV.has(e.status);if(e instanceof Error){let t=e.message.match(/\b(4\d{2}|5\d{2})\b/);if(t)return IV.has(Number(t[1]));if(LV(e))return!0}return!1}function zV(e){return e instanceof TypeError?!0:e&&typeof e.status==`number`?IV.has(e.status):e instanceof Error&&LV(e)}const BV=/* @__PURE__ */ new Set([`create_task`,`update_task`,`delete_task`,`enable_task`,`disable_task`,`send_notification`,`create_room`,`invite_to_room`,`leave_room`]);function VV(e){if(!Array.isArray(e))return null;let t=e.map(e=>typeof e==`string`?e:typeof e?.name==`string`?e.name:null).filter(Boolean);return new Set(t)}function HV(e,t){let n=VV(t);return n&&!n.has(e)?`Tool "${e}" is not allowed in the current context. Do not call it again. Use one of the available tools or ask for help.`:null}function UV(e,t,n){return(t||n)&&e===`run_task`?`Tool "run_task" cannot be called from within a task execution to prevent infinite loops.`:null}function WV(e,t){return t&&BV.has(e)?`Tool "${e}" is not allowed during scheduled task execution to prevent recursion.`:null}function GV(e){return ee()&&D.has(e)?`Tool "${e}" is not available in headless CLI mode. It requires a browser UI.`:null}function KV(e,t={}){return HV(e,t.allowedTools)||UV(e,t.isScheduledTask,t.isTaskExecution)||WV(e,t.isScheduledTask)||GV(e)||null}async function qV(e,t,n,r,i={},a){let o=await w(e,r,t);if(!o)return`Unknown tool: ${t}`;let s=i.declarativeDepth||0;if(s>=8)return`Tool error (${t}): declarative tool nesting limit exceeded.`;if(o.execution.type===`tool`){let c=o.execution.name;return c?await a(e,c,o.execution.input?{...n,...o.execution.input}:n,r,{...i,declarativeDepth:s+1}):`Tool error (${t}): declarative tool target is missing.`}return o.execution.type===`bash`?await Wz(e,{command:o.execution.command,stdin:JSON.stringify(n)},r):await eV(e,{code:o.execution.code,data:JSON.stringify(n)})}let JV=null;async function YV(){return JV||=import(`./git-BmMlwIMP.js`),JV}async function XV(e,t,n,r){let i=await YV();return await fB(e,t,n,r,{configKeys:{GIT_CORS_PROXY:u.GIT_CORS_PROXY,GIT_PROXY_URL:u.GIT_PROXY_URL,GIT_AUTHOR_NAME:u.GIT_AUTHOR_NAME,GIT_AUTHOR_EMAIL:u.GIT_AUTHOR_EMAIL},getConfig:f,getGroupDir:O,getProxyUrl:i.getProxyUrl,getRemoteUrl:i.getRemoteUrl,gitAdd:i.gitAdd,gitBranch:i.gitBranch,gitCheckout:i.gitCheckout,gitClone:i.gitClone,gitCommit:i.gitCommit,gitConfig:i.gitConfig,gitDeleteBranch:i.gitDeleteBranch,gitDeleteRepo:i.gitDeleteRepo,gitDiff:i.gitDiff,gitFetch:i.gitFetch,gitInit:i.gitInit,gitListBranches:i.gitListBranches,gitListRepos:i.gitListRepos,gitListTags:i.gitListTags,gitLog:i.gitLog,gitMerge:i.gitMerge,gitPull:i.gitPull,gitPush:i.gitPush,gitReadFileAtRef:i.gitReadFileAtRef,gitRemote:i.gitRemote,gitReset:i.gitReset,gitShow:i.gitShow,gitStatus:i.gitStatus,gitTag:i.gitTag,gitUnstage:i.gitUnstage,readGroupFile:T,resolveGitCredentials:we})}const $=/* @__PURE__ */ new Map;$.set(`bash`,(e,t,n)=>Wz(e,t,n)),$.set(`read_file`,(e,t,n)=>yV(e,t,n)),$.set(`open_file`,(e,t,n)=>_V(e,t,n)),$.set(`attach_file_to_chat`,(e,t,n)=>uV(e,t,n)),$.set(`send_file`,(e,t,n)=>CV(e,t,n)),$.set(`write_file`,(e,t,n)=>TV(e,t,n)),$.set(`delete_file`,(e,t,n)=>pV(e,t,n)),$.set(`move_file`,(e,t,n)=>gV(e,t,n)),$.set(`copy_file`,(e,t,n)=>dV(e,t,n)),$.set(`create_directory`,(e,t,n)=>fV(e,t,n)),$.set(`patch_file`,(e,t,n)=>vV(e,t,n)),$.set(`list_files`,(e,t,n)=>hV(e,t,n)),$.set(`manage_tools`,(e,t,n)=>rV(t,n)),$.set(`list_tool_profiles`,e=>nV(e)),$.set(`fetch_url`,(e,t,n)=>aB(e,t,n,{buildAuthHeaders:Te,fetchImpl:fetch,fetchMaxResponse:s,isRetryableFetchError:zV,post:kt,resolveGitCredentials:we,resolveServiceCredentials:ze,retryableStatusCodes:IV,stripHtml:p,uploadGroupFile:Je,withRetry:FV})),$.set(`fetch_file`,(e,t,n)=>rB(e,t,n,{buildAuthHeaders:Te,fetchImpl:fetch,isRetryableFetchError:zV,post:kt,resolveGitCredentials:we,resolveServiceCredentials:ze,retryableStatusCodes:IV,uploadGroupFile:Je,withRetry:FV,writeGroupFile:te})),$.set(`update_memory`,(e,t,n)=>wV(e,t,n)),$.set(`create_task`,(e,t,n)=>LB(t,n)),$.set(`javascript`,(e,t)=>eV(e,t)),$.set(`activate_skill`,(e,t,n)=>EV(e,t,n)),$.set(`list_tasks`,(e,t,n)=>HB(e,n)),$.set(`update_task`,(e,t,n)=>WB(e,t,n)),$.set(`enable_task`,(e,t,n)=>VB(e,t,n)),$.set(`disable_task`,(e,t,n)=>BB(e,t,n)),$.set(`delete_task`,(e,t,n)=>RB(t,n)),$.set(`run_task`,(e,t,n)=>UB(e,t,n)),$.set(`clear_chat`,(e,t,n)=>KB(n)),$.set(`show_toast`,(e,t)=>sV(t)),$.set(`send_notification`,(e,t,n)=>oV(t,n)),$.set(`create_room`,(e,t)=>SB(t)),$.set(`invite_to_room`,(e,t,n)=>CB(t,n)),$.set(`leave_room`,(e,t,n)=>wB(t,n)),$.set(`list_room_members`,(e,t,n)=>TB(e,t,n)),$.set(`prompt_peer`,(e,t,n)=>DB(e,t,n)),$.set(`list_peers`,(e,t,n)=>OB(e,t,n));const ZV=(e,t,n)=>Jz(e,t,n);$.set(`manage_email`,ZV),$.set(`manage_integration`,ZV),$.set(`email_read_messages`,(e,t,n)=>QV(e,`manage_email`,{...t,action:`read_messages`},n)),$.set(`integration_read_messages`,(e,t,n)=>QV(e,`manage_email`,{...t,action:`read_messages`},n)),$.set(`email_send_message`,(e,t,n)=>QV(e,`manage_email`,{...t,action:`send_message`},n)),$.set(`integration_send_message`,(e,t,n)=>QV(e,`manage_email`,{...t,action:`send_message`},n)),$.set(`remote_mcp_list_tools`,(e,t,n)=>bB(e,t,n,{callRemoteMcpTool:Be,listRemoteMcpTools:Le,McpReauthRequiredError:Re,post:kt})),$.set(`remote_mcp_call_tool`,(e,t,n)=>xB(e,t,n,{callRemoteMcpTool:Be,listRemoteMcpTools:Le,McpReauthRequiredError:Re,post:kt}));for(let e of[`git_clone`,`git_checkout`,`git_branch`,`git_status`,`git_add`,`git_log`,`git_diff`,`git_branches`,`git_list_repos`,`git_delete_repo`,`git_commit`,`git_pull`,`git_push`,`git_merge`,`git_reset`,`git_fetch`,`git_read_file_at_ref`,`git_show`,`git_delete_branch`,`git_init`,`git_tag`,`git_remote`,`git_config`,`git_unstage`])$.set(e,(t,n,r)=>XV(t,e,n,r));$.set(`list_components`,()=>tV()),$.set(`render_component`,(e,t,n)=>aV(t,n)),$.set(`spawn_subagent`,async(e,t,n,r)=>r?.invokeContext?await IB(t,n,r.invokeContext):`Error: spawn_subagent requires an active agent invocation context. This tool cannot be called directly.`),$.set(`get_current_time`,(e,t)=>qB(t)),$.set(`search_files`,(e,t,n)=>SV(e,t,n,{maxFileBytes:E.searchFilesMaxFileBytes,maxFilesVisited:E.searchFilesMaxFilesVisited,skipDirs:E.searchFilesSkipDirsSet})),$.set(`diff_files`,(e,t,n)=>mV(e,t,n)),$.set(`ask_user`,(e,t,n)=>GB(t,n)),$.set(`web_search`,(e,t)=>cV(t)),$.set(`summarize_text`,(e,t,n,r)=>OV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`write_text`,(e,t,n,r)=>kV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`rewrite_text`,(e,t,n,r)=>AV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`proofread_text`,(e,t,n,r)=>jV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`detect_language`,(e,t,n,r)=>MV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`translate_text`,(e,t,n,r)=>NV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`embed_text`,(e,t,n,r)=>PV(t,n,{db:e,invokeContext:r?.invokeContext}));async function QV(e,t,n,r,i={}){try{let a=KV(t,i);if(a)return a;let o=$.get(t);return o?await o(e,n,r,i):await qV(e,t,n,r,i,QV)}catch(e){return`Tool error (${t}): ${e instanceof Error?e.message:String(e)}`}}const $V=880803840;var eH=class{emitter;expectedTotalBytes;logEvents;suppressInitialZero;_hasEmitted=!1;hasStreamEvents=!1;urlBytesMap=/* @__PURE__ */ new Map;maxProgressFraction=0;maxLoadedBytes=0;maxEffectiveTotal=0;lastReportedMessage=``;lastReportedFraction=null;constructor(e,t){this.emitter=e,this.expectedTotalBytes=t?.expectedTotalBytes===void 0?$V:t.expectedTotalBytes,this.logEvents=t?.logEvents??!1,this.suppressInitialZero=t?.suppressInitialZero??!1}get hasEmitted(){return this._hasEmitted}markActive(){this._hasEmitted=!0}onStreamProgress(e,t,n,r=!1){if(!Number.isFinite(t)||t<0)return;this.hasStreamEvents=!0,this.urlBytesMap.set(e,{received:t,total:n,complete:r});let i=0,a=0,o=this.urlBytesMap.size>0;for(let e of this.urlBytesMap.values())i+=e.received,e.total!=null&&Number.isFinite(e.total)&&e.total>0&&(a+=e.total),e.complete||(o=!1);let s=this.maxEffectiveTotal,c=this.expectedTotalBytes>0?this.expectedTotalBytes:0,l=Math.max(a,c);this.maxEffectiveTotal=Math.max(this.maxEffectiveTotal,l);let u=this.maxEffectiveTotal;if(this.maxLoadedBytes=Math.max(this.maxLoadedBytes,i),u>0){let e=Math.min(1,Math.max(0,this.maxLoadedBytes/u)),t=o?e:Math.min(.99,e);this.maxProgressFraction=u>s&&s>0?t:Math.max(this.maxProgressFraction,t);let n=`Downloading Prompt API model... (${(this.maxLoadedBytes/1048576).toFixed(1)} / ${(u/1048576).toFixed(1)} MB · ${Math.min(o?100:99,Math.round(this.maxProgressFraction*100))}%)`;this.emit(this.maxProgressFraction,n)}else{let e=`Downloading Prompt API model... (${(this.maxLoadedBytes/1048576).toFixed(1)} MB downloaded)`;this.emit(null,e)}}onProgressEvent(e){let t=Number(e?.loaded),n=Number(e?.total);if(this.logEvents&&console.log(`[PromptApiProgressAggregator] onProgressEvent:`,{loaded:t,total:n,type:e?.type}),!(!Number.isFinite(t)||t<0)&&!(this.hasStreamEvents&&t<=1)&&!(this.suppressInitialZero&&!this._hasEmitted&&t===0&&(!Number.isFinite(n)||n<=1))){if(Number.isFinite(n)&&n>1){let e=this.expectedTotalBytes>0?this.expectedTotalBytes:0,r=Math.max(n,e,this.maxEffectiveTotal);this.maxEffectiveTotal=r,this.maxLoadedBytes=Math.max(this.maxLoadedBytes,t);let i=Math.min(.99,this.maxLoadedBytes/r);this.maxProgressFraction=Math.max(this.maxProgressFraction,i);let a=(this.maxLoadedBytes/1048576).toFixed(1),o=(r/1048576).toFixed(1),s=Math.round(this.maxProgressFraction*100);this.emit(this.maxProgressFraction,`Downloading Prompt API model... (${a} / ${o} MB · ${s}%)`)}else if(t>=0&&t<=1){let e=Math.max(0,Math.min(1,t)),n=e>=1?.99:e;this.maxProgressFraction=Math.max(this.maxProgressFraction,n);let r=Math.max(this.maxEffectiveTotal,this.expectedTotalBytes);if(r>0){let e=(Math.round(this.maxProgressFraction*r)/1048576).toFixed(1),t=(r/1048576).toFixed(1),n=Math.round(this.maxProgressFraction*100);this.emit(this.maxProgressFraction,`Downloading Prompt API model... (${e} / ${t} MB · ${n}%)`)}else{let e=Math.round(this.maxProgressFraction*100);this.emit(this.maxProgressFraction,`Downloading Prompt API model... ${e}%`)}}else if(t>1){this.maxLoadedBytes=Math.max(this.maxLoadedBytes,t);let e=Math.max(this.maxEffectiveTotal,this.expectedTotalBytes);if(e>0){let t=Math.max(this.maxLoadedBytes,e),n=Math.min(.99,this.maxLoadedBytes/t);this.maxProgressFraction=Math.max(this.maxProgressFraction,n);let r=(this.maxLoadedBytes/1048576).toFixed(1),i=(t/1048576).toFixed(1),a=Math.round(this.maxProgressFraction*100);this.emit(this.maxProgressFraction,`Downloading Prompt API model... (${r} / ${i} MB · ${a}%)`)}else{let e=(this.maxLoadedBytes/1048576).toFixed(1);this.emit(null,`Downloading Prompt API model... (${e} MB downloaded)`)}}}}onDone(){this.maxProgressFraction=1,this.emitter(`done`,1,`Prompt API model ready.`)}onError(e){let t=e instanceof Error?e.message:String(e);this.emitter(`error`,null,t)}emit(e,t){this._hasEmitted=!0,(this.lastReportedMessage!==t||this.lastReportedFraction!==e)&&(this.lastReportedMessage=t,this.lastReportedFraction=e,this.emitter(`running`,e,t))}};const tH=re.filter(e=>x.enabledToolNames.includes(e.name));function nH(){return!0}const rH={expectedInputs:[{type:`text`,languages:[`en`]}],expectedOutputs:[{type:`text`,languages:[`en`]}]},iH={key:null,session:null,cleanupTimer:null};function aH(){iH.cleanupTimer&&=(clearTimeout(iH.cleanupTimer),null)}async function oH(){aH(),iH.session&&=(await Promise.resolve(iH.session.destroy?.()).catch(()=>{}),null),iH.key=null}function sH(){aH(),iH.cleanupTimer=setTimeout(()=>{oH()},1e4)}function cH(e){return typeof e?.content==`string`?e.content:Array.isArray(e?.content)?e.content.map(e=>e?.type===`text`?e.text||``:e?.type===`tool_use`?`[TOOL_CALL ${e.name}] ${JSON.stringify(e.input||{})}`:e?.type===`tool_result`?`[TOOL_RESULT ${e.tool_use_id}] ${String(e.content||``)}`:e?.type===`attachment`?`[ATTACHMENT ${e.mediaType}] ${e.fileName} (${e.mimeType})`:``).filter(Boolean).join(`
|
|
1896
|
+
`)}async function DV(e,t,n,r){if(ee()){let i=r?.invokeContext;return await ft({taskType:t,input:n,groupId:e,providerId:i?.provider,model:i?.model,apiKey:i?.apiKey,maxTokens:i?.maxTokens,headers:i?.providerHeaders,db:r?.db||i?.db})}let i=b();return kt({type:`request-native-ai-task`,payload:{id:i,groupId:e,taskType:t,input:n}}),await new Promise((e,t)=>{globalThis.pendingNativeAiResolvers=globalThis.pendingNativeAiResolvers||{},globalThis.pendingNativeAiResolvers[i]={resolve:e,reject:t}})}async function OV(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for summarize_text`;try{return await DV(t,`summarize`,{text:r,type:e.type,format:e.format,length:e.length,preference:e.preference,context:e.context,outputLanguage:e.outputLanguage,overridePrompt:e.overridePrompt,sharedContext:e.sharedContext},n)}catch(e){return`Error summarizing text: ${e instanceof Error?e.message:String(e)}`}}async function kV(e,t,n){let r=String(e.prompt||``).trim();if(!r)return`Error: prompt is required for write_text`;try{return await DV(t,`write`,{prompt:r,context:e.context,tone:e.tone,format:e.format,length:e.length,outputLanguage:e.outputLanguage,sharedContext:e.sharedContext},n)}catch(e){return`Error writing text: ${e instanceof Error?e.message:String(e)}`}}async function AV(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for rewrite_text`;try{return await DV(t,`rewrite`,{text:r,tone:e.tone,format:e.format,length:e.length,context:e.context,outputLanguage:e.outputLanguage,sharedContext:e.sharedContext},n)}catch(e){return`Error rewriting text: ${e instanceof Error?e.message:String(e)}`}}async function jV(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for proofread_text`;try{return await DV(t,`proofread`,{text:r,context:e.context},n)}catch(e){return`Error proofreading text: ${e instanceof Error?e.message:String(e)}`}}async function MV(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for detect_language`;try{let e=await DV(t,`detect-language`,{text:r},n);return typeof e==`string`?e:JSON.stringify(e,null,2)}catch(e){return`Error detecting language: ${e instanceof Error?e.message:String(e)}`}}async function NV(e,t,n){let r=String(e.text||``).trim(),i=String(e.sourceLanguage||``).trim(),a=String(e.targetLanguage||``).trim();if(!r||!i||!a)return`Error: text, sourceLanguage, and targetLanguage are required for translate_text`;try{return await DV(t,`translate`,{text:r,sourceLanguage:i,targetLanguage:a},n)}catch(e){return`Error translating text: ${e instanceof Error?e.message:String(e)}`}}async function PV(e,t,n){let r=e.text;if(!r||Array.isArray(r)&&r.length===0)return`Error: text is required for embed_text`;try{let i=await DV(t,`semantic-embedder`,{text:r,taskType:e.taskType},n);return typeof i==`string`?i:JSON.stringify(i,null,2)}catch(e){return`Error generating embeddings: ${e instanceof Error?e.message:String(e)}`}}async function FV(e,t={}){let{maxRetries:n=3,baseDelayMs:r=1e3,maxDelayMs:i=3e4,jitterFactor:a=.5,shouldRetry:o=()=>!0,onRetry:s,signal:c}=t,l;for(let t=0;t<=n;t++){if(c?.aborted)throw c.reason??new DOMException(`Aborted`,`AbortError`);try{return await e()}catch(e){if(l=e,e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`AbortError`)throw e;if(t>=n||!o(e,t+1))break;let u=h(t,r,i,a);s&&s(t+1,n,u,e),await g(u,c)}}throw l}const IV=/* @__PURE__ */ new Set([408,429,500,502,503,504]);function LV(e){return/network|ECONNRESET|ECONNREFUSED|ETIMEDOUT|fetch failed|EAI_AGAIN|EAI_NONAME|getaddrinfo/i.test(e.message)}function RV(e){if(e instanceof TypeError)return!0;if(typeof e?.status==`number`)return IV.has(e.status);if(e instanceof Error){let t=e.message.match(/\b(4\d{2}|5\d{2})\b/);if(t)return IV.has(Number(t[1]));if(LV(e))return!0}return!1}function zV(e){return e instanceof TypeError?!0:e&&typeof e.status==`number`?IV.has(e.status):e instanceof Error&&LV(e)}const BV=/* @__PURE__ */ new Set([`create_task`,`update_task`,`delete_task`,`enable_task`,`disable_task`,`send_notification`,`create_room`,`invite_to_room`,`leave_room`]);function VV(e){if(!Array.isArray(e))return null;let t=e.map(e=>typeof e==`string`?e:typeof e?.name==`string`?e.name:null).filter(Boolean);return new Set(t)}function HV(e,t){let n=VV(t);return n&&!n.has(e)?`Tool "${e}" is not allowed in the current context. Do not call it again. Use one of the available tools or ask for help.`:null}function UV(e,t,n){return(t||n)&&e===`run_task`?`Tool "run_task" cannot be called from within a task execution to prevent infinite loops.`:null}function WV(e,t){return t&&BV.has(e)?`Tool "${e}" is not allowed during scheduled task execution to prevent recursion.`:null}function GV(e){return ee()&&D.has(e)?`Tool "${e}" is not available in headless CLI mode. It requires a browser UI.`:null}function KV(e,t={}){return HV(e,t.allowedTools)||UV(e,t.isScheduledTask,t.isTaskExecution)||WV(e,t.isScheduledTask)||GV(e)||null}async function qV(e,t,n,r,i={},a){let o=await w(e,r,t);if(!o)return`Unknown tool: ${t}`;let s=i.declarativeDepth||0;if(s>=8)return`Tool error (${t}): declarative tool nesting limit exceeded.`;if(o.execution.type===`tool`){let c=o.execution.name;return c?await a(e,c,o.execution.input?{...n,...o.execution.input}:n,r,{...i,declarativeDepth:s+1}):`Tool error (${t}): declarative tool target is missing.`}return o.execution.type===`bash`?await Wz(e,{command:o.execution.command,stdin:JSON.stringify(n)},r):await eV(e,{code:o.execution.code,data:JSON.stringify(n)})}let JV=null;async function YV(){return JV||=import(`./git-DjmQ16rm.js`),JV}async function XV(e,t,n,r){let i=await YV();return await fB(e,t,n,r,{configKeys:{GIT_CORS_PROXY:u.GIT_CORS_PROXY,GIT_PROXY_URL:u.GIT_PROXY_URL,GIT_AUTHOR_NAME:u.GIT_AUTHOR_NAME,GIT_AUTHOR_EMAIL:u.GIT_AUTHOR_EMAIL},getConfig:f,getGroupDir:O,getProxyUrl:i.getProxyUrl,getRemoteUrl:i.getRemoteUrl,gitAdd:i.gitAdd,gitBranch:i.gitBranch,gitCheckout:i.gitCheckout,gitClone:i.gitClone,gitCommit:i.gitCommit,gitConfig:i.gitConfig,gitDeleteBranch:i.gitDeleteBranch,gitDeleteRepo:i.gitDeleteRepo,gitDiff:i.gitDiff,gitFetch:i.gitFetch,gitInit:i.gitInit,gitListBranches:i.gitListBranches,gitListRepos:i.gitListRepos,gitListTags:i.gitListTags,gitLog:i.gitLog,gitMerge:i.gitMerge,gitPull:i.gitPull,gitPush:i.gitPush,gitReadFileAtRef:i.gitReadFileAtRef,gitRemote:i.gitRemote,gitReset:i.gitReset,gitShow:i.gitShow,gitStatus:i.gitStatus,gitTag:i.gitTag,gitUnstage:i.gitUnstage,readGroupFile:T,resolveGitCredentials:we})}const $=/* @__PURE__ */ new Map;$.set(`bash`,(e,t,n)=>Wz(e,t,n)),$.set(`read_file`,(e,t,n)=>yV(e,t,n)),$.set(`open_file`,(e,t,n)=>_V(e,t,n)),$.set(`attach_file_to_chat`,(e,t,n)=>uV(e,t,n)),$.set(`send_file`,(e,t,n)=>CV(e,t,n)),$.set(`write_file`,(e,t,n)=>TV(e,t,n)),$.set(`delete_file`,(e,t,n)=>pV(e,t,n)),$.set(`move_file`,(e,t,n)=>gV(e,t,n)),$.set(`copy_file`,(e,t,n)=>dV(e,t,n)),$.set(`create_directory`,(e,t,n)=>fV(e,t,n)),$.set(`patch_file`,(e,t,n)=>vV(e,t,n)),$.set(`list_files`,(e,t,n)=>hV(e,t,n)),$.set(`manage_tools`,(e,t,n)=>rV(t,n)),$.set(`list_tool_profiles`,e=>nV(e)),$.set(`fetch_url`,(e,t,n)=>aB(e,t,n,{buildAuthHeaders:Te,fetchImpl:fetch,fetchMaxResponse:s,isRetryableFetchError:zV,post:kt,resolveGitCredentials:we,resolveServiceCredentials:ze,retryableStatusCodes:IV,stripHtml:p,uploadGroupFile:Je,withRetry:FV})),$.set(`fetch_file`,(e,t,n)=>rB(e,t,n,{buildAuthHeaders:Te,fetchImpl:fetch,isRetryableFetchError:zV,post:kt,resolveGitCredentials:we,resolveServiceCredentials:ze,retryableStatusCodes:IV,uploadGroupFile:Je,withRetry:FV,writeGroupFile:te})),$.set(`update_memory`,(e,t,n)=>wV(e,t,n)),$.set(`create_task`,(e,t,n)=>LB(t,n)),$.set(`javascript`,(e,t)=>eV(e,t)),$.set(`activate_skill`,(e,t,n)=>EV(e,t,n)),$.set(`list_tasks`,(e,t,n)=>HB(e,n)),$.set(`update_task`,(e,t,n)=>WB(e,t,n)),$.set(`enable_task`,(e,t,n)=>VB(e,t,n)),$.set(`disable_task`,(e,t,n)=>BB(e,t,n)),$.set(`delete_task`,(e,t,n)=>RB(t,n)),$.set(`run_task`,(e,t,n)=>UB(e,t,n)),$.set(`clear_chat`,(e,t,n)=>KB(n)),$.set(`show_toast`,(e,t)=>sV(t)),$.set(`send_notification`,(e,t,n)=>oV(t,n)),$.set(`create_room`,(e,t)=>SB(t)),$.set(`invite_to_room`,(e,t,n)=>CB(t,n)),$.set(`leave_room`,(e,t,n)=>wB(t,n)),$.set(`list_room_members`,(e,t,n)=>TB(e,t,n)),$.set(`prompt_peer`,(e,t,n)=>DB(e,t,n)),$.set(`list_peers`,(e,t,n)=>OB(e,t,n));const ZV=(e,t,n)=>Jz(e,t,n);$.set(`manage_email`,ZV),$.set(`manage_integration`,ZV),$.set(`email_read_messages`,(e,t,n)=>QV(e,`manage_email`,{...t,action:`read_messages`},n)),$.set(`integration_read_messages`,(e,t,n)=>QV(e,`manage_email`,{...t,action:`read_messages`},n)),$.set(`email_send_message`,(e,t,n)=>QV(e,`manage_email`,{...t,action:`send_message`},n)),$.set(`integration_send_message`,(e,t,n)=>QV(e,`manage_email`,{...t,action:`send_message`},n)),$.set(`remote_mcp_list_tools`,(e,t,n)=>bB(e,t,n,{callRemoteMcpTool:Be,listRemoteMcpTools:Le,McpReauthRequiredError:Re,post:kt})),$.set(`remote_mcp_call_tool`,(e,t,n)=>xB(e,t,n,{callRemoteMcpTool:Be,listRemoteMcpTools:Le,McpReauthRequiredError:Re,post:kt}));for(let e of[`git_clone`,`git_checkout`,`git_branch`,`git_status`,`git_add`,`git_log`,`git_diff`,`git_branches`,`git_list_repos`,`git_delete_repo`,`git_commit`,`git_pull`,`git_push`,`git_merge`,`git_reset`,`git_fetch`,`git_read_file_at_ref`,`git_show`,`git_delete_branch`,`git_init`,`git_tag`,`git_remote`,`git_config`,`git_unstage`])$.set(e,(t,n,r)=>XV(t,e,n,r));$.set(`list_components`,()=>tV()),$.set(`render_component`,(e,t,n)=>aV(t,n)),$.set(`spawn_subagent`,async(e,t,n,r)=>r?.invokeContext?await IB(t,n,r.invokeContext):`Error: spawn_subagent requires an active agent invocation context. This tool cannot be called directly.`),$.set(`get_current_time`,(e,t)=>qB(t)),$.set(`search_files`,(e,t,n)=>SV(e,t,n,{maxFileBytes:E.searchFilesMaxFileBytes,maxFilesVisited:E.searchFilesMaxFilesVisited,skipDirs:E.searchFilesSkipDirsSet})),$.set(`diff_files`,(e,t,n)=>mV(e,t,n)),$.set(`ask_user`,(e,t,n)=>GB(t,n)),$.set(`web_search`,(e,t)=>cV(t)),$.set(`summarize_text`,(e,t,n,r)=>OV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`write_text`,(e,t,n,r)=>kV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`rewrite_text`,(e,t,n,r)=>AV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`proofread_text`,(e,t,n,r)=>jV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`detect_language`,(e,t,n,r)=>MV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`translate_text`,(e,t,n,r)=>NV(t,n,{db:e,invokeContext:r?.invokeContext})),$.set(`embed_text`,(e,t,n,r)=>PV(t,n,{db:e,invokeContext:r?.invokeContext}));async function QV(e,t,n,r,i={}){try{let a=KV(t,i);if(a)return a;let o=$.get(t);return o?await o(e,n,r,i):await qV(e,t,n,r,i,QV)}catch(e){return`Tool error (${t}): ${e instanceof Error?e.message:String(e)}`}}const $V=880803840;var eH=class{emitter;expectedTotalBytes;logEvents;suppressInitialZero;_hasEmitted=!1;hasStreamEvents=!1;urlBytesMap=/* @__PURE__ */ new Map;maxProgressFraction=0;maxLoadedBytes=0;maxEffectiveTotal=0;lastReportedMessage=``;lastReportedFraction=null;constructor(e,t){this.emitter=e,this.expectedTotalBytes=t?.expectedTotalBytes===void 0?$V:t.expectedTotalBytes,this.logEvents=t?.logEvents??!1,this.suppressInitialZero=t?.suppressInitialZero??!1}get hasEmitted(){return this._hasEmitted}markActive(){this._hasEmitted=!0}onStreamProgress(e,t,n,r=!1){if(!Number.isFinite(t)||t<0)return;this.hasStreamEvents=!0,this.urlBytesMap.set(e,{received:t,total:n,complete:r});let i=0,a=0,o=this.urlBytesMap.size>0;for(let e of this.urlBytesMap.values())i+=e.received,e.total!=null&&Number.isFinite(e.total)&&e.total>0&&(a+=e.total),e.complete||(o=!1);let s=this.maxEffectiveTotal,c=this.expectedTotalBytes>0?this.expectedTotalBytes:0,l=Math.max(a,c);this.maxEffectiveTotal=Math.max(this.maxEffectiveTotal,l);let u=this.maxEffectiveTotal;if(this.maxLoadedBytes=Math.max(this.maxLoadedBytes,i),u>0){let e=Math.min(1,Math.max(0,this.maxLoadedBytes/u)),t=o?e:Math.min(.99,e);this.maxProgressFraction=u>s&&s>0?t:Math.max(this.maxProgressFraction,t);let n=`Downloading Prompt API model... (${(this.maxLoadedBytes/1048576).toFixed(1)} / ${(u/1048576).toFixed(1)} MB · ${Math.min(o?100:99,Math.round(this.maxProgressFraction*100))}%)`;this.emit(this.maxProgressFraction,n)}else{let e=`Downloading Prompt API model... (${(this.maxLoadedBytes/1048576).toFixed(1)} MB downloaded)`;this.emit(null,e)}}onProgressEvent(e){let t=Number(e?.loaded),n=Number(e?.total);if(this.logEvents&&console.log(`[PromptApiProgressAggregator] onProgressEvent:`,{loaded:t,total:n,type:e?.type}),!(!Number.isFinite(t)||t<0)&&!(this.hasStreamEvents&&t<=1)&&!(this.suppressInitialZero&&!this._hasEmitted&&t===0&&(!Number.isFinite(n)||n<=1))){if(Number.isFinite(n)&&n>1){let e=this.expectedTotalBytes>0?this.expectedTotalBytes:0,r=Math.max(n,e,this.maxEffectiveTotal);this.maxEffectiveTotal=r,this.maxLoadedBytes=Math.max(this.maxLoadedBytes,t);let i=Math.min(.99,this.maxLoadedBytes/r);this.maxProgressFraction=Math.max(this.maxProgressFraction,i);let a=(this.maxLoadedBytes/1048576).toFixed(1),o=(r/1048576).toFixed(1),s=Math.round(this.maxProgressFraction*100);this.emit(this.maxProgressFraction,`Downloading Prompt API model... (${a} / ${o} MB · ${s}%)`)}else if(t>=0&&t<=1){let e=Math.max(0,Math.min(1,t)),n=e>=1?.99:e;this.maxProgressFraction=Math.max(this.maxProgressFraction,n);let r=Math.max(this.maxEffectiveTotal,this.expectedTotalBytes);if(r>0){let e=(Math.round(this.maxProgressFraction*r)/1048576).toFixed(1),t=(r/1048576).toFixed(1),n=Math.round(this.maxProgressFraction*100);this.emit(this.maxProgressFraction,`Downloading Prompt API model... (${e} / ${t} MB · ${n}%)`)}else{let e=Math.round(this.maxProgressFraction*100);this.emit(this.maxProgressFraction,`Downloading Prompt API model... ${e}%`)}}else if(t>1){this.maxLoadedBytes=Math.max(this.maxLoadedBytes,t);let e=Math.max(this.maxEffectiveTotal,this.expectedTotalBytes);if(e>0){let t=Math.max(this.maxLoadedBytes,e),n=Math.min(.99,this.maxLoadedBytes/t);this.maxProgressFraction=Math.max(this.maxProgressFraction,n);let r=(this.maxLoadedBytes/1048576).toFixed(1),i=(t/1048576).toFixed(1),a=Math.round(this.maxProgressFraction*100);this.emit(this.maxProgressFraction,`Downloading Prompt API model... (${r} / ${i} MB · ${a}%)`)}else{let e=(this.maxLoadedBytes/1048576).toFixed(1);this.emit(null,`Downloading Prompt API model... (${e} MB downloaded)`)}}}}onDone(){this.maxProgressFraction=1,this.emitter(`done`,1,`Prompt API model ready.`)}onError(e){let t=e instanceof Error?e.message:String(e);this.emitter(`error`,null,t)}emit(e,t){this._hasEmitted=!0,(this.lastReportedMessage!==t||this.lastReportedFraction!==e)&&(this.lastReportedMessage=t,this.lastReportedFraction=e,this.emitter(`running`,e,t))}};const tH=re.filter(e=>x.enabledToolNames.includes(e.name));function nH(){return!0}const rH={expectedInputs:[{type:`text`,languages:[`en`]}],expectedOutputs:[{type:`text`,languages:[`en`]}]},iH={key:null,session:null,cleanupTimer:null};function aH(){iH.cleanupTimer&&=(clearTimeout(iH.cleanupTimer),null)}async function oH(){aH(),iH.session&&=(await Promise.resolve(iH.session.destroy?.()).catch(()=>{}),null),iH.key=null}function sH(){aH(),iH.cleanupTimer=setTimeout(()=>{oH()},1e4)}function cH(e){return typeof e?.content==`string`?e.content:Array.isArray(e?.content)?e.content.map(e=>e?.type===`text`?e.text||``:e?.type===`tool_use`?`[TOOL_CALL ${e.name}] ${JSON.stringify(e.input||{})}`:e?.type===`tool_result`?`[TOOL_RESULT ${e.tool_use_id}] ${String(e.content||``)}`:e?.type===`attachment`?`[ATTACHMENT ${e.mediaType}] ${e.fileName} (${e.mimeType})`:``).filter(Boolean).join(`
|
|
1897
1897
|
`):``}function lH(e,t=[]){return F(t,e)}async function uH(e,t,n,r,i){await e({type:`model-download-progress`,payload:{groupId:t,status:n,progress:r,...i?{message:i}:{}}})}async function dH(e,t,n){await e(St(t,`info`,`Prompt API`,n))}function fH(e){let t=(e instanceof Error?e.message:String(e||``)).toLowerCase();return t.includes(`unable to create a session`)&&(t.includes(`availability()`)||t.includes(`availability`)||t.includes(`check the result`))}async function pH(e){if(await new Promise(e=>{setTimeout(()=>{e()},500)}),e?.aborted)throw Error(`Prompt API session creation aborted.`)}function mH(e,t){let n=yH(e,t)||`unknown`,r={model:n};[`model`,`modelId`,`modelName`,`name`,`id`].forEach(t=>{let n=e[t];n!==void 0&&(r[t]=n)});let i=Object.entries(r).map(([e,t])=>`${e}=${t}`).join(`, `),a=e.capabilities||{},o=e.metadata||{},s=Object.keys({...a,...o});return[`resolved model: ${n}`,i?`session fields: ${i}`:`session fields: none`,s.length>0?`capabilities: ${s.join(`, `)}`:`capabilities: none`].join(` | `)}async function hH(e,t){try{let n=await fetch(`https://huggingface.co/api/models/${encodeURI(e)}/tree/main?recursive=true`);if(n.ok){let e=await n.json();if(Array.isArray(e)&&e.length>0){let n=e.filter(e=>e.type===`file`),r=n.filter(e=>[`config.json`,`generation_config.json`,`tokenizer.json`,`tokenizer_config.json`,`special_tokens_map.json`,`added_tokens.json`,`chat_template.jinja`,`tokenizer.model`].includes(e.path)).reduce((e,t)=>e+(Number(t.size)||0),0),i=n.filter(e=>{let n=String(e.path||``).toLowerCase();if(!n.endsWith(`.onnx`)&&!n.includes(`.onnx_data`)&&!n.includes(`.onnx.data`)&&!n.includes(`_data`))return!1;if(t){let e=t.toLowerCase();if(n.includes(`model_${e}.`)||n.includes(`model_${e}_`)||n.includes(`_${e}.`)||n.includes(`_${e}_`)||n.includes(`/${e}/`))return!0}return!1});i.length===0&&(i=n.filter(e=>{let t=String(e.path||``).toLowerCase();return(t.includes(`onnx/model.`)||t.includes(`onnx/model_quantized.`)||t.includes(`model.`))&&(t.endsWith(`.onnx`)||t.includes(`.onnx_data`)||t.includes(`.onnx.data`))}));let a=r+i.reduce((e,t)=>e+(Number(t.size)||0),0);if(a>5242880)return a}}}catch{}let n=[`config.json`,`generation_config.json`,`tokenizer.json`,`tokenizer_config.json`,`special_tokens_map.json`,`onnx/model_${t}.onnx`,`onnx/model_${t}.onnx_data`,`onnx/model_${t}.onnx.data`,`onnx/model.onnx`,`onnx/model.onnx_data`,`onnx/model_quantized.onnx`,`onnx/model_quantized.onnx_data`];try{let t=(await Promise.all(n.map(async t=>{try{let n=await fetch(`https://huggingface.co/${e}/resolve/main/${t}`,{method:`HEAD`});if(n.ok)return parseInt(n.headers.get(`content-length`)||`0`,10)}catch{}return 0}))).reduce((e,t)=>e+t,0);if(t>5242880)return t}catch{}return $V}async function gH(e,t,n,r=[],i=!0,a,o){await ct();let s=ce();if(!s)throw Error(`Prompt API is unavailable in this browser. Enable Prompt API flags in a supported browser (for example Edge Dev/Canary or Chrome with the required flags) or switch provider.`);let c=s,l={...a?.samplingMode?{samplingMode:a.samplingMode}:{},...typeof a?.temperature==`number`&&Number.isFinite(a.temperature)?{temperature:a.temperature}:{},...typeof a?.topK==`number`&&Number.isFinite(a.topK)?{topK:Math.floor(a.topK)}:{}},u=o&&o.length>0?o.map(e=>({name:e.name,description:e.description,inputSchema:e.input_schema,parameters:e.input_schema,...typeof e.execute==`function`?{execute:e.execute}:{}})):void 0,d;try{d=await c.availability({...rH,...l,...u?{tools:u}:{},...r&&r.length>0?{initialPrompts:r}:{}})??`available`}catch{d=`unavailable`}if(await dH(e,t,`availability() returned: ${d}`),d===`unavailable`||d===`no`){await dH(e,t,`Native Prompt API is unavailable (${d}). Falling back to local transformers.js model...`);try{let n=globalThis;n.TRANSFORMERS_CONFIG||={apiKey:`dummy`,device:`wasm`,dtype:`q4f16`,modelName:await ut(),env:{useBrowserCache:!1,useWasmCache:!0,fetch:Me()}};let i=await import(`./prompt-api-polyfill-a8J5aUE5.js`);i?.LanguageModel&&(n.LanguageModel=i.LanguageModel,c=i.LanguageModel);try{d=await c.availability({...rH,...l,...u?{tools:u}:{},...r&&r.length>0?{initialPrompts:r}:{}})??`available`}catch{d=`available`}await dH(e,t,`Polyfill availability() returned: ${d}`)}catch(e){console.warn(`Failed to load prompt-api-polyfill fallback:`,e)}}if(d===`unavailable`||d===`no`)throw Error(`Prompt API model is unavailable on this device/browser. Switch provider or enable the feature flags.`);let f=d===`readily`,p=d!==`readily`&&d!==`available`,m=!!globalThis.TRANSFORMERS_CONFIG||d===`available`&&!(`LanguageModel`in globalThis)&&!globalThis.ai?.languageModel,h=0;if(m){let e=globalThis.TRANSFORMERS_CONFIG||{};h=await hH(e.modelName||await ut(),e.dtype||`q4`)}let g=new eH((n,r,i)=>{uH(e,t,n,r,i)},{expectedTotalBytes:h,suppressInitialZero:!0,logEvents:!1});p&&(g.markActive(),await uH(e,t,`running`,d===`downloading`?null:0,`Downloading Prompt API model...`));let _,v=d;try{Ne((e,t,n,r)=>{g.onStreamProgress(e,t,n,!!r)});let i=f?{}:{monitor(e){e&&typeof e.addEventListener==`function`&&e.addEventListener(`downloadprogress`,e=>{g.onProgressEvent(e)})}};for(let a=1;a<=4;a++){await dH(e,t,`Creating Prompt API session... (attempt ${a}/4)`);try{_=await ht(c,{...rH,...l,...u?{tools:u}:{},...r.length>0?{initialPrompts:r}:{},signal:n,...i});break}catch(i){if(!(v!==`readily`&&v!==`available`&&v!==`unavailable`&&v!==`no`&&fH(i))||a>=4)throw i;await dH(e,t,`Session creation failed while model is still downloading; retrying shortly...`),v=await c.availability({...rH,...l,...u?{tools:u}:{},...r&&r.length>0?{initialPrompts:r}:{}}),await dH(e,t,`availability() recheck returned: ${v}`),v!==`readily`&&v!==`available`&&v!==`unavailable`&&v!==`no`&&(g.hasEmitted||await uH(e,t,`running`,v===`downloading`?null:0,`Downloading Prompt API model...`)),await pH(n)}}}catch(n){let r=n instanceof Error?n.message:String(n);throw i&&g.onError(n),await dH(e,t,`Session creation failed: ${r}`),n}finally{Pe()}return await dH(e,t,mH(_,c)),(p||g.hasEmitted)&&g.onDone(),_}function _H(e){let t=(e instanceof Error?e.message:String(e||``)).toLowerCase();return t.includes(`monitor option`)||t.includes(`downloadprogresscallback`)||t.includes(`dictionary`)||t.includes(`initialprompts`)||t.includes(`not supported`)&&(t.includes(`option`)||t.includes(`monitor`))}function vH(e){let t=e.toLowerCase();return t.includes(`gemma4`)||t.includes(`gemma 4`)||t.includes(`gemma-4`)?`Gemma 4`:t.includes(`nano_v3`)||t.includes(`gemini nano`)||t.includes(`gemini-nano`)||t.includes(`prompt_api`)?`Gemini Nano`:e}function yH(e,t){let n=[e.model,e.modelId,e.modelName,e.id,e.name,t.model,t.modelId,t.modelName,t.id,t.name].find(e=>typeof e==`string`&&e.trim());return n?vH(n.trim()):`Gemini Nano`}async function bH(e,t,n,r,i,a,o=[]){await ct();let s=ce();if(!s)throw Error(`Prompt API is unavailable in this browser. Enable Prompt API flags in a supported browser (for example Edge Dev/Canary or Chrome with the required flags) or switch provider.`);let c=lH(n,o),l={...i?.samplingMode?{samplingMode:i.samplingMode}:{},...typeof i?.temperature==`number`&&Number.isFinite(i.temperature)?{temperature:i.temperature}:{},...typeof i?.topK==`number`&&Number.isFinite(i.topK)?{topK:Math.floor(i.topK)}:{}},u=a&&a.length>0?a.map(e=>({name:e.name,description:e.description,inputSchema:e.input_schema,parameters:e.input_schema})):void 0;return await gH(e,t,r,c,!1,i,a).catch(async n=>{if(!_H(n))throw n;let i;try{i=await ht(s,{...rH,...l,...u?{tools:u}:{},...c.length>0?{initialPrompts:c}:{},signal:r})}catch(n){throw await uH(e,t,`error`,null,n instanceof Error?n.message:String(n)),n}let a=await s.availability({...rH,...l,...u?{tools:u}:{},...c&&c.length>0?{initialPrompts:c}:{}}).catch(()=>`available`);return a!==`readily`&&a!==`available`&&await uH(e,t,`done`,1,`Prompt API model ready.`),i})}async function xH(e,t,n,r,i,a,o=[]){let s=String(n||``)+(o.length?JSON.stringify(o):``);if(aH(),iH.session&&iH.key===s&&typeof iH.session.clone==`function`)try{let e=await iH.session.clone();return sH(),{session:e,destroyAfterUse:!0}}catch{await oH()}await oH();let c=await bH(e,t,n,r,i,a,o);if(typeof c.clone==`function`){iH.session=c,iH.key=s,sH();try{return{session:await c.clone(),destroyAfterUse:!0}}catch{}}return{session:c,destroyAfterUse:!0}}function SH(e,t,n=[],r=!0){let i=r?[`SYSTEM INSTRUCTIONS:`,e,``,`CONVERSATION:`]:[`CONVERSATION:`];for(let e of t){let t=e?.role===`assistant`?`ASSISTANT`:`USER`;if(typeof e?.content==`string`)i.push(`${t}: ${e.content}`);else if(Array.isArray(e?.content)){let n=e.content.map(e=>e?.type===`text`?e.text||``:e?.type===`tool_use`?`[TOOL_CALL ${e.name}] ${JSON.stringify(e.input||{})}`:e?.type===`tool_result`?`[TOOL_RESULT ${e.tool_use_id}] ${String(e.content||``)}`:e?.type===`attachment`?`[ATTACHMENT ${e.mediaType}] ${e.fileName} (${e.mimeType})`:``).filter(Boolean).join(`
|
|
1898
1898
|
`);i.push(`${t}: ${n}`)}else i.push(`${t}:`)}if(n.length>0){i.push(``,`TOOL RESULT HINTS:`);for(let e of n)i.push(`- ${e}`)}return i.join(`
|
|
1899
1899
|
`)}function CH(e){let t=lt(String(e||``),`prompt_api`).trim();if(!t)return null;let n=[...t.matchAll(/<tool_call>([\s\S]*?)<\/tool_call>/g)];if(n.length>0){let e=[];for(let t of n)try{let n=JSON.parse(t[1].trim()),r=n.name||n.function?.name;r&&e.push({id:n.id||`call_${Date.now()}_${e.length}`,name:r,input:n.arguments||n.function?.arguments||n.parameters||n.input||{}})}catch{}if(e.length>0)return{type:`tool_use`,tool_calls:e}}let r=null;try{r=JSON.parse(t)}catch{let e=t.indexOf(`{`),n=t.lastIndexOf(`}`);if(e>=0&&n>e)try{r=JSON.parse(t.slice(e,n+1))}catch{r=null}}if(r&&typeof r==`object`){if(r.type===`tool_use`||Array.isArray(r.tool_calls))return{type:`tool_use`,tool_calls:Array.isArray(r.tool_calls)?r.tool_calls:[],response:typeof r.response==`string`?r.response:void 0};let e=typeof r.response==`string`?r.response:typeof r.text==`string`?r.text:typeof r.message==`string`?r.message:typeof r.content==`string`?r.content:typeof r.answer==`string`?r.answer:void 0;if(e!==void 0||r.type===`response`)return{type:`response`,response:e}}return null}async function wH(e,t,n,r,i,a,o,s,c,l){let u=s||tH,d=ce();await a(St(t,`info`,`Starting`,`Provider: Prompt API (initializing) · ${u.length} tools`));let f=r.length>1?r.slice(0,-1):[],p=r.length>0?r[r.length-1]:null,{session:m,destroyAfterUse:h}=await xH(a,t,n,o,l,u,f),g=yH(m,d);await a(St(t,`info`,`Provider`,`Provider: Prompt API (${g||`On-device`}) · ${u.length} tools`)),g||await a(St(t,`info`,`Model`,`Prompt API runtime did not expose an exact model id.`));try{let n={type:`object`,additionalProperties:!1,properties:{type:{type:`string`,enum:[`response`,`tool_use`]},response:{type:`string`},tool_calls:{type:`array`,items:{type:`object`,additionalProperties:!1,properties:{id:{type:`string`},name:{type:`string`,enum:u.map(e=>e.name)},input:{type:`object`}},required:[`name`,`input`]}}},required:[`type`]},i=[...r];for(let s=0;s<12;s++){await a(St(t,`api-call`,`Prompt API call #${s+1}`,`${i.length} messages in context`));let l;if(s===0)l=cH(p)||`Continue.`;else{let e=i[i.length-1],t=Array.isArray(e?.content)?e.content.map(e=>`[TOOL_RESULT ${e.tool_use_id}] ${typeof e.content==`string`?e.content:JSON.stringify(e.content)}`):[String(e?.content||``)],n=[...r].reverse().find(e=>e?.role===`user`&&typeof e.content==`string`)?.content||``;l=[`Tool execution results:`,...t,``,n?`Original user request: "${n}"`:``,`If the user's original request is NOW fully satisfied, provide a final response.`,`Otherwise, call the next required tool.`].filter(Boolean).join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./config-C16fFWtP.js";import{c as t}from"./orchestrator-
|
|
1
|
+
import{r as e}from"./config-C16fFWtP.js";import{c as t}from"./orchestrator-Li1UAsv7.js";import{t as n}from"./set-config-DSiuMe0k.js";import{a as r}from"./channel-DIpDQekL.js";async function i(i,a,o,s,c=``,l=0,u=``,d=!0){let f=o.trim(),p=t(s),m=c.trim(),h=Number.isFinite(l)?Math.max(0,Math.floor(l)):0,g=u.trim(),_=!!d;i.peerjsMyPeerId=f,i.peerjsTrustedPeerIds=p,i.peerjsServerHost=m,i.peerjsServerPort=h,i.peerjsServerPath=g,i.peerjsServerSecure=_,await n(a,e.PEERJS_MY_PEER_ID,f),await n(a,e.PEERJS_TRUSTED_PEER_IDS,JSON.stringify(p)),await n(a,e.PEERJS_SERVER_HOST,m),await n(a,e.PEERJS_SERVER_PORT,h?String(h):``),await n(a,e.PEERJS_SERVER_PATH,g),await n(a,e.PEERJS_SERVER_SECURE,_?`true`:`false`);let v=m?{host:m,path:g||void 0,port:h||void 0,secure:_}:{};i.peerjs.stop(),i.peerjs.configure(f,p,v),f&&r(i,`peerjs`)&&i.peerjs.start()}export{i as t};
|
package/dist/public/{create-model-cache-fetch-DSAFjOwc.js → create-model-cache-fetch-B0mSCEk6.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{X as e,Z as t}from"./orchestrator-
|
|
1
|
+
import{X as e,Z as t}from"./orchestrator-Li1UAsv7.js";function n(e,t){return`${e}?__sc_chunk=${t}`}const r=`shadow-claw-browser-models`,i=16777216;function a(e,t,i=r){let a=0,o=null;return new ReadableStream({async pull(r){for(;;){if(o){let{done:e,value:t}=await o.read();if(!e){r.enqueue(t);return}o=null,a++}if(a>=t.chunks){r.close();return}try{let t=await(await caches.open(i)).match(n(e,a));if(!t?.body){r.error(/* @__PURE__ */ Error(`ModelCache: missing cache chunk ${a} for ${e}`));return}o=t.body.getReader();let{done:s,value:c}=await o.read();if(s)o=null,a++;else{r.enqueue(c);return}}catch(e){r.error(e);return}}},cancel(){o&&=(o.cancel(),null)}})}function o(){return typeof caches<`u`&&typeof caches.open==`function`}async function s(e,t,i,a=r){if(o())try{await(await caches.open(a)).put(n(e,t),new Response(new Blob([i]),{headers:{"Content-Type":`application/octet-stream`,"Content-Length":String(i.byteLength)}}))}catch(e){console.error(`flushChunkToCache error:`,e)}}function c(e){return`${e}?__sc_meta=1`}async function l(e,t=r){if(!o())return null;try{let n=await(await caches.open(t)).match(c(e));if(!n?.body)return null;let r=await n.text();return JSON.parse(r)}catch{return null}}async function u(e,t,n=r){if(o())try{await(await caches.open(n)).put(c(e),new Response(JSON.stringify(t),{headers:{"Content-Type":`application/json`}}))}catch(e){console.error(`writePartialMeta error:`,e)}}async function d(r,i,a,c,d=globalThis.fetch?globalThis.fetch.bind(globalThis):fetch){let f=c?.cacheName??`shadow-claw-browser-models`,p=c?.chunkSize??16777216,m=c?.maxAttempts??6,h=c?.headers??{},g=o(),_=0,v=0,y=null,b=!1,x=r;if(g){let e=await l(r,f);e&&!e.complete&&(_=e.chunks,v=e.received,y=e.total,b=e.acceptsRanges,e.resolvedUrl&&(x=e.resolvedUrl))}let S=null,C=null;for(let n=1;n<=m;n++){if(a?.aborted)throw new DOMException(`Aborted`,`AbortError`);let r={...h};v>0&&b&&(r.Range=`bytes=${v}-`);try{C=await d(x,{signal:a,headers:r})}catch(r){if(a?.aborted||r?.name===`AbortError`)throw r;if(S=r,n<m){await t(e(n-1,1e3,15e3,0),a);continue}break}if(C.url&&(x=C.url),r.Range&&C.status===200&&(_=0,v=0),C.status!==200&&C.status!==206){if(S=/* @__PURE__ */ Error(`ModelCache: Failed to fetch model from '${x}': ${C.status} ${C.statusText}`),C.status>=500&&n<m){await t(e(n-1,1e3,15e3,0),a);continue}throw S}if(!C.body)throw Error(`ModelCache: Failed to fetch model from '${x}': No response body`);S=null;break}if(S||!C||!C.body)throw Error(`ModelCache: failed to download model from '${r}' after ${m} attempts: ${S?.message??String(S)}`);if(y==null){if(b=C.status===206||C.headers.get(`accept-ranges`)===`bytes`,C.status===206){let e=C.headers.get(`content-range`)?.match(/\/\s*(\d+)\s*$/);e&&(y=Number(e[1]))}else{let e=C.headers.get(`content-length`),t=e?Number(e):NaN;y=Number.isFinite(t)&&t>0?t:null}}g&&await u(r,{chunks:_,received:v,total:y,acceptsRanges:b,complete:!1,resolvedUrl:x},f);let w=C.body;return new ReadableStream({async start(e){try{if(g&&_>0){let t=await caches.open(f),o=0;for(let s=0;s<_;s++){if(a?.aborted)throw new DOMException(`Aborted`,`AbortError`);let c=await t.match(n(r,s));if(c?.body){let t=c.body.getReader();for(;;){let{done:n,value:r}=await t.read();if(n)break;e.enqueue(r),o+=r.byteLength,i?.(o,y)}}else if(c&&typeof c.arrayBuffer==`function`){let t=await c.arrayBuffer(),n=new Uint8Array(t);e.enqueue(n),o+=n.byteLength,i?.(o,y)}}}let t=[],o=0,c=v;async function l(){if(o===0)return;let e=new Uint8Array(o),n=0;for(let r of t)e.set(r,n),n+=r.byteLength;t=[],o=0,g?(await s(r,_,e,f),_++,v+=e.byteLength,await u(r,{chunks:_,received:v,total:y,acceptsRanges:b,complete:!1,resolvedUrl:x},f)):(_++,v+=e.byteLength)}let d=w.getReader();try{for(;;){if(a?.aborted)throw await d.cancel(),new DOMException(`Aborted`,`AbortError`);let{done:n,value:r}=await d.read();if(n)break;e.enqueue(r),t.push(r),o+=r.byteLength,c+=r.byteLength,i?.(c,y),o>=p&&await l()}await l(),g&&await u(r,{chunks:_,received:v,total:y,acceptsRanges:b,complete:!0,resolvedUrl:x},f),i?.(c,y,!0),e.close()}catch(e){try{await d.cancel()}catch{}throw e}}catch(t){e.error(t)}}})}async function f(e,t,n,r,i=globalThis.fetch?globalThis.fetch.bind(globalThis):fetch){let o=r?.cacheName??`shadow-claw-browser-models`;try{let n=await l(e,o);if(n?.complete)return t?.(n.received,n.received,!0),a(e,n,o)}catch(e){console.warn(`loadModelStream cache check failed, falling back to download:`,e)}return d(e,t,n,r,i)}let p=null;function m(e){p=e}function h(){p=null}function g(e=globalThis.fetch?globalThis.fetch.bind(globalThis):fetch,t,n){let r=t?.cacheName??`shadow-claw-browser-models`;return async function(i,s){let c=typeof i==`string`?i:i instanceof URL?i.toString():i.url,u=(s?.method||(typeof i==`object`&&`method`in i?i.method:`GET`)||`GET`).toUpperCase(),d=s?.headers||(typeof i==`object`&&`headers`in i?i.headers:void 0);if(d instanceof Headers?d.has(`Range`)||d.has(`range`):d&&typeof d==`object`&&(`Range`in d||`range`in d))return e(i,{...s||{},cache:`no-store`});if(u!==`GET`||!o())return e(i,s);try{let i=await l(c,r);if(i?.complete){n?.(c,i.received,i.received,!0),p?.(c,i.received,i.received,!0);let e=a(c,i,r);return new Response(e,{status:200,statusText:`OK`,headers:{"Content-Type":`application/octet-stream`,...i.total!=null&&i.total>0?{"Content-Length":String(i.total)}:{}}})}let o=await f(c,(e,t,r)=>{n?.(c,e,t,!!r),p?.(c,e,t,!!r)},s?.signal??void 0,{cacheName:r,...t||{}},e),u=(await l(c,r))?.total;return new Response(o,{status:200,statusText:`OK`,headers:{"Content-Type":`application/octet-stream`,...u!=null&&u>0?{"Content-Length":String(u)}:{}}})}catch(t){return console.warn(`[ModelCacheFetch] Cache stream failed for ${c}, falling back to native fetch:`,t),e(i,s)}}}export{i as a,f as i,g as n,m as r,h as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-DBVvNlSN.js";import{t}from"./browser-B1SoUj6D.js";import{I as n,c as r,et as i,o as a,r as o}from"./config-C16fFWtP.js";import{n as s}from"./db-BUuJo1Gf.js";import{t as c}from"./get-config-Bkvl__ZS.js";import{C as l,O as u,S as d,t as f}from"./orchestrator-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-DBVvNlSN.js";import{t}from"./browser-B1SoUj6D.js";import{I as n,c as r,et as i,o as a,r as o}from"./config-C16fFWtP.js";import{n as s}from"./db-BUuJo1Gf.js";import{t as c}from"./get-config-Bkvl__ZS.js";import{C as l,O as u,S as d,t as f}from"./orchestrator-Li1UAsv7.js";import{t as p}from"./ulid-BSJxYh6W.js";import{c as m,n as h,s as g,t as _}from"./tools-D-52Zmfc.js";import{t as v}from"./get-or-create-subscriber-id-jVHnQfbr.js";import{r as y}from"./headless-D6caaop6.js";import{t as b}from"./get-group-dir-D--BiEyk.js";import{o as x}from"./toast-CtIuHprH.js";import{a as ee,b as te,l as ne}from"./provider-YPZmsuHR.js";import{t as re}from"./audio-C46WQ-9Q.js";import{n as S}from"./create-model-cache-fetch-B0mSCEk6.js";import{c as ie,i as ae,m as oe,n as se,o as ce,u as le}from"./transformers-CQ9ss9rD.js";import{l as ue,t as de}from"./mcp-reconnect-iPZPihwX.js";import{r as fe}from"./push-client-DRx9Eggz.js";import{o as C}from"./channel-DIpDQekL.js";import{a as pe}from"./rooms-BurBI7is.js";import{r as w}from"./attachment-capabilities-AdwXt3--.js";async function me(e,t,n,r){let i=C(e,n),a={channel:i,content:r,groupId:n,id:p(),isFromMe:!0,isTrigger:!1,sender:e.assistantName,timestamp:Date.now()};if(await l(t,a),i!==`browser`)try{await e.router?.send(n,r)}catch(t){let r=t instanceof Error?t:Error(String(t));console.error(`Failed to deliver intermediate channel response:`,r),e.events.emit(`error`,{groupId:n,error:`Failed to deliver response to ${i}: ${r.message}`})}e.events.emit(`message`,a)}async function T(e,t,n,r){let i={channel:C(e,n),content:r,groupId:n,id:p(),isFromMe:!0,isTrigger:!1,sender:e.assistantName,timestamp:Date.now()};await l(t,i);let a=null;try{await e.router?.send(n,r)}catch(e){a=e instanceof Error?e:Error(String(e)),console.error(`Failed to deliver channel response:`,a)}e.pendingScheduledTasks.has(n)&&(e.pendingScheduledTasks.delete(n),re()),e.events.emit(`message`,i),e.events.emit(`typing`,{groupId:n,typing:!1}),e.setState(`idle`,n),e.router?.setTyping(n,!1),n.startsWith(`peer:`)&&!a&&e.peerjs.completeActiveTask(n)&&e.peerCompletedContexts.add(n),a&&e.events.emit(`error`,{groupId:n,error:`Failed to deliver response to ${C(e,n)}: ${a.message}`})}var E=/* @__PURE__ */ e(t(),1);const D=[/<\|start_header_id\|>\s*(?:system|user|assistant|tool)\s*<\|end_header_id\|>/gi,/<\|(?:begin_of_text|end_of_text|eot_id|im_start|im_end|end_of_message)\|>/gi,/<\|(?:startofturn|endofturn|start_of_turn|end_of_turn)\|>/gi,/<\|(?:image|audio|video|tool_call|tool_response|tool_result|function_call)\|>|<\|\/function_call\|>/gi,/<|(?:system|user|assistant|im_start|im_end)|>/g,/\[\s*INST\s*\]|\[\s*\/INST\s*\]|<<\s*SYS\s*>>|<<\s*\/SYS\s*>>/gi,/<\/?s>|<\/?bos>|<\/?eos>|<\|(?:bos|eos|pad|unk)\|>/gi,/<\|(?:START_OF_TURN_TOKEN|END_OF_TURN_TOKEN|CHATBOT_TOKEN|USER_TOKEN|SYSTEM_TOKEN)\|>/gi,/<\|(?:system|user|assistant|end|endoftext|placeholder\d*)\|>/gi,/<|(?:begin▁of▁sentence|end▁of▁sentence)|>/g,/<\|start\|>\s*(?:system|user|assistant|tool)\s*<\|message\|>/gi];function he(e){for(let t of D)if(t.test(e))return!0;return!1}function ge(e){let t=String(e||``),n=t;for(let e of D)t=t.replace(e,``);return t!==n&&(t=t.replace(/^[ \t]+$/gm,``),t=t.replace(/\n{3,}/g,`
|
|
2
2
|
|
|
3
3
|
`)),t}function O(e,t){let n=ge(e);return n!==e&&he(e)&&console.info(`[ShadowClaw] Chat-template control token(s) detected and stripped from "${t}" output. The provider or model may not be applying its chat template correctly. Original length: ${e.length}, cleaned length: ${n.length}.`),n}function k(e){return`[Attachment: ${e.fileName} (${e.mimeType}) is available in chat history${e.path?` at ${e.path}`:``}]`}function A(e){return e.map(e=>e.type===`text`?e.text:e.type===`image`?`[Image: ${e.media_type}, ${Math.ceil(e.data.length*3/4)} bytes base64-encoded]`:``).filter(Boolean).join(`
|
|
4
4
|
`)}function _e(e,t){if(!j(t))return A(e);let n=[];for(let t of e)t.type===`text`?n.push({type:`text`,text:t.text}):t.type===`image`&&n.push({type:`image_url`,image_url:{url:`data:${t.media_type};base64,${t.data}`}});return n}function ve(e,t){if(!j(t))return A(e);let n=[];for(let t of e)t.type===`text`?n.push({type:`text`,text:t.text}):t.type===`image`&&n.push({type:`image`,source:{type:`base64`,media_type:t.media_type,data:t.data}});return n}function j(e){let t=w(e);return t.images||t.routerByFeatures}function ye(e){let t=w(e);return t.audio||t.routerByFeatures}function be(e){let t=w(e);return t.documents||t.routerByFeatures}function xe(e){let t=e.toLowerCase();return t.includes(`wav`)?`wav`:t.includes(`flac`)?`flac`:t.includes(`ogg`)?`ogg`:t.includes(`aac`)?`aac`:t.includes(`webm`)?`webm`:t.includes(`mp4`)?`mp4`:`mp3`}function Se(e,t){let n=[],r=j(t);for(let i of e)i?.type===`text`?n.push({type:`text`,text:i.text||``}):i?.type===`attachment`&&(i.mediaType===`image`&&typeof i.data==`string`&&i.data&&r?n.push({type:`image_url`,image_url:{url:`data:${i.mimeType};base64,${i.data}`}}):i.mediaType===`audio`&&typeof i.data==`string`&&i.data&&ye(t)?n.push({type:`input_audio`,input_audio:{data:i.data,format:xe(i.mimeType)}}):n.push({type:`text`,text:k(i)}));return n}function M(e){return typeof e!=`string`||e.trim().length===0?``:e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``)}function N(e){let t=M(e);return t?t.includes(`claude-1`)||t.includes(`claude-2`)||t.includes(`claude-v1`)||t.includes(`claude-v2`)||t.includes(`claude-instant`):!1}function Ce(e){if(typeof e!=`string`||e.trim().length===0)return!1;let t=i.getModelInfo(e);if(typeof t?.supportsPromptCaching==`boolean`)return t.supportsPromptCaching;let n=M(e);return!N(n)&&!!(n.includes(`claude-3-5-sonnet`)||n.includes(`claude-3-5-haiku`)||n.includes(`claude-3-7-sonnet`)||n.includes(`claude-3-haiku`)||n.includes(`claude-3-opus`)||/claude-(?:sonnet|opus|haiku|fable|mythos)-[4-9]/.test(n)||/claude-[4-9]-(?:sonnet|opus|haiku|fable|mythos)/.test(n)||n.includes(`claude-fable`)||n.includes(`claude-mythos`))}function we(e,t){let n=[],r=j(t);for(let i of e)if(i?.type===`text`){let e=typeof i.text==`string`?i.text:``;if(e.trim().length===0)continue;n.push({type:`text`,text:e,...i.cache_control&&{cache_control:i.cache_control}})}else i?.type===`tool_use`?n.push(i):i?.type===`thinking`?n.push({type:`thinking`,thinking:i.thinking||``,...typeof i.signature==`string`&&{signature:i.signature}}):i?.type===`redacted_thinking`?n.push({type:`redacted_thinking`,data:i.data||``}):i?.type===`tool_result`?Array.isArray(i.content)?n.push({...i,content:ve(i.content,t)}):n.push(i):i?.type===`attachment`&&(i.mediaType===`image`&&typeof i.data==`string`&&i.data&&r?n.push({type:`image`,source:{type:`base64`,media_type:i.mimeType,data:i.data},...i.cache_control&&{cache_control:i.cache_control}}):i.mediaType===`document`&&typeof i.data==`string`&&i.data&&be(t)?n.push({type:`document`,source:{type:`base64`,media_type:`application/pdf`,data:i.data},...i.cache_control&&{cache_control:i.cache_control}}):n.push({type:`text`,text:k(i),...i.cache_control&&{cache_control:i.cache_control}}));return n}function P(e,t){let n={"Content-Type":`application/json`,...e.headers};return e.apiKeyHeaderFormat?n[e.apiKeyHeader]=e.apiKeyHeaderFormat.replace(`{key}`,t):n[e.apiKeyHeader]=t,n}var F=class{provider;constructor(e){this.provider=e}formatRequest(e,t,n){throw Error(`Not implemented`)}parseResponse(e){throw Error(`Not implemented`)}},I=class extends F{formatRequest(e,t,n){let{model:r,maxTokens:a,system:o,contextCompression:s,reasoning:c}=n,l=[];o&&l.push({role:`system`,content:o});for(let t of e)if(t.role===`system`){if(o)continue;l.push(t)}else if(t.role===`assistant`&&Array.isArray(t.content)){let e=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
@@ -70,7 +70,7 @@ The frontend UI and client-side agent runtime are built on browser-native techno
|
|
|
70
70
|
|
|
71
71
|
The entire codebase is TypeScript. Rolldown produces modular bundles for the frontend, worker, service worker, server, and Electron.
|
|
72
72
|
|
|
73
|
-
In production builds (`npm run build:prod`), critical assets (`index.css`, `theme-init.js`, and `service-worker/init.js`) are inlined directly into `index.html` alongside pre-rendered Declarative Shadow DOM (DSD) shells, eliminating render-blocking network requests. Production assets are further minified using `htmlnano` and `cssnano`. Service worker initialization is deferred (10-second idle delay) to prioritize immediate user interactivity.
|
|
73
|
+
In production builds (`npm run build:prod`), critical assets (`index.css`, `theme-init.js`, and `service-worker/init.js`) are inlined directly into `index.html` alongside pre-rendered Declarative Shadow DOM (DSD) shells, eliminating render-blocking network requests. Production assets are further minified using `htmlnano` and `cssnano`. Service worker initialization is deferred (10-second idle delay) to prioritize immediate user interactivity, with periodic update polling (1 hour), window focus/visibility checks, and interactive update dialog flows with reprompt backoff. For single-file deployments, `shadow-claw build --single-file --service-worker` produces a companion `service-worker.js` with content-hashed caching and inlined registration.
|
|
74
74
|
|
|
75
75
|
### 3. Worker-isolated agent
|
|
76
76
|
|