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
@@ -0,0 +1,251 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_paths = require('./paths-AIyBxIzm.js');
3
+ const require_paths$1 = require('./paths-DPovhojT.js');
4
+ const chalk = require_chunk.__toESM(require("chalk"));
5
+ const inquirer = require_chunk.__toESM(require("inquirer"));
6
+ const ora = require_chunk.__toESM(require("ora"));
7
+ const fs_extra = require_chunk.__toESM(require("fs-extra"));
8
+ const path = require_chunk.__toESM(require("path"));
9
+ const os = require_chunk.__toESM(require("os"));
10
+
11
+ //#region src/commands/node.ts
12
+ require_paths$1.init_paths();
13
+ const getNodesFile = () => path.default.join(require_paths.getHyperClawDir(), "nodes.json");
14
+ async function loadNodes() {
15
+ try {
16
+ return await fs_extra.default.readJson(getNodesFile());
17
+ } catch {
18
+ return [];
19
+ }
20
+ }
21
+ async function saveNodes(nodes) {
22
+ const nodesFile = getNodesFile();
23
+ await fs_extra.default.ensureDir(path.default.dirname(nodesFile));
24
+ await fs_extra.default.writeJson(nodesFile, nodes, { spaces: 2 });
25
+ }
26
+ const TYPE_EMOJI = {
27
+ local: "💻",
28
+ remote: "🖥️",
29
+ android: "📱",
30
+ raspberrypi: "🍓",
31
+ docker: "🐳",
32
+ vm: "☁️"
33
+ };
34
+ const STATUS_COLOR = {
35
+ online: chalk.default.green,
36
+ offline: chalk.default.red,
37
+ unknown: chalk.default.gray,
38
+ degraded: chalk.default.yellow
39
+ };
40
+ async function nodeList() {
41
+ const nodes = await loadNodes();
42
+ console.log(chalk.default.bold.cyan("\n 📱 HYPERCLAW NODES\n"));
43
+ console.log(` ${chalk.default.green("●")} ${chalk.default.white("Local (this machine)".padEnd(22))} ${chalk.default.cyan("[local]")} ${chalk.default.green("online")}`);
44
+ console.log(` ${chalk.default.gray(`Node.js ${process.version} ${os.default.platform()} ${os.default.arch()} port 18789`)}`);
45
+ console.log();
46
+ if (nodes.length === 0) {
47
+ console.log(chalk.default.gray(" No additional nodes registered."));
48
+ console.log(chalk.default.gray(" Add a remote node: hyperclaw node add\n"));
49
+ return;
50
+ }
51
+ for (const node of nodes) {
52
+ const dot = STATUS_COLOR[node.status]("●");
53
+ const emoji = TYPE_EMOJI[node.type];
54
+ const status = STATUS_COLOR[node.status](node.status);
55
+ console.log(` ${dot} ${chalk.default.white(node.name.padEnd(22))} ${chalk.default.cyan(`[${node.type}]`)} ${status}`);
56
+ if (node.host) console.log(` ${chalk.default.gray(`${node.host}:${node.port || 18789}`)}`);
57
+ if (node.androidDeviceId) console.log(` ${chalk.default.gray(`adb: ${node.androidDeviceId}`)}`);
58
+ if (node.capabilities.length > 0) console.log(` ${chalk.default.gray("caps:")} ${node.capabilities.join(", ")}`);
59
+ if (node.lastSeenAt) {
60
+ const ago = Math.round((Date.now() - new Date(node.lastSeenAt).getTime()) / 1e3 / 60);
61
+ console.log(` ${chalk.default.gray(`last seen: ${ago}m ago`)}`);
62
+ }
63
+ console.log();
64
+ }
65
+ }
66
+ async function nodeAdd() {
67
+ console.log(chalk.default.bold.cyan("\n ➕ ADD NODE\n"));
68
+ const { type } = await inquirer.default.prompt([{
69
+ type: "list",
70
+ name: "type",
71
+ message: "Node type:",
72
+ choices: [
73
+ {
74
+ name: "🖥️ Remote server (SSH)",
75
+ value: "remote"
76
+ },
77
+ {
78
+ name: "📱 Android device (ADB)",
79
+ value: "android"
80
+ },
81
+ {
82
+ name: "🍓 Raspberry Pi",
83
+ value: "raspberrypi"
84
+ },
85
+ {
86
+ name: "🐳 Docker container",
87
+ value: "docker"
88
+ },
89
+ {
90
+ name: "☁️ VM / cloud instance",
91
+ value: "vm"
92
+ }
93
+ ]
94
+ }]);
95
+ const { name } = await inquirer.default.prompt([{
96
+ type: "input",
97
+ name: "name",
98
+ message: "Node name:",
99
+ validate: (v) => !!v.trim() || "Required"
100
+ }]);
101
+ let extras = {};
102
+ if (type === "android") {
103
+ const { deviceId } = await inquirer.default.prompt([{
104
+ type: "input",
105
+ name: "deviceId",
106
+ message: "ADB device ID (run: adb devices):",
107
+ validate: (v) => !!v.trim() || "Required"
108
+ }]);
109
+ extras.androidDeviceId = deviceId;
110
+ extras.capabilities = ["channel:host", "always-on"];
111
+ } else {
112
+ const { host, port } = await inquirer.default.prompt([{
113
+ type: "input",
114
+ name: "host",
115
+ message: "Hostname or IP:",
116
+ validate: (v) => !!v.trim() || "Required"
117
+ }, {
118
+ type: "number",
119
+ name: "port",
120
+ message: "Gateway port:",
121
+ default: 18789
122
+ }]);
123
+ const { caps } = await inquirer.default.prompt([{
124
+ type: "checkbox",
125
+ name: "caps",
126
+ message: "Capabilities:",
127
+ choices: [
128
+ {
129
+ name: "Run agent inference",
130
+ value: "agent:run",
131
+ checked: true
132
+ },
133
+ {
134
+ name: "Host channel connections",
135
+ value: "channel:host"
136
+ },
137
+ {
138
+ name: "Execute code",
139
+ value: "code:execute"
140
+ },
141
+ {
142
+ name: "GPU acceleration",
143
+ value: "gpu"
144
+ },
145
+ {
146
+ name: "Always-on (24/7)",
147
+ value: "always-on"
148
+ }
149
+ ]
150
+ }]);
151
+ extras = {
152
+ host,
153
+ port,
154
+ capabilities: caps
155
+ };
156
+ }
157
+ const node = {
158
+ id: name.toLowerCase().replace(/\s+/g, "-"),
159
+ name,
160
+ type,
161
+ status: "unknown",
162
+ addedAt: (/* @__PURE__ */ new Date()).toISOString(),
163
+ capabilities: extras.capabilities || [],
164
+ ...extras
165
+ };
166
+ const nodes = await loadNodes();
167
+ nodes.push(node);
168
+ await saveNodes(nodes);
169
+ console.log(chalk.default.green(`\n ✔ Node added: ${name}`));
170
+ console.log(chalk.default.gray(" Run: hyperclaw node probe to test the connection\n"));
171
+ }
172
+ async function nodeProbe(id) {
173
+ const nodes = await loadNodes();
174
+ const targets = id ? nodes.filter((n) => n.id === id) : nodes;
175
+ console.log(chalk.default.bold.cyan("\n 🔍 PROBING NODES\n"));
176
+ console.log(` ${chalk.default.cyan("○")} Local...`);
177
+ await new Promise((r) => setTimeout(r, 300));
178
+ console.log(` ${chalk.default.green("✔")} Local — online (${os.default.platform()} ${os.default.arch()})\n`);
179
+ for (const node of targets) {
180
+ const spinner = (0, ora.default)(` Probing ${node.name} (${node.host || node.androidDeviceId || node.type})...`).start();
181
+ await new Promise((r) => setTimeout(r, 1e3));
182
+ try {
183
+ if (node.host) {
184
+ const axios = (await import("axios")).default;
185
+ const res = await axios.get(`http://${node.host}:${node.port || 18789}/api/status`, { timeout: 3e3 });
186
+ node.status = "online";
187
+ node.version = res.data?.version;
188
+ node.lastSeenAt = (/* @__PURE__ */ new Date()).toISOString();
189
+ spinner.succeed(`${node.name} — online${node.version ? ` (v${node.version})` : ""}`);
190
+ } else if (node.type === "android") {
191
+ const { exec } = await import("child_process");
192
+ const { promisify } = await import("util");
193
+ const execAsync = promisify(exec);
194
+ await execAsync(`adb -s ${node.androidDeviceId} shell echo ok`);
195
+ node.status = "online";
196
+ node.lastSeenAt = (/* @__PURE__ */ new Date()).toISOString();
197
+ spinner.succeed(`${node.name} — online (ADB connected)`);
198
+ } else {
199
+ node.status = "unknown";
200
+ spinner.warn(`${node.name} — probe not supported for ${node.type}`);
201
+ }
202
+ } catch {
203
+ node.status = "offline";
204
+ spinner.fail(`${node.name} — offline / unreachable`);
205
+ }
206
+ console.log();
207
+ }
208
+ await saveNodes(nodes);
209
+ }
210
+ async function nodeRemove(id) {
211
+ const nodes = await loadNodes();
212
+ const idx = nodes.findIndex((n) => n.id === id);
213
+ if (idx === -1) {
214
+ console.log(chalk.default.red(`\n ✖ Node not found: ${id}\n`));
215
+ return;
216
+ }
217
+ nodes.splice(idx, 1);
218
+ await saveNodes(nodes);
219
+ console.log(chalk.default.green(`\n ✔ Node removed: ${id}\n`));
220
+ }
221
+ /** Show pending work queued for dormant nodes. */
222
+ async function nodeQueue(nodeId) {
223
+ const { listPending } = await Promise.resolve().then(() => require("./node-pending-queue-DUXCbYkp.js"));
224
+ const pending = listPending(nodeId);
225
+ console.log(chalk.default.bold.cyan("\n 📋 NODE PENDING QUEUE\n"));
226
+ if (pending.length === 0) {
227
+ console.log(chalk.default.gray(" No pending work."));
228
+ if (nodeId) console.log(chalk.default.gray(` (filter: ${nodeId})`));
229
+ console.log(chalk.default.gray("\n Work is queued when a node is offline. Run `hyperclaw node probe` and the queue drains on success.\n"));
230
+ return;
231
+ }
232
+ const byNode = pending.reduce((acc, i) => {
233
+ if (!acc[i.nodeId]) acc[i.nodeId] = [];
234
+ acc[i.nodeId].push(i);
235
+ return acc;
236
+ }, {});
237
+ for (const [nid, items] of Object.entries(byNode)) {
238
+ console.log(` ${chalk.default.yellow("●")} ${chalk.default.white(nid)} — ${items.length} pending`);
239
+ for (const i of items.slice(0, 5)) console.log(` ${chalk.default.gray(i.id)} ${i.type} ${chalk.default.gray(i.createdAt)}`);
240
+ if (items.length > 5) console.log(chalk.default.gray(` ... +${items.length - 5} more`));
241
+ console.log();
242
+ }
243
+ console.log(chalk.default.gray(" Drain on node online: hyperclaw node probe <nodeId>\n"));
244
+ }
245
+
246
+ //#endregion
247
+ exports.nodeAdd = nodeAdd;
248
+ exports.nodeList = nodeList;
249
+ exports.nodeProbe = nodeProbe;
250
+ exports.nodeQueue = nodeQueue;
251
+ exports.nodeRemove = nodeRemove;
@@ -0,0 +1,226 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_paths = require('./paths-AIyBxIzm.js');
3
+ const require_paths$1 = require('./paths-DPovhojT.js');
4
+ const chalk = require_chunk.__toESM(require("chalk"));
5
+ const inquirer = require_chunk.__toESM(require("inquirer"));
6
+ const ora = require_chunk.__toESM(require("ora"));
7
+ const fs_extra = require_chunk.__toESM(require("fs-extra"));
8
+ const path = require_chunk.__toESM(require("path"));
9
+ const os = require_chunk.__toESM(require("os"));
10
+
11
+ //#region src/commands/node.ts
12
+ require_paths$1.init_paths();
13
+ const getNodesFile = () => path.default.join(require_paths.getHyperClawDir(), "nodes.json");
14
+ async function loadNodes() {
15
+ try {
16
+ return await fs_extra.default.readJson(getNodesFile());
17
+ } catch {
18
+ return [];
19
+ }
20
+ }
21
+ async function saveNodes(nodes) {
22
+ const nodesFile = getNodesFile();
23
+ await fs_extra.default.ensureDir(path.default.dirname(nodesFile));
24
+ await fs_extra.default.writeJson(nodesFile, nodes, { spaces: 2 });
25
+ }
26
+ const TYPE_EMOJI = {
27
+ local: "💻",
28
+ remote: "🖥️",
29
+ android: "📱",
30
+ raspberrypi: "🍓",
31
+ docker: "🐳",
32
+ vm: "☁️"
33
+ };
34
+ const STATUS_COLOR = {
35
+ online: chalk.default.green,
36
+ offline: chalk.default.red,
37
+ unknown: chalk.default.gray,
38
+ degraded: chalk.default.yellow
39
+ };
40
+ async function nodeList() {
41
+ const nodes = await loadNodes();
42
+ console.log(chalk.default.bold.cyan("\n 📱 HYPERCLAW NODES\n"));
43
+ console.log(` ${chalk.default.green("●")} ${chalk.default.white("Local (this machine)".padEnd(22))} ${chalk.default.cyan("[local]")} ${chalk.default.green("online")}`);
44
+ console.log(` ${chalk.default.gray(`Node.js ${process.version} ${os.default.platform()} ${os.default.arch()} port 18789`)}`);
45
+ console.log();
46
+ if (nodes.length === 0) {
47
+ console.log(chalk.default.gray(" No additional nodes registered."));
48
+ console.log(chalk.default.gray(" Add a remote node: hyperclaw node add\n"));
49
+ return;
50
+ }
51
+ for (const node of nodes) {
52
+ const dot = STATUS_COLOR[node.status]("●");
53
+ const emoji = TYPE_EMOJI[node.type];
54
+ const status = STATUS_COLOR[node.status](node.status);
55
+ console.log(` ${dot} ${chalk.default.white(node.name.padEnd(22))} ${chalk.default.cyan(`[${node.type}]`)} ${status}`);
56
+ if (node.host) console.log(` ${chalk.default.gray(`${node.host}:${node.port || 18789}`)}`);
57
+ if (node.androidDeviceId) console.log(` ${chalk.default.gray(`adb: ${node.androidDeviceId}`)}`);
58
+ if (node.capabilities.length > 0) console.log(` ${chalk.default.gray("caps:")} ${node.capabilities.join(", ")}`);
59
+ if (node.lastSeenAt) {
60
+ const ago = Math.round((Date.now() - new Date(node.lastSeenAt).getTime()) / 1e3 / 60);
61
+ console.log(` ${chalk.default.gray(`last seen: ${ago}m ago`)}`);
62
+ }
63
+ console.log();
64
+ }
65
+ }
66
+ async function nodeAdd() {
67
+ console.log(chalk.default.bold.cyan("\n ➕ ADD NODE\n"));
68
+ const { type } = await inquirer.default.prompt([{
69
+ type: "list",
70
+ name: "type",
71
+ message: "Node type:",
72
+ choices: [
73
+ {
74
+ name: "🖥️ Remote server (SSH)",
75
+ value: "remote"
76
+ },
77
+ {
78
+ name: "📱 Android device (ADB)",
79
+ value: "android"
80
+ },
81
+ {
82
+ name: "🍓 Raspberry Pi",
83
+ value: "raspberrypi"
84
+ },
85
+ {
86
+ name: "🐳 Docker container",
87
+ value: "docker"
88
+ },
89
+ {
90
+ name: "☁️ VM / cloud instance",
91
+ value: "vm"
92
+ }
93
+ ]
94
+ }]);
95
+ const { name } = await inquirer.default.prompt([{
96
+ type: "input",
97
+ name: "name",
98
+ message: "Node name:",
99
+ validate: (v) => !!v.trim() || "Required"
100
+ }]);
101
+ let extras = {};
102
+ if (type === "android") {
103
+ const { deviceId } = await inquirer.default.prompt([{
104
+ type: "input",
105
+ name: "deviceId",
106
+ message: "ADB device ID (run: adb devices):",
107
+ validate: (v) => !!v.trim() || "Required"
108
+ }]);
109
+ extras.androidDeviceId = deviceId;
110
+ extras.capabilities = ["channel:host", "always-on"];
111
+ } else {
112
+ const { host, port } = await inquirer.default.prompt([{
113
+ type: "input",
114
+ name: "host",
115
+ message: "Hostname or IP:",
116
+ validate: (v) => !!v.trim() || "Required"
117
+ }, {
118
+ type: "number",
119
+ name: "port",
120
+ message: "Gateway port:",
121
+ default: 18789
122
+ }]);
123
+ const { caps } = await inquirer.default.prompt([{
124
+ type: "checkbox",
125
+ name: "caps",
126
+ message: "Capabilities:",
127
+ choices: [
128
+ {
129
+ name: "Run agent inference",
130
+ value: "agent:run",
131
+ checked: true
132
+ },
133
+ {
134
+ name: "Host channel connections",
135
+ value: "channel:host"
136
+ },
137
+ {
138
+ name: "Execute code",
139
+ value: "code:execute"
140
+ },
141
+ {
142
+ name: "GPU acceleration",
143
+ value: "gpu"
144
+ },
145
+ {
146
+ name: "Always-on (24/7)",
147
+ value: "always-on"
148
+ }
149
+ ]
150
+ }]);
151
+ extras = {
152
+ host,
153
+ port,
154
+ capabilities: caps
155
+ };
156
+ }
157
+ const node = {
158
+ id: name.toLowerCase().replace(/\s+/g, "-"),
159
+ name,
160
+ type,
161
+ status: "unknown",
162
+ addedAt: (/* @__PURE__ */ new Date()).toISOString(),
163
+ capabilities: extras.capabilities || [],
164
+ ...extras
165
+ };
166
+ const nodes = await loadNodes();
167
+ nodes.push(node);
168
+ await saveNodes(nodes);
169
+ console.log(chalk.default.green(`\n ✔ Node added: ${name}`));
170
+ console.log(chalk.default.gray(" Run: hyperclaw node probe to test the connection\n"));
171
+ }
172
+ async function nodeProbe(id) {
173
+ const nodes = await loadNodes();
174
+ const targets = id ? nodes.filter((n) => n.id === id) : nodes;
175
+ console.log(chalk.default.bold.cyan("\n 🔍 PROBING NODES\n"));
176
+ console.log(` ${chalk.default.cyan("○")} Local...`);
177
+ await new Promise((r) => setTimeout(r, 300));
178
+ console.log(` ${chalk.default.green("✔")} Local — online (${os.default.platform()} ${os.default.arch()})\n`);
179
+ for (const node of targets) {
180
+ const spinner = (0, ora.default)(` Probing ${node.name} (${node.host || node.androidDeviceId || node.type})...`).start();
181
+ await new Promise((r) => setTimeout(r, 1e3));
182
+ try {
183
+ if (node.host) {
184
+ const axios = (await import("axios")).default;
185
+ const res = await axios.get(`http://${node.host}:${node.port || 18789}/api/status`, { timeout: 3e3 });
186
+ node.status = "online";
187
+ node.version = res.data?.version;
188
+ node.lastSeenAt = (/* @__PURE__ */ new Date()).toISOString();
189
+ spinner.succeed(`${node.name} — online${node.version ? ` (v${node.version})` : ""}`);
190
+ } else if (node.type === "android") {
191
+ const { exec } = await import("child_process");
192
+ const { promisify } = await import("util");
193
+ const execAsync = promisify(exec);
194
+ await execAsync(`adb -s ${node.androidDeviceId} shell echo ok`);
195
+ node.status = "online";
196
+ node.lastSeenAt = (/* @__PURE__ */ new Date()).toISOString();
197
+ spinner.succeed(`${node.name} — online (ADB connected)`);
198
+ } else {
199
+ node.status = "unknown";
200
+ spinner.warn(`${node.name} — probe not supported for ${node.type}`);
201
+ }
202
+ } catch {
203
+ node.status = "offline";
204
+ spinner.fail(`${node.name} — offline / unreachable`);
205
+ }
206
+ console.log();
207
+ }
208
+ await saveNodes(nodes);
209
+ }
210
+ async function nodeRemove(id) {
211
+ const nodes = await loadNodes();
212
+ const idx = nodes.findIndex((n) => n.id === id);
213
+ if (idx === -1) {
214
+ console.log(chalk.default.red(`\n ✖ Node not found: ${id}\n`));
215
+ return;
216
+ }
217
+ nodes.splice(idx, 1);
218
+ await saveNodes(nodes);
219
+ console.log(chalk.default.green(`\n ✔ Node removed: ${id}\n`));
220
+ }
221
+
222
+ //#endregion
223
+ exports.nodeAdd = nodeAdd;
224
+ exports.nodeList = nodeList;
225
+ exports.nodeProbe = nodeProbe;
226
+ exports.nodeRemove = nodeRemove;
@@ -0,0 +1,21 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+
3
+ //#region node_modules/node-domexception/index.js
4
+ var require_node_domexception = require_chunk.__commonJS({ "node_modules/node-domexception/index.js"(exports, module) {
5
+ /*! node-domexception. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
6
+ if (!globalThis.DOMException) try {
7
+ const { MessageChannel } = require("worker_threads"), port = new MessageChannel().port1, ab = new ArrayBuffer();
8
+ port.postMessage(ab, [ab, ab]);
9
+ } catch (err) {
10
+ err.constructor.name === "DOMException" && (globalThis.DOMException = err.constructor);
11
+ }
12
+ module.exports = globalThis.DOMException;
13
+ } });
14
+
15
+ //#endregion
16
+ Object.defineProperty(exports, 'require_node_domexception', {
17
+ enumerable: true,
18
+ get: function () {
19
+ return require_node_domexception;
20
+ }
21
+ });
@@ -0,0 +1,32 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_paths = require('./paths-AIyBxIzm.js');
3
+ const require_paths$1 = require('./paths-DPovhojT.js');
4
+ const fs_extra = require_chunk.__toESM(require("fs-extra"));
5
+ const path = require_chunk.__toESM(require("path"));
6
+
7
+ //#region src/services/node-pending-queue.ts
8
+ require_paths$1.init_paths();
9
+ const QUEUE_FILE = "node-pending-queue.json";
10
+ function getQueuePath() {
11
+ return path.default.join(require_paths.getHyperClawDir(), QUEUE_FILE);
12
+ }
13
+ let cached = null;
14
+ function load() {
15
+ if (cached) return cached;
16
+ try {
17
+ cached = fs_extra.default.readJsonSync(getQueuePath());
18
+ return Array.isArray(cached) ? cached : [];
19
+ } catch {
20
+ cached = [];
21
+ return [];
22
+ }
23
+ }
24
+ /** List pending items for a node (or all nodes). */
25
+ function listPending(nodeId) {
26
+ const items = load();
27
+ const pending = items.filter((i) => i.attemptCount < i.maxAttempts);
28
+ return nodeId ? pending.filter((i) => i.nodeId === nodeId) : pending;
29
+ }
30
+
31
+ //#endregion
32
+ exports.listPending = listPending;
@@ -0,0 +1,32 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_paths = require('./paths-AIyBxIzm.js');
3
+ const require_paths$1 = require('./paths-DPovhojT.js');
4
+ const fs_extra = require_chunk.__toESM(require("fs-extra"));
5
+ const path = require_chunk.__toESM(require("path"));
6
+
7
+ //#region src/services/node-pending-queue.ts
8
+ require_paths$1.init_paths();
9
+ const QUEUE_FILE = "node-pending-queue.json";
10
+ function getQueuePath() {
11
+ return path.default.join(require_paths.getHyperClawDir(), QUEUE_FILE);
12
+ }
13
+ let cached = null;
14
+ function load() {
15
+ if (cached) return cached;
16
+ try {
17
+ cached = fs_extra.default.readJsonSync(getQueuePath());
18
+ return Array.isArray(cached) ? cached : [];
19
+ } catch {
20
+ cached = [];
21
+ return [];
22
+ }
23
+ }
24
+ /** List pending items for a node (or all nodes). */
25
+ function listPending(nodeId) {
26
+ const items = load();
27
+ const pending = items.filter((i) => i.attemptCount < i.maxAttempts);
28
+ return nodeId ? pending.filter((i) => i.nodeId === nodeId) : pending;
29
+ }
30
+
31
+ //#endregion
32
+ exports.listPending = listPending;
@@ -0,0 +1,32 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const require_paths = require('./paths-AIyBxIzm.js');
3
+ const require_paths$1 = require('./paths-DPovhojT.js');
4
+ const fs_extra = require_chunk.__toESM(require("fs-extra"));
5
+ const path = require_chunk.__toESM(require("path"));
6
+
7
+ //#region src/services/node-pending-queue.ts
8
+ require_paths$1.init_paths();
9
+ const QUEUE_FILE = "node-pending-queue.json";
10
+ function getQueuePath() {
11
+ return path.default.join(require_paths.getHyperClawDir(), QUEUE_FILE);
12
+ }
13
+ let cached = null;
14
+ function load() {
15
+ if (cached) return cached;
16
+ try {
17
+ cached = fs_extra.default.readJsonSync(getQueuePath());
18
+ return Array.isArray(cached) ? cached : [];
19
+ } catch {
20
+ cached = [];
21
+ return [];
22
+ }
23
+ }
24
+ /** List pending items for a node (or all nodes). */
25
+ function listPending(nodeId) {
26
+ const items = load();
27
+ const pending = items.filter((i) => i.attemptCount < i.maxAttempts);
28
+ return nodeId ? pending.filter((i) => i.nodeId === nodeId) : pending;
29
+ }
30
+
31
+ //#endregion
32
+ exports.listPending = listPending;
@@ -0,0 +1,52 @@
1
+ const require_chunk = require('./chunk-jS-bbMI5.js');
2
+ const events = require_chunk.__toESM(require("events"));
3
+
4
+ //#region src/services/nodes-registry.ts
5
+ var NodeRegistryImpl, NodeRegistry;
6
+ var init_nodes_registry = require_chunk.__esm({ "src/services/nodes-registry.ts"() {
7
+ NodeRegistryImpl = class extends events.EventEmitter {
8
+ nodes = /* @__PURE__ */ new Map();
9
+ pendingCommands = /* @__PURE__ */ new Map();
10
+ register(node) {
11
+ this.nodes.set(node.nodeId, node);
12
+ this.emit("node:registered", node);
13
+ }
14
+ unregister(nodeId) {
15
+ this.nodes.delete(nodeId);
16
+ this.emit("node:unregistered", nodeId);
17
+ }
18
+ getNodes() {
19
+ return Array.from(this.nodes.values());
20
+ }
21
+ getNode(nodeId) {
22
+ return this.nodes.get(nodeId);
23
+ }
24
+ /** Send a command to a node. Returns result or error. */
25
+ async sendCommand(nodeId, cmd) {
26
+ const node = this.nodes.get(nodeId);
27
+ if (!node) return {
28
+ ok: false,
29
+ error: `Node ${nodeId} not connected`
30
+ };
31
+ return node.send(cmd);
32
+ }
33
+ /** Handle response from a node (called when node replies to a command). */
34
+ handleCommandResponse(cmdId, result) {
35
+ const pending = this.pendingCommands.get(cmdId);
36
+ if (pending) {
37
+ clearTimeout(pending.timeout);
38
+ this.pendingCommands.delete(cmdId);
39
+ pending.resolve(result);
40
+ }
41
+ }
42
+ updateLastSeen(nodeId) {
43
+ const node = this.nodes.get(nodeId);
44
+ if (node) node.lastSeenAt = (/* @__PURE__ */ new Date()).toISOString();
45
+ }
46
+ };
47
+ NodeRegistry = new NodeRegistryImpl();
48
+ } });
49
+
50
+ //#endregion
51
+ init_nodes_registry();
52
+ exports.NodeRegistry = NodeRegistry;