shadow-claw 1.51.0 → 1.52.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.well-known/mcp/server-card.json +1 -1
- package/.well-known/mcp.json +1 -1
- package/README.md +10 -10
- package/dist/cli/build/build.js +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-DYq-orHK.js → chunk-BgTv9w0K.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-C6jii2Fl.js → chunk-d5hIhj8t.js} +1 -1
- 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-CjHS50HN.js} +10 -10
- package/dist/lib/{shadow-claw-pages-BFOcluFY.js.map → shadow-claw-pages-CjHS50HN.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/AGENTS.md +1 -1
- package/dist/public/README.md +10 -10
- 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/README.md +1 -1
- package/dist/public/docs/architecture/orchestrator.md +2 -2
- package/dist/public/docs/architecture/overview.md +3 -3
- package/dist/public/docs/architecture/worker-protocol.md +29 -29
- 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/local-models.md +1 -1
- package/dist/public/docs/subsystems/providers.md +12 -5
- package/dist/public/{downloadGroupFile-wkdhVgrZ.js → downloadGroupFile-Unq8_7D9.js} +1 -1
- package/dist/public/e2e/README.md +2 -2
- 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/llms.txt +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-T9oPpqxT.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-IW_LNEL_.js} +2 -2
- 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/cli/build/build.test.ts +95 -0
- package/src/cli/build/build.ts +5 -1
- package/src/cli/commands/agent.test.ts +134 -0
- package/src/cli/commands/backup.test.ts +85 -0
- package/src/cli/commands/clients.test.ts +32 -0
- package/src/cli/commands/mcp.test.ts +260 -1
- package/src/cli/commands/send-file.test.ts +73 -0
- package/src/cli/commands/send.test.ts +58 -0
- package/src/cli/commands/tasks.test.ts +78 -0
- package/src/cli/commands/webrtc-listen.test.ts +74 -0
- package/src/cli/tools/assert-version-bump.test.ts +30 -1
- package/src/cli/tools/file-search-replace.test.ts +33 -1
- package/src/cli/tools/patch-service-worker-trusted-types.test.ts +24 -1
- package/src/cli/tools/touch-nojekyll.test.ts +12 -0
- package/src/cli/tools/version.test.ts +109 -5
- package/src/cli/utils/agent-core.test.ts +40 -0
- package/src/cli/utils/control-client.test.ts +239 -2
- package/src/cli/utils/load-workspace-config.test.ts +63 -0
- package/src/cli/utils/local-models.test.ts +98 -0
- package/src/cli/utils/progress-bar.test.ts +41 -2
- package/src/cli/utils/resolve-cache-dir.test.ts +61 -0
- package/src/cli/utils/resolve-project-root.test.ts +17 -0
- package/src/cli/utils/stdin.test.ts +38 -0
- package/src/cli/utils/stdio.test.ts +51 -1
- package/src/cli/utils/suppress-warnings.test.ts +9 -0
- package/src/cli/utils/webrtc-control-client.test.ts +569 -0
- package/src/common/utils/frontmatter.test.ts +117 -0
- package/src/components/common/help/providers.test.ts +67 -0
- package/src/components/common/shadow-claw-provider-model-picker/shadow-claw-provider-model-picker.test.ts +121 -0
- package/src/components/settings/shadow-claw-accounts/shadow-claw-accounts.test.ts +131 -0
- package/src/components/settings/shadow-claw-git/shadow-claw-git.test.ts +130 -0
- package/src/components/settings/shadow-claw-integrations/connection-test-auth.test.ts +12 -0
- package/src/components/settings/shadow-claw-integrations/shadow-claw-integrations.test.ts +328 -0
- 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 +565 -8
- package/src/components/settings/shadow-claw-llm/shadow-claw-llm.ts +15 -5
- package/src/components/settings/shadow-claw-mcp-remote/shadow-claw-mcp-remote.test.ts +459 -0
- package/src/components/settings/shadow-claw-networking/shadow-claw-networking.test.ts +88 -0
- package/src/components/settings/shadow-claw-notifications/shadow-claw-notifications.test.ts +92 -0
- package/src/components/settings/shadow-claw-peerjs/shadow-claw-peerjs.test.ts +127 -0
- package/src/components/settings/shadow-claw-storage/shadow-claw-storage.test.ts +173 -0
- package/src/components/settings/shadow-claw-task-server/shadow-claw-task-server.test.ts +62 -0
- package/src/components/settings/shadow-claw-webvm/shadow-claw-webvm.test.ts +104 -0
- package/src/components/shadow-claw/shadow-claw.test.ts +112 -0
- package/src/components/shadow-claw-a2ui/shadow-claw-a2ui.test.ts +109 -0
- 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/components/shadow-claw-conversations/shadow-claw-conversations.test.ts +361 -0
- package/src/components/shadow-claw-dialog/shadow-claw-dialog.test.ts +76 -0
- package/src/components/shadow-claw-file-viewer/shadow-claw-file-viewer.test.ts +307 -0
- package/src/components/shadow-claw-files/shadow-claw-files.test.ts +398 -1
- package/src/components/shadow-claw-pages/shadow-claw-pages.test.ts +85 -0
- package/src/components/shadow-claw-pages/shadow-claw-pages.ts +2 -1
- package/src/components/shadow-claw-pdf-viewer/shadow-claw-pdf-viewer.test.ts +229 -0
- package/src/components/shadow-claw-settings/shadow-claw-settings.test.ts +233 -0
- package/src/components/shadow-claw-tasks/shadow-claw-tasks.test.ts +223 -1
- package/src/components/shadow-claw-toast/shadow-claw-toast.test.ts +79 -0
- package/src/components/shadow-claw-tools/shadow-claw-tools.test.ts +229 -1
- 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/src/server/logger.test.ts +57 -0
- package/src/server/peer.test.ts +47 -0
- package/src/server/routes/gemini.test.ts +244 -0
- package/src/server/server-peer.test.ts +245 -11
- package/src/server/services/llamafile-manager.test.ts +668 -0
- package/src/share-target/pending-shares.test.ts +90 -0
- package/src/shell/fs.test.ts +125 -0
- package/src/shell/shell.test.ts +8 -0
- package/src/subsystems/git/credentials.test.ts +260 -0
- package/src/subsystems/git/git.test.ts +64 -0
- package/src/subsystems/providers/executeNativeAiTask.test.ts +78 -0
- package/src/subsystems/providers/utils/parseLocalModelToolCall.test.ts +57 -0
- package/src/worker/tools/builtin-ai/builtin-ai.test.ts +88 -0
- package/src/worker/tools/email/email.test.ts +358 -0
- package/src/worker/tools/email/utils/resolveIntegrationEmailAuth.test.ts +120 -0
- package/src/worker/tools/email/utils/resolveUniqueAttachmentPath.test.ts +80 -0
- package/src/worker/tools/fetch-file/fetch-file.test.ts +111 -0
- package/src/worker/tools/fetch-url/fetch-url.test.ts +295 -0
- 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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://modelcontextprotocol.io/schemas/server-card/v1.json",
|
|
3
3
|
"name": "shadow-claw",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.52.1",
|
|
5
5
|
"description": "Multi-runtime AI assistant with local and remote LLM orchestration, Web Workers, OPFS storage, and agentic tool execution.",
|
|
6
6
|
"title": "ShadowClaw MCP Server",
|
|
7
7
|
"websiteUrl": "https://xt-ml.github.io/shadow-claw/",
|
package/.well-known/mcp.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://modelcontextprotocol.io/schemas/server-card/v1.json",
|
|
3
3
|
"name": "shadow-claw",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.52.1",
|
|
5
5
|
"description": "Multi-runtime AI assistant with local and remote LLM orchestration, Web Workers, OPFS storage, and agentic tool execution.",
|
|
6
6
|
"title": "ShadowClaw MCP Server",
|
|
7
7
|
"websiteUrl": "https://xt-ml.github.io/shadow-claw/",
|
package/README.md
CHANGED
|
@@ -38,7 +38,7 @@ For external AI hosts, ShadowClaw provides multiple ways to interact with the br
|
|
|
38
38
|
npx shadow-claw dev --open
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
Open Settings, configure your preferred provider (or run with the default
|
|
41
|
+
Open Settings, configure your preferred provider (or run with the default Transformers.js or OpenRouter), and start chatting.
|
|
42
42
|
|
|
43
43
|
### 2. Run Headless Server-Side Agent directly from Terminal
|
|
44
44
|
|
|
@@ -119,7 +119,7 @@ npm install && npm run dev # Dev server → http://localhost:8888
|
|
|
119
119
|
## Core Capabilities
|
|
120
120
|
|
|
121
121
|
- **Client-Side Worker Orchestration:** The frontend agent decision loop, system prompt building, and tool execution run off the main thread in a dedicated Web Worker to keep the UI smooth and responsive.
|
|
122
|
-
- **In-Browser Inference by Default:** Uses
|
|
122
|
+
- **In-Browser Inference by Default:** Uses Transformers.js by default in the browser client (`DEFAULT_PROVIDER = "transformers_js_browser"`) with guided onboarding. Prompt API (`window.LanguageModel`) and integrated polyfills (`prompt-api-polyfill` and `built-in-ai-task-apis-polyfills`) remain fully supported when manually selected.
|
|
123
123
|
- **Headless Server-Side Agent Client:** Execute the same tool-use loop, prompt assembly, and declarative skill tool chains directly from the terminal or CI/CD pipelines via `shadow-claw agent` (`init`, `model`, `skills`, `tools`, `tool`, `skill`, `import`, `run`), with native host OS shell access (`node:child_process`), SQLite persistence (`node:sqlite`), real filesystem access (`NodeFsDirectoryHandle`), and in-process offline model execution via Transformers.js ONNX and Llamafile (featuring visual download progress bars and streaming) or cloud providers.
|
|
124
124
|
- **Configurable Multi-Model Routing:** Route queries to Cloud providers (OpenRouter, Anthropic, Gemini, OpenAI, AWS Bedrock), local engines (Ollama, Llamafile, Transformers.js with on-demand Hugging Face model downloading and disk caching), or in-browser WebGPU models (LiteRT-LM).
|
|
125
125
|
- **Dual-Dispatch Sandboxing & Storage:** Client-side compute via sandboxed JavaScript and `just-bash` (or WebVM Alpine Linux) backed by Origin Private File System (OPFS) and IndexedDB; paired with host-native Node filesystem handles and SQLite database persistence on the server side.
|
|
@@ -201,11 +201,11 @@ Last-active conversation persists across reloads. On first launch, a default "Ma
|
|
|
201
201
|
|
|
202
202
|
ShadowClaw supports multiple LLM providers with a unified adapter pattern and configurable defaults:
|
|
203
203
|
|
|
204
|
-
| Category | Examples
|
|
205
|
-
| :---------- |
|
|
206
|
-
| **Cloud** | OpenRouter, OpenAI, Anthropic, Google Gemini, AWS Bedrock, Vertex AI
|
|
207
|
-
| **Local** | Ollama, Llamafile, Agentfile, Mesh LLM, Transformers.js
|
|
208
|
-
| **Browser** | Prompt API (`window.LanguageModel`), LiteRT
|
|
204
|
+
| Category | Examples | Notes |
|
|
205
|
+
| :---------- | :--------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
206
|
+
| **Cloud** | OpenRouter, OpenAI, Anthropic, Google Gemini, AWS Bedrock, Vertex AI | Defaults out-of-the-box to OpenRouter (`openrouter/free`); API key required |
|
|
207
|
+
| **Local** | Ollama, Llamafile, Agentfile, Mesh LLM, Transformers.js | Runs on local server or in-process; automatic Hugging Face model downloading & LocalBinaryDriver execution |
|
|
208
|
+
| **Browser** | Transformers.js (Browser), Prompt API (`window.LanguageModel`), LiteRT | Defaults out-of-the-box to Transformers.js (`onnx-community/Qwen3-0.6B-ONNX`); in-browser WebGPU inference with transparent CPU/WASM fallback |
|
|
209
209
|
|
|
210
210
|
**Provider & Model Hierarchy:**
|
|
211
211
|
|
|
@@ -215,14 +215,14 @@ ShadowClaw resolves default LLM providers and models via a strict precedence cas
|
|
|
215
215
|
2. **Environment Variable:** `SHADOW_CLAW_PROVIDER` / `SHADOW_CLAW_MODEL` (or provider-specific keys like `OPENROUTER_API_KEY`, `HUGGINGFACE_API_KEY`, `GEMINI_API_KEY`, `ANTHROPIC_API_KEY`)
|
|
216
216
|
3. **Database Configuration:** `CONFIG_KEYS.PROVIDER` / `CONFIG_KEYS.MODEL`
|
|
217
217
|
4. **Declarative Workspace Config:** `settings.defaultProvider` and `settings.defaultModel` in `shadow-claw.config.json`
|
|
218
|
-
5. **Default Fallback:** Defaults to
|
|
218
|
+
5. **Default Fallback:** Defaults to Transformers.js (`transformers_js_browser` with model `onnx-community/Qwen3-0.6B-ONNX`) in browser contexts (with guided onboarding), and OpenRouter (`openrouter` with model `openrouter/free`) for headless CLI agent execution.
|
|
219
219
|
|
|
220
220
|
**Provider Highlights:**
|
|
221
221
|
|
|
222
|
-
- **In-Browser Inference Default:** Defaults to
|
|
222
|
+
- **In-Browser Inference Default:** Defaults to Transformers.js (`transformers_js_browser`) with model `onnx-community/Qwen3-0.6B-ONNX` and guided onboarding, enabling private, local, zero-configuration in-browser execution with WebGPU acceleration and transparent CPU/WASM fallback.
|
|
223
223
|
- **OpenRouter Default for Headless CLI:** Headless execution via `shadow-claw agent` defaults out-of-the-box to `openrouter` with `openrouter/free`.
|
|
224
224
|
- **Local Models & Hugging Face Hub:** Automatic on-demand downloading from Hugging Face Hub, disk caching under `assets/cache/transformers.js` (and `assets/cache/llamafile` for Llamafile/Agentfile binaries), interactive paginated and searchable model browsing during `agent init`, and pre-warming endpoints (`POST /transformers-js-proxy/prewarm`). Unified local model tool calling (`parseLocalModelToolCalls`) supports multi-tool calling, Gemma 4 syntax, streaming tool-call suppression, and defensive schema sanitization across in-process Node executors and server proxy routes using OpenAI function schemas formatted directly for tokenizer chat templates. The `LocalBinaryDriver` architecture supports `.llamafile` and `.agentfile` execution with built-in tool schema catalogs and proxy forwarding. See [Local Models Guide](docs/subsystems/local-models.md).
|
|
225
|
-
- **Prompt API & Polyfill Fallbacks:**
|
|
225
|
+
- **Prompt API & Polyfill Fallbacks:** When Prompt API (`prompt_api`) is manually selected in the browser client, uses native `window.LanguageModel` when available, with automatic degradation to local Transformers.js via `prompt-api-polyfill` and `built-in-ai-task-apis-polyfills` when the native Prompt API is unavailable.
|
|
226
226
|
- **Hardware Feature Probing & Fallbacks:** Probes WebGPU adapter capabilities (`shader-f16`), retries during downloads, and dynamically falls back to WebAssembly CPU (`device: "wasm"`, `dtype: "q4"`) if WebGPU initialization fails or software emulation is detected.
|
|
227
227
|
- **Streaming & Resilience:** Streaming responses across OpenAI and Anthropic formats; adaptive rate limiting with `retry-after` handling and 30-second auto-closing, ARIA-accessible countdown dialogs for fatal errors and throttling.
|
|
228
228
|
|
package/dist/cli/build/build.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{t as runBuild}from"../chunk-
|
|
1
|
+
export{t as runBuild}from"../chunk-BgTv9w0K.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import e from"node:fs";import t from"node:path";import n from"node:process";import r from"node:readline/promises";import i from"node:tty";function a(e,t=1){if(!Number.isFinite(e)||e<=0)return`0 B`;let n=1024,r=t<0?0:t,i=[`B`,`KB`,`MB`,`GB`,`TB`],a=Math.floor(Math.log(e)/Math.log(n)),o=Math.min(a,i.length-1);return`${parseFloat((e/n**o).toFixed(r))} ${i[o]}`}function o(e={}){let{modelId:t=`model`,stream:r=n.stderr,barWidth:i=24,isTTY:o=!!(r&&typeof r==`object`&&r.isTTY),enabled:s=!0}=e;if(!s)return{update:()=>{},finish:()=>{},fail:e=>{r?.write&&r.write(`${e||`✖ Failed to download ${t}.`}\n`)}};let c=[],l=/* @__PURE__ */ new Map,u=!1;function d(e){let t=Math.round(Math.max(0,Math.min(1,e))*i),n=i-t;return`[`+`=`.repeat(t)+(t<i?`>`:``)+` `.repeat(Math.max(0,n-+(t<i)))+`]`}function f(e,t=0,n=0){let i=l.get(e);return i||(i={lineIndex:c.length,lastPct:-1,lastRenderedTime:0,loaded:t,total:n,isDone:!1},l.set(e,i),c.push(e),o&&c.length>1&&r?.write&&r.write(`
|
|
2
|
-
`)),i}function p(e,t){if(!o||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,a=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${a}\x1b[${s}B\r`):r.write(`\r\x1b[2K${a}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!o&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(o){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}}else if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(o){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${a(l)} / ${a(u)})`:l>0&&(i=` (${a(l)})`);let o=n?` [${n}]`:``;p(n,`Downloading ${t}${o} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${a(l)} / ${a(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}}else if(e.status===`done`){let i=l.get(n);if(i){if(i.isDone=!0,o){let e=d(1),r=i.total||i.loaded,o=r>0?` (${a(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${o}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`)}else!o&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const s=[{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model (Default, 128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model (128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B GQA — chat only (template has no tool support)`,contextLength:32e3,supportsTools:!1,recommended:!1}],c=`onnx-community/gemma-4-E2B-it-ONNX`,l=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0}];function u(e){if(!e)return;let t=s.find(t=>t.id===e||t.id.toLowerCase()===e.toLowerCase());if(t)return t.supportsTools;let n=l.find(t=>t.id===e||t.fileName===e||t.id.toLowerCase()===e.toLowerCase()||t.fileName.toLowerCase()===e.toLowerCase());if(n)return n.supportsTools}function d(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function f(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function p(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||l.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function m(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=f(i);if(!e.existsSync(o))return!1;let s=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),c=s?s.fileName:t.basename(r),u=c.endsWith(`.llamafile`)?c:`${c}.llamafile`,d=t.join(o,u),p=t.join(o,`${u}.part`);try{if(e.existsSync(p))return!1;if(e.existsSync(d))return e.statSync(d).size>0}catch{}return!1}function h(e){return e?t.resolve(e,`agentfile`):t.resolve(n.cwd(),`assets/cache/agentfile`)}function g(e){return!e||typeof e!=`string`?!1:e.endsWith(`.agentfile`)||e.includes(`agentfile`)}function _(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=[h(i),f(i)],s=t.basename(r),c=s.endsWith(`.agentfile`)?s:`${s}.agentfile`;for(let n of o){if(!e.existsSync(n))continue;let r=t.join(n,c),i=t.join(n,`${c}.part`);try{if(e.existsSync(i))return!1;if(e.existsSync(r)&&e.statSync(r).size>0)return!0}catch{}}return!1}function v(n){let r=!1,i=!1;function a(n){let o;try{o=e.readdirSync(n,{withFileTypes:!0})}catch{return}for(let e of o)if(e.isDirectory())a(t.join(n,e.name));else if(e.isFile()){let t=e.name;(t.endsWith(`.part`)||t.includes(`.tmp`))&&(r=!0),t.endsWith(`.onnx`)&&!t.endsWith(`.part`)&&!t.includes(`.tmp`)&&(i=!0)}}return a(n),{hasPartFiles:r,hasOnnxFiles:i}}function y(n,r){if(g(n))return _(n,r);if(p(n))return m(n,r);let i=d(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)){let{hasPartFiles:e,hasOnnxFiles:n}=v(t);if(!e&&n)return!0}}catch{}return!1}function b(e){return s.map(t=>({...t,cached:y(t.id,e)}))}function x(e){return l.map(t=>({...t,cached:m(t.fileName,e)}))}async function S(e={}){let t=e.limit??100,n=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=${t}`;try{let t=await fetch(n,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!t.ok)return[];let r=await t.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}let a=i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:y(t,e.cacheDir)}));if(e.page!==void 0||e.pageSize!==void 0){let t=Math.max(1,e.page??1),n=Math.max(1,e.pageSize??25),r=(t-1)*n;a=a.slice(r,r+n)}return a}catch{return[]}}async function C(r,i={}){let{cacheDir:a,verbose:s=!1,isTTY:c,stream:u=n.stderr,progress:d,noProgress:p,quiet:m=!1,abortSignal:_}=i,v=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),y=g(r),b,x;v?(b=v.url,x=v.fileName):r.startsWith(`http://`)||r.startsWith(`https://`)?(b=r,x=t.basename(new URL(r).pathname)):y?(x=t.basename(r).endsWith(`.agentfile`)?t.basename(r):`${t.basename(r)}.agentfile`,b=`https://huggingface.co/mozilla-ai/agentfile/resolve/main/${x}`):(x=t.basename(r).endsWith(`.llamafile`)?t.basename(r):`${t.basename(r)}.llamafile`,b=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${x}`);let S=y?h(a):f(a);e.mkdirSync(S,{recursive:!0});let C=t.join(S,x),w=t.join(S,`${x}.part`);if(e.existsSync(C))try{if(e.statSync(C).size>0)return{success:!0,modelId:r,path:C}}catch{}let T=0;if(e.existsSync(w))try{let t=e.statSync(w);t.size>0&&(T=t.size)}catch{T=0}let E=o({modelId:x,stream:u,isTTY:c,enabled:!m&&d!==!1&&!p}),D;try{s&&u?.write&&u.write(`[Llamafile] Downloading ${b}...\n`);let t={"User-Agent":`ShadowClaw-CLI`,"Accept-Encoding":`identity`};T>0&&(t.Range=`bytes=${T}-`);let n=i.fetch||globalThis.fetch,a=await n(b,{headers:t,redirect:`follow`,signal:_});if(a.status===416&&T>0){try{e.existsSync(w)&&e.unlinkSync(w)}catch{}T=0,delete t.Range,a=await n(b,{headers:t,redirect:`follow`,signal:_})}if(!a.ok&&a.status!==206)throw Error(`Failed to download ${b}: HTTP ${a.status} ${a.statusText}`);let o=a.status===206,c=0,l=0;if(o){let t=(a.headers?.get?.(`content-range`))?.match(/\/\s*(\d+)\s*$/),n=parseInt(a.headers?.get?.(`content-length`)||`0`,10);c=t?parseInt(t[1],10):T+n,l=T,D=e.createWriteStream(w,{flags:`a`})}else T=0,c=parseInt(a.headers?.get?.(`content-length`)||`0`,10),l=0,D=e.createWriteStream(w,{flags:`w`});if(l>0&&E.update({status:`progress`,file:x,loaded:l,total:c,progress:c>0?l/c*100:void 0}),a.body){let{Readable:e}=await import(`node:stream`),t;if(typeof e.fromWeb==`function`&&typeof a.body.getReader==`function`)t=e.fromWeb(a.body);else if(typeof a.body[Symbol.asyncIterator]==`function`)t=a.body;else{let e=Buffer.from(await a.arrayBuffer());D.write(e),l+=e.length}if(t)for await(let e of t){let t=Buffer.isBuffer(e)?e:Buffer.from(e);D.write(t),l+=t.length,E.update({status:`progress`,file:x,loaded:l,total:c,progress:c>0?l/c*100:void 0})}}if(D){let e=D;e.end(),await new Promise((t,n)=>{e.on(`finish`,t),e.on(`error`,n)})}e.renameSync(w,C);try{e.chmodSync(C,493)}catch{}return E.finish(),{success:!0,modelId:r,path:C}}catch(e){try{D?.end()}catch{}let t=e instanceof Error?e.message:String(e);return E.fail(`✖ Error downloading ${x}: ${t}`),{success:!1,modelId:r,error:t}}}async function w(e,t={}){if(p(e)||g(e))return C(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:s,progress:c,noProgress:l,quiet:u=!1}=t,d=s;if(!d){let{getAgentCore:e}=await import(`./chunk-BtJYj7vB.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);d=t.createTransformersRuntimeService()}let f=o({modelId:e,stream:a,isTTY:i,enabled:!u&&c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await d.prewarmModel({modelId:e,verbose:r,cacheDir:t.cacheDir,onProgress:e=>{f.update(e)}}),f.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return f.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function T(a={}){let o=t.resolve(a.contentRoot||n.cwd()),s=t.resolve(a.workspaceDir||o),l=a.cacheDir,u=a.onExit||(e=>n.exit(e)),d=a.stdin||n.stdin,f=a.stdout||n.stderr,h=!1,v=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;v=e.openSync(t,`r`),d=new i.ReadStream(v),f=n.stderr.isTTY?n.stderr:n.stdout,h=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),f=n.stderr.isTTY?n.stderr:n.stdout,h=!0}catch{}}let b=r.createInterface({input:d,output:f}),x=!1,T=()=>{if(!x){x=!0,f.write(`
|
|
2
|
+
`)),i}function p(e,t){if(!o||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,a=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${a}\x1b[${s}B\r`):r.write(`\r\x1b[2K${a}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!o&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(o){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}}else if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(o){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${a(l)} / ${a(u)})`:l>0&&(i=` (${a(l)})`);let o=n?` [${n}]`:``;p(n,`Downloading ${t}${o} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${a(l)} / ${a(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}}else if(e.status===`done`){let i=l.get(n);if(i){if(i.isDone=!0,o){let e=d(1),r=i.total||i.loaded,o=r>0?` (${a(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${o}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`)}else!o&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;o&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const s=[{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model (Default, 128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model (128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B GQA — chat only (template has no tool support)`,contextLength:32e3,supportsTools:!1,recommended:!1}],c=`onnx-community/gemma-4-E2B-it-ONNX`,l=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0}];function u(e){if(!e)return;let t=s.find(t=>t.id===e||t.id.toLowerCase()===e.toLowerCase());if(t)return t.supportsTools;let n=l.find(t=>t.id===e||t.fileName===e||t.id.toLowerCase()===e.toLowerCase()||t.fileName.toLowerCase()===e.toLowerCase());if(n)return n.supportsTools}function d(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function f(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function p(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||l.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function m(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=f(i);if(!e.existsSync(o))return!1;let s=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),c=s?s.fileName:t.basename(r),u=c.endsWith(`.llamafile`)?c:`${c}.llamafile`,d=t.join(o,u),p=t.join(o,`${u}.part`);try{if(e.existsSync(p))return!1;if(e.existsSync(d))return e.statSync(d).size>0}catch{}return!1}function h(e){return e?t.resolve(e,`agentfile`):t.resolve(n.cwd(),`assets/cache/agentfile`)}function g(e){return!e||typeof e!=`string`?!1:e.endsWith(`.agentfile`)||e.includes(`agentfile`)}function _(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=[h(i),f(i)],s=t.basename(r),c=s.endsWith(`.agentfile`)?s:`${s}.agentfile`;for(let n of o){if(!e.existsSync(n))continue;let r=t.join(n,c),i=t.join(n,`${c}.part`);try{if(e.existsSync(i))return!1;if(e.existsSync(r)&&e.statSync(r).size>0)return!0}catch{}}return!1}function v(n){let r=!1,i=!1;function a(n){let o;try{o=e.readdirSync(n,{withFileTypes:!0})}catch{return}for(let e of o)if(e.isDirectory())a(t.join(n,e.name));else if(e.isFile()){let t=e.name;(t.endsWith(`.part`)||t.includes(`.tmp`))&&(r=!0),t.endsWith(`.onnx`)&&!t.endsWith(`.part`)&&!t.includes(`.tmp`)&&(i=!0)}}return a(n),{hasPartFiles:r,hasOnnxFiles:i}}function y(n,r){if(g(n))return _(n,r);if(p(n))return m(n,r);let i=d(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)){let{hasPartFiles:e,hasOnnxFiles:n}=v(t);if(!e&&n)return!0}}catch{}return!1}function b(e){return s.map(t=>({...t,cached:y(t.id,e)}))}function x(e){return l.map(t=>({...t,cached:m(t.fileName,e)}))}async function S(e={}){let t=e.limit??100,n=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=${t}`;try{let t=await fetch(n,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!t.ok)return[];let r=await t.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}let a=i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:y(t,e.cacheDir)}));if(e.page!==void 0||e.pageSize!==void 0){let t=Math.max(1,e.page??1),n=Math.max(1,e.pageSize??25),r=(t-1)*n;a=a.slice(r,r+n)}return a}catch{return[]}}async function C(r,i={}){let{cacheDir:a,verbose:s=!1,isTTY:c,stream:u=n.stderr,progress:d,noProgress:p,quiet:m=!1,abortSignal:_}=i,v=l.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),y=g(r),b,x;v?(b=v.url,x=v.fileName):r.startsWith(`http://`)||r.startsWith(`https://`)?(b=r,x=t.basename(new URL(r).pathname)):y?(x=t.basename(r).endsWith(`.agentfile`)?t.basename(r):`${t.basename(r)}.agentfile`,b=`https://huggingface.co/mozilla-ai/agentfile/resolve/main/${x}`):(x=t.basename(r).endsWith(`.llamafile`)?t.basename(r):`${t.basename(r)}.llamafile`,b=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${x}`);let S=y?h(a):f(a);e.mkdirSync(S,{recursive:!0});let C=t.join(S,x),w=t.join(S,`${x}.part`);if(e.existsSync(C))try{if(e.statSync(C).size>0)return{success:!0,modelId:r,path:C}}catch{}let T=0;if(e.existsSync(w))try{let t=e.statSync(w);t.size>0&&(T=t.size)}catch{T=0}let E=o({modelId:x,stream:u,isTTY:c,enabled:!m&&d!==!1&&!p}),D;try{s&&u?.write&&u.write(`[Llamafile] Downloading ${b}...\n`);let t={"User-Agent":`ShadowClaw-CLI`,"Accept-Encoding":`identity`};T>0&&(t.Range=`bytes=${T}-`);let n=i.fetch||globalThis.fetch,a=await n(b,{headers:t,redirect:`follow`,signal:_});if(a.status===416&&T>0){try{e.existsSync(w)&&e.unlinkSync(w)}catch{}T=0,delete t.Range,a=await n(b,{headers:t,redirect:`follow`,signal:_})}if(!a.ok&&a.status!==206)throw Error(`Failed to download ${b}: HTTP ${a.status} ${a.statusText}`);let o=a.status===206,c=0,l=0;if(o){let t=(a.headers?.get?.(`content-range`))?.match(/\/\s*(\d+)\s*$/),n=parseInt(a.headers?.get?.(`content-length`)||`0`,10);c=t?parseInt(t[1],10):T+n,l=T,D=e.createWriteStream(w,{flags:`a`})}else T=0,c=parseInt(a.headers?.get?.(`content-length`)||`0`,10),l=0,D=e.createWriteStream(w,{flags:`w`});if(l>0&&E.update({status:`progress`,file:x,loaded:l,total:c,progress:c>0?l/c*100:void 0}),a.body){let{Readable:e}=await import(`node:stream`),t;if(typeof e.fromWeb==`function`&&typeof a.body.getReader==`function`)t=e.fromWeb(a.body);else if(typeof a.body[Symbol.asyncIterator]==`function`)t=a.body;else{let e=Buffer.from(await a.arrayBuffer());D.write(e),l+=e.length}if(t)for await(let e of t){let t=Buffer.isBuffer(e)?e:Buffer.from(e);D.write(t),l+=t.length,E.update({status:`progress`,file:x,loaded:l,total:c,progress:c>0?l/c*100:void 0})}}if(D){let e=D;e.end(),await new Promise((t,n)=>{e.on(`finish`,t),e.on(`error`,n)})}e.renameSync(w,C);try{e.chmodSync(C,493)}catch{}return E.finish(),{success:!0,modelId:r,path:C}}catch(e){try{D?.end()}catch{}let t=e instanceof Error?e.message:String(e);return E.fail(`✖ Error downloading ${x}: ${t}`),{success:!1,modelId:r,error:t}}}async function w(e,t={}){if(p(e)||g(e))return C(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:s,progress:c,noProgress:l,quiet:u=!1}=t,d=s;if(!d){let{getAgentCore:e}=await import(`./chunk-BkLnHJeo.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);d=t.createTransformersRuntimeService()}let f=o({modelId:e,stream:a,isTTY:i,enabled:!u&&c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await d.prewarmModel({modelId:e,verbose:r,cacheDir:t.cacheDir,onProgress:e=>{f.update(e)}}),f.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return f.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function T(a={}){let o=t.resolve(a.contentRoot||n.cwd()),s=t.resolve(a.workspaceDir||o),l=a.cacheDir,u=a.onExit||(e=>n.exit(e)),d=a.stdin||n.stdin,f=a.stdout||n.stderr,h=!1,v=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;v=e.openSync(t,`r`),d=new i.ReadStream(v),f=n.stderr.isTTY?n.stderr:n.stdout,h=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),f=n.stderr.isTTY?n.stderr:n.stdout,h=!0}catch{}}let b=r.createInterface({input:d,output:f}),x=!1,T=()=>{if(!x){x=!0,f.write(`
|
|
3
3
|
Operation cancelled.
|
|
4
4
|
`);try{b.close()}catch{}u(130)}};b.on(`SIGINT`,T),d&&typeof d.on==`function`&&d!==n.stdin&&d.on(`SIGINT`,T);let E=()=>T();n.on(`SIGINT`,E);let D=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&T()};d&&typeof d.on==`function`&&d.on(`data`,D);try{let r=`transformers_js_local`,i=c,u=/* @__PURE__ */ new Map;for(;!x;){f.write(`
|
|
5
5
|
ShadowClaw CLI Agent — Model Selection:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{t as fetchDiscoveryManifest}from"./chunk-DJ_LeQtz.js";
|
|
@@ -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-DQRu-9wO.js";import{C as g,D as _,E as v,S as y,T as ee,b,c as te,f as ne,m as re,n as ie,o as x,p as ae,r as S,u as oe,v as se,w as ce,x as le,y as ue}from"./chunk-C79eIU-4.js";import{n as de,t as fe}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-BdbEt6gM.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-DFgSiYMW.js";import{a as Te,i as Ee,n as De,o as Oe,t as ke}from"./chunk-CDw214Zi.js";import{t as Ae}from"./chunk-mjuZTMQB.js";import{n as je,r as Me,t as Ne}from"./chunk-JGMWNwO9.js";import{n as Pe,t as Fe}from"./chunk-BU-vs0np.js";import{r as Ie,t as Le}from"./chunk-DPoeMCv9.js";import{t as Re}from"./chunk-CgadgaEw.js";import{a as ze,c as Be,d as Ve,f as He,h as Ue,i as We,l as Ge,m as Ke,n as qe,o as Je,p as Ye,r as Xe,s as Ze,t as Qe,u as $e}from"./chunk-ZJVBMLyZ.js";import{t as et}from"./chunk-CeGMLWmo.js";import{n as tt,r as nt,t as rt}from"./chunk-CLS1vG53.js";import{r as it}from"./chunk-BbpS-dVt.js";import{A as at,B as ot,C as st,D as ct,E as lt,F as ut,H as dt,I as ft,L as pt,M as mt,N as ht,O as gt,P as _t,S as vt,T as yt,V as bt,_ as xt,a as St,b as Ct,c as wt,d as Tt,f as w,g as Et,h as Dt,i as Ot,j as kt,k as At,l as jt,m as Mt,n as Nt,o as Pt,p as T,r as Ft,s as It,t as Lt,u as Rt,v as E,w as zt,x as Bt,y as Vt,z as Ht}from"./chunk-DEgE46ki.js";import{n as Ut}from"./chunk-DVKHLRUO.js";import{n as Wt,t as Gt}from"./chunk-1VdYkt-J.js";import{t as Kt}from"./chunk-CkXMNGcB.js";import{t as qt}from"./chunk-BhCmCUGL.js";import{a as Jt,c as Yt,d as D,l as Xt,o as Zt,s as Qt,t as $t,u as en}from"./chunk-BZI3bWDA.js";import{a as tn,i as nn,t as rn}from"./chunk-CuwzD5GU.js";import{t as an}from"./chunk-Q4BZ9QN9.js";import O from"process";import"buffer";import{lookup as on}from"node:dns";function k(e){if(!e||e===`/`)return`/`;let t=e.endsWith(`/`)&&e!==`/`?e.slice(0,-1):e;t.startsWith(`/`)||(t=`/${t}`);let n=t.split(`/`).filter(e=>e&&e!==`.`),r=[];for(let e of n)e===`..`?r.pop():r.push(e);return`/${r.join(`/`)}`||`/`}function sn(e,t){if(e.includes(`\0`))throw Error(`ENOENT: path contains null byte, ${t} '${e}'`)}function cn(e){let t=k(e);if(t===`/`)return`/`;let n=t.lastIndexOf(`/`);return n===0?`/`:t.slice(0,n)}function ln(e,t){return t.startsWith(`/`)?k(t):k(e===`/`?`/${t}`:`${e}/${t}`)}function un(e,t){return e===`/`?`/${t}`:`${e}/${t}`}function dn(e,t){return t.startsWith(`/`)?k(t):k(un(cn(e),t))}var fn=Object.defineProperty,pn=(e,t,n)=>t in e?fn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,mn=(e,t,n)=>(pn(e,typeof t==`symbol`?t:t+``,n),n),hn=(e,t,n)=>{if(!t.has(e))throw TypeError(`Cannot `+n)},gn=(e,t)=>{if(Object(t)!==t)throw TypeError(`Cannot use the "in" operator on this value`);return e.has(t)},_n=(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)},vn=(e,t,n)=>(hn(e,t,`access private method`),n);
|
|
2
2
|
/**
|
|
3
3
|
* @license
|
|
4
4
|
* Copyright Google LLC All Rights Reserved.
|
|
@@ -1020,7 +1020,7 @@ const restoreGlobals = applyGlobalShadows();
|
|
|
1020
1020
|
|
|
1021
1021
|
`).trim()}function lh(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,`
|
|
1022
1022
|
|
|
1023
|
-
`).trim()}}function uh(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}=lh(ch(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 dh={openai:ih,anthropic:ah,google:sh,"mesh-llm":class extends ih{parseResponse(e){return uh(super.parseResponse(e))}}};function fh(e){let t=dh[e.format];if(!t)throw Error(`Unsupported provider format: ${e.format}`);return new t(e)}function ph(e,t,n,r){return fh(e).formatRequest(t,n,r)}function mh(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 hh(e,t){return fh(e).parseResponse(t)}function gh(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 _h=null;function vh(e){_h=e,typeof globalThis<`u`&&(globalThis.__nodeTransformersTaskExecutor=e)}let yh=null;function bh(e){yh=e,typeof globalThis<`u`&&(globalThis.__nodeLlamafileTaskExecutor=e)}function xh(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 Sh(e){if(e.toolsBackendPref)return e.toolsBackendPref;if(e.db)try{let{getConfig:t}=await import(`./chunk-DhOkc1Tu.js`),n=await t(e.db,S.BUILTIN_AI_TOOLS_BACKEND);if(n)return n}catch{}return`active_provider`}async function Ch(e,t,n){if(n.apiKey!==void 0)return n.apiKey;if(O!==void 0&&O.env){let e=O.env.SHADOW_CLAW_API_KEY;if(e)return e;switch(t){case`openrouter`:if(O.env.OPENROUTER_API_KEY)return O.env.OPENROUTER_API_KEY;break;case`huggingface`:if(O.env.HUGGINGFACE_API_KEY||O.env.HF_TOKEN)return O.env.HUGGINGFACE_API_KEY||O.env.HF_TOKEN||``;break;case`gemini_proxy`:if(O.env.GEMINI_API_KEY)return O.env.GEMINI_API_KEY}let n=`${t.toUpperCase()}_API_KEY`;if(O.env[n])return O.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 wh(e){let{taskType:t,input:n,onProgress:r}=e;if(await Sh(e)===`local`){if(t===`summarize`)return await Ep(n.text,{...n,onProgress:r});if(t===`write`)return await Dp(n.prompt,{...n,onProgress:r});if(t===`rewrite`)return await Op(n.text,{...n,onProgress:r});if(t===`proofread`)return await jp(n.text,{...n,onProgress:r});if(t===`detect-language`)return await kp(n.text,{onProgress:r});if(t===`translate`)return await Ap(n.text,{sourceLanguage:n.sourceLanguage||`auto`,targetLanguage:n.targetLanguage||`en`,...n,onProgress:r});if(t===`semantic-embedder`)return await Mp(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,S.PROVIDER)||i}catch{}a||=O!==void 0&&(O.env.SHADOW_CLAW_PROVIDER||O.env.SHADOW_CLAW_DEFAULT_PROVIDER)||i;let s=xh(t,n);if(a===`prompt_api`){await wp();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=b(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 Ep(n.text,n);if(t===`write`)return await Dp(n.prompt,n);if(t===`rewrite`)return await Op(n.text,n);if(t===`proofread`)return await jp(n.text,n);if(t===`detect-language`)return await kp(n.text);if(t===`translate`)return await Ap(n.text,{sourceLanguage:n.sourceLanguage||`auto`,targetLanguage:n.targetLanguage||`en`,...n});if(t===`semantic-embedder`)return await Mp(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 Ch(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={...nh(c,u),...e.headers||{}},p=ph(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=_h??globalThis.__nodeTransformersTaskExecutor;if(n){let r=hh(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=yh??globalThis.__nodeLlamafileTaskExecutor;if(n){let r=hh(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=hh(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 Th=null;function Eh(e){Th=e}async function Dh(e,t,n,r){if(Th)return await Th(t,n,e,r);if(o()){let i=r?.invokeContext;return await wh({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 M({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 Oh(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for summarize_text`;try{return await Dh(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 kh(e,t,n){let r=String(e.prompt||``).trim();if(!r)return`Error: prompt is required for write_text`;try{return await Dh(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 Ah(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for rewrite_text`;try{return await Dh(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 jh(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for proofread_text`;try{return await Dh(t,`proofread`,{text:r,context:e.context},n)}catch(e){return`Error proofreading text: ${e instanceof Error?e.message:String(e)}`}}async function Mh(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for detect_language`;try{let e=await Dh(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 Nh(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 Dh(t,`translate`,{text:r,sourceLanguage:i,targetLanguage:a},n)}catch(e){return`Error translating text: ${e instanceof Error?e.message:String(e)}`}}async function Ph(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 Dh(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 Fh(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=Xf(t,r,i,a);s&&s(t+1,n,u,e),await Zf(u,c)}}throw l}const Ih=/* @__PURE__ */ new Set([408,429,500,502,503,504]);function Lh(e){return/network|ECONNRESET|ECONNREFUSED|ETIMEDOUT|fetch failed|EAI_AGAIN|EAI_NONAME|getaddrinfo/i.test(e.message)}function Rh(e){if(e instanceof TypeError)return!0;if(typeof e?.status==`number`)return Ih.has(e.status);if(e instanceof Error){let t=e.message.match(/\b(4\d{2}|5\d{2})\b/);if(t)return Ih.has(Number(t[1]));if(Lh(e))return!0}return!1}function zh(e){return e instanceof TypeError?!0:e&&typeof e.status==`number`?Ih.has(e.status):e instanceof Error&&Lh(e)}const Bh=/* @__PURE__ */ new Set([`create_task`,`update_task`,`delete_task`,`enable_task`,`disable_task`,`send_notification`,`create_room`,`invite_to_room`,`leave_room`]);function Vh(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 Hh(e,t){let n=Vh(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 Uh(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 Wh(e,t){return t&&Bh.has(e)?`Tool "${e}" is not allowed during scheduled task execution to prevent recursion.`:null}function Gh(e){return o()&&s.has(e)?`Tool "${e}" is not available in headless CLI mode. It requires a browser UI.`:null}function Kh(e,t={}){return Hh(e,t.allowedTools)||Uh(e,t.isScheduledTask,t.isTaskExecution)||Wh(e,t.isScheduledTask)||Gh(e)||null}async function qh(e,t,n,r,i={},a){let o=await Yt(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 Ld(e,{command:o.execution.command,stdin:JSON.stringify(n)},r):await om(e,{code:o.execution.code,data:JSON.stringify(n)})}let Jh=null;async function Yh(){return Jh||=import(`./chunk-Do3VICh1.js`),Jh}async function Xh(e,t,n,r){let i=await Yh();return await wf(e,t,n,r,{configKeys:{GIT_CORS_PROXY:S.GIT_CORS_PROXY,GIT_PROXY_URL:S.GIT_PROXY_URL,GIT_AUTHOR_NAME:S.GIT_AUTHOR_NAME,GIT_AUTHOR_EMAIL:S.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:en,resolveGitCredentials:oi})}const V=/* @__PURE__ */ new Map;V.set(`bash`,(e,t,n)=>Ld(e,t,n)),V.set(`read_file`,(e,t,n)=>jm(e,t,n)),V.set(`open_file`,(e,t,n)=>km(e,t,n)),V.set(`attach_file_to_chat`,(e,t,n)=>gm(e,t,n)),V.set(`send_file`,(e,t,n)=>Fm(e,t,n)),V.set(`write_file`,(e,t,n)=>Lm(e,t,n)),V.set(`delete_file`,(e,t,n)=>wm(e,t,n)),V.set(`move_file`,(e,t,n)=>Om(e,t,n)),V.set(`copy_file`,(e,t,n)=>xm(e,t,n)),V.set(`create_directory`,(e,t,n)=>Sm(e,t,n)),V.set(`patch_file`,(e,t,n)=>Am(e,t,n)),V.set(`list_files`,(e,t,n)=>Em(e,t,n)),V.set(`manage_tools`,(e,t,n)=>lm(t,n)),V.set(`list_tool_profiles`,e=>cm(e)),V.set(`fetch_url`,(e,t,n)=>vf(e,t,n,{buildAuthHeaders:$r,fetchImpl:fetch,fetchMaxResponse:ne,isRetryableFetchError:zh,post:M,resolveGitCredentials:oi,resolveServiceCredentials:Yr,retryableStatusCodes:Ih,stripHtml:Wi,uploadGroupFile:ye,withRetry:Fh})),V.set(`fetch_file`,(e,t,n)=>gf(e,t,n,{buildAuthHeaders:$r,fetchImpl:fetch,isRetryableFetchError:zh,post:M,resolveGitCredentials:oi,resolveServiceCredentials:Yr,retryableStatusCodes:Ih,uploadGroupFile:ye,withRetry:Fh,writeGroupFile:Qt})),V.set(`update_memory`,(e,t,n)=>Im(e,t,n)),V.set(`create_task`,(e,t,n)=>Vp(t,n)),V.set(`javascript`,(e,t)=>om(e,t)),V.set(`activate_skill`,(e,t,n)=>Hm(e,t,n)),V.set(`list_tasks`,(e,t,n)=>Kp(e,n)),V.set(`update_task`,(e,t,n)=>Jp(e,t,n)),V.set(`enable_task`,(e,t,n)=>Gp(e,t,n)),V.set(`disable_task`,(e,t,n)=>Wp(e,t,n)),V.set(`delete_task`,(e,t,n)=>Hp(t,n)),V.set(`run_task`,(e,t,n)=>qp(e,t,n)),V.set(`clear_chat`,(e,t,n)=>Xp(n)),V.set(`show_toast`,(e,t)=>pm(t)),V.set(`send_notification`,(e,t,n)=>fm(t,n)),V.set(`create_room`,(e,t)=>Pf(t)),V.set(`invite_to_room`,(e,t,n)=>Lf(t,n)),V.set(`leave_room`,(e,t,n)=>Rf(t,n)),V.set(`list_room_members`,(e,t,n)=>zf(e,t,n)),V.set(`prompt_peer`,(e,t,n)=>Uf(e,t,n)),V.set(`list_peers`,(e,t,n)=>Wf(e,t,n));const Zh=(e,t,n)=>sf(e,t,n);V.set(`manage_email`,Zh),V.set(`manage_integration`,Zh),V.set(`email_read_messages`,(e,t,n)=>Qh(e,`manage_email`,{...t,action:`read_messages`},n)),V.set(`integration_read_messages`,(e,t,n)=>Qh(e,`manage_email`,{...t,action:`read_messages`},n)),V.set(`email_send_message`,(e,t,n)=>Qh(e,`manage_email`,{...t,action:`send_message`},n)),V.set(`integration_send_message`,(e,t,n)=>Qh(e,`manage_email`,{...t,action:`send_message`},n)),V.set(`remote_mcp_list_tools`,(e,t,n)=>Mf(e,t,n,{callRemoteMcpTool:Fi,listRemoteMcpTools:Pi,McpReauthRequiredError:Si,post:M})),V.set(`remote_mcp_call_tool`,(e,t,n)=>Nf(e,t,n,{callRemoteMcpTool:Fi,listRemoteMcpTools:Pi,McpReauthRequiredError:Si,post:M}));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`])V.set(e,(t,n,r)=>Xh(t,e,n,r));V.set(`list_components`,()=>sm()),V.set(`render_component`,(e,t,n)=>dm(t,n)),V.set(`spawn_subagent`,async(e,t,n,r)=>r?.invokeContext?await Bp(t,n,r.invokeContext):`Error: spawn_subagent requires an active agent invocation context. This tool cannot be called directly.`),V.set(`get_current_time`,(e,t)=>Zp(t)),V.set(`search_files`,(e,t,n)=>Pm(e,t,n,{maxFileBytes:Or.searchFilesMaxFileBytes,maxFilesVisited:Or.searchFilesMaxFilesVisited,skipDirs:Or.searchFilesSkipDirsSet})),V.set(`diff_files`,(e,t,n)=>Tm(e,t,n)),V.set(`ask_user`,(e,t,n)=>Yp(t,n)),V.set(`web_search`,(e,t)=>mm(t)),V.set(`summarize_text`,(e,t,n,r)=>Oh(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`write_text`,(e,t,n,r)=>kh(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`rewrite_text`,(e,t,n,r)=>Ah(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`proofread_text`,(e,t,n,r)=>jh(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`detect_language`,(e,t,n,r)=>Mh(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`translate_text`,(e,t,n,r)=>Nh(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`embed_text`,(e,t,n,r)=>Ph(t,n,{db:e,invokeContext:r?.invokeContext}));async function Qh(e,t,n,r,i={}){try{let a=Kh(t,i);if(a)return a;let o=V.get(t);return o?await o(e,n,r,i):await qh(e,t,n,r,i,Qh)}catch(e){return`Tool error (${t}): ${e instanceof Error?e.message:String(e)}`}}const $h=880803840;var eg=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?$h: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))}},tg=Object.defineProperty,ng=(e,t,n)=>t in e?tg(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,rg=(e,t,n)=>(ng(e,typeof t==`symbol`?t:t+``,n),n),H=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`}),ig=class{constructor(e,t){this.value=e,this.type=t}};function ag(e){return/\w/.test(e)}function og(e){return/[0-9]/.test(e)}function sg(e){return/\s/.test(e)}var cg=[[`{%`,H.OpenStatement],[`%}`,H.CloseStatement],[`{{`,H.OpenExpression],[`}}`,H.CloseExpression],[`(`,H.OpenParen],[`)`,H.CloseParen],[`{`,H.OpenCurlyBracket],[`}`,H.CloseCurlyBracket],[`[`,H.OpenSquareBracket],[`]`,H.CloseSquareBracket],[`,`,H.Comma],[`.`,H.Dot],[`:`,H.Colon],[`|`,H.Pipe],[`<=`,H.ComparisonBinaryOperator],[`>=`,H.ComparisonBinaryOperator],[`==`,H.ComparisonBinaryOperator],[`!=`,H.ComparisonBinaryOperator],[`<`,H.ComparisonBinaryOperator],[`>`,H.ComparisonBinaryOperator],[`+`,H.AdditiveBinaryOperator],[`-`,H.AdditiveBinaryOperator],[`~`,H.AdditiveBinaryOperator],[`**`,H.ExponentiationBinaryOperator],[`*`,H.MultiplicativeBinaryOperator],[`//`,H.MultiplicativeBinaryOperator],[`/`,H.MultiplicativeBinaryOperator],[`%`,H.MultiplicativeBinaryOperator],[`=`,H.Equals]],lg=/* @__PURE__ */ new Map([[`n`,`
|
|
1023
|
+
`).trim()}}function uh(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}=lh(ch(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 dh={openai:ih,anthropic:ah,google:sh,"mesh-llm":class extends ih{parseResponse(e){return uh(super.parseResponse(e))}}};function fh(e){let t=dh[e.format];if(!t)throw Error(`Unsupported provider format: ${e.format}`);return new t(e)}function ph(e,t,n,r){return fh(e).formatRequest(t,n,r)}function mh(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 hh(e,t){return fh(e).parseResponse(t)}function gh(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 _h=null;function vh(e){_h=e,typeof globalThis<`u`&&(globalThis.__nodeTransformersTaskExecutor=e)}let yh=null;function bh(e){yh=e,typeof globalThis<`u`&&(globalThis.__nodeLlamafileTaskExecutor=e)}function xh(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 Sh(e){if(e.toolsBackendPref)return e.toolsBackendPref;if(e.db)try{let{getConfig:t}=await import(`./chunk-DhOkc1Tu.js`),n=await t(e.db,S.BUILTIN_AI_TOOLS_BACKEND);if(n)return n}catch{}return`active_provider`}async function Ch(e,t,n){if(n.apiKey!==void 0)return n.apiKey;if(O!==void 0&&O.env){let e=O.env.SHADOW_CLAW_API_KEY;if(e)return e;switch(t){case`openrouter`:if(O.env.OPENROUTER_API_KEY)return O.env.OPENROUTER_API_KEY;break;case`huggingface`:if(O.env.HUGGINGFACE_API_KEY||O.env.HF_TOKEN)return O.env.HUGGINGFACE_API_KEY||O.env.HF_TOKEN||``;break;case`gemini_proxy`:if(O.env.GEMINI_API_KEY)return O.env.GEMINI_API_KEY}let n=`${t.toUpperCase()}_API_KEY`;if(O.env[n])return O.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 wh(e){let{taskType:t,input:n,onProgress:r}=e;if(await Sh(e)===`local`){if(t===`summarize`)return await Ep(n.text,{...n,onProgress:r});if(t===`write`)return await Dp(n.prompt,{...n,onProgress:r});if(t===`rewrite`)return await Op(n.text,{...n,onProgress:r});if(t===`proofread`)return await jp(n.text,{...n,onProgress:r});if(t===`detect-language`)return await kp(n.text,{onProgress:r});if(t===`translate`)return await Ap(n.text,{sourceLanguage:n.sourceLanguage||`auto`,targetLanguage:n.targetLanguage||`en`,...n,onProgress:r});if(t===`semantic-embedder`)return await Mp(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,S.PROVIDER)||i}catch{}a||=O!==void 0&&(O.env.SHADOW_CLAW_PROVIDER||O.env.SHADOW_CLAW_DEFAULT_PROVIDER)||i;let s=xh(t,n);if(a===`prompt_api`){await wp();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=b(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 Ep(n.text,n);if(t===`write`)return await Dp(n.prompt,n);if(t===`rewrite`)return await Op(n.text,n);if(t===`proofread`)return await jp(n.text,n);if(t===`detect-language`)return await kp(n.text);if(t===`translate`)return await Ap(n.text,{sourceLanguage:n.sourceLanguage||`auto`,targetLanguage:n.targetLanguage||`en`,...n});if(t===`semantic-embedder`)return await Mp(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 Ch(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={...nh(c,u),...e.headers||{}},p=ph(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=_h??globalThis.__nodeTransformersTaskExecutor;if(n){let r=hh(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=yh??globalThis.__nodeLlamafileTaskExecutor;if(n){let r=hh(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=hh(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 Th=null;function Eh(e){Th=e}async function Dh(e,t,n,r){if(Th)return await Th(t,n,e,r);if(o()){let i=r?.invokeContext;return await wh({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 M({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 Oh(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for summarize_text`;try{return await Dh(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 kh(e,t,n){let r=String(e.prompt||``).trim();if(!r)return`Error: prompt is required for write_text`;try{return await Dh(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 Ah(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for rewrite_text`;try{return await Dh(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 jh(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for proofread_text`;try{return await Dh(t,`proofread`,{text:r,context:e.context},n)}catch(e){return`Error proofreading text: ${e instanceof Error?e.message:String(e)}`}}async function Mh(e,t,n){let r=String(e.text||``).trim();if(!r)return`Error: text is required for detect_language`;try{let e=await Dh(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 Nh(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 Dh(t,`translate`,{text:r,sourceLanguage:i,targetLanguage:a},n)}catch(e){return`Error translating text: ${e instanceof Error?e.message:String(e)}`}}async function Ph(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 Dh(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 Fh(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=Xf(t,r,i,a);s&&s(t+1,n,u,e),await Zf(u,c)}}throw l}const Ih=/* @__PURE__ */ new Set([408,429,500,502,503,504]);function Lh(e){return/network|ECONNRESET|ECONNREFUSED|ETIMEDOUT|fetch failed|EAI_AGAIN|EAI_NONAME|getaddrinfo/i.test(e.message)}function Rh(e){if(e instanceof TypeError)return!0;if(typeof e?.status==`number`)return Ih.has(e.status);if(e instanceof Error){let t=e.message.match(/\b(4\d{2}|5\d{2})\b/);if(t)return Ih.has(Number(t[1]));if(Lh(e))return!0}return!1}function zh(e){return e instanceof TypeError?!0:e&&typeof e.status==`number`?Ih.has(e.status):e instanceof Error&&Lh(e)}const Bh=/* @__PURE__ */ new Set([`create_task`,`update_task`,`delete_task`,`enable_task`,`disable_task`,`send_notification`,`create_room`,`invite_to_room`,`leave_room`]);function Vh(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 Hh(e,t){let n=Vh(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 Uh(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 Wh(e,t){return t&&Bh.has(e)?`Tool "${e}" is not allowed during scheduled task execution to prevent recursion.`:null}function Gh(e){return o()&&s.has(e)?`Tool "${e}" is not available in headless CLI mode. It requires a browser UI.`:null}function Kh(e,t={}){return Hh(e,t.allowedTools)||Uh(e,t.isScheduledTask,t.isTaskExecution)||Wh(e,t.isScheduledTask)||Gh(e)||null}async function qh(e,t,n,r,i={},a){let o=await Yt(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 Ld(e,{command:o.execution.command,stdin:JSON.stringify(n)},r):await om(e,{code:o.execution.code,data:JSON.stringify(n)})}let Jh=null;async function Yh(){return Jh||=import(`./chunk-IU2SH_ti.js`),Jh}async function Xh(e,t,n,r){let i=await Yh();return await wf(e,t,n,r,{configKeys:{GIT_CORS_PROXY:S.GIT_CORS_PROXY,GIT_PROXY_URL:S.GIT_PROXY_URL,GIT_AUTHOR_NAME:S.GIT_AUTHOR_NAME,GIT_AUTHOR_EMAIL:S.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:en,resolveGitCredentials:oi})}const V=/* @__PURE__ */ new Map;V.set(`bash`,(e,t,n)=>Ld(e,t,n)),V.set(`read_file`,(e,t,n)=>jm(e,t,n)),V.set(`open_file`,(e,t,n)=>km(e,t,n)),V.set(`attach_file_to_chat`,(e,t,n)=>gm(e,t,n)),V.set(`send_file`,(e,t,n)=>Fm(e,t,n)),V.set(`write_file`,(e,t,n)=>Lm(e,t,n)),V.set(`delete_file`,(e,t,n)=>wm(e,t,n)),V.set(`move_file`,(e,t,n)=>Om(e,t,n)),V.set(`copy_file`,(e,t,n)=>xm(e,t,n)),V.set(`create_directory`,(e,t,n)=>Sm(e,t,n)),V.set(`patch_file`,(e,t,n)=>Am(e,t,n)),V.set(`list_files`,(e,t,n)=>Em(e,t,n)),V.set(`manage_tools`,(e,t,n)=>lm(t,n)),V.set(`list_tool_profiles`,e=>cm(e)),V.set(`fetch_url`,(e,t,n)=>vf(e,t,n,{buildAuthHeaders:$r,fetchImpl:fetch,fetchMaxResponse:ne,isRetryableFetchError:zh,post:M,resolveGitCredentials:oi,resolveServiceCredentials:Yr,retryableStatusCodes:Ih,stripHtml:Wi,uploadGroupFile:ye,withRetry:Fh})),V.set(`fetch_file`,(e,t,n)=>gf(e,t,n,{buildAuthHeaders:$r,fetchImpl:fetch,isRetryableFetchError:zh,post:M,resolveGitCredentials:oi,resolveServiceCredentials:Yr,retryableStatusCodes:Ih,uploadGroupFile:ye,withRetry:Fh,writeGroupFile:Qt})),V.set(`update_memory`,(e,t,n)=>Im(e,t,n)),V.set(`create_task`,(e,t,n)=>Vp(t,n)),V.set(`javascript`,(e,t)=>om(e,t)),V.set(`activate_skill`,(e,t,n)=>Hm(e,t,n)),V.set(`list_tasks`,(e,t,n)=>Kp(e,n)),V.set(`update_task`,(e,t,n)=>Jp(e,t,n)),V.set(`enable_task`,(e,t,n)=>Gp(e,t,n)),V.set(`disable_task`,(e,t,n)=>Wp(e,t,n)),V.set(`delete_task`,(e,t,n)=>Hp(t,n)),V.set(`run_task`,(e,t,n)=>qp(e,t,n)),V.set(`clear_chat`,(e,t,n)=>Xp(n)),V.set(`show_toast`,(e,t)=>pm(t)),V.set(`send_notification`,(e,t,n)=>fm(t,n)),V.set(`create_room`,(e,t)=>Pf(t)),V.set(`invite_to_room`,(e,t,n)=>Lf(t,n)),V.set(`leave_room`,(e,t,n)=>Rf(t,n)),V.set(`list_room_members`,(e,t,n)=>zf(e,t,n)),V.set(`prompt_peer`,(e,t,n)=>Uf(e,t,n)),V.set(`list_peers`,(e,t,n)=>Wf(e,t,n));const Zh=(e,t,n)=>sf(e,t,n);V.set(`manage_email`,Zh),V.set(`manage_integration`,Zh),V.set(`email_read_messages`,(e,t,n)=>Qh(e,`manage_email`,{...t,action:`read_messages`},n)),V.set(`integration_read_messages`,(e,t,n)=>Qh(e,`manage_email`,{...t,action:`read_messages`},n)),V.set(`email_send_message`,(e,t,n)=>Qh(e,`manage_email`,{...t,action:`send_message`},n)),V.set(`integration_send_message`,(e,t,n)=>Qh(e,`manage_email`,{...t,action:`send_message`},n)),V.set(`remote_mcp_list_tools`,(e,t,n)=>Mf(e,t,n,{callRemoteMcpTool:Fi,listRemoteMcpTools:Pi,McpReauthRequiredError:Si,post:M})),V.set(`remote_mcp_call_tool`,(e,t,n)=>Nf(e,t,n,{callRemoteMcpTool:Fi,listRemoteMcpTools:Pi,McpReauthRequiredError:Si,post:M}));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`])V.set(e,(t,n,r)=>Xh(t,e,n,r));V.set(`list_components`,()=>sm()),V.set(`render_component`,(e,t,n)=>dm(t,n)),V.set(`spawn_subagent`,async(e,t,n,r)=>r?.invokeContext?await Bp(t,n,r.invokeContext):`Error: spawn_subagent requires an active agent invocation context. This tool cannot be called directly.`),V.set(`get_current_time`,(e,t)=>Zp(t)),V.set(`search_files`,(e,t,n)=>Pm(e,t,n,{maxFileBytes:Or.searchFilesMaxFileBytes,maxFilesVisited:Or.searchFilesMaxFilesVisited,skipDirs:Or.searchFilesSkipDirsSet})),V.set(`diff_files`,(e,t,n)=>Tm(e,t,n)),V.set(`ask_user`,(e,t,n)=>Yp(t,n)),V.set(`web_search`,(e,t)=>mm(t)),V.set(`summarize_text`,(e,t,n,r)=>Oh(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`write_text`,(e,t,n,r)=>kh(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`rewrite_text`,(e,t,n,r)=>Ah(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`proofread_text`,(e,t,n,r)=>jh(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`detect_language`,(e,t,n,r)=>Mh(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`translate_text`,(e,t,n,r)=>Nh(t,n,{db:e,invokeContext:r?.invokeContext})),V.set(`embed_text`,(e,t,n,r)=>Ph(t,n,{db:e,invokeContext:r?.invokeContext}));async function Qh(e,t,n,r,i={}){try{let a=Kh(t,i);if(a)return a;let o=V.get(t);return o?await o(e,n,r,i):await qh(e,t,n,r,i,Qh)}catch(e){return`Tool error (${t}): ${e instanceof Error?e.message:String(e)}`}}const $h=880803840;var eg=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?$h: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))}},tg=Object.defineProperty,ng=(e,t,n)=>t in e?tg(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,rg=(e,t,n)=>(ng(e,typeof t==`symbol`?t:t+``,n),n),H=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`}),ig=class{constructor(e,t){this.value=e,this.type=t}};function ag(e){return/\w/.test(e)}function og(e){return/[0-9]/.test(e)}function sg(e){return/\s/.test(e)}var cg=[[`{%`,H.OpenStatement],[`%}`,H.CloseStatement],[`{{`,H.OpenExpression],[`}}`,H.CloseExpression],[`(`,H.OpenParen],[`)`,H.CloseParen],[`{`,H.OpenCurlyBracket],[`}`,H.CloseCurlyBracket],[`[`,H.OpenSquareBracket],[`]`,H.CloseSquareBracket],[`,`,H.Comma],[`.`,H.Dot],[`:`,H.Colon],[`|`,H.Pipe],[`<=`,H.ComparisonBinaryOperator],[`>=`,H.ComparisonBinaryOperator],[`==`,H.ComparisonBinaryOperator],[`!=`,H.ComparisonBinaryOperator],[`<`,H.ComparisonBinaryOperator],[`>`,H.ComparisonBinaryOperator],[`+`,H.AdditiveBinaryOperator],[`-`,H.AdditiveBinaryOperator],[`~`,H.AdditiveBinaryOperator],[`**`,H.ExponentiationBinaryOperator],[`*`,H.MultiplicativeBinaryOperator],[`//`,H.MultiplicativeBinaryOperator],[`/`,H.MultiplicativeBinaryOperator],[`%`,H.MultiplicativeBinaryOperator],[`=`,H.Equals]],lg=/* @__PURE__ */ new Map([[`n`,`
|
|
1024
1024
|
`],[`t`,` `],[`r`,`\r`],[`b`,`\b`],[`f`,`\f`],[`v`,`\v`],[`'`,`'`],[`"`,`"`],[`\\`,`\\`]]);function ug(e,t={}){return e.endsWith(`
|
|
1025
1025
|
`)&&(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 dg(e,t={}){let n=[],r=ug(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=lg.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===H.Text&&(e.value=e.value.trimEnd(),e.value===``&&n.pop())},c=()=>{for(;i<r.length&&sg(r[i]);)++i};main:for(;i<r.length;){let e=n.at(-1)?.type;if(e===void 0||e===H.CloseStatement||e===H.CloseExpression||e===H.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 ig(e,H.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 ig(t,H.Comment)),i+=2,a&&c();continue}if(r.slice(i,i+3)===`{%-`){s(),n.push(new ig(`{%`,H.OpenStatement)),i+=3;continue}if(r.slice(i,i+3)===`{{-`){s(),n.push(new ig(`{{`,H.OpenExpression)),a=0,i+=3;continue}if(o(sg),r.slice(i,i+3)===`-%}`){n.push(new ig(`%}`,H.CloseStatement)),i+=3,c();continue}if(r.slice(i,i+3)===`-}}`){n.push(new ig(`}}`,H.CloseExpression)),i+=3,c();continue}let t=r[i];if(t===`-`||t===`+`){let e=n.at(-1)?.type;if(e===H.Text||e===void 0)throw SyntaxError(`Unexpected character: ${t}`);switch(e){case H.Identifier:case H.NumericLiteral:case H.StringLiteral:case H.CloseParen:case H.CloseSquareBracket:break;default:{++i;let e=o(og);if(e.length>0&&r[i]===`.`&&og(r[i+1])){++i;let t=o(og);e=`${e}.${t}`}n.push(new ig(`${t}${e}`,e.length>0?H.NumericLiteral:H.UnaryOperator));continue}}}for(let[e,t]of cg)if(!(e===`}}`&&a>0)&&r.slice(i,i+e.length)===e){n.push(new ig(e,t)),t===H.OpenExpression?a=0:t===H.OpenCurlyBracket?++a:t===H.CloseCurlyBracket&&--a,i+=e.length;continue main}if(t===`'`||t===`"`){++i;let e=o(e=>e!==t);n.push(new ig(e,H.StringLiteral)),++i}else if(og(t)){let e=o(og);if(n.at(-1)?.type!==H.Dot&&r[i]===`.`&&og(r[i+1])){++i;let t=o(og);e=`${e}.${t}`}n.push(new ig(e,H.NumericLiteral))}else if(ag(t)){let e=o(ag);n.push(new ig(e,H.Identifier))}else throw SyntaxError(`Unexpected character: ${t}`)}return n}var fg=class{type=`Statement`},pg=class extends fg{constructor(e){super(),this.body=e}type=`Program`},mg=class extends fg{constructor(e,t,n){super(),this.test=e,this.body=t,this.alternate=n}type=`If`},hg=class extends fg{constructor(e,t,n,r){super(),this.loopvar=e,this.iterable=t,this.body=n,this.defaultBlock=r}type=`For`},gg=class extends fg{type=`Break`},_g=class extends fg{type=`Continue`},vg=class extends fg{constructor(e,t,n){super(),this.assignee=e,this.value=t,this.body=n}type=`Set`},yg=class extends fg{constructor(e,t,n){super(),this.name=e,this.args=t,this.body=n}type=`Macro`},bg=class extends fg{constructor(e){super(),this.value=e}type=`Comment`},xg=class extends fg{type=`Expression`},Sg=class extends xg{constructor(e,t,n){super(),this.object=e,this.property=t,this.computed=n}type=`MemberExpression`},Cg=class extends xg{constructor(e,t){super(),this.callee=e,this.args=t}type=`CallExpression`},wg=class extends xg{constructor(e){super(),this.value=e}type=`Identifier`},Tg=class extends xg{constructor(e){super(),this.value=e}type=`Literal`},Eg=class extends Tg{type=`IntegerLiteral`},Dg=class extends Tg{type=`FloatLiteral`},Og=class extends Tg{type=`StringLiteral`},kg=class extends Tg{type=`ArrayLiteral`},Ag=class extends Tg{type=`TupleLiteral`},jg=class extends Tg{type=`ObjectLiteral`},Mg=class extends xg{constructor(e,t,n){super(),this.operator=e,this.left=t,this.right=n}type=`BinaryExpression`},Ng=class extends xg{constructor(e,t){super(),this.operand=e,this.filter=t}type=`FilterExpression`},Pg=class extends fg{constructor(e,t){super(),this.filter=e,this.body=t}type=`FilterStatement`},Fg=class extends xg{constructor(e,t){super(),this.lhs=e,this.test=t}type=`SelectExpression`},Ig=class extends xg{constructor(e,t,n){super(),this.operand=e,this.negate=t,this.test=n}type=`TestExpression`},Lg=class extends xg{constructor(e,t){super(),this.operator=e,this.argument=t}type=`UnaryExpression`},Rg=class extends xg{constructor(e=void 0,t=void 0,n=void 0){super(),this.start=e,this.stop=t,this.step=n}type=`SliceExpression`},zg=class extends xg{constructor(e,t){super(),this.key=e,this.value=t}type=`KeywordArgumentExpression`},Bg=class extends xg{constructor(e){super(),this.argument=e}type=`SpreadExpression`},Vg=class extends xg{constructor(e){super(),this.argument=e}type=`KeywordSpreadExpression`},Hg=class extends fg{constructor(e,t,n){super(),this.call=e,this.callerArgs=t,this.body=n}type=`CallStatement`},Ug=class extends xg{constructor(e,t,n){super(),this.condition=e,this.trueExpr=t,this.falseExpr=n}type=`Ternary`};function Wg(e){let t=new pg([]),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 H.Comment:return new bg(e[n++].value);case H.Text:return l();case H.OpenStatement:return u();case H.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===H.OpenStatement&&e[n+1]?.type===H.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 Og(r(H.Text,`Expected text token`).value)}function u(){if(r(H.OpenStatement,`Expected opening statement token`),e[n].type!==H.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(H.OpenStatement,`Expected {% token`),i(`endif`),r(H.CloseStatement,`Expected %} token`);break;case`macro`:++n,c=m(),r(H.OpenStatement,`Expected {% token`),i(`endmacro`),r(H.CloseStatement,`Expected %} token`);break;case`for`:++n,c=g(),r(H.OpenStatement,`Expected {% token`),i(`endfor`),r(H.CloseStatement,`Expected %} token`);break;case`call`:{++n;let e=null;o(H.OpenParen)&&(e=x(`parameters`));let t=fe();if(t.type!==`Identifier`)throw SyntaxError(`Expected identifier following call statement`);let l=x(`call`);r(H.CloseStatement,`Expected closing statement token`);let u=[];for(;!s(`endcall`);)u.push(a());r(H.OpenStatement,`Expected '{%'`),i(`endcall`),r(H.CloseStatement,`Expected closing statement token`),c=new Hg(new Cg(t,l),e,u);break}case`break`:++n,r(H.CloseStatement,`Expected closing statement token`),c=new gg;break;case`continue`:++n,r(H.CloseStatement,`Expected closing statement token`),c=new _g;break;case`filter`:{++n;let e=fe();e instanceof wg&&o(H.OpenParen)&&(e=ie(e)),r(H.CloseStatement,`Expected closing statement token`);let t=[];for(;!s(`endfilter`);)t.push(a());r(H.OpenStatement,`Expected '{%'`),i(`endfilter`),r(H.CloseStatement,`Expected '%}'`),c=new Pg(e,t);break}default:throw SyntaxError(`Unknown statement type: ${t}`)}return c}function d(){r(H.OpenExpression,`Expected opening expression token`);let e=_();return r(H.CloseExpression,`Expected closing expression token`),e}function f(){let e=h(),t=null,c=[];if(o(H.Equals))++n,t=h();else{for(r(H.CloseStatement,`Expected %} token`);!s(`endset`);)c.push(a());r(H.OpenStatement,`Expected {% token`),i(`endset`)}return r(H.CloseStatement,`Expected closing statement token`),new vg(e,t,c)}function p(){let e=_();r(H.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(H.CloseStatement,`Expected closing statement token`);!s(`endif`);)i.push(a());return new mg(e,t,i)}function m(){let e=fe();if(e.type!==`Identifier`)throw SyntaxError(`Expected identifier following macro statement`);let t=x(`parameters`);r(H.CloseStatement,`Expected closing statement token`);let n=[];for(;!s(`endmacro`);)n.push(a());return new yg(e,t,n)}function h(e=!1){let t=e?fe:_,r=[t()],i=o(H.Comma);for(;i&&(++n,r.push(t()),o(H.Comma)););return i?new Ag(r):r[0]}function g(){let e=h(!0);if(!(e instanceof wg||e instanceof Ag))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(H.CloseStatement,`Expected closing statement token`);let i=[];for(;!s(`endfor`,`else`);)i.push(a());let o=[];if(s(`else`))for(++n,++n,r(H.CloseStatement,`Expected closing statement token`);!s(`endfor`);)o.push(a());return new hg(e,t,i,o)}function _(){return v()}function v(){let e=y();if(c(`if`)){++n;let t=y();return c(`else`)?(++n,new Ug(t,e,v())):new Fg(e,t)}return e}function y(){let t=ee();for(;c(`or`);){let r=e[n];++n;let i=ee();t=new Mg(r,t,i)}return t}function ee(){let t=b();for(;c(`and`);){let r=e[n];++n;let i=b();t=new Mg(r,t,i)}return t}function b(){let t;for(;c(`not`);){let r=e[n];++n,t=new Lg(r,b())}return t??te()}function te(){let t=ne();for(;;){let r;if(c(`not`,`in`))r=new ig(`not in`,H.Identifier),n+=2;else if(c(`in`))r=e[n++];else if(o(H.ComparisonBinaryOperator))r=e[n++];else break;let i=ne();t=new Mg(r,t,i)}return t}function ne(){let t=se();for(;o(H.AdditiveBinaryOperator);){let r=e[n];++n;let i=se();t=new Mg(r,t,i)}return t}function re(){let e=oe(fe());return o(H.OpenParen)?ie(e):e}function ie(e){let t=new Cg(e,x(`call`));return t=oe(t),o(H.OpenParen)&&(t=ie(t)),t}function x(e){r(H.OpenParen,`Expected opening parenthesis for arguments list`);let t=ae(e);return r(H.CloseParen,`Expected closing parenthesis for arguments list`),t}function ae(t){let r=[],i=/* @__PURE__ */ new Set,a=!1,s=!1;for(;!o(H.CloseParen);){let c=o(H.ExponentiationBinaryOperator),l=o(H.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 Vg(_())),o(H.Comma)&&++n,!o(H.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 Bg(_())}else{if(u=_(),o(H.Equals)){if(++n,!(u instanceof wg))throw SyntaxError(t===`parameters`?`Expected identifier for parameter declaration`:`Expected identifier for keyword argument`);let e=_();u=new zg(u,e)}if(t===`parameters`){if(!(u instanceof wg||u instanceof zg))throw SyntaxError(`Expected identifier for parameter declaration`);let e=u instanceof wg?u.value:u.key.value;if(i.has(e))throw SyntaxError(`Duplicate parameter name: ${e}`);i.add(e)}if(u instanceof zg)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(H.Comma)&&++n}return r}function S(){let e=[],t=!1;for(;!o(H.CloseSquareBracket);)o(H.Colon)?(e.push(void 0),++n,t=!0):(e.push(_()),o(H.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 Rg(...e)}return e[0]}function oe(t){for(;o(H.Dot)||o(H.OpenSquareBracket);){let i=e[n];++n;let a,o=i.type===H.OpenSquareBracket;if(o)a=S(),r(H.CloseSquareBracket,`Expected closing square bracket`);else if(a=fe(),a.type!==`Identifier`&&a.type!==`IntegerLiteral`)throw SyntaxError(`Expected identifier or integer following dot operator`);t=new Sg(t,a,o)}return t}function se(){let t=ce();for(;o(H.MultiplicativeBinaryOperator);){let r=e[n++],i=ce();t=new Mg(r,t,i)}return t}function ce(){let t=le();for(;o(H.ExponentiationBinaryOperator);){let r=e[n++],i=le();t=new Mg(r,t,i)}return t}function le(){let e=ue();for(;c(`is`);){++n;let t=c(`not`);t&&++n;let r=fe();if(!(r instanceof wg))throw SyntaxError(`Expected identifier for the test`);e=new Ig(e,t,r)}return e}function ue(){let e=de();for(;o(H.Pipe);){++n;let t=fe();if(!(t instanceof wg))throw SyntaxError(`Expected identifier for the filter`);o(H.OpenParen)&&(t=ie(t)),e=new Ng(e,t)}return e}function de(){let t=e[n];if(t&&(t.type===H.UnaryOperator||t.type===H.AdditiveBinaryOperator)&&(t.value===`-`||t.value===`+`)){let t=e[n++];return new Lg(t,de())}return re()}function fe(){let t=e[n++];switch(t.type){case H.NumericLiteral:{let e=t.value;return e.includes(`.`)?new Dg(Number(e)):new Eg(Number(e))}case H.StringLiteral:{let r=t.value;for(;o(H.StringLiteral);)r+=e[n++].value;return new Og(r)}case H.Identifier:return new wg(t.value);case H.OpenParen:{let e=h();return r(H.CloseParen,"Expected closing parenthesis, got ${tokens[current].type} instead."),e}case H.OpenSquareBracket:{let e=[];for(;!o(H.CloseSquareBracket);)e.push(_()),o(H.Comma)&&++n;return++n,new kg(e)}case H.OpenCurlyBracket:{let e=/* @__PURE__ */ new Map;for(;!o(H.CloseCurlyBracket);){let t=_();r(H.Colon,`Expected colon between key and value in object literal`);let i=_();e.set(t,i),o(H.Comma)&&++n}return++n,new jg(e)}default:throw SyntaxError(`Unexpected token: ${t.type}`)}}for(;n<e.length;)t.body.push(a());return t}function Gg(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 Kg(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 qg(e){return e.replace(/\b\w/g,e=>e.toUpperCase())}function Jg(e){return Yg(/* @__PURE__ */ new Date,e)}function Yg(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 Xg(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Zg(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(Xg(t),`gu`);return e.replaceAll(a,e=>i>0?(--i,n):e)}var Qg=class extends Error{},$g=class extends Error{},e_=/* @__PURE__ */ new Map,t_=class{type=`RuntimeValue`;value;get builtins(){return e_}constructor(e=void 0){this.value=e}__bool__(){return new K(!!this.value)}toString(){return String(this.value)}},U=class extends t_{type=`IntegerValue`},W=class extends t_{type=`FloatValue`;toString(){return Object.is(this.value,-0)?`-0.0`:this.value%1==0?this.value.toFixed(1):this.value.toString()}},G=class extends t_{type=`StringValue`;_builtins;get builtins(){return this._builtins??=/* @__PURE__ */ new Map([[`upper`,new J(()=>new G(this.value.toUpperCase()))],[`lower`,new J(()=>new G(this.value.toLowerCase()))],[`strip`,new J(()=>new G(this.value.trim()))],[`title`,new J(()=>new G(qg(this.value)))],[`capitalize`,new J(()=>new G(this.value.charAt(0).toUpperCase()+this.value.slice(1)))],[`length`,new U(this.value.length)],[`rstrip`,new J(()=>new G(this.value.trimEnd()))],[`lstrip`,new J(()=>new G(this.value.trimStart()))],[`startswith`,new J(e=>{if(e.length===0)throw Error(`startswith() requires at least one argument`);let t=e[0];if(t instanceof G)return new K(this.value.startsWith(t.value));if(t instanceof q){for(let e of t.value){if(!(e instanceof G))throw Error(`startswith() tuple elements must be strings`);if(this.value.startsWith(e.value))return new K(!0)}return new K(!1)}throw Error(`startswith() argument must be a string or tuple of strings`)})],[`endswith`,new J(e=>{if(e.length===0)throw Error(`endswith() requires at least one argument`);let t=e[0];if(t instanceof G)return new K(this.value.endsWith(t.value));if(t instanceof q){for(let e of t.value){if(!(e instanceof G))throw Error(`endswith() tuple elements must be strings`);if(this.value.endsWith(e.value))return new K(!0)}return new K(!1)}throw Error(`endswith() argument must be a string or tuple of strings`)})],[`split`,new J(e=>{let t=e[0]??new Y;if(!(t instanceof G||t instanceof Y))throw Error(`sep argument must be a string or null`);let n=e[1]??new U(-1);if(!(n instanceof U))throw Error(`maxsplit argument must be a number`);let r=[];if(t instanceof Y){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 q(r.map(e=>new G(e)))})],[`replace`,new J(e=>{if(e.length<2)throw Error(`replace() requires at least two arguments`);let t=e[0],n=e[1];if(!(t instanceof G&&n instanceof G))throw Error(`replace() arguments must be strings`);let r;if(r=e.length>2?e[2].type===`KeywordArgumentsValue`?e[2].value.get(`count`)??new Y:e[2]:new Y,!(r instanceof U||r instanceof Y))throw Error(`replace() count argument must be a number or null`);return new G(Zg(this.value,t.value,n.value,r.value))})]])}},K=class extends t_{type=`BooleanValue`},n_=/[\x7f-\uffff]/g;function r_(e){return e.replace(n_,e=>`\\u`+e.charCodeAt(0).toString(16).padStart(4,`0`))}function i_(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=r_(t)),t}case`ArrayValue`:case`NamespaceValue`:case`ObjectValue`:{let o=i?` `.repeat(i):``,u=`
|
|
1026
1026
|
`+o.repeat(n),d=u+o;if(e.type===`ArrayValue`){let a=e.value.map(e=>i_(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=r_(s));let c=`${s}${l}${i_(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 a_=class extends t_{type=`ObjectValue`;_builtins;__bool__(){return new K(this.value.size>0)}get builtins(){return this._builtins??=/* @__PURE__ */ new Map([[`get`,new J(([e,t])=>{if(!(e instanceof G))throw Error(`Object key must be a string: got ${e.type}`);return this.value.get(e.value)??t??new Y})],[`items`,new J(()=>this.items())],[`keys`,new J(()=>this.keys())],[`values`,new J(()=>this.values())],[`dictsort`,new J(e=>{let t=/* @__PURE__ */ new Map,n=e.filter(e=>e instanceof o_?(t=e.value,!1):!0),r=n.at(0)??t.get(`case_sensitive`)??new K(!1);if(!(r instanceof K))throw Error(`case_sensitive must be a boolean`);let i=n.at(1)??t.get(`by`)??new G(`key`);if(!(i instanceof G))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 K(!1);if(!(a instanceof K))throw Error(`reverse must be a boolean`);return new q(Array.from(this.value.entries()).map(([e,t])=>new q([new G(e),t])).sort((e,t)=>{let n=i.value===`key`?0:1,o=e.value[n],s=t.value[n],c=__(o,s,r.value);return a.value?-c:c}))})]])}items(){return new q(Array.from(this.value.entries()).map(([e,t])=>new q([new G(e),t])))}keys(){return new q(Array.from(this.value.keys()).map(e=>new G(e)))}values(){return new q(Array.from(this.value.values()))}toString(){return i_(this,{},0,!1)}},o_=class extends a_{type=`KeywordArgumentsValue`},s_=class extends t_{type=`NamespaceValue`;toString(){return i_(this,{},0,!1)}},q=class extends t_{type=`ArrayValue`;_builtins;get builtins(){return this._builtins??=/* @__PURE__ */ new Map([[`length`,new U(this.value.length)]])}__bool__(){return new K(this.value.length>0)}toString(){return i_(this,{},0,!1)}},c_=class extends q{type=`TupleValue`},J=class extends t_{type=`FunctionValue`},Y=class extends t_{type=`NullValue`},X=class extends t_{type=`UndefinedValue`};function l_(e){let t;if(e instanceof q?t=e.value:e instanceof G&&(t=Array.from(e.value,e=>new G(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 G))throw Error(`namespace keys must be strings`);return[n,r]}var u_=class{constructor(e){this.parent=e}variables=/* @__PURE__ */ new Map([[`namespace`,new J(e=>{let t=e.slice(),n;if(t.at(-1)instanceof o_&&(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 a_)for(let[t,n]of e.value)r.set(t,n);else if(e instanceof q)for(let t of e.value){let[e,n]=l_(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 s_(r)})]]);tests=u_.TESTS;set(e,t){return this.declareVariable(e,S_(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 X}catch{return new X}}},d_=u_;rg(d_,`TESTS`,/* @__PURE__ */ new Map([[`boolean`,e=>e.type===`BooleanValue`],[`callable`,e=>e instanceof J],[`odd`,e=>{if(!(e instanceof U))throw Error(`cannot odd on ${e.type}`);return e.value%2!=0}],[`even`,e=>{if(!(e instanceof U))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 U||e instanceof W],[`integer`,e=>e instanceof U],[`iterable`,e=>e.type===`ArrayValue`||e.type===`StringValue`],[`mapping`,e=>e instanceof a_],[`sequence`,e=>e instanceof q||e instanceof a_||e instanceof G],[`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 f_(e){e.set(`false`,!1),e.set(`true`,!0),e.set(`none`,null),e.set(`raise_exception`,e=>{throw Error(e)}),e.set(`range`,Gg),e.set(`strftime_now`,Jg),e.set(`True`,!0),e.set(`False`,!1),e.set(`None`,null)}function p_(e){return e instanceof a_||e instanceof s_}function m_(e){return e instanceof U||e instanceof W||e instanceof K}function h_(e){return e instanceof K?Number(e.value):e.value}function g_(e,t){let n=t.split(`.`),r=e;for(let e of n)if(p_(r))r=r.value.get(e)??new X;else if(r instanceof q){let t=parseInt(e,10);if(!isNaN(t)&&t>=0&&t<r.value.length)r=r.value[t];else return new X}else return new X;return r}function __(e,t,n=!1){if(e instanceof Y&&t instanceof Y)return 0;if(e instanceof Y||t instanceof Y)throw Error(`Cannot compare ${e.type} with ${t.type}`);if(e instanceof X&&t instanceof X)return 0;if(e instanceof X||t instanceof X)throw Error(`Cannot compare ${e.type} with ${t.type}`);if(m_(e)&&m_(t)){let n=h_(e),r=h_(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 v_(e){if(e.type===`Identifier`)return{name:e.value};let t=e;return{name:t.key.value,defaultValue:t.value}}function y_(e){return e===`kwargs`||e===`varargs`}function b_(e,t){let n=/* @__PURE__ */ new Set,r=/* @__PURE__ */ new Set,i=e=>{y_(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(v_(e).name)},s=e=>{for(let t of e){let e=v_(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 fg)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;y_(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 x_=class{global;constructor(e){this.global=e??new d_}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 K(n.value==r.value);case`!=`:return new K(n.value!=r.value)}if(n instanceof X||r instanceof X){if(r instanceof X&&[`in`,`not in`].includes(e.operator.value))return new K(e.operator.value===`not in`);throw Error(`Cannot perform operation ${e.operator.value} on undefined values`)}if(n instanceof Y||r instanceof Y)throw Error(`Cannot perform operation on null values`);if(e.operator.value===`~`)return new G(n.value.toString()+r.value.toString());if(e.operator.value===`**`&&m_(n)&&m_(r)){let e=h_(n),t=h_(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 W||r instanceof W||t<0?new W(i):new U(i)}if((n instanceof U||n instanceof W)&&(r instanceof U||r instanceof W)){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 W||r instanceof W?new W(a):new U(a)}case`/`:return new W(t/i);case`//`:{let e=Math.floor(t/i);return n instanceof W||r instanceof W?new W(e):new U(e)}case`%`:{let e=t%i;return n instanceof W||r instanceof W?new W(e):new U(e)}case`<`:return new K(t<i);case`>`:return new K(t>i);case`>=`:return new K(t>=i);case`<=`:return new K(t<=i)}}else if(n instanceof q&&r instanceof q)switch(e.operator.value){case`+`:return new q(n.value.concat(r.value))}else if(r instanceof q){let t=r.value.find(e=>e.value===n.value)!==void 0;switch(e.operator.value){case`in`:return new K(t);case`not in`:return new K(!t)}}if(n instanceof G||r instanceof G)switch(e.operator.value){case`+`:return new G(n.value.toString()+r.value.toString())}if(n instanceof G&&r instanceof G)switch(e.operator.value){case`in`:return new K(r.value.includes(n.value));case`not in`:return new K(!r.value.includes(n.value))}if(n instanceof G&&r instanceof a_)switch(e.operator.value){case`in`:return new K(r.value.has(n.value));case`not in`:return new K(!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 q))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 a_))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 G(i_(e,{}));if(e instanceof q)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 U(e.value.length);case`reverse`:return new q(e.value.slice().reverse());case`sort`:return new q(e.value.slice().sort((e,t)=>__(e,t,!1)));case`join`:return new G(e.value.map(e=>e.value).join(``));case`string`:return new G(i_(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 q(n)}default:throw Error(`Unknown ArrayValue filter: ${r.value}`)}else if(e instanceof G)switch(r.value){case`length`:case`upper`:case`lower`:case`title`:case`capitalize`:{let t=e.builtins.get(r.value);if(t instanceof J)return t.value([],n);if(t instanceof U)return t;throw Error(`Unknown StringValue filter: ${r.value}`)}case`trim`:return new G(e.value.trim());case`indent`:return new G(e.value.split(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./chunk-B--rR4-3.js";import{t}from"./chunk-CasDHXCj.js";import{a as n,c as r,i,l as a,n as o,r as s,s as c,t as l}from"./chunk-
|
|
1
|
+
import{o as e}from"./chunk-B--rR4-3.js";import{t}from"./chunk-CasDHXCj.js";import{a as n,c as r,i,l as a,n as o,r as s,s as c,t as l}from"./chunk-DQRu-9wO.js";import{o as u,r as d}from"./chunk-C79eIU-4.js";import{t as f}from"./chunk-D-kV2FND.js";import{t as p}from"./chunk-CcMGBEzH.js";import{t as m}from"./chunk-CuwzD5GU.js";import{a as h}from"./chunk-Q4BZ9QN9.js";function g(e,t,n){return f(e,`config`,`readwrite`,e=>e.put({key:t,value:n})).then(()=>void 0)}async function _(e,t,n){let r=await i(e,t),{dirs:a,filename:o}=s(n),c=r;for(let e of a)c=await c.getDirectoryHandle(e);let l=await c.getFileHandle(o);try{let e=await l.createSyncAccessHandle(),t=e.getSize(),n=new Uint8Array(t);return e.read(n,{at:0}),e.close(),new TextDecoder(`utf-8`).decode(n)}catch{return(await l.getFile()).text()}}const v=/^[a-z][a-z0-9_]{0,63}$/;function y(e,t){if(!t||typeof t!=`object`)throw Error(`Tool at ${e} must be a JSON object`);let n=t,r=typeof n.name==`string`?n.name.trim():``,i=typeof n.description==`string`?n.description.trim():``,a=n.input_schema??n.parameters,o=n.execution??n.evaluation;if(!v.test(r))throw Error(`Tool name is invalid: ${r||`(missing)`}`);if(!i)throw Error(`Tool ${r} requires a description`);if(!a||typeof a!=`object`)throw Error(`Tool ${r} requires input_schema`);if(!o||typeof o!=`object`)throw Error(`Tool ${r} requires execution`);let s=o,c=s.type;if(c!==`bash`&&c!==`javascript`&&c!==`tool`)throw Error(`Tool ${r} execution type must be bash, javascript, or tool`);if(c===`tool`){if(typeof s.name!=`string`||!v.test(s.name))throw Error(`Tool ${r} execution requires a valid tool name`);return{name:r,description:i,input_schema:a,execution:{type:c,name:s.name,...s.input&&typeof s.input==`object`?{input:s.input}:{}},path:e}}let l=c===`bash`?`command`:`code`,u=s[l]??s.expression;if(typeof u!=`string`||u.trim()===``)throw Error(`Tool ${r} execution requires ${l}`);return{name:r,description:i,input_schema:a,execution:{type:c,[l]:u},path:e}}async function b(e,t=u){let n=[],r=[],a=t===`br:main`?[u]:[t,u];for(let t of a)try{let a=await i(e,t),o=[];async function s(e,t){for await(let[n,r]of e.entries()){let e=`${t}/${n}`;r.kind===`directory`?await s(r,e):n.endsWith(`.json`)&&e.startsWith(`.agents/tools/`)&&o.push(e)}}try{await s(await(await a.getDirectoryHandle(`.agents`)).getDirectoryHandle(`tools`),`.agents/tools`)}catch{continue}for(let i of o.sort())try{let r=y(i,JSON.parse(await _(e,t,i)));n.some(e=>e.name===r.name)||n.push(r)}catch(e){r.push(e instanceof Error?e.message:String(e))}}catch{}return{tools:n,diagnostics:r}}async function x(e,t=u,n){try{let{tools:r}=await b(e,t),i=r.find(e=>e.name===n)||null;if(!i)return null;let a=await p(e,d.DECLARATIVE_TOOLS_ENABLED);return Array.isArray(a)&&!a.includes(n)?null:i}catch{return null}}async function S(e,t,u,d){let{dirs:f,filename:p}=s(u);for(let s=0;s<2;s++)try{let r=await i(e,t);for(let e of f)r=await r.getDirectoryHandle(e,{create:!0});let a=await r.getFileHandle(p,{create:!0});try{await l(a,d);return}catch(t){if(!((t instanceof Error?t.message:String(t)).includes(`Writable file streams are not supported`)&&(await c(e)).type===`opfs`))throw t}let s=t.replace(/:/g,`-`);await o([n(),`groups`,s,...f,p],d);return}catch(e){if(s===0&&a(e)){r();continue}throw e}}async function C(e,t,n){try{return await _(e,t,n),!0}catch{return!1}}var w=/* @__PURE__ */ e(t(),1);const T=/^[a-z0-9](?:[a-z0-9]|-(?!-))*[a-z0-9]$|^[a-z0-9]$/;function E(e){try{let t=(0,w.default)(e);return{data:t.data&&typeof t.data==`object`?t.data:{},content:t.content||``}}catch{let t=e.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);if(t){let e=t[1],n=t[2]||``,r=e.split(/\r?\n/).map(e=>{let t=e.match(/^([a-zA-Z0-9_-]+):\s*(.+)$/);if(t){let[,e,n]=t,r=n.trim();if(r&&r!==`true`&&r!==`false`&&r!==`null`&&!r.startsWith(`"`)&&!r.startsWith(`'`)&&!r.startsWith(`[`)&&!r.startsWith(`{`)&&r!==`>`&&r!==`|`&&r!==`>-`&&r!==`|-`&&!/^-?\d+(?:\.\d+)?$/.test(r))return`${e}: ${JSON.stringify(r)}`}return e});try{let e=`---\n${r.join(`
|
|
2
2
|
`)}\n---\n${n}`,t=(0,w.default)(e);return{data:t.data&&typeof t.data==`object`?t.data:{},content:t.content||``}}catch{}let i={},a=e.match(/^name:\s*["']?([^"'\r\n]+)["']?/m);a&&(i.name=a[1].trim());let o=e.match(/^description:\s*(.+)$/m);if(o){let e=o[1].trim();(e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`))&&(e=e.slice(1,-1)),i.description=e}let s=e.match(/^user-invocable:\s*(true|false)/im);s&&(i[`user-invocable`]=s[1].toLowerCase()===`true`);let c=e.match(/^disable-model-invocation:\s*(true|false)/im);c&&(i[`disable-model-invocation`]=c[1].toLowerCase()===`true`);let l=e.match(/^allowed-tools:\s*["']?([^"'\r\n]+)["']?/m);l&&(i[`allowed-tools`]=l[1].trim());let u=e.match(/allowed-tools:\s*\n((?:\s*-\s*[^\r\n]+\r?\n?)+)/m);if(u){let e=u[1].split(/\r?\n/).map(e=>e.replace(/^\s*-\s*/,``).trim()).filter(Boolean);e.length>0&&(i[`allowed-tools`]=e)}return{data:i,content:n}}return{data:{},content:e}}}function D(e){if(typeof e==`string`){let t=e.trim();return t.length>0?t:void 0}if(Array.isArray(e)){let t=e.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(e=>e.length>0);return t.length>0?t.join(` `):void 0}}function O(e,t){let n=E(t),r=n.data,i=typeof r.name==`string`?r.name.trim():``,a=typeof r.description==`string`?r.description.trim():``;if(!i)throw Error(`Skill at ${e} requires a name`);if(!a)throw Error(`Skill ${i} requires a description`);if(i.length>64||!T.test(i))throw Error(`Skill name must be 1-64 lowercase characters and hyphens: ${i}`);if(a.length>1024)throw Error(`Skill ${i} description must be 1024 characters or fewer`);let o=e.replace(/\/SKILL\.md$/u,``),s=r.metadata&&typeof r.metadata==`object`?r.metadata:void 0,c=D(s?.[`allowed-tools`])||D(s?.allowedTools)||D(r[`allowed-tools`])||D(r.allowedTools),l=[];if(s){for(let[e,t]of Object.entries(s))if(e!==`execution`&&t!=null){if(e===`allowed-tools`||e===`allowedTools`)c&&l.push([e,c]);else if(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)l.push([e,String(t)]);else if(Array.isArray(t)){let n=t.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(Boolean);n.length>0&&l.push([e,n.join(` `)])}}}let u=l.length>0?Object.fromEntries(l):void 0,d=s?.execution,f;if(d!==void 0){if(!d||typeof d!=`object`||d.type!==`tools`||!Array.isArray(d.tools))throw Error(`Skill ${i} has invalid tools execution`);let e=d,t=typeof e.suppressToast==`boolean`?e.suppressToast:void 0,n=typeof e.suppressOutput==`boolean`?e.suppressOutput:void 0,r=e.tools.map(e=>({...e,...t!==void 0&&e.suppressToast===void 0?{suppressToast:t}:{},...n!==void 0&&e.suppressOutput===void 0?{suppressOutput:n}:{}}));f={type:`tools`,...t===void 0?{}:{suppressToast:t},...n===void 0?{}:{suppressOutput:n},tools:r}}return{name:i,description:a,...typeof r.license==`string`?{license:r.license}:{},...typeof r.compatibility==`string`?{compatibility:r.compatibility}:{},...u?{metadata:u}:{},...typeof c==`string`?{allowedTools:c}:{},...typeof r[`user-invocable`]==`boolean`?{userInvocable:r[`user-invocable`]}:typeof r[`user-invocable`]==`string`&&(r[`user-invocable`].toLowerCase()===`true`||r[`user-invocable`].toLowerCase()===`false`)?{userInvocable:r[`user-invocable`].toLowerCase()===`true`}:{},...typeof r[`disable-model-invocation`]==`boolean`?{disableModelInvocation:r[`disable-model-invocation`]}:typeof r[`disable-model-invocation`]==`string`&&(r[`disable-model-invocation`].toLowerCase()===`true`||r[`disable-model-invocation`].toLowerCase()===`false`)?{disableModelInvocation:r[`disable-model-invocation`].toLowerCase()===`true`}:{},...f?{execution:f}:{},body:n.content.trim(),path:e,basePath:o}}const k=new Set(m.map(e=>e.name)),A=/^[a-z][a-z0-9_]{0,63}$/;function j(e){return e?.targetSubdir?e.targetSubdir:e?.siteSlug?`imported/${e.siteSlug}`:`main`}async function M(e,t=u,n,r){let i=(n.name||``).trim();if(k.has(i))return{name:i,path:``,status:`failed`,error:`Cannot shadow built-in tool: ${i}`};if(!A.test(i))return{name:i,path:``,status:`failed`,error:`Invalid tool name: ${i}`};let a=`.agents/tools/${j(r)}/${i}.json`;try{if(await C(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();if(n.digest&&!await h(s,n.digest))return{name:i,path:a,status:`failed`,error:`Integrity verification failed for tool definition`};let c;try{c=JSON.parse(s)}catch{return{name:i,path:a,status:`failed`,error:`Downloaded tool definition is not valid JSON`}}if(y(a,c),await S(e,t,a,JSON.stringify(c,null,2)),r?.autoEnable){let t=await p(e,d.DECLARATIVE_TOOLS_ENABLED),n=new Set(Array.isArray(t)?t:[]);n.add(i),await g(e,d.DECLARATIVE_TOOLS_ENABLED,Array.from(n))}return{name:i,path:a,status:`imported`}}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function N(e,t=u,n,r){let i=(n.name||``).trim(),a=`.agents/scripts/${j(r)}/${i.endsWith(`.js`)||i.endsWith(`.mjs`)?i:`${i}.js`}`;try{if(await C(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();return n.digest&&!await h(s,n.digest)?{name:i,path:a,status:`failed`,error:`Integrity verification failed for script`}:(await S(e,t,a,s),{name:i,path:a,status:`imported`})}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function P(e,t=u,n,r){let i=(n.name||``).trim(),a=`.agents/skills/${j(r)}/${i}/SKILL.md`;try{if(await C(e,t,a)&&!r?.overwrite)return{name:i,path:a,status:`skipped`};let o=await(r?.fetchFn||globalThis.fetch)(n.url);if(!o.ok)return{name:i,path:a,status:`failed`,error:`HTTP ${o.status} ${o.statusText}`};let s=await o.text();return n.digest&&!await h(s,n.digest)?{name:i,path:a,status:`failed`,error:`Integrity verification failed for skill`}:(O(a,s),await S(e,t,a,s),{name:i,path:a,status:`imported`})}catch(e){return{name:i,path:a,status:`failed`,error:e instanceof Error?e.message:String(e)}}}async function F(e,t=u,n,r,i){let a={tools:[],skills:[],scripts:[],diagnostics:[]},o=new Set(r.toolNames||[]),s=new Set(r.skillNames||[]),c=new Set(r.scriptNames||[]),l=n.tools||[],d=n.skills||[],f=n.scripts||[];for(let e of d)if(s.has(e.name)){if(Array.isArray(e.tools))for(let t of e.tools)o.add(t.name);if(Array.isArray(e.scripts))for(let t of e.scripts)c.add(t.name)}for(let n of f)if(c.has(n.name)){let r=await N(e,t,n,i);a.scripts.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Script ${n.name}: ${r.error}`)}for(let n of l)if(o.has(n.name)){let r=await M(e,t,n,i);a.tools.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Tool ${n.name}: ${r.error}`)}for(let n of d)if(s.has(n.name)){let r=await P(e,t,n,i);a.skills.push(r),r.status===`failed`&&r.error&&a.diagnostics.push(`Skill ${n.name}: ${r.error}`)}return a}export{O as a,x as c,g as d,M as i,b as l,N as n,C as o,P as r,S as s,F as t,_ as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{r as orchestratorStore}from"./chunk-Du4qvxo_.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./chunk-
|
|
1
|
+
import{r as e}from"./chunk-C79eIU-4.js";import{n as t}from"./chunk-D-kV2FND.js";import{t as n}from"./chunk-CcMGBEzH.js";import r from"process";
|
|
2
2
|
/*! @license DOMPurify 3.4.16 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.16/LICENSE */
|
|
3
3
|
function i(e,t){this.v=e,this.k=t}function a(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function o(e){if(Array.isArray(e))return e}function s(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function c(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
4
4
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}
|
|
@@ -111,5 +111,5 @@ ${[...r].map(e=>` <url>\n <loc>${Lc(e)}</loc>\n </url>`).join(`
|
|
|
111
111
|
`).map(e=>{let t=e.trim();if(!t)return e;if(t.startsWith(`http://`)||t.startsWith(`https://`))try{let e=new URL(t),r=new URL(n);return e.protocol=r.protocol,e.host=r.host,e.pathname=(r.pathname.endsWith(`/`)?r.pathname.slice(0,-1):r.pathname)+e.pathname,e.toString()}catch{return n}if(t.startsWith(`/`))try{return new URL(t,n).toString()}catch{return e}return e}).join(`
|
|
112
112
|
`)}function $c(e,t,n){let r=e,i=t.site||{};if(i.title&&(r=r.replace(/<title>[^<]*<\/title>/iu,`<title>${Q(i.title)} - Not Found</title>`)),n){let e=n.endsWith(`/`)?n:n+`/`;r=r.replace(/l\.replace\(["']\/shadow-claw\/["']\)/gu,`l.replace("${Q(e)}")`)}return r}function el(e){let t=c.resolve(e),n=t.split(c.sep),r=n[n.length-1],i=n[n.length-2];return(r===`resources`||r===`deps`)&&i===`pages`?c.resolve(t,`../..`):r===`resources`||r===`deps`||r===`pages`?c.resolve(t,`..`):t}function tl(e){let t=c.resolve(e),n=c.basename(t);return n===`resources`||n===`deps`||n===`pages`?c.resolve(t,`..`):t}function nl(e,t,n){if(!e||typeof e!=`string`)return[];if(c.isAbsolute(e))return[e];let r=e.replace(/^(pages\/)?(resources\/|deps\/|main\/)?/,``),i=el(t);return[c.resolve(t,`resources`,r),c.resolve(t,`deps`,r),c.resolve(t,`main`,r),c.resolve(i,`pages`,`resources`,r),c.resolve(i,`pages`,`resources`,e),c.resolve(i,`pages`,`deps`,r),c.resolve(i,`pages`,`deps`,e),c.resolve(i,`resources`,r),c.resolve(i,`resources`,e),c.resolve(i,`deps`,r),c.resolve(i,`deps`,e),c.resolve(n,`pages`,`resources`,r),c.resolve(n,`pages`,`deps`,r),c.resolve(n,`resources`,r),c.resolve(n,`deps`,r),c.resolve(n,`pages`,e),c.resolve(n,`pages`,r),c.resolve(n,`pages`,`main`,r),c.resolve(i,`pages`,e),c.resolve(i,`pages`,r),c.resolve(i,`pages`,`main`,r),c.resolve(i,`pages`,`main`,e),c.resolve(t,e),c.resolve(t,r),c.resolve(n,e),c.resolve(n,r),c.resolve(i,e),c.resolve(i,r)]}async function rl(e,t,n){if(!n)return null;let r=await il([...Ba(e),...Ba(t),...Ba(el(e))]);if(!r)return null;let i=await Gc(r);return i?zc(i,n):null}async function il(e){for(let t of e)if(t)try{return await O(t),t}catch{}return null}async function al(e,t,n){let r=n?c.dirname(c.resolve(n)):m.cwd(),i=tl(r),a=el(r),o=[c.resolve(r,`resources`),c.resolve(r,`deps`),c.resolve(i,`resources`),c.resolve(i,`deps`),c.resolve(i,`pages`,`resources`),c.resolve(i,`pages`,`deps`),c.resolve(a,`resources`),c.resolve(a,`deps`),c.resolve(a,`pages`,`resources`),c.resolve(a,`pages`,`deps`)];for(let e of o)try{let n=await w(e,{withFileTypes:!0});for(let r of n){let n=c.join(e,r.name),i=c.join(t,r.name);r.isDirectory()?await b(n,i,{recursive:!0,force:!0}):r.isFile()&&(await S(c.dirname(i),{recursive:!0}),await y(n,i))}}catch{}let s=await il([...e.pages?.notFoundPath?nl(e.pages.notFoundPath,r,i):[],...e.branding?.notFoundPath?nl(e.branding.notFoundPath,r,i):[],...e.notFoundPath?nl(e.notFoundPath,r,i):[],...nl(`404.html`,r,i)]);if(s)try{await y(s,c.join(t,`404.html`)),console.log(` Copied custom 404.html: ${s}`)}catch(e){console.warn(` Warning: Could not copy custom 404.html: ${e.message}`)}let l=await il([...e.pwa?.manifestPath?nl(e.pwa.manifestPath,r,i):[],...e.manifestPath?nl(e.manifestPath,r,i):[],...nl(`manifest.json`,r,i)]);if(l)try{await y(l,c.join(t,`manifest.json`)),console.log(` Copied custom manifest.json: ${l}`)}catch(e){console.warn(` Warning: Could not copy custom manifest.json: ${e.message}`)}let u=!1;if(e.sitemapPath){let n=await il(nl(e.sitemapPath,r,i));if(n)try{let e=c.basename(n);await y(n,c.join(t,e)),console.log(` Copied custom sitemap: ${n} → ${e}`),u=!0}catch(e){console.warn(` Warning: Could not copy custom sitemap: ${e.message}`)}}if(!u){let e=await il(nl(`sitemap.xml`,r,i));if(e)try{await y(e,c.join(t,`sitemap.xml`)),console.log(` Copied custom sitemap.xml: ${e}`)}catch(e){console.warn(` Warning: Could not copy custom sitemap.xml: ${e.message}`)}let n=await il(nl(`sitemap.txt`,r,i));if(n)try{await y(n,c.join(t,`sitemap.txt`)),console.log(` Copied custom sitemap.txt: ${n}`)}catch(e){console.warn(` Warning: Could not copy custom sitemap.txt: ${e.message}`)}}let d=e.overwriteAssets===!0||e.branding?.overwriteAssets===!0,f=Array.isArray(e.assets)?e.assets:[e.assetsDir,e.assets].filter(Boolean),p=Array.from(new Set([...f.flatMap(e=>nl(e,r,i)),...nl(`assets`,r,i)].filter(e=>e&&typeof e==`string`))),h=c.join(t,`assets`);if(d)try{await D(h,{recursive:!0,force:!0}),await S(h,{recursive:!0}),console.log(` Cleared dist public assets for complete template asset overwrite.`)}catch{}let g=/* @__PURE__ */ new Set,_=[...p].reverse();for(let e of _)if(!g.has(e))try{let t=await O(e);if(g.add(e),t.isDirectory())await b(e,h,{recursive:!0,force:!0}),console.log(` Copied custom assets: ${e} → ${h}`);else if(t.isFile()){let t=c.basename(e);await S(h,{recursive:!0}),await y(e,c.join(h,t)),console.log(` Copied custom asset file: ${e} → ${h}`)}}catch{}}async function ol(e,t,n){let r=e.theme||{};if(!r.stylesheet)return;let i=n?c.dirname(c.resolve(n)):m.cwd(),a=tl(i),o=await il(nl(r.stylesheet,i,a));if(!o)return;let s=r.stylesheet.replace(/^(pages\/)?(resources\/|deps\/|main\/)?/,``),l=c.join(t,s);try{await S(c.dirname(l),{recursive:!0}),await y(o,l),console.log(` Copied theme stylesheet: ${o} → ${l}`)}catch(e){console.warn(` Warning: Could not copy theme stylesheet ${o}: ${e.message}`)}}async function sl(e,t,n){let r=(e.customElements&&typeof e.customElements==`object`&&!Array.isArray(e.customElements)?e.customElements?.scripts:void 0)||e.scripts||[];if(!Array.isArray(r)||r.length===0)return;let i=n?c.dirname(c.resolve(n)):m.cwd(),a=tl(i);for(let e of r){let n=typeof e==`string`?e:e?.src;if(!n||n.startsWith(`http://`)||n.startsWith(`https://`)||n.startsWith(`//`))continue;let r=await il(nl(n,i,a));if(r){let e=n.replace(/^(pages\/)?(resources\/|deps\/|main\/)?/,``),i=c.join(t,e);try{await S(c.dirname(i),{recursive:!0}),await y(r,i),console.log(` Copied custom script: ${r} → ${i}`)}catch(e){console.warn(` Warning: Could not copy custom script ${r}: ${e.message}`)}}}}async function cl(e,t,n){let r=e.branding||{},i=e.pwa||{},a=n?c.dirname(c.resolve(n)):m.cwd(),o=tl(a),s=[],l=await il(nl(i.manifestPath||e.manifestPath||`manifest.json`,a,o));if(l){let e=await Gc(l);e&&Array.isArray(e.icons)&&(s=e.icons.map(e=>e?.src).filter(Boolean))}let u=[r.faviconPath,r.appleTouchIconPath,`assets/icons/favicon.svg`,`assets/icons/favicon.ico`,`favicon.svg`,`favicon.ico`,`pages/resources/assets/icons/favicon.svg`,`pages/resources/assets/icons/favicon.ico`,`pages/resources/favicon.svg`,`pages/deps/favicon.svg`,`pages/main/favicon.svg`,...Array.isArray(i.icons)?i.icons.map(e=>e.src):[],...s].filter(e=>!!e&&typeof e==`string`&&!e.startsWith(`http://`)&&!e.startsWith(`https://`)&&!e.startsWith(`//`));if(u.length===0)return;let d=/* @__PURE__ */ new Set,f=/* @__PURE__ */ new Set;for(let e of u){if(d.has(e))continue;d.add(e);let n=await il(nl(e,a,o));if(n){let r=e.replace(/^(pages\/)?(resources\/|deps\/|main\/)?/,``),i=c.join(t,r);if(f.has(i))continue;f.add(i);try{await S(c.dirname(i),{recursive:!0}),await y(n,i),console.log(` Copied branding asset: ${n} → ${i}`)}catch(e){console.warn(` Warning: Could not copy branding asset ${n}: ${e.message}`)}}}}async function ll(e,t){let n=await Gc(t);if(!n)return console.log(`No site-config.json found — skipping site configuration.`),{applied:!1};console.log(`Applying site-config.json...`);let r=m.env.PAGES_ORIGIN||``,i=m.env.PAGES_BASE_PATH||``;await al(n,e,t);let a=t?c.dirname(c.resolve(t)):m.cwd(),o=tl(a),s;if(n.sidebar?.slotHtml)s=n.sidebar.slotHtml;else if(n.sidebar?.sections)s=Jc(n.sidebar.sections);else{let e=await il([n.sidebar?.slotPath,`pages/main/sidebar.html`,`pages/sidebar.html`,`sidebar.html`,`resources/sidebar.html`].filter(Boolean).flatMap(e=>nl(e,a,o)));e&&(s=await Kc(e)??void 0,console.log(` Found slotted sidebar: ${e}`))}let l=c.join(e,`index.html`),u=await Kc(l);u&&(await qc(l,Yc(u,n,s)),console.log(` Patched index.html`));let d=c.join(e,`manifest.json`),f=await Kc(d);f&&(await qc(d,Zc(f,n)),console.log(` Patched manifest.json`));let p=c.join(e,`sitemap.xml`),h=!!await Kc(c.join(e,`sitemap.txt`)),g=!1;if(!await Kc(p)&&!h){let e=await rl(a,o,r||n.branding?.siteUrl||``);e&&(await qc(p,e),g=!0,console.log(` Generated sitemap.xml from routes.json`))}let _=g?``:await Kc(p);_&&(await qc(p,Qc(_,r)),console.log(` Patched sitemap.xml`));let v=c.join(e,`sitemap.txt`),y=await Kc(v);y&&(await qc(v,Qc(y,r)),console.log(` Patched sitemap.txt`));let b=c.join(e,`404.html`),x=await Kc(b);return x&&(await qc(b,$c(x,n,i)),console.log(` Patched 404.html`)),await ol(n,e,t),await sl(n,e,t),await cl(n,e,t),console.log(`Site configuration applied successfully.`),{applied:!0}}async function ul(){let[e,t]=m.argv.slice(2);(!e||!t)&&(console.error(`Usage: node bin/site-config/apply.mjs <distPublicDir> <siteConfigPath>`),m.exit(1)),await ll(e,t)}m.argv[1]&&c.resolve(m.argv[1])===c.resolve(p(import.meta.url))&&ul().catch(e=>{console.error(`site-config/apply.ts failed:`,e),m.exit(1)});function dl(){return[`const shadowClawServiceWorkerTrustedTypesFactory = Reflect.get(self, "trustedTypes");`,`let shadowClawServiceWorkerTrustedTypesPolicy = null;`,`if (shadowClawServiceWorkerTrustedTypesFactory && typeof shadowClawServiceWorkerTrustedTypesFactory.createPolicy === "function") {`,` try {`,` if (typeof shadowClawServiceWorkerTrustedTypesFactory.getPolicy === "function") {`,` shadowClawServiceWorkerTrustedTypesPolicy =`,` shadowClawServiceWorkerTrustedTypesFactory.getPolicy("default") ||`,` shadowClawServiceWorkerTrustedTypesFactory.getPolicy("shadowclaw-sandbox") ||`,` null;`,` }`,``,` if (!shadowClawServiceWorkerTrustedTypesPolicy) {`,` shadowClawServiceWorkerTrustedTypesPolicy =`,` shadowClawServiceWorkerTrustedTypesFactory.createPolicy("default", {`,` createHTML: (input) => input,`,` createScriptURL: (input) => input,`,` });`,` }`,` } catch {`,` // Ignore policy creation failures and fall back to raw importScripts.`,` }`,`}`,``,`const shadowClawNativeImportScripts = typeof importScripts === "function" ? importScripts.bind(self) : null;`,``,`const shadowClawImportScripts = (...urls) => {`,` if (!shadowClawNativeImportScripts) {`,` return;`,` }`,``,` if (!shadowClawServiceWorkerTrustedTypesPolicy || typeof shadowClawServiceWorkerTrustedTypesPolicy.createScriptURL !== "function") {`,` shadowClawNativeImportScripts(...urls);`,``,` return;`,` }`,``,` shadowClawNativeImportScripts(...urls.map((url) => shadowClawServiceWorkerTrustedTypesPolicy.createScriptURL(url)));`,`};`].join(`
|
|
113
113
|
`)}function fl(e){return e.includes(`shadowClawImportScripts`)||!e.includes(`if(!self.define){`)||!e.includes(`importScripts(`)?e:`${dl()}\n${e.replace(/importScripts\(/g,`shadowClawImportScripts(`)}`}const pl=d(m.cwd(),`dist/public/service-worker.js`);async function ml(e=pl,{readFileImpl:t=C,writeFileImpl:n=k,patchImpl:r=fl,logImpl:i=console.log}={}){let a=await t(e,`utf8`),o=r(a);o!==a&&(await n(e,o,`utf8`),i(`Patched Trusted Types imports in ${e}`))}async function hl(){await ml(m.argv[2]||pl)}m.argv[1]&&c.resolve(m.argv[1])===c.resolve(p(import.meta.url))&&hl().catch(e=>{console.error(e),m.exit(1)});async function gl(e,{writeFileImpl:t=k}={}){let r=e||l(n(import.meta.url),`dist`,`public`);await t(l(r,`.nojekyll`),``,`utf-8`)}m.argv[1]&&c.resolve(m.argv[1])===c.resolve(p(import.meta.url))&&await gl();const _l=n(import.meta.url);async function $(e){try{return await O(e),!0}catch{return!1}}async function vl(e={}){let t=e.quiet??(A.env.NODE_ENV===`test`&&!A.env.VERBOSE),n=e.stdio??(A.env.NODE_ENV===`test`&&!A.env.VERBOSE?`pipe`:`inherit`),r=(...e)=>{t||console.log(...e)};async function i(e,r={}){!t&&!r.quiet&&console.log(`> ${e}`);let i=r.stdio??n;v(e,{stdio:i,...r})}let a=d(e.contentRoot||g.SHADOWCLAW_CONTENT_ROOT||A.cwd()),o=d(e.toolchainRoot||_l),s=a===o,{isProduction:c,copyAllAssets:u,prerenderPages:f,prerenderMainMemory:p}=Ha({...g,...e.isProduction===void 0?{}:{NODE_ENV:e.isProduction?`production`:`development`},...e.copyAllAssets===void 0?{}:{COPY_ALL_ASSETS:String(e.copyAllAssets)},...e.prerenderPages===void 0?{}:{PRERENDER_PAGES:String(e.prerenderPages)},...e.prerenderMainMemory===void 0?{}:{PRERENDER_MAIN_MEMORY:String(e.prerenderMainMemory)}});if(s){if(h(_l),await Fa(`dist/public`),await S(`dist/public/assets`,{recursive:!0}),u)await b(`assets`,`dist/public`,{recursive:!0});else{await b(`assets/icons`,`dist/public/assets/icons`,{recursive:!0}),await b(`assets/screenshots`,`dist/public/assets/screenshots`,{recursive:!0});try{await b(`assets/fonts`,`dist/public/assets/fonts`,{recursive:!0})}catch{}}await Ia([`pages/resources`,`pages/deps`,`resources`,`deps`,`pages/assets`,`pages/main/assets`],`dist/public`);for(let e of za())await La(e.sources,e.dest,e.opts||{});try{await b(`e2e/README.md`,`dist/public/e2e/README.md`)}catch{}try{await b(`pages`,`dist/public/pages`,{recursive:!0})}catch{}try{await b(`pages/main`,`dist/public/files/main`,{recursive:!0})}catch{}try{await b(`pages/main`,`dist/public/static-main`,{recursive:!0})}catch{}try{await b(`.agents/skills`,`dist/public/.agents/skills`,{recursive:!0})}catch{}try{await b(`.agents/tools`,`dist/public/.agents/tools`,{recursive:!0})}catch{}try{await b(`.agents/scripts`,`dist/public/.agents/scripts`,{recursive:!0})}catch{}if(await $(`.agents/skills`))try{let{generateSkillsIndex:e}=await import(`./chunk-B10_-GxS.js`);await e(_l)}catch(e){console.warn(`Notice: Failed to auto-generate agent-skills index:`,e)}if(await $(`.well-known`))try{await b(`.well-known`,`dist/public/.well-known`,{recursive:!0,force:!0})}catch{}await i(`npm run -s rolldown`);let t=await Ra(Va())||`pages/site-config.json`;p?await Ac({indexPath:`dist/public/index.html`,sourcePath:`pages/main`,prerenderPages:f,siteConfigPath:t}):await Ac({indexPath:`dist/public/index.html`,noSeed:!0,siteConfigPath:t});try{await ll(`dist/public`,t)}catch{}try{let e=JSON.parse(await C(`package.json`,`utf8`));if(e.version){let t=`dist/public/index.html`,n=await C(t,`utf8`);await k(t,n.replace(/<meta\s+name="version"[^>]*>/,`<meta name="version" content="${e.version}" />`),`utf8`);for(let t of[`.well-known/mcp.json`,`.well-known/mcp/server-card.json`]){let n=l(`dist/public`,t);if(await $(n))try{let t=JSON.parse(await C(n,`utf8`));t.version!==e.version&&(t.version=e.version,await k(n,JSON.stringify(t,null,2)+`
|
|
114
|
-
`,`utf8`))}catch{}}}}catch{}if(c){r(`Running production post-build steps...`);let t=e.pagesOrigin||g.PAGES_ORIGIN,n=e.basePath||(g.PAGES_BASE_PATH??`/shadow-claw/`);if(r(` PAGES_ORIGIN : ${t||`(relative ./)`}`),r(` PAGES_BASE_PATH: ${n}`),t)try{let e=`dist/public/manifest.json`,n=await C(e,`utf8`),r=JSON.parse(n);r.start_url&&(r.start_url=t,await k(e,JSON.stringify(r,null,2),`utf8`))}catch{}try{let e=`dist/public/index.html`,t=await C(e,`utf8`);t=t.replace(/<base\s+href="[^"]*"\s*\/?>/i,`<base href="${n}" />`),await k(e,t,`utf8`)}catch{}await gl(`dist/public`);let a=``;try{a=v(`npm run -s build:pkg:get:meta`,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{}a&&await i(`npm run -s build:pkg:meta "${a}"`)}await Fc({publicDir:`dist/public`,routesPath:await Ra(Ba())||`pages/routes.json`,sourcePath:`pages/main`,prerenderPages:f,siteConfigPath:t}),await i(`npm run -s build:service-worker`);let n=`dist/public/service-worker.js`;await $(n)&&await ml(n,{logImpl:()=>{}}),r(`Build completed successfully.`);return}let m=e.outDir||`dist/public`,_=d(a,m);await S(_,{recursive:!0}),await S(l(_,`assets`),{recursive:!0});let y=l(o,`dist/public`);await $(l(y,`index.js`))||(r(`Building ShadowClaw core toolchain...`),await Fa(l(o,`dist/public`)),await Fa(l(o,`dist-electron`)),await i(`npm run -s rolldown`,{cwd:o})),await b(y,_,{recursive:!0,filter:e=>!(e.includes(`/assets/cache/`)||e.includes(`\\assets\\cache\\`)||e.includes(`/.cache/`)||e.includes(`\\.cache\\`))}),a!==o&&(await Fa(l(_,`sitemap.xml`)),await Fa(l(_,`sitemap.txt`)));let x=l(a,`assets`);await $(x)&&(u?await b(x,_,{recursive:!0,force:!0}):(await $(l(x,`icons`))&&await b(l(x,`icons`),l(_,`assets/icons`),{recursive:!0,force:!0}),await $(l(x,`screenshots`))&&await b(l(x,`screenshots`),l(_,`assets/screenshots`),{recursive:!0,force:!0}),await $(l(x,`fonts`))&&await b(l(x,`fonts`),l(_,`assets/fonts`),{recursive:!0,force:!0}))),await Ia([`pages/resources`,`pages/deps`,`resources`,`deps`,`pages/assets`,`pages/main/assets`],_,{baseDir:a});let w=za({contentRoot:a,toolchainRoot:o,distPublicDir:_});for(let e of w)await La(e.sources,e.dest,e.opts||{});let T=l(a,`pages`);await $(T)&&await b(T,l(_,`pages`),{recursive:!0,force:!0});let E=l(a,`pages/main`);await $(E)&&(await b(E,l(_,`files/main`),{recursive:!0,force:!0}),await b(E,l(_,`static-main`),{recursive:!0,force:!0}));let D=l(a,`.agents/skills`);await $(D)&&await b(D,l(_,`.agents/skills`),{recursive:!0,force:!0});let O=l(o,`.agents/skills`);a!==o&&await $(O)&&await b(O,l(_,`.agents/skills`),{recursive:!0,force:!1,errorOnExist:!1});let j=l(a,`.agents/tools`);if(await $(j))await b(j,l(_,`.agents/tools`),{recursive:!0,force:!0});else{let e=l(o,`.agents/tools`);await $(e)&&await b(e,l(_,`.agents/tools`),{recursive:!0,force:!0})}let ee=l(a,`.agents/scripts`);if(await $(ee))await b(ee,l(_,`.agents/scripts`),{recursive:!0,force:!0});else{let e=l(o,`.agents/scripts`);await $(e)&&await b(e,l(_,`.agents/scripts`),{recursive:!0,force:!0})}let te=l(o,`.well-known`);await $(te)&&await b(te,l(_,`.well-known`),{recursive:!0,force:!0});let M=l(a,`.well-known`);if(a!==o&&await $(M)&&await b(M,l(_,`.well-known`),{recursive:!0,force:!0}),await $(l(_,`.agents/skills`)))try{let{generateSkillsIndex:e}=await import(`./chunk-B10_-GxS.js`);if(await e(_,{metadataRoot:a,outDir:`.well-known/agent-skills`,toolchainRoot:o,includeBundled:!0}),await $(D))try{await e(a,{toolchainRoot:o,includeBundled:!0})}catch{}}catch(e){console.warn(`Notice: Failed to auto-generate agent-skills index:`,e)}let N=await Ra(Va(a)),P=N||l(a,`pages/site-config.json`),ne=p;if(e.prerenderMainMemory===void 0&&N)try{JSON.parse(await C(N,`utf8`))?.settings?.overridePrerenderSkeleton===!1&&(ne=!1,r(` site-config: overridePrerenderSkeleton=false — skeleton overlay disabled.`))}catch{}let F=l(_,`index.html`);ne&&await $(E)?await Ac({indexPath:F,sourcePath:E,prerenderPages:f,siteConfigPath:P}):await Ac({indexPath:F,noSeed:!0,siteConfigPath:P});try{await ll(_,P)}catch{}let I=c?e.basePath||g.PAGES_BASE_PATH||`/`:e.basePath||`/`;try{let e=await C(F,`utf8`);e=e.replace(/<base\s+href="[^"]*"\s*\/?>/i,`<base href="${I}" />`);let t=``;try{let e=await Ra([l(a,`package.json`),l(o,`package.json`)]);e&&(t=JSON.parse(await C(e,`utf8`)).version||``)}catch{}if(t){e=e.replace(/<meta\s+name="version"[^>]*>/,`<meta name="version" content="${t}" />`);for(let e of[`.well-known/mcp.json`,`.well-known/mcp/server-card.json`]){let n=l(_,e);if(await $(n))try{let e=JSON.parse(await C(n,`utf8`));e.version!==t&&(e.version=t,await k(n,JSON.stringify(e,null,2)+`
|
|
114
|
+
`,`utf8`))}catch{}}}}catch{}if(c){r(`Running production post-build steps...`);let t=e.pagesOrigin||g.PAGES_ORIGIN,n=e.basePath||(g.PAGES_BASE_PATH??`/shadow-claw/`);if(r(` PAGES_ORIGIN : ${t||`(relative ./)`}`),r(` PAGES_BASE_PATH: ${n}`),t)try{let e=`dist/public/manifest.json`,n=await C(e,`utf8`),r=JSON.parse(n);r.start_url&&(r.start_url=t,await k(e,JSON.stringify(r,null,2),`utf8`))}catch{}try{let e=`dist/public/index.html`,t=await C(e,`utf8`);t=t.replace(/<base\s+href="[^"]*"\s*\/?>/i,`<base href="${n}" />`),await k(e,t,`utf8`)}catch{}await gl(`dist/public`);let a=``;try{a=v(`npm run -s build:pkg:get:meta`,{encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{}a&&await i(`npm run -s build:pkg:meta "${a}"`)}await Fc({publicDir:`dist/public`,routesPath:await Ra(Ba())||`pages/routes.json`,sourcePath:`pages/main`,prerenderPages:f,siteConfigPath:t}),await i(`npm run -s build:service-worker`);let n=`dist/public/service-worker.js`;await $(n)&&await ml(n,{logImpl:()=>{}}),r(`Build completed successfully.`);return}let m=e.outDir||`dist/public`,_=d(a,m);await S(_,{recursive:!0}),await S(l(_,`assets`),{recursive:!0});let y=l(o,`dist/public`);await $(l(y,`index.js`))||(r(`Building ShadowClaw core toolchain...`),await Fa(l(o,`dist/public`)),await Fa(l(o,`dist-electron`)),await i(`npm run -s rolldown`,{cwd:o})),await b(y,_,{recursive:!0,filter:e=>!(e.includes(`/assets/cache/`)||e.includes(`\\assets\\cache\\`)||e.includes(`/.cache/`)||e.includes(`\\.cache\\`)||e.includes(`/cache/`)||e.includes(`\\cache\\`)||e.endsWith(`/cache`)||e.endsWith(`\\cache`))}),a!==o&&(await Fa(l(_,`sitemap.xml`)),await Fa(l(_,`sitemap.txt`)));let x=l(a,`assets`);await $(x)&&(u?await b(x,_,{recursive:!0,force:!0}):(await $(l(x,`icons`))&&await b(l(x,`icons`),l(_,`assets/icons`),{recursive:!0,force:!0}),await $(l(x,`screenshots`))&&await b(l(x,`screenshots`),l(_,`assets/screenshots`),{recursive:!0,force:!0}),await $(l(x,`fonts`))&&await b(l(x,`fonts`),l(_,`assets/fonts`),{recursive:!0,force:!0}))),await Ia([`pages/resources`,`pages/deps`,`resources`,`deps`,`pages/assets`,`pages/main/assets`],_,{baseDir:a});let w=za({contentRoot:a,toolchainRoot:o,distPublicDir:_});for(let e of w)await La(e.sources,e.dest,e.opts||{});let T=l(a,`pages`);await $(T)&&await b(T,l(_,`pages`),{recursive:!0,force:!0});let E=l(a,`pages/main`);await $(E)&&(await b(E,l(_,`files/main`),{recursive:!0,force:!0}),await b(E,l(_,`static-main`),{recursive:!0,force:!0}));let D=l(a,`.agents/skills`);await $(D)&&await b(D,l(_,`.agents/skills`),{recursive:!0,force:!0});let O=l(o,`.agents/skills`);a!==o&&await $(O)&&await b(O,l(_,`.agents/skills`),{recursive:!0,force:!1,errorOnExist:!1});let j=l(a,`.agents/tools`);if(await $(j))await b(j,l(_,`.agents/tools`),{recursive:!0,force:!0});else{let e=l(o,`.agents/tools`);await $(e)&&await b(e,l(_,`.agents/tools`),{recursive:!0,force:!0})}let ee=l(a,`.agents/scripts`);if(await $(ee))await b(ee,l(_,`.agents/scripts`),{recursive:!0,force:!0});else{let e=l(o,`.agents/scripts`);await $(e)&&await b(e,l(_,`.agents/scripts`),{recursive:!0,force:!0})}let te=l(o,`.well-known`);await $(te)&&await b(te,l(_,`.well-known`),{recursive:!0,force:!0});let M=l(a,`.well-known`);if(a!==o&&await $(M)&&await b(M,l(_,`.well-known`),{recursive:!0,force:!0}),await $(l(_,`.agents/skills`)))try{let{generateSkillsIndex:e}=await import(`./chunk-B10_-GxS.js`);if(await e(_,{metadataRoot:a,outDir:`.well-known/agent-skills`,toolchainRoot:o,includeBundled:!0}),await $(D))try{await e(a,{toolchainRoot:o,includeBundled:!0})}catch{}}catch(e){console.warn(`Notice: Failed to auto-generate agent-skills index:`,e)}let N=await Ra(Va(a)),P=N||l(a,`pages/site-config.json`),ne=p;if(e.prerenderMainMemory===void 0&&N)try{JSON.parse(await C(N,`utf8`))?.settings?.overridePrerenderSkeleton===!1&&(ne=!1,r(` site-config: overridePrerenderSkeleton=false — skeleton overlay disabled.`))}catch{}let F=l(_,`index.html`);ne&&await $(E)?await Ac({indexPath:F,sourcePath:E,prerenderPages:f,siteConfigPath:P}):await Ac({indexPath:F,noSeed:!0,siteConfigPath:P});try{await ll(_,P)}catch{}let I=c?e.basePath||g.PAGES_BASE_PATH||`/`:e.basePath||`/`;try{let e=await C(F,`utf8`);e=e.replace(/<base\s+href="[^"]*"\s*\/?>/i,`<base href="${I}" />`);let t=``;try{let e=await Ra([l(a,`package.json`),l(o,`package.json`)]);e&&(t=JSON.parse(await C(e,`utf8`)).version||``)}catch{}if(t){e=e.replace(/<meta\s+name="version"[^>]*>/,`<meta name="version" content="${t}" />`);for(let e of[`.well-known/mcp.json`,`.well-known/mcp/server-card.json`]){let n=l(_,e);if(await $(n))try{let e=JSON.parse(await C(n,`utf8`));e.version!==t&&(e.version=t,await k(n,JSON.stringify(e,null,2)+`
|
|
115
115
|
`,`utf8`))}catch{}}}await k(F,e,`utf8`)}catch{}if(c){r(`Running production post-build steps...`);let t=e.pagesOrigin||g.PAGES_ORIGIN;if(r(` PAGES_ORIGIN : ${t||`(relative ./)`}`),r(` PAGES_BASE_PATH: ${I}`),t)try{let e=l(_,`manifest.json`),n=await C(e,`utf8`),r=JSON.parse(n);r.start_url&&(r.start_url=t,await k(e,JSON.stringify(r,null,2),`utf8`))}catch{}await k(l(_,`.nojekyll`),``,`utf8`);let n=``;try{n=v(`git rev-parse HEAD`,{cwd:a,encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{try{n=v(`git rev-parse HEAD`,{cwd:o,encoding:`utf8`,stdio:[`ignore`,`pipe`,`ignore`]}).trim()}catch{}}if(n){let e=await C(F,`utf8`);await k(F,e.replace(/<meta\s+name="revision"[^>]*>/,`<meta name="revision" content="${n}" />`),`utf8`)}}await Fc({publicDir:_,routesPath:await Ra(Ba(a))||l(a,`pages/routes.json`),sourcePath:await $(E)?E:l(o,`pages/main`),prerenderPages:f,siteConfigPath:P});let L=l(_,`service-worker.js`);await $(L)&&await ml(L,{logImpl:()=>{}}),r(`Build completed successfully.`)}A.argv[1]&&d(A.argv[1])===d(p(import.meta.url))&&vl().catch(e=>{console.error(e),_(1)});export{vl as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./chunk-uAI_Zi6n.js";import{existsSync as t}from"node:fs";import n from"node:path";import{pathToFileURL as r}from"node:url";import i from"node:process";const a=e(import.meta.url);let o=null;async function s(){if(o)return o;let e=i.env.NODE_ENV===`test`,s=n.join(a,`dist/headless-agent.js`);if(!e&&t(s))return o=await import(r(s).href),o;try{return o={...await import(`./chunk-
|
|
1
|
+
import{t as e}from"./chunk-uAI_Zi6n.js";import{existsSync as t}from"node:fs";import n from"node:path";import{pathToFileURL as r}from"node:url";import i from"node:process";const a=e(import.meta.url);let o=null;async function s(){if(o)return o;let e=i.env.NODE_ENV===`test`,s=n.join(a,`dist/headless-agent.js`);if(!e&&t(s))return o=await import(r(s).href),o;try{return o={...await import(`./chunk-DVbNkQRL.js`)},o}catch{try{return o={...await import(`./chunk-DVbNkQRL.js`)},o}catch(e){if(t(s))return o={...await import(r(s).href)},o;throw e}}}export{s as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{t as getAgentCore}from"./chunk-CtfWY4G6.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import e from"node:fs";import t from"node:path";import n from"node:process";import{Buffer as r}from"buffer";import i from"node:readline/promises";import a from"node:tty";function o(e,t=1){if(!Number.isFinite(e)||e<=0)return`0 B`;let n=1024,r=t<0?0:t,i=[`B`,`KB`,`MB`,`GB`,`TB`],a=Math.floor(Math.log(e)/Math.log(n)),o=Math.min(a,i.length-1);return`${parseFloat((e/n**o).toFixed(r))} ${i[o]}`}function s(e={}){let{modelId:t=`model`,stream:r=n.stderr,barWidth:i=24,isTTY:a=!!(r&&typeof r==`object`&&r.isTTY),enabled:s=!0}=e;if(!s)return{update:()=>{},finish:()=>{},fail:e=>{r?.write&&r.write(`${e||`✖ Failed to download ${t}.`}\n`)}};let c=[],l=/* @__PURE__ */ new Map,u=!1;function d(e){let t=Math.round(Math.max(0,Math.min(1,e))*i),n=i-t;return`[`+`=`.repeat(t)+(t<i?`>`:``)+` `.repeat(Math.max(0,n-+(t<i)))+`]`}function f(e,t=0,n=0){let i=l.get(e);return i||(i={lineIndex:c.length,lastPct:-1,lastRenderedTime:0,loaded:t,total:n,isDone:!1},l.set(e,i),c.push(e),a&&c.length>1&&r?.write&&r.write(`
|
|
2
|
-
`)),i}function p(e,t){if(!a||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,o=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${o}\x1b[${s}B\r`):r.write(`\r\x1b[2K${o}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!a&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(a){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}}else if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(a){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${o(l)} / ${o(u)})`:l>0&&(i=` (${o(l)})`);let a=n?` [${n}]`:``;p(n,`Downloading ${t}${a} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${o(l)} / ${o(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}}else if(e.status===`done`){let i=l.get(n);if(i){if(i.isDone=!0,a){let e=d(1),r=i.total||i.loaded,a=r>0?` (${o(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${a}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`)}else!a&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;a&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;a&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const c=[{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model (Default, 128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model (128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B GQA — chat only (template has no tool support)`,contextLength:32e3,supportsTools:!1,recommended:!1}],l=`onnx-community/gemma-4-E2B-it-ONNX`,u=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0}];function d(e){if(!e)return;let t=c.find(t=>t.id===e||t.id.toLowerCase()===e.toLowerCase());if(t)return t.supportsTools;let n=u.find(t=>t.id===e||t.fileName===e||t.id.toLowerCase()===e.toLowerCase()||t.fileName.toLowerCase()===e.toLowerCase());if(n)return n.supportsTools}function f(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function p(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function m(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||u.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function h(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=p(i);if(!e.existsSync(o))return!1;let s=u.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),c=s?s.fileName:t.basename(r),l=c.endsWith(`.llamafile`)?c:`${c}.llamafile`,d=t.join(o,l),f=t.join(o,`${l}.part`);try{if(e.existsSync(f))return!1;if(e.existsSync(d))return e.statSync(d).size>0}catch{}return!1}function g(e){return e?t.resolve(e,`agentfile`):t.resolve(n.cwd(),`assets/cache/agentfile`)}function _(e){return!e||typeof e!=`string`?!1:e.endsWith(`.agentfile`)||e.includes(`agentfile`)}function v(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=[g(i),p(i)],s=t.basename(r),c=s.endsWith(`.agentfile`)?s:`${s}.agentfile`;for(let n of o){if(!e.existsSync(n))continue;let r=t.join(n,c),i=t.join(n,`${c}.part`);try{if(e.existsSync(i))return!1;if(e.existsSync(r)&&e.statSync(r).size>0)return!0}catch{}}return!1}function y(n){let r=!1,i=!1;function a(n){let o;try{o=e.readdirSync(n,{withFileTypes:!0})}catch{return}for(let e of o)if(e.isDirectory())a(t.join(n,e.name));else if(e.isFile()){let t=e.name;(t.endsWith(`.part`)||t.includes(`.tmp`))&&(r=!0),t.endsWith(`.onnx`)&&!t.endsWith(`.part`)&&!t.includes(`.tmp`)&&(i=!0)}}return a(n),{hasPartFiles:r,hasOnnxFiles:i}}function b(n,r){if(_(n))return v(n,r);if(m(n))return h(n,r);let i=f(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)){let{hasPartFiles:e,hasOnnxFiles:n}=y(t);if(!e&&n)return!0}}catch{}return!1}function x(e){return c.map(t=>({...t,cached:b(t.id,e)}))}function S(e){return u.map(t=>({...t,cached:h(t.fileName,e)}))}async function C(e={}){let t=e.limit??100,n=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=${t}`;try{let t=await fetch(n,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!t.ok)return[];let r=await t.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}let a=i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:b(t,e.cacheDir)}));if(e.page!==void 0||e.pageSize!==void 0){let t=Math.max(1,e.page??1),n=Math.max(1,e.pageSize??25),r=(t-1)*n;a=a.slice(r,r+n)}return a}catch{return[]}}async function w(i,a={}){let{cacheDir:o,verbose:c=!1,isTTY:l,stream:d=n.stderr,progress:f,noProgress:m,quiet:h=!1,abortSignal:v}=a,y=u.find(e=>e.id===i||e.fileName===i||e.fileName===t.basename(i)||e.url===i),b=_(i),x,S;y?(x=y.url,S=y.fileName):i.startsWith(`http://`)||i.startsWith(`https://`)?(x=i,S=t.basename(new URL(i).pathname)):b?(S=t.basename(i).endsWith(`.agentfile`)?t.basename(i):`${t.basename(i)}.agentfile`,x=`https://huggingface.co/mozilla-ai/agentfile/resolve/main/${S}`):(S=t.basename(i).endsWith(`.llamafile`)?t.basename(i):`${t.basename(i)}.llamafile`,x=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${S}`);let C=b?g(o):p(o);e.mkdirSync(C,{recursive:!0});let w=t.join(C,S),T=t.join(C,`${S}.part`);if(e.existsSync(w))try{if(e.statSync(w).size>0)return{success:!0,modelId:i,path:w}}catch{}let E=0;if(e.existsSync(T))try{let t=e.statSync(T);t.size>0&&(E=t.size)}catch{E=0}let D=s({modelId:S,stream:d,isTTY:l,enabled:!h&&f!==!1&&!m}),O;try{c&&d?.write&&d.write(`[Llamafile] Downloading ${x}...\n`);let t={"User-Agent":`ShadowClaw-CLI`,"Accept-Encoding":`identity`};E>0&&(t.Range=`bytes=${E}-`);let n=a.fetch||globalThis.fetch,o=await n(x,{headers:t,redirect:`follow`,signal:v});if(o.status===416&&E>0){try{e.existsSync(T)&&e.unlinkSync(T)}catch{}E=0,delete t.Range,o=await n(x,{headers:t,redirect:`follow`,signal:v})}if(!o.ok&&o.status!==206)throw Error(`Failed to download ${x}: HTTP ${o.status} ${o.statusText}`);let s=o.status===206,l=0,u=0;if(s){let t=(o.headers?.get?.(`content-range`))?.match(/\/\s*(\d+)\s*$/),n=parseInt(o.headers?.get?.(`content-length`)||`0`,10);l=t?parseInt(t[1],10):E+n,u=E,O=e.createWriteStream(T,{flags:`a`})}else E=0,l=parseInt(o.headers?.get?.(`content-length`)||`0`,10),u=0,O=e.createWriteStream(T,{flags:`w`});if(u>0&&D.update({status:`progress`,file:S,loaded:u,total:l,progress:l>0?u/l*100:void 0}),o.body){let{Readable:e}=await import(`node:stream`),t;if(typeof e.fromWeb==`function`&&typeof o.body.getReader==`function`)t=e.fromWeb(o.body);else if(typeof o.body[Symbol.asyncIterator]==`function`)t=o.body;else{let e=r.from(await o.arrayBuffer());O.write(e),u+=e.length}if(t)for await(let e of t){let t=r.isBuffer(e)?e:r.from(e);O.write(t),u+=t.length,D.update({status:`progress`,file:S,loaded:u,total:l,progress:l>0?u/l*100:void 0})}}if(O){let e=O;e.end(),await new Promise((t,n)=>{e.on(`finish`,t),e.on(`error`,n)})}e.renameSync(T,w);try{e.chmodSync(w,493)}catch{}return D.finish(),{success:!0,modelId:i,path:w}}catch(e){try{O?.end()}catch{}let t=e instanceof Error?e.message:String(e);return D.fail(`✖ Error downloading ${S}: ${t}`),{success:!1,modelId:i,error:t}}}async function T(e,t={}){if(m(e)||_(e))return w(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:o,progress:c,noProgress:l,quiet:u=!1}=t,d=o;if(!d){let{getAgentCore:e}=await import(`./chunk-DdYpd9Nu.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);d=t.createTransformersRuntimeService()}let f=s({modelId:e,stream:a,isTTY:i,enabled:!u&&c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await d.prewarmModel({modelId:e,verbose:r,cacheDir:t.cacheDir,onProgress:e=>{f.update(e)}}),f.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return f.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function E(r={}){let o=t.resolve(r.contentRoot||n.cwd()),s=t.resolve(r.workspaceDir||o),c=r.cacheDir,u=r.onExit||(e=>n.exit(e)),d=r.stdin||n.stdin,f=r.stdout||n.stderr,p=!1,g=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;g=e.openSync(t,`r`),d=new a.ReadStream(g),f=n.stderr.isTTY?n.stderr:n.stdout,p=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),f=n.stderr.isTTY?n.stderr:n.stdout,p=!0}catch{}}let y=i.createInterface({input:d,output:f}),x=!1,S=()=>{if(!x){x=!0,f.write(`
|
|
2
|
+
`)),i}function p(e,t){if(!a||!r?.write)return;let n=l.get(e);if(!n)return;let i=typeof r.columns==`number`&&r.columns>0?r.columns:null,o=i&&t.length>i-1?t.slice(0,i-1):t,s=c.length-1-n.lineIndex;s>0?r.write(`\x1b[${s}A\r\x1b[2K${o}\x1b[${s}B\r`):r.write(`\r\x1b[2K${o}`)}function m(e){if(u||!e)return;let n=e.file||(e.status===`progress_total`?`Total`:t);if(e.status===`initiate`){if(f(n),!a&&r?.write)r.write(`[Download] Starting ${t}${n?` (${n})`:``}...\n`);else if(a){let e=n?` [${n}]`:``;p(n,`Downloading ${t}${e} ${d(0)} 0.0%`)}}else if(e.status===`progress`||e.status===`progress_total`){let i=typeof e.progress==`number`?e.progress:0,s=Math.max(0,Math.min(100,i)),c=s/100,l=Number(e.loaded)||0,u=Number(e.total)||0,m=f(n,l,u),h=Date.now();if(a){if(h-m.lastRenderedTime<30&&s<100&&Math.abs(s-m.lastPct)<.5)return;m.lastRenderedTime=h,m.lastPct=s,m.loaded=l,m.total=u;let e=d(c),r=`${s.toFixed(1)}%`.padStart(6,` `),i=``;u>0?i=` (${o(l)} / ${o(u)})`:l>0&&(i=` (${o(l)})`);let a=n?` [${n}]`:``;p(n,`Downloading ${t}${a} ${e} ${r}${i}`)}else{let e=Math.floor(s/20)*20;if(e>m.lastPct&&(e>0||s===0)){m.lastPct=e;let i=u>0?` (${o(l)} / ${o(u)})`:``;r?.write&&r.write(`[Download] ${t}${n?` [${n}]`:``}: ${e}%${i}\n`)}}}else if(e.status===`done`){let i=l.get(n);if(i){if(i.isDone=!0,a){let e=d(1),r=i.total||i.loaded,a=r>0?` (${o(r)})`:``,s=n?` [${n}]`:``;p(n,`Downloading ${t}${s} ${e} 100.0%${a}`)}else r?.write&&r.write(`[Download] Finished file: ${n}\n`)}else!a&&e.file&&r?.write&&r.write(`[Download] Finished file: ${e.file}\n`)}}function h(e){if(u)return;u=!0;let n=`✔ Model ${t} downloaded successfully.`;a&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}function g(e){if(u)return;u=!0;let n=`✖ Failed to download ${t}.`;a&&r?.write?c.length>0?r.write(`\n${e||n}\n`):r.write(`${e||n}\n`):r?.write&&r.write(`${e||n}\n`)}return{update:m,finish:h,fail:g}}const c=[{id:`onnx-community/gemma-4-E2B-it-ONNX`,name:`Gemma 4 E2B (ONNX)`,description:`Google Gemma 4 E2B instruction-tuned ONNX model (Default, 128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!0},{id:`onnx-community/gemma-4-E4B-it-ONNX`,name:`Gemma 4 E4B (ONNX)`,description:`Google Gemma 4 E4B instruction-tuned ONNX model (128k context, tools)`,contextLength:128e3,supportsTools:!0,recommended:!1},{id:`onnx-community/Qwen3-0.6B-ONNX`,name:`Qwen 3 0.6B (ONNX)`,description:`Fast, compact, tool-calling supported 0.6B model`,contextLength:32768,supportsTools:!0,recommended:!1},{id:`onnx-community/gemma-3-1b-it-ONNX-GQA`,name:`Gemma 3 1B GQA (ONNX)`,description:`Google Gemma 3 1B GQA — chat only (template has no tool support)`,contextLength:32e3,supportsTools:!1,recommended:!1}],l=`onnx-community/gemma-4-E2B-it-ONNX`,u=[{id:`mozilla-ai/gemma-4-E2B-it-Q5_K_M.llamafile`,name:`Gemma 4 E2B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E2B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E2B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E2B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/gemma-4-E4B-it-Q5_K_M.llamafile`,name:`Gemma 4 E4B Q5_K_M (Llamafile)`,description:`Google Gemma 4 E4B instruction-tuned Llamafile (Q5_K_M)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/gemma-4-E4B-it-Q5_K_M.llamafile`,fileName:`gemma-4-E4B-it-Q5_K_M.llamafile`,contextLength:128e3,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-0.8B-Q8_0.llamafile`,name:`Qwen 3.5 0.8B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 0.8B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-0.8B-Q8_0.llamafile`,fileName:`Qwen3.5-0.8B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-2B-Q8_0.llamafile`,name:`Qwen 3.5 2B Q8_0 (Llamafile)`,description:`Alibaba Qwen 3.5 2B Llamafile (Q8_0)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-2B-Q8_0.llamafile`,fileName:`Qwen3.5-2B-Q8_0.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-4B-Q5_K_S.llamafile`,name:`Qwen 3.5 4B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 4B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-4B-Q5_K_S.llamafile`,fileName:`Qwen3.5-4B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0},{id:`mozilla-ai/Qwen3.5-9B-Q5_K_S.llamafile`,name:`Qwen 3.5 9B Q5_K_S (Llamafile)`,description:`Alibaba Qwen 3.5 9B Llamafile (Q5_K_S)`,url:`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/Qwen3.5-9B-Q5_K_S.llamafile`,fileName:`Qwen3.5-9B-Q5_K_S.llamafile`,contextLength:32768,supportsTools:!0}];function d(e){if(!e)return;let t=c.find(t=>t.id===e||t.id.toLowerCase()===e.toLowerCase());if(t)return t.supportsTools;let n=u.find(t=>t.id===e||t.fileName===e||t.id.toLowerCase()===e.toLowerCase()||t.fileName.toLowerCase()===e.toLowerCase());if(n)return n.supportsTools}function f(e){return e?t.resolve(e):t.resolve(n.cwd(),`assets/cache/transformers.js`)}function p(e){return e?t.resolve(e,`llamafile`):t.resolve(n.cwd(),`assets/cache/llamafile`)}function m(e){return!e||typeof e!=`string`?!1:e.endsWith(`.llamafile`)||e.includes(`llamafile`)||u.some(n=>n.id===e||n.fileName===e||n.url===e||n.fileName===t.basename(e))}function h(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=p(i);if(!e.existsSync(o))return!1;let s=u.find(e=>e.id===r||e.fileName===r||e.fileName===t.basename(r)||e.url===r),c=s?s.fileName:t.basename(r),l=c.endsWith(`.llamafile`)?c:`${c}.llamafile`,d=t.join(o,l),f=t.join(o,`${l}.part`);try{if(e.existsSync(f))return!1;if(e.existsSync(d))return e.statSync(d).size>0}catch{}return!1}function g(e){return e?t.resolve(e,`agentfile`):t.resolve(n.cwd(),`assets/cache/agentfile`)}function _(e){return!e||typeof e!=`string`?!1:e.endsWith(`.agentfile`)||e.includes(`agentfile`)}function v(r,i){if(e.existsSync(r))try{if(e.statSync(r).size>0)return!0}catch{}let a=t.resolve(n.cwd(),r);if(e.existsSync(a))try{if(e.statSync(a).size>0)return!0}catch{}let o=[g(i),p(i)],s=t.basename(r),c=s.endsWith(`.agentfile`)?s:`${s}.agentfile`;for(let n of o){if(!e.existsSync(n))continue;let r=t.join(n,c),i=t.join(n,`${c}.part`);try{if(e.existsSync(i))return!1;if(e.existsSync(r)&&e.statSync(r).size>0)return!0}catch{}}return!1}function y(n){let r=!1,i=!1;function a(n){let o;try{o=e.readdirSync(n,{withFileTypes:!0})}catch{return}for(let e of o)if(e.isDirectory())a(t.join(n,e.name));else if(e.isFile()){let t=e.name;(t.endsWith(`.part`)||t.includes(`.tmp`))&&(r=!0),t.endsWith(`.onnx`)&&!t.endsWith(`.part`)&&!t.includes(`.tmp`)&&(i=!0)}}return a(n),{hasPartFiles:r,hasOnnxFiles:i}}function b(n,r){if(_(n))return v(n,r);if(m(n))return h(n,r);let i=f(r);if(!e.existsSync(i))return!1;let a=[t.join(i,n),t.join(i,`models--${n.replace(/\//g,`--`)}`),t.join(i,n.split(`/`)[1]||n)];for(let t of a)try{if(e.existsSync(t)){let{hasPartFiles:e,hasOnnxFiles:n}=y(t);if(!e&&n)return!0}}catch{}return!1}function x(e){return c.map(t=>({...t,cached:b(t.id,e)}))}function S(e){return u.map(t=>({...t,cached:h(t.fileName,e)}))}async function C(e={}){let t=e.limit??100,n=e.endpoint||`https://huggingface.co/api/models?author=onnx-community&pipeline_tag=text-generation&limit=${t}`;try{let t=await fetch(n,{headers:{"User-Agent":`ShadowClaw-CLI`},signal:AbortSignal.timeout(e.timeoutMs||8e3)});if(!t.ok)return[];let r=await t.json();if(!Array.isArray(r))return[];let i=r.map(e=>typeof e?.id==`string`?e.id:``).filter(e=>e&&e.toLowerCase().includes(`onnx`));if(e.query){let t=e.query.toLowerCase();i=i.filter(e=>e.toLowerCase().includes(t))}let a=i.sort().map(t=>({id:t,name:t.replace(/^onnx-community\//,``),cached:b(t,e.cacheDir)}));if(e.page!==void 0||e.pageSize!==void 0){let t=Math.max(1,e.page??1),n=Math.max(1,e.pageSize??25),r=(t-1)*n;a=a.slice(r,r+n)}return a}catch{return[]}}async function w(i,a={}){let{cacheDir:o,verbose:c=!1,isTTY:l,stream:d=n.stderr,progress:f,noProgress:m,quiet:h=!1,abortSignal:v}=a,y=u.find(e=>e.id===i||e.fileName===i||e.fileName===t.basename(i)||e.url===i),b=_(i),x,S;y?(x=y.url,S=y.fileName):i.startsWith(`http://`)||i.startsWith(`https://`)?(x=i,S=t.basename(new URL(i).pathname)):b?(S=t.basename(i).endsWith(`.agentfile`)?t.basename(i):`${t.basename(i)}.agentfile`,x=`https://huggingface.co/mozilla-ai/agentfile/resolve/main/${S}`):(S=t.basename(i).endsWith(`.llamafile`)?t.basename(i):`${t.basename(i)}.llamafile`,x=`https://huggingface.co/mozilla-ai/llamafile_0.10/resolve/main/${S}`);let C=b?g(o):p(o);e.mkdirSync(C,{recursive:!0});let w=t.join(C,S),T=t.join(C,`${S}.part`);if(e.existsSync(w))try{if(e.statSync(w).size>0)return{success:!0,modelId:i,path:w}}catch{}let E=0;if(e.existsSync(T))try{let t=e.statSync(T);t.size>0&&(E=t.size)}catch{E=0}let D=s({modelId:S,stream:d,isTTY:l,enabled:!h&&f!==!1&&!m}),O;try{c&&d?.write&&d.write(`[Llamafile] Downloading ${x}...\n`);let t={"User-Agent":`ShadowClaw-CLI`,"Accept-Encoding":`identity`};E>0&&(t.Range=`bytes=${E}-`);let n=a.fetch||globalThis.fetch,o=await n(x,{headers:t,redirect:`follow`,signal:v});if(o.status===416&&E>0){try{e.existsSync(T)&&e.unlinkSync(T)}catch{}E=0,delete t.Range,o=await n(x,{headers:t,redirect:`follow`,signal:v})}if(!o.ok&&o.status!==206)throw Error(`Failed to download ${x}: HTTP ${o.status} ${o.statusText}`);let s=o.status===206,l=0,u=0;if(s){let t=(o.headers?.get?.(`content-range`))?.match(/\/\s*(\d+)\s*$/),n=parseInt(o.headers?.get?.(`content-length`)||`0`,10);l=t?parseInt(t[1],10):E+n,u=E,O=e.createWriteStream(T,{flags:`a`})}else E=0,l=parseInt(o.headers?.get?.(`content-length`)||`0`,10),u=0,O=e.createWriteStream(T,{flags:`w`});if(u>0&&D.update({status:`progress`,file:S,loaded:u,total:l,progress:l>0?u/l*100:void 0}),o.body){let{Readable:e}=await import(`node:stream`),t;if(typeof e.fromWeb==`function`&&typeof o.body.getReader==`function`)t=e.fromWeb(o.body);else if(typeof o.body[Symbol.asyncIterator]==`function`)t=o.body;else{let e=r.from(await o.arrayBuffer());O.write(e),u+=e.length}if(t)for await(let e of t){let t=r.isBuffer(e)?e:r.from(e);O.write(t),u+=t.length,D.update({status:`progress`,file:S,loaded:u,total:l,progress:l>0?u/l*100:void 0})}}if(O){let e=O;e.end(),await new Promise((t,n)=>{e.on(`finish`,t),e.on(`error`,n)})}e.renameSync(T,w);try{e.chmodSync(w,493)}catch{}return D.finish(),{success:!0,modelId:i,path:w}}catch(e){try{O?.end()}catch{}let t=e instanceof Error?e.message:String(e);return D.fail(`✖ Error downloading ${S}: ${t}`),{success:!1,modelId:i,error:t}}}async function T(e,t={}){if(m(e)||_(e))return w(e,t);let{verbose:r=!1,isTTY:i,stream:a=n.stderr,service:o,progress:c,noProgress:l,quiet:u=!1}=t,d=o;if(!d){let{getAgentCore:e}=await import(`./chunk-XGzq5joC.js`),t=await e();if(typeof t.createTransformersRuntimeService!=`function`)throw Error(`createTransformersRuntimeService is not available in agent core`);d=t.createTransformersRuntimeService()}let f=s({modelId:e,stream:a,isTTY:i,enabled:!u&&c!==!1&&!l});try{return r&&a?.write&&a.write(`[Transformers.js] Prewarming model ${e}...\n`),await d.prewarmModel({modelId:e,verbose:r,cacheDir:t.cacheDir,onProgress:e=>{f.update(e)}}),f.finish(),{success:!0,modelId:e}}catch(t){let n=t instanceof Error?t.message:String(t);return f.fail(`✖ Error downloading ${e}: ${n}`),{success:!1,modelId:e,error:n}}}async function E(r={}){let o=t.resolve(r.contentRoot||n.cwd()),s=t.resolve(r.workspaceDir||o),c=r.cacheDir,u=r.onExit||(e=>n.exit(e)),d=r.stdin||n.stdin,f=r.stdout||n.stderr,p=!1,g=null;if(d===n.stdin&&!n.stdin.isTTY&&!n.env.CI&&(n.stderr.isTTY||n.stdout.isTTY))try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;g=e.openSync(t,`r`),d=new a.ReadStream(g),f=n.stderr.isTTY?n.stderr:n.stdout,p=!0}catch{try{let t=n.platform===`win32`?`CONIN$`:`/dev/tty`;d=e.createReadStream(t),f=n.stderr.isTTY?n.stderr:n.stdout,p=!0}catch{}}let y=i.createInterface({input:d,output:f}),x=!1,S=()=>{if(!x){x=!0,f.write(`
|
|
3
3
|
Operation cancelled.
|
|
4
4
|
`);try{y.close()}catch{}u(130)}};y.on(`SIGINT`,S),d&&typeof d.on==`function`&&d!==n.stdin&&d.on(`SIGINT`,S);let E=()=>S();n.on(`SIGINT`,E);let D=e=>{let t=typeof e==`string`?e:e.toString(`binary`);(t.includes(``)||t.includes(``))&&S()};d&&typeof d.on==`function`&&d.on(`data`,D);try{let i=`transformers_js_local`,a=l,u=/* @__PURE__ */ new Map;for(;!x;){f.write(`
|
|
5
5
|
ShadowClaw CLI Agent — Model Selection:
|