shadow-claw 1.51.0 → 1.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.well-known/mcp/server-card.json +1 -1
- package/.well-known/mcp.json +1 -1
- package/README.md +1 -1
- package/dist/cli/{chunk-Dtse8rAn.js → chunk-5ryVpyup.js} +1 -1
- package/dist/cli/chunk-Aq3057Xo.js +1 -0
- package/dist/cli/{chunk-4CZJpLqA.js → chunk-BV9JBYpl.js} +2 -2
- package/dist/cli/{chunk-mbFAP9Ev.js → chunk-BZI3bWDA.js} +1 -1
- package/dist/cli/chunk-BaUCHRPD.js +1 -0
- package/dist/cli/{chunk-vzUrhBN5.js → chunk-BdbEt6gM.js} +1 -1
- package/dist/cli/{chunk-BU8UG4L_.js → chunk-BiWLawPV.js} +1 -1
- package/dist/cli/chunk-BkLnHJeo.js +1 -0
- package/dist/cli/{chunk-BqfPWIBf.js → chunk-BzWY1sKE.js} +1 -1
- package/dist/cli/{chunk-DajM7Kro.js → chunk-C79eIU-4.js} +1 -1
- package/dist/cli/{chunk-CI9r1AM5.js → chunk-CDw214Zi.js} +1 -1
- package/dist/cli/chunk-CNqc7LLn.js +1 -0
- package/dist/cli/{chunk-CEhU-Ah-.js → chunk-CWW7dqIv.js} +1 -1
- package/dist/cli/{chunk-BT_C3OlA.js → chunk-CcSTYHtR.js} +1 -1
- package/dist/cli/chunk-ClOfk6Ga.js +1 -0
- package/dist/cli/chunk-ComXUwW0.js +1 -0
- package/dist/cli/{chunk-lL1BhHVe.js → chunk-CooeO4UQ.js} +1 -1
- package/dist/cli/{chunk-khr7--yI.js → chunk-CtfWY4G6.js} +1 -1
- package/dist/cli/{chunk-C4iW1XuQ.js → chunk-DFgSiYMW.js} +1 -1
- package/dist/cli/chunk-DGBnjngK.js +1 -0
- package/dist/cli/{chunk-D7bFIUK3.js → chunk-DGu1OhJs.js} +1 -1
- package/dist/cli/{chunk-CzfOerQR.js → chunk-DIjCY0Wf.js} +1 -1
- package/dist/cli/{chunk-D-iqEY5G.js → chunk-DJ_LeQtz.js} +1 -1
- package/dist/cli/{chunk-BmEsDkRK.js → chunk-DQRu-9wO.js} +1 -1
- package/dist/cli/{chunk-DojiYody.js → chunk-DToVgO9a.js} +1 -1
- package/dist/cli/{chunk-De5a_Rlp.js → chunk-DVbNkQRL.js} +1 -1
- package/dist/cli/{chunk-c8MIYB2y.js → chunk-Ddtzaj43.js} +1 -1
- package/dist/cli/{chunk-aJ6fufe-.js → chunk-DiqS56rD.js} +1 -1
- package/dist/cli/{chunk-CeUEmZNt.js → chunk-DnRcu9b4.js} +1 -1
- package/dist/cli/chunk-DtgZDsJA.js +1 -0
- package/dist/cli/{chunk-DVMcK7g6.js → chunk-Du4qvxo_.js} +2 -2
- package/dist/cli/{chunk-CegcvNc9.js → chunk-Dz5_hgvL.js} +8 -8
- package/dist/cli/{chunk-Cd4Dv5Eq.js → chunk-I3mxEelq.js} +1 -1
- package/dist/cli/{chunk-Do3VICh1.js → chunk-IU2SH_ti.js} +1 -1
- package/dist/cli/{chunk-BQveaAaD.js → chunk-NC8XsSSA.js} +1 -1
- package/dist/cli/{chunk-D702W_Ry.js → chunk-Q4BZ9QN9.js} +1 -1
- package/dist/cli/chunk-WTlDd4Ou.js +1 -0
- package/dist/cli/chunk-XGzq5joC.js +1 -0
- package/dist/cli/{chunk-ar7eAlxK.js → chunk-aJfaGe2s.js} +8 -8
- package/dist/cli/chunk-bPVrFlmk.js +1 -0
- package/dist/cli/chunk-jXJHKxdR.js +1 -0
- package/dist/cli/{chunk-C3dTAmV_.js → chunk-rstVU7U0.js} +1 -1
- package/dist/cli/{chunk-DGfTzQui.js → chunk-t72uObQ7.js} +1 -1
- package/dist/cli/{chunk-DDgfljzN.js → chunk-vq8xlroY.js} +1 -1
- package/dist/cli/cli.js +1 -1
- package/dist/headless-agent.js +1 -1
- package/dist/lib/components/common/shadow-claw-provider-model-picker.js +1 -1
- package/dist/lib/components/index.js +27 -27
- package/dist/lib/components/settings/shadow-claw-accounts.js +1 -1
- package/dist/lib/components/settings/shadow-claw-channel-config.js +1 -1
- package/dist/lib/components/settings/shadow-claw-control-plane.js +1 -1
- package/dist/lib/components/settings/shadow-claw-git.js +1 -1
- package/dist/lib/components/settings/shadow-claw-integrations.js +1 -1
- package/dist/lib/components/settings/shadow-claw-llm/model-ranking.d.ts +12 -0
- package/dist/lib/components/settings/shadow-claw-llm.js +1 -1
- package/dist/lib/components/settings/shadow-claw-mcp-remote.js +1 -1
- package/dist/lib/components/settings/shadow-claw-networking.js +1 -1
- package/dist/lib/components/settings/shadow-claw-notifications.js +1 -1
- package/dist/lib/components/settings/shadow-claw-peerjs.js +1 -1
- package/dist/lib/components/settings/shadow-claw-storage.js +1 -1
- package/dist/lib/components/settings/shadow-claw-task-server.js +1 -1
- package/dist/lib/components/settings/shadow-claw-webvm.js +1 -1
- package/dist/lib/components/shadow-claw-a2ui.js +1 -1
- package/dist/lib/components/shadow-claw-accounts.js +1 -1
- package/dist/lib/components/shadow-claw-channel-config.js +1 -1
- package/dist/lib/components/shadow-claw-channels.js +1 -1
- package/dist/lib/components/shadow-claw-chat/shadow-claw-chat.d.ts +1 -0
- package/dist/lib/components/shadow-claw-chat.js +1 -1
- package/dist/lib/components/shadow-claw-control-plane.js +1 -1
- package/dist/lib/components/shadow-claw-conversations.js +1 -1
- package/dist/lib/components/shadow-claw-file-viewer.js +1 -1
- package/dist/lib/components/shadow-claw-files.js +1 -1
- package/dist/lib/components/shadow-claw-git.js +1 -1
- package/dist/lib/components/shadow-claw-integrations.js +1 -1
- package/dist/lib/components/shadow-claw-llm.js +1 -1
- package/dist/lib/components/shadow-claw-mcp-remote.js +1 -1
- package/dist/lib/components/shadow-claw-networking.js +1 -1
- package/dist/lib/components/shadow-claw-notifications.js +1 -1
- package/dist/lib/components/shadow-claw-page-header.js +1 -1
- package/dist/lib/components/shadow-claw-pages.js +1 -1
- package/dist/lib/components/shadow-claw-peerjs.js +1 -1
- package/dist/lib/components/shadow-claw-provider-model-picker.js +1 -1
- package/dist/lib/components/shadow-claw-settings.js +1 -1
- package/dist/lib/components/shadow-claw-storage.js +1 -1
- package/dist/lib/components/shadow-claw-task-server.js +1 -1
- package/dist/lib/components/shadow-claw-tasks.js +1 -1
- package/dist/lib/components/shadow-claw-terminal.js +1 -1
- package/dist/lib/components/shadow-claw-tools.js +1 -1
- package/dist/lib/components/shadow-claw-webvm.js +1 -1
- package/dist/lib/components/shadow-claw.js +1 -1
- package/dist/lib/config/config.d.ts +2 -1
- package/dist/lib/{config-DxDaVDTn.js → config-DFLs7eoC.js} +3 -2
- package/dist/lib/config-DFLs7eoC.js.map +1 -0
- package/dist/lib/{configurePeerJs-ScwZiGbF.js → configurePeerJs-DJ0H6e6s.js} +3 -3
- package/dist/lib/{configurePeerJs-ScwZiGbF.js.map → configurePeerJs-DJ0H6e6s.js.map} +1 -1
- package/dist/lib/{connections-D82zele0.js → connections-DT3nPylw.js} +2 -2
- package/dist/lib/{connections-D82zele0.js.map → connections-DT3nPylw.js.map} +1 -1
- package/dist/lib/{downloadGroupFile-D7-5y6NI.js → downloadGroupFile-DMnAiPj4.js} +2 -2
- package/dist/lib/{downloadGroupFile-D7-5y6NI.js.map → downloadGroupFile-DMnAiPj4.js.map} +1 -1
- package/dist/lib/{file-viewer-BMvvndPQ.js → file-viewer-OHmGC_l7.js} +5 -5
- package/dist/lib/{file-viewer-BMvvndPQ.js.map → file-viewer-OHmGC_l7.js.map} +1 -1
- package/dist/lib/{getGroupDir-BidwYPfP.js → getGroupDir-mTV2Iz2b.js} +3 -3
- package/dist/lib/{getGroupDir-BidwYPfP.js.map → getGroupDir-mTV2Iz2b.js.map} +1 -1
- package/dist/lib/{git-CXmWufWS.js → git-CGdKghMC.js} +3 -3
- package/dist/lib/{git-CXmWufWS.js.map → git-CGdKghMC.js.map} +1 -1
- package/dist/lib/index.js +28 -28
- package/dist/lib/{initChatSplitResize-tvUZ-wsp.js → initChatSplitResize-B8zHHQdm.js} +2 -2
- package/dist/lib/{initChatSplitResize-tvUZ-wsp.js.map → initChatSplitResize-B8zHHQdm.js.map} +1 -1
- package/dist/lib/{initControlPlane-Dnjkb-6J.js → initControlPlane-BczrlTf3.js} +14 -14
- package/dist/lib/{initControlPlane-Dnjkb-6J.js.map → initControlPlane-BczrlTf3.js.map} +1 -1
- package/dist/lib/{markdown-WCXar9C8.js → markdown-D-7Cjyye.js} +3 -3
- package/dist/lib/{markdown-WCXar9C8.js.map → markdown-D-7Cjyye.js.map} +1 -1
- package/dist/lib/{mcp-reconnect-WTOQONHZ.js → mcp-reconnect-Czf7QCCv.js} +2 -2
- package/dist/lib/{mcp-reconnect-WTOQONHZ.js.map → mcp-reconnect-Czf7QCCv.js.map} +1 -1
- package/dist/lib/{memoryStorage-Bo2Wpfmg.js → memoryStorage-CXyKsKMo.js} +2 -2
- package/dist/lib/{memoryStorage-Bo2Wpfmg.js.map → memoryStorage-CXyKsKMo.js.map} +1 -1
- package/dist/lib/model-ranking-Bo8CpGH1.js +116 -0
- package/dist/lib/model-ranking-Bo8CpGH1.js.map +1 -0
- package/dist/lib/{orchestrator-Crw4btGn.js → orchestrator-BK138MkV.js} +10 -10
- package/dist/lib/{orchestrator-Crw4btGn.js.map → orchestrator-BK138MkV.js.map} +1 -1
- package/dist/lib/{orchestrator-Dro541iH.js → orchestrator-BtbxiPQB.js} +17 -16
- package/dist/lib/{orchestrator-Dro541iH.js.map → orchestrator-BtbxiPQB.js.map} +1 -1
- package/dist/lib/{peerjs-D741bHrf.js → peerjs-QJr03K9F.js} +7 -7
- package/dist/lib/{peerjs-D741bHrf.js.map → peerjs-QJr03K9F.js.map} +1 -1
- package/dist/lib/{prompt-api-D9XdrCep.js → prompt-api-vf351sf2.js} +2 -19
- package/dist/lib/{prompt-api-D9XdrCep.js.map → prompt-api-vf351sf2.js.map} +1 -1
- package/dist/lib/{push-client-DKFUY_Ti.js → push-client-BOHgqHbk.js} +4 -4
- package/dist/lib/{push-client-DKFUY_Ti.js.map → push-client-BOHgqHbk.js.map} +1 -1
- package/dist/lib/{readGroupFileBytes-C8Xqlb8l.js → readGroupFileBytes-CRA6dmgT.js} +2 -2
- package/dist/lib/{readGroupFileBytes-C8Xqlb8l.js.map → readGroupFileBytes-CRA6dmgT.js.map} +1 -1
- package/dist/lib/{shadow-claw-a2ui-CPydWVdW.js → shadow-claw-a2ui-DbZa4Gxp.js} +2 -2
- package/dist/lib/{shadow-claw-a2ui-CPydWVdW.js.map → shadow-claw-a2ui-DbZa4Gxp.js.map} +1 -1
- package/dist/lib/{shadow-claw-accounts-CUypXc3I.js → shadow-claw-accounts-B6OW2NVD.js} +3 -3
- package/dist/lib/{shadow-claw-accounts-CUypXc3I.js.map → shadow-claw-accounts-B6OW2NVD.js.map} +1 -1
- package/dist/lib/{shadow-claw-channel-config-D_Vb2ous.js → shadow-claw-channel-config-F_EJ-uK2.js} +3 -3
- package/dist/lib/{shadow-claw-channel-config-D_Vb2ous.js.map → shadow-claw-channel-config-F_EJ-uK2.js.map} +1 -1
- package/dist/lib/{shadow-claw-channels-hgjjzvRr.js → shadow-claw-channels-XYylMpjg.js} +3 -3
- package/dist/lib/{shadow-claw-channels-hgjjzvRr.js.map → shadow-claw-channels-XYylMpjg.js.map} +1 -1
- package/dist/lib/{shadow-claw-chat-D69IiLXd.js → shadow-claw-chat-dbK_DGO_.js} +124 -38
- package/dist/lib/shadow-claw-chat-dbK_DGO_.js.map +1 -0
- package/dist/lib/{shadow-claw-control-plane-zBYlFvzQ.js → shadow-claw-control-plane-BJKkmahQ.js} +7 -7
- package/dist/lib/{shadow-claw-control-plane-zBYlFvzQ.js.map → shadow-claw-control-plane-BJKkmahQ.js.map} +1 -1
- package/dist/lib/{shadow-claw-conversations-1GW8_e8o.js → shadow-claw-conversations-BKSsMYTc.js} +6 -6
- package/dist/lib/{shadow-claw-conversations-1GW8_e8o.js.map → shadow-claw-conversations-BKSsMYTc.js.map} +1 -1
- package/dist/lib/{shadow-claw-D3z3tFyE.js → shadow-claw-eBB2dbpd.js} +11 -11
- package/dist/lib/{shadow-claw-D3z3tFyE.js.map → shadow-claw-eBB2dbpd.js.map} +1 -1
- package/dist/lib/{shadow-claw-file-viewer-DI4r7Th9.js → shadow-claw-file-viewer-BqChtTvM.js} +8 -8
- package/dist/lib/{shadow-claw-file-viewer-DI4r7Th9.js.map → shadow-claw-file-viewer-BqChtTvM.js.map} +1 -1
- package/dist/lib/{shadow-claw-files-BM7qW3TW.js → shadow-claw-files-Bu7VCQw6.js} +9 -9
- package/dist/lib/{shadow-claw-files-BM7qW3TW.js.map → shadow-claw-files-Bu7VCQw6.js.map} +1 -1
- package/dist/lib/{shadow-claw-git-BBTiTYIn.js → shadow-claw-git-CdPPN6Qb.js} +6 -6
- package/dist/lib/{shadow-claw-git-BBTiTYIn.js.map → shadow-claw-git-CdPPN6Qb.js.map} +1 -1
- package/dist/lib/{shadow-claw-integrations-DTY3E545.js → shadow-claw-integrations-DehqBSRe.js} +4 -4
- package/dist/lib/{shadow-claw-integrations-DTY3E545.js.map → shadow-claw-integrations-DehqBSRe.js.map} +1 -1
- package/dist/lib/{shadow-claw-llm-AJwzkOGo.js → shadow-claw-llm-COZkufA8.js} +13 -11
- package/dist/lib/shadow-claw-llm-COZkufA8.js.map +1 -0
- package/dist/lib/{shadow-claw-mcp-remote-n7YXKxmv.js → shadow-claw-mcp-remote-axF50-le.js} +4 -4
- package/dist/lib/{shadow-claw-mcp-remote-n7YXKxmv.js.map → shadow-claw-mcp-remote-axF50-le.js.map} +1 -1
- package/dist/lib/{shadow-claw-networking-B3leDgZ4.js → shadow-claw-networking-BT_Rxj36.js} +2 -2
- package/dist/lib/{shadow-claw-networking-B3leDgZ4.js.map → shadow-claw-networking-BT_Rxj36.js.map} +1 -1
- package/dist/lib/{shadow-claw-notifications-Bm2aHQ0U.js → shadow-claw-notifications-ClqAXDDN.js} +3 -3
- package/dist/lib/{shadow-claw-notifications-Bm2aHQ0U.js.map → shadow-claw-notifications-ClqAXDDN.js.map} +1 -1
- package/dist/lib/{shadow-claw-page-header-BBqSWlhP.js → shadow-claw-page-header-bigC_h6U.js} +2 -2
- package/dist/lib/{shadow-claw-page-header-BBqSWlhP.js.map → shadow-claw-page-header-bigC_h6U.js.map} +1 -1
- package/dist/lib/{shadow-claw-pages-BFOcluFY.js → shadow-claw-pages-kA2qa-4B.js} +9 -9
- package/dist/lib/{shadow-claw-pages-BFOcluFY.js.map → shadow-claw-pages-kA2qa-4B.js.map} +1 -1
- package/dist/lib/{shadow-claw-peerjs-BvD_MH_l.js → shadow-claw-peerjs-CvcH2DkA.js} +3 -3
- package/dist/lib/{shadow-claw-peerjs-BvD_MH_l.js.map → shadow-claw-peerjs-CvcH2DkA.js.map} +1 -1
- package/dist/lib/{shadow-claw-provider-model-picker-CsA-507a.js → shadow-claw-provider-model-picker-fcVQdDtQ.js} +2 -2
- package/dist/lib/{shadow-claw-provider-model-picker-CsA-507a.js.map → shadow-claw-provider-model-picker-fcVQdDtQ.js.map} +1 -1
- package/dist/lib/{shadow-claw-settings-CZgGMz0a.js → shadow-claw-settings-CkO6JjA4.js} +6 -6
- package/dist/lib/{shadow-claw-settings-CZgGMz0a.js.map → shadow-claw-settings-CkO6JjA4.js.map} +1 -1
- package/dist/lib/{shadow-claw-storage-BTUpEKO0.js → shadow-claw-storage-10w-y8vL.js} +5 -5
- package/dist/lib/{shadow-claw-storage-BTUpEKO0.js.map → shadow-claw-storage-10w-y8vL.js.map} +1 -1
- package/dist/lib/{shadow-claw-task-server-B1X2AYyZ.js → shadow-claw-task-server-U98sZxPu.js} +2 -2
- package/dist/lib/{shadow-claw-task-server-B1X2AYyZ.js.map → shadow-claw-task-server-U98sZxPu.js.map} +1 -1
- package/dist/lib/{shadow-claw-tasks-BYtaRUAd.js → shadow-claw-tasks-DrSVUOsP.js} +8 -8
- package/dist/lib/{shadow-claw-tasks-BYtaRUAd.js.map → shadow-claw-tasks-DrSVUOsP.js.map} +1 -1
- package/dist/lib/{shadow-claw-terminal-LGuXKu77.js → shadow-claw-terminal-B7HYLuce.js} +2 -2
- package/dist/lib/{shadow-claw-terminal-LGuXKu77.js.map → shadow-claw-terminal-B7HYLuce.js.map} +1 -1
- package/dist/lib/{shadow-claw-tools-C_S-xXVG.js → shadow-claw-tools-BKrXzZfF.js} +7 -7
- package/dist/lib/{shadow-claw-tools-C_S-xXVG.js.map → shadow-claw-tools-BKrXzZfF.js.map} +1 -1
- package/dist/lib/{shadow-claw-webvm-Cab1n1bu.js → shadow-claw-webvm-Duwa5oiW.js} +3 -3
- package/dist/lib/{shadow-claw-webvm-Cab1n1bu.js.map → shadow-claw-webvm-Duwa5oiW.js.map} +1 -1
- package/dist/lib/{syncWebMcpRegistration-Dy5NS_4G.js → syncWebMcpRegistration-BOx-0F6_.js} +5 -5
- package/dist/lib/{syncWebMcpRegistration-Dy5NS_4G.js.map → syncWebMcpRegistration-BOx-0F6_.js.map} +1 -1
- package/dist/lib/{tools-B7gC1eb_.js → tools-BEuBatUs.js} +4 -4
- package/dist/lib/{tools-B7gC1eb_.js.map → tools-BEuBatUs.js.map} +1 -1
- package/dist/lib/utils/index.js +1 -1
- package/dist/lib/utils/utils.js +1 -1
- package/dist/lib/{utils-D_ylqOY-.js → utils-D8AxCH6m.js} +2 -2
- package/dist/lib/{utils-D_ylqOY-.js.map → utils-D8AxCH6m.js.map} +1 -1
- package/dist/lib/{webmcp-CkYINKJj.js → webmcp-BjfVWX1K.js} +2 -2
- package/dist/lib/{webmcp-CkYINKJj.js.map → webmcp-BjfVWX1K.js.map} +1 -1
- package/dist/public/.well-known/mcp/server-card.json +1 -1
- package/dist/public/.well-known/mcp.json +1 -1
- package/dist/public/README.md +1 -1
- package/dist/public/agent.worker.js +1 -1
- package/dist/public/components/shadow-claw-chat/shadow-claw-chat.html +1 -1
- package/dist/public/config-071HSho8.js +1 -0
- package/dist/public/{configurePeerJs-DQQ6YL-5.js → configurePeerJs-DL-LurJY.js} +1 -1
- package/dist/public/{connections-CRNk2FxF.js → connections-Bb0rBpV-.js} +1 -1
- package/dist/public/{custom-element-security-3_FKCXcg.js → custom-element-security-Td4vrRc_.js} +1 -1
- package/dist/public/docs/example/article/index.html +1 -1
- package/dist/public/docs/example/article.html +1 -1
- package/dist/public/docs/publishing/index.html +1 -1
- package/dist/public/docs/publishing.html +1 -1
- package/dist/public/docs/skill-creator/index.html +1 -1
- package/dist/public/docs/skill-creator.html +1 -1
- package/dist/public/docs/subsystems/providers.md +1 -1
- package/dist/public/{downloadGroupFile-wkdhVgrZ.js → downloadGroupFile-Unq8_7D9.js} +1 -1
- package/dist/public/{e2e-bridge-DnFHPuwg.js → e2e-bridge-Dbc9fCDq.js} +1 -1
- package/dist/public/{file-viewer-C92v4Ggd.js → file-viewer-QkCuknFn.js} +1 -1
- package/dist/public/{getGroupDir-BGGIJL4Y.js → getGroupDir-Bj5XCflQ.js} +1 -1
- package/dist/public/{git-BH6qyToB.js → git-Bhz4YHc8.js} +2 -2
- package/dist/public/index.html +1 -1
- package/dist/public/index.js +1 -1
- package/dist/public/{initChatSplitResize--RH5kzVF.js → initChatSplitResize-KNL9Oh7s.js} +1 -1
- package/dist/public/{initControlPlane-yPJ3ajkj.js → initControlPlane-D2fVhRFC.js} +1 -1
- package/dist/public/main/index.html +1 -1
- package/dist/public/main/memory/index.html +1 -1
- package/dist/public/main/memory.html +1 -1
- package/dist/public/main.html +1 -1
- package/dist/public/{markdown-CA0v11cd.js → markdown-By6gdUvF.js} +1 -1
- package/dist/public/{mcp-reconnect-uyNSigzu.js → mcp-reconnect-CDRJPuoN.js} +1 -1
- package/dist/public/{memoryStorage-DjPNAT5t.js → memoryStorage-C-ao9y-j.js} +1 -1
- package/dist/public/model-ranking-DUdrFOcC.js +1 -0
- package/dist/public/{orchestrator-DTzgyL23.js → orchestrator-B7MpomoG.js} +2 -2
- package/dist/public/{orchestrator-Cmr69pMC.js → orchestrator-C8aIHbDy.js} +2 -2
- package/dist/public/{peerjs-Br38mUFC.js → peerjs-DwGjY5VX.js} +1 -1
- package/dist/public/prompt-api-BWe_j3Wg.js +1 -0
- package/dist/public/{push-client-CB8haOGC.js → push-client-o8g5_EOe.js} +1 -1
- package/dist/public/service-worker.js +1 -1
- package/dist/public/{shadow-claw-RuFQ2Ej5.js → shadow-claw-Ba2ZFE9m.js} +2 -2
- package/dist/public/{shadow-claw-accounts-BMsEItB6.js → shadow-claw-accounts-BbNPiiaV.js} +1 -1
- package/dist/public/{shadow-claw-channels-Q_AXuEaI.js → shadow-claw-channels-CHGtPkfY.js} +1 -1
- package/dist/public/{shadow-claw-chat-DZQ3OaH7.js → shadow-claw-chat-3TmjJA6-.js} +90 -23
- package/dist/public/{shadow-claw-control-plane-CyXA8tB8.js → shadow-claw-control-plane-BAFT06LL.js} +2 -2
- package/dist/public/{shadow-claw-conversations-BLKtlvHe.js → shadow-claw-conversations-DsQ_kxWm.js} +1 -1
- package/dist/public/{shadow-claw-file-viewer-CVLDfpZe.js → shadow-claw-file-viewer-hBxTknL2.js} +1 -1
- package/dist/public/{shadow-claw-files-DB6VVjir.js → shadow-claw-files-Daw6IIrJ.js} +1 -1
- package/dist/public/{shadow-claw-git-D57bTSMF.js → shadow-claw-git-CxGwyxim.js} +2 -2
- package/dist/public/{shadow-claw-integrations-BOwhUY-4.js → shadow-claw-integrations-DnIr6xp-.js} +1 -1
- package/dist/public/{shadow-claw-llm-CYenm-mm.js → shadow-claw-llm-Bc6tZ8kk.js} +3 -3
- package/dist/public/{shadow-claw-mcp-remote-CJ-Ckl0j.js → shadow-claw-mcp-remote-nGPpFpI-.js} +1 -1
- package/dist/public/{shadow-claw-networking-Cut76YQL.js → shadow-claw-networking-B6YgtiA7.js} +1 -1
- package/dist/public/{shadow-claw-notifications-C3kYCrIa.js → shadow-claw-notifications-BSxifptS.js} +1 -1
- package/dist/public/{shadow-claw-page-header-Dd7QafUk.js → shadow-claw-page-header-LzVgEn46.js} +1 -1
- package/dist/public/{shadow-claw-pages-BWtVtwTG.js → shadow-claw-pages-Cy6T0G9y.js} +1 -1
- package/dist/public/{shadow-claw-settings-Bj7jnngO.js → shadow-claw-settings-DGkwt1ge.js} +2 -2
- package/dist/public/{shadow-claw-storage-CMSzQs1-.js → shadow-claw-storage-DX_4T7KR.js} +1 -1
- package/dist/public/{shadow-claw-task-server-CFclo7UX.js → shadow-claw-task-server-DTsbEs5z.js} +1 -1
- package/dist/public/{shadow-claw-tasks-ClDdeB6Z.js → shadow-claw-tasks-rr6fMxAM.js} +1 -1
- package/dist/public/{shadow-claw-terminal-3ysWZJix.js → shadow-claw-terminal-C7DhrrX6.js} +1 -1
- package/dist/public/{shadow-claw-tools-DQVwpTcZ.js → shadow-claw-tools-DcQroojH.js} +1 -1
- package/dist/public/{shadow-claw-webvm-Cnxz04Fk.js → shadow-claw-webvm-bZj44Did.js} +1 -1
- package/dist/public/{syncWebMcpRegistration-QwnLMAK3.js → syncWebMcpRegistration-XJjIlDNO.js} +1 -1
- package/dist/public/{tools-DvQ_ngXn.js → tools-BpZh7hgB.js} +1 -1
- package/dist/public/{webmcp-CJymew4t.js → webmcp-CkfDZfZ0.js} +1 -1
- package/dist/server.js +1 -1
- package/package.json +1 -1
- package/src/components/settings/shadow-claw-llm/model-ranking.test.ts +121 -7
- package/src/components/settings/shadow-claw-llm/model-ranking.ts +97 -0
- package/src/components/settings/shadow-claw-llm/shadow-claw-llm.test.ts +35 -0
- package/src/components/settings/shadow-claw-llm/shadow-claw-llm.ts +15 -5
- package/src/components/shadow-claw-chat/shadow-claw-chat.html +81 -14
- package/src/components/shadow-claw-chat/shadow-claw-chat.test.ts +73 -0
- package/src/components/shadow-claw-chat/shadow-claw-chat.trusted-types.test.ts +3 -0
- package/src/components/shadow-claw-chat/shadow-claw-chat.ts +79 -32
- package/src/config/config.test.ts +4 -4
- package/src/config/config.ts +2 -1
- package/src/core/orchestrator/orchestrator.test.ts +2 -1
- package/src/core/orchestrator/utils/initTasks.ts +5 -4
- package/dist/cli/chunk-B3S061IE.js +0 -1
- package/dist/cli/chunk-BUJdF9o3.js +0 -1
- package/dist/cli/chunk-BX0R2gIY.js +0 -1
- package/dist/cli/chunk-BoiPfhwJ.js +0 -1
- package/dist/cli/chunk-BtJYj7vB.js +0 -1
- package/dist/cli/chunk-BwXrZVeU.js +0 -1
- package/dist/cli/chunk-CaWh9Pru.js +0 -1
- package/dist/cli/chunk-Ck4ePI8z.js +0 -1
- package/dist/cli/chunk-Ctg-SXcP.js +0 -1
- package/dist/cli/chunk-DTKv1-tk.js +0 -1
- package/dist/cli/chunk-DdYpd9Nu.js +0 -1
- package/dist/cli/chunk-DflhmBY2.js +0 -1
- package/dist/lib/config-DxDaVDTn.js.map +0 -1
- package/dist/lib/model-ranking-CDXs7hkK.js +0 -57
- package/dist/lib/model-ranking-CDXs7hkK.js.map +0 -1
- package/dist/lib/shadow-claw-chat-D69IiLXd.js.map +0 -1
- package/dist/lib/shadow-claw-llm-AJwzkOGo.js.map +0 -1
- package/dist/public/config-Dqn5OMfC.js +0 -1
- package/dist/public/model-ranking-DLIC9IDU.js +0 -1
- package/dist/public/prompt-api-B-8N-MRY.js +0 -11
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e,n as t,r as n,t as r}from"./chunk-bAN2Ofkr.js";import{t as i}from"./chunk-BChOKoxf.js";import{n as a,r as o,t as s}from"./chunk-Cpdoq2Nw.js";import{a as c,c as l,i as u,l as d,n as f,r as p,s as m,t as h}from"./chunk-
|
|
1
|
+
import{i as e,n as t,r as n,t as r}from"./chunk-bAN2Ofkr.js";import{t as i}from"./chunk-BChOKoxf.js";import{n as a,r as o,t as s}from"./chunk-Cpdoq2Nw.js";import{a as c,c as l,i as u,l as d,n as f,r as p,s as m,t as h}from"./chunk-rstVU7U0.js";import{C as g,D as _,E as v,S as y,T as ee,b as te,c as ne,f as re,m as ie,n as ae,o as b,p as oe,r as x,u as se,v as ce,w as le,x as ue,y as de}from"./chunk-C79eIU-4.js";import{n as fe,t as S}from"./chunk-D-kV2FND.js";import{t as pe}from"./chunk-DjKQO7aV.js";import{t as C}from"./chunk-CcMGBEzH.js";import{a as me,i as he,o as ge,r as _e}from"./chunk-DToVgO9a.js";import{a as ve,c as ye,n as be,o as xe,r as Se,s as Ce,t as we}from"./chunk-DnRcu9b4.js";import{a as Te,i as Ee,n as De,o as Oe,t as ke}from"./chunk-DIjCY0Wf.js";import{t as Ae}from"./chunk-CkXMNGcB.js";import{t as je}from"./chunk-BhCmCUGL.js";import{a as Me,c as Ne,d as w,l as Pe,o as Fe,s as T,t as Ie,u as Le}from"./chunk-CcSTYHtR.js";import{a as Re,i as ze,t as Be}from"./chunk-CuwzD5GU.js";import{t as Ve}from"./chunk-DJ_LeQtz.js";import{Bash as He,InMemoryFs as Ue}from"just-bash";var We=Object.defineProperty,Ge=(e,t,n)=>t in e?We(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ke=(e,t,n)=>(Ge(e,typeof t==`symbol`?t:t+``,n),n),qe=(e,t,n)=>{if(!t.has(e))throw TypeError(`Cannot `+n)},Je=(e,t)=>{if(Object(t)!==t)throw TypeError(`Cannot use the "in" operator on this value`);return e.has(t)},Ye=(e,t,n)=>{if(t.has(e))throw TypeError(`Cannot add the same private member more than once`);t instanceof WeakSet?t.add(e):t.set(e,n)},Xe=(e,t,n)=>(qe(e,t,`access private method`),n);
|
|
2
2
|
/**
|
|
3
3
|
* @license
|
|
4
4
|
* Copyright Google LLC All Rights Reserved.
|
|
@@ -315,7 +315,7 @@ const restoreGlobals = applyGlobalShadows();
|
|
|
315
315
|
|
|
316
316
|
`).trim()}function Ts(e){let t=/<\|tool_call>call:([a-zA-Z_][a-zA-Z0-9_]*)(\{[\s\S]*?\})?<tool_call\|>/g,n=[];return{toolBlocks:n,residualText:e.replace(t,(e,t,r)=>{let i={};if(r)try{let e=JSON.parse(r);e&&typeof e==`object`&&!Array.isArray(e)&&(i=e)}catch{}return n.push({type:`tool_use`,id:`mesh_llm_call_${Date.now()}_${Math.random().toString(36).slice(2)}`,name:t,input:i}),``}).replace(/^[ \t]+$/gm,``).replace(/\n{3,}/g,`
|
|
317
317
|
|
|
318
|
-
`).trim()}}function Es(e){if(!e||!Array.isArray(e.content))return e;let t=[],n=!1;for(let r of e.content){if(r.type!==`text`){t.push(r);continue}let{toolBlocks:e,residualText:i}=Ts(ws(r.text));i&&t.push({type:`text`,text:i}),e.length>0&&(n=!0,t.push(...e))}return{...e,content:t,stop_reason:n||e.stop_reason===`tool_use`?`tool_use`:e.stop_reason}}const Ds={openai:bs,anthropic:xs,google:Cs,"mesh-llm":class extends bs{parseResponse(e){return Es(super.parseResponse(e))}}};function Os(e){let t=Ds[e.format];if(!t)throw Error(`Unsupported provider format: ${e.format}`);return new t(e)}function ks(e,t,n,r){return Os(e).formatRequest(t,n,r)}function As(e){let t=e.toLowerCase();return t===`none`?0:t===`max`||t===`xhigh`?.95:t===`high`?.8:t===`medium`?.5:t===`low`?.2:t===`minimal`?.1:0}function js(e,t){return Os(e).parseResponse(t)}function Ms(e){let t=_.getModelInfo(e);if(t?.contextWindow)return t.contextWindow;let n=e.toLowerCase();return n.includes(`gpt-6-luna`)?1e6:n.includes(`gpt-6`)||n.includes(`astra`)?105e4:n.includes(`gpt-4.1`)?1047576:n.includes(`gpt-5`)?4e5:n.includes(`gpt-4o`)||n.includes(`gpt-4-turbo`)?128e3:n===`gpt-4`||n.startsWith(`gpt-4-`)?8192:n.includes(`gpt-3.5-turbo`)?16385:n.includes(`gpt-3.5`)?4096:n.includes(`o1`)||n.includes(`o3`)||n.includes(`o4`)?2e5:/claude-(?:sonnet|opus|haiku|fable|mythos)-[4-9]/.test(n)||/claude-[4-9]-(?:sonnet|opus|haiku|fable|mythos)/.test(n)||n.includes(`claude-opus-4`)||n.includes(`claude-sonnet-4`)||n.includes(`claude-fable`)||n.includes(`claude-mythos`)?1e6:n.includes(`claude`)?2e5:n.includes(`gemini-nano`)?4096:n.includes(`gemini-3.5-pro`)||n.includes(`gemini-3-pro`)||n.includes(`gemini-1.5-pro`)?2097152:n.includes(`gemini-3`)||n.includes(`gemini-2.5`)||n.includes(`gemini-2.0`)||n.includes(`gemini-1.5`)?1048576:n.includes(`gemini-1.0`)||n.includes(`gemini-pro`)?32768:n.includes(`gemini`)?1048576:n.includes(`llama-3.1`)||n.includes(`llama-3-1`)?128e3:n.includes(`llama-3`)?8192:n.includes(`llama`)?4096:n.includes(`gemma-4-12b`)||n.includes(`gemma-4-26b`)||n.includes(`gemma-4-31b`)||n.includes(`gemma-4-e9b`)||n.includes(`gemma-4-e27b`)?256e3:n.includes(`gemma-4`)||n.includes(`gemma 4`)||n.includes(`gemma-3-4b`)||n.includes(`gemma-3-12b`)||n.includes(`gemma-3-27b`)?128e3:n.includes(`gemma-3`)||n.includes(`gemma 3`)?32e3:n.includes(`gemma-2`)||n.includes(`gemma-7b`)||n.includes(`gemma-2b`)||n.includes(`gemma`)?8192:n.includes(`mistral-large`)?128e3:n.includes(`mistral`)?32e3:n.includes(`amazon.titan`)?8192:n.includes(`amazon.nova-micro`)||n.includes(`nova-micro`)?128e3:n.includes(`amazon.nova`)||n.includes(`nova-pro`)||n.includes(`nova-lite`)?3e5:n.includes(`ai21`)?8192:n.includes(`cohere`)||n.includes(`phi-4-mini`)?128e3:n.includes(`phi-4`)?16384:n.includes(`phi-3.5`)||n.includes(`128k`)?128e3:n.includes(`phi-3`)?4096:n.includes(`qwen3.5`)?262144:n.includes(`qwen3-0.6b`)||n.includes(`qwen3-1.7b`)?40960:n.includes(`qwen3`)?128e3:n===`mesh`?242144:4096}let Ns=null;function Ps(e){Ns=e,typeof globalThis<`u`&&(globalThis.__nodeTransformersTaskExecutor=e)}let Fs=null;function Is(e){Fs=e,typeof globalThis<`u`&&(globalThis.__nodeLlamafileTaskExecutor=e)}function Ls(e,t){if(e===`translate`)return`Translate the following text from ${t.sourceLanguage||`auto`} to ${t.targetLanguage}. Provide ONLY the raw translated text without commentary or quotation marks:\n\n${t.text}`;if(e===`summarize`)return t.overridePrompt?`${t.overridePrompt}\n\n${t.text}`:`Summarize the following text (type: ${t.type||`tldr`}, format: ${t.format||`plain-text`}, length: ${t.length||`medium`}). Provide ONLY the summary:\n\n${t.text}`;if(e===`write`)return`Draft content for the following request (tone: ${t.tone||`neutral`}, format: ${t.format||`plain-text`}, length: ${t.length||`short`}, context: ${t.context||`none`}):\n\n${t.prompt}`;if(e===`rewrite`)return`Rewrite the following text (tone: ${t.tone||`as-is`}, format: ${t.format||`as-is`}, length: ${t.length||`as-is`}, context: ${t.context||`none`}):\n\n${t.text}`;if(e===`proofread`)return`Proofread and correct grammar, spelling, and style in the following text. Provide ONLY the corrected text:\n\n${t.text}`;if(e===`detect-language`)return`Detect the language of the following text. Return ONLY a JSON array of objects with "detectedLanguage" (BCP 47 code) and "confidence" (0.0 - 1.0), e.g. [{"detectedLanguage":"en","confidence":0.99}]:\n\n${t.text}`;if(e===`semantic-embedder`)return`Provide a concise semantic description/representation for the following content:\n\n${JSON.stringify(t.text)}`;throw Error(`Unknown native AI task type: ${e}`)}async function Rs(e){if(e.toolsBackendPref)return e.toolsBackendPref;if(e.db)try{let{getConfig:t}=await import(`./chunk-DhOkc1Tu.js`),n=await t(e.db,x.BUILTIN_AI_TOOLS_BACKEND);if(n)return n}catch{}return`active_provider`}async function zs(e,t,n){if(n.apiKey!==void 0)return n.apiKey;if(typeof process<`u`&&process.env){let e=process.env.SHADOW_CLAW_API_KEY;if(e)return e;switch(t){case`openrouter`:if(process.env.OPENROUTER_API_KEY)return process.env.OPENROUTER_API_KEY;break;case`huggingface`:if(process.env.HUGGINGFACE_API_KEY||process.env.HF_TOKEN)return process.env.HUGGINGFACE_API_KEY||process.env.HF_TOKEN||``;break;case`gemini_proxy`:if(process.env.GEMINI_API_KEY)return process.env.GEMINI_API_KEY}let n=`${t.toUpperCase()}_API_KEY`;if(process.env[n])return process.env[n]}if(n.db)try{let{getConfig:e}=await import(`./chunk-DhOkc1Tu.js`),r=await e(n.db,`api_key:${t}`)||await e(n.db,`apiKey`);if(r)return r}catch{}return``}async function Bs(e){let{taskType:t,input:n,onProgress:r}=e;if(await Rs(e)===`local`){if(t===`summarize`)return await Va(n.text,{...n,onProgress:r});if(t===`write`)return await Ha(n.prompt,{...n,onProgress:r});if(t===`rewrite`)return await Ua(n.text,{...n,onProgress:r});if(t===`proofread`)return await Ka(n.text,{...n,onProgress:r});if(t===`detect-language`)return await Wa(n.text,{onProgress:r});if(t===`translate`)return await Ga(n.text,{sourceLanguage:n.sourceLanguage||`auto`,targetLanguage:n.targetLanguage||`en`,...n,onProgress:r});if(t===`semantic-embedder`)return await qa(n.text,{...n,onProgress:r});throw Error(`Unknown native AI task: ${t}`)}let i=o()?`openrouter`:`prompt_api`,a=e.providerId;if(!a&&e.db)try{let{getConfig:t}=await import(`./chunk-DhOkc1Tu.js`);a=await t(e.db,x.PROVIDER)||i}catch{}a||=typeof process<`u`&&(process.env.SHADOW_CLAW_PROVIDER||process.env.SHADOW_CLAW_DEFAULT_PROVIDER)||i;let s=Ls(t,n);if(a===`prompt_api`){await za();let e=globalThis,n=e.LanguageModel||e.ai?.languageModel;if(n&&typeof n.create==`function`){let e;try{e=await n.create()}catch(e){console.warn(`Prompt API session creation failed in active provider task:`,e)}if(e)try{let n=await e.prompt(s),r=String(n||``).trim();if(t===`detect-language`)try{let e=JSON.parse(r);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return r}finally{typeof e.destroy==`function`&&e.destroy()}}}let c=te(a);if(!c||!c.baseUrl||c.baseUrl.startsWith(`builtin://`)||c.baseUrl.startsWith(`local://`)||c.format===`prompt_api`||c.format===`transformers_js`){if(t===`summarize`)return await Va(n.text,n);if(t===`write`)return await Ha(n.prompt,n);if(t===`rewrite`)return await Ua(n.text,n);if(t===`proofread`)return await Ka(n.text,n);if(t===`detect-language`)return await Wa(n.text);if(t===`translate`)return await Ga(n.text,{sourceLanguage:n.sourceLanguage||`auto`,targetLanguage:n.targetLanguage||`en`,...n});if(t===`semantic-embedder`)return await qa(n.text,n);throw Error(`Provider ${a} not found and no local fallback available`)}let l=o()&&(a===`transformers_js_local`||a===`llamafile`),u=await zs(c,a,e);if(!l&&c.requiresApiKey!==!1&&!u)throw Error(`Provider "${c.name||a}" requires an API key for task "${t}". Please provide an API key or configure tools backend.`);let d=e.model||c.defaultModel||`default`,f={...vs(c,u),...e.headers||{}},p=ks(c,[{role:`user`,content:s}],[],{maxTokens:e.maxTokens||2048,model:d,system:`You are a specialized text task assistant. Fulfill the user request directly and accurately without conversational filler.`});if(o()&&a===`transformers_js_local`){let n=Ns??globalThis.__nodeTransformersTaskExecutor;if(n){let r=js(c,await n({modelId:d,messages:p?.messages||[{role:`user`,content:s}],maxTokens:e.maxTokens||2048,abortSignal:e.abortSignal,onProgress:e.onProgress})).content?.filter(e=>e.type===`text`)?.map(e=>e.text)?.join(``)?.trim()||``;if(t===`detect-language`)try{let e=JSON.parse(r);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return r}}if(o()&&(a===`llamafile`||a===`agentfile`)){let n=Fs??globalThis.__nodeLlamafileTaskExecutor;if(n){let r=js(c,await n({model:d,messages:p?.messages||[{role:`user`,content:s}],maxTokens:e.maxTokens||2048,abortSignal:e.abortSignal})).content?.filter(e=>e.type===`text`)?.map(e=>e.text)?.join(``)?.trim()||``;if(t===`detect-language`)try{let e=JSON.parse(r);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return r}}let m=await fetch(c.baseUrl,{body:JSON.stringify(p),headers:f,method:`POST`});if(!m.ok){let e=await m.text();throw Error(`Active provider task API error ${m.status}: ${e}`)}let h=js(c,await m.json()).content?.filter(e=>e.type===`text`)?.map(e=>e.text)?.join(``)?.trim()||``;if(t===`detect-language`)try{let e=JSON.parse(h);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return h}let Vs=null;function Hs(e){Vs=e}async function Us(e,t,n,r){if(Vs)return await Vs(t,n,e,r);if(o()){let i=r?.invokeContext;return await Bs({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 a=i();return j({type:`request-native-ai-task`,payload:{id:a,groupId:e,taskType:t,input:n}}),await new Promise((e,t)=>{globalThis.pendingNativeAiResolvers=globalThis.pendingNativeAiResolvers||{},globalThis.pendingNativeAiResolvers[a]={resolve:e,reject:t}})}async function Ws(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for summarize_text`;try{return await Us(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 Gs(e,t,n){let r=String(e.prompt||``).trim();if(!r)return`Error: prompt is required for write_text`;try{return await Us(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 Ks(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for rewrite_text`;try{return await Us(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 qs(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for proofread_text`;try{return await Us(t,`proofread`,{text:r,context:e.context},n)}catch(e){return`Error proofreading text: ${e instanceof Error?e.message:String(e)}`}}async function Js(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for detect_language`;try{let e=await Us(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 Ys(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 Us(t,`translate`,{text:r,sourceLanguage:i,targetLanguage:a},n)}catch(e){return`Error translating text: ${e instanceof Error?e.message:String(e)}`}}async function Xs(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 Us(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 Zs(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=fa(t,r,i,a);s&&s(t+1,n,u,e),await pa(u,c)}}throw l}const Qs=/* @__PURE__ */ new Set([408,429,500,502,503,504]);function $s(e){return/network|ECONNRESET|ECONNREFUSED|ETIMEDOUT|fetch failed|EAI_AGAIN|EAI_NONAME|getaddrinfo/i.test(e.message)}function ec(e){if(e instanceof TypeError)return!0;if(typeof e?.status==`number`)return Qs.has(e.status);if(e instanceof Error){let t=e.message.match(/\b(4\d{2}|5\d{2})\b/);if(t)return Qs.has(Number(t[1]));if($s(e))return!0}return!1}function tc(e){return e instanceof TypeError?!0:e&&typeof e.status==`number`?Qs.has(e.status):e instanceof Error&&$s(e)}const nc=/* @__PURE__ */ new Set([`create_task`,`update_task`,`delete_task`,`enable_task`,`disable_task`,`send_notification`,`create_room`,`invite_to_room`,`leave_room`]);function rc(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 ic(e,t){let n=rc(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 ac(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 oc(e,t){return t&&nc.has(e)?`Tool "${e}" is not allowed during scheduled task execution to prevent recursion.`:null}function sc(e){return o()&&s.has(e)?`Tool "${e}" is not available in headless CLI mode. It requires a browser UI.`:null}function cc(e,t={}){return ic(e,t.allowedTools)||ac(e,t.isScheduledTask,t.isTaskExecution)||oc(e,t.isScheduledTask)||sc(e)||null}async function lc(e,t,n,r,i={},a){let o=await Ne(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 ei(e,{command:o.execution.command,stdin:JSON.stringify(n)},r):await So(e,{code:o.execution.code,data:JSON.stringify(n)})}let uc=null;async function dc(){return uc||=import(`./chunk-c8MIYB2y.js`),uc}async function fc(e,t,n,r){let i=await dc();return await Bi(e,t,n,r,{configKeys:{GIT_CORS_PROXY:x.GIT_CORS_PROXY,GIT_PROXY_URL:x.GIT_PROXY_URL,GIT_AUTHOR_NAME:x.GIT_AUTHOR_NAME,GIT_AUTHOR_EMAIL:x.GIT_AUTHOR_EMAIL},getConfig:C,getGroupDir:u,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:Le,resolveGitCredentials:In})}const P=/* @__PURE__ */ new Map;P.set(`bash`,(e,t,n)=>ei(e,t,n)),P.set(`read_file`,(e,t,n)=>qo(e,t,n)),P.set(`open_file`,(e,t,n)=>Go(e,t,n)),P.set(`attach_file_to_chat`,(e,t,n)=>Mo(e,t,n)),P.set(`send_file`,(e,t,n)=>Zo(e,t,n)),P.set(`write_file`,(e,t,n)=>$o(e,t,n)),P.set(`delete_file`,(e,t,n)=>Bo(e,t,n)),P.set(`move_file`,(e,t,n)=>Wo(e,t,n)),P.set(`copy_file`,(e,t,n)=>Lo(e,t,n)),P.set(`create_directory`,(e,t,n)=>Ro(e,t,n)),P.set(`patch_file`,(e,t,n)=>Ko(e,t,n)),P.set(`list_files`,(e,t,n)=>Ho(e,t,n)),P.set(`manage_tools`,(e,t,n)=>To(t,n)),P.set(`list_tool_profiles`,e=>wo(e)),P.set(`fetch_url`,(e,t,n)=>Pi(e,t,n,{buildAuthHeaders:kn,fetchImpl:fetch,fetchMaxResponse:re,isRetryableFetchError:tc,post:j,resolveGitCredentials:In,resolveServiceCredentials:Tn,retryableStatusCodes:Qs,stripHtml:br,uploadGroupFile:ye,withRetry:Zs})),P.set(`fetch_file`,(e,t,n)=>Mi(e,t,n,{buildAuthHeaders:kn,fetchImpl:fetch,isRetryableFetchError:tc,post:j,resolveGitCredentials:In,resolveServiceCredentials:Tn,retryableStatusCodes:Qs,uploadGroupFile:ye,withRetry:Zs,writeGroupFile:T})),P.set(`update_memory`,(e,t,n)=>Qo(e,t,n)),P.set(`create_task`,(e,t,n)=>no(t,n)),P.set(`javascript`,(e,t)=>So(e,t)),P.set(`activate_skill`,(e,t,n)=>is(e,t,n)),P.set(`list_tasks`,(e,t,n)=>so(e,n)),P.set(`update_task`,(e,t,n)=>lo(e,t,n)),P.set(`enable_task`,(e,t,n)=>oo(e,t,n)),P.set(`disable_task`,(e,t,n)=>ao(e,t,n)),P.set(`delete_task`,(e,t,n)=>ro(t,n)),P.set(`run_task`,(e,t,n)=>co(e,t,n)),P.set(`clear_chat`,(e,t,n)=>fo(n)),P.set(`show_toast`,(e,t)=>ko(t)),P.set(`send_notification`,(e,t,n)=>Oo(t,n)),P.set(`create_room`,(e,t)=>Xi(t)),P.set(`invite_to_room`,(e,t,n)=>$i(t,n)),P.set(`leave_room`,(e,t,n)=>ea(t,n)),P.set(`list_room_members`,(e,t,n)=>ta(e,t,n)),P.set(`prompt_peer`,(e,t,n)=>aa(e,t,n)),P.set(`list_peers`,(e,t,n)=>oa(e,t,n));const pc=(e,t,n)=>Ci(e,t,n);P.set(`manage_email`,pc),P.set(`manage_integration`,pc),P.set(`email_read_messages`,(e,t,n)=>mc(e,`manage_email`,{...t,action:`read_messages`},n)),P.set(`integration_read_messages`,(e,t,n)=>mc(e,`manage_email`,{...t,action:`read_messages`},n)),P.set(`email_send_message`,(e,t,n)=>mc(e,`manage_email`,{...t,action:`send_message`},n)),P.set(`integration_send_message`,(e,t,n)=>mc(e,`manage_email`,{...t,action:`send_message`},n)),P.set(`remote_mcp_list_tools`,(e,t,n)=>Ji(e,t,n,{callRemoteMcpTool:dr,listRemoteMcpTools:ur,McpReauthRequiredError:Qn,post:j})),P.set(`remote_mcp_call_tool`,(e,t,n)=>Yi(e,t,n,{callRemoteMcpTool:dr,listRemoteMcpTools:ur,McpReauthRequiredError:Qn,post:j}));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`])P.set(e,(t,n,r)=>fc(t,e,n,r));P.set(`list_components`,()=>Co()),P.set(`render_component`,(e,t,n)=>Do(t,n)),P.set(`spawn_subagent`,async(e,t,n,r)=>r?.invokeContext?await to(t,n,r.invokeContext):`Error: spawn_subagent requires an active agent invocation context. This tool cannot be called directly.`),P.set(`get_current_time`,(e,t)=>po(t)),P.set(`search_files`,(e,t,n)=>Xo(e,t,n,{maxFileBytes:A.searchFilesMaxFileBytes,maxFilesVisited:A.searchFilesMaxFilesVisited,skipDirs:A.searchFilesSkipDirsSet})),P.set(`diff_files`,(e,t,n)=>Vo(e,t,n)),P.set(`ask_user`,(e,t,n)=>uo(t,n)),P.set(`web_search`,(e,t)=>Ao(t)),P.set(`summarize_text`,(e,t,n,r)=>Ws(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`write_text`,(e,t,n,r)=>Gs(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`rewrite_text`,(e,t,n,r)=>Ks(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`proofread_text`,(e,t,n,r)=>qs(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`detect_language`,(e,t,n,r)=>Js(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`translate_text`,(e,t,n,r)=>Ys(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`embed_text`,(e,t,n,r)=>Xs(t,n,{db:e,invokeContext:r?.invokeContext}));async function mc(e,t,n,r,i={}){try{let a=cc(t,i);if(a)return a;let o=P.get(t);return o?await o(e,n,r,i):await lc(e,t,n,r,i,mc)}catch(e){return`Tool error (${t}): ${e instanceof Error?e.message:String(e)}`}}const hc=880803840;var gc=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?hc: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))}},_c=Object.defineProperty,vc=(e,t,n)=>t in e?_c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yc=(e,t,n)=>(vc(e,typeof t==`symbol`?t:t+``,n),n),F=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`}),I=class{constructor(e,t){this.value=e,this.type=t}};function bc(e){return/\w/.test(e)}function xc(e){return/[0-9]/.test(e)}function Sc(e){return/\s/.test(e)}var Cc=[[`{%`,F.OpenStatement],[`%}`,F.CloseStatement],[`{{`,F.OpenExpression],[`}}`,F.CloseExpression],[`(`,F.OpenParen],[`)`,F.CloseParen],[`{`,F.OpenCurlyBracket],[`}`,F.CloseCurlyBracket],[`[`,F.OpenSquareBracket],[`]`,F.CloseSquareBracket],[`,`,F.Comma],[`.`,F.Dot],[`:`,F.Colon],[`|`,F.Pipe],[`<=`,F.ComparisonBinaryOperator],[`>=`,F.ComparisonBinaryOperator],[`==`,F.ComparisonBinaryOperator],[`!=`,F.ComparisonBinaryOperator],[`<`,F.ComparisonBinaryOperator],[`>`,F.ComparisonBinaryOperator],[`+`,F.AdditiveBinaryOperator],[`-`,F.AdditiveBinaryOperator],[`~`,F.AdditiveBinaryOperator],[`**`,F.ExponentiationBinaryOperator],[`*`,F.MultiplicativeBinaryOperator],[`//`,F.MultiplicativeBinaryOperator],[`/`,F.MultiplicativeBinaryOperator],[`%`,F.MultiplicativeBinaryOperator],[`=`,F.Equals]],wc=/* @__PURE__ */ new Map([[`n`,`
|
|
318
|
+
`).trim()}}function Es(e){if(!e||!Array.isArray(e.content))return e;let t=[],n=!1;for(let r of e.content){if(r.type!==`text`){t.push(r);continue}let{toolBlocks:e,residualText:i}=Ts(ws(r.text));i&&t.push({type:`text`,text:i}),e.length>0&&(n=!0,t.push(...e))}return{...e,content:t,stop_reason:n||e.stop_reason===`tool_use`?`tool_use`:e.stop_reason}}const Ds={openai:bs,anthropic:xs,google:Cs,"mesh-llm":class extends bs{parseResponse(e){return Es(super.parseResponse(e))}}};function Os(e){let t=Ds[e.format];if(!t)throw Error(`Unsupported provider format: ${e.format}`);return new t(e)}function ks(e,t,n,r){return Os(e).formatRequest(t,n,r)}function As(e){let t=e.toLowerCase();return t===`none`?0:t===`max`||t===`xhigh`?.95:t===`high`?.8:t===`medium`?.5:t===`low`?.2:t===`minimal`?.1:0}function js(e,t){return Os(e).parseResponse(t)}function Ms(e){let t=_.getModelInfo(e);if(t?.contextWindow)return t.contextWindow;let n=e.toLowerCase();return n.includes(`gpt-6-luna`)?1e6:n.includes(`gpt-6`)||n.includes(`astra`)?105e4:n.includes(`gpt-4.1`)?1047576:n.includes(`gpt-5`)?4e5:n.includes(`gpt-4o`)||n.includes(`gpt-4-turbo`)?128e3:n===`gpt-4`||n.startsWith(`gpt-4-`)?8192:n.includes(`gpt-3.5-turbo`)?16385:n.includes(`gpt-3.5`)?4096:n.includes(`o1`)||n.includes(`o3`)||n.includes(`o4`)?2e5:/claude-(?:sonnet|opus|haiku|fable|mythos)-[4-9]/.test(n)||/claude-[4-9]-(?:sonnet|opus|haiku|fable|mythos)/.test(n)||n.includes(`claude-opus-4`)||n.includes(`claude-sonnet-4`)||n.includes(`claude-fable`)||n.includes(`claude-mythos`)?1e6:n.includes(`claude`)?2e5:n.includes(`gemini-nano`)?4096:n.includes(`gemini-3.5-pro`)||n.includes(`gemini-3-pro`)||n.includes(`gemini-1.5-pro`)?2097152:n.includes(`gemini-3`)||n.includes(`gemini-2.5`)||n.includes(`gemini-2.0`)||n.includes(`gemini-1.5`)?1048576:n.includes(`gemini-1.0`)||n.includes(`gemini-pro`)?32768:n.includes(`gemini`)?1048576:n.includes(`llama-3.1`)||n.includes(`llama-3-1`)?128e3:n.includes(`llama-3`)?8192:n.includes(`llama`)?4096:n.includes(`gemma-4-12b`)||n.includes(`gemma-4-26b`)||n.includes(`gemma-4-31b`)||n.includes(`gemma-4-e9b`)||n.includes(`gemma-4-e27b`)?256e3:n.includes(`gemma-4`)||n.includes(`gemma 4`)||n.includes(`gemma-3-4b`)||n.includes(`gemma-3-12b`)||n.includes(`gemma-3-27b`)?128e3:n.includes(`gemma-3`)||n.includes(`gemma 3`)?32e3:n.includes(`gemma-2`)||n.includes(`gemma-7b`)||n.includes(`gemma-2b`)||n.includes(`gemma`)?8192:n.includes(`mistral-large`)?128e3:n.includes(`mistral`)?32e3:n.includes(`amazon.titan`)?8192:n.includes(`amazon.nova-micro`)||n.includes(`nova-micro`)?128e3:n.includes(`amazon.nova`)||n.includes(`nova-pro`)||n.includes(`nova-lite`)?3e5:n.includes(`ai21`)?8192:n.includes(`cohere`)||n.includes(`phi-4-mini`)?128e3:n.includes(`phi-4`)?16384:n.includes(`phi-3.5`)||n.includes(`128k`)?128e3:n.includes(`phi-3`)?4096:n.includes(`qwen3.5`)?262144:n.includes(`qwen3-0.6b`)||n.includes(`qwen3-1.7b`)?40960:n.includes(`qwen3`)?128e3:n===`mesh`?242144:4096}let Ns=null;function Ps(e){Ns=e,typeof globalThis<`u`&&(globalThis.__nodeTransformersTaskExecutor=e)}let Fs=null;function Is(e){Fs=e,typeof globalThis<`u`&&(globalThis.__nodeLlamafileTaskExecutor=e)}function Ls(e,t){if(e===`translate`)return`Translate the following text from ${t.sourceLanguage||`auto`} to ${t.targetLanguage}. Provide ONLY the raw translated text without commentary or quotation marks:\n\n${t.text}`;if(e===`summarize`)return t.overridePrompt?`${t.overridePrompt}\n\n${t.text}`:`Summarize the following text (type: ${t.type||`tldr`}, format: ${t.format||`plain-text`}, length: ${t.length||`medium`}). Provide ONLY the summary:\n\n${t.text}`;if(e===`write`)return`Draft content for the following request (tone: ${t.tone||`neutral`}, format: ${t.format||`plain-text`}, length: ${t.length||`short`}, context: ${t.context||`none`}):\n\n${t.prompt}`;if(e===`rewrite`)return`Rewrite the following text (tone: ${t.tone||`as-is`}, format: ${t.format||`as-is`}, length: ${t.length||`as-is`}, context: ${t.context||`none`}):\n\n${t.text}`;if(e===`proofread`)return`Proofread and correct grammar, spelling, and style in the following text. Provide ONLY the corrected text:\n\n${t.text}`;if(e===`detect-language`)return`Detect the language of the following text. Return ONLY a JSON array of objects with "detectedLanguage" (BCP 47 code) and "confidence" (0.0 - 1.0), e.g. [{"detectedLanguage":"en","confidence":0.99}]:\n\n${t.text}`;if(e===`semantic-embedder`)return`Provide a concise semantic description/representation for the following content:\n\n${JSON.stringify(t.text)}`;throw Error(`Unknown native AI task type: ${e}`)}async function Rs(e){if(e.toolsBackendPref)return e.toolsBackendPref;if(e.db)try{let{getConfig:t}=await import(`./chunk-DhOkc1Tu.js`),n=await t(e.db,x.BUILTIN_AI_TOOLS_BACKEND);if(n)return n}catch{}return`active_provider`}async function zs(e,t,n){if(n.apiKey!==void 0)return n.apiKey;if(typeof process<`u`&&process.env){let e=process.env.SHADOW_CLAW_API_KEY;if(e)return e;switch(t){case`openrouter`:if(process.env.OPENROUTER_API_KEY)return process.env.OPENROUTER_API_KEY;break;case`huggingface`:if(process.env.HUGGINGFACE_API_KEY||process.env.HF_TOKEN)return process.env.HUGGINGFACE_API_KEY||process.env.HF_TOKEN||``;break;case`gemini_proxy`:if(process.env.GEMINI_API_KEY)return process.env.GEMINI_API_KEY}let n=`${t.toUpperCase()}_API_KEY`;if(process.env[n])return process.env[n]}if(n.db)try{let{getConfig:e}=await import(`./chunk-DhOkc1Tu.js`),r=await e(n.db,`api_key:${t}`)||await e(n.db,`apiKey`);if(r)return r}catch{}return``}async function Bs(e){let{taskType:t,input:n,onProgress:r}=e;if(await Rs(e)===`local`){if(t===`summarize`)return await Va(n.text,{...n,onProgress:r});if(t===`write`)return await Ha(n.prompt,{...n,onProgress:r});if(t===`rewrite`)return await Ua(n.text,{...n,onProgress:r});if(t===`proofread`)return await Ka(n.text,{...n,onProgress:r});if(t===`detect-language`)return await Wa(n.text,{onProgress:r});if(t===`translate`)return await Ga(n.text,{sourceLanguage:n.sourceLanguage||`auto`,targetLanguage:n.targetLanguage||`en`,...n,onProgress:r});if(t===`semantic-embedder`)return await qa(n.text,{...n,onProgress:r});throw Error(`Unknown native AI task: ${t}`)}let i=o()?`openrouter`:`prompt_api`,a=e.providerId;if(!a&&e.db)try{let{getConfig:t}=await import(`./chunk-DhOkc1Tu.js`);a=await t(e.db,x.PROVIDER)||i}catch{}a||=typeof process<`u`&&(process.env.SHADOW_CLAW_PROVIDER||process.env.SHADOW_CLAW_DEFAULT_PROVIDER)||i;let s=Ls(t,n);if(a===`prompt_api`){await za();let e=globalThis,n=e.LanguageModel||e.ai?.languageModel;if(n&&typeof n.create==`function`){let e;try{e=await n.create()}catch(e){console.warn(`Prompt API session creation failed in active provider task:`,e)}if(e)try{let n=await e.prompt(s),r=String(n||``).trim();if(t===`detect-language`)try{let e=JSON.parse(r);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return r}finally{typeof e.destroy==`function`&&e.destroy()}}}let c=te(a);if(!c||!c.baseUrl||c.baseUrl.startsWith(`builtin://`)||c.baseUrl.startsWith(`local://`)||c.format===`prompt_api`||c.format===`transformers_js`){if(t===`summarize`)return await Va(n.text,n);if(t===`write`)return await Ha(n.prompt,n);if(t===`rewrite`)return await Ua(n.text,n);if(t===`proofread`)return await Ka(n.text,n);if(t===`detect-language`)return await Wa(n.text);if(t===`translate`)return await Ga(n.text,{sourceLanguage:n.sourceLanguage||`auto`,targetLanguage:n.targetLanguage||`en`,...n});if(t===`semantic-embedder`)return await qa(n.text,n);throw Error(`Provider ${a} not found and no local fallback available`)}let l=o()&&(a===`transformers_js_local`||a===`llamafile`),u=await zs(c,a,e);if(!l&&c.requiresApiKey!==!1&&!u)throw Error(`Provider "${c.name||a}" requires an API key for task "${t}". Please provide an API key or configure tools backend.`);let d=e.model||c.defaultModel||`default`,f={...vs(c,u),...e.headers||{}},p=ks(c,[{role:`user`,content:s}],[],{maxTokens:e.maxTokens||2048,model:d,system:`You are a specialized text task assistant. Fulfill the user request directly and accurately without conversational filler.`});if(o()&&a===`transformers_js_local`){let n=Ns??globalThis.__nodeTransformersTaskExecutor;if(n){let r=js(c,await n({modelId:d,messages:p?.messages||[{role:`user`,content:s}],maxTokens:e.maxTokens||2048,abortSignal:e.abortSignal,onProgress:e.onProgress})).content?.filter(e=>e.type===`text`)?.map(e=>e.text)?.join(``)?.trim()||``;if(t===`detect-language`)try{let e=JSON.parse(r);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return r}}if(o()&&(a===`llamafile`||a===`agentfile`)){let n=Fs??globalThis.__nodeLlamafileTaskExecutor;if(n){let r=js(c,await n({model:d,messages:p?.messages||[{role:`user`,content:s}],maxTokens:e.maxTokens||2048,abortSignal:e.abortSignal})).content?.filter(e=>e.type===`text`)?.map(e=>e.text)?.join(``)?.trim()||``;if(t===`detect-language`)try{let e=JSON.parse(r);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return r}}let m=await fetch(c.baseUrl,{body:JSON.stringify(p),headers:f,method:`POST`});if(!m.ok){let e=await m.text();throw Error(`Active provider task API error ${m.status}: ${e}`)}let h=js(c,await m.json()).content?.filter(e=>e.type===`text`)?.map(e=>e.text)?.join(``)?.trim()||``;if(t===`detect-language`)try{let e=JSON.parse(h);return Array.isArray(e)?e:[e]}catch{return[{detectedLanguage:`en`,confidence:.8}]}return h}let Vs=null;function Hs(e){Vs=e}async function Us(e,t,n,r){if(Vs)return await Vs(t,n,e,r);if(o()){let i=r?.invokeContext;return await Bs({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 a=i();return j({type:`request-native-ai-task`,payload:{id:a,groupId:e,taskType:t,input:n}}),await new Promise((e,t)=>{globalThis.pendingNativeAiResolvers=globalThis.pendingNativeAiResolvers||{},globalThis.pendingNativeAiResolvers[a]={resolve:e,reject:t}})}async function Ws(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for summarize_text`;try{return await Us(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 Gs(e,t,n){let r=String(e.prompt||``).trim();if(!r)return`Error: prompt is required for write_text`;try{return await Us(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 Ks(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for rewrite_text`;try{return await Us(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 qs(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for proofread_text`;try{return await Us(t,`proofread`,{text:r,context:e.context},n)}catch(e){return`Error proofreading text: ${e instanceof Error?e.message:String(e)}`}}async function Js(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for detect_language`;try{let e=await Us(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 Ys(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 Us(t,`translate`,{text:r,sourceLanguage:i,targetLanguage:a},n)}catch(e){return`Error translating text: ${e instanceof Error?e.message:String(e)}`}}async function Xs(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 Us(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 Zs(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=fa(t,r,i,a);s&&s(t+1,n,u,e),await pa(u,c)}}throw l}const Qs=/* @__PURE__ */ new Set([408,429,500,502,503,504]);function $s(e){return/network|ECONNRESET|ECONNREFUSED|ETIMEDOUT|fetch failed|EAI_AGAIN|EAI_NONAME|getaddrinfo/i.test(e.message)}function ec(e){if(e instanceof TypeError)return!0;if(typeof e?.status==`number`)return Qs.has(e.status);if(e instanceof Error){let t=e.message.match(/\b(4\d{2}|5\d{2})\b/);if(t)return Qs.has(Number(t[1]));if($s(e))return!0}return!1}function tc(e){return e instanceof TypeError?!0:e&&typeof e.status==`number`?Qs.has(e.status):e instanceof Error&&$s(e)}const nc=/* @__PURE__ */ new Set([`create_task`,`update_task`,`delete_task`,`enable_task`,`disable_task`,`send_notification`,`create_room`,`invite_to_room`,`leave_room`]);function rc(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 ic(e,t){let n=rc(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 ac(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 oc(e,t){return t&&nc.has(e)?`Tool "${e}" is not allowed during scheduled task execution to prevent recursion.`:null}function sc(e){return o()&&s.has(e)?`Tool "${e}" is not available in headless CLI mode. It requires a browser UI.`:null}function cc(e,t={}){return ic(e,t.allowedTools)||ac(e,t.isScheduledTask,t.isTaskExecution)||oc(e,t.isScheduledTask)||sc(e)||null}async function lc(e,t,n,r,i={},a){let o=await Ne(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 ei(e,{command:o.execution.command,stdin:JSON.stringify(n)},r):await So(e,{code:o.execution.code,data:JSON.stringify(n)})}let uc=null;async function dc(){return uc||=import(`./chunk-Ddtzaj43.js`),uc}async function fc(e,t,n,r){let i=await dc();return await Bi(e,t,n,r,{configKeys:{GIT_CORS_PROXY:x.GIT_CORS_PROXY,GIT_PROXY_URL:x.GIT_PROXY_URL,GIT_AUTHOR_NAME:x.GIT_AUTHOR_NAME,GIT_AUTHOR_EMAIL:x.GIT_AUTHOR_EMAIL},getConfig:C,getGroupDir:u,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:Le,resolveGitCredentials:In})}const P=/* @__PURE__ */ new Map;P.set(`bash`,(e,t,n)=>ei(e,t,n)),P.set(`read_file`,(e,t,n)=>qo(e,t,n)),P.set(`open_file`,(e,t,n)=>Go(e,t,n)),P.set(`attach_file_to_chat`,(e,t,n)=>Mo(e,t,n)),P.set(`send_file`,(e,t,n)=>Zo(e,t,n)),P.set(`write_file`,(e,t,n)=>$o(e,t,n)),P.set(`delete_file`,(e,t,n)=>Bo(e,t,n)),P.set(`move_file`,(e,t,n)=>Wo(e,t,n)),P.set(`copy_file`,(e,t,n)=>Lo(e,t,n)),P.set(`create_directory`,(e,t,n)=>Ro(e,t,n)),P.set(`patch_file`,(e,t,n)=>Ko(e,t,n)),P.set(`list_files`,(e,t,n)=>Ho(e,t,n)),P.set(`manage_tools`,(e,t,n)=>To(t,n)),P.set(`list_tool_profiles`,e=>wo(e)),P.set(`fetch_url`,(e,t,n)=>Pi(e,t,n,{buildAuthHeaders:kn,fetchImpl:fetch,fetchMaxResponse:re,isRetryableFetchError:tc,post:j,resolveGitCredentials:In,resolveServiceCredentials:Tn,retryableStatusCodes:Qs,stripHtml:br,uploadGroupFile:ye,withRetry:Zs})),P.set(`fetch_file`,(e,t,n)=>Mi(e,t,n,{buildAuthHeaders:kn,fetchImpl:fetch,isRetryableFetchError:tc,post:j,resolveGitCredentials:In,resolveServiceCredentials:Tn,retryableStatusCodes:Qs,uploadGroupFile:ye,withRetry:Zs,writeGroupFile:T})),P.set(`update_memory`,(e,t,n)=>Qo(e,t,n)),P.set(`create_task`,(e,t,n)=>no(t,n)),P.set(`javascript`,(e,t)=>So(e,t)),P.set(`activate_skill`,(e,t,n)=>is(e,t,n)),P.set(`list_tasks`,(e,t,n)=>so(e,n)),P.set(`update_task`,(e,t,n)=>lo(e,t,n)),P.set(`enable_task`,(e,t,n)=>oo(e,t,n)),P.set(`disable_task`,(e,t,n)=>ao(e,t,n)),P.set(`delete_task`,(e,t,n)=>ro(t,n)),P.set(`run_task`,(e,t,n)=>co(e,t,n)),P.set(`clear_chat`,(e,t,n)=>fo(n)),P.set(`show_toast`,(e,t)=>ko(t)),P.set(`send_notification`,(e,t,n)=>Oo(t,n)),P.set(`create_room`,(e,t)=>Xi(t)),P.set(`invite_to_room`,(e,t,n)=>$i(t,n)),P.set(`leave_room`,(e,t,n)=>ea(t,n)),P.set(`list_room_members`,(e,t,n)=>ta(e,t,n)),P.set(`prompt_peer`,(e,t,n)=>aa(e,t,n)),P.set(`list_peers`,(e,t,n)=>oa(e,t,n));const pc=(e,t,n)=>Ci(e,t,n);P.set(`manage_email`,pc),P.set(`manage_integration`,pc),P.set(`email_read_messages`,(e,t,n)=>mc(e,`manage_email`,{...t,action:`read_messages`},n)),P.set(`integration_read_messages`,(e,t,n)=>mc(e,`manage_email`,{...t,action:`read_messages`},n)),P.set(`email_send_message`,(e,t,n)=>mc(e,`manage_email`,{...t,action:`send_message`},n)),P.set(`integration_send_message`,(e,t,n)=>mc(e,`manage_email`,{...t,action:`send_message`},n)),P.set(`remote_mcp_list_tools`,(e,t,n)=>Ji(e,t,n,{callRemoteMcpTool:dr,listRemoteMcpTools:ur,McpReauthRequiredError:Qn,post:j})),P.set(`remote_mcp_call_tool`,(e,t,n)=>Yi(e,t,n,{callRemoteMcpTool:dr,listRemoteMcpTools:ur,McpReauthRequiredError:Qn,post:j}));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`])P.set(e,(t,n,r)=>fc(t,e,n,r));P.set(`list_components`,()=>Co()),P.set(`render_component`,(e,t,n)=>Do(t,n)),P.set(`spawn_subagent`,async(e,t,n,r)=>r?.invokeContext?await to(t,n,r.invokeContext):`Error: spawn_subagent requires an active agent invocation context. This tool cannot be called directly.`),P.set(`get_current_time`,(e,t)=>po(t)),P.set(`search_files`,(e,t,n)=>Xo(e,t,n,{maxFileBytes:A.searchFilesMaxFileBytes,maxFilesVisited:A.searchFilesMaxFilesVisited,skipDirs:A.searchFilesSkipDirsSet})),P.set(`diff_files`,(e,t,n)=>Vo(e,t,n)),P.set(`ask_user`,(e,t,n)=>uo(t,n)),P.set(`web_search`,(e,t)=>Ao(t)),P.set(`summarize_text`,(e,t,n,r)=>Ws(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`write_text`,(e,t,n,r)=>Gs(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`rewrite_text`,(e,t,n,r)=>Ks(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`proofread_text`,(e,t,n,r)=>qs(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`detect_language`,(e,t,n,r)=>Js(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`translate_text`,(e,t,n,r)=>Ys(t,n,{db:e,invokeContext:r?.invokeContext})),P.set(`embed_text`,(e,t,n,r)=>Xs(t,n,{db:e,invokeContext:r?.invokeContext}));async function mc(e,t,n,r,i={}){try{let a=cc(t,i);if(a)return a;let o=P.get(t);return o?await o(e,n,r,i):await lc(e,t,n,r,i,mc)}catch(e){return`Tool error (${t}): ${e instanceof Error?e.message:String(e)}`}}const hc=880803840;var gc=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?hc: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))}},_c=Object.defineProperty,vc=(e,t,n)=>t in e?_c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yc=(e,t,n)=>(vc(e,typeof t==`symbol`?t:t+``,n),n),F=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`}),I=class{constructor(e,t){this.value=e,this.type=t}};function bc(e){return/\w/.test(e)}function xc(e){return/[0-9]/.test(e)}function Sc(e){return/\s/.test(e)}var Cc=[[`{%`,F.OpenStatement],[`%}`,F.CloseStatement],[`{{`,F.OpenExpression],[`}}`,F.CloseExpression],[`(`,F.OpenParen],[`)`,F.CloseParen],[`{`,F.OpenCurlyBracket],[`}`,F.CloseCurlyBracket],[`[`,F.OpenSquareBracket],[`]`,F.CloseSquareBracket],[`,`,F.Comma],[`.`,F.Dot],[`:`,F.Colon],[`|`,F.Pipe],[`<=`,F.ComparisonBinaryOperator],[`>=`,F.ComparisonBinaryOperator],[`==`,F.ComparisonBinaryOperator],[`!=`,F.ComparisonBinaryOperator],[`<`,F.ComparisonBinaryOperator],[`>`,F.ComparisonBinaryOperator],[`+`,F.AdditiveBinaryOperator],[`-`,F.AdditiveBinaryOperator],[`~`,F.AdditiveBinaryOperator],[`**`,F.ExponentiationBinaryOperator],[`*`,F.MultiplicativeBinaryOperator],[`//`,F.MultiplicativeBinaryOperator],[`/`,F.MultiplicativeBinaryOperator],[`%`,F.MultiplicativeBinaryOperator],[`=`,F.Equals]],wc=/* @__PURE__ */ new Map([[`n`,`
|
|
319
319
|
`],[`t`,` `],[`r`,`\r`],[`b`,`\b`],[`f`,`\f`],[`v`,`\v`],[`'`,`'`],[`"`,`"`],[`\\`,`\\`]]);function Tc(e,t={}){return e.endsWith(`
|
|
320
320
|
`)&&(e=e.slice(0,-1)),t.lstrip_blocks&&(e=e.replace(/^[ \t]*({[#%-])/gm,`$1`)),t.trim_blocks&&(e=e.replace(/([#%-]})\n/g,`$1`)),e.replace(/(\s*){%(-?)\s*(?:end)?generation\s*(-?)%}(\s*)/gs,(e,t,n,r,i)=>(n?``:t)+(r?``:i))}function Ec(e,t={}){let n=[],r=Tc(e,t),i=0,a=0,o=e=>{let t=``;for(;e(r[i]);)if(r[i]===`\\`){if(++i,i>=r.length)throw SyntaxError(`Unexpected end of input`);let e=r[i++],n=wc.get(e);if(n===void 0)throw SyntaxError(`Unexpected escaped character: ${e}`);t+=n}else if(t+=r[i++],i>=r.length)throw SyntaxError(`Unexpected end of input`);return t},s=()=>{let e=n.at(-1);e&&e.type===F.Text&&(e.value=e.value.trimEnd(),e.value===``&&n.pop())},c=()=>{for(;i<r.length&&Sc(r[i]);)++i};main:for(;i<r.length;){let e=n.at(-1)?.type;if(e===void 0||e===F.CloseStatement||e===F.CloseExpression||e===F.Comment){let e=``;for(;i<r.length&&(r[i]!==`{`||r[i+1]!==`%`&&r[i+1]!==`{`&&r[i+1]!==`#`);)e+=r[i++];if(e.length>0){n.push(new I(e,F.Text));continue}}if(r[i]===`{`&&r[i+1]===`#`){i+=2;let e=r[i]===`-`;e&&++i;let t=``;for(;r[i]!==`#`||r[i+1]!==`}`;){if(i+2>=r.length)throw SyntaxError(`Missing end of comment tag`);t+=r[i++]}let a=t.endsWith(`-`);a&&(t=t.slice(0,-1)),e&&s(),n.push(new I(t,F.Comment)),i+=2,a&&c();continue}if(r.slice(i,i+3)===`{%-`){s(),n.push(new I(`{%`,F.OpenStatement)),i+=3;continue}if(r.slice(i,i+3)===`{{-`){s(),n.push(new I(`{{`,F.OpenExpression)),a=0,i+=3;continue}if(o(Sc),r.slice(i,i+3)===`-%}`){n.push(new I(`%}`,F.CloseStatement)),i+=3,c();continue}if(r.slice(i,i+3)===`-}}`){n.push(new I(`}}`,F.CloseExpression)),i+=3,c();continue}let t=r[i];if(t===`-`||t===`+`){let e=n.at(-1)?.type;if(e===F.Text||e===void 0)throw SyntaxError(`Unexpected character: ${t}`);switch(e){case F.Identifier:case F.NumericLiteral:case F.StringLiteral:case F.CloseParen:case F.CloseSquareBracket:break;default:{++i;let e=o(xc);if(e.length>0&&r[i]===`.`&&xc(r[i+1])){++i;let t=o(xc);e=`${e}.${t}`}n.push(new I(`${t}${e}`,e.length>0?F.NumericLiteral:F.UnaryOperator));continue}}}for(let[e,t]of Cc)if(!(e===`}}`&&a>0)&&r.slice(i,i+e.length)===e){n.push(new I(e,t)),t===F.OpenExpression?a=0:t===F.OpenCurlyBracket?++a:t===F.CloseCurlyBracket&&--a,i+=e.length;continue main}if(t===`'`||t===`"`){++i;let e=o(e=>e!==t);n.push(new I(e,F.StringLiteral)),++i}else if(xc(t)){let e=o(xc);if(n.at(-1)?.type!==F.Dot&&r[i]===`.`&&xc(r[i+1])){++i;let t=o(xc);e=`${e}.${t}`}n.push(new I(e,F.NumericLiteral))}else if(bc(t)){let e=o(bc);n.push(new I(e,F.Identifier))}else throw SyntaxError(`Unexpected character: ${t}`)}return n}var L=class{type=`Statement`},Dc=class extends L{constructor(e){super(),this.body=e}type=`Program`},Oc=class extends L{constructor(e,t,n){super(),this.test=e,this.body=t,this.alternate=n}type=`If`},kc=class extends L{constructor(e,t,n,r){super(),this.loopvar=e,this.iterable=t,this.body=n,this.defaultBlock=r}type=`For`},Ac=class extends L{type=`Break`},jc=class extends L{type=`Continue`},Mc=class extends L{constructor(e,t,n){super(),this.assignee=e,this.value=t,this.body=n}type=`Set`},Nc=class extends L{constructor(e,t,n){super(),this.name=e,this.args=t,this.body=n}type=`Macro`},Pc=class extends L{constructor(e){super(),this.value=e}type=`Comment`},R=class extends L{type=`Expression`},Fc=class extends R{constructor(e,t,n){super(),this.object=e,this.property=t,this.computed=n}type=`MemberExpression`},Ic=class extends R{constructor(e,t){super(),this.callee=e,this.args=t}type=`CallExpression`},Lc=class extends R{constructor(e){super(),this.value=e}type=`Identifier`},Rc=class extends R{constructor(e){super(),this.value=e}type=`Literal`},zc=class extends Rc{type=`IntegerLiteral`},Bc=class extends Rc{type=`FloatLiteral`},Vc=class extends Rc{type=`StringLiteral`},Hc=class extends Rc{type=`ArrayLiteral`},Uc=class extends Rc{type=`TupleLiteral`},Wc=class extends Rc{type=`ObjectLiteral`},Gc=class extends R{constructor(e,t,n){super(),this.operator=e,this.left=t,this.right=n}type=`BinaryExpression`},Kc=class extends R{constructor(e,t){super(),this.operand=e,this.filter=t}type=`FilterExpression`},qc=class extends L{constructor(e,t){super(),this.filter=e,this.body=t}type=`FilterStatement`},Jc=class extends R{constructor(e,t){super(),this.lhs=e,this.test=t}type=`SelectExpression`},Yc=class extends R{constructor(e,t,n){super(),this.operand=e,this.negate=t,this.test=n}type=`TestExpression`},Xc=class extends R{constructor(e,t){super(),this.operator=e,this.argument=t}type=`UnaryExpression`},Zc=class extends R{constructor(e=void 0,t=void 0,n=void 0){super(),this.start=e,this.stop=t,this.step=n}type=`SliceExpression`},Qc=class extends R{constructor(e,t){super(),this.key=e,this.value=t}type=`KeywordArgumentExpression`},$c=class extends R{constructor(e){super(),this.argument=e}type=`SpreadExpression`},el=class extends R{constructor(e){super(),this.argument=e}type=`KeywordSpreadExpression`},tl=class extends L{constructor(e,t,n){super(),this.call=e,this.callerArgs=t,this.body=n}type=`CallStatement`},nl=class extends R{constructor(e,t,n){super(),this.condition=e,this.trueExpr=t,this.falseExpr=n}type=`Ternary`};function rl(e){let t=new Dc([]),n=0;function r(t,r){let i=e[n++];if(!i||i.type!==t)throw Error(`Parser Error: ${r}. ${i.type} !== ${t}.`);return i}function i(e){if(!c(e))throw SyntaxError(`Expected ${e}`);++n}function a(){switch(e[n].type){case F.Comment:return new Pc(e[n++].value);case F.Text:return l();case F.OpenStatement:return u();case F.OpenExpression:return d();default:throw SyntaxError(`Unexpected token type: ${e[n].type}`)}}function o(...t){return n+t.length<=e.length&&t.every((t,r)=>t===e[n+r].type)}function s(...t){return e[n]?.type===F.OpenStatement&&e[n+1]?.type===F.Identifier&&t.includes(e[n+1]?.value)}function c(...t){return n+t.length<=e.length&&t.every((t,r)=>e[n+r].type===`Identifier`&&t===e[n+r].value)}function l(){return new Vc(r(F.Text,`Expected text token`).value)}function u(){if(r(F.OpenStatement,`Expected opening statement token`),e[n].type!==F.Identifier)throw SyntaxError(`Unknown statement, got ${e[n].type}`);let t=e[n].value,c;switch(t){case`set`:++n,c=f();break;case`if`:++n,c=p(),r(F.OpenStatement,`Expected {% token`),i(`endif`),r(F.CloseStatement,`Expected %} token`);break;case`macro`:++n,c=m(),r(F.OpenStatement,`Expected {% token`),i(`endmacro`),r(F.CloseStatement,`Expected %} token`);break;case`for`:++n,c=g(),r(F.OpenStatement,`Expected {% token`),i(`endfor`),r(F.CloseStatement,`Expected %} token`);break;case`call`:{++n;let e=null;o(F.OpenParen)&&(e=b(`parameters`));let t=S();if(t.type!==`Identifier`)throw SyntaxError(`Expected identifier following call statement`);let l=b(`call`);r(F.CloseStatement,`Expected closing statement token`);let u=[];for(;!s(`endcall`);)u.push(a());r(F.OpenStatement,`Expected '{%'`),i(`endcall`),r(F.CloseStatement,`Expected closing statement token`),c=new tl(new Ic(t,l),e,u);break}case`break`:++n,r(F.CloseStatement,`Expected closing statement token`),c=new Ac;break;case`continue`:++n,r(F.CloseStatement,`Expected closing statement token`),c=new jc;break;case`filter`:{++n;let e=S();e instanceof Lc&&o(F.OpenParen)&&(e=ae(e)),r(F.CloseStatement,`Expected closing statement token`);let t=[];for(;!s(`endfilter`);)t.push(a());r(F.OpenStatement,`Expected '{%'`),i(`endfilter`),r(F.CloseStatement,`Expected '%}'`),c=new qc(e,t);break}default:throw SyntaxError(`Unknown statement type: ${t}`)}return c}function d(){r(F.OpenExpression,`Expected opening expression token`);let e=_();return r(F.CloseExpression,`Expected closing expression token`),e}function f(){let e=h(),t=null,c=[];if(o(F.Equals))++n,t=h();else{for(r(F.CloseStatement,`Expected %} token`);!s(`endset`);)c.push(a());r(F.OpenStatement,`Expected {% token`),i(`endset`)}return r(F.CloseStatement,`Expected closing statement token`),new Mc(e,t,c)}function p(){let e=_();r(F.CloseStatement,`Expected closing statement token`);let t=[],i=[];for(;!s(`elif`,`else`,`endif`);)t.push(a());if(s(`elif`)){++n,++n;let e=p();i.push(e)}else if(s(`else`))for(++n,++n,r(F.CloseStatement,`Expected closing statement token`);!s(`endif`);)i.push(a());return new Oc(e,t,i)}function m(){let e=S();if(e.type!==`Identifier`)throw SyntaxError(`Expected identifier following macro statement`);let t=b(`parameters`);r(F.CloseStatement,`Expected closing statement token`);let n=[];for(;!s(`endmacro`);)n.push(a());return new Nc(e,t,n)}function h(e=!1){let t=e?S:_,r=[t()],i=o(F.Comma);for(;i&&(++n,r.push(t()),o(F.Comma)););return i?new Uc(r):r[0]}function g(){let e=h(!0);if(!(e instanceof Lc||e instanceof Uc))throw SyntaxError(`Expected identifier/tuple for the loop variable, got ${e.type} instead`);if(!c(`in`))throw SyntaxError("Expected `in` keyword following loop variable");++n;let t=_();r(F.CloseStatement,`Expected closing statement token`);let i=[];for(;!s(`endfor`,`else`);)i.push(a());let o=[];if(s(`else`))for(++n,++n,r(F.CloseStatement,`Expected closing statement token`);!s(`endfor`);)o.push(a());return new kc(e,t,i,o)}function _(){return v()}function v(){let e=y();if(c(`if`)){++n;let t=y();return c(`else`)?(++n,new nl(t,e,v())):new Jc(e,t)}return e}function y(){let t=ee();for(;c(`or`);){let r=e[n];++n;let i=ee();t=new Gc(r,t,i)}return t}function ee(){let t=te();for(;c(`and`);){let r=e[n];++n;let i=te();t=new Gc(r,t,i)}return t}function te(){let t;for(;c(`not`);){let r=e[n];++n,t=new Xc(r,te())}return t??ne()}function ne(){let t=re();for(;;){let r;if(c(`not`,`in`))r=new I(`not in`,F.Identifier),n+=2;else if(c(`in`))r=e[n++];else if(o(F.ComparisonBinaryOperator))r=e[n++];else break;let i=re();t=new Gc(r,t,i)}return t}function re(){let t=ce();for(;o(F.AdditiveBinaryOperator);){let r=e[n];++n;let i=ce();t=new Gc(r,t,i)}return t}function ie(){let e=se(S());return o(F.OpenParen)?ae(e):e}function ae(e){let t=new Ic(e,b(`call`));return t=se(t),o(F.OpenParen)&&(t=ae(t)),t}function b(e){r(F.OpenParen,`Expected opening parenthesis for arguments list`);let t=oe(e);return r(F.CloseParen,`Expected closing parenthesis for arguments list`),t}function oe(t){let r=[],i=/* @__PURE__ */ new Set,a=!1,s=!1;for(;!o(F.CloseParen);){let c=o(F.ExponentiationBinaryOperator),l=o(F.MultiplicativeBinaryOperator)&&e[n].value===`*`;if(t===`parameters`&&(c||l))throw SyntaxError(`Argument unpacking is not allowed in parameter declarations`);if(c){if(++n,r.push(new el(_())),o(F.Comma)&&++n,!o(F.CloseParen))throw SyntaxError("Expected closing parenthesis: `**` must be applied to the final argument");break}let u;if(l){if(s)throw SyntaxError("Only one `*` argument unpacking is allowed");s=!0,++n,u=new $c(_())}else{if(u=_(),o(F.Equals)){if(++n,!(u instanceof Lc))throw SyntaxError(t===`parameters`?`Expected identifier for parameter declaration`:`Expected identifier for keyword argument`);let e=_();u=new Qc(u,e)}if(t===`parameters`){if(!(u instanceof Lc||u instanceof Qc))throw SyntaxError(`Expected identifier for parameter declaration`);let e=u instanceof Lc?u.value:u.key.value;if(i.has(e))throw SyntaxError(`Duplicate parameter name: ${e}`);i.add(e)}if(u instanceof Qc)a=!0;else if(a)throw SyntaxError(t===`call`?`Positional arguments must come before keyword arguments`:`Non-default argument follows default argument`);else if(s)throw SyntaxError("Positional arguments must not follow `*` argument unpacking")}r.push(u),o(F.Comma)&&++n}return r}function x(){let e=[],t=!1;for(;!o(F.CloseSquareBracket);)o(F.Colon)?(e.push(void 0),++n,t=!0):(e.push(_()),o(F.Colon)&&(++n,t=!0));if(e.length===0)throw SyntaxError(`Expected at least one argument for member/slice expression`);if(t){if(e.length>3)throw SyntaxError(`Expected 0-3 arguments for slice expression`);return new Zc(...e)}return e[0]}function se(t){for(;o(F.Dot)||o(F.OpenSquareBracket);){let i=e[n];++n;let a,o=i.type===F.OpenSquareBracket;if(o)a=x(),r(F.CloseSquareBracket,`Expected closing square bracket`);else if(a=S(),a.type!==`Identifier`&&a.type!==`IntegerLiteral`)throw SyntaxError(`Expected identifier or integer following dot operator`);t=new Fc(t,a,o)}return t}function ce(){let t=le();for(;o(F.MultiplicativeBinaryOperator);){let r=e[n++],i=le();t=new Gc(r,t,i)}return t}function le(){let t=ue();for(;o(F.ExponentiationBinaryOperator);){let r=e[n++],i=ue();t=new Gc(r,t,i)}return t}function ue(){let e=de();for(;c(`is`);){++n;let t=c(`not`);t&&++n;let r=S();if(!(r instanceof Lc))throw SyntaxError(`Expected identifier for the test`);e=new Yc(e,t,r)}return e}function de(){let e=fe();for(;o(F.Pipe);){++n;let t=S();if(!(t instanceof Lc))throw SyntaxError(`Expected identifier for the filter`);o(F.OpenParen)&&(t=ae(t)),e=new Kc(e,t)}return e}function fe(){let t=e[n];if(t&&(t.type===F.UnaryOperator||t.type===F.AdditiveBinaryOperator)&&(t.value===`-`||t.value===`+`)){let t=e[n++];return new Xc(t,fe())}return ie()}function S(){let t=e[n++];switch(t.type){case F.NumericLiteral:{let e=t.value;return e.includes(`.`)?new Bc(Number(e)):new zc(Number(e))}case F.StringLiteral:{let r=t.value;for(;o(F.StringLiteral);)r+=e[n++].value;return new Vc(r)}case F.Identifier:return new Lc(t.value);case F.OpenParen:{let e=h();return r(F.CloseParen,"Expected closing parenthesis, got ${tokens[current].type} instead."),e}case F.OpenSquareBracket:{let e=[];for(;!o(F.CloseSquareBracket);)e.push(_()),o(F.Comma)&&++n;return++n,new Hc(e)}case F.OpenCurlyBracket:{let e=/* @__PURE__ */ new Map;for(;!o(F.CloseCurlyBracket);){let t=_();r(F.Colon,`Expected colon between key and value in object literal`);let i=_();e.set(t,i),o(F.Comma)&&++n}return++n,new Wc(e)}default:throw SyntaxError(`Unexpected token: ${t.type}`)}}for(;n<e.length;)t.body.push(a());return t}function il(e,t,n=1){if(t===void 0&&(t=e,e=0),n===0)throw Error(`range() step must not be zero`);let r=[];if(n>0)for(let i=e;i<t;i+=n)r.push(i);else for(let i=e;i>t;i+=n)r.push(i);return r}function al(e,t,n,r=1){let i=Math.sign(r);i>=0?(t=(t??=0)<0?Math.max(e.length+t,0):Math.min(t,e.length),n=(n??=e.length)<0?Math.max(e.length+n,0):Math.min(n,e.length)):(t=(t??=e.length-1)<0?Math.max(e.length+t,-1):Math.min(t,e.length-1),n=(n??=-1)<-1?Math.max(e.length+n,-1):Math.min(n,e.length-1));let a=[];for(let o=t;i*o<i*n;o+=r)a.push(e[o]);return a}function ol(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}function sl(e){return cl(/* @__PURE__ */ new Date,e)}function cl(e,t){let n=new Intl.DateTimeFormat(void 0,{month:`long`}),r=new Intl.DateTimeFormat(void 0,{month:`short`}),i=e=>e<10?`0`+e:e.toString();return t.replace(/%[YmdbBHM%]/g,t=>{switch(t){case`%Y`:return e.getFullYear().toString();case`%m`:return i(e.getMonth()+1);case`%d`:return i(e.getDate());case`%b`:return r.format(e);case`%B`:return n.format(e);case`%H`:return i(e.getHours());case`%M`:return i(e.getMinutes());case`%%`:return`%`;default:return t}})}function ll(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function ul(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(ll(t),`gu`);return e.replaceAll(a,e=>i>0?(--i,n):e)}var dl=class extends Error{},fl=class extends Error{},pl=/* @__PURE__ */ new Map,ml=class{type=`RuntimeValue`;value;get builtins(){return pl}constructor(e=void 0){this.value=e}__bool__(){return new H(!!this.value)}toString(){return String(this.value)}},z=class extends ml{type=`IntegerValue`},B=class extends ml{type=`FloatValue`;toString(){return Object.is(this.value,-0)?`-0.0`:this.value%1==0?this.value.toFixed(1):this.value.toString()}},V=class extends ml{type=`StringValue`;_builtins;get builtins(){return this._builtins??=/* @__PURE__ */ new Map([[`upper`,new G(()=>new V(this.value.toUpperCase()))],[`lower`,new G(()=>new V(this.value.toLowerCase()))],[`strip`,new G(()=>new V(this.value.trim()))],[`title`,new G(()=>new V(ol(this.value)))],[`capitalize`,new G(()=>new V(this.value.charAt(0).toUpperCase()+this.value.slice(1)))],[`length`,new z(this.value.length)],[`rstrip`,new G(()=>new V(this.value.trimEnd()))],[`lstrip`,new G(()=>new V(this.value.trimStart()))],[`startswith`,new G(e=>{if(e.length===0)throw Error(`startswith() requires at least one argument`);let t=e[0];if(t instanceof V)return new H(this.value.startsWith(t.value));if(t instanceof W){for(let e of t.value){if(!(e instanceof V))throw Error(`startswith() tuple elements must be strings`);if(this.value.startsWith(e.value))return new H(!0)}return new H(!1)}throw Error(`startswith() argument must be a string or tuple of strings`)})],[`endswith`,new G(e=>{if(e.length===0)throw Error(`endswith() requires at least one argument`);let t=e[0];if(t instanceof V)return new H(this.value.endsWith(t.value));if(t instanceof W){for(let e of t.value){if(!(e instanceof V))throw Error(`endswith() tuple elements must be strings`);if(this.value.endsWith(e.value))return new H(!0)}return new H(!1)}throw Error(`endswith() argument must be a string or tuple of strings`)})],[`split`,new G(e=>{let t=e[0]??new K;if(!(t instanceof V||t instanceof K))throw Error(`sep argument must be a string or null`);let n=e[1]??new z(-1);if(!(n instanceof z))throw Error(`maxsplit argument must be a number`);let r=[];if(t instanceof K){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 W(r.map(e=>new V(e)))})],[`replace`,new G(e=>{if(e.length<2)throw Error(`replace() requires at least two arguments`);let t=e[0],n=e[1];if(!(t instanceof V&&n instanceof V))throw Error(`replace() arguments must be strings`);let r;if(r=e.length>2?e[2].type===`KeywordArgumentsValue`?e[2].value.get(`count`)??new K:e[2]:new K,!(r instanceof z||r instanceof K))throw Error(`replace() count argument must be a number or null`);return new V(ul(this.value,t.value,n.value,r.value))})]])}},H=class extends ml{type=`BooleanValue`},hl=/[\x7f-\uffff]/g;function gl(e){return e.replace(hl,e=>`\\u`+e.charCodeAt(0).toString(16).padStart(4,`0`))}function _l(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=gl(t)),t}case`ArrayValue`:case`NamespaceValue`:case`ObjectValue`:{let o=i?` `.repeat(i):``,u=`
|
|
321
321
|
`+o.repeat(n),d=u+o;if(e.type===`ArrayValue`){let a=e.value.map(e=>_l(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=gl(s));let c=`${s}${l}${_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 U=class extends ml{type=`ObjectValue`;_builtins;__bool__(){return new H(this.value.size>0)}get builtins(){return this._builtins??=/* @__PURE__ */ new Map([[`get`,new G(([e,t])=>{if(!(e instanceof V))throw Error(`Object key must be a string: got ${e.type}`);return this.value.get(e.value)??t??new K})],[`items`,new G(()=>this.items())],[`keys`,new G(()=>this.keys())],[`values`,new G(()=>this.values())],[`dictsort`,new G(e=>{let t=/* @__PURE__ */ new Map,n=e.filter(e=>e instanceof vl?(t=e.value,!1):!0),r=n.at(0)??t.get(`case_sensitive`)??new H(!1);if(!(r instanceof H))throw Error(`case_sensitive must be a boolean`);let i=n.at(1)??t.get(`by`)??new V(`key`);if(!(i instanceof V))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 H(!1);if(!(a instanceof H))throw Error(`reverse must be a boolean`);return new W(Array.from(this.value.entries()).map(([e,t])=>new W([new V(e),t])).sort((e,t)=>{let n=i.value===`key`?0:1,o=e.value[n],s=t.value[n],c=kl(o,s,r.value);return a.value?-c:c}))})]])}items(){return new W(Array.from(this.value.entries()).map(([e,t])=>new W([new V(e),t])))}keys(){return new W(Array.from(this.value.keys()).map(e=>new V(e)))}values(){return new W(Array.from(this.value.values()))}toString(){return _l(this,{},0,!1)}},vl=class extends U{type=`KeywordArgumentsValue`},yl=class extends ml{type=`NamespaceValue`;toString(){return _l(this,{},0,!1)}},W=class extends ml{type=`ArrayValue`;_builtins;get builtins(){return this._builtins??=/* @__PURE__ */ new Map([[`length`,new z(this.value.length)]])}__bool__(){return new H(this.value.length>0)}toString(){return _l(this,{},0,!1)}},bl=class extends W{type=`TupleValue`},G=class extends ml{type=`FunctionValue`},K=class extends ml{type=`NullValue`},q=class extends ml{type=`UndefinedValue`};function xl(e){let t;if(e instanceof W?t=e.value:e instanceof V&&(t=Array.from(e.value,e=>new V(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 V))throw Error(`namespace keys must be strings`);return[n,r]}var Sl=class{constructor(e){this.parent=e}variables=/* @__PURE__ */ new Map([[`namespace`,new G(e=>{let t=e.slice(),n;if(t.at(-1)instanceof vl&&(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 U)for(let[t,n]of e.value)r.set(t,n);else if(e instanceof W)for(let t of e.value){let[e,n]=xl(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 yl(r)})]]);tests=Sl.TESTS;set(e,t){return this.declareVariable(e,Pl(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 q}catch{return new q}}},Cl=Sl;yc(Cl,`TESTS`,/* @__PURE__ */ new Map([[`boolean`,e=>e.type===`BooleanValue`],[`callable`,e=>e instanceof G],[`odd`,e=>{if(!(e instanceof z))throw Error(`cannot odd on ${e.type}`);return e.value%2!=0}],[`even`,e=>{if(!(e instanceof z))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 z||e instanceof B],[`integer`,e=>e instanceof z],[`iterable`,e=>e.type===`ArrayValue`||e.type===`StringValue`],[`mapping`,e=>e instanceof U],[`sequence`,e=>e instanceof W||e instanceof U||e instanceof V],[`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 wl(e){e.set(`false`,!1),e.set(`true`,!0),e.set(`none`,null),e.set(`raise_exception`,e=>{throw Error(e)}),e.set(`range`,il),e.set(`strftime_now`,sl),e.set(`True`,!0),e.set(`False`,!1),e.set(`None`,null)}function Tl(e){return e instanceof U||e instanceof yl}function El(e){return e instanceof z||e instanceof B||e instanceof H}function Dl(e){return e instanceof H?Number(e.value):e.value}function Ol(e,t){let n=t.split(`.`),r=e;for(let e of n)if(Tl(r))r=r.value.get(e)??new q;else if(r instanceof W){let t=parseInt(e,10);if(!isNaN(t)&&t>=0&&t<r.value.length)r=r.value[t];else return new q}else return new q;return r}function kl(e,t,n=!1){if(e instanceof K&&t instanceof K)return 0;if(e instanceof K||t instanceof K)throw Error(`Cannot compare ${e.type} with ${t.type}`);if(e instanceof q&&t instanceof q)return 0;if(e instanceof q||t instanceof q)throw Error(`Cannot compare ${e.type} with ${t.type}`);if(El(e)&&El(t)){let n=Dl(e),r=Dl(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 Al(e){if(e.type===`Identifier`)return{name:e.value};let t=e;return{name:t.key.value,defaultValue:t.value}}function jl(e){return e===`kwargs`||e===`varargs`}function Ml(e,t){let n=/* @__PURE__ */ new Set,r=/* @__PURE__ */ new Set,i=e=>{jl(e)&&n.add(e)},a=e=>{if(e.type===`Identifier`)i(e.value);else if(e.type===`TupleLiteral`)for(let t of e.value)a(t)},o=e=>{i(Al(e).name)},s=e=>{for(let t of e){let e=Al(t);e.defaultValue&&l(e.defaultValue)}},c=e=>{e.type===`CallExpression`&&l(e.args)},l=e=>{if(Array.isArray(e))for(let t of e)l(t);else if(e instanceof Map)for(let[t,n]of e)l(t),l(n);else if(e instanceof L)switch(e.type){case`For`:{let t=e;if(a(t.loopvar),t.iterable.type===`SelectExpression`){let e=t.iterable;l(e.lhs),l(t.body),l(t.defaultBlock),l(e.test);return}l(t.iterable),l(t.body),l(t.defaultBlock);return}case`Set`:{let t=e;a(t.assignee),l(t.value),l(t.body);return}case`Macro`:{let t=e;for(let e of t.args)o(e);s(t.args),l(t.body);return}case`CallStatement`:{let t=e;l(t.call);for(let e of t.callerArgs??[])o(e);s(t.callerArgs??[]),l(t.body);return}case`FilterStatement`:{let t=e;l(t.body),c(t.filter);return}case`Identifier`:{let t=e.value;jl(t)&&!n.has(t)&&r.add(t);return}case`MemberExpression`:{let t=e;l(t.object),t.computed&&l(t.property);return}case`FilterExpression`:{let t=e;l(t.operand),c(t.filter);return}case`TestExpression`:l(e.operand);return;case`SelectExpression`:{let t=e;l(t.test),l(t.lhs);return}case`KeywordArgumentExpression`:l(e.value);return;default:for(let t of Object.values(e))l(t)}};for(let t of e)o(t);return l(t),r}var Nl=class{global;constructor(e){this.global=e??new Cl}run(e){return this.evaluate(e,this.global)}evaluateBinaryExpression(e,t){let n=this.evaluate(e.left,t);switch(e.operator.value){case`and`:return n.__bool__().value?this.evaluate(e.right,t):n;case`or`:return n.__bool__().value?n:this.evaluate(e.right,t)}let r=this.evaluate(e.right,t);switch(e.operator.value){case`==`:return new H(n.value==r.value);case`!=`:return new H(n.value!=r.value)}if(n instanceof q||r instanceof q){if(r instanceof q&&[`in`,`not in`].includes(e.operator.value))return new H(e.operator.value===`not in`);throw Error(`Cannot perform operation ${e.operator.value} on undefined values`)}if(n instanceof K||r instanceof K)throw Error(`Cannot perform operation on null values`);if(e.operator.value===`~`)return new V(n.value.toString()+r.value.toString());if(e.operator.value===`**`&&El(n)&&El(r)){let e=Dl(n),t=Dl(r);if(e===0&&t<0)throw Error(`0.0 cannot be raised to a negative power`);let i=e**t;if(!Number.isFinite(i))throw Error(`Exponentiation result is not a finite real number`);return n instanceof B||r instanceof B||t<0?new B(i):new z(i)}if((n instanceof z||n instanceof B)&&(r instanceof z||r instanceof B)){let t=n.value,i=r.value;switch(e.operator.value){case`+`:case`-`:case`*`:{let a=e.operator.value===`+`?t+i:e.operator.value===`-`?t-i:t*i;return n instanceof B||r instanceof B?new B(a):new z(a)}case`/`:return new B(t/i);case`//`:{let e=Math.floor(t/i);return n instanceof B||r instanceof B?new B(e):new z(e)}case`%`:{let e=t%i;return n instanceof B||r instanceof B?new B(e):new z(e)}case`<`:return new H(t<i);case`>`:return new H(t>i);case`>=`:return new H(t>=i);case`<=`:return new H(t<=i)}}else if(n instanceof W&&r instanceof W)switch(e.operator.value){case`+`:return new W(n.value.concat(r.value))}else if(r instanceof W){let t=r.value.find(e=>e.value===n.value)!==void 0;switch(e.operator.value){case`in`:return new H(t);case`not in`:return new H(!t)}}if(n instanceof V||r instanceof V)switch(e.operator.value){case`+`:return new V(n.value.toString()+r.value.toString())}if(n instanceof V&&r instanceof V)switch(e.operator.value){case`in`:return new H(r.value.includes(n.value));case`not in`:return new H(!r.value.includes(n.value))}if(n instanceof V&&r instanceof U)switch(e.operator.value){case`in`:return new H(r.value.has(n.value));case`not in`:return new H(!r.value.has(n.value))}throw SyntaxError(`Unknown operator "${e.operator.value}" between ${n.type} and ${r.type}`)}evaluateArguments(e,t){let n=[],r=/* @__PURE__ */ new Map,i=(e,t)=>{if(r.has(e))throw Error(`Got multiple values for keyword argument '${e}'`);r.set(e,t)};for(let r of e)if(r.type===`SpreadExpression`){let e=r,i=this.evaluate(e.argument,t);if(!(i instanceof W))throw Error(`Cannot unpack non-iterable type: ${i.type}`);for(let e of i.value)n.push(e)}else r.type!==`KeywordArgumentExpression`&&r.type!==`KeywordSpreadExpression`&&n.push(this.evaluate(r,t));for(let n of e)if(n.type===`KeywordArgumentExpression`){let e=n;i(e.key.value,this.evaluate(e.value,t))}else if(n.type===`KeywordSpreadExpression`){let e=n,r=this.evaluate(e.argument,t);if(!(r instanceof U))throw Error(`Argument after ** must be a mapping, not ${r.type}`);for(let[e,t]of r.value)i(e,t)}return[n,r]}applyFilter(e,t,n){if(t.type===`Identifier`){let r=t;if(r.value===`safe`)return e;if(r.value===`tojson`)return new V(_l(e,{}));if(e instanceof W)switch(r.value){case`list`:return e;case`first`:return e.value[0];case`last`:return e.value[e.value.length-1];case`length`:return new z(e.value.length);case`reverse`:return new W(e.value.slice().reverse());case`sort`:return new W(e.value.slice().sort((e,t)=>kl(e,t,!1)));case`join`:return new V(e.value.map(e=>e.value).join(``));case`string`:return new V(_l(e,{},0,!1));case`unique`:{let t=/* @__PURE__ */ new Set,n=[];for(let r of e.value)t.has(r.value)||(t.add(r.value),n.push(r));return new W(n)}default:throw Error(`Unknown ArrayValue filter: ${r.value}`)}else if(e instanceof V)switch(r.value){case`length`:case`upper`:case`lower`:case`title`:case`capitalize`:{let t=e.builtins.get(r.value);if(t instanceof G)return t.value([],n);if(t instanceof z)return t;throw Error(`Unknown StringValue filter: ${r.value}`)}case`trim`:return new V(e.value.trim());case`indent`:return new V(e.value.split(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e}from"./chunk-
|
|
1
|
+
import{i as e}from"./chunk-DFgSiYMW.js";import{t}from"./chunk-I3mxEelq.js";import{t as n}from"./chunk-BiWLawPV.js";import{i as r,n as i,r as a,t as o}from"./chunk-CDw214Zi.js";import s from"node:fs";import c from"node:path";import l from"node:process";import{access as u,constants as d,mkdir as f,mkdtemp as p,readFile as m,writeFile as h}from"node:fs/promises";import{tmpdir as g}from"node:os";import _ from"node:readline/promises";import v from"node:tty";function y(){let e=l.emitWarning;if(!e||e.__suppressed)return;let t=function(t,...n){if((typeof t!=`string`||n[0]!==`ExperimentalWarning`&&!t.includes(`ExperimentalWarning`)&&!t.includes(`SQLite`))&&!(t&&typeof t==`object`&&(t.name===`ExperimentalWarning`||typeof t.message==`string`&&t.message.includes(`SQLite`))))return e.call(l,t,...n)};t.__suppressed=!0,l.emitWarning=t}y();const b=[`shadow-claw.config.json`,`shadow-claw-config.json`,`shadowclaw.config.json`,`site-config.json`];async function x(e){try{return await u(e,d.F_OK),!0}catch{return!1}}async function S(e,t){let n=[];if(e&&n.push(c.resolve(e)),t){let e=c.resolve(t);n.includes(e)||n.push(e)}if(e&&c.basename(c.resolve(e))===`.cache`){let t=c.dirname(c.resolve(e));n.includes(t)||n.push(t)}for(let e of n)for(let t of b){let n=c.join(e,t);if(await x(n))try{let e=await m(n,`utf8`),t=JSON.parse(e);if(t&&typeof t==`object`)return{configPath:n,config:t}}catch{}}return null}function C(){return c.join(g(),`shadow-claw`)}function w(e){let t=c.resolve(e||l.cwd()),n=[c.join(t,`shadow-claw-config.json`),c.join(t,`shadow-claw.config.json`),c.join(t,`shadowclaw.config.json`),c.join(t,`pages`,`shadow-claw-config.json`),c.join(t,`pages`,`shadow-claw.config.json`),c.join(t,`site-config.json`),c.join(t,`pages`,`site-config.json`)];for(let e of n)if(s.existsSync(e))try{let n=s.readFileSync(e,`utf8`),r=JSON.parse(n);if(r&&typeof r.cacheDir==`string`&&r.cacheDir.trim())return c.resolve(t,r.cacheDir.trim());if(r&&r.server&&typeof r.server.cacheDir==`string`&&r.server.cacheDir.trim())return c.resolve(t,r.server.cacheDir.trim())}catch{}return null}function T(e,t=`.cache`){let n=c.resolve(e||l.cwd()),r=c.join(n,t),i=c.join(r,`database`),a=[r,c.join(r,`control-token.json`),c.join(r,`cli-peer-id`),i,c.join(i,`clients.db`),c.join(i,`agent.db`),c.join(i,`scheduled-tasks.db`),c.join(i,`push-subscriptions.db`),c.join(n,`database`,`clients.db`),c.join(n,`database`,`agent.db`)];for(let e of a)if(s.existsSync(e))return!0;return!1}async function E({contentRoot:e,stdin:t=l.stdin,stdout:n=l.stdout,onExit:r=e=>l.exit(e)}={}){let i=c.resolve(e||l.cwd()),a=c.join(i,`.cache`),o=C(),u=t,d=n,f=!1,p=null;if(t===l.stdin&&!l.stdin.isTTY&&!l.env.CI&&(l.stderr.isTTY||l.stdout.isTTY))try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;p=s.openSync(e,`r`),u=new v.ReadStream(p),d=l.stderr.isTTY?l.stderr:l.stdout,f=!0}catch{try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;u=s.createReadStream(e),d=l.stderr.isTTY?l.stderr:l.stdout,f=!0}catch{}}let m=_.createInterface({input:u,output:d}),h=!1,g=()=>{if(!h){h=!0,d.write(`
|
|
2
2
|
Operation cancelled.
|
|
3
3
|
`);try{m.close()}catch{}r(130)}};m.on(`SIGINT`,g),u&&typeof u.on==`function`&&u!==l.stdin&&u.on(`SIGINT`,g);let y=()=>g();l.on(`SIGINT`,y);let b=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&g()};u&&typeof u.on==`function`&&u.on(`data`,b);try{d.write(`
|
|
4
4
|
ShadowClaw needs a directory to store cache and database files:
|
|
@@ -11,18 +11,18 @@ ShadowClaw needs a directory to store cache and database files:
|
|
|
11
11
|
`),n.write(`Tip: You can pass --tmp, --cache-dir <dir>, set SHADOWCLAW_TMP=1, SHADOWCLAW_CACHE_DIR=<dir>, or configure "cacheDir" in shadow-claw.config.json to skip this prompt.
|
|
12
12
|
|
|
13
13
|
`);let e=(await m.question(`Enter choice [1-3] or a directory path (default: 1): `)).trim();if(!e||e===`1`||e.toLowerCase()===`y`||e.toLowerCase()===`yes`)return n.write(`Using current directory cache: ${a}\n\n`),a;if(e===`2`||e.toLowerCase()===`tmp`||e.toLowerCase()===`temp`||e.toLowerCase()===`t`)return n.write(`Using temporary directory: ${o}\n\n`),o;if(e.toLowerCase()===`n`||e.toLowerCase()===`no`){let e=(await m.question(`Use temporary directory (${o}) instead? (Y/n): `)).trim();return e.toLowerCase()===`n`||e.toLowerCase()===`no`?(n.write(`Operation cancelled.
|
|
14
|
-
`),r(0),o):(n.write(`Using temporary directory: ${o}\n\n`),o)}if(e===`3`||e.toLowerCase()===`c`||e.toLowerCase()===`custom`){let e=(await m.question(`Enter custom directory path: `)).trim();if(!e)return n.write(`Using current directory cache: ${a}\n\n`),a;let t=c.resolve(i,e);return n.write(`Using custom directory: ${t}\n\n`),t}let t=c.resolve(i,e);return d.write(`Using directory: ${t}\n\n`),t}finally{l.removeListener(`SIGINT`,y),u&&typeof u.removeListener==`function`&&(u!==l.stdin&&u.removeListener(`SIGINT`,g),u.removeListener(`data`,b));try{m.close()}catch{}if(f){if(u&&typeof u.destroy==`function`)try{u.destroy()}catch{}if(p!=null)try{s.closeSync(p)}catch{}}}}async function D(e={}){let t=c.resolve(e.contentRoot||l.cwd());if(e.tmp||e.temp||[`1`,`true`,`yes`].includes((l.env.SHADOWCLAW_TMP||l.env.SHADOWCLAW_TEMP||``).toLowerCase().trim())){let n=C();return{cacheDir:n,databaseDir:e.databaseDir?c.resolve(t,e.databaseDir):c.join(n,`database`)}}let n=(e.cacheDir||l.env.SHADOWCLAW_CACHE_DIR||``).trim();if(n){let r=c.resolve(t,n);return{cacheDir:r,databaseDir:e.databaseDir?c.resolve(t,e.databaseDir):c.join(r,`database`)}}let r=(e.databaseDir||l.env.SHADOWCLAW_DATABASE_DIR||``).trim();if(r){let e=c.resolve(t,r);return{cacheDir:c.basename(e)===`database`?c.dirname(e):c.resolve(e,`..`),databaseDir:e}}let i=w(t);if(i)return{cacheDir:i,databaseDir:c.join(i,`database`)};let a=T(t),o=c.join(t,`.cache`),s=c.join(o,`database`);if(a||e.yes||e.y||[`1`,`true`,`yes`].includes((l.env.SHADOWCLAW_YES||``).toLowerCase().trim()))return{cacheDir:o,databaseDir:s};let u=e.stdin?!!e.stdin.isTTY:!!l.stdin.isTTY,d=!e.stdin&&!l.stdin.isTTY&&!!(l.stderr.isTTY||l.stdout.isTTY),f=e.isTTY===void 0?u||d:!!e.isTTY,p=e.isCI===void 0?e.isTTY===void 0&&!(!l.env.CI||[`0`,`false`].includes(l.env.CI.toLowerCase())):!!e.isCI;if(!f||p||e.quiet)return{cacheDir:o,databaseDir:s};let m=await E({contentRoot:t,stdin:e.stdin,stdout:e.stdout,onExit:e.onExit});return{cacheDir:m,databaseDir:c.join(m,`database`)}}function O(e,t,n){if(!n||typeof e?.executeNativeAiTask!=`function`)return;let{id:r,groupId:i,taskType:a,input:o}=n;return e.executeNativeAiTask({taskType:a,input:o,groupId:i,db:t}).then(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].resolve(e),delete t[r])}).catch(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].reject(e),delete t[r])})}async function k(e={}){let t=e.core||await n();t.setHeadlessMode(!0);let r,i;if(e.workspace)r=c.resolve(e.workspace),i=e.databaseDir?c.resolve(e.databaseDir):e.cacheDir?c.resolve(e.cacheDir,`database`):c.resolve(r,`database`);else{let t=await D({contentRoot:l.cwd(),cacheDir:e.cacheDir,databaseDir:e.databaseDir,tmp:e.tmp||e.temp,yes:e.yes||e.y,quiet:e.quiet,isTTY:e.isTTY,stdin:e.stdin,stdout:e.stdout}),n=c.join(g(),`shadow-claw`);await f(n,{recursive:!0}),r=await p(c.join(n,`workspace-`)),i=t.databaseDir}await f(r,{recursive:!0}),await f(i,{recursive:!0});let a=c.join(i,`agent.db`),o=t.openSqliteDatabase(a);t.setDB(o),t.setStorageRootFromPath(r);let s=(await S(r))?.config||{},u=s.settings||{},d=e.internetAccess??e.allowInternet??u.internetAccess??u.vm_bash_full_internet_access??u.fullInternetAccess??s.internetAccess;if(d!==void 0&&typeof t.setConfig==`function`){let e=t.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await t.setConfig(o,e,d?`true`:`false`)}let m={response:t=>{!e.quiet&&t.payload?.text&&console.log(t.payload.text)},error:t=>{!e.quiet&&t.payload?.error&&console.error(`Error: ${t.payload.error}`)},"tool-activity":t=>{!e.quiet&&e.verbose&&t.payload&&console.log(`[Tool] ${t.payload.tool} (${t.payload.status||`executing`})`)},"thinking-log":t=>{if(!e.quiet&&e.verbose&&t.payload){let e=t.payload.label||t.payload.level||`Log`;console.log(`[${e}] ${t.payload.message||``}`)}},"request-native-ai-task":e=>{O(t,o,e.payload)}};return t.setPostHandler(e=>{m[e.type]?.(e)}),{db:o,workspaceDir:r,dbPath:a,core:t}}function A(e={}){let{force:t=!1,stdin:n=l.stdin,timeoutMs:r}=e,i=n;return!t&&i?.isTTY?Promise.resolve(null):new Promise((e,t)=>{let n=[],a=!1,o;r!=null&&r>0&&(o=setTimeout(()=>{a=!0,typeof i?.destroy==`function`&&i.destroy(),e(null)},r)),typeof i?.setEncoding==`function`&&i.setEncoding(`utf8`),i.on(`data`,e=>{a||n.push(typeof e==`string`?e:e.toString(`utf8`))}),i.on(`end`,()=>{if(o&&clearTimeout(o),a)return;let t=n.join(``).trim();e(t.length>0?t:null)}),i.on(`error`,e=>{o&&clearTimeout(o),!a&&t(e)})})}function j(e,t){let n=t&&typeof t==`object`?Object.keys(t.properties||{}):[];for(let t of[`text`,`prompt`,`content`,`input`])if(n.includes(t))return{[t]:e};return{input:e}}function M(e){return(Array.isArray(e)?e:e?[e]:[]).map(e=>String(e)).filter(Boolean)}async function N(t){let n=[];for(let r of t){let t=c.resolve(r),i;try{i=await m(t)}catch(e){throw Error(`Error: Failed to read attachment file "${r}": ${e.message}`)}let a=c.basename(t),o=e(a,``);n.push({fileName:a,mimeType:o,size:i.length,source:{kind:`local-file`,file:new Blob([new Uint8Array(i)],{type:o})}})}return n}const P=/* @__PURE__ */ new Set([`ask_user`,`attach_file_to_chat`,`clear_chat`,`create_room`,`invite_to_room`,`leave_room`,`list_components`,`list_room_members`,`open_file`,`render_component`,`send_file`,`show_toast`,`send_notification`,`spawn_subagent`]),F=`server:main`;async function I(e={}){let t;if(e.workspace)t=c.resolve(e.workspace);else{let e=c.join(g(),`shadow-claw`);await f(e,{recursive:!0}),t=await p(c.join(e,`workspace-`))}let n=c.join(t,`.agents`,`skills`),r=c.join(t,`.agents`,`tools`),i=c.join(t,`database`);await f(t,{recursive:!0}),await f(n,{recursive:!0}),await f(r,{recursive:!0}),await f(i,{recursive:!0});let a=e.provider,o=e.model,s=e.stdin?!!e.stdin.isTTY:!!l.stdin.isTTY,u=!e.stdin&&!l.stdin.isTTY&&!!(l.stderr.isTTY||l.stdout.isTTY),d=e.isTTY===void 0?s||u:!!e.isTTY,m=e.isCI===void 0?e.isTTY===void 0&&!(!l.env.CI||[`0`,`false`].includes(l.env.CI.toLowerCase())):!!e.isCI,_=d&&!m&&!e.quiet&&!e.yes&&!e.y;if(!a&&!o&&_){let{promptForAgentModel:n}=await import(`./chunk-
|
|
15
|
-
`,`utf8`)}if(e.download&&(a===`transformers_js_local`||a===`llamafile`)){let{downloadLocalModel:t}=await import(`./chunk-
|
|
14
|
+
`),r(0),o):(n.write(`Using temporary directory: ${o}\n\n`),o)}if(e===`3`||e.toLowerCase()===`c`||e.toLowerCase()===`custom`){let e=(await m.question(`Enter custom directory path: `)).trim();if(!e)return n.write(`Using current directory cache: ${a}\n\n`),a;let t=c.resolve(i,e);return n.write(`Using custom directory: ${t}\n\n`),t}let t=c.resolve(i,e);return d.write(`Using directory: ${t}\n\n`),t}finally{l.removeListener(`SIGINT`,y),u&&typeof u.removeListener==`function`&&(u!==l.stdin&&u.removeListener(`SIGINT`,g),u.removeListener(`data`,b));try{m.close()}catch{}if(f){if(u&&typeof u.destroy==`function`)try{u.destroy()}catch{}if(p!=null)try{s.closeSync(p)}catch{}}}}async function D(e={}){let t=c.resolve(e.contentRoot||l.cwd());if(e.tmp||e.temp||[`1`,`true`,`yes`].includes((l.env.SHADOWCLAW_TMP||l.env.SHADOWCLAW_TEMP||``).toLowerCase().trim())){let n=C();return{cacheDir:n,databaseDir:e.databaseDir?c.resolve(t,e.databaseDir):c.join(n,`database`)}}let n=(e.cacheDir||l.env.SHADOWCLAW_CACHE_DIR||``).trim();if(n){let r=c.resolve(t,n);return{cacheDir:r,databaseDir:e.databaseDir?c.resolve(t,e.databaseDir):c.join(r,`database`)}}let r=(e.databaseDir||l.env.SHADOWCLAW_DATABASE_DIR||``).trim();if(r){let e=c.resolve(t,r);return{cacheDir:c.basename(e)===`database`?c.dirname(e):c.resolve(e,`..`),databaseDir:e}}let i=w(t);if(i)return{cacheDir:i,databaseDir:c.join(i,`database`)};let a=T(t),o=c.join(t,`.cache`),s=c.join(o,`database`);if(a||e.yes||e.y||[`1`,`true`,`yes`].includes((l.env.SHADOWCLAW_YES||``).toLowerCase().trim()))return{cacheDir:o,databaseDir:s};let u=e.stdin?!!e.stdin.isTTY:!!l.stdin.isTTY,d=!e.stdin&&!l.stdin.isTTY&&!!(l.stderr.isTTY||l.stdout.isTTY),f=e.isTTY===void 0?u||d:!!e.isTTY,p=e.isCI===void 0?e.isTTY===void 0&&!(!l.env.CI||[`0`,`false`].includes(l.env.CI.toLowerCase())):!!e.isCI;if(!f||p||e.quiet)return{cacheDir:o,databaseDir:s};let m=await E({contentRoot:t,stdin:e.stdin,stdout:e.stdout,onExit:e.onExit});return{cacheDir:m,databaseDir:c.join(m,`database`)}}function O(e,t,n){if(!n||typeof e?.executeNativeAiTask!=`function`)return;let{id:r,groupId:i,taskType:a,input:o}=n;return e.executeNativeAiTask({taskType:a,input:o,groupId:i,db:t}).then(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].resolve(e),delete t[r])}).catch(e=>{let t=globalThis.pendingNativeAiResolvers;t&&t[r]&&(t[r].reject(e),delete t[r])})}async function k(e={}){let t=e.core||await n();t.setHeadlessMode(!0);let r,i;if(e.workspace)r=c.resolve(e.workspace),i=e.databaseDir?c.resolve(e.databaseDir):e.cacheDir?c.resolve(e.cacheDir,`database`):c.resolve(r,`database`);else{let t=await D({contentRoot:l.cwd(),cacheDir:e.cacheDir,databaseDir:e.databaseDir,tmp:e.tmp||e.temp,yes:e.yes||e.y,quiet:e.quiet,isTTY:e.isTTY,stdin:e.stdin,stdout:e.stdout}),n=c.join(g(),`shadow-claw`);await f(n,{recursive:!0}),r=await p(c.join(n,`workspace-`)),i=t.databaseDir}await f(r,{recursive:!0}),await f(i,{recursive:!0});let a=c.join(i,`agent.db`),o=t.openSqliteDatabase(a);t.setDB(o),t.setStorageRootFromPath(r);let s=(await S(r))?.config||{},u=s.settings||{},d=e.internetAccess??e.allowInternet??u.internetAccess??u.vm_bash_full_internet_access??u.fullInternetAccess??s.internetAccess;if(d!==void 0&&typeof t.setConfig==`function`){let e=t.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await t.setConfig(o,e,d?`true`:`false`)}let m={response:t=>{!e.quiet&&t.payload?.text&&console.log(t.payload.text)},error:t=>{!e.quiet&&t.payload?.error&&console.error(`Error: ${t.payload.error}`)},"tool-activity":t=>{!e.quiet&&e.verbose&&t.payload&&console.log(`[Tool] ${t.payload.tool} (${t.payload.status||`executing`})`)},"thinking-log":t=>{if(!e.quiet&&e.verbose&&t.payload){let e=t.payload.label||t.payload.level||`Log`;console.log(`[${e}] ${t.payload.message||``}`)}},"request-native-ai-task":e=>{O(t,o,e.payload)}};return t.setPostHandler(e=>{m[e.type]?.(e)}),{db:o,workspaceDir:r,dbPath:a,core:t}}function A(e={}){let{force:t=!1,stdin:n=l.stdin,timeoutMs:r}=e,i=n;return!t&&i?.isTTY?Promise.resolve(null):new Promise((e,t)=>{let n=[],a=!1,o;r!=null&&r>0&&(o=setTimeout(()=>{a=!0,typeof i?.destroy==`function`&&i.destroy(),e(null)},r)),typeof i?.setEncoding==`function`&&i.setEncoding(`utf8`),i.on(`data`,e=>{a||n.push(typeof e==`string`?e:e.toString(`utf8`))}),i.on(`end`,()=>{if(o&&clearTimeout(o),a)return;let t=n.join(``).trim();e(t.length>0?t:null)}),i.on(`error`,e=>{o&&clearTimeout(o),!a&&t(e)})})}function j(e,t){let n=t&&typeof t==`object`?Object.keys(t.properties||{}):[];for(let t of[`text`,`prompt`,`content`,`input`])if(n.includes(t))return{[t]:e};return{input:e}}function M(e){return(Array.isArray(e)?e:e?[e]:[]).map(e=>String(e)).filter(Boolean)}async function N(t){let n=[];for(let r of t){let t=c.resolve(r),i;try{i=await m(t)}catch(e){throw Error(`Error: Failed to read attachment file "${r}": ${e.message}`)}let a=c.basename(t),o=e(a,``);n.push({fileName:a,mimeType:o,size:i.length,source:{kind:`local-file`,file:new Blob([new Uint8Array(i)],{type:o})}})}return n}const P=/* @__PURE__ */ new Set([`ask_user`,`attach_file_to_chat`,`clear_chat`,`create_room`,`invite_to_room`,`leave_room`,`list_components`,`list_room_members`,`open_file`,`render_component`,`send_file`,`show_toast`,`send_notification`,`spawn_subagent`]),F=`server:main`;async function I(e={}){let t;if(e.workspace)t=c.resolve(e.workspace);else{let e=c.join(g(),`shadow-claw`);await f(e,{recursive:!0}),t=await p(c.join(e,`workspace-`))}let n=c.join(t,`.agents`,`skills`),r=c.join(t,`.agents`,`tools`),i=c.join(t,`database`);await f(t,{recursive:!0}),await f(n,{recursive:!0}),await f(r,{recursive:!0}),await f(i,{recursive:!0});let a=e.provider,o=e.model,s=e.stdin?!!e.stdin.isTTY:!!l.stdin.isTTY,u=!e.stdin&&!l.stdin.isTTY&&!!(l.stderr.isTTY||l.stdout.isTTY),d=e.isTTY===void 0?s||u:!!e.isTTY,m=e.isCI===void 0?e.isTTY===void 0&&!(!l.env.CI||[`0`,`false`].includes(l.env.CI.toLowerCase())):!!e.isCI,_=d&&!m&&!e.quiet&&!e.yes&&!e.y;if(!a&&!o&&_){let{promptForAgentModel:n}=await import(`./chunk-BzWY1sKE.js`),r=await n({workspaceDir:t,contentRoot:l.cwd(),cacheDir:e.cacheDir,stdin:e.stdin,stdout:e.stdout,quiet:e.quiet,isTTY:d});a=r.providerId,o=r.model}if(a||=`transformers_js_local`,!o){let{DEFAULT_LOCAL_MODEL:e}=await import(`./chunk-BzWY1sKE.js`);o=a===`transformers_js_local`?e:`openrouter/free`}if(!await S(t)){let e=c.join(t,`shadow-claw.config.json`);await h(e,JSON.stringify({$schema:`https://json-schema.org/draft/2020-12/schema`,site:{title:`ShadowClaw Agent Workspace`,description:`Headless CLI agent workspace`},settings:{defaultProvider:`openrouter`,defaultModel:`openrouter/free`},agent:{defaultProvider:a,defaultModel:o}},null,2)+`
|
|
15
|
+
`,`utf8`)}if(e.download&&(a===`transformers_js_local`||a===`llamafile`)){let{downloadLocalModel:t}=await import(`./chunk-BzWY1sKE.js`);await t(o,{cacheDir:e.cacheDir,verbose:e.verbose,isTTY:e.isTTY})}return await k({workspace:t,quiet:!0}),{success:!0,workspace:t}}async function L(e={}){let{db:t,core:n}=await k(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||F,i=await n.discoverSkills(t,r);return{skills:i.skills,diagnostics:i.diagnostics}}async function R(e={}){let{db:t,core:n}=await k(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||F,i=null;if(e.toolsProfile||e.profile){let r=String(e.toolsProfile||e.profile).trim().toLowerCase(),a=n.DEFAULT_BUILTIN_PROFILE||null,o=[];if(typeof n.getConfig==`function`)try{let e=await n.getConfig(t,n.CONFIG_KEYS?.TOOL_PROFILES||`tool_profiles`);typeof e==`string`?o=JSON.parse(e):Array.isArray(e)&&(o=e)}catch{}let s=[a,...o].filter(Boolean).find(e=>e.id&&String(e.id).toLowerCase()===r||e.name&&String(e.name).toLowerCase()===r);s&&(i=new Set(s.enabledToolNames||[]))}let a=[...n.TOOL_DEFINITIONS||[]];if(typeof n.loadDeclarativeTools==`function`)try{let e=await n.loadDeclarativeTools(t,r);if(e&&Array.isArray(e.tools))for(let t of e.tools)a.some(e=>e.name===t.name)||a.push(t)}catch{}return{tools:a.map(e=>({name:e.name,description:e.description,headlessSafe:!P.has(e.name),...i?{enabled:i.has(e.name)}:{}}))}}async function z(e,t,n={}){let{db:r,workspaceDir:i,core:a}=await k(n),o=n.group||a.DEFAULT_SERVER_GROUP_ID||F,s=(a.TOOL_DEFINITIONS||[]).find(t=>t.name===e);if(!s&&typeof a.loadDeclarativeTools==`function`)try{s=(await a.loadDeclarativeTools(r,o)).tools.find(t=>t.name===e)}catch{}if(!s){let t=`Error: Tool "${e}" not found.`;return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}let u=!P.has(s.name),d=t??n.input;if(d===`-`&&(d=void 0),d==null&&n._stdinData!=null){let e=n._stdinData,t;try{t=JSON.parse(e)}catch{t=j(e,s.input_schema)}d=t}if(d!=null){let t={};if(typeof d==`string`)try{t=JSON.parse(d)}catch(e){let t=`Error: Failed to parse input JSON: ${e.message}`;return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}else typeof d==`object`&&(t=d);let f;try{let e=await H(r,a,i,{...n,interactive:!1});f={db:r,provider:e.providerId,model:e.model,apiKey:e.apiKey}}catch{}try{let i=await a.executeTool(r,e,t,o,{invokeContext:f}),d=typeof i==`string`?i:JSON.stringify(i,null,2);return n.output?(await h(c.resolve(n.output),d,`utf8`),n.quiet||l.stderr.write(`Output written to ${n.output}\n`)):n.quiet||l.stdout.write(d+`
|
|
16
16
|
`),{success:!0,tool:s,headlessSafe:u,output:i}}catch(t){let r=t instanceof Error?t.message:String(t);return n.quiet||console.error(`Error executing tool "${e}": ${r}`),l.exitCode=1,{success:!1,error:r}}}if(!n.quiet){let e=u?`[headless-safe]`:`[browser-only]`;console.log(`Tool: ${s.name} ${e}\n`),console.log(`Description:\n ${s.description}\n`),s.input_schema&&(console.log(`Parameters (JSON Schema):`),console.log(JSON.stringify(s.input_schema,null,2)),console.log()),console.log(`Usage:`),console.log(` Direct CLI: npx shadow-claw agent tool ${s.name} '<json-input>'`),console.log(` Pipe input: echo '<text>' | npx shadow-claw agent tool ${s.name}`),console.log(` Agent Prompt: npx shadow-claw agent run "<instruction>"
|
|
17
|
-
`)}return{success:!0,tool:s,headlessSafe:u}}async function B(e={}){let{db:t,core:n}=await k(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||F,{clearGroupMessages:i}=await import(`./chunk-CAxYfMhR.js`);return await i(t,r),e.quiet||console.log(`Cleared conversation history for group "${r}".`),{success:!0,groupId:r}}async function V(e,t={}){let{db:n,core:r}=await k(t),i=t.group||r.DEFAULT_SERVER_GROUP_ID||F,a=await r.loadSkill(n,i,e);if(!a)throw Error(`Skill "${e}" not found in workspace.`);if(a.execution?.type===`tools`&&Array.isArray(a.execution.tools)){let e=a.execution.tools.map(e=>({name:e.name||e.tool,input:e.input||e.arguments||{},suppressOutput:e.suppressOutput})),t=await r.executeToolChain(n,i,e,{isManual:!0});return{success:!0,skill:a,results:t.results,rawOutputs:t.rawOutputs}}return{success:!0,skill:a,message:`Skill "${e}" loaded (no declarative tools defined).`}}async function H(e,t,n,r={}){let i=r.contentRoot??l.cwd(),a=await S(n,i),o=a?.config||{},s=o.settings||{},c=o.agent||s.agent||{},u=r.provider||l.env.SHADOW_CLAW_PROVIDER||l.env.SHADOW_CLAW_DEFAULT_PROVIDER;if(!u&&typeof t.getConfig==`function`&&(u=await t.getConfig(e,t.CONFIG_KEYS?.PROVIDER||`provider`)),!u&&r.model){let{isLlamafile:e,isAgentfile:t}=await import(`./chunk-
|
|
17
|
+
`)}return{success:!0,tool:s,headlessSafe:u}}async function B(e={}){let{db:t,core:n}=await k(e),r=e.group||n.DEFAULT_SERVER_GROUP_ID||F,{clearGroupMessages:i}=await import(`./chunk-CAxYfMhR.js`);return await i(t,r),e.quiet||console.log(`Cleared conversation history for group "${r}".`),{success:!0,groupId:r}}async function V(e,t={}){let{db:n,core:r}=await k(t),i=t.group||r.DEFAULT_SERVER_GROUP_ID||F,a=await r.loadSkill(n,i,e);if(!a)throw Error(`Skill "${e}" not found in workspace.`);if(a.execution?.type===`tools`&&Array.isArray(a.execution.tools)){let e=a.execution.tools.map(e=>({name:e.name||e.tool,input:e.input||e.arguments||{},suppressOutput:e.suppressOutput})),t=await r.executeToolChain(n,i,e,{isManual:!0});return{success:!0,skill:a,results:t.results,rawOutputs:t.rawOutputs}}return{success:!0,skill:a,message:`Skill "${e}" loaded (no declarative tools defined).`}}async function H(e,t,n,r={}){let i=r.contentRoot??l.cwd(),a=await S(n,i),o=a?.config||{},s=o.settings||{},c=o.agent||s.agent||{},u=r.provider||l.env.SHADOW_CLAW_PROVIDER||l.env.SHADOW_CLAW_DEFAULT_PROVIDER;if(!u&&typeof t.getConfig==`function`&&(u=await t.getConfig(e,t.CONFIG_KEYS?.PROVIDER||`provider`)),!u&&r.model){let{isLlamafile:e,isAgentfile:t}=await import(`./chunk-BzWY1sKE.js`);t(r.model)?u=`agentfile`:e(r.model)?u=`llamafile`:/onnx/i.test(r.model)&&(u=`transformers_js_local`)}u||=c.defaultProvider||c.provider||s.defaultProvider||s.provider||o.defaultProvider;let d=r.stdin?!!r.stdin.isTTY:!!l.stdin.isTTY,f=!r.stdin&&!l.stdin.isTTY&&!!(l.stderr.isTTY||l.stdout.isTTY),p=r.isTTY===void 0?d||f:!!r.isTTY,m=r.isCI===void 0?r.isTTY===void 0&&!(!l.env.CI||[`0`,`false`].includes(l.env.CI.toLowerCase())):!!r.isCI,h=p&&!m&&!r.quiet&&r.interactive!==!1;if(!u){if(h){let{promptForAgentModel:e}=await import(`./chunk-BzWY1sKE.js`),t=await e({workspaceDir:n,contentRoot:i,cacheDir:r.cacheDir,stdin:r.stdin,stdout:r.stdout,quiet:r.quiet,isTTY:p,service:r._transformersService});u=t.providerId,r.model=t.model}else u=`openrouter`}let g=typeof t.getProvider==`function`?t.getProvider(u):null;if(!g){let e=`Error: Unknown provider "${u}".`;throw Error(e)}let _;if(r.apiKey!==void 0)_=r.apiKey;else{if(_=l.env.SHADOW_CLAW_API_KEY,!_)switch(u){case`openrouter`:_=l.env.OPENROUTER_API_KEY;break;case`huggingface`:_=l.env.HUGGINGFACE_API_KEY||l.env.HF_TOKEN;break;case`gemini_proxy`:_=l.env.GEMINI_API_KEY}!_&&typeof t.getConfig==`function`&&(_=await t.getConfig(e,`api_key:${u}`)||await t.getConfig(e,`apiKey`))}let v=r.model||l.env.SHADOW_CLAW_MODEL||l.env.SHADOW_CLAW_DEFAULT_MODEL||(typeof t.getConfig==`function`?await t.getConfig(e,t.CONFIG_KEYS?.MODEL||`model`):null)||c.defaultModel||c.model||s.defaultModel||s.model||o.defaultModel||g?.defaultModel||(u===`transformers_js_local`?(await import(`./chunk-BzWY1sKE.js`)).DEFAULT_LOCAL_MODEL:`default`);if(u===`transformers_js_local`||u===`llamafile`||u===`agentfile`){let{isModelLocallyCached:e,downloadLocalModel:t}=await import(`./chunk-BzWY1sKE.js`),i=r.cacheDir||c.cacheDir||o.cacheDir||s.cacheDir;if(!(e(v,i)||n&&e(v,n))){let e=r.stdout||l.stderr;if(r.download||r.yes||r.y)r.quiet||e.write(`\nDownloading ${v} from Hugging Face...\n`),await t(v,{cacheDir:i||r.cacheDir,stream:e,isTTY:p,service:r._transformersService,progress:!r.quiet&&r.progress!==!1&&!r.noProgress,quiet:r.quiet,verbose:r.verbose});else if(h){let n=await import(`node:readline/promises`),a=await import(`node:tty`),o=await import(`node:fs`),s=r.stdin||l.stdin,c=e,u=!1,d=null;if(s===l.stdin&&!l.stdin.isTTY&&!l.env.CI&&(l.stderr.isTTY||l.stdout.isTTY))try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;d=o.openSync(e,`r`),s=new a.ReadStream(d),c=l.stderr.isTTY?l.stderr:l.stdout,u=!0}catch{try{let e=l.platform===`win32`?`CONIN$`:`/dev/tty`;s=o.createReadStream(e),c=l.stderr.isTTY?l.stderr:l.stdout,u=!0}catch{}}let f=n.createInterface({input:s,output:c}),m=!1,h=()=>{if(!m){m=!0,c.write(`
|
|
18
18
|
Operation cancelled.
|
|
19
19
|
`);try{f.close()}catch{}typeof r.onExit==`function`?r.onExit(130):l.exit(130)}};f.on(`SIGINT`,h),s&&typeof s.on==`function`&&s!==l.stdin&&s.on(`SIGINT`,h);let g=()=>h();l.on(`SIGINT`,g);let _=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&h()};s&&typeof s.on==`function`&&s.on(`data`,_);let y=``;try{y=(await f.question(`\nModel "${v}" is not yet downloaded to local disk.\nDownload model weights now? (Y/n) [default: Y]: `)).trim().toLowerCase()}finally{l.removeListener(`SIGINT`,g),s&&typeof s.removeListener==`function`&&(s!==l.stdin&&s.removeListener(`SIGINT`,h),s.removeListener(`data`,_));try{f.close()}catch{}if(u){if(s&&typeof s.destroy==`function`)try{s.destroy()}catch{}if(d!=null)try{o.closeSync(d)}catch{}}}if(y===``||y===`y`||y===`yes`)r.quiet||e.write(`\nDownloading ${v} from Hugging Face...\n`),await t(v,{cacheDir:i||r.cacheDir,stream:e,isTTY:p,service:r._transformersService,progress:!r.quiet&&r.progress!==!1&&!r.noProgress,quiet:r.quiet,verbose:r.verbose});else throw Error(`Model "${v}" is not downloaded. Download aborted.`)}else throw Error(`Model "${v}" is not downloaded. Run with --download or --yes to download model weights automatically.`)}}return{providerId:u,providerConfig:g,apiKey:_||``,model:v,workspaceConfigData:a,workspaceConfig:o,workspaceSettings:s,workspaceAgent:c}}async function ee(e,t,n,r,i,a,o){let s=[...t.TOOL_DEFINITIONS||[]];if(typeof t.loadDeclarativeTools==`function`)try{let r=await t.loadDeclarativeTools(e,n);if(r&&Array.isArray(r.tools))for(let e of r.tools)s.some(t=>t.name===e.name)||s.push(e)}catch{}let c=s.filter(e=>!P.has(e.name)),l=c,u=null;async function d(){let n=t.DEFAULT_BUILTIN_PROFILE||null,a=[];if(typeof t.getConfig==`function`)try{let n=await t.getConfig(e,t.CONFIG_KEYS?.TOOL_PROFILES||`tool_profiles`);typeof n==`string`?a=JSON.parse(n):Array.isArray(n)&&(a=n)}catch{}let o=r?.toolProfiles||i?.toolProfiles||r?.profiles||[];return[n,...a,...o].filter(Boolean)}if(o.noTools===!0||o.tools===!1||o.tools===`none`||o.tools===``)return l=[],{enabledTools:l,profileSystemPromptOverride:u};if(o.tools!==void 0&&o.tools!==null)return l=(Array.isArray(o.tools)?o.tools:String(o.tools).split(`,`)).map(e=>String(e).trim()).filter(Boolean).map(e=>c.find(t=>t.name===String(e))).filter(Boolean),{enabledTools:l,profileSystemPromptOverride:u};if(o.toolsProfile){let e=await d(),t=String(o.toolsProfile).trim().toLowerCase(),n=e.find(e=>e.id&&String(e.id).toLowerCase()===t||e.name&&String(e.name).toLowerCase()===t);if(!n)throw Error(`Error: Tool profile "${o.toolsProfile}" not found.`);let r=new Set(n.enabledToolNames||[]);if(l=c.filter(e=>r.has(e.name)),n.customTools&&Array.isArray(n.customTools))for(let e of n.customTools)!P.has(e.name)&&!l.some(t=>t.name===e.name)&&l.push(e);return n.systemPromptOverride&&(u=n.systemPromptOverride),{enabledTools:l,profileSystemPromptOverride:u}}let f=a?.tools??a?.enabledTools;if(f!=null)return f===!1||f===`none`||f===``?(l=[],{enabledTools:l,profileSystemPromptOverride:u}):(l=(Array.isArray(f)?f:String(f).split(`,`)).map(e=>String(e).trim()).filter(Boolean).map(e=>c.find(t=>t.name===e)).filter(Boolean),{enabledTools:l,profileSystemPromptOverride:u});let p=a?.toolsProfile||a?.defaultToolsProfile;if(p){let e=await d(),t=String(p).trim().toLowerCase(),n=e.find(e=>e.id&&String(e.id).toLowerCase()===t||e.name&&String(e.name).toLowerCase()===t);if(n){let e=new Set(n.enabledToolNames||[]);return l=c.filter(t=>e.has(t.name)),n.systemPromptOverride&&(u=n.systemPromptOverride),{enabledTools:l,profileSystemPromptOverride:u}}}return{enabledTools:l,profileSystemPromptOverride:u}}async function U(e,n={}){let{db:s,workspaceDir:u,core:d}=await k(n),f=n.group||d.DEFAULT_SERVER_GROUP_ID||F,p=n._stdinData??null;if(e===`-`?e=p||``:p&&(e=e?`${e}\n\n${p}`:p),!e){let e=`Error: Prompt required. Provide a prompt argument or pipe text to stdin.`;return n.quiet||console.error(e),l.exitCode=1,{success:!1,error:e}}let g=[],_=/* @__PURE__ */ new Map;try{let e=await N(M(n.file));for(let t of e)if(t.source?.kind===`local-file`){let e=await t.source.file.arrayBuffer();_.set(t.fileName,new Uint8Array(e))}g=await t(s,f,e);for(let e of g)e.path&&_.has(e.fileName)&&_.set(e.path,_.get(e.fileName))}catch(e){return n.quiet||console.error(e.message),l.exitCode=1,{success:!1,error:e.message}}let v,y,b,x,S,C,w,T;try{let e=await H(s,d,u,n);v=e.providerId,y=e.providerConfig,b=e.apiKey,x=e.model,S=e.workspaceConfigData,C=e.workspaceConfig,w=e.workspaceSettings,T=e.workspaceAgent}catch(e){return n.quiet||console.error(e.message),l.exitCode=1,{success:!1,error:e.message}}let E=n.internetAccess??n.allowInternet??w?.internetAccess??w?.vm_bash_full_internet_access??w?.fullInternetAccess??C?.internetAccess;if(E!==void 0&&typeof d.setConfig==`function`){let e=d.CONFIG_KEYS?.VM_BASH_FULL_INTERNET_ACCESS||`vm_bash_full_internet_access`;await d.setConfig(s,e,E?`true`:`false`)}if(y.requiresApiKey!==!1&&!b){let e=v===`huggingface`?`HUGGINGFACE_API_KEY`:`${v.toUpperCase()}_API_KEY`,t=`Error: Provider "${v}" requires an API key, but none was provided.\nPlease provide an API key via --api-key <key> or export ${e}="...".`;return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}let D=[];if(n.history!==!1&&typeof d.getRecentMessages==`function`)try{let e=await d.getRecentMessages(s,f,50);D=await Promise.all(e.map(async e=>{if(e?.role===`user`&&Array.isArray(e?.attachments)&&e.attachments.length>0){let t=await i(e.attachments,async e=>{if(e.path&&s)try{return await o(s,f,e.path)}catch{}return null});if(t.length>0){let n=typeof e.content==`string`?e.content:``;return{...e,content:n?[{type:`text`,text:n},...t]:t}}}return e}))}catch{}let A={id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:f,role:`user`,sender:`user`,channel:`chat`,isFromMe:!1,isTrigger:!0,content:e,timestamp:Date.now(),...g.length>0?{attachments:g}:{}};if(typeof d.saveMessage==`function`)try{await d.saveMessage(s,A)}catch{}let j=A;if(g.length>0){let t=await i(g,async e=>{if(e.path&&_.has(e.path))return _.get(e.path);if(_.has(e.fileName))return _.get(e.fileName);if(e.path&&s)try{return await o(s,f,e.path)}catch{}return null});t.length>0&&(j={...A,content:e?[{type:`text`,text:e},...t]:t})}let P=y?.supportsStreaming===!0,I=n.stream!==!1&&n.streaming!==!1&&!n.noStream,L=P&&I,R=Number(n.maxTokens)||(typeof d.getModelMaxTokens==`function`?d.getModelMaxTokens(x):d.DEFAULT_MAX_TOKENS||8192);if(n.verbose&&!n.quiet){let e=y?.name||v,t=L?`streaming`:`standard`;l.stderr.write(`[Agent] Connecting to ${e} (${x}) [${t}]...\n`),l.stderr.write(`[Agent] Workspace: ${u}\n[Agent] Group: ${f}\n[Agent] Max tokens: ${R}\n`)}let z,B,V=!1,U=``,W=[];d.setPostHandler(async e=>{({"streaming-start":()=>{V=!0},"streaming-chunk":e=>{e.payload?.text&&(V=!0,U+=e.payload.text,z=(z||``)+e.payload.text,!n.quiet&&!n.output&&l.stdout.write(e.payload.text))},"streaming-done":()=>{},"streaming-end":()=>{V=!1,U=``},response:e=>{if(e.payload?.text){if(z=e.payload.text,n.output){let t=h(c.resolve(n.output),e.payload.text,`utf8`).then(()=>{n.quiet||l.stderr.write(`Output written to ${n.output}\n`)}).catch(()=>{});W.push(t)}else n.quiet||(V&&typeof U==`string`&&U.trim()===e.payload.text.trim()?e.payload.text.endsWith(`
|
|
20
20
|
`)||l.stdout.write(`
|
|
21
21
|
`):l.stdout.write(e.payload.text+`
|
|
22
|
-
`))}},"intermediate-response":e=>{n.verbose&&!n.quiet&&e.payload?.text&&l.stderr.write(`[Thought] ${e.payload.text}\n`)},error:e=>{e.payload?.error&&(B=e.payload.error,n.quiet||console.error(`Error: ${e.payload.error}`))},"tool-activity":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.tool||`tool`,n=e.payload.status||`executing`;l.stderr.write(`[Tool] ${t} (${n})\n`)}},"thinking-log":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;l.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},status:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label?`[${e.payload.label}] `:``;l.stderr.write(`${t}${e.payload.message||``}\n`)}},log:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;l.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},"token-usage":e=>{if(n.verbose&&!n.quiet&&e.payload?.usage){let t=e.payload.usage,n=t.prompt_tokens??t.input_tokens??0,r=t.completion_tokens??t.output_tokens??0,i=t.total_tokens??n+r;l.stderr.write(`[Tokens] Prompt: ${n}, Completion: ${r}, Total: ${i}\n`)}},"request-native-ai-task":e=>{O(d,s,e.payload)}})[e.type]?.(e)});let G;try{G=await ee(s,d,f,C,w,T,n)}catch(e){let t=e.message||String(e);return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}let{enabledTools:K,profileSystemPromptOverride:q}=G;if(K.length>0&&!n.quiet){let{getCuratedModelToolSupport:e}=await import(`./chunk-
|
|
22
|
+
`))}},"intermediate-response":e=>{n.verbose&&!n.quiet&&e.payload?.text&&l.stderr.write(`[Thought] ${e.payload.text}\n`)},error:e=>{e.payload?.error&&(B=e.payload.error,n.quiet||console.error(`Error: ${e.payload.error}`))},"tool-activity":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.tool||`tool`,n=e.payload.status||`executing`;l.stderr.write(`[Tool] ${t} (${n})\n`)}},"thinking-log":e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;l.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},status:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label?`[${e.payload.label}] `:``;l.stderr.write(`${t}${e.payload.message||``}\n`)}},log:e=>{if(n.verbose&&!n.quiet&&e.payload){let t=e.payload.label||e.payload.level||`Log`;l.stderr.write(`[${t}] ${e.payload.message||``}\n`)}},"token-usage":e=>{if(n.verbose&&!n.quiet&&e.payload?.usage){let t=e.payload.usage,n=t.prompt_tokens??t.input_tokens??0,r=t.completion_tokens??t.output_tokens??0,i=t.total_tokens??n+r;l.stderr.write(`[Tokens] Prompt: ${n}, Completion: ${r}, Total: ${i}\n`)}},"request-native-ai-task":e=>{O(d,s,e.payload)}})[e.type]?.(e)});let G;try{G=await ee(s,d,f,C,w,T,n)}catch(e){let t=e.message||String(e);return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}let{enabledTools:K,profileSystemPromptOverride:q}=G;if(K.length>0&&!n.quiet){let{getCuratedModelToolSupport:e}=await import(`./chunk-BzWY1sKE.js`);e(x)===!1&&l.stderr.write(`[Agent] Warning: Model "${x}" does not support tool calling; tools will be ignored. Use --tools none or choose a tool-capable model (e.g. onnx-community/gemma-4-E2B-it-ONNX).\n`)}if(g.length>0&&!n.quiet){let e=r(x);for(let t of g){let n=a(t.mimeType,t.fileName);n===`image`&&!e.images&&!e.routerByFeatures?l.stderr.write(`[Agent] Warning: Model "${x}" does not accept image input; "${t.fileName}" will be passed as a reference only.\n`):n===`audio`&&!e.audio&&!e.routerByFeatures?l.stderr.write(`[Agent] Warning: Model "${x}" does not accept audio input; "${t.fileName}" will be passed as a reference only.\n`):n===`video`&&!e.video&&!e.routerByFeatures?l.stderr.write(`[Agent] Warning: Model "${x}" does not accept video input; "${t.fileName}" will be passed as a reference only.\n`):n===`document`&&!e.documents&&!e.routerByFeatures&&l.stderr.write(`[Agent] Warning: Model "${x}" does not accept PDF/document input; "${t.fileName}" will be passed as a reference only.\n`)}}let J;if(n.systemPrompt===`none`||n.systemPrompt===``||n.systemPrompt===!1||n.noSystemPrompt===!0)J=``;else{if(J=n.systemPrompt,!J&&n.systemPromptFile)try{let e=c.resolve(n.systemPromptFile);J=await m(e,`utf8`)}catch(e){let t=`Error: Failed to read system prompt file "${n.systemPromptFile}": ${e.message}`;return n.quiet||console.error(t),l.exitCode=1,{success:!1,error:t}}if(J||=l.env.SHADOW_CLAW_SYSTEM_PROMPT||l.env.SHADOWCLAW_SYSTEM_PROMPT,!J&&q&&(J=q),!J&&T?.systemPromptFile)try{let e=S?.configPath?c.dirname(S.configPath):u,t=c.resolve(e,T.systemPromptFile);J=await m(t,`utf8`)}catch(e){n.verbose&&!n.quiet&&console.error(`Warning: Failed to read systemPromptFile from config: ${e.message}`)}if(J||=T?.systemPrompt||w?.systemPrompt||w?.systemPromptOverride,!J&&typeof d.getConfig==`function`)try{let e=await d.getConfig(s,d.CONFIG_KEYS?.SYSTEM_PROMPT_OVERRIDE||`system_prompt_override`);e&&typeof e==`string`&&(J=e)}catch{}J||=`You are ShadowClaw, a helpful AI assistant operating in a headless workspace. Answer concisely.`}let te={apiKey:b||``,assistantName:`ShadowClaw`,enabledTools:K,groupId:f,maxTokens:R,messages:[...D,j],model:x,provider:v,streaming:L,verbose:!!n.verbose,systemPrompt:J},Y=new AbortController;n.abortSignal&&(n.abortSignal.aborted?Y.abort():n.abortSignal.addEventListener(`abort`,()=>Y.abort(),{once:!0}));let X=e=>{typeof n.onExit==`function`?n.onExit(e):!l.env.JEST_WORKER_ID&&l.env.NODE_ENV!==`test`&&l.exit(e)},Z=!1,Q=null,$=()=>{if(Z)Q&&=(clearTimeout(Q),null),X(130);else{Z=!0,Y.abort();try{typeof d.cleanupAllLlamafileProcesses==`function`&&d.cleanupAllLlamafileProcesses()}catch{}Q=setTimeout(()=>{X(130)},1500),Q.unref?.()}};l.on(`SIGINT`,$);let ne=n.invokeHandler||d.handleInvoke;try{await ne(s,te,Y.signal)}catch(e){B=e instanceof Error?e.message:String(e),!Z&&!n.quiet&&console.error(`Error: ${B}`)}finally{l.removeListener(`SIGINT`,$),Q&&=(clearTimeout(Q),null)}if(Z)return n.quiet||l.stderr.write(`
|
|
23
23
|
Operation cancelled.
|
|
24
24
|
`),l.exitCode=130,typeof n.onExit==`function`&&n.onExit(130),{success:!1,error:`Operation cancelled.`};if(B&&V&&!n.quiet&&!n.output&&l.stdout.write(`
|
|
25
|
-
`),B)return l.exitCode=1,{success:!1,error:B};if(z&&typeof d.saveMessage==`function`)try{await d.saveMessage(s,{id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:f,role:`assistant`,content:z,timestamp:Date.now()})}catch{}if(n.output&&z&&W.length===0){let e=h(c.resolve(n.output),z,`utf8`).then(()=>{n.quiet||l.stderr.write(`Output written to ${n.output}\n`)}).catch(()=>{});W.push(e)}return await Promise.all(W),typeof d.setPostHandler==`function`&&d.setPostHandler(null),{success:!0,response:z,model:x,provider:v}}async function W(e=`list`,t,n={}){let{listLocalModels:r,listLlamafileModels:i,downloadLocalModel:a,fetchRemoteModels:o,DEFAULT_LOCAL_MODEL:s}=await import(`./chunk-
|
|
25
|
+
`),B)return l.exitCode=1,{success:!1,error:B};if(z&&typeof d.saveMessage==`function`)try{await d.saveMessage(s,{id:`msg_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,groupId:f,role:`assistant`,content:z,timestamp:Date.now()})}catch{}if(n.output&&z&&W.length===0){let e=h(c.resolve(n.output),z,`utf8`).then(()=>{n.quiet||l.stderr.write(`Output written to ${n.output}\n`)}).catch(()=>{});W.push(e)}return await Promise.all(W),typeof d.setPostHandler==`function`&&d.setPostHandler(null),{success:!0,response:z,model:x,provider:v}}async function W(e=`list`,t,n={}){let{listLocalModels:r,listLlamafileModels:i,downloadLocalModel:a,fetchRemoteModels:o,DEFAULT_LOCAL_MODEL:s}=await import(`./chunk-BzWY1sKE.js`),u=n.workspace?c.resolve(n.workspace):l.cwd(),d=e||`list`;if(d===`list`||d===`remote`){let e=d===`remote`||!!(n.remote||n.all||n.huggingface),a=await S(u),c=a?.config?.agent?.defaultModel||a?.config?.settings?.defaultModel||s;if(e){n.quiet||l.stdout.write(`
|
|
26
26
|
Fetching available ONNX models from Hugging Face (onnx-community)...
|
|
27
27
|
`);let e=await o({cacheDir:n.cacheDir,query:n.query||(d===`remote`&&t?t:void 0)});if(!n.quiet){if(e.length===0)l.stdout.write(`No models found on Hugging Face or could not reach huggingface.co.
|
|
28
28
|
|
|
@@ -36,5 +36,5 @@ Curated Transformers.js Models (Local ONNX):
|
|
|
36
36
|
`);for(let e of f){let t=e.id===c,n=e.cached?` [Cached]`:` [Not downloaded]`,r=t?` (Default)`:``;l.stdout.write(` • ${e.id}${r}${n}\n`),l.stdout.write(` Name: ${e.name}\n`),l.stdout.write(` Context: ${e.contextLength.toLocaleString()} tokens | Tools: ${e.supportsTools?`Yes`:`No`}\n`),l.stdout.write(` ${e.description}\n\n`)}l.stdout.write(`Curated Llamafile Models (Local Executable):
|
|
37
37
|
|
|
38
38
|
`);for(let e of p){let t=e.fileName===c||e.id===c||c.endsWith(e.fileName),n=e.cached?` [Cached]`:` [Not downloaded]`,r=t?` (Default)`:``;l.stdout.write(` • ${e.fileName}${r}${n}\n`),l.stdout.write(` Name: ${e.name}\n`),l.stdout.write(` URL: ${e.url}\n`),l.stdout.write(` ${e.description}\n\n`)}l.stdout.write("Tip: Run `shadow-claw agent model list --remote` (or `shadow-claw agent model remote`) to browse all ONNX models from Hugging Face.\n\n")}return{success:!0,models:f,llamafileModels:p,defaultModel:c}}if(d===`download`){let e=t||n.model||s;n.verbose&&!n.quiet&&l.stderr.write(`Preparing to download model: ${e}\n`);let r=await a(e,{cacheDir:n.cacheDir,verbose:n.verbose,isTTY:n.isTTY,progress:n.progress!==!1&&!n.noProgress});return r.success||(l.exitCode=1),r}if(d===`set`){let e=t||n.model;if(!e){let e=`Error: Please specify a model ID to set as default.`;return n.quiet||console.error(e),l.exitCode=1,{success:!1,error:e}}let r=await S(u),i=r?.configPath||c.join(u,`shadow-claw.config.json`),a=r?.config||{},o={...a,agent:{...a.agent||{},defaultModel:e}};return await h(i,JSON.stringify(o,null,2)+`
|
|
39
|
-
`,`utf8`),n.quiet||l.stdout.write(`Updated default CLI agent model to: ${e}\n`),{success:!0,model:e,configPath:i}}let f=`Unknown model action: "${d}". Available: list, download, set`;return n.quiet||console.error(f),l.exitCode=1,{success:!1,error:f}}async function G(e,t={}){let n=(e||``).trim();if(!n){let e=`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`;return t.quiet||console.error(e),l.exitCode=1,{success:!1,error:e}}let{db:r,core:i}=await k(t),a=t.group||i.DEFAULT_SERVER_GROUP_ID||F,o=i.fetchDiscoveryManifest||(await import(`./chunk-
|
|
40
|
-
Importing artifacts:`);for(let e of[...T.tools,...T.skills,...T.scripts]){let t=T.tools.includes(e)?`tool`:T.skills.includes(e)?`skill`:`script`;e.status===`imported`?console.log(` [${t}] ${e.name} -> ${e.path} (imported)`):e.status===`skipped`?console.log(` [${t}] ${e.name} -> ${e.path} (skipped, already exists - use --overwrite to replace)`):console.log(` [${t}] ${e.name} (failed: ${e.error||`unknown error`})`)}console.log(z>0?`\nCompleted with ${z} error${z===1?``:`s`}. Successfully imported ${L} items, ${R} skipped.`:`\nSuccessfully imported ${L} item${L===1?``:`s`} (${E.length} tool${E.length===1?``:`s`}, ${D.length} skill${D.length===1?``:`s`}, ${O.length} script${O.length===1?``:`s`}).`)}let B=z===0||L>0;return B||(l.exitCode=1),{success:B,manifest:d,siteUrl:f,manifestUrl:p,result:T,importedCount:L,skippedCount:R,failedCount:z}}async function K(e,t=[],n={}){let r=t,i=n;if(!Array.isArray(t)&&typeof t==`object`&&(i=t,r=[]),i._stdinData===void 0)try{i={...i,_stdinData:l.stdin.isTTY?null:await A({timeoutMs:500})}}catch{i={...i,_stdinData:null}}switch(e){case`init`:{let e=r[0]||i.workspace,t=await I({...i,workspace:e});return console.log(`Headless agent workspace initialized at: ${t.workspace}`),t}case`skills`:{let e=await L(i);if(e.skills.length===0)console.log(`No skills found in workspace (.agents/skills/).`);else{console.log(`Available skills (${e.skills.length}):\n`);for(let t of e.skills)console.log(` - ${t.name}: ${t.description||`No description`}`)}return e}case`tools`:{let e=r[0];if(e)return await z(e,r[1],i);let t=await R(i);console.log(`Available tools (${t.tools.length}):\n`);for(let e of t.tools){let t=e.headlessSafe?`[headless-safe]`:`[browser-only]`;console.log(` - ${e.name.padEnd(25)} ${t} ${e.description||``}`)}return t}case`tool`:{let e=r[0];if(!e){console.error(`Error: Tool name required. Usage: shadow-claw agent tool <name> [input-json]`),l.exitCode=1;return}return await z(e,r[1],i)}case`skill`:{let e=r[0];if(!e){console.error(`Error: Skill name required. Usage: shadow-claw agent skill <name>`),l.exitCode=1;return}return await V(e,i)}case`clear`:return await B(i);case`run`:return await U(r.join(` `)||`-`,i);case`models`:case`model`:{let e=r[0]||`list`,t=r[1];return await W(e,t,i)}case`import`:{let e=r[0];return e?await G(e,i):(console.error(`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`),l.exitCode=1,{success:!1,error:`Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`})}case`listen`:return await(i.listenFn||(async e=>{let{runWebRtcListenCommand:t}=await import(`./chunk-
|
|
39
|
+
`,`utf8`),n.quiet||l.stdout.write(`Updated default CLI agent model to: ${e}\n`),{success:!0,model:e,configPath:i}}let f=`Unknown model action: "${d}". Available: list, download, set`;return n.quiet||console.error(f),l.exitCode=1,{success:!1,error:f}}async function G(e,t={}){let n=(e||``).trim();if(!n){let e=`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`;return t.quiet||console.error(e),l.exitCode=1,{success:!1,error:e}}let{db:r,core:i}=await k(t),a=t.group||i.DEFAULT_SERVER_GROUP_ID||F,o=i.fetchDiscoveryManifest||(await import(`./chunk-bPVrFlmk.js`)).fetchDiscoveryManifest,s=i.importRemoteArtifacts||(await import(`./chunk-CNqc7LLn.js`)).importRemoteArtifacts,c=t.fetchFn||globalThis.fetch;t.quiet||console.log(`Fetching discovery manifest from ${n}...`);let u;try{u=await o(n,c)}catch(e){let n=`Failed to fetch discovery manifest: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),l.exitCode=1,{success:!1,error:n}}let{manifest:d,siteUrl:f,manifestUrl:p}=u,m=d.tools||[],h=d.skills||[],g=d.scripts||[];t.quiet||console.log(`Discovered: ${d.name||`Remote Site`} (${h.length} skill${h.length===1?``:`s`}, ${m.length} tool${m.length===1?``:`s`}, ${g.length} script${g.length===1?``:`s`})`);let _=m.map(e=>e.name),v=h.map(e=>e.name),y=g.map(e=>e.name),b,x,S;if((t.tools||t.skills||t.scripts)&&!t.all){let e=e=>e?Array.isArray(e)?e.map(e=>String(e).trim()).filter(Boolean):String(e).split(`,`).map(e=>e.trim()).filter(Boolean):[];b=e(t.tools),x=e(t.skills),S=e(t.scripts)}else b=_,x=v,S=y;let C=t.autoEnable!==!1,w=!!t.overwrite,T;try{T=await s(r,a,d,{toolNames:b,skillNames:x,scriptNames:S},{autoEnable:C,overwrite:w,fetchFn:c,siteSlug:t.siteSlug,targetSubdir:t.targetSubdir})}catch(e){let n=`Import failed: ${e instanceof Error?e.message:String(e)}`;return t.quiet||console.error(`Error: ${n}`),l.exitCode=1,{success:!1,error:n}}let E=T.tools.filter(e=>e.status===`imported`),D=T.skills.filter(e=>e.status===`imported`),O=T.scripts.filter(e=>e.status===`imported`),A=T.tools.filter(e=>e.status===`skipped`),j=T.skills.filter(e=>e.status===`skipped`),M=T.scripts.filter(e=>e.status===`skipped`),N=T.tools.filter(e=>e.status===`failed`),P=T.skills.filter(e=>e.status===`failed`),I=T.scripts.filter(e=>e.status===`failed`),L=E.length+D.length+O.length,R=A.length+j.length+M.length,z=N.length+P.length+I.length;if(!t.quiet){console.log(`
|
|
40
|
+
Importing artifacts:`);for(let e of[...T.tools,...T.skills,...T.scripts]){let t=T.tools.includes(e)?`tool`:T.skills.includes(e)?`skill`:`script`;e.status===`imported`?console.log(` [${t}] ${e.name} -> ${e.path} (imported)`):e.status===`skipped`?console.log(` [${t}] ${e.name} -> ${e.path} (skipped, already exists - use --overwrite to replace)`):console.log(` [${t}] ${e.name} (failed: ${e.error||`unknown error`})`)}console.log(z>0?`\nCompleted with ${z} error${z===1?``:`s`}. Successfully imported ${L} items, ${R} skipped.`:`\nSuccessfully imported ${L} item${L===1?``:`s`} (${E.length} tool${E.length===1?``:`s`}, ${D.length} skill${D.length===1?``:`s`}, ${O.length} script${O.length===1?``:`s`}).`)}let B=z===0||L>0;return B||(l.exitCode=1),{success:B,manifest:d,siteUrl:f,manifestUrl:p,result:T,importedCount:L,skippedCount:R,failedCount:z}}async function K(e,t=[],n={}){let r=t,i=n;if(!Array.isArray(t)&&typeof t==`object`&&(i=t,r=[]),i._stdinData===void 0)try{i={...i,_stdinData:l.stdin.isTTY?null:await A({timeoutMs:500})}}catch{i={...i,_stdinData:null}}switch(e){case`init`:{let e=r[0]||i.workspace,t=await I({...i,workspace:e});return console.log(`Headless agent workspace initialized at: ${t.workspace}`),t}case`skills`:{let e=await L(i);if(e.skills.length===0)console.log(`No skills found in workspace (.agents/skills/).`);else{console.log(`Available skills (${e.skills.length}):\n`);for(let t of e.skills)console.log(` - ${t.name}: ${t.description||`No description`}`)}return e}case`tools`:{let e=r[0];if(e)return await z(e,r[1],i);let t=await R(i);console.log(`Available tools (${t.tools.length}):\n`);for(let e of t.tools){let t=e.headlessSafe?`[headless-safe]`:`[browser-only]`;console.log(` - ${e.name.padEnd(25)} ${t} ${e.description||``}`)}return t}case`tool`:{let e=r[0];if(!e){console.error(`Error: Tool name required. Usage: shadow-claw agent tool <name> [input-json]`),l.exitCode=1;return}return await z(e,r[1],i)}case`skill`:{let e=r[0];if(!e){console.error(`Error: Skill name required. Usage: shadow-claw agent skill <name>`),l.exitCode=1;return}return await V(e,i)}case`clear`:return await B(i);case`run`:return await U(r.join(` `)||`-`,i);case`models`:case`model`:{let e=r[0]||`list`,t=r[1];return await W(e,t,i)}case`import`:{let e=r[0];return e?await G(e,i):(console.error(`Error: Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`),l.exitCode=1,{success:!1,error:`Discovery URL or site URL required. Usage: shadow-claw agent import <url> [options]`})}case`listen`:return await(i.listenFn||(async e=>{let{runWebRtcListenCommand:t}=await import(`./chunk-WTlDd4Ou.js`);return t(e)}))({...i,agent:!0});default:console.log(`Usage: shadow-claw agent <init|model|skills|tools|tool|skill|import|run|clear|listen> [args...]`)}}export{I as a,V as c,R as d,k as f,G as i,L as l,S as m,B as n,W as o,D as p,K as r,U as s,H as t,z as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,i as t,s as n}from"./chunk-
|
|
1
|
+
import{c as e,i as t,s as n}from"./chunk-DFgSiYMW.js";function r(e){return n(e,{replacement:`-`,fallback:`attachment`,stripLeadingDots:!0,collapseReplacement:!0,stripControlChars:!0})}function i(e,t=``,n=Date.now()){let i=r(e),a=t.trim().replace(/[^a-zA-Z0-9._-]+/g,`-`).replace(/^-+|-+$/g,``);return`attachments/${n}-${a?`${a}-`:``}${i}`}async function a(n,a,c=[]){let l=[];for(let u of c){let c=r(u.fileName||``),d=u.path||i(c,u.id),f=u.source,p=t(c,u.mimeType||``),m=u.size;if(f){let r=await o(f);p=t(c,u.mimeType||r.type),m=typeof m==`number`?m:r.size,await e(n,a,d,r)}l.push(s({...u,fileName:c,mimeType:p,size:m,path:d,previewDisposition:u.previewDisposition||(p===`image/png`?`inline`:`file`)}))}return l}async function o(e){if(e.kind===`local-file`)return e.file;if(e.kind===`inline-text`)return new Blob([e.text],{type:e.mimeType||`text/plain`});let t=await fetch(e.url,{headers:e.headers});if(!t.ok)throw Error(`Attachment download failed: HTTP ${t.status} ${t.statusText}`);return await t.blob()}function s(e){let{source:t,...n}=e;return n}export{r as n,a as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./chunk-Cpdoq2Nw.js";import{a as t,i as n}from"./chunk-
|
|
1
|
+
import{r as e}from"./chunk-Cpdoq2Nw.js";import{a as t,i as n}from"./chunk-C79eIU-4.js";import{Buffer as r}from"buffer";import i from"isomorphic-git";globalThis.Buffer||(globalThis.Buffer=r);function a(e){try{let t=typeof location<`u`&&location.origin?location.origin:typeof globalThis<`u`&&globalThis.location?.origin?globalThis.location.origin:`http://127.0.0.1:8888`,n=new URL(e,t).hostname.toLowerCase();if(n===`localhost`||n===`127.0.0.1`||n===`::1`||n===`[::1]`)return`loopback`;if(/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/.test(n)||!n.includes(`.`)||n.endsWith(`.local`)||n.endsWith(`.lan`)||n.endsWith(`.home`)||n.endsWith(`.internal`))return`private`}catch{}}const o={async request({url:e,method:t=`GET`,headers:n={},body:r}){r&&=await s(r);let i=a(e),o={method:t,headers:n,body:r,credentials:`omit`};i&&(o.targetAddressSpace=i);let l=await fetch(e,o),u=l.body&&typeof l.body.getReader==`function`?c(l.body):[new Uint8Array(await l.arrayBuffer())],d={};for(let[e,t]of l.headers.entries())d[e]=t;return{url:l.url,method:t,statusCode:l.status,statusMessage:l.statusText,body:u,headers:d}}};async function s(e){let t=[];if(e[Symbol.asyncIterator])for await(let n of e)t.push(n);else if(e[Symbol.iterator])for(let n of e)t.push(n);else if(e.next){let n=await e.nexT();for(;!n.done;)t.push(n.value),n=await e.nexT()}else return e;let n=t.reduce((e,t)=>e+t.length,0),r=new Uint8Array(n),i=0;for(let e of t)r.set(e,i),i+=e.length;return r}function c(e){let t=e.getReader();return{next(){return t.read()},return(){return t.releaseLock(),{}},[Symbol.asyncIterator](){return this}}}let l=null,u=null,d=null,f=null,p=null;function m(e){return e.trim().replace(/^[\\/]+/,``).replace(/[\\/]+$/,``).split(/[\\/]+/).filter(e=>e!==`.`&&e!==``).join(`/`)}const h=new class{_map=/* @__PURE__ */ new Map;_maxSize;constructor(e=2048){this._maxSize=e}clear(){this._map.clear()}get(e){let t=this._map.get(e);return t!==void 0&&(this._map.delete(e),this._map.set(e,t)),t}invalidate(e){let t=e.endsWith(`/`)?e:e+`/`;for(let n of this._map.keys())(n===e||n.startsWith(t))&&this._map.delete(n)}set(e,t){if(this._map.size>=this._maxSize){let e=this._map.keys().next().value;e!==void 0&&this._map.delete(e)}this._map.set(e,t)}};async function g(e,t,n={},r=``){let i=e,a=r;for(let e of t){a=a?`${a}/${e}`:e;let t=h.get(a);t&&!n.create?i=t:(i=await i.getDirectoryHandle(e,{create:n.create??!1}),h.set(a,i))}return i}async function _(e,t,n={}){let r=m(t),i=r.split(`/`).filter(Boolean);if(i.length===0)return e;let a=await g(e,i.slice(0,-1),n),o=i[i.length-1];if(n.forceFile||o.includes(`.`))try{return await a.getFileHandle(o,{create:n.create??!1})}catch{}try{let e=await a.getDirectoryHandle(o,{create:n.create??!1}),t=r;return h.set(t,e),e}catch{return await a.getFileHandle(o,{create:n.create??!1})}}async function v(e,t,n={}){let r=m(t).split(`/`).filter(Boolean);return r.length===0?e:g(e,r,n)}async function y(e,t,n={}){let r=m(t).split(`/`).filter(Boolean);if(r.length===0)throw Error(`Cannot resolve '.' as file`);return(await g(e,r.slice(0,-1),n)).getFileHandle(r[r.length-1],{create:n.create??!1})}async function b(e,t){let n=m(t).split(`/`).filter(Boolean);if(n.length===0)throw Error(`Cannot get parent of root`);let r=n[n.length-1];return[await g(e,n.slice(0,-1)),r]}function x(e){return e.trim().replace(/\\/g,`/`).replace(/^\/+/,``).replace(/^\.\//,``)}function S(e){let t=/* @__PURE__ */ new Map,n=`repos/.git-modes`;function r(e){return e.replace(/\\/g,`/`.replace(/^\/+/,``))}async function i(){try{let r=await(await(await y(e,n)).getFile()).text(),i=JSON.parse(r);for(let[e,n]of i)t.set(e,n)}catch{}}let a=null;function o(){a===null&&(a=setTimeout(async()=>{a=null;try{let r=await(await y(e,n,{create:!0})).createWritable(),i=JSON.stringify([...t.entries()]);await r.write(new TextEncoder().encode(i)),await r.close()}catch{}},500))}let s=i(),c={async readFile(t,n){let r=await(await(await y(e,t)).getFile()).arrayBuffer(),i=typeof n==`string`?n:n?.encoding;return i===`utf8`||i===`utf-8`?new TextDecoder().decode(r):new Uint8Array(r)},async writeFile(n,i,a){let s=await(await y(e,n,{create:!0})).createWritable();typeof i==`string`&&(i=new TextEncoder().encode(i)),await s.write(i),await s.close();let c=typeof a==`object`&&a?a.mode:void 0,l=r(n);if(c!=null){let e=!!(c&73);t.set(l,e?33261:33188),o()}else t.has(l)||t.set(l,33188)},async mkdir(t){await v(e,t,{create:!0})},async rmdir(n){let[i,a]=await b(e,n);await i.removeEntry(a,{recursive:!0});let o=r(n)+`/`;for(let e of t.keys())(e===r(n)||e.startsWith(o))&&t.delete(e);h.invalidate(m(n))},async readdir(t){let n=await v(e,t),r=[];for await(let[e]of n.entries())r.push(e);return r},async stat(n){await s;let i;try{i=await _(e,n)}catch{let e=/* @__PURE__ */ Error(`ENOENT: no such file or directory, stat '${n}'`);throw e.code=`ENOENT`,e}if(i.kind===`directory`){let e=/* @__PURE__ */ new Date;return{isDirectory:()=>!0,isFile:()=>!1,isSymbolicLink:()=>!1,size:0,mtimeMs:Date.now(),mode:16877,ino:0,dev:0,nlink:1,uid:0,gid:0,ctime:e,mtime:e}}{let e=await i.getFile(),a=new Date(e.lastModified),o=r(n),s=t.get(o)??33188;return{isDirectory:()=>!1,isFile:()=>!0,isSymbolicLink:()=>!1,size:e.size,mtimeMs:e.lastModified,mode:s,ino:0,dev:0,nlink:1,uid:0,gid:0,ctime:a,mtime:a}}},async lstat(e){return c.stat(e)},async unlink(n){let[i,a]=await b(e,n);await i.removeEntry(a),t.delete(r(n))},async symlink(e,t){throw Error(`OPFS does not support symlinks`)},async readlink(e){return await c.readFile(e,`utf8`)}};return{promises:c}}const ee=S,C=`repos`;function w(e,r,i){if(e===`custom`&&r)return r;if(e===`public`)return`https://www.cors-anywhere.com`;let a=i||(typeof globalThis<`u`&&globalThis.location?globalThis.location:typeof self<`u`&&self.location?self.location:typeof window<`u`&&window.location?window.location:null),o=a?.protocol||``,s=o===`https:`||o===`https`||typeof a?.origin==`string`&&a.origin.startsWith(`https:`)||typeof a?.href==`string`&&a.href.startsWith(`https://`)?`https:`:`http:`,c=a?.host||``,l=a?.hostname||``,u=l===`localhost`||l===`127.0.0.1`||l===`::1`||l===`[::1]`||l===`0.0.0.0`||c.startsWith(`localhost:`)||c.startsWith(`127.0.0.1:`)||c.startsWith(`[::1]:`),d=a&&(a.protocol===`file:`||l&&(l.endsWith(`.github.io`)||l.endsWith(`.pages.dev`)));return c&&(u||!d)?`${s}//${c}/git-proxy`:`${s}//${n}:${t}/git-proxy`}async function T(){return p||=(async()=>{if(l=i,u=o,!d){let e=null;if(typeof navigator<`u`&&typeof navigator.storage?.getDirectory==`function`)try{e=await navigator.storage.getDirectory()}catch(e){console.warn(`OPFS is unavailable for git root, falling back to memory:`,e)}if(!e){let{getMemoryOpfsRoot:t}=await import(`./chunk-DGBnjngK.js`);e=t()}d=S(e),f=d.promises}})(),await p,{git:l,http:u,fs:d,pfs:f}}async function E(e){let t=await T();if(e){let n=S(e);return{git:t.git,http:t.http,fs:n,pfs:n.promises,repoDirFn:e=>`repos/${e}`}}return{...t,repoDirFn:O}}function D(e){return(e.replace(/\/+$/,``).split(`/`).pop()||`repo`).replace(/\.git$/,``)}function O(e){return`${C}/${e}`}async function k(e,t,n){try{await e.getConfig({fs:t,dir:n,path:`core.filemode`})!==!1&&await e.setConfig({fs:t,dir:n,path:`core.filemode`,value:!1})}catch(e){console.error(`Failed to set core.filemode=false:`,e)}}async function A(e,t){try{await e.mkdir(t)}catch{}}function j({token:e,username:t,password:n}={}){if(!e&&!t)return{};let r;e?r={Authorization:`Basic ${btoa(`${e}:x-oauth-basic`)}`}:t&&(r={Authorization:`Basic ${btoa(`${t}:${n||``}`)}`});let i=()=>e?{username:e,password:`x-oauth-basic`}:t?{username:t,password:n||``}:{cancel:!0},a=()=>({cancel:!0});return{...r?{headers:r}:{},onAuth:i,onAuthFailure:a}}async function M({url:t,branch:n,depth:r=20,corsProxy:i,name:a,token:o,username:s,password:c,groupRoot:l}){let{git:u,http:d,fs:f,pfs:p,repoDirFn:m}=await E(l),h=a||D(t),g=m(h);!i&&!e()&&(i=w(`local`)),await A(p,C),await A(p,g);let _=j({token:o,username:s,password:c});try{let e={fs:f,http:d,dir:g,url:t,singleBranch:!0,depth:r,corsProxy:i,..._};n&&(e.ref=n),await u.clone(e)}catch{try{let e={fs:f,http:d,dir:g,url:t,singleBranch:!0,depth:r,corsProxy:i,..._};n&&(e.ref=n),await u.fetch(e)}catch{try{await Q(p,g),await A(p,g);let e={fs:f,http:d,dir:g,url:t,singleBranch:!0,depth:r,corsProxy:i,..._};n&&(e.ref=n),await u.clone(e)}catch(e){throw Error(`Failed to clone/fetch ${t}: ${e instanceof Error?e.message:String(e)}`)}}}return await k(u,f,g),h}async function N({repo:e,ref:t,groupRoot:n}){let{git:r,fs:i,repoDirFn:a}=await E(n),o=a(e);return await r.checkout({fs:i,dir:o,ref:t,force:!0}),`Checked out ${t} in ${e}`}async function te({repo:e,name:t,checkout:n=!1,startPoint:r,groupRoot:i}){let{git:a,fs:o,repoDirFn:s}=await E(i),c=s(e),l={fs:o,dir:c,ref:t};return r&&(l.object=r),await a.branch(l),n?(await a.checkout({fs:o,dir:c,ref:t}),`Created and switched to branch ${t} in ${e}`):`Created branch ${t} in ${e}`}async function P({repo:e,groupRoot:t}){let{git:n,fs:r,repoDirFn:i}=await E(t),a=i(e);await k(n,r,a);let o=await n.statusMatrix({fs:r,dir:a});if(o.length===0)return`Empty repository.`;let s=[];for(let[e,t,n,r]of o){let i=``;if(t===0&&n===2&&r===2)i=`added`;else if(t===0&&n===2&&r===0)i=`new (unstaged)`;else if(t===1&&n===2&&r===2)i=`modified (staged)`;else if(t===1&&n===2&&r===1)i=`modified`;else if(t===1&&n===0&&r===0)i=`deleted`;else if(t===1&&n===1&&r===1)continue;else i=`[${t},${n},${r}]`;s.push(`${i}: ${e}`)}return s.length===0?`On branch ${await n.currentBranch({fs:r,dir:a})||`(detached HEAD)`}\nNothing to commit, working tree clean.`:`On branch ${await n.currentBranch({fs:r,dir:a})||`(detached HEAD)`}\n${s.join(`
|
|
2
2
|
`)}`}async function F({repo:e,ref:t,depth:n=10,groupRoot:r}){let{git:i,fs:a,repoDirFn:o}=await E(r),s={fs:a,dir:o(e),depth:n};t&&(s.ref=t);let c=await i.log(s);return c.length===0?`No commits found.`:c.map(e=>{let t=e.commit,n=(/* @__PURE__ */ new Date(t.author.timestamp*1e3)).toISOString();return`${e.oid} ${n} ${t.author.name} — ${t.message.trim().split(`
|
|
3
3
|
`)[0]}`}).join(`
|
|
4
4
|
`)}async function I({repo:e,ref1:t,ref2:n,groupRoot:r}){let{git:i,fs:a,repoDirFn:o}=await E(r),s=o(e),c=a.promises;if(await k(i,a,s),!t&&!n){let e=(await i.statusMatrix({fs:a,dir:s})).filter(([,e,t])=>e!==1||t!==1);if(e.length===0)return`No differences.`;let t=[];for(let[n,r,o]of e)try{if(r===0&&o===2){let e=(await R(c,s,n)).split(`
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as e,n as t,o as n,r}from"./chunk-YrgA1KKk.js";import{n as i}from"./chunk-
|
|
1
|
+
import{a as e,n as t,o as n,r}from"./chunk-YrgA1KKk.js";import{n as i}from"./chunk-I3mxEelq.js";import a from"node:fs";import o from"node:path";import s from"process";import{Buffer as c}from"buffer";import l from"node:http";import{tmpdir as u}from"node:os";function d(e={}){let t=e.agent!==!1,n;if(e.workspace)n=o.resolve(e.workspace);else{let e=o.join(u(),`shadow-claw`);a.mkdirSync(e,{recursive:!0}),n=a.mkdtempSync(o.join(e,`workspace-`))}let r=e.transfersDir||o.join(n,`transfers`),s={"send-message":async(n,r)=>{let i=n?.text??n?.prompt??n?.message;if(!i||typeof i!=`string`||!i.trim())throw Error(`Missing text or prompt parameter`);let a=r?.remotePeerId||`remote`,o=n.groupId||`peer:${a}`;if(!t)return e.verbose&&console.log(`[webrtc-listen] Message received from ${a} (agent disabled): "${i.trim()}"`),{success:!0,queued:!0,groupId:o,text:`Message received (agent disabled)`};e.verbose&&console.log(`[webrtc-listen] Prompt from ${a}: "${i.length>80?i.slice(0,77)+`...`:i}"`);let s=await(e.runAgent||(async(e,t)=>{let{runAgentRun:n}=await import(`./chunk-DtgZDsJA.js`);return n(e,t)}))(i.trim(),{workspace:e.workspace,cacheDir:e.cacheDir,model:e.model,provider:e.provider,apiKey:e.apiKey,systemPrompt:e.systemPrompt,systemPromptFile:e.systemPromptFile,tools:e.tools,allowInternet:e.allowInternet,group:o,quiet:!e.verbose,stream:!1});if(!s?.success)throw Error(s?.error||`Agent execution failed`);return{success:!0,reply:s.response,text:s.response,model:s.model,provider:s.provider,groupId:o}},prompt:async(e,t)=>s[`send-message`](e,t),"send-file":async(n,s)=>{let{fileName:l,data:u,prompt:d,groupId:f}=n||{};if(!l||typeof l!=`string`||!u)throw Error(`Missing fileName or data in send-file args`);let p=i(l);await a.promises.mkdir(r,{recursive:!0});let m=o.join(r,p),h=c.isBuffer(u)?u:c.from(u,`base64`);await a.promises.writeFile(m,h);let g=s?.remotePeerId||`remote`,_=f||`peer:${g}`;e.verbose&&console.log(`[webrtc-listen] Saved file "${p}" (${h.length} bytes) to ${m}`);let v;if(d&&typeof d==`string`&&d.trim()&&t){let t=await(e.runAgent||(async(e,t)=>{let{runAgentRun:n}=await import(`./chunk-DtgZDsJA.js`);return n(e,t)}))(`[Attached file: ${p} (${h.length} bytes) saved at ${m}]\n\n${d.trim()}`,{workspace:e.workspace,cacheDir:e.cacheDir,model:e.model,provider:e.provider,apiKey:e.apiKey,systemPrompt:e.systemPrompt,systemPromptFile:e.systemPromptFile,tools:e.tools,allowInternet:e.allowInternet,group:_,quiet:!e.verbose,stream:!1});t?.success&&(v=t.response)}return{success:!0,fileName:p,path:m,size:h.length,reply:v,text:v}},"transfer-file":async(e,t)=>s[`send-file`](e,t),"list-tools":async()=>{try{let{TOOL_DEFINITIONS:e}=await import(`./chunk-bKcol4wy.js`);return{tools:e.map(e=>e.name)}}catch{return{tools:[]}}},ping:async t=>({ok:!0,peerId:e.peerId||``,timestamp:Date.now()})};return s}function f(t,n){return new Promise((r,i)=>{let s=e(n);try{a.unlinkSync(s)}catch{}try{a.mkdirSync(o.dirname(s),{recursive:!0})}catch{}let c=l.createServer(async(e,n)=>{if(e.method===`GET`&&e.url===`/ping`)n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify({ok:!0,peerId:t.cliPeerId}));else if(e.method===`GET`&&e.url===`/clients`){let e=Array.from(t._connections.keys()).map(e=>{let n=t._peerCards?.get(e);return{clientId:e,peerId:e,deviceLabel:n?.name||`Browser Peer (${e})`,capabilities:n?.capabilities||[`webrtc`,`peerjs`],version:n?.version||`1.0.0`,transport:`webrtc`,connectedAt:Date.now(),lastSeen:Date.now()}});n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify({ok:!0,clients:e}))}else if(e.method===`POST`&&e.url===`/command`){let r=``;e.on(`data`,e=>r+=e),e.on(`end`,async()=>{try{let{targetPeerId:e,action:i,args:a,timeoutMs:o}=JSON.parse(r);if(!e){n.writeHead(400,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:`targetPeerId is required`}));return}let s=t._connections.get(e);if(!s){let r=Array.from(t._connections.keys());n.writeHead(503,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:`No DataChannel open to peer "${e}". Make sure the browser has connected to this listener first.`+(r.length?` Connected peers: ${r.join(`, `)}`:` No peers are currently connected.`)}));return}let c=`${Date.now()}-${Math.random().toString(36).slice(2)}`,l={id:c,type:`command:execute`,payload:{commandId:c,action:i,args:a||{}}},u=await new Promise((e,n)=>{let r=setTimeout(()=>{t._pendingIpc.delete(c),n(/* @__PURE__ */ Error(`Command "${i}" timed out after ${o||3e4}ms`))},o||3e4);t._pendingIpc.set(c,t=>{clearTimeout(r),e(t)});try{s.send(l)}catch(e){clearTimeout(r),t._pendingIpc.delete(c),n(e)}});n.writeHead(200,{"Content-Type":`application/json`}),n.end(JSON.stringify(u))}catch(e){n.writeHead(500,{"Content-Type":`application/json`}),n.end(JSON.stringify({error:e.message}))}})}else n.writeHead(404),n.end()});c.listen(s,()=>{console.log(`[webrtc-listen] IPC socket: ${s}`),r(c)}),c.on(`error`,i)})}async function p(e={}){let i=e.host||s.env.SHADOWCLAW_HOST||`127.0.0.1`,a=e.port?parseInt(String(e.port),10):parseInt(s.env.SHADOWCLAW_PORT||`8888`,10),o=e.path||`/`,c=!!(e.secure||e.https||[`1`,`true`,`yes`].includes((s.env.SHADOWCLAW_HTTPS||``).toLowerCase().trim())),l=!!(e.insecure===!1||[`0`,`false`,`no`].includes((s.env.SHADOWCLAW_TLS_REJECT_UNAUTHORIZED||``).toLowerCase().trim())),u=e.trustedPeer?Array.isArray(e.trustedPeer)?e.trustedPeer:[e.trustedPeer]:[],p=n(e.peerId,e.cacheDir);console.log(`WebRTC CLI Peer ID : ${p}`),console.log(`Signaling server : ${c?`wss`:`ws`}://${i}:${a}${o}`),c&&!l&&console.log(`TLS verification : disabled (self-signed cert allowed)`),u.length>0?console.log(`Trusted peers : ${u.join(`, `)}`):console.log(`Trusted peers : (any — add --trusted-peer <id> to restrict)`),console.log(``),console.log(`Add this CLI Peer ID as a trusted peer in the browser:`),console.log(` Settings → WebRTC/PeerJS → Trusted Peer IDs → "${p}"`),console.log(``);let m={...d({...e,peerId:p}),...e.handlers||{}},h=new t({host:i,port:a,path:o,secure:c,rejectUnauthorized:l,trustedPeerIds:u,peerId:e.peerId,cacheDir:e.cacheDir,renewPeerId:!!e.renewPeerId,verbose:!!e.verbose,handlers:m}),g=/* @__PURE__ */ new Map;h._pendingIpc=g;let _=h._setupConnection.bind(h);h._setupConnection=function(e,t){_(e,t),e.on(`data`,e=>{let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return}if(t&&typeof t==`object`&&t.type===`command:result`){let e=t.payload||{},n=g.get(e.commandId);n&&(g.delete(e.commandId),n(e))}})};let v=t=>{if(console.log(`
|
|
2
2
|
[webrtc-listen] Shutting down…`),r(e.cacheDir),t)try{t.close()}catch{}h.close(),s.exit(0)};try{await h.start();let t=await f(h,e.cacheDir);s.on(`SIGINT`,()=>v(t)),s.on(`SIGTERM`,()=>v(t)),console.log(`[webrtc-listen] Ready. Run commands with:
|
|
3
3
|
node bin/cli.mjs send --transport webrtc --client <browser-peer-id> "message"`),await new Promise(()=>{})}catch(t){r(e.cacheDir),console.error(`Error starting WebRTC listener: ${t.message}`),s.exitCode=1}}export{p as n,f as r,d as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./chunk-
|
|
1
|
+
import{n as e}from"./chunk-BdbEt6gM.js";const t=`.well-known/agent-skills/index.json`;function n(e){let n=e.trim();if(!n)throw Error(`URL cannot be empty`);let r=n;if(!r.startsWith(`http://`)&&!r.startsWith(`https://`)&&(r=`https://${r}`),r=r.replace(/\/+$/,``),r.endsWith(t)){let e=r.slice(0,-35).replace(/\/+$/,``);return{baseUrl:e,siteUrl:e,manifestUrl:r}}return{baseUrl:r,siteUrl:r,manifestUrl:`${r}/${t}`}}function r(e,t){if(!e)return``;try{return new URL(e,t).href}catch{return e}}function i(e,t){let n=JSON.parse(JSON.stringify(e));return Array.isArray(n.tools)&&(n.tools=n.tools.map(e=>({...e,url:r(e.url,t)}))),Array.isArray(n.scripts)&&(n.scripts=n.scripts.map(e=>({...e,url:r(e.url,t)}))),Array.isArray(n.skills)&&(n.skills=n.skills.map(e=>({...e,url:r(e.url,t),tools:Array.isArray(e.tools)?e.tools.map(e=>({...e,url:e.url?r(e.url,t):void 0})):void 0,scripts:Array.isArray(e.scripts)?e.scripts.map(e=>({...e,url:e.url?r(e.url,t):void 0})):void 0}))),n}async function a(t,n){if(!n||!n.startsWith(`sha256:`))return!0;let r=n.slice(7).trim().toLowerCase();if(!r)return!0;let i=typeof t==`string`?new TextEncoder().encode(t):t;return(await e(i)).toLowerCase()===r}async function o(e,t=globalThis.fetch){let{baseUrl:r,manifestUrl:a}=n(e),o=await t(a,{headers:{Accept:`application/json`}});if(!o.ok)throw Error(`Failed to fetch discovery manifest: HTTP ${o.status} ${o.statusText}`.trim());let s=await o.json();if(!s||typeof s!=`object`)throw Error(`Invalid discovery manifest: expected a JSON object`);return{manifest:i(s,a),siteUrl:r,manifestUrl:a}}export{a,i,n,r,o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{n as runWebRtcListenCommand}from"./chunk-NC8XsSSA.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{t as getAgentCore}from"./chunk-BiWLawPV.js";
|