hyperclaw 5.2.0 → 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-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-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-DgBZaFyi.js +355 -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-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-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-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-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-Bkncybig.js +508 -0
- package/dist/hyperclawbot-C37Unss3.js +505 -0
- package/dist/hyperclawbot-CFHXZr12.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-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-3SoScSbC.js +11 -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-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-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-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-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-mPfwBFvX.js +6 -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-CFQC39vg.js +5 -0
- package/dist/providers-DP8T0QCR.js +1089 -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-Ct7Fl3SE.js +1285 -0
- package/dist/server-DRc26z9e.js +4 -0
- package/dist/server-DT7JjjVD.js +4 -0
- package/dist/server-DacRJyZn.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-Bv7fCCx8.js +102 -0
- package/dist/skill-runtime-Bx2HHcta.js +102 -0
- package/dist/skill-runtime-C6HVvnmN.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-DpDbjL7y.js +102 -0
- package/dist/skill-runtime-acmnZSq7.js +102 -0
- package/dist/skill-runtime-dzuLMVSw.js +5 -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-CbTAVbeI.js +20 -0
- package/dist/src-Cmnclt47.js +63 -0
- package/dist/src-D0kptBSa.js +458 -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-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-Cx5BB5IO.js +39 -0
- package/dist/sub-agent-tools-DMT7jjBc.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
package/dist/run-main.js
CHANGED
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
-
require('./paths-AIyBxIzm.js');
|
|
3
|
-
require('./paths-DPovhojT.js');
|
|
4
|
-
require('./env-resolve-
|
|
5
|
-
const
|
|
6
|
-
require('./server-
|
|
7
|
-
const require_daemon = require('./daemon-
|
|
8
|
-
require('./
|
|
9
|
-
require('./
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
2
|
+
const require_paths = require('./paths-AIyBxIzm.js');
|
|
3
|
+
const require_paths$1 = require('./paths-DPovhojT.js');
|
|
4
|
+
require('./env-resolve-DS92g2fk.js');
|
|
5
|
+
const require_config = require('./config-Br73VMLb.js');
|
|
6
|
+
require('./server-PCtHMXe2.js');
|
|
7
|
+
const require_daemon = require('./daemon-rpJ-J0bv.js');
|
|
8
|
+
const require_gateway = require('./gateway-CzI8dnlS.js');
|
|
9
|
+
require('./providers-DP8T0QCR.js');
|
|
10
|
+
const require_onboard = require('./onboard-CCuETEUr.js');
|
|
11
|
+
require('./theme-CLXvI6Hr.js');
|
|
12
|
+
const require_hub = require('./hub-CI4qcd1b.js');
|
|
13
|
+
const require_update_check = require('./update-check-BeAPt4-f.js');
|
|
14
|
+
const require_manager = require('./manager-Jd0qSzVe.js');
|
|
15
|
+
const require_memory = require('./memory-D-Py-cz5.js');
|
|
16
|
+
const require_loader = require('./loader-Ckvv7vHF.js');
|
|
17
|
+
const require_agents_routing = require('./agents-routing-Bz3SstlK.js');
|
|
18
|
+
const require_pairing = require('./pairing-BRPzVXzQ.js');
|
|
19
|
+
const require_doctor = require('./doctor-BcfmNAGV.js');
|
|
20
|
+
const require_health = require('./health-CBy1PfzC.js');
|
|
21
|
+
const require_security = require('./security-BhhX8wJx.js');
|
|
22
|
+
const require_device_auth_store = require('./device-auth-store-LKgpU74c.js');
|
|
23
|
+
const require_developer_keys = require('./developer-keys-CSmzA-dl.js');
|
|
22
24
|
const commander = require_chunk.__toESM(require("commander"));
|
|
23
25
|
const chalk = require_chunk.__toESM(require("chalk"));
|
|
24
26
|
const inquirer = require_chunk.__toESM(require("inquirer"));
|
|
@@ -36,17 +38,54 @@ const net = require_chunk.__toESM(require("net"));
|
|
|
36
38
|
|
|
37
39
|
//#region src/cli/dashboard.ts
|
|
38
40
|
var Dashboard = class {
|
|
41
|
+
liveInterval = null;
|
|
39
42
|
async launch(live) {
|
|
40
43
|
console.clear();
|
|
41
44
|
await this.drawDashboard();
|
|
42
45
|
if (live) {
|
|
43
|
-
console.log(chalk.default.hex("#06b6d4")("
|
|
46
|
+
console.log(chalk.default.hex("#06b6d4")("● LIVE MODE — Ctrl+C to exit\n"));
|
|
44
47
|
this.startLiveUpdates();
|
|
45
48
|
}
|
|
49
|
+
if (process.stdin.isTTY) {
|
|
50
|
+
process.stdin.setRawMode?.(true);
|
|
51
|
+
process.stdin.resume();
|
|
52
|
+
process.stdin.setEncoding("utf8");
|
|
53
|
+
process.stdin.on("data", (key) => this.handleKey(key));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
handleKey(key) {
|
|
57
|
+
const k = key.toLowerCase();
|
|
58
|
+
if (k === "q" || k === "") {
|
|
59
|
+
this.cleanup();
|
|
60
|
+
process.exit(0);
|
|
61
|
+
}
|
|
62
|
+
if (k === "d") this.runCommand(["daemon", "status"]);
|
|
63
|
+
else if (k === "h") this.runCommand(["hub"]);
|
|
64
|
+
else if (k === "g") this.runCommand(["gateway", "status"]);
|
|
65
|
+
else if (k === "m") this.runCommand(["memory", "show"]);
|
|
66
|
+
}
|
|
67
|
+
runCommand(args) {
|
|
68
|
+
const entryDir = typeof require !== "undefined" && require.main?.filename ? path.default.dirname(require.main.filename) : __dirname;
|
|
69
|
+
const entry = path.default.join(entryDir, "run-main.js");
|
|
70
|
+
const child = (0, child_process.spawn)(process.execPath, [entry, ...args], {
|
|
71
|
+
stdio: "inherit",
|
|
72
|
+
env: process.env,
|
|
73
|
+
cwd: process.cwd()
|
|
74
|
+
});
|
|
75
|
+
child.on("exit", () => {
|
|
76
|
+
console.log(chalk.default.gray("\n Press a key: [d] daemon [h] hub [g] gateway [m] memory [q] quit\n"));
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
cleanup() {
|
|
80
|
+
if (this.liveInterval) {
|
|
81
|
+
clearInterval(this.liveInterval);
|
|
82
|
+
this.liveInterval = null;
|
|
83
|
+
}
|
|
84
|
+
if (process.stdin.isTTY && process.stdin.setRawMode) process.stdin.setRawMode(false);
|
|
46
85
|
}
|
|
47
86
|
async drawDashboard() {
|
|
48
|
-
const cfg = await new
|
|
49
|
-
const gm = new
|
|
87
|
+
const cfg = await new require_config.ConfigStore().load();
|
|
88
|
+
const gm = new require_gateway.GatewayManager();
|
|
50
89
|
const hub = new require_hub.SkillHub();
|
|
51
90
|
const installed = await hub.getInstalled();
|
|
52
91
|
let updateNotice = null;
|
|
@@ -57,66 +96,64 @@ var Dashboard = class {
|
|
|
57
96
|
const upd = await Promise.race([require_update_check.checkForUpdates(current), new Promise((r) => setTimeout(() => r(null), 2500))]);
|
|
58
97
|
if (upd?.available) updateNotice = chalk.default.yellow(`⬆ Update available: ${upd.latest}`) + chalk.default.gray(` → npm i -g hyperclaw`);
|
|
59
98
|
} catch {}
|
|
60
|
-
const port = cfg?.gateway?.port
|
|
99
|
+
const port = cfg?.gateway?.port ?? 18789;
|
|
61
100
|
const agent = cfg?.identity?.agentName || "Hyper";
|
|
62
101
|
const user = cfg?.identity?.userName || "Boss";
|
|
63
102
|
const model = cfg?.provider?.modelId || "openrouter/auto";
|
|
64
103
|
const channels = (cfg?.channels ?? cfg?.gateway?.enabledChannels ?? ["cli"]).join(", ");
|
|
65
104
|
const isRunning = await gm.isRunning(port);
|
|
66
|
-
const statusDot = isRunning ? chalk.default.hex("#06b6d4")("
|
|
67
|
-
const statusText = isRunning ? chalk.default.hex("#06b6d4")("
|
|
105
|
+
const statusDot = isRunning ? chalk.default.hex("#06b6d4")("●") : chalk.default.gray("○");
|
|
106
|
+
const statusText = isRunning ? chalk.default.hex("#06b6d4")("Running") : chalk.default.gray("Stopped");
|
|
68
107
|
const w = 72;
|
|
69
108
|
const line = "=".repeat(w);
|
|
70
109
|
const c = chalk.default.hex("#06b6d4");
|
|
71
110
|
const row = (content) => {
|
|
72
111
|
const stripped = content.replace(/\x1b\[[0-9;]*m/g, "");
|
|
73
112
|
const pad = Math.max(0, w - stripped.length - 1);
|
|
74
|
-
return c(
|
|
113
|
+
return c("│ ") + content + " ".repeat(pad) + c("│");
|
|
75
114
|
};
|
|
76
|
-
console.log(
|
|
77
|
-
console.log(c(
|
|
78
|
-
console.log(c(
|
|
79
|
-
console.log(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
console.log(
|
|
115
|
+
const logRow = (content) => console.log(row(content));
|
|
116
|
+
console.log(c("├" + line + "┤"));
|
|
117
|
+
console.log(c("│") + chalk.default.bold.hex("#06b6d4")(`${"🦅 HYPERCLAW v5.2.1 — GATEWAY DASHBOARD".padStart(45).padEnd(w)}`) + c("│"));
|
|
118
|
+
console.log(c("├" + line + "┤"));
|
|
119
|
+
logRow(`${statusDot} Gateway ${statusText} ${chalk.default.gray("│")} ws://localhost:${port} ${chalk.default.gray("│")} Agent: ${c(agent)}`);
|
|
120
|
+
logRow(`${c("●")} Model ${chalk.default.gray(model.slice(0, 30))} ${chalk.default.gray("│")} User: ${c(user)}`);
|
|
121
|
+
console.log(c("├" + "-".repeat(w) + "┤"));
|
|
122
|
+
logRow(chalk.default.bold("ACTIVE CHANNELS"));
|
|
83
123
|
const chList = (channels || "cli").split(", ");
|
|
84
124
|
for (let i = 0; i < chList.length; i += 3) {
|
|
85
|
-
const group = chList.slice(i, i + 3).map((ch) => ` ${c("
|
|
86
|
-
|
|
125
|
+
const group = chList.slice(i, i + 3).map((ch) => ` ${c("●")} ${ch.padEnd(12)}`).join("");
|
|
126
|
+
logRow(group);
|
|
87
127
|
}
|
|
88
|
-
console.log(c(
|
|
89
|
-
|
|
90
|
-
if (installed.length === 0)
|
|
128
|
+
console.log(c("├" + "-".repeat(w) + "┤"));
|
|
129
|
+
logRow(chalk.default.bold("INSTALLED SKILLS"));
|
|
130
|
+
if (installed.length === 0) logRow(chalk.default.gray(" No skills installed. Run: hyperclaw hub"));
|
|
91
131
|
else for (let i = 0; i < installed.length; i += 3) {
|
|
92
|
-
const group = installed.slice(i, i + 3).map((s) => ` ${c("
|
|
93
|
-
|
|
132
|
+
const group = installed.slice(i, i + 3).map((s) => ` ${c("●")} ${s.name.slice(0, 14).padEnd(14)}`).join("");
|
|
133
|
+
logRow(group);
|
|
94
134
|
}
|
|
95
|
-
console.log(c(
|
|
96
|
-
|
|
135
|
+
console.log(c("├" + "-".repeat(w) + "┤"));
|
|
136
|
+
logRow(chalk.default.bold("STATUS"));
|
|
97
137
|
const now = (/* @__PURE__ */ new Date()).toLocaleTimeString();
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
console.log(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
console.log(
|
|
104
|
-
console.log(c(`L${line}-\n`));
|
|
138
|
+
logRow(` [${now}] Gateway: ${isRunning ? c("online") : chalk.default.gray("offline")} Port: ${port}`);
|
|
139
|
+
logRow(` [${now}] Channels: ${channels || "cli"}`);
|
|
140
|
+
console.log(c("├" + "-".repeat(w) + "┤"));
|
|
141
|
+
if (updateNotice) logRow(` ${updateNotice}`);
|
|
142
|
+
logRow(chalk.default.gray("Commands: [d] ") + chalk.default.red("daemon") + chalk.default.gray(" [h] hub [g] gateway [m] memory [q] quit"));
|
|
143
|
+
console.log(c("└" + line + "┘\n"));
|
|
105
144
|
}
|
|
106
145
|
startLiveUpdates() {
|
|
146
|
+
const defaultPort = 18789;
|
|
107
147
|
let tick = 0;
|
|
108
|
-
setInterval(() => {
|
|
148
|
+
this.liveInterval = setInterval(async () => {
|
|
109
149
|
tick++;
|
|
110
|
-
readline.default.cursorTo(process.stdout, 0, 20);
|
|
111
150
|
const t = (/* @__PURE__ */ new Date()).toLocaleTimeString();
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
];
|
|
119
|
-
console.log(chalk.default.gray(` [${t}] Heartbeat #${tick}: ${chalk.default.hex("#06b6d4")(states[tick % states.length])}`));
|
|
151
|
+
const gm = new require_gateway.GatewayManager();
|
|
152
|
+
const cfg = await new require_config.ConfigStore().load().catch(() => null);
|
|
153
|
+
const p = cfg?.gateway?.port ?? defaultPort;
|
|
154
|
+
const isRunning = await gm.isRunning(p);
|
|
155
|
+
const status = isRunning ? chalk.default.hex("#06b6d4")("Running") : chalk.default.gray("Stopped");
|
|
156
|
+
process.stdout.write(chalk.default.gray(` [${t}] Heartbeat #${tick}: Gateway ${status}\n`));
|
|
120
157
|
}, 3e3);
|
|
121
158
|
}
|
|
122
159
|
};
|
|
@@ -156,7 +193,7 @@ async function recordAudio(outFile, seconds) {
|
|
|
156
193
|
async function transcribeWhisper(filePath, lang) {
|
|
157
194
|
const apiKey = process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY;
|
|
158
195
|
if (!apiKey) throw new Error("No OPENAI_API_KEY set");
|
|
159
|
-
const FormData = (await Promise.resolve().then(() => require_chunk.__toDynamicImportESM()(require("./form_data-
|
|
196
|
+
const FormData = (await Promise.resolve().then(() => require_chunk.__toDynamicImportESM()(require("./form_data-DgWnyuDn.js"))).catch(() => null))?.default;
|
|
160
197
|
if (!FormData) throw new Error("form-data not installed");
|
|
161
198
|
const form = new FormData();
|
|
162
199
|
form.append("file", fs.createReadStream(filePath), {
|
|
@@ -300,39 +337,132 @@ var VoiceEngine = class {
|
|
|
300
337
|
}
|
|
301
338
|
};
|
|
302
339
|
|
|
340
|
+
//#endregion
|
|
341
|
+
//#region packages/gateway/src/manager.ts
|
|
342
|
+
const execAsync$1 = (0, util.promisify)(child_process.exec);
|
|
343
|
+
var GatewayManager$1 = class {
|
|
344
|
+
generateToken() {
|
|
345
|
+
return crypto.default.randomBytes(32).toString("hex");
|
|
346
|
+
}
|
|
347
|
+
async isRunning(port) {
|
|
348
|
+
return new Promise((resolve) => {
|
|
349
|
+
const socket = new net.default.Socket();
|
|
350
|
+
socket.setTimeout(500);
|
|
351
|
+
socket.on("connect", () => {
|
|
352
|
+
socket.destroy();
|
|
353
|
+
resolve(true);
|
|
354
|
+
});
|
|
355
|
+
socket.on("error", () => resolve(false));
|
|
356
|
+
socket.on("timeout", () => resolve(false));
|
|
357
|
+
try {
|
|
358
|
+
socket.connect(port, "127.0.0.1");
|
|
359
|
+
} catch {
|
|
360
|
+
resolve(false);
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
async detectTailscale() {
|
|
365
|
+
try {
|
|
366
|
+
const { stdout } = await execAsync$1("tailscale ip -4 2>/dev/null");
|
|
367
|
+
return stdout.trim() || null;
|
|
368
|
+
} catch {
|
|
369
|
+
return null;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
async detectRuntime() {
|
|
373
|
+
for (const runtime of [
|
|
374
|
+
"bun",
|
|
375
|
+
"deno",
|
|
376
|
+
"node"
|
|
377
|
+
]) try {
|
|
378
|
+
await execAsync$1(`which ${runtime}`);
|
|
379
|
+
return runtime;
|
|
380
|
+
} catch {}
|
|
381
|
+
return "node";
|
|
382
|
+
}
|
|
383
|
+
bindLabel(bind, custom) {
|
|
384
|
+
const map = {
|
|
385
|
+
"127.0.0.1": "Loopback only (this machine)",
|
|
386
|
+
"0.0.0.0": "All interfaces (LAN accessible)",
|
|
387
|
+
"tailscale": "Tailscale IP (VPN peers only)",
|
|
388
|
+
"custom": `Custom: ${custom || "?"}`
|
|
389
|
+
};
|
|
390
|
+
return map[bind];
|
|
391
|
+
}
|
|
392
|
+
exposureLabel(e) {
|
|
393
|
+
const map = {
|
|
394
|
+
"off": "Off — no Tailscale exposure",
|
|
395
|
+
"serve": "Serve — accessible to your Tailscale devices",
|
|
396
|
+
"funnel": "Funnel — publicly accessible via Tailscale URL"
|
|
397
|
+
};
|
|
398
|
+
return map[e];
|
|
399
|
+
}
|
|
400
|
+
async applyTailscaleExposure(exposure, port) {
|
|
401
|
+
if (exposure === "off") return;
|
|
402
|
+
try {
|
|
403
|
+
if (exposure === "serve") await execAsync$1(`tailscale serve ${port}`);
|
|
404
|
+
else if (exposure === "funnel") await execAsync$1(`tailscale funnel ${port}`);
|
|
405
|
+
} catch {
|
|
406
|
+
console.log(chalk.default.yellow("⚠️ Tailscale exposure failed — check tailscale is running"));
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
getWsUrl(config) {
|
|
410
|
+
const host = config.bind === "127.0.0.1" ? "127.0.0.1" : config.bind === "custom" ? config.customBind || "localhost" : "localhost";
|
|
411
|
+
return `ws://${host}:${config.port}`;
|
|
412
|
+
}
|
|
413
|
+
getHttpUrl(config) {
|
|
414
|
+
return `http://localhost:${config.port}`;
|
|
415
|
+
}
|
|
416
|
+
async showStatus(config) {
|
|
417
|
+
const running = await this.isRunning(config.port);
|
|
418
|
+
const statusIcon = running ? chalk.default.green("● RUNNING") : chalk.default.red("○ STOPPED");
|
|
419
|
+
const ws = this.getWsUrl(config);
|
|
420
|
+
console.log(chalk.default.cyan("\n╔══════════════════════════════════════╗"));
|
|
421
|
+
console.log(chalk.default.cyan("║ 🌐 GATEWAY STATUS ║"));
|
|
422
|
+
console.log(chalk.default.cyan("╠══════════════════════════════════════╣"));
|
|
423
|
+
console.log(chalk.default.cyan(`║ Status: ${statusIcon.padEnd(29)}║`));
|
|
424
|
+
console.log(chalk.default.cyan(`║ Address: ${chalk.default.white(ws).padEnd(29)}║`));
|
|
425
|
+
console.log(chalk.default.cyan(`║ Auth: ${chalk.default.yellow("token (masked)").padEnd(29)}║`));
|
|
426
|
+
console.log(chalk.default.cyan(`║ Bind: ${chalk.default.gray(config.bind).padEnd(29)}║`));
|
|
427
|
+
console.log(chalk.default.cyan(`║ Tailscale: ${chalk.default.gray(config.tailscaleExposure).padEnd(27)}║`));
|
|
428
|
+
console.log(chalk.default.cyan("╚══════════════════════════════════════╝\n"));
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
|
|
303
432
|
//#endregion
|
|
304
433
|
//#region src/infra/device-pairing.ts
|
|
305
|
-
|
|
306
|
-
const
|
|
307
|
-
const
|
|
434
|
+
require_paths$1.init_paths();
|
|
435
|
+
const getDevicesDir = () => path.default.join(require_paths.getHyperClawDir(), "devices");
|
|
436
|
+
const getPendingFile = () => path.default.join(getDevicesDir(), "pending.json");
|
|
437
|
+
const getPairedFile = () => path.default.join(getDevicesDir(), "paired.json");
|
|
308
438
|
const PENDING_EXPIRY_MS = 10 * 60 * 1e3;
|
|
309
439
|
const TOKEN_BYTES = 16;
|
|
310
440
|
async function readPending() {
|
|
311
441
|
try {
|
|
312
|
-
const data = await fs_extra.default.readJson(
|
|
442
|
+
const data = await fs_extra.default.readJson(getPendingFile());
|
|
313
443
|
return Array.isArray(data) ? data : [];
|
|
314
444
|
} catch {
|
|
315
445
|
return [];
|
|
316
446
|
}
|
|
317
447
|
}
|
|
318
448
|
async function writePending(entries) {
|
|
319
|
-
await fs_extra.default.ensureDir(
|
|
320
|
-
await fs_extra.default.writeJson(
|
|
449
|
+
await fs_extra.default.ensureDir(getDevicesDir());
|
|
450
|
+
await fs_extra.default.writeJson(getPendingFile(), entries, {
|
|
321
451
|
spaces: 2,
|
|
322
452
|
mode: 384
|
|
323
453
|
});
|
|
324
454
|
}
|
|
325
455
|
async function readPaired() {
|
|
326
456
|
try {
|
|
327
|
-
const data = await fs_extra.default.readJson(
|
|
457
|
+
const data = await fs_extra.default.readJson(getPairedFile());
|
|
328
458
|
return Array.isArray(data) ? data : [];
|
|
329
459
|
} catch {
|
|
330
460
|
return [];
|
|
331
461
|
}
|
|
332
462
|
}
|
|
333
463
|
async function writePaired(devices) {
|
|
334
|
-
await fs_extra.default.ensureDir(
|
|
335
|
-
await fs_extra.default.writeJson(
|
|
464
|
+
await fs_extra.default.ensureDir(getDevicesDir());
|
|
465
|
+
await fs_extra.default.writeJson(getPairedFile(), devices, {
|
|
336
466
|
spaces: 2,
|
|
337
467
|
mode: 384
|
|
338
468
|
});
|
|
@@ -481,8 +611,9 @@ var DevicePairingStore = class {
|
|
|
481
611
|
|
|
482
612
|
//#endregion
|
|
483
613
|
//#region src/commands/message-send.ts
|
|
614
|
+
require_paths$1.init_paths();
|
|
484
615
|
async function sendMessage(opts) {
|
|
485
|
-
const configFile =
|
|
616
|
+
const configFile = require_paths.getConfigPath();
|
|
486
617
|
let cfg = null;
|
|
487
618
|
try {
|
|
488
619
|
cfg = fs_extra.default.readJsonSync(configFile);
|
|
@@ -490,7 +621,7 @@ async function sendMessage(opts) {
|
|
|
490
621
|
console.log(chalk.default.red(" ✖ No configuration found. Run: hyperclaw init"));
|
|
491
622
|
return;
|
|
492
623
|
}
|
|
493
|
-
const channels = cfg.channels || [];
|
|
624
|
+
const channels = cfg.gateway?.enabledChannels || cfg.channels || [];
|
|
494
625
|
const targetChannel = opts.channel || guessChannel(opts.target, channels);
|
|
495
626
|
if (!targetChannel) {
|
|
496
627
|
console.log(chalk.default.red(` ✖ Could not determine channel for target: ${opts.target}`));
|
|
@@ -1826,6 +1957,7 @@ CHANNELS.push(ZALO_PERSONAL);
|
|
|
1826
1957
|
|
|
1827
1958
|
//#endregion
|
|
1828
1959
|
//#region src/commands/channels/add.ts
|
|
1960
|
+
require_paths$1.init_paths();
|
|
1829
1961
|
async function channelsAdd(channelId) {
|
|
1830
1962
|
console.log(chalk.default.bold.cyan("\n 📱 Add Channel\n"));
|
|
1831
1963
|
let id = channelId;
|
|
@@ -1889,15 +2021,23 @@ async function channelsAdd(channelId) {
|
|
|
1889
2021
|
dmPolicy = dmResult.policy;
|
|
1890
2022
|
allowFrom = dmResult.allowFrom ?? [];
|
|
1891
2023
|
}
|
|
1892
|
-
const spinner = (0, ora.default)(`
|
|
1893
|
-
|
|
1894
|
-
spinner.succeed(`${ch.emoji} ${ch.name} connected`);
|
|
1895
|
-
const configFile = path.default.join(os.default.homedir(), ".hyperclaw", "config.json");
|
|
2024
|
+
const spinner = (0, ora.default)(`Saving ${ch.name} configuration...`).start();
|
|
2025
|
+
const configFile = require_paths.getConfigPath();
|
|
1896
2026
|
let cfg = {};
|
|
1897
2027
|
try {
|
|
1898
2028
|
cfg = fs_extra.default.readJsonSync(configFile);
|
|
1899
2029
|
} catch {}
|
|
1900
|
-
cfg.
|
|
2030
|
+
cfg.gateway = cfg.gateway || {
|
|
2031
|
+
port: 18789,
|
|
2032
|
+
bind: "127.0.0.1",
|
|
2033
|
+
authToken: "",
|
|
2034
|
+
runtime: "node",
|
|
2035
|
+
enabledChannels: [],
|
|
2036
|
+
hooks: true
|
|
2037
|
+
};
|
|
2038
|
+
const channels = cfg.gateway.enabledChannels || [];
|
|
2039
|
+
if (!channels.includes(id)) channels.push(id);
|
|
2040
|
+
cfg.gateway.enabledChannels = channels;
|
|
1901
2041
|
cfg.channelConfigs = cfg.channelConfigs || {};
|
|
1902
2042
|
cfg.channelConfigs[id] = {
|
|
1903
2043
|
token,
|
|
@@ -1905,8 +2045,9 @@ async function channelsAdd(channelId) {
|
|
|
1905
2045
|
dmPolicy,
|
|
1906
2046
|
allowFrom
|
|
1907
2047
|
};
|
|
1908
|
-
fs_extra.default.ensureDirSync(
|
|
2048
|
+
fs_extra.default.ensureDirSync(require_paths.getHyperClawDir());
|
|
1909
2049
|
fs_extra.default.writeJsonSync(configFile, cfg, { spaces: 2 });
|
|
2050
|
+
spinner.succeed(`${ch.emoji} ${ch.name} saved`);
|
|
1910
2051
|
console.log(chalk.default.green(`\n ✔ ${ch.name} added successfully!`));
|
|
1911
2052
|
if (ch.requiresGateway) {
|
|
1912
2053
|
console.log(chalk.default.gray(" ℹ This channel requires the gateway to be running"));
|
|
@@ -1916,7 +2057,7 @@ async function channelsAdd(channelId) {
|
|
|
1916
2057
|
}
|
|
1917
2058
|
async function channelsList() {
|
|
1918
2059
|
const configured = await getConfiguredChannels();
|
|
1919
|
-
const configFile =
|
|
2060
|
+
const configFile = require_paths.getConfigPath();
|
|
1920
2061
|
let cfg = {};
|
|
1921
2062
|
try {
|
|
1922
2063
|
cfg = fs_extra.default.readJsonSync(configFile);
|
|
@@ -1934,20 +2075,28 @@ async function channelsList() {
|
|
|
1934
2075
|
console.log(chalk.default.gray(" Remove a channel: hyperclaw channels remove <id>\n"));
|
|
1935
2076
|
}
|
|
1936
2077
|
async function channelsRemove(channelId) {
|
|
1937
|
-
const configFile =
|
|
2078
|
+
const configFile = require_paths.getConfigPath();
|
|
1938
2079
|
let cfg = {};
|
|
1939
2080
|
try {
|
|
1940
2081
|
cfg = fs_extra.default.readJsonSync(configFile);
|
|
1941
2082
|
} catch {}
|
|
1942
|
-
cfg.
|
|
2083
|
+
cfg.gateway = cfg.gateway || {
|
|
2084
|
+
port: 18789,
|
|
2085
|
+
bind: "127.0.0.1",
|
|
2086
|
+
authToken: "",
|
|
2087
|
+
runtime: "node",
|
|
2088
|
+
enabledChannels: [],
|
|
2089
|
+
hooks: true
|
|
2090
|
+
};
|
|
2091
|
+
cfg.gateway.enabledChannels = (cfg.gateway.enabledChannels || []).filter((c) => c !== channelId);
|
|
1943
2092
|
delete (cfg.channelConfigs || {})[channelId];
|
|
1944
2093
|
fs_extra.default.writeJsonSync(configFile, cfg, { spaces: 2 });
|
|
1945
2094
|
console.log(chalk.default.green(`\n ✔ Channel removed: ${channelId}\n`));
|
|
1946
2095
|
}
|
|
1947
2096
|
async function getConfiguredChannels() {
|
|
1948
2097
|
try {
|
|
1949
|
-
const cfg = fs_extra.default.readJsonSync(
|
|
1950
|
-
return cfg.channels || [];
|
|
2098
|
+
const cfg = fs_extra.default.readJsonSync(require_paths.getConfigPath());
|
|
2099
|
+
return cfg.gateway?.enabledChannels || cfg.channels || [];
|
|
1951
2100
|
} catch {
|
|
1952
2101
|
return [];
|
|
1953
2102
|
}
|
|
@@ -2071,12 +2220,12 @@ async function probeChannel(channelId, channelCfg) {
|
|
|
2071
2220
|
* --probe attempts a real connectivity check for each.
|
|
2072
2221
|
*/
|
|
2073
2222
|
async function channelsStatus(opts = {}) {
|
|
2074
|
-
const configFile =
|
|
2223
|
+
const configFile = require_paths.getConfigPath();
|
|
2075
2224
|
let cfg = {};
|
|
2076
2225
|
try {
|
|
2077
2226
|
cfg = fs_extra.default.readJsonSync(configFile);
|
|
2078
2227
|
} catch {}
|
|
2079
|
-
const configured = cfg.channels || [];
|
|
2228
|
+
const configured = cfg.gateway?.enabledChannels || cfg.channels || [];
|
|
2080
2229
|
console.log(chalk.default.bold.cyan("\n 📡 CHANNEL STATUS\n"));
|
|
2081
2230
|
if (configured.length === 0) {
|
|
2082
2231
|
console.log(chalk.default.gray(" No channels configured.\n"));
|
|
@@ -2208,13 +2357,15 @@ async function performUpdate(channel, installKind) {
|
|
|
2208
2357
|
console.log(chalk.default.gray(` npm install -g hyperclaw${tag}`));
|
|
2209
2358
|
console.log(chalk.default.yellow("\n ⚠ Run the above command to update"));
|
|
2210
2359
|
}
|
|
2211
|
-
const
|
|
2360
|
+
const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
2361
|
+
const storedPath = path.default.join(getHyperClawDir$1(), "update-channel");
|
|
2212
2362
|
await fs_extra.default.ensureDir(path.default.dirname(storedPath));
|
|
2213
2363
|
await fs_extra.default.writeFile(storedPath, channel);
|
|
2214
2364
|
console.log(chalk.default.green(`\n ✔ Preferred channel saved: ${channel}`));
|
|
2215
2365
|
}
|
|
2216
2366
|
async function getStoredChannel() {
|
|
2217
|
-
const
|
|
2367
|
+
const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
2368
|
+
const storedPath = path.default.join(getHyperClawDir$1(), "update-channel");
|
|
2218
2369
|
try {
|
|
2219
2370
|
const ch = (await fs_extra.default.readFile(storedPath, "utf8")).trim();
|
|
2220
2371
|
if ([
|
|
@@ -2226,71 +2377,6 @@ async function getStoredChannel() {
|
|
|
2226
2377
|
return void 0;
|
|
2227
2378
|
}
|
|
2228
2379
|
|
|
2229
|
-
//#endregion
|
|
2230
|
-
//#region src/infra/device-auth-store.ts
|
|
2231
|
-
var AuthStore = class {
|
|
2232
|
-
storePath;
|
|
2233
|
-
constructor(storeDir) {
|
|
2234
|
-
const dir = storeDir || path.default.join(os.default.homedir(), ".hyperclaw");
|
|
2235
|
-
this.storePath = path.default.join(dir, "auth.json");
|
|
2236
|
-
}
|
|
2237
|
-
readStore() {
|
|
2238
|
-
try {
|
|
2239
|
-
const stat = fs_extra.default.statSync(this.storePath);
|
|
2240
|
-
if ((stat.mode & 63) !== 0) {
|
|
2241
|
-
console.log(chalk.default.yellow(" ⚠ Auth store has unsafe permissions — fixing..."));
|
|
2242
|
-
fs_extra.default.chmodSync(this.storePath, 384);
|
|
2243
|
-
}
|
|
2244
|
-
return fs_extra.default.readJsonSync(this.storePath);
|
|
2245
|
-
} catch {
|
|
2246
|
-
return null;
|
|
2247
|
-
}
|
|
2248
|
-
}
|
|
2249
|
-
writeStore(store) {
|
|
2250
|
-
fs_extra.default.ensureDirSync(path.default.dirname(this.storePath));
|
|
2251
|
-
fs_extra.default.writeFileSync(this.storePath, `${JSON.stringify(store, null, 2)}\n`, { mode: 384 });
|
|
2252
|
-
}
|
|
2253
|
-
getGatewayToken() {
|
|
2254
|
-
return this.readStore()?.gatewayToken;
|
|
2255
|
-
}
|
|
2256
|
-
setGatewayToken(token) {
|
|
2257
|
-
const store = this.readStore() || this.emptyStore();
|
|
2258
|
-
store.gatewayToken = token;
|
|
2259
|
-
store.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
2260
|
-
this.writeStore(store);
|
|
2261
|
-
}
|
|
2262
|
-
setProviderKey(providerId, apiKey) {
|
|
2263
|
-
const store = this.readStore() || this.emptyStore();
|
|
2264
|
-
store.providers[providerId] = { apiKey };
|
|
2265
|
-
store.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
2266
|
-
this.writeStore(store);
|
|
2267
|
-
}
|
|
2268
|
-
getProviderKey(providerId) {
|
|
2269
|
-
return this.readStore()?.providers[providerId]?.apiKey;
|
|
2270
|
-
}
|
|
2271
|
-
listProviders() {
|
|
2272
|
-
return Object.keys(this.readStore()?.providers || {});
|
|
2273
|
-
}
|
|
2274
|
-
scrubSensitive() {
|
|
2275
|
-
const store = this.readStore();
|
|
2276
|
-
if (!store) return null;
|
|
2277
|
-
const scrubbed = JSON.parse(JSON.stringify(store));
|
|
2278
|
-
if (scrubbed.gatewayToken) scrubbed.gatewayToken = "***";
|
|
2279
|
-
for (const p of Object.keys(scrubbed.providers || {})) {
|
|
2280
|
-
if (scrubbed.providers[p].apiKey) scrubbed.providers[p].apiKey = "***";
|
|
2281
|
-
if (scrubbed.providers[p].refreshToken) scrubbed.providers[p].refreshToken = "***";
|
|
2282
|
-
}
|
|
2283
|
-
return scrubbed;
|
|
2284
|
-
}
|
|
2285
|
-
emptyStore() {
|
|
2286
|
-
return {
|
|
2287
|
-
providers: {},
|
|
2288
|
-
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
2289
|
-
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2290
|
-
};
|
|
2291
|
-
}
|
|
2292
|
-
};
|
|
2293
|
-
|
|
2294
2380
|
//#endregion
|
|
2295
2381
|
//#region src/delivery/queue.ts
|
|
2296
2382
|
var queue_exports = {};
|
|
@@ -2304,6 +2390,7 @@ function randomId() {
|
|
|
2304
2390
|
}
|
|
2305
2391
|
var BACKOFF_SECONDS, DeliveryQueue;
|
|
2306
2392
|
var init_queue = require_chunk.__esm({ "src/delivery/queue.ts"() {
|
|
2393
|
+
require_paths$1.init_paths();
|
|
2307
2394
|
BACKOFF_SECONDS = [
|
|
2308
2395
|
5,
|
|
2309
2396
|
30,
|
|
@@ -2316,7 +2403,7 @@ var init_queue = require_chunk.__esm({ "src/delivery/queue.ts"() {
|
|
|
2316
2403
|
items = [];
|
|
2317
2404
|
processing = false;
|
|
2318
2405
|
constructor() {
|
|
2319
|
-
this.queueFile = path.default.join(
|
|
2406
|
+
this.queueFile = path.default.join(require_paths.getHyperClawDir(), "delivery-queue.json");
|
|
2320
2407
|
this.load();
|
|
2321
2408
|
}
|
|
2322
2409
|
load() {
|
|
@@ -2436,15 +2523,24 @@ var init_queue = require_chunk.__esm({ "src/delivery/queue.ts"() {
|
|
|
2436
2523
|
|
|
2437
2524
|
//#endregion
|
|
2438
2525
|
//#region src/cli/run-main.ts
|
|
2526
|
+
require_device_auth_store.init_device_auth_store();
|
|
2527
|
+
process.on("unhandledRejection", (reason) => {
|
|
2528
|
+
console.error("[hyperclaw] Unhandled rejection:", reason);
|
|
2529
|
+
process.exit(1);
|
|
2530
|
+
});
|
|
2531
|
+
process.on("uncaughtException", (err) => {
|
|
2532
|
+
console.error("[hyperclaw] Uncaught exception:", err?.message ?? String(err));
|
|
2533
|
+
process.exit(1);
|
|
2534
|
+
});
|
|
2439
2535
|
const program = new commander.Command();
|
|
2440
|
-
program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.2.
|
|
2536
|
+
program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.2.1").option("--profile <name>", "Use an isolated gateway profile. Auto-scopes HYPERCLAW_STATE_DIR and HYPERCLAW_CONFIG_PATH. Required for multi-gateway setups (rescue bot, staging, etc.). Example: hyperclaw --profile rescue gateway --port 19001").hook("preAction", (thisCommand) => {
|
|
2441
2537
|
const profile = thisCommand.opts().profile;
|
|
2442
2538
|
if (profile) {
|
|
2443
|
-
const os$
|
|
2444
|
-
const path$
|
|
2445
|
-
const home = os$
|
|
2446
|
-
if (!process.env.HYPERCLAW_STATE_DIR) process.env.HYPERCLAW_STATE_DIR = path$
|
|
2447
|
-
if (!process.env.HYPERCLAW_CONFIG_PATH) process.env.HYPERCLAW_CONFIG_PATH = path$
|
|
2539
|
+
const os$2 = require("os");
|
|
2540
|
+
const path$5 = require("path");
|
|
2541
|
+
const home = os$2.homedir();
|
|
2542
|
+
if (!process.env.HYPERCLAW_STATE_DIR) process.env.HYPERCLAW_STATE_DIR = path$5.join(home, `.hyperclaw-${profile}`);
|
|
2543
|
+
if (!process.env.HYPERCLAW_CONFIG_PATH) process.env.HYPERCLAW_CONFIG_PATH = path$5.join(process.env.HYPERCLAW_STATE_DIR, "hyperclaw.json");
|
|
2448
2544
|
}
|
|
2449
2545
|
});
|
|
2450
2546
|
program.command("init").description("Initialize HyperClaw with interactive wizard").option("-a, --auto-config", "Auto-configure with defaults").option("-d, --daemon", "Install as system daemon").option("-s, --start-now", "Start gateway after setup").action(async (opts) => {
|
|
@@ -2455,17 +2551,17 @@ program.command("init").description("Initialize HyperClaw with interactive wizar
|
|
|
2455
2551
|
program.command("onboard").description("Full onboarding wizard — preferred setup path").option("--install-daemon", "Auto-install system daemon (starts on boot, grants full PC access)").option("--quick", "Use QuickStart mode (skip advanced options)").option("--reset", "Reset config before running wizard (sends to trash, not deleted)").option("--reset-scope <scope>", "What to reset: config | config+creds | full", "config").option("--non-interactive", "Run in non-interactive mode (use flags for all options)").option("--json", "Output result as JSON (use with --non-interactive)").option("--anthropic-api-key <key>", "Anthropic API key (non-interactive)").option("--openai-api-key <key>", "OpenAI API key (non-interactive)").option("--gateway-port <port>", "Gateway port (non-interactive)", "18789").option("--gateway-bind <bind>", "Gateway bind: loopback | all (non-interactive)", "loopback").option("--daemon-runtime <runtime>", "Daemon runtime: node | bun (non-interactive)", "node").option("--skip-skills", "Skip skills setup (non-interactive)").option("--skip-search", "Skip web search setup (non-interactive)").action(async (opts) => {
|
|
2456
2552
|
await new require_onboard.Banner().showNeonBanner(false);
|
|
2457
2553
|
if (opts.reset) {
|
|
2458
|
-
const fs$
|
|
2459
|
-
const path$
|
|
2460
|
-
const os$8 = require("os");
|
|
2461
|
-
const hcDir = path$8.join(os$8.homedir(), ".hyperclaw");
|
|
2554
|
+
const fs$7 = require("fs-extra");
|
|
2555
|
+
const path$5 = require("path");
|
|
2462
2556
|
const scope = opts.resetScope ?? "config";
|
|
2463
|
-
const
|
|
2557
|
+
const { getHyperClawDir: getHyperClawDir$1, getConfigPath: getConfigPath$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
2558
|
+
const hcDirResolved = getHyperClawDir$1();
|
|
2559
|
+
const filesToRemove = [getConfigPath$1()];
|
|
2464
2560
|
if (scope === "config+creds" || scope === "full") {
|
|
2465
|
-
filesToRemove.push(path$
|
|
2466
|
-
filesToRemove.push(path$
|
|
2561
|
+
filesToRemove.push(path$5.join(hcDirResolved, "credentials"));
|
|
2562
|
+
filesToRemove.push(path$5.join(hcDirResolved, "sessions"));
|
|
2467
2563
|
}
|
|
2468
|
-
if (scope === "full") filesToRemove.push(path$
|
|
2564
|
+
if (scope === "full") filesToRemove.push(path$5.join(hcDirResolved, "workspace"));
|
|
2469
2565
|
const chalk$11 = require("chalk");
|
|
2470
2566
|
console.log(chalk$11.yellow(`\n ⚠ Reset scope: ${chalk$11.bold(scope)}\n`));
|
|
2471
2567
|
console.log(chalk$11.gray(" Files to remove:"));
|
|
@@ -2478,12 +2574,12 @@ program.command("onboard").description("Full onboarding wizard — preferred set
|
|
|
2478
2574
|
default: false
|
|
2479
2575
|
}]);
|
|
2480
2576
|
if (confirmReset) {
|
|
2481
|
-
const backupDir = path$
|
|
2482
|
-
await fs$
|
|
2483
|
-
for (const f of filesToRemove) if (await fs$
|
|
2484
|
-
const dest = path$
|
|
2485
|
-
await fs$
|
|
2486
|
-
console.log(chalk$11.gray(` ✓ Moved ${path$
|
|
2577
|
+
const backupDir = path$5.join(hcDirResolved, `backup-${Date.now()}`);
|
|
2578
|
+
await fs$7.ensureDir(backupDir);
|
|
2579
|
+
for (const f of filesToRemove) if (await fs$7.pathExists(f)) {
|
|
2580
|
+
const dest = path$5.join(backupDir, path$5.basename(f));
|
|
2581
|
+
await fs$7.move(f, dest);
|
|
2582
|
+
console.log(chalk$11.gray(` ✓ Moved ${path$5.basename(f)} → backup/`));
|
|
2487
2583
|
}
|
|
2488
2584
|
console.log(chalk$11.green("\n ✔ Reset complete. Starting fresh...\n"));
|
|
2489
2585
|
} else {
|
|
@@ -2532,9 +2628,9 @@ program.command("quickstart").description("Zero-config quick start").option("-c,
|
|
|
2532
2628
|
await new require_onboard.HyperClawWizard().quickstart(opts);
|
|
2533
2629
|
process.exit(0);
|
|
2534
2630
|
});
|
|
2535
|
-
const gatewayCmd = program.command("gateway").description("Gateway control
|
|
2631
|
+
const gatewayCmd = program.command("gateway").description("Gateway control (start/stop = runs in this terminal; use daemon for background)");
|
|
2536
2632
|
gatewayCmd.command("status").description("Show gateway status").action(async () => {
|
|
2537
|
-
const gm = new
|
|
2633
|
+
const gm = new GatewayManager$1();
|
|
2538
2634
|
const cfg = await new require_manager.ConfigManager().load();
|
|
2539
2635
|
await gm.showStatus(cfg?.gateway || {
|
|
2540
2636
|
port: 18789,
|
|
@@ -2558,7 +2654,7 @@ gatewayCmd.command("restart").description("Restart the gateway service").action(
|
|
|
2558
2654
|
const dm = new require_daemon.DaemonManager();
|
|
2559
2655
|
await dm.restart();
|
|
2560
2656
|
});
|
|
2561
|
-
program.command("daemon").description("Manage
|
|
2657
|
+
program.command("daemon").description("Manage gateway: start/stop (foreground) or install (auto-start on boot). Same process as gateway start.").argument("<action>", "start|stop|restart|status|logs|install|uninstall").action(async (action) => {
|
|
2562
2658
|
const dm = new require_daemon.DaemonManager();
|
|
2563
2659
|
if (action === "start") await new require_onboard.Banner().showNeonBanner(true);
|
|
2564
2660
|
await dm.handle(action);
|
|
@@ -2568,19 +2664,21 @@ program.command("daemon").description("Manage HyperClaw system service (alias: g
|
|
|
2568
2664
|
const sandboxCmd = program.command("sandbox").description("Debug sandbox and tool policy");
|
|
2569
2665
|
sandboxCmd.command("explain").description("Show effective sandbox mode, tool policy, and allowed tools").option("--json", "Output as JSON").action(async (opts) => {
|
|
2570
2666
|
const chalk$11 = require("chalk");
|
|
2571
|
-
const fs$
|
|
2572
|
-
const path$
|
|
2573
|
-
const os$
|
|
2574
|
-
const { getConfigPath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
2575
|
-
const cfgPath = getConfigPath();
|
|
2667
|
+
const fs$7 = require("fs-extra");
|
|
2668
|
+
const path$5 = require("path");
|
|
2669
|
+
const os$2 = require("os");
|
|
2670
|
+
const { getConfigPath: getConfigPath$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
2671
|
+
const cfgPath = getConfigPath$1();
|
|
2576
2672
|
let cfg = {};
|
|
2577
2673
|
try {
|
|
2578
|
-
cfg = await fs$
|
|
2579
|
-
} catch {
|
|
2674
|
+
cfg = await fs$7.readJson(cfgPath);
|
|
2675
|
+
} catch (e) {
|
|
2676
|
+
if (process.env.DEBUG) console.error("[run-main] sandbox config read:", e?.message);
|
|
2677
|
+
}
|
|
2580
2678
|
const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
|
|
2581
2679
|
const toolsCfg = cfg?.tools ?? {};
|
|
2582
|
-
const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-
|
|
2583
|
-
const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-
|
|
2680
|
+
const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-TmXx_fpp.js"));
|
|
2681
|
+
const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
2584
2682
|
const allTools = [
|
|
2585
2683
|
...getBuiltinTools(),
|
|
2586
2684
|
...getSessionsTools(() => null),
|
|
@@ -2800,18 +2898,18 @@ skillCmd.command("install <id>").description("Install skill from ClawHub (or bun
|
|
|
2800
2898
|
process.exit(0);
|
|
2801
2899
|
});
|
|
2802
2900
|
program.command("menu-bar").description("Launch macOS menu bar companion (Electron tray app)").action(async () => {
|
|
2803
|
-
const path$
|
|
2804
|
-
const { spawn } = await import("child_process");
|
|
2805
|
-
const fs$
|
|
2806
|
-
const root = path$
|
|
2807
|
-
const altRoot = path$
|
|
2808
|
-
const macosDir = await fs$
|
|
2809
|
-
if (!macosDir || !await fs$
|
|
2901
|
+
const path$5 = await import("path");
|
|
2902
|
+
const { spawn: spawn$1 } = await import("child_process");
|
|
2903
|
+
const fs$7 = await import("fs-extra");
|
|
2904
|
+
const root = path$5.join(process.cwd(), "apps", "macos");
|
|
2905
|
+
const altRoot = path$5.join(__dirname, "..", "..", "apps", "macos");
|
|
2906
|
+
const macosDir = await fs$7.pathExists(root) ? root : await fs$7.pathExists(altRoot) ? altRoot : null;
|
|
2907
|
+
if (!macosDir || !await fs$7.pathExists(path$5.join(macosDir, "package.json"))) {
|
|
2810
2908
|
console.log(chalk.default.gray("\n macOS menu bar app not found."));
|
|
2811
2909
|
console.log(chalk.default.gray(" Run from HyperClaw repo root, or: cd apps/macos && npm start\n"));
|
|
2812
2910
|
process.exit(1);
|
|
2813
2911
|
}
|
|
2814
|
-
const child = spawn("npm", ["start"], {
|
|
2912
|
+
const child = spawn$1("npm", ["start"], {
|
|
2815
2913
|
cwd: macosDir,
|
|
2816
2914
|
stdio: "inherit",
|
|
2817
2915
|
shell: true
|
|
@@ -2906,6 +3004,26 @@ cfgCmd.command("set-key <KEY=value>").description("Set provider API key or confi
|
|
|
2906
3004
|
const config = new require_manager.ConfigManager();
|
|
2907
3005
|
const cfg = await config.load();
|
|
2908
3006
|
if (PROVIDER_KEY_NAMES.has(key) || key === cfg?.provider?.providerId) {
|
|
3007
|
+
const keyToProvider = {
|
|
3008
|
+
GOOGLE_AI_API_KEY: "google",
|
|
3009
|
+
ANTHROPIC_API_KEY: "anthropic",
|
|
3010
|
+
OPENROUTER_API_KEY: "openrouter",
|
|
3011
|
+
OPENAI_API_KEY: "openai",
|
|
3012
|
+
XAI_API_KEY: "xai",
|
|
3013
|
+
google: "google",
|
|
3014
|
+
anthropic: "anthropic",
|
|
3015
|
+
openrouter: "openrouter",
|
|
3016
|
+
openai: "openai",
|
|
3017
|
+
xai: "xai"
|
|
3018
|
+
};
|
|
3019
|
+
const pid = keyToProvider[key] ?? keyToProvider[key.toLowerCase()] ?? cfg?.provider?.providerId ?? key.toLowerCase();
|
|
3020
|
+
const { validateApiKeyFormat } = await Promise.resolve().then(() => require("./api-key-validation-BeQ2MZAT.js"));
|
|
3021
|
+
const formatErr = validateApiKeyFormat(pid, value);
|
|
3022
|
+
if (formatErr) {
|
|
3023
|
+
console.log(chalk.default.yellow(`\n ⚠ ${formatErr}\n`));
|
|
3024
|
+
console.log(chalk.default.gray(" For custom providers use: hyperclaw auth add <service_id>\n"));
|
|
3025
|
+
process.exit(1);
|
|
3026
|
+
}
|
|
2909
3027
|
const next = {
|
|
2910
3028
|
...cfg,
|
|
2911
3029
|
provider: {
|
|
@@ -2917,8 +3035,9 @@ cfgCmd.command("set-key <KEY=value>").description("Set provider API key or confi
|
|
|
2917
3035
|
console.log(chalk.default.hex("#06b6d4")(`\n ✔ Provider API key saved to config.\n`));
|
|
2918
3036
|
console.log(chalk.default.gray(" Run: hyperclaw chat — to use the updated key.\n"));
|
|
2919
3037
|
} else {
|
|
2920
|
-
const
|
|
2921
|
-
store.
|
|
3038
|
+
const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3039
|
+
const store = new require_device_auth_store.AuthStore(getHyperClawDir$1());
|
|
3040
|
+
await store.setProviderKey(key, value);
|
|
2922
3041
|
console.log(chalk.default.hex("#06b6d4")(`\n ✔ Set ${key}\n`));
|
|
2923
3042
|
}
|
|
2924
3043
|
process.exit(0);
|
|
@@ -2958,9 +3077,9 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
|
|
|
2958
3077
|
process.exit(0);
|
|
2959
3078
|
});
|
|
2960
3079
|
cfgCmd.command("schema").description("Show configuration schema").action(() => {
|
|
2961
|
-
console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/
|
|
3080
|
+
console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/hyperclaw.json\n"));
|
|
2962
3081
|
const schema = {
|
|
2963
|
-
version: "string (e.g. \"5.2.
|
|
3082
|
+
version: "string (e.g. \"5.2.1\")",
|
|
2964
3083
|
workspaceName: "string",
|
|
2965
3084
|
provider: {
|
|
2966
3085
|
providerId: "string",
|
|
@@ -3052,13 +3171,13 @@ program.command("deploy").description("Deploy gateway to cloud (Fly.io or Render
|
|
|
3052
3171
|
});
|
|
3053
3172
|
program.command("voice-call").description("Start voice call session — terminal mode, talks to gateway").option("-u, --gateway-url <url>", "Gateway URL", "http://localhost:18789").action(async (opts) => {
|
|
3054
3173
|
const axios = (await import("axios")).default;
|
|
3055
|
-
const readline$
|
|
3174
|
+
const readline$1 = await import("readline");
|
|
3056
3175
|
const chalk$11 = require("chalk");
|
|
3057
3176
|
const url = opts.gatewayUrl || "http://localhost:18789";
|
|
3058
3177
|
console.log(chalk$11.bold.cyan("\n 🎙️ HYPERCLAW VOICE CALL\n"));
|
|
3059
3178
|
console.log(chalk$11.gray(` Gateway: ${url}`));
|
|
3060
3179
|
console.log(chalk$11.gray(" Type a message and press Enter. Ctrl+C to exit.\n"));
|
|
3061
|
-
const rl = readline$
|
|
3180
|
+
const rl = readline$1.createInterface({
|
|
3062
3181
|
input: process.stdin,
|
|
3063
3182
|
output: process.stdout
|
|
3064
3183
|
});
|
|
@@ -3105,13 +3224,13 @@ program.command("dashboard").description("Launch live terminal dashboard").optio
|
|
|
3105
3224
|
program.command("status").description("System overview").option("--all", "Full local diagnosis (read-only)").option("--deep", "Also probe the running gateway").action(async (opts) => {
|
|
3106
3225
|
await new require_onboard.Banner().showStatus();
|
|
3107
3226
|
if (opts.all || opts.deep) {
|
|
3108
|
-
const fs$
|
|
3109
|
-
const { getConfigPath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3110
|
-
const t = (await Promise.resolve().then(() => require("./theme-
|
|
3111
|
-
const configPath = getConfigPath();
|
|
3227
|
+
const fs$7 = await import("fs-extra");
|
|
3228
|
+
const { getConfigPath: getConfigPath$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3229
|
+
const t = (await Promise.resolve().then(() => require("./theme-DdZT-Bq4.js"))).getTheme(false);
|
|
3230
|
+
const configPath = getConfigPath$1();
|
|
3112
3231
|
console.log(t.bold("\n ─── Deep status ───\n"));
|
|
3113
3232
|
try {
|
|
3114
|
-
const cfg = await fs$
|
|
3233
|
+
const cfg = await fs$7.readJson(configPath);
|
|
3115
3234
|
console.log(t.muted(" Config: ") + (cfg ? t.success("loaded") : t.error("missing")));
|
|
3116
3235
|
console.log(t.muted(" Channels: ") + JSON.stringify(cfg?.gateway?.enabledChannels || cfg?.channels || []));
|
|
3117
3236
|
} catch {
|
|
@@ -3119,7 +3238,7 @@ program.command("status").description("System overview").option("--all", "Full l
|
|
|
3119
3238
|
}
|
|
3120
3239
|
if (opts.deep) {
|
|
3121
3240
|
const http$2 = await import("http");
|
|
3122
|
-
const { resolveGatewayUrl } = await Promise.resolve().then(() => require("./health-
|
|
3241
|
+
const { resolveGatewayUrl } = await Promise.resolve().then(() => require("./health-Cq_yE5Ln.js"));
|
|
3123
3242
|
const cfg = await new require_manager.ConfigManager().load();
|
|
3124
3243
|
const { gatewayUrl } = resolveGatewayUrl(cfg);
|
|
3125
3244
|
const u = new URL(gatewayUrl);
|
|
@@ -3197,7 +3316,7 @@ program.command("health").description("Quick gateway health probe (Runtime, RPC
|
|
|
3197
3316
|
});
|
|
3198
3317
|
const themeCmd = program.command("theme").description("Switch CLI color theme");
|
|
3199
3318
|
themeCmd.command("list").description("List available themes").action(async () => {
|
|
3200
|
-
const { allThemes, getThemeName } = await Promise.resolve().then(() => require("./theme-
|
|
3319
|
+
const { allThemes, getThemeName } = await Promise.resolve().then(() => require("./theme-DdZT-Bq4.js"));
|
|
3201
3320
|
const current = getThemeName();
|
|
3202
3321
|
console.log(chalk.default.bold.hex("#06b6d4")("\n 🎨 AVAILABLE THEMES\n"));
|
|
3203
3322
|
for (const { name, label } of allThemes()) {
|
|
@@ -3209,7 +3328,7 @@ themeCmd.command("list").description("List available themes").action(async () =>
|
|
|
3209
3328
|
process.exit(0);
|
|
3210
3329
|
});
|
|
3211
3330
|
themeCmd.command("set <theme>").description("Set theme: dark | grey | white").action(async (name) => {
|
|
3212
|
-
const { setThemeName, allThemes } = await Promise.resolve().then(() => require("./theme-
|
|
3331
|
+
const { setThemeName, allThemes } = await Promise.resolve().then(() => require("./theme-DdZT-Bq4.js"));
|
|
3213
3332
|
const valid = allThemes().map((t) => t.name);
|
|
3214
3333
|
if (!valid.includes(name)) {
|
|
3215
3334
|
console.log(chalk.default.red(`\n ✖ Unknown theme: "${name}". Use: ${valid.join(" | ")}\n`));
|
|
@@ -3221,7 +3340,7 @@ themeCmd.command("set <theme>").description("Set theme: dark | grey | white").ac
|
|
|
3221
3340
|
process.exit(0);
|
|
3222
3341
|
});
|
|
3223
3342
|
themeCmd.command("preview").description("Preview all themes side-by-side").action(async () => {
|
|
3224
|
-
const { allThemes, getTheme, setThemeName, getThemeName } = await Promise.resolve().then(() => require("./theme-
|
|
3343
|
+
const { allThemes, getTheme, setThemeName, getThemeName } = await Promise.resolve().then(() => require("./theme-DdZT-Bq4.js"));
|
|
3225
3344
|
const current = getThemeName();
|
|
3226
3345
|
console.log(chalk.default.bold("\n 🎨 THEME PREVIEW\n"));
|
|
3227
3346
|
for (const { name, label } of allThemes()) {
|
|
@@ -3238,39 +3357,40 @@ themeCmd.command("preview").description("Preview all themes side-by-side").actio
|
|
|
3238
3357
|
});
|
|
3239
3358
|
const secretsCmd = program.command("secrets").description("External secrets management");
|
|
3240
3359
|
secretsCmd.command("audit").description("Audit all required secrets").option("--required-by <ids>", "Filter by skill/provider IDs (comma-separated)").action(async (opts) => {
|
|
3241
|
-
const { SecretsManager } = await Promise.resolve().then(() => require("./manager-
|
|
3360
|
+
const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
|
|
3242
3361
|
const filter = opts.requiredBy?.split(",");
|
|
3243
3362
|
await new SecretsManager().audit(filter);
|
|
3244
3363
|
process.exit(0);
|
|
3245
3364
|
});
|
|
3246
3365
|
secretsCmd.command("set <KEY=value>").description("Set a secret in .env file").action(async (kv) => {
|
|
3247
|
-
const { SecretsManager } = await Promise.resolve().then(() => require("./manager-
|
|
3366
|
+
const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
|
|
3248
3367
|
await new SecretsManager().set(kv);
|
|
3249
3368
|
process.exit(0);
|
|
3250
3369
|
});
|
|
3251
3370
|
secretsCmd.command("apply").description("Write secrets from .env to shell config (~/.bashrc, ~/.zshrc)").action(async () => {
|
|
3252
|
-
const { SecretsManager } = await Promise.resolve().then(() => require("./manager-
|
|
3371
|
+
const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
|
|
3253
3372
|
await new SecretsManager().apply();
|
|
3254
3373
|
process.exit(0);
|
|
3255
3374
|
});
|
|
3256
3375
|
secretsCmd.command("reload").description("Reload secrets into running gateway").action(async () => {
|
|
3257
|
-
const { SecretsManager } = await Promise.resolve().then(() => require("./manager-
|
|
3376
|
+
const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
|
|
3258
3377
|
await new SecretsManager().reload();
|
|
3259
3378
|
process.exit(0);
|
|
3260
3379
|
});
|
|
3261
3380
|
secretsCmd.command("remove <key>").description("Remove a secret from .env").action(async (key) => {
|
|
3262
|
-
const { SecretsManager } = await Promise.resolve().then(() => require("./manager-
|
|
3381
|
+
const { SecretsManager } = await Promise.resolve().then(() => require("./manager-Yo6ZAofG.js"));
|
|
3263
3382
|
await new SecretsManager().remove(key);
|
|
3264
3383
|
process.exit(0);
|
|
3265
3384
|
});
|
|
3266
3385
|
secretsCmd.command("credentials").description("List provider credential files (credentials/*.json)").action(async () => {
|
|
3267
|
-
const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-
|
|
3268
|
-
await
|
|
3386
|
+
const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-DU2cVTiY.js"));
|
|
3387
|
+
const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3388
|
+
await new CredentialsStore(getHyperClawDir$1()).showList();
|
|
3269
3389
|
process.exit(0);
|
|
3270
3390
|
});
|
|
3271
3391
|
const securityCmd = program.command("security").description("Security tools");
|
|
3272
3392
|
securityCmd.command("audit").description("Security audit — file permissions, DM policies, embedded secrets").option("--deep", "Full deep scan including token entropy and installed skill risks").option("--fix", "Auto-fix safe findings (file permissions etc.)").option("--json", "Machine-readable JSON output").action(async (opts) => {
|
|
3273
|
-
const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-
|
|
3393
|
+
const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-CV0gLGaL.js"));
|
|
3274
3394
|
await runSecurityAudit({
|
|
3275
3395
|
deep: opts.deep,
|
|
3276
3396
|
fix: opts.fix,
|
|
@@ -3279,7 +3399,7 @@ securityCmd.command("audit").description("Security audit — file permissions, D
|
|
|
3279
3399
|
process.exit(0);
|
|
3280
3400
|
});
|
|
3281
3401
|
program.command("osint").description("OSINT / Ethical Hacking mode — configure HyperClaw for security research").argument("[workflow]", "Workflow preset: recon | bugbounty | pentest | footprint | custom").option("--show", "Show current OSINT profile").option("--reset", "Clear OSINT profile and disable OSINT mode").action(async (workflow, opts) => {
|
|
3282
|
-
const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-
|
|
3402
|
+
const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-Cg3-CYHx.js"));
|
|
3283
3403
|
if (opts.show || opts.reset) await osintSetup({
|
|
3284
3404
|
show: opts.show,
|
|
3285
3405
|
reset: opts.reset
|
|
@@ -3289,7 +3409,7 @@ program.command("osint").description("OSINT / Ethical Hacking mode — configure
|
|
|
3289
3409
|
process.exit(0);
|
|
3290
3410
|
});
|
|
3291
3411
|
program.command("chat").description("Interactive terminal chat with the agent").option("--session <id>", "Resume a named session").option("--model <model>", "Override model").option("--thinking <level>", "Thinking level: high|medium|low|none", "none").option("--workspace <dir>", "Override workspace directory").action(async (opts) => {
|
|
3292
|
-
const { runChat } = await Promise.resolve().then(() => require("./chat-
|
|
3412
|
+
const { runChat } = await Promise.resolve().then(() => require("./chat-CKBxDWAQ.js"));
|
|
3293
3413
|
await runChat({
|
|
3294
3414
|
sessionId: opts.session,
|
|
3295
3415
|
model: opts.model,
|
|
@@ -3299,7 +3419,7 @@ program.command("chat").description("Interactive terminal chat with the agent").
|
|
|
3299
3419
|
});
|
|
3300
3420
|
const agentRunCmd = program.command("agent").description("Run agent with thinking control");
|
|
3301
3421
|
agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent").option("--thinking <level>", "Thinking level: high|medium|low|none", "none").option("--model <model>", "Override model").option("--session <id>", "Session/thread ID").option("--multi-step", "Decompose into steps and run each (sequential)").option("--parallel", "Run sub-agents in parallel for independent subtasks").option("--verbose", "Show thinking blocks and request details").option("--workspace <dir>", "Override workspace directory").action(async (opts) => {
|
|
3302
|
-
const { runAgent } = await Promise.resolve().then(() => require("./src-
|
|
3422
|
+
const { runAgent } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
3303
3423
|
await runAgent({
|
|
3304
3424
|
message: opts.message,
|
|
3305
3425
|
thinking: opts.thinking,
|
|
@@ -3315,7 +3435,7 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
|
|
|
3315
3435
|
});
|
|
3316
3436
|
const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
|
|
3317
3437
|
threadsCmd.command("list").description("List agent threads").option("--channel <id>", "Filter by channel").option("--active", "Show only active threads").action(async (opts) => {
|
|
3318
|
-
const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-
|
|
3438
|
+
const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
3319
3439
|
const mgr = new ACPThreadManager();
|
|
3320
3440
|
const threads = await mgr.list({
|
|
3321
3441
|
channelId: opts.channel,
|
|
@@ -3325,33 +3445,34 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
|
|
|
3325
3445
|
process.exit(0);
|
|
3326
3446
|
});
|
|
3327
3447
|
threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
|
|
3328
|
-
const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-
|
|
3448
|
+
const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
3329
3449
|
await new ACPThreadManager().terminate(id);
|
|
3330
3450
|
console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
|
|
3331
3451
|
process.exit(0);
|
|
3332
3452
|
});
|
|
3333
3453
|
const canvasCmd = program.command("canvas").description("Live AI-driven UI canvas");
|
|
3334
3454
|
canvasCmd.command("show").description("Show current canvas components").action(async () => {
|
|
3335
|
-
const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-
|
|
3455
|
+
const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-h3ar94cf.js"));
|
|
3336
3456
|
await new CanvasRenderer().show();
|
|
3337
3457
|
process.exit(0);
|
|
3338
3458
|
});
|
|
3339
3459
|
canvasCmd.command("add <type> <title>").description("Add a canvas component (type: chart|table|form|markdown|image|custom)").action(async (type, title) => {
|
|
3340
|
-
const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-
|
|
3460
|
+
const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-h3ar94cf.js"));
|
|
3341
3461
|
await new CanvasRenderer().addComponent(type, title);
|
|
3342
3462
|
process.exit(0);
|
|
3343
3463
|
});
|
|
3344
3464
|
canvasCmd.command("clear").description("Clear all canvas components").action(async () => {
|
|
3345
|
-
const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-
|
|
3465
|
+
const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-h3ar94cf.js"));
|
|
3346
3466
|
await new CanvasRenderer().clear();
|
|
3347
3467
|
process.exit(0);
|
|
3348
3468
|
});
|
|
3349
3469
|
canvasCmd.command("export").description("Export canvas as HTML file").action(async () => {
|
|
3350
|
-
const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-
|
|
3351
|
-
const fs$
|
|
3470
|
+
const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-h3ar94cf.js"));
|
|
3471
|
+
const fs$7 = require("fs-extra");
|
|
3352
3472
|
const html = await new CanvasRenderer().exportHtml();
|
|
3353
|
-
const
|
|
3354
|
-
|
|
3473
|
+
const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3474
|
+
const outFile = require("path").join(getHyperClawDir$1(), "canvas", "export.html");
|
|
3475
|
+
await fs$7.writeFile(outFile, html);
|
|
3355
3476
|
console.log(require("chalk").green(`\n ✔ Canvas exported to ${outFile}\n`));
|
|
3356
3477
|
process.exit(0);
|
|
3357
3478
|
});
|
|
@@ -3367,63 +3488,63 @@ deliveryCmd.command("retry <id>").description("Retry a dead-lettered delivery it
|
|
|
3367
3488
|
process.exit(0);
|
|
3368
3489
|
});
|
|
3369
3490
|
const mcpCmd = program.command("mcp").description("MCP (Model Context Protocol) server management");
|
|
3370
|
-
mcpCmd.command("list").action(async () => {
|
|
3371
|
-
const { mcpList } = await Promise.resolve().then(() => require("./mcp-
|
|
3491
|
+
mcpCmd.command("list").description("List configured MCP servers").action(async () => {
|
|
3492
|
+
const { mcpList } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
|
|
3372
3493
|
await mcpList();
|
|
3373
3494
|
process.exit(0);
|
|
3374
3495
|
});
|
|
3375
|
-
mcpCmd.command("add").action(async () => {
|
|
3376
|
-
const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-
|
|
3496
|
+
mcpCmd.command("add").description("Add MCP server").action(async () => {
|
|
3497
|
+
const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
|
|
3377
3498
|
await mcpAdd();
|
|
3378
3499
|
process.exit(0);
|
|
3379
3500
|
});
|
|
3380
|
-
mcpCmd.command("remove <id>").action(async (id) => {
|
|
3381
|
-
const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-
|
|
3501
|
+
mcpCmd.command("remove <id>").description("Remove MCP server").action(async (id) => {
|
|
3502
|
+
const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
|
|
3382
3503
|
await mcpRemove(id);
|
|
3383
3504
|
process.exit(0);
|
|
3384
3505
|
});
|
|
3385
|
-
mcpCmd.command("probe [id]").action(async (id) => {
|
|
3386
|
-
const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-
|
|
3506
|
+
mcpCmd.command("probe [id]").description("Test MCP server connection").action(async (id) => {
|
|
3507
|
+
const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-GWnLTVi-.js"));
|
|
3387
3508
|
await mcpProbe(id);
|
|
3388
3509
|
process.exit(0);
|
|
3389
3510
|
});
|
|
3390
3511
|
const nodeCmd = program.command("node").description("HyperClaw node management (local, remote, android)");
|
|
3391
|
-
nodeCmd.command("list").action(async () => {
|
|
3392
|
-
const { nodeList } = await Promise.resolve().then(() => require("./node-
|
|
3512
|
+
nodeCmd.command("list").description("List paired nodes").action(async () => {
|
|
3513
|
+
const { nodeList } = await Promise.resolve().then(() => require("./node-CRaZw_av.js"));
|
|
3393
3514
|
await nodeList();
|
|
3394
3515
|
process.exit(0);
|
|
3395
3516
|
});
|
|
3396
|
-
nodeCmd.command("add").action(async () => {
|
|
3397
|
-
const { nodeAdd } = await Promise.resolve().then(() => require("./node-
|
|
3517
|
+
nodeCmd.command("add").description("Add or pair a node").action(async () => {
|
|
3518
|
+
const { nodeAdd } = await Promise.resolve().then(() => require("./node-CRaZw_av.js"));
|
|
3398
3519
|
await nodeAdd();
|
|
3399
3520
|
process.exit(0);
|
|
3400
3521
|
});
|
|
3401
|
-
nodeCmd.command("probe [id]").action(async (id) => {
|
|
3402
|
-
const { nodeProbe } = await Promise.resolve().then(() => require("./node-
|
|
3522
|
+
nodeCmd.command("probe [id]").description("Probe node connection").action(async (id) => {
|
|
3523
|
+
const { nodeProbe } = await Promise.resolve().then(() => require("./node-CRaZw_av.js"));
|
|
3403
3524
|
await nodeProbe(id);
|
|
3404
3525
|
process.exit(0);
|
|
3405
3526
|
});
|
|
3406
|
-
nodeCmd.command("remove <id>").action(async (id) => {
|
|
3407
|
-
const { nodeRemove } = await Promise.resolve().then(() => require("./node-
|
|
3527
|
+
nodeCmd.command("remove <id>").description("Remove paired node").action(async (id) => {
|
|
3528
|
+
const { nodeRemove } = await Promise.resolve().then(() => require("./node-CRaZw_av.js"));
|
|
3408
3529
|
await nodeRemove(id);
|
|
3409
3530
|
process.exit(0);
|
|
3410
3531
|
});
|
|
3411
3532
|
const arCmd = program.command("auto-reply").description("Auto-reply rule engine");
|
|
3412
3533
|
arCmd.command("list").action(async () => {
|
|
3413
|
-
const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-
|
|
3534
|
+
const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-eJw9i4RF.js"));
|
|
3414
3535
|
const e = new AutoReplyEngine();
|
|
3415
3536
|
await e.load();
|
|
3416
3537
|
e.showList();
|
|
3417
3538
|
process.exit(0);
|
|
3418
3539
|
});
|
|
3419
3540
|
arCmd.command("toggle <id>").action(async (id) => {
|
|
3420
|
-
const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-
|
|
3541
|
+
const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-eJw9i4RF.js"));
|
|
3421
3542
|
const e = new AutoReplyEngine();
|
|
3422
3543
|
await e.toggle(id);
|
|
3423
3544
|
process.exit(0);
|
|
3424
3545
|
});
|
|
3425
3546
|
arCmd.command("remove <id>").action(async (id) => {
|
|
3426
|
-
const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-
|
|
3547
|
+
const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-eJw9i4RF.js"));
|
|
3427
3548
|
const e = new AutoReplyEngine();
|
|
3428
3549
|
await e.remove(id);
|
|
3429
3550
|
process.exit(0);
|
|
@@ -3432,7 +3553,7 @@ const gmailCmd = program.command("gmail").description("Gmail Pub/Sub real-time n
|
|
|
3432
3553
|
gmailCmd.command("watch-setup").description("Register Gmail watch for push notifications. Requires: hyperclaw auth oauth google-gmail").requiredOption("-t, --topic <name>", "Pub/Sub topic (e.g. projects/myproject/topics/gmail-push)").option("-l, --labels <ids>", "Label IDs to watch (comma-separated)", "INBOX").action(async (opts) => {
|
|
3433
3554
|
const chalk$11 = require("chalk");
|
|
3434
3555
|
try {
|
|
3435
|
-
const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-
|
|
3556
|
+
const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-xG9GkPwr.js"));
|
|
3436
3557
|
const labelIds = opts.labels.split(",").map((s) => s.trim()).filter(Boolean);
|
|
3437
3558
|
const result = await setupGmailWatch({
|
|
3438
3559
|
topicName: opts.topic,
|
|
@@ -3452,7 +3573,7 @@ gmailCmd.command("watch-setup").description("Register Gmail watch for push notif
|
|
|
3452
3573
|
const cronCmd = program.command("cron").description("Scheduled tasks (cron → agent prompt)");
|
|
3453
3574
|
cronCmd.command("list").action(async () => {
|
|
3454
3575
|
const chalk$11 = require("chalk");
|
|
3455
|
-
const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-
|
|
3576
|
+
const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-4my0PJce.js"));
|
|
3456
3577
|
const tasks = await loadCronTasks();
|
|
3457
3578
|
console.log(chalk$11.bold.cyan("\n ⏰ CRON TASKS\n"));
|
|
3458
3579
|
if (tasks.length === 0) {
|
|
@@ -3472,7 +3593,7 @@ cronCmd.command("list").action(async () => {
|
|
|
3472
3593
|
});
|
|
3473
3594
|
cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name>", "Task name").action(async (schedule, prompt, opts) => {
|
|
3474
3595
|
const chalk$11 = require("chalk");
|
|
3475
|
-
const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-
|
|
3596
|
+
const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-4my0PJce.js"));
|
|
3476
3597
|
await loadCronTasks();
|
|
3477
3598
|
addCronTask(schedule, prompt, opts.name);
|
|
3478
3599
|
await saveCronTasks();
|
|
@@ -3482,7 +3603,7 @@ cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name
|
|
|
3482
3603
|
});
|
|
3483
3604
|
cronCmd.command("remove <id>").action(async (id) => {
|
|
3484
3605
|
const chalk$11 = require("chalk");
|
|
3485
|
-
const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-
|
|
3606
|
+
const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-4my0PJce.js"));
|
|
3486
3607
|
await loadCronTasks();
|
|
3487
3608
|
if (removeCronTask(id)) {
|
|
3488
3609
|
await saveCronTasks();
|
|
@@ -3493,14 +3614,14 @@ cronCmd.command("remove <id>").action(async (id) => {
|
|
|
3493
3614
|
program.command("nodes").description("List connected mobile nodes (iOS/Android Connect tab)").action(async () => {
|
|
3494
3615
|
const chalk$11 = require("chalk");
|
|
3495
3616
|
const http$2 = await import("http");
|
|
3496
|
-
const fs$
|
|
3497
|
-
const
|
|
3498
|
-
const os$8 = await import("os");
|
|
3617
|
+
const fs$7 = await import("fs-extra");
|
|
3618
|
+
const { getConfigPath: getConfigPath$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3499
3619
|
let port = 18789;
|
|
3500
3620
|
try {
|
|
3501
|
-
const cfg = await fs$
|
|
3621
|
+
const cfg = await fs$7.readJson(getConfigPath$1());
|
|
3502
3622
|
port = cfg?.gateway?.port ?? 18789;
|
|
3503
3623
|
} catch {}
|
|
3624
|
+
let exitCode = 0;
|
|
3504
3625
|
return new Promise((resolve, reject) => {
|
|
3505
3626
|
const req = http$2.get(`http://127.0.0.1:${port}/api/nodes`, (res) => {
|
|
3506
3627
|
let data = "";
|
|
@@ -3523,36 +3644,39 @@ program.command("nodes").description("List connected mobile nodes (iOS/Android C
|
|
|
3523
3644
|
}
|
|
3524
3645
|
} catch {
|
|
3525
3646
|
console.log(chalk$11.red(" Could not reach gateway. Start with: hyperclaw daemon start\n"));
|
|
3647
|
+
exitCode = 1;
|
|
3526
3648
|
}
|
|
3527
3649
|
resolve();
|
|
3528
3650
|
});
|
|
3529
3651
|
});
|
|
3530
3652
|
req.on("error", () => {
|
|
3531
3653
|
console.log(chalk$11.red(" Gateway offline. Start with: hyperclaw daemon start\n"));
|
|
3654
|
+
exitCode = 1;
|
|
3532
3655
|
resolve();
|
|
3533
3656
|
});
|
|
3534
3657
|
req.setTimeout(3e3, () => {
|
|
3535
3658
|
req.destroy();
|
|
3659
|
+
exitCode = 1;
|
|
3536
3660
|
resolve();
|
|
3537
3661
|
});
|
|
3538
|
-
}).then(() => process.exit(
|
|
3662
|
+
}).then(() => process.exit(exitCode));
|
|
3539
3663
|
});
|
|
3540
3664
|
const whCmd = program.command("webhooks").description("Webhook endpoint management");
|
|
3541
3665
|
whCmd.command("list").action(async () => {
|
|
3542
|
-
const { WebhookManager } = await Promise.resolve().then(() => require("./manager-
|
|
3666
|
+
const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BQf9drst.js"));
|
|
3543
3667
|
const m = new WebhookManager();
|
|
3544
3668
|
await m.load();
|
|
3545
3669
|
m.showList();
|
|
3546
3670
|
process.exit(0);
|
|
3547
3671
|
});
|
|
3548
3672
|
whCmd.command("remove <id>").action(async (id) => {
|
|
3549
|
-
const { WebhookManager } = await Promise.resolve().then(() => require("./manager-
|
|
3673
|
+
const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BQf9drst.js"));
|
|
3550
3674
|
const m = new WebhookManager();
|
|
3551
3675
|
await m.remove(id);
|
|
3552
3676
|
process.exit(0);
|
|
3553
3677
|
});
|
|
3554
3678
|
whCmd.command("toggle <id>").action(async (id) => {
|
|
3555
|
-
const { WebhookManager } = await Promise.resolve().then(() => require("./manager-
|
|
3679
|
+
const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BQf9drst.js"));
|
|
3556
3680
|
const m = new WebhookManager();
|
|
3557
3681
|
await m.toggle(id);
|
|
3558
3682
|
process.exit(0);
|
|
@@ -3561,7 +3685,7 @@ const logsCmd = program.command("logs").description("View gateway logs");
|
|
|
3561
3685
|
logsCmd.option("-n, --lines <n>", "Number of lines to show", "50");
|
|
3562
3686
|
logsCmd.option("-f, --follow", "Stream logs in real time");
|
|
3563
3687
|
logsCmd.action(async (opts) => {
|
|
3564
|
-
const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-
|
|
3688
|
+
const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-ry2oCfdf.js"));
|
|
3565
3689
|
if (opts.follow) await streamLog();
|
|
3566
3690
|
else {
|
|
3567
3691
|
await tailLog(parseInt(opts.lines));
|
|
@@ -3569,7 +3693,7 @@ logsCmd.action(async (opts) => {
|
|
|
3569
3693
|
}
|
|
3570
3694
|
});
|
|
3571
3695
|
program.command("gateway:serve").description("Start the gateway server in the foreground (used by daemon)").action(async () => {
|
|
3572
|
-
const { startGateway } = await Promise.resolve().then(() => require("./server-
|
|
3696
|
+
const { startGateway } = await Promise.resolve().then(() => require("./server-Bav63Eqx.js"));
|
|
3573
3697
|
await startGateway();
|
|
3574
3698
|
process.on("SIGINT", () => process.exit(0));
|
|
3575
3699
|
process.on("SIGTERM", () => process.exit(0));
|
|
@@ -3578,15 +3702,17 @@ program.command("gateway:serve").description("Start the gateway server in the fo
|
|
|
3578
3702
|
const gatewayCfgCmd = gatewayCmd.command("config").description("Configure gateway settings");
|
|
3579
3703
|
gatewayCfgCmd.option("--set-token <token>", "Set gateway auth token").option("--regenerate-token", "Generate a new random token").option("--set-port <port>", "Set gateway port").option("--set-bind <addr>", "Set gateway bind address").action(async (opts) => {
|
|
3580
3704
|
const chalk$11 = require("chalk");
|
|
3581
|
-
const fs$
|
|
3582
|
-
const path$
|
|
3583
|
-
const
|
|
3584
|
-
const crypto$
|
|
3585
|
-
const cfgFile =
|
|
3705
|
+
const fs$7 = require("fs-extra");
|
|
3706
|
+
const path$5 = require("path");
|
|
3707
|
+
const { getConfigPath: getConfigPath$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3708
|
+
const crypto$3 = require("crypto");
|
|
3709
|
+
const cfgFile = getConfigPath$1();
|
|
3586
3710
|
let cfg = {};
|
|
3587
3711
|
try {
|
|
3588
|
-
cfg = await fs$
|
|
3589
|
-
} catch {
|
|
3712
|
+
cfg = await fs$7.readJson(cfgFile);
|
|
3713
|
+
} catch (e) {
|
|
3714
|
+
if (process.env.DEBUG) console.error("[run-main] gateway config read:", e?.message);
|
|
3715
|
+
}
|
|
3590
3716
|
if (!cfg.gateway) cfg.gateway = {
|
|
3591
3717
|
port: 18789,
|
|
3592
3718
|
bind: "127.0.0.1",
|
|
@@ -3596,7 +3722,7 @@ gatewayCfgCmd.option("--set-token <token>", "Set gateway auth token").option("--
|
|
|
3596
3722
|
hooks: true
|
|
3597
3723
|
};
|
|
3598
3724
|
if (opts.regenerateToken) {
|
|
3599
|
-
cfg.gateway.authToken = crypto$
|
|
3725
|
+
cfg.gateway.authToken = crypto$3.randomBytes(32).toString("hex");
|
|
3600
3726
|
console.log(chalk$11.hex("#06b6d4")("\n ✔ New gateway token generated"));
|
|
3601
3727
|
console.log(chalk$11.gray(` Token: ${cfg.gateway.authToken}`));
|
|
3602
3728
|
}
|
|
@@ -3612,9 +3738,11 @@ gatewayCfgCmd.option("--set-token <token>", "Set gateway auth token").option("--
|
|
|
3612
3738
|
cfg.gateway.bind = opts.setBind;
|
|
3613
3739
|
console.log(chalk$11.hex("#06b6d4")(`\n ✔ Bind set to ${cfg.gateway.bind}`));
|
|
3614
3740
|
}
|
|
3615
|
-
await fs$
|
|
3616
|
-
|
|
3617
|
-
await fs$
|
|
3741
|
+
await fs$7.ensureDir(path$5.dirname(cfgFile));
|
|
3742
|
+
const tmp = cfgFile + ".tmp";
|
|
3743
|
+
await fs$7.writeJson(tmp, cfg, { spaces: 2 });
|
|
3744
|
+
await fs$7.chmod(tmp, 384);
|
|
3745
|
+
await fs$7.rename(tmp, cfgFile);
|
|
3618
3746
|
console.log(chalk$11.gray(` Saved to ${cfgFile}\n`));
|
|
3619
3747
|
process.exit(0);
|
|
3620
3748
|
});
|
|
@@ -3622,11 +3750,11 @@ const authCmd = program.command("auth").description("OAuth and provider credenti
|
|
|
3622
3750
|
authCmd.command("add <service_id>").description("Add API key for a service (any provider we do not ship). Stored in credentials/ and .env.").option("--key <api_key>", "API key (prompts if omitted)").option("--base-url <url>", "Base URL (optional, e.g. https://api.example.com)").option("--env-var <name>", "Env var name (default: <SERVICE_ID>_API_KEY)").action(async (serviceId, opts) => {
|
|
3623
3751
|
const chalk$11 = require("chalk");
|
|
3624
3752
|
const inquirer$2 = require("inquirer");
|
|
3625
|
-
const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-
|
|
3626
|
-
const { getHyperClawDir, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3627
|
-
const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-
|
|
3628
|
-
const fs$
|
|
3629
|
-
const path$
|
|
3753
|
+
const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-DU2cVTiY.js"));
|
|
3754
|
+
const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3755
|
+
const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-BdT2lfX6.js"));
|
|
3756
|
+
const fs$7 = await import("fs-extra");
|
|
3757
|
+
const path$5 = await import("path");
|
|
3630
3758
|
const guide = getApiKeyGuide(serviceId);
|
|
3631
3759
|
const steps = guide?.setupSteps ?? GENERIC_API_KEY_STEPS;
|
|
3632
3760
|
console.log(chalk$11.bold.hex("#06b6d4")(`\n 🔑 Add API key: ${guide?.name ?? serviceId}\n`));
|
|
@@ -3651,7 +3779,7 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
|
|
|
3651
3779
|
}]);
|
|
3652
3780
|
apiKey = key.trim();
|
|
3653
3781
|
}
|
|
3654
|
-
const creds = new CredentialsStore(getHyperClawDir());
|
|
3782
|
+
const creds = new CredentialsStore(getHyperClawDir$1());
|
|
3655
3783
|
await creds.set(safeId, {
|
|
3656
3784
|
apiKey,
|
|
3657
3785
|
...opts.baseUrl ? { baseUrl: opts.baseUrl } : {},
|
|
@@ -3659,14 +3787,14 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
|
|
|
3659
3787
|
});
|
|
3660
3788
|
const envVar = opts.envVar || `${safeId.toUpperCase().replace(/-/g, "_")}_API_KEY`;
|
|
3661
3789
|
const envPath = getEnvFilePath();
|
|
3662
|
-
await fs$
|
|
3790
|
+
await fs$7.ensureDir(path$5.dirname(envPath));
|
|
3663
3791
|
let envContent = "";
|
|
3664
|
-
if (await fs$
|
|
3792
|
+
if (await fs$7.pathExists(envPath)) envContent = await fs$7.readFile(envPath, "utf8");
|
|
3665
3793
|
const envLine = `${envVar}=${apiKey}`;
|
|
3666
3794
|
const re = new RegExp(`^${envVar}=.*$`, "m");
|
|
3667
3795
|
if (re.test(envContent)) envContent = envContent.replace(re, envLine);
|
|
3668
3796
|
else envContent = envContent.trimEnd() + (envContent ? "\n" : "") + envLine + "\n";
|
|
3669
|
-
await fs$
|
|
3797
|
+
await fs$7.writeFile(envPath, envContent, { mode: 384 });
|
|
3670
3798
|
console.log(chalk$11.hex("#06b6d4")(`\n ✔ Added: ${safeId}`));
|
|
3671
3799
|
console.log(chalk$11.gray(` Credentials: ~/.hyperclaw/credentials/${safeId}.json`));
|
|
3672
3800
|
console.log(chalk$11.gray(` Env: ${envVar} (in .env — use in skills via process.env.${envVar.replace(/-/g, "_")})`));
|
|
@@ -3676,18 +3804,18 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
|
|
|
3676
3804
|
});
|
|
3677
3805
|
authCmd.command("remove <service_id>").description("Remove API key for a service from credentials and .env").action(async (serviceId) => {
|
|
3678
3806
|
const chalk$11 = require("chalk");
|
|
3679
|
-
const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-
|
|
3680
|
-
const { getHyperClawDir, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3681
|
-
const fs$
|
|
3807
|
+
const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-DU2cVTiY.js"));
|
|
3808
|
+
const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3809
|
+
const fs$7 = await import("fs-extra");
|
|
3682
3810
|
const safeId = serviceId.replace(/[^a-zA-Z0-9_-]/g, "_").toLowerCase();
|
|
3683
|
-
const creds = new CredentialsStore(getHyperClawDir());
|
|
3811
|
+
const creds = new CredentialsStore(getHyperClawDir$1());
|
|
3684
3812
|
await creds.remove(safeId);
|
|
3685
3813
|
const envVar = `${safeId.toUpperCase().replace(/-/g, "_")}_API_KEY`;
|
|
3686
3814
|
const envPath = getEnvFilePath();
|
|
3687
|
-
if (await fs$
|
|
3688
|
-
let c = await fs$
|
|
3815
|
+
if (await fs$7.pathExists(envPath)) {
|
|
3816
|
+
let c = await fs$7.readFile(envPath, "utf8");
|
|
3689
3817
|
c = c.replace(new RegExp(`^${envVar}=.*\n?`, "gm"), "");
|
|
3690
|
-
await fs$
|
|
3818
|
+
await fs$7.writeFile(envPath, c);
|
|
3691
3819
|
}
|
|
3692
3820
|
console.log(chalk$11.hex("#06b6d4")(`\n ✔ Removed: ${safeId}\n`));
|
|
3693
3821
|
process.exit(0);
|
|
@@ -3696,7 +3824,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
|
|
|
3696
3824
|
const chalk$11 = require("chalk");
|
|
3697
3825
|
const ora$4 = (await import("ora")).default;
|
|
3698
3826
|
try {
|
|
3699
|
-
const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-
|
|
3827
|
+
const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-B3S4T_SJ.js"));
|
|
3700
3828
|
const spinner = ora$4("Starting OAuth flow...").start();
|
|
3701
3829
|
spinner.text = "Opening browser — complete the consent and return here.";
|
|
3702
3830
|
const tokens = await runOAuthFlow(provider, {
|
|
@@ -3704,7 +3832,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
|
|
|
3704
3832
|
clientSecret: opts.clientSecret
|
|
3705
3833
|
});
|
|
3706
3834
|
spinner.stop();
|
|
3707
|
-
const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-
|
|
3835
|
+
const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B2RBpiXg.js"));
|
|
3708
3836
|
const now = Math.floor(Date.now() / 1e3);
|
|
3709
3837
|
const expires_at = tokens.expires_in ? now + tokens.expires_in : void 0;
|
|
3710
3838
|
const tokenUrl = provider === "google" || provider === "google-gmail" ? "https://oauth2.googleapis.com/token" : provider === "microsoft" ? "https://login.microsoftonline.com/common/oauth2/v2.0/token" : void 0;
|
|
@@ -3739,7 +3867,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
|
|
|
3739
3867
|
console.log(chalk$11.red("\n ✖ No token provided.\n"));
|
|
3740
3868
|
process.exit(1);
|
|
3741
3869
|
}
|
|
3742
|
-
const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-
|
|
3870
|
+
const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B2RBpiXg.js"));
|
|
3743
3871
|
await writeOAuthToken("anthropic-setup", {
|
|
3744
3872
|
access_token: token.trim(),
|
|
3745
3873
|
token_url: "https://api.anthropic.com"
|
|
@@ -3750,7 +3878,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
|
|
|
3750
3878
|
});
|
|
3751
3879
|
authCmd.command("oauth-set <provider>").description("Save OAuth tokens manually (access_token, refresh_token, etc.) to ~/.hyperclaw/oauth-<provider>.json").option("--token <access_token>", "Access token").option("--refresh <refresh_token>", "Refresh token (optional)").option("--expires-in <seconds>", "Token lifetime in seconds (optional)").option("--token-url <url>", "Refresh endpoint URL (optional)").action(async (provider, opts) => {
|
|
3752
3880
|
const chalk$11 = require("chalk");
|
|
3753
|
-
const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-
|
|
3881
|
+
const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-B2RBpiXg.js"));
|
|
3754
3882
|
const access_token = opts.token || process.env.OAUTH_ACCESS_TOKEN;
|
|
3755
3883
|
if (!access_token) {
|
|
3756
3884
|
console.log(chalk$11.red("\n ✖ Provide --token <access_token> or set OAUTH_ACCESS_TOKEN\n"));
|
|
@@ -3770,15 +3898,15 @@ authCmd.command("oauth-set <provider>").description("Save OAuth tokens manually
|
|
|
3770
3898
|
const workspaceCmd = program.command("workspace").description("Manage agent workspace files");
|
|
3771
3899
|
workspaceCmd.command("init [dir]").description("Initialize workspace files (SOUL.md, USER.md, TOOLS.md, HEARTBEAT.md, BOOTSTRAP.md) in a directory").action(async (dir) => {
|
|
3772
3900
|
const chalk$11 = require("chalk");
|
|
3773
|
-
const fs$
|
|
3774
|
-
const path$
|
|
3775
|
-
const
|
|
3776
|
-
const targetDir = dir ||
|
|
3901
|
+
const fs$7 = require("fs-extra");
|
|
3902
|
+
const path$5 = require("path");
|
|
3903
|
+
const { getHyperClawDir: getHyperClawDir$1, getConfigPath: getConfigPath$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3904
|
+
const targetDir = dir || getHyperClawDir$1();
|
|
3777
3905
|
let cfg = {};
|
|
3778
3906
|
try {
|
|
3779
|
-
cfg = await fs$
|
|
3907
|
+
cfg = await fs$7.readJson(getConfigPath$1());
|
|
3780
3908
|
} catch {}
|
|
3781
|
-
const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-
|
|
3909
|
+
const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-D991eoj7.js"));
|
|
3782
3910
|
await initWorkspaceFiles({
|
|
3783
3911
|
agentName: cfg.identity?.agentName || "Hyper",
|
|
3784
3912
|
personality: cfg.identity?.personality || "helpful and concise",
|
|
@@ -3792,10 +3920,10 @@ workspaceCmd.command("init [dir]").description("Initialize workspace files (SOUL
|
|
|
3792
3920
|
});
|
|
3793
3921
|
workspaceCmd.command("show [dir]").description("Show workspace files summary").action(async (dir) => {
|
|
3794
3922
|
const chalk$11 = require("chalk");
|
|
3795
|
-
const fs$
|
|
3796
|
-
const path$
|
|
3797
|
-
const
|
|
3798
|
-
const targetDir = dir ||
|
|
3923
|
+
const fs$7 = require("fs-extra");
|
|
3924
|
+
const path$5 = require("path");
|
|
3925
|
+
const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
3926
|
+
const targetDir = dir || getHyperClawDir$1();
|
|
3799
3927
|
console.log(chalk$11.bold.hex("#06b6d4")("\n 📁 WORKSPACE\n"));
|
|
3800
3928
|
for (const fname of [
|
|
3801
3929
|
"SOUL.md",
|
|
@@ -3806,9 +3934,9 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
|
|
|
3806
3934
|
"AGENTS.md",
|
|
3807
3935
|
"MEMORY.md"
|
|
3808
3936
|
]) {
|
|
3809
|
-
const fpath = path$
|
|
3810
|
-
const exists = await fs$
|
|
3811
|
-
const size = exists ? (await fs$
|
|
3937
|
+
const fpath = path$5.join(targetDir, fname);
|
|
3938
|
+
const exists = await fs$7.pathExists(fpath);
|
|
3939
|
+
const size = exists ? (await fs$7.stat(fpath)).size : 0;
|
|
3812
3940
|
const dot = exists ? chalk$11.hex("#06b6d4")("✔") : chalk$11.gray("○");
|
|
3813
3941
|
console.log(` ${dot} ${fname.padEnd(14)} ${exists ? chalk$11.gray(`${size} bytes`) : chalk$11.gray("(missing)")}`);
|
|
3814
3942
|
}
|
|
@@ -3817,13 +3945,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
|
|
|
3817
3945
|
});
|
|
3818
3946
|
const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
|
|
3819
3947
|
botCmd.command("status").action(async () => {
|
|
3820
|
-
const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3948
|
+
const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-DnPIyjox.js"));
|
|
3821
3949
|
await showBotStatus();
|
|
3822
3950
|
process.exit(0);
|
|
3823
3951
|
});
|
|
3824
3952
|
botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
|
|
3825
3953
|
const inquirer$2 = require("inquirer");
|
|
3826
|
-
const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3954
|
+
const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-DnPIyjox.js"));
|
|
3827
3955
|
const chalk$11 = require("chalk");
|
|
3828
3956
|
console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
|
|
3829
3957
|
console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
|
|
@@ -3870,11 +3998,11 @@ botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, al
|
|
|
3870
3998
|
process.exit(0);
|
|
3871
3999
|
});
|
|
3872
4000
|
botCmd.command("start").description("Start HyperClaw Bot (foreground or background)").option("--background", "Run bot in background (use hyperclaw bot stop to stop)").action(async (opts) => {
|
|
3873
|
-
const { spawn } = await import("child_process");
|
|
3874
|
-
const path$
|
|
4001
|
+
const { spawn: spawn$1 } = await import("child_process");
|
|
4002
|
+
const path$5 = await import("path");
|
|
3875
4003
|
if (opts?.background) {
|
|
3876
|
-
const entry = process.argv[1] || path$
|
|
3877
|
-
const child = spawn(process.execPath, [
|
|
4004
|
+
const entry = process.argv[1] || path$5.join(__dirname, "run-main.js");
|
|
4005
|
+
const child = spawn$1(process.execPath, [
|
|
3878
4006
|
entry,
|
|
3879
4007
|
"bot",
|
|
3880
4008
|
"start"
|
|
@@ -3885,14 +4013,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
|
|
|
3885
4013
|
cwd: process.cwd()
|
|
3886
4014
|
});
|
|
3887
4015
|
child.unref();
|
|
3888
|
-
const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
4016
|
+
const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-DnPIyjox.js"));
|
|
3889
4017
|
await writeBotPid(child.pid);
|
|
3890
4018
|
console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
|
|
3891
4019
|
console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
|
|
3892
4020
|
process.exit(0);
|
|
3893
4021
|
return;
|
|
3894
4022
|
}
|
|
3895
|
-
const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
4023
|
+
const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-DnPIyjox.js"));
|
|
3896
4024
|
const cfg = await loadBotConfig();
|
|
3897
4025
|
if (!cfg) {
|
|
3898
4026
|
console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
|
|
@@ -3919,41 +4047,41 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
|
|
|
3919
4047
|
});
|
|
3920
4048
|
botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
|
|
3921
4049
|
const chalk$11 = require("chalk");
|
|
3922
|
-
const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
4050
|
+
const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-DnPIyjox.js"));
|
|
3923
4051
|
const stopped = await stopBotProcess();
|
|
3924
4052
|
if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
|
|
3925
4053
|
else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
|
|
3926
4054
|
process.exit(stopped ? 0 : 1);
|
|
3927
4055
|
});
|
|
3928
4056
|
memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
|
|
3929
|
-
const { searchMemory } = await Promise.resolve().then(() => require("./src-
|
|
4057
|
+
const { searchMemory } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
3930
4058
|
await searchMemory(query);
|
|
3931
4059
|
process.exit(0);
|
|
3932
4060
|
});
|
|
3933
4061
|
memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
|
|
3934
|
-
const { showMemory } = await Promise.resolve().then(() => require("./src-
|
|
4062
|
+
const { showMemory } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
3935
4063
|
await showMemory();
|
|
3936
4064
|
process.exit(0);
|
|
3937
4065
|
});
|
|
3938
4066
|
memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
|
|
3939
|
-
const { clearMemory } = await Promise.resolve().then(() => require("./src-
|
|
4067
|
+
const { clearMemory } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
3940
4068
|
await clearMemory();
|
|
3941
4069
|
process.exit(0);
|
|
3942
4070
|
});
|
|
3943
4071
|
memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
|
|
3944
|
-
const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-
|
|
4072
|
+
const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
3945
4073
|
await saveMemoryDirect(text);
|
|
3946
4074
|
console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
|
|
3947
4075
|
process.exit(0);
|
|
3948
4076
|
});
|
|
3949
4077
|
const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
|
|
3950
4078
|
pcCmd.command("status").description("Show PC access status and config").action(async () => {
|
|
3951
|
-
const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-
|
|
4079
|
+
const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
3952
4080
|
await showPCAccessStatus();
|
|
3953
4081
|
process.exit(0);
|
|
3954
4082
|
});
|
|
3955
4083
|
pcCmd.command("enable").description("Enable PC access for the AI").option("--level <level>", "Access level: read-only | sandboxed | full", "full").option("--paths <paths>", "Comma-separated allowed paths (sandboxed mode)").action(async (opts) => {
|
|
3956
|
-
const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-
|
|
4084
|
+
const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
3957
4085
|
const level = opts.level;
|
|
3958
4086
|
const allowed = [
|
|
3959
4087
|
"read-only",
|
|
@@ -3980,13 +4108,14 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
|
|
|
3980
4108
|
process.exit(0);
|
|
3981
4109
|
});
|
|
3982
4110
|
pcCmd.command("disable").description("Disable PC access").action(async () => {
|
|
3983
|
-
const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-
|
|
4111
|
+
const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
3984
4112
|
await savePCAccessConfig({ enabled: false });
|
|
3985
4113
|
console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
|
|
3986
4114
|
process.exit(0);
|
|
3987
4115
|
});
|
|
3988
4116
|
pcCmd.command("log").description("Show PC access audit log").option("-n, --lines <n>", "Number of lines", "50").action(async (opts) => {
|
|
3989
|
-
const
|
|
4117
|
+
const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
|
|
4118
|
+
const logFile = require("path").join(getHyperClawDir$1(), "pc-access.log");
|
|
3990
4119
|
const fs2 = require("fs-extra");
|
|
3991
4120
|
if (!await fs2.pathExists(logFile)) {
|
|
3992
4121
|
console.log(chalk.default.gray("\n No PC access log yet\n"));
|
|
@@ -4004,7 +4133,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
|
|
|
4004
4133
|
process.exit(0);
|
|
4005
4134
|
});
|
|
4006
4135
|
pcCmd.command("run <command>").description("Run a shell command via PC access (must be enabled)").action(async (command) => {
|
|
4007
|
-
const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-
|
|
4136
|
+
const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-DZtpIvWJ.js"));
|
|
4008
4137
|
const cfg = await loadPCAccessConfig();
|
|
4009
4138
|
if (!cfg.enabled) {
|
|
4010
4139
|
console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
|
|
@@ -4035,35 +4164,34 @@ program.command("setup").description("Setup wizard — alias for `hyperclaw onbo
|
|
|
4035
4164
|
});
|
|
4036
4165
|
async function runUpdateCheck() {
|
|
4037
4166
|
try {
|
|
4038
|
-
const { checkForUpdates: checkForUpdates$1, notifyUpdateAvailable } = await Promise.resolve().then(() => require("./update-check-
|
|
4039
|
-
const path$
|
|
4167
|
+
const { checkForUpdates: checkForUpdates$1, notifyUpdateAvailable } = await Promise.resolve().then(() => require("./update-check-CaHNCDqe.js"));
|
|
4168
|
+
const path$5 = require("path");
|
|
4040
4169
|
const { readFileSync } = require("fs");
|
|
4041
|
-
const pkgPath = path$
|
|
4170
|
+
const pkgPath = path$5.resolve(__dirname, "../package.json");
|
|
4042
4171
|
const current = JSON.parse(readFileSync(pkgPath, "utf8")).version;
|
|
4043
4172
|
const result = await checkForUpdates$1(current);
|
|
4044
4173
|
if (result?.available) notifyUpdateAvailable(current, result.latest);
|
|
4045
4174
|
} catch {}
|
|
4046
4175
|
}
|
|
4047
4176
|
if (process.argv.length === 2) (async () => {
|
|
4048
|
-
const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-
|
|
4177
|
+
const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-B90HEHxe.js"));
|
|
4049
4178
|
const cfg = await new ConfigManager$1().load().catch(() => null);
|
|
4050
4179
|
if (cfg?.provider?.apiKey || cfg?.provider?.providerId) {
|
|
4051
4180
|
await new require_onboard.Banner().showNeonBanner(false);
|
|
4052
|
-
const { getTheme } = await Promise.resolve().then(() => require("./theme-
|
|
4181
|
+
const { getTheme } = await Promise.resolve().then(() => require("./theme-DdZT-Bq4.js"));
|
|
4053
4182
|
const t = getTheme(false);
|
|
4054
4183
|
const chalk$11 = require("chalk");
|
|
4055
4184
|
console.log(t.bold(" Quick actions:\n"));
|
|
4185
|
+
console.log(` ${t.c("hyperclaw chat")} — chat with agent (terminal)`);
|
|
4056
4186
|
console.log(` ${t.c("hyperclaw onboard")} — re-run setup wizard`);
|
|
4057
|
-
console.log(` ${t.c("hyperclaw onboard --install-daemon")} — wizard + daemon (full PC access)`);
|
|
4058
4187
|
console.log(` ${t.c("hyperclaw daemon start")} — start background service`);
|
|
4059
|
-
console.log(` ${t.c("hyperclaw daemon stop")} — stop background service`);
|
|
4060
4188
|
console.log(` ${t.c("hyperclaw daemon status")} — service status`);
|
|
4061
|
-
console.log(` ${t.c("hyperclaw gateway start")} — start gateway (foreground)`);
|
|
4062
4189
|
console.log(` ${t.c("hyperclaw status")} — system overview`);
|
|
4190
|
+
console.log(` ${t.c("hyperclaw doctor")} — health check & fix issues`);
|
|
4063
4191
|
console.log(` ${t.c("hyperclaw --help")} — all commands\n`);
|
|
4064
4192
|
} else {
|
|
4065
4193
|
await new require_onboard.Banner().showNeonBanner(false);
|
|
4066
|
-
const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-
|
|
4194
|
+
const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-BHKBzytX.js"));
|
|
4067
4195
|
await new HyperClawWizard$1().run({ wizard: true });
|
|
4068
4196
|
}
|
|
4069
4197
|
await runUpdateCheck();
|