hyperclaw 5.4.0 → 5.4.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 +1 -0
- package/dist/a2ui-protocol-CibzbTxL.js +75 -0
- package/dist/a2ui-protocol-Dtb8zlog.js +75 -0
- package/dist/a2ui-protocol-ORP2Etw0.js +75 -0
- package/dist/a2ui-protocol-whRZHdBk.js +75 -0
- package/dist/abort-controller-B55O1IgK.js +47995 -0
- package/dist/agents-routing-Ai2BQVpU.js +7 -0
- package/dist/agents-routing-B0RBl1B8.js +424 -0
- package/dist/agents-routing-BSUaOpce.js +7 -0
- package/dist/agents-routing-C4PVN8G6.js +7 -0
- package/dist/agents-routing-Dcr29-JV.js +424 -0
- package/dist/agents-routing-EwzORQQv.js +424 -0
- package/dist/agents-routing-Fd-uQ4R_.js +7 -0
- package/dist/agents-routing-eLjVYBAk.js +424 -0
- package/dist/api-key-validation-BANgbsfO.js +66 -0
- package/dist/api-key-validation-Bnz-0MMK.js +66 -0
- package/dist/api-key-validation-D_fMCaO5.js +66 -0
- package/dist/api-key-validation-Db7rG3JU.js +66 -0
- package/dist/api-keys-guide-B6AJ1V5D.js +149 -0
- package/dist/api-keys-guide-C75JQOdH.js +149 -0
- package/dist/api-keys-guide-CFJPrgsL.js +149 -0
- package/dist/api-keys-guide-DDz08BJQ.js +149 -0
- package/dist/audit-BLMB8qp7.js +445 -0
- package/dist/audit-Cb2TvqYZ.js +445 -0
- package/dist/audit-D7koAKvj.js +445 -0
- package/dist/audit-xP_175jB.js +445 -0
- package/dist/backup-7l3iovkX.js +86 -0
- package/dist/backup-BKLTHh62.js +86 -0
- package/dist/backup-CspxXk78.js +86 -0
- package/dist/backup-D8dFYDXV.js +86 -0
- package/dist/banner-CZ2BfvQq.js +143 -0
- package/dist/banner-CjTRWmks.js +7 -0
- package/dist/banner-Dpygks0H.js +143 -0
- package/dist/banner-ZX1WLr44.js +7 -0
- package/dist/bounty-tools-Cq-oC9gk.js +211 -0
- package/dist/bounty-tools-DZ-WtRdE.js +211 -0
- package/dist/bounty-tools-DhpmjF5Y.js +211 -0
- package/dist/bounty-tools-NGuBWI55.js +211 -0
- package/dist/browser-tools-5Fl1hP_2.js +5 -0
- package/dist/browser-tools-Ay-wU_a4.js +5 -0
- package/dist/browser-tools-BMgBB2fK.js +179 -0
- package/dist/browser-tools-kcViDwk5.js +179 -0
- package/dist/chat-BUa1oGqj.js +528 -0
- package/dist/chat-CiuT-GTs.js +528 -0
- package/dist/chat-DfI8uOzF.js +528 -0
- package/dist/chat-Dz5rmUSs.js +528 -0
- package/dist/chat-RTmX1F16.js +528 -0
- package/dist/claw-tasks-Cio1Q7eA.js +80 -0
- package/dist/claw-tasks-DzxNWVcz.js +80 -0
- package/dist/claw-tasks-L7vQSGlt.js +80 -0
- package/dist/claw-tasks-dndWneZW.js +80 -0
- package/dist/config-B-W-Mz4X.js +7 -0
- package/dist/config-BAwkTUJC.js +261 -0
- package/dist/config-CYPw2v4l.js +261 -0
- package/dist/config-DN9fdLL3.js +261 -0
- package/dist/config-FejpHHTz.js +261 -0
- package/dist/config-Tq_GJHf7.js +7 -0
- package/dist/config-n4qy5jIy.js +7 -0
- package/dist/config-qJUYRMzx.js +7 -0
- package/dist/connector-CwT7KZm2.js +309 -0
- package/dist/connector-DX4k-lGd.js +442 -0
- package/dist/cost-tracker-C2q5zKic.js +103 -0
- package/dist/cost-tracker-CsRQAOEr.js +103 -0
- package/dist/cost-tracker-DAXWN5YT.js +103 -0
- package/dist/cost-tracker-bySvehH6.js +103 -0
- package/dist/credentials-store-BAW87r6f.js +7 -0
- package/dist/credentials-store-BHtk7_H_.js +7 -0
- package/dist/credentials-store-CESgFvFU.js +89 -0
- package/dist/credentials-store-CR4WSDGl.js +7 -0
- package/dist/credentials-store-CXq4kZub.js +89 -0
- package/dist/credentials-store-DUp8dtaS.js +89 -0
- package/dist/credentials-store-hiSga8qn.js +89 -0
- package/dist/credentials-store-kLdrmqSt.js +7 -0
- package/dist/cron-tasks-BFsaCKxE.js +89 -0
- package/dist/cron-tasks-BelA2aUW.js +89 -0
- package/dist/cron-tasks-D1T9fWAb.js +89 -0
- package/dist/cron-tasks-f_ieXSG2.js +89 -0
- package/dist/daemon-BTYhQvD_.js +7 -0
- package/dist/daemon-BoaFnmdF.js +421 -0
- package/dist/daemon-BrHxr4ut.js +421 -0
- package/dist/daemon-BzdeLgON.js +421 -0
- package/dist/daemon-BzqWIC4v.js +7 -0
- package/dist/daemon-C3OczPR1.js +7 -0
- package/dist/daemon-D57KIIA3.js +421 -0
- package/dist/daemon-D8uyH9et.js +7 -0
- package/dist/daemon-DBTtYx6E.js +421 -0
- package/dist/daemon-srcdhzUG.js +7 -0
- package/dist/delivery-Bt0xW6L9.js +4 -0
- package/dist/delivery-C2sAERN7.js +4 -0
- package/dist/delivery-CF2Q4hb1.js +95 -0
- package/dist/delivery-CfMljOwk.js +95 -0
- package/dist/delivery-DP0d4_A4.js +95 -0
- package/dist/delivery-DXYt4aMO.js +4 -0
- package/dist/delivery-DXxP2UL4.js +4 -0
- package/dist/delivery-jT2UIDlU.js +95 -0
- package/dist/destructive-gate-5LYh6brt.js +116 -0
- package/dist/destructive-gate-B_hNKtu6.js +116 -0
- package/dist/destructive-gate-DvxPSDMR.js +116 -0
- package/dist/destructive-gate-Qd2y7x1B.js +116 -0
- package/dist/dist-B1qvBUax.js +30541 -0
- package/dist/engine-BBJlKpMP.js +7 -0
- package/dist/engine-BNygJfCo.js +335 -0
- package/dist/engine-DB4MBzki.js +7 -0
- package/dist/engine-DPi9fhMl.js +332 -0
- package/dist/engine-DeaqDcaT.js +7 -0
- package/dist/engine-DuvXJrUP.js +335 -0
- package/dist/engine-HkyTC_xl.js +332 -0
- package/dist/engine-JysunhPR.js +7 -0
- package/dist/engine-MzEUw7qb.js +7 -0
- package/dist/engine-j9Yaqt_-.js +332 -0
- package/dist/env-resolve--MaE2kFF.js +167 -0
- package/dist/env-resolve-BYWG94tK.js +11 -0
- package/dist/env-resolve-Bop7KbNq.js +167 -0
- package/dist/env-resolve-Buos635Y.js +167 -0
- package/dist/env-resolve-D3dP1-Xt.js +11 -0
- package/dist/env-resolve-DvsbhPKl.js +11 -0
- package/dist/env-resolve-NNM3F6Eo.js +167 -0
- package/dist/env-resolve-dTjn-g8X.js +11 -0
- package/dist/extraction-tools-Bh5F0ENP.js +91 -0
- package/dist/extraction-tools-BjzXD9LW.js +5 -0
- package/dist/extraction-tools-D1lrDYhe.js +5 -0
- package/dist/extraction-tools-FBwtT2Bx.js +91 -0
- package/dist/fileFromPath-CodL6KXh.js +85 -0
- package/dist/gmail-watch-setup--eQ8raeb.js +42 -0
- package/dist/gmail-watch-setup-9t14gy1B.js +42 -0
- package/dist/gmail-watch-setup-B9fx_OLg.js +42 -0
- package/dist/gmail-watch-setup-DP3kDRx1.js +42 -0
- package/dist/heartbeat-engine-5iOlL7Dj.js +89 -0
- package/dist/heartbeat-engine-Bu4q18GH.js +89 -0
- package/dist/heartbeat-engine-CF_JjNJ4.js +89 -0
- package/dist/heartbeat-engine-CLADYZxE.js +89 -0
- package/dist/hub-CZeGrS20.js +6 -0
- package/dist/hub-DAkEVTEy.js +545 -0
- package/dist/hyperclawbot-CNVUtvYC.js +516 -0
- package/dist/hyperclawbot-D5ofLNgm.js +516 -0
- package/dist/hyperclawbot-D61zVMyQ.js +516 -0
- package/dist/hyperclawbot-DwScttSx.js +516 -0
- package/dist/hyperclawbot-v65eL2U0.js +516 -0
- package/dist/inference-BEvs7s3c.js +2854 -0
- package/dist/inference-C4b9YqXk.js +8 -0
- package/dist/inference-CRF6HyyH.js +2854 -0
- package/dist/inference-CfhTACI8.js +2854 -0
- package/dist/inference-DGsy36Ru.js +8 -0
- package/dist/inference-Da7Hw4J3.js +8 -0
- package/dist/inference-DhJ-SHZn.js +8 -0
- package/dist/inference-K7Jrnzre.js +2854 -0
- package/dist/isFile-CSxoSB8X.js +2274 -0
- package/dist/knowledge-graph-BdsJ5KEL.js +134 -0
- package/dist/knowledge-graph-CFRBepzr.js +134 -0
- package/dist/knowledge-graph-CeDeahui.js +134 -0
- package/dist/knowledge-graph-DoYFZnUr.js +134 -0
- package/dist/loader-C2qtNbtF.js +6 -0
- package/dist/loader-D6yjBYo4.js +410 -0
- package/dist/loader-DBO6yRNh.js +6 -0
- package/dist/loader-DUhmG3V9.js +410 -0
- package/dist/loader-Dl8LNycw.js +6 -0
- package/dist/loader-UpOYxgZv.js +6 -0
- package/dist/loader-hXv2mZjK.js +410 -0
- package/dist/loader-nDBcv3Tm.js +410 -0
- package/dist/logger-BD316YbA.js +86 -0
- package/dist/logger-BnXZkfsp.js +86 -0
- package/dist/logger-CmphFNmW.js +86 -0
- package/dist/logger-DkHzhh56.js +86 -0
- package/dist/manager-3-q8zuAW.js +250 -0
- package/dist/manager-BkMzc-EJ.js +250 -0
- package/dist/manager-Bq5LApdR.js +6 -0
- package/dist/manager-CNgdJunf.js +250 -0
- package/dist/manager-CozyZSDG.js +250 -0
- package/dist/manager-D4mDWXph.js +120 -0
- package/dist/manager-DuS-WQhZ.js +120 -0
- package/dist/manager-Dz2eKYqo.js +116 -0
- package/dist/manager-R0TlRMZy.js +120 -0
- package/dist/manager-aJfY7rt6.js +120 -0
- package/dist/mcp-BH7HtOQ8.js +142 -0
- package/dist/mcp-CAJSA_ee.js +142 -0
- package/dist/mcp-CD-iIQa2.js +142 -0
- package/dist/mcp-DGo37Ifb.js +142 -0
- package/dist/mcp-loader-Ct1NQKnX.js +93 -0
- package/dist/mcp-loader-D1T6UX73.js +93 -0
- package/dist/mcp-loader-DJk6MEof.js +93 -0
- package/dist/mcp-loader-DdXvU63s.js +93 -0
- package/dist/mcp-loader-gMliiJ7R.js +93 -0
- package/dist/memory-CyonlkTy.js +6 -0
- package/dist/memory-DPSWQBc0.js +276 -0
- package/dist/memory-auto-B0QOqaUD.js +306 -0
- package/dist/memory-auto-BSxYJugl.js +5 -0
- package/dist/memory-auto-CcFRxMj-.js +306 -0
- package/dist/memory-auto-CifT5aj_.js +5 -0
- package/dist/memory-auto-Cp2Jwx3Y.js +306 -0
- package/dist/memory-auto-DjK_D8CA.js +306 -0
- package/dist/memory-auto-N57dp4Do.js +5 -0
- package/dist/memory-auto-n0kOcU7F.js +5 -0
- package/dist/memory-integration-D8shLJwp.js +91 -0
- package/dist/memory-integration-DLmzJ62L.js +91 -0
- package/dist/memory-integration-DMXDbMIL.js +91 -0
- package/dist/memory-integration-Dgr-mjue.js +91 -0
- package/dist/moltbook-CIeOshK6.js +81 -0
- package/dist/moltbook-CX5XWn06.js +81 -0
- package/dist/moltbook-DUfiE4NY.js +81 -0
- package/dist/moltbook-YEiNI8Cm.js +81 -0
- package/dist/multi-agent-tools-jzfvT4zP.js +87 -0
- package/dist/multimodal-zZdwqISl.js +77 -0
- package/dist/node-BYrxELx2.js +251 -0
- package/dist/node-CLWgPlAk.js +251 -0
- package/dist/node-Czz8Y85D.js +251 -0
- package/dist/node-Du2H2Ddi.js +226 -0
- package/dist/node-domexception-v89b0Nwz.js +21 -0
- package/dist/node-pending-queue-DUXCbYkp.js +32 -0
- package/dist/node-pending-queue-DZp7cdfo.js +32 -0
- package/dist/node-pending-queue-iYpoWqxe.js +32 -0
- package/dist/nodes-registry-BTy7Sc7D.js +52 -0
- package/dist/nodes-registry-BYjmmJBU.js +52 -0
- package/dist/nodes-registry-C8GeEGq0.js +52 -0
- package/dist/nodes-registry-Du6Klz0l.js +52 -0
- package/dist/oauth-flow-BA0yMrHx.js +148 -0
- package/dist/oauth-flow-C4QSMsbl.js +148 -0
- package/dist/oauth-flow-CIuDBDsp.js +148 -0
- package/dist/oauth-flow-CniM4jlJ.js +148 -0
- package/dist/oauth-provider-BA4GVFKg.js +111 -0
- package/dist/oauth-provider-Bnul5A_Z.js +111 -0
- package/dist/oauth-provider-DqPXPiiC.js +111 -0
- package/dist/oauth-provider-MEgHjij2.js +111 -0
- package/dist/observability-0spm7MPz.js +89 -0
- package/dist/observability-BOMYgHUh.js +89 -0
- package/dist/observability-CDqHr-_o.js +89 -0
- package/dist/observability-ah2a7sh1.js +89 -0
- package/dist/onboard-BJ78s3NT.js +3854 -0
- package/dist/onboard-C55YXd_e.js +14 -0
- package/dist/onboard-CNnm4yYp.js +3841 -0
- package/dist/onboard-CXSVPnP7.js +3854 -0
- package/dist/onboard-CwvXXOR1.js +14 -0
- package/dist/onboard-CxlIsNhX.js +3854 -0
- package/dist/onboard-DPmufMqX.js +14 -0
- package/dist/onboard-F9lKA2ie.js +14 -0
- package/dist/onboard-UTQXzlPD.js +3854 -0
- package/dist/onboard-hK098kjl.js +14 -0
- package/dist/openai-CrdtuLxw.js +6292 -0
- package/dist/orchestrator-5M-6MB7r.js +6 -0
- package/dist/orchestrator-B3BjP1dy.js +6 -0
- package/dist/orchestrator-BZS62iDS.js +6 -0
- package/dist/orchestrator-CTMbjgH_.js +6 -0
- package/dist/orchestrator-Crn4fgbI.js +189 -0
- package/dist/orchestrator-Cs6s-QmS.js +189 -0
- package/dist/orchestrator-DGqwsLmO.js +189 -0
- package/dist/orchestrator-UUHsFKiH.js +6 -0
- package/dist/orchestrator-oa7HbCnF.js +189 -0
- package/dist/orchestrator-tUKag7pG.js +189 -0
- package/dist/osint-BJvOCmVk.js +283 -0
- package/dist/osint-CK9xVUUm.js +283 -0
- package/dist/osint-D6vQXCWh.js +283 -0
- package/dist/osint-DLYZsp1k.js +283 -0
- package/dist/osint-cAAdO-cx.js +283 -0
- package/dist/osint-chat-B0lc0Y6r.js +789 -0
- package/dist/osint-chat-BUhiSpf9.js +789 -0
- package/dist/osint-chat-C-9FVAkU.js +789 -0
- package/dist/osint-chat-CWET8Fno.js +789 -0
- package/dist/osint-chat-Cgdzg3lh.js +789 -0
- package/dist/pc-access-BCaF5mRs.js +858 -0
- package/dist/pc-access-BOcXappE.js +858 -0
- package/dist/pc-access-BgZNmAdB.js +8 -0
- package/dist/pc-access-CAoM6WN4.js +8 -0
- package/dist/pc-access-D2HdoziZ.js +8 -0
- package/dist/pc-access-D4g0fjQb.js +858 -0
- package/dist/pending-approval-CJPyt8U5.js +22 -0
- package/dist/pending-approval-CzMNCTfZ.js +22 -0
- package/dist/pending-approval-DaXi7otO.js +22 -0
- package/dist/pending-approval-KcyeiifE.js +22 -0
- package/dist/providers-DrZP0NeR.js +5 -0
- package/dist/providers-dHhpJo9j.js +1120 -0
- package/dist/reminders-store-B58LldEG.js +58 -0
- package/dist/reminders-store-C4gWckLa.js +58 -0
- package/dist/reminders-store-DT0o6a60.js +58 -0
- package/dist/renderer-B8c22rbg.js +228 -0
- package/dist/renderer-BS0ETL20.js +228 -0
- package/dist/renderer-Cg3c41A5.js +228 -0
- package/dist/renderer-UoPcgaAd.js +228 -0
- package/dist/rules-D0v5nuSE.js +106 -0
- package/dist/rules-DCKPgwLb.js +106 -0
- package/dist/rules-Zn9j4PnO.js +106 -0
- package/dist/rules-oAgOSPHC.js +106 -0
- package/dist/run-main.js +457 -131
- package/dist/runner-BaZ2V27T.js +1307 -0
- package/dist/runner-Bgl7UTbV.js +1307 -0
- package/dist/runner-DOKp3-v5.js +1307 -0
- package/dist/runner-voYdfM_f.js +1307 -0
- package/dist/search-tools-BBwMa8VX.js +107 -0
- package/dist/search-tools-CEUOO9Jf.js +107 -0
- package/dist/search-tools-VHP3xVyC.js +107 -0
- package/dist/search-tools-w_zT7-dr.js +107 -0
- package/dist/server-BAdJwMM9.js +4 -0
- package/dist/server-BD9FLc7S.js +1384 -0
- package/dist/server-BlqWBbS7.js +4 -0
- package/dist/server-BzwPvTbD.js +1447 -0
- package/dist/server-CBvSfG4w.js +4 -0
- package/dist/server-CbNBcB41.js +4 -0
- package/dist/server-DPTXaJJF.js +4 -0
- package/dist/server-Dv2zHHy-.js +1447 -0
- package/dist/server-MDmdWHob.js +1447 -0
- package/dist/server-N9LnLQCS.js +1447 -0
- package/dist/session-store-C6Otslf9.js +5 -0
- package/dist/session-store-Cmfnvuw9.js +141 -0
- package/dist/session-store-CuR9DgRf.js +5 -0
- package/dist/session-store-Cx1RMBhS.js +5 -0
- package/dist/session-store-DPPHkJBn.js +5 -0
- package/dist/session-store-DWLCWQFS.js +141 -0
- package/dist/session-store-qGufR_m5.js +141 -0
- package/dist/session-store-sUpA509O.js +141 -0
- package/dist/sessions-tools-9Z8TtdmP.js +5 -0
- package/dist/sessions-tools-BAZnoQLp.js +95 -0
- package/dist/sessions-tools-Bb_zF947.js +95 -0
- package/dist/sessions-tools-ClrKqLII.js +131 -0
- package/dist/sessions-tools-DFe23ZDD.js +5 -0
- package/dist/sessions-tools-JHSZ6Bns.js +5 -0
- package/dist/sessions-tools-TsRdeFb7.js +95 -0
- package/dist/sessions-tools-nYP3Agfs.js +5 -0
- package/dist/skill-loader-9jg876RH.js +160 -0
- package/dist/skill-loader-CM4KWQ7_.js +160 -0
- package/dist/skill-loader-CS3OP4Lr.js +160 -0
- package/dist/skill-loader-CnJDLNbY.js +7 -0
- package/dist/skill-loader-DRLgt5V2.js +160 -0
- package/dist/skill-loader-DVpEgYV2.js +7 -0
- package/dist/skill-loader-Df5T_UFl.js +7 -0
- package/dist/skill-loader-DxE-gZkT.js +7 -0
- package/dist/skill-runtime-8Xh5874w.js +104 -0
- package/dist/skill-runtime-B3aUdWKh.js +104 -0
- package/dist/skill-runtime-BKyhYvpW.js +5 -0
- package/dist/skill-runtime-BP0kZfmM.js +5 -0
- package/dist/skill-runtime-CLK5HTVE.js +5 -0
- package/dist/skill-runtime-COyc3Bci.js +104 -0
- package/dist/skill-runtime-CvDXX7wN.js +5 -0
- package/dist/skill-runtime-D4REZnhY.js +104 -0
- package/dist/skill-runtime-DQRi9sIf.js +5 -0
- package/dist/skill-runtime-DRd56NWK.js +104 -0
- package/dist/src-9GyYED0T.js +63 -0
- package/dist/src-B9L6qb-Z.js +462 -0
- package/dist/src-BEjIVOmq.js +63 -0
- package/dist/src-BY3On_zO.js +462 -0
- package/dist/src-BdgKAlMQ.js +20 -0
- package/dist/src-C52A3OwC.js +301 -0
- package/dist/src-C8cbfjat.js +173 -0
- package/dist/src-CQ2lZvdF.js +462 -0
- package/dist/src-Cdwn9xpG.js +462 -0
- package/dist/src-CyCLoqIP.js +63 -0
- package/dist/src-D-OND_62.js +301 -0
- package/dist/src-DFo8lVfV.js +300 -0
- package/dist/src-DJbpP4Gs.js +462 -0
- package/dist/src-DPfnArdr.js +300 -0
- package/dist/src-DTft7Qvt.js +63 -0
- package/dist/src-DgvFah8g.js +153 -0
- package/dist/src-TYvV_oFO.js +63 -0
- package/dist/src-lltU5gkh.js +20 -0
- package/dist/sub-agent-tools-CE8pVUdb.js +39 -0
- package/dist/sub-agent-tools-CQWNfYn_.js +39 -0
- package/dist/sub-agent-tools-CViiqebO.js +39 -0
- package/dist/sub-agent-tools-DgT4jUHC.js +39 -0
- package/dist/sub-agent-tools-Lbin_4S3.js +39 -0
- package/dist/tool-policy-1EBdJkSG.js +190 -0
- package/dist/tool-policy-B1bL0X-E.js +189 -0
- package/dist/tool-policy-NLbucl5-.js +189 -0
- package/dist/tool-policy-yNVTLNDY.js +189 -0
- package/dist/tts-elevenlabs-Bk24wQ2V.js +64 -0
- package/dist/tts-elevenlabs-CHrJZuNW.js +64 -0
- package/dist/tts-elevenlabs-DHqQsqMz.js +64 -0
- package/dist/tts-elevenlabs-TUKPkSV2.js +64 -0
- package/dist/vision-CW1YCKed.js +167 -0
- package/dist/vision-DPLmrwUA.js +167 -0
- package/dist/vision-Q4EOcBS6.js +167 -0
- package/dist/vision-XyAGO5La.js +167 -0
- package/dist/vision-tools-B5DNR28M.js +5 -0
- package/dist/vision-tools-CC9HSuvN.js +51 -0
- package/dist/vision-tools-Ca3OhtdX.js +51 -0
- package/dist/vision-tools-CpU2fSRv.js +51 -0
- package/dist/vision-tools-Ct52djW8.js +51 -0
- package/dist/vision-tools-DF7N2DDI.js +5 -0
- package/dist/vision-tools-DyP6lRA5.js +5 -0
- package/dist/vision-tools-RIVKEUeY.js +5 -0
- package/dist/voice-transcription-Bz2y0nPK.js +170 -0
- package/dist/voice-transcription-CVFcHpPF.js +170 -0
- package/dist/voice-transcription-CvQuWPYK.js +170 -0
- package/dist/voice-transcription-YqndiLA7.js +170 -0
- package/dist/website-watch-tools-B036Y8OQ.js +176 -0
- package/dist/website-watch-tools-B8CHie8v.js +5 -0
- package/dist/website-watch-tools-Brk5oIEv.js +176 -0
- package/dist/website-watch-tools-CJqRj_GB.js +5 -0
- package/dist/website-watch-tools-CSSEu3Qy.js +5 -0
- package/dist/website-watch-tools-D92dkYZa.js +176 -0
- package/dist/website-watch-tools-Du_a8lXq.js +176 -0
- package/dist/website-watch-tools-UdTBGgRk.js +5 -0
- package/package.json +5 -3
- package/static/web/assets/{index-Bf8pf7Wg.js → index-8bDizzaq.js} +2 -2
- package/static/web/index.html +1 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const require_paths = require('./paths-AIyBxIzm.js');
|
|
3
|
+
const require_paths$1 = require('./paths-DPovhojT.js');
|
|
4
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
5
|
+
const path = require_chunk.__toESM(require("path"));
|
|
6
|
+
|
|
7
|
+
//#region src/commands/gmail-watch-setup.ts
|
|
8
|
+
require_paths$1.init_paths();
|
|
9
|
+
async function getGmailAccessToken() {
|
|
10
|
+
const hcDir = require_paths.getHyperClawDir();
|
|
11
|
+
const paths = [path.default.join(hcDir, "oauth-google-gmail.json"), path.default.join(hcDir, "oauth-google.json")];
|
|
12
|
+
for (const p of paths) {
|
|
13
|
+
if (!await fs_extra.default.pathExists(p)) continue;
|
|
14
|
+
const data = await fs_extra.default.readJson(p);
|
|
15
|
+
if (data.access_token) return data.access_token;
|
|
16
|
+
}
|
|
17
|
+
throw new Error("No Gmail OAuth token found. Run: hyperclaw auth oauth google-gmail");
|
|
18
|
+
}
|
|
19
|
+
async function setupGmailWatch(opts) {
|
|
20
|
+
const token = await getGmailAccessToken();
|
|
21
|
+
const body = JSON.stringify({
|
|
22
|
+
topicName: opts.topicName,
|
|
23
|
+
labelIds: opts.labelIds || ["INBOX"],
|
|
24
|
+
labelFilterBehavior: "INCLUDE"
|
|
25
|
+
});
|
|
26
|
+
const res = await fetch("https://gmail.googleapis.com/gmail/v1/users/me/watch", {
|
|
27
|
+
method: "POST",
|
|
28
|
+
headers: {
|
|
29
|
+
Authorization: `Bearer ${token}`,
|
|
30
|
+
"Content-Type": "application/json"
|
|
31
|
+
},
|
|
32
|
+
body
|
|
33
|
+
});
|
|
34
|
+
if (!res.ok) {
|
|
35
|
+
const err = await res.text();
|
|
36
|
+
throw new Error(`Gmail API error ${res.status}: ${err}`);
|
|
37
|
+
}
|
|
38
|
+
return res.json();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
exports.setupGmailWatch = setupGmailWatch;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const require_paths = require('./paths-AIyBxIzm.js');
|
|
3
|
+
const require_paths$1 = require('./paths-DPovhojT.js');
|
|
4
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
5
|
+
const path = require_chunk.__toESM(require("path"));
|
|
6
|
+
|
|
7
|
+
//#region src/commands/gmail-watch-setup.ts
|
|
8
|
+
require_paths$1.init_paths();
|
|
9
|
+
async function getGmailAccessToken() {
|
|
10
|
+
const hcDir = require_paths.getHyperClawDir();
|
|
11
|
+
const paths = [path.default.join(hcDir, "oauth-google-gmail.json"), path.default.join(hcDir, "oauth-google.json")];
|
|
12
|
+
for (const p of paths) {
|
|
13
|
+
if (!await fs_extra.default.pathExists(p)) continue;
|
|
14
|
+
const data = await fs_extra.default.readJson(p);
|
|
15
|
+
if (data.access_token) return data.access_token;
|
|
16
|
+
}
|
|
17
|
+
throw new Error("No Gmail OAuth token found. Run: hyperclaw auth oauth google-gmail");
|
|
18
|
+
}
|
|
19
|
+
async function setupGmailWatch(opts) {
|
|
20
|
+
const token = await getGmailAccessToken();
|
|
21
|
+
const body = JSON.stringify({
|
|
22
|
+
topicName: opts.topicName,
|
|
23
|
+
labelIds: opts.labelIds || ["INBOX"],
|
|
24
|
+
labelFilterBehavior: "INCLUDE"
|
|
25
|
+
});
|
|
26
|
+
const res = await fetch("https://gmail.googleapis.com/gmail/v1/users/me/watch", {
|
|
27
|
+
method: "POST",
|
|
28
|
+
headers: {
|
|
29
|
+
Authorization: `Bearer ${token}`,
|
|
30
|
+
"Content-Type": "application/json"
|
|
31
|
+
},
|
|
32
|
+
body
|
|
33
|
+
});
|
|
34
|
+
if (!res.ok) {
|
|
35
|
+
const err = await res.text();
|
|
36
|
+
throw new Error(`Gmail API error ${res.status}: ${err}`);
|
|
37
|
+
}
|
|
38
|
+
return res.json();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
exports.setupGmailWatch = setupGmailWatch;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const require_paths = require('./paths-AIyBxIzm.js');
|
|
3
|
+
const require_paths$1 = require('./paths-DPovhojT.js');
|
|
4
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
5
|
+
const path = require_chunk.__toESM(require("path"));
|
|
6
|
+
|
|
7
|
+
//#region src/commands/gmail-watch-setup.ts
|
|
8
|
+
require_paths$1.init_paths();
|
|
9
|
+
async function getGmailAccessToken() {
|
|
10
|
+
const hcDir = require_paths.getHyperClawDir();
|
|
11
|
+
const paths = [path.default.join(hcDir, "oauth-google-gmail.json"), path.default.join(hcDir, "oauth-google.json")];
|
|
12
|
+
for (const p of paths) {
|
|
13
|
+
if (!await fs_extra.default.pathExists(p)) continue;
|
|
14
|
+
const data = await fs_extra.default.readJson(p);
|
|
15
|
+
if (data.access_token) return data.access_token;
|
|
16
|
+
}
|
|
17
|
+
throw new Error("No Gmail OAuth token found. Run: hyperclaw auth oauth google-gmail");
|
|
18
|
+
}
|
|
19
|
+
async function setupGmailWatch(opts) {
|
|
20
|
+
const token = await getGmailAccessToken();
|
|
21
|
+
const body = JSON.stringify({
|
|
22
|
+
topicName: opts.topicName,
|
|
23
|
+
labelIds: opts.labelIds || ["INBOX"],
|
|
24
|
+
labelFilterBehavior: "INCLUDE"
|
|
25
|
+
});
|
|
26
|
+
const res = await fetch("https://gmail.googleapis.com/gmail/v1/users/me/watch", {
|
|
27
|
+
method: "POST",
|
|
28
|
+
headers: {
|
|
29
|
+
Authorization: `Bearer ${token}`,
|
|
30
|
+
"Content-Type": "application/json"
|
|
31
|
+
},
|
|
32
|
+
body
|
|
33
|
+
});
|
|
34
|
+
if (!res.ok) {
|
|
35
|
+
const err = await res.text();
|
|
36
|
+
throw new Error(`Gmail API error ${res.status}: ${err}`);
|
|
37
|
+
}
|
|
38
|
+
return res.json();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
exports.setupGmailWatch = setupGmailWatch;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const require_paths = require('./paths-AIyBxIzm.js');
|
|
3
|
+
const require_paths$1 = require('./paths-DPovhojT.js');
|
|
4
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
5
|
+
const path = require_chunk.__toESM(require("path"));
|
|
6
|
+
|
|
7
|
+
//#region src/commands/gmail-watch-setup.ts
|
|
8
|
+
require_paths$1.init_paths();
|
|
9
|
+
async function getGmailAccessToken() {
|
|
10
|
+
const hcDir = require_paths.getHyperClawDir();
|
|
11
|
+
const paths = [path.default.join(hcDir, "oauth-google-gmail.json"), path.default.join(hcDir, "oauth-google.json")];
|
|
12
|
+
for (const p of paths) {
|
|
13
|
+
if (!await fs_extra.default.pathExists(p)) continue;
|
|
14
|
+
const data = await fs_extra.default.readJson(p);
|
|
15
|
+
if (data.access_token) return data.access_token;
|
|
16
|
+
}
|
|
17
|
+
throw new Error("No Gmail OAuth token found. Run: hyperclaw auth oauth google-gmail");
|
|
18
|
+
}
|
|
19
|
+
async function setupGmailWatch(opts) {
|
|
20
|
+
const token = await getGmailAccessToken();
|
|
21
|
+
const body = JSON.stringify({
|
|
22
|
+
topicName: opts.topicName,
|
|
23
|
+
labelIds: opts.labelIds || ["INBOX"],
|
|
24
|
+
labelFilterBehavior: "INCLUDE"
|
|
25
|
+
});
|
|
26
|
+
const res = await fetch("https://gmail.googleapis.com/gmail/v1/users/me/watch", {
|
|
27
|
+
method: "POST",
|
|
28
|
+
headers: {
|
|
29
|
+
Authorization: `Bearer ${token}`,
|
|
30
|
+
"Content-Type": "application/json"
|
|
31
|
+
},
|
|
32
|
+
body
|
|
33
|
+
});
|
|
34
|
+
if (!res.ok) {
|
|
35
|
+
const err = await res.text();
|
|
36
|
+
throw new Error(`Gmail API error ${res.status}: ${err}`);
|
|
37
|
+
}
|
|
38
|
+
return res.json();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
exports.setupGmailWatch = setupGmailWatch;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const require_paths = require('./paths-AIyBxIzm.js');
|
|
3
|
+
const require_paths$1 = require('./paths-DPovhojT.js');
|
|
4
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
5
|
+
const path = require_chunk.__toESM(require("path"));
|
|
6
|
+
const http = require_chunk.__toESM(require("http"));
|
|
7
|
+
|
|
8
|
+
//#region src/services/heartbeat-engine.ts
|
|
9
|
+
require_paths$1.init_paths();
|
|
10
|
+
const HC_DIR = require_paths.getHyperClawDir();
|
|
11
|
+
async function getGatewayConfig() {
|
|
12
|
+
try {
|
|
13
|
+
const cfg = await fs_extra.default.readJson(require_paths.getConfigPath());
|
|
14
|
+
const authToken = cfg?.gateway?.authToken || process.env.HYPERCLAW_GATEWAY_TOKEN || "";
|
|
15
|
+
return {
|
|
16
|
+
port: cfg?.gateway?.port ?? 18789,
|
|
17
|
+
authToken: authToken || void 0
|
|
18
|
+
};
|
|
19
|
+
} catch {
|
|
20
|
+
return { port: 18789 };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function sanitizeBriefing(text) {
|
|
24
|
+
return text.replace(/\r\n/g, "\n").replace(/[^\x09\x0a\x0d\x20-\x7e]+/g, "").trim().slice(0, 12e3);
|
|
25
|
+
}
|
|
26
|
+
/** Generate morning briefing via agent (POST /api/chat). */
|
|
27
|
+
async function runMorningBriefing() {
|
|
28
|
+
const { port, authToken } = await getGatewayConfig();
|
|
29
|
+
const prompt = `Generate a brief morning briefing (3-5 bullets) for the user based on:
|
|
30
|
+
- MEMORY.md and knowledge graph (projects, preferences, recent facts)
|
|
31
|
+
- Today's reminders (list_reminders)
|
|
32
|
+
- Any relevant context
|
|
33
|
+
|
|
34
|
+
Be concise. Format as markdown bullets. No preamble.`;
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
const payload = JSON.stringify({ message: prompt });
|
|
37
|
+
const headers = {
|
|
38
|
+
"Content-Type": "application/json",
|
|
39
|
+
"Content-Length": String(Buffer.byteLength(payload))
|
|
40
|
+
};
|
|
41
|
+
if (authToken) headers["Authorization"] = `Bearer ${authToken}`;
|
|
42
|
+
const req = http.default.request({
|
|
43
|
+
hostname: "127.0.0.1",
|
|
44
|
+
port,
|
|
45
|
+
path: "/api/chat",
|
|
46
|
+
method: "POST",
|
|
47
|
+
headers
|
|
48
|
+
}, (res) => {
|
|
49
|
+
let data = "";
|
|
50
|
+
res.on("data", (c) => data += c);
|
|
51
|
+
res.on("end", () => {
|
|
52
|
+
try {
|
|
53
|
+
const j = JSON.parse(data);
|
|
54
|
+
resolve(j.response || j.error || "(no response)");
|
|
55
|
+
} catch {
|
|
56
|
+
resolve(data || "(parse error)");
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
req.on("error", reject);
|
|
61
|
+
req.setTimeout(6e4, () => {
|
|
62
|
+
req.destroy();
|
|
63
|
+
reject(new Error("Briefing timeout"));
|
|
64
|
+
});
|
|
65
|
+
req.write(payload);
|
|
66
|
+
req.end();
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/** Persist briefing to HEARTBEAT.md and daily log. */
|
|
70
|
+
async function persistBriefing(text) {
|
|
71
|
+
const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
72
|
+
const ts = (/* @__PURE__ */ new Date()).toISOString();
|
|
73
|
+
const sanitized = sanitizeBriefing(text);
|
|
74
|
+
const heartbeatPath = path.default.join(HC_DIR, "HEARTBEAT.md");
|
|
75
|
+
const content = `## Morning Briefing — ${today}\n\n${sanitized}\n\n---\n*Generated ${ts}*\n`;
|
|
76
|
+
await fs_extra.default.ensureDir(HC_DIR);
|
|
77
|
+
if (await fs_extra.default.pathExists(heartbeatPath)) {
|
|
78
|
+
const existing = await fs_extra.default.readFile(heartbeatPath, "utf8");
|
|
79
|
+
await fs_extra.default.writeFile(heartbeatPath, content + "\n" + existing.slice(0, 8e3), "utf8");
|
|
80
|
+
} else await fs_extra.default.writeFile(heartbeatPath, `# HEARTBEAT.md — Proactive Briefings\n\n${content}`, "utf8");
|
|
81
|
+
const logDir = path.default.join(HC_DIR, "logs");
|
|
82
|
+
const logPath = path.default.join(logDir, `heartbeat-${today}.md`);
|
|
83
|
+
await fs_extra.default.ensureDir(logDir);
|
|
84
|
+
await fs_extra.default.appendFile(logPath, `\n## ${ts}\n\n${sanitized}\n`, "utf8");
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
//#endregion
|
|
88
|
+
exports.persistBriefing = persistBriefing;
|
|
89
|
+
exports.runMorningBriefing = runMorningBriefing;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const require_paths = require('./paths-AIyBxIzm.js');
|
|
3
|
+
const require_paths$1 = require('./paths-DPovhojT.js');
|
|
4
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
5
|
+
const path = require_chunk.__toESM(require("path"));
|
|
6
|
+
const http = require_chunk.__toESM(require("http"));
|
|
7
|
+
|
|
8
|
+
//#region src/services/heartbeat-engine.ts
|
|
9
|
+
require_paths$1.init_paths();
|
|
10
|
+
const HC_DIR = require_paths.getHyperClawDir();
|
|
11
|
+
async function getGatewayConfig() {
|
|
12
|
+
try {
|
|
13
|
+
const cfg = await fs_extra.default.readJson(require_paths.getConfigPath());
|
|
14
|
+
const authToken = cfg?.gateway?.authToken || process.env.HYPERCLAW_GATEWAY_TOKEN || "";
|
|
15
|
+
return {
|
|
16
|
+
port: cfg?.gateway?.port ?? 18789,
|
|
17
|
+
authToken: authToken || void 0
|
|
18
|
+
};
|
|
19
|
+
} catch {
|
|
20
|
+
return { port: 18789 };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function sanitizeBriefing(text) {
|
|
24
|
+
return text.replace(/\r\n/g, "\n").replace(/[^\x09\x0a\x0d\x20-\x7e]+/g, "").trim().slice(0, 12e3);
|
|
25
|
+
}
|
|
26
|
+
/** Generate morning briefing via agent (POST /api/chat). */
|
|
27
|
+
async function runMorningBriefing() {
|
|
28
|
+
const { port, authToken } = await getGatewayConfig();
|
|
29
|
+
const prompt = `Generate a brief morning briefing (3-5 bullets) for the user based on:
|
|
30
|
+
- MEMORY.md and knowledge graph (projects, preferences, recent facts)
|
|
31
|
+
- Today's reminders (list_reminders)
|
|
32
|
+
- Any relevant context
|
|
33
|
+
|
|
34
|
+
Be concise. Format as markdown bullets. No preamble.`;
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
const payload = JSON.stringify({ message: prompt });
|
|
37
|
+
const headers = {
|
|
38
|
+
"Content-Type": "application/json",
|
|
39
|
+
"Content-Length": String(Buffer.byteLength(payload))
|
|
40
|
+
};
|
|
41
|
+
if (authToken) headers["Authorization"] = `Bearer ${authToken}`;
|
|
42
|
+
const req = http.default.request({
|
|
43
|
+
hostname: "127.0.0.1",
|
|
44
|
+
port,
|
|
45
|
+
path: "/api/chat",
|
|
46
|
+
method: "POST",
|
|
47
|
+
headers
|
|
48
|
+
}, (res) => {
|
|
49
|
+
let data = "";
|
|
50
|
+
res.on("data", (c) => data += c);
|
|
51
|
+
res.on("end", () => {
|
|
52
|
+
try {
|
|
53
|
+
const j = JSON.parse(data);
|
|
54
|
+
resolve(j.response || j.error || "(no response)");
|
|
55
|
+
} catch {
|
|
56
|
+
resolve(data || "(parse error)");
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
req.on("error", reject);
|
|
61
|
+
req.setTimeout(6e4, () => {
|
|
62
|
+
req.destroy();
|
|
63
|
+
reject(new Error("Briefing timeout"));
|
|
64
|
+
});
|
|
65
|
+
req.write(payload);
|
|
66
|
+
req.end();
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/** Persist briefing to HEARTBEAT.md and daily log. */
|
|
70
|
+
async function persistBriefing(text) {
|
|
71
|
+
const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
72
|
+
const ts = (/* @__PURE__ */ new Date()).toISOString();
|
|
73
|
+
const sanitized = sanitizeBriefing(text);
|
|
74
|
+
const heartbeatPath = path.default.join(HC_DIR, "HEARTBEAT.md");
|
|
75
|
+
const content = `## Morning Briefing — ${today}\n\n${sanitized}\n\n---\n*Generated ${ts}*\n`;
|
|
76
|
+
await fs_extra.default.ensureDir(HC_DIR);
|
|
77
|
+
if (await fs_extra.default.pathExists(heartbeatPath)) {
|
|
78
|
+
const existing = await fs_extra.default.readFile(heartbeatPath, "utf8");
|
|
79
|
+
await fs_extra.default.writeFile(heartbeatPath, content + "\n" + existing.slice(0, 8e3), "utf8");
|
|
80
|
+
} else await fs_extra.default.writeFile(heartbeatPath, `# HEARTBEAT.md — Proactive Briefings\n\n${content}`, "utf8");
|
|
81
|
+
const logDir = path.default.join(HC_DIR, "logs");
|
|
82
|
+
const logPath = path.default.join(logDir, `heartbeat-${today}.md`);
|
|
83
|
+
await fs_extra.default.ensureDir(logDir);
|
|
84
|
+
await fs_extra.default.appendFile(logPath, `\n## ${ts}\n\n${sanitized}\n`, "utf8");
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
//#endregion
|
|
88
|
+
exports.persistBriefing = persistBriefing;
|
|
89
|
+
exports.runMorningBriefing = runMorningBriefing;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const require_paths = require('./paths-AIyBxIzm.js');
|
|
3
|
+
const require_paths$1 = require('./paths-DPovhojT.js');
|
|
4
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
5
|
+
const path = require_chunk.__toESM(require("path"));
|
|
6
|
+
const http = require_chunk.__toESM(require("http"));
|
|
7
|
+
|
|
8
|
+
//#region src/services/heartbeat-engine.ts
|
|
9
|
+
require_paths$1.init_paths();
|
|
10
|
+
const HC_DIR = require_paths.getHyperClawDir();
|
|
11
|
+
async function getGatewayConfig() {
|
|
12
|
+
try {
|
|
13
|
+
const cfg = await fs_extra.default.readJson(require_paths.getConfigPath());
|
|
14
|
+
const authToken = cfg?.gateway?.authToken || process.env.HYPERCLAW_GATEWAY_TOKEN || "";
|
|
15
|
+
return {
|
|
16
|
+
port: cfg?.gateway?.port ?? 18789,
|
|
17
|
+
authToken: authToken || void 0
|
|
18
|
+
};
|
|
19
|
+
} catch {
|
|
20
|
+
return { port: 18789 };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function sanitizeBriefing(text) {
|
|
24
|
+
return text.replace(/\r\n/g, "\n").replace(/[^\x09\x0a\x0d\x20-\x7e]+/g, "").trim().slice(0, 12e3);
|
|
25
|
+
}
|
|
26
|
+
/** Generate morning briefing via agent (POST /api/chat). */
|
|
27
|
+
async function runMorningBriefing() {
|
|
28
|
+
const { port, authToken } = await getGatewayConfig();
|
|
29
|
+
const prompt = `Generate a brief morning briefing (3-5 bullets) for the user based on:
|
|
30
|
+
- MEMORY.md and knowledge graph (projects, preferences, recent facts)
|
|
31
|
+
- Today's reminders (list_reminders)
|
|
32
|
+
- Any relevant context
|
|
33
|
+
|
|
34
|
+
Be concise. Format as markdown bullets. No preamble.`;
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
const payload = JSON.stringify({ message: prompt });
|
|
37
|
+
const headers = {
|
|
38
|
+
"Content-Type": "application/json",
|
|
39
|
+
"Content-Length": String(Buffer.byteLength(payload))
|
|
40
|
+
};
|
|
41
|
+
if (authToken) headers["Authorization"] = `Bearer ${authToken}`;
|
|
42
|
+
const req = http.default.request({
|
|
43
|
+
hostname: "127.0.0.1",
|
|
44
|
+
port,
|
|
45
|
+
path: "/api/chat",
|
|
46
|
+
method: "POST",
|
|
47
|
+
headers
|
|
48
|
+
}, (res) => {
|
|
49
|
+
let data = "";
|
|
50
|
+
res.on("data", (c) => data += c);
|
|
51
|
+
res.on("end", () => {
|
|
52
|
+
try {
|
|
53
|
+
const j = JSON.parse(data);
|
|
54
|
+
resolve(j.response || j.error || "(no response)");
|
|
55
|
+
} catch {
|
|
56
|
+
resolve(data || "(parse error)");
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
req.on("error", reject);
|
|
61
|
+
req.setTimeout(6e4, () => {
|
|
62
|
+
req.destroy();
|
|
63
|
+
reject(new Error("Briefing timeout"));
|
|
64
|
+
});
|
|
65
|
+
req.write(payload);
|
|
66
|
+
req.end();
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/** Persist briefing to HEARTBEAT.md and daily log. */
|
|
70
|
+
async function persistBriefing(text) {
|
|
71
|
+
const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
72
|
+
const ts = (/* @__PURE__ */ new Date()).toISOString();
|
|
73
|
+
const sanitized = sanitizeBriefing(text);
|
|
74
|
+
const heartbeatPath = path.default.join(HC_DIR, "HEARTBEAT.md");
|
|
75
|
+
const content = `## Morning Briefing — ${today}\n\n${sanitized}\n\n---\n*Generated ${ts}*\n`;
|
|
76
|
+
await fs_extra.default.ensureDir(HC_DIR);
|
|
77
|
+
if (await fs_extra.default.pathExists(heartbeatPath)) {
|
|
78
|
+
const existing = await fs_extra.default.readFile(heartbeatPath, "utf8");
|
|
79
|
+
await fs_extra.default.writeFile(heartbeatPath, content + "\n" + existing.slice(0, 8e3), "utf8");
|
|
80
|
+
} else await fs_extra.default.writeFile(heartbeatPath, `# HEARTBEAT.md — Proactive Briefings\n\n${content}`, "utf8");
|
|
81
|
+
const logDir = path.default.join(HC_DIR, "logs");
|
|
82
|
+
const logPath = path.default.join(logDir, `heartbeat-${today}.md`);
|
|
83
|
+
await fs_extra.default.ensureDir(logDir);
|
|
84
|
+
await fs_extra.default.appendFile(logPath, `\n## ${ts}\n\n${sanitized}\n`, "utf8");
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
//#endregion
|
|
88
|
+
exports.persistBriefing = persistBriefing;
|
|
89
|
+
exports.runMorningBriefing = runMorningBriefing;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const require_paths = require('./paths-AIyBxIzm.js');
|
|
3
|
+
const require_paths$1 = require('./paths-DPovhojT.js');
|
|
4
|
+
const fs_extra = require_chunk.__toESM(require("fs-extra"));
|
|
5
|
+
const path = require_chunk.__toESM(require("path"));
|
|
6
|
+
const http = require_chunk.__toESM(require("http"));
|
|
7
|
+
|
|
8
|
+
//#region src/services/heartbeat-engine.ts
|
|
9
|
+
require_paths$1.init_paths();
|
|
10
|
+
const HC_DIR = require_paths.getHyperClawDir();
|
|
11
|
+
async function getGatewayConfig() {
|
|
12
|
+
try {
|
|
13
|
+
const cfg = await fs_extra.default.readJson(require_paths.getConfigPath());
|
|
14
|
+
const authToken = cfg?.gateway?.authToken || process.env.HYPERCLAW_GATEWAY_TOKEN || "";
|
|
15
|
+
return {
|
|
16
|
+
port: cfg?.gateway?.port ?? 18789,
|
|
17
|
+
authToken: authToken || void 0
|
|
18
|
+
};
|
|
19
|
+
} catch {
|
|
20
|
+
return { port: 18789 };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function sanitizeBriefing(text) {
|
|
24
|
+
return text.replace(/\r\n/g, "\n").replace(/[^\x09\x0a\x0d\x20-\x7e]+/g, "").trim().slice(0, 12e3);
|
|
25
|
+
}
|
|
26
|
+
/** Generate morning briefing via agent (POST /api/chat). */
|
|
27
|
+
async function runMorningBriefing() {
|
|
28
|
+
const { port, authToken } = await getGatewayConfig();
|
|
29
|
+
const prompt = `Generate a brief morning briefing (3-5 bullets) for the user based on:
|
|
30
|
+
- MEMORY.md and knowledge graph (projects, preferences, recent facts)
|
|
31
|
+
- Today's reminders (list_reminders)
|
|
32
|
+
- Any relevant context
|
|
33
|
+
|
|
34
|
+
Be concise. Format as markdown bullets. No preamble.`;
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
const payload = JSON.stringify({ message: prompt });
|
|
37
|
+
const headers = {
|
|
38
|
+
"Content-Type": "application/json",
|
|
39
|
+
"Content-Length": String(Buffer.byteLength(payload))
|
|
40
|
+
};
|
|
41
|
+
if (authToken) headers["Authorization"] = `Bearer ${authToken}`;
|
|
42
|
+
const req = http.default.request({
|
|
43
|
+
hostname: "127.0.0.1",
|
|
44
|
+
port,
|
|
45
|
+
path: "/api/chat",
|
|
46
|
+
method: "POST",
|
|
47
|
+
headers
|
|
48
|
+
}, (res) => {
|
|
49
|
+
let data = "";
|
|
50
|
+
res.on("data", (c) => data += c);
|
|
51
|
+
res.on("end", () => {
|
|
52
|
+
try {
|
|
53
|
+
const j = JSON.parse(data);
|
|
54
|
+
resolve(j.response || j.error || "(no response)");
|
|
55
|
+
} catch {
|
|
56
|
+
resolve(data || "(parse error)");
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
req.on("error", reject);
|
|
61
|
+
req.setTimeout(6e4, () => {
|
|
62
|
+
req.destroy();
|
|
63
|
+
reject(new Error("Briefing timeout"));
|
|
64
|
+
});
|
|
65
|
+
req.write(payload);
|
|
66
|
+
req.end();
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/** Persist briefing to HEARTBEAT.md and daily log. */
|
|
70
|
+
async function persistBriefing(text) {
|
|
71
|
+
const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
72
|
+
const ts = (/* @__PURE__ */ new Date()).toISOString();
|
|
73
|
+
const sanitized = sanitizeBriefing(text);
|
|
74
|
+
const heartbeatPath = path.default.join(HC_DIR, "HEARTBEAT.md");
|
|
75
|
+
const content = `## Morning Briefing — ${today}\n\n${sanitized}\n\n---\n*Generated ${ts}*\n`;
|
|
76
|
+
await fs_extra.default.ensureDir(HC_DIR);
|
|
77
|
+
if (await fs_extra.default.pathExists(heartbeatPath)) {
|
|
78
|
+
const existing = await fs_extra.default.readFile(heartbeatPath, "utf8");
|
|
79
|
+
await fs_extra.default.writeFile(heartbeatPath, content + "\n" + existing.slice(0, 8e3), "utf8");
|
|
80
|
+
} else await fs_extra.default.writeFile(heartbeatPath, `# HEARTBEAT.md — Proactive Briefings\n\n${content}`, "utf8");
|
|
81
|
+
const logDir = path.default.join(HC_DIR, "logs");
|
|
82
|
+
const logPath = path.default.join(logDir, `heartbeat-${today}.md`);
|
|
83
|
+
await fs_extra.default.ensureDir(logDir);
|
|
84
|
+
await fs_extra.default.appendFile(logPath, `\n## ${ts}\n\n${sanitized}\n`, "utf8");
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
//#endregion
|
|
88
|
+
exports.persistBriefing = persistBriefing;
|
|
89
|
+
exports.runMorningBriefing = runMorningBriefing;
|