hyperclaw 5.4.0 โ†’ 5.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. package/README.md +1 -0
  2. package/dist/a2ui-protocol-CUqdJGh7.js +75 -0
  3. package/dist/a2ui-protocol-CibzbTxL.js +75 -0
  4. package/dist/a2ui-protocol-Dtb8zlog.js +75 -0
  5. package/dist/a2ui-protocol-ORP2Etw0.js +75 -0
  6. package/dist/a2ui-protocol-whRZHdBk.js +75 -0
  7. package/dist/abort-controller-B55O1IgK.js +47995 -0
  8. package/dist/agents-routing-Ai2BQVpU.js +7 -0
  9. package/dist/agents-routing-B0D0vcp5.js +424 -0
  10. package/dist/agents-routing-B0RBl1B8.js +424 -0
  11. package/dist/agents-routing-BC6GndVe.js +7 -0
  12. package/dist/agents-routing-BSUaOpce.js +7 -0
  13. package/dist/agents-routing-C4PVN8G6.js +7 -0
  14. package/dist/agents-routing-CyFBHvyk.js +424 -0
  15. package/dist/agents-routing-Dcr29-JV.js +424 -0
  16. package/dist/agents-routing-DdpszaMx.js +7 -0
  17. package/dist/agents-routing-EwzORQQv.js +424 -0
  18. package/dist/agents-routing-Fd-uQ4R_.js +7 -0
  19. package/dist/agents-routing-eLjVYBAk.js +424 -0
  20. package/dist/api-key-validation-BANgbsfO.js +66 -0
  21. package/dist/api-key-validation-Bnz-0MMK.js +66 -0
  22. package/dist/api-key-validation-D_fMCaO5.js +66 -0
  23. package/dist/api-key-validation-Db7rG3JU.js +66 -0
  24. package/dist/api-key-validation-DrMrLEa0.js +66 -0
  25. package/dist/api-keys-guide-B6AJ1V5D.js +149 -0
  26. package/dist/api-keys-guide-C75JQOdH.js +149 -0
  27. package/dist/api-keys-guide-CFJPrgsL.js +149 -0
  28. package/dist/api-keys-guide-DDz08BJQ.js +149 -0
  29. package/dist/api-keys-guide-DmKF7tB-.js +149 -0
  30. package/dist/audit-BLMB8qp7.js +445 -0
  31. package/dist/audit-Cb2TvqYZ.js +445 -0
  32. package/dist/audit-D7koAKvj.js +445 -0
  33. package/dist/audit-Q-Uy5nem.js +445 -0
  34. package/dist/audit-xP_175jB.js +445 -0
  35. package/dist/backup-7l3iovkX.js +86 -0
  36. package/dist/backup-BKLTHh62.js +86 -0
  37. package/dist/backup-CspxXk78.js +86 -0
  38. package/dist/backup-CtHJEqGr.js +86 -0
  39. package/dist/backup-D8dFYDXV.js +86 -0
  40. package/dist/banner-CZ2BfvQq.js +143 -0
  41. package/dist/banner-CjTRWmks.js +7 -0
  42. package/dist/banner-DYzQ8cCb.js +143 -0
  43. package/dist/banner-Dpygks0H.js +143 -0
  44. package/dist/banner-ZX1WLr44.js +7 -0
  45. package/dist/banner-jW84OrYg.js +7 -0
  46. package/dist/bounty-tools-CCwY61YO.js +211 -0
  47. package/dist/bounty-tools-Cq-oC9gk.js +211 -0
  48. package/dist/bounty-tools-DZ-WtRdE.js +211 -0
  49. package/dist/bounty-tools-DhpmjF5Y.js +211 -0
  50. package/dist/bounty-tools-NGuBWI55.js +211 -0
  51. package/dist/browser-tools-5Fl1hP_2.js +5 -0
  52. package/dist/browser-tools-Ay-wU_a4.js +5 -0
  53. package/dist/browser-tools-BMgBB2fK.js +179 -0
  54. package/dist/browser-tools-kcViDwk5.js +179 -0
  55. package/dist/chat-BUa1oGqj.js +528 -0
  56. package/dist/chat-CJa0ph8c.js +528 -0
  57. package/dist/chat-CKnfxa1-.js +528 -0
  58. package/dist/chat-CQKCIrIY.js +528 -0
  59. package/dist/chat-CiuT-GTs.js +528 -0
  60. package/dist/chat-DfI8uOzF.js +528 -0
  61. package/dist/chat-Dz5rmUSs.js +528 -0
  62. package/dist/chat-RTmX1F16.js +528 -0
  63. package/dist/chat-npW_ZOmo.js +528 -0
  64. package/dist/claw-tasks-Cio1Q7eA.js +80 -0
  65. package/dist/claw-tasks-Dq38PrL5.js +80 -0
  66. package/dist/claw-tasks-DzxNWVcz.js +80 -0
  67. package/dist/claw-tasks-L7vQSGlt.js +80 -0
  68. package/dist/claw-tasks-dndWneZW.js +80 -0
  69. package/dist/config-B-W-Mz4X.js +7 -0
  70. package/dist/config-BAwkTUJC.js +261 -0
  71. package/dist/config-BzK_Xl4Y.js +261 -0
  72. package/dist/config-CYPw2v4l.js +261 -0
  73. package/dist/config-ClsdlpXc.js +261 -0
  74. package/dist/config-DN9fdLL3.js +261 -0
  75. package/dist/config-Dm394B6X.js +7 -0
  76. package/dist/config-FejpHHTz.js +261 -0
  77. package/dist/config-SiLqEezw.js +7 -0
  78. package/dist/config-Tq_GJHf7.js +7 -0
  79. package/dist/config-n4qy5jIy.js +7 -0
  80. package/dist/config-qJUYRMzx.js +7 -0
  81. package/dist/connector-BYPxgmsD.js +312 -0
  82. package/dist/connector-CwT7KZm2.js +309 -0
  83. package/dist/connector-DX4k-lGd.js +442 -0
  84. package/dist/cost-tracker-C2q5zKic.js +103 -0
  85. package/dist/cost-tracker-CsRQAOEr.js +103 -0
  86. package/dist/cost-tracker-DAXWN5YT.js +103 -0
  87. package/dist/cost-tracker-bySvehH6.js +103 -0
  88. package/dist/cost-tracker-x9E8VKtk.js +103 -0
  89. package/dist/credentials-store-BAW87r6f.js +7 -0
  90. package/dist/credentials-store-BHtk7_H_.js +7 -0
  91. package/dist/credentials-store-CESgFvFU.js +89 -0
  92. package/dist/credentials-store-CR4WSDGl.js +7 -0
  93. package/dist/credentials-store-CXq4kZub.js +89 -0
  94. package/dist/credentials-store-DUp8dtaS.js +89 -0
  95. package/dist/credentials-store-Ddhgmbpz.js +7 -0
  96. package/dist/credentials-store-hiSga8qn.js +89 -0
  97. package/dist/credentials-store-kLdrmqSt.js +7 -0
  98. package/dist/credentials-store-onL1tYct.js +89 -0
  99. package/dist/cron-tasks-BFsaCKxE.js +89 -0
  100. package/dist/cron-tasks-BelA2aUW.js +89 -0
  101. package/dist/cron-tasks-CF4MJoIU.js +89 -0
  102. package/dist/cron-tasks-D1T9fWAb.js +89 -0
  103. package/dist/cron-tasks-f_ieXSG2.js +89 -0
  104. package/dist/daemon-ApB1nMs2.js +421 -0
  105. package/dist/daemon-B2ghXB-I.js +7 -0
  106. package/dist/daemon-BTYhQvD_.js +7 -0
  107. package/dist/daemon-BldYSrDj.js +421 -0
  108. package/dist/daemon-BoaFnmdF.js +421 -0
  109. package/dist/daemon-BqTcxMZe.js +7 -0
  110. package/dist/daemon-BrHxr4ut.js +421 -0
  111. package/dist/daemon-BzdeLgON.js +421 -0
  112. package/dist/daemon-BzqWIC4v.js +7 -0
  113. package/dist/daemon-C3OczPR1.js +7 -0
  114. package/dist/daemon-CivMFYkD.js +7 -0
  115. package/dist/daemon-D57KIIA3.js +421 -0
  116. package/dist/daemon-D8uyH9et.js +7 -0
  117. package/dist/daemon-DBTtYx6E.js +421 -0
  118. package/dist/daemon-DBXFUMue.js +421 -0
  119. package/dist/daemon-srcdhzUG.js +7 -0
  120. package/dist/delivery-BURWi8wu.js +4 -0
  121. package/dist/delivery-Bt0xW6L9.js +4 -0
  122. package/dist/delivery-C2sAERN7.js +4 -0
  123. package/dist/delivery-CF2Q4hb1.js +95 -0
  124. package/dist/delivery-CfMljOwk.js +95 -0
  125. package/dist/delivery-DP0d4_A4.js +95 -0
  126. package/dist/delivery-DXYt4aMO.js +4 -0
  127. package/dist/delivery-DXxP2UL4.js +4 -0
  128. package/dist/delivery-jT2UIDlU.js +95 -0
  129. package/dist/delivery-kZ2mVkU5.js +95 -0
  130. package/dist/destructive-gate-5LYh6brt.js +116 -0
  131. package/dist/destructive-gate-B_hNKtu6.js +116 -0
  132. package/dist/destructive-gate-C1ny9ek2.js +116 -0
  133. package/dist/destructive-gate-DvxPSDMR.js +116 -0
  134. package/dist/destructive-gate-Qd2y7x1B.js +116 -0
  135. package/dist/dist-B1qvBUax.js +30541 -0
  136. package/dist/engine-B-JvIt_Y.js +7 -0
  137. package/dist/engine-BBJlKpMP.js +7 -0
  138. package/dist/engine-BGZnBZ4m.js +7 -0
  139. package/dist/engine-BNygJfCo.js +335 -0
  140. package/dist/engine-BTSXJNba.js +346 -0
  141. package/dist/engine-C7LyH310.js +353 -0
  142. package/dist/engine-C_nC_Ioe.js +351 -0
  143. package/dist/engine-DB4MBzki.js +7 -0
  144. package/dist/engine-DCtJSbKU.js +7 -0
  145. package/dist/engine-DPi9fhMl.js +332 -0
  146. package/dist/engine-DeaqDcaT.js +7 -0
  147. package/dist/engine-DuvXJrUP.js +335 -0
  148. package/dist/engine-HkyTC_xl.js +332 -0
  149. package/dist/engine-JysunhPR.js +7 -0
  150. package/dist/engine-MzEUw7qb.js +7 -0
  151. package/dist/engine-j9Yaqt_-.js +332 -0
  152. package/dist/env-resolve--MaE2kFF.js +167 -0
  153. package/dist/env-resolve-BYWG94tK.js +11 -0
  154. package/dist/env-resolve-Bop7KbNq.js +167 -0
  155. package/dist/env-resolve-Buos635Y.js +167 -0
  156. package/dist/env-resolve-C0R8R7pb.js +167 -0
  157. package/dist/env-resolve-D3dP1-Xt.js +11 -0
  158. package/dist/env-resolve-Dr-KfTtw.js +11 -0
  159. package/dist/env-resolve-DvsbhPKl.js +11 -0
  160. package/dist/env-resolve-NNM3F6Eo.js +167 -0
  161. package/dist/env-resolve-dTjn-g8X.js +11 -0
  162. package/dist/extraction-tools-Bh5F0ENP.js +91 -0
  163. package/dist/extraction-tools-BjzXD9LW.js +5 -0
  164. package/dist/extraction-tools-D1lrDYhe.js +5 -0
  165. package/dist/extraction-tools-FBwtT2Bx.js +91 -0
  166. package/dist/fileFromPath-CodL6KXh.js +85 -0
  167. package/dist/gmail-watch-setup--eQ8raeb.js +42 -0
  168. package/dist/gmail-watch-setup-9t14gy1B.js +42 -0
  169. package/dist/gmail-watch-setup-B9fx_OLg.js +42 -0
  170. package/dist/gmail-watch-setup-BzbG0ICM.js +42 -0
  171. package/dist/gmail-watch-setup-DP3kDRx1.js +42 -0
  172. package/dist/heartbeat-engine-5iOlL7Dj.js +89 -0
  173. package/dist/heartbeat-engine-B9bhAHNi.js +89 -0
  174. package/dist/heartbeat-engine-Bu4q18GH.js +89 -0
  175. package/dist/heartbeat-engine-CF_JjNJ4.js +89 -0
  176. package/dist/heartbeat-engine-CLADYZxE.js +89 -0
  177. package/dist/hub-CZeGrS20.js +6 -0
  178. package/dist/hub-DAkEVTEy.js +545 -0
  179. package/dist/hyperclawbot-BEm8_87h.js +516 -0
  180. package/dist/hyperclawbot-CNVUtvYC.js +516 -0
  181. package/dist/hyperclawbot-D5ofLNgm.js +516 -0
  182. package/dist/hyperclawbot-D61zVMyQ.js +516 -0
  183. package/dist/hyperclawbot-DR6BgI_d.js +516 -0
  184. package/dist/hyperclawbot-DwScttSx.js +516 -0
  185. package/dist/hyperclawbot-hZv4pde0.js +516 -0
  186. package/dist/hyperclawbot-v65eL2U0.js +516 -0
  187. package/dist/inference-BEvs7s3c.js +2854 -0
  188. package/dist/inference-C4b9YqXk.js +8 -0
  189. package/dist/inference-C874-2MI.js +8 -0
  190. package/dist/inference-CRF6HyyH.js +2854 -0
  191. package/dist/inference-CfhTACI8.js +2854 -0
  192. package/dist/inference-DCSz6Sb1.js +2880 -0
  193. package/dist/inference-DGsy36Ru.js +8 -0
  194. package/dist/inference-Da7Hw4J3.js +8 -0
  195. package/dist/inference-DhJ-SHZn.js +8 -0
  196. package/dist/inference-K7Jrnzre.js +2854 -0
  197. package/dist/isFile-CSxoSB8X.js +2274 -0
  198. package/dist/knowledge-graph-BdsJ5KEL.js +134 -0
  199. package/dist/knowledge-graph-BiIvoxPt.js +134 -0
  200. package/dist/knowledge-graph-CFRBepzr.js +134 -0
  201. package/dist/knowledge-graph-CeDeahui.js +134 -0
  202. package/dist/knowledge-graph-DoYFZnUr.js +134 -0
  203. package/dist/loader-C2qtNbtF.js +6 -0
  204. package/dist/loader-D6yjBYo4.js +410 -0
  205. package/dist/loader-DBO6yRNh.js +6 -0
  206. package/dist/loader-DMMb9emn.js +410 -0
  207. package/dist/loader-DUhmG3V9.js +410 -0
  208. package/dist/loader-Dl8LNycw.js +6 -0
  209. package/dist/loader-JktrmJOG.js +6 -0
  210. package/dist/loader-UpOYxgZv.js +6 -0
  211. package/dist/loader-hXv2mZjK.js +410 -0
  212. package/dist/loader-nDBcv3Tm.js +410 -0
  213. package/dist/logger-BD316YbA.js +86 -0
  214. package/dist/logger-BnXZkfsp.js +86 -0
  215. package/dist/logger-CmphFNmW.js +86 -0
  216. package/dist/logger-DkHzhh56.js +86 -0
  217. package/dist/logger-Oty9sC13.js +86 -0
  218. package/dist/manager-3-q8zuAW.js +250 -0
  219. package/dist/manager-BIc6zzZV.js +250 -0
  220. package/dist/manager-BkMzc-EJ.js +250 -0
  221. package/dist/manager-Bq5LApdR.js +6 -0
  222. package/dist/manager-BwobWy0l.js +120 -0
  223. package/dist/manager-CNgdJunf.js +250 -0
  224. package/dist/manager-CozyZSDG.js +250 -0
  225. package/dist/manager-D4mDWXph.js +120 -0
  226. package/dist/manager-DuS-WQhZ.js +120 -0
  227. package/dist/manager-Dz2eKYqo.js +116 -0
  228. package/dist/manager-R0TlRMZy.js +120 -0
  229. package/dist/manager-aJfY7rt6.js +120 -0
  230. package/dist/mcp-BH7HtOQ8.js +142 -0
  231. package/dist/mcp-CAJSA_ee.js +142 -0
  232. package/dist/mcp-CD-iIQa2.js +142 -0
  233. package/dist/mcp-CI2F3m8G.js +142 -0
  234. package/dist/mcp-DGo37Ifb.js +142 -0
  235. package/dist/mcp-loader-C-21ynRH.js +93 -0
  236. package/dist/mcp-loader-Ct1NQKnX.js +93 -0
  237. package/dist/mcp-loader-D1T6UX73.js +93 -0
  238. package/dist/mcp-loader-DJk6MEof.js +93 -0
  239. package/dist/mcp-loader-DdXvU63s.js +93 -0
  240. package/dist/mcp-loader-Di7n__ta.js +93 -0
  241. package/dist/mcp-loader-gMliiJ7R.js +93 -0
  242. package/dist/memory-CyonlkTy.js +6 -0
  243. package/dist/memory-DPSWQBc0.js +276 -0
  244. package/dist/memory-auto-B0QOqaUD.js +306 -0
  245. package/dist/memory-auto-BSxYJugl.js +5 -0
  246. package/dist/memory-auto-BVCJeTwd.js +306 -0
  247. package/dist/memory-auto-CcFRxMj-.js +306 -0
  248. package/dist/memory-auto-CifT5aj_.js +5 -0
  249. package/dist/memory-auto-Cp2Jwx3Y.js +306 -0
  250. package/dist/memory-auto-DXKe2ayf.js +5 -0
  251. package/dist/memory-auto-DjK_D8CA.js +306 -0
  252. package/dist/memory-auto-N57dp4Do.js +5 -0
  253. package/dist/memory-auto-n0kOcU7F.js +5 -0
  254. package/dist/memory-integration-D2RvZ-MB.js +91 -0
  255. package/dist/memory-integration-D8shLJwp.js +91 -0
  256. package/dist/memory-integration-DLmzJ62L.js +91 -0
  257. package/dist/memory-integration-DMXDbMIL.js +91 -0
  258. package/dist/memory-integration-Dgr-mjue.js +91 -0
  259. package/dist/moltbook-CIeOshK6.js +81 -0
  260. package/dist/moltbook-CX5XWn06.js +81 -0
  261. package/dist/moltbook-DUfiE4NY.js +81 -0
  262. package/dist/moltbook-DvV6GFFL.js +81 -0
  263. package/dist/moltbook-YEiNI8Cm.js +81 -0
  264. package/dist/multi-agent-tools-jzfvT4zP.js +87 -0
  265. package/dist/multimodal-zZdwqISl.js +77 -0
  266. package/dist/node-BYrxELx2.js +251 -0
  267. package/dist/node-CLWgPlAk.js +251 -0
  268. package/dist/node-Czz8Y85D.js +251 -0
  269. package/dist/node-DFKhz7Zn.js +251 -0
  270. package/dist/node-Du2H2Ddi.js +226 -0
  271. package/dist/node-domexception-v89b0Nwz.js +21 -0
  272. package/dist/node-pending-queue-CIMXPU6K.js +32 -0
  273. package/dist/node-pending-queue-DUXCbYkp.js +32 -0
  274. package/dist/node-pending-queue-DZp7cdfo.js +32 -0
  275. package/dist/node-pending-queue-iYpoWqxe.js +32 -0
  276. package/dist/nodes-registry-BTy7Sc7D.js +52 -0
  277. package/dist/nodes-registry-BYjmmJBU.js +52 -0
  278. package/dist/nodes-registry-BeiEjd9U.js +52 -0
  279. package/dist/nodes-registry-C8GeEGq0.js +52 -0
  280. package/dist/nodes-registry-Du6Klz0l.js +52 -0
  281. package/dist/oauth-flow-BA0yMrHx.js +148 -0
  282. package/dist/oauth-flow-C4QSMsbl.js +148 -0
  283. package/dist/oauth-flow-CIuDBDsp.js +148 -0
  284. package/dist/oauth-flow-CZOsvU1v.js +148 -0
  285. package/dist/oauth-flow-CniM4jlJ.js +148 -0
  286. package/dist/oauth-provider-BA4GVFKg.js +111 -0
  287. package/dist/oauth-provider-Bnul5A_Z.js +111 -0
  288. package/dist/oauth-provider-Dk-6BmGL.js +111 -0
  289. package/dist/oauth-provider-DqPXPiiC.js +111 -0
  290. package/dist/oauth-provider-MEgHjij2.js +111 -0
  291. package/dist/observability-0spm7MPz.js +89 -0
  292. package/dist/observability-B3dDQSdI.js +89 -0
  293. package/dist/observability-BOMYgHUh.js +89 -0
  294. package/dist/observability-CDqHr-_o.js +89 -0
  295. package/dist/observability-ah2a7sh1.js +89 -0
  296. package/dist/onboard-BJ78s3NT.js +3854 -0
  297. package/dist/onboard-BnyHie0K.js +14 -0
  298. package/dist/onboard-C55YXd_e.js +14 -0
  299. package/dist/onboard-CNnm4yYp.js +3841 -0
  300. package/dist/onboard-CXSVPnP7.js +3854 -0
  301. package/dist/onboard-CwvXXOR1.js +14 -0
  302. package/dist/onboard-CxlIsNhX.js +3854 -0
  303. package/dist/onboard-D-5gWzH0.js +3854 -0
  304. package/dist/onboard-D9pjgaVR.js +3854 -0
  305. package/dist/onboard-DPmufMqX.js +14 -0
  306. package/dist/onboard-F9lKA2ie.js +14 -0
  307. package/dist/onboard-UTQXzlPD.js +3854 -0
  308. package/dist/onboard-UhWVcTap.js +14 -0
  309. package/dist/onboard-W5DsxVf2.js +3854 -0
  310. package/dist/onboard-YszvVNgS.js +14 -0
  311. package/dist/onboard-hK098kjl.js +14 -0
  312. package/dist/onboard-pLDBUBpO.js +14 -0
  313. package/dist/onboard-zISipu-l.js +3854 -0
  314. package/dist/openai-CrdtuLxw.js +6292 -0
  315. package/dist/orchestrator-5M-6MB7r.js +6 -0
  316. package/dist/orchestrator-B3BjP1dy.js +6 -0
  317. package/dist/orchestrator-BZS62iDS.js +6 -0
  318. package/dist/orchestrator-C0t11xj7.js +189 -0
  319. package/dist/orchestrator-CA4eKeGn.js +189 -0
  320. package/dist/orchestrator-CNxTIlOK.js +189 -0
  321. package/dist/orchestrator-CTMbjgH_.js +6 -0
  322. package/dist/orchestrator-Cg1vgEHb.js +6 -0
  323. package/dist/orchestrator-Crn4fgbI.js +189 -0
  324. package/dist/orchestrator-Cs6s-QmS.js +189 -0
  325. package/dist/orchestrator-DGqwsLmO.js +189 -0
  326. package/dist/orchestrator-DV5t6wQ0.js +6 -0
  327. package/dist/orchestrator-UUHsFKiH.js +6 -0
  328. package/dist/orchestrator-eT0ZL4yl.js +6 -0
  329. package/dist/orchestrator-oa7HbCnF.js +189 -0
  330. package/dist/orchestrator-tUKag7pG.js +189 -0
  331. package/dist/osint-47yIek6w.js +283 -0
  332. package/dist/osint-BJvOCmVk.js +283 -0
  333. package/dist/osint-CK9xVUUm.js +283 -0
  334. package/dist/osint-D6vQXCWh.js +283 -0
  335. package/dist/osint-DLYZsp1k.js +283 -0
  336. package/dist/osint-c-xDjLb-.js +283 -0
  337. package/dist/osint-cAAdO-cx.js +283 -0
  338. package/dist/osint-chat-B0lc0Y6r.js +789 -0
  339. package/dist/osint-chat-BJgnkFDm.js +789 -0
  340. package/dist/osint-chat-BUhiSpf9.js +789 -0
  341. package/dist/osint-chat-C-9FVAkU.js +789 -0
  342. package/dist/osint-chat-C09BvbGy.js +789 -0
  343. package/dist/osint-chat-CWET8Fno.js +789 -0
  344. package/dist/osint-chat-Cgdzg3lh.js +789 -0
  345. package/dist/osint-chat-zdeaaw7a.js +789 -0
  346. package/dist/osint-e6oBrtlj.js +283 -0
  347. package/dist/pc-access-BCaF5mRs.js +858 -0
  348. package/dist/pc-access-BOcXappE.js +858 -0
  349. package/dist/pc-access-BgZNmAdB.js +8 -0
  350. package/dist/pc-access-CAoM6WN4.js +8 -0
  351. package/dist/pc-access-D2HdoziZ.js +8 -0
  352. package/dist/pc-access-D4g0fjQb.js +858 -0
  353. package/dist/pending-approval-CEu_-DGQ.js +22 -0
  354. package/dist/pending-approval-CJPyt8U5.js +22 -0
  355. package/dist/pending-approval-CzMNCTfZ.js +22 -0
  356. package/dist/pending-approval-DaXi7otO.js +22 -0
  357. package/dist/pending-approval-KcyeiifE.js +22 -0
  358. package/dist/providers-BfW-fgpw.js +5 -0
  359. package/dist/providers-Cs1h_TJA.js +1137 -0
  360. package/dist/providers-DrZP0NeR.js +5 -0
  361. package/dist/providers-dHhpJo9j.js +1120 -0
  362. package/dist/reminders-store-B58LldEG.js +58 -0
  363. package/dist/reminders-store-C4gWckLa.js +58 -0
  364. package/dist/reminders-store-DT0o6a60.js +58 -0
  365. package/dist/renderer-B8c22rbg.js +228 -0
  366. package/dist/renderer-BS0ETL20.js +228 -0
  367. package/dist/renderer-B_ew6jRs.js +228 -0
  368. package/dist/renderer-Cg3c41A5.js +228 -0
  369. package/dist/renderer-UoPcgaAd.js +228 -0
  370. package/dist/rules-BAYXiKiJ.js +106 -0
  371. package/dist/rules-D0v5nuSE.js +106 -0
  372. package/dist/rules-DCKPgwLb.js +106 -0
  373. package/dist/rules-Zn9j4PnO.js +106 -0
  374. package/dist/rules-oAgOSPHC.js +106 -0
  375. package/dist/run-main.js +492 -131
  376. package/dist/runner-B5uo6C5q.js +1310 -0
  377. package/dist/runner-BaZ2V27T.js +1307 -0
  378. package/dist/runner-Bgl7UTbV.js +1307 -0
  379. package/dist/runner-DOKp3-v5.js +1307 -0
  380. package/dist/runner-voYdfM_f.js +1307 -0
  381. package/dist/search-tools-BBwMa8VX.js +107 -0
  382. package/dist/search-tools-CEUOO9Jf.js +107 -0
  383. package/dist/search-tools-DXVuVXW_.js +107 -0
  384. package/dist/search-tools-VHP3xVyC.js +107 -0
  385. package/dist/search-tools-w_zT7-dr.js +107 -0
  386. package/dist/server-BAdJwMM9.js +4 -0
  387. package/dist/server-BD9FLc7S.js +1384 -0
  388. package/dist/server-BJkDIs8Z.js +1467 -0
  389. package/dist/server-BlqWBbS7.js +4 -0
  390. package/dist/server-BzwPvTbD.js +1447 -0
  391. package/dist/server-CBvSfG4w.js +4 -0
  392. package/dist/server-CbNBcB41.js +4 -0
  393. package/dist/server-CtFoXM88.js +4 -0
  394. package/dist/server-DPTXaJJF.js +4 -0
  395. package/dist/server-DVxVLu_G.js +1467 -0
  396. package/dist/server-DZj6Nobr.js +1467 -0
  397. package/dist/server-Diu80smx.js +4 -0
  398. package/dist/server-DszV63tu.js +4 -0
  399. package/dist/server-Dv2zHHy-.js +1447 -0
  400. package/dist/server-MDmdWHob.js +1447 -0
  401. package/dist/server-N9LnLQCS.js +1447 -0
  402. package/dist/session-store-C6Otslf9.js +5 -0
  403. package/dist/session-store-Cmfnvuw9.js +141 -0
  404. package/dist/session-store-CuR9DgRf.js +5 -0
  405. package/dist/session-store-Cx1RMBhS.js +5 -0
  406. package/dist/session-store-DPPHkJBn.js +5 -0
  407. package/dist/session-store-DWLCWQFS.js +141 -0
  408. package/dist/session-store-qGufR_m5.js +141 -0
  409. package/dist/session-store-sUpA509O.js +141 -0
  410. package/dist/sessions-tools-9Z8TtdmP.js +5 -0
  411. package/dist/sessions-tools-BAZnoQLp.js +95 -0
  412. package/dist/sessions-tools-Bb_zF947.js +95 -0
  413. package/dist/sessions-tools-ClrKqLII.js +131 -0
  414. package/dist/sessions-tools-DFe23ZDD.js +5 -0
  415. package/dist/sessions-tools-JHSZ6Bns.js +5 -0
  416. package/dist/sessions-tools-TsRdeFb7.js +95 -0
  417. package/dist/sessions-tools-nYP3Agfs.js +5 -0
  418. package/dist/skill-loader-9jg876RH.js +160 -0
  419. package/dist/skill-loader-CM4KWQ7_.js +160 -0
  420. package/dist/skill-loader-CS3OP4Lr.js +160 -0
  421. package/dist/skill-loader-CnJDLNbY.js +7 -0
  422. package/dist/skill-loader-DRLgt5V2.js +160 -0
  423. package/dist/skill-loader-DVpEgYV2.js +7 -0
  424. package/dist/skill-loader-Df5T_UFl.js +7 -0
  425. package/dist/skill-loader-DxE-gZkT.js +7 -0
  426. package/dist/skill-runtime-8Xh5874w.js +104 -0
  427. package/dist/skill-runtime-B3aUdWKh.js +104 -0
  428. package/dist/skill-runtime-BKyhYvpW.js +5 -0
  429. package/dist/skill-runtime-BLkXA1mO.js +104 -0
  430. package/dist/skill-runtime-BMk-h6Dl.js +5 -0
  431. package/dist/skill-runtime-BP0kZfmM.js +5 -0
  432. package/dist/skill-runtime-BaTX-RGy.js +5 -0
  433. package/dist/skill-runtime-CB9tnc-P.js +104 -0
  434. package/dist/skill-runtime-CLK5HTVE.js +5 -0
  435. package/dist/skill-runtime-COyc3Bci.js +104 -0
  436. package/dist/skill-runtime-CvDXX7wN.js +5 -0
  437. package/dist/skill-runtime-D4REZnhY.js +104 -0
  438. package/dist/skill-runtime-D6-rGzX1.js +104 -0
  439. package/dist/skill-runtime-DQRi9sIf.js +5 -0
  440. package/dist/skill-runtime-DRd56NWK.js +104 -0
  441. package/dist/skill-runtime-Dej1Yr5V.js +5 -0
  442. package/dist/src-6dmkVQGq.js +63 -0
  443. package/dist/src-7yBXPAs6.js +315 -0
  444. package/dist/src-9GyYED0T.js +63 -0
  445. package/dist/src-B9L6qb-Z.js +462 -0
  446. package/dist/src-BEjIVOmq.js +63 -0
  447. package/dist/src-BOnuFlI4.js +23 -0
  448. package/dist/src-BY3On_zO.js +462 -0
  449. package/dist/src-BdgKAlMQ.js +20 -0
  450. package/dist/src-BkEtHLLy.js +462 -0
  451. package/dist/src-C52A3OwC.js +301 -0
  452. package/dist/src-C8cbfjat.js +173 -0
  453. package/dist/src-CDeWGebw.js +315 -0
  454. package/dist/src-CNAVUFC6.js +462 -0
  455. package/dist/src-CQ2lZvdF.js +462 -0
  456. package/dist/src-Cdwn9xpG.js +462 -0
  457. package/dist/src-CyCLoqIP.js +63 -0
  458. package/dist/src-D-OND_62.js +301 -0
  459. package/dist/src-DB6dPsbY.js +63 -0
  460. package/dist/src-DE4mH0BB.js +63 -0
  461. package/dist/src-DFo8lVfV.js +300 -0
  462. package/dist/src-DJbpP4Gs.js +462 -0
  463. package/dist/src-DPfnArdr.js +300 -0
  464. package/dist/src-DTft7Qvt.js +63 -0
  465. package/dist/src-DgvFah8g.js +153 -0
  466. package/dist/src-TYvV_oFO.js +63 -0
  467. package/dist/src-krHV0uVj.js +315 -0
  468. package/dist/src-lltU5gkh.js +20 -0
  469. package/dist/src-tF0sBtr3.js +462 -0
  470. package/dist/sub-agent-tools-BwOxHu6f.js +39 -0
  471. package/dist/sub-agent-tools-CE8pVUdb.js +39 -0
  472. package/dist/sub-agent-tools-CJVEIF1F.js +39 -0
  473. package/dist/sub-agent-tools-CQWNfYn_.js +39 -0
  474. package/dist/sub-agent-tools-CViiqebO.js +39 -0
  475. package/dist/sub-agent-tools-DgT4jUHC.js +39 -0
  476. package/dist/sub-agent-tools-Lbin_4S3.js +39 -0
  477. package/dist/sub-agent-tools-f4X1M-li.js +39 -0
  478. package/dist/tool-policy-1EBdJkSG.js +190 -0
  479. package/dist/tool-policy-B1bL0X-E.js +189 -0
  480. package/dist/tool-policy-CfWEnRxy.js +190 -0
  481. package/dist/tool-policy-NLbucl5-.js +189 -0
  482. package/dist/tool-policy-yNVTLNDY.js +189 -0
  483. package/dist/tts-elevenlabs-Bk24wQ2V.js +64 -0
  484. package/dist/tts-elevenlabs-CCeOqqrh.js +64 -0
  485. package/dist/tts-elevenlabs-CHrJZuNW.js +64 -0
  486. package/dist/tts-elevenlabs-DHqQsqMz.js +64 -0
  487. package/dist/tts-elevenlabs-TUKPkSV2.js +64 -0
  488. package/dist/vision-BMRKyu3c.js +167 -0
  489. package/dist/vision-CW1YCKed.js +167 -0
  490. package/dist/vision-DPLmrwUA.js +167 -0
  491. package/dist/vision-Q4EOcBS6.js +167 -0
  492. package/dist/vision-XyAGO5La.js +167 -0
  493. package/dist/vision-tools-B5DNR28M.js +5 -0
  494. package/dist/vision-tools-CC9HSuvN.js +51 -0
  495. package/dist/vision-tools-Ca3OhtdX.js +51 -0
  496. package/dist/vision-tools-CpU2fSRv.js +51 -0
  497. package/dist/vision-tools-Ct52djW8.js +51 -0
  498. package/dist/vision-tools-DF7N2DDI.js +5 -0
  499. package/dist/vision-tools-DVYx9-Jw.js +5 -0
  500. package/dist/vision-tools-DyP6lRA5.js +5 -0
  501. package/dist/vision-tools-RIVKEUeY.js +5 -0
  502. package/dist/vision-tools-kYb3effk.js +51 -0
  503. package/dist/voice-transcription-B1D1rpca.js +170 -0
  504. package/dist/voice-transcription-Bz2y0nPK.js +170 -0
  505. package/dist/voice-transcription-CVFcHpPF.js +170 -0
  506. package/dist/voice-transcription-CvQuWPYK.js +170 -0
  507. package/dist/voice-transcription-YqndiLA7.js +170 -0
  508. package/dist/website-watch-tools-B036Y8OQ.js +176 -0
  509. package/dist/website-watch-tools-B8CHie8v.js +5 -0
  510. package/dist/website-watch-tools-Brk5oIEv.js +176 -0
  511. package/dist/website-watch-tools-CJqRj_GB.js +5 -0
  512. package/dist/website-watch-tools-CSSEu3Qy.js +5 -0
  513. package/dist/website-watch-tools-D92dkYZa.js +176 -0
  514. package/dist/website-watch-tools-Du_a8lXq.js +176 -0
  515. package/dist/website-watch-tools-UdTBGgRk.js +5 -0
  516. package/package.json +5 -3
  517. package/static/chat.html +18 -4
  518. package/static/web/assets/index-D2ekZ-uM.js +75 -0
  519. package/static/web/assets/index-D_9lvvup.css +1 -0
  520. package/static/web/index.html +2 -2
  521. package/static/web/assets/index-B5N1LHGR.css +0 -1
  522. package/static/web/assets/index-Bf8pf7Wg.js +0 -75
@@ -0,0 +1,789 @@
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
+ require('./browser-tools-BMgBB2fK.js');
5
+ require('./src-lltU5gkh.js');
6
+ const require_engine = require('./engine-C_nC_Ioe.js');
7
+ require('./extraction-tools-Bh5F0ENP.js');
8
+ const require_inference = require('./inference-DCSz6Sb1.js');
9
+ require('./memory-auto-BVCJeTwd.js');
10
+ require('./orchestrator-CNxTIlOK.js');
11
+ require('./pc-access-D4g0fjQb.js');
12
+ require('./session-store-sUpA509O.js');
13
+ require('./sessions-tools-ClrKqLII.js');
14
+ require('./skill-loader-CM4KWQ7_.js');
15
+ require('./skill-runtime-BLkXA1mO.js');
16
+ require('./vision-tools-kYb3effk.js');
17
+ require('./website-watch-tools-D92dkYZa.js');
18
+ const require_src$1 = require('./src-BkEtHLLy.js');
19
+ const chalk = require_chunk.__toESM(require("chalk"));
20
+ const ora = require_chunk.__toESM(require("ora"));
21
+ const fs_extra = require_chunk.__toESM(require("fs-extra"));
22
+ const path = require_chunk.__toESM(require("path"));
23
+ const http = require_chunk.__toESM(require("http"));
24
+ const readline = require_chunk.__toESM(require("readline"));
25
+ const marked = require_chunk.__toESM(require("marked"));
26
+ const marked_terminal = require_chunk.__toESM(require("marked-terminal"));
27
+
28
+ //#region src/cli/osint-chat.ts
29
+ require_src$1.init_src();
30
+ require_paths$1.init_paths();
31
+ marked.marked.setOptions({ renderer: new marked_terminal.default({ emoji: true }) });
32
+ function renderMarkdown(text) {
33
+ try {
34
+ const rendered = (0, marked.marked)(text);
35
+ return rendered.split("\n").map((l) => " " + l).join("\n").trimEnd();
36
+ } catch {
37
+ return " " + text;
38
+ }
39
+ }
40
+ const RED_DIV = chalk.default.red(" " + "โ”€".repeat(56));
41
+ const GRAY_DIV = chalk.default.gray(" " + "โ”€".repeat(56));
42
+ function printOsintHelp(profile) {
43
+ console.log();
44
+ console.log(chalk.default.red.bold(" ๐Ÿ” OSINT Chat Commands:"));
45
+ console.log(` ${chalk.default.red("/exit")} โ€” ๐Ÿšช quit the session`);
46
+ console.log(` ${chalk.default.red("/clear")} โ€” ๐Ÿ—‘๏ธ clear conversation history`);
47
+ console.log(` ${chalk.default.red("/findings")} โ€” ๐Ÿ’พ save this session as a markdown report`);
48
+ console.log(` ${chalk.default.red("/target <value>")} โ€” ๐ŸŽฏ update the active target`);
49
+ console.log(` ${chalk.default.red("/mode")} โ€” โš™๏ธ show current workflow mode`);
50
+ console.log(` ${chalk.default.red("/prompt")} โ€” ๐Ÿ“ show current session prompt`);
51
+ console.log(` ${chalk.default.red("/prompt <text>")} โ€” ๐Ÿ“ add extra instructions for this session`);
52
+ console.log(` ${chalk.default.red("/prompt clear")} โ€” ๐Ÿงน remove extra instructions`);
53
+ console.log(` ${chalk.default.red("/skill list")} โ€” ๐Ÿงฉ list installed skills`);
54
+ console.log(` ${chalk.default.red("/skill add <id>")} โ€” โž• activate a skill for this session`);
55
+ console.log(` ${chalk.default.red("/skill remove <id>")} โ€” โž– deactivate a skill`);
56
+ console.log(` ${chalk.default.red("/help")} โ€” โ“ show this help`);
57
+ console.log();
58
+ console.log(chalk.default.gray(" ๐Ÿ’ก Example prompts for ") + chalk.default.yellow.bold(profile.mode) + chalk.default.gray(" mode:"));
59
+ const examples = {
60
+ recon: ["๐ŸŒ Perform passive recon on the target: WHOIS, DNS, subdomains", "๐Ÿ™ Find public GitHub repos and exposed config files"],
61
+ bugbounty: ["๐Ÿ› Test for XSS on the login form at /auth/login", "๐Ÿ“„ Draft a bug bounty report for an SSRF vulnerability"],
62
+ pentest: ["๐Ÿ”ญ Enumerate open ports and running services on the target", "๐Ÿ“‹ Create a pentest report template for a web application"],
63
+ footprint: ["๐Ÿ‘ค Map the digital footprint of this username across platforms", "๐Ÿ“ง Search for email leaks associated with this domain"],
64
+ custom: ["๐Ÿš€ Start your research task..."]
65
+ };
66
+ for (const ex of examples[profile.mode] ?? examples.custom) console.log(chalk.default.gray(` โ€ข "${ex}"`));
67
+ console.log();
68
+ console.log(chalk.default.gray(" ๐Ÿ’ก Tips:"));
69
+ console.log(chalk.default.gray(" โ€ข /prompt You are a senior pentester. Always use nmap first."));
70
+ console.log(chalk.default.gray(" โ€ข /skill add osint-toolkit โ€” add a skill for this session"));
71
+ console.log(chalk.default.gray(" โ€ข /findings โ€” save a markdown report at any time"));
72
+ console.log(chalk.default.gray(" โ€ข /target example.com โ€” switch target mid-session"));
73
+ console.log();
74
+ }
75
+ async function saveFindings(messages, profile) {
76
+ const osintDir = path.default.join(require_paths.getHyperClawDir(), "osint-reports");
77
+ await fs_extra.default.ensureDir(osintDir);
78
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, 19);
79
+ const slug = (profile.target ?? profile.mode).replace(/[^a-zA-Z0-9._-]/g, "-");
80
+ const filename = `osint-${slug}-${timestamp}.md`;
81
+ const filepath = path.default.join(osintDir, filename);
82
+ const lines = [
83
+ `# OSINT Report โ€” ${profile.target ?? profile.mode}`,
84
+ ``,
85
+ `**Workflow:** ${profile.mode}`,
86
+ profile.target ? `**Target:** ${profile.target} (${profile.targetType ?? "custom"})` : "",
87
+ profile.notes ? `**Notes:** ${profile.notes}` : "",
88
+ `**Generated:** ${(/* @__PURE__ */ new Date()).toLocaleString()}`,
89
+ ``,
90
+ `---`,
91
+ ``,
92
+ `## Session Transcript`,
93
+ ``
94
+ ];
95
+ for (const msg of messages) if (msg.role === "user") {
96
+ lines.push(`### ๐Ÿ’ฌ Analyst`);
97
+ lines.push(String(msg.content));
98
+ lines.push("");
99
+ } else if (msg.role === "assistant") {
100
+ lines.push(`### ๐Ÿ” Agent`);
101
+ lines.push(String(msg.content));
102
+ lines.push("");
103
+ }
104
+ await fs_extra.default.writeFile(filepath, lines.filter((l) => l !== void 0).join("\n"));
105
+ console.log(chalk.default.green(`\n โœ… Report saved: ${filepath}\n`));
106
+ }
107
+ function makeSessionId() {
108
+ const { randomBytes } = require("crypto");
109
+ return randomBytes(5).toString("hex");
110
+ }
111
+ async function probeDaemon(port) {
112
+ return new Promise((resolve) => {
113
+ const req = http.default.get(`http://127.0.0.1:${port}/api/status`, { timeout: 1500 }, (res) => {
114
+ let data = "";
115
+ res.on("data", (c) => data += c);
116
+ res.on("end", () => {
117
+ try {
118
+ const json = JSON.parse(data);
119
+ resolve(json?.running === true);
120
+ } catch {
121
+ resolve(false);
122
+ }
123
+ });
124
+ });
125
+ req.on("error", () => resolve(false));
126
+ req.on("timeout", () => {
127
+ req.destroy();
128
+ resolve(false);
129
+ });
130
+ });
131
+ }
132
+ async function callDaemonChat(message, sessionKey, port, authToken) {
133
+ return new Promise((resolve, reject) => {
134
+ const body = JSON.stringify({
135
+ message,
136
+ sessionKey
137
+ });
138
+ const headers = {
139
+ "Content-Type": "application/json",
140
+ "Content-Length": Buffer.byteLength(body).toString(),
141
+ "X-HyperClaw-Source": "osint-cli"
142
+ };
143
+ if (authToken) headers["Authorization"] = `Bearer ${authToken}`;
144
+ const req = http.default.request({
145
+ hostname: "127.0.0.1",
146
+ port,
147
+ path: "/api/chat",
148
+ method: "POST",
149
+ headers,
150
+ timeout: 3e5
151
+ }, (res) => {
152
+ let data = "";
153
+ res.on("data", (c) => data += c);
154
+ res.on("end", () => {
155
+ if (res.statusCode === 401) {
156
+ reject(new Error("Daemon requires auth. Set gateway.authToken in config or unset it."));
157
+ return;
158
+ }
159
+ try {
160
+ const json = JSON.parse(data);
161
+ if (json.error) reject(new Error(json.error));
162
+ else resolve(json.response ?? "(empty response)");
163
+ } catch {
164
+ resolve(data || "(empty response)");
165
+ }
166
+ });
167
+ });
168
+ req.on("error", reject);
169
+ req.on("timeout", () => {
170
+ req.destroy();
171
+ reject(new Error("Daemon request timed out"));
172
+ });
173
+ req.write(body);
174
+ req.end();
175
+ });
176
+ }
177
+ async function runOsintChat(opts) {
178
+ const profilePath = path.default.join(require_paths.getHyperClawDir(), "osint-profile.json");
179
+ let profile;
180
+ try {
181
+ profile = await fs_extra.default.readJson(profilePath);
182
+ } catch {
183
+ console.log(chalk.default.red("\n โŒ No OSINT profile found. Run: hyperclaw osint setup\n"));
184
+ return;
185
+ }
186
+ const cfg = await fs_extra.default.readJson(require_paths.getConfigPath()).catch(() => null);
187
+ if (!cfg) {
188
+ console.log(chalk.default.red("\n โŒ No configuration found. Run: hyperclaw onboard\n"));
189
+ return;
190
+ }
191
+ const daemonPort = cfg?.gateway?.port ?? 18789;
192
+ const authToken = cfg?.gateway?.authToken || void 0;
193
+ const s = (0, ora.default)(chalk.default.gray(" Checking for daemon...")).start();
194
+ const daemonRunning = await probeDaemon(daemonPort);
195
+ s.stop();
196
+ if (daemonRunning) await runOsintChatDaemon({
197
+ profile,
198
+ cfg,
199
+ daemonPort,
200
+ authToken,
201
+ opts
202
+ });
203
+ else await runOsintChatStandalone({
204
+ profile,
205
+ cfg,
206
+ opts
207
+ });
208
+ }
209
+ async function runOsintChatDaemon(params) {
210
+ const { profile, cfg, daemonPort, authToken, opts } = params;
211
+ const hcDir = require_paths.getHyperClawDir();
212
+ const osintActivePath = path.default.join(hcDir, "OSINT-ACTIVE.md");
213
+ const targetContext = profile.target ? `\n\nActive target for this session: ${profile.target} (${profile.targetType ?? "custom"}).` : "";
214
+ const osintActiveContent = [
215
+ "# OSINT Active Session",
216
+ "",
217
+ "> This file is auto-generated by `hyperclaw osint chat` โ€” daemon mode.",
218
+ "> Delete it (or run `hyperclaw osint --reset`) to return to normal mode.",
219
+ "",
220
+ profile.systemPromptOverride ?? "",
221
+ targetContext,
222
+ "",
223
+ "## OSINT Tool Guidance",
224
+ "",
225
+ "You have full shell access via the `exec` tool. Common security tools available:",
226
+ "- **nmap** โ€” port scanning, service fingerprinting (`nmap -sV -sC <target>`)",
227
+ "- **curl** โ€” HTTP probing, header inspection, payload testing",
228
+ "- **dig / nslookup / host** โ€” DNS enumeration",
229
+ "- **whois** โ€” domain/IP registration info",
230
+ "- **dirb / gobuster / ffuf** โ€” directory/file brute-forcing",
231
+ "- **nikto** โ€” web vulnerability scanning",
232
+ "- **theHarvester** โ€” email/subdomain/name harvesting",
233
+ "- **msfconsole / msfvenom** โ€” Metasploit (pentest mode, authorized targets only)",
234
+ "- **sqlmap** โ€” SQL injection testing (authorized targets only)",
235
+ "- **subfinder / amass** โ€” subdomain enumeration",
236
+ "",
237
+ "Always check authorization before running active scanning tools.",
238
+ "Use `process` tool to manage long-running background scans."
239
+ ].join("\n");
240
+ await fs_extra.default.ensureDir(hcDir);
241
+ await fs_extra.default.writeFile(osintActivePath, osintActiveContent, "utf8");
242
+ const rawModel = opts.model || cfg?.provider?.modelId || "claude-sonnet-4-5";
243
+ const sessionKey = `osint-${opts.sessionId ?? makeSessionId()}`;
244
+ const messages = [];
245
+ let sessionExtraPrompt = "";
246
+ const sessionActiveSkills = /* @__PURE__ */ new Map();
247
+ async function rebuildOsintActive() {
248
+ const parts = [osintActiveContent];
249
+ if (sessionExtraPrompt) parts.push(`\n## Session Instructions\n${sessionExtraPrompt}`);
250
+ if (sessionActiveSkills.size > 0) {
251
+ parts.push("\n## Session Skills");
252
+ for (const [id, ctx] of sessionActiveSkills) parts.push(`\n### ${id}\n${ctx}`);
253
+ }
254
+ await fs_extra.default.writeFile(osintActivePath, parts.join("\n"), "utf8").catch(() => {});
255
+ }
256
+ const { Banner } = await Promise.resolve().then(() => require("./banner-CjTRWmks.js"));
257
+ await new Banner().showOsintBanner(true, profile, rawModel, sessionKey);
258
+ if (process.stdin.isTTY) process.stdin.resume();
259
+ const rl = readline.default.createInterface({
260
+ input: process.stdin,
261
+ output: process.stdout,
262
+ terminal: true
263
+ });
264
+ const cleanup = async () => {
265
+ await fs_extra.default.remove(osintActivePath).catch(() => {});
266
+ };
267
+ rl.on("SIGINT", async () => {
268
+ console.log(chalk.default.gray("\n\n ๐Ÿ”’ OSINT session closed.\n"));
269
+ await cleanup();
270
+ rl.close();
271
+ process.exit(0);
272
+ });
273
+ const INPUT_PROMPT = chalk.default.red(" ๐Ÿ” OSINT โ€บ ");
274
+ await new Promise((resolve) => {
275
+ rl.on("close", () => {
276
+ cleanup().finally(resolve);
277
+ });
278
+ const prompt = () => {
279
+ rl.question(INPUT_PROMPT, (input) => {
280
+ if (input === null || input === void 0) {
281
+ prompt();
282
+ return;
283
+ }
284
+ (async () => {
285
+ const text = input.trim();
286
+ if (!text) {
287
+ prompt();
288
+ return;
289
+ }
290
+ if ([
291
+ "/exit",
292
+ "/quit",
293
+ "exit",
294
+ "quit"
295
+ ].includes(text.toLowerCase())) {
296
+ console.log(chalk.default.gray("\n ๐Ÿ”’ OSINT session closed.\n"));
297
+ await cleanup();
298
+ rl.close();
299
+ process.exit(0);
300
+ }
301
+ if (text === "/help") {
302
+ printOsintHelp(profile);
303
+ prompt();
304
+ return;
305
+ }
306
+ if (text === "/mode") {
307
+ console.log(chalk.default.hex("#cc0000")(`\n โš™๏ธ Workflow: `) + chalk.default.yellow.bold(profile.mode.toUpperCase()));
308
+ if (profile.target) console.log(chalk.default.hex("#cc0000")(` ๐ŸŽฏ Target: `) + chalk.default.white.bold(profile.target));
309
+ console.log(chalk.default.green(` ๐Ÿฉธ Daemon: connected (port ${daemonPort})`));
310
+ if (sessionExtraPrompt) console.log(chalk.default.gray(` ๐Ÿ“ Extra prompt: active`));
311
+ if (sessionActiveSkills.size > 0) console.log(chalk.default.gray(` ๐Ÿงฉ Active skills: ${[...sessionActiveSkills.keys()].join(", ")}`));
312
+ console.log();
313
+ prompt();
314
+ return;
315
+ }
316
+ if (text === "/clear") {
317
+ messages.length = 0;
318
+ console.log(chalk.default.gray("\n ๐Ÿ—‘๏ธ Local history cleared. (Daemon session persists โ€” use a new session key to fully reset)\n"));
319
+ prompt();
320
+ return;
321
+ }
322
+ if (text === "/findings") {
323
+ if (messages.length === 0) console.log(chalk.default.gray("\n ๐Ÿ’พ No conversation to save yet.\n"));
324
+ else await saveFindings(messages, profile);
325
+ prompt();
326
+ return;
327
+ }
328
+ if (text.startsWith("/target ")) {
329
+ const newTarget = text.slice(8).trim();
330
+ if (newTarget) {
331
+ profile.target = newTarget;
332
+ const updated = osintActiveContent.replace(targetContext || "", `\n\nActive target for this session: ${newTarget}.`);
333
+ await fs_extra.default.writeFile(osintActivePath, updated, "utf8").catch(() => {});
334
+ console.log(chalk.default.green(`\n ๐ŸŽฏ Target updated: ${chalk.default.bold(newTarget)}\n`));
335
+ }
336
+ prompt();
337
+ return;
338
+ }
339
+ if (text === "/prompt" || text.startsWith("/prompt ")) {
340
+ const arg = text.slice(7).trim();
341
+ if (!arg) {
342
+ console.log();
343
+ if (sessionExtraPrompt) {
344
+ console.log(chalk.default.hex("#cc0000").bold(" ๐Ÿ“ Session prompt:"));
345
+ console.log(chalk.default.white(` ${sessionExtraPrompt.slice(0, 400)}${sessionExtraPrompt.length > 400 ? "โ€ฆ" : ""}`));
346
+ } else console.log(chalk.default.gray(" ๐Ÿ“ No extra prompt set. Use: /prompt <text>"));
347
+ console.log();
348
+ } else if (arg === "clear") {
349
+ sessionExtraPrompt = "";
350
+ await rebuildOsintActive();
351
+ console.log(chalk.default.green("\n ๐Ÿงน Extra prompt cleared.\n"));
352
+ } else {
353
+ sessionExtraPrompt = arg;
354
+ await rebuildOsintActive();
355
+ console.log(chalk.default.green(`\n โœ… Session prompt set: ${chalk.default.white(arg.slice(0, 60))}${arg.length > 60 ? "โ€ฆ" : ""}\n`));
356
+ }
357
+ prompt();
358
+ return;
359
+ }
360
+ if (text === "/skill" || text.startsWith("/skill ")) {
361
+ const arg = text.slice(6).trim();
362
+ const [subCmd, ...rest] = arg.split(/\s+/);
363
+ const skillId = rest.join(" ").trim();
364
+ if (!subCmd || subCmd === "list") {
365
+ console.log();
366
+ try {
367
+ const { loadSkills } = await Promise.resolve().then(() => require("./skill-loader-DVpEgYV2.js"));
368
+ const all = await loadSkills();
369
+ if (all.length === 0) console.log(chalk.default.gray(" ๐Ÿงฉ No skills installed."));
370
+ else {
371
+ console.log(chalk.default.hex("#cc0000").bold(" ๐Ÿงฉ Installed skills:"));
372
+ for (const s of all) {
373
+ const active = sessionActiveSkills.has(s.id) ? chalk.default.green(" โœ” active") : "";
374
+ console.log(` ${chalk.default.hex("#cc0000")("๐Ÿ”น")} ${chalk.default.bold(s.title || s.id)} ${chalk.default.gray(`(${s.id})`)}${active}`);
375
+ if (s.capabilities) console.log(chalk.default.gray(` ${s.capabilities}`));
376
+ }
377
+ }
378
+ } catch {
379
+ console.log(chalk.default.gray(" โš ๏ธ Could not load skills."));
380
+ }
381
+ console.log();
382
+ prompt();
383
+ return;
384
+ }
385
+ if (subCmd === "add") {
386
+ if (!skillId) {
387
+ console.log(chalk.default.gray("\n Usage: /skill add <id>\n"));
388
+ prompt();
389
+ return;
390
+ }
391
+ try {
392
+ const { loadSkills } = await Promise.resolve().then(() => require("./skill-loader-DVpEgYV2.js"));
393
+ const all = await loadSkills();
394
+ const found = all.find((s) => s.id === skillId || (s.title ?? "").toLowerCase() === skillId.toLowerCase());
395
+ if (!found) console.log(chalk.default.yellow(`\n โš ๏ธ Skill "${skillId}" not found. Use /skill list.\n`));
396
+ else {
397
+ const ctx = [
398
+ found.title ? `**${found.title}**` : found.id,
399
+ found.capabilities ?? "",
400
+ found.description ?? ""
401
+ ].filter(Boolean).join("\n");
402
+ sessionActiveSkills.set(found.id, ctx);
403
+ await rebuildOsintActive();
404
+ console.log(chalk.default.green(`\n โœ… Skill activated: ${chalk.default.bold(found.title || found.id)}\n`));
405
+ }
406
+ } catch (e) {
407
+ console.log(chalk.default.red(`\n โŒ ${e?.message}\n`));
408
+ }
409
+ prompt();
410
+ return;
411
+ }
412
+ if (subCmd === "remove") {
413
+ if (!skillId) {
414
+ console.log(chalk.default.gray("\n Usage: /skill remove <id>\n"));
415
+ prompt();
416
+ return;
417
+ }
418
+ if (sessionActiveSkills.has(skillId)) {
419
+ sessionActiveSkills.delete(skillId);
420
+ await rebuildOsintActive();
421
+ console.log(chalk.default.green(`\n โœ… Skill deactivated: ${skillId}\n`));
422
+ } else console.log(chalk.default.gray(`\n โ„น๏ธ Skill "${skillId}" not active in this session.\n`));
423
+ prompt();
424
+ return;
425
+ }
426
+ console.log(chalk.default.gray("\n Usage: /skill list | /skill add <id> | /skill remove <id>\n"));
427
+ prompt();
428
+ return;
429
+ }
430
+ messages.push({
431
+ role: "user",
432
+ content: text
433
+ });
434
+ console.log(GRAY_DIV);
435
+ console.log(chalk.default.bold.green(" ๐Ÿ’ฌ Analyst โ€บ ") + chalk.default.white(text));
436
+ console.log(GRAY_DIV);
437
+ let responseText = "";
438
+ let elapsed = 0;
439
+ let ticker;
440
+ const spinner = (0, ora.default)({
441
+ text: chalk.default.red(` ๐Ÿค” Analyzing... (${elapsed}s โ€ข Ctrl+C to stop)`),
442
+ prefixText: ""
443
+ }).start();
444
+ ticker = setInterval(() => {
445
+ elapsed++;
446
+ spinner.text = chalk.default.red(` ๐Ÿฉธ Agent working... (${elapsed}s โ€ข Ctrl+C to stop)`);
447
+ }, 1e3);
448
+ try {
449
+ responseText = await callDaemonChat(text, sessionKey, daemonPort, authToken);
450
+ if (ticker) clearInterval(ticker);
451
+ spinner.stop();
452
+ console.log(chalk.default.bold.red("\n ๐Ÿ” Agent โ€บ"));
453
+ process.stdout.write(renderMarkdown(responseText));
454
+ console.log("\n");
455
+ console.log(RED_DIV);
456
+ console.log(chalk.default.gray(` ๐Ÿฉธ Daemon mode ยท ${rawModel} ยท Session: ${sessionKey}`));
457
+ console.log(chalk.default.gray(` ๐Ÿ’ก Tip: use /findings to save this session as a report.\n`));
458
+ } catch (e) {
459
+ if (ticker) clearInterval(ticker);
460
+ spinner.stop();
461
+ const msg = e?.message || String(e);
462
+ responseText = `Error: ${msg}`;
463
+ console.log(chalk.default.red(`\n โŒ Error: ${msg}\n`));
464
+ }
465
+ if (responseText && !responseText.startsWith("Error:")) messages.push({
466
+ role: "assistant",
467
+ content: responseText
468
+ });
469
+ prompt();
470
+ })().catch((err) => {
471
+ console.error(chalk.default.red("\n Unexpected error:"), err?.message || err);
472
+ prompt();
473
+ });
474
+ });
475
+ };
476
+ prompt();
477
+ });
478
+ }
479
+ async function runOsintChatStandalone(params) {
480
+ const { profile, cfg, opts } = params;
481
+ const { getProviderCredentialAsync } = await Promise.resolve().then(() => require("./env-resolve-Dr-KfTtw.js"));
482
+ const apiKey = await getProviderCredentialAsync(cfg).catch(() => null);
483
+ const isLocal = [
484
+ "local",
485
+ "ollama",
486
+ "lmstudio"
487
+ ].includes(cfg?.provider?.providerId ?? "");
488
+ if (!apiKey && !isLocal) {
489
+ console.log(chalk.default.red("\n โŒ No API key configured. Run: hyperclaw config set-key\n"));
490
+ return;
491
+ }
492
+ const { getProvider } = await Promise.resolve().then(() => require("./providers-DrZP0NeR.js"));
493
+ const providerMeta = getProvider(cfg?.provider?.providerId ?? "");
494
+ const CUSTOM_IDS = new Set([
495
+ "groq",
496
+ "mistral",
497
+ "deepseek",
498
+ "perplexity",
499
+ "huggingface",
500
+ "ollama",
501
+ "lmstudio",
502
+ "local",
503
+ "xai",
504
+ "openai",
505
+ "google",
506
+ "minimax",
507
+ "moonshot",
508
+ "qwen",
509
+ "zai",
510
+ "litellm",
511
+ "cloudflare",
512
+ "copilot",
513
+ "vercel-ai",
514
+ "opencode-zen"
515
+ ]);
516
+ const isAnthropicVariant = [
517
+ "anthropic",
518
+ "anthropic-oauth",
519
+ "anthropic-setup-token"
520
+ ].includes(cfg?.provider?.providerId ?? "");
521
+ const provider = isAnthropicVariant ? "anthropic" : cfg?.provider?.providerId === "custom" || isLocal || CUSTOM_IDS.has(cfg?.provider?.providerId ?? "") ? "custom" : "openrouter";
522
+ const rawModel = opts.model || cfg?.provider?.modelId || "claude-sonnet-4-5";
523
+ const model = rawModel.startsWith("ollama/") ? rawModel.slice(7) : rawModel;
524
+ const resolvedBaseUrl = cfg?.provider?.baseUrl || providerMeta?.baseUrl || (isLocal ? "http://localhost:11434/v1" : void 0);
525
+ const tools = await require_engine.resolveTools({
526
+ config: cfg,
527
+ source: "cli",
528
+ elevated: true,
529
+ daemonMode: false
530
+ });
531
+ const skillsCtx = await require_engine.loadSkillsContext();
532
+ const targetContext = profile.target ? `\n\nActive target for this session: ${profile.target} (${profile.targetType ?? "custom"}).` : "";
533
+ const baseSystemPrompt = (profile.systemPromptOverride ?? "") + targetContext + (skillsCtx ? `\n\n${skillsCtx}` : "");
534
+ let sessionExtraPrompt = "";
535
+ const sessionActiveSkills = /* @__PURE__ */ new Map();
536
+ function buildStandaloneSystem() {
537
+ let sys = baseSystemPrompt;
538
+ if (sessionExtraPrompt) sys += `\n\n## Session Instructions\n${sessionExtraPrompt}`;
539
+ if (sessionActiveSkills.size > 0) {
540
+ sys += "\n\n## Session Skills";
541
+ for (const [id, ctx] of sessionActiveSkills) sys += `\n\n### ${id}\n${ctx}`;
542
+ }
543
+ return sys;
544
+ }
545
+ const engineOpts = {
546
+ model,
547
+ apiKey,
548
+ provider,
549
+ system: buildStandaloneSystem(),
550
+ tools,
551
+ maxTokens: 4096,
552
+ onToken: () => {},
553
+ ...provider === "custom" ? { baseUrl: resolvedBaseUrl || "" } : {}
554
+ };
555
+ const sessionId = opts.sessionId ?? makeSessionId();
556
+ const messages = [];
557
+ const { Banner } = await Promise.resolve().then(() => require("./banner-CjTRWmks.js"));
558
+ await new Banner().showOsintBanner(false, profile, rawModel, sessionId);
559
+ console.log(chalk.default.gray(" ๐Ÿ’ก Tip: start the daemon for full shell/tool access:"));
560
+ console.log(chalk.default.gray(" hyperclaw daemon start\n"));
561
+ if (process.stdin.isTTY) process.stdin.resume();
562
+ const rl = readline.default.createInterface({
563
+ input: process.stdin,
564
+ output: process.stdout,
565
+ terminal: true
566
+ });
567
+ rl.on("SIGINT", () => {
568
+ console.log(chalk.default.gray("\n\n ๐Ÿ”’ OSINT session closed.\n"));
569
+ rl.close();
570
+ process.exit(0);
571
+ });
572
+ const INPUT_PROMPT = chalk.default.red(" ๐Ÿ” OSINT โ€บ ");
573
+ await new Promise((resolve) => {
574
+ rl.on("close", resolve);
575
+ const prompt = () => {
576
+ rl.question(INPUT_PROMPT, (input) => {
577
+ if (input === null || input === void 0) {
578
+ prompt();
579
+ return;
580
+ }
581
+ (async () => {
582
+ const text = input.trim();
583
+ if (!text) {
584
+ prompt();
585
+ return;
586
+ }
587
+ if ([
588
+ "/exit",
589
+ "/quit",
590
+ "exit",
591
+ "quit"
592
+ ].includes(text.toLowerCase())) {
593
+ console.log(chalk.default.gray("\n ๐Ÿ”’ OSINT session closed.\n"));
594
+ rl.close();
595
+ process.exit(0);
596
+ }
597
+ if (text === "/help") {
598
+ printOsintHelp(profile);
599
+ prompt();
600
+ return;
601
+ }
602
+ if (text === "/mode") {
603
+ console.log(chalk.default.gray(`\n Workflow: `) + chalk.default.yellow.bold(profile.mode));
604
+ if (profile.target) console.log(chalk.default.gray(` ๐ŸŽฏ Target: `) + chalk.default.white(profile.target));
605
+ console.log(chalk.default.gray(` โšก Standalone (no daemon)`));
606
+ console.log();
607
+ prompt();
608
+ return;
609
+ }
610
+ if (text === "/clear") {
611
+ messages.length = 0;
612
+ console.log(chalk.default.gray("\n ๐Ÿ—‘๏ธ Conversation cleared.\n"));
613
+ prompt();
614
+ return;
615
+ }
616
+ if (text === "/findings") {
617
+ if (messages.length === 0) console.log(chalk.default.gray("\n ๐Ÿ’พ No conversation to save yet.\n"));
618
+ else await saveFindings(messages, profile);
619
+ prompt();
620
+ return;
621
+ }
622
+ if (text.startsWith("/target ")) {
623
+ const newTarget = text.slice(8).trim();
624
+ if (newTarget) {
625
+ profile.target = newTarget;
626
+ engineOpts.system = buildStandaloneSystem().replace(targetContext, `\n\nActive target for this session: ${newTarget}.`);
627
+ console.log(chalk.default.green(`\n ๐ŸŽฏ Target updated: ${chalk.default.bold(newTarget)}\n`));
628
+ }
629
+ prompt();
630
+ return;
631
+ }
632
+ if (text === "/prompt" || text.startsWith("/prompt ")) {
633
+ const arg = text.slice(7).trim();
634
+ if (!arg) {
635
+ console.log();
636
+ if (sessionExtraPrompt) {
637
+ console.log(chalk.default.red.bold(" ๐Ÿ“ Session prompt:"));
638
+ console.log(chalk.default.white(` ${sessionExtraPrompt.slice(0, 400)}${sessionExtraPrompt.length > 400 ? "โ€ฆ" : ""}`));
639
+ } else console.log(chalk.default.gray(" ๐Ÿ“ No extra prompt set. Use: /prompt <text>"));
640
+ console.log();
641
+ } else if (arg === "clear") {
642
+ sessionExtraPrompt = "";
643
+ engineOpts.system = buildStandaloneSystem();
644
+ console.log(chalk.default.green("\n ๐Ÿงน Extra prompt cleared.\n"));
645
+ } else {
646
+ sessionExtraPrompt = arg;
647
+ engineOpts.system = buildStandaloneSystem();
648
+ console.log(chalk.default.green(`\n โœ… Session prompt set: ${chalk.default.white(arg.slice(0, 60))}${arg.length > 60 ? "โ€ฆ" : ""}\n`));
649
+ }
650
+ prompt();
651
+ return;
652
+ }
653
+ if (text === "/skill" || text.startsWith("/skill ")) {
654
+ const arg = text.slice(6).trim();
655
+ const [subCmd, ...rest] = arg.split(/\s+/);
656
+ const skillId = rest.join(" ").trim();
657
+ if (!subCmd || subCmd === "list") {
658
+ console.log();
659
+ try {
660
+ const { loadSkills } = await Promise.resolve().then(() => require("./skill-loader-DVpEgYV2.js"));
661
+ const all = await loadSkills();
662
+ if (all.length === 0) console.log(chalk.default.gray(" ๐Ÿงฉ No skills installed."));
663
+ else {
664
+ console.log(chalk.default.red.bold(" ๐Ÿงฉ Installed skills:"));
665
+ for (const s of all) {
666
+ const active = sessionActiveSkills.has(s.id) ? chalk.default.green(" โœ” active") : "";
667
+ console.log(` ${chalk.default.red("๐Ÿ”น")} ${chalk.default.bold(s.title || s.id)} ${chalk.default.gray(`(${s.id})`)}${active}`);
668
+ if (s.capabilities) console.log(chalk.default.gray(` ${s.capabilities}`));
669
+ }
670
+ }
671
+ } catch {
672
+ console.log(chalk.default.gray(" โš ๏ธ Could not load skills."));
673
+ }
674
+ console.log();
675
+ prompt();
676
+ return;
677
+ }
678
+ if (subCmd === "add") {
679
+ if (!skillId) {
680
+ console.log(chalk.default.gray("\n Usage: /skill add <id>\n"));
681
+ prompt();
682
+ return;
683
+ }
684
+ try {
685
+ const { loadSkills } = await Promise.resolve().then(() => require("./skill-loader-DVpEgYV2.js"));
686
+ const all = await loadSkills();
687
+ const found = all.find((s) => s.id === skillId || (s.title ?? "").toLowerCase() === skillId.toLowerCase());
688
+ if (!found) console.log(chalk.default.yellow(`\n โš ๏ธ Skill "${skillId}" not found. Use /skill list.\n`));
689
+ else {
690
+ const ctx = [
691
+ found.title ? `**${found.title}**` : found.id,
692
+ found.capabilities ?? "",
693
+ found.description ?? ""
694
+ ].filter(Boolean).join("\n");
695
+ sessionActiveSkills.set(found.id, ctx);
696
+ engineOpts.system = buildStandaloneSystem();
697
+ console.log(chalk.default.green(`\n โœ… Skill activated: ${chalk.default.bold(found.title || found.id)}\n`));
698
+ }
699
+ } catch (e) {
700
+ console.log(chalk.default.red(`\n โŒ ${e?.message}\n`));
701
+ }
702
+ prompt();
703
+ return;
704
+ }
705
+ if (subCmd === "remove") {
706
+ if (!skillId) {
707
+ console.log(chalk.default.gray("\n Usage: /skill remove <id>\n"));
708
+ prompt();
709
+ return;
710
+ }
711
+ if (sessionActiveSkills.has(skillId)) {
712
+ sessionActiveSkills.delete(skillId);
713
+ engineOpts.system = buildStandaloneSystem();
714
+ console.log(chalk.default.green(`\n โœ… Skill deactivated: ${skillId}\n`));
715
+ } else console.log(chalk.default.gray(`\n โ„น๏ธ Skill "${skillId}" not active in this session.\n`));
716
+ prompt();
717
+ return;
718
+ }
719
+ console.log(chalk.default.gray("\n Usage: /skill list | /skill add <id> | /skill remove <id>\n"));
720
+ prompt();
721
+ return;
722
+ }
723
+ messages.push({
724
+ role: "user",
725
+ content: text
726
+ });
727
+ console.log(GRAY_DIV);
728
+ console.log(chalk.default.bold.green(" ๐Ÿ’ฌ Analyst โ€บ ") + chalk.default.white(text));
729
+ console.log(GRAY_DIV);
730
+ let responseText = "";
731
+ let elapsed = 0;
732
+ let ticker;
733
+ const spinner = (0, ora.default)({
734
+ text: chalk.default.red(` ๐Ÿค” Analyzing... (${elapsed}s โ€ข Ctrl+C to stop)`),
735
+ prefixText: ""
736
+ }).start();
737
+ ticker = setInterval(() => {
738
+ elapsed++;
739
+ spinner.text = chalk.default.red(` ๐Ÿค” Analyzing... (${elapsed}s โ€ข Ctrl+C to stop)`);
740
+ }, 1e3);
741
+ try {
742
+ const engine = new require_inference.InferenceEngine({
743
+ ...engineOpts,
744
+ onToken: () => {
745
+ if (spinner.isSpinning) spinner.text = chalk.default.red(` ๐Ÿ“ก Gathering intel... (${elapsed}s โ€ข Ctrl+C to stop)`);
746
+ },
747
+ onToolCall: (name) => {
748
+ spinner.stop();
749
+ console.log(chalk.default.red(`\n ๐Ÿ”ง ${chalk.default.bold(name)}`));
750
+ spinner.start(chalk.default.red(` โš™๏ธ Running tool... (${elapsed}s)`));
751
+ }
752
+ });
753
+ const result = await engine.run(messages);
754
+ responseText = result.text || "";
755
+ if (ticker) clearInterval(ticker);
756
+ spinner.stop();
757
+ console.log(chalk.default.bold.red("\n ๐Ÿ” Agent โ€บ"));
758
+ if (responseText) process.stdout.write(renderMarkdown(responseText));
759
+ else process.stdout.write(chalk.default.gray(" (empty response)"));
760
+ console.log("\n");
761
+ console.log(RED_DIV);
762
+ if (result.usage) {
763
+ console.log(chalk.default.gray(` ๐Ÿ“Š Tokens in: ${result.usage.input} out: ${result.usage.output} ยท ${rawModel}`));
764
+ console.log(chalk.default.gray(` ๐Ÿ’ก Tip: use /findings to save this session as a report.\n`));
765
+ } else console.log();
766
+ } catch (e) {
767
+ if (ticker) clearInterval(ticker);
768
+ spinner.stop();
769
+ const msg = e?.message || String(e);
770
+ responseText = `Error: ${msg}`;
771
+ console.log(chalk.default.red(`\n โŒ Error: ${msg}\n`));
772
+ }
773
+ if (responseText && !responseText.startsWith("Error:")) messages.push({
774
+ role: "assistant",
775
+ content: responseText
776
+ });
777
+ prompt();
778
+ })().catch((err) => {
779
+ console.error(chalk.default.red("\n Unexpected error:"), err?.message || err);
780
+ prompt();
781
+ });
782
+ });
783
+ };
784
+ prompt();
785
+ });
786
+ }
787
+
788
+ //#endregion
789
+ exports.runOsintChat = runOsintChat;