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.
Files changed (391) hide show
  1. package/README.md +1 -0
  2. package/dist/a2ui-protocol-CibzbTxL.js +75 -0
  3. package/dist/a2ui-protocol-Dtb8zlog.js +75 -0
  4. package/dist/a2ui-protocol-ORP2Etw0.js +75 -0
  5. package/dist/a2ui-protocol-whRZHdBk.js +75 -0
  6. package/dist/abort-controller-B55O1IgK.js +47995 -0
  7. package/dist/agents-routing-Ai2BQVpU.js +7 -0
  8. package/dist/agents-routing-B0RBl1B8.js +424 -0
  9. package/dist/agents-routing-BSUaOpce.js +7 -0
  10. package/dist/agents-routing-C4PVN8G6.js +7 -0
  11. package/dist/agents-routing-Dcr29-JV.js +424 -0
  12. package/dist/agents-routing-EwzORQQv.js +424 -0
  13. package/dist/agents-routing-Fd-uQ4R_.js +7 -0
  14. package/dist/agents-routing-eLjVYBAk.js +424 -0
  15. package/dist/api-key-validation-BANgbsfO.js +66 -0
  16. package/dist/api-key-validation-Bnz-0MMK.js +66 -0
  17. package/dist/api-key-validation-D_fMCaO5.js +66 -0
  18. package/dist/api-key-validation-Db7rG3JU.js +66 -0
  19. package/dist/api-keys-guide-B6AJ1V5D.js +149 -0
  20. package/dist/api-keys-guide-C75JQOdH.js +149 -0
  21. package/dist/api-keys-guide-CFJPrgsL.js +149 -0
  22. package/dist/api-keys-guide-DDz08BJQ.js +149 -0
  23. package/dist/audit-BLMB8qp7.js +445 -0
  24. package/dist/audit-Cb2TvqYZ.js +445 -0
  25. package/dist/audit-D7koAKvj.js +445 -0
  26. package/dist/audit-xP_175jB.js +445 -0
  27. package/dist/backup-7l3iovkX.js +86 -0
  28. package/dist/backup-BKLTHh62.js +86 -0
  29. package/dist/backup-CspxXk78.js +86 -0
  30. package/dist/backup-D8dFYDXV.js +86 -0
  31. package/dist/banner-CZ2BfvQq.js +143 -0
  32. package/dist/banner-CjTRWmks.js +7 -0
  33. package/dist/banner-Dpygks0H.js +143 -0
  34. package/dist/banner-ZX1WLr44.js +7 -0
  35. package/dist/bounty-tools-Cq-oC9gk.js +211 -0
  36. package/dist/bounty-tools-DZ-WtRdE.js +211 -0
  37. package/dist/bounty-tools-DhpmjF5Y.js +211 -0
  38. package/dist/bounty-tools-NGuBWI55.js +211 -0
  39. package/dist/browser-tools-5Fl1hP_2.js +5 -0
  40. package/dist/browser-tools-Ay-wU_a4.js +5 -0
  41. package/dist/browser-tools-BMgBB2fK.js +179 -0
  42. package/dist/browser-tools-kcViDwk5.js +179 -0
  43. package/dist/chat-BUa1oGqj.js +528 -0
  44. package/dist/chat-CiuT-GTs.js +528 -0
  45. package/dist/chat-DfI8uOzF.js +528 -0
  46. package/dist/chat-Dz5rmUSs.js +528 -0
  47. package/dist/chat-RTmX1F16.js +528 -0
  48. package/dist/claw-tasks-Cio1Q7eA.js +80 -0
  49. package/dist/claw-tasks-DzxNWVcz.js +80 -0
  50. package/dist/claw-tasks-L7vQSGlt.js +80 -0
  51. package/dist/claw-tasks-dndWneZW.js +80 -0
  52. package/dist/config-B-W-Mz4X.js +7 -0
  53. package/dist/config-BAwkTUJC.js +261 -0
  54. package/dist/config-CYPw2v4l.js +261 -0
  55. package/dist/config-DN9fdLL3.js +261 -0
  56. package/dist/config-FejpHHTz.js +261 -0
  57. package/dist/config-Tq_GJHf7.js +7 -0
  58. package/dist/config-n4qy5jIy.js +7 -0
  59. package/dist/config-qJUYRMzx.js +7 -0
  60. package/dist/connector-CwT7KZm2.js +309 -0
  61. package/dist/connector-DX4k-lGd.js +442 -0
  62. package/dist/cost-tracker-C2q5zKic.js +103 -0
  63. package/dist/cost-tracker-CsRQAOEr.js +103 -0
  64. package/dist/cost-tracker-DAXWN5YT.js +103 -0
  65. package/dist/cost-tracker-bySvehH6.js +103 -0
  66. package/dist/credentials-store-BAW87r6f.js +7 -0
  67. package/dist/credentials-store-BHtk7_H_.js +7 -0
  68. package/dist/credentials-store-CESgFvFU.js +89 -0
  69. package/dist/credentials-store-CR4WSDGl.js +7 -0
  70. package/dist/credentials-store-CXq4kZub.js +89 -0
  71. package/dist/credentials-store-DUp8dtaS.js +89 -0
  72. package/dist/credentials-store-hiSga8qn.js +89 -0
  73. package/dist/credentials-store-kLdrmqSt.js +7 -0
  74. package/dist/cron-tasks-BFsaCKxE.js +89 -0
  75. package/dist/cron-tasks-BelA2aUW.js +89 -0
  76. package/dist/cron-tasks-D1T9fWAb.js +89 -0
  77. package/dist/cron-tasks-f_ieXSG2.js +89 -0
  78. package/dist/daemon-BTYhQvD_.js +7 -0
  79. package/dist/daemon-BoaFnmdF.js +421 -0
  80. package/dist/daemon-BrHxr4ut.js +421 -0
  81. package/dist/daemon-BzdeLgON.js +421 -0
  82. package/dist/daemon-BzqWIC4v.js +7 -0
  83. package/dist/daemon-C3OczPR1.js +7 -0
  84. package/dist/daemon-D57KIIA3.js +421 -0
  85. package/dist/daemon-D8uyH9et.js +7 -0
  86. package/dist/daemon-DBTtYx6E.js +421 -0
  87. package/dist/daemon-srcdhzUG.js +7 -0
  88. package/dist/delivery-Bt0xW6L9.js +4 -0
  89. package/dist/delivery-C2sAERN7.js +4 -0
  90. package/dist/delivery-CF2Q4hb1.js +95 -0
  91. package/dist/delivery-CfMljOwk.js +95 -0
  92. package/dist/delivery-DP0d4_A4.js +95 -0
  93. package/dist/delivery-DXYt4aMO.js +4 -0
  94. package/dist/delivery-DXxP2UL4.js +4 -0
  95. package/dist/delivery-jT2UIDlU.js +95 -0
  96. package/dist/destructive-gate-5LYh6brt.js +116 -0
  97. package/dist/destructive-gate-B_hNKtu6.js +116 -0
  98. package/dist/destructive-gate-DvxPSDMR.js +116 -0
  99. package/dist/destructive-gate-Qd2y7x1B.js +116 -0
  100. package/dist/dist-B1qvBUax.js +30541 -0
  101. package/dist/engine-BBJlKpMP.js +7 -0
  102. package/dist/engine-BNygJfCo.js +335 -0
  103. package/dist/engine-DB4MBzki.js +7 -0
  104. package/dist/engine-DPi9fhMl.js +332 -0
  105. package/dist/engine-DeaqDcaT.js +7 -0
  106. package/dist/engine-DuvXJrUP.js +335 -0
  107. package/dist/engine-HkyTC_xl.js +332 -0
  108. package/dist/engine-JysunhPR.js +7 -0
  109. package/dist/engine-MzEUw7qb.js +7 -0
  110. package/dist/engine-j9Yaqt_-.js +332 -0
  111. package/dist/env-resolve--MaE2kFF.js +167 -0
  112. package/dist/env-resolve-BYWG94tK.js +11 -0
  113. package/dist/env-resolve-Bop7KbNq.js +167 -0
  114. package/dist/env-resolve-Buos635Y.js +167 -0
  115. package/dist/env-resolve-D3dP1-Xt.js +11 -0
  116. package/dist/env-resolve-DvsbhPKl.js +11 -0
  117. package/dist/env-resolve-NNM3F6Eo.js +167 -0
  118. package/dist/env-resolve-dTjn-g8X.js +11 -0
  119. package/dist/extraction-tools-Bh5F0ENP.js +91 -0
  120. package/dist/extraction-tools-BjzXD9LW.js +5 -0
  121. package/dist/extraction-tools-D1lrDYhe.js +5 -0
  122. package/dist/extraction-tools-FBwtT2Bx.js +91 -0
  123. package/dist/fileFromPath-CodL6KXh.js +85 -0
  124. package/dist/gmail-watch-setup--eQ8raeb.js +42 -0
  125. package/dist/gmail-watch-setup-9t14gy1B.js +42 -0
  126. package/dist/gmail-watch-setup-B9fx_OLg.js +42 -0
  127. package/dist/gmail-watch-setup-DP3kDRx1.js +42 -0
  128. package/dist/heartbeat-engine-5iOlL7Dj.js +89 -0
  129. package/dist/heartbeat-engine-Bu4q18GH.js +89 -0
  130. package/dist/heartbeat-engine-CF_JjNJ4.js +89 -0
  131. package/dist/heartbeat-engine-CLADYZxE.js +89 -0
  132. package/dist/hub-CZeGrS20.js +6 -0
  133. package/dist/hub-DAkEVTEy.js +545 -0
  134. package/dist/hyperclawbot-CNVUtvYC.js +516 -0
  135. package/dist/hyperclawbot-D5ofLNgm.js +516 -0
  136. package/dist/hyperclawbot-D61zVMyQ.js +516 -0
  137. package/dist/hyperclawbot-DwScttSx.js +516 -0
  138. package/dist/hyperclawbot-v65eL2U0.js +516 -0
  139. package/dist/inference-BEvs7s3c.js +2854 -0
  140. package/dist/inference-C4b9YqXk.js +8 -0
  141. package/dist/inference-CRF6HyyH.js +2854 -0
  142. package/dist/inference-CfhTACI8.js +2854 -0
  143. package/dist/inference-DGsy36Ru.js +8 -0
  144. package/dist/inference-Da7Hw4J3.js +8 -0
  145. package/dist/inference-DhJ-SHZn.js +8 -0
  146. package/dist/inference-K7Jrnzre.js +2854 -0
  147. package/dist/isFile-CSxoSB8X.js +2274 -0
  148. package/dist/knowledge-graph-BdsJ5KEL.js +134 -0
  149. package/dist/knowledge-graph-CFRBepzr.js +134 -0
  150. package/dist/knowledge-graph-CeDeahui.js +134 -0
  151. package/dist/knowledge-graph-DoYFZnUr.js +134 -0
  152. package/dist/loader-C2qtNbtF.js +6 -0
  153. package/dist/loader-D6yjBYo4.js +410 -0
  154. package/dist/loader-DBO6yRNh.js +6 -0
  155. package/dist/loader-DUhmG3V9.js +410 -0
  156. package/dist/loader-Dl8LNycw.js +6 -0
  157. package/dist/loader-UpOYxgZv.js +6 -0
  158. package/dist/loader-hXv2mZjK.js +410 -0
  159. package/dist/loader-nDBcv3Tm.js +410 -0
  160. package/dist/logger-BD316YbA.js +86 -0
  161. package/dist/logger-BnXZkfsp.js +86 -0
  162. package/dist/logger-CmphFNmW.js +86 -0
  163. package/dist/logger-DkHzhh56.js +86 -0
  164. package/dist/manager-3-q8zuAW.js +250 -0
  165. package/dist/manager-BkMzc-EJ.js +250 -0
  166. package/dist/manager-Bq5LApdR.js +6 -0
  167. package/dist/manager-CNgdJunf.js +250 -0
  168. package/dist/manager-CozyZSDG.js +250 -0
  169. package/dist/manager-D4mDWXph.js +120 -0
  170. package/dist/manager-DuS-WQhZ.js +120 -0
  171. package/dist/manager-Dz2eKYqo.js +116 -0
  172. package/dist/manager-R0TlRMZy.js +120 -0
  173. package/dist/manager-aJfY7rt6.js +120 -0
  174. package/dist/mcp-BH7HtOQ8.js +142 -0
  175. package/dist/mcp-CAJSA_ee.js +142 -0
  176. package/dist/mcp-CD-iIQa2.js +142 -0
  177. package/dist/mcp-DGo37Ifb.js +142 -0
  178. package/dist/mcp-loader-Ct1NQKnX.js +93 -0
  179. package/dist/mcp-loader-D1T6UX73.js +93 -0
  180. package/dist/mcp-loader-DJk6MEof.js +93 -0
  181. package/dist/mcp-loader-DdXvU63s.js +93 -0
  182. package/dist/mcp-loader-gMliiJ7R.js +93 -0
  183. package/dist/memory-CyonlkTy.js +6 -0
  184. package/dist/memory-DPSWQBc0.js +276 -0
  185. package/dist/memory-auto-B0QOqaUD.js +306 -0
  186. package/dist/memory-auto-BSxYJugl.js +5 -0
  187. package/dist/memory-auto-CcFRxMj-.js +306 -0
  188. package/dist/memory-auto-CifT5aj_.js +5 -0
  189. package/dist/memory-auto-Cp2Jwx3Y.js +306 -0
  190. package/dist/memory-auto-DjK_D8CA.js +306 -0
  191. package/dist/memory-auto-N57dp4Do.js +5 -0
  192. package/dist/memory-auto-n0kOcU7F.js +5 -0
  193. package/dist/memory-integration-D8shLJwp.js +91 -0
  194. package/dist/memory-integration-DLmzJ62L.js +91 -0
  195. package/dist/memory-integration-DMXDbMIL.js +91 -0
  196. package/dist/memory-integration-Dgr-mjue.js +91 -0
  197. package/dist/moltbook-CIeOshK6.js +81 -0
  198. package/dist/moltbook-CX5XWn06.js +81 -0
  199. package/dist/moltbook-DUfiE4NY.js +81 -0
  200. package/dist/moltbook-YEiNI8Cm.js +81 -0
  201. package/dist/multi-agent-tools-jzfvT4zP.js +87 -0
  202. package/dist/multimodal-zZdwqISl.js +77 -0
  203. package/dist/node-BYrxELx2.js +251 -0
  204. package/dist/node-CLWgPlAk.js +251 -0
  205. package/dist/node-Czz8Y85D.js +251 -0
  206. package/dist/node-Du2H2Ddi.js +226 -0
  207. package/dist/node-domexception-v89b0Nwz.js +21 -0
  208. package/dist/node-pending-queue-DUXCbYkp.js +32 -0
  209. package/dist/node-pending-queue-DZp7cdfo.js +32 -0
  210. package/dist/node-pending-queue-iYpoWqxe.js +32 -0
  211. package/dist/nodes-registry-BTy7Sc7D.js +52 -0
  212. package/dist/nodes-registry-BYjmmJBU.js +52 -0
  213. package/dist/nodes-registry-C8GeEGq0.js +52 -0
  214. package/dist/nodes-registry-Du6Klz0l.js +52 -0
  215. package/dist/oauth-flow-BA0yMrHx.js +148 -0
  216. package/dist/oauth-flow-C4QSMsbl.js +148 -0
  217. package/dist/oauth-flow-CIuDBDsp.js +148 -0
  218. package/dist/oauth-flow-CniM4jlJ.js +148 -0
  219. package/dist/oauth-provider-BA4GVFKg.js +111 -0
  220. package/dist/oauth-provider-Bnul5A_Z.js +111 -0
  221. package/dist/oauth-provider-DqPXPiiC.js +111 -0
  222. package/dist/oauth-provider-MEgHjij2.js +111 -0
  223. package/dist/observability-0spm7MPz.js +89 -0
  224. package/dist/observability-BOMYgHUh.js +89 -0
  225. package/dist/observability-CDqHr-_o.js +89 -0
  226. package/dist/observability-ah2a7sh1.js +89 -0
  227. package/dist/onboard-BJ78s3NT.js +3854 -0
  228. package/dist/onboard-C55YXd_e.js +14 -0
  229. package/dist/onboard-CNnm4yYp.js +3841 -0
  230. package/dist/onboard-CXSVPnP7.js +3854 -0
  231. package/dist/onboard-CwvXXOR1.js +14 -0
  232. package/dist/onboard-CxlIsNhX.js +3854 -0
  233. package/dist/onboard-DPmufMqX.js +14 -0
  234. package/dist/onboard-F9lKA2ie.js +14 -0
  235. package/dist/onboard-UTQXzlPD.js +3854 -0
  236. package/dist/onboard-hK098kjl.js +14 -0
  237. package/dist/openai-CrdtuLxw.js +6292 -0
  238. package/dist/orchestrator-5M-6MB7r.js +6 -0
  239. package/dist/orchestrator-B3BjP1dy.js +6 -0
  240. package/dist/orchestrator-BZS62iDS.js +6 -0
  241. package/dist/orchestrator-CTMbjgH_.js +6 -0
  242. package/dist/orchestrator-Crn4fgbI.js +189 -0
  243. package/dist/orchestrator-Cs6s-QmS.js +189 -0
  244. package/dist/orchestrator-DGqwsLmO.js +189 -0
  245. package/dist/orchestrator-UUHsFKiH.js +6 -0
  246. package/dist/orchestrator-oa7HbCnF.js +189 -0
  247. package/dist/orchestrator-tUKag7pG.js +189 -0
  248. package/dist/osint-BJvOCmVk.js +283 -0
  249. package/dist/osint-CK9xVUUm.js +283 -0
  250. package/dist/osint-D6vQXCWh.js +283 -0
  251. package/dist/osint-DLYZsp1k.js +283 -0
  252. package/dist/osint-cAAdO-cx.js +283 -0
  253. package/dist/osint-chat-B0lc0Y6r.js +789 -0
  254. package/dist/osint-chat-BUhiSpf9.js +789 -0
  255. package/dist/osint-chat-C-9FVAkU.js +789 -0
  256. package/dist/osint-chat-CWET8Fno.js +789 -0
  257. package/dist/osint-chat-Cgdzg3lh.js +789 -0
  258. package/dist/pc-access-BCaF5mRs.js +858 -0
  259. package/dist/pc-access-BOcXappE.js +858 -0
  260. package/dist/pc-access-BgZNmAdB.js +8 -0
  261. package/dist/pc-access-CAoM6WN4.js +8 -0
  262. package/dist/pc-access-D2HdoziZ.js +8 -0
  263. package/dist/pc-access-D4g0fjQb.js +858 -0
  264. package/dist/pending-approval-CJPyt8U5.js +22 -0
  265. package/dist/pending-approval-CzMNCTfZ.js +22 -0
  266. package/dist/pending-approval-DaXi7otO.js +22 -0
  267. package/dist/pending-approval-KcyeiifE.js +22 -0
  268. package/dist/providers-DrZP0NeR.js +5 -0
  269. package/dist/providers-dHhpJo9j.js +1120 -0
  270. package/dist/reminders-store-B58LldEG.js +58 -0
  271. package/dist/reminders-store-C4gWckLa.js +58 -0
  272. package/dist/reminders-store-DT0o6a60.js +58 -0
  273. package/dist/renderer-B8c22rbg.js +228 -0
  274. package/dist/renderer-BS0ETL20.js +228 -0
  275. package/dist/renderer-Cg3c41A5.js +228 -0
  276. package/dist/renderer-UoPcgaAd.js +228 -0
  277. package/dist/rules-D0v5nuSE.js +106 -0
  278. package/dist/rules-DCKPgwLb.js +106 -0
  279. package/dist/rules-Zn9j4PnO.js +106 -0
  280. package/dist/rules-oAgOSPHC.js +106 -0
  281. package/dist/run-main.js +457 -131
  282. package/dist/runner-BaZ2V27T.js +1307 -0
  283. package/dist/runner-Bgl7UTbV.js +1307 -0
  284. package/dist/runner-DOKp3-v5.js +1307 -0
  285. package/dist/runner-voYdfM_f.js +1307 -0
  286. package/dist/search-tools-BBwMa8VX.js +107 -0
  287. package/dist/search-tools-CEUOO9Jf.js +107 -0
  288. package/dist/search-tools-VHP3xVyC.js +107 -0
  289. package/dist/search-tools-w_zT7-dr.js +107 -0
  290. package/dist/server-BAdJwMM9.js +4 -0
  291. package/dist/server-BD9FLc7S.js +1384 -0
  292. package/dist/server-BlqWBbS7.js +4 -0
  293. package/dist/server-BzwPvTbD.js +1447 -0
  294. package/dist/server-CBvSfG4w.js +4 -0
  295. package/dist/server-CbNBcB41.js +4 -0
  296. package/dist/server-DPTXaJJF.js +4 -0
  297. package/dist/server-Dv2zHHy-.js +1447 -0
  298. package/dist/server-MDmdWHob.js +1447 -0
  299. package/dist/server-N9LnLQCS.js +1447 -0
  300. package/dist/session-store-C6Otslf9.js +5 -0
  301. package/dist/session-store-Cmfnvuw9.js +141 -0
  302. package/dist/session-store-CuR9DgRf.js +5 -0
  303. package/dist/session-store-Cx1RMBhS.js +5 -0
  304. package/dist/session-store-DPPHkJBn.js +5 -0
  305. package/dist/session-store-DWLCWQFS.js +141 -0
  306. package/dist/session-store-qGufR_m5.js +141 -0
  307. package/dist/session-store-sUpA509O.js +141 -0
  308. package/dist/sessions-tools-9Z8TtdmP.js +5 -0
  309. package/dist/sessions-tools-BAZnoQLp.js +95 -0
  310. package/dist/sessions-tools-Bb_zF947.js +95 -0
  311. package/dist/sessions-tools-ClrKqLII.js +131 -0
  312. package/dist/sessions-tools-DFe23ZDD.js +5 -0
  313. package/dist/sessions-tools-JHSZ6Bns.js +5 -0
  314. package/dist/sessions-tools-TsRdeFb7.js +95 -0
  315. package/dist/sessions-tools-nYP3Agfs.js +5 -0
  316. package/dist/skill-loader-9jg876RH.js +160 -0
  317. package/dist/skill-loader-CM4KWQ7_.js +160 -0
  318. package/dist/skill-loader-CS3OP4Lr.js +160 -0
  319. package/dist/skill-loader-CnJDLNbY.js +7 -0
  320. package/dist/skill-loader-DRLgt5V2.js +160 -0
  321. package/dist/skill-loader-DVpEgYV2.js +7 -0
  322. package/dist/skill-loader-Df5T_UFl.js +7 -0
  323. package/dist/skill-loader-DxE-gZkT.js +7 -0
  324. package/dist/skill-runtime-8Xh5874w.js +104 -0
  325. package/dist/skill-runtime-B3aUdWKh.js +104 -0
  326. package/dist/skill-runtime-BKyhYvpW.js +5 -0
  327. package/dist/skill-runtime-BP0kZfmM.js +5 -0
  328. package/dist/skill-runtime-CLK5HTVE.js +5 -0
  329. package/dist/skill-runtime-COyc3Bci.js +104 -0
  330. package/dist/skill-runtime-CvDXX7wN.js +5 -0
  331. package/dist/skill-runtime-D4REZnhY.js +104 -0
  332. package/dist/skill-runtime-DQRi9sIf.js +5 -0
  333. package/dist/skill-runtime-DRd56NWK.js +104 -0
  334. package/dist/src-9GyYED0T.js +63 -0
  335. package/dist/src-B9L6qb-Z.js +462 -0
  336. package/dist/src-BEjIVOmq.js +63 -0
  337. package/dist/src-BY3On_zO.js +462 -0
  338. package/dist/src-BdgKAlMQ.js +20 -0
  339. package/dist/src-C52A3OwC.js +301 -0
  340. package/dist/src-C8cbfjat.js +173 -0
  341. package/dist/src-CQ2lZvdF.js +462 -0
  342. package/dist/src-Cdwn9xpG.js +462 -0
  343. package/dist/src-CyCLoqIP.js +63 -0
  344. package/dist/src-D-OND_62.js +301 -0
  345. package/dist/src-DFo8lVfV.js +300 -0
  346. package/dist/src-DJbpP4Gs.js +462 -0
  347. package/dist/src-DPfnArdr.js +300 -0
  348. package/dist/src-DTft7Qvt.js +63 -0
  349. package/dist/src-DgvFah8g.js +153 -0
  350. package/dist/src-TYvV_oFO.js +63 -0
  351. package/dist/src-lltU5gkh.js +20 -0
  352. package/dist/sub-agent-tools-CE8pVUdb.js +39 -0
  353. package/dist/sub-agent-tools-CQWNfYn_.js +39 -0
  354. package/dist/sub-agent-tools-CViiqebO.js +39 -0
  355. package/dist/sub-agent-tools-DgT4jUHC.js +39 -0
  356. package/dist/sub-agent-tools-Lbin_4S3.js +39 -0
  357. package/dist/tool-policy-1EBdJkSG.js +190 -0
  358. package/dist/tool-policy-B1bL0X-E.js +189 -0
  359. package/dist/tool-policy-NLbucl5-.js +189 -0
  360. package/dist/tool-policy-yNVTLNDY.js +189 -0
  361. package/dist/tts-elevenlabs-Bk24wQ2V.js +64 -0
  362. package/dist/tts-elevenlabs-CHrJZuNW.js +64 -0
  363. package/dist/tts-elevenlabs-DHqQsqMz.js +64 -0
  364. package/dist/tts-elevenlabs-TUKPkSV2.js +64 -0
  365. package/dist/vision-CW1YCKed.js +167 -0
  366. package/dist/vision-DPLmrwUA.js +167 -0
  367. package/dist/vision-Q4EOcBS6.js +167 -0
  368. package/dist/vision-XyAGO5La.js +167 -0
  369. package/dist/vision-tools-B5DNR28M.js +5 -0
  370. package/dist/vision-tools-CC9HSuvN.js +51 -0
  371. package/dist/vision-tools-Ca3OhtdX.js +51 -0
  372. package/dist/vision-tools-CpU2fSRv.js +51 -0
  373. package/dist/vision-tools-Ct52djW8.js +51 -0
  374. package/dist/vision-tools-DF7N2DDI.js +5 -0
  375. package/dist/vision-tools-DyP6lRA5.js +5 -0
  376. package/dist/vision-tools-RIVKEUeY.js +5 -0
  377. package/dist/voice-transcription-Bz2y0nPK.js +170 -0
  378. package/dist/voice-transcription-CVFcHpPF.js +170 -0
  379. package/dist/voice-transcription-CvQuWPYK.js +170 -0
  380. package/dist/voice-transcription-YqndiLA7.js +170 -0
  381. package/dist/website-watch-tools-B036Y8OQ.js +176 -0
  382. package/dist/website-watch-tools-B8CHie8v.js +5 -0
  383. package/dist/website-watch-tools-Brk5oIEv.js +176 -0
  384. package/dist/website-watch-tools-CJqRj_GB.js +5 -0
  385. package/dist/website-watch-tools-CSSEu3Qy.js +5 -0
  386. package/dist/website-watch-tools-D92dkYZa.js +176 -0
  387. package/dist/website-watch-tools-Du_a8lXq.js +176 -0
  388. package/dist/website-watch-tools-UdTBGgRk.js +5 -0
  389. package/package.json +5 -3
  390. package/static/web/assets/{index-Bf8pf7Wg.js → index-8bDizzaq.js} +2 -2
  391. package/static/web/index.html +1 -1
@@ -0,0 +1,120 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_paths = require('./paths-AIyBxIzm.js');
3
+ const require_paths$1 = require('./paths-DPovhojT.js');
4
+ const chalk = require_chunk.__toESM(require("chalk"));
5
+ const fs_extra = require_chunk.__toESM(require("fs-extra"));
6
+ const path = require_chunk.__toESM(require("path"));
7
+ const crypto = require_chunk.__toESM(require("crypto"));
8
+
9
+ //#region src/webhooks/manager.ts
10
+ require_paths$1.init_paths();
11
+ const getWebhooksFile = () => path.default.join(require_paths.getHyperClawDir(), "webhooks.json");
12
+ function generateSecret() {
13
+ return crypto.default.randomBytes(24).toString("hex");
14
+ }
15
+ function generateId() {
16
+ return crypto.default.randomBytes(6).toString("hex");
17
+ }
18
+ var WebhookManager = class {
19
+ webhooks = [];
20
+ async load() {
21
+ try {
22
+ this.webhooks = await fs_extra.default.readJson(getWebhooksFile());
23
+ } catch {
24
+ this.webhooks = [];
25
+ }
26
+ }
27
+ async save() {
28
+ const f = getWebhooksFile();
29
+ await fs_extra.default.ensureDir(path.default.dirname(f));
30
+ await fs_extra.default.writeJson(f, this.webhooks, { spaces: 2 });
31
+ }
32
+ async add(opts) {
33
+ await this.load();
34
+ const wh = {
35
+ id: generateId(),
36
+ name: opts.name,
37
+ secret: opts.withSecret ? generateSecret() : void 0,
38
+ format: opts.format || "json",
39
+ routeTo: opts.routeTo,
40
+ enabled: true,
41
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
42
+ hitCount: 0,
43
+ filterPath: opts.filterPath,
44
+ template: opts.template
45
+ };
46
+ this.webhooks.push(wh);
47
+ await this.save();
48
+ return wh;
49
+ }
50
+ async remove(id) {
51
+ await this.load();
52
+ this.webhooks = this.webhooks.filter((w) => w.id !== id);
53
+ await this.save();
54
+ }
55
+ async toggle(id) {
56
+ await this.load();
57
+ const wh = this.webhooks.find((w) => w.id === id);
58
+ if (wh) {
59
+ wh.enabled = !wh.enabled;
60
+ await this.save();
61
+ }
62
+ }
63
+ async recordHit(id) {
64
+ const wh = this.webhooks.find((w) => w.id === id);
65
+ if (wh) {
66
+ wh.hitCount++;
67
+ wh.lastHitAt = (/* @__PURE__ */ new Date()).toISOString();
68
+ await this.save();
69
+ }
70
+ }
71
+ verifySignature(webhook, payload, sig) {
72
+ if (!webhook.secret) return true;
73
+ const expected = crypto.default.createHmac("sha256", webhook.secret).update(payload).digest("hex");
74
+ return crypto.default.timingSafeEqual(Buffer.from(sig.replace("sha256=", ""), "hex"), Buffer.from(expected, "hex"));
75
+ }
76
+ extractMessage(webhook, rawBody) {
77
+ if (!webhook.filterPath && !webhook.template) return rawBody;
78
+ let body;
79
+ try {
80
+ body = JSON.parse(rawBody);
81
+ } catch {
82
+ body = { text: rawBody };
83
+ }
84
+ if (webhook.template) return webhook.template.replace(/\{\{([^}]+)\}\}/g, (_, key) => {
85
+ const parts = key.trim().split(".");
86
+ let val = body;
87
+ for (const p of parts) val = val?.[p];
88
+ return val !== void 0 ? String(val) : "";
89
+ });
90
+ if (webhook.filterPath) {
91
+ const parts = webhook.filterPath.split(".");
92
+ let val = body;
93
+ for (const p of parts) val = val?.[p];
94
+ return val !== void 0 ? String(val) : rawBody;
95
+ }
96
+ return rawBody;
97
+ }
98
+ showList(gatewayPort = 18789) {
99
+ console.log(chalk.default.bold.cyan("\n 🪝 WEBHOOKS\n"));
100
+ if (this.webhooks.length === 0) {
101
+ console.log(chalk.default.gray(" No webhooks configured.\n"));
102
+ console.log(chalk.default.gray(" Add with: hyperclaw webhooks add\n"));
103
+ return;
104
+ }
105
+ for (const wh of this.webhooks) {
106
+ const dot = wh.enabled ? chalk.default.green("●") : chalk.default.gray("○");
107
+ const url = chalk.default.underline.cyan(`http://localhost:${gatewayPort}/webhook/${wh.id}`);
108
+ console.log(` ${dot} ${chalk.default.white(wh.name)} ${chalk.default.gray(`[${wh.format}]`)}`);
109
+ console.log(` ${chalk.default.gray("URL:")} ${url}`);
110
+ console.log(` ${chalk.default.gray("Route:")} ${wh.routeTo.type} → ${wh.routeTo.target}`);
111
+ if (wh.secret) console.log(` ${chalk.default.gray("Secret:")} ${wh.secret.slice(0, 8)}...`);
112
+ if (wh.template) console.log(` ${chalk.default.gray("Template:")} ${wh.template.slice(0, 50)}`);
113
+ console.log(` ${chalk.default.gray(`Hits: ${wh.hitCount} Last: ${wh.lastHitAt ? new Date(wh.lastHitAt).toLocaleString() : "never"}`)}`);
114
+ console.log();
115
+ }
116
+ }
117
+ };
118
+
119
+ //#endregion
120
+ exports.WebhookManager = WebhookManager;
@@ -0,0 +1,116 @@
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 crypto = require_chunk.__toESM(require("crypto"));
6
+
7
+ //#region src/secrets/encrypt-config.ts
8
+ var encrypt_config_exports = {};
9
+ require_chunk.__export(encrypt_config_exports, {
10
+ decryptConfig: () => decryptConfig,
11
+ encryptConfig: () => encryptConfig,
12
+ isEncryptedContent: () => isEncryptedContent,
13
+ isEncryptionAvailable: () => isEncryptionAvailable
14
+ });
15
+ function getKey() {
16
+ const raw = process.env.HYPERCLAW_CONFIG_KEY;
17
+ if (!raw || raw.length !== 64 || !/^[0-9a-fA-F]+$/.test(raw)) return null;
18
+ return Buffer.from(raw, "hex");
19
+ }
20
+ function isEncryptionAvailable() {
21
+ return getKey() !== null;
22
+ }
23
+ function encryptConfig(plain) {
24
+ const key = getKey();
25
+ if (!key) throw new Error("HYPERCLAW_CONFIG_KEY not set (32-byte hex)");
26
+ const iv = crypto.default.randomBytes(IV_LEN);
27
+ const cipher = crypto.default.createCipheriv(ALGORITHM, key, iv);
28
+ const enc = Buffer.concat([cipher.update(plain, "utf8"), cipher.final()]);
29
+ const tag = cipher.getAuthTag();
30
+ return iv.toString("base64") + ":" + tag.toString("base64") + ":" + enc.toString("base64");
31
+ }
32
+ function decryptConfig(encrypted) {
33
+ const key = getKey();
34
+ if (!key) throw new Error("HYPERCLAW_CONFIG_KEY not set");
35
+ const parts = encrypted.split(":");
36
+ if (parts.length !== 3) throw new Error("Invalid encrypted config format");
37
+ const [ivB64, tagB64, encB64] = parts;
38
+ const iv = Buffer.from(ivB64, "base64");
39
+ const tag = Buffer.from(tagB64, "base64");
40
+ const enc = Buffer.from(encB64, "base64");
41
+ const decipher = crypto.default.createDecipheriv(ALGORITHM, key, iv);
42
+ decipher.setAuthTag(tag);
43
+ return decipher.update(enc) + decipher.final("utf8");
44
+ }
45
+ function isEncryptedContent(s) {
46
+ return /^[A-Za-z0-9+/=]+:[A-Za-z0-9+/=]+:[A-Za-z0-9+/=]+$/.test(s.trim()) && s.split(":").every((p) => p.length > 0);
47
+ }
48
+ var ALGORITHM, IV_LEN;
49
+ var init_encrypt_config = require_chunk.__esm({ "src/secrets/encrypt-config.ts"() {
50
+ ALGORITHM = "aes-256-gcm";
51
+ IV_LEN = 16;
52
+ } });
53
+
54
+ //#endregion
55
+ //#region src/config/manager.ts
56
+ require_paths$1.init_paths();
57
+ function tryEncrypt() {
58
+ try {
59
+ const m = (init_encrypt_config(), require_chunk.__toCommonJS(encrypt_config_exports));
60
+ if (m?.isEncryptionAvailable?.()) return {
61
+ encrypt: m.encryptConfig,
62
+ decrypt: m.decryptConfig,
63
+ available: true
64
+ };
65
+ } catch {}
66
+ return {
67
+ encrypt: (s) => s,
68
+ decrypt: (s) => s,
69
+ available: false
70
+ };
71
+ }
72
+ var ConfigManager = class {
73
+ async save(config) {
74
+ const target = require_paths.getConfigPath();
75
+ const tmp = target + ".tmp";
76
+ await fs_extra.default.ensureDir(require_paths.getHyperClawDir());
77
+ const json = JSON.stringify(config, null, 2);
78
+ const enc = tryEncrypt();
79
+ const out = enc.available ? enc.encrypt(json) : json;
80
+ await fs_extra.default.writeFile(tmp, out, "utf8");
81
+ await fs_extra.default.chmod(tmp, 384).catch(() => {});
82
+ await fs_extra.default.rename(tmp, target);
83
+ }
84
+ async load() {
85
+ const p = require_paths.getConfigPath();
86
+ if (!await fs_extra.default.pathExists(p)) return null;
87
+ const raw = await fs_extra.default.readFile(p, "utf8");
88
+ const enc = tryEncrypt();
89
+ let isEnc = false;
90
+ try {
91
+ const m = (init_encrypt_config(), require_chunk.__toCommonJS(encrypt_config_exports));
92
+ if (m?.isEncryptedContent?.(raw)) {
93
+ if (!enc.available) throw new Error("Config is encrypted. Set HYPERCLAW_CONFIG_KEY (32-byte hex) to decrypt.");
94
+ isEnc = true;
95
+ }
96
+ } catch (e) {
97
+ if (e?.message?.includes("encrypted")) throw e;
98
+ }
99
+ if (isEnc) return JSON.parse(enc.decrypt(raw));
100
+ return JSON.parse(raw);
101
+ }
102
+ async sync(_options) {
103
+ throw new Error("ConfigManager.sync() is not implemented. To back up your config, copy ~/.hyperclaw/hyperclaw.json manually.");
104
+ }
105
+ getConfigPath() {
106
+ return require_paths.getConfigPath();
107
+ }
108
+ };
109
+
110
+ //#endregion
111
+ Object.defineProperty(exports, 'ConfigManager', {
112
+ enumerable: true,
113
+ get: function () {
114
+ return ConfigManager;
115
+ }
116
+ });
@@ -0,0 +1,120 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_paths = require('./paths-AIyBxIzm.js');
3
+ const require_paths$1 = require('./paths-DPovhojT.js');
4
+ const chalk = require_chunk.__toESM(require("chalk"));
5
+ const fs_extra = require_chunk.__toESM(require("fs-extra"));
6
+ const path = require_chunk.__toESM(require("path"));
7
+ const crypto = require_chunk.__toESM(require("crypto"));
8
+
9
+ //#region src/webhooks/manager.ts
10
+ require_paths$1.init_paths();
11
+ const getWebhooksFile = () => path.default.join(require_paths.getHyperClawDir(), "webhooks.json");
12
+ function generateSecret() {
13
+ return crypto.default.randomBytes(24).toString("hex");
14
+ }
15
+ function generateId() {
16
+ return crypto.default.randomBytes(6).toString("hex");
17
+ }
18
+ var WebhookManager = class {
19
+ webhooks = [];
20
+ async load() {
21
+ try {
22
+ this.webhooks = await fs_extra.default.readJson(getWebhooksFile());
23
+ } catch {
24
+ this.webhooks = [];
25
+ }
26
+ }
27
+ async save() {
28
+ const f = getWebhooksFile();
29
+ await fs_extra.default.ensureDir(path.default.dirname(f));
30
+ await fs_extra.default.writeJson(f, this.webhooks, { spaces: 2 });
31
+ }
32
+ async add(opts) {
33
+ await this.load();
34
+ const wh = {
35
+ id: generateId(),
36
+ name: opts.name,
37
+ secret: opts.withSecret ? generateSecret() : void 0,
38
+ format: opts.format || "json",
39
+ routeTo: opts.routeTo,
40
+ enabled: true,
41
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
42
+ hitCount: 0,
43
+ filterPath: opts.filterPath,
44
+ template: opts.template
45
+ };
46
+ this.webhooks.push(wh);
47
+ await this.save();
48
+ return wh;
49
+ }
50
+ async remove(id) {
51
+ await this.load();
52
+ this.webhooks = this.webhooks.filter((w) => w.id !== id);
53
+ await this.save();
54
+ }
55
+ async toggle(id) {
56
+ await this.load();
57
+ const wh = this.webhooks.find((w) => w.id === id);
58
+ if (wh) {
59
+ wh.enabled = !wh.enabled;
60
+ await this.save();
61
+ }
62
+ }
63
+ async recordHit(id) {
64
+ const wh = this.webhooks.find((w) => w.id === id);
65
+ if (wh) {
66
+ wh.hitCount++;
67
+ wh.lastHitAt = (/* @__PURE__ */ new Date()).toISOString();
68
+ await this.save();
69
+ }
70
+ }
71
+ verifySignature(webhook, payload, sig) {
72
+ if (!webhook.secret) return true;
73
+ const expected = crypto.default.createHmac("sha256", webhook.secret).update(payload).digest("hex");
74
+ return crypto.default.timingSafeEqual(Buffer.from(sig.replace("sha256=", ""), "hex"), Buffer.from(expected, "hex"));
75
+ }
76
+ extractMessage(webhook, rawBody) {
77
+ if (!webhook.filterPath && !webhook.template) return rawBody;
78
+ let body;
79
+ try {
80
+ body = JSON.parse(rawBody);
81
+ } catch {
82
+ body = { text: rawBody };
83
+ }
84
+ if (webhook.template) return webhook.template.replace(/\{\{([^}]+)\}\}/g, (_, key) => {
85
+ const parts = key.trim().split(".");
86
+ let val = body;
87
+ for (const p of parts) val = val?.[p];
88
+ return val !== void 0 ? String(val) : "";
89
+ });
90
+ if (webhook.filterPath) {
91
+ const parts = webhook.filterPath.split(".");
92
+ let val = body;
93
+ for (const p of parts) val = val?.[p];
94
+ return val !== void 0 ? String(val) : rawBody;
95
+ }
96
+ return rawBody;
97
+ }
98
+ showList(gatewayPort = 18789) {
99
+ console.log(chalk.default.bold.cyan("\n 🪝 WEBHOOKS\n"));
100
+ if (this.webhooks.length === 0) {
101
+ console.log(chalk.default.gray(" No webhooks configured.\n"));
102
+ console.log(chalk.default.gray(" Add with: hyperclaw webhooks add\n"));
103
+ return;
104
+ }
105
+ for (const wh of this.webhooks) {
106
+ const dot = wh.enabled ? chalk.default.green("●") : chalk.default.gray("○");
107
+ const url = chalk.default.underline.cyan(`http://localhost:${gatewayPort}/webhook/${wh.id}`);
108
+ console.log(` ${dot} ${chalk.default.white(wh.name)} ${chalk.default.gray(`[${wh.format}]`)}`);
109
+ console.log(` ${chalk.default.gray("URL:")} ${url}`);
110
+ console.log(` ${chalk.default.gray("Route:")} ${wh.routeTo.type} → ${wh.routeTo.target}`);
111
+ if (wh.secret) console.log(` ${chalk.default.gray("Secret:")} ${wh.secret.slice(0, 8)}...`);
112
+ if (wh.template) console.log(` ${chalk.default.gray("Template:")} ${wh.template.slice(0, 50)}`);
113
+ console.log(` ${chalk.default.gray(`Hits: ${wh.hitCount} Last: ${wh.lastHitAt ? new Date(wh.lastHitAt).toLocaleString() : "never"}`)}`);
114
+ console.log();
115
+ }
116
+ }
117
+ };
118
+
119
+ //#endregion
120
+ exports.WebhookManager = WebhookManager;
@@ -0,0 +1,120 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_paths = require('./paths-AIyBxIzm.js');
3
+ const require_paths$1 = require('./paths-DPovhojT.js');
4
+ const chalk = require_chunk.__toESM(require("chalk"));
5
+ const fs_extra = require_chunk.__toESM(require("fs-extra"));
6
+ const path = require_chunk.__toESM(require("path"));
7
+ const crypto = require_chunk.__toESM(require("crypto"));
8
+
9
+ //#region src/webhooks/manager.ts
10
+ require_paths$1.init_paths();
11
+ const getWebhooksFile = () => path.default.join(require_paths.getHyperClawDir(), "webhooks.json");
12
+ function generateSecret() {
13
+ return crypto.default.randomBytes(24).toString("hex");
14
+ }
15
+ function generateId() {
16
+ return crypto.default.randomBytes(6).toString("hex");
17
+ }
18
+ var WebhookManager = class {
19
+ webhooks = [];
20
+ async load() {
21
+ try {
22
+ this.webhooks = await fs_extra.default.readJson(getWebhooksFile());
23
+ } catch {
24
+ this.webhooks = [];
25
+ }
26
+ }
27
+ async save() {
28
+ const f = getWebhooksFile();
29
+ await fs_extra.default.ensureDir(path.default.dirname(f));
30
+ await fs_extra.default.writeJson(f, this.webhooks, { spaces: 2 });
31
+ }
32
+ async add(opts) {
33
+ await this.load();
34
+ const wh = {
35
+ id: generateId(),
36
+ name: opts.name,
37
+ secret: opts.withSecret ? generateSecret() : void 0,
38
+ format: opts.format || "json",
39
+ routeTo: opts.routeTo,
40
+ enabled: true,
41
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
42
+ hitCount: 0,
43
+ filterPath: opts.filterPath,
44
+ template: opts.template
45
+ };
46
+ this.webhooks.push(wh);
47
+ await this.save();
48
+ return wh;
49
+ }
50
+ async remove(id) {
51
+ await this.load();
52
+ this.webhooks = this.webhooks.filter((w) => w.id !== id);
53
+ await this.save();
54
+ }
55
+ async toggle(id) {
56
+ await this.load();
57
+ const wh = this.webhooks.find((w) => w.id === id);
58
+ if (wh) {
59
+ wh.enabled = !wh.enabled;
60
+ await this.save();
61
+ }
62
+ }
63
+ async recordHit(id) {
64
+ const wh = this.webhooks.find((w) => w.id === id);
65
+ if (wh) {
66
+ wh.hitCount++;
67
+ wh.lastHitAt = (/* @__PURE__ */ new Date()).toISOString();
68
+ await this.save();
69
+ }
70
+ }
71
+ verifySignature(webhook, payload, sig) {
72
+ if (!webhook.secret) return true;
73
+ const expected = crypto.default.createHmac("sha256", webhook.secret).update(payload).digest("hex");
74
+ return crypto.default.timingSafeEqual(Buffer.from(sig.replace("sha256=", ""), "hex"), Buffer.from(expected, "hex"));
75
+ }
76
+ extractMessage(webhook, rawBody) {
77
+ if (!webhook.filterPath && !webhook.template) return rawBody;
78
+ let body;
79
+ try {
80
+ body = JSON.parse(rawBody);
81
+ } catch {
82
+ body = { text: rawBody };
83
+ }
84
+ if (webhook.template) return webhook.template.replace(/\{\{([^}]+)\}\}/g, (_, key) => {
85
+ const parts = key.trim().split(".");
86
+ let val = body;
87
+ for (const p of parts) val = val?.[p];
88
+ return val !== void 0 ? String(val) : "";
89
+ });
90
+ if (webhook.filterPath) {
91
+ const parts = webhook.filterPath.split(".");
92
+ let val = body;
93
+ for (const p of parts) val = val?.[p];
94
+ return val !== void 0 ? String(val) : rawBody;
95
+ }
96
+ return rawBody;
97
+ }
98
+ showList(gatewayPort = 18789) {
99
+ console.log(chalk.default.bold.cyan("\n 🪝 WEBHOOKS\n"));
100
+ if (this.webhooks.length === 0) {
101
+ console.log(chalk.default.gray(" No webhooks configured.\n"));
102
+ console.log(chalk.default.gray(" Add with: hyperclaw webhooks add\n"));
103
+ return;
104
+ }
105
+ for (const wh of this.webhooks) {
106
+ const dot = wh.enabled ? chalk.default.green("●") : chalk.default.gray("○");
107
+ const url = chalk.default.underline.cyan(`http://localhost:${gatewayPort}/webhook/${wh.id}`);
108
+ console.log(` ${dot} ${chalk.default.white(wh.name)} ${chalk.default.gray(`[${wh.format}]`)}`);
109
+ console.log(` ${chalk.default.gray("URL:")} ${url}`);
110
+ console.log(` ${chalk.default.gray("Route:")} ${wh.routeTo.type} → ${wh.routeTo.target}`);
111
+ if (wh.secret) console.log(` ${chalk.default.gray("Secret:")} ${wh.secret.slice(0, 8)}...`);
112
+ if (wh.template) console.log(` ${chalk.default.gray("Template:")} ${wh.template.slice(0, 50)}`);
113
+ console.log(` ${chalk.default.gray(`Hits: ${wh.hitCount} Last: ${wh.lastHitAt ? new Date(wh.lastHitAt).toLocaleString() : "never"}`)}`);
114
+ console.log();
115
+ }
116
+ }
117
+ };
118
+
119
+ //#endregion
120
+ exports.WebhookManager = WebhookManager;
@@ -0,0 +1,142 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_paths = require('./paths-AIyBxIzm.js');
3
+ const require_paths$1 = require('./paths-DPovhojT.js');
4
+ const chalk = require_chunk.__toESM(require("chalk"));
5
+ const inquirer = require_chunk.__toESM(require("inquirer"));
6
+ const ora = require_chunk.__toESM(require("ora"));
7
+ const fs_extra = require_chunk.__toESM(require("fs-extra"));
8
+ const path = require_chunk.__toESM(require("path"));
9
+
10
+ //#region src/commands/mcp.ts
11
+ require_paths$1.init_paths();
12
+ const getMcpFile = () => path.default.join(require_paths.getHyperClawDir(), "mcp-servers.json");
13
+ async function loadServers() {
14
+ try {
15
+ return await fs_extra.default.readJson(getMcpFile());
16
+ } catch {
17
+ return [];
18
+ }
19
+ }
20
+ async function saveServers(servers) {
21
+ const mcpFile = getMcpFile();
22
+ await fs_extra.default.ensureDir(path.default.dirname(mcpFile));
23
+ await fs_extra.default.writeJson(mcpFile, servers, { spaces: 2 });
24
+ }
25
+ async function mcpList() {
26
+ const servers = await loadServers();
27
+ console.log(chalk.default.bold.cyan("\n 🔌 MCP SERVERS\n"));
28
+ if (servers.length === 0) {
29
+ console.log(chalk.default.gray(" No MCP servers registered.\n"));
30
+ console.log(chalk.default.gray(" Add one: hyperclaw mcp add\n"));
31
+ console.log(chalk.default.gray(" Or install via skill hub: hyperclaw hub --install mcp-filesystem\n"));
32
+ return;
33
+ }
34
+ for (const s of servers) {
35
+ const dot = s.enabled ? chalk.default.green("●") : chalk.default.gray("○");
36
+ console.log(` ${dot} ${chalk.default.white(s.name)} ${chalk.default.gray(`[${s.transport}]`)}`);
37
+ if (s.command) console.log(` ${chalk.default.gray("cmd:")} ${s.command}`);
38
+ if (s.url) console.log(` ${chalk.default.gray("url:")} ${chalk.default.cyan(s.url)}`);
39
+ if (s.tools?.length) console.log(` ${chalk.default.gray("tools:")} ${s.tools.slice(0, 5).join(", ")}${s.tools.length > 5 ? ` +${s.tools.length - 5} more` : ""}`);
40
+ if (s.lastProbeAt) console.log(` ${chalk.default.gray(`last probe: ${new Date(s.lastProbeAt).toLocaleString()}`)}`);
41
+ console.log();
42
+ }
43
+ }
44
+ async function mcpAdd() {
45
+ console.log(chalk.default.bold.cyan("\n ➕ ADD MCP SERVER\n"));
46
+ const { name } = await inquirer.default.prompt([{
47
+ type: "input",
48
+ name: "name",
49
+ message: "Server name:",
50
+ validate: (v) => !!v.trim() || "Required"
51
+ }]);
52
+ const { transport } = await inquirer.default.prompt([{
53
+ type: "list",
54
+ name: "transport",
55
+ message: "Transport:",
56
+ choices: [
57
+ "stdio",
58
+ "sse",
59
+ "http"
60
+ ]
61
+ }]);
62
+ let command;
63
+ let url;
64
+ if (transport === "stdio") {
65
+ const res = await inquirer.default.prompt([{
66
+ type: "input",
67
+ name: "command",
68
+ message: "Start command (e.g. node /path/to/server.js):",
69
+ validate: (v) => !!v.trim() || "Required"
70
+ }]);
71
+ command = res.command;
72
+ } else {
73
+ const res = await inquirer.default.prompt([{
74
+ type: "input",
75
+ name: "url",
76
+ message: `URL (e.g. http://localhost:3001):`,
77
+ validate: (v) => v.startsWith("http") || "Must start with http"
78
+ }]);
79
+ url = res.url;
80
+ }
81
+ const server = {
82
+ id: name.toLowerCase().replace(/\s+/g, "-"),
83
+ name,
84
+ transport,
85
+ command,
86
+ url,
87
+ enabled: true,
88
+ addedAt: (/* @__PURE__ */ new Date()).toISOString()
89
+ };
90
+ const servers = await loadServers();
91
+ servers.push(server);
92
+ await saveServers(servers);
93
+ console.log(chalk.default.green(`\n ✔ MCP server added: ${name}`));
94
+ console.log(chalk.default.gray(" Run: hyperclaw mcp probe to test the connection\n"));
95
+ }
96
+ async function mcpRemove(id) {
97
+ const servers = await loadServers();
98
+ const idx = servers.findIndex((s) => s.id === id);
99
+ if (idx === -1) {
100
+ console.log(chalk.default.red(`\n ✖ Server not found: ${id}\n`));
101
+ return;
102
+ }
103
+ servers.splice(idx, 1);
104
+ await saveServers(servers);
105
+ console.log(chalk.default.green(`\n ✔ MCP server removed: ${id}\n`));
106
+ }
107
+ async function mcpProbe(id) {
108
+ const servers = await loadServers();
109
+ const targets = id ? servers.filter((s) => s.id === id) : servers;
110
+ if (targets.length === 0) {
111
+ console.log(chalk.default.gray("\n No servers to probe. Add one: hyperclaw mcp add\n"));
112
+ return;
113
+ }
114
+ console.log(chalk.default.bold.cyan("\n 🔍 PROBING MCP SERVERS\n"));
115
+ for (const server of targets) {
116
+ const spinner = (0, ora.default)(` Probing ${server.name}...`).start();
117
+ await new Promise((r) => setTimeout(r, 800));
118
+ if (server.transport === "http" || server.transport === "sse") try {
119
+ const axios = (await import("axios")).default;
120
+ const res = await axios.get(`${server.url}/tools`, { timeout: 3e3 });
121
+ server.tools = res.data?.tools?.map((t) => t.name) || [];
122
+ server.lastProbeAt = (/* @__PURE__ */ new Date()).toISOString();
123
+ await saveServers(servers);
124
+ spinner.succeed(`${server.name} — ${server.tools?.length ?? 0} tools`);
125
+ if ((server.tools?.length ?? 0) > 0) console.log(chalk.default.gray(` ${server.tools?.join(", ") ?? ""}`));
126
+ } catch {
127
+ spinner.warn(`${server.name} — unreachable (${server.url})`);
128
+ }
129
+ else {
130
+ server.lastProbeAt = (/* @__PURE__ */ new Date()).toISOString();
131
+ await saveServers(servers);
132
+ spinner.succeed(`${server.name} — stdio (probe requires running server)`);
133
+ }
134
+ console.log();
135
+ }
136
+ }
137
+
138
+ //#endregion
139
+ exports.mcpAdd = mcpAdd;
140
+ exports.mcpList = mcpList;
141
+ exports.mcpProbe = mcpProbe;
142
+ exports.mcpRemove = mcpRemove;