hyperclaw 5.1.9 → 5.2.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/README.md +3 -3
- package/dist/a2ui-protocol-A2xow5Ch.js +75 -0
- package/dist/a2ui-protocol-dTomAnFE.js +75 -0
- package/dist/agents-routing-95_s2yea.js +6 -0
- package/dist/agents-routing-Bz3SstlK.js +398 -0
- package/dist/agents-routing-DHDK2axt.js +6 -0
- package/dist/agents-routing-DRMS8Ol-.js +6 -0
- package/dist/agents-routing-biXULPch.js +398 -0
- package/dist/agents-routing-iQmIOe3k.js +398 -0
- package/dist/api-key-validation-BeQ2MZAT.js +64 -0
- package/dist/api-key-validation-C2WQk1oM.js +64 -0
- package/dist/api-keys-guide-2cD5Rf-K.js +149 -0
- package/dist/api-keys-guide-BdT2lfX6.js +149 -0
- package/dist/api-keys-guide-BwCIj8qd.js +149 -0
- package/dist/audit-1Anq45mH.js +441 -0
- package/dist/audit-BAVTInWP.js +441 -0
- package/dist/audit-CV0gLGaL.js +444 -0
- package/dist/audit-Dnt0XgZD.js +441 -0
- package/dist/audit-DqNGdIKU.js +441 -0
- package/dist/bounty-tools-Cx7BXUfz.js +211 -0
- package/dist/bounty-tools-DWvW3yc-.js +211 -0
- package/dist/bounty-tools-FI7DHmsS.js +211 -0
- package/dist/bounty-tools-cjmA3Hgk.js +211 -0
- package/dist/browser-tools-BGPBCApQ.js +5 -0
- package/dist/browser-tools-Btu_vB2d.js +179 -0
- package/dist/browser-tools-DF2nQ1hi.js +5 -0
- package/dist/browser-tools-DYx4p13A.js +179 -0
- package/dist/chat-4ZistSKP.js +310 -0
- package/dist/chat-BQMPVq39.js +310 -0
- package/dist/chat-BqiMMQc4.js +324 -0
- package/dist/chat-BxxYzPaz.js +324 -0
- package/dist/chat-C0W8lwhh.js +324 -0
- package/dist/chat-CKBxDWAQ.js +324 -0
- package/dist/chat-CkCcCkVG.js +324 -0
- package/dist/chat-DCOKsydK.js +310 -0
- package/dist/chat-DGUj_NDO.js +310 -0
- package/dist/chat-DZcZ1Uli.js +310 -0
- package/dist/chat-DiIra4_i.js +324 -0
- package/dist/claw-tasks-CIkuuhga.js +80 -0
- package/dist/claw-tasks-CquRilLP.js +80 -0
- package/dist/claw-tasks-xXtZpeY0.js +80 -0
- package/dist/config-BEz4yNRx.js +261 -0
- package/dist/config-Br73VMLb.js +261 -0
- package/dist/config-CXqmvq_H.js +7 -0
- package/dist/config-D5vF0kvV.js +261 -0
- package/dist/config-D_6MxFk3.js +7 -0
- package/dist/config-b2HmFrBr.js +7 -0
- package/dist/connector-1H0OW1h8.js +419 -0
- package/dist/connector-1qpQ5L-T.js +173 -0
- package/dist/connector-2OVpYt0c.js +213 -0
- package/dist/connector-8cFkE3X4.js +552 -0
- package/dist/connector-B2bZD1id.js +181 -0
- package/dist/connector-B3W7quzD.js +568 -0
- package/dist/connector-B4FWhOzd.js +189 -0
- package/dist/connector-B5fqvoZL.js +239 -0
- package/dist/connector-BA8ZbhPt.js +162 -0
- package/dist/connector-BFl0XIwB.js +182 -0
- package/dist/connector-BIGRhSuN.js +419 -0
- package/dist/connector-BK0qVbvh.js +498 -0
- package/dist/connector-BMtA4KSF.js +194 -0
- package/dist/connector-BPIrifW-.js +218 -0
- package/dist/connector-BRNU-rJ4.js +225 -0
- package/dist/connector-BS7lvyLd.js +213 -0
- package/dist/connector-BZ_-UPUL.js +305 -0
- package/dist/connector-Bd0NZ5bT.js +189 -0
- package/dist/connector-BjsPwu-Y.js +531 -0
- package/dist/connector-BnSsjz1D.js +167 -0
- package/dist/connector-BrogAqVQ.js +239 -0
- package/dist/connector-BsVTG3U3.js +181 -0
- package/dist/connector-By9pLJgR.js +340 -0
- package/dist/connector-C7c1ASzT.js +192 -0
- package/dist/connector-CIj28thK.js +182 -0
- package/dist/connector-CJkuYNd1.js +280 -0
- package/dist/connector-CPcUmIHz.js +552 -0
- package/dist/connector-CUlP4He3.js +194 -0
- package/dist/connector-CZg2I8Tn.js +350 -0
- package/dist/connector-C_NtpthL.js +498 -0
- package/dist/connector-CddDB9IK.js +192 -0
- package/dist/connector-ChQMspky.js +167 -0
- package/dist/connector-ClHFpI56.js +425 -0
- package/dist/connector-CmhUVhMT.js +531 -0
- package/dist/connector-CnX7lwCt.js +425 -0
- package/dist/connector-D36oGwnK.js +162 -0
- package/dist/connector-DDJ7Nxkq.js +286 -0
- package/dist/connector-DDn2QDuf.js +167 -0
- package/dist/connector-DO_bzgJn.js +167 -0
- package/dist/connector-DVcRo21Y.js +568 -0
- package/dist/connector-DhWs2anT.js +189 -0
- package/dist/connector-DsY1IXMz.js +508 -0
- package/dist/connector-DwRF3CQg.js +218 -0
- package/dist/connector-HG61cV9h.js +340 -0
- package/dist/connector-HR28FwA5.js +181 -0
- package/dist/connector-K0QGRYh5.js +85 -0
- package/dist/connector-NliR7NZZ.js +508 -0
- package/dist/connector-VolY_hP4.js +350 -0
- package/dist/connector-Wjx9ih70.js +286 -0
- package/dist/connector-dfqk7NYD.js +181 -0
- package/dist/connector-e0W4Mpmq.js +189 -0
- package/dist/connector-eK6_phVW.js +280 -0
- package/dist/connector-l7UmCYaL.js +225 -0
- package/dist/connector-n2YnOJYZ.js +305 -0
- package/dist/connector-orobFcqE.js +531 -0
- package/dist/connector-r1SRYSqX.js +173 -0
- package/dist/connector-tZgn5_Fk.js +85 -0
- package/dist/connector-wm4Oe1DK.js +181 -0
- package/dist/cost-tracker-DHTv6zpR.js +103 -0
- package/dist/cost-tracker-DJ1tiKcx.js +103 -0
- package/dist/cost-tracker-jbK_AoIV.js +103 -0
- package/dist/credentials-store-C0R-pQM7.js +5 -0
- package/dist/credentials-store-C9HwQSY2.js +5 -0
- package/dist/credentials-store-D5Xw3F75.js +89 -0
- package/dist/credentials-store-DIPxVk51.js +86 -0
- package/dist/credentials-store-DU2cVTiY.js +7 -0
- package/dist/credentials-store-Djqi3oXC.js +5 -0
- package/dist/credentials-store-HwLJ3GS2.js +87 -0
- package/dist/credentials-store-z16XvFZ2.js +86 -0
- package/dist/cron-tasks-4my0PJce.js +85 -0
- package/dist/cron-tasks-CJkI0lo3.js +82 -0
- package/dist/cron-tasks-DN1YjYhK.js +82 -0
- package/dist/cron-tasks-DuNdK89e.js +82 -0
- package/dist/daemon-3xj3FVuw.js +5 -0
- package/dist/daemon-3zd_nupj.js +333 -0
- package/dist/daemon-B9-h7ryw.js +7 -0
- package/dist/daemon-BLC4AL9L.js +401 -0
- package/dist/daemon-BR1uU7jH.js +333 -0
- package/dist/daemon-BRdtCOoC.js +7 -0
- package/dist/daemon-BnmNBHY5.js +384 -0
- package/dist/daemon-CCxpXxSb.js +7 -0
- package/dist/daemon-CEUxN3SQ.js +7 -0
- package/dist/daemon-CHk9_ezz.js +403 -0
- package/dist/daemon-CgrsZ0d9.js +320 -0
- package/dist/daemon-DCm9RCEz.js +401 -0
- package/dist/daemon-DNzuDyu8.js +7 -0
- package/dist/daemon-DWFWCLvh.js +7 -0
- package/dist/daemon-DbWcGYXq.js +5 -0
- package/dist/daemon-DgBZaFyi.js +355 -0
- package/dist/daemon-DkdMP-kQ.js +316 -0
- package/dist/daemon-Dsyjad7g.js +7 -0
- package/dist/daemon-DxoPIGQG.js +333 -0
- package/dist/daemon-MXsEPeVa.js +7 -0
- package/dist/daemon-RoGBr7z8.js +316 -0
- package/dist/daemon-XtFu-VzD.js +5 -0
- package/dist/daemon-rpJ-J0bv.js +403 -0
- package/dist/daemon-sZVjFUoX.js +7 -0
- package/dist/delivery-8fo4GZ-j.js +95 -0
- package/dist/delivery-CkxNZIsF.js +95 -0
- package/dist/delivery-CtbHkJbB.js +95 -0
- package/dist/delivery-D1z3f3KW.js +4 -0
- package/dist/delivery-DKGpk5M4.js +4 -0
- package/dist/delivery-DReKOHyM.js +95 -0
- package/dist/delivery-Ddn-VajP.js +4 -0
- package/dist/delivery-DsoxcD2z.js +4 -0
- package/dist/destructive-gate-CEn4BsTd.js +101 -0
- package/dist/destructive-gate-CgCqfKuT.js +101 -0
- package/dist/destructive-gate-DcEpMEqP.js +101 -0
- package/dist/developer-keys-7rQ8M4Qo.js +127 -0
- package/dist/developer-keys-BeUpyenR.js +8 -0
- package/dist/developer-keys-CSmzA-dl.js +127 -0
- package/dist/developer-keys-KFGbGuZj.js +8 -0
- package/dist/device-auth-store-BDhzxuPc.js +5 -0
- package/dist/device-auth-store-Cjyn2XeY.js +86 -0
- package/dist/device-auth-store-DgSabRGa.js +7 -0
- package/dist/device-auth-store-LKgpU74c.js +88 -0
- package/dist/device-auth-store-UlkrF-9_.js +5 -0
- package/dist/device-auth-store-yvGLuYAl.js +86 -0
- package/dist/doctor-BcfmNAGV.js +233 -0
- package/dist/doctor-CEP3UQjn.js +227 -0
- package/dist/doctor-CmJh0JLr.js +6 -0
- package/dist/doctor-CtDvddSn.js +231 -0
- package/dist/doctor-DPoCaXsd.js +227 -0
- package/dist/doctor-DPvY68XB.js +6 -0
- package/dist/doctor-G6EMPukm.js +6 -0
- package/dist/doctor-tL9TXt9y.js +6 -0
- package/dist/engine-1fLMFUn2.js +7 -0
- package/dist/engine-7lSiOc0W.js +323 -0
- package/dist/engine-B83pxJM4.js +318 -0
- package/dist/engine-B8hxtYpN.js +323 -0
- package/dist/engine-BY0XLiQ1.js +7 -0
- package/dist/engine-BfQ-vNqE.js +321 -0
- package/dist/engine-BlpKw8D4.js +7 -0
- package/dist/engine-BmN7L0jl.js +7 -0
- package/dist/engine-CRagwas6.js +321 -0
- package/dist/engine-CaG7uwkg.js +305 -0
- package/dist/engine-Ccmpd_MH.js +305 -0
- package/dist/engine-CppTnNbG.js +7 -0
- package/dist/engine-CwAfDQbD.js +7 -0
- package/dist/engine-D5kY4hMJ.js +7 -0
- package/dist/engine-DQcMDIbU.js +305 -0
- package/dist/engine-DeQdDkFO.js +7 -0
- package/dist/engine-W1I8kkgV.js +305 -0
- package/dist/engine-mVrq_pfQ.js +7 -0
- package/dist/env-resolve-BeamD7l5.js +10 -0
- package/dist/env-resolve-C0otwkgN.js +10 -0
- package/dist/env-resolve-CC_po9t5.js +10 -0
- package/dist/env-resolve-COjiKYD8.js +147 -0
- package/dist/env-resolve-CYiFHLAi.js +145 -0
- package/dist/env-resolve-ClZcv5-B.js +145 -0
- package/dist/env-resolve-DS92g2fk.js +151 -0
- package/dist/env-resolve-DkBUmcI3.js +10 -0
- package/dist/extraction-tools-6PREYSAK.js +5 -0
- package/dist/extraction-tools-B8F3nsLR.js +5 -0
- package/dist/extraction-tools-BX5HGgko.js +91 -0
- package/dist/extraction-tools-Co11UJdZ.js +91 -0
- package/dist/form_data-DDfyO9B0.js +8657 -0
- package/dist/form_data-DgWnyuDn.js +8657 -0
- package/dist/gateway-BfHcLG6d.js +194 -0
- package/dist/gateway-CzI8dnlS.js +196 -0
- package/dist/gateway-DNv10FFg.js +194 -0
- package/dist/gateway-DRh5v1KI.js +4 -0
- package/dist/gateway-DroPtqyM.js +6 -0
- package/dist/gateway-DyWwV0Nu.js +4 -0
- package/dist/gmail-watch-setup-BV4r_lgb.js +40 -0
- package/dist/gmail-watch-setup-CW_5D9g-.js +40 -0
- package/dist/gmail-watch-setup-xG9GkPwr.js +42 -0
- package/dist/health-CBy1PfzC.js +152 -0
- package/dist/health-Cq_yE5Ln.js +6 -0
- package/dist/heartbeat-engine-7I0dZeea.js +83 -0
- package/dist/heartbeat-engine-BZUNOanp.js +84 -0
- package/dist/heartbeat-engine-DNm8ggAs.js +83 -0
- package/dist/heartbeat-engine-tgK7xXmt.js +83 -0
- package/dist/hub-CI4qcd1b.js +515 -0
- package/dist/hub-CNQaC4JI.js +515 -0
- package/dist/hub-Co1SbxLs.js +6 -0
- package/dist/hub-eUh89obm.js +6 -0
- package/dist/hyperclawbot-BD5gNWO8.js +505 -0
- package/dist/hyperclawbot-Bkncybig.js +508 -0
- package/dist/hyperclawbot-C37Unss3.js +505 -0
- package/dist/hyperclawbot-CFHXZr12.js +505 -0
- package/dist/hyperclawbot-D6cmZ6Bg.js +505 -0
- package/dist/hyperclawbot-DGou0MZ6.js +508 -0
- package/dist/hyperclawbot-DnPIyjox.js +508 -0
- package/dist/hyperclawbot-GYFaTEgC.js +505 -0
- package/dist/hyperclawbot-mcLnyJyM.js +505 -0
- package/dist/hyperclawbot-y0i_joQK.js +505 -0
- package/dist/inference-BvmMO9dq.js +8 -0
- package/dist/inference-C2HOfRf8.js +2848 -0
- package/dist/inference-CKvR5Ik5.js +2841 -0
- package/dist/inference-DVVmhQn5.js +2841 -0
- package/dist/inference-DoM_iai-.js +2848 -0
- package/dist/inference-DwgXrvBb.js +6 -0
- package/dist/inference-Go1G6tnF.js +8 -0
- package/dist/inference-_ptQe0oG.js +2841 -0
- package/dist/inference-gK62s15E.js +6 -0
- package/dist/inference-lLDvSTR9.js +6 -0
- package/dist/knowledge-graph-4SxFnwEm.js +131 -0
- package/dist/knowledge-graph-BsH-HoUJ.js +131 -0
- package/dist/knowledge-graph-BxrAiV2B.js +134 -0
- package/dist/knowledge-graph-DCa91Nz5.js +131 -0
- package/dist/loader-7fz2fb92.js +400 -0
- package/dist/loader-B2jZXMBu.js +6 -0
- package/dist/loader-CbS0tIrR.js +4 -0
- package/dist/loader-Ckvv7vHF.js +410 -0
- package/dist/loader-CwOXDhFQ.js +400 -0
- package/dist/loader-DpEOgWXZ.js +4 -0
- package/dist/loader-DpYgmaul.js +4 -0
- package/dist/loader-DtyQP7wL.js +400 -0
- package/dist/logger-B3AqfQWG.js +84 -0
- package/dist/logger-B_q8yqmA.js +84 -0
- package/dist/logger-BxJklsDv.js +84 -0
- package/dist/logger-ry2oCfdf.js +86 -0
- package/dist/manager-9zwhTeQ5.js +233 -0
- package/dist/manager-B1RbCW6C.js +31 -0
- package/dist/manager-B90HEHxe.js +6 -0
- package/dist/manager-B94UWcTs.js +233 -0
- package/dist/manager-BDvL_oPs.js +4 -0
- package/dist/manager-BEatAtIB.js +31 -0
- package/dist/manager-BQf9drst.js +120 -0
- package/dist/manager-Bau1mIqb.js +6 -0
- package/dist/manager-BkqHak_e.js +247 -0
- package/dist/manager-BoFdZm-l.js +233 -0
- package/dist/manager-C2bq0AXc.js +233 -0
- package/dist/manager-CBe3W3eG.js +117 -0
- package/dist/manager-CoHr8_eJ.js +117 -0
- package/dist/manager-CuS13QUO.js +6 -0
- package/dist/manager-DO0pK2OI.js +117 -0
- package/dist/manager-DVetfBCH.js +6 -0
- package/dist/manager-Jd0qSzVe.js +35 -0
- package/dist/manager-TxFgaHT9.js +31 -0
- package/dist/manager-Yo6ZAofG.js +250 -0
- package/dist/mcp-B_WJiTZz.js +139 -0
- package/dist/mcp-DVhPLprc.js +139 -0
- package/dist/mcp-GWnLTVi-.js +142 -0
- package/dist/mcp-loader-B6xz7ftt.js +94 -0
- package/dist/mcp-loader-BLanJREp.js +94 -0
- package/dist/mcp-loader-Bx7FFxAU.js +94 -0
- package/dist/mcp-loader-CbcyUzpM.js +94 -0
- package/dist/mcp-loader-Cr0LRQHE.js +93 -0
- package/dist/mcp-loader-D0rbtV3G.js +93 -0
- package/dist/memory-B47nvgOq.js +271 -0
- package/dist/memory-D-Py-cz5.js +273 -0
- package/dist/memory-D991eoj7.js +6 -0
- package/dist/memory-DoQoaHjo.js +4 -0
- package/dist/memory-auto-5aBZQJQY.js +5 -0
- package/dist/memory-auto-BTeOoLsb.js +306 -0
- package/dist/memory-auto-BvjfaflZ.js +5 -0
- package/dist/memory-auto-CSUt3aas.js +306 -0
- package/dist/memory-auto-CfpACu6s.js +306 -0
- package/dist/memory-auto-DI9Xpd-x.js +306 -0
- package/dist/memory-auto-D_mPVYqI.js +5 -0
- package/dist/memory-auto-PmKetZuo.js +5 -0
- package/dist/memory-auto-_Jv-Diw_.js +306 -0
- package/dist/memory-auto-rLBheyC0.js +5 -0
- package/dist/memory-integration-UFc6CdRA.js +91 -0
- package/dist/memory-integration-_NOy60Fj.js +91 -0
- package/dist/memory-integration-nbQ8esDu.js +91 -0
- package/dist/moltbook-B4znBD46.js +81 -0
- package/dist/moltbook-CGtA7Lb3.js +81 -0
- package/dist/moltbook-EZOfIwcN.js +81 -0
- package/dist/node-BvA5_2f_.js +222 -0
- package/dist/node-CRaZw_av.js +225 -0
- package/dist/node-CSOPY84m.js +222 -0
- package/dist/node-FPkFXYdU.js +225 -0
- package/dist/nodes-registry--DkZbn41.js +52 -0
- package/dist/nodes-registry-DYEH1aWn.js +52 -0
- package/dist/nodes-registry-jK7T0THg.js +52 -0
- package/dist/oauth-flow-B3S4T_SJ.js +147 -0
- package/dist/oauth-flow-CuQHP_RD.js +150 -0
- package/dist/oauth-flow-D_iqT6nr.js +150 -0
- package/dist/oauth-flow-Du2N6B2V.js +150 -0
- package/dist/oauth-provider-B2RBpiXg.js +111 -0
- package/dist/oauth-provider-C1qk9SI-.js +110 -0
- package/dist/oauth-provider-CDOMIZgF.js +110 -0
- package/dist/observability-4CyDqBWi.js +89 -0
- package/dist/observability-BfhV3r9r.js +89 -0
- package/dist/observability-DAnU8Ung.js +89 -0
- package/dist/onboard-0RpraIyZ.js +11 -0
- package/dist/onboard-3SoScSbC.js +11 -0
- package/dist/onboard-B8zjN52U.js +4149 -0
- package/dist/onboard-BAhuTUMO.js +4240 -0
- package/dist/onboard-BHKBzytX.js +13 -0
- package/dist/onboard-Bf3ht6ct.js +11 -0
- package/dist/onboard-Bmpa_pxc.js +3865 -0
- package/dist/onboard-BwFFnEDj.js +13 -0
- package/dist/onboard-C-0A7RKN.js +4211 -0
- package/dist/onboard-CCuETEUr.js +3865 -0
- package/dist/onboard-CDi3B996.js +13 -0
- package/dist/onboard-CGGZRH3J.js +4149 -0
- package/dist/onboard-CcXqOCHa.js +3862 -0
- package/dist/onboard-DU3acWAq.js +13 -0
- package/dist/onboard-DVEFIFRj.js +11 -0
- package/dist/onboard-DW8b3EUP.js +4250 -0
- package/dist/onboard-DiDTuD7m.js +13 -0
- package/dist/onboard-DqamkA0I.js +11 -0
- package/dist/onboard-DtDFU4lV.js +3865 -0
- package/dist/onboard-IdhgSexF.js +11 -0
- package/dist/onboard-Qh-qibLR.js +3861 -0
- package/dist/onboard-T54jLovz.js +13 -0
- package/dist/onboard-nQerZcpc.js +3862 -0
- package/dist/onboard-qXuXl5An.js +4250 -0
- package/dist/onboard-xgJmy17T.js +11 -0
- package/dist/onboard-xsSdyO6Y.js +3865 -0
- package/dist/onboard-yACJiQ6A.js +4215 -0
- package/dist/onboard-z1K8FTgh.js +13 -0
- package/dist/orchestrator-BIKrbOtx.js +6 -0
- package/dist/orchestrator-BeK8XyJY.js +6 -0
- package/dist/orchestrator-C71UI_0E.js +189 -0
- package/dist/orchestrator-CC6vuL6m.js +6 -0
- package/dist/orchestrator-CExmcac2.js +189 -0
- package/dist/orchestrator-CQm9v71d.js +6 -0
- package/dist/orchestrator-CSZnojZo.js +189 -0
- package/dist/orchestrator-Cc-gXExz.js +189 -0
- package/dist/orchestrator-Cj5XWVVe.js +189 -0
- package/dist/orchestrator-CxySH0n5.js +6 -0
- package/dist/orchestrator-Cybvh-J0.js +189 -0
- package/dist/orchestrator-D-9pExNB.js +189 -0
- package/dist/orchestrator-DG-RjZIu.js +6 -0
- package/dist/orchestrator-DvEjhiJR.js +6 -0
- package/dist/orchestrator-FFpXJwSV.js +189 -0
- package/dist/orchestrator-TsNkrbVG.js +6 -0
- package/dist/orchestrator-mPfwBFvX.js +6 -0
- package/dist/orchestrator-zS6Manjk.js +189 -0
- package/dist/osint-BIGH02i8.js +277 -0
- package/dist/osint-Cc2Ju-o4.js +277 -0
- package/dist/osint-Cg3-CYHx.js +278 -0
- package/dist/pairing-BRPzVXzQ.js +198 -0
- package/dist/pairing-Cm78Tsdx.js +4 -0
- package/dist/pairing-D4sA3-Ha.js +6 -0
- package/dist/pairing-ouc_v-OX.js +196 -0
- package/dist/pc-access-BZvlAXYN.js +819 -0
- package/dist/pc-access-CziyndiO.js +8 -0
- package/dist/pc-access-D5k6dAfU.js +819 -0
- package/dist/pc-access-DoPSPiAK.js +8 -0
- package/dist/pending-approval-BaKZ0b_s.js +22 -0
- package/dist/pending-approval-CBVZcFJn.js +22 -0
- package/dist/pending-approval-DiZ96D8v.js +22 -0
- package/dist/providers-Bk6Y_v9m.js +681 -0
- package/dist/providers-BvScOYvt.js +5 -0
- package/dist/providers-CFQC39vg.js +5 -0
- package/dist/providers-DEJ8Jtml.js +1089 -0
- package/dist/providers-DP8T0QCR.js +1089 -0
- package/dist/providers-EyJsZ-sr.js +5 -0
- package/dist/reminders-store-BSIw5Y5z.js +58 -0
- package/dist/reminders-store-Bus52SjO.js +58 -0
- package/dist/renderer-CmMjrkqN.js +225 -0
- package/dist/renderer-_Y9mEqMM.js +225 -0
- package/dist/renderer-h3ar94cf.js +228 -0
- package/dist/rules-D3GcY_lt.js +103 -0
- package/dist/rules-DFoset7W.js +103 -0
- package/dist/rules-eJw9i4RF.js +106 -0
- package/dist/run-main.js +460 -332
- package/dist/runner-C-syOqBr.js +1273 -0
- package/dist/runner-C73am--A.js +1273 -0
- package/dist/runner-DKLq9jhv.js +1273 -0
- package/dist/runner-Im-aCXhh.js +1273 -0
- package/dist/runner-NvAzKXbv.js +1273 -0
- package/dist/security-2DPBzs5F.js +4 -0
- package/dist/security-BhhX8wJx.js +73 -0
- package/dist/server-7tmTtdPU.js +4 -0
- package/dist/server-A38RPbRE.js +1291 -0
- package/dist/server-BErPWJZ5.js +4 -0
- package/dist/server-BKo-zifC.js +4 -0
- package/dist/server-Bav63Eqx.js +4 -0
- package/dist/server-BbWQWOH4.js +4 -0
- package/dist/server-BfHtA0Y2.js +1278 -0
- package/dist/server-BiYaxlFV.js +1287 -0
- package/dist/server-C6htB4FI.js +4 -0
- package/dist/server-CB7cjcj4.js +1278 -0
- package/dist/server-CNiOi5dN.js +1285 -0
- package/dist/server-CSC4npaT.js +1285 -0
- package/dist/server-CZfP2Poz.js +1278 -0
- package/dist/server-C_YVts3e.js +4 -0
- package/dist/server-CbQl0M21.js +1278 -0
- package/dist/server-CeZNKjAL.js +4 -0
- package/dist/server-Ct7Fl3SE.js +1285 -0
- package/dist/server-DBUnNWZY.js +1255 -0
- package/dist/server-DRc26z9e.js +4 -0
- package/dist/server-DT7JjjVD.js +4 -0
- package/dist/server-DUVnyXaR.js +1255 -0
- package/dist/server-DacRJyZn.js +4 -0
- package/dist/server-Dy7Q-YLx.js +4 -0
- package/dist/server-PCtHMXe2.js +1292 -0
- package/dist/session-store-7ZPOoB81.js +5 -0
- package/dist/session-store-BOa2y_EQ.js +5 -0
- package/dist/session-store-BYEr8j52.js +139 -0
- package/dist/session-store-Bx7lBD_a.js +141 -0
- package/dist/session-store-C13h7I2r.js +136 -0
- package/dist/session-store-CUHgJ0Xr.js +5 -0
- package/dist/session-store-cbtK6hx9.js +136 -0
- package/dist/session-store-eecMioKI.js +5 -0
- package/dist/sessions-tools-B5_ow-s7.js +5 -0
- package/dist/sessions-tools-CG2mvJo6.js +95 -0
- package/dist/sessions-tools-DVSejkNU.js +95 -0
- package/dist/sessions-tools-fOL1N3Zu.js +5 -0
- package/dist/skill-loader-99egKAGN.js +160 -0
- package/dist/skill-loader-Bl6pYxNN.js +160 -0
- package/dist/skill-loader-D4D5kfDu.js +7 -0
- package/dist/skill-loader-DwbmjEDa.js +7 -0
- package/dist/skill-runtime-1CrUOOGv.js +5 -0
- package/dist/skill-runtime-B-2O7Vgb.js +102 -0
- package/dist/skill-runtime-B7PutgyZ.js +5 -0
- package/dist/skill-runtime-BUhMkMzO.js +5 -0
- package/dist/skill-runtime-Bsf3CXxL.js +102 -0
- package/dist/skill-runtime-Bv7fCCx8.js +102 -0
- package/dist/skill-runtime-Bx2HHcta.js +102 -0
- package/dist/skill-runtime-C6HVvnmN.js +5 -0
- package/dist/skill-runtime-C_54rn66.js +5 -0
- package/dist/skill-runtime-CtSykP3r.js +102 -0
- package/dist/skill-runtime-DZ6uJXGW.js +102 -0
- package/dist/skill-runtime-DaLnq_Jm.js +5 -0
- package/dist/skill-runtime-Do7NLtoa.js +5 -0
- package/dist/skill-runtime-DpDbjL7y.js +102 -0
- package/dist/skill-runtime-acmnZSq7.js +102 -0
- package/dist/skill-runtime-dzuLMVSw.js +5 -0
- package/dist/skill-runtime-fDLfk3m3.js +102 -0
- package/dist/skill-runtime-wiVnzSoJ.js +5 -0
- package/dist/src-B5lCcPXX.js +63 -0
- package/dist/src-B7Kxqi35.js +20 -0
- package/dist/src-B8DEmVd6.js +458 -0
- package/dist/src-BqbwzQQj.js +63 -0
- package/dist/src-C63ECu1t.js +63 -0
- package/dist/src-C65-5rOW.js +458 -0
- package/dist/src-CQOQRIzS.js +458 -0
- package/dist/src-CbTAVbeI.js +20 -0
- package/dist/src-Cmnclt47.js +63 -0
- package/dist/src-D0kptBSa.js +458 -0
- package/dist/src-DQ9Q89FM.js +458 -0
- package/dist/src-DXaT-nxD.js +63 -0
- package/dist/src-DZtpIvWJ.js +63 -0
- package/dist/src-DjzS20TD.js +63 -0
- package/dist/src-DmPjS2Z4.js +458 -0
- package/dist/src-DmbIgW0O.js +63 -0
- package/dist/src-DrDuFPKq.js +63 -0
- package/dist/src-DsaXFru7.js +63 -0
- package/dist/src-Dt0TXI8r.js +458 -0
- package/dist/src-rktqvEBJ.js +458 -0
- package/dist/src-tI8EOp6-.js +458 -0
- package/dist/src-zWhGmJSN.js +458 -0
- package/dist/sub-agent-tools-9k60L5mn.js +39 -0
- package/dist/sub-agent-tools-BBJf8oPD.js +39 -0
- package/dist/sub-agent-tools-BVCARpnF.js +39 -0
- package/dist/sub-agent-tools-Bfk5uqJo.js +39 -0
- package/dist/sub-agent-tools-Cx5BB5IO.js +39 -0
- package/dist/sub-agent-tools-DMT7jjBc.js +39 -0
- package/dist/sub-agent-tools-XeiuvDg5.js +39 -0
- package/dist/sub-agent-tools-iBQiRKg6.js +39 -0
- package/dist/sub-agent-tools-kr921YOA.js +39 -0
- package/dist/theme-CLXvI6Hr.js +183 -0
- package/dist/theme-DdZT-Bq4.js +10 -0
- package/dist/theme-GEpjn_0G.js +180 -0
- package/dist/theme-hOlG-hDL.js +8 -0
- package/dist/tool-policy-D1zWYBKm.js +189 -0
- package/dist/tool-policy-TmXx_fpp.js +189 -0
- package/dist/tool-policy-YgysHf5s.js +189 -0
- package/dist/tts-elevenlabs-BT4WrEwy.js +61 -0
- package/dist/tts-elevenlabs-C62Wnnrg.js +61 -0
- package/dist/tts-elevenlabs-DmEFFeR8.js +61 -0
- package/dist/update-check-BeAPt4-f.js +98 -0
- package/dist/update-check-CaHNCDqe.js +6 -0
- package/dist/vision-B5DQ5hYa.js +121 -0
- package/dist/vision-XOSSQe4m.js +121 -0
- package/dist/vision-sIO3kwFy.js +121 -0
- package/dist/vision-tools-BHogJPuK.js +5 -0
- package/dist/vision-tools-BZhV8wg3.js +51 -0
- package/dist/vision-tools-BiDKd0UA.js +5 -0
- package/dist/vision-tools-CdRxilYR.js +5 -0
- package/dist/vision-tools-DnUjpQhI.js +51 -0
- package/dist/vision-tools-gtUq6d-x.js +51 -0
- package/dist/voice-transcription-5_iQE-0C.js +138 -0
- package/dist/voice-transcription-C3SuzK96.js +138 -0
- package/dist/voice-transcription-CYFj4Iv3.js +138 -0
- package/dist/voice-transcription-ygmlOkky.js +138 -0
- package/dist/website-watch-tools-BF-wR0UI.js +5 -0
- package/dist/website-watch-tools-CVh7RA5-.js +139 -0
- package/dist/website-watch-tools-CthBrGPP.js +5 -0
- package/dist/website-watch-tools-Oxf8Mv4j.js +139 -0
- package/package.json +1 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const chalk = require_chunk.__toESM(require("chalk"));
|
|
3
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
4
|
+
const path = require_chunk.__toESM(require("path"));
|
|
5
|
+
const os = require_chunk.__toESM(require("os"));
|
|
6
|
+
const ws = require_chunk.__toESM(require("ws"));
|
|
7
|
+
const child_process = require_chunk.__toESM(require("child_process"));
|
|
8
|
+
const util = require_chunk.__toESM(require("util"));
|
|
9
|
+
|
|
10
|
+
//#region src/cli/gateway.ts
|
|
11
|
+
const execAsync = (0, util.promisify)(child_process.exec);
|
|
12
|
+
const HC_DIR = path.default.join(os.default.homedir(), ".hyperclaw");
|
|
13
|
+
var GatewayManager = class {
|
|
14
|
+
async isRunning(port = 18789) {
|
|
15
|
+
return this.detect(port);
|
|
16
|
+
}
|
|
17
|
+
async detectRuntime() {
|
|
18
|
+
for (const r of [
|
|
19
|
+
"bun",
|
|
20
|
+
"deno",
|
|
21
|
+
"node"
|
|
22
|
+
]) try {
|
|
23
|
+
await execAsync(`which ${r}`);
|
|
24
|
+
return r;
|
|
25
|
+
} catch {}
|
|
26
|
+
return "node";
|
|
27
|
+
}
|
|
28
|
+
exposureLabel(e) {
|
|
29
|
+
const m = {
|
|
30
|
+
off: "Off",
|
|
31
|
+
serve: "Serve (Tailscale)",
|
|
32
|
+
funnel: "Funnel (public)"
|
|
33
|
+
};
|
|
34
|
+
return m[e] || e;
|
|
35
|
+
}
|
|
36
|
+
async detect(port = 18789) {
|
|
37
|
+
return new Promise((resolve) => {
|
|
38
|
+
try {
|
|
39
|
+
const ws$1 = new ws.WebSocket(`ws://127.0.0.1:${port}`);
|
|
40
|
+
const t = setTimeout(() => {
|
|
41
|
+
ws$1.terminate();
|
|
42
|
+
resolve(false);
|
|
43
|
+
}, 1500);
|
|
44
|
+
ws$1.on("open", () => {
|
|
45
|
+
clearTimeout(t);
|
|
46
|
+
ws$1.close();
|
|
47
|
+
resolve(true);
|
|
48
|
+
});
|
|
49
|
+
ws$1.on("error", () => {
|
|
50
|
+
clearTimeout(t);
|
|
51
|
+
resolve(false);
|
|
52
|
+
});
|
|
53
|
+
} catch {
|
|
54
|
+
resolve(false);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async showStatus(cfg) {
|
|
59
|
+
const running = await this.detect(cfg.port);
|
|
60
|
+
const bindLabel = {
|
|
61
|
+
"127.0.0.1": "loopback (localhost only)",
|
|
62
|
+
"0.0.0.0": "all interfaces (LAN)",
|
|
63
|
+
"tailscale": "Tailscale VPN only"
|
|
64
|
+
}[cfg.bind] || cfg.bind;
|
|
65
|
+
console.log(chalk.default.bold.cyan("\n 💻 GATEWAY\n"));
|
|
66
|
+
console.log(` ${running ? chalk.default.green("● Running") : chalk.default.gray("○ Stopped")} ws://127.0.0.1:${cfg.port}`);
|
|
67
|
+
console.log(` Bind: ${bindLabel}`);
|
|
68
|
+
console.log(` Runtime: ${cfg.runtime}${cfg.runtime === "node" ? chalk.default.gray(" (recommended)") : ""}`);
|
|
69
|
+
if (cfg.tailscaleExposure !== "off") console.log(` Tailscale: ${chalk.default.yellow(cfg.tailscaleExposure)}`);
|
|
70
|
+
console.log(` Token: ${cfg.authToken ? chalk.default.green("set") : chalk.default.yellow("none (open)")}`);
|
|
71
|
+
console.log(` Channels: ${cfg.enabledChannels.join(", ") || chalk.default.gray("none")}`);
|
|
72
|
+
console.log();
|
|
73
|
+
}
|
|
74
|
+
async applyTailscaleExposure(mode, port) {
|
|
75
|
+
try {
|
|
76
|
+
if (mode === "serve") await execAsync(`tailscale serve https / http://localhost:${port}`);
|
|
77
|
+
else await execAsync(`tailscale funnel ${port}`);
|
|
78
|
+
console.log(chalk.default.green(` ✅ Tailscale ${mode} enabled`));
|
|
79
|
+
} catch (e) {
|
|
80
|
+
console.log(chalk.default.yellow(` ⚠ Tailscale: ${e.message.slice(0, 60)}`));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
generateToken() {
|
|
84
|
+
return require("crypto").randomBytes(32).toString("base64url");
|
|
85
|
+
}
|
|
86
|
+
async resolveBindAddress(bind) {
|
|
87
|
+
if (["127.0.0.1", "0.0.0.0"].includes(bind)) return bind;
|
|
88
|
+
if (bind === "tailscale") try {
|
|
89
|
+
const { stdout } = await execAsync("tailscale ip -4 2>/dev/null");
|
|
90
|
+
return stdout.trim();
|
|
91
|
+
} catch {
|
|
92
|
+
return "127.0.0.1";
|
|
93
|
+
}
|
|
94
|
+
return bind;
|
|
95
|
+
}
|
|
96
|
+
async installService(cfg) {
|
|
97
|
+
const platform = os.default.platform();
|
|
98
|
+
if (platform === "linux") await this.installSystemd(cfg);
|
|
99
|
+
else if (platform === "darwin") await this.installLaunchAgent(cfg);
|
|
100
|
+
else console.log(chalk.default.yellow(" Windows: Use NSSM or Task Scheduler"));
|
|
101
|
+
}
|
|
102
|
+
async installSystemd(cfg) {
|
|
103
|
+
const binary = process.execPath;
|
|
104
|
+
const content = `[Unit]
|
|
105
|
+
Description=HyperClaw Gateway
|
|
106
|
+
After=network.target
|
|
107
|
+
|
|
108
|
+
[Service]
|
|
109
|
+
Type=simple
|
|
110
|
+
ExecStart=${binary} ${path.default.join(__dirname, "run-main.js")} gateway start
|
|
111
|
+
Restart=on-failure
|
|
112
|
+
RestartSec=5
|
|
113
|
+
Environment=PORT=${cfg.port}
|
|
114
|
+
|
|
115
|
+
[Install]
|
|
116
|
+
WantedBy=default.target
|
|
117
|
+
`;
|
|
118
|
+
const serviceDir = path.default.join(os.default.homedir(), ".config/systemd/user");
|
|
119
|
+
const serviceFile = path.default.join(serviceDir, "hyperclaw.service");
|
|
120
|
+
try {
|
|
121
|
+
await fs_extra.default.ensureDir(serviceDir);
|
|
122
|
+
await fs_extra.default.writeFile(serviceFile, content);
|
|
123
|
+
await execAsync("systemctl --user daemon-reload");
|
|
124
|
+
await execAsync("systemctl --user enable hyperclaw");
|
|
125
|
+
await execAsync(`loginctl enable-linger ${os.default.userInfo().username}`).catch((e) => {
|
|
126
|
+
console.log(chalk.default.yellow(` ⚠ loginctl enable-linger failed: ${e?.message ?? e}. Service may not persist across logouts.`));
|
|
127
|
+
});
|
|
128
|
+
console.log(chalk.default.green(" ✅ systemd service installed (lingering enabled)"));
|
|
129
|
+
} catch (e) {
|
|
130
|
+
console.log(chalk.default.gray(` Service file: ${serviceFile}`));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async installLaunchAgent(cfg) {
|
|
134
|
+
const binary = process.execPath;
|
|
135
|
+
const plistDir = path.default.join(os.default.homedir(), "Library/LaunchAgents");
|
|
136
|
+
const plistPath = path.default.join(plistDir, "ai.hyperclaw.gateway.plist");
|
|
137
|
+
const content = `<?xml version="1.0" encoding="UTF-8"?>
|
|
138
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
139
|
+
<plist version="1.0"><dict>
|
|
140
|
+
<key>Label</key><string>ai.hyperclaw.gateway</string>
|
|
141
|
+
<key>ProgramArguments</key><array>
|
|
142
|
+
<string>${binary}</string>
|
|
143
|
+
<string>${path.default.join(__dirname, "run-main.js")}</string>
|
|
144
|
+
<string>gateway</string><string>start</string>
|
|
145
|
+
</array>
|
|
146
|
+
<key>RunAtLoad</key><true/>
|
|
147
|
+
<key>KeepAlive</key><true/>
|
|
148
|
+
<key>StandardOutPath</key><string>${HC_DIR}/gateway.log</string>
|
|
149
|
+
<key>StandardErrorPath</key><string>${HC_DIR}/gateway.err</string>
|
|
150
|
+
</dict></plist>`;
|
|
151
|
+
await fs_extra.default.ensureDir(plistDir);
|
|
152
|
+
await fs_extra.default.writeFile(plistPath, content);
|
|
153
|
+
try {
|
|
154
|
+
await execAsync(`launchctl load ${plistPath}`);
|
|
155
|
+
console.log(chalk.default.green(" ✅ LaunchAgent installed"));
|
|
156
|
+
} catch {
|
|
157
|
+
console.log(chalk.default.gray(` Written: ${plistPath}`));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async reload(port, authToken) {
|
|
161
|
+
try {
|
|
162
|
+
const ws$1 = new ws.WebSocket(`ws://127.0.0.1:${port}`);
|
|
163
|
+
await new Promise((resolve, reject) => {
|
|
164
|
+
ws$1.on("open", () => {
|
|
165
|
+
if (authToken) ws$1.send(JSON.stringify({
|
|
166
|
+
type: "auth",
|
|
167
|
+
token: authToken
|
|
168
|
+
}));
|
|
169
|
+
ws$1.send(JSON.stringify({ type: "config:reload" }));
|
|
170
|
+
setTimeout(() => {
|
|
171
|
+
ws$1.close();
|
|
172
|
+
resolve();
|
|
173
|
+
}, 400);
|
|
174
|
+
});
|
|
175
|
+
ws$1.on("error", reject);
|
|
176
|
+
setTimeout(() => {
|
|
177
|
+
ws$1.terminate();
|
|
178
|
+
resolve();
|
|
179
|
+
}, 2e3);
|
|
180
|
+
});
|
|
181
|
+
console.log(chalk.default.green(" ✅ Gateway reloaded"));
|
|
182
|
+
} catch {
|
|
183
|
+
console.log(chalk.default.yellow(" ⚠ Gateway not running — changes apply on next start"));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
//#endregion
|
|
189
|
+
Object.defineProperty(exports, 'GatewayManager', {
|
|
190
|
+
enumerable: true,
|
|
191
|
+
get: function () {
|
|
192
|
+
return GatewayManager;
|
|
193
|
+
}
|
|
194
|
+
});
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const require_paths = require('./paths-AIyBxIzm.js');
|
|
3
|
+
const require_paths$1 = require('./paths-DPovhojT.js');
|
|
4
|
+
const chalk = require_chunk.__toESM(require("chalk"));
|
|
5
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
6
|
+
const path = require_chunk.__toESM(require("path"));
|
|
7
|
+
const os = require_chunk.__toESM(require("os"));
|
|
8
|
+
const ws = require_chunk.__toESM(require("ws"));
|
|
9
|
+
const child_process = require_chunk.__toESM(require("child_process"));
|
|
10
|
+
const util = require_chunk.__toESM(require("util"));
|
|
11
|
+
|
|
12
|
+
//#region src/cli/gateway.ts
|
|
13
|
+
require_paths$1.init_paths();
|
|
14
|
+
const execAsync = (0, util.promisify)(child_process.exec);
|
|
15
|
+
var GatewayManager = class {
|
|
16
|
+
async isRunning(port = 18789) {
|
|
17
|
+
return this.detect(port);
|
|
18
|
+
}
|
|
19
|
+
async detectRuntime() {
|
|
20
|
+
for (const r of [
|
|
21
|
+
"bun",
|
|
22
|
+
"deno",
|
|
23
|
+
"node"
|
|
24
|
+
]) try {
|
|
25
|
+
await execAsync(`which ${r}`);
|
|
26
|
+
return r;
|
|
27
|
+
} catch {}
|
|
28
|
+
return "node";
|
|
29
|
+
}
|
|
30
|
+
exposureLabel(e) {
|
|
31
|
+
const m = {
|
|
32
|
+
off: "Off",
|
|
33
|
+
serve: "Serve (Tailscale)",
|
|
34
|
+
funnel: "Funnel (public)"
|
|
35
|
+
};
|
|
36
|
+
return m[e] || e;
|
|
37
|
+
}
|
|
38
|
+
async detect(port = 18789) {
|
|
39
|
+
return new Promise((resolve) => {
|
|
40
|
+
try {
|
|
41
|
+
const ws$1 = new ws.WebSocket(`ws://127.0.0.1:${port}`);
|
|
42
|
+
const t = setTimeout(() => {
|
|
43
|
+
ws$1.terminate();
|
|
44
|
+
resolve(false);
|
|
45
|
+
}, 1500);
|
|
46
|
+
ws$1.on("open", () => {
|
|
47
|
+
clearTimeout(t);
|
|
48
|
+
ws$1.close();
|
|
49
|
+
resolve(true);
|
|
50
|
+
});
|
|
51
|
+
ws$1.on("error", () => {
|
|
52
|
+
clearTimeout(t);
|
|
53
|
+
resolve(false);
|
|
54
|
+
});
|
|
55
|
+
} catch {
|
|
56
|
+
resolve(false);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async showStatus(cfg) {
|
|
61
|
+
const running = await this.detect(cfg.port);
|
|
62
|
+
const bindLabel = {
|
|
63
|
+
"127.0.0.1": "loopback (localhost only)",
|
|
64
|
+
"0.0.0.0": "all interfaces (LAN)",
|
|
65
|
+
"tailscale": "Tailscale VPN only"
|
|
66
|
+
}[cfg.bind] || cfg.bind;
|
|
67
|
+
console.log(chalk.default.bold.cyan("\n 💻 GATEWAY\n"));
|
|
68
|
+
console.log(` ${running ? chalk.default.green("● Running") : chalk.default.gray("○ Stopped")} ws://127.0.0.1:${cfg.port}`);
|
|
69
|
+
console.log(` Bind: ${bindLabel}`);
|
|
70
|
+
console.log(` Runtime: ${cfg.runtime}${cfg.runtime === "node" ? chalk.default.gray(" (recommended)") : ""}`);
|
|
71
|
+
if (cfg.tailscaleExposure !== "off") console.log(` Tailscale: ${chalk.default.yellow(cfg.tailscaleExposure)}`);
|
|
72
|
+
console.log(` Token: ${cfg.authToken ? chalk.default.green("set") : chalk.default.yellow("none (open)")}`);
|
|
73
|
+
console.log(` Channels: ${cfg.enabledChannels.join(", ") || chalk.default.gray("none")}`);
|
|
74
|
+
console.log();
|
|
75
|
+
}
|
|
76
|
+
async applyTailscaleExposure(mode, port) {
|
|
77
|
+
try {
|
|
78
|
+
if (mode === "serve") await execAsync(`tailscale serve https / http://localhost:${port}`);
|
|
79
|
+
else await execAsync(`tailscale funnel ${port}`);
|
|
80
|
+
console.log(chalk.default.green(` ✅ Tailscale ${mode} enabled`));
|
|
81
|
+
} catch (e) {
|
|
82
|
+
console.log(chalk.default.yellow(` ⚠ Tailscale: ${e.message.slice(0, 60)}`));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
generateToken() {
|
|
86
|
+
return require("crypto").randomBytes(32).toString("base64url");
|
|
87
|
+
}
|
|
88
|
+
async resolveBindAddress(bind) {
|
|
89
|
+
if (["127.0.0.1", "0.0.0.0"].includes(bind)) return bind;
|
|
90
|
+
if (bind === "tailscale") try {
|
|
91
|
+
const { stdout } = await execAsync("tailscale ip -4 2>/dev/null");
|
|
92
|
+
return stdout.trim();
|
|
93
|
+
} catch {
|
|
94
|
+
return "127.0.0.1";
|
|
95
|
+
}
|
|
96
|
+
return bind;
|
|
97
|
+
}
|
|
98
|
+
async installService(cfg) {
|
|
99
|
+
const platform = os.default.platform();
|
|
100
|
+
if (platform === "linux") await this.installSystemd(cfg);
|
|
101
|
+
else if (platform === "darwin") await this.installLaunchAgent(cfg);
|
|
102
|
+
else console.log(chalk.default.yellow(" Windows: Use NSSM or Task Scheduler"));
|
|
103
|
+
}
|
|
104
|
+
async installSystemd(cfg) {
|
|
105
|
+
const binary = process.execPath;
|
|
106
|
+
const content = `[Unit]
|
|
107
|
+
Description=HyperClaw Gateway
|
|
108
|
+
After=network.target
|
|
109
|
+
|
|
110
|
+
[Service]
|
|
111
|
+
Type=simple
|
|
112
|
+
ExecStart=${binary} ${path.default.join(__dirname, "run-main.js")} gateway start
|
|
113
|
+
Restart=on-failure
|
|
114
|
+
RestartSec=5
|
|
115
|
+
Environment=PORT=${cfg.port}
|
|
116
|
+
|
|
117
|
+
[Install]
|
|
118
|
+
WantedBy=default.target
|
|
119
|
+
`;
|
|
120
|
+
const serviceDir = path.default.join(os.default.homedir(), ".config/systemd/user");
|
|
121
|
+
const serviceFile = path.default.join(serviceDir, "hyperclaw.service");
|
|
122
|
+
try {
|
|
123
|
+
await fs_extra.default.ensureDir(serviceDir);
|
|
124
|
+
await fs_extra.default.writeFile(serviceFile, content);
|
|
125
|
+
await execAsync("systemctl --user daemon-reload");
|
|
126
|
+
await execAsync("systemctl --user enable hyperclaw");
|
|
127
|
+
await execAsync(`loginctl enable-linger ${os.default.userInfo().username}`).catch((e) => {
|
|
128
|
+
console.log(chalk.default.yellow(` ⚠ loginctl enable-linger failed: ${e?.message ?? e}. Service may not persist across logouts.`));
|
|
129
|
+
});
|
|
130
|
+
console.log(chalk.default.green(" ✅ systemd service installed (lingering enabled)"));
|
|
131
|
+
} catch (e) {
|
|
132
|
+
console.log(chalk.default.gray(` Service file: ${serviceFile}`));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async installLaunchAgent(cfg) {
|
|
136
|
+
const binary = process.execPath;
|
|
137
|
+
const plistDir = path.default.join(os.default.homedir(), "Library/LaunchAgents");
|
|
138
|
+
const plistPath = path.default.join(plistDir, "ai.hyperclaw.gateway.plist");
|
|
139
|
+
const content = `<?xml version="1.0" encoding="UTF-8"?>
|
|
140
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
141
|
+
<plist version="1.0"><dict>
|
|
142
|
+
<key>Label</key><string>ai.hyperclaw.gateway</string>
|
|
143
|
+
<key>ProgramArguments</key><array>
|
|
144
|
+
<string>${binary}</string>
|
|
145
|
+
<string>${path.default.join(__dirname, "run-main.js")}</string>
|
|
146
|
+
<string>gateway</string><string>start</string>
|
|
147
|
+
</array>
|
|
148
|
+
<key>RunAtLoad</key><true/>
|
|
149
|
+
<key>KeepAlive</key><true/>
|
|
150
|
+
<key>StandardOutPath</key><string>${require_paths.getHyperClawDir()}/gateway.log</string>
|
|
151
|
+
<key>StandardErrorPath</key><string>${require_paths.getHyperClawDir()}/gateway.err</string>
|
|
152
|
+
</dict></plist>`;
|
|
153
|
+
await fs_extra.default.ensureDir(plistDir);
|
|
154
|
+
await fs_extra.default.writeFile(plistPath, content);
|
|
155
|
+
try {
|
|
156
|
+
await execAsync(`launchctl load ${plistPath}`);
|
|
157
|
+
console.log(chalk.default.green(" ✅ LaunchAgent installed"));
|
|
158
|
+
} catch {
|
|
159
|
+
console.log(chalk.default.gray(` Written: ${plistPath}`));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async reload(port, authToken) {
|
|
163
|
+
try {
|
|
164
|
+
const ws$1 = new ws.WebSocket(`ws://127.0.0.1:${port}`);
|
|
165
|
+
await new Promise((resolve, reject) => {
|
|
166
|
+
ws$1.on("open", () => {
|
|
167
|
+
if (authToken) ws$1.send(JSON.stringify({
|
|
168
|
+
type: "auth",
|
|
169
|
+
token: authToken
|
|
170
|
+
}));
|
|
171
|
+
ws$1.send(JSON.stringify({ type: "config:reload" }));
|
|
172
|
+
setTimeout(() => {
|
|
173
|
+
ws$1.close();
|
|
174
|
+
resolve();
|
|
175
|
+
}, 400);
|
|
176
|
+
});
|
|
177
|
+
ws$1.on("error", reject);
|
|
178
|
+
setTimeout(() => {
|
|
179
|
+
ws$1.terminate();
|
|
180
|
+
resolve();
|
|
181
|
+
}, 2e3);
|
|
182
|
+
});
|
|
183
|
+
console.log(chalk.default.green(" ✅ Gateway reloaded"));
|
|
184
|
+
} catch {
|
|
185
|
+
console.log(chalk.default.yellow(" ⚠ Gateway not running — changes apply on next start"));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
//#endregion
|
|
191
|
+
Object.defineProperty(exports, 'GatewayManager', {
|
|
192
|
+
enumerable: true,
|
|
193
|
+
get: function () {
|
|
194
|
+
return GatewayManager;
|
|
195
|
+
}
|
|
196
|
+
});
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const chalk = require_chunk.__toESM(require("chalk"));
|
|
3
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
4
|
+
const path = require_chunk.__toESM(require("path"));
|
|
5
|
+
const os = require_chunk.__toESM(require("os"));
|
|
6
|
+
const child_process = require_chunk.__toESM(require("child_process"));
|
|
7
|
+
const util = require_chunk.__toESM(require("util"));
|
|
8
|
+
const ws = require_chunk.__toESM(require("ws"));
|
|
9
|
+
|
|
10
|
+
//#region src/cli/gateway.ts
|
|
11
|
+
const execAsync = (0, util.promisify)(child_process.exec);
|
|
12
|
+
const HC_DIR = path.default.join(os.default.homedir(), ".hyperclaw");
|
|
13
|
+
var GatewayManager = class {
|
|
14
|
+
async isRunning(port = 18789) {
|
|
15
|
+
return this.detect(port);
|
|
16
|
+
}
|
|
17
|
+
async detectRuntime() {
|
|
18
|
+
for (const r of [
|
|
19
|
+
"bun",
|
|
20
|
+
"deno",
|
|
21
|
+
"node"
|
|
22
|
+
]) try {
|
|
23
|
+
await execAsync(`which ${r}`);
|
|
24
|
+
return r;
|
|
25
|
+
} catch {}
|
|
26
|
+
return "node";
|
|
27
|
+
}
|
|
28
|
+
exposureLabel(e) {
|
|
29
|
+
const m = {
|
|
30
|
+
off: "Off",
|
|
31
|
+
serve: "Serve (Tailscale)",
|
|
32
|
+
funnel: "Funnel (public)"
|
|
33
|
+
};
|
|
34
|
+
return m[e] || e;
|
|
35
|
+
}
|
|
36
|
+
async detect(port = 18789) {
|
|
37
|
+
return new Promise((resolve) => {
|
|
38
|
+
try {
|
|
39
|
+
const ws$1 = new ws.WebSocket(`ws://127.0.0.1:${port}`);
|
|
40
|
+
const t = setTimeout(() => {
|
|
41
|
+
ws$1.terminate();
|
|
42
|
+
resolve(false);
|
|
43
|
+
}, 1500);
|
|
44
|
+
ws$1.on("open", () => {
|
|
45
|
+
clearTimeout(t);
|
|
46
|
+
ws$1.close();
|
|
47
|
+
resolve(true);
|
|
48
|
+
});
|
|
49
|
+
ws$1.on("error", () => {
|
|
50
|
+
clearTimeout(t);
|
|
51
|
+
resolve(false);
|
|
52
|
+
});
|
|
53
|
+
} catch {
|
|
54
|
+
resolve(false);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async showStatus(cfg) {
|
|
59
|
+
const running = await this.detect(cfg.port);
|
|
60
|
+
const bindLabel = {
|
|
61
|
+
"127.0.0.1": "loopback (localhost only)",
|
|
62
|
+
"0.0.0.0": "all interfaces (LAN)",
|
|
63
|
+
"tailscale": "Tailscale VPN only"
|
|
64
|
+
}[cfg.bind] || cfg.bind;
|
|
65
|
+
console.log(chalk.default.bold.cyan("\n 💻 GATEWAY\n"));
|
|
66
|
+
console.log(` ${running ? chalk.default.green("● Running") : chalk.default.gray("○ Stopped")} ws://127.0.0.1:${cfg.port}`);
|
|
67
|
+
console.log(` Bind: ${bindLabel}`);
|
|
68
|
+
console.log(` Runtime: ${cfg.runtime}${cfg.runtime === "node" ? chalk.default.gray(" (recommended)") : ""}`);
|
|
69
|
+
if (cfg.tailscaleExposure !== "off") console.log(` Tailscale: ${chalk.default.yellow(cfg.tailscaleExposure)}`);
|
|
70
|
+
console.log(` Token: ${cfg.authToken ? chalk.default.green("set") : chalk.default.yellow("none (open)")}`);
|
|
71
|
+
console.log(` Channels: ${cfg.enabledChannels.join(", ") || chalk.default.gray("none")}`);
|
|
72
|
+
console.log();
|
|
73
|
+
}
|
|
74
|
+
async applyTailscaleExposure(mode, port) {
|
|
75
|
+
try {
|
|
76
|
+
if (mode === "serve") await execAsync(`tailscale serve https / http://localhost:${port}`);
|
|
77
|
+
else await execAsync(`tailscale funnel ${port}`);
|
|
78
|
+
console.log(chalk.default.green(` ✅ Tailscale ${mode} enabled`));
|
|
79
|
+
} catch (e) {
|
|
80
|
+
console.log(chalk.default.yellow(` ⚠ Tailscale: ${e.message.slice(0, 60)}`));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
generateToken() {
|
|
84
|
+
return require("crypto").randomBytes(32).toString("base64url");
|
|
85
|
+
}
|
|
86
|
+
async resolveBindAddress(bind) {
|
|
87
|
+
if (["127.0.0.1", "0.0.0.0"].includes(bind)) return bind;
|
|
88
|
+
if (bind === "tailscale") try {
|
|
89
|
+
const { stdout } = await execAsync("tailscale ip -4 2>/dev/null");
|
|
90
|
+
return stdout.trim();
|
|
91
|
+
} catch {
|
|
92
|
+
return "127.0.0.1";
|
|
93
|
+
}
|
|
94
|
+
return bind;
|
|
95
|
+
}
|
|
96
|
+
async installService(cfg) {
|
|
97
|
+
const platform = os.default.platform();
|
|
98
|
+
if (platform === "linux") await this.installSystemd(cfg);
|
|
99
|
+
else if (platform === "darwin") await this.installLaunchAgent(cfg);
|
|
100
|
+
else console.log(chalk.default.yellow(" Windows: Use NSSM or Task Scheduler"));
|
|
101
|
+
}
|
|
102
|
+
async installSystemd(cfg) {
|
|
103
|
+
const binary = process.execPath;
|
|
104
|
+
const content = `[Unit]
|
|
105
|
+
Description=HyperClaw Gateway
|
|
106
|
+
After=network.target
|
|
107
|
+
|
|
108
|
+
[Service]
|
|
109
|
+
Type=simple
|
|
110
|
+
ExecStart=${binary} ${path.default.join(__dirname, "run-main.js")} gateway start
|
|
111
|
+
Restart=on-failure
|
|
112
|
+
RestartSec=5
|
|
113
|
+
Environment=PORT=${cfg.port}
|
|
114
|
+
|
|
115
|
+
[Install]
|
|
116
|
+
WantedBy=default.target
|
|
117
|
+
`;
|
|
118
|
+
const serviceDir = path.default.join(os.default.homedir(), ".config/systemd/user");
|
|
119
|
+
const serviceFile = path.default.join(serviceDir, "hyperclaw.service");
|
|
120
|
+
try {
|
|
121
|
+
await fs_extra.default.ensureDir(serviceDir);
|
|
122
|
+
await fs_extra.default.writeFile(serviceFile, content);
|
|
123
|
+
await execAsync("systemctl --user daemon-reload");
|
|
124
|
+
await execAsync("systemctl --user enable hyperclaw");
|
|
125
|
+
await execAsync(`loginctl enable-linger ${os.default.userInfo().username}`).catch((e) => {
|
|
126
|
+
console.log(chalk.default.yellow(` ⚠ loginctl enable-linger failed: ${e?.message ?? e}. Service may not persist across logouts.`));
|
|
127
|
+
});
|
|
128
|
+
console.log(chalk.default.green(" ✅ systemd service installed (lingering enabled)"));
|
|
129
|
+
} catch (e) {
|
|
130
|
+
console.log(chalk.default.gray(` Service file: ${serviceFile}`));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async installLaunchAgent(cfg) {
|
|
134
|
+
const binary = process.execPath;
|
|
135
|
+
const plistDir = path.default.join(os.default.homedir(), "Library/LaunchAgents");
|
|
136
|
+
const plistPath = path.default.join(plistDir, "ai.hyperclaw.gateway.plist");
|
|
137
|
+
const content = `<?xml version="1.0" encoding="UTF-8"?>
|
|
138
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
139
|
+
<plist version="1.0"><dict>
|
|
140
|
+
<key>Label</key><string>ai.hyperclaw.gateway</string>
|
|
141
|
+
<key>ProgramArguments</key><array>
|
|
142
|
+
<string>${binary}</string>
|
|
143
|
+
<string>${path.default.join(__dirname, "run-main.js")}</string>
|
|
144
|
+
<string>gateway</string><string>start</string>
|
|
145
|
+
</array>
|
|
146
|
+
<key>RunAtLoad</key><true/>
|
|
147
|
+
<key>KeepAlive</key><true/>
|
|
148
|
+
<key>StandardOutPath</key><string>${HC_DIR}/gateway.log</string>
|
|
149
|
+
<key>StandardErrorPath</key><string>${HC_DIR}/gateway.err</string>
|
|
150
|
+
</dict></plist>`;
|
|
151
|
+
await fs_extra.default.ensureDir(plistDir);
|
|
152
|
+
await fs_extra.default.writeFile(plistPath, content);
|
|
153
|
+
try {
|
|
154
|
+
await execAsync(`launchctl load ${plistPath}`);
|
|
155
|
+
console.log(chalk.default.green(" ✅ LaunchAgent installed"));
|
|
156
|
+
} catch {
|
|
157
|
+
console.log(chalk.default.gray(` Written: ${plistPath}`));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async reload(port, authToken) {
|
|
161
|
+
try {
|
|
162
|
+
const ws$1 = new ws.WebSocket(`ws://127.0.0.1:${port}`);
|
|
163
|
+
await new Promise((resolve, reject) => {
|
|
164
|
+
ws$1.on("open", () => {
|
|
165
|
+
if (authToken) ws$1.send(JSON.stringify({
|
|
166
|
+
type: "auth",
|
|
167
|
+
token: authToken
|
|
168
|
+
}));
|
|
169
|
+
ws$1.send(JSON.stringify({ type: "config:reload" }));
|
|
170
|
+
setTimeout(() => {
|
|
171
|
+
ws$1.close();
|
|
172
|
+
resolve();
|
|
173
|
+
}, 400);
|
|
174
|
+
});
|
|
175
|
+
ws$1.on("error", reject);
|
|
176
|
+
setTimeout(() => {
|
|
177
|
+
ws$1.terminate();
|
|
178
|
+
resolve();
|
|
179
|
+
}, 2e3);
|
|
180
|
+
});
|
|
181
|
+
console.log(chalk.default.green(" ✅ Gateway reloaded"));
|
|
182
|
+
} catch {
|
|
183
|
+
console.log(chalk.default.yellow(" ⚠ Gateway not running — changes apply on next start"));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
//#endregion
|
|
189
|
+
Object.defineProperty(exports, 'GatewayManager', {
|
|
190
|
+
enumerable: true,
|
|
191
|
+
get: function () {
|
|
192
|
+
return GatewayManager;
|
|
193
|
+
}
|
|
194
|
+
});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
3
|
+
const path = require_chunk.__toESM(require("path"));
|
|
4
|
+
const os = require_chunk.__toESM(require("os"));
|
|
5
|
+
|
|
6
|
+
//#region src/commands/gmail-watch-setup.ts
|
|
7
|
+
const HC_DIR = path.default.join(os.default.homedir(), ".hyperclaw");
|
|
8
|
+
async function getGmailAccessToken() {
|
|
9
|
+
const paths = [path.default.join(HC_DIR, "oauth-google-gmail.json"), path.default.join(HC_DIR, "oauth-google.json")];
|
|
10
|
+
for (const p of paths) {
|
|
11
|
+
if (!await fs_extra.default.pathExists(p)) continue;
|
|
12
|
+
const data = await fs_extra.default.readJson(p);
|
|
13
|
+
if (data.access_token) return data.access_token;
|
|
14
|
+
}
|
|
15
|
+
throw new Error("No Gmail OAuth token found. Run: hyperclaw auth oauth google-gmail");
|
|
16
|
+
}
|
|
17
|
+
async function setupGmailWatch(opts) {
|
|
18
|
+
const token = await getGmailAccessToken();
|
|
19
|
+
const body = JSON.stringify({
|
|
20
|
+
topicName: opts.topicName,
|
|
21
|
+
labelIds: opts.labelIds || ["INBOX"],
|
|
22
|
+
labelFilterBehavior: "INCLUDE"
|
|
23
|
+
});
|
|
24
|
+
const res = await fetch("https://gmail.googleapis.com/gmail/v1/users/me/watch", {
|
|
25
|
+
method: "POST",
|
|
26
|
+
headers: {
|
|
27
|
+
Authorization: `Bearer ${token}`,
|
|
28
|
+
"Content-Type": "application/json"
|
|
29
|
+
},
|
|
30
|
+
body
|
|
31
|
+
});
|
|
32
|
+
if (!res.ok) {
|
|
33
|
+
const err = await res.text();
|
|
34
|
+
throw new Error(`Gmail API error ${res.status}: ${err}`);
|
|
35
|
+
}
|
|
36
|
+
return res.json();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
exports.setupGmailWatch = setupGmailWatch;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
3
|
+
const path = require_chunk.__toESM(require("path"));
|
|
4
|
+
const os = require_chunk.__toESM(require("os"));
|
|
5
|
+
|
|
6
|
+
//#region src/commands/gmail-watch-setup.ts
|
|
7
|
+
const HC_DIR = path.default.join(os.default.homedir(), ".hyperclaw");
|
|
8
|
+
async function getGmailAccessToken() {
|
|
9
|
+
const paths = [path.default.join(HC_DIR, "oauth-google-gmail.json"), path.default.join(HC_DIR, "oauth-google.json")];
|
|
10
|
+
for (const p of paths) {
|
|
11
|
+
if (!await fs_extra.default.pathExists(p)) continue;
|
|
12
|
+
const data = await fs_extra.default.readJson(p);
|
|
13
|
+
if (data.access_token) return data.access_token;
|
|
14
|
+
}
|
|
15
|
+
throw new Error("No Gmail OAuth token found. Run: hyperclaw auth oauth google-gmail");
|
|
16
|
+
}
|
|
17
|
+
async function setupGmailWatch(opts) {
|
|
18
|
+
const token = await getGmailAccessToken();
|
|
19
|
+
const body = JSON.stringify({
|
|
20
|
+
topicName: opts.topicName,
|
|
21
|
+
labelIds: opts.labelIds || ["INBOX"],
|
|
22
|
+
labelFilterBehavior: "INCLUDE"
|
|
23
|
+
});
|
|
24
|
+
const res = await fetch("https://gmail.googleapis.com/gmail/v1/users/me/watch", {
|
|
25
|
+
method: "POST",
|
|
26
|
+
headers: {
|
|
27
|
+
Authorization: `Bearer ${token}`,
|
|
28
|
+
"Content-Type": "application/json"
|
|
29
|
+
},
|
|
30
|
+
body
|
|
31
|
+
});
|
|
32
|
+
if (!res.ok) {
|
|
33
|
+
const err = await res.text();
|
|
34
|
+
throw new Error(`Gmail API error ${res.status}: ${err}`);
|
|
35
|
+
}
|
|
36
|
+
return res.json();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
exports.setupGmailWatch = setupGmailWatch;
|