hyperclaw 5.3.45 → 5.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/README.md +1 -0
  2. package/dist/a2ui-protocol-CibzbTxL.js +75 -0
  3. package/dist/a2ui-protocol-Dtb8zlog.js +75 -0
  4. package/dist/a2ui-protocol-ORP2Etw0.js +75 -0
  5. package/dist/a2ui-protocol-whRZHdBk.js +75 -0
  6. package/dist/abort-controller-B55O1IgK.js +47995 -0
  7. package/dist/agents-routing-Ai2BQVpU.js +7 -0
  8. package/dist/agents-routing-B0RBl1B8.js +424 -0
  9. package/dist/agents-routing-BSUaOpce.js +7 -0
  10. package/dist/agents-routing-C4PVN8G6.js +7 -0
  11. package/dist/agents-routing-Dcr29-JV.js +424 -0
  12. package/dist/agents-routing-EwzORQQv.js +424 -0
  13. package/dist/agents-routing-Fd-uQ4R_.js +7 -0
  14. package/dist/agents-routing-eLjVYBAk.js +424 -0
  15. package/dist/api-key-validation-BANgbsfO.js +66 -0
  16. package/dist/api-key-validation-Bnz-0MMK.js +66 -0
  17. package/dist/api-key-validation-D_fMCaO5.js +66 -0
  18. package/dist/api-key-validation-Db7rG3JU.js +66 -0
  19. package/dist/api-keys-guide-B6AJ1V5D.js +149 -0
  20. package/dist/api-keys-guide-C75JQOdH.js +149 -0
  21. package/dist/api-keys-guide-CFJPrgsL.js +149 -0
  22. package/dist/api-keys-guide-DDz08BJQ.js +149 -0
  23. package/dist/audit-BLMB8qp7.js +445 -0
  24. package/dist/audit-Cb2TvqYZ.js +445 -0
  25. package/dist/audit-D7koAKvj.js +445 -0
  26. package/dist/audit-xP_175jB.js +445 -0
  27. package/dist/backup-7l3iovkX.js +86 -0
  28. package/dist/backup-BKLTHh62.js +86 -0
  29. package/dist/backup-CspxXk78.js +86 -0
  30. package/dist/backup-D8dFYDXV.js +86 -0
  31. package/dist/banner-B2Qo91lq.js +143 -0
  32. package/dist/banner-CZ2BfvQq.js +143 -0
  33. package/dist/banner-CjTRWmks.js +7 -0
  34. package/dist/banner-CmNA9NKE.js +7 -0
  35. package/dist/banner-D3-Ik5d2.js +143 -0
  36. package/dist/banner-D3X8tQ-0.js +7 -0
  37. package/dist/banner-Dpygks0H.js +143 -0
  38. package/dist/banner-ZX1WLr44.js +7 -0
  39. package/dist/bounty-tools-Cq-oC9gk.js +211 -0
  40. package/dist/bounty-tools-DZ-WtRdE.js +211 -0
  41. package/dist/bounty-tools-DhpmjF5Y.js +211 -0
  42. package/dist/bounty-tools-NGuBWI55.js +211 -0
  43. package/dist/browser-tools-5Fl1hP_2.js +5 -0
  44. package/dist/browser-tools-Ay-wU_a4.js +5 -0
  45. package/dist/browser-tools-BMgBB2fK.js +179 -0
  46. package/dist/browser-tools-kcViDwk5.js +179 -0
  47. package/dist/chat-BGD9AWhr.js +523 -0
  48. package/dist/chat-BUa1oGqj.js +528 -0
  49. package/dist/chat-CiuT-GTs.js +528 -0
  50. package/dist/chat-D8wFNN4z.js +523 -0
  51. package/dist/chat-DfI8uOzF.js +528 -0
  52. package/dist/chat-Dz5rmUSs.js +528 -0
  53. package/dist/chat-RTmX1F16.js +528 -0
  54. package/dist/claw-tasks-Cio1Q7eA.js +80 -0
  55. package/dist/claw-tasks-DzxNWVcz.js +80 -0
  56. package/dist/claw-tasks-L7vQSGlt.js +80 -0
  57. package/dist/claw-tasks-dndWneZW.js +80 -0
  58. package/dist/config-B-W-Mz4X.js +7 -0
  59. package/dist/config-BAwkTUJC.js +261 -0
  60. package/dist/config-CYPw2v4l.js +261 -0
  61. package/dist/config-DN9fdLL3.js +261 -0
  62. package/dist/config-FejpHHTz.js +261 -0
  63. package/dist/config-Tq_GJHf7.js +7 -0
  64. package/dist/config-n4qy5jIy.js +7 -0
  65. package/dist/config-qJUYRMzx.js +7 -0
  66. package/dist/connector-CwT7KZm2.js +309 -0
  67. package/dist/connector-DX4k-lGd.js +442 -0
  68. package/dist/cost-tracker-C2q5zKic.js +103 -0
  69. package/dist/cost-tracker-CsRQAOEr.js +103 -0
  70. package/dist/cost-tracker-DAXWN5YT.js +103 -0
  71. package/dist/cost-tracker-bySvehH6.js +103 -0
  72. package/dist/credentials-store-BAW87r6f.js +7 -0
  73. package/dist/credentials-store-BHtk7_H_.js +7 -0
  74. package/dist/credentials-store-CESgFvFU.js +89 -0
  75. package/dist/credentials-store-CR4WSDGl.js +7 -0
  76. package/dist/credentials-store-CXq4kZub.js +89 -0
  77. package/dist/credentials-store-DUp8dtaS.js +89 -0
  78. package/dist/credentials-store-hiSga8qn.js +89 -0
  79. package/dist/credentials-store-kLdrmqSt.js +7 -0
  80. package/dist/cron-tasks-BFsaCKxE.js +89 -0
  81. package/dist/cron-tasks-BelA2aUW.js +89 -0
  82. package/dist/cron-tasks-D1T9fWAb.js +89 -0
  83. package/dist/cron-tasks-f_ieXSG2.js +89 -0
  84. package/dist/daemon-BTYhQvD_.js +7 -0
  85. package/dist/daemon-BoaFnmdF.js +421 -0
  86. package/dist/daemon-BrHxr4ut.js +421 -0
  87. package/dist/daemon-BzdeLgON.js +421 -0
  88. package/dist/daemon-BzqWIC4v.js +7 -0
  89. package/dist/daemon-C3OczPR1.js +7 -0
  90. package/dist/daemon-D-klsy3i.js +7 -0
  91. package/dist/daemon-D57KIIA3.js +421 -0
  92. package/dist/daemon-D8uyH9et.js +7 -0
  93. package/dist/daemon-DBTtYx6E.js +421 -0
  94. package/dist/daemon-D_bYfHgn.js +421 -0
  95. package/dist/daemon-DcE6vcjH.js +421 -0
  96. package/dist/daemon-NFwpuo3L.js +7 -0
  97. package/dist/daemon-srcdhzUG.js +7 -0
  98. package/dist/delivery-Bt0xW6L9.js +4 -0
  99. package/dist/delivery-C2sAERN7.js +4 -0
  100. package/dist/delivery-CF2Q4hb1.js +95 -0
  101. package/dist/delivery-CfMljOwk.js +95 -0
  102. package/dist/delivery-DP0d4_A4.js +95 -0
  103. package/dist/delivery-DXYt4aMO.js +4 -0
  104. package/dist/delivery-DXxP2UL4.js +4 -0
  105. package/dist/delivery-jT2UIDlU.js +95 -0
  106. package/dist/destructive-gate-5LYh6brt.js +116 -0
  107. package/dist/destructive-gate-B_hNKtu6.js +116 -0
  108. package/dist/destructive-gate-DvxPSDMR.js +116 -0
  109. package/dist/destructive-gate-Qd2y7x1B.js +116 -0
  110. package/dist/dist-B1qvBUax.js +30541 -0
  111. package/dist/engine-B7Q4Vx-C.js +7 -0
  112. package/dist/engine-BBJlKpMP.js +7 -0
  113. package/dist/engine-BNygJfCo.js +335 -0
  114. package/dist/engine-C-G3G-U7.js +7 -0
  115. package/dist/engine-DB4MBzki.js +7 -0
  116. package/dist/engine-DPi9fhMl.js +332 -0
  117. package/dist/engine-DRpy9Y5O.js +327 -0
  118. package/dist/engine-DeaqDcaT.js +7 -0
  119. package/dist/engine-DetHi9LP.js +327 -0
  120. package/dist/engine-DuvXJrUP.js +335 -0
  121. package/dist/engine-HkyTC_xl.js +332 -0
  122. package/dist/engine-JysunhPR.js +7 -0
  123. package/dist/engine-MzEUw7qb.js +7 -0
  124. package/dist/engine-j9Yaqt_-.js +332 -0
  125. package/dist/env-resolve--MaE2kFF.js +167 -0
  126. package/dist/env-resolve-BYWG94tK.js +11 -0
  127. package/dist/env-resolve-Bop7KbNq.js +167 -0
  128. package/dist/env-resolve-Buos635Y.js +167 -0
  129. package/dist/env-resolve-D3dP1-Xt.js +11 -0
  130. package/dist/env-resolve-DvsbhPKl.js +11 -0
  131. package/dist/env-resolve-NNM3F6Eo.js +167 -0
  132. package/dist/env-resolve-dTjn-g8X.js +11 -0
  133. package/dist/extraction-tools-Bh5F0ENP.js +91 -0
  134. package/dist/extraction-tools-BjzXD9LW.js +5 -0
  135. package/dist/extraction-tools-D1lrDYhe.js +5 -0
  136. package/dist/extraction-tools-FBwtT2Bx.js +91 -0
  137. package/dist/fileFromPath-CodL6KXh.js +85 -0
  138. package/dist/gmail-watch-setup--eQ8raeb.js +42 -0
  139. package/dist/gmail-watch-setup-9t14gy1B.js +42 -0
  140. package/dist/gmail-watch-setup-B9fx_OLg.js +42 -0
  141. package/dist/gmail-watch-setup-DP3kDRx1.js +42 -0
  142. package/dist/heartbeat-engine-5iOlL7Dj.js +89 -0
  143. package/dist/heartbeat-engine-Bu4q18GH.js +89 -0
  144. package/dist/heartbeat-engine-CF_JjNJ4.js +89 -0
  145. package/dist/heartbeat-engine-CLADYZxE.js +89 -0
  146. package/dist/hub-CZeGrS20.js +6 -0
  147. package/dist/hub-DAkEVTEy.js +545 -0
  148. package/dist/hyperclawbot-BqyZr2GM.js +516 -0
  149. package/dist/hyperclawbot-CNVUtvYC.js +516 -0
  150. package/dist/hyperclawbot-D5ofLNgm.js +516 -0
  151. package/dist/hyperclawbot-D61zVMyQ.js +516 -0
  152. package/dist/hyperclawbot-DTzP20Up.js +516 -0
  153. package/dist/hyperclawbot-DwScttSx.js +516 -0
  154. package/dist/hyperclawbot-v65eL2U0.js +516 -0
  155. package/dist/inference-BEvs7s3c.js +2854 -0
  156. package/dist/inference-C4b9YqXk.js +8 -0
  157. package/dist/inference-CRF6HyyH.js +2854 -0
  158. package/dist/inference-CfhTACI8.js +2854 -0
  159. package/dist/inference-DGsy36Ru.js +8 -0
  160. package/dist/inference-Da7Hw4J3.js +8 -0
  161. package/dist/inference-DhJ-SHZn.js +8 -0
  162. package/dist/inference-K7Jrnzre.js +2854 -0
  163. package/dist/isFile-CSxoSB8X.js +2274 -0
  164. package/dist/knowledge-graph-BdsJ5KEL.js +134 -0
  165. package/dist/knowledge-graph-CFRBepzr.js +134 -0
  166. package/dist/knowledge-graph-CeDeahui.js +134 -0
  167. package/dist/knowledge-graph-DoYFZnUr.js +134 -0
  168. package/dist/loader-C2qtNbtF.js +6 -0
  169. package/dist/loader-D6yjBYo4.js +410 -0
  170. package/dist/loader-DBO6yRNh.js +6 -0
  171. package/dist/loader-DUhmG3V9.js +410 -0
  172. package/dist/loader-Dl8LNycw.js +6 -0
  173. package/dist/loader-UpOYxgZv.js +6 -0
  174. package/dist/loader-hXv2mZjK.js +410 -0
  175. package/dist/loader-nDBcv3Tm.js +410 -0
  176. package/dist/logger-BD316YbA.js +86 -0
  177. package/dist/logger-BnXZkfsp.js +86 -0
  178. package/dist/logger-CmphFNmW.js +86 -0
  179. package/dist/logger-DkHzhh56.js +86 -0
  180. package/dist/manager-3-q8zuAW.js +250 -0
  181. package/dist/manager-BkMzc-EJ.js +250 -0
  182. package/dist/manager-Bq5LApdR.js +6 -0
  183. package/dist/manager-CNgdJunf.js +250 -0
  184. package/dist/manager-CozyZSDG.js +250 -0
  185. package/dist/manager-D4mDWXph.js +120 -0
  186. package/dist/manager-DuS-WQhZ.js +120 -0
  187. package/dist/manager-Dz2eKYqo.js +116 -0
  188. package/dist/manager-R0TlRMZy.js +120 -0
  189. package/dist/manager-aJfY7rt6.js +120 -0
  190. package/dist/mcp-BH7HtOQ8.js +142 -0
  191. package/dist/mcp-CAJSA_ee.js +142 -0
  192. package/dist/mcp-CD-iIQa2.js +142 -0
  193. package/dist/mcp-DGo37Ifb.js +142 -0
  194. package/dist/mcp-loader-BAGRKfJz.js +93 -0
  195. package/dist/mcp-loader-Ct1NQKnX.js +93 -0
  196. package/dist/mcp-loader-D1T6UX73.js +93 -0
  197. package/dist/mcp-loader-DJk6MEof.js +93 -0
  198. package/dist/mcp-loader-DdXvU63s.js +93 -0
  199. package/dist/mcp-loader-Dt64EewT.js +93 -0
  200. package/dist/mcp-loader-gMliiJ7R.js +93 -0
  201. package/dist/memory-CyonlkTy.js +6 -0
  202. package/dist/memory-DPSWQBc0.js +276 -0
  203. package/dist/memory-auto-B0QOqaUD.js +306 -0
  204. package/dist/memory-auto-BSxYJugl.js +5 -0
  205. package/dist/memory-auto-CcFRxMj-.js +306 -0
  206. package/dist/memory-auto-CifT5aj_.js +5 -0
  207. package/dist/memory-auto-Cp2Jwx3Y.js +306 -0
  208. package/dist/memory-auto-DjK_D8CA.js +306 -0
  209. package/dist/memory-auto-N57dp4Do.js +5 -0
  210. package/dist/memory-auto-n0kOcU7F.js +5 -0
  211. package/dist/memory-integration-D8shLJwp.js +91 -0
  212. package/dist/memory-integration-DLmzJ62L.js +91 -0
  213. package/dist/memory-integration-DMXDbMIL.js +91 -0
  214. package/dist/memory-integration-Dgr-mjue.js +91 -0
  215. package/dist/moltbook-CIeOshK6.js +81 -0
  216. package/dist/moltbook-CX5XWn06.js +81 -0
  217. package/dist/moltbook-DUfiE4NY.js +81 -0
  218. package/dist/moltbook-YEiNI8Cm.js +81 -0
  219. package/dist/multi-agent-tools-jzfvT4zP.js +87 -0
  220. package/dist/multimodal-zZdwqISl.js +77 -0
  221. package/dist/node-BYrxELx2.js +251 -0
  222. package/dist/node-CLWgPlAk.js +251 -0
  223. package/dist/node-Czz8Y85D.js +251 -0
  224. package/dist/node-Du2H2Ddi.js +226 -0
  225. package/dist/node-domexception-v89b0Nwz.js +21 -0
  226. package/dist/node-pending-queue-DUXCbYkp.js +32 -0
  227. package/dist/node-pending-queue-DZp7cdfo.js +32 -0
  228. package/dist/node-pending-queue-iYpoWqxe.js +32 -0
  229. package/dist/nodes-registry-BTy7Sc7D.js +52 -0
  230. package/dist/nodes-registry-BYjmmJBU.js +52 -0
  231. package/dist/nodes-registry-C8GeEGq0.js +52 -0
  232. package/dist/nodes-registry-Du6Klz0l.js +52 -0
  233. package/dist/oauth-flow-BA0yMrHx.js +148 -0
  234. package/dist/oauth-flow-C4QSMsbl.js +148 -0
  235. package/dist/oauth-flow-CIuDBDsp.js +148 -0
  236. package/dist/oauth-flow-CniM4jlJ.js +148 -0
  237. package/dist/oauth-provider-BA4GVFKg.js +111 -0
  238. package/dist/oauth-provider-Bnul5A_Z.js +111 -0
  239. package/dist/oauth-provider-DqPXPiiC.js +111 -0
  240. package/dist/oauth-provider-MEgHjij2.js +111 -0
  241. package/dist/observability-0spm7MPz.js +89 -0
  242. package/dist/observability-BOMYgHUh.js +89 -0
  243. package/dist/observability-CDqHr-_o.js +89 -0
  244. package/dist/observability-ah2a7sh1.js +89 -0
  245. package/dist/onboard-32d2Gsuy.js +14 -0
  246. package/dist/onboard-BJ78s3NT.js +3854 -0
  247. package/dist/onboard-C55YXd_e.js +14 -0
  248. package/dist/onboard-CNnm4yYp.js +3841 -0
  249. package/dist/onboard-CXSVPnP7.js +3854 -0
  250. package/dist/onboard-Cgj_CIrq.js +3812 -0
  251. package/dist/onboard-ChnsqU5z.js +14 -0
  252. package/dist/onboard-CjzqTYq3.js +3812 -0
  253. package/dist/onboard-CwvXXOR1.js +14 -0
  254. package/dist/onboard-CxlIsNhX.js +3854 -0
  255. package/dist/onboard-DPmufMqX.js +14 -0
  256. package/dist/onboard-F9lKA2ie.js +14 -0
  257. package/dist/onboard-UTQXzlPD.js +3854 -0
  258. package/dist/onboard-hK098kjl.js +14 -0
  259. package/dist/openai-CrdtuLxw.js +6292 -0
  260. package/dist/orchestrator-5M-6MB7r.js +6 -0
  261. package/dist/orchestrator-B3BjP1dy.js +6 -0
  262. package/dist/orchestrator-BZS62iDS.js +6 -0
  263. package/dist/orchestrator-Bcj7uc1F.js +189 -0
  264. package/dist/orchestrator-C7oLWNFW.js +6 -0
  265. package/dist/orchestrator-CTMbjgH_.js +6 -0
  266. package/dist/orchestrator-Crn4fgbI.js +189 -0
  267. package/dist/orchestrator-Cs6s-QmS.js +189 -0
  268. package/dist/orchestrator-Cuyqncql.js +189 -0
  269. package/dist/orchestrator-CxlEm5li.js +6 -0
  270. package/dist/orchestrator-DGqwsLmO.js +189 -0
  271. package/dist/orchestrator-UUHsFKiH.js +6 -0
  272. package/dist/orchestrator-oa7HbCnF.js +189 -0
  273. package/dist/orchestrator-tUKag7pG.js +189 -0
  274. package/dist/osint-ADgw_Gkd.js +283 -0
  275. package/dist/osint-B5j3IuJK.js +283 -0
  276. package/dist/osint-BJvOCmVk.js +283 -0
  277. package/dist/osint-CK9xVUUm.js +283 -0
  278. package/dist/osint-D6vQXCWh.js +283 -0
  279. package/dist/osint-DLYZsp1k.js +283 -0
  280. package/dist/osint-cAAdO-cx.js +283 -0
  281. package/dist/osint-chat-B0lc0Y6r.js +789 -0
  282. package/dist/osint-chat-BUhiSpf9.js +789 -0
  283. package/dist/osint-chat-BbH6eW8z.js +789 -0
  284. package/dist/osint-chat-C-9FVAkU.js +789 -0
  285. package/dist/osint-chat-CWET8Fno.js +789 -0
  286. package/dist/osint-chat-Cgdzg3lh.js +789 -0
  287. package/dist/osint-chat-xRP672b-.js +789 -0
  288. package/dist/pc-access-BCaF5mRs.js +858 -0
  289. package/dist/pc-access-BOcXappE.js +858 -0
  290. package/dist/pc-access-BgZNmAdB.js +8 -0
  291. package/dist/pc-access-CAoM6WN4.js +8 -0
  292. package/dist/pc-access-D2HdoziZ.js +8 -0
  293. package/dist/pc-access-D4g0fjQb.js +858 -0
  294. package/dist/pending-approval-CJPyt8U5.js +22 -0
  295. package/dist/pending-approval-CzMNCTfZ.js +22 -0
  296. package/dist/pending-approval-DaXi7otO.js +22 -0
  297. package/dist/pending-approval-KcyeiifE.js +22 -0
  298. package/dist/providers-DrZP0NeR.js +5 -0
  299. package/dist/providers-dHhpJo9j.js +1120 -0
  300. package/dist/reminders-store-B58LldEG.js +58 -0
  301. package/dist/reminders-store-C4gWckLa.js +58 -0
  302. package/dist/reminders-store-DT0o6a60.js +58 -0
  303. package/dist/renderer-B8c22rbg.js +228 -0
  304. package/dist/renderer-BS0ETL20.js +228 -0
  305. package/dist/renderer-Cg3c41A5.js +228 -0
  306. package/dist/renderer-UoPcgaAd.js +228 -0
  307. package/dist/rules-D0v5nuSE.js +106 -0
  308. package/dist/rules-DCKPgwLb.js +106 -0
  309. package/dist/rules-Zn9j4PnO.js +106 -0
  310. package/dist/rules-oAgOSPHC.js +106 -0
  311. package/dist/run-main.js +457 -131
  312. package/dist/runner-BaZ2V27T.js +1307 -0
  313. package/dist/runner-Bgl7UTbV.js +1307 -0
  314. package/dist/runner-DOKp3-v5.js +1307 -0
  315. package/dist/runner-voYdfM_f.js +1307 -0
  316. package/dist/search-tools-BBwMa8VX.js +107 -0
  317. package/dist/search-tools-CEUOO9Jf.js +107 -0
  318. package/dist/search-tools-VHP3xVyC.js +107 -0
  319. package/dist/search-tools-w_zT7-dr.js +107 -0
  320. package/dist/server-6TIyu0mb.js +4 -0
  321. package/dist/server-BAdJwMM9.js +4 -0
  322. package/dist/server-BD9FLc7S.js +1384 -0
  323. package/dist/server-BlqWBbS7.js +4 -0
  324. package/dist/server-BzwPvTbD.js +1447 -0
  325. package/dist/server-CBvSfG4w.js +4 -0
  326. package/dist/server-CbNBcB41.js +4 -0
  327. package/dist/server-DPTXaJJF.js +4 -0
  328. package/dist/server-Da_jSrfS.js +4 -0
  329. package/dist/server-Dv2zHHy-.js +1447 -0
  330. package/dist/server-MDmdWHob.js +1447 -0
  331. package/dist/server-N9LnLQCS.js +1447 -0
  332. package/dist/server-gai_RW1u.js +1356 -0
  333. package/dist/server-vbYKep6r.js +1356 -0
  334. package/dist/session-store-C6Otslf9.js +5 -0
  335. package/dist/session-store-Cmfnvuw9.js +141 -0
  336. package/dist/session-store-CuR9DgRf.js +5 -0
  337. package/dist/session-store-Cx1RMBhS.js +5 -0
  338. package/dist/session-store-DPPHkJBn.js +5 -0
  339. package/dist/session-store-DWLCWQFS.js +141 -0
  340. package/dist/session-store-qGufR_m5.js +141 -0
  341. package/dist/session-store-sUpA509O.js +141 -0
  342. package/dist/sessions-tools-9Z8TtdmP.js +5 -0
  343. package/dist/sessions-tools-BAZnoQLp.js +95 -0
  344. package/dist/sessions-tools-Bb_zF947.js +95 -0
  345. package/dist/sessions-tools-ClrKqLII.js +131 -0
  346. package/dist/sessions-tools-DFe23ZDD.js +5 -0
  347. package/dist/sessions-tools-JHSZ6Bns.js +5 -0
  348. package/dist/sessions-tools-TsRdeFb7.js +95 -0
  349. package/dist/sessions-tools-nYP3Agfs.js +5 -0
  350. package/dist/skill-loader-9jg876RH.js +160 -0
  351. package/dist/skill-loader-CM4KWQ7_.js +160 -0
  352. package/dist/skill-loader-CS3OP4Lr.js +160 -0
  353. package/dist/skill-loader-CnJDLNbY.js +7 -0
  354. package/dist/skill-loader-DRLgt5V2.js +160 -0
  355. package/dist/skill-loader-DVpEgYV2.js +7 -0
  356. package/dist/skill-loader-Df5T_UFl.js +7 -0
  357. package/dist/skill-loader-DxE-gZkT.js +7 -0
  358. package/dist/skill-runtime-8Xh5874w.js +104 -0
  359. package/dist/skill-runtime-B3aUdWKh.js +104 -0
  360. package/dist/skill-runtime-BKyhYvpW.js +5 -0
  361. package/dist/skill-runtime-BP0kZfmM.js +5 -0
  362. package/dist/skill-runtime-CHQT7c1k.js +5 -0
  363. package/dist/skill-runtime-CLK5HTVE.js +5 -0
  364. package/dist/skill-runtime-COyc3Bci.js +104 -0
  365. package/dist/skill-runtime-Cfd0OLkP.js +104 -0
  366. package/dist/skill-runtime-CvDXX7wN.js +5 -0
  367. package/dist/skill-runtime-D4REZnhY.js +104 -0
  368. package/dist/skill-runtime-DQRi9sIf.js +5 -0
  369. package/dist/skill-runtime-DRd56NWK.js +104 -0
  370. package/dist/skill-runtime-Dr0fimDf.js +5 -0
  371. package/dist/skill-runtime-DtO4i9vK.js +104 -0
  372. package/dist/src-9GyYED0T.js +63 -0
  373. package/dist/src-B9L6qb-Z.js +462 -0
  374. package/dist/src-BEjIVOmq.js +63 -0
  375. package/dist/src-BY3On_zO.js +462 -0
  376. package/dist/src-BdgKAlMQ.js +20 -0
  377. package/dist/src-C52A3OwC.js +301 -0
  378. package/dist/src-C8cbfjat.js +173 -0
  379. package/dist/src-CDLnbsLp.js +458 -0
  380. package/dist/src-CQ2lZvdF.js +462 -0
  381. package/dist/src-Cdwn9xpG.js +462 -0
  382. package/dist/src-CyCLoqIP.js +63 -0
  383. package/dist/src-D-OND_62.js +301 -0
  384. package/dist/src-D4VRanxB.js +458 -0
  385. package/dist/src-DFo8lVfV.js +300 -0
  386. package/dist/src-DJbpP4Gs.js +462 -0
  387. package/dist/src-DK-ayUx7.js +63 -0
  388. package/dist/src-DPfnArdr.js +300 -0
  389. package/dist/src-DTft7Qvt.js +63 -0
  390. package/dist/src-DgvFah8g.js +153 -0
  391. package/dist/src-H1I7JC2E.js +63 -0
  392. package/dist/src-TYvV_oFO.js +63 -0
  393. package/dist/src-lltU5gkh.js +20 -0
  394. package/dist/sub-agent-tools-BoMCZ6jz.js +39 -0
  395. package/dist/sub-agent-tools-CE8pVUdb.js +39 -0
  396. package/dist/sub-agent-tools-CQWNfYn_.js +39 -0
  397. package/dist/sub-agent-tools-CViiqebO.js +39 -0
  398. package/dist/sub-agent-tools-DgT4jUHC.js +39 -0
  399. package/dist/sub-agent-tools-Dla3ZB5N.js +39 -0
  400. package/dist/sub-agent-tools-Lbin_4S3.js +39 -0
  401. package/dist/tool-policy-1EBdJkSG.js +190 -0
  402. package/dist/tool-policy-B1bL0X-E.js +189 -0
  403. package/dist/tool-policy-NLbucl5-.js +189 -0
  404. package/dist/tool-policy-yNVTLNDY.js +189 -0
  405. package/dist/tts-elevenlabs-Bk24wQ2V.js +64 -0
  406. package/dist/tts-elevenlabs-CHrJZuNW.js +64 -0
  407. package/dist/tts-elevenlabs-DHqQsqMz.js +64 -0
  408. package/dist/tts-elevenlabs-TUKPkSV2.js +64 -0
  409. package/dist/vision-CW1YCKed.js +167 -0
  410. package/dist/vision-DPLmrwUA.js +167 -0
  411. package/dist/vision-Q4EOcBS6.js +167 -0
  412. package/dist/vision-XyAGO5La.js +167 -0
  413. package/dist/vision-tools-B5DNR28M.js +5 -0
  414. package/dist/vision-tools-CC9HSuvN.js +51 -0
  415. package/dist/vision-tools-Ca3OhtdX.js +51 -0
  416. package/dist/vision-tools-CpU2fSRv.js +51 -0
  417. package/dist/vision-tools-Ct52djW8.js +51 -0
  418. package/dist/vision-tools-DF7N2DDI.js +5 -0
  419. package/dist/vision-tools-DyP6lRA5.js +5 -0
  420. package/dist/vision-tools-RIVKEUeY.js +5 -0
  421. package/dist/voice-transcription-Bz2y0nPK.js +170 -0
  422. package/dist/voice-transcription-CVFcHpPF.js +170 -0
  423. package/dist/voice-transcription-CvQuWPYK.js +170 -0
  424. package/dist/voice-transcription-YqndiLA7.js +170 -0
  425. package/dist/website-watch-tools-B036Y8OQ.js +176 -0
  426. package/dist/website-watch-tools-B8CHie8v.js +5 -0
  427. package/dist/website-watch-tools-Brk5oIEv.js +176 -0
  428. package/dist/website-watch-tools-CJqRj_GB.js +5 -0
  429. package/dist/website-watch-tools-CSSEu3Qy.js +5 -0
  430. package/dist/website-watch-tools-D92dkYZa.js +176 -0
  431. package/dist/website-watch-tools-Du_a8lXq.js +176 -0
  432. package/dist/website-watch-tools-UdTBGgRk.js +5 -0
  433. package/package.json +147 -143
  434. package/scripts/fix-mojibake.mjs +166 -0
  435. package/static/web/assets/{index-BeAuHLb2.js → index-8bDizzaq.js} +2 -2
  436. package/static/web/assets/index-B5N1LHGR.css +1 -0
  437. package/static/web/index.html +2 -2
  438. package/static/web/assets/index-D2RfO0dG.css +0 -1
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-DfrmKeE6.js');
7
- const require_daemon = require('./daemon-C4j0wqxz.js');
4
+ require('./env-resolve-NNM3F6Eo.js');
5
+ const require_config = require('./config-DN9fdLL3.js');
6
+ require('./server-MDmdWHob.js');
7
+ const require_daemon = require('./daemon-DBTtYx6E.js');
8
8
  const require_gateway = require('./gateway-CzI8dnlS.js');
9
- require('./providers-DP8T0QCR.js');
10
- const require_onboard = require('./onboard-C7vJegQc.js');
9
+ require('./providers-dHhpJo9j.js');
10
+ const require_onboard = require('./onboard-CXSVPnP7.js');
11
11
  require('./theme-CLXvI6Hr.js');
12
- const require_banner = require('./banner-DG3v43xA.js');
13
- const require_hub = require('./hub-Bb_dYECE.js');
12
+ const require_banner = require('./banner-CZ2BfvQq.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-D6yjBYo4.js');
18
+ const require_agents_routing = require('./agents-routing-EwzORQQv.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');
@@ -674,17 +674,26 @@ const CHANNELS = [
674
674
  platforms: ["all"],
675
675
  tokenLabel: "Telegram Bot Token",
676
676
  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
- }],
677
+ extraFields: [
678
+ {
679
+ name: "dmPolicy",
680
+ label: "DM policy",
681
+ hint: "pairing (default) | allowlist | open | disabled",
682
+ required: false
683
+ },
684
+ {
685
+ name: "groupActivation",
686
+ label: "Group activation",
687
+ hint: "mention (default) | always",
688
+ required: false
689
+ },
690
+ {
691
+ name: "inlineMode",
692
+ label: "Inline mode",
693
+ hint: "Use @botname <query> in any chat. Enable via BotFather /setinline first.",
694
+ required: false
695
+ }
696
+ ],
688
697
  setupSteps: [
689
698
  "1. Open Telegram → @BotFather → /newbot. Save the token.",
690
699
  "2. Config: channels.telegram.botToken, dmPolicy (default: pairing), groups.",
@@ -734,6 +743,12 @@ const CHANNELS = [
734
743
  label: "DM policy",
735
744
  hint: "\"pairing\" (default) | \"allowlist\" | \"open\" | \"none\"",
736
745
  required: false
746
+ },
747
+ {
748
+ name: "autoArchiveDuration",
749
+ label: "Thread auto-archive duration (min)",
750
+ hint: "60=1h (default) | 1440=1d | 4320=3d | 10080=1w",
751
+ required: false
737
752
  }
738
753
  ],
739
754
  status: "recommended",
@@ -1957,6 +1972,66 @@ const ZALO_PERSONAL = {
1957
1972
  notes: "Zalo Web cookie auth. DMs only. No groups. Text chunked ~2000 chars."
1958
1973
  };
1959
1974
  CHANNELS.push(ZALO_PERSONAL);
1975
+ const NOTION = {
1976
+ id: "notion",
1977
+ name: "Notion",
1978
+ emoji: "📋",
1979
+ requiresGateway: false,
1980
+ supportsDM: false,
1981
+ platforms: ["all"],
1982
+ tokenLabel: "Notion Integration Token",
1983
+ tokenHint: "notion.so/my-integrations → New integration → Copy token",
1984
+ extraFields: [{
1985
+ name: "defaultDatabaseId",
1986
+ label: "Default Database ID",
1987
+ hint: "Paste the 32-char ID from your Notion DB URL",
1988
+ required: false
1989
+ }, {
1990
+ name: "defaultPageId",
1991
+ label: "Default Page ID",
1992
+ hint: "Optional: page to write notes to by default",
1993
+ required: false
1994
+ }],
1995
+ setupSteps: [
1996
+ "1. Go to notion.so/my-integrations → New integration → give it a name.",
1997
+ "2. Copy the Internal Integration Token (starts with secret_...).",
1998
+ "3. Open the Notion page/database you want to use → Share → Invite your integration.",
1999
+ "4. Set NOTION_TOKEN in your env or config: channels.notion.token.",
2000
+ "5. Optional: set defaultDatabaseId to auto-create pages in a DB.",
2001
+ "",
2002
+ " 🔗 docs/notion.md — full setup"
2003
+ ],
2004
+ status: "available",
2005
+ notes: "Read/write pages, create DB entries, search workspace. Needs explicit page share."
2006
+ };
2007
+ CHANNELS.push(NOTION);
2008
+ const SHAZAM = {
2009
+ id: "shazam",
2010
+ name: "Shazam (Song Recognition)",
2011
+ emoji: "🎵",
2012
+ requiresGateway: false,
2013
+ supportsDM: false,
2014
+ platforms: ["all"],
2015
+ tokenLabel: "RapidAPI Key (Shazam API)",
2016
+ tokenHint: "rapidapi.com/apidojo/api/shazam → Subscribe → Copy X-RapidAPI-Key",
2017
+ extraFields: [{
2018
+ name: "autoRecognize",
2019
+ label: "Auto-recognize on audio messages",
2020
+ hint: "true | false (default)",
2021
+ required: false
2022
+ }],
2023
+ setupSteps: [
2024
+ "1. Sign up at rapidapi.com → search \"Shazam\" → subscribe to the free plan.",
2025
+ "2. Copy your X-RapidAPI-Key from the API dashboard.",
2026
+ "3. Set SHAZAM_API_KEY in your env or config: channels.shazam.apiKey.",
2027
+ "4. Send an audio clip or hum detection query to identify a song.",
2028
+ "",
2029
+ " 🔗 docs/shazam.md — full setup"
2030
+ ],
2031
+ status: "available",
2032
+ notes: "Song recognition via Shazam API on RapidAPI. Free tier: 500 req/month."
2033
+ };
2034
+ CHANNELS.push(SHAZAM);
1960
2035
 
1961
2036
  //#endregion
1962
2037
  //#region src/commands/channels/add.ts
@@ -2527,6 +2602,22 @@ var init_queue = require_chunk.__esm({ "src/delivery/queue.ts"() {
2527
2602
  //#endregion
2528
2603
  //#region src/cli/run-main.ts
2529
2604
  require_device_auth_store.init_device_auth_store();
2605
+ function getGitShortHash() {
2606
+ try {
2607
+ const { execSync } = require("child_process");
2608
+ return execSync("git rev-parse --short HEAD", { stdio: [
2609
+ "ignore",
2610
+ "pipe",
2611
+ "ignore"
2612
+ ] }).toString().trim();
2613
+ } catch {
2614
+ return "";
2615
+ }
2616
+ }
2617
+ const cliVersion = (() => {
2618
+ const h = getGitShortHash();
2619
+ return h ? `5.4.1+${h}` : "5.4.1";
2620
+ })();
2530
2621
  process.on("unhandledRejection", (reason) => {
2531
2622
  console.error("[hyperclaw] Unhandled rejection:", reason);
2532
2623
  process.exit(1);
@@ -2539,34 +2630,40 @@ function sanitizeForLog(value) {
2539
2630
  return String(value ?? "").replace(/[\r\n\t]+/g, " ").replace(/[^\x20-\x7e]+/g, "?").slice(0, 200);
2540
2631
  }
2541
2632
  const program = new commander.Command();
2542
- program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.3.45").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)
2633
+ 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", `
2634
+ Full reference: READMECOMMAND.md (all commands + options)
2544
2635
 
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
2636
+ Command groups:
2637
+ init, onboard, quickstart, setup
2638
+ gateway status|start|stop|restart|config, daemon start|stop|restart|status|logs|install|uninstall
2639
+ web (--port, --skip-install), chat (--session, --model, --workspace)
2640
+ agent -m "message" (--thinking, --model, --multi-step, --parallel)
2641
+ channels list|add|remove|login|status
2642
+ hooks list|info|enable|disable|install
2643
+ pairing list|approve, devices list|pair|approve|reject|unpair
2644
+ hub, hub search [query], hub install <id>, hub list, hub scan <id>, hub marketplace
2645
+ skill search|list|install (alias for hub)
2646
+ memory show|add-rule|add-fact|add-image|add-audio|search|search-vector|auto-show|clear|save
2647
+ backup create|verify <dir>|restore <dir>
2648
+ config show|set-key|set-service-key|schema
2649
+ secrets audit|set|apply|reload|remove|credentials
2650
+ doctor [--fix], health, security audit
2651
+ status (--all, --deep), dashboard
2652
+ acp, threads create (--resume <id>)|list|terminate, canvas show|add|clear|export
2653
+ mcp list|add|remove|probe [id], node list|add|probe [id]|remove|queue [nodeId]
2654
+ nodes, delivery status|retry
2655
+ cron list|add|remove (-s --skill), webhooks list|remove|toggle
2656
+ gmail watch-setup, auto-reply list|toggle|remove
2657
+ voice-call, voice, theme list|set|preview
2658
+ workspace init|show, pc status|enable|disable|log|run
2659
+ bot status|setup|start|stop
2660
+ auth add|remove|oauth|setup-token|oauth-set
2661
+ developer-key create|list|revoke
2662
+ agents bindings|bind|unbind, sandbox explain
2663
+ message send, deploy, update, osint [workflow], logs (--follow)
2567
2664
 
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) => {
2665
+ Examples: hyperclaw onboard | hyperclaw chat | hyperclaw hub search
2666
+ Full list: READMECOMMAND.md`).hook("preAction", (thisCommand) => {
2570
2667
  const profile = thisCommand.opts().profile;
2571
2668
  if (profile) {
2572
2669
  const os$2 = require("os");
@@ -2710,8 +2807,8 @@ sandboxCmd.command("explain").description("Show effective sandbox mode, tool pol
2710
2807
  }
2711
2808
  const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
2712
2809
  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-ClYgvXAj.js"));
2810
+ const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-1EBdJkSG.js"));
2811
+ const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
2715
2812
  const allTools = [
2716
2813
  ...getBuiltinTools(),
2717
2814
  ...getSessionsTools(() => null),
@@ -2875,15 +2972,70 @@ msgCmd.command("send").description("Send a message via a configured channel").op
2875
2972
  await sendMessage(opts);
2876
2973
  process.exit(0);
2877
2974
  });
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) => {
2975
+ const hubCmd = program.command("hub").description("Skill marketplace — browse, search, install community skills");
2976
+ hubCmd.command("search [query]").description("Search skills (ClawHub + bundled registry)").option("-c, --category <cat>", "Filter by category").action(async (query, opts) => {
2977
+ const hub = new require_hub.SkillHub();
2978
+ const q = query || "";
2979
+ const skills = await hub.searchClawHub(q, opts.category);
2980
+ if (skills.length === 0) {
2981
+ console.log(chalk.default.gray(q ? `No skills found for "${q}"` : "Browse: hyperclaw hub"));
2982
+ process.exit(0);
2983
+ return;
2984
+ }
2985
+ console.log(chalk.default.bold.hex("#06b6d4")("\n Skill marketplace — search results:\n"));
2986
+ for (const s of skills) {
2987
+ const stars = "★".repeat(Math.round(s.rating || 0)) + "☆".repeat(5 - Math.round(s.rating || 0));
2988
+ 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`);
2989
+ console.log(` ${chalk.default.gray(s.description || "")}`);
2990
+ console.log(` ${chalk.default.hex("#06b6d4")("hyperclaw hub install " + (s.id || s.name))}\n`);
2991
+ }
2992
+ process.exit(0);
2993
+ });
2994
+ 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) => {
2879
2995
  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);
2996
+ const ora$4 = (await import("ora")).default;
2997
+ const s = ora$4(`Installing ${id}...`).start();
2998
+ try {
2999
+ const dest = await hub.installFromClawHub(id, opts.version);
3000
+ s.succeed(`Installed to ${dest}`);
3001
+ } catch (e) {
3002
+ const match = require_hub.SKILL_REGISTRY.find((x) => x.id === id);
3003
+ if (match) {
3004
+ await hub.install(id, !!opts?.force);
3005
+ s.succeed(`Installed bundled skill: ${match.name}`);
3006
+ } else s.fail(e.message);
3007
+ }
2884
3008
  process.exit(0);
2885
3009
  });
2886
- const skillCmd = program.command("skill").description("ClawHub search and install skills from registry");
3010
+ hubCmd.command("list").description("List installed skills").action(async () => {
3011
+ const hub = new require_hub.SkillHub();
3012
+ const installed = await hub.getInstalled();
3013
+ console.log(chalk.default.bold.hex("#06b6d4")("\n Installed skills:\n"));
3014
+ for (const s of installed) {
3015
+ const src = require_hub.SKILL_REGISTRY.some((r) => r.id === s.id) ? "" : " (registry)";
3016
+ console.log(` ${chalk.default.hex("#06b6d4")("✓")} ${s.name} ${chalk.default.gray(`(${s.id})${src}`)}`);
3017
+ }
3018
+ if (installed.length === 0) console.log(chalk.default.gray(" No skills installed. Run: hyperclaw hub search <query> or hyperclaw hub\n"));
3019
+ else console.log();
3020
+ process.exit(0);
3021
+ });
3022
+ hubCmd.command("scan <id>").description("Security scan a skill").action(async (id) => {
3023
+ const hub = new require_hub.SkillHub();
3024
+ await hub.scan(id);
3025
+ process.exit(0);
3026
+ });
3027
+ hubCmd.command("marketplace").description("Browse marketplace (installed + bundled)").option("--hide-suspicious", "Hide suspicious/dangerous").action(async (opts) => {
3028
+ const hub = new require_hub.SkillHub();
3029
+ await hub.showMarketplace({ hideSuspicious: opts.hideSuspicious });
3030
+ process.exit(0);
3031
+ });
3032
+ hubCmd.option("--hide-suspicious", "Hide suspicious skills");
3033
+ hubCmd.action(async (opts) => {
3034
+ const hub = new require_hub.SkillHub();
3035
+ await hub.showHub(opts?.hideSuspicious);
3036
+ process.exit(0);
3037
+ });
3038
+ const skillCmd = program.command("skill").description("Skills — alias for hyperclaw hub (search, install, list)");
2887
3039
  skillCmd.command("search [query]").description("Search ClawHub for skills").option("-c, --category <cat>", "Filter by category").action(async (query, opts) => {
2888
3040
  const hub = new require_hub.SkillHub();
2889
3041
  const q = query || "";
@@ -3194,8 +3346,120 @@ memCmd.command("add-rule <rule>").description("Append a global rule to AGENTS.md
3194
3346
  await new require_memory.MemoryManager().appendRule(rule);
3195
3347
  process.exit(0);
3196
3348
  });
3197
- memCmd.command("add-fact <fact>").description("Add a fact to MEMORY.md").action(async (fact) => {
3198
- await new require_memory.MemoryManager().addMemory(fact);
3349
+ 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) => {
3350
+ try {
3351
+ const pkg = "@hyperclaw/memory-lancedb";
3352
+ const mod = await (async () => {
3353
+ try {
3354
+ return await import(pkg);
3355
+ } catch {
3356
+ return null;
3357
+ }
3358
+ })();
3359
+ if (!mod?.VectorMemoryService) throw new Error("Install: npm install @hyperclaw/memory-lancedb vectordb");
3360
+ const cfg = await new require_manager.ConfigManager().load();
3361
+ const apiKey = process.env.GOOGLE_AI_API_KEY ?? (cfg?.provider?.providerId === "google" ? cfg?.provider?.apiKey : void 0);
3362
+ if (!apiKey) throw new Error("GOOGLE_AI_API_KEY required for image indexing");
3363
+ const path$5 = await import("path");
3364
+ const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3365
+ const svc = new mod.VectorMemoryService({
3366
+ dbPath: path$5.join(getHyperClawDir$1(), "memory-lancedb"),
3367
+ apiKey,
3368
+ embeddingProvider: "gemini"
3369
+ });
3370
+ await svc.addImage(imagePath, opts.caption);
3371
+ console.log(chalk.default.green(`\n ✓ Image indexed: ${imagePath}\n`));
3372
+ } catch (e) {
3373
+ console.log(chalk.default.yellow(`\n ${e.message}\n`));
3374
+ process.exit(1);
3375
+ }
3376
+ process.exit(0);
3377
+ });
3378
+ 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) => {
3379
+ try {
3380
+ const pkg = "@hyperclaw/memory-lancedb";
3381
+ const mod = await (async () => {
3382
+ try {
3383
+ return await import(pkg);
3384
+ } catch {
3385
+ return null;
3386
+ }
3387
+ })();
3388
+ if (!mod?.VectorMemoryService) throw new Error("Install: npm install @hyperclaw/memory-lancedb vectordb");
3389
+ const cfg = await new require_manager.ConfigManager().load();
3390
+ const apiKey = process.env.GOOGLE_AI_API_KEY ?? (cfg?.provider?.providerId === "google" ? cfg?.provider?.apiKey : void 0);
3391
+ if (!apiKey) throw new Error("GOOGLE_AI_API_KEY required for audio indexing");
3392
+ const path$5 = await import("path");
3393
+ const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3394
+ const svc = new mod.VectorMemoryService({
3395
+ dbPath: path$5.join(getHyperClawDir$1(), "memory-lancedb"),
3396
+ apiKey,
3397
+ embeddingProvider: "gemini"
3398
+ });
3399
+ await svc.addAudio(audioPath, opts.transcript);
3400
+ console.log(chalk.default.green(`\n ✓ Audio indexed: ${audioPath}\n`));
3401
+ } catch (e) {
3402
+ console.log(chalk.default.yellow(`\n ${e.message}\n`));
3403
+ process.exit(1);
3404
+ }
3405
+ process.exit(0);
3406
+ });
3407
+ memCmd.command("add-fact <fact>").description("Add a fact to MEMORY.md (and vector DB when memory-lancedb is available)").action(async (fact) => {
3408
+ let vectorStore;
3409
+ try {
3410
+ const pkg = "@hyperclaw/memory-lancedb";
3411
+ const mod = await (async () => {
3412
+ try {
3413
+ return await import(pkg);
3414
+ } catch {
3415
+ return null;
3416
+ }
3417
+ })();
3418
+ const VectorMemoryService = mod?.VectorMemoryService;
3419
+ const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3420
+ const path$5 = await import("path");
3421
+ if (!VectorMemoryService) throw new Error("not available");
3422
+ const svc = new VectorMemoryService({
3423
+ dbPath: path$5.join(getHyperClawDir$1(), "memory-lancedb"),
3424
+ apiKey: (await new require_manager.ConfigManager().load())?.provider?.apiKey
3425
+ });
3426
+ await svc.init();
3427
+ vectorStore = { addMemory: (t) => svc.addMemory(t) };
3428
+ } catch {}
3429
+ await new require_memory.MemoryManager().addMemory(fact, vectorStore);
3430
+ process.exit(0);
3431
+ });
3432
+ const backupCmd = program.command("backup").description("Backup and restore local HyperClaw state");
3433
+ 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) => {
3434
+ const { createBackup } = await Promise.resolve().then(() => require("./backup-7l3iovkX.js"));
3435
+ const dir = await createBackup(opts.output);
3436
+ console.log(chalk.default.green(`\n ✓ Backup created: ${dir}\n`));
3437
+ process.exit(0);
3438
+ });
3439
+ backupCmd.command("verify <dir>").description("Verify backup integrity (checksums)").action(async (dir) => {
3440
+ const { verifyBackup } = await Promise.resolve().then(() => require("./backup-7l3iovkX.js"));
3441
+ const { ok, errors } = await verifyBackup(dir);
3442
+ if (ok) console.log(chalk.default.green("\n ✓ Backup OK\n"));
3443
+ else console.log(chalk.default.red("\n ✗ Errors:\n"), errors.map((e) => " " + e).join("\n"), "\n");
3444
+ process.exit(ok ? 0 : 1);
3445
+ });
3446
+ backupCmd.command("restore <dir>").description("Restore from backup (overwrites local files)").option("-y, --yes", "Skip confirmation").action(async (dir, opts) => {
3447
+ const { restoreBackup } = await Promise.resolve().then(() => require("./backup-7l3iovkX.js"));
3448
+ if (!opts.yes) {
3449
+ console.log(chalk.default.yellow(`\n This will overwrite files in ~/.hyperclaw. Confirm? (y/N) `));
3450
+ const readline$1 = (await import("readline")).createInterface({
3451
+ input: process.stdin,
3452
+ output: process.stdout
3453
+ });
3454
+ const line = await new Promise((r) => readline$1.question("", r));
3455
+ readline$1.close();
3456
+ if (line?.toLowerCase() !== "y") {
3457
+ console.log(chalk.default.gray("\n Aborted.\n"));
3458
+ process.exit(0);
3459
+ }
3460
+ }
3461
+ await restoreBackup(dir);
3462
+ console.log(chalk.default.green("\n ✓ Restored.\n"));
3199
3463
  process.exit(0);
3200
3464
  });
3201
3465
  const cfgCmd = program.command("config").description("Configuration management");
@@ -3253,7 +3517,7 @@ cfgCmd.command("set-key <KEY=value>").description("Set provider API key or confi
3253
3517
  xai: "xai"
3254
3518
  };
3255
3519
  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"));
3520
+ const { validateApiKeyFormat } = await Promise.resolve().then(() => require("./api-key-validation-BANgbsfO.js"));
3257
3521
  const formatErr = validateApiKeyFormat(pid, value);
3258
3522
  if (formatErr) {
3259
3523
  console.log(chalk.default.yellow(`\n ⚠ ${formatErr}\n`));
@@ -3315,7 +3579,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
3315
3579
  cfgCmd.command("schema").description("Show configuration schema").action(() => {
3316
3580
  console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/hyperclaw.json\n"));
3317
3581
  const schema = {
3318
- version: "string (e.g. \"5.3.45\")",
3582
+ version: "string (e.g. \"5.4.1\")",
3319
3583
  workspaceName: "string",
3320
3584
  provider: {
3321
3585
  providerId: "string",
@@ -3370,11 +3634,11 @@ devKeyCmd.command("revoke <id>").description("Revoke a developer key").action(as
3370
3634
  else console.log(chalk.default.red(` Key not found: ${id}\n`));
3371
3635
  process.exit(ok ? 0 : 1);
3372
3636
  });
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) => {
3637
+ 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
3638
  const platform = (opts.platform ?? "fly").toLowerCase();
3375
3639
  const dryRun = !!opts.dryRun;
3376
3640
  if (platform === "fly") {
3377
- console.log(chalk.default.bold.hex("#06b6d4")("\n Deploy to Fly.io\n"));
3641
+ console.log(chalk.default.bold.hex("#06b6d4")("\n 🚀 Deploy to Fly.io\n"));
3378
3642
  if (dryRun) {
3379
3643
  console.log(chalk.default.gray(" Commands to run:"));
3380
3644
  console.log(chalk.default.gray(" fly launch # first time"));
@@ -3395,12 +3659,21 @@ program.command("deploy").description("Deploy gateway to cloud (Fly.io or Render
3395
3659
  }
3396
3660
  }
3397
3661
  } 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"));
3662
+ console.log(chalk.default.bold.hex("#06b6d4")("\n 🚀 Deploy to Render\n"));
3663
+ console.log(chalk.default.gray(" 1. Push to GitHub and connect at https://render.com"));
3664
+ console.log(chalk.default.gray(" 2. New Web Service → connect repo, use render.yaml"));
3665
+ console.log(chalk.default.gray(" 3. Environment: OPENROUTER_API_KEY, HYPERCLAW_GATEWAY_TOKEN"));
3666
+ console.log(chalk.default.cyan("\n One-click: https://render.com/deploy\n"));
3667
+ } else if (platform === "railway") {
3668
+ console.log(chalk.default.bold.hex("#06b6d4")("\n 🚀 Deploy to Railway\n"));
3669
+ console.log(chalk.default.gray(" 1. Create project: https://railway.app/new"));
3670
+ console.log(chalk.default.gray(" 2. Deploy from GitHub or use Railway CLI:"));
3671
+ console.log(chalk.default.gray(" npm i -g @railway/cli && railway login"));
3672
+ console.log(chalk.default.gray(" railway init; railway add"));
3673
+ console.log(chalk.default.gray(" 3. Variables: OPENROUTER_API_KEY, HYPERCLAW_GATEWAY_TOKEN, PORT=18789"));
3674
+ console.log(chalk.default.cyan("\n One-click: https://railway.app/template (use Docker)\n"));
3402
3675
  } else {
3403
- console.log(chalk.default.red(` Unknown platform: ${platform}. Use fly or render.\n`));
3676
+ console.log(chalk.default.red(` Unknown platform: ${platform}. Use fly, render, or railway.\n`));
3404
3677
  process.exit(1);
3405
3678
  }
3406
3679
  process.exit(0);
@@ -3593,40 +3866,40 @@ themeCmd.command("preview").description("Preview all themes side-by-side").actio
3593
3866
  });
3594
3867
  const secretsCmd = program.command("secrets").description("External secrets management");
3595
3868
  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"));
3869
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CNgdJunf.js"));
3597
3870
  const filter = opts.requiredBy?.split(",");
3598
3871
  await new SecretsManager().audit(filter);
3599
3872
  process.exit(0);
3600
3873
  });
3601
3874
  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"));
3875
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CNgdJunf.js"));
3603
3876
  await new SecretsManager().set(kv);
3604
3877
  process.exit(0);
3605
3878
  });
3606
3879
  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"));
3880
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CNgdJunf.js"));
3608
3881
  await new SecretsManager().apply();
3609
3882
  process.exit(0);
3610
3883
  });
3611
3884
  secretsCmd.command("reload").description("Reload secrets into running gateway").action(async () => {
3612
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3885
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CNgdJunf.js"));
3613
3886
  await new SecretsManager().reload();
3614
3887
  process.exit(0);
3615
3888
  });
3616
3889
  secretsCmd.command("remove <key>").description("Remove a secret from .env").action(async (key) => {
3617
- const { SecretsManager } = await Promise.resolve().then(() => require("./manager-DWJ7WZcY.js"));
3890
+ const { SecretsManager } = await Promise.resolve().then(() => require("./manager-CNgdJunf.js"));
3618
3891
  await new SecretsManager().remove(key);
3619
3892
  process.exit(0);
3620
3893
  });
3621
3894
  secretsCmd.command("credentials").description("List provider credential files (credentials/*.json)").action(async () => {
3622
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Bmm9e1SS.js"));
3895
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-CR4WSDGl.js"));
3623
3896
  const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
3624
3897
  await new CredentialsStore(getHyperClawDir$1()).showList();
3625
3898
  process.exit(0);
3626
3899
  });
3627
3900
  const securityCmd = program.command("security").description("Security tools");
3628
3901
  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"));
3902
+ const { runSecurityAudit } = await Promise.resolve().then(() => require("./audit-BLMB8qp7.js"));
3630
3903
  await runSecurityAudit({
3631
3904
  deep: opts.deep,
3632
3905
  fix: opts.fix,
@@ -3635,20 +3908,20 @@ securityCmd.command("audit").description("Security audit — file permissions, D
3635
3908
  process.exit(0);
3636
3909
  });
3637
3910
  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-DtRd_A_O.js"));
3911
+ const { osintSetup, osintQuickStart } = await Promise.resolve().then(() => require("./osint-DLYZsp1k.js"));
3639
3912
  if (opts.show || opts.reset) await osintSetup({
3640
3913
  show: opts.show,
3641
3914
  reset: opts.reset
3642
3915
  });
3643
3916
  else if (workflow === "chat") {
3644
- const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-CfexqWop.js"));
3917
+ const { runOsintChat } = await Promise.resolve().then(() => require("./osint-chat-B0lc0Y6r.js"));
3645
3918
  await runOsintChat({ model: opts.model });
3646
3919
  } else if (workflow === "setup" || workflow) await osintSetup({ mode: workflow });
3647
3920
  else await osintQuickStart();
3648
3921
  process.exit(0);
3649
3922
  });
3650
3923
  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-D-i8bqTf.js"));
3924
+ const { runChat } = await Promise.resolve().then(() => require("./chat-CiuT-GTs.js"));
3652
3925
  const cfg = await new require_manager.ConfigManager().load().catch(() => null);
3653
3926
  const port = cfg?.gateway?.port ?? 18789;
3654
3927
  const gm = new GatewayManager$1();
@@ -3663,7 +3936,7 @@ program.command("chat").description("Interactive terminal chat with the agent").
3663
3936
  });
3664
3937
  const agentRunCmd = program.command("agent").description("Run agent with thinking control");
3665
3938
  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-ClYgvXAj.js"));
3939
+ const { runAgent } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
3667
3940
  await runAgent({
3668
3941
  message: opts.message,
3669
3942
  thinking: opts.thinking,
@@ -3678,8 +3951,19 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
3678
3951
  process.exit(0);
3679
3952
  });
3680
3953
  const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
3954
+ 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) => {
3955
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
3956
+ const mgr = new ACPThreadManager();
3957
+ const thread = await mgr.create({
3958
+ resumeSessionId: opts.resume,
3959
+ name: opts.name,
3960
+ channelId: opts.channel
3961
+ });
3962
+ console.log(require("chalk").green(`\n ✔ Thread: ${thread.name} (${thread.id})\n`));
3963
+ process.exit(0);
3964
+ });
3681
3965
  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-ClYgvXAj.js"));
3966
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
3683
3967
  const mgr = new ACPThreadManager();
3684
3968
  const threads = await mgr.list({
3685
3969
  channelId: opts.channel,
@@ -3689,29 +3973,33 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
3689
3973
  process.exit(0);
3690
3974
  });
3691
3975
  threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
3692
- const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
3976
+ const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
3693
3977
  await new ACPThreadManager().terminate(id);
3694
3978
  console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
3695
3979
  process.exit(0);
3696
3980
  });
3981
+ program.command("acp").description("Start ACP server on stdio for IDE integration (VS Code, Zed, Cursor, Codex)").action(async () => {
3982
+ const { runACPStdio } = await Promise.resolve().then(() => require("./src-D-OND_62.js"));
3983
+ await runACPStdio();
3984
+ });
3697
3985
  const canvasCmd = program.command("canvas").description("Live AI-driven UI canvas");
3698
3986
  canvasCmd.command("show").description("Show current canvas components").action(async () => {
3699
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B1ToXngl.js"));
3987
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-Cg3c41A5.js"));
3700
3988
  await new CanvasRenderer().show();
3701
3989
  process.exit(0);
3702
3990
  });
3703
3991
  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"));
3992
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-Cg3c41A5.js"));
3705
3993
  await new CanvasRenderer().addComponent(type, title);
3706
3994
  process.exit(0);
3707
3995
  });
3708
3996
  canvasCmd.command("clear").description("Clear all canvas components").action(async () => {
3709
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B1ToXngl.js"));
3997
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-Cg3c41A5.js"));
3710
3998
  await new CanvasRenderer().clear();
3711
3999
  process.exit(0);
3712
4000
  });
3713
4001
  canvasCmd.command("export").description("Export canvas as HTML file").action(async () => {
3714
- const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-B1ToXngl.js"));
4002
+ const { CanvasRenderer } = await Promise.resolve().then(() => require("./renderer-Cg3c41A5.js"));
3715
4003
  const fs$7 = require("fs-extra");
3716
4004
  const html = await new CanvasRenderer().exportHtml();
3717
4005
  const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
@@ -3733,62 +4021,67 @@ deliveryCmd.command("retry <id>").description("Retry a dead-lettered delivery it
3733
4021
  });
3734
4022
  const mcpCmd = program.command("mcp").description("MCP (Model Context Protocol) server management");
3735
4023
  mcpCmd.command("list").description("List configured MCP servers").action(async () => {
3736
- const { mcpList } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
4024
+ const { mcpList } = await Promise.resolve().then(() => require("./mcp-CAJSA_ee.js"));
3737
4025
  await mcpList();
3738
4026
  process.exit(0);
3739
4027
  });
3740
4028
  mcpCmd.command("add").description("Add MCP server").action(async () => {
3741
- const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
4029
+ const { mcpAdd } = await Promise.resolve().then(() => require("./mcp-CAJSA_ee.js"));
3742
4030
  await mcpAdd();
3743
4031
  process.exit(0);
3744
4032
  });
3745
4033
  mcpCmd.command("remove <id>").description("Remove MCP server").action(async (id) => {
3746
- const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
4034
+ const { mcpRemove } = await Promise.resolve().then(() => require("./mcp-CAJSA_ee.js"));
3747
4035
  await mcpRemove(id);
3748
4036
  process.exit(0);
3749
4037
  });
3750
4038
  mcpCmd.command("probe [id]").description("Test MCP server connection").action(async (id) => {
3751
- const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-SsMEvl28.js"));
4039
+ const { mcpProbe } = await Promise.resolve().then(() => require("./mcp-CAJSA_ee.js"));
3752
4040
  await mcpProbe(id);
3753
4041
  process.exit(0);
3754
4042
  });
3755
4043
  const nodeCmd = program.command("node").description("HyperClaw node management (local, remote, android)");
3756
4044
  nodeCmd.command("list").description("List paired nodes").action(async () => {
3757
- const { nodeList } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
4045
+ const { nodeList } = await Promise.resolve().then(() => require("./node-CLWgPlAk.js"));
3758
4046
  await nodeList();
3759
4047
  process.exit(0);
3760
4048
  });
3761
4049
  nodeCmd.command("add").description("Add or pair a node").action(async () => {
3762
- const { nodeAdd } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
4050
+ const { nodeAdd } = await Promise.resolve().then(() => require("./node-CLWgPlAk.js"));
3763
4051
  await nodeAdd();
3764
4052
  process.exit(0);
3765
4053
  });
3766
4054
  nodeCmd.command("probe [id]").description("Probe node connection").action(async (id) => {
3767
- const { nodeProbe } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
4055
+ const { nodeProbe } = await Promise.resolve().then(() => require("./node-CLWgPlAk.js"));
3768
4056
  await nodeProbe(id);
3769
4057
  process.exit(0);
3770
4058
  });
3771
4059
  nodeCmd.command("remove <id>").description("Remove paired node").action(async (id) => {
3772
- const { nodeRemove } = await Promise.resolve().then(() => require("./node-C4esBfbX.js"));
4060
+ const { nodeRemove } = await Promise.resolve().then(() => require("./node-CLWgPlAk.js"));
3773
4061
  await nodeRemove(id);
3774
4062
  process.exit(0);
3775
4063
  });
4064
+ nodeCmd.command("queue [nodeId]").description("List pending work queued for dormant nodes").action(async (nodeId) => {
4065
+ const { nodeQueue } = await Promise.resolve().then(() => require("./node-CLWgPlAk.js"));
4066
+ await nodeQueue(nodeId);
4067
+ process.exit(0);
4068
+ });
3776
4069
  const arCmd = program.command("auto-reply").description("Auto-reply rule engine");
3777
4070
  arCmd.command("list").action(async () => {
3778
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-Cqen1Mpt.js"));
4071
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-D0v5nuSE.js"));
3779
4072
  const e = new AutoReplyEngine();
3780
4073
  await e.load();
3781
4074
  e.showList();
3782
4075
  process.exit(0);
3783
4076
  });
3784
4077
  arCmd.command("toggle <id>").action(async (id) => {
3785
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-Cqen1Mpt.js"));
4078
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-D0v5nuSE.js"));
3786
4079
  const e = new AutoReplyEngine();
3787
4080
  await e.toggle(id);
3788
4081
  process.exit(0);
3789
4082
  });
3790
4083
  arCmd.command("remove <id>").action(async (id) => {
3791
- const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-Cqen1Mpt.js"));
4084
+ const { AutoReplyEngine } = await Promise.resolve().then(() => require("./rules-D0v5nuSE.js"));
3792
4085
  const e = new AutoReplyEngine();
3793
4086
  await e.remove(id);
3794
4087
  process.exit(0);
@@ -3797,7 +4090,7 @@ const gmailCmd = program.command("gmail").description("Gmail Pub/Sub real-time n
3797
4090
  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
4091
  const chalk$11 = require("chalk");
3799
4092
  try {
3800
- const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup-1RGIHNdu.js"));
4093
+ const { setupGmailWatch } = await Promise.resolve().then(() => require("./gmail-watch-setup--eQ8raeb.js"));
3801
4094
  const labelIds = opts.labels.split(",").map((s) => s.trim()).filter(Boolean);
3802
4095
  const result = await setupGmailWatch({
3803
4096
  topicName: opts.topic,
@@ -3817,7 +4110,7 @@ gmailCmd.command("watch-setup").description("Register Gmail watch for push notif
3817
4110
  const cronCmd = program.command("cron").description("Scheduled tasks (cron → agent prompt)");
3818
4111
  cronCmd.command("list").action(async () => {
3819
4112
  const chalk$11 = require("chalk");
3820
- const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-OQbgmenS.js"));
4113
+ const { loadCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-f_ieXSG2.js"));
3821
4114
  const tasks = await loadCronTasks();
3822
4115
  console.log(chalk$11.bold.cyan("\n ⏰ CRON TASKS\n"));
3823
4116
  if (tasks.length === 0) {
@@ -3830,16 +4123,17 @@ cronCmd.command("list").action(async () => {
3830
4123
  console.log(` ${dot} ${chalk$11.white(t.name || t.id)}`);
3831
4124
  console.log(` ${chalk$11.gray("Schedule:")} ${t.schedule}`);
3832
4125
  console.log(` ${chalk$11.gray("Prompt:")} ${t.prompt.slice(0, 60)}${t.prompt.length > 60 ? "..." : ""}`);
4126
+ if (t.skillId) console.log(` ${chalk$11.gray("Skill:")} ${t.skillId}`);
3833
4127
  if (t.lastRunAt) console.log(` ${chalk$11.gray("Last run:")} ${t.lastRunAt}`);
3834
4128
  console.log();
3835
4129
  }
3836
4130
  process.exit(0);
3837
4131
  });
3838
- cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name>", "Task name").action(async (schedule, prompt, opts) => {
4132
+ 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
4133
  const chalk$11 = require("chalk");
3840
- const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-OQbgmenS.js"));
4134
+ const { loadCronTasks, addCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-f_ieXSG2.js"));
3841
4135
  await loadCronTasks();
3842
- addCronTask(schedule, prompt, opts.name);
4136
+ addCronTask(schedule, prompt, opts.name, opts.skill);
3843
4137
  await saveCronTasks();
3844
4138
  console.log(chalk$11.green(`\n ✔ Cron task added: ${schedule} → "${prompt.slice(0, 40)}..."\n`));
3845
4139
  console.log(chalk$11.gray(" Restart gateway to apply.\n"));
@@ -3847,7 +4141,7 @@ cronCmd.command("add").arguments("<schedule> <prompt>").option("-n, --name <name
3847
4141
  });
3848
4142
  cronCmd.command("remove <id>").action(async (id) => {
3849
4143
  const chalk$11 = require("chalk");
3850
- const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-OQbgmenS.js"));
4144
+ const { loadCronTasks, removeCronTask, saveCronTasks } = await Promise.resolve().then(() => require("./cron-tasks-f_ieXSG2.js"));
3851
4145
  await loadCronTasks();
3852
4146
  if (removeCronTask(id)) {
3853
4147
  await saveCronTasks();
@@ -3907,20 +4201,20 @@ program.command("nodes").description("List connected mobile nodes (iOS/Android C
3907
4201
  });
3908
4202
  const whCmd = program.command("webhooks").description("Webhook endpoint management");
3909
4203
  whCmd.command("list").action(async () => {
3910
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager--wG9JdFW.js"));
4204
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-R0TlRMZy.js"));
3911
4205
  const m = new WebhookManager();
3912
4206
  await m.load();
3913
4207
  m.showList();
3914
4208
  process.exit(0);
3915
4209
  });
3916
4210
  whCmd.command("remove <id>").action(async (id) => {
3917
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager--wG9JdFW.js"));
4211
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-R0TlRMZy.js"));
3918
4212
  const m = new WebhookManager();
3919
4213
  await m.remove(id);
3920
4214
  process.exit(0);
3921
4215
  });
3922
4216
  whCmd.command("toggle <id>").action(async (id) => {
3923
- const { WebhookManager } = await Promise.resolve().then(() => require("./manager--wG9JdFW.js"));
4217
+ const { WebhookManager } = await Promise.resolve().then(() => require("./manager-R0TlRMZy.js"));
3924
4218
  const m = new WebhookManager();
3925
4219
  await m.toggle(id);
3926
4220
  process.exit(0);
@@ -3929,7 +4223,7 @@ const logsCmd = program.command("logs").description("View gateway logs");
3929
4223
  logsCmd.option("-n, --lines <n>", "Number of lines to show", "50");
3930
4224
  logsCmd.option("-f, --follow", "Stream logs in real time");
3931
4225
  logsCmd.action(async (opts) => {
3932
- const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-CG38Idq4.js"));
4226
+ const { tailLog, streamLog } = await Promise.resolve().then(() => require("./logger-CmphFNmW.js"));
3933
4227
  if (opts.follow) await streamLog();
3934
4228
  else {
3935
4229
  await tailLog(parseInt(opts.lines));
@@ -3937,7 +4231,7 @@ logsCmd.action(async (opts) => {
3937
4231
  }
3938
4232
  });
3939
4233
  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-rHap51o6.js"));
4234
+ const { startGateway } = await Promise.resolve().then(() => require("./server-BlqWBbS7.js"));
3941
4235
  await startGateway();
3942
4236
  process.on("SIGINT", () => process.exit(0));
3943
4237
  process.on("SIGTERM", () => process.exit(0));
@@ -3994,9 +4288,9 @@ const authCmd = program.command("auth").description("OAuth and provider credenti
3994
4288
  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
4289
  const chalk$11 = require("chalk");
3996
4290
  const inquirer$2 = require("inquirer");
3997
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Bmm9e1SS.js"));
4291
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-CR4WSDGl.js"));
3998
4292
  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"));
4293
+ const { getApiKeyGuide, GENERIC_API_KEY_STEPS } = await Promise.resolve().then(() => require("./api-keys-guide-CFJPrgsL.js"));
4000
4294
  const fs$7 = (await import("fs-extra")).default;
4001
4295
  const path$5 = await import("path");
4002
4296
  const guide = getApiKeyGuide(serviceId);
@@ -4049,7 +4343,7 @@ authCmd.command("add <service_id>").description("Add API key for a service (any
4049
4343
  });
4050
4344
  authCmd.command("remove <service_id>").description("Remove API key for a service from credentials and .env").action(async (serviceId) => {
4051
4345
  const chalk$11 = require("chalk");
4052
- const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-Bmm9e1SS.js"));
4346
+ const { CredentialsStore } = await Promise.resolve().then(() => require("./credentials-store-CR4WSDGl.js"));
4053
4347
  const { getHyperClawDir: getHyperClawDir$1, getEnvFilePath } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
4054
4348
  const fs$7 = (await import("fs-extra")).default;
4055
4349
  const safeId = serviceId.replace(/[^a-zA-Z0-9_-]/g, "_").toLowerCase();
@@ -4069,7 +4363,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
4069
4363
  const chalk$11 = require("chalk");
4070
4364
  const ora$4 = (await import("ora")).default;
4071
4365
  try {
4072
- const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-BbLQTzZk.js"));
4366
+ const { runOAuthFlow } = await Promise.resolve().then(() => require("./oauth-flow-C4QSMsbl.js"));
4073
4367
  const spinner = ora$4("Starting OAuth flow...").start();
4074
4368
  spinner.text = "Opening browser — complete the consent and return here.";
4075
4369
  const tokens = await runOAuthFlow(provider, {
@@ -4077,7 +4371,7 @@ authCmd.command("oauth <provider>").description("Run full OAuth flow. Providers:
4077
4371
  clientSecret: opts.clientSecret
4078
4372
  });
4079
4373
  spinner.stop();
4080
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-UZyG84s7.js"));
4374
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Bnul5A_Z.js"));
4081
4375
  const now = Math.floor(Date.now() / 1e3);
4082
4376
  const expires_at = tokens.expires_in ? now + tokens.expires_in : void 0;
4083
4377
  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 +4406,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
4112
4406
  console.log(chalk$11.red("\n ✖ No token provided.\n"));
4113
4407
  process.exit(1);
4114
4408
  }
4115
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-UZyG84s7.js"));
4409
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Bnul5A_Z.js"));
4116
4410
  await writeOAuthToken("anthropic-setup", {
4117
4411
  access_token: token.trim(),
4118
4412
  token_url: "https://api.anthropic.com"
@@ -4123,7 +4417,7 @@ authCmd.command("setup-token <provider>").description("Save setup token (Anthrop
4123
4417
  });
4124
4418
  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
4419
  const chalk$11 = require("chalk");
4126
- const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-UZyG84s7.js"));
4420
+ const { writeOAuthToken } = await Promise.resolve().then(() => require("./oauth-provider-Bnul5A_Z.js"));
4127
4421
  const access_token = opts.token || process.env.OAUTH_ACCESS_TOKEN;
4128
4422
  if (!access_token) {
4129
4423
  console.log(chalk$11.red("\n ✖ Provide --token <access_token> or set OAUTH_ACCESS_TOKEN\n"));
@@ -4151,7 +4445,7 @@ workspaceCmd.command("init [dir]").description("Initialize workspace files (SOUL
4151
4445
  try {
4152
4446
  cfg = await fs$7.readJson(getConfigPath$1());
4153
4447
  } catch {}
4154
- const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-BGgCBSx1.js"));
4448
+ const { initWorkspaceFiles } = await Promise.resolve().then(() => require("./memory-CyonlkTy.js"));
4155
4449
  await initWorkspaceFiles({
4156
4450
  agentName: cfg.identity?.agentName || "Hyper",
4157
4451
  personality: cfg.identity?.personality || "helpful and concise",
@@ -4190,13 +4484,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
4190
4484
  });
4191
4485
  const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
4192
4486
  botCmd.command("status").action(async () => {
4193
- const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-DcQt62PL.js"));
4487
+ const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-v65eL2U0.js"));
4194
4488
  await showBotStatus();
4195
4489
  process.exit(0);
4196
4490
  });
4197
4491
  botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
4198
4492
  const inquirer$2 = require("inquirer");
4199
- const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-DcQt62PL.js"));
4493
+ const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-v65eL2U0.js"));
4200
4494
  const chalk$11 = require("chalk");
4201
4495
  console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
4202
4496
  console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
@@ -4258,14 +4552,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4258
4552
  cwd: process.cwd()
4259
4553
  });
4260
4554
  child.unref();
4261
- const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-DcQt62PL.js"));
4555
+ const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-v65eL2U0.js"));
4262
4556
  await writeBotPid(child.pid);
4263
4557
  console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
4264
4558
  console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
4265
4559
  process.exit(0);
4266
4560
  return;
4267
4561
  }
4268
- const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-DcQt62PL.js"));
4562
+ const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-v65eL2U0.js"));
4269
4563
  const cfg = await loadBotConfig();
4270
4564
  if (!cfg) {
4271
4565
  console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
@@ -4292,41 +4586,73 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
4292
4586
  });
4293
4587
  botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
4294
4588
  const chalk$11 = require("chalk");
4295
- const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-DcQt62PL.js"));
4589
+ const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-v65eL2U0.js"));
4296
4590
  const stopped = await stopBotProcess();
4297
4591
  if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
4298
4592
  else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
4299
4593
  process.exit(stopped ? 0 : 1);
4300
4594
  });
4301
- memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
4302
- const { searchMemory } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4595
+ 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) => {
4596
+ try {
4597
+ const pkg = "@hyperclaw/memory-lancedb";
4598
+ const mod = await (async () => {
4599
+ try {
4600
+ return await import(pkg);
4601
+ } catch {
4602
+ return null;
4603
+ }
4604
+ })();
4605
+ if (!mod?.VectorMemoryService) throw new Error("not available");
4606
+ const { VectorMemoryService } = mod;
4607
+ const { getHyperClawDir: getHyperClawDir$1 } = await Promise.resolve().then(() => require("./paths-D-QecARF.js"));
4608
+ const path$5 = await import("path");
4609
+ const cfg = await new require_manager.ConfigManager().load();
4610
+ const svc = new VectorMemoryService({
4611
+ dbPath: path$5.join(getHyperClawDir$1(), "memory-lancedb"),
4612
+ apiKey: cfg?.provider?.apiKey
4613
+ });
4614
+ await svc.init();
4615
+ const results = await svc.search(query, parseInt(opts.limit));
4616
+ if (results.length === 0) console.log(chalk.default.gray("\n No results. Add facts with: hyperclaw memory add-fact \"...\"\n"));
4617
+ else {
4618
+ console.log(chalk.default.bold.hex("#06b6d4")("\n Vector memory search:\n"));
4619
+ for (const r of results) console.log(chalk.default.gray(` • ${r.text}`));
4620
+ console.log();
4621
+ }
4622
+ } catch (e) {
4623
+ console.log(chalk.default.yellow("\n Vector memory not available. Install: npm install @hyperclaw/memory-lancedb vectordb openai\n"));
4624
+ }
4625
+ process.exit(0);
4626
+ });
4627
+ memCmd.command("search <query>").description("Search MEMORY.md (text search)").action(async (query) => {
4628
+ const { searchMemory } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
4303
4629
  await searchMemory(query);
4304
4630
  process.exit(0);
4305
4631
  });
4306
4632
  memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
4307
- const { showMemory } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4633
+ const { showMemory } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
4308
4634
  await showMemory();
4309
4635
  process.exit(0);
4310
4636
  });
4311
4637
  memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
4312
- const { clearMemory } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4638
+ const { clearMemory } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
4313
4639
  await clearMemory();
4314
4640
  process.exit(0);
4315
4641
  });
4316
4642
  memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
4317
- const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4643
+ const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
4318
4644
  await saveMemoryDirect(text);
4319
4645
  console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
4320
4646
  process.exit(0);
4321
4647
  });
4322
4648
  const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
4323
4649
  pcCmd.command("status").description("Show PC access status and config").action(async () => {
4324
- const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4650
+ const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
4325
4651
  await showPCAccessStatus();
4326
4652
  process.exit(0);
4327
4653
  });
4328
4654
  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-ClYgvXAj.js"));
4655
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
4330
4656
  const level = opts.level;
4331
4657
  const allowed = [
4332
4658
  "read-only",
@@ -4353,7 +4679,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
4353
4679
  process.exit(0);
4354
4680
  });
4355
4681
  pcCmd.command("disable").description("Disable PC access").action(async () => {
4356
- const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-ClYgvXAj.js"));
4682
+ const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
4357
4683
  await savePCAccessConfig({ enabled: false });
4358
4684
  console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
4359
4685
  process.exit(0);
@@ -4378,7 +4704,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
4378
4704
  process.exit(0);
4379
4705
  });
4380
4706
  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-ClYgvXAj.js"));
4707
+ const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-CyCLoqIP.js"));
4382
4708
  const cfg = await loadPCAccessConfig();
4383
4709
  if (!cfg.enabled) {
4384
4710
  console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
@@ -4419,7 +4745,7 @@ async function runUpdateCheck() {
4419
4745
  } catch {}
4420
4746
  }
4421
4747
  if (process.argv.length === 2) (async () => {
4422
- const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-BNc21xgG.js"));
4748
+ const { ConfigManager: ConfigManager$1 } = await Promise.resolve().then(() => require("./manager-Bq5LApdR.js"));
4423
4749
  const cfg = await new ConfigManager$1().load().catch(() => null);
4424
4750
  if (cfg?.provider?.apiKey || cfg?.provider?.providerId) {
4425
4751
  await new require_banner.Banner().showNeonBanner(false);
@@ -4437,7 +4763,7 @@ if (process.argv.length === 2) (async () => {
4437
4763
  console.log(` ✓ ${t.c("hyperclaw --help")} — 📖 all commands\n`);
4438
4764
  } else {
4439
4765
  await new require_banner.Banner().showNeonBanner(false);
4440
- const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-BF29mNbC.js"));
4766
+ const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-DPmufMqX.js"));
4441
4767
  await new HyperClawWizard$1().run({ wizard: true });
4442
4768
  }
4443
4769
  await runUpdateCheck();