hyperclaw 5.4.0 → 5.4.2

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 (522) hide show
  1. package/README.md +1 -0
  2. package/dist/a2ui-protocol-CUqdJGh7.js +75 -0
  3. package/dist/a2ui-protocol-CibzbTxL.js +75 -0
  4. package/dist/a2ui-protocol-Dtb8zlog.js +75 -0
  5. package/dist/a2ui-protocol-ORP2Etw0.js +75 -0
  6. package/dist/a2ui-protocol-whRZHdBk.js +75 -0
  7. package/dist/abort-controller-B55O1IgK.js +47995 -0
  8. package/dist/agents-routing-Ai2BQVpU.js +7 -0
  9. package/dist/agents-routing-B0D0vcp5.js +424 -0
  10. package/dist/agents-routing-B0RBl1B8.js +424 -0
  11. package/dist/agents-routing-BC6GndVe.js +7 -0
  12. package/dist/agents-routing-BSUaOpce.js +7 -0
  13. package/dist/agents-routing-C4PVN8G6.js +7 -0
  14. package/dist/agents-routing-CyFBHvyk.js +424 -0
  15. package/dist/agents-routing-Dcr29-JV.js +424 -0
  16. package/dist/agents-routing-DdpszaMx.js +7 -0
  17. package/dist/agents-routing-EwzORQQv.js +424 -0
  18. package/dist/agents-routing-Fd-uQ4R_.js +7 -0
  19. package/dist/agents-routing-eLjVYBAk.js +424 -0
  20. package/dist/api-key-validation-BANgbsfO.js +66 -0
  21. package/dist/api-key-validation-Bnz-0MMK.js +66 -0
  22. package/dist/api-key-validation-D_fMCaO5.js +66 -0
  23. package/dist/api-key-validation-Db7rG3JU.js +66 -0
  24. package/dist/api-key-validation-DrMrLEa0.js +66 -0
  25. package/dist/api-keys-guide-B6AJ1V5D.js +149 -0
  26. package/dist/api-keys-guide-C75JQOdH.js +149 -0
  27. package/dist/api-keys-guide-CFJPrgsL.js +149 -0
  28. package/dist/api-keys-guide-DDz08BJQ.js +149 -0
  29. package/dist/api-keys-guide-DmKF7tB-.js +149 -0
  30. package/dist/audit-BLMB8qp7.js +445 -0
  31. package/dist/audit-Cb2TvqYZ.js +445 -0
  32. package/dist/audit-D7koAKvj.js +445 -0
  33. package/dist/audit-Q-Uy5nem.js +445 -0
  34. package/dist/audit-xP_175jB.js +445 -0
  35. package/dist/backup-7l3iovkX.js +86 -0
  36. package/dist/backup-BKLTHh62.js +86 -0
  37. package/dist/backup-CspxXk78.js +86 -0
  38. package/dist/backup-CtHJEqGr.js +86 -0
  39. package/dist/backup-D8dFYDXV.js +86 -0
  40. package/dist/banner-CZ2BfvQq.js +143 -0
  41. package/dist/banner-CjTRWmks.js +7 -0
  42. package/dist/banner-DYzQ8cCb.js +143 -0
  43. package/dist/banner-Dpygks0H.js +143 -0
  44. package/dist/banner-ZX1WLr44.js +7 -0
  45. package/dist/banner-jW84OrYg.js +7 -0
  46. package/dist/bounty-tools-CCwY61YO.js +211 -0
  47. package/dist/bounty-tools-Cq-oC9gk.js +211 -0
  48. package/dist/bounty-tools-DZ-WtRdE.js +211 -0
  49. package/dist/bounty-tools-DhpmjF5Y.js +211 -0
  50. package/dist/bounty-tools-NGuBWI55.js +211 -0
  51. package/dist/browser-tools-5Fl1hP_2.js +5 -0
  52. package/dist/browser-tools-Ay-wU_a4.js +5 -0
  53. package/dist/browser-tools-BMgBB2fK.js +179 -0
  54. package/dist/browser-tools-kcViDwk5.js +179 -0
  55. package/dist/chat-BUa1oGqj.js +528 -0
  56. package/dist/chat-CJa0ph8c.js +528 -0
  57. package/dist/chat-CKnfxa1-.js +528 -0
  58. package/dist/chat-CQKCIrIY.js +528 -0
  59. package/dist/chat-CiuT-GTs.js +528 -0
  60. package/dist/chat-DfI8uOzF.js +528 -0
  61. package/dist/chat-Dz5rmUSs.js +528 -0
  62. package/dist/chat-RTmX1F16.js +528 -0
  63. package/dist/chat-npW_ZOmo.js +528 -0
  64. package/dist/claw-tasks-Cio1Q7eA.js +80 -0
  65. package/dist/claw-tasks-Dq38PrL5.js +80 -0
  66. package/dist/claw-tasks-DzxNWVcz.js +80 -0
  67. package/dist/claw-tasks-L7vQSGlt.js +80 -0
  68. package/dist/claw-tasks-dndWneZW.js +80 -0
  69. package/dist/config-B-W-Mz4X.js +7 -0
  70. package/dist/config-BAwkTUJC.js +261 -0
  71. package/dist/config-BzK_Xl4Y.js +261 -0
  72. package/dist/config-CYPw2v4l.js +261 -0
  73. package/dist/config-ClsdlpXc.js +261 -0
  74. package/dist/config-DN9fdLL3.js +261 -0
  75. package/dist/config-Dm394B6X.js +7 -0
  76. package/dist/config-FejpHHTz.js +261 -0
  77. package/dist/config-SiLqEezw.js +7 -0
  78. package/dist/config-Tq_GJHf7.js +7 -0
  79. package/dist/config-n4qy5jIy.js +7 -0
  80. package/dist/config-qJUYRMzx.js +7 -0
  81. package/dist/connector-BYPxgmsD.js +312 -0
  82. package/dist/connector-CwT7KZm2.js +309 -0
  83. package/dist/connector-DX4k-lGd.js +442 -0
  84. package/dist/cost-tracker-C2q5zKic.js +103 -0
  85. package/dist/cost-tracker-CsRQAOEr.js +103 -0
  86. package/dist/cost-tracker-DAXWN5YT.js +103 -0
  87. package/dist/cost-tracker-bySvehH6.js +103 -0
  88. package/dist/cost-tracker-x9E8VKtk.js +103 -0
  89. package/dist/credentials-store-BAW87r6f.js +7 -0
  90. package/dist/credentials-store-BHtk7_H_.js +7 -0
  91. package/dist/credentials-store-CESgFvFU.js +89 -0
  92. package/dist/credentials-store-CR4WSDGl.js +7 -0
  93. package/dist/credentials-store-CXq4kZub.js +89 -0
  94. package/dist/credentials-store-DUp8dtaS.js +89 -0
  95. package/dist/credentials-store-Ddhgmbpz.js +7 -0
  96. package/dist/credentials-store-hiSga8qn.js +89 -0
  97. package/dist/credentials-store-kLdrmqSt.js +7 -0
  98. package/dist/credentials-store-onL1tYct.js +89 -0
  99. package/dist/cron-tasks-BFsaCKxE.js +89 -0
  100. package/dist/cron-tasks-BelA2aUW.js +89 -0
  101. package/dist/cron-tasks-CF4MJoIU.js +89 -0
  102. package/dist/cron-tasks-D1T9fWAb.js +89 -0
  103. package/dist/cron-tasks-f_ieXSG2.js +89 -0
  104. package/dist/daemon-ApB1nMs2.js +421 -0
  105. package/dist/daemon-B2ghXB-I.js +7 -0
  106. package/dist/daemon-BTYhQvD_.js +7 -0
  107. package/dist/daemon-BldYSrDj.js +421 -0
  108. package/dist/daemon-BoaFnmdF.js +421 -0
  109. package/dist/daemon-BqTcxMZe.js +7 -0
  110. package/dist/daemon-BrHxr4ut.js +421 -0
  111. package/dist/daemon-BzdeLgON.js +421 -0
  112. package/dist/daemon-BzqWIC4v.js +7 -0
  113. package/dist/daemon-C3OczPR1.js +7 -0
  114. package/dist/daemon-CivMFYkD.js +7 -0
  115. package/dist/daemon-D57KIIA3.js +421 -0
  116. package/dist/daemon-D8uyH9et.js +7 -0
  117. package/dist/daemon-DBTtYx6E.js +421 -0
  118. package/dist/daemon-DBXFUMue.js +421 -0
  119. package/dist/daemon-srcdhzUG.js +7 -0
  120. package/dist/delivery-BURWi8wu.js +4 -0
  121. package/dist/delivery-Bt0xW6L9.js +4 -0
  122. package/dist/delivery-C2sAERN7.js +4 -0
  123. package/dist/delivery-CF2Q4hb1.js +95 -0
  124. package/dist/delivery-CfMljOwk.js +95 -0
  125. package/dist/delivery-DP0d4_A4.js +95 -0
  126. package/dist/delivery-DXYt4aMO.js +4 -0
  127. package/dist/delivery-DXxP2UL4.js +4 -0
  128. package/dist/delivery-jT2UIDlU.js +95 -0
  129. package/dist/delivery-kZ2mVkU5.js +95 -0
  130. package/dist/destructive-gate-5LYh6brt.js +116 -0
  131. package/dist/destructive-gate-B_hNKtu6.js +116 -0
  132. package/dist/destructive-gate-C1ny9ek2.js +116 -0
  133. package/dist/destructive-gate-DvxPSDMR.js +116 -0
  134. package/dist/destructive-gate-Qd2y7x1B.js +116 -0
  135. package/dist/dist-B1qvBUax.js +30541 -0
  136. package/dist/engine-B-JvIt_Y.js +7 -0
  137. package/dist/engine-BBJlKpMP.js +7 -0
  138. package/dist/engine-BGZnBZ4m.js +7 -0
  139. package/dist/engine-BNygJfCo.js +335 -0
  140. package/dist/engine-BTSXJNba.js +346 -0
  141. package/dist/engine-C7LyH310.js +353 -0
  142. package/dist/engine-C_nC_Ioe.js +351 -0
  143. package/dist/engine-DB4MBzki.js +7 -0
  144. package/dist/engine-DCtJSbKU.js +7 -0
  145. package/dist/engine-DPi9fhMl.js +332 -0
  146. package/dist/engine-DeaqDcaT.js +7 -0
  147. package/dist/engine-DuvXJrUP.js +335 -0
  148. package/dist/engine-HkyTC_xl.js +332 -0
  149. package/dist/engine-JysunhPR.js +7 -0
  150. package/dist/engine-MzEUw7qb.js +7 -0
  151. package/dist/engine-j9Yaqt_-.js +332 -0
  152. package/dist/env-resolve--MaE2kFF.js +167 -0
  153. package/dist/env-resolve-BYWG94tK.js +11 -0
  154. package/dist/env-resolve-Bop7KbNq.js +167 -0
  155. package/dist/env-resolve-Buos635Y.js +167 -0
  156. package/dist/env-resolve-C0R8R7pb.js +167 -0
  157. package/dist/env-resolve-D3dP1-Xt.js +11 -0
  158. package/dist/env-resolve-Dr-KfTtw.js +11 -0
  159. package/dist/env-resolve-DvsbhPKl.js +11 -0
  160. package/dist/env-resolve-NNM3F6Eo.js +167 -0
  161. package/dist/env-resolve-dTjn-g8X.js +11 -0
  162. package/dist/extraction-tools-Bh5F0ENP.js +91 -0
  163. package/dist/extraction-tools-BjzXD9LW.js +5 -0
  164. package/dist/extraction-tools-D1lrDYhe.js +5 -0
  165. package/dist/extraction-tools-FBwtT2Bx.js +91 -0
  166. package/dist/fileFromPath-CodL6KXh.js +85 -0
  167. package/dist/gmail-watch-setup--eQ8raeb.js +42 -0
  168. package/dist/gmail-watch-setup-9t14gy1B.js +42 -0
  169. package/dist/gmail-watch-setup-B9fx_OLg.js +42 -0
  170. package/dist/gmail-watch-setup-BzbG0ICM.js +42 -0
  171. package/dist/gmail-watch-setup-DP3kDRx1.js +42 -0
  172. package/dist/heartbeat-engine-5iOlL7Dj.js +89 -0
  173. package/dist/heartbeat-engine-B9bhAHNi.js +89 -0
  174. package/dist/heartbeat-engine-Bu4q18GH.js +89 -0
  175. package/dist/heartbeat-engine-CF_JjNJ4.js +89 -0
  176. package/dist/heartbeat-engine-CLADYZxE.js +89 -0
  177. package/dist/hub-CZeGrS20.js +6 -0
  178. package/dist/hub-DAkEVTEy.js +545 -0
  179. package/dist/hyperclawbot-BEm8_87h.js +516 -0
  180. package/dist/hyperclawbot-CNVUtvYC.js +516 -0
  181. package/dist/hyperclawbot-D5ofLNgm.js +516 -0
  182. package/dist/hyperclawbot-D61zVMyQ.js +516 -0
  183. package/dist/hyperclawbot-DR6BgI_d.js +516 -0
  184. package/dist/hyperclawbot-DwScttSx.js +516 -0
  185. package/dist/hyperclawbot-hZv4pde0.js +516 -0
  186. package/dist/hyperclawbot-v65eL2U0.js +516 -0
  187. package/dist/inference-BEvs7s3c.js +2854 -0
  188. package/dist/inference-C4b9YqXk.js +8 -0
  189. package/dist/inference-C874-2MI.js +8 -0
  190. package/dist/inference-CRF6HyyH.js +2854 -0
  191. package/dist/inference-CfhTACI8.js +2854 -0
  192. package/dist/inference-DCSz6Sb1.js +2880 -0
  193. package/dist/inference-DGsy36Ru.js +8 -0
  194. package/dist/inference-Da7Hw4J3.js +8 -0
  195. package/dist/inference-DhJ-SHZn.js +8 -0
  196. package/dist/inference-K7Jrnzre.js +2854 -0
  197. package/dist/isFile-CSxoSB8X.js +2274 -0
  198. package/dist/knowledge-graph-BdsJ5KEL.js +134 -0
  199. package/dist/knowledge-graph-BiIvoxPt.js +134 -0
  200. package/dist/knowledge-graph-CFRBepzr.js +134 -0
  201. package/dist/knowledge-graph-CeDeahui.js +134 -0
  202. package/dist/knowledge-graph-DoYFZnUr.js +134 -0
  203. package/dist/loader-C2qtNbtF.js +6 -0
  204. package/dist/loader-D6yjBYo4.js +410 -0
  205. package/dist/loader-DBO6yRNh.js +6 -0
  206. package/dist/loader-DMMb9emn.js +410 -0
  207. package/dist/loader-DUhmG3V9.js +410 -0
  208. package/dist/loader-Dl8LNycw.js +6 -0
  209. package/dist/loader-JktrmJOG.js +6 -0
  210. package/dist/loader-UpOYxgZv.js +6 -0
  211. package/dist/loader-hXv2mZjK.js +410 -0
  212. package/dist/loader-nDBcv3Tm.js +410 -0
  213. package/dist/logger-BD316YbA.js +86 -0
  214. package/dist/logger-BnXZkfsp.js +86 -0
  215. package/dist/logger-CmphFNmW.js +86 -0
  216. package/dist/logger-DkHzhh56.js +86 -0
  217. package/dist/logger-Oty9sC13.js +86 -0
  218. package/dist/manager-3-q8zuAW.js +250 -0
  219. package/dist/manager-BIc6zzZV.js +250 -0
  220. package/dist/manager-BkMzc-EJ.js +250 -0
  221. package/dist/manager-Bq5LApdR.js +6 -0
  222. package/dist/manager-BwobWy0l.js +120 -0
  223. package/dist/manager-CNgdJunf.js +250 -0
  224. package/dist/manager-CozyZSDG.js +250 -0
  225. package/dist/manager-D4mDWXph.js +120 -0
  226. package/dist/manager-DuS-WQhZ.js +120 -0
  227. package/dist/manager-Dz2eKYqo.js +116 -0
  228. package/dist/manager-R0TlRMZy.js +120 -0
  229. package/dist/manager-aJfY7rt6.js +120 -0
  230. package/dist/mcp-BH7HtOQ8.js +142 -0
  231. package/dist/mcp-CAJSA_ee.js +142 -0
  232. package/dist/mcp-CD-iIQa2.js +142 -0
  233. package/dist/mcp-CI2F3m8G.js +142 -0
  234. package/dist/mcp-DGo37Ifb.js +142 -0
  235. package/dist/mcp-loader-C-21ynRH.js +93 -0
  236. package/dist/mcp-loader-Ct1NQKnX.js +93 -0
  237. package/dist/mcp-loader-D1T6UX73.js +93 -0
  238. package/dist/mcp-loader-DJk6MEof.js +93 -0
  239. package/dist/mcp-loader-DdXvU63s.js +93 -0
  240. package/dist/mcp-loader-Di7n__ta.js +93 -0
  241. package/dist/mcp-loader-gMliiJ7R.js +93 -0
  242. package/dist/memory-CyonlkTy.js +6 -0
  243. package/dist/memory-DPSWQBc0.js +276 -0
  244. package/dist/memory-auto-B0QOqaUD.js +306 -0
  245. package/dist/memory-auto-BSxYJugl.js +5 -0
  246. package/dist/memory-auto-BVCJeTwd.js +306 -0
  247. package/dist/memory-auto-CcFRxMj-.js +306 -0
  248. package/dist/memory-auto-CifT5aj_.js +5 -0
  249. package/dist/memory-auto-Cp2Jwx3Y.js +306 -0
  250. package/dist/memory-auto-DXKe2ayf.js +5 -0
  251. package/dist/memory-auto-DjK_D8CA.js +306 -0
  252. package/dist/memory-auto-N57dp4Do.js +5 -0
  253. package/dist/memory-auto-n0kOcU7F.js +5 -0
  254. package/dist/memory-integration-D2RvZ-MB.js +91 -0
  255. package/dist/memory-integration-D8shLJwp.js +91 -0
  256. package/dist/memory-integration-DLmzJ62L.js +91 -0
  257. package/dist/memory-integration-DMXDbMIL.js +91 -0
  258. package/dist/memory-integration-Dgr-mjue.js +91 -0
  259. package/dist/moltbook-CIeOshK6.js +81 -0
  260. package/dist/moltbook-CX5XWn06.js +81 -0
  261. package/dist/moltbook-DUfiE4NY.js +81 -0
  262. package/dist/moltbook-DvV6GFFL.js +81 -0
  263. package/dist/moltbook-YEiNI8Cm.js +81 -0
  264. package/dist/multi-agent-tools-jzfvT4zP.js +87 -0
  265. package/dist/multimodal-zZdwqISl.js +77 -0
  266. package/dist/node-BYrxELx2.js +251 -0
  267. package/dist/node-CLWgPlAk.js +251 -0
  268. package/dist/node-Czz8Y85D.js +251 -0
  269. package/dist/node-DFKhz7Zn.js +251 -0
  270. package/dist/node-Du2H2Ddi.js +226 -0
  271. package/dist/node-domexception-v89b0Nwz.js +21 -0
  272. package/dist/node-pending-queue-CIMXPU6K.js +32 -0
  273. package/dist/node-pending-queue-DUXCbYkp.js +32 -0
  274. package/dist/node-pending-queue-DZp7cdfo.js +32 -0
  275. package/dist/node-pending-queue-iYpoWqxe.js +32 -0
  276. package/dist/nodes-registry-BTy7Sc7D.js +52 -0
  277. package/dist/nodes-registry-BYjmmJBU.js +52 -0
  278. package/dist/nodes-registry-BeiEjd9U.js +52 -0
  279. package/dist/nodes-registry-C8GeEGq0.js +52 -0
  280. package/dist/nodes-registry-Du6Klz0l.js +52 -0
  281. package/dist/oauth-flow-BA0yMrHx.js +148 -0
  282. package/dist/oauth-flow-C4QSMsbl.js +148 -0
  283. package/dist/oauth-flow-CIuDBDsp.js +148 -0
  284. package/dist/oauth-flow-CZOsvU1v.js +148 -0
  285. package/dist/oauth-flow-CniM4jlJ.js +148 -0
  286. package/dist/oauth-provider-BA4GVFKg.js +111 -0
  287. package/dist/oauth-provider-Bnul5A_Z.js +111 -0
  288. package/dist/oauth-provider-Dk-6BmGL.js +111 -0
  289. package/dist/oauth-provider-DqPXPiiC.js +111 -0
  290. package/dist/oauth-provider-MEgHjij2.js +111 -0
  291. package/dist/observability-0spm7MPz.js +89 -0
  292. package/dist/observability-B3dDQSdI.js +89 -0
  293. package/dist/observability-BOMYgHUh.js +89 -0
  294. package/dist/observability-CDqHr-_o.js +89 -0
  295. package/dist/observability-ah2a7sh1.js +89 -0
  296. package/dist/onboard-BJ78s3NT.js +3854 -0
  297. package/dist/onboard-BnyHie0K.js +14 -0
  298. package/dist/onboard-C55YXd_e.js +14 -0
  299. package/dist/onboard-CNnm4yYp.js +3841 -0
  300. package/dist/onboard-CXSVPnP7.js +3854 -0
  301. package/dist/onboard-CwvXXOR1.js +14 -0
  302. package/dist/onboard-CxlIsNhX.js +3854 -0
  303. package/dist/onboard-D-5gWzH0.js +3854 -0
  304. package/dist/onboard-D9pjgaVR.js +3854 -0
  305. package/dist/onboard-DPmufMqX.js +14 -0
  306. package/dist/onboard-F9lKA2ie.js +14 -0
  307. package/dist/onboard-UTQXzlPD.js +3854 -0
  308. package/dist/onboard-UhWVcTap.js +14 -0
  309. package/dist/onboard-W5DsxVf2.js +3854 -0
  310. package/dist/onboard-YszvVNgS.js +14 -0
  311. package/dist/onboard-hK098kjl.js +14 -0
  312. package/dist/onboard-pLDBUBpO.js +14 -0
  313. package/dist/onboard-zISipu-l.js +3854 -0
  314. package/dist/openai-CrdtuLxw.js +6292 -0
  315. package/dist/orchestrator-5M-6MB7r.js +6 -0
  316. package/dist/orchestrator-B3BjP1dy.js +6 -0
  317. package/dist/orchestrator-BZS62iDS.js +6 -0
  318. package/dist/orchestrator-C0t11xj7.js +189 -0
  319. package/dist/orchestrator-CA4eKeGn.js +189 -0
  320. package/dist/orchestrator-CNxTIlOK.js +189 -0
  321. package/dist/orchestrator-CTMbjgH_.js +6 -0
  322. package/dist/orchestrator-Cg1vgEHb.js +6 -0
  323. package/dist/orchestrator-Crn4fgbI.js +189 -0
  324. package/dist/orchestrator-Cs6s-QmS.js +189 -0
  325. package/dist/orchestrator-DGqwsLmO.js +189 -0
  326. package/dist/orchestrator-DV5t6wQ0.js +6 -0
  327. package/dist/orchestrator-UUHsFKiH.js +6 -0
  328. package/dist/orchestrator-eT0ZL4yl.js +6 -0
  329. package/dist/orchestrator-oa7HbCnF.js +189 -0
  330. package/dist/orchestrator-tUKag7pG.js +189 -0
  331. package/dist/osint-47yIek6w.js +283 -0
  332. package/dist/osint-BJvOCmVk.js +283 -0
  333. package/dist/osint-CK9xVUUm.js +283 -0
  334. package/dist/osint-D6vQXCWh.js +283 -0
  335. package/dist/osint-DLYZsp1k.js +283 -0
  336. package/dist/osint-c-xDjLb-.js +283 -0
  337. package/dist/osint-cAAdO-cx.js +283 -0
  338. package/dist/osint-chat-B0lc0Y6r.js +789 -0
  339. package/dist/osint-chat-BJgnkFDm.js +789 -0
  340. package/dist/osint-chat-BUhiSpf9.js +789 -0
  341. package/dist/osint-chat-C-9FVAkU.js +789 -0
  342. package/dist/osint-chat-C09BvbGy.js +789 -0
  343. package/dist/osint-chat-CWET8Fno.js +789 -0
  344. package/dist/osint-chat-Cgdzg3lh.js +789 -0
  345. package/dist/osint-chat-zdeaaw7a.js +789 -0
  346. package/dist/osint-e6oBrtlj.js +283 -0
  347. package/dist/pc-access-BCaF5mRs.js +858 -0
  348. package/dist/pc-access-BOcXappE.js +858 -0
  349. package/dist/pc-access-BgZNmAdB.js +8 -0
  350. package/dist/pc-access-CAoM6WN4.js +8 -0
  351. package/dist/pc-access-D2HdoziZ.js +8 -0
  352. package/dist/pc-access-D4g0fjQb.js +858 -0
  353. package/dist/pending-approval-CEu_-DGQ.js +22 -0
  354. package/dist/pending-approval-CJPyt8U5.js +22 -0
  355. package/dist/pending-approval-CzMNCTfZ.js +22 -0
  356. package/dist/pending-approval-DaXi7otO.js +22 -0
  357. package/dist/pending-approval-KcyeiifE.js +22 -0
  358. package/dist/providers-BfW-fgpw.js +5 -0
  359. package/dist/providers-Cs1h_TJA.js +1137 -0
  360. package/dist/providers-DrZP0NeR.js +5 -0
  361. package/dist/providers-dHhpJo9j.js +1120 -0
  362. package/dist/reminders-store-B58LldEG.js +58 -0
  363. package/dist/reminders-store-C4gWckLa.js +58 -0
  364. package/dist/reminders-store-DT0o6a60.js +58 -0
  365. package/dist/renderer-B8c22rbg.js +228 -0
  366. package/dist/renderer-BS0ETL20.js +228 -0
  367. package/dist/renderer-B_ew6jRs.js +228 -0
  368. package/dist/renderer-Cg3c41A5.js +228 -0
  369. package/dist/renderer-UoPcgaAd.js +228 -0
  370. package/dist/rules-BAYXiKiJ.js +106 -0
  371. package/dist/rules-D0v5nuSE.js +106 -0
  372. package/dist/rules-DCKPgwLb.js +106 -0
  373. package/dist/rules-Zn9j4PnO.js +106 -0
  374. package/dist/rules-oAgOSPHC.js +106 -0
  375. package/dist/run-main.js +492 -131
  376. package/dist/runner-B5uo6C5q.js +1310 -0
  377. package/dist/runner-BaZ2V27T.js +1307 -0
  378. package/dist/runner-Bgl7UTbV.js +1307 -0
  379. package/dist/runner-DOKp3-v5.js +1307 -0
  380. package/dist/runner-voYdfM_f.js +1307 -0
  381. package/dist/search-tools-BBwMa8VX.js +107 -0
  382. package/dist/search-tools-CEUOO9Jf.js +107 -0
  383. package/dist/search-tools-DXVuVXW_.js +107 -0
  384. package/dist/search-tools-VHP3xVyC.js +107 -0
  385. package/dist/search-tools-w_zT7-dr.js +107 -0
  386. package/dist/server-BAdJwMM9.js +4 -0
  387. package/dist/server-BD9FLc7S.js +1384 -0
  388. package/dist/server-BJkDIs8Z.js +1467 -0
  389. package/dist/server-BlqWBbS7.js +4 -0
  390. package/dist/server-BzwPvTbD.js +1447 -0
  391. package/dist/server-CBvSfG4w.js +4 -0
  392. package/dist/server-CbNBcB41.js +4 -0
  393. package/dist/server-CtFoXM88.js +4 -0
  394. package/dist/server-DPTXaJJF.js +4 -0
  395. package/dist/server-DVxVLu_G.js +1467 -0
  396. package/dist/server-DZj6Nobr.js +1467 -0
  397. package/dist/server-Diu80smx.js +4 -0
  398. package/dist/server-DszV63tu.js +4 -0
  399. package/dist/server-Dv2zHHy-.js +1447 -0
  400. package/dist/server-MDmdWHob.js +1447 -0
  401. package/dist/server-N9LnLQCS.js +1447 -0
  402. package/dist/session-store-C6Otslf9.js +5 -0
  403. package/dist/session-store-Cmfnvuw9.js +141 -0
  404. package/dist/session-store-CuR9DgRf.js +5 -0
  405. package/dist/session-store-Cx1RMBhS.js +5 -0
  406. package/dist/session-store-DPPHkJBn.js +5 -0
  407. package/dist/session-store-DWLCWQFS.js +141 -0
  408. package/dist/session-store-qGufR_m5.js +141 -0
  409. package/dist/session-store-sUpA509O.js +141 -0
  410. package/dist/sessions-tools-9Z8TtdmP.js +5 -0
  411. package/dist/sessions-tools-BAZnoQLp.js +95 -0
  412. package/dist/sessions-tools-Bb_zF947.js +95 -0
  413. package/dist/sessions-tools-ClrKqLII.js +131 -0
  414. package/dist/sessions-tools-DFe23ZDD.js +5 -0
  415. package/dist/sessions-tools-JHSZ6Bns.js +5 -0
  416. package/dist/sessions-tools-TsRdeFb7.js +95 -0
  417. package/dist/sessions-tools-nYP3Agfs.js +5 -0
  418. package/dist/skill-loader-9jg876RH.js +160 -0
  419. package/dist/skill-loader-CM4KWQ7_.js +160 -0
  420. package/dist/skill-loader-CS3OP4Lr.js +160 -0
  421. package/dist/skill-loader-CnJDLNbY.js +7 -0
  422. package/dist/skill-loader-DRLgt5V2.js +160 -0
  423. package/dist/skill-loader-DVpEgYV2.js +7 -0
  424. package/dist/skill-loader-Df5T_UFl.js +7 -0
  425. package/dist/skill-loader-DxE-gZkT.js +7 -0
  426. package/dist/skill-runtime-8Xh5874w.js +104 -0
  427. package/dist/skill-runtime-B3aUdWKh.js +104 -0
  428. package/dist/skill-runtime-BKyhYvpW.js +5 -0
  429. package/dist/skill-runtime-BLkXA1mO.js +104 -0
  430. package/dist/skill-runtime-BMk-h6Dl.js +5 -0
  431. package/dist/skill-runtime-BP0kZfmM.js +5 -0
  432. package/dist/skill-runtime-BaTX-RGy.js +5 -0
  433. package/dist/skill-runtime-CB9tnc-P.js +104 -0
  434. package/dist/skill-runtime-CLK5HTVE.js +5 -0
  435. package/dist/skill-runtime-COyc3Bci.js +104 -0
  436. package/dist/skill-runtime-CvDXX7wN.js +5 -0
  437. package/dist/skill-runtime-D4REZnhY.js +104 -0
  438. package/dist/skill-runtime-D6-rGzX1.js +104 -0
  439. package/dist/skill-runtime-DQRi9sIf.js +5 -0
  440. package/dist/skill-runtime-DRd56NWK.js +104 -0
  441. package/dist/skill-runtime-Dej1Yr5V.js +5 -0
  442. package/dist/src-6dmkVQGq.js +63 -0
  443. package/dist/src-7yBXPAs6.js +315 -0
  444. package/dist/src-9GyYED0T.js +63 -0
  445. package/dist/src-B9L6qb-Z.js +462 -0
  446. package/dist/src-BEjIVOmq.js +63 -0
  447. package/dist/src-BOnuFlI4.js +23 -0
  448. package/dist/src-BY3On_zO.js +462 -0
  449. package/dist/src-BdgKAlMQ.js +20 -0
  450. package/dist/src-BkEtHLLy.js +462 -0
  451. package/dist/src-C52A3OwC.js +301 -0
  452. package/dist/src-C8cbfjat.js +173 -0
  453. package/dist/src-CDeWGebw.js +315 -0
  454. package/dist/src-CNAVUFC6.js +462 -0
  455. package/dist/src-CQ2lZvdF.js +462 -0
  456. package/dist/src-Cdwn9xpG.js +462 -0
  457. package/dist/src-CyCLoqIP.js +63 -0
  458. package/dist/src-D-OND_62.js +301 -0
  459. package/dist/src-DB6dPsbY.js +63 -0
  460. package/dist/src-DE4mH0BB.js +63 -0
  461. package/dist/src-DFo8lVfV.js +300 -0
  462. package/dist/src-DJbpP4Gs.js +462 -0
  463. package/dist/src-DPfnArdr.js +300 -0
  464. package/dist/src-DTft7Qvt.js +63 -0
  465. package/dist/src-DgvFah8g.js +153 -0
  466. package/dist/src-TYvV_oFO.js +63 -0
  467. package/dist/src-krHV0uVj.js +315 -0
  468. package/dist/src-lltU5gkh.js +20 -0
  469. package/dist/src-tF0sBtr3.js +462 -0
  470. package/dist/sub-agent-tools-BwOxHu6f.js +39 -0
  471. package/dist/sub-agent-tools-CE8pVUdb.js +39 -0
  472. package/dist/sub-agent-tools-CJVEIF1F.js +39 -0
  473. package/dist/sub-agent-tools-CQWNfYn_.js +39 -0
  474. package/dist/sub-agent-tools-CViiqebO.js +39 -0
  475. package/dist/sub-agent-tools-DgT4jUHC.js +39 -0
  476. package/dist/sub-agent-tools-Lbin_4S3.js +39 -0
  477. package/dist/sub-agent-tools-f4X1M-li.js +39 -0
  478. package/dist/tool-policy-1EBdJkSG.js +190 -0
  479. package/dist/tool-policy-B1bL0X-E.js +189 -0
  480. package/dist/tool-policy-CfWEnRxy.js +190 -0
  481. package/dist/tool-policy-NLbucl5-.js +189 -0
  482. package/dist/tool-policy-yNVTLNDY.js +189 -0
  483. package/dist/tts-elevenlabs-Bk24wQ2V.js +64 -0
  484. package/dist/tts-elevenlabs-CCeOqqrh.js +64 -0
  485. package/dist/tts-elevenlabs-CHrJZuNW.js +64 -0
  486. package/dist/tts-elevenlabs-DHqQsqMz.js +64 -0
  487. package/dist/tts-elevenlabs-TUKPkSV2.js +64 -0
  488. package/dist/vision-BMRKyu3c.js +167 -0
  489. package/dist/vision-CW1YCKed.js +167 -0
  490. package/dist/vision-DPLmrwUA.js +167 -0
  491. package/dist/vision-Q4EOcBS6.js +167 -0
  492. package/dist/vision-XyAGO5La.js +167 -0
  493. package/dist/vision-tools-B5DNR28M.js +5 -0
  494. package/dist/vision-tools-CC9HSuvN.js +51 -0
  495. package/dist/vision-tools-Ca3OhtdX.js +51 -0
  496. package/dist/vision-tools-CpU2fSRv.js +51 -0
  497. package/dist/vision-tools-Ct52djW8.js +51 -0
  498. package/dist/vision-tools-DF7N2DDI.js +5 -0
  499. package/dist/vision-tools-DVYx9-Jw.js +5 -0
  500. package/dist/vision-tools-DyP6lRA5.js +5 -0
  501. package/dist/vision-tools-RIVKEUeY.js +5 -0
  502. package/dist/vision-tools-kYb3effk.js +51 -0
  503. package/dist/voice-transcription-B1D1rpca.js +170 -0
  504. package/dist/voice-transcription-Bz2y0nPK.js +170 -0
  505. package/dist/voice-transcription-CVFcHpPF.js +170 -0
  506. package/dist/voice-transcription-CvQuWPYK.js +170 -0
  507. package/dist/voice-transcription-YqndiLA7.js +170 -0
  508. package/dist/website-watch-tools-B036Y8OQ.js +176 -0
  509. package/dist/website-watch-tools-B8CHie8v.js +5 -0
  510. package/dist/website-watch-tools-Brk5oIEv.js +176 -0
  511. package/dist/website-watch-tools-CJqRj_GB.js +5 -0
  512. package/dist/website-watch-tools-CSSEu3Qy.js +5 -0
  513. package/dist/website-watch-tools-D92dkYZa.js +176 -0
  514. package/dist/website-watch-tools-Du_a8lXq.js +176 -0
  515. package/dist/website-watch-tools-UdTBGgRk.js +5 -0
  516. package/package.json +5 -3
  517. package/static/chat.html +18 -4
  518. package/static/web/assets/index-D2ekZ-uM.js +75 -0
  519. package/static/web/assets/index-D_9lvvup.css +1 -0
  520. package/static/web/index.html +2 -2
  521. package/static/web/assets/index-B5N1LHGR.css +0 -1
  522. package/static/web/assets/index-Bf8pf7Wg.js +0 -75
package/dist/run-main.js CHANGED
@@ -1,21 +1,21 @@
1
1
  const require_chunk = require('./chunk-jS-bbMI5.js');
2
2
  const require_paths = require('./paths-AIyBxIzm.js');
3
3
  const require_paths$1 = require('./paths-DPovhojT.js');
4
- require('./env-resolve-CHxjGo8u.js');
5
- const require_config = require('./config-DGAAJ49A.js');
6
- require('./server-vbYKep6r.js');
7
- const require_daemon = require('./daemon-DcE6vcjH.js');
4
+ require('./env-resolve-C0R8R7pb.js');
5
+ const require_config = require('./config-BzK_Xl4Y.js');
6
+ require('./server-DVxVLu_G.js');
7
+ const require_daemon = require('./daemon-BldYSrDj.js');
8
8
  const require_gateway = require('./gateway-CzI8dnlS.js');
9
- require('./providers-DP8T0QCR.js');
10
- const require_onboard = require('./onboard-CjzqTYq3.js');
9
+ require('./providers-Cs1h_TJA.js');
10
+ const require_onboard = require('./onboard-W5DsxVf2.js');
11
11
  require('./theme-CLXvI6Hr.js');
12
- const require_banner = require('./banner-B2Qo91lq.js');
13
- const require_hub = require('./hub-Bb_dYECE.js');
12
+ const require_banner = require('./banner-DYzQ8cCb.js');
13
+ const require_hub = require('./hub-DAkEVTEy.js');
14
14
  const require_update_check = require('./update-check-DlUFL81n.js');
15
- const require_manager = require('./manager-DYfzqckn.js');
16
- const require_memory = require('./memory-BCYvdqwo.js');
17
- const require_loader = require('./loader-DIPs649t.js');
18
- const require_agents_routing = require('./agents-routing-Cpg20-1e.js');
15
+ const require_manager = require('./manager-Dz2eKYqo.js');
16
+ const require_memory = require('./memory-DPSWQBc0.js');
17
+ const require_loader = require('./loader-DMMb9emn.js');
18
+ const require_agents_routing = require('./agents-routing-B0D0vcp5.js');
19
19
  const require_pairing = require('./pairing-B4NoBvyE.js');
20
20
  const require_doctor = require('./doctor-C6nAGdH8.js');
21
21
  const require_health = require('./health-BMUmUNoe.js');
@@ -346,6 +346,7 @@ var GatewayManager$1 = class {
346
346
  return crypto.default.randomBytes(32).toString("hex");
347
347
  }
348
348
  async isRunning(port) {
349
+ if (typeof port !== "number" || port < 1 || port > 65535) return false;
349
350
  return new Promise((resolve) => {
350
351
  const socket = new net.default.Socket();
351
352
  socket.setTimeout(500);
@@ -674,17 +675,26 @@ const CHANNELS = [
674
675
  platforms: ["all"],
675
676
  tokenLabel: "Telegram Bot Token",
676
677
  tokenHint: "Get from @BotFather → /newbot",
677
- extraFields: [{
678
- name: "dmPolicy",
679
- label: "DM policy",
680
- hint: "pairing (default) | allowlist | open | disabled",
681
- required: false
682
- }, {
683
- name: "groupActivation",
684
- label: "Group activation",
685
- hint: "mention (default) | always",
686
- required: false
687
- }],
678
+ extraFields: [
679
+ {
680
+ name: "dmPolicy",
681
+ label: "DM policy",
682
+ hint: "pairing (default) | allowlist | open | disabled",
683
+ required: false
684
+ },
685
+ {
686
+ name: "groupActivation",
687
+ label: "Group activation",
688
+ hint: "mention (default) | always",
689
+ required: false
690
+ },
691
+ {
692
+ name: "inlineMode",
693
+ label: "Inline mode",
694
+ hint: "Use @botname <query> in any chat. Enable via BotFather /setinline first.",
695
+ required: false
696
+ }
697
+ ],
688
698
  setupSteps: [
689
699
  "1. Open Telegram → @BotFather → /newbot. Save the token.",
690
700
  "2. Config: channels.telegram.botToken, dmPolicy (default: pairing), groups.",
@@ -734,6 +744,12 @@ const CHANNELS = [
734
744
  label: "DM policy",
735
745
  hint: "\"pairing\" (default) | \"allowlist\" | \"open\" | \"none\"",
736
746
  required: false
747
+ },
748
+ {
749
+ name: "autoArchiveDuration",
750
+ label: "Thread auto-archive duration (min)",
751
+ hint: "60=1h (default) | 1440=1d | 4320=3d | 10080=1w",
752
+ required: false
737
753
  }
738
754
  ],
739
755
  status: "recommended",
@@ -1957,6 +1973,66 @@ const ZALO_PERSONAL = {
1957
1973
  notes: "Zalo Web cookie auth. DMs only. No groups. Text chunked ~2000 chars."
1958
1974
  };
1959
1975
  CHANNELS.push(ZALO_PERSONAL);
1976
+ const NOTION = {
1977
+ id: "notion",
1978
+ name: "Notion",
1979
+ emoji: "📋",
1980
+ requiresGateway: false,
1981
+ supportsDM: false,
1982
+ platforms: ["all"],
1983
+ tokenLabel: "Notion Integration Token",
1984
+ tokenHint: "notion.so/my-integrations → New integration → Copy token",
1985
+ extraFields: [{
1986
+ name: "defaultDatabaseId",
1987
+ label: "Default Database ID",
1988
+ hint: "Paste the 32-char ID from your Notion DB URL",
1989
+ required: false
1990
+ }, {
1991
+ name: "defaultPageId",
1992
+ label: "Default Page ID",
1993
+ hint: "Optional: page to write notes to by default",
1994
+ required: false
1995
+ }],
1996
+ setupSteps: [
1997
+ "1. Go to notion.so/my-integrations → New integration → give it a name.",
1998
+ "2. Copy the Internal Integration Token (starts with secret_...).",
1999
+ "3. Open the Notion page/database you want to use → Share → Invite your integration.",
2000
+ "4. Set NOTION_TOKEN in your env or config: channels.notion.token.",
2001
+ "5. Optional: set defaultDatabaseId to auto-create pages in a DB.",
2002
+ "",
2003
+ " 🔗 docs/notion.md — full setup"
2004
+ ],
2005
+ status: "available",
2006
+ notes: "Read/write pages, create DB entries, search workspace. Needs explicit page share."
2007
+ };
2008
+ CHANNELS.push(NOTION);
2009
+ const SHAZAM = {
2010
+ id: "shazam",
2011
+ name: "Shazam (Song Recognition)",
2012
+ emoji: "🎵",
2013
+ requiresGateway: false,
2014
+ supportsDM: false,
2015
+ platforms: ["all"],
2016
+ tokenLabel: "RapidAPI Key (Shazam API)",
2017
+ tokenHint: "rapidapi.com/apidojo/api/shazam → Subscribe → Copy X-RapidAPI-Key",
2018
+ extraFields: [{
2019
+ name: "autoRecognize",
2020
+ label: "Auto-recognize on audio messages",
2021
+ hint: "true | false (default)",
2022
+ required: false
2023
+ }],
2024
+ setupSteps: [
2025
+ "1. Sign up at rapidapi.com → search \"Shazam\" → subscribe to the free plan.",
2026
+ "2. Copy your X-RapidAPI-Key from the API dashboard.",
2027
+ "3. Set SHAZAM_API_KEY in your env or config: channels.shazam.apiKey.",
2028
+ "4. Send an audio clip or hum detection query to identify a song.",
2029
+ "",
2030
+ " 🔗 docs/shazam.md — full setup"
2031
+ ],
2032
+ status: "available",
2033
+ notes: "Song recognition via Shazam API on RapidAPI. Free tier: 500 req/month."
2034
+ };
2035
+ CHANNELS.push(SHAZAM);
1960
2036
 
1961
2037
  //#endregion
1962
2038
  //#region src/commands/channels/add.ts
@@ -2527,6 +2603,22 @@ var init_queue = require_chunk.__esm({ "src/delivery/queue.ts"() {
2527
2603
  //#endregion
2528
2604
  //#region src/cli/run-main.ts
2529
2605
  require_device_auth_store.init_device_auth_store();
2606
+ function getGitShortHash() {
2607
+ try {
2608
+ const { execSync } = require("child_process");
2609
+ return execSync("git rev-parse --short HEAD", { stdio: [
2610
+ "ignore",
2611
+ "pipe",
2612
+ "ignore"
2613
+ ] }).toString().trim();
2614
+ } catch {
2615
+ return "";
2616
+ }
2617
+ }
2618
+ const cliVersion = (() => {
2619
+ const h = getGitShortHash();
2620
+ return h ? `5.4.2+${h}` : "5.4.2";
2621
+ })();
2530
2622
  process.on("unhandledRejection", (reason) => {
2531
2623
  console.error("[hyperclaw] Unhandled rejection:", reason);
2532
2624
  process.exit(1);
@@ -2539,34 +2631,41 @@ function sanitizeForLog(value) {
2539
2631
  return String(value ?? "").replace(/[\r\n\t]+/g, " ").replace(/[^\x20-\x7e]+/g, "?").slice(0, 200);
2540
2632
  }
2541
2633
  const program = new commander.Command();
2542
- program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.4.0").option("--profile <name>", "Use an isolated gateway profile. Auto-scopes HYPERCLAW_STATE_DIR and HYPERCLAW_CONFIG_PATH. Required for multi-gateway setups (rescue bot, staging, etc.). Example: hyperclaw --profile rescue gateway --port 19001").addHelpText("after", `
2543
- Full commands reference: READMECOMMAND.md (all commands and options)
2634
+ program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version(cliVersion).option("--profile <name>", "Use an isolated gateway profile. Auto-scopes HYPERCLAW_STATE_DIR and HYPERCLAW_CONFIG_PATH. Required for multi-gateway setups (rescue bot, staging, etc.). Example: hyperclaw --profile rescue gateway --port 19001").addHelpText("after", `
2635
+ Full reference: READMECOMMAND.md (all commands + options)
2544
2636
 
2545
- Main command groups:
2546
- init, onboard, quickstart, setup
2547
- gateway status|start|stop|restart, daemon start|stop|restart|status|logs
2548
- web 🌐 React Web UI (auto npm install + dev server)
2549
- chat 💬 terminal chat
2550
- agent -m "message"
2551
- channels list|add|remove|login|status
2552
- hooks list|enable|disable|info
2553
- pairing list|approve, devices list|pair|approve|reject|unpair
2554
- ✓ hub, skill search|list|install
2555
- memory show|add-rule|add-fact|search|clear|save
2556
- config show|set-key|schema, secrets audit|set|apply|reload
2557
- doctor [--fix], health, security audit
2558
- status, dashboard
2559
- threads list|terminate, canvas show|add|clear|export
2560
- mcp list|add|remove|probe, node list|add|probe|remove
2561
- cron list|add|remove, webhooks list|remove|toggle, logs
2562
- ✓ voice, theme list|set|preview, workspace init|show
2563
- pc status|enable|disable|log|run
2564
- bot status|setup|start|stop
2565
- auth add|remove|oauth|setup-token
2566
- osint [workflow], deploy, update, message send
2637
+ Command groups:
2638
+ init, onboard, quickstart, setup
2639
+ gateway status|start|stop|restart|config, daemon start|stop|restart|status|logs|install|uninstall
2640
+ web (--port, --skip-install), chat (--session, --model, --workspace)
2641
+ agent -m "message" (--thinking, --model, --multi-step, --parallel)
2642
+ channels list|add|remove|login|status
2643
+ hooks list|info|enable|disable|install
2644
+ pairing list|approve, devices list|pair|approve|reject|unpair
2645
+ hub, hub search [query], hub install <id>, hub list, hub scan <id>, hub marketplace
2646
+ skill search|list|install (alias for hub)
2647
+ memory show|add-rule|add-fact|add-image|add-audio|search|search-vector|auto-show|clear|save
2648
+ rag add <path>
2649
+ backup create|verify <dir>|restore <dir>
2650
+ config show|set-key|set-service-key|schema
2651
+ secrets audit|set|apply|reload|remove|credentials
2652
+ doctor [--fix], health, security audit
2653
+ status (--all, --deep), dashboard
2654
+ acp, threads create (--resume <id>)|list|terminate, canvas show|add|clear|export
2655
+ mcp list|add|remove|probe [id], node list|add|probe [id]|remove|queue [nodeId]
2656
+ nodes, delivery status|retry
2657
+ cron list|add|remove (-s --skill), webhooks list|remove|toggle
2658
+ gmail watch-setup, auto-reply list|toggle|remove
2659
+ voice-call, voice, theme list|set|preview
2660
+ workspace init|show, pc status|enable|disable|log|run
2661
+ bot status|setup|start|stop
2662
+ auth add|remove|oauth|setup-token|oauth-set
2663
+ developer-key create|list|revoke
2664
+ agents bindings|bind|unbind, sandbox explain
2665
+ message send, deploy, update, osint [workflow], logs (--follow)
2567
2666
 
2568
- Examples: hyperclaw onboard | hyperclaw chat | hyperclaw gateway status
2569
- Run "hyperclaw" with no args for quick actions, or see READMECOMMAND.md for full list.`).hook("preAction", (thisCommand) => {
2667
+ Examples: hyperclaw onboard | hyperclaw chat | hyperclaw hub search
2668
+ Full list: READMECOMMAND.md`).hook("preAction", (thisCommand) => {
2570
2669
  const profile = thisCommand.opts().profile;
2571
2670
  if (profile) {
2572
2671
  const os$2 = require("os");
@@ -2710,8 +2809,8 @@ sandboxCmd.command("explain").description("Show effective sandbox mode, tool pol
2710
2809
  }
2711
2810
  const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
2712
2811
  const toolsCfg = cfg?.tools ?? {};
2713
- const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-QXF3MMxu.js"));
2714
- const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
2812
+ const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-CfWEnRxy.js"));
2813
+ const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
2715
2814
  const allTools = [
2716
2815
  ...getBuiltinTools(),
2717
2816
  ...getSessionsTools(() => null),
@@ -2875,15 +2974,70 @@ msgCmd.command("send").description("Send a message via a configured channel").op
2875
2974
  await sendMessage(opts);
2876
2975
  process.exit(0);
2877
2976
  });
2878
- program.command("hub").description("Skill hub — browse marketplace, install, scan skills").option("-i, --install <id>", "Install skill").option("-s, --scan <id>", "Security scan a skill").option("-m, --marketplace", "ClawHub-style marketplace view (installed + bundled)").option("--force", "Force install (bypass risk block)").option("--hide-suspicious", "Hide suspicious/dangerous skills").action(async (opts) => {
2977
+ const hubCmd = program.command("hub").description("Skill marketplace — browse, search, install community skills");
2978
+ hubCmd.command("search [query]").description("Search skills (ClawHub + bundled registry)").option("-c, --category <cat>", "Filter by category").action(async (query, opts) => {
2979
+ const hub = new require_hub.SkillHub();
2980
+ const q = query || "";
2981
+ const skills = await hub.searchClawHub(q, opts.category);
2982
+ if (skills.length === 0) {
2983
+ console.log(chalk.default.gray(q ? `No skills found for "${q}"` : "Browse: hyperclaw hub"));
2984
+ process.exit(0);
2985
+ return;
2986
+ }
2987
+ console.log(chalk.default.bold.hex("#06b6d4")("\n Skill marketplace — search results:\n"));
2988
+ for (const s of skills) {
2989
+ const stars = "★".repeat(Math.round(s.rating || 0)) + "☆".repeat(5 - Math.round(s.rating || 0));
2990
+ console.log(` ${chalk.default.bold(s.name || s.id)} ${chalk.default.gray(s.author || "")} ${chalk.default.hex("#06b6d4")(stars)} ${chalk.default.gray((s.downloads || 0).toLocaleString())} dl`);
2991
+ console.log(` ${chalk.default.gray(s.description || "")}`);
2992
+ console.log(` ${chalk.default.hex("#06b6d4")("hyperclaw hub install " + (s.id || s.name))}\n`);
2993
+ }
2994
+ process.exit(0);
2995
+ });
2996
+ hubCmd.command("install <id>").description("Install skill from registry (or bundled)").option("-v, --version <ver>", "Pin version").option("--force", "Force install (bypass risk block)").action(async (id, opts) => {
2997
+ const hub = new require_hub.SkillHub();
2998
+ const ora$4 = (await import("ora")).default;
2999
+ const s = ora$4(`Installing ${id}...`).start();
3000
+ try {
3001
+ const dest = await hub.installFromClawHub(id, opts.version);
3002
+ s.succeed(`Installed to ${dest}`);
3003
+ } catch (e) {
3004
+ const match = require_hub.SKILL_REGISTRY.find((x) => x.id === id);
3005
+ if (match) {
3006
+ await hub.install(id, !!opts?.force);
3007
+ s.succeed(`Installed bundled skill: ${match.name}`);
3008
+ } else s.fail(e.message);
3009
+ }
3010
+ process.exit(0);
3011
+ });
3012
+ hubCmd.command("list").description("List installed skills").action(async () => {
3013
+ const hub = new require_hub.SkillHub();
3014
+ const installed = await hub.getInstalled();
3015
+ console.log(chalk.default.bold.hex("#06b6d4")("\n Installed skills:\n"));
3016
+ for (const s of installed) {
3017
+ const src = require_hub.SKILL_REGISTRY.some((r) => r.id === s.id) ? "" : " (registry)";
3018
+ console.log(` ${chalk.default.hex("#06b6d4")("✓")} ${s.name} ${chalk.default.gray(`(${s.id})${src}`)}`);
3019
+ }
3020
+ if (installed.length === 0) console.log(chalk.default.gray(" No skills installed. Run: hyperclaw hub search <query> or hyperclaw hub\n"));
3021
+ else console.log();
3022
+ process.exit(0);
3023
+ });
3024
+ hubCmd.command("scan <id>").description("Security scan a skill").action(async (id) => {
2879
3025
  const hub = new require_hub.SkillHub();
2880
- if (opts.scan) await hub.scan(opts.scan);
2881
- else if (opts.install) await hub.install(opts.install, opts.force);
2882
- else if (opts.marketplace) await hub.showMarketplace({ hideSuspicious: opts.hideSuspicious });
2883
- else await hub.showHub(opts.hideSuspicious);
3026
+ await hub.scan(id);
2884
3027
  process.exit(0);
2885
3028
  });
2886
- const skillCmd = program.command("skill").description("ClawHub search and install skills from registry");
3029
+ hubCmd.command("marketplace").description("Browse marketplace (installed + bundled)").option("--hide-suspicious", "Hide suspicious/dangerous").action(async (opts) => {
3030
+ const hub = new require_hub.SkillHub();
3031
+ await hub.showMarketplace({ hideSuspicious: opts.hideSuspicious });
3032
+ process.exit(0);
3033
+ });
3034
+ hubCmd.option("--hide-suspicious", "Hide suspicious skills");
3035
+ hubCmd.action(async (opts) => {
3036
+ const hub = new require_hub.SkillHub();
3037
+ await hub.showHub(opts?.hideSuspicious);
3038
+ process.exit(0);
3039
+ });
3040
+ const skillCmd = program.command("skill").description("Skills — alias for hyperclaw hub (search, install, list)");
2887
3041
  skillCmd.command("search [query]").description("Search ClawHub for skills").option("-c, --category <cat>", "Filter by category").action(async (query, opts) => {
2888
3042
  const hub = new require_hub.SkillHub();
2889
3043
  const q = query || "";
@@ -3194,8 +3348,153 @@ memCmd.command("add-rule <rule>").description("Append a global rule to AGENTS.md
3194
3348
  await new require_memory.MemoryManager().appendRule(rule);
3195
3349
  process.exit(0);
3196
3350
  });
3197
- memCmd.command("add-fact <fact>").description("Add a fact to MEMORY.md").action(async (fact) => {
3198
- await new require_memory.MemoryManager().addMemory(fact);
3351
+ memCmd.command("add-image <path>").description("Add image to multimodal vector memory (requires memory-lancedb + embeddingProvider: gemini + GOOGLE_AI_API_KEY)").option("-c, --caption <text>", "Caption for the image").action(async (imagePath, opts) => {
3352
+ try {
3353
+ const pkg = "@hyperclaw/memory-lancedb";
3354
+ const mod = await (async () => {
3355
+ try {
3356
+ return await import(pkg);
3357
+ } catch {
3358
+ return null;
3359
+ }
3360
+ })();
3361
+ if (!mod?.VectorMemoryService) throw new Error("Install: npm install @hyperclaw/memory-lancedb vectordb");
3362
+ const cfg = await new require_manager.ConfigManager().load();
3363
+ const apiKey = process.env.GOOGLE_AI_API_KEY ?? (cfg?.provider?.providerId === "google" ? cfg?.provider?.apiKey : void 0);
3364
+ if (!apiKey) throw new Error("GOOGLE_AI_API_KEY required for image indexing");
3365
+ const path$5 = await import("path");
3366
+ const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3367
+ const svc = new mod.VectorMemoryService({
3368
+ dbPath: path$5.join(getHyperClawDir$1(), "memory-lancedb"),
3369
+ apiKey,
3370
+ embeddingProvider: "gemini"
3371
+ });
3372
+ await svc.addImage(imagePath, opts.caption);
3373
+ console.log(chalk.default.green(`\n ✓ Image indexed: ${imagePath}\n`));
3374
+ } catch (e) {
3375
+ console.log(chalk.default.yellow(`\n ${e.message}\n`));
3376
+ process.exit(1);
3377
+ }
3378
+ process.exit(0);
3379
+ });
3380
+ memCmd.command("add-audio <path>").description("Add audio to multimodal vector memory (requires memory-lancedb + embeddingProvider: gemini + GOOGLE_AI_API_KEY)").option("-t, --transcript <text>", "Transcript for the audio").action(async (audioPath, opts) => {
3381
+ try {
3382
+ const pkg = "@hyperclaw/memory-lancedb";
3383
+ const mod = await (async () => {
3384
+ try {
3385
+ return await import(pkg);
3386
+ } catch {
3387
+ return null;
3388
+ }
3389
+ })();
3390
+ if (!mod?.VectorMemoryService) throw new Error("Install: npm install @hyperclaw/memory-lancedb vectordb");
3391
+ const cfg = await new require_manager.ConfigManager().load();
3392
+ const apiKey = process.env.GOOGLE_AI_API_KEY ?? (cfg?.provider?.providerId === "google" ? cfg?.provider?.apiKey : void 0);
3393
+ if (!apiKey) throw new Error("GOOGLE_AI_API_KEY required for audio indexing");
3394
+ const path$5 = await import("path");
3395
+ const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3396
+ const svc = new mod.VectorMemoryService({
3397
+ dbPath: path$5.join(getHyperClawDir$1(), "memory-lancedb"),
3398
+ apiKey,
3399
+ embeddingProvider: "gemini"
3400
+ });
3401
+ await svc.addAudio(audioPath, opts.transcript);
3402
+ console.log(chalk.default.green(`\n ✓ Audio indexed: ${audioPath}\n`));
3403
+ } catch (e) {
3404
+ console.log(chalk.default.yellow(`\n ${e.message}\n`));
3405
+ process.exit(1);
3406
+ }
3407
+ process.exit(0);
3408
+ });
3409
+ const ragCmd = program.command("rag").description("RAG document ingestion — chunk and index into vector memory");
3410
+ ragCmd.command("add <path>").description("Chunk file and add to vector DB (requires memory-lancedb + OPENAI_API_KEY)").option("-s, --chunk-size <n>", "Chunk size", "1000").option("-o, --overlap <n>", "Chunk overlap", "200").action(async (filePath, opts) => {
3411
+ try {
3412
+ const fs$7 = await import("fs-extra");
3413
+ const pathMod = await import("path");
3414
+ const { chunkText } = await Promise.resolve().then(() => require("./src-BOnuFlI4.js"));
3415
+ const pkg = "@hyperclaw/memory-lancedb";
3416
+ const mod = await import(pkg).catch(() => null);
3417
+ if (!mod?.VectorMemoryService) throw new Error("Install: npm install @hyperclaw/rag @hyperclaw/memory-lancedb vectordb openai");
3418
+ const cfg = await new require_manager.ConfigManager().load();
3419
+ const absPath = pathMod.resolve(filePath);
3420
+ if (!await fs$7.pathExists(absPath)) throw new Error(`File not found: ${absPath}`);
3421
+ const content = await fs$7.readFile(absPath, "utf8");
3422
+ const size = parseInt(opts.chunkSize, 10) || 1e3;
3423
+ const overlap = parseInt(opts.overlap, 10) || 200;
3424
+ const chunks = chunkText(content, {
3425
+ size,
3426
+ overlap
3427
+ });
3428
+ const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3429
+ const svc = new mod.VectorMemoryService({
3430
+ dbPath: pathMod.join(getHyperClawDir$1(), "memory-lancedb"),
3431
+ apiKey: cfg?.provider?.apiKey ?? process.env.OPENAI_API_KEY
3432
+ });
3433
+ await svc.init();
3434
+ for (let i = 0; i < chunks.length; i++) await svc.addMemory(chunks[i], "rag", `file:${absPath}:chunk:${i}`);
3435
+ console.log(chalk.default.green(`\n ✓ Indexed ${chunks.length} chunks from ${pathMod.basename(absPath)}\n`));
3436
+ } catch (e) {
3437
+ console.log(chalk.default.yellow(`\n ${e.message}\n`));
3438
+ process.exit(1);
3439
+ }
3440
+ process.exit(0);
3441
+ });
3442
+ memCmd.command("add-fact <fact>").description("Add a fact to MEMORY.md (and vector DB when memory-lancedb is available)").action(async (fact) => {
3443
+ let vectorStore;
3444
+ try {
3445
+ const pkg = "@hyperclaw/memory-lancedb";
3446
+ const mod = await (async () => {
3447
+ try {
3448
+ return await import(pkg);
3449
+ } catch {
3450
+ return null;
3451
+ }
3452
+ })();
3453
+ const VectorMemoryService = mod?.VectorMemoryService;
3454
+ const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3455
+ const path$5 = await import("path");
3456
+ if (!VectorMemoryService) throw new Error("not available");
3457
+ const svc = new VectorMemoryService({
3458
+ dbPath: path$5.join(getHyperClawDir$1(), "memory-lancedb"),
3459
+ apiKey: (await new require_manager.ConfigManager().load())?.provider?.apiKey
3460
+ });
3461
+ await svc.init();
3462
+ vectorStore = { addMemory: (t) => svc.addMemory(t) };
3463
+ } catch {}
3464
+ await new require_memory.MemoryManager().addMemory(fact, vectorStore);
3465
+ process.exit(0);
3466
+ });
3467
+ const backupCmd = program.command("backup").description("Backup and restore local HyperClaw state");
3468
+ backupCmd.command("create").description("Create a timestamped backup of hyperclaw.json, AGENTS.md, MEMORY.md, etc.").option("-o, --output <dir>", "Output directory (default: ~/.hyperclaw/backups)").action(async (opts) => {
3469
+ const { createBackup } = await Promise.resolve().then(() => require("./backup-CtHJEqGr.js"));
3470
+ const dir = await createBackup(opts.output);
3471
+ console.log(chalk.default.green(`\n ✓ Backup created: ${dir}\n`));
3472
+ process.exit(0);
3473
+ });
3474
+ backupCmd.command("verify <dir>").description("Verify backup integrity (checksums)").action(async (dir) => {
3475
+ const { verifyBackup } = await Promise.resolve().then(() => require("./backup-CtHJEqGr.js"));
3476
+ const { ok, errors } = await verifyBackup(dir);
3477
+ if (ok) console.log(chalk.default.green("\n ✓ Backup OK\n"));
3478
+ else console.log(chalk.default.red("\n ✗ Errors:\n"), errors.map((e) => " " + e).join("\n"), "\n");
3479
+ process.exit(ok ? 0 : 1);
3480
+ });
3481
+ backupCmd.command("restore <dir>").description("Restore from backup (overwrites local files)").option("-y, --yes", "Skip confirmation").action(async (dir, opts) => {
3482
+ const { restoreBackup } = await Promise.resolve().then(() => require("./backup-CtHJEqGr.js"));
3483
+ if (!opts.yes) {
3484
+ console.log(chalk.default.yellow(`\n This will overwrite files in ~/.hyperclaw. Confirm? (y/N) `));
3485
+ const readline$1 = (await import("readline")).createInterface({
3486
+ input: process.stdin,
3487
+ output: process.stdout
3488
+ });
3489
+ const line = await new Promise((r) => readline$1.question("", r));
3490
+ readline$1.close();
3491
+ if (line?.toLowerCase() !== "y") {
3492
+ console.log(chalk.default.gray("\n Aborted.\n"));
3493
+ process.exit(0);
3494
+ }
3495
+ }
3496
+ await restoreBackup(dir);
3497
+ console.log(chalk.default.green("\n ✓ Restored.\n"));
3199
3498
  process.exit(0);
3200
3499
  });
3201
3500
  const cfgCmd = program.command("config").description("Configuration management");
@@ -3253,7 +3552,7 @@ cfgCmd.command("set-key <KEY=value>").description("Set provider API key or confi
3253
3552
  xai: "xai"
3254
3553
  };
3255
3554
  const pid = keyToProvider[key] ?? keyToProvider[key.toLowerCase()] ?? cfg?.provider?.providerId ?? key.toLowerCase();
3256
- const { validateApiKeyFormat } = await Promise.resolve().then(() => require("./api-key-validation-DgOBmp8Y.js"));
3555
+ const { validateApiKeyFormat } = await Promise.resolve().then(() => require("./api-key-validation-DrMrLEa0.js"));
3257
3556
  const formatErr = validateApiKeyFormat(pid, value);
3258
3557
  if (formatErr) {
3259
3558
  console.log(chalk.default.yellow(`\n ⚠ ${formatErr}\n`));
@@ -3315,7 +3614,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
3315
3614
  cfgCmd.command("schema").description("Show configuration schema").action(() => {
3316
3615
  console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/hyperclaw.json\n"));
3317
3616
  const schema = {
3318
- version: "string (e.g. \"5.4.0\")",
3617
+ version: "string (e.g. \"5.4.1\")",
3319
3618
  workspaceName: "string",
3320
3619
  provider: {
3321
3620
  providerId: "string",
@@ -3370,11 +3669,11 @@ devKeyCmd.command("revoke <id>").description("Revoke a developer key").action(as
3370
3669
  else console.log(chalk.default.red(` Key not found: ${id}\n`));
3371
3670
  process.exit(ok ? 0 : 1);
3372
3671
  });
3373
- program.command("deploy").description("Deploy gateway to cloud (Fly.io or Render)").option("-p, --platform <platform>", "Platform: fly | render", "fly").option("--dry-run", "Show commands without running").action(async (opts) => {
3672
+ program.command("deploy").description("One-click deploy to cloud (Fly.io, Render, Railway)").option("-p, --platform <platform>", "Platform: fly | render | railway", "fly").option("--dry-run", "Show commands without running").action(async (opts) => {
3374
3673
  const platform = (opts.platform ?? "fly").toLowerCase();
3375
3674
  const dryRun = !!opts.dryRun;
3376
3675
  if (platform === "fly") {
3377
- console.log(chalk.default.bold.hex("#06b6d4")("\n Deploy to Fly.io\n"));
3676
+ console.log(chalk.default.bold.hex("#06b6d4")("\n 🚀 Deploy to Fly.io\n"));
3378
3677
  if (dryRun) {
3379
3678
  console.log(chalk.default.gray(" Commands to run:"));
3380
3679
  console.log(chalk.default.gray(" fly launch # first time"));
@@ -3395,12 +3694,21 @@ program.command("deploy").description("Deploy gateway to cloud (Fly.io or Render
3395
3694
  }
3396
3695
  }
3397
3696
  } else if (platform === "render") {
3398
- console.log(chalk.default.bold.hex("#06b6d4")("\n Deploy to Render\n"));
3399
- console.log(chalk.default.gray(" 1. Push to GitHub and connect repo at https://render.com"));
3400
- console.log(chalk.default.gray(" 2. New Web Service → use render.yaml"));
3401
- console.log(chalk.default.gray(" 3. Set env: OPENROUTER_API_KEY, HYPERCLAW_GATEWAY_TOKEN\n"));
3697
+ console.log(chalk.default.bold.hex("#06b6d4")("\n 🚀 Deploy to Render\n"));
3698
+ console.log(chalk.default.gray(" 1. Push to GitHub and connect at https://render.com"));
3699
+ console.log(chalk.default.gray(" 2. New Web Service → connect repo, use render.yaml"));
3700
+ console.log(chalk.default.gray(" 3. Environment: OPENROUTER_API_KEY, HYPERCLAW_GATEWAY_TOKEN"));
3701
+ console.log(chalk.default.cyan("\n One-click: https://render.com/deploy\n"));
3702
+ } else if (platform === "railway") {
3703
+ console.log(chalk.default.bold.hex("#06b6d4")("\n 🚀 Deploy to Railway\n"));
3704
+ console.log(chalk.default.gray(" 1. Create project: https://railway.app/new"));
3705
+ console.log(chalk.default.gray(" 2. Deploy from GitHub or use Railway CLI:"));
3706
+ console.log(chalk.default.gray(" npm i -g @railway/cli && railway login"));
3707
+ console.log(chalk.default.gray(" railway init; railway add"));
3708
+ console.log(chalk.default.gray(" 3. Variables: OPENROUTER_API_KEY, HYPERCLAW_GATEWAY_TOKEN, PORT=18789"));
3709
+ console.log(chalk.default.cyan("\n One-click: https://railway.app/template (use Docker)\n"));
3402
3710
  } else {
3403
- console.log(chalk.default.red(` Unknown platform: ${platform}. Use fly or render.\n`));
3711
+ console.log(chalk.default.red(` Unknown platform: ${platform}. Use fly, render, or railway.\n`));
3404
3712
  process.exit(1);
3405
3713
  }
3406
3714
  process.exit(0);
@@ -3593,40 +3901,40 @@ themeCmd.command("preview").description("Preview all themes side-by-side").actio
3593
3901
  });
3594
3902
  const secretsCmd = program.command("secrets").description("External secrets management");
3595
3903
  secretsCmd.command("audit").description("Audit all required secrets").option("--required-by <ids>", "Filter by skill/provider IDs (comma-separated)").action(async (opts) => {
3596
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3904
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-BIc6zzZV.js"));
3597
3905
  const filter = opts.requiredBy?.split(",");
3598
3906
  await new SecretsManager().audit(filter);
3599
3907
  process.exit(0);
3600
3908
  });
3601
3909
  secretsCmd.command("set <KEY=value>").description("Set a secret in .env file").action(async (kv) => {
3602
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3910
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-BIc6zzZV.js"));
3603
3911
  await new SecretsManager().set(kv);
3604
3912
  process.exit(0);
3605
3913
  });
3606
3914
  secretsCmd.command("apply").description("Write secrets from .env to shell config (~/.bashrc, ~/.zshrc)").action(async () => {
3607
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3915
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-BIc6zzZV.js"));
3608
3916
  await new SecretsManager().apply();
3609
3917
  process.exit(0);
3610
3918
  });
3611
3919
  secretsCmd.command("reload").description("Reload secrets into running gateway").action(async () => {
3612
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3920
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-BIc6zzZV.js"));
3613
3921
  await new SecretsManager().reload();
3614
3922
  process.exit(0);
3615
3923
  });
3616
3924
  secretsCmd.command("remove <key>").description("Remove a secret from .env").action(async (key) => {
3617
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3925
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-BIc6zzZV.js"));
3618
3926
  await new SecretsManager().remove(key);
3619
3927
  process.exit(0);
3620
3928
  });
3621
3929
  secretsCmd.command("credentials").description("List provider credential files (credentials/*.json)").action(async () => {
3622
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Bmm9e1SS.js"));
3930
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Ddhgmbpz.js"));
3623
3931
  const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3624
3932
  await new CredentialsStore(getHyperClawDir$1()).showList();
3625
3933
  process.exit(0);
3626
3934
  });
3627
3935
  const securityCmd = program.command("security").description("Security tools");
3628
3936
  securityCmd.command("audit").description("Security audit — file permissions, DM policies, embedded secrets").option("--deep", "Full deep scan including token entropy and installed skill risks").option("--fix", "Auto-fix safe findings (file permissions etc.)").option("--json", "Machine-readable JSON output").action(async (opts) => {
3629
- const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-Dntx9fG9.js"));
3937
+ const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-Q-Uy5nem.js"));
3630
3938
  await runSecurityAudit({
3631
3939
  deep: opts.deep,
3632
3940
  fix: opts.fix,
@@ -3635,20 +3943,20 @@ securityCmd.command("audit").description("Security audit — file permissions, D
3635
3943
  process.exit(0);
3636
3944
  });
3637
3945
  program.command("osint").description("OSINT / Ethical Hacking mode — configure HyperClaw for security research").argument("[workflow]", "Workflow preset: recon | bugbounty | pentest | footprint | custom | chat").option("--show", "Show current OSINT profile").option("--reset", "Clear OSINT profile and disable OSINT mode").option("--model <model>", "Override model for OSINT chat").action(async (workflow, opts) => {
3638
- const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-B5j3IuJK.js"));
3946
+ const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-c-xDjLb-.js"));
3639
3947
  if (opts.show || opts.reset) await osintSetup({
3640
3948
  show: opts.show,
3641
3949
  reset: opts.reset
3642
3950
  });
3643
3951
  else if (workflow === "chat") {
3644
- const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-xRP672b-.js"));
3952
+ const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-C09BvbGy.js"));
3645
3953
  await runOsintChat({ model: opts.model });
3646
3954
  } else if (workflow === "setup" || workflow) await osintSetup({ mode: workflow });
3647
3955
  else await osintQuickStart();
3648
3956
  process.exit(0);
3649
3957
  });
3650
3958
  program.command("chat").description("Interactive terminal chat with the agent").option("--session <id>", "Resume a named session").option("--model <model>", "Override model").option("--thinking <level>", "Thinking level: high|medium|low|none", "none").option("--workspace <dir>", "Override workspace directory").option("--daemon", "Use daemon theme (red borders & prompt)").action(async (opts) => {
3651
- const { runChat } = await Promise.resolve().then(() => require("./chat-BGD9AWhr.js"));
3959
+ const { runChat } = await Promise.resolve().then(() => require("./chat-CJa0ph8c.js"));
3652
3960
  const cfg = await new require_manager.ConfigManager().load().catch(() => null);
3653
3961
  const port = cfg?.gateway?.port ?? 18789;
3654
3962
  const gm = new GatewayManager$1();
@@ -3663,7 +3971,7 @@ program.command("chat").description("Interactive terminal chat with the agent").
3663
3971
  });
3664
3972
  const agentRunCmd = program.command("agent").description("Run agent with thinking control");
3665
3973
  agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent").option("--thinking <level>", "Thinking level: high|medium|low|none", "none").option("--model <model>", "Override model").option("--session <id>", "Session/thread ID").option("--multi-step", "Decompose into steps and run each (sequential)").option("--parallel", "Run sub-agents in parallel for independent subtasks").option("--verbose", "Show thinking blocks and request details").option("--workspace <dir>", "Override workspace directory").action(async (opts) => {
3666
- const { runAgent } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
3974
+ const { runAgent } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
3667
3975
  await runAgent({
3668
3976
  message: opts.message,
3669
3977
  thinking: opts.thinking,
@@ -3678,8 +3986,19 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
3678
3986
  process.exit(0);
3679
3987
  });
3680
3988
  const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
3989
+ threadsCmd.command("create").description("Create or resume an ACP thread").option("--resume <id>", "Resume existing session by thread ID (ACP resumeSessionId)").option("--name <name>", "Thread name").option("--channel <id>", "Channel ID").action(async (opts) => {
3990
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
3991
+ const mgr = new ACPThreadManager();
3992
+ const thread = await mgr.create({
3993
+ resumeSessionId: opts.resume,
3994
+ name: opts.name,
3995
+ channelId: opts.channel
3996
+ });
3997
+ console.log(require("chalk").green(`\n ✔ Thread: ${thread.name} (${thread.id})\n`));
3998
+ process.exit(0);
3999
+ });
3681
4000
  threadsCmd.command("list").description("List agent threads").option("--channel <id>", "Filter by channel").option("--active", "Show only active threads").action(async (opts) => {
3682
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
4001
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
3683
4002
  const mgr = new ACPThreadManager();
3684
4003
  const threads = await mgr.list({
3685
4004
  channelId: opts.channel,
@@ -3689,29 +4008,33 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
3689
4008
  process.exit(0);
3690
4009
  });
3691
4010
  threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
3692
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
4011
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
3693
4012
  await new ACPThreadManager().terminate(id);
3694
4013
  console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
3695
4014
  process.exit(0);
3696
4015
  });
4016
+ program.command("acp").description("Start ACP server on stdio for IDE integration (VS Code, Zed, Cursor, Codex)").action(async () => {
4017
+ const { runACPStdio } = await Promise.resolve().then(() => require("./src-CDeWGebw.js"));
4018
+ await runACPStdio();
4019
+ });
3697
4020
  const canvasCmd = program.command("canvas").description("Live AI-driven UI canvas");
3698
4021
  canvasCmd.command("show").description("Show current canvas components").action(async () => {
3699
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B1ToXngl.js"));
4022
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B_ew6jRs.js"));
3700
4023
  await new CanvasRenderer().show();
3701
4024
  process.exit(0);
3702
4025
  });
3703
4026
  canvasCmd.command("add <type> <title>").description("Add a canvas component (type: chart|table|form|markdown|image|custom)").action(async (type, title) => {
3704
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B1ToXngl.js"));
4027
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B_ew6jRs.js"));
3705
4028
  await new CanvasRenderer().addComponent(type, title);
3706
4029
  process.exit(0);
3707
4030
  });
3708
4031
  canvasCmd.command("clear").description("Clear all canvas components").action(async () => {
3709
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B1ToXngl.js"));
4032
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B_ew6jRs.js"));
3710
4033
  await new CanvasRenderer().clear();
3711
4034
  process.exit(0);
3712
4035
  });
3713
4036
  canvasCmd.command("export").description("Export canvas as HTML file").action(async () => {
3714
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B1ToXngl.js"));
4037
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B_ew6jRs.js"));
3715
4038
  const fs$7 = require("fs-extra");
3716
4039
  const html = await new CanvasRenderer().exportHtml();
3717
4040
  const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
@@ -3733,62 +4056,67 @@ deliveryCmd.command("retry <id>").description("Retry a dead-lettered delivery it
3733
4056
  });
3734
4057
  const mcpCmd = program.command("mcp").description("MCP (Model Context Protocol) server management");
3735
4058
  mcpCmd.command("list").description("List configured MCP servers").action(async () => {
3736
- const { mcpList } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
4059
+ const { mcpList } = await Promise.resolve().then(() => require("./mcp-CI2F3m8G.js"));
3737
4060
  await mcpList();
3738
4061
  process.exit(0);
3739
4062
  });
3740
4063
  mcpCmd.command("add").description("Add MCP server").action(async () => {
3741
- const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
4064
+ const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-CI2F3m8G.js"));
3742
4065
  await mcpAdd();
3743
4066
  process.exit(0);
3744
4067
  });
3745
4068
  mcpCmd.command("remove <id>").description("Remove MCP server").action(async (id) => {
3746
- const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
4069
+ const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-CI2F3m8G.js"));
3747
4070
  await mcpRemove(id);
3748
4071
  process.exit(0);
3749
4072
  });
3750
4073
  mcpCmd.command("probe [id]").description("Test MCP server connection").action(async (id) => {
3751
- const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
4074
+ const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-CI2F3m8G.js"));
3752
4075
  await mcpProbe(id);
3753
4076
  process.exit(0);
3754
4077
  });
3755
4078
  const nodeCmd = program.command("node").description("HyperClaw node management (local, remote, android)");
3756
4079
  nodeCmd.command("list").description("List paired nodes").action(async () => {
3757
- const { nodeList } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
4080
+ const { nodeList } = await Promise.resolve().then(() => require("./node-DFKhz7Zn.js"));
3758
4081
  await nodeList();
3759
4082
  process.exit(0);
3760
4083
  });
3761
4084
  nodeCmd.command("add").description("Add or pair a node").action(async () => {
3762
- const { nodeAdd } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
4085
+ const { nodeAdd } = await Promise.resolve().then(() => require("./node-DFKhz7Zn.js"));
3763
4086
  await nodeAdd();
3764
4087
  process.exit(0);
3765
4088
  });
3766
4089
  nodeCmd.command("probe [id]").description("Probe node connection").action(async (id) => {
3767
- const { nodeProbe } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
4090
+ const { nodeProbe } = await Promise.resolve().then(() => require("./node-DFKhz7Zn.js"));
3768
4091
  await nodeProbe(id);
3769
4092
  process.exit(0);
3770
4093
  });
3771
4094
  nodeCmd.command("remove <id>").description("Remove paired node").action(async (id) => {
3772
- const { nodeRemove } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
4095
+ const { nodeRemove } = await Promise.resolve().then(() => require("./node-DFKhz7Zn.js"));
3773
4096
  await nodeRemove(id);
3774
4097
  process.exit(0);
3775
4098
  });
4099
+ nodeCmd.command("queue [nodeId]").description("List pending work queued for dormant nodes").action(async (nodeId) => {
4100
+ const { nodeQueue } = await Promise.resolve().then(() => require("./node-DFKhz7Zn.js"));
4101
+ await nodeQueue(nodeId);
4102
+ process.exit(0);
4103
+ });
3776
4104
  const arCmd = program.command("auto-reply").description("Auto-reply rule engine");
3777
4105
  arCmd.command("list").action(async () => {
3778
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-Cqen1Mpt.js"));
4106
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BAYXiKiJ.js"));
3779
4107
  const e = new AutoReplyEngine();
3780
4108
  await e.load();
3781
4109
  e.showList();
3782
4110
  process.exit(0);
3783
4111
  });
3784
4112
  arCmd.command("toggle <id>").action(async (id) => {
3785
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-Cqen1Mpt.js"));
4113
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BAYXiKiJ.js"));
3786
4114
  const e = new AutoReplyEngine();
3787
4115
  await e.toggle(id);
3788
4116
  process.exit(0);
3789
4117
  });
3790
4118
  arCmd.command("remove <id>").action(async (id) => {
3791
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-Cqen1Mpt.js"));
4119
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-BAYXiKiJ.js"));
3792
4120
  const e = new AutoReplyEngine();
3793
4121
  await e.remove(id);
3794
4122
  process.exit(0);
@@ -3797,7 +4125,7 @@ const gmailCmd = program.command("gmail").description("Gmail Pub/Sub real-time n
3797
4125
  gmailCmd.command("watch-setup").description("Register Gmail watch for push notifications. Requires: hyperclaw auth oauth google-gmail").requiredOption("-t, --topic <name>", "Pub/Sub topic (e.g. projects/myproject/topics/gmail-push)").option("-l, --labels <ids>", "Label IDs to watch (comma-separated)", "INBOX").action(async (opts) => {
3798
4126
  const chalk$11 = require("chalk");
3799
4127
  try {
3800
- const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-1RGIHNdu.js"));
4128
+ const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-BzbG0ICM.js"));
3801
4129
  const labelIds = opts.labels.split(",").map((s) => s.trim()).filter(Boolean);
3802
4130
  const result = await setupGmailWatch({
3803
4131
  topicName: opts.topic,
@@ -3817,7 +4145,7 @@ gmailCmd.command("watch-setup").description("Register Gmail watch for push notif
3817
4145
  const cronCmd = program.command("cron").description("Scheduled tasks (cron → agent prompt)");
3818
4146
  cronCmd.command("list").action(async () => {
3819
4147
  const chalk$11 = require("chalk");
3820
- const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-OQbgmenS.js"));
4148
+ const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-CF4MJoIU.js"));
3821
4149
  const tasks = await loadCronTasks();
3822
4150
  console.log(chalk$11.bold.cyan("\n ⏰ CRON TASKS\n"));
3823
4151
  if (tasks.length === 0) {
@@ -3830,16 +4158,17 @@ cronCmd.command("list").action(async () => {
3830
4158
  console.log(` ${dot} ${chalk$11.white(t.name || t.id)}`);
3831
4159
  console.log(` ${chalk$11.gray("Schedule:")} ${t.schedule}`);
3832
4160
  console.log(` ${chalk$11.gray("Prompt:")} ${t.prompt.slice(0, 60)}${t.prompt.length > 60 ? "..." : ""}`);
4161
+ if (t.skillId) console.log(` ${chalk$11.gray("Skill:")} ${t.skillId}`);
3833
4162
  if (t.lastRunAt) console.log(` ${chalk$11.gray("Last run:")} ${t.lastRunAt}`);
3834
4163
  console.log();
3835
4164
  }
3836
4165
  process.exit(0);
3837
4166
  });
3838
- cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name>", "Task name").action(async (schedule, prompt, opts) => {
4167
+ cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name>", "Task name").option("-s, --skill <skillId>", "Skill ID to route task (e.g. morning-briefing)").action(async (schedule, prompt, opts) => {
3839
4168
  const chalk$11 = require("chalk");
3840
- const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-OQbgmenS.js"));
4169
+ const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-CF4MJoIU.js"));
3841
4170
  await loadCronTasks();
3842
- addCronTask(schedule, prompt, opts.name);
4171
+ addCronTask(schedule, prompt, opts.name, opts.skill);
3843
4172
  await saveCronTasks();
3844
4173
  console.log(chalk$11.green(`\n ✔ Cron task added: ${schedule} → "${prompt.slice(0, 40)}..."\n`));
3845
4174
  console.log(chalk$11.gray(" Restart gateway to apply.\n"));
@@ -3847,7 +4176,7 @@ cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name
3847
4176
  });
3848
4177
  cronCmd.command("remove <id>").action(async (id) => {
3849
4178
  const chalk$11 = require("chalk");
3850
- const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-OQbgmenS.js"));
4179
+ const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-CF4MJoIU.js"));
3851
4180
  await loadCronTasks();
3852
4181
  if (removeCronTask(id)) {
3853
4182
  await saveCronTasks();
@@ -3907,20 +4236,20 @@ program.command("nodes").description("List connected mobile nodes (iOS/Android C
3907
4236
  });
3908
4237
  const whCmd = program.command("webhooks").description("Webhook endpoint management");
3909
4238
  whCmd.command("list").action(async () => {
3910
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager--wG9JdFW.js"));
4239
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BwobWy0l.js"));
3911
4240
  const m = new WebhookManager();
3912
4241
  await m.load();
3913
4242
  m.showList();
3914
4243
  process.exit(0);
3915
4244
  });
3916
4245
  whCmd.command("remove <id>").action(async (id) => {
3917
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager--wG9JdFW.js"));
4246
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BwobWy0l.js"));
3918
4247
  const m = new WebhookManager();
3919
4248
  await m.remove(id);
3920
4249
  process.exit(0);
3921
4250
  });
3922
4251
  whCmd.command("toggle <id>").action(async (id) => {
3923
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager--wG9JdFW.js"));
4252
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-BwobWy0l.js"));
3924
4253
  const m = new WebhookManager();
3925
4254
  await m.toggle(id);
3926
4255
  process.exit(0);
@@ -3929,7 +4258,7 @@ const logsCmd = program.command("logs").description("View gateway logs");
3929
4258
  logsCmd.option("-n, --lines <n>", "Number of lines to show", "50");
3930
4259
  logsCmd.option("-f, --follow", "Stream logs in real time");
3931
4260
  logsCmd.action(async (opts) => {
3932
- const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-CG38Idq4.js"));
4261
+ const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-Oty9sC13.js"));
3933
4262
  if (opts.follow) await streamLog();
3934
4263
  else {
3935
4264
  await tailLog(parseInt(opts.lines));
@@ -3937,7 +4266,7 @@ logsCmd.action(async (opts) => {
3937
4266
  }
3938
4267
  });
3939
4268
  program.command("gateway:serve").description("Start the gateway server in the foreground (used by daemon)").action(async () => {
3940
- const { startGateway } = await Promise.resolve().then(() => require("./server-6TIyu0mb.js"));
4269
+ const { startGateway } = await Promise.resolve().then(() => require("./server-DszV63tu.js"));
3941
4270
  await startGateway();
3942
4271
  process.on("SIGINT", () => process.exit(0));
3943
4272
  process.on("SIGTERM", () => process.exit(0));
@@ -3994,9 +4323,9 @@ const authCmd = program.command("auth").description("OAuth and provider credenti
3994
4323
  authCmd.command("add <service_id>").description("Add API key for a service (any provider we do not ship). Stored in credentials/ and .env.").option("--key <api_key>", "API key (prompts if omitted)").option("--base-url <url>", "Base URL (optional, e.g. https://api.example.com)").option("--env-var <name>", "Env var name (default: <SERVICE_ID>_API_KEY)").action(async (serviceId, opts) => {
3995
4324
  const chalk$11 = require("chalk");
3996
4325
  const inquirer$2 = require("inquirer");
3997
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Bmm9e1SS.js"));
4326
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Ddhgmbpz.js"));
3998
4327
  const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3999
- const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide--73Bq0Ey.js"));
4328
+ const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-DmKF7tB-.js"));
4000
4329
  const fs$7 = (await import("fs-extra")).default;
4001
4330
  const path$5 = await import("path");
4002
4331
  const guide = getApiKeyGuide(serviceId);
@@ -4049,7 +4378,7 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
4049
4378
  });
4050
4379
  authCmd.command("remove <service_id>").description("Remove API key for a service from credentials and .env").action(async (serviceId) => {
4051
4380
  const chalk$11 = require("chalk");
4052
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Bmm9e1SS.js"));
4381
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Ddhgmbpz.js"));
4053
4382
  const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
4054
4383
  const fs$7 = (await import("fs-extra")).default;
4055
4384
  const safeId = serviceId.replace(/[^a-zA-Z0-9_-]/g, "_").toLowerCase();
@@ -4069,7 +4398,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
4069
4398
  const chalk$11 = require("chalk");
4070
4399
  const ora$4 = (await import("ora")).default;
4071
4400
  try {
4072
- const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-BbLQTzZk.js"));
4401
+ const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-CZOsvU1v.js"));
4073
4402
  const spinner = ora$4("Starting OAuth flow...").start();
4074
4403
  spinner.text = "Opening browser — complete the consent and return here.";
4075
4404
  const tokens = await runOAuthFlow(provider, {
@@ -4077,7 +4406,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
4077
4406
  clientSecret: opts.clientSecret
4078
4407
  });
4079
4408
  spinner.stop();
4080
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-UZyG84s7.js"));
4409
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Dk-6BmGL.js"));
4081
4410
  const now = Math.floor(Date.now() / 1e3);
4082
4411
  const expires_at = tokens.expires_in ? now + tokens.expires_in : void 0;
4083
4412
  const tokenUrl = provider === "google" || provider === "google-gmail" ? "https://oauth2.googleapis.com/token" : provider === "microsoft" ? "https://login.microsoftonline.com/common/oauth2/v2.0/token" : void 0;
@@ -4112,7 +4441,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
4112
4441
  console.log(chalk$11.red("\n ✖ No token provided.\n"));
4113
4442
  process.exit(1);
4114
4443
  }
4115
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-UZyG84s7.js"));
4444
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Dk-6BmGL.js"));
4116
4445
  await writeOAuthToken("anthropic-setup", {
4117
4446
  access_token: token.trim(),
4118
4447
  token_url: "https://api.anthropic.com"
@@ -4123,7 +4452,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
4123
4452
  });
4124
4453
  authCmd.command("oauth-set <provider>").description("Save OAuth tokens manually (access_token, refresh_token, etc.) to ~/.hyperclaw/oauth-<provider>.json").option("--token <access_token>", "Access token").option("--refresh <refresh_token>", "Refresh token (optional)").option("--expires-in <seconds>", "Token lifetime in seconds (optional)").option("--token-url <url>", "Refresh endpoint URL (optional)").action(async (provider, opts) => {
4125
4454
  const chalk$11 = require("chalk");
4126
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-UZyG84s7.js"));
4455
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Dk-6BmGL.js"));
4127
4456
  const access_token = opts.token || process.env.OAUTH_ACCESS_TOKEN;
4128
4457
  if (!access_token) {
4129
4458
  console.log(chalk$11.red("\n ✖ Provide --token <access_token> or set OAUTH_ACCESS_TOKEN\n"));
@@ -4151,7 +4480,7 @@ workspaceCmd.command("init [dir]").description("Initialize workspace files (SOUL
4151
4480
  try {
4152
4481
  cfg = await fs$7.readJson(getConfigPath$1());
4153
4482
  } catch {}
4154
- const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-BGgCBSx1.js"));
4483
+ const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-CyonlkTy.js"));
4155
4484
  await initWorkspaceFiles({
4156
4485
  agentName: cfg.identity?.agentName || "Hyper",
4157
4486
  personality: cfg.identity?.personality || "helpful and concise",
@@ -4190,13 +4519,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
4190
4519
  });
4191
4520
  const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
4192
4521
  botCmd.command("status").action(async () => {
4193
- const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-BqyZr2GM.js"));
4522
+ const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-DR6BgI_d.js"));
4194
4523
  await showBotStatus();
4195
4524
  process.exit(0);
4196
4525
  });
4197
4526
  botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
4198
4527
  const inquirer$2 = require("inquirer");
4199
- const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-BqyZr2GM.js"));
4528
+ const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-DR6BgI_d.js"));
4200
4529
  const chalk$11 = require("chalk");
4201
4530
  console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
4202
4531
  console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
@@ -4258,14 +4587,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4258
4587
  cwd: process.cwd()
4259
4588
  });
4260
4589
  child.unref();
4261
- const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-BqyZr2GM.js"));
4590
+ const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-DR6BgI_d.js"));
4262
4591
  await writeBotPid(child.pid);
4263
4592
  console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
4264
4593
  console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
4265
4594
  process.exit(0);
4266
4595
  return;
4267
4596
  }
4268
- const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-BqyZr2GM.js"));
4597
+ const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-DR6BgI_d.js"));
4269
4598
  const cfg = await loadBotConfig();
4270
4599
  if (!cfg) {
4271
4600
  console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
@@ -4292,41 +4621,73 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4292
4621
  });
4293
4622
  botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
4294
4623
  const chalk$11 = require("chalk");
4295
- const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-BqyZr2GM.js"));
4624
+ const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-DR6BgI_d.js"));
4296
4625
  const stopped = await stopBotProcess();
4297
4626
  if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
4298
4627
  else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
4299
4628
  process.exit(stopped ? 0 : 1);
4300
4629
  });
4301
- memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
4302
- const { searchMemory } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
4630
+ memCmd.command("search-vector <query>").description("Semantic search over vector memory (requires memory-lancedb + OPENAI_API_KEY)").option("-n, --limit <n>", "Max results", "10").action(async (query, opts) => {
4631
+ try {
4632
+ const pkg = "@hyperclaw/memory-lancedb";
4633
+ const mod = await (async () => {
4634
+ try {
4635
+ return await import(pkg);
4636
+ } catch {
4637
+ return null;
4638
+ }
4639
+ })();
4640
+ if (!mod?.VectorMemoryService) throw new Error("not available");
4641
+ const { VectorMemoryService } = mod;
4642
+ const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
4643
+ const path$5 = await import("path");
4644
+ const cfg = await new require_manager.ConfigManager().load();
4645
+ const svc = new VectorMemoryService({
4646
+ dbPath: path$5.join(getHyperClawDir$1(), "memory-lancedb"),
4647
+ apiKey: cfg?.provider?.apiKey
4648
+ });
4649
+ await svc.init();
4650
+ const results = await svc.search(query, parseInt(opts.limit));
4651
+ if (results.length === 0) console.log(chalk.default.gray("\n No results. Add facts with: hyperclaw memory add-fact \"...\"\n"));
4652
+ else {
4653
+ console.log(chalk.default.bold.hex("#06b6d4")("\n Vector memory search:\n"));
4654
+ for (const r of results) console.log(chalk.default.gray(` • ${r.text}`));
4655
+ console.log();
4656
+ }
4657
+ } catch (e) {
4658
+ console.log(chalk.default.yellow("\n Vector memory not available. Install: npm install @hyperclaw/memory-lancedb vectordb openai\n"));
4659
+ }
4660
+ process.exit(0);
4661
+ });
4662
+ memCmd.command("search <query>").description("Search MEMORY.md (text search)").action(async (query) => {
4663
+ const { searchMemory } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
4303
4664
  await searchMemory(query);
4304
4665
  process.exit(0);
4305
4666
  });
4306
4667
  memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
4307
- const { showMemory } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
4668
+ const { showMemory } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
4308
4669
  await showMemory();
4309
4670
  process.exit(0);
4310
4671
  });
4311
4672
  memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
4312
- const { clearMemory } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
4673
+ const { clearMemory } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
4313
4674
  await clearMemory();
4314
4675
  process.exit(0);
4315
4676
  });
4316
4677
  memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
4317
- const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
4678
+ const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
4318
4679
  await saveMemoryDirect(text);
4319
4680
  console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
4320
4681
  process.exit(0);
4321
4682
  });
4322
4683
  const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
4323
4684
  pcCmd.command("status").description("Show PC access status and config").action(async () => {
4324
- const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
4685
+ const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
4325
4686
  await showPCAccessStatus();
4326
4687
  process.exit(0);
4327
4688
  });
4328
4689
  pcCmd.command("enable").description("Enable PC access for the AI").option("--level <level>", "Access level: read-only | sandboxed | full", "full").option("--paths <paths>", "Comma-separated allowed paths (sandboxed mode)").action(async (opts) => {
4329
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
4690
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
4330
4691
  const level = opts.level;
4331
4692
  const allowed = [
4332
4693
  "read-only",
@@ -4353,7 +4714,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
4353
4714
  process.exit(0);
4354
4715
  });
4355
4716
  pcCmd.command("disable").description("Disable PC access").action(async () => {
4356
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
4717
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
4357
4718
  await savePCAccessConfig({ enabled: false });
4358
4719
  console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
4359
4720
  process.exit(0);
@@ -4378,7 +4739,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
4378
4739
  process.exit(0);
4379
4740
  });
4380
4741
  pcCmd.command("run <command>").description("Run a shell command via PC access (must be enabled)").action(async (command) => {
4381
- const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-H1I7JC2E.js"));
4742
+ const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-6dmkVQGq.js"));
4382
4743
  const cfg = await loadPCAccessConfig();
4383
4744
  if (!cfg.enabled) {
4384
4745
  console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
@@ -4419,7 +4780,7 @@ async function runUpdateCheck() {
4419
4780
  } catch {}
4420
4781
  }
4421
4782
  if (process.argv.length === 2) (async () => {
4422
- const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-BNc21xgG.js"));
4783
+ const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-Bq5LApdR.js"));
4423
4784
  const cfg = await new ConfigManager$1().load().catch(() => null);
4424
4785
  if (cfg?.provider?.apiKey || cfg?.provider?.providerId) {
4425
4786
  await new require_banner.Banner().showNeonBanner(false);
@@ -4437,7 +4798,7 @@ if (process.argv.length === 2) (async () => {
4437
4798
  console.log(` ✓ ${t.c("hyperclaw --help")} — 📖 all commands\n`);
4438
4799
  } else {
4439
4800
  await new require_banner.Banner().showNeonBanner(false);
4440
- const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-ChnsqU5z.js"));
4801
+ const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-YszvVNgS.js"));
4441
4802
  await new HyperClawWizard$1().run({ wizard: true });
4442
4803
  }
4443
4804
  await runUpdateCheck();