remoteclaw 0.1.0-next.049f396 → 0.1.0-next.05abcca

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 (1199) hide show
  1. package/README.md +11 -9
  2. package/dist/accounts-79XhjwAj.js +32 -0
  3. package/dist/accounts-B1M3fOxL.js +272 -0
  4. package/dist/accounts-BwbvnKsW.js +205 -0
  5. package/dist/accounts-CIVjmTg9.js +270 -0
  6. package/dist/accounts-D1awQXKu.js +36 -0
  7. package/dist/accounts-DHkGVGUR.js +36 -0
  8. package/dist/accounts-P7cmIXUM.js +206 -0
  9. package/dist/accounts-XFgBY644.js +47 -0
  10. package/dist/accounts-_ZuNC5bz.js +47 -0
  11. package/dist/ack-reactions-BGJ9Vigf.js +621 -0
  12. package/dist/ack-reactions-Diu9O24z.js +621 -0
  13. package/dist/acp-cli-BwZ-va2P.js +1316 -0
  14. package/dist/acp-cli-eVKByz-j.js +1311 -0
  15. package/dist/active-listener--jrUO-8L.js +37 -0
  16. package/dist/active-listener-C7SyMcNY.js +37 -0
  17. package/dist/agent-BAxK2KQW.js +688 -0
  18. package/dist/agent-Dd5Yfhmq.js +687 -0
  19. package/dist/agent-helpers-5F0tdxud.js +400 -0
  20. package/dist/agent-helpers-Bs2nBXeI.js +400 -0
  21. package/dist/agent-scope-BA1HP4K6.js +114 -0
  22. package/dist/agent-scope-CAQLm3LP.js +116 -0
  23. package/dist/agents-D--9DD91.js +754 -0
  24. package/dist/agents.config-CmyzLYqW.js +116 -0
  25. package/dist/agents.config-DerBqRzk.js +116 -0
  26. package/dist/ansi-DtaiOnt1.js +107 -0
  27. package/dist/audio-ClIuKwkl.js +43 -0
  28. package/dist/audio-DqlIYYTb.js +43 -0
  29. package/dist/audit-Cn0cNCE4.js +3114 -0
  30. package/dist/audit-DXY4NHBC.js +3114 -0
  31. package/dist/auth-B-QK8JhI.js +315 -0
  32. package/dist/auth-C1zx1O24.js +314 -0
  33. package/dist/auth-DDmNYVMW.js +448 -0
  34. package/dist/auth-DH1wEw0w.js +448 -0
  35. package/dist/banner-CBWZhANO.js +294 -0
  36. package/dist/binaries-CYwLdubd.js +13 -0
  37. package/dist/bindings-DFAFatwT.js +69 -0
  38. package/dist/bindings-GUKIzFCp.js +69 -0
  39. package/dist/bonjour-discovery-AQMJqY4V.js +378 -0
  40. package/dist/bonjour-discovery-BLcPWHFJ.js +378 -0
  41. package/dist/boot/handler.js +41 -84
  42. package/dist/browser-cli-8Dv5ogFT.js +1690 -0
  43. package/dist/browser-cli-wNLo8SOy.js +1694 -0
  44. package/dist/build-info.json +3 -3
  45. package/dist/call-BTHzKFbN.js +518 -0
  46. package/dist/call-D_NchaCs.js +517 -0
  47. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  48. package/dist/catalog-DgpN5jxU.js +186 -0
  49. package/dist/catalog-k056Nh93.js +186 -0
  50. package/dist/channel-account-context-BHIy71Yh.js +133 -0
  51. package/dist/channel-account-context-DXU_-EkJ.js +133 -0
  52. package/dist/channel-activity-BatlvP_U.js +292 -0
  53. package/dist/channel-activity-BhT7NQ_v.js +94 -0
  54. package/dist/channel-activity-CvjEwpJz.js +94 -0
  55. package/dist/channel-options-BCccA2WC.js +32 -0
  56. package/dist/channel-options-VPR_pNyS.js +33 -0
  57. package/dist/channel-selection-AH6_y6RS.js +51 -0
  58. package/dist/channel-selection-ovohyJQZ.js +51 -0
  59. package/dist/channel-web-APDaQ_wp.js +2134 -0
  60. package/dist/channel-web-BW_YuNlT.js +2132 -0
  61. package/dist/channels-cli-DVsZyaU5.js +1436 -0
  62. package/dist/channels-cli-ubrg5vcL.js +1440 -0
  63. package/dist/channels-status-issues-BbYNzwLp.js +18 -0
  64. package/dist/channels-status-issues-DRybAijg.js +18 -0
  65. package/dist/chat-envelope-AJFUAuBM.js +248 -0
  66. package/dist/chat-envelope-BrfcPlDM.js +248 -0
  67. package/dist/chrome-Bv2UtAMQ.js +1732 -0
  68. package/dist/chrome-C6Vc_7su.js +1733 -0
  69. package/dist/chunk-BAMyFYtF.js +341 -0
  70. package/dist/chunk-BzVoFUZL.js +341 -0
  71. package/dist/clack-prompter-C6mBTOzE.js +122 -0
  72. package/dist/clack-prompter-DKcYqv3o.js +121 -0
  73. package/dist/cleanup-utils-Cb-leJcy.js +94 -0
  74. package/dist/cli/daemon-cli.js +1 -1
  75. package/dist/cli-Cs1n6-eD.js +135 -0
  76. package/dist/cli-Di3p1tLN.js +131 -0
  77. package/dist/client-B6h7bgbF.js +2311 -0
  78. package/dist/client-CMtdm9Ii.js +2311 -0
  79. package/dist/clipboard-A06eV_5C.js +31 -0
  80. package/dist/clipboard-DQBl3coj.js +31 -0
  81. package/dist/command-format-BiiNHkWG.js +18 -0
  82. package/dist/command-format-Dntg_tnC.js +32 -0
  83. package/dist/command-logger/handler.js +1 -1
  84. package/dist/command-registry-CCAvdWh2.js +215 -0
  85. package/dist/commands-D93TXYhv.js +41 -0
  86. package/dist/commands-UD7V7QC9.js +41 -0
  87. package/dist/commands-registry-CCbTtSSK.js +891 -0
  88. package/dist/commands-registry-De8JhZLG.js +890 -0
  89. package/dist/common-D4fL3S2m.js +156 -0
  90. package/dist/common-DXNisGxw.js +156 -0
  91. package/dist/completion-cli-CLo-r-UP.js +452 -0
  92. package/dist/completion-cli-D4ajG3yt.js +452 -0
  93. package/dist/config-BTH7fB_v.js +3345 -0
  94. package/dist/config-DwuBnd6D.js +3347 -0
  95. package/dist/config-cli-D0D1LSNt.js +243 -0
  96. package/dist/config-cli-tWsFNKQM.js +247 -0
  97. package/dist/config-guard-BcT7soTj.js +92 -0
  98. package/dist/config-guard-Bqak3bDc.js +75 -0
  99. package/dist/config-validation-CHEjSJ5K.js +18 -0
  100. package/dist/config-validation-CvgqLhyG.js +18 -0
  101. package/dist/configure-CK_0tFJG.js +889 -0
  102. package/dist/configure-D0z0kE-B.js +891 -0
  103. package/dist/constants-BBVTjb1j.js +75 -0
  104. package/dist/constants-PMRtHBHU.js +75 -0
  105. package/dist/control-auth-DrGYtMJM.js +397 -0
  106. package/dist/control-auth-KY4Qdr2I.js +397 -0
  107. package/dist/control-ui/assets/index-DdiU_ccM.css +1 -0
  108. package/dist/control-ui/assets/index-kVUYi64u.js +7723 -0
  109. package/dist/control-ui/assets/index-kVUYi64u.js.map +1 -0
  110. package/dist/control-ui/index.html +2 -2
  111. package/dist/control-ui-assets-DO1L6M0S.js +186 -0
  112. package/dist/control-ui-assets-S_TLo6Fs.js +186 -0
  113. package/dist/conversation-label-CDH4rKMG.js +36 -0
  114. package/dist/conversation-label-CMOfgCVl.js +36 -0
  115. package/dist/cron-cli-C7h_hLHu.js +495 -0
  116. package/dist/cron-cli-DTNg0Uvl.js +499 -0
  117. package/dist/daemon-cli-BlJS9zWM.js +737 -0
  118. package/dist/daemon-cli-Cfc1yszp.js +735 -0
  119. package/dist/daemon-cli.js +174 -1167
  120. package/dist/daemon-install-BbBLuLWg.js +60 -0
  121. package/dist/daemon-install-WEBvqVOj.js +56 -0
  122. package/dist/daemon-install-helpers-BVtPC2TK.js +504 -0
  123. package/dist/daemon-install-helpers-DVr51zvE.js +504 -0
  124. package/dist/deliver-EB272zWh.js +481 -0
  125. package/dist/deliver-iGD_woru.js +481 -0
  126. package/dist/delivery-queue-BDvalA10.js +244 -0
  127. package/dist/delivery-queue-BimvYz5E.js +244 -0
  128. package/dist/devices-cli-BXCOsNFc.js +323 -0
  129. package/dist/devices-cli-CHGdYfrz.js +319 -0
  130. package/dist/diagnostics-BzzhTQzK.js +35 -0
  131. package/dist/diagnostics-DILtxtcE.js +35 -0
  132. package/dist/directory-cli-COS40yI9.js +221 -0
  133. package/dist/directory-cli-Cb5j1JTC.js +225 -0
  134. package/dist/dispatcher-BUqxh_mA.js +174 -0
  135. package/dist/dispatcher-By-KZRWZ.js +173 -0
  136. package/dist/dm-policy-shared-BCp9_z3w.js +22 -0
  137. package/dist/dm-policy-shared-DgeKqjOu.js +22 -0
  138. package/dist/dns-cli-B8yyXB2N.js +203 -0
  139. package/dist/dns-cli-DAkTk-gM.js +199 -0
  140. package/dist/dock-B0bIIDS3.js +906 -0
  141. package/dist/dock-C3PzQ6CS.js +907 -0
  142. package/dist/doctor-completion-BXGEqLhU.js +92 -0
  143. package/dist/doctor-completion-D_mNzioP.js +92 -0
  144. package/dist/doctor-config-flow-BDDsR2J1.js +978 -0
  145. package/dist/doctor-config-flow-CwFFRUic.js +979 -0
  146. package/dist/enable-C3I9dWel.js +59 -0
  147. package/dist/enable-DnwKeWnR.js +59 -0
  148. package/dist/entry.js +75 -21
  149. package/dist/env-DyyqmxSM.js +60 -0
  150. package/dist/env-vars-CD2_baIP.js +43 -0
  151. package/dist/env-vars-a7S70ba7.js +43 -0
  152. package/dist/errors-0dfGxeYQ.js +35 -0
  153. package/dist/errors-C1kDByVU.js +35 -0
  154. package/dist/exec-CAk1dxq_.js +164 -0
  155. package/dist/exec-epNpA1aU.js +164 -0
  156. package/dist/export-html/template.css +0 -36
  157. package/dist/export-html/template.js +1 -32
  158. package/dist/extensionAPI.js +1765 -1590
  159. package/dist/fetch-BMQq41sB.js +281 -0
  160. package/dist/fetch-Cky99wYB.js +281 -0
  161. package/dist/fetch-D3tw4B4n.js +67 -0
  162. package/dist/fetch-DTsU2XnC.js +67 -0
  163. package/dist/fetch-Dgm9ZHFm.js +67 -0
  164. package/dist/file-lock-DWH0TfVu.js +107 -0
  165. package/dist/file-lock-DXW9h9ek.js +107 -0
  166. package/dist/fs-safe-BjSd07M4.js +115 -0
  167. package/dist/fs-safe-aWIhCWlb.js +125 -0
  168. package/dist/gateway-cli-C4y4H61g.js +24546 -0
  169. package/dist/gateway-cli-CtFr42NV.js +24550 -0
  170. package/dist/gateway-rpc-B92CH0D3.js +28 -0
  171. package/dist/gateway-rpc-DZNlWapO.js +28 -0
  172. package/dist/gmail-setup-utils-CKyh29_R.js +422 -0
  173. package/dist/gmail-setup-utils-DquflkMR.js +423 -0
  174. package/dist/health-BYl7T-4m.js +1417 -0
  175. package/dist/health-DdviISKg.js +1414 -0
  176. package/dist/health-format-BE5TK5bs.js +28 -0
  177. package/dist/heartbeat-visibility-BO3iRpB6.js +125 -0
  178. package/dist/heartbeat-visibility-Cwp4TrTv.js +125 -0
  179. package/dist/help-format-D3JhWp1E.js +17 -0
  180. package/dist/helpers-DAEoFkbn.js +10 -0
  181. package/dist/helpers-ndPQWl6m.js +10 -0
  182. package/dist/hook-runner-global-C1thol1d.js +527 -0
  183. package/dist/hooks-cli-BKS9uZ0H.js +1221 -0
  184. package/dist/hooks-cli-FLWcCr9q.js +1217 -0
  185. package/dist/host-env-security-BGibnCbS.js +106 -0
  186. package/dist/host-env-security-axRnIi8d.js +106 -0
  187. package/dist/image-ops-CX41n0v5.js +354 -0
  188. package/dist/image-ops-DSL3eFfQ.js +354 -0
  189. package/dist/import-BSFgt760.js +604 -0
  190. package/dist/import-Da1CHJJg.js +606 -0
  191. package/dist/inbound-context-BLy-G2Eq.js +68 -0
  192. package/dist/inbound-context-a5bzQvRt.js +68 -0
  193. package/dist/index.js +137 -108
  194. package/dist/inspect-BEpFbi0c.js +286 -0
  195. package/dist/inspect-BeNNpWna.js +286 -0
  196. package/dist/installs-CH7Qq_m_.js +319 -0
  197. package/dist/installs-CcM8H2YA.js +319 -0
  198. package/dist/ipv4-DNo9AFDu.js +46 -0
  199. package/dist/ipv4-VfoVR5uR.js +46 -0
  200. package/dist/ir-BPwP8hIc.js +972 -0
  201. package/dist/json-files-BI20PLIm.js +46 -0
  202. package/dist/lifecycle-core-5Zxqwa6V.js +476 -0
  203. package/dist/lifecycle-core-C1bGeLby.js +474 -0
  204. package/dist/links-CtGBIrG8.js +15 -0
  205. package/dist/loader-BoP3JA-r.js +22411 -0
  206. package/dist/loader-DXbpue-L.js +22414 -0
  207. package/dist/logger-ASsO5Nz-.js +49 -0
  208. package/dist/logging-Cd9y2AdQ.js +20 -0
  209. package/dist/logging-DRwtiLIS.js +1 -0
  210. package/dist/logging-fywhKCmE.js +1 -0
  211. package/dist/login-B2UXzgaB.js +61 -0
  212. package/dist/login-BEFL3xY9.js +62 -0
  213. package/dist/login-qr-C7wAz2fe.js +329 -0
  214. package/dist/login-qr-DWpUP1Ud.js +325 -0
  215. package/dist/logs-cli-CAcd-pXA.js +240 -0
  216. package/dist/logs-cli-D7Bzarht.js +236 -0
  217. package/dist/markdown-tables-BBNUZp4n.js +29 -0
  218. package/dist/markdown-tables-NgPcfXoF.js +29 -0
  219. package/dist/media-4-qOIjO-.js +971 -0
  220. package/dist/media-DTwJhAbE.js +9481 -0
  221. package/dist/message-action-names-BsNTjuBE.js +2520 -0
  222. package/dist/message-action-names-ocKcq8_3.js +2520 -0
  223. package/dist/message-channel-CtcVHawF.js +91 -0
  224. package/dist/message-channel-tuc9CdEw.js +91 -0
  225. package/dist/mime-CAqaK3kp.js +146 -0
  226. package/dist/mime-ViuhRuMM.js +146 -0
  227. package/dist/net-DSkFMHJ8.js +225 -0
  228. package/dist/net-DTqfFYzt.js +225 -0
  229. package/dist/node-cli-BeXU67eQ.js +1458 -0
  230. package/dist/node-cli-i2aCtnmM.js +1462 -0
  231. package/dist/node-service-RyMlWp8N.js +67 -0
  232. package/dist/node-service-TL9b6Qfz.js +67 -0
  233. package/dist/nodes-cli-CtqnXBMD.js +1346 -0
  234. package/dist/nodes-cli-DgQU3LrG.js +1350 -0
  235. package/dist/nodes-screen-B7HJugJ0.js +250 -0
  236. package/dist/nodes-screen-nCRd71Mk.js +250 -0
  237. package/dist/note-B6142LyJ.js +92 -0
  238. package/dist/note-D-EI0czq.js +92 -0
  239. package/dist/npm-registry-spec-PPyRXSpx.js +786 -0
  240. package/dist/npm-registry-spec-uUmDWe6v.js +786 -0
  241. package/dist/npm-resolution-BC1LqCm2.js +86 -0
  242. package/dist/npm-resolution-DhlhUmRF.js +86 -0
  243. package/dist/onboard-CGpC2ecw.js +647 -0
  244. package/dist/onboard-auth-cNtb3FTP.js +211 -0
  245. package/dist/onboard-auth-gwz-0mZ6.js +207 -0
  246. package/dist/onboard-channels-CXjJYzHC.js +2548 -0
  247. package/dist/onboard-channels-vtaIxYml.js +2549 -0
  248. package/dist/onboard-config-DOmXYEvJ.js +39 -0
  249. package/dist/onboard-config-JmR21VYa.js +39 -0
  250. package/dist/onboard-helpers-8afRV_Tm.js +364 -0
  251. package/dist/onboard-helpers-DTRrJLj-.js +363 -0
  252. package/dist/onboard-jLzfwoPx.js +649 -0
  253. package/dist/onboard-remote-CFkvVAYg.js +127 -0
  254. package/dist/onboard-remote-JfBnmK70.js +127 -0
  255. package/dist/onboarding-Dt0LKvZn.js +586 -0
  256. package/dist/onboarding-gMKlA2bP.js +588 -0
  257. package/dist/onboarding.finalize-BDML6Jx7.js +403 -0
  258. package/dist/onboarding.finalize-D850VgMA.js +405 -0
  259. package/dist/onboarding.gateway-config-DolBTXWT.js +196 -0
  260. package/dist/onboarding.gateway-config-rJkIamlG.js +202 -0
  261. package/dist/outbound-CPMaDtgC.js +220 -0
  262. package/dist/outbound-CYSuCMiW.js +221 -0
  263. package/dist/outbound-attachment-Ci02LXoq.js +18 -0
  264. package/dist/outbound-attachment-CqZ7Qc_o.js +18 -0
  265. package/dist/outbound-attachment-CuqWdsdV.js +18 -0
  266. package/dist/pairing-cli-B9JKvvST.js +126 -0
  267. package/dist/pairing-cli-C4HrfIHe.js +130 -0
  268. package/dist/pairing-labels-CBmGQ31P.js +9 -0
  269. package/dist/pairing-labels-D0xwC7Xb.js +9 -0
  270. package/dist/pairing-store-BoF0g-iN.js +459 -0
  271. package/dist/pairing-store-CseXj-5p.js +460 -0
  272. package/dist/path-env-CPZbb7me.js +89 -0
  273. package/dist/path-env-GTM4HXCN.js +89 -0
  274. package/dist/path-safety-BFE0XmGC.js +14 -0
  275. package/dist/path-safety-BJ8ge6Ho.js +14 -0
  276. package/dist/paths-DHuXVC00.js +229 -0
  277. package/dist/plugin-auto-enable-B_9J1XED.js +302 -0
  278. package/dist/plugin-auto-enable-DghjlFCL.js +301 -0
  279. package/dist/plugin-registry-68h2T8vi.js +33 -0
  280. package/dist/plugin-registry-BitdVPb4.js +33 -0
  281. package/dist/plugin-sdk/agents/agent-helpers.d.ts +0 -1
  282. package/dist/plugin-sdk/agents/agent-scope.d.ts +11 -0
  283. package/dist/plugin-sdk/agents/agent-types.d.ts +1 -6
  284. package/dist/plugin-sdk/agents/agent-utils.d.ts +0 -14
  285. package/dist/plugin-sdk/agents/provider-utils.d.ts +0 -1
  286. package/dist/plugin-sdk/agents/subagent-registry.store.d.ts +0 -1
  287. package/dist/plugin-sdk/agents/subagent-spawn.d.ts +0 -1
  288. package/dist/plugin-sdk/agents/tools/sessions-helpers.d.ts +0 -1
  289. package/dist/plugin-sdk/auth/constants.d.ts +15 -0
  290. package/dist/plugin-sdk/auth/display.d.ts +7 -0
  291. package/dist/plugin-sdk/auth/doctor.d.ts +8 -0
  292. package/dist/plugin-sdk/auth/env-injection.d.ts +38 -0
  293. package/dist/plugin-sdk/auth/index.d.ts +10 -0
  294. package/dist/plugin-sdk/auth/oauth.d.ts +13 -0
  295. package/dist/plugin-sdk/auth/order.d.ts +8 -0
  296. package/dist/plugin-sdk/auth/paths.d.ts +3 -0
  297. package/dist/plugin-sdk/auth/profiles.d.ts +11 -0
  298. package/dist/plugin-sdk/auth/provider-auth.d.ts +32 -0
  299. package/dist/plugin-sdk/auth/store.d.ts +7 -0
  300. package/dist/plugin-sdk/auth/types.d.ts +45 -0
  301. package/dist/plugin-sdk/auth/usage.d.ts +80 -0
  302. package/dist/plugin-sdk/auto-reply/reply/agent-runner-execution.d.ts +0 -1
  303. package/dist/plugin-sdk/auto-reply/reply/agent-runner-utils.d.ts +3 -36
  304. package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +1 -7
  305. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/shared.d.ts +1 -1
  306. package/dist/plugin-sdk/auto-reply/reply/commands-types.d.ts +1 -13
  307. package/dist/plugin-sdk/auto-reply/reply/directive-handling.levels.d.ts +1 -10
  308. package/dist/plugin-sdk/auto-reply/reply/directive-handling.params.d.ts +1 -11
  309. package/dist/plugin-sdk/auto-reply/reply/directive-handling.parse.d.ts +1 -29
  310. package/dist/plugin-sdk/auto-reply/reply/directive-handling.persist.d.ts +0 -3
  311. package/dist/plugin-sdk/auto-reply/reply/directive-handling.shared.d.ts +0 -25
  312. package/dist/plugin-sdk/auto-reply/reply/directives.d.ts +3 -42
  313. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives-apply.d.ts +0 -9
  314. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives-utils.d.ts +0 -1
  315. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +1 -20
  316. package/dist/plugin-sdk/auto-reply/reply/get-reply-inline-actions.d.ts +1 -12
  317. package/dist/plugin-sdk/auto-reply/reply/get-reply-run.d.ts +1 -15
  318. package/dist/plugin-sdk/auto-reply/reply/queue/types.d.ts +1 -17
  319. package/dist/plugin-sdk/auto-reply/reply/response-prefix-template.d.ts +4 -6
  320. package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +0 -7
  321. package/dist/plugin-sdk/auto-reply/reply/session-updates.d.ts +0 -10
  322. package/dist/plugin-sdk/auto-reply/reply.d.ts +1 -1
  323. package/dist/plugin-sdk/auto-reply/status.d.ts +3 -12
  324. package/dist/plugin-sdk/auto-reply/templating.d.ts +0 -4
  325. package/dist/plugin-sdk/auto-reply/thinking.d.ts +0 -15
  326. package/dist/plugin-sdk/auto-reply/types.d.ts +1 -2
  327. package/dist/plugin-sdk/channels/dock.d.ts +1 -2
  328. package/dist/plugin-sdk/channels/plugins/types.adapters.d.ts +0 -6
  329. package/dist/plugin-sdk/channels/plugins/types.core.d.ts +1 -0
  330. package/dist/plugin-sdk/channels/plugins/types.d.ts +1 -1
  331. package/dist/plugin-sdk/channels/plugins/types.plugin.d.ts +1 -2
  332. package/dist/plugin-sdk/channels/voice-credentials.d.ts +26 -0
  333. package/dist/plugin-sdk/commands/agent/session.d.ts +1 -2
  334. package/dist/plugin-sdk/commands/onboard-helpers.d.ts +0 -1
  335. package/dist/plugin-sdk/commands/onboard-types.d.ts +2 -1
  336. package/dist/plugin-sdk/config/defaults.d.ts +0 -1
  337. package/dist/plugin-sdk/config/legacy.migrations.d.ts +2 -1
  338. package/dist/plugin-sdk/config/legacy.shared.d.ts +0 -9
  339. package/dist/plugin-sdk/config/sessions/types.d.ts +0 -17
  340. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +28 -120
  341. package/dist/plugin-sdk/config/types.agents.d.ts +8 -0
  342. package/dist/plugin-sdk/config/types.base.d.ts +0 -1
  343. package/dist/plugin-sdk/config/types.messages.d.ts +1 -6
  344. package/dist/plugin-sdk/config/types.remoteclaw.d.ts +2 -2
  345. package/dist/plugin-sdk/config/types.tools.d.ts +1 -74
  346. package/dist/plugin-sdk/config/types.tts.d.ts +2 -1
  347. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +9 -70
  348. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +12 -210
  349. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +14 -86
  350. package/dist/plugin-sdk/config/zod-schema.core.d.ts +6 -234
  351. package/dist/plugin-sdk/config/zod-schema.d.ts +111 -378
  352. package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +148 -160
  353. package/dist/plugin-sdk/config/zod-schema.providers-whatsapp.d.ts +12 -12
  354. package/dist/plugin-sdk/config/zod-schema.providers.d.ts +88 -96
  355. package/dist/plugin-sdk/config/zod-schema.session.d.ts +4 -10
  356. package/dist/plugin-sdk/daemon/constants.d.ts +2 -2
  357. package/dist/plugin-sdk/gateway/protocol/index.d.ts +10 -17
  358. package/dist/plugin-sdk/gateway/protocol/schema/sessions.d.ts +0 -7
  359. package/dist/plugin-sdk/gateway/server/ws-types.d.ts +2 -0
  360. package/dist/plugin-sdk/gateway/session-utils.types.d.ts +0 -3
  361. package/dist/plugin-sdk/index.js +722 -1283
  362. package/dist/plugin-sdk/infra/agent-events.d.ts +1 -1
  363. package/dist/plugin-sdk/infra/provider-usage.auth.d.ts +0 -1
  364. package/dist/plugin-sdk/infra/provider-usage.load.d.ts +0 -1
  365. package/dist/plugin-sdk/line/config-schema.d.ts +4 -4
  366. package/dist/plugin-sdk/logging/levels.d.ts +1 -1
  367. package/dist/plugin-sdk/middleware/auth-key-retry.d.ts +31 -0
  368. package/dist/plugin-sdk/middleware/channel-bridge.d.ts +4 -0
  369. package/dist/plugin-sdk/middleware/cli-runtime-base.d.ts +6 -0
  370. package/dist/plugin-sdk/middleware/error-classifier.d.ts +5 -0
  371. package/dist/plugin-sdk/middleware/media-capability.d.ts +21 -0
  372. package/dist/plugin-sdk/middleware/media-resolver.d.ts +12 -0
  373. package/dist/plugin-sdk/middleware/runtime-factory.d.ts +42 -0
  374. package/dist/plugin-sdk/middleware/runtimes/claude.d.ts +10 -0
  375. package/dist/plugin-sdk/middleware/runtimes/codex.d.ts +5 -0
  376. package/dist/plugin-sdk/middleware/runtimes/gemini.d.ts +11 -0
  377. package/dist/plugin-sdk/middleware/runtimes/opencode.d.ts +5 -0
  378. package/dist/plugin-sdk/middleware/types.d.ts +41 -1
  379. package/dist/plugin-sdk/plugin-sdk/index.d.ts +5 -1
  380. package/dist/plugin-sdk/plugins/manifest-registry.d.ts +2 -0
  381. package/dist/plugin-sdk/plugins/manifest.d.ts +4 -4
  382. package/dist/plugin-sdk/plugins/registry.d.ts +18 -0
  383. package/dist/plugin-sdk/plugins/types.d.ts +5 -1
  384. package/dist/plugin-sdk/stt/defaults.d.ts +2 -0
  385. package/dist/plugin-sdk/stt/preflight.d.ts +14 -0
  386. package/dist/plugin-sdk/stt/providers/deepgram/index.d.ts +2 -0
  387. package/dist/plugin-sdk/stt/providers/google/index.d.ts +2 -0
  388. package/dist/plugin-sdk/stt/providers/groq/index.d.ts +2 -0
  389. package/dist/plugin-sdk/stt/providers/index.d.ts +4 -0
  390. package/dist/plugin-sdk/stt/providers/mistral/index.d.ts +2 -0
  391. package/dist/plugin-sdk/stt/providers/openai/index.d.ts +2 -0
  392. package/dist/plugin-sdk/stt/stt.d.ts +27 -0
  393. package/dist/plugin-sdk/stt/types.d.ts +22 -0
  394. package/dist/plugin-sdk/terminal/palette.d.ts +2 -2
  395. package/dist/plugin-sdk/tts/providers/edge.d.ts +2 -0
  396. package/dist/plugin-sdk/tts/providers/elevenlabs.d.ts +2 -0
  397. package/dist/plugin-sdk/tts/providers/index.d.ts +4 -0
  398. package/dist/plugin-sdk/tts/providers/openai.d.ts +2 -0
  399. package/dist/plugin-sdk/tts/tts.d.ts +13 -5
  400. package/dist/plugin-sdk/tts/types.d.ts +21 -0
  401. package/dist/plugins-BviLFPLV.js +255 -0
  402. package/dist/plugins-CaudBUbl.js +254 -0
  403. package/dist/plugins-cli-CsLhphNr.js +803 -0
  404. package/dist/plugins-cli-CujSP9NS.js +807 -0
  405. package/dist/ports-BtuzUQHl.js +370 -0
  406. package/dist/ports-CMcHia07.js +96 -0
  407. package/dist/ports-DALdfBQy.js +96 -0
  408. package/dist/ports-gRBeuUtp.js +316 -0
  409. package/dist/preflight-Bq8rimP-.js +667 -0
  410. package/dist/preflight-DyYbEp9X.js +667 -0
  411. package/dist/program-D64vUv0b.js +250 -0
  412. package/dist/program-context-CTFkimUr.js +474 -0
  413. package/dist/progress-BcwxtM9Q.js +124 -0
  414. package/dist/prompt-DtWGd43j.js +21 -0
  415. package/dist/prompt-select-styled-GW2PexAK.js +1672 -0
  416. package/dist/prompt-select-styled-JOuWGHX7.js +1669 -0
  417. package/dist/prompt-style-BpUMhEHC.js +9 -0
  418. package/dist/provider-auth-B7QgxlKt.js +187 -0
  419. package/dist/provider-auth-j-EQvvIk.js +187 -0
  420. package/dist/provider-dispatcher-Bx6CaIoV.js +660 -0
  421. package/dist/provider-dispatcher-DhkvjhO5.js +659 -0
  422. package/dist/push-apns--nEiZmEN.js +711 -0
  423. package/dist/push-apns-BtS6B6lb.js +713 -0
  424. package/dist/pw-ai-BpCsXF-x.js +1908 -0
  425. package/dist/pw-ai-ud_Kbn5S.js +1911 -0
  426. package/dist/qr-cli-BCeVLGfz.js +353 -0
  427. package/dist/qr-cli-Crsqtw01.js +349 -0
  428. package/dist/redact-Ci96Gj0O.js +191 -0
  429. package/dist/redact-snapshot-B9nof-Pb.js +1952 -0
  430. package/dist/redact-snapshot-BKiS91Mj.js +1952 -0
  431. package/dist/register.agent-CcvOeVnL.js +292 -0
  432. package/dist/register.agent-azH_tdVX.js +1014 -0
  433. package/dist/register.configure-DAaZLjHs.js +130 -0
  434. package/dist/register.configure-lUl8O79m.js +135 -0
  435. package/dist/register.import-B83Dn36B.js +29 -0
  436. package/dist/register.import-wIYU2cVW.js +31 -0
  437. package/dist/register.maintenance-Bo-ooQDU.js +501 -0
  438. package/dist/register.maintenance-BwZ4OkK2.js +503 -0
  439. package/dist/register.message-BQhRoEQQ.js +687 -0
  440. package/dist/register.message-CvZKWeGb.js +691 -0
  441. package/dist/register.onboard---3EPh-O.js +98 -0
  442. package/dist/register.onboard-rsHSJUvQ.js +94 -0
  443. package/dist/register.setup-B0gc_lne.js +118 -0
  444. package/dist/register.setup-MWpb7jxL.js +114 -0
  445. package/dist/register.status-health-sessions-BZJ0wTSa.js +429 -0
  446. package/dist/register.status-health-sessions-CyrUwwtB.js +667 -0
  447. package/dist/register.subclis-i2d2ugaJ.js +267 -0
  448. package/dist/replies-BIx-MbQ7.js +136 -0
  449. package/dist/replies-DVU655H4.js +136 -0
  450. package/dist/reply-CL5VMSKN.js +12372 -0
  451. package/dist/reply-XKyfU3rS.js +12375 -0
  452. package/dist/reply-directives-DQfJ001O.js +182 -0
  453. package/dist/reply-directives-DfUITt7C.js +182 -0
  454. package/dist/reply-payloads-ZHo6kfTS.js +527 -0
  455. package/dist/reply-prefix-BSf3PC0x.js +37 -0
  456. package/dist/reply-prefix-DBTlMHLK.js +37 -0
  457. package/dist/resolve-route-B-_IgETc.js +249 -0
  458. package/dist/resolve-route-C8ZsgWDQ.js +249 -0
  459. package/dist/response-prefix-template-3LeqJx2X.js +134 -0
  460. package/dist/response-prefix-template-DBrUVx5V.js +134 -0
  461. package/dist/retry-CDrH81GP.js +77 -0
  462. package/dist/retry-Dar_7pCv.js +77 -0
  463. package/dist/run-main-rOudcbbs.js +308 -0
  464. package/dist/runtime-guard-CK80eucm.js +60 -0
  465. package/dist/runtime-status-CR9445g5.js +12 -0
  466. package/dist/runtime-status-hFVEC3wO.js +12 -0
  467. package/dist/secure-random-CLWSvf8A.js +44 -0
  468. package/dist/security-cli-B8lXw9ke.js +488 -0
  469. package/dist/security-cli-CRkS3VAf.js +483 -0
  470. package/dist/send-6g8QKfWj.js +374 -0
  471. package/dist/send-B5Hz1PIn.js +29 -0
  472. package/dist/send-B8eIlA1u.js +349 -0
  473. package/dist/send-BFZPQE4j.js +492 -0
  474. package/dist/send-BpTDvE0D.js +1779 -0
  475. package/dist/send-BxOrO1Wv.js +1776 -0
  476. package/dist/send-C6gPJu-Z.js +11 -0
  477. package/dist/send-C7MoKtkN.js +426 -0
  478. package/dist/send-CXzq2LI6.js +2245 -0
  479. package/dist/send-CYOZoObr.js +547 -0
  480. package/dist/send-CfQyIvcC.js +332 -0
  481. package/dist/send-DUtuuwhw.js +492 -0
  482. package/dist/send-DbafVwxp.js +2245 -0
  483. package/dist/send-DeZg8K7y.js +349 -0
  484. package/dist/send-DwkjxJlv.js +547 -0
  485. package/dist/send-iX9xbxlU.js +1178 -0
  486. package/dist/server-BKfCzEzd.js +206 -0
  487. package/dist/server-fmO4eo7K.js +202 -0
  488. package/dist/server-lifecycle-CgPpP10P.js +2437 -0
  489. package/dist/server-lifecycle-Cn8yY5MW.js +2437 -0
  490. package/dist/server-node-events-C-ZzSBYh.js +391 -0
  491. package/dist/server-node-events-DYlyfDHM.js +395 -0
  492. package/dist/service-C2j81L86.js +670 -0
  493. package/dist/service-C8a0SXHD.js +670 -0
  494. package/dist/session-AulYhqOb.js +170 -0
  495. package/dist/session-C6VKWvx6.js +170 -0
  496. package/dist/session-cost-usage-0Vs4hgMe.js +627 -0
  497. package/dist/session-cost-usage-C-DsaOfN.js +627 -0
  498. package/dist/session-dirs-CO1f2ArM.js +318 -0
  499. package/dist/session-dirs-DoboH7Oy.js +318 -0
  500. package/dist/session-utils-CRK8ToKG.js +621 -0
  501. package/dist/session-utils-DWlkmCX8.js +621 -0
  502. package/dist/sessions-DtqrmUJS.js +2553 -0
  503. package/dist/sessions-gT-4fcX-.js +245 -0
  504. package/dist/shell-env-DBS5su07.js +163 -0
  505. package/dist/shell-env-c3j5zcU9.js +163 -0
  506. package/dist/ssrf-8wNqPNzN.js +183 -0
  507. package/dist/ssrf-CJIdPXuS.js +183 -0
  508. package/dist/status-BI_-xpDt.js +1947 -0
  509. package/dist/status-PZVwjKjl.js +1943 -0
  510. package/dist/status.update-BmuDZ7E7.js +449 -0
  511. package/dist/status.update-Mf6HSRvU.js +449 -0
  512. package/dist/store-B7PGEdFf.js +2555 -0
  513. package/dist/store-CzhBjUCN.js +64 -0
  514. package/dist/store-YkSxKAey.js +53 -0
  515. package/dist/store-ZNeFv2Q7.js +64 -0
  516. package/dist/subagent-registry-R1DiAM4R.js +4839 -0
  517. package/dist/subagent-registry-xLRXC8Bg.js +4841 -0
  518. package/dist/subsystem-BAW_f3DI.js +1195 -0
  519. package/dist/subsystem-DGSHVL8I.js +1081 -0
  520. package/dist/system-cli-9SvRrT9D.js +77 -0
  521. package/dist/system-cli-yCa5Q1YM.js +73 -0
  522. package/dist/systemd-40Rij3QR.js +547 -0
  523. package/dist/systemd-5C97CSzd.js +547 -0
  524. package/dist/systemd-hints-3iQteJw-.js +278 -0
  525. package/dist/systemd-hints-CyQqHq1i.js +278 -0
  526. package/dist/systemd-linger-B2rPbnAi.js +75 -0
  527. package/dist/systemd-linger-DDvkfxH-.js +75 -0
  528. package/dist/table-DFx25vNb.js +279 -0
  529. package/dist/tables-C5fI0PmT.js +55 -0
  530. package/dist/tables-Cm9qvQ9D.js +55 -0
  531. package/dist/tables-fRe01eP1.js +55 -0
  532. package/dist/tailnet-Da-_9e8E.js +40 -0
  533. package/dist/tailnet-xt92Yaop.js +40 -0
  534. package/dist/tailscale-CnV0JWca.js +230 -0
  535. package/dist/tailscale-VkEC8dzj.js +230 -0
  536. package/dist/targets-C99szk_e.js +114 -0
  537. package/dist/targets-CPaTjbpp.js +2607 -0
  538. package/dist/targets-D-p4rJVS.js +650 -0
  539. package/dist/targets-D2OQt8-7.js +650 -0
  540. package/dist/targets-D94MtTiZ.js +2606 -0
  541. package/dist/targets-RajrXTl7.js +220 -0
  542. package/dist/targets-_UWmnyI9.js +53 -0
  543. package/dist/targets-tDrl_ioQ.js +46 -0
  544. package/dist/thinking-4nOZPunr.js +60 -0
  545. package/dist/thinking-ZfH2V9Os.js +60 -0
  546. package/dist/tokens-TtJJxzRr.js +21 -0
  547. package/dist/tool-display-Bxs_1jIn.js +785 -0
  548. package/dist/tool-display-D9p_Ttkq.js +785 -0
  549. package/dist/tool-images-9Ron321Q.js +263 -0
  550. package/dist/tool-images-BWhy6WRN.js +263 -0
  551. package/dist/trash-B5xyvBDf.js +125 -0
  552. package/dist/trash-BpB96kHe.js +125 -0
  553. package/dist/tui-Ba0uZDrg.js +3237 -0
  554. package/dist/tui-Biz0HqDj.js +3237 -0
  555. package/dist/tui-cli-C-UV6o2v.js +63 -0
  556. package/dist/tui-cli-Ds_bLT-h.js +67 -0
  557. package/dist/types.tools-BBb2rl3g.js +23 -0
  558. package/dist/types.tools-BDJw1yFx.js +23 -0
  559. package/dist/update-Barj5dsg.js +349 -0
  560. package/dist/update-D839Q8su.js +349 -0
  561. package/dist/update-cli-C0LnrpIt.js +1148 -0
  562. package/dist/update-cli-CUypa-T-.js +1150 -0
  563. package/dist/usage-BI9kergH.js +5465 -0
  564. package/dist/utils-DPoNpP7D.js +631 -0
  565. package/dist/version-3QUZW8EP.js +52 -0
  566. package/dist/version-CVMnqdzu.js +52 -0
  567. package/dist/voice-credentials-64XAMSJm.js +46 -0
  568. package/dist/voice-credentials-v-CQkTpD.js +46 -0
  569. package/dist/web-63IbbidQ.js +3051 -0
  570. package/dist/web-D9N764Da.js +80 -0
  571. package/dist/web-DUvNYLzr.js +75 -0
  572. package/dist/webhooks-cli-owhVNNkz.js +334 -0
  573. package/dist/webhooks-cli-zlvka6QD.js +330 -0
  574. package/dist/whatsapp-actions-8DejyRG5.js +126 -0
  575. package/dist/whatsapp-actions-DCzp5LKe.js +131 -0
  576. package/dist/widearea-dns-CQqZIeu8.js +127 -0
  577. package/dist/workspace-CB7pVojf.js +441 -0
  578. package/dist/workspace-DWEyzM0F.js +439 -0
  579. package/dist/zod-schema-CvFqwpNE.js +2719 -0
  580. package/dist/zod-schema-Y5SQgJLm.js +2719 -0
  581. package/extensions/matrix/src/matrix/monitor/replies.ts +0 -24
  582. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +0 -1
  583. package/extensions/voice-call/index.ts +18 -1
  584. package/package.json +3 -4
  585. package/dist/accounts-7fm_KzPm.js +0 -32
  586. package/dist/accounts-BFy_Z3od.js +0 -272
  587. package/dist/accounts-BTXSfPWi.js +0 -270
  588. package/dist/accounts-BxGS70Do.js +0 -36
  589. package/dist/accounts-CNY1TGj1.js +0 -47
  590. package/dist/accounts-DqRQ75w3.js +0 -36
  591. package/dist/accounts-iODF3SK2.js +0 -47
  592. package/dist/ack-reactions-C1hk85VE.js +0 -446
  593. package/dist/ack-reactions-DRC2CiDQ.js +0 -446
  594. package/dist/acp-cli-DD-PD4NM.js +0 -1326
  595. package/dist/acp-cli-DIyRCOum.js +0 -1320
  596. package/dist/active-listener-VzhWW8W6.js +0 -37
  597. package/dist/active-listener-z0qVEcom.js +0 -37
  598. package/dist/agent-D2HeDFFR.js +0 -731
  599. package/dist/agent-Da_eZ5BP.js +0 -732
  600. package/dist/agent-helpers-B6VfZ9_u.js +0 -606
  601. package/dist/agent-helpers-CTx5KKJu.js +0 -606
  602. package/dist/agent-scope-BqPmD-Ax.js +0 -114
  603. package/dist/agent-scope-DgQzamQB.js +0 -116
  604. package/dist/agents-TB3QpHoo.js +0 -788
  605. package/dist/agents.config-BsAQTYe1.js +0 -116
  606. package/dist/agents.config-C9fyYfAh.js +0 -116
  607. package/dist/ansi-D04X81yq.js +0 -14
  608. package/dist/audio-DPOuhNq7.js +0 -43
  609. package/dist/audio-VBcVDa08.js +0 -43
  610. package/dist/audio-preflight-CK3EA3Dv.js +0 -69
  611. package/dist/audio-preflight-tdXtrutj.js +0 -64
  612. package/dist/audit-CJipUWDi.js +0 -3138
  613. package/dist/audit-COWzB9Y1.js +0 -3138
  614. package/dist/auth-CAczFgAO.js +0 -448
  615. package/dist/auth-Deh9i9Eg.js +0 -448
  616. package/dist/auth-profiles-BquJGKLC.js +0 -279
  617. package/dist/auth-profiles-D8vKiBPq.js +0 -281
  618. package/dist/banner-CUWBOR42.js +0 -294
  619. package/dist/binaries-DXW6oATV.js +0 -13
  620. package/dist/bindings-8YtSWb91.js +0 -69
  621. package/dist/bindings-l1R5LQQH.js +0 -69
  622. package/dist/bonjour-discovery-DdAk1VyO.js +0 -378
  623. package/dist/bonjour-discovery-DuhiIZZx.js +0 -378
  624. package/dist/browser-cli-5Q9lhGdd.js +0 -1687
  625. package/dist/browser-cli-D2qMeSx1.js +0 -1692
  626. package/dist/call-CZHVeMf1.js +0 -2828
  627. package/dist/call-CoMjY7ah.js +0 -2829
  628. package/dist/catalog-CYiAleBT.js +0 -185
  629. package/dist/catalog-pjPqB2hC.js +0 -185
  630. package/dist/channel-account-context-CvIDAtHS.js +0 -550
  631. package/dist/channel-account-context-q-o0pG1A.js +0 -550
  632. package/dist/channel-activity-BaCNOZpP.js +0 -94
  633. package/dist/channel-activity-Cd1JhIUj.js +0 -292
  634. package/dist/channel-activity-DTKGf3j5.js +0 -94
  635. package/dist/channel-options-8SjIcDDI.js +0 -33
  636. package/dist/channel-options-BtQGtMF4.js +0 -32
  637. package/dist/channel-selection-C4DzrynU.js +0 -51
  638. package/dist/channel-selection-DdfhwFuY.js +0 -51
  639. package/dist/channel-web-BKJSXnwf.js +0 -2136
  640. package/dist/channel-web-BUzvNE_A.js +0 -2134
  641. package/dist/channels-cli-CCXY796Z.js +0 -1421
  642. package/dist/channels-cli-DTfx1zFC.js +0 -1426
  643. package/dist/channels-status-issues-DnmuqPsi.js +0 -18
  644. package/dist/channels-status-issues-p1pCvTh8.js +0 -18
  645. package/dist/chat-envelope-DEZ-5RY8.js +0 -248
  646. package/dist/chat-envelope-el7Uo-Fe.js +0 -248
  647. package/dist/chrome-Dd4dv0Vh.js +0 -1732
  648. package/dist/chrome-DdNEInwI.js +0 -1733
  649. package/dist/chunk-CSQfUhgF.js +0 -341
  650. package/dist/chunk-D0Y_w4oX.js +0 -341
  651. package/dist/clack-prompter-B7tOxhJd.js +0 -122
  652. package/dist/clack-prompter-CCFnKP_1.js +0 -121
  653. package/dist/cleanup-utils-CqAVZz2b.js +0 -94
  654. package/dist/cli-BRwDPW0r.js +0 -125
  655. package/dist/cli-CV86F7iv.js +0 -130
  656. package/dist/clipboard-D7_SKHPK.js +0 -31
  657. package/dist/clipboard-Dzkx6Q2K.js +0 -31
  658. package/dist/command-format-CVfo8I5f.js +0 -18
  659. package/dist/command-format-DgXcqxBt.js +0 -32
  660. package/dist/command-registry-BvLC28b4.js +0 -215
  661. package/dist/commands-B49Lu-pa.js +0 -41
  662. package/dist/commands-DI1BCqnj.js +0 -41
  663. package/dist/commands-registry-Cr6SIR3n.js +0 -892
  664. package/dist/commands-registry-agiTEGDz.js +0 -893
  665. package/dist/common-CMI-qsF8.js +0 -156
  666. package/dist/common-DSVmydhm.js +0 -156
  667. package/dist/completion-cli-C7O4JU8t.js +0 -452
  668. package/dist/completion-cli-CQNXtEJ7.js +0 -452
  669. package/dist/config-ChYRSJQt.js +0 -6953
  670. package/dist/config-CwtWvygh.js +0 -6951
  671. package/dist/config-cli-Df5nJcfO.js +0 -241
  672. package/dist/config-cli-Dqe5O1pl.js +0 -246
  673. package/dist/config-guard-C6hyuH-z.js +0 -75
  674. package/dist/config-guard-kNMQS_tm.js +0 -97
  675. package/dist/config-validation-BZBaBH69.js +0 -18
  676. package/dist/config-validation-DkrbzCyL.js +0 -18
  677. package/dist/configure-CoJmCHqT.js +0 -891
  678. package/dist/configure-DJbojDRf.js +0 -889
  679. package/dist/constants-BmRFoHl0.js +0 -67
  680. package/dist/constants-C9WPAluB.js +0 -67
  681. package/dist/control-auth-7k6Cb2zH.js +0 -397
  682. package/dist/control-auth-DBxfkJ3g.js +0 -397
  683. package/dist/control-ui/assets/index-B4ZM1lW1.js +0 -7738
  684. package/dist/control-ui/assets/index-B4ZM1lW1.js.map +0 -1
  685. package/dist/control-ui/assets/index-PED72sKF.css +0 -1
  686. package/dist/control-ui-assets-Cx_mw4D0.js +0 -186
  687. package/dist/control-ui-assets-W1AUuGrO.js +0 -186
  688. package/dist/conversation-label-C4SDz4sT.js +0 -36
  689. package/dist/conversation-label-D1frnvYe.js +0 -36
  690. package/dist/cron-cli-BJXQKtR3.js +0 -495
  691. package/dist/cron-cli-CTIj0WPW.js +0 -490
  692. package/dist/daemon-cli-CZbHvkRG.js +0 -1197
  693. package/dist/daemon-cli-Cf_YKWvV.js +0 -1199
  694. package/dist/daemon-install-CcohRvKV.js +0 -55
  695. package/dist/daemon-install-DDshfT0J.js +0 -60
  696. package/dist/daemon-install-helpers-CFGAfRlj.js +0 -462
  697. package/dist/daemon-install-helpers-DIUzSFG1.js +0 -462
  698. package/dist/defaults-B5KStIBg.js +0 -7
  699. package/dist/defaults-xUAL2Z-F.js +0 -7
  700. package/dist/deliver-BDf2lIEK.js +0 -481
  701. package/dist/deliver-DvmkSwLt.js +0 -481
  702. package/dist/delivery-queue-Cfa9Wmxp.js +0 -244
  703. package/dist/delivery-queue-CxVRi4tw.js +0 -244
  704. package/dist/devices-cli-CRsW5WOw.js +0 -316
  705. package/dist/devices-cli-Crzrk5uf.js +0 -321
  706. package/dist/diagnostics-99iCgBUh.js +0 -46
  707. package/dist/diagnostics-VC0cz7kX.js +0 -46
  708. package/dist/directory-cli-BnoQqeOX.js +0 -222
  709. package/dist/directory-cli-DdBAX3AV.js +0 -217
  710. package/dist/dm-policy-shared-DNqPbnip.js +0 -22
  711. package/dist/dm-policy-shared-vCb_hnqo.js +0 -22
  712. package/dist/dns-cli-D410XQr9.js +0 -197
  713. package/dist/dns-cli-Fgg96Xkg.js +0 -202
  714. package/dist/dock-DXSgTbDw.js +0 -928
  715. package/dist/dock-FtQwUHXE.js +0 -929
  716. package/dist/doctor-completion-BWmtCiFR.js +0 -92
  717. package/dist/doctor-completion-DTM_wDxy.js +0 -92
  718. package/dist/doctor-config-flow-Ccna5fPs.js +0 -1934
  719. package/dist/doctor-config-flow-DqzrK_jh.js +0 -1933
  720. package/dist/enable-DcJnkzfz.js +0 -59
  721. package/dist/enable-ibNq4UWy.js +0 -59
  722. package/dist/env-DeF64iu0.js +0 -60
  723. package/dist/env-vars-7aZqKPhk.js +0 -93
  724. package/dist/env-vars-CLGbxdpL.js +0 -93
  725. package/dist/errors-8F-77i6m.js +0 -35
  726. package/dist/errors-DZ199hOo.js +0 -35
  727. package/dist/exec-DbKuYyM1.js +0 -164
  728. package/dist/exec-DkFE7lqU.js +0 -164
  729. package/dist/fetch-C6XKGA11.js +0 -67
  730. package/dist/fetch-CEDsOiql.js +0 -67
  731. package/dist/fetch-ePscvwi1.js +0 -67
  732. package/dist/file-lock-CIvloidc.js +0 -107
  733. package/dist/file-lock-CzBL_VIx.js +0 -107
  734. package/dist/fs-safe-DSwT85uK.js +0 -88
  735. package/dist/fs-safe-DkBhNAc3.js +0 -98
  736. package/dist/gateway-cli-BJooqlkO.js +0 -23747
  737. package/dist/gateway-cli-C2wPjxY4.js +0 -23742
  738. package/dist/gateway-rpc-BcT4FqJQ.js +0 -28
  739. package/dist/gateway-rpc-DhKAJ5EW.js +0 -28
  740. package/dist/gmail-setup-utils-Cnx8A5pW.js +0 -422
  741. package/dist/gmail-setup-utils-nkabbKOE.js +0 -423
  742. package/dist/health-BZX-PyP0.js +0 -1420
  743. package/dist/health-BgD0koJx.js +0 -1423
  744. package/dist/health-format-BG95OE6N.js +0 -28
  745. package/dist/heartbeat-visibility-DeW9EIeS.js +0 -125
  746. package/dist/heartbeat-visibility-DvogUlnZ.js +0 -125
  747. package/dist/help-format-DAxf0l_h.js +0 -17
  748. package/dist/helpers-R7bU5IBz.js +0 -10
  749. package/dist/helpers-kkeXif0Q.js +0 -10
  750. package/dist/hook-runner-global-cyaKukZP.js +0 -527
  751. package/dist/hooks-cli-DTygpzqS.js +0 -1217
  752. package/dist/hooks-cli-Dg853OdZ.js +0 -1222
  753. package/dist/host-env-security-Bms2_EMV.js +0 -92
  754. package/dist/host-env-security-szwfmhC4.js +0 -92
  755. package/dist/image-ops-Bi6JPSkD.js +0 -354
  756. package/dist/image-ops-DWytvdh_.js +0 -354
  757. package/dist/import-D8BBZQgl.js +0 -170
  758. package/dist/import-DQ6NI4Fz.js +0 -168
  759. package/dist/inbound-context-CPkkQW0i.js +0 -68
  760. package/dist/inbound-context-DS_kpIYI.js +0 -68
  761. package/dist/inbound-path-policy-Bg4gZBx-.js +0 -250
  762. package/dist/inbound-path-policy-sdr5Ji0k.js +0 -250
  763. package/dist/inspect-Dt8hogS3.js +0 -559
  764. package/dist/inspect-vYIL1oA0.js +0 -559
  765. package/dist/installs-ClX3qQmh.js +0 -325
  766. package/dist/installs-CxjOiLUM.js +0 -325
  767. package/dist/ipv4--2WXMVtE.js +0 -46
  768. package/dist/ipv4-CDQpx1A7.js +0 -46
  769. package/dist/ir-BvKdMuSP.js +0 -940
  770. package/dist/json-files-DzpTak5i.js +0 -46
  771. package/dist/links-C3soDNDH.js +0 -15
  772. package/dist/loader-BWZ_iRxI.js +0 -22624
  773. package/dist/loader-ClFP7wvS.js +0 -22621
  774. package/dist/local-roots-B6rSCu4U.js +0 -314
  775. package/dist/local-roots-v2HlOaG5.js +0 -313
  776. package/dist/logger-Bw3cFE5t.js +0 -49
  777. package/dist/logging-C-nxX2fn.js +0 -20
  778. package/dist/login-Cmpeb59f.js +0 -62
  779. package/dist/login-D1CV2eNF.js +0 -61
  780. package/dist/login-qr-B3tpFLRV.js +0 -327
  781. package/dist/login-qr-CSQzrtFX.js +0 -322
  782. package/dist/logs-cli-BSiUZwb2.js +0 -238
  783. package/dist/logs-cli-DDtoJ1Fr.js +0 -233
  784. package/dist/markdown-tables-PJUMrC4T.js +0 -29
  785. package/dist/markdown-tables-dDWBbtqd.js +0 -29
  786. package/dist/media-Dqv7Q0aS.js +0 -10492
  787. package/dist/media-DtN0R9A0.js +0 -940
  788. package/dist/message-action-names-Bs50Ia1g.js +0 -2521
  789. package/dist/message-action-names-Btd7cMvx.js +0 -2521
  790. package/dist/message-channel-DzJqHVZD.js +0 -91
  791. package/dist/message-channel-uWMAiywE.js +0 -91
  792. package/dist/mime-BS3jhcZE.js +0 -149
  793. package/dist/mime-Cxh_64P6.js +0 -149
  794. package/dist/net-Cg8AQeke.js +0 -225
  795. package/dist/net-D6D0wgcF.js +0 -225
  796. package/dist/node-cli-Q2-n3Fgv.js +0 -24
  797. package/dist/node-cli-Uf6lAntf.js +0 -24
  798. package/dist/nodes-cli-DVLvMgBV.js +0 -1343
  799. package/dist/nodes-cli-Dxf7vAKk.js +0 -1348
  800. package/dist/nodes-screen-BR9sYoPa.js +0 -250
  801. package/dist/nodes-screen-Cw7Hv7M2.js +0 -250
  802. package/dist/note-Dlv4NmlQ.js +0 -92
  803. package/dist/note-kvWV4xtw.js +0 -92
  804. package/dist/npm-registry-spec-0qiKawvv.js +0 -786
  805. package/dist/npm-registry-spec-COvUzy5J.js +0 -786
  806. package/dist/npm-resolution-DJnq5QBs.js +0 -86
  807. package/dist/npm-resolution-DVl2spoD.js +0 -86
  808. package/dist/onboard-BcQWYGY3.js +0 -405
  809. package/dist/onboard-RQ_FAMyg.js +0 -407
  810. package/dist/onboard-channels-CHh_BuxJ.js +0 -2547
  811. package/dist/onboard-channels-DXD-CK_M.js +0 -2548
  812. package/dist/onboard-config-BCTthQ7J.js +0 -24
  813. package/dist/onboard-config-y-2cgT0V.js +0 -24
  814. package/dist/onboard-helpers-BRMP8mup.js +0 -362
  815. package/dist/onboard-helpers-CUGbuZwH.js +0 -363
  816. package/dist/onboard-remote-D-qWujdL.js +0 -127
  817. package/dist/onboard-remote-o_OW-uzc.js +0 -127
  818. package/dist/onboarding-Bf9kVcef.js +0 -541
  819. package/dist/onboarding-CVlOLLp1.js +0 -543
  820. package/dist/onboarding.finalize-CQSt37fw.js +0 -398
  821. package/dist/onboarding.finalize-DggVL7Ay.js +0 -401
  822. package/dist/onboarding.gateway-config-BLca3Td2.js +0 -198
  823. package/dist/onboarding.gateway-config-C1mcOkRh.js +0 -191
  824. package/dist/outbound-DXXccLDS.js +0 -220
  825. package/dist/outbound-ZnVvUReT.js +0 -221
  826. package/dist/outbound-attachment-CfRb07J7.js +0 -18
  827. package/dist/outbound-attachment-DGXTtERK.js +0 -18
  828. package/dist/outbound-attachment-_jj74QBM.js +0 -18
  829. package/dist/pairing-cli-Bgm4fRA3.js +0 -127
  830. package/dist/pairing-cli-J0uGb1nU.js +0 -122
  831. package/dist/pairing-labels-CVm65Jkh.js +0 -9
  832. package/dist/pairing-labels-DD1mcvQG.js +0 -9
  833. package/dist/pairing-store-5qapT5-t.js +0 -460
  834. package/dist/pairing-store-MLceBEeL.js +0 -459
  835. package/dist/path-env-DR5vn3QL.js +0 -89
  836. package/dist/path-env-qRJbjJzj.js +0 -89
  837. package/dist/path-guards-CIx4hURU.js +0 -31
  838. package/dist/path-guards-CrQOUlsq.js +0 -31
  839. package/dist/path-safety-DkT9RmTG.js +0 -14
  840. package/dist/path-safety-juI2XbO1.js +0 -14
  841. package/dist/paths-BTaH3rLn.js +0 -232
  842. package/dist/plugin-auto-enable-BUSF117F.js +0 -301
  843. package/dist/plugin-auto-enable-CoDnqA0S.js +0 -302
  844. package/dist/plugin-registry-D2B6nbn1.js +0 -33
  845. package/dist/plugin-registry-fLaMC0ik.js +0 -33
  846. package/dist/plugin-sdk/agents/agent-helpers/thinking.d.ts +0 -5
  847. package/dist/plugin-sdk/agents/agent-paths.d.ts +0 -1
  848. package/dist/plugin-sdk/agents/auth-profiles/constants.d.ts +0 -16
  849. package/dist/plugin-sdk/agents/auth-profiles/display.d.ts +0 -7
  850. package/dist/plugin-sdk/agents/auth-profiles/doctor.d.ts +0 -8
  851. package/dist/plugin-sdk/agents/auth-profiles/oauth.d.ts +0 -14
  852. package/dist/plugin-sdk/agents/auth-profiles/paths.d.ts +0 -4
  853. package/dist/plugin-sdk/agents/auth-profiles/profiles.d.ts +0 -12
  854. package/dist/plugin-sdk/agents/auth-profiles/session-override.d.ts +0 -18
  855. package/dist/plugin-sdk/agents/auth-profiles/store.d.ts +0 -10
  856. package/dist/plugin-sdk/agents/auth-profiles/types.d.ts +0 -13
  857. package/dist/plugin-sdk/agents/auth-profiles.d.ts +0 -8
  858. package/dist/plugin-sdk/agents/defaults.d.ts +0 -3
  859. package/dist/plugin-sdk/agents/provider-auth.d.ts +0 -40
  860. package/dist/plugin-sdk/auto-reply/model-runtime.d.ts +0 -17
  861. package/dist/plugin-sdk/auto-reply/reply/directive-handling.auth.d.ts +0 -19
  862. package/dist/plugin-sdk/auto-reply/reply/elevated-allowlist-matcher.d.ts +0 -20
  863. package/dist/plugin-sdk/auto-reply/reply/elevated-unavailable.d.ts +0 -8
  864. package/dist/plugin-sdk/auto-reply/reply/reply-elevated.d.ts +0 -16
  865. package/dist/plugin-sdk/compat/legacy-names.d.ts +0 -8
  866. package/dist/plugin-sdk/config/legacy.migrations.part-1.d.ts +0 -2
  867. package/dist/plugin-sdk/config/legacy.migrations.part-2.d.ts +0 -2
  868. package/dist/plugin-sdk/config/legacy.migrations.part-3.d.ts +0 -2
  869. package/dist/plugin-sdk/config/model-input.d.ts +0 -9
  870. package/dist/plugin-sdk/config/zod-schema.agent-model.d.ts +0 -5
  871. package/dist/plugin-sdk/link-understanding/apply.d.ts +0 -10
  872. package/dist/plugin-sdk/link-understanding/defaults.d.ts +0 -2
  873. package/dist/plugin-sdk/link-understanding/detect.d.ts +0 -3
  874. package/dist/plugin-sdk/link-understanding/format.d.ts +0 -4
  875. package/dist/plugin-sdk/link-understanding/runner.d.ts +0 -11
  876. package/dist/plugin-sdk/media/input-files.d.ts +0 -95
  877. package/dist/plugin-sdk/media-understanding/apply.d.ts +0 -19
  878. package/dist/plugin-sdk/media-understanding/attachments.d.ts +0 -49
  879. package/dist/plugin-sdk/media-understanding/audio-preflight.d.ts +0 -16
  880. package/dist/plugin-sdk/media-understanding/concurrency.d.ts +0 -1
  881. package/dist/plugin-sdk/media-understanding/defaults.d.ts +0 -12
  882. package/dist/plugin-sdk/media-understanding/errors.d.ts +0 -6
  883. package/dist/plugin-sdk/media-understanding/format.d.ts +0 -7
  884. package/dist/plugin-sdk/media-understanding/fs.d.ts +0 -1
  885. package/dist/plugin-sdk/media-understanding/output-extract.d.ts +0 -2
  886. package/dist/plugin-sdk/media-understanding/providers/anthropic/index.d.ts +0 -2
  887. package/dist/plugin-sdk/media-understanding/providers/deepgram/index.d.ts +0 -2
  888. package/dist/plugin-sdk/media-understanding/providers/google/index.d.ts +0 -2
  889. package/dist/plugin-sdk/media-understanding/providers/google/video.d.ts +0 -3
  890. package/dist/plugin-sdk/media-understanding/providers/groq/index.d.ts +0 -2
  891. package/dist/plugin-sdk/media-understanding/providers/index.d.ts +0 -4
  892. package/dist/plugin-sdk/media-understanding/providers/minimax/index.d.ts +0 -2
  893. package/dist/plugin-sdk/media-understanding/providers/mistral/index.d.ts +0 -2
  894. package/dist/plugin-sdk/media-understanding/providers/moonshot/index.d.ts +0 -2
  895. package/dist/plugin-sdk/media-understanding/providers/moonshot/video.d.ts +0 -3
  896. package/dist/plugin-sdk/media-understanding/providers/openai/index.d.ts +0 -2
  897. package/dist/plugin-sdk/media-understanding/providers/zai/index.d.ts +0 -2
  898. package/dist/plugin-sdk/media-understanding/resolve.d.ts +0 -44
  899. package/dist/plugin-sdk/media-understanding/runner.d.ts +0 -34
  900. package/dist/plugin-sdk/media-understanding/runner.entries.d.ts +0 -33
  901. package/dist/plugin-sdk/media-understanding/scope.d.ts +0 -9
  902. package/dist/plugin-sdk/media-understanding/types.d.ts +0 -74
  903. package/dist/plugin-sdk/media-understanding/video.d.ts +0 -2
  904. package/dist/plugin-sdk/sessions/model-overrides.d.ts +0 -14
  905. package/dist/plugin-sdk/telegram/reasoning-lane-coordinator.d.ts +0 -18
  906. package/dist/plugin-sdk/utils/mask-api-key.d.ts +0 -1
  907. package/dist/plugin-sdk/utils/run-with-concurrency.d.ts +0 -11
  908. package/dist/plugins-CsYMlnVa.js +0 -455
  909. package/dist/plugins-Dhit-VHt.js +0 -453
  910. package/dist/plugins-cli-BwuvKtN-.js +0 -798
  911. package/dist/plugins-cli-D34k2VsI.js +0 -793
  912. package/dist/ports-DrruB2fK.js +0 -370
  913. package/dist/ports-GT1yV-Tg.js +0 -96
  914. package/dist/ports-NPqtlfp0.js +0 -316
  915. package/dist/ports-QMI4-F9m.js +0 -96
  916. package/dist/program-C5ukTU6N.js +0 -244
  917. package/dist/program-context-D55P0vBV.js +0 -474
  918. package/dist/progress-CBkSaM6z.js +0 -124
  919. package/dist/prompt-Bllj1dhc.js +0 -21
  920. package/dist/prompt-select-styled-WStiI-bz.js +0 -1647
  921. package/dist/prompt-select-styled-ram-aXWu.js +0 -1650
  922. package/dist/prompt-style-DVEm3BZW.js +0 -9
  923. package/dist/provider-dispatcher-epFKwpGK.js +0 -659
  924. package/dist/provider-dispatcher-vEBMmwZ0.js +0 -660
  925. package/dist/push-apns-C0LyG-WB.js +0 -713
  926. package/dist/push-apns-DuG95AKC.js +0 -711
  927. package/dist/pw-ai-TygsEDgY.js +0 -1906
  928. package/dist/pw-ai-eS0sIkZo.js +0 -1910
  929. package/dist/qr-cli-B8sYhugo.js +0 -352
  930. package/dist/qr-cli-yP8i4Iv1.js +0 -347
  931. package/dist/redact-eZq1uwNK.js +0 -191
  932. package/dist/redact-snapshot-gOLgfKp3.js +0 -2028
  933. package/dist/redact-snapshot-uT-CXbM8.js +0 -2028
  934. package/dist/register.agent-CSoigVGq.js +0 -1043
  935. package/dist/register.agent-GZLrbUPm.js +0 -286
  936. package/dist/register.configure-CXpiRohq.js +0 -124
  937. package/dist/register.configure-RaqiHe5L.js +0 -130
  938. package/dist/register.import-Bs-UkOs-.js +0 -27
  939. package/dist/register.import-DLng8g-e.js +0 -30
  940. package/dist/register.maintenance-B-ZLQ56Y.js +0 -494
  941. package/dist/register.maintenance-Bjr_SmG9.js +0 -497
  942. package/dist/register.message-BCQ8Vg4O.js +0 -686
  943. package/dist/register.message-ChhiSr7g.js +0 -681
  944. package/dist/register.onboard-DJCqNufv.js +0 -257
  945. package/dist/register.onboard-jlxjsrv6.js +0 -262
  946. package/dist/register.setup-C-sdixz5.js +0 -114
  947. package/dist/register.setup-Dwpe4ArC.js +0 -109
  948. package/dist/register.status-health-sessions-BWFRHBCZ.js +0 -669
  949. package/dist/register.status-health-sessions-D7noMz9y.js +0 -423
  950. package/dist/register.subclis-DFI5u4a6.js +0 -267
  951. package/dist/replies-Bzcj-R8d.js +0 -136
  952. package/dist/replies-uvTI-4lg.js +0 -136
  953. package/dist/reply-B9qz9Wwk.js +0 -13897
  954. package/dist/reply-CmGAXQKc.js +0 -13900
  955. package/dist/reply-directives-Be97YiyM.js +0 -182
  956. package/dist/reply-directives-DsLughUT.js +0 -182
  957. package/dist/reply-payloads-DW0YgT82.js +0 -527
  958. package/dist/reply-prefix-BzoT8h8o.js +0 -38
  959. package/dist/reply-prefix-CSaiVnkC.js +0 -38
  960. package/dist/resolve-route-2P40JKXk.js +0 -249
  961. package/dist/resolve-route-_CwEKLq6.js +0 -249
  962. package/dist/response-prefix-template-BAlvtSjL.js +0 -136
  963. package/dist/response-prefix-template-D-tls8tI.js +0 -136
  964. package/dist/retry-B042l5UJ.js +0 -77
  965. package/dist/retry-BhuXOEVR.js +0 -77
  966. package/dist/run-main-B-O5ZtbU.js +0 -320
  967. package/dist/runner-DGkTSlOS.js +0 -2294
  968. package/dist/runner-hs4uxAUP.js +0 -2294
  969. package/dist/runtime-DJNp29jv.js +0 -94
  970. package/dist/runtime-guard-DZ_xuCc4.js +0 -60
  971. package/dist/secure-random-DTcQnwrI.js +0 -44
  972. package/dist/security-cli-1iY1lW6F.js +0 -484
  973. package/dist/security-cli-BuiPPQYU.js +0 -478
  974. package/dist/send-3lgWtHHf.js +0 -349
  975. package/dist/send-6l2S1bcr.js +0 -11
  976. package/dist/send-9NV7sSlD.js +0 -2245
  977. package/dist/send-B0TcjZUD.js +0 -1778
  978. package/dist/send-Bb6K_10X.js +0 -2245
  979. package/dist/send-BzN7X1Om.js +0 -374
  980. package/dist/send-CLrRM0El.js +0 -426
  981. package/dist/send-Caz-txXK.js +0 -492
  982. package/dist/send-DJEr4rP6.js +0 -547
  983. package/dist/send-DJiDHXsu.js +0 -349
  984. package/dist/send-DOjg7kJj.js +0 -1775
  985. package/dist/send-DVXOiKT4.js +0 -1174
  986. package/dist/send-Dc_K995l.js +0 -547
  987. package/dist/send-Dh6d3CLl.js +0 -332
  988. package/dist/send-iPAfbiYM.js +0 -492
  989. package/dist/send-pwe9Gu8e.js +0 -29
  990. package/dist/server-B0IC-Osg.js +0 -205
  991. package/dist/server-MccRxMpb.js +0 -200
  992. package/dist/server-lifecycle-C_0CfoP7.js +0 -2437
  993. package/dist/server-lifecycle-IKdGw1kM.js +0 -2437
  994. package/dist/server-node-events-Czr2gXp_.js +0 -393
  995. package/dist/server-node-events-DFG6cXud.js +0 -398
  996. package/dist/service-Bjqii5nW.js +0 -670
  997. package/dist/service-fp29z5Ww.js +0 -670
  998. package/dist/session-DBL5nHDy.js +0 -170
  999. package/dist/session-cost-usage-DX09eTPU.js +0 -627
  1000. package/dist/session-cost-usage-yYi525j3.js +0 -627
  1001. package/dist/session-dirs-Cj5xi7zX.js +0 -947
  1002. package/dist/session-dirs-DdF6TDsE.js +0 -947
  1003. package/dist/session-utils-C7BtKlun.js +0 -625
  1004. package/dist/session-utils-CLe1dano.js +0 -625
  1005. package/dist/session-xKIW6gL2.js +0 -170
  1006. package/dist/sessions-C65iUuN9.js +0 -2593
  1007. package/dist/sessions-DjZ9IshB.js +0 -252
  1008. package/dist/ssrf-Ck9HDZpv.js +0 -183
  1009. package/dist/ssrf-m7kFIobZ.js +0 -183
  1010. package/dist/status-C6ghjxvX.js +0 -2072
  1011. package/dist/status-D-qTB8aZ.js +0 -2068
  1012. package/dist/status.update-C55QM2xs.js +0 -79
  1013. package/dist/status.update-CBmPXwYN.js +0 -79
  1014. package/dist/store-Bjk6rTC_.js +0 -53
  1015. package/dist/store-C3tOpizT.js +0 -64
  1016. package/dist/store-uRA67h-o.js +0 -2595
  1017. package/dist/store-v3P-OWhi.js +0 -64
  1018. package/dist/subagent-registry-BTG1aAZ8.js +0 -4860
  1019. package/dist/subagent-registry-CoclNL5c.js +0 -4858
  1020. package/dist/subsystem-COd61u0P.js +0 -1139
  1021. package/dist/subsystem-D9ZpRKFP.js +0 -1079
  1022. package/dist/system-cli-C__5QOMX.js +0 -70
  1023. package/dist/system-cli-Dr4XoVTq.js +0 -75
  1024. package/dist/systemd-DSnlM3jX.js +0 -547
  1025. package/dist/systemd-TfK8GuTx.js +0 -547
  1026. package/dist/systemd-linger-Axnc1xCb.js +0 -75
  1027. package/dist/systemd-linger-_0_-RY4v.js +0 -75
  1028. package/dist/table-DPTzZyhu.js +0 -279
  1029. package/dist/tables-BQ-CvUfT.js +0 -55
  1030. package/dist/tables-D3a9iSU1.js +0 -55
  1031. package/dist/tables-D3zdgEuK.js +0 -55
  1032. package/dist/tailnet-CEudzG0i.js +0 -40
  1033. package/dist/tailnet-PnMrjwGT.js +0 -40
  1034. package/dist/tailscale-DTATQxAG.js +0 -230
  1035. package/dist/tailscale-Dbyahx0J.js +0 -230
  1036. package/dist/targets-B_0Y1i-1.js +0 -2173
  1037. package/dist/targets-CMhBAn87.js +0 -120
  1038. package/dist/targets-CTmhieRB.js +0 -650
  1039. package/dist/targets-CcTME3bp.js +0 -46
  1040. package/dist/targets-DfaVEd_u.js +0 -220
  1041. package/dist/targets-DtiQgjEL.js +0 -2172
  1042. package/dist/targets-DyybKefq.js +0 -53
  1043. package/dist/targets-rDolm5YS.js +0 -650
  1044. package/dist/tokens-DzFOtLlW.js +0 -21
  1045. package/dist/tool-display-Br6mwaJc.js +0 -785
  1046. package/dist/tool-display-sgNwLOBj.js +0 -785
  1047. package/dist/tool-images-BNfIJ_Kj.js +0 -263
  1048. package/dist/tool-images-kloBqxqK.js +0 -263
  1049. package/dist/trash-DPi0aCCQ.js +0 -125
  1050. package/dist/trash-D_Jd_yQZ.js +0 -125
  1051. package/dist/tui-BSDCI2hh.js +0 -3392
  1052. package/dist/tui-DT7hLOBk.js +0 -3392
  1053. package/dist/tui-cli-DUWvLaoG.js +0 -58
  1054. package/dist/tui-cli-Dn2iXQTO.js +0 -63
  1055. package/dist/update-Bgl3Pk2N.js +0 -349
  1056. package/dist/update-CFPFib4P.js +0 -349
  1057. package/dist/update-cli-DSDSQ2Xi.js +0 -1373
  1058. package/dist/update-cli-DYR_7NLy.js +0 -1370
  1059. package/dist/usage-CS1zeIan.js +0 -5279
  1060. package/dist/utils-LBKvDoPx.js +0 -631
  1061. package/dist/web-BECD5Akw.js +0 -70
  1062. package/dist/web-D4oENnAL.js +0 -3065
  1063. package/dist/web-KP-TI2sO.js +0 -76
  1064. package/dist/webhooks-cli-BqoG_i-D.js +0 -328
  1065. package/dist/webhooks-cli-Ddu7dfdE.js +0 -333
  1066. package/dist/whatsapp-actions-BZLIjQ8J.js +0 -122
  1067. package/dist/whatsapp-actions-KCc1vHN5.js +0 -128
  1068. package/dist/widearea-dns-DSoaA-eH.js +0 -127
  1069. package/dist/workspace-4EaHHEWi.js +0 -447
  1070. package/dist/workspace-B_1t_yq3.js +0 -449
  1071. /package/dist/{account-lookup-0KDSp5Mj.js → account-lookup-C0ndrpt-.js} +0 -0
  1072. /package/dist/{account-lookup-zvANGr2x.js → account-lookup-CIY_RKhi.js} +0 -0
  1073. /package/dist/{api-BeQMq2iS.js → api-BE4ZCWWB.js} +0 -0
  1074. /package/dist/{api-CxX8-gGz.js → api-wsk9zRVi.js} +0 -0
  1075. /package/dist/{argv-Co-b9Zsc.js → argv-BY8EVMTP.js} +0 -0
  1076. /package/dist/{brew-DbSbN8sD.js → brew-CmTYeZk1.js} +0 -0
  1077. /package/dist/{brew-C4zKZsHX.js → brew-V4lMBeE3.js} +0 -0
  1078. /package/dist/{chat-type-CYPyHAj-.js → chat-type-BP9akbag.js} +0 -0
  1079. /package/dist/{chat-type-DKb2TlGZ.js → chat-type-CH3W-zKy.js} +0 -0
  1080. /package/dist/{cleanup-utils-CwQvD73q.js → cleanup-utils-ZC2zvntc.js} +0 -0
  1081. /package/dist/{cli-name-BicfmwQX.js → cli-name-BZsYSp9l.js} +0 -0
  1082. /package/dist/{cli-name-C6rJGl18.js → cli-name-CRe5Ow_t.js} +0 -0
  1083. /package/dist/{cli-utils-BhXbz2UF.js → cli-utils-BUOtyfnU.js} +0 -0
  1084. /package/dist/{cli-utils-DZe_rVkZ.js → cli-utils-CGB3cBZm.js} +0 -0
  1085. /package/dist/{client-C61M8zI3.js → client-9dK56xly.js} +0 -0
  1086. /package/dist/{client-DdpmATKq.js → client-D-R1YdRD.js} +0 -0
  1087. /package/dist/{command-options-C4paWSGf.js → command-options-CnHA4TzR.js} +0 -0
  1088. /package/dist/{command-options-CA30lfLK.js → command-options-D2nN4AXX.js} +0 -0
  1089. /package/dist/{config-eval-CjGZtLwx.js → config-eval-BQIR-wSg.js} +0 -0
  1090. /package/dist/{config-eval-H_wlEYIG.js → config-eval-Bh82JoXK.js} +0 -0
  1091. /package/dist/{constants-ChptG3d7.js → constants-C7j1VA2S.js} +0 -0
  1092. /package/dist/{constants-DY6b-_Wl.js → constants-DoYLsBmv.js} +0 -0
  1093. /package/dist/{credentials-BHWUBHMd.js → credentials-C_RoJFmK.js} +0 -0
  1094. /package/dist/{credentials-DFsi1_e8.js → credentials-DM_Dj0m8.js} +0 -0
  1095. /package/dist/{daemon-runtime-CMnbwryP.js → daemon-runtime-9oDBR7YW.js} +0 -0
  1096. /package/dist/{daemon-runtime-CvqE4ysg.js → daemon-runtime-CzFI2dPw.js} +0 -0
  1097. /package/dist/{dangerous-name-matching-BzmiLXmA.js → dangerous-name-matching-BlTBBZns.js} +0 -0
  1098. /package/dist/{dangerous-name-matching-DaVRgwer.js → dangerous-name-matching-CSq9sJDG.js} +0 -0
  1099. /package/dist/{dangerous-tools-BOLoCRv4.js → dangerous-tools-BRmbBvRf.js} +0 -0
  1100. /package/dist/{dangerous-tools-Baq7Q-i6.js → dangerous-tools-D4jtl72G.js} +0 -0
  1101. /package/dist/{fetch-timeout-DTIN7CGM.js → fetch-timeout-CytN1wiO.js} +0 -0
  1102. /package/dist/{fetch-timeout-DoySHqfO.js → fetch-timeout-DBRRPNBi.js} +0 -0
  1103. /package/dist/{file-identity-BxlKD8Ys.js → file-identity-CeRK5CJC.js} +0 -0
  1104. /package/dist/{format-duration-CqUERz51.js → format-duration-B-Uv5nOi.js} +0 -0
  1105. /package/dist/{format-duration-Ct-yiwkS.js → format-duration-D1M3Zxu6.js} +0 -0
  1106. /package/dist/{format-relative-79_Y1n2Y.js → format-relative-Czf5fUjn.js} +0 -0
  1107. /package/dist/{format-relative-CxLpEQOX.js → format-relative-zwkkXJvs.js} +0 -0
  1108. /package/dist/{health-format-B_QRD8Si.js → health-format-DF54wvUU.js} +0 -0
  1109. /package/dist/{heartbeat-wake-LGEgcXjs.js → heartbeat-wake-CvHncCjP.js} +0 -0
  1110. /package/dist/{heartbeat-wake-Y97geucO.js → heartbeat-wake-DLxQm6-U.js} +0 -0
  1111. /package/dist/{help-format-NNm_Ov4H.js → help-format-CJQ7APRn.js} +0 -0
  1112. /package/dist/{helpers-BAsMXprO.js → helpers-BER76F_2.js} +0 -0
  1113. /package/dist/{helpers-DLgbkcEn.js → helpers-n2CtWpm9.js} +0 -0
  1114. /package/dist/{input-provenance-Bn6thJNm.js → input-provenance-gIfDn1ki.js} +0 -0
  1115. /package/dist/{input-provenance-xUsSMOsz.js → input-provenance-wkso1o5V.js} +0 -0
  1116. /package/dist/{ip-C9q3Oq20.js → ip-D4VG5EJO.js} +0 -0
  1117. /package/dist/{ip-D0zgNmBV.js → ip-MwCwRA7c.js} +0 -0
  1118. /package/dist/{is-main-DN8-sNR5.js → is-main-BmHYGRhd.js} +0 -0
  1119. /package/dist/{json-file-B7l5-Xhr.js → json-file-BW22hGtf.js} +0 -0
  1120. /package/dist/{json-file-ChO_R9yh.js → json-file-DwRAfAAy.js} +0 -0
  1121. /package/dist/{json-files-CmpYSF4G.js → json-files-Dy52honG.js} +0 -0
  1122. /package/dist/{lanes-ByWMUgrz.js → lanes-1CBKdsiR.js} +0 -0
  1123. /package/dist/{lanes-cHJ5arWg.js → lanes-DqVYfPRG.js} +0 -0
  1124. /package/dist/{links-Bz4V7R_p.js → links-CwTlzaPe.js} +0 -0
  1125. /package/dist/{location-DBWCGNLq.js → location-50gaJF5Z.js} +0 -0
  1126. /package/dist/{location-GbZ0bBRU.js → location-Qo8Ii1zo.js} +0 -0
  1127. /package/dist/{logger-DyL5G2DO.js → logger-B8BE0PyS.js} +0 -0
  1128. /package/dist/{logger-BWMPnILd.js → logger-CPvz-aPM.js} +0 -0
  1129. /package/dist/{logger-GvipVDfh.js → logger-cL0D2DCr.js} +0 -0
  1130. /package/dist/{logging-D8-Kozjc.js → logging-DTEoeoa3.js} +0 -0
  1131. /package/dist/{mutable-allowlist-detectors-DiZDtmlZ.js → mutable-allowlist-detectors-BXE7Hr7F.js} +0 -0
  1132. /package/dist/{mutable-allowlist-detectors-U5ThQr9V.js → mutable-allowlist-detectors-CtKavajp.js} +0 -0
  1133. /package/dist/{parse-log-line-enq8pduH.js → parse-log-line-GisaZn5H.js} +0 -0
  1134. /package/dist/{parse-log-line-mz9TG6ig.js → parse-log-line-ZsbwG_u7.js} +0 -0
  1135. /package/dist/{parse-timeout-BMP8a0_a.js → parse-timeout-BpphuwYl.js} +0 -0
  1136. /package/dist/{parse-timeout-CDkco8kd.js → parse-timeout-CE6BjmGU.js} +0 -0
  1137. /package/dist/plugin-sdk/{agents → auth}/api-key-rotation.d.ts +0 -0
  1138. /package/dist/plugin-sdk/{media-understanding → stt}/providers/deepgram/audio.d.ts +0 -0
  1139. /package/dist/plugin-sdk/{media-understanding → stt}/providers/google/audio.d.ts +0 -0
  1140. /package/dist/plugin-sdk/{media-understanding → stt}/providers/google/inline-data.d.ts +0 -0
  1141. /package/dist/plugin-sdk/{media-understanding → stt}/providers/openai/audio.d.ts +0 -0
  1142. /package/dist/plugin-sdk/{media-understanding → stt}/providers/shared.d.ts +0 -0
  1143. /package/dist/{plugins-allowlist-BbTQ5Z2k.js → plugins-allowlist-A38nxBRG.js} +0 -0
  1144. /package/dist/{plugins-allowlist-C20oaESO.js → plugins-allowlist-D2tS9tcu.js} +0 -0
  1145. /package/dist/{polls-B0CCBDeR.js → polls-BLyT08ZI.js} +0 -0
  1146. /package/dist/{polls-CwwHzYBM.js → polls-BmymsJEe.js} +0 -0
  1147. /package/dist/{ports-lsof-Wteul3ju.js → ports-lsof-CDyv5GJd.js} +0 -0
  1148. /package/dist/{process-scoped-map-CV9kDvfG.js → process-scoped-map-BCJR56ZB.js} +0 -0
  1149. /package/dist/{process-scoped-map-PEvnG75N.js → process-scoped-map-Cb1EHPyN.js} +0 -0
  1150. /package/dist/{program-context-jqeI5alP.js → program-context-DlXnmuB7.js} +0 -0
  1151. /package/dist/{progress-C1kUfYL-.js → progress-DRLmcFiG.js} +0 -0
  1152. /package/dist/{prompt-Yn2yClg1.js → prompt-BRGfic91.js} +0 -0
  1153. /package/dist/{prompt-style-DjEYC_s-.js → prompt-style-CUuA6OCy.js} +0 -0
  1154. /package/dist/{provider-utils-3JTMJroG.js → provider-utils-C9kBVF1f.js} +0 -0
  1155. /package/dist/{provider-utils-FaBmofiq.js → provider-utils-DiLhkKQp.js} +0 -0
  1156. /package/dist/{proxy-DL3MD6-P.js → proxy-BMJL0Qog.js} +0 -0
  1157. /package/dist/{proxy-DpNv2cSV.js → proxy-D-qGA1vm.js} +0 -0
  1158. /package/dist/{pw-ai-state-CGfLv6nV.js → pw-ai-state--TxTVwRW.js} +0 -0
  1159. /package/dist/{pw-ai-state-Dynx20hr.js → pw-ai-state-CwXeO5d0.js} +0 -0
  1160. /package/dist/{redact-Dx1Fue21.js → redact-BW8tobyp.js} +0 -0
  1161. /package/dist/{redact-identifier-BTIWtaa-.js → redact-identifier-BJOQDEj0.js} +0 -0
  1162. /package/dist/{redact-identifier-CAagcfWA.js → redact-identifier-Bv5SUUw-.js} +0 -0
  1163. /package/dist/{remoteclaw-root-C2HV2VeC.js → remoteclaw-root-BfPjgewe.js} +0 -0
  1164. /package/dist/{remoteclaw-root-DybYl8PL.js → remoteclaw-root-E4-hmb4E.js} +0 -0
  1165. /package/dist/{render-CCLsW6Lz.js → render-BhKzKdV0.js} +0 -0
  1166. /package/dist/{render-uf6PvGMV.js → render-e7fENCYH.js} +0 -0
  1167. /package/dist/{retry-DnqPAqWp.js → retry-BWv_fy4u.js} +0 -0
  1168. /package/dist/{runtime-guard-U-ewY_QH.js → runtime-guard-Bhx-pb8_.js} +0 -0
  1169. /package/dist/{secret-equal-BbHdTtqY.js → secret-equal-D6AoXne1.js} +0 -0
  1170. /package/dist/{secret-equal-CXJEZiWb.js → secret-equal-DLnUuWM3.js} +0 -0
  1171. /package/dist/{secure-random-CS2mSdTn.js → secure-random-CJtykx_p.js} +0 -0
  1172. /package/dist/{secure-random-_dzDDlFo.js → secure-random-CRVHgtmO.js} +0 -0
  1173. /package/dist/{session-key-5YLnn_qf.js → session-key-BF-9YzxC.js} +0 -0
  1174. /package/dist/{session-key-C2n-VILA.js → session-key-CgKWfjoZ.js} +0 -0
  1175. /package/dist/{stagger-BXv_apuy.js → stagger--wvODnNe.js} +0 -0
  1176. /package/dist/{stagger-MI9gd2rQ.js → stagger-BLmTO4cK.js} +0 -0
  1177. /package/dist/{status-BmtCS3T1.js → status-1zVD-Clq.js} +0 -0
  1178. /package/dist/{status-BrwHRn2B.js → status-BtRY0nXQ.js} +0 -0
  1179. /package/dist/{strip-inbound-meta-DjKcSFaW.js → strip-inbound-meta-zmUXypSS.js} +0 -0
  1180. /package/dist/{strip-inbound-meta-jy3bkUab.js → strip-inbound-meta-zqtN9FTK.js} +0 -0
  1181. /package/dist/{table-C1rdyYl9.js → table-On3hkCqi.js} +0 -0
  1182. /package/dist/{target-errors-BDpPcwh5.js → target-errors-DJVRKFcU.js} +0 -0
  1183. /package/dist/{target-errors-DdIAPcMM.js → target-errors-GZXDqlUu.js} +0 -0
  1184. /package/dist/{targets-C-2xwh9f.js → targets-B46m7u5J.js} +0 -0
  1185. /package/dist/{targets-D-qLBpTA.js → targets-B_d_1z3N.js} +0 -0
  1186. /package/dist/{targets-UncQvCVs.js → targets-D01MJGnh.js} +0 -0
  1187. /package/dist/{targets-BMenhVHg.js → targets-D3r6Zgic.js} +0 -0
  1188. /package/dist/{text-format-BQ3z_OXA.js → text-format-DarxU3JH.js} +0 -0
  1189. /package/dist/{text-format-oWqzVmah.js → text-format-Ds92M9UT.js} +0 -0
  1190. /package/dist/{tokens-B-jmvNR9.js → tokens-Dw7ZdYwT.js} +0 -0
  1191. /package/dist/{usage-BdhBT0Vz.js → usage-BIzKZ5dT.js} +0 -0
  1192. /package/dist/{usage-BtQcAnf6.js → usage-BvZOzIC7.js} +0 -0
  1193. /package/dist/{usage-format-C3mNLfhI.js → usage-format-CmniSPCG.js} +0 -0
  1194. /package/dist/{usage-format-DAaPzr_z.js → usage-format-D_KQYQ-w.js} +0 -0
  1195. /package/dist/{widearea-dns-CsmBVbez.js → widearea-dns-D01FFYZ8.js} +0 -0
  1196. /package/dist/{workspace-BzPeZDew.js → workspace-BJCKO8Ns.js} +0 -0
  1197. /package/dist/{workspace-DkGLVfOl.js → workspace-BisvA9oA.js} +0 -0
  1198. /package/dist/{wsl-B_sPlzWw.js → wsl-PDLKeX04.js} +0 -0
  1199. /package/dist/{wsl-BCnYV9O0.js → wsl-kFaeW76c.js} +0 -0
@@ -0,0 +1,1417 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
+ import { E as info, I as isRich, L as theme } from "./utils-DPoNpP7D.js";
3
+ import { p as resolveUserTimezone, t as getReplyFromConfig } from "./reply-XKyfU3rS.js";
4
+ import { t as createSubsystemLogger } from "./subsystem-BAW_f3DI.js";
5
+ import { i as defaultRuntime } from "./ansi-DtaiOnt1.js";
6
+ import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as normalizeAgentId } from "./session-key-CgKWfjoZ.js";
7
+ import { c as resolveDefaultAgentId, i as resolveAgentConfig, o as resolveAgentWorkspaceDir } from "./agent-scope-CAQLm3LP.js";
8
+ import { $ as getQueueSize } from "./subagent-registry-xLRXC8Bg.js";
9
+ import { i as loadConfig } from "./config-DwuBnd6D.js";
10
+ import { t as isTruthyEnvValue } from "./env-DyyqmxSM.js";
11
+ import { g as parseDurationMs } from "./zod-schema-Y5SQgJLm.js";
12
+ import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-BviLFPLV.js";
13
+ import { a as resolvePreferredAccountId, t as buildChannelAccountBindings } from "./bindings-GUKIzFCp.js";
14
+ import { _ as peekSystemEventEntries, n as resolveHeartbeatSenderContext, t as resolveHeartbeatDeliveryTarget } from "./targets-CPaTjbpp.js";
15
+ import { c as resolveSessionFilePath, m as resolveStorePath } from "./chat-envelope-BrfcPlDM.js";
16
+ import { K as canonicalizeMainSessionAlias, l as updateSessionStore, n as loadSessionStore, q as resolveAgentMainSessionKey, s as saveSessionStore } from "./store-B7PGEdFf.js";
17
+ import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BTHzKFbN.js";
18
+ import { r as CommandLane } from "./lanes-DqVYfPRG.js";
19
+ import { a as resolveEffectiveMessagesConfig } from "./response-prefix-template-DBrUVx5V.js";
20
+ import { n as formatErrorMessage } from "./errors-C1kDByVU.js";
21
+ import { a as resolveIndicatorType, c as resolveHeartbeatReplyPayload, l as appendCronStyleCurrentTimeLine, n as emitHeartbeatEvent, o as DEFAULT_HEARTBEAT_EVERY, s as resolveHeartbeatPrompt$1, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-BO3iRpB6.js";
22
+ import { t as deliverOutboundPayloads } from "./deliver-iGD_woru.js";
23
+ import { n as withProgress } from "./progress-BcwxtM9Q.js";
24
+ import { t as resolveChannelDefaultAccountId } from "./helpers-DAEoFkbn.js";
25
+ import { n as setHeartbeatWakeHandler, r as resolveHeartbeatReasonKind, t as requestHeartbeatNow } from "./heartbeat-wake-CvHncCjP.js";
26
+ import path from "node:path";
27
+ import fs from "node:fs/promises";
28
+
29
+ //#region src/infra/heartbeat-active-hours.ts
30
+ const ACTIVE_HOURS_TIME_PATTERN = /^(?:([01]\d|2[0-3]):([0-5]\d)|24:00)$/;
31
+ function resolveActiveHoursTimezone(cfg, raw) {
32
+ const trimmed = raw?.trim();
33
+ if (!trimmed || trimmed === "user") return resolveUserTimezone(cfg.agents?.defaults?.userTimezone);
34
+ if (trimmed === "local") return Intl.DateTimeFormat().resolvedOptions().timeZone?.trim() || "UTC";
35
+ try {
36
+ new Intl.DateTimeFormat("en-US", { timeZone: trimmed }).format(/* @__PURE__ */ new Date());
37
+ return trimmed;
38
+ } catch {
39
+ return resolveUserTimezone(cfg.agents?.defaults?.userTimezone);
40
+ }
41
+ }
42
+ function parseActiveHoursTime(opts, raw) {
43
+ if (!raw || !ACTIVE_HOURS_TIME_PATTERN.test(raw)) return null;
44
+ const [hourStr, minuteStr] = raw.split(":");
45
+ const hour = Number(hourStr);
46
+ const minute = Number(minuteStr);
47
+ if (!Number.isFinite(hour) || !Number.isFinite(minute)) return null;
48
+ if (hour === 24) {
49
+ if (!opts.allow24 || minute !== 0) return null;
50
+ return 1440;
51
+ }
52
+ return hour * 60 + minute;
53
+ }
54
+ function resolveMinutesInTimeZone(nowMs, timeZone) {
55
+ try {
56
+ const parts = new Intl.DateTimeFormat("en-US", {
57
+ timeZone,
58
+ hour: "2-digit",
59
+ minute: "2-digit",
60
+ hourCycle: "h23"
61
+ }).formatToParts(new Date(nowMs));
62
+ const map = {};
63
+ for (const part of parts) if (part.type !== "literal") map[part.type] = part.value;
64
+ const hour = Number(map.hour);
65
+ const minute = Number(map.minute);
66
+ if (!Number.isFinite(hour) || !Number.isFinite(minute)) return null;
67
+ return hour * 60 + minute;
68
+ } catch {
69
+ return null;
70
+ }
71
+ }
72
+ function isWithinActiveHours(cfg, heartbeat, nowMs) {
73
+ const active = heartbeat?.activeHours;
74
+ if (!active) return true;
75
+ const startMin = parseActiveHoursTime({ allow24: false }, active.start);
76
+ const endMin = parseActiveHoursTime({ allow24: true }, active.end);
77
+ if (startMin === null || endMin === null) return true;
78
+ if (startMin === endMin) return false;
79
+ const timeZone = resolveActiveHoursTimezone(cfg, active.timezone);
80
+ const currentMin = resolveMinutesInTimeZone(nowMs ?? Date.now(), timeZone);
81
+ if (currentMin === null) return true;
82
+ if (endMin > startMin) return currentMin >= startMin && currentMin < endMin;
83
+ return currentMin >= startMin || currentMin < endMin;
84
+ }
85
+
86
+ //#endregion
87
+ //#region src/infra/heartbeat-events-filter.ts
88
+ function buildCronEventPrompt(pendingEvents, opts) {
89
+ const deliverToUser = opts?.deliverToUser ?? true;
90
+ const eventText = pendingEvents.join("\n").trim();
91
+ if (!eventText) {
92
+ if (!deliverToUser) return "A scheduled cron event was triggered, but no event content was found. Handle this internally and report using the heartbeat_report tool when nothing needs user-facing follow-up.";
93
+ return "A scheduled cron event was triggered, but no event content was found. Report using the heartbeat_report tool.";
94
+ }
95
+ if (!deliverToUser) return "A scheduled reminder has been triggered. The reminder content is:\n\n" + eventText + "\n\nHandle this reminder internally. Do not relay it to the user unless explicitly requested.";
96
+ return "A scheduled reminder has been triggered. The reminder content is:\n\n" + eventText + "\n\nPlease relay this reminder to the user in a helpful and friendly way.";
97
+ }
98
+ function buildExecEventPrompt(opts) {
99
+ if (!(opts?.deliverToUser ?? true)) return "An async command you ran earlier has completed. The result is shown in the system messages above. Handle the result internally. Do not relay it to the user unless explicitly requested.";
100
+ return "An async command you ran earlier has completed. The result is shown in the system messages above. Please relay the command output to the user in a helpful way. If the command succeeded, share the relevant output. If it failed, explain what went wrong.";
101
+ }
102
+ function isHeartbeatNoiseEvent(evt) {
103
+ const lower = evt.trim().toLowerCase();
104
+ if (!lower) return false;
105
+ return lower.includes("heartbeat poll") || lower.includes("heartbeat wake");
106
+ }
107
+ function isExecCompletionEvent(evt) {
108
+ return evt.toLowerCase().includes("exec finished");
109
+ }
110
+ function isCronSystemEvent(evt) {
111
+ if (!evt.trim()) return false;
112
+ return !isHeartbeatNoiseEvent(evt) && !isExecCompletionEvent(evt);
113
+ }
114
+
115
+ //#endregion
116
+ //#region src/infra/heartbeat-runner.ts
117
+ const log = createSubsystemLogger("gateway/heartbeat");
118
+ let heartbeatsEnabled = true;
119
+ function setHeartbeatsEnabled(enabled) {
120
+ heartbeatsEnabled = enabled;
121
+ }
122
+ const DEFAULT_HEARTBEAT_TARGET = "none";
123
+ function hasExplicitHeartbeatAgents(cfg) {
124
+ return (cfg.agents?.list ?? []).some((entry) => Boolean(entry?.heartbeat));
125
+ }
126
+ function isHeartbeatEnabledForAgent(cfg, agentId) {
127
+ const resolvedAgentId = normalizeAgentId(agentId ?? resolveDefaultAgentId(cfg));
128
+ const list = cfg.agents?.list ?? [];
129
+ if (hasExplicitHeartbeatAgents(cfg)) return list.some((entry) => Boolean(entry?.heartbeat) && normalizeAgentId(entry?.id) === resolvedAgentId);
130
+ return resolvedAgentId === resolveDefaultAgentId(cfg);
131
+ }
132
+ function resolveHeartbeatConfig(cfg, agentId) {
133
+ const defaults = cfg.agents?.defaults?.heartbeat;
134
+ if (!agentId) return defaults;
135
+ const overrides = resolveAgentConfig(cfg, agentId)?.heartbeat;
136
+ if (!defaults && !overrides) return overrides;
137
+ return {
138
+ ...defaults,
139
+ ...overrides
140
+ };
141
+ }
142
+ function resolveHeartbeatSummaryForAgent(cfg, agentId) {
143
+ const defaults = cfg.agents?.defaults?.heartbeat;
144
+ const overrides = agentId ? resolveAgentConfig(cfg, agentId)?.heartbeat : void 0;
145
+ if (!isHeartbeatEnabledForAgent(cfg, agentId)) return {
146
+ enabled: false,
147
+ every: "disabled",
148
+ everyMs: null,
149
+ prompt: defaults?.prompt?.trim() || (defaults?.file ? `[file: ${defaults.file}]` : ""),
150
+ target: defaults?.target ?? DEFAULT_HEARTBEAT_TARGET,
151
+ model: defaults?.model
152
+ };
153
+ const merged = defaults || overrides ? {
154
+ ...defaults,
155
+ ...overrides
156
+ } : void 0;
157
+ const every = merged?.every ?? defaults?.every ?? overrides?.every ?? DEFAULT_HEARTBEAT_EVERY;
158
+ const everyMs = resolveHeartbeatIntervalMs(cfg, void 0, merged);
159
+ const rawPrompt = merged?.prompt ?? defaults?.prompt ?? overrides?.prompt;
160
+ const rawFile = merged?.file ?? defaults?.file ?? overrides?.file;
161
+ return {
162
+ enabled: true,
163
+ every,
164
+ everyMs,
165
+ prompt: rawPrompt?.trim() || (rawFile ? `[file: ${rawFile}]` : ""),
166
+ target: merged?.target ?? defaults?.target ?? overrides?.target ?? DEFAULT_HEARTBEAT_TARGET,
167
+ model: merged?.model ?? defaults?.model ?? overrides?.model
168
+ };
169
+ }
170
+ function resolveHeartbeatAgents(cfg) {
171
+ const list = cfg.agents?.list ?? [];
172
+ if (hasExplicitHeartbeatAgents(cfg)) return list.filter((entry) => entry?.heartbeat).map((entry) => {
173
+ const id = normalizeAgentId(entry.id);
174
+ return {
175
+ agentId: id,
176
+ heartbeat: resolveHeartbeatConfig(cfg, id)
177
+ };
178
+ }).filter((entry) => entry.agentId);
179
+ const fallbackId = resolveDefaultAgentId(cfg);
180
+ return [{
181
+ agentId: fallbackId,
182
+ heartbeat: resolveHeartbeatConfig(cfg, fallbackId)
183
+ }];
184
+ }
185
+ function resolveHeartbeatIntervalMs(cfg, overrideEvery, heartbeat) {
186
+ const raw = overrideEvery ?? heartbeat?.every ?? cfg.agents?.defaults?.heartbeat?.every ?? DEFAULT_HEARTBEAT_EVERY;
187
+ if (!raw) return null;
188
+ const trimmed = String(raw).trim();
189
+ if (!trimmed) return null;
190
+ let ms;
191
+ try {
192
+ ms = parseDurationMs(trimmed, { defaultUnit: "m" });
193
+ } catch {
194
+ return null;
195
+ }
196
+ if (ms <= 0) return null;
197
+ return ms;
198
+ }
199
+ async function resolveHeartbeatPrompt(cfg, heartbeat, agentId) {
200
+ const defaults = cfg.agents?.defaults?.heartbeat;
201
+ return resolveHeartbeatPrompt$1({
202
+ prompt: heartbeat?.prompt ?? defaults?.prompt,
203
+ file: heartbeat?.file ?? defaults?.file,
204
+ workspaceDir: resolveAgentWorkspaceDir(cfg, agentId ?? resolveDefaultAgentId(cfg))
205
+ });
206
+ }
207
+ function resolveHeartbeatSession(cfg, agentId, heartbeat, forcedSessionKey) {
208
+ const sessionCfg = cfg.session;
209
+ const scope = sessionCfg?.scope ?? "per-sender";
210
+ const resolvedAgentId = normalizeAgentId(agentId ?? resolveDefaultAgentId(cfg));
211
+ const mainSessionKey = scope === "global" ? "global" : resolveAgentMainSessionKey({
212
+ cfg,
213
+ agentId: resolvedAgentId
214
+ });
215
+ const storeAgentId = scope === "global" ? resolveDefaultAgentId(cfg) : resolvedAgentId;
216
+ const storePath = resolveStorePath(sessionCfg?.store, { agentId: storeAgentId });
217
+ const store = loadSessionStore(storePath);
218
+ const mainEntry = store[mainSessionKey];
219
+ if (scope === "global") return {
220
+ sessionKey: mainSessionKey,
221
+ storePath,
222
+ store,
223
+ entry: mainEntry
224
+ };
225
+ const forced = forcedSessionKey?.trim();
226
+ if (forced) {
227
+ const forcedCanonical = canonicalizeMainSessionAlias({
228
+ cfg,
229
+ agentId: resolvedAgentId,
230
+ sessionKey: toAgentStoreSessionKey({
231
+ agentId: resolvedAgentId,
232
+ requestKey: forced,
233
+ mainKey: cfg.session?.mainKey
234
+ })
235
+ });
236
+ if (forcedCanonical !== "global") {
237
+ if (resolveAgentIdFromSessionKey(forcedCanonical) === normalizeAgentId(resolvedAgentId)) return {
238
+ sessionKey: forcedCanonical,
239
+ storePath,
240
+ store,
241
+ entry: store[forcedCanonical]
242
+ };
243
+ }
244
+ }
245
+ const trimmed = heartbeat?.session?.trim() ?? "";
246
+ if (!trimmed) return {
247
+ sessionKey: mainSessionKey,
248
+ storePath,
249
+ store,
250
+ entry: mainEntry
251
+ };
252
+ const normalized = trimmed.toLowerCase();
253
+ if (normalized === "main" || normalized === "global") return {
254
+ sessionKey: mainSessionKey,
255
+ storePath,
256
+ store,
257
+ entry: mainEntry
258
+ };
259
+ const canonical = canonicalizeMainSessionAlias({
260
+ cfg,
261
+ agentId: resolvedAgentId,
262
+ sessionKey: toAgentStoreSessionKey({
263
+ agentId: resolvedAgentId,
264
+ requestKey: trimmed,
265
+ mainKey: cfg.session?.mainKey
266
+ })
267
+ });
268
+ if (canonical !== "global") {
269
+ if (resolveAgentIdFromSessionKey(canonical) === normalizeAgentId(resolvedAgentId)) return {
270
+ sessionKey: canonical,
271
+ storePath,
272
+ store,
273
+ entry: store[canonical]
274
+ };
275
+ }
276
+ return {
277
+ sessionKey: mainSessionKey,
278
+ storePath,
279
+ store,
280
+ entry: mainEntry
281
+ };
282
+ }
283
+ async function restoreHeartbeatUpdatedAt(params) {
284
+ const { storePath, sessionKey, updatedAt } = params;
285
+ if (typeof updatedAt !== "number") return;
286
+ const entry = loadSessionStore(storePath)[sessionKey];
287
+ if (!entry) return;
288
+ const nextUpdatedAt = Math.max(entry.updatedAt ?? 0, updatedAt);
289
+ if (entry.updatedAt === nextUpdatedAt) return;
290
+ await updateSessionStore(storePath, (nextStore) => {
291
+ const nextEntry = nextStore[sessionKey] ?? entry;
292
+ if (!nextEntry) return;
293
+ const resolvedUpdatedAt = Math.max(nextEntry.updatedAt ?? 0, updatedAt);
294
+ if (nextEntry.updatedAt === resolvedUpdatedAt) return;
295
+ nextStore[sessionKey] = {
296
+ ...nextEntry,
297
+ updatedAt: resolvedUpdatedAt
298
+ };
299
+ });
300
+ }
301
+ /**
302
+ * Prune heartbeat transcript entries by truncating the file back to a previous size.
303
+ * This removes the user+assistant turns that were written during a HEARTBEAT_OK run,
304
+ * preventing context pollution from zero-information exchanges.
305
+ */
306
+ async function pruneHeartbeatTranscript(params) {
307
+ const { transcriptPath, preHeartbeatSize } = params;
308
+ if (!transcriptPath || typeof preHeartbeatSize !== "number" || preHeartbeatSize < 0) return;
309
+ try {
310
+ if ((await fs.stat(transcriptPath)).size > preHeartbeatSize) await fs.truncate(transcriptPath, preHeartbeatSize);
311
+ } catch {}
312
+ }
313
+ /**
314
+ * Get the transcript file path and its current size before a heartbeat run.
315
+ * Returns undefined values if the session or transcript doesn't exist yet.
316
+ */
317
+ async function captureTranscriptState(params) {
318
+ const { storePath, sessionKey, agentId } = params;
319
+ try {
320
+ const entry = loadSessionStore(storePath)[sessionKey];
321
+ if (!entry?.sessionId) return {};
322
+ const transcriptPath = resolveSessionFilePath(entry.sessionId, entry, {
323
+ agentId,
324
+ sessionsDir: path.dirname(storePath)
325
+ });
326
+ return {
327
+ transcriptPath,
328
+ preHeartbeatSize: (await fs.stat(transcriptPath)).size
329
+ };
330
+ } catch {
331
+ return {};
332
+ }
333
+ }
334
+ function normalizeHeartbeatReply(payload, responsePrefix) {
335
+ const report = payload.heartbeatReport;
336
+ const rawText = typeof payload.text === "string" ? payload.text.trim() : "";
337
+ const hasMedia = Boolean(payload.mediaUrl || (payload.mediaUrls?.length ?? 0) > 0);
338
+ if (report) {
339
+ if (!report.anythingDone) return {
340
+ shouldSkip: true,
341
+ text: report.summary?.trim() ?? "",
342
+ hasMedia
343
+ };
344
+ let finalText = report.summary?.trim() || "Agent performed actions";
345
+ if (responsePrefix && finalText && !finalText.startsWith(responsePrefix)) finalText = `${responsePrefix} ${finalText}`;
346
+ return {
347
+ shouldSkip: false,
348
+ text: finalText,
349
+ hasMedia
350
+ };
351
+ }
352
+ if (!rawText && !hasMedia) return {
353
+ shouldSkip: true,
354
+ text: "",
355
+ hasMedia
356
+ };
357
+ let finalText = rawText;
358
+ if (responsePrefix && finalText && !finalText.startsWith(responsePrefix)) finalText = `${responsePrefix} ${finalText}`;
359
+ return {
360
+ shouldSkip: false,
361
+ text: finalText,
362
+ hasMedia
363
+ };
364
+ }
365
+ function resolveHeartbeatReasonFlags(reason) {
366
+ const reasonKind = resolveHeartbeatReasonKind(reason);
367
+ return {
368
+ isExecEventReason: reasonKind === "exec-event",
369
+ isCronEventReason: reasonKind === "cron",
370
+ isWakeReason: reasonKind === "wake" || reasonKind === "hook"
371
+ };
372
+ }
373
+ async function resolveHeartbeatPreflight(params) {
374
+ const reasonFlags = resolveHeartbeatReasonFlags(params.reason);
375
+ const session = resolveHeartbeatSession(params.cfg, params.agentId, params.heartbeat, params.forcedSessionKey);
376
+ const pendingEventEntries = peekSystemEventEntries(session.sessionKey);
377
+ const hasTaggedCronEvents = pendingEventEntries.some((event) => event.contextKey?.startsWith("cron:"));
378
+ const shouldInspectPendingEvents = reasonFlags.isExecEventReason || reasonFlags.isCronEventReason || hasTaggedCronEvents;
379
+ return {
380
+ ...reasonFlags,
381
+ session,
382
+ pendingEventEntries,
383
+ hasTaggedCronEvents,
384
+ shouldInspectPendingEvents
385
+ };
386
+ }
387
+ async function resolveHeartbeatRunPrompt(params) {
388
+ const pendingEventEntries = params.preflight.pendingEventEntries;
389
+ const pendingEvents = params.preflight.shouldInspectPendingEvents ? pendingEventEntries.map((event) => event.text) : [];
390
+ const cronEvents = pendingEventEntries.filter((event) => (params.preflight.isCronEventReason || event.contextKey?.startsWith("cron:")) && isCronSystemEvent(event.text)).map((event) => event.text);
391
+ const hasExecCompletion = pendingEvents.some(isExecCompletionEvent);
392
+ const hasCronEvents = cronEvents.length > 0;
393
+ return {
394
+ prompt: hasExecCompletion ? buildExecEventPrompt({ deliverToUser: params.canRelayToUser }) : hasCronEvents ? buildCronEventPrompt(cronEvents, { deliverToUser: params.canRelayToUser }) : await resolveHeartbeatPrompt(params.cfg, params.heartbeat, params.agentId),
395
+ hasExecCompletion,
396
+ hasCronEvents
397
+ };
398
+ }
399
+ async function runHeartbeatOnce(opts) {
400
+ const cfg = opts.cfg ?? loadConfig();
401
+ const agentId = normalizeAgentId(opts.agentId ?? resolveDefaultAgentId(cfg));
402
+ const heartbeat = opts.heartbeat ?? resolveHeartbeatConfig(cfg, agentId);
403
+ if (!heartbeatsEnabled) return {
404
+ status: "skipped",
405
+ reason: "disabled"
406
+ };
407
+ if (!isHeartbeatEnabledForAgent(cfg, agentId)) return {
408
+ status: "skipped",
409
+ reason: "disabled"
410
+ };
411
+ if (!resolveHeartbeatIntervalMs(cfg, void 0, heartbeat)) return {
412
+ status: "skipped",
413
+ reason: "disabled"
414
+ };
415
+ const startedAt = opts.deps?.nowMs?.() ?? Date.now();
416
+ if (!isWithinActiveHours(cfg, heartbeat, startedAt)) return {
417
+ status: "skipped",
418
+ reason: "quiet-hours"
419
+ };
420
+ if ((opts.deps?.getQueueSize ?? getQueueSize)(CommandLane.Main) > 0) return {
421
+ status: "skipped",
422
+ reason: "requests-in-flight"
423
+ };
424
+ const preflight = await resolveHeartbeatPreflight({
425
+ cfg,
426
+ agentId,
427
+ heartbeat,
428
+ forcedSessionKey: opts.sessionKey,
429
+ reason: opts.reason
430
+ });
431
+ const { entry, sessionKey, storePath } = preflight.session;
432
+ const previousUpdatedAt = entry?.updatedAt;
433
+ const delivery = resolveHeartbeatDeliveryTarget({
434
+ cfg,
435
+ entry,
436
+ heartbeat
437
+ });
438
+ const heartbeatAccountId = heartbeat?.accountId?.trim();
439
+ if (delivery.reason === "unknown-account") log.warn("heartbeat: unknown accountId", {
440
+ accountId: delivery.accountId ?? heartbeatAccountId ?? null,
441
+ target: heartbeat?.target ?? "none"
442
+ });
443
+ else if (heartbeatAccountId) log.info("heartbeat: using explicit accountId", {
444
+ accountId: delivery.accountId ?? heartbeatAccountId,
445
+ target: heartbeat?.target ?? "none",
446
+ channel: delivery.channel
447
+ });
448
+ const visibility = delivery.channel !== "none" ? resolveHeartbeatVisibility({
449
+ cfg,
450
+ channel: delivery.channel,
451
+ accountId: delivery.accountId
452
+ }) : {
453
+ showOk: false,
454
+ showAlerts: true,
455
+ useIndicator: true
456
+ };
457
+ const { sender } = resolveHeartbeatSenderContext({
458
+ cfg,
459
+ entry,
460
+ delivery
461
+ });
462
+ const responsePrefix = resolveEffectiveMessagesConfig(cfg, agentId, {
463
+ channel: delivery.channel !== "none" ? delivery.channel : void 0,
464
+ accountId: delivery.accountId
465
+ }).responsePrefix;
466
+ const { prompt, hasExecCompletion, hasCronEvents } = await resolveHeartbeatRunPrompt({
467
+ cfg,
468
+ agentId,
469
+ heartbeat,
470
+ preflight,
471
+ canRelayToUser: Boolean(delivery.channel !== "none" && delivery.to && visibility.showAlerts)
472
+ });
473
+ if (!prompt) {
474
+ emitHeartbeatEvent({
475
+ status: "skipped",
476
+ reason: "no-prompt",
477
+ durationMs: Date.now() - startedAt
478
+ });
479
+ return {
480
+ status: "skipped",
481
+ reason: "no-prompt"
482
+ };
483
+ }
484
+ const ctx = {
485
+ Body: appendCronStyleCurrentTimeLine(prompt, cfg, startedAt),
486
+ From: sender,
487
+ To: sender,
488
+ OriginatingChannel: delivery.channel !== "none" ? delivery.channel : void 0,
489
+ OriginatingTo: delivery.to,
490
+ AccountId: delivery.accountId,
491
+ MessageThreadId: delivery.threadId,
492
+ Provider: hasExecCompletion ? "exec-event" : hasCronEvents ? "cron-event" : "heartbeat",
493
+ SessionKey: sessionKey
494
+ };
495
+ if (!visibility.showAlerts && !visibility.showOk && !visibility.useIndicator) {
496
+ emitHeartbeatEvent({
497
+ status: "skipped",
498
+ reason: "alerts-disabled",
499
+ durationMs: Date.now() - startedAt,
500
+ channel: delivery.channel !== "none" ? delivery.channel : void 0,
501
+ accountId: delivery.accountId
502
+ });
503
+ return {
504
+ status: "skipped",
505
+ reason: "alerts-disabled"
506
+ };
507
+ }
508
+ const maybeSendHeartbeatOkSummary = async (summary) => {
509
+ if (!visibility.showOk || delivery.channel === "none" || !delivery.to || !summary.trim()) return false;
510
+ const heartbeatPlugin = getChannelPlugin(delivery.channel);
511
+ if (heartbeatPlugin?.heartbeat?.checkReady) {
512
+ if (!(await heartbeatPlugin.heartbeat.checkReady({
513
+ cfg,
514
+ accountId: delivery.accountId,
515
+ deps: opts.deps
516
+ })).ok) return false;
517
+ }
518
+ await deliverOutboundPayloads({
519
+ cfg,
520
+ channel: delivery.channel,
521
+ to: delivery.to,
522
+ accountId: delivery.accountId,
523
+ threadId: delivery.threadId,
524
+ payloads: [{ text: summary }],
525
+ agentId,
526
+ deps: opts.deps
527
+ });
528
+ return true;
529
+ };
530
+ try {
531
+ const transcriptState = await captureTranscriptState({
532
+ storePath,
533
+ sessionKey,
534
+ agentId
535
+ });
536
+ const heartbeatModelOverride = heartbeat?.model?.trim() || void 0;
537
+ const suppressToolErrorWarnings = heartbeat?.suppressToolErrorWarnings === true;
538
+ const replyPayload = resolveHeartbeatReplyPayload(await getReplyFromConfig(ctx, heartbeatModelOverride ? {
539
+ isHeartbeat: true,
540
+ heartbeatModelOverride,
541
+ suppressToolErrorWarnings
542
+ } : {
543
+ isHeartbeat: true,
544
+ suppressToolErrorWarnings
545
+ }, cfg));
546
+ if (!replyPayload || !replyPayload.text && !replyPayload.mediaUrl && !replyPayload.mediaUrls?.length && !replyPayload.heartbeatReport) {
547
+ await restoreHeartbeatUpdatedAt({
548
+ storePath,
549
+ sessionKey,
550
+ updatedAt: previousUpdatedAt
551
+ });
552
+ await pruneHeartbeatTranscript(transcriptState);
553
+ emitHeartbeatEvent({
554
+ status: "ok-empty",
555
+ reason: opts.reason,
556
+ durationMs: Date.now() - startedAt,
557
+ channel: delivery.channel !== "none" ? delivery.channel : void 0,
558
+ accountId: delivery.accountId,
559
+ silent: true,
560
+ indicatorType: visibility.useIndicator ? resolveIndicatorType("ok-empty") : void 0
561
+ });
562
+ return {
563
+ status: "ran",
564
+ durationMs: Date.now() - startedAt
565
+ };
566
+ }
567
+ const normalized = normalizeHeartbeatReply(replyPayload, responsePrefix);
568
+ if (hasExecCompletion && normalized.shouldSkip && replyPayload.text?.trim()) {
569
+ normalized.text = replyPayload.text.trim();
570
+ normalized.shouldSkip = false;
571
+ }
572
+ const shouldSkipMain = normalized.shouldSkip && !normalized.hasMedia && !hasExecCompletion;
573
+ if (shouldSkipMain) {
574
+ await restoreHeartbeatUpdatedAt({
575
+ storePath,
576
+ sessionKey,
577
+ updatedAt: previousUpdatedAt
578
+ });
579
+ await pruneHeartbeatTranscript(transcriptState);
580
+ const okSent = await maybeSendHeartbeatOkSummary(normalized.text);
581
+ emitHeartbeatEvent({
582
+ status: "ok-token",
583
+ reason: opts.reason,
584
+ durationMs: Date.now() - startedAt,
585
+ channel: delivery.channel !== "none" ? delivery.channel : void 0,
586
+ accountId: delivery.accountId,
587
+ silent: !okSent,
588
+ indicatorType: visibility.useIndicator ? resolveIndicatorType("ok-token") : void 0
589
+ });
590
+ return {
591
+ status: "ran",
592
+ durationMs: Date.now() - startedAt
593
+ };
594
+ }
595
+ const mediaUrls = replyPayload.mediaUrls ?? (replyPayload.mediaUrl ? [replyPayload.mediaUrl] : []);
596
+ const prevHeartbeatText = typeof entry?.lastHeartbeatText === "string" ? entry.lastHeartbeatText : "";
597
+ const prevHeartbeatAt = typeof entry?.lastHeartbeatSentAt === "number" ? entry.lastHeartbeatSentAt : void 0;
598
+ if (!shouldSkipMain && !mediaUrls.length && Boolean(prevHeartbeatText.trim()) && normalized.text.trim() === prevHeartbeatText.trim() && typeof prevHeartbeatAt === "number" && startedAt - prevHeartbeatAt < 1440 * 60 * 1e3) {
599
+ await restoreHeartbeatUpdatedAt({
600
+ storePath,
601
+ sessionKey,
602
+ updatedAt: previousUpdatedAt
603
+ });
604
+ await pruneHeartbeatTranscript(transcriptState);
605
+ emitHeartbeatEvent({
606
+ status: "skipped",
607
+ reason: "duplicate",
608
+ preview: normalized.text.slice(0, 200),
609
+ durationMs: Date.now() - startedAt,
610
+ hasMedia: false,
611
+ channel: delivery.channel !== "none" ? delivery.channel : void 0,
612
+ accountId: delivery.accountId
613
+ });
614
+ return {
615
+ status: "ran",
616
+ durationMs: Date.now() - startedAt
617
+ };
618
+ }
619
+ const previewText = normalized.text;
620
+ if (delivery.channel === "none" || !delivery.to) {
621
+ emitHeartbeatEvent({
622
+ status: "skipped",
623
+ reason: delivery.reason ?? "no-target",
624
+ preview: previewText?.slice(0, 200),
625
+ durationMs: Date.now() - startedAt,
626
+ hasMedia: mediaUrls.length > 0,
627
+ accountId: delivery.accountId
628
+ });
629
+ return {
630
+ status: "ran",
631
+ durationMs: Date.now() - startedAt
632
+ };
633
+ }
634
+ if (!visibility.showAlerts) {
635
+ await restoreHeartbeatUpdatedAt({
636
+ storePath,
637
+ sessionKey,
638
+ updatedAt: previousUpdatedAt
639
+ });
640
+ emitHeartbeatEvent({
641
+ status: "skipped",
642
+ reason: "alerts-disabled",
643
+ preview: previewText?.slice(0, 200),
644
+ durationMs: Date.now() - startedAt,
645
+ channel: delivery.channel,
646
+ hasMedia: mediaUrls.length > 0,
647
+ accountId: delivery.accountId,
648
+ indicatorType: visibility.useIndicator ? resolveIndicatorType("sent") : void 0
649
+ });
650
+ return {
651
+ status: "ran",
652
+ durationMs: Date.now() - startedAt
653
+ };
654
+ }
655
+ const deliveryAccountId = delivery.accountId;
656
+ const heartbeatPlugin = getChannelPlugin(delivery.channel);
657
+ if (heartbeatPlugin?.heartbeat?.checkReady) {
658
+ const readiness = await heartbeatPlugin.heartbeat.checkReady({
659
+ cfg,
660
+ accountId: deliveryAccountId,
661
+ deps: opts.deps
662
+ });
663
+ if (!readiness.ok) {
664
+ emitHeartbeatEvent({
665
+ status: "skipped",
666
+ reason: readiness.reason,
667
+ preview: previewText?.slice(0, 200),
668
+ durationMs: Date.now() - startedAt,
669
+ hasMedia: mediaUrls.length > 0,
670
+ channel: delivery.channel,
671
+ accountId: delivery.accountId
672
+ });
673
+ log.info("heartbeat: channel not ready", {
674
+ channel: delivery.channel,
675
+ reason: readiness.reason
676
+ });
677
+ return {
678
+ status: "skipped",
679
+ reason: readiness.reason
680
+ };
681
+ }
682
+ }
683
+ await deliverOutboundPayloads({
684
+ cfg,
685
+ channel: delivery.channel,
686
+ to: delivery.to,
687
+ accountId: deliveryAccountId,
688
+ agentId,
689
+ threadId: delivery.threadId,
690
+ payloads: [{
691
+ text: normalized.text,
692
+ mediaUrls
693
+ }],
694
+ deps: opts.deps
695
+ });
696
+ if (!shouldSkipMain && normalized.text.trim()) {
697
+ const store = loadSessionStore(storePath);
698
+ const current = store[sessionKey];
699
+ if (current) {
700
+ store[sessionKey] = {
701
+ ...current,
702
+ lastHeartbeatText: normalized.text,
703
+ lastHeartbeatSentAt: startedAt
704
+ };
705
+ await saveSessionStore(storePath, store);
706
+ }
707
+ }
708
+ emitHeartbeatEvent({
709
+ status: "sent",
710
+ to: delivery.to,
711
+ preview: previewText?.slice(0, 200),
712
+ durationMs: Date.now() - startedAt,
713
+ hasMedia: mediaUrls.length > 0,
714
+ channel: delivery.channel,
715
+ accountId: delivery.accountId,
716
+ indicatorType: visibility.useIndicator ? resolveIndicatorType("sent") : void 0
717
+ });
718
+ return {
719
+ status: "ran",
720
+ durationMs: Date.now() - startedAt
721
+ };
722
+ } catch (err) {
723
+ const reason = formatErrorMessage(err);
724
+ emitHeartbeatEvent({
725
+ status: "failed",
726
+ reason,
727
+ durationMs: Date.now() - startedAt,
728
+ channel: delivery.channel !== "none" ? delivery.channel : void 0,
729
+ accountId: delivery.accountId,
730
+ indicatorType: visibility.useIndicator ? resolveIndicatorType("failed") : void 0
731
+ });
732
+ log.error(`heartbeat failed: ${reason}`, { error: reason });
733
+ return {
734
+ status: "failed",
735
+ reason
736
+ };
737
+ }
738
+ }
739
+ function startHeartbeatRunner(opts) {
740
+ const runtime = opts.runtime ?? defaultRuntime;
741
+ const runOnce = opts.runOnce ?? runHeartbeatOnce;
742
+ const state = {
743
+ cfg: opts.cfg ?? loadConfig(),
744
+ runtime,
745
+ agents: /* @__PURE__ */ new Map(),
746
+ timer: null,
747
+ stopped: false
748
+ };
749
+ let initialized = false;
750
+ const resolveNextDue = (now, intervalMs, prevState) => {
751
+ if (typeof prevState?.lastRunMs === "number") return prevState.lastRunMs + intervalMs;
752
+ if (prevState && prevState.intervalMs === intervalMs && prevState.nextDueMs > now) return prevState.nextDueMs;
753
+ return now + intervalMs;
754
+ };
755
+ const advanceAgentSchedule = (agent, now) => {
756
+ agent.lastRunMs = now;
757
+ agent.nextDueMs = now + agent.intervalMs;
758
+ };
759
+ const scheduleNext = () => {
760
+ if (state.stopped) return;
761
+ if (state.timer) {
762
+ clearTimeout(state.timer);
763
+ state.timer = null;
764
+ }
765
+ if (state.agents.size === 0) return;
766
+ const now = Date.now();
767
+ let nextDue = Number.POSITIVE_INFINITY;
768
+ for (const agent of state.agents.values()) if (agent.nextDueMs < nextDue) nextDue = agent.nextDueMs;
769
+ if (!Number.isFinite(nextDue)) return;
770
+ const delay = Math.max(0, nextDue - now);
771
+ state.timer = setTimeout(() => {
772
+ state.timer = null;
773
+ requestHeartbeatNow({
774
+ reason: "interval",
775
+ coalesceMs: 0
776
+ });
777
+ }, delay);
778
+ state.timer.unref?.();
779
+ };
780
+ const updateConfig = (cfg) => {
781
+ if (state.stopped) return;
782
+ const now = Date.now();
783
+ const prevAgents = state.agents;
784
+ const prevEnabled = prevAgents.size > 0;
785
+ const nextAgents = /* @__PURE__ */ new Map();
786
+ const intervals = [];
787
+ for (const agent of resolveHeartbeatAgents(cfg)) {
788
+ const intervalMs = resolveHeartbeatIntervalMs(cfg, void 0, agent.heartbeat);
789
+ if (!intervalMs) continue;
790
+ intervals.push(intervalMs);
791
+ const prevState = prevAgents.get(agent.agentId);
792
+ const nextDueMs = resolveNextDue(now, intervalMs, prevState);
793
+ nextAgents.set(agent.agentId, {
794
+ agentId: agent.agentId,
795
+ heartbeat: agent.heartbeat,
796
+ intervalMs,
797
+ lastRunMs: prevState?.lastRunMs,
798
+ nextDueMs
799
+ });
800
+ }
801
+ state.cfg = cfg;
802
+ state.agents = nextAgents;
803
+ const nextEnabled = nextAgents.size > 0;
804
+ if (!initialized) {
805
+ if (!nextEnabled) log.info("heartbeat: disabled", { enabled: false });
806
+ else log.info("heartbeat: started", { intervalMs: Math.min(...intervals) });
807
+ initialized = true;
808
+ } else if (prevEnabled !== nextEnabled) if (!nextEnabled) log.info("heartbeat: disabled", { enabled: false });
809
+ else log.info("heartbeat: started", { intervalMs: Math.min(...intervals) });
810
+ scheduleNext();
811
+ };
812
+ const run = async (params) => {
813
+ if (state.stopped) return {
814
+ status: "skipped",
815
+ reason: "disabled"
816
+ };
817
+ if (!heartbeatsEnabled) return {
818
+ status: "skipped",
819
+ reason: "disabled"
820
+ };
821
+ if (state.agents.size === 0) return {
822
+ status: "skipped",
823
+ reason: "disabled"
824
+ };
825
+ const reason = params?.reason;
826
+ const requestedAgentId = params?.agentId ? normalizeAgentId(params.agentId) : void 0;
827
+ const requestedSessionKey = params?.sessionKey?.trim() || void 0;
828
+ const isInterval = reason === "interval";
829
+ const startedAt = Date.now();
830
+ const now = startedAt;
831
+ let ran = false;
832
+ if (requestedSessionKey || requestedAgentId) {
833
+ const targetAgentId = requestedAgentId ?? resolveAgentIdFromSessionKey(requestedSessionKey);
834
+ const targetAgent = state.agents.get(targetAgentId);
835
+ if (!targetAgent) {
836
+ scheduleNext();
837
+ return {
838
+ status: "skipped",
839
+ reason: "disabled"
840
+ };
841
+ }
842
+ try {
843
+ const res = await runOnce({
844
+ cfg: state.cfg,
845
+ agentId: targetAgent.agentId,
846
+ heartbeat: targetAgent.heartbeat,
847
+ reason,
848
+ sessionKey: requestedSessionKey,
849
+ deps: { runtime: state.runtime }
850
+ });
851
+ if (res.status !== "skipped" || res.reason !== "disabled") advanceAgentSchedule(targetAgent, now);
852
+ scheduleNext();
853
+ return res.status === "ran" ? {
854
+ status: "ran",
855
+ durationMs: Date.now() - startedAt
856
+ } : res;
857
+ } catch (err) {
858
+ const errMsg = formatErrorMessage(err);
859
+ log.error(`heartbeat runner: targeted runOnce threw unexpectedly: ${errMsg}`, { error: errMsg });
860
+ advanceAgentSchedule(targetAgent, now);
861
+ scheduleNext();
862
+ return {
863
+ status: "failed",
864
+ reason: errMsg
865
+ };
866
+ }
867
+ }
868
+ for (const agent of state.agents.values()) {
869
+ if (isInterval && now < agent.nextDueMs) continue;
870
+ let res;
871
+ try {
872
+ res = await runOnce({
873
+ cfg: state.cfg,
874
+ agentId: agent.agentId,
875
+ heartbeat: agent.heartbeat,
876
+ reason,
877
+ deps: { runtime: state.runtime }
878
+ });
879
+ } catch (err) {
880
+ const errMsg = formatErrorMessage(err);
881
+ log.error(`heartbeat runner: runOnce threw unexpectedly: ${errMsg}`, { error: errMsg });
882
+ advanceAgentSchedule(agent, now);
883
+ continue;
884
+ }
885
+ if (res.status === "skipped" && res.reason === "requests-in-flight") {
886
+ advanceAgentSchedule(agent, now);
887
+ scheduleNext();
888
+ return res;
889
+ }
890
+ if (res.status !== "skipped" || res.reason !== "disabled") advanceAgentSchedule(agent, now);
891
+ if (res.status === "ran") ran = true;
892
+ }
893
+ scheduleNext();
894
+ if (ran) return {
895
+ status: "ran",
896
+ durationMs: Date.now() - startedAt
897
+ };
898
+ return {
899
+ status: "skipped",
900
+ reason: isInterval ? "not-due" : "disabled"
901
+ };
902
+ };
903
+ const wakeHandler = async (params) => run({
904
+ reason: params.reason,
905
+ agentId: params.agentId,
906
+ sessionKey: params.sessionKey
907
+ });
908
+ const disposeWakeHandler = setHeartbeatWakeHandler(wakeHandler);
909
+ updateConfig(state.cfg);
910
+ const cleanup = () => {
911
+ if (state.stopped) return;
912
+ state.stopped = true;
913
+ disposeWakeHandler();
914
+ if (state.timer) clearTimeout(state.timer);
915
+ state.timer = null;
916
+ };
917
+ opts.abortSignal?.addEventListener("abort", cleanup, { once: true });
918
+ return {
919
+ stop: cleanup,
920
+ updateConfig
921
+ };
922
+ }
923
+
924
+ //#endregion
925
+ //#region src/terminal/health-style.ts
926
+ function styleHealthChannelLine(line, rich) {
927
+ if (!rich) return line;
928
+ const colon = line.indexOf(":");
929
+ if (colon === -1) return line;
930
+ const label = line.slice(0, colon + 1);
931
+ const detail = line.slice(colon + 1).trimStart();
932
+ const normalized = detail.toLowerCase();
933
+ const applyPrefix = (prefix, color) => `${label} ${color(detail.slice(0, prefix.length))}${detail.slice(prefix.length)}`;
934
+ if (normalized.startsWith("failed")) return applyPrefix("failed", theme.error);
935
+ if (normalized.startsWith("ok")) return applyPrefix("ok", theme.success);
936
+ if (normalized.startsWith("linked")) return applyPrefix("linked", theme.success);
937
+ if (normalized.startsWith("configured")) return applyPrefix("configured", theme.success);
938
+ if (normalized.startsWith("not linked")) return applyPrefix("not linked", theme.warn);
939
+ if (normalized.startsWith("not configured")) return applyPrefix("not configured", theme.muted);
940
+ if (normalized.startsWith("unknown")) return applyPrefix("unknown", theme.warn);
941
+ return line;
942
+ }
943
+
944
+ //#endregion
945
+ //#region src/commands/health.ts
946
+ var health_exports = /* @__PURE__ */ __exportAll({
947
+ formatHealthChannelLines: () => formatHealthChannelLines,
948
+ getHealthSnapshot: () => getHealthSnapshot,
949
+ healthCommand: () => healthCommand
950
+ });
951
+ const DEFAULT_TIMEOUT_MS = 1e4;
952
+ const debugHealth = (...args) => {
953
+ if (isTruthyEnvValue(process.env.REMOTECLAW_DEBUG_HEALTH)) console.warn("[health:debug]", ...args);
954
+ };
955
+ const formatDurationParts = (ms) => {
956
+ if (!Number.isFinite(ms)) return "unknown";
957
+ if (ms < 1e3) return `${Math.max(0, Math.round(ms))}ms`;
958
+ const units = [
959
+ {
960
+ label: "w",
961
+ size: 10080 * 60 * 1e3
962
+ },
963
+ {
964
+ label: "d",
965
+ size: 1440 * 60 * 1e3
966
+ },
967
+ {
968
+ label: "h",
969
+ size: 3600 * 1e3
970
+ },
971
+ {
972
+ label: "m",
973
+ size: 60 * 1e3
974
+ },
975
+ {
976
+ label: "s",
977
+ size: 1e3
978
+ }
979
+ ];
980
+ let remaining = Math.max(0, Math.floor(ms));
981
+ const parts = [];
982
+ for (const unit of units) {
983
+ const value = Math.floor(remaining / unit.size);
984
+ if (value > 0) {
985
+ parts.push(`${value}${unit.label}`);
986
+ remaining -= value * unit.size;
987
+ }
988
+ }
989
+ if (parts.length === 0) return "0s";
990
+ return parts.join(" ");
991
+ };
992
+ const resolveHeartbeatSummary = (cfg, agentId) => resolveHeartbeatSummaryForAgent(cfg, agentId);
993
+ const resolveAgentOrder = (cfg) => {
994
+ const defaultAgentId = resolveDefaultAgentId(cfg);
995
+ const entries = Array.isArray(cfg.agents?.list) ? cfg.agents.list : [];
996
+ const seen = /* @__PURE__ */ new Set();
997
+ const ordered = [];
998
+ for (const entry of entries) {
999
+ if (!entry || typeof entry !== "object") continue;
1000
+ if (typeof entry.id !== "string" || !entry.id.trim()) continue;
1001
+ const id = normalizeAgentId(entry.id);
1002
+ if (!id || seen.has(id)) continue;
1003
+ seen.add(id);
1004
+ ordered.push({
1005
+ id,
1006
+ name: typeof entry.name === "string" ? entry.name : void 0
1007
+ });
1008
+ }
1009
+ if (!seen.has(defaultAgentId)) ordered.unshift({ id: defaultAgentId });
1010
+ if (ordered.length === 0) ordered.push({ id: defaultAgentId });
1011
+ return {
1012
+ defaultAgentId,
1013
+ ordered
1014
+ };
1015
+ };
1016
+ const buildSessionSummary = (storePath) => {
1017
+ const store = loadSessionStore(storePath);
1018
+ const sessions = Object.entries(store).filter(([key]) => key !== "global" && key !== "unknown").map(([key, entry]) => ({
1019
+ key,
1020
+ updatedAt: entry?.updatedAt ?? 0
1021
+ })).toSorted((a, b) => b.updatedAt - a.updatedAt);
1022
+ const recent = sessions.slice(0, 5).map((s) => ({
1023
+ key: s.key,
1024
+ updatedAt: s.updatedAt || null,
1025
+ age: s.updatedAt ? Date.now() - s.updatedAt : null
1026
+ }));
1027
+ return {
1028
+ path: storePath,
1029
+ count: sessions.length,
1030
+ recent
1031
+ };
1032
+ };
1033
+ const isAccountEnabled = (account) => {
1034
+ if (!account || typeof account !== "object") return true;
1035
+ return account.enabled !== false;
1036
+ };
1037
+ const asRecord = (value) => value && typeof value === "object" ? value : null;
1038
+ const formatProbeLine = (probe, opts = {}) => {
1039
+ const record = asRecord(probe);
1040
+ if (!record) return null;
1041
+ const ok = typeof record.ok === "boolean" ? record.ok : void 0;
1042
+ if (ok === void 0) return null;
1043
+ const elapsedMs = typeof record.elapsedMs === "number" ? record.elapsedMs : null;
1044
+ const status = typeof record.status === "number" ? record.status : null;
1045
+ const error = typeof record.error === "string" ? record.error : null;
1046
+ const bot = asRecord(record.bot);
1047
+ const botUsername = bot && typeof bot.username === "string" ? bot.username : null;
1048
+ const webhook = asRecord(record.webhook);
1049
+ const webhookUrl = webhook && typeof webhook.url === "string" ? webhook.url : null;
1050
+ const usernames = /* @__PURE__ */ new Set();
1051
+ if (botUsername) usernames.add(botUsername);
1052
+ for (const extra of opts.botUsernames ?? []) if (extra) usernames.add(extra);
1053
+ if (ok) {
1054
+ let label = "ok";
1055
+ if (usernames.size > 0) label += ` (@${Array.from(usernames).join(", @")})`;
1056
+ if (elapsedMs != null) label += ` (${elapsedMs}ms)`;
1057
+ if (webhookUrl) label += ` - webhook ${webhookUrl}`;
1058
+ return label;
1059
+ }
1060
+ let label = `failed (${status ?? "unknown"})`;
1061
+ if (error) label += ` - ${error}`;
1062
+ return label;
1063
+ };
1064
+ const formatAccountProbeTiming = (summary) => {
1065
+ const probe = asRecord(summary.probe);
1066
+ if (!probe) return null;
1067
+ const elapsedMs = typeof probe.elapsedMs === "number" ? Math.round(probe.elapsedMs) : null;
1068
+ const ok = typeof probe.ok === "boolean" ? probe.ok : null;
1069
+ if (elapsedMs == null && ok !== true) return null;
1070
+ const accountId = summary.accountId || "default";
1071
+ const botRecord = asRecord(probe.bot);
1072
+ const botUsername = botRecord && typeof botRecord.username === "string" ? botRecord.username : null;
1073
+ return `${botUsername ? `@${botUsername}` : accountId}:${accountId}:${elapsedMs != null ? `${elapsedMs}ms` : "ok"}`;
1074
+ };
1075
+ const isProbeFailure = (summary) => {
1076
+ const probe = asRecord(summary.probe);
1077
+ if (!probe) return false;
1078
+ return (typeof probe.ok === "boolean" ? probe.ok : null) === false;
1079
+ };
1080
+ const formatHealthChannelLines = (summary, opts = {}) => {
1081
+ const channels = summary.channels ?? {};
1082
+ const channelOrder = summary.channelOrder?.length > 0 ? summary.channelOrder : Object.keys(channels);
1083
+ const accountMode = opts.accountMode ?? "default";
1084
+ const lines = [];
1085
+ for (const channelId of channelOrder) {
1086
+ const channelSummary = channels[channelId];
1087
+ if (!channelSummary) continue;
1088
+ const plugin = getChannelPlugin(channelId);
1089
+ const label = summary.channelLabels?.[channelId] ?? plugin?.meta.label ?? channelId;
1090
+ const accountSummaries = channelSummary.accounts ?? {};
1091
+ const accountIds = opts.accountIdsByChannel?.[channelId];
1092
+ const filteredSummaries = accountIds && accountIds.length > 0 ? accountIds.map((accountId) => accountSummaries[accountId]).filter((entry) => Boolean(entry)) : void 0;
1093
+ const listSummaries = accountMode === "all" ? Object.values(accountSummaries) : filteredSummaries ?? (channelSummary.accounts ? Object.values(accountSummaries) : []);
1094
+ const baseSummary = filteredSummaries && filteredSummaries.length > 0 ? filteredSummaries[0] : channelSummary;
1095
+ const botUsernames = listSummaries ? listSummaries.map((account) => {
1096
+ const probeRecord = asRecord(account.probe);
1097
+ const bot = probeRecord ? asRecord(probeRecord.bot) : null;
1098
+ return bot && typeof bot.username === "string" ? bot.username : null;
1099
+ }).filter((value) => Boolean(value)) : [];
1100
+ const linked = typeof baseSummary.linked === "boolean" ? baseSummary.linked : null;
1101
+ if (linked !== null) {
1102
+ if (linked) {
1103
+ const authAgeMs = typeof baseSummary.authAgeMs === "number" ? baseSummary.authAgeMs : null;
1104
+ const authLabel = authAgeMs != null ? ` (auth age ${Math.round(authAgeMs / 6e4)}m)` : "";
1105
+ lines.push(`${label}: linked${authLabel}`);
1106
+ } else lines.push(`${label}: not linked`);
1107
+ continue;
1108
+ }
1109
+ const configured = typeof baseSummary.configured === "boolean" ? baseSummary.configured : null;
1110
+ if (configured === false) {
1111
+ lines.push(`${label}: not configured`);
1112
+ continue;
1113
+ }
1114
+ const accountTimings = accountMode === "all" ? listSummaries.map((account) => formatAccountProbeTiming(account)).filter((value) => Boolean(value)) : [];
1115
+ const failedSummary = listSummaries.find((summary) => isProbeFailure(summary));
1116
+ if (failedSummary) {
1117
+ const failureLine = formatProbeLine(failedSummary.probe, { botUsernames });
1118
+ if (failureLine) {
1119
+ lines.push(`${label}: ${failureLine}`);
1120
+ continue;
1121
+ }
1122
+ }
1123
+ if (accountTimings.length > 0) {
1124
+ lines.push(`${label}: ok (${accountTimings.join(", ")})`);
1125
+ continue;
1126
+ }
1127
+ const probeLine = formatProbeLine(baseSummary.probe, { botUsernames });
1128
+ if (probeLine) {
1129
+ lines.push(`${label}: ${probeLine}`);
1130
+ continue;
1131
+ }
1132
+ if (configured === true) {
1133
+ lines.push(`${label}: configured`);
1134
+ continue;
1135
+ }
1136
+ lines.push(`${label}: unknown`);
1137
+ }
1138
+ return lines;
1139
+ };
1140
+ async function getHealthSnapshot(params) {
1141
+ const timeoutMs = params?.timeoutMs;
1142
+ const cfg = loadConfig();
1143
+ const { defaultAgentId, ordered } = resolveAgentOrder(cfg);
1144
+ const channelBindings = buildChannelAccountBindings(cfg);
1145
+ const sessionCache = /* @__PURE__ */ new Map();
1146
+ const agents = ordered.map((entry) => {
1147
+ const storePath = resolveStorePath(cfg.session?.store, { agentId: entry.id });
1148
+ const sessions = sessionCache.get(storePath) ?? buildSessionSummary(storePath);
1149
+ sessionCache.set(storePath, sessions);
1150
+ return {
1151
+ agentId: entry.id,
1152
+ name: entry.name,
1153
+ isDefault: entry.id === defaultAgentId,
1154
+ heartbeat: resolveHeartbeatSummary(cfg, entry.id),
1155
+ sessions
1156
+ };
1157
+ });
1158
+ const defaultAgent = agents.find((agent) => agent.isDefault) ?? agents[0];
1159
+ const heartbeatSeconds = defaultAgent?.heartbeat.everyMs ? Math.round(defaultAgent.heartbeat.everyMs / 1e3) : 0;
1160
+ const sessions = defaultAgent?.sessions ?? buildSessionSummary(resolveStorePath(cfg.session?.store, { agentId: defaultAgentId }));
1161
+ const start = Date.now();
1162
+ const cappedTimeout = timeoutMs === void 0 ? DEFAULT_TIMEOUT_MS : Math.max(50, timeoutMs);
1163
+ const doProbe = params?.probe !== false;
1164
+ const channels = {};
1165
+ const channelOrder = listChannelPlugins().map((plugin) => plugin.id);
1166
+ const channelLabels = {};
1167
+ for (const plugin of listChannelPlugins()) {
1168
+ channelLabels[plugin.id] = plugin.meta.label ?? plugin.id;
1169
+ const accountIds = plugin.config.listAccountIds(cfg);
1170
+ const defaultAccountId = resolveChannelDefaultAccountId({
1171
+ plugin,
1172
+ cfg,
1173
+ accountIds
1174
+ });
1175
+ const boundAccounts = channelBindings.get(plugin.id)?.get(defaultAgentId) ?? [];
1176
+ const preferredAccountId = resolvePreferredAccountId({
1177
+ accountIds,
1178
+ defaultAccountId,
1179
+ boundAccounts
1180
+ });
1181
+ const boundAccountIdsAll = Array.from(new Set(Array.from(channelBindings.get(plugin.id)?.values() ?? []).flatMap((ids) => ids)));
1182
+ const accountIdsToProbe = Array.from(new Set([
1183
+ preferredAccountId,
1184
+ defaultAccountId,
1185
+ ...accountIds,
1186
+ ...boundAccountIdsAll
1187
+ ].filter((value) => value && value.trim())));
1188
+ debugHealth("channel", {
1189
+ id: plugin.id,
1190
+ accountIds,
1191
+ defaultAccountId,
1192
+ boundAccounts,
1193
+ preferredAccountId,
1194
+ accountIdsToProbe
1195
+ });
1196
+ const accountSummaries = {};
1197
+ for (const accountId of accountIdsToProbe) {
1198
+ const account = plugin.config.resolveAccount(cfg, accountId);
1199
+ const enabled = plugin.config.isEnabled ? plugin.config.isEnabled(account, cfg) : isAccountEnabled(account);
1200
+ const configured = plugin.config.isConfigured ? await plugin.config.isConfigured(account, cfg) : true;
1201
+ let probe;
1202
+ let lastProbeAt = null;
1203
+ if (enabled && configured && doProbe && plugin.status?.probeAccount) try {
1204
+ probe = await plugin.status.probeAccount({
1205
+ account,
1206
+ timeoutMs: cappedTimeout,
1207
+ cfg
1208
+ });
1209
+ lastProbeAt = Date.now();
1210
+ } catch (err) {
1211
+ probe = {
1212
+ ok: false,
1213
+ error: formatErrorMessage(err)
1214
+ };
1215
+ lastProbeAt = Date.now();
1216
+ }
1217
+ const probeRecord = probe && typeof probe === "object" ? probe : null;
1218
+ const bot = probeRecord && typeof probeRecord.bot === "object" ? probeRecord.bot : null;
1219
+ if (bot?.username) debugHealth("probe.bot", {
1220
+ channel: plugin.id,
1221
+ accountId,
1222
+ username: bot.username
1223
+ });
1224
+ const snapshot = {
1225
+ accountId,
1226
+ enabled,
1227
+ configured
1228
+ };
1229
+ if (probe !== void 0) snapshot.probe = probe;
1230
+ if (lastProbeAt) snapshot.lastProbeAt = lastProbeAt;
1231
+ const summary = plugin.status?.buildChannelSummary ? await plugin.status.buildChannelSummary({
1232
+ account,
1233
+ cfg,
1234
+ defaultAccountId: accountId,
1235
+ snapshot
1236
+ }) : void 0;
1237
+ const record = summary && typeof summary === "object" ? summary : {
1238
+ accountId,
1239
+ configured,
1240
+ probe,
1241
+ lastProbeAt
1242
+ };
1243
+ if (record.configured === void 0) record.configured = configured;
1244
+ if (record.lastProbeAt === void 0 && lastProbeAt) record.lastProbeAt = lastProbeAt;
1245
+ record.accountId = accountId;
1246
+ accountSummaries[accountId] = record;
1247
+ }
1248
+ const fallbackSummary = accountSummaries[preferredAccountId] ?? accountSummaries[defaultAccountId] ?? accountSummaries[accountIdsToProbe[0] ?? preferredAccountId] ?? accountSummaries[Object.keys(accountSummaries)[0]];
1249
+ if (fallbackSummary) channels[plugin.id] = {
1250
+ ...fallbackSummary,
1251
+ accounts: accountSummaries
1252
+ };
1253
+ }
1254
+ return {
1255
+ ok: true,
1256
+ ts: Date.now(),
1257
+ durationMs: Date.now() - start,
1258
+ channels,
1259
+ channelOrder,
1260
+ channelLabels,
1261
+ heartbeatSeconds,
1262
+ defaultAgentId,
1263
+ agents,
1264
+ sessions: {
1265
+ path: sessions.path,
1266
+ count: sessions.count,
1267
+ recent: sessions.recent
1268
+ }
1269
+ };
1270
+ }
1271
+ async function healthCommand(opts, runtime) {
1272
+ const cfg = opts.config ?? loadConfig();
1273
+ const summary = await withProgress({
1274
+ label: "Checking gateway health…",
1275
+ indeterminate: true,
1276
+ enabled: opts.json !== true
1277
+ }, async () => await callGateway({
1278
+ method: "health",
1279
+ params: opts.verbose ? { probe: true } : void 0,
1280
+ timeoutMs: opts.timeoutMs,
1281
+ config: cfg
1282
+ }));
1283
+ if (opts.json) runtime.log(JSON.stringify(summary, null, 2));
1284
+ else {
1285
+ const debugEnabled = isTruthyEnvValue(process.env.REMOTECLAW_DEBUG_HEALTH);
1286
+ const rich = isRich();
1287
+ if (opts.verbose) {
1288
+ const details = buildGatewayConnectionDetails({ config: cfg });
1289
+ runtime.log(info("Gateway connection:"));
1290
+ for (const line of details.message.split("\n")) runtime.log(` ${line}`);
1291
+ }
1292
+ const localAgents = resolveAgentOrder(cfg);
1293
+ const defaultAgentId = summary.defaultAgentId ?? localAgents.defaultAgentId;
1294
+ const agents = Array.isArray(summary.agents) ? summary.agents : [];
1295
+ const fallbackAgents = localAgents.ordered.map((entry) => {
1296
+ const storePath = resolveStorePath(cfg.session?.store, { agentId: entry.id });
1297
+ return {
1298
+ agentId: entry.id,
1299
+ name: entry.name,
1300
+ isDefault: entry.id === localAgents.defaultAgentId,
1301
+ heartbeat: resolveHeartbeatSummary(cfg, entry.id),
1302
+ sessions: buildSessionSummary(storePath)
1303
+ };
1304
+ });
1305
+ const resolvedAgents = agents.length > 0 ? agents : fallbackAgents;
1306
+ const displayAgents = opts.verbose ? resolvedAgents : resolvedAgents.filter((agent) => agent.agentId === defaultAgentId);
1307
+ const channelBindings = buildChannelAccountBindings(cfg);
1308
+ if (debugEnabled) {
1309
+ runtime.log(info("[debug] local channel accounts"));
1310
+ for (const plugin of listChannelPlugins()) {
1311
+ const accountIds = plugin.config.listAccountIds(cfg);
1312
+ const defaultAccountId = resolveChannelDefaultAccountId({
1313
+ plugin,
1314
+ cfg,
1315
+ accountIds
1316
+ });
1317
+ runtime.log(` ${plugin.id}: accounts=${accountIds.join(", ") || "(none)"} default=${defaultAccountId}`);
1318
+ for (const accountId of accountIds) {
1319
+ const account = plugin.config.resolveAccount(cfg, accountId);
1320
+ const record = asRecord(account);
1321
+ const tokenSource = record && typeof record.tokenSource === "string" ? record.tokenSource : void 0;
1322
+ const configured = plugin.config.isConfigured ? await plugin.config.isConfigured(account, cfg) : true;
1323
+ runtime.log(` - ${accountId}: configured=${configured}${tokenSource ? ` tokenSource=${tokenSource}` : ""}`);
1324
+ }
1325
+ }
1326
+ runtime.log(info("[debug] bindings map"));
1327
+ for (const [channelId, byAgent] of channelBindings.entries()) {
1328
+ const entries = Array.from(byAgent.entries()).map(([agentId, ids]) => `${agentId}=[${ids.join(", ")}]`);
1329
+ runtime.log(` ${channelId}: ${entries.join(" ")}`);
1330
+ }
1331
+ runtime.log(info("[debug] gateway channel probes"));
1332
+ for (const [channelId, channelSummary] of Object.entries(summary.channels ?? {})) {
1333
+ const accounts = channelSummary.accounts ?? {};
1334
+ const probes = Object.entries(accounts).map(([accountId, accountSummary]) => {
1335
+ const probe = asRecord(accountSummary.probe);
1336
+ const bot = probe ? asRecord(probe.bot) : null;
1337
+ return `${accountId}=${(bot && typeof bot.username === "string" ? bot.username : null) ?? "(no bot)"}`;
1338
+ });
1339
+ runtime.log(` ${channelId}: ${probes.join(", ") || "(none)"}`);
1340
+ }
1341
+ }
1342
+ const channelAccountFallbacks = Object.fromEntries(listChannelPlugins().map((plugin) => {
1343
+ const accountIds = plugin.config.listAccountIds(cfg);
1344
+ const preferred = resolvePreferredAccountId({
1345
+ accountIds,
1346
+ defaultAccountId: resolveChannelDefaultAccountId({
1347
+ plugin,
1348
+ cfg,
1349
+ accountIds
1350
+ }),
1351
+ boundAccounts: channelBindings.get(plugin.id)?.get(defaultAgentId) ?? []
1352
+ });
1353
+ return [plugin.id, [preferred]];
1354
+ }));
1355
+ const accountIdsByChannel = (() => {
1356
+ const entries = displayAgents.length > 0 ? displayAgents : resolvedAgents;
1357
+ const byChannel = {};
1358
+ for (const [channelId, byAgent] of channelBindings.entries()) {
1359
+ const accountIds = [];
1360
+ for (const agent of entries) {
1361
+ const ids = byAgent.get(agent.agentId) ?? [];
1362
+ for (const id of ids) if (!accountIds.includes(id)) accountIds.push(id);
1363
+ }
1364
+ if (accountIds.length > 0) byChannel[channelId] = accountIds;
1365
+ }
1366
+ for (const [channelId, fallbackIds] of Object.entries(channelAccountFallbacks)) if (!byChannel[channelId] || byChannel[channelId].length === 0) byChannel[channelId] = fallbackIds;
1367
+ return byChannel;
1368
+ })();
1369
+ const channelLines = Object.keys(accountIdsByChannel).length > 0 ? formatHealthChannelLines(summary, {
1370
+ accountMode: opts.verbose ? "all" : "default",
1371
+ accountIdsByChannel
1372
+ }) : formatHealthChannelLines(summary, { accountMode: opts.verbose ? "all" : "default" });
1373
+ for (const line of channelLines) runtime.log(styleHealthChannelLine(line, rich));
1374
+ for (const plugin of listChannelPlugins()) {
1375
+ const channelSummary = summary.channels?.[plugin.id];
1376
+ if (!channelSummary || channelSummary.linked !== true) continue;
1377
+ if (!plugin.status?.logSelfId) continue;
1378
+ const boundAccounts = channelBindings.get(plugin.id)?.get(defaultAgentId) ?? [];
1379
+ const accountIds = plugin.config.listAccountIds(cfg);
1380
+ const accountId = resolvePreferredAccountId({
1381
+ accountIds,
1382
+ defaultAccountId: resolveChannelDefaultAccountId({
1383
+ plugin,
1384
+ cfg,
1385
+ accountIds
1386
+ }),
1387
+ boundAccounts
1388
+ });
1389
+ const account = plugin.config.resolveAccount(cfg, accountId);
1390
+ plugin.status.logSelfId({
1391
+ account,
1392
+ cfg,
1393
+ runtime,
1394
+ includeChannelPrefix: true
1395
+ });
1396
+ }
1397
+ if (resolvedAgents.length > 0) {
1398
+ const agentLabels = resolvedAgents.map((agent) => agent.isDefault ? `${agent.agentId} (default)` : agent.agentId);
1399
+ runtime.log(info(`Agents: ${agentLabels.join(", ")}`));
1400
+ }
1401
+ const heartbeatParts = displayAgents.map((agent) => {
1402
+ const everyMs = agent.heartbeat?.everyMs;
1403
+ return `${everyMs ? formatDurationParts(everyMs) : "disabled"} (${agent.agentId})`;
1404
+ }).filter(Boolean);
1405
+ if (heartbeatParts.length > 0) runtime.log(info(`Heartbeat interval: ${heartbeatParts.join(", ")}`));
1406
+ if (displayAgents.length === 0) {
1407
+ runtime.log(info(`Session store: ${summary.sessions.path} (${summary.sessions.count} entries)`));
1408
+ if (summary.sessions.recent.length > 0) for (const r of summary.sessions.recent) runtime.log(`- ${r.key} (${r.updatedAt ? `${Math.round((Date.now() - r.updatedAt) / 6e4)}m ago` : "no activity"})`);
1409
+ } else for (const agent of displayAgents) {
1410
+ runtime.log(info(`Session store (${agent.agentId}): ${agent.sessions.path} (${agent.sessions.count} entries)`));
1411
+ if (agent.sessions.recent.length > 0) for (const r of agent.sessions.recent) runtime.log(`- ${r.key} (${r.updatedAt ? `${Math.round((Date.now() - r.updatedAt) / 6e4)}m ago` : "no activity"})`);
1412
+ }
1413
+ }
1414
+ }
1415
+
1416
+ //#endregion
1417
+ export { styleHealthChannelLine as a, setHeartbeatsEnabled as c, health_exports as i, startHeartbeatRunner as l, getHealthSnapshot as n, resolveHeartbeatSummaryForAgent as o, healthCommand as r, runHeartbeatOnce as s, formatHealthChannelLines as t };