hyperclaw 5.3.45 → 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-B2Qo91lq.js +143 -0
- package/dist/banner-CZ2BfvQq.js +143 -0
- package/dist/banner-CjTRWmks.js +7 -0
- package/dist/banner-CmNA9NKE.js +7 -0
- package/dist/banner-D3-Ik5d2.js +143 -0
- package/dist/banner-D3X8tQ-0.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-BGD9AWhr.js +523 -0
- package/dist/chat-BUa1oGqj.js +528 -0
- package/dist/chat-CiuT-GTs.js +528 -0
- package/dist/chat-D8wFNN4z.js +523 -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-D-klsy3i.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-D_bYfHgn.js +421 -0
- package/dist/daemon-DcE6vcjH.js +421 -0
- package/dist/daemon-NFwpuo3L.js +7 -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-B7Q4Vx-C.js +7 -0
- package/dist/engine-BBJlKpMP.js +7 -0
- package/dist/engine-BNygJfCo.js +335 -0
- package/dist/engine-C-G3G-U7.js +7 -0
- package/dist/engine-DB4MBzki.js +7 -0
- package/dist/engine-DPi9fhMl.js +332 -0
- package/dist/engine-DRpy9Y5O.js +327 -0
- package/dist/engine-DeaqDcaT.js +7 -0
- package/dist/engine-DetHi9LP.js +327 -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-BqyZr2GM.js +516 -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-DTzP20Up.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-BAGRKfJz.js +93 -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-Dt64EewT.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-32d2Gsuy.js +14 -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-Cgj_CIrq.js +3812 -0
- package/dist/onboard-ChnsqU5z.js +14 -0
- package/dist/onboard-CjzqTYq3.js +3812 -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-Bcj7uc1F.js +189 -0
- package/dist/orchestrator-C7oLWNFW.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-Cuyqncql.js +189 -0
- package/dist/orchestrator-CxlEm5li.js +6 -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-ADgw_Gkd.js +283 -0
- package/dist/osint-B5j3IuJK.js +283 -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-BbH6eW8z.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/osint-chat-xRP672b-.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-6TIyu0mb.js +4 -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-Da_jSrfS.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/server-gai_RW1u.js +1356 -0
- package/dist/server-vbYKep6r.js +1356 -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-CHQT7c1k.js +5 -0
- package/dist/skill-runtime-CLK5HTVE.js +5 -0
- package/dist/skill-runtime-COyc3Bci.js +104 -0
- package/dist/skill-runtime-Cfd0OLkP.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/skill-runtime-Dr0fimDf.js +5 -0
- package/dist/skill-runtime-DtO4i9vK.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-CDLnbsLp.js +458 -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-D4VRanxB.js +458 -0
- package/dist/src-DFo8lVfV.js +300 -0
- package/dist/src-DJbpP4Gs.js +462 -0
- package/dist/src-DK-ayUx7.js +63 -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-H1I7JC2E.js +63 -0
- package/dist/src-TYvV_oFO.js +63 -0
- package/dist/src-lltU5gkh.js +20 -0
- package/dist/sub-agent-tools-BoMCZ6jz.js +39 -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-Dla3ZB5N.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 +147 -143
- package/scripts/fix-mojibake.mjs +166 -0
- package/static/web/assets/{index-BeAuHLb2.js → index-8bDizzaq.js} +2 -2
- package/static/web/assets/index-B5N1LHGR.css +1 -0
- package/static/web/index.html +2 -2
- package/static/web/assets/index-D2RfO0dG.css +0 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/channels/delivery.ts
|
|
3
|
+
/**
|
|
4
|
+
|
|
5
|
+
* src/channels/delivery.ts
|
|
6
|
+
|
|
7
|
+
* Delivery pipeline: queue retry, per-channel chunking, media handling.
|
|
8
|
+
|
|
9
|
+
*/
|
|
10
|
+
const CHANNEL_MAX_LENGTH = {
|
|
11
|
+
telegram: 4096,
|
|
12
|
+
discord: 2e3,
|
|
13
|
+
whatsapp: 4096,
|
|
14
|
+
"whatsapp-baileys": 4096,
|
|
15
|
+
slack: 4e4,
|
|
16
|
+
googlechat: 4096,
|
|
17
|
+
msteams: 28e3,
|
|
18
|
+
matrix: 32768,
|
|
19
|
+
irc: 512,
|
|
20
|
+
mattermost: 16383,
|
|
21
|
+
signal: 4096,
|
|
22
|
+
line: 2e3,
|
|
23
|
+
twitch: 490,
|
|
24
|
+
viber: 7e3,
|
|
25
|
+
default: 4e3
|
|
26
|
+
};
|
|
27
|
+
function chunkForChannel(text, channelId) {
|
|
28
|
+
const max = CHANNEL_MAX_LENGTH[channelId] ?? CHANNEL_MAX_LENGTH.default;
|
|
29
|
+
if (text.length <= max) return [text];
|
|
30
|
+
const chunks = [];
|
|
31
|
+
let i = 0;
|
|
32
|
+
while (i < text.length) {
|
|
33
|
+
let end = Math.min(i + max, text.length);
|
|
34
|
+
if (end < text.length) {
|
|
35
|
+
const nl = text.lastIndexOf("\n", end);
|
|
36
|
+
if (nl > i) end = nl + 1;
|
|
37
|
+
}
|
|
38
|
+
chunks.push(text.slice(i, end));
|
|
39
|
+
i = end;
|
|
40
|
+
}
|
|
41
|
+
return chunks;
|
|
42
|
+
}
|
|
43
|
+
const DEFAULT_RETRIES = 3;
|
|
44
|
+
const DEFAULT_BACKOFF_MS = 1e3;
|
|
45
|
+
async function withRetry(fn, opts) {
|
|
46
|
+
const retries = opts?.retries ?? DEFAULT_RETRIES;
|
|
47
|
+
const backoff = opts?.backoffMs ?? DEFAULT_BACKOFF_MS;
|
|
48
|
+
let lastErr = null;
|
|
49
|
+
for (let i = 0; i <= retries; i++) try {
|
|
50
|
+
return await fn();
|
|
51
|
+
} catch (e) {
|
|
52
|
+
lastErr = e;
|
|
53
|
+
opts?.onRetry?.(i + 1, lastErr);
|
|
54
|
+
if (i < retries) await new Promise((r) => setTimeout(r, backoff * Math.pow(2, i)));
|
|
55
|
+
}
|
|
56
|
+
throw lastErr;
|
|
57
|
+
}
|
|
58
|
+
/** Enrich message text from voice note (transcribe if audioPath/audioBuffer provided). */
|
|
59
|
+
async function enrichVoiceNote(msg) {
|
|
60
|
+
if (!msg.audioPath && !msg.audioBuffer) return msg.text;
|
|
61
|
+
if (msg.text && msg.text !== "[voice note]") return msg.text;
|
|
62
|
+
try {
|
|
63
|
+
const { transcribeVoiceNote } = await Promise.resolve().then(() => require("./voice-transcription-Bz2y0nPK.js"));
|
|
64
|
+
const text = await transcribeVoiceNote(msg.audioBuffer ?? msg.audioPath);
|
|
65
|
+
return text || msg.text;
|
|
66
|
+
} catch (e) {
|
|
67
|
+
return `[Voice note — transcription failed: ${e.message}]`;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
//#endregion
|
|
72
|
+
Object.defineProperty(exports, 'CHANNEL_MAX_LENGTH', {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return CHANNEL_MAX_LENGTH;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
Object.defineProperty(exports, 'chunkForChannel', {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
get: function () {
|
|
81
|
+
return chunkForChannel;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
Object.defineProperty(exports, 'enrichVoiceNote', {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function () {
|
|
87
|
+
return enrichVoiceNote;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
Object.defineProperty(exports, 'withRetry', {
|
|
91
|
+
enumerable: true,
|
|
92
|
+
get: function () {
|
|
93
|
+
return withRetry;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/channels/delivery.ts
|
|
3
|
+
/**
|
|
4
|
+
|
|
5
|
+
* src/channels/delivery.ts
|
|
6
|
+
|
|
7
|
+
* Delivery pipeline: queue retry, per-channel chunking, media handling.
|
|
8
|
+
|
|
9
|
+
*/
|
|
10
|
+
const CHANNEL_MAX_LENGTH = {
|
|
11
|
+
telegram: 4096,
|
|
12
|
+
discord: 2e3,
|
|
13
|
+
whatsapp: 4096,
|
|
14
|
+
"whatsapp-baileys": 4096,
|
|
15
|
+
slack: 4e4,
|
|
16
|
+
googlechat: 4096,
|
|
17
|
+
msteams: 28e3,
|
|
18
|
+
matrix: 32768,
|
|
19
|
+
irc: 512,
|
|
20
|
+
mattermost: 16383,
|
|
21
|
+
signal: 4096,
|
|
22
|
+
line: 2e3,
|
|
23
|
+
twitch: 490,
|
|
24
|
+
viber: 7e3,
|
|
25
|
+
default: 4e3
|
|
26
|
+
};
|
|
27
|
+
function chunkForChannel(text, channelId) {
|
|
28
|
+
const max = CHANNEL_MAX_LENGTH[channelId] ?? CHANNEL_MAX_LENGTH.default;
|
|
29
|
+
if (text.length <= max) return [text];
|
|
30
|
+
const chunks = [];
|
|
31
|
+
let i = 0;
|
|
32
|
+
while (i < text.length) {
|
|
33
|
+
let end = Math.min(i + max, text.length);
|
|
34
|
+
if (end < text.length) {
|
|
35
|
+
const nl = text.lastIndexOf("\n", end);
|
|
36
|
+
if (nl > i) end = nl + 1;
|
|
37
|
+
}
|
|
38
|
+
chunks.push(text.slice(i, end));
|
|
39
|
+
i = end;
|
|
40
|
+
}
|
|
41
|
+
return chunks;
|
|
42
|
+
}
|
|
43
|
+
const DEFAULT_RETRIES = 3;
|
|
44
|
+
const DEFAULT_BACKOFF_MS = 1e3;
|
|
45
|
+
async function withRetry(fn, opts) {
|
|
46
|
+
const retries = opts?.retries ?? DEFAULT_RETRIES;
|
|
47
|
+
const backoff = opts?.backoffMs ?? DEFAULT_BACKOFF_MS;
|
|
48
|
+
let lastErr = null;
|
|
49
|
+
for (let i = 0; i <= retries; i++) try {
|
|
50
|
+
return await fn();
|
|
51
|
+
} catch (e) {
|
|
52
|
+
lastErr = e;
|
|
53
|
+
opts?.onRetry?.(i + 1, lastErr);
|
|
54
|
+
if (i < retries) await new Promise((r) => setTimeout(r, backoff * Math.pow(2, i)));
|
|
55
|
+
}
|
|
56
|
+
throw lastErr;
|
|
57
|
+
}
|
|
58
|
+
/** Enrich message text from voice note (transcribe if audioPath/audioBuffer provided). */
|
|
59
|
+
async function enrichVoiceNote(msg) {
|
|
60
|
+
if (!msg.audioPath && !msg.audioBuffer) return msg.text;
|
|
61
|
+
if (msg.text && msg.text !== "[voice note]") return msg.text;
|
|
62
|
+
try {
|
|
63
|
+
const { transcribeVoiceNote } = await Promise.resolve().then(() => require("./voice-transcription-YqndiLA7.js"));
|
|
64
|
+
const text = await transcribeVoiceNote(msg.audioBuffer ?? msg.audioPath);
|
|
65
|
+
return text || msg.text;
|
|
66
|
+
} catch (e) {
|
|
67
|
+
return `[Voice note — transcription failed: ${e.message}]`;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
//#endregion
|
|
72
|
+
Object.defineProperty(exports, 'CHANNEL_MAX_LENGTH', {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return CHANNEL_MAX_LENGTH;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
Object.defineProperty(exports, 'chunkForChannel', {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
get: function () {
|
|
81
|
+
return chunkForChannel;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
Object.defineProperty(exports, 'enrichVoiceNote', {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function () {
|
|
87
|
+
return enrichVoiceNote;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
Object.defineProperty(exports, 'withRetry', {
|
|
91
|
+
enumerable: true,
|
|
92
|
+
get: function () {
|
|
93
|
+
return withRetry;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
|
|
3
|
+
//#region src/infra/destructive-gate.ts
|
|
4
|
+
/**
|
|
5
|
+
|
|
6
|
+
* Escape invisible Unicode format characters to visible \u{...} escapes.
|
|
7
|
+
|
|
8
|
+
* Prevents zero-width characters from spoofing displayed commands in approval prompts.
|
|
9
|
+
|
|
10
|
+
*/
|
|
11
|
+
function sanitizeApprovalText(text) {
|
|
12
|
+
return text.replace(INVISIBLE_UNICODE_RE, (ch) => `\\u{${ch.codePointAt(0).toString(16)}}`);
|
|
13
|
+
}
|
|
14
|
+
function isDangerousShellCommand(cmd) {
|
|
15
|
+
const c = (cmd || "").trim();
|
|
16
|
+
for (const re of DANGEROUS_SHELL_PATTERNS) if (re.test(c)) return true;
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
function buildPendingMsg(toolName, cmd) {
|
|
20
|
+
const safeTool = sanitizeApprovalText(toolName);
|
|
21
|
+
const cmdInfo = cmd ? ` Command: \`${sanitizeApprovalText(cmd)}\`` : "";
|
|
22
|
+
return `This action requires confirmation. Tool: \`${safeTool}\`.${cmdInfo} Reply "confirm" to proceed.`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
|
|
26
|
+
* Wrap tools so destructive ones are gated. When sessionId set, stores pending for confirm flow.
|
|
27
|
+
|
|
28
|
+
*/
|
|
29
|
+
function applyDestructiveGate(tools, opts) {
|
|
30
|
+
const { elevated, source, sessionId } = opts;
|
|
31
|
+
const fromChannel = source && CHANNEL_SOURCES.has(source);
|
|
32
|
+
if (!fromChannel || elevated) return tools;
|
|
33
|
+
return tools.map((t) => {
|
|
34
|
+
if (DESTRUCTIVE_TOOLS.includes(t.name)) {
|
|
35
|
+
const orig = t.handler;
|
|
36
|
+
return {
|
|
37
|
+
...t,
|
|
38
|
+
handler: async (input) => {
|
|
39
|
+
if (sessionId) {
|
|
40
|
+
const { setPending } = await Promise.resolve().then(() => require("./pending-approval-DaXi7otO.js"));
|
|
41
|
+
setPending(sessionId, {
|
|
42
|
+
toolName: t.name,
|
|
43
|
+
input,
|
|
44
|
+
execute: () => orig(input)
|
|
45
|
+
});
|
|
46
|
+
return buildPendingMsg(t.name);
|
|
47
|
+
}
|
|
48
|
+
return BLOCKED_MSG;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (t.name === "run_shell") {
|
|
53
|
+
const orig = t.handler;
|
|
54
|
+
return {
|
|
55
|
+
...t,
|
|
56
|
+
handler: async (input) => {
|
|
57
|
+
const cmd = input.command || "";
|
|
58
|
+
if (isDangerousShellCommand(cmd)) {
|
|
59
|
+
if (sessionId) {
|
|
60
|
+
const { setPending } = await Promise.resolve().then(() => require("./pending-approval-DaXi7otO.js"));
|
|
61
|
+
setPending(sessionId, {
|
|
62
|
+
toolName: "run_shell",
|
|
63
|
+
input,
|
|
64
|
+
execute: () => orig(input)
|
|
65
|
+
});
|
|
66
|
+
return buildPendingMsg("run_shell", cmd);
|
|
67
|
+
}
|
|
68
|
+
return BLOCKED_MSG;
|
|
69
|
+
}
|
|
70
|
+
return orig(input);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return t;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
var INVISIBLE_UNICODE_RE, DESTRUCTIVE_TOOLS, DANGEROUS_SHELL_PATTERNS, CHANNEL_SOURCES, BLOCKED_MSG;
|
|
78
|
+
var init_destructive_gate = require_chunk.__esm({ "src/infra/destructive-gate.ts"() {
|
|
79
|
+
INVISIBLE_UNICODE_RE = /[\u00AD\u034F\u061C\u115F\u1160\u17B4\u17B5\u180B-\u180F\u200B-\u200F\u202A-\u202E\u2060-\u206F\u3164\uFEFF\uFFA0]/gu;
|
|
80
|
+
DESTRUCTIVE_TOOLS = ["delete_file", "kill_process"];
|
|
81
|
+
DANGEROUS_SHELL_PATTERNS = [
|
|
82
|
+
/\brm\s+-[rf]\b|\brm\s+--recursive|\brm\s+-rf\b/,
|
|
83
|
+
/\bmkfs\.|format\s+/i,
|
|
84
|
+
/\bdd\s+if=/,
|
|
85
|
+
/\b>\/dev\/sd[a-z]/,
|
|
86
|
+
/\bshutdown\s+-/,
|
|
87
|
+
/\breboot\b/i,
|
|
88
|
+
/\b:\(\)\s*\{\s*:\s*\|\s*:\s*&\s*\}/,
|
|
89
|
+
/\bcurl\s+.*\s*\|\s*sh\b/,
|
|
90
|
+
/\bwget\s+.*\s*\|\s*(bash|sh)\b/
|
|
91
|
+
];
|
|
92
|
+
CHANNEL_SOURCES = new Set([
|
|
93
|
+
"telegram",
|
|
94
|
+
"discord",
|
|
95
|
+
"whatsapp",
|
|
96
|
+
"slack",
|
|
97
|
+
"signal",
|
|
98
|
+
"matrix",
|
|
99
|
+
"line",
|
|
100
|
+
"nostr",
|
|
101
|
+
"feishu",
|
|
102
|
+
"msteams",
|
|
103
|
+
"teams",
|
|
104
|
+
"instagram",
|
|
105
|
+
"messenger",
|
|
106
|
+
"twitter",
|
|
107
|
+
"viber",
|
|
108
|
+
"zalo",
|
|
109
|
+
"webhook:inbound"
|
|
110
|
+
]);
|
|
111
|
+
BLOCKED_MSG = "Blocked: destructive action requires elevated session. Use \"elevate\" or run from CLI with full access.";
|
|
112
|
+
} });
|
|
113
|
+
|
|
114
|
+
//#endregion
|
|
115
|
+
init_destructive_gate();
|
|
116
|
+
exports.applyDestructiveGate = applyDestructiveGate;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
|
|
3
|
+
//#region src/infra/destructive-gate.ts
|
|
4
|
+
/**
|
|
5
|
+
|
|
6
|
+
* Escape invisible Unicode format characters to visible \u{...} escapes.
|
|
7
|
+
|
|
8
|
+
* Prevents zero-width characters from spoofing displayed commands in approval prompts.
|
|
9
|
+
|
|
10
|
+
*/
|
|
11
|
+
function sanitizeApprovalText(text) {
|
|
12
|
+
return text.replace(INVISIBLE_UNICODE_RE, (ch) => `\\u{${ch.codePointAt(0).toString(16)}}`);
|
|
13
|
+
}
|
|
14
|
+
function isDangerousShellCommand(cmd) {
|
|
15
|
+
const c = (cmd || "").trim();
|
|
16
|
+
for (const re of DANGEROUS_SHELL_PATTERNS) if (re.test(c)) return true;
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
function buildPendingMsg(toolName, cmd) {
|
|
20
|
+
const safeTool = sanitizeApprovalText(toolName);
|
|
21
|
+
const cmdInfo = cmd ? ` Command: \`${sanitizeApprovalText(cmd)}\`` : "";
|
|
22
|
+
return `This action requires confirmation. Tool: \`${safeTool}\`.${cmdInfo} Reply "confirm" to proceed.`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
|
|
26
|
+
* Wrap tools so destructive ones are gated. When sessionId set, stores pending for confirm flow.
|
|
27
|
+
|
|
28
|
+
*/
|
|
29
|
+
function applyDestructiveGate(tools, opts) {
|
|
30
|
+
const { elevated, source, sessionId } = opts;
|
|
31
|
+
const fromChannel = source && CHANNEL_SOURCES.has(source);
|
|
32
|
+
if (!fromChannel || elevated) return tools;
|
|
33
|
+
return tools.map((t) => {
|
|
34
|
+
if (DESTRUCTIVE_TOOLS.includes(t.name)) {
|
|
35
|
+
const orig = t.handler;
|
|
36
|
+
return {
|
|
37
|
+
...t,
|
|
38
|
+
handler: async (input) => {
|
|
39
|
+
if (sessionId) {
|
|
40
|
+
const { setPending } = await Promise.resolve().then(() => require("./pending-approval-CzMNCTfZ.js"));
|
|
41
|
+
setPending(sessionId, {
|
|
42
|
+
toolName: t.name,
|
|
43
|
+
input,
|
|
44
|
+
execute: () => orig(input)
|
|
45
|
+
});
|
|
46
|
+
return buildPendingMsg(t.name);
|
|
47
|
+
}
|
|
48
|
+
return BLOCKED_MSG;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (t.name === "run_shell") {
|
|
53
|
+
const orig = t.handler;
|
|
54
|
+
return {
|
|
55
|
+
...t,
|
|
56
|
+
handler: async (input) => {
|
|
57
|
+
const cmd = input.command || "";
|
|
58
|
+
if (isDangerousShellCommand(cmd)) {
|
|
59
|
+
if (sessionId) {
|
|
60
|
+
const { setPending } = await Promise.resolve().then(() => require("./pending-approval-CzMNCTfZ.js"));
|
|
61
|
+
setPending(sessionId, {
|
|
62
|
+
toolName: "run_shell",
|
|
63
|
+
input,
|
|
64
|
+
execute: () => orig(input)
|
|
65
|
+
});
|
|
66
|
+
return buildPendingMsg("run_shell", cmd);
|
|
67
|
+
}
|
|
68
|
+
return BLOCKED_MSG;
|
|
69
|
+
}
|
|
70
|
+
return orig(input);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return t;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
var INVISIBLE_UNICODE_RE, DESTRUCTIVE_TOOLS, DANGEROUS_SHELL_PATTERNS, CHANNEL_SOURCES, BLOCKED_MSG;
|
|
78
|
+
var init_destructive_gate = require_chunk.__esm({ "src/infra/destructive-gate.ts"() {
|
|
79
|
+
INVISIBLE_UNICODE_RE = /[\u00AD\u034F\u061C\u115F\u1160\u17B4\u17B5\u180B-\u180F\u200B-\u200F\u202A-\u202E\u2060-\u206F\u3164\uFEFF\uFFA0]/gu;
|
|
80
|
+
DESTRUCTIVE_TOOLS = ["delete_file", "kill_process"];
|
|
81
|
+
DANGEROUS_SHELL_PATTERNS = [
|
|
82
|
+
/\brm\s+-[rf]\b|\brm\s+--recursive|\brm\s+-rf\b/,
|
|
83
|
+
/\bmkfs\.|format\s+/i,
|
|
84
|
+
/\bdd\s+if=/,
|
|
85
|
+
/\b>\/dev\/sd[a-z]/,
|
|
86
|
+
/\bshutdown\s+-/,
|
|
87
|
+
/\breboot\b/i,
|
|
88
|
+
/\b:\(\)\s*\{\s*:\s*\|\s*:\s*&\s*\}/,
|
|
89
|
+
/\bcurl\s+.*\s*\|\s*sh\b/,
|
|
90
|
+
/\bwget\s+.*\s*\|\s*(bash|sh)\b/
|
|
91
|
+
];
|
|
92
|
+
CHANNEL_SOURCES = new Set([
|
|
93
|
+
"telegram",
|
|
94
|
+
"discord",
|
|
95
|
+
"whatsapp",
|
|
96
|
+
"slack",
|
|
97
|
+
"signal",
|
|
98
|
+
"matrix",
|
|
99
|
+
"line",
|
|
100
|
+
"nostr",
|
|
101
|
+
"feishu",
|
|
102
|
+
"msteams",
|
|
103
|
+
"teams",
|
|
104
|
+
"instagram",
|
|
105
|
+
"messenger",
|
|
106
|
+
"twitter",
|
|
107
|
+
"viber",
|
|
108
|
+
"zalo",
|
|
109
|
+
"webhook:inbound"
|
|
110
|
+
]);
|
|
111
|
+
BLOCKED_MSG = "Blocked: destructive action requires elevated session. Use \"elevate\" or run from CLI with full access.";
|
|
112
|
+
} });
|
|
113
|
+
|
|
114
|
+
//#endregion
|
|
115
|
+
init_destructive_gate();
|
|
116
|
+
exports.applyDestructiveGate = applyDestructiveGate;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
|
|
3
|
+
//#region src/infra/destructive-gate.ts
|
|
4
|
+
/**
|
|
5
|
+
|
|
6
|
+
* Escape invisible Unicode format characters to visible \u{...} escapes.
|
|
7
|
+
|
|
8
|
+
* Prevents zero-width characters from spoofing displayed commands in approval prompts.
|
|
9
|
+
|
|
10
|
+
*/
|
|
11
|
+
function sanitizeApprovalText(text) {
|
|
12
|
+
return text.replace(INVISIBLE_UNICODE_RE, (ch) => `\\u{${ch.codePointAt(0).toString(16)}}`);
|
|
13
|
+
}
|
|
14
|
+
function isDangerousShellCommand(cmd) {
|
|
15
|
+
const c = (cmd || "").trim();
|
|
16
|
+
for (const re of DANGEROUS_SHELL_PATTERNS) if (re.test(c)) return true;
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
function buildPendingMsg(toolName, cmd) {
|
|
20
|
+
const safeTool = sanitizeApprovalText(toolName);
|
|
21
|
+
const cmdInfo = cmd ? ` Command: \`${sanitizeApprovalText(cmd)}\`` : "";
|
|
22
|
+
return `This action requires confirmation. Tool: \`${safeTool}\`.${cmdInfo} Reply "confirm" to proceed.`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
|
|
26
|
+
* Wrap tools so destructive ones are gated. When sessionId set, stores pending for confirm flow.
|
|
27
|
+
|
|
28
|
+
*/
|
|
29
|
+
function applyDestructiveGate(tools, opts) {
|
|
30
|
+
const { elevated, source, sessionId } = opts;
|
|
31
|
+
const fromChannel = source && CHANNEL_SOURCES.has(source);
|
|
32
|
+
if (!fromChannel || elevated) return tools;
|
|
33
|
+
return tools.map((t) => {
|
|
34
|
+
if (DESTRUCTIVE_TOOLS.includes(t.name)) {
|
|
35
|
+
const orig = t.handler;
|
|
36
|
+
return {
|
|
37
|
+
...t,
|
|
38
|
+
handler: async (input) => {
|
|
39
|
+
if (sessionId) {
|
|
40
|
+
const { setPending } = await Promise.resolve().then(() => require("./pending-approval-KcyeiifE.js"));
|
|
41
|
+
setPending(sessionId, {
|
|
42
|
+
toolName: t.name,
|
|
43
|
+
input,
|
|
44
|
+
execute: () => orig(input)
|
|
45
|
+
});
|
|
46
|
+
return buildPendingMsg(t.name);
|
|
47
|
+
}
|
|
48
|
+
return BLOCKED_MSG;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (t.name === "run_shell") {
|
|
53
|
+
const orig = t.handler;
|
|
54
|
+
return {
|
|
55
|
+
...t,
|
|
56
|
+
handler: async (input) => {
|
|
57
|
+
const cmd = input.command || "";
|
|
58
|
+
if (isDangerousShellCommand(cmd)) {
|
|
59
|
+
if (sessionId) {
|
|
60
|
+
const { setPending } = await Promise.resolve().then(() => require("./pending-approval-KcyeiifE.js"));
|
|
61
|
+
setPending(sessionId, {
|
|
62
|
+
toolName: "run_shell",
|
|
63
|
+
input,
|
|
64
|
+
execute: () => orig(input)
|
|
65
|
+
});
|
|
66
|
+
return buildPendingMsg("run_shell", cmd);
|
|
67
|
+
}
|
|
68
|
+
return BLOCKED_MSG;
|
|
69
|
+
}
|
|
70
|
+
return orig(input);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return t;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
var INVISIBLE_UNICODE_RE, DESTRUCTIVE_TOOLS, DANGEROUS_SHELL_PATTERNS, CHANNEL_SOURCES, BLOCKED_MSG;
|
|
78
|
+
var init_destructive_gate = require_chunk.__esm({ "src/infra/destructive-gate.ts"() {
|
|
79
|
+
INVISIBLE_UNICODE_RE = /[\u00AD\u034F\u061C\u115F\u1160\u17B4\u17B5\u180B-\u180F\u200B-\u200F\u202A-\u202E\u2060-\u206F\u3164\uFEFF\uFFA0]/gu;
|
|
80
|
+
DESTRUCTIVE_TOOLS = ["delete_file", "kill_process"];
|
|
81
|
+
DANGEROUS_SHELL_PATTERNS = [
|
|
82
|
+
/\brm\s+-[rf]\b|\brm\s+--recursive|\brm\s+-rf\b/,
|
|
83
|
+
/\bmkfs\.|format\s+/i,
|
|
84
|
+
/\bdd\s+if=/,
|
|
85
|
+
/\b>\/dev\/sd[a-z]/,
|
|
86
|
+
/\bshutdown\s+-/,
|
|
87
|
+
/\breboot\b/i,
|
|
88
|
+
/\b:\(\)\s*\{\s*:\s*\|\s*:\s*&\s*\}/,
|
|
89
|
+
/\bcurl\s+.*\s*\|\s*sh\b/,
|
|
90
|
+
/\bwget\s+.*\s*\|\s*(bash|sh)\b/
|
|
91
|
+
];
|
|
92
|
+
CHANNEL_SOURCES = new Set([
|
|
93
|
+
"telegram",
|
|
94
|
+
"discord",
|
|
95
|
+
"whatsapp",
|
|
96
|
+
"slack",
|
|
97
|
+
"signal",
|
|
98
|
+
"matrix",
|
|
99
|
+
"line",
|
|
100
|
+
"nostr",
|
|
101
|
+
"feishu",
|
|
102
|
+
"msteams",
|
|
103
|
+
"teams",
|
|
104
|
+
"instagram",
|
|
105
|
+
"messenger",
|
|
106
|
+
"twitter",
|
|
107
|
+
"viber",
|
|
108
|
+
"zalo",
|
|
109
|
+
"webhook:inbound"
|
|
110
|
+
]);
|
|
111
|
+
BLOCKED_MSG = "Blocked: destructive action requires elevated session. Use \"elevate\" or run from CLI with full access.";
|
|
112
|
+
} });
|
|
113
|
+
|
|
114
|
+
//#endregion
|
|
115
|
+
init_destructive_gate();
|
|
116
|
+
exports.applyDestructiveGate = applyDestructiveGate;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
|
|
3
|
+
//#region src/infra/destructive-gate.ts
|
|
4
|
+
/**
|
|
5
|
+
|
|
6
|
+
* Escape invisible Unicode format characters to visible \u{...} escapes.
|
|
7
|
+
|
|
8
|
+
* Prevents zero-width characters from spoofing displayed commands in approval prompts.
|
|
9
|
+
|
|
10
|
+
*/
|
|
11
|
+
function sanitizeApprovalText(text) {
|
|
12
|
+
return text.replace(INVISIBLE_UNICODE_RE, (ch) => `\\u{${ch.codePointAt(0).toString(16)}}`);
|
|
13
|
+
}
|
|
14
|
+
function isDangerousShellCommand(cmd) {
|
|
15
|
+
const c = (cmd || "").trim();
|
|
16
|
+
for (const re of DANGEROUS_SHELL_PATTERNS) if (re.test(c)) return true;
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
function buildPendingMsg(toolName, cmd) {
|
|
20
|
+
const safeTool = sanitizeApprovalText(toolName);
|
|
21
|
+
const cmdInfo = cmd ? ` Command: \`${sanitizeApprovalText(cmd)}\`` : "";
|
|
22
|
+
return `This action requires confirmation. Tool: \`${safeTool}\`.${cmdInfo} Reply "confirm" to proceed.`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
|
|
26
|
+
* Wrap tools so destructive ones are gated. When sessionId set, stores pending for confirm flow.
|
|
27
|
+
|
|
28
|
+
*/
|
|
29
|
+
function applyDestructiveGate(tools, opts) {
|
|
30
|
+
const { elevated, source, sessionId } = opts;
|
|
31
|
+
const fromChannel = source && CHANNEL_SOURCES.has(source);
|
|
32
|
+
if (!fromChannel || elevated) return tools;
|
|
33
|
+
return tools.map((t) => {
|
|
34
|
+
if (DESTRUCTIVE_TOOLS.includes(t.name)) {
|
|
35
|
+
const orig = t.handler;
|
|
36
|
+
return {
|
|
37
|
+
...t,
|
|
38
|
+
handler: async (input) => {
|
|
39
|
+
if (sessionId) {
|
|
40
|
+
const { setPending } = await Promise.resolve().then(() => require("./pending-approval-CJPyt8U5.js"));
|
|
41
|
+
setPending(sessionId, {
|
|
42
|
+
toolName: t.name,
|
|
43
|
+
input,
|
|
44
|
+
execute: () => orig(input)
|
|
45
|
+
});
|
|
46
|
+
return buildPendingMsg(t.name);
|
|
47
|
+
}
|
|
48
|
+
return BLOCKED_MSG;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (t.name === "run_shell") {
|
|
53
|
+
const orig = t.handler;
|
|
54
|
+
return {
|
|
55
|
+
...t,
|
|
56
|
+
handler: async (input) => {
|
|
57
|
+
const cmd = input.command || "";
|
|
58
|
+
if (isDangerousShellCommand(cmd)) {
|
|
59
|
+
if (sessionId) {
|
|
60
|
+
const { setPending } = await Promise.resolve().then(() => require("./pending-approval-CJPyt8U5.js"));
|
|
61
|
+
setPending(sessionId, {
|
|
62
|
+
toolName: "run_shell",
|
|
63
|
+
input,
|
|
64
|
+
execute: () => orig(input)
|
|
65
|
+
});
|
|
66
|
+
return buildPendingMsg("run_shell", cmd);
|
|
67
|
+
}
|
|
68
|
+
return BLOCKED_MSG;
|
|
69
|
+
}
|
|
70
|
+
return orig(input);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return t;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
var INVISIBLE_UNICODE_RE, DESTRUCTIVE_TOOLS, DANGEROUS_SHELL_PATTERNS, CHANNEL_SOURCES, BLOCKED_MSG;
|
|
78
|
+
var init_destructive_gate = require_chunk.__esm({ "src/infra/destructive-gate.ts"() {
|
|
79
|
+
INVISIBLE_UNICODE_RE = /[\u00AD\u034F\u061C\u115F\u1160\u17B4\u17B5\u180B-\u180F\u200B-\u200F\u202A-\u202E\u2060-\u206F\u3164\uFEFF\uFFA0]/gu;
|
|
80
|
+
DESTRUCTIVE_TOOLS = ["delete_file", "kill_process"];
|
|
81
|
+
DANGEROUS_SHELL_PATTERNS = [
|
|
82
|
+
/\brm\s+-[rf]\b|\brm\s+--recursive|\brm\s+-rf\b/,
|
|
83
|
+
/\bmkfs\.|format\s+/i,
|
|
84
|
+
/\bdd\s+if=/,
|
|
85
|
+
/\b>\/dev\/sd[a-z]/,
|
|
86
|
+
/\bshutdown\s+-/,
|
|
87
|
+
/\breboot\b/i,
|
|
88
|
+
/\b:\(\)\s*\{\s*:\s*\|\s*:\s*&\s*\}/,
|
|
89
|
+
/\bcurl\s+.*\s*\|\s*sh\b/,
|
|
90
|
+
/\bwget\s+.*\s*\|\s*(bash|sh)\b/
|
|
91
|
+
];
|
|
92
|
+
CHANNEL_SOURCES = new Set([
|
|
93
|
+
"telegram",
|
|
94
|
+
"discord",
|
|
95
|
+
"whatsapp",
|
|
96
|
+
"slack",
|
|
97
|
+
"signal",
|
|
98
|
+
"matrix",
|
|
99
|
+
"line",
|
|
100
|
+
"nostr",
|
|
101
|
+
"feishu",
|
|
102
|
+
"msteams",
|
|
103
|
+
"teams",
|
|
104
|
+
"instagram",
|
|
105
|
+
"messenger",
|
|
106
|
+
"twitter",
|
|
107
|
+
"viber",
|
|
108
|
+
"zalo",
|
|
109
|
+
"webhook:inbound"
|
|
110
|
+
]);
|
|
111
|
+
BLOCKED_MSG = "Blocked: destructive action requires elevated session. Use \"elevate\" or run from CLI with full access.";
|
|
112
|
+
} });
|
|
113
|
+
|
|
114
|
+
//#endregion
|
|
115
|
+
init_destructive_gate();
|
|
116
|
+
exports.applyDestructiveGate = applyDestructiveGate;
|