remoteclaw 0.1.0-next.2abd2fa → 0.1.0-next.2e9a6cd

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 (1052) hide show
  1. package/README.md +9 -7
  2. package/dist/accounts-A8jZK_v9.js +272 -0
  3. package/dist/accounts-BegPt5VR.js +36 -0
  4. package/dist/accounts-BmiimLpP.js +47 -0
  5. package/dist/accounts-Bomfgw0M.js +32 -0
  6. package/dist/accounts-Bpk-loA6.js +47 -0
  7. package/dist/accounts-DAdUdbPk.js +36 -0
  8. package/dist/accounts-WYyfAiie.js +270 -0
  9. package/dist/ack-reactions-CMDRj7fJ.js +446 -0
  10. package/dist/ack-reactions-D7VScSny.js +446 -0
  11. package/dist/acp-cli-BpMS0SsZ.js +1323 -0
  12. package/dist/acp-cli-DkXTlCpF.js +1317 -0
  13. package/dist/active-listener--FT8ewxl.js +37 -0
  14. package/dist/active-listener-C1StcdIA.js +37 -0
  15. package/dist/agent-C76P7tEr.js +703 -0
  16. package/dist/agent-helpers-CK3Obbsi.js +400 -0
  17. package/dist/agent-helpers-KHUla1K7.js +400 -0
  18. package/dist/agent-scope-BrDeaWWf.js +116 -0
  19. package/dist/agent-scope-DxqtYjuJ.js +114 -0
  20. package/dist/agent-ue8p9AIv.js +704 -0
  21. package/dist/agents--24oKN80.js +788 -0
  22. package/dist/agents.config-CWAUoPzG.js +116 -0
  23. package/dist/agents.config-Ck45E_ce.js +116 -0
  24. package/dist/audio-B85HoT7E.js +43 -0
  25. package/dist/audio-BbCUzndz.js +43 -0
  26. package/dist/audio-preflight-B3f0x3zu.js +69 -0
  27. package/dist/audio-preflight-Dv76vFTu.js +64 -0
  28. package/dist/audit-BAbBf2MU.js +3149 -0
  29. package/dist/audit-g55SYz1m.js +3149 -0
  30. package/dist/auth-Bq44qPUd.js +448 -0
  31. package/dist/auth-CVfoI--S.js +281 -0
  32. package/dist/auth-DTWpZJ1a.js +279 -0
  33. package/dist/auth-VItd2pwK.js +448 -0
  34. package/dist/banner-CyPQJybO.js +294 -0
  35. package/dist/binaries-DbgLoSWv.js +13 -0
  36. package/dist/bindings-6KojDoIi.js +69 -0
  37. package/dist/bindings-B6icMMUx.js +69 -0
  38. package/dist/bonjour-discovery-CQU4QbLK.js +378 -0
  39. package/dist/bonjour-discovery-D8aOnk3M.js +378 -0
  40. package/dist/boot/handler.js +42 -69
  41. package/dist/browser-cli-BH41geGr.js +1693 -0
  42. package/dist/browser-cli-u4nrjp1h.js +1688 -0
  43. package/dist/build-info.json +3 -3
  44. package/dist/call-CMDcRlGW.js +2826 -0
  45. package/dist/call-D5YKTYSM.js +2827 -0
  46. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  47. package/dist/catalog-CUY_iTaG.js +185 -0
  48. package/dist/catalog-p6W09S2j.js +185 -0
  49. package/dist/channel-account-context-CA2m93Kt.js +550 -0
  50. package/dist/channel-account-context-Las-t6RP.js +550 -0
  51. package/dist/channel-activity-BD603ehL.js +94 -0
  52. package/dist/channel-activity-CwiF_QMr.js +94 -0
  53. package/dist/channel-activity-daCpxHdT.js +292 -0
  54. package/dist/channel-options-CAlClffy.js +33 -0
  55. package/dist/channel-options-Hl_ep3UG.js +32 -0
  56. package/dist/channel-selection-CHJ7TumC.js +51 -0
  57. package/dist/channel-selection-DR7eW8UG.js +51 -0
  58. package/dist/channel-web-B79j9fSC.js +2134 -0
  59. package/dist/channel-web-DHTTcipm.js +2136 -0
  60. package/dist/channels-cli-DeZ95hcx.js +1427 -0
  61. package/dist/channels-cli-eUCi6jXk.js +1422 -0
  62. package/dist/channels-status-issues-By77REbh.js +18 -0
  63. package/dist/channels-status-issues-DXyOO-KH.js +18 -0
  64. package/dist/chat-envelope-BEDutlnF.js +248 -0
  65. package/dist/chat-envelope-vJJUdDE7.js +248 -0
  66. package/dist/chrome-BuAi16Rq.js +1732 -0
  67. package/dist/chrome-IR-2ukph.js +1733 -0
  68. package/dist/chunk-C1mQSjas.js +341 -0
  69. package/dist/chunk-D7VX4pmT.js +341 -0
  70. package/dist/clack-prompter-BX8SVxtP.js +122 -0
  71. package/dist/clack-prompter-D6HhVlZW.js +121 -0
  72. package/dist/cleanup-utils-DNd0wdKZ.js +94 -0
  73. package/dist/cli/daemon-cli.js +1 -1
  74. package/dist/cli-CK4Y43rx.js +131 -0
  75. package/dist/cli-Cha5Uk29.js +126 -0
  76. package/dist/clipboard-Cbj3McM_.js +31 -0
  77. package/dist/clipboard-Ne8gaWea.js +31 -0
  78. package/dist/command-format-D0vKipG9.js +32 -0
  79. package/dist/command-format-KkslAzwV.js +18 -0
  80. package/dist/command-logger/handler.js +3 -3
  81. package/dist/command-registry-07zlvSN8.js +215 -0
  82. package/dist/commands-DChC3pIF.js +41 -0
  83. package/dist/commands-DFHMoQgH.js +41 -0
  84. package/dist/commands-registry-BN04GIlJ.js +891 -0
  85. package/dist/commands-registry-DbS9NHeX.js +892 -0
  86. package/dist/common-DHHHAcmR.js +156 -0
  87. package/dist/common-De-Lakuh.js +156 -0
  88. package/dist/completion-cli--Jcg794c.js +452 -0
  89. package/dist/completion-cli-B8n7umme.js +452 -0
  90. package/dist/config-BupC6eiJ.js +4223 -0
  91. package/dist/config-CHDaGquZ.js +4225 -0
  92. package/dist/config-cli-Cu79BThx.js +242 -0
  93. package/dist/config-cli-DrJtiyW-.js +247 -0
  94. package/dist/config-guard-BLsqW1qt.js +98 -0
  95. package/dist/config-guard-NQ7jaYM4.js +75 -0
  96. package/dist/config-validation-BLllMW0t.js +18 -0
  97. package/dist/config-validation-DT29VEco.js +18 -0
  98. package/dist/configure-B25UEQnQ.js +889 -0
  99. package/dist/configure-CqMUE4Zw.js +891 -0
  100. package/dist/constants-BbAEYzFC.js +70 -0
  101. package/dist/constants-tLOgmZZ1.js +70 -0
  102. package/dist/control-auth-BFbDXKLK.js +397 -0
  103. package/dist/control-auth-BiiO-FNy.js +397 -0
  104. package/dist/control-ui/assets/index-CuY3pfh1.js +7716 -0
  105. package/dist/control-ui/assets/index-CuY3pfh1.js.map +1 -0
  106. package/dist/control-ui/assets/index-D_fjkN3g.css +1 -0
  107. package/dist/control-ui/index.html +2 -2
  108. package/dist/control-ui-assets-BlpSXjlT.js +186 -0
  109. package/dist/control-ui-assets-eJU2-yvs.js +186 -0
  110. package/dist/conversation-label-Bn5j3lUT.js +36 -0
  111. package/dist/conversation-label-L0QTtKji.js +36 -0
  112. package/dist/cron-cli-BV1o0UgM.js +491 -0
  113. package/dist/cron-cli-C8j-P8GF.js +496 -0
  114. package/dist/daemon-cli-BDvU0Xv6.js +1199 -0
  115. package/dist/daemon-cli-CoNl2Ugf.js +1197 -0
  116. package/dist/daemon-cli.js +53 -97
  117. package/dist/daemon-install-BMEnzWwq.js +60 -0
  118. package/dist/daemon-install-BkUJbdPC.js +55 -0
  119. package/dist/daemon-install-helpers-B9kMxC1v.js +462 -0
  120. package/dist/daemon-install-helpers-DoYR5z4H.js +462 -0
  121. package/dist/deliver-D8P9_nk-.js +481 -0
  122. package/dist/deliver-F9ed3dhp.js +481 -0
  123. package/dist/delivery-queue-B6TuHppj.js +244 -0
  124. package/dist/delivery-queue-BZc3AiGu.js +244 -0
  125. package/dist/devices-cli-DZgxMNLD.js +322 -0
  126. package/dist/devices-cli-DlG9ehK0.js +317 -0
  127. package/dist/diagnostics-CK2HGAFw.js +46 -0
  128. package/dist/diagnostics-G-C-IuxO.js +46 -0
  129. package/dist/directory-cli-CY6tHRIZ.js +218 -0
  130. package/dist/directory-cli-HyvRJ1Ua.js +223 -0
  131. package/dist/dm-policy-shared-1FdjwGtJ.js +22 -0
  132. package/dist/dm-policy-shared-CT3er5HI.js +22 -0
  133. package/dist/dns-cli-Cu-wYvll.js +203 -0
  134. package/dist/dns-cli-DQdnNJh4.js +198 -0
  135. package/dist/dock-D038fZZl.js +929 -0
  136. package/dist/dock-D5pZ3a44.js +928 -0
  137. package/dist/doctor-completion-BrHnayfU.js +92 -0
  138. package/dist/doctor-completion-CoZP2KiR.js +92 -0
  139. package/dist/doctor-config-flow-DJ1nWCTZ.js +1935 -0
  140. package/dist/doctor-config-flow-DYhXUwEq.js +1934 -0
  141. package/dist/enable-B5dIjgnm.js +59 -0
  142. package/dist/enable-FmiEY4ng.js +59 -0
  143. package/dist/entry.js +14 -16
  144. package/dist/env-DUb5GiQe.js +60 -0
  145. package/dist/env-vars-C8WMB8Ix.js +93 -0
  146. package/dist/errors-CdmXrBic.js +35 -0
  147. package/dist/errors-DdLfwEVi.js +35 -0
  148. package/dist/exec-BhkXWg7V.js +164 -0
  149. package/dist/exec-ClUTXFZ9.js +164 -0
  150. package/dist/export-html/template.css +0 -36
  151. package/dist/export-html/template.js +1 -32
  152. package/dist/extensionAPI.js +1015 -142
  153. package/dist/fetch-CCuD0LYV.js +67 -0
  154. package/dist/fetch-JBWLkOpL.js +67 -0
  155. package/dist/fetch-oku6r8tJ.js +67 -0
  156. package/dist/file-lock-6NXMPZTT.js +107 -0
  157. package/dist/file-lock-Ks-RPU6W.js +107 -0
  158. package/dist/fs-safe-93aDW4mH.js +98 -0
  159. package/dist/fs-safe-ACrBwOF5.js +88 -0
  160. package/dist/gateway-cli-CJs4Mxlv.js +23730 -0
  161. package/dist/gateway-cli-gUVR20v7.js +23725 -0
  162. package/dist/gateway-rpc-CSdrtPzg.js +28 -0
  163. package/dist/gateway-rpc-PNA_wUoe.js +28 -0
  164. package/dist/gmail-setup-utils-DNZEf6T0.js +422 -0
  165. package/dist/gmail-setup-utils-KPAKWwGy.js +423 -0
  166. package/dist/health-BCidscV-.js +1417 -0
  167. package/dist/health-Cw2dr19V.js +1414 -0
  168. package/dist/health-format-DOhfU1rY.js +28 -0
  169. package/dist/heartbeat-visibility-C5Vxudi9.js +125 -0
  170. package/dist/heartbeat-visibility-DHeZ-ko1.js +125 -0
  171. package/dist/help-format-Ch0EWh7N.js +17 -0
  172. package/dist/helpers-B4NWktS8.js +10 -0
  173. package/dist/hook-runner-global-Vj-YQxeR.js +527 -0
  174. package/dist/hooks-cli---vy0V0j.js +1218 -0
  175. package/dist/hooks-cli-CX-JUHdJ.js +1223 -0
  176. package/dist/image-ops-DMl7j7f4.js +354 -0
  177. package/dist/image-ops-DpkTOzhI.js +354 -0
  178. package/dist/import-DIjlFm_Y.js +493 -0
  179. package/dist/import-DdQvVR-_.js +495 -0
  180. package/dist/inbound-context-CmmmT8IP.js +68 -0
  181. package/dist/inbound-context-oxIWzEgc.js +68 -0
  182. package/dist/inbound-path-policy-BdmTOUka.js +90 -0
  183. package/dist/inbound-path-policy-DYTLjca8.js +90 -0
  184. package/dist/index.js +106 -105
  185. package/dist/inspect-C9d1V-lI.js +559 -0
  186. package/dist/inspect-rHjRqr3W.js +559 -0
  187. package/dist/installs-QUjSL2ZA.js +325 -0
  188. package/dist/installs-vT5wnxC4.js +325 -0
  189. package/dist/ipv4-DdcyK1aU.js +46 -0
  190. package/dist/ipv4-OHvujh00.js +46 -0
  191. package/dist/ir-CnMQRFBu.js +940 -0
  192. package/dist/json-files-BiA_B-xm.js +46 -0
  193. package/dist/links-CIHbVNO_.js +15 -0
  194. package/dist/loader-CYigLbch.js +22404 -0
  195. package/dist/loader-ElWX62xE.js +22401 -0
  196. package/dist/local-roots-B0QcJDJI.js +313 -0
  197. package/dist/local-roots-BfXsZRkm.js +314 -0
  198. package/dist/logger-BtwpYD7c.js +49 -0
  199. package/dist/logging-CLc3Umm0.js +20 -0
  200. package/dist/login-C8jHYLxN.js +61 -0
  201. package/dist/login-D__FYZX9.js +62 -0
  202. package/dist/login-qr-C0Gd6ybl.js +323 -0
  203. package/dist/login-qr-D7dw54Yp.js +328 -0
  204. package/dist/logs-cli-CFOVARdJ.js +234 -0
  205. package/dist/logs-cli-DtAR__VH.js +239 -0
  206. package/dist/markdown-tables-ChBqQA_Q.js +29 -0
  207. package/dist/markdown-tables-xMuH3QnS.js +29 -0
  208. package/dist/media-CmiNXiOZ.js +10453 -0
  209. package/dist/media-DYopaoc0.js +940 -0
  210. package/dist/message-action-names-CACBi-HB.js +2521 -0
  211. package/dist/message-action-names-CFwlz01T.js +2521 -0
  212. package/dist/message-channel-DF4I2vOK.js +91 -0
  213. package/dist/net-COL170MG.js +225 -0
  214. package/dist/net-QZ8IHNXc.js +225 -0
  215. package/dist/node-cli-CW8jOcHO.js +24 -0
  216. package/dist/nodes-cli-B4lvU9N5.js +1349 -0
  217. package/dist/nodes-cli-B8iTBsI6.js +1344 -0
  218. package/dist/nodes-screen-CZCXHrWB.js +250 -0
  219. package/dist/nodes-screen-C_K1vcS5.js +250 -0
  220. package/dist/note-BVerR3D5.js +92 -0
  221. package/dist/note-Dk8-EaJg.js +92 -0
  222. package/dist/npm-registry-spec-Dma0KHft.js +786 -0
  223. package/dist/npm-registry-spec-vYkxZb6u.js +786 -0
  224. package/dist/npm-resolution-CcZYnzrL.js +86 -0
  225. package/dist/npm-resolution-DsATEEGx.js +86 -0
  226. package/dist/onboard-Csm4bDd_.js +438 -0
  227. package/dist/onboard-D1b535pC.js +436 -0
  228. package/dist/onboard-channels-5EIXyDZh.js +2547 -0
  229. package/dist/onboard-channels-bedB47Hs.js +2548 -0
  230. package/dist/onboard-config-CcPV3Cqz.js +39 -0
  231. package/dist/onboard-config-DcTaxmuf.js +39 -0
  232. package/dist/onboard-helpers-BHNXyhA4.js +364 -0
  233. package/dist/onboard-helpers-eTUU00t8.js +363 -0
  234. package/dist/onboard-remote-DwDKQk1K.js +127 -0
  235. package/dist/onboard-remote-TPbiye5m.js +127 -0
  236. package/dist/onboarding-D0YGZ_Ux.js +588 -0
  237. package/dist/onboarding-DCfmKzl2.js +586 -0
  238. package/dist/onboarding.finalize-BhpsVwME.js +399 -0
  239. package/dist/onboarding.finalize-CY8vgmi9.js +402 -0
  240. package/dist/onboarding.gateway-config-C_eqpJ7D.js +192 -0
  241. package/dist/onboarding.gateway-config-DR1ey6tU.js +199 -0
  242. package/dist/outbound-Be4BgVqF.js +220 -0
  243. package/dist/outbound-CXJLn8kn.js +221 -0
  244. package/dist/outbound-attachment-CbNLn0lk.js +18 -0
  245. package/dist/outbound-attachment-DNCMF74c.js +18 -0
  246. package/dist/outbound-attachment-DaStRTGv.js +18 -0
  247. package/dist/pairing-cli-CxGDUsLT.js +128 -0
  248. package/dist/pairing-cli-D83T3PG9.js +123 -0
  249. package/dist/pairing-labels-6f8FqSS5.js +9 -0
  250. package/dist/pairing-labels-CI5j-OUT.js +9 -0
  251. package/dist/pairing-store-DnTHRcnO.js +459 -0
  252. package/dist/pairing-store-ONzqxcNb.js +460 -0
  253. package/dist/path-env-D7VB7sOO.js +89 -0
  254. package/dist/path-env-DFiYvvI-.js +89 -0
  255. package/dist/path-safety-BshBsw4P.js +14 -0
  256. package/dist/path-safety-CZbhQciI.js +14 -0
  257. package/dist/plugin-auto-enable-BnCQKkIK.js +302 -0
  258. package/dist/plugin-auto-enable-CFRs-pcA.js +301 -0
  259. package/dist/plugin-registry-CV5pfXOU.js +33 -0
  260. package/dist/plugin-registry-CmG34W0u.js +33 -0
  261. package/dist/plugin-sdk/agents/agent-helpers.d.ts +0 -1
  262. package/dist/plugin-sdk/agents/agent-scope.d.ts +10 -0
  263. package/dist/plugin-sdk/agents/agent-types.d.ts +1 -6
  264. package/dist/plugin-sdk/agents/agent-utils.d.ts +0 -14
  265. package/dist/plugin-sdk/agents/provider-utils.d.ts +0 -1
  266. package/dist/plugin-sdk/agents/subagent-spawn.d.ts +0 -1
  267. package/dist/plugin-sdk/agents/tools/sessions-helpers.d.ts +0 -1
  268. package/dist/plugin-sdk/auth/constants.d.ts +16 -0
  269. package/dist/plugin-sdk/auth/display.d.ts +7 -0
  270. package/dist/plugin-sdk/auth/doctor.d.ts +8 -0
  271. package/dist/plugin-sdk/auth/env-injection.d.ts +41 -0
  272. package/dist/plugin-sdk/auth/index.d.ts +8 -0
  273. package/dist/plugin-sdk/auth/oauth.d.ts +14 -0
  274. package/dist/plugin-sdk/auth/provider-auth.d.ts +40 -0
  275. package/dist/plugin-sdk/auth/session-override.d.ts +18 -0
  276. package/dist/plugin-sdk/auto-reply/reply/agent-runner-execution.d.ts +0 -1
  277. package/dist/plugin-sdk/auto-reply/reply/agent-runner-utils.d.ts +0 -2
  278. package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +1 -4
  279. package/dist/plugin-sdk/auto-reply/reply/commands-types.d.ts +1 -4
  280. package/dist/plugin-sdk/auto-reply/reply/directive-handling.levels.d.ts +1 -7
  281. package/dist/plugin-sdk/auto-reply/reply/directive-handling.params.d.ts +1 -4
  282. package/dist/plugin-sdk/auto-reply/reply/directive-handling.parse.d.ts +1 -7
  283. package/dist/plugin-sdk/auto-reply/reply/directive-handling.shared.d.ts +1 -4
  284. package/dist/plugin-sdk/auto-reply/reply/directives.d.ts +3 -15
  285. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +1 -5
  286. package/dist/plugin-sdk/auto-reply/reply/get-reply-inline-actions.d.ts +1 -5
  287. package/dist/plugin-sdk/auto-reply/reply/get-reply-run.d.ts +1 -5
  288. package/dist/plugin-sdk/auto-reply/reply/queue/types.d.ts +1 -3
  289. package/dist/plugin-sdk/auto-reply/reply/response-prefix-template.d.ts +4 -6
  290. package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +0 -7
  291. package/dist/plugin-sdk/auto-reply/reply/session-updates.d.ts +0 -10
  292. package/dist/plugin-sdk/auto-reply/reply.d.ts +1 -1
  293. package/dist/plugin-sdk/auto-reply/status.d.ts +2 -6
  294. package/dist/plugin-sdk/auto-reply/thinking.d.ts +0 -11
  295. package/dist/plugin-sdk/auto-reply/types.d.ts +1 -2
  296. package/dist/plugin-sdk/commands/agent/session.d.ts +1 -2
  297. package/dist/plugin-sdk/config/defaults.d.ts +0 -1
  298. package/dist/plugin-sdk/config/sessions/types.d.ts +0 -8
  299. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +28 -112
  300. package/dist/plugin-sdk/config/types.agents.d.ts +8 -0
  301. package/dist/plugin-sdk/config/types.messages.d.ts +1 -2
  302. package/dist/plugin-sdk/config/types.tools.d.ts +1 -1
  303. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +9 -66
  304. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +5 -13
  305. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +12 -76
  306. package/dist/plugin-sdk/config/zod-schema.d.ts +12 -76
  307. package/dist/plugin-sdk/daemon/constants.d.ts +2 -2
  308. package/dist/plugin-sdk/gateway/protocol/index.d.ts +1 -3
  309. package/dist/plugin-sdk/gateway/protocol/schema/sessions.d.ts +0 -2
  310. package/dist/plugin-sdk/gateway/session-utils.types.d.ts +0 -2
  311. package/dist/plugin-sdk/index.js +108 -134
  312. package/dist/plugin-sdk/middleware/auth-key-retry.d.ts +32 -0
  313. package/dist/plugin-sdk/middleware/channel-bridge.d.ts +4 -0
  314. package/dist/plugin-sdk/middleware/error-classifier.d.ts +5 -0
  315. package/dist/plugin-sdk/middleware/media-resolver.d.ts +12 -0
  316. package/dist/plugin-sdk/middleware/runtime-factory.d.ts +42 -0
  317. package/dist/plugin-sdk/middleware/types.d.ts +33 -1
  318. package/dist/plugin-sdk/plugins/types.d.ts +1 -1
  319. package/dist/plugin-sdk/terminal/palette.d.ts +2 -2
  320. package/dist/plugins-B4waLB_f.js +453 -0
  321. package/dist/plugins-D6-JJ1il.js +455 -0
  322. package/dist/plugins-cli-DG2zHgdP.js +799 -0
  323. package/dist/plugins-cli-DZvQzkWd.js +794 -0
  324. package/dist/ports-BcTKFlWl.js +96 -0
  325. package/dist/ports-DAc2AlZE.js +316 -0
  326. package/dist/ports-HiuYk3bt.js +96 -0
  327. package/dist/ports-dEePqmCq.js +370 -0
  328. package/dist/program-CX-EtQ9W.js +245 -0
  329. package/dist/program-context-R3wsjl2f.js +474 -0
  330. package/dist/progress-DQ1drugY.js +124 -0
  331. package/dist/prompt-edYTUtju.js +21 -0
  332. package/dist/prompt-select-styled-BzL7v1zQ.js +1647 -0
  333. package/dist/prompt-select-styled-g5q4srtu.js +1650 -0
  334. package/dist/prompt-style-CYEpbwXH.js +9 -0
  335. package/dist/provider-dispatcher-D7qFGoUR.js +660 -0
  336. package/dist/provider-dispatcher-dB_rm6tV.js +659 -0
  337. package/dist/push-apns-DQwR-i4_.js +713 -0
  338. package/dist/push-apns-Dj5RApCY.js +711 -0
  339. package/dist/pw-ai-DOQMJFB-.js +1911 -0
  340. package/dist/pw-ai-oqtYDmjQ.js +1907 -0
  341. package/dist/qr-cli-CBGm_Cik.js +353 -0
  342. package/dist/qr-cli-D2jZPdW9.js +348 -0
  343. package/dist/redact-gXuh8MFk.js +191 -0
  344. package/dist/redact-snapshot-B-2V56Yb.js +2016 -0
  345. package/dist/redact-snapshot-CD36XSYE.js +2016 -0
  346. package/dist/register.agent-DLSuiqWE.js +287 -0
  347. package/dist/register.agent-DcvEt3hG.js +1044 -0
  348. package/dist/register.configure-3edoYZai.js +131 -0
  349. package/dist/register.configure-CyOJCmnY.js +125 -0
  350. package/dist/register.import-Cku0T-PA.js +31 -0
  351. package/dist/register.import-Dr8TiUVx.js +28 -0
  352. package/dist/register.maintenance-5aaPQbJk.js +495 -0
  353. package/dist/register.maintenance-DPSswZDJ.js +498 -0
  354. package/dist/register.message-BaSVFv92.js +682 -0
  355. package/dist/register.message-FEI0RiNN.js +687 -0
  356. package/dist/register.onboard-CO1UZL-9.js +258 -0
  357. package/dist/register.onboard-DuLKxjXl.js +263 -0
  358. package/dist/register.setup-CFYYd_Ev.js +115 -0
  359. package/dist/register.setup-P0UHDBMS.js +110 -0
  360. package/dist/register.status-health-sessions-D_3vm2yw.js +424 -0
  361. package/dist/register.status-health-sessions-z9x79dmg.js +665 -0
  362. package/dist/register.subclis-B-d970d6.js +267 -0
  363. package/dist/replies-BvarRpHb.js +136 -0
  364. package/dist/replies-CSzm5168.js +136 -0
  365. package/dist/reply-CTgksTO1.js +13695 -0
  366. package/dist/reply-CUyafs4J.js +13692 -0
  367. package/dist/reply-directives-Caq4zVTg.js +182 -0
  368. package/dist/reply-directives-D91fapDF.js +182 -0
  369. package/dist/reply-payloads-te0YnESs.js +527 -0
  370. package/dist/reply-prefix-Bv8Mv9q8.js +37 -0
  371. package/dist/reply-prefix-Rk_UEaJa.js +37 -0
  372. package/dist/resolve-route-BPa6q23t.js +249 -0
  373. package/dist/resolve-route-CN9BEALz.js +249 -0
  374. package/dist/response-prefix-template-D-ptXREi.js +134 -0
  375. package/dist/response-prefix-template-Dckjdftg.js +134 -0
  376. package/dist/retry-BcZuGfnV.js +77 -0
  377. package/dist/retry-BzWBtFpP.js +77 -0
  378. package/dist/run-main-BugUkGES.js +303 -0
  379. package/dist/runner-CVMXkHe9.js +2295 -0
  380. package/dist/runner-DOWTBU0-.js +2295 -0
  381. package/dist/runtime-guard-CXt4yzo-.js +60 -0
  382. package/dist/secure-random-CBwDBdj1.js +44 -0
  383. package/dist/security-cli-BQzdzJUp.js +479 -0
  384. package/dist/security-cli-D2d8RvsT.js +485 -0
  385. package/dist/send-B3G3I3II.js +349 -0
  386. package/dist/send-B6IB6ELR.js +547 -0
  387. package/dist/send-BT8XEvZB.js +332 -0
  388. package/dist/send-BTupAHVX.js +2245 -0
  389. package/dist/send-BZCfto_I.js +1174 -0
  390. package/dist/send-C5EDjThR.js +492 -0
  391. package/dist/send-CBM54hgN.js +349 -0
  392. package/dist/send-CPBd6ItT.js +29 -0
  393. package/dist/send-CzYm7ULP.js +2245 -0
  394. package/dist/send-D2m_x8xM.js +374 -0
  395. package/dist/send-DmEBPE2S.js +1779 -0
  396. package/dist/send-Dt4iCx61.js +426 -0
  397. package/dist/send-MWjpLHEV.js +11 -0
  398. package/dist/send-qpwqt34s.js +547 -0
  399. package/dist/send-rW25uKNz.js +1776 -0
  400. package/dist/send-uqa6CNuP.js +492 -0
  401. package/dist/server-BhmYVCED.js +201 -0
  402. package/dist/server-DaUw1o2B.js +206 -0
  403. package/dist/server-lifecycle-BeZsBQwF.js +2437 -0
  404. package/dist/server-lifecycle-C2F1_TE2.js +2437 -0
  405. package/dist/server-node-events-DoRFbKCT.js +390 -0
  406. package/dist/server-node-events-jbbbt-4R.js +395 -0
  407. package/dist/service-BDt-zUvV.js +670 -0
  408. package/dist/service-Os7W1F2S.js +670 -0
  409. package/dist/session-B9KGKVrY.js +170 -0
  410. package/dist/session-DzAupDyj.js +170 -0
  411. package/dist/session-cost-usage-BYCI739a.js +627 -0
  412. package/dist/session-cost-usage-DGsPcuMj.js +627 -0
  413. package/dist/session-dirs-BIg5RHAh.js +947 -0
  414. package/dist/session-dirs-DwDxjK1p.js +947 -0
  415. package/dist/session-utils-BgWDCbyx.js +622 -0
  416. package/dist/session-utils-CxxOeC1M.js +622 -0
  417. package/dist/sessions-Bwu0l_CG.js +2569 -0
  418. package/dist/sessions-CiuFFCnt.js +247 -0
  419. package/dist/shell-env-CsV_IkJj.js +163 -0
  420. package/dist/shell-env-hZW9j-Uc.js +163 -0
  421. package/dist/ssrf-B-rF_tZB.js +183 -0
  422. package/dist/ssrf-D6fl_7ww.js +183 -0
  423. package/dist/status-BOFm7iyj.js +2065 -0
  424. package/dist/status-RI2y_M21.js +2061 -0
  425. package/dist/status.update-DbO7izip.js +79 -0
  426. package/dist/status.update-wXyvcztI.js +79 -0
  427. package/dist/store-BLGrRL_E.js +64 -0
  428. package/dist/store-BYhcsOLr.js +64 -0
  429. package/dist/store-Dv76bGHg.js +2571 -0
  430. package/dist/store-Dw93tSB-.js +53 -0
  431. package/dist/subagent-registry-DWL-tayF.js +4856 -0
  432. package/dist/subagent-registry-HjR1tO3-.js +4854 -0
  433. package/dist/subsystem-BCkt9Ocb.js +1079 -0
  434. package/dist/subsystem-BgxIzx7w.js +1137 -0
  435. package/dist/system-cli-DtrDDmCt.js +71 -0
  436. package/dist/system-cli-xDr_Yyaa.js +76 -0
  437. package/dist/systemd-BlbIQ1PV.js +547 -0
  438. package/dist/systemd-DzXePo7r.js +547 -0
  439. package/dist/systemd-linger-mLbBF4pa.js +75 -0
  440. package/dist/systemd-linger-qlGGW2JB.js +75 -0
  441. package/dist/table-V_9n7CjP.js +279 -0
  442. package/dist/tables-Cy3gObW7.js +55 -0
  443. package/dist/tables-DAuk-Y6F.js +55 -0
  444. package/dist/tables-DRh09aPZ.js +55 -0
  445. package/dist/tailnet-BoTa0e2q.js +40 -0
  446. package/dist/tailnet-Cy0Q27lj.js +40 -0
  447. package/dist/tailscale-CiWkh0vS.js +230 -0
  448. package/dist/tailscale-Driw3j8E.js +230 -0
  449. package/dist/targets-3hewwPvM.js +120 -0
  450. package/dist/targets-Bkw_co-B.js +220 -0
  451. package/dist/targets-C1Tt0ZWd.js +2406 -0
  452. package/dist/targets-CsrqF2M4.js +650 -0
  453. package/dist/targets-DKriCISG.js +53 -0
  454. package/dist/targets-DTM2OPnS.js +650 -0
  455. package/dist/targets-DhhaK2xG.js +53 -0
  456. package/dist/targets-tDrl_ioQ.js +46 -0
  457. package/dist/targets-yq1kGK1_.js +2407 -0
  458. package/dist/thinking-XA5P_zFw.js +88 -0
  459. package/dist/thinking-l-rrvZwu.js +88 -0
  460. package/dist/tokens-7ZtWRjA3.js +21 -0
  461. package/dist/tool-display-AxpSXZVq.js +785 -0
  462. package/dist/tool-display-D6GD-41Y.js +785 -0
  463. package/dist/tool-images-D16vIWPg.js +263 -0
  464. package/dist/tool-images-IVIZ29ID.js +263 -0
  465. package/dist/trash--8b4GDyV.js +125 -0
  466. package/dist/trash-ivbG2QWV.js +125 -0
  467. package/dist/tui-Cbe1EW-B.js +3319 -0
  468. package/dist/tui-Dj3XrTCV.js +3319 -0
  469. package/dist/tui-cli-EGqEcdfE.js +64 -0
  470. package/dist/tui-cli-KKmqnNs2.js +59 -0
  471. package/dist/update-DruVguh4.js +349 -0
  472. package/dist/update-cli-C5tdQeGG.js +1371 -0
  473. package/dist/update-cli-Canq11sh.js +1374 -0
  474. package/dist/update-y8nz-3OC.js +349 -0
  475. package/dist/usage-CAuX4vsd.js +5384 -0
  476. package/dist/utils-C5daYcFn.js +631 -0
  477. package/dist/web-B9gR_cGR.js +3071 -0
  478. package/dist/web-DZ8ahrhK.js +77 -0
  479. package/dist/web-DkYPsnyd.js +71 -0
  480. package/dist/webhooks-cli-DFqGwW1f.js +329 -0
  481. package/dist/webhooks-cli-y-E-q0Xo.js +334 -0
  482. package/dist/whatsapp-actions-BXIe-Uei.js +123 -0
  483. package/dist/whatsapp-actions-BictxOCB.js +129 -0
  484. package/dist/widearea-dns-fHQt5-Q3.js +127 -0
  485. package/dist/workspace-DvbSDgO_.js +449 -0
  486. package/dist/workspace-zLfKNRwR.js +447 -0
  487. package/dist/zod-schema-B9RGngMW.js +2696 -0
  488. package/dist/zod-schema-D3hQ5SKe.js +2696 -0
  489. package/extensions/matrix/src/matrix/monitor/replies.ts +0 -24
  490. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +0 -1
  491. package/package.json +3 -3
  492. package/dist/accounts-BFy_Z3od.js +0 -272
  493. package/dist/accounts-BTXSfPWi.js +0 -270
  494. package/dist/accounts-BxGS70Do.js +0 -36
  495. package/dist/accounts-CNY1TGj1.js +0 -47
  496. package/dist/accounts-DBohBlww.js +0 -32
  497. package/dist/accounts-DqRQ75w3.js +0 -36
  498. package/dist/accounts-iODF3SK2.js +0 -47
  499. package/dist/ack-reactions-B11TAC2D.js +0 -446
  500. package/dist/ack-reactions-BWVjL4H6.js +0 -446
  501. package/dist/acp-cli-CA1xMmVo.js +0 -1320
  502. package/dist/acp-cli-CGo6fJVZ.js +0 -1326
  503. package/dist/active-listener-VzhWW8W6.js +0 -37
  504. package/dist/active-listener-z0qVEcom.js +0 -37
  505. package/dist/agent-CTizRPIJ.js +0 -732
  506. package/dist/agent-D2RVoS5g.js +0 -731
  507. package/dist/agent-helpers-B6VfZ9_u.js +0 -606
  508. package/dist/agent-helpers-CTx5KKJu.js +0 -606
  509. package/dist/agent-scope-BGYzhtWQ.js +0 -121
  510. package/dist/agent-scope-C50VuLKh.js +0 -119
  511. package/dist/agents-BuYn-obw.js +0 -788
  512. package/dist/agents.config-BSTxuTVd.js +0 -116
  513. package/dist/agents.config-p3V3b9u6.js +0 -116
  514. package/dist/audio-DPOuhNq7.js +0 -43
  515. package/dist/audio-VBcVDa08.js +0 -43
  516. package/dist/audio-preflight-BwmCYeuM.js +0 -64
  517. package/dist/audio-preflight-co8gjlPX.js +0 -69
  518. package/dist/audit-oH4urD3G.js +0 -3138
  519. package/dist/audit-qgtCT3ik.js +0 -3138
  520. package/dist/auth-CAczFgAO.js +0 -448
  521. package/dist/auth-Deh9i9Eg.js +0 -448
  522. package/dist/auth-profiles-BquJGKLC.js +0 -279
  523. package/dist/auth-profiles-D8vKiBPq.js +0 -281
  524. package/dist/banner-Cf978khN.js +0 -294
  525. package/dist/binaries-DXW6oATV.js +0 -13
  526. package/dist/bindings-CRU_udk8.js +0 -69
  527. package/dist/bindings-DQZAu8Wv.js +0 -69
  528. package/dist/bonjour-discovery-DdAk1VyO.js +0 -378
  529. package/dist/bonjour-discovery-DuhiIZZx.js +0 -378
  530. package/dist/browser-cli-CZC4h5V4.js +0 -1687
  531. package/dist/browser-cli-DAgi_aQk.js +0 -1692
  532. package/dist/call-BbwtB9Y-.js +0 -2828
  533. package/dist/call-PivL7Uex.js +0 -2829
  534. package/dist/catalog-BqO6yem_.js +0 -185
  535. package/dist/catalog-DFmaYwfk.js +0 -185
  536. package/dist/channel-account-context-CvIDAtHS.js +0 -550
  537. package/dist/channel-account-context-q-o0pG1A.js +0 -550
  538. package/dist/channel-activity-BaCNOZpP.js +0 -94
  539. package/dist/channel-activity-C-G4n9BK.js +0 -292
  540. package/dist/channel-activity-DTKGf3j5.js +0 -94
  541. package/dist/channel-options-Cyappik_.js +0 -32
  542. package/dist/channel-options-DFnypY5S.js +0 -33
  543. package/dist/channel-selection-BGl53D5K.js +0 -51
  544. package/dist/channel-selection-NNPbxnyZ.js +0 -51
  545. package/dist/channel-web-DmhVkWbP.js +0 -2134
  546. package/dist/channel-web-kRC3UYBJ.js +0 -2136
  547. package/dist/channels-cli-C5XRkPJl.js +0 -1421
  548. package/dist/channels-cli-D6TqCI0m.js +0 -1426
  549. package/dist/channels-status-issues-CUc9mpeW.js +0 -18
  550. package/dist/channels-status-issues-DwRDzwrV.js +0 -18
  551. package/dist/chat-envelope-DEZ-5RY8.js +0 -248
  552. package/dist/chat-envelope-el7Uo-Fe.js +0 -248
  553. package/dist/chrome-0QaGKb3L.js +0 -1732
  554. package/dist/chrome-CFeWdP0Y.js +0 -1733
  555. package/dist/chunk-CSQfUhgF.js +0 -341
  556. package/dist/chunk-D0Y_w4oX.js +0 -341
  557. package/dist/clack-prompter-B7tOxhJd.js +0 -122
  558. package/dist/clack-prompter-CCFnKP_1.js +0 -121
  559. package/dist/cleanup-utils-CqAVZz2b.js +0 -94
  560. package/dist/cli-BR2J3c4l.js +0 -125
  561. package/dist/cli-C1q1vSmN.js +0 -130
  562. package/dist/clipboard-D7_SKHPK.js +0 -31
  563. package/dist/clipboard-Dzkx6Q2K.js +0 -31
  564. package/dist/command-format-CVfo8I5f.js +0 -18
  565. package/dist/command-format-DgXcqxBt.js +0 -32
  566. package/dist/command-registry-CYjvOp8W.js +0 -215
  567. package/dist/commands-CDonBOrw.js +0 -41
  568. package/dist/commands-D_-bgTlO.js +0 -41
  569. package/dist/commands-registry-CWJv6xe2.js +0 -892
  570. package/dist/commands-registry-Ci8_cFk9.js +0 -893
  571. package/dist/common-CMI-qsF8.js +0 -156
  572. package/dist/common-DSVmydhm.js +0 -156
  573. package/dist/completion-cli-8iZJqfmX.js +0 -452
  574. package/dist/completion-cli-CYDjEZSt.js +0 -452
  575. package/dist/config-D5XU45KD.js +0 -6953
  576. package/dist/config-FHu9Bn4R.js +0 -6951
  577. package/dist/config-cli-Gehy4sav.js +0 -241
  578. package/dist/config-cli-RC9qMgJq.js +0 -246
  579. package/dist/config-guard-J-Q_DFWk.js +0 -97
  580. package/dist/config-guard-cB5a_ANg.js +0 -75
  581. package/dist/config-validation-BPNyd9_3.js +0 -18
  582. package/dist/config-validation-BPWuvhVe.js +0 -18
  583. package/dist/configure-CC2XdRRm.js +0 -891
  584. package/dist/configure-DxFBJuhZ.js +0 -889
  585. package/dist/constants-BmRFoHl0.js +0 -67
  586. package/dist/constants-C9WPAluB.js +0 -67
  587. package/dist/control-auth-D0tpV3ts.js +0 -397
  588. package/dist/control-auth-_-0PGRUs.js +0 -397
  589. package/dist/control-ui/assets/index-B4ZM1lW1.js +0 -7738
  590. package/dist/control-ui/assets/index-B4ZM1lW1.js.map +0 -1
  591. package/dist/control-ui/assets/index-PED72sKF.css +0 -1
  592. package/dist/control-ui-assets-Cx_mw4D0.js +0 -186
  593. package/dist/control-ui-assets-W1AUuGrO.js +0 -186
  594. package/dist/conversation-label-C4SDz4sT.js +0 -36
  595. package/dist/conversation-label-D1frnvYe.js +0 -36
  596. package/dist/cron-cli-BzERxhr5.js +0 -495
  597. package/dist/cron-cli-C8j_uslU.js +0 -490
  598. package/dist/daemon-cli-C95XNbX0.js +0 -1199
  599. package/dist/daemon-cli-e6sURMqd.js +0 -1197
  600. package/dist/daemon-install-CcohRvKV.js +0 -55
  601. package/dist/daemon-install-DDshfT0J.js +0 -60
  602. package/dist/daemon-install-helpers-CFGAfRlj.js +0 -462
  603. package/dist/daemon-install-helpers-DIUzSFG1.js +0 -462
  604. package/dist/defaults-B5KStIBg.js +0 -7
  605. package/dist/defaults-xUAL2Z-F.js +0 -7
  606. package/dist/deliver-912khjLK.js +0 -481
  607. package/dist/deliver-D56J4-1F.js +0 -481
  608. package/dist/delivery-queue-Cfa9Wmxp.js +0 -244
  609. package/dist/delivery-queue-CxVRi4tw.js +0 -244
  610. package/dist/devices-cli-0qDhTgZR.js +0 -316
  611. package/dist/devices-cli-6SKMR2bV.js +0 -321
  612. package/dist/diagnostics-99iCgBUh.js +0 -46
  613. package/dist/diagnostics-VC0cz7kX.js +0 -46
  614. package/dist/directory-cli-5YXdoVdn.js +0 -217
  615. package/dist/directory-cli-D3IKCHmn.js +0 -222
  616. package/dist/dm-policy-shared-4rkjhcrM.js +0 -22
  617. package/dist/dm-policy-shared-D8lgnmrC.js +0 -22
  618. package/dist/dns-cli-11CtErVU.js +0 -197
  619. package/dist/dns-cli-SiEd_1Lq.js +0 -202
  620. package/dist/dock-BqNINg7k.js +0 -928
  621. package/dist/dock-CQuu41bw.js +0 -929
  622. package/dist/doctor-completion-BR1SlAT3.js +0 -92
  623. package/dist/doctor-completion-CZwpEhIK.js +0 -92
  624. package/dist/doctor-config-flow-BVkHcvoj.js +0 -1933
  625. package/dist/doctor-config-flow-DVYRn0An.js +0 -1934
  626. package/dist/enable-DcJnkzfz.js +0 -59
  627. package/dist/enable-ibNq4UWy.js +0 -59
  628. package/dist/env-DeF64iu0.js +0 -60
  629. package/dist/env-vars-7aZqKPhk.js +0 -93
  630. package/dist/errors-8F-77i6m.js +0 -35
  631. package/dist/errors-DZ199hOo.js +0 -35
  632. package/dist/exec-DbKuYyM1.js +0 -164
  633. package/dist/exec-DkFE7lqU.js +0 -164
  634. package/dist/fetch-BFSBLBkA.js +0 -67
  635. package/dist/fetch-C6XKGA11.js +0 -67
  636. package/dist/fetch-CEDsOiql.js +0 -67
  637. package/dist/file-lock-CIvloidc.js +0 -107
  638. package/dist/file-lock-CzBL_VIx.js +0 -107
  639. package/dist/fs-safe-DSwT85uK.js +0 -88
  640. package/dist/fs-safe-DkBhNAc3.js +0 -98
  641. package/dist/gateway-cli-BEEZhCHv.js +0 -23747
  642. package/dist/gateway-cli-Nob0g_4y.js +0 -23742
  643. package/dist/gateway-rpc-CksB-N83.js +0 -28
  644. package/dist/gateway-rpc-Dq44SkOv.js +0 -28
  645. package/dist/gmail-setup-utils-Cnx8A5pW.js +0 -422
  646. package/dist/gmail-setup-utils-nkabbKOE.js +0 -423
  647. package/dist/health-RT-F3hzT.js +0 -1423
  648. package/dist/health-SOuaKNRa.js +0 -1420
  649. package/dist/health-format-BG95OE6N.js +0 -28
  650. package/dist/heartbeat-visibility-BxkZjE5m.js +0 -125
  651. package/dist/heartbeat-visibility-CGG-G7px.js +0 -125
  652. package/dist/help-format-DAxf0l_h.js +0 -17
  653. package/dist/helpers-kkeXif0Q.js +0 -10
  654. package/dist/hook-runner-global-DJ14gXFP.js +0 -527
  655. package/dist/hooks-cli-DyEKryW8.js +0 -1217
  656. package/dist/hooks-cli-RuEn0-oy.js +0 -1222
  657. package/dist/image-ops-Bi6JPSkD.js +0 -354
  658. package/dist/image-ops-DWytvdh_.js +0 -354
  659. package/dist/import-D8BBZQgl.js +0 -170
  660. package/dist/import-DQ6NI4Fz.js +0 -168
  661. package/dist/inbound-context-CPkkQW0i.js +0 -68
  662. package/dist/inbound-context-DS_kpIYI.js +0 -68
  663. package/dist/inbound-path-policy-Bg4gZBx-.js +0 -250
  664. package/dist/inbound-path-policy-sdr5Ji0k.js +0 -250
  665. package/dist/inspect-Dt8hogS3.js +0 -559
  666. package/dist/inspect-vYIL1oA0.js +0 -559
  667. package/dist/installs-aM5dWAyn.js +0 -325
  668. package/dist/installs-pWdqG8HL.js +0 -325
  669. package/dist/ipv4--2WXMVtE.js +0 -46
  670. package/dist/ipv4-CDQpx1A7.js +0 -46
  671. package/dist/ir-BpaAMTfW.js +0 -940
  672. package/dist/json-files-DzpTak5i.js +0 -46
  673. package/dist/links-C3soDNDH.js +0 -15
  674. package/dist/loader-Ccwsh8Sh.js +0 -22624
  675. package/dist/loader-y9MhJewT.js +0 -22621
  676. package/dist/local-roots-BrH0Q63K.js +0 -313
  677. package/dist/local-roots-nImrw2WR.js +0 -314
  678. package/dist/logger-Bw3cFE5t.js +0 -49
  679. package/dist/logging-C-nxX2fn.js +0 -20
  680. package/dist/login-C_Kt57nO.js +0 -62
  681. package/dist/login-DOmWDMeP.js +0 -61
  682. package/dist/login-qr-CXU0wC5K.js +0 -322
  683. package/dist/login-qr-D0u6fdeO.js +0 -327
  684. package/dist/logs-cli-CschwP4d.js +0 -238
  685. package/dist/logs-cli-D7ayUvz_.js +0 -233
  686. package/dist/markdown-tables-CrmghPAr.js +0 -29
  687. package/dist/markdown-tables-jrnSPvZ6.js +0 -29
  688. package/dist/media-CojxZ45J.js +0 -10492
  689. package/dist/media-DN7yRfrH.js +0 -940
  690. package/dist/message-action-names-CtEZcmlU.js +0 -2521
  691. package/dist/message-action-names-WglOO_DT.js +0 -2521
  692. package/dist/message-channel-DzJqHVZD.js +0 -91
  693. package/dist/net-Cg8AQeke.js +0 -225
  694. package/dist/net-D6D0wgcF.js +0 -225
  695. package/dist/node-cli-Q2-n3Fgv.js +0 -24
  696. package/dist/nodes-cli-C2SoKfCv.js +0 -1343
  697. package/dist/nodes-cli-CQmlfx0K.js +0 -1348
  698. package/dist/nodes-screen-BR9sYoPa.js +0 -250
  699. package/dist/nodes-screen-Cw7Hv7M2.js +0 -250
  700. package/dist/note-Dlv4NmlQ.js +0 -92
  701. package/dist/note-kvWV4xtw.js +0 -92
  702. package/dist/npm-registry-spec-0qiKawvv.js +0 -786
  703. package/dist/npm-registry-spec-COvUzy5J.js +0 -786
  704. package/dist/npm-resolution-6v_Zm-9G.js +0 -86
  705. package/dist/npm-resolution-BFz7LeoN.js +0 -86
  706. package/dist/onboard-CgyU-mDL.js +0 -407
  707. package/dist/onboard-RI4vNTZd.js +0 -405
  708. package/dist/onboard-channels-DN5JoKPd.js +0 -2548
  709. package/dist/onboard-channels-DyAd1OZr.js +0 -2547
  710. package/dist/onboard-config-BCTthQ7J.js +0 -24
  711. package/dist/onboard-config-y-2cgT0V.js +0 -24
  712. package/dist/onboard-helpers-BCzZUD0z.js +0 -363
  713. package/dist/onboard-helpers-sDc2Ky6H.js +0 -362
  714. package/dist/onboard-remote-CJrMtttl.js +0 -127
  715. package/dist/onboard-remote-hyQIBguz.js +0 -127
  716. package/dist/onboarding-DCu1iBTV.js +0 -541
  717. package/dist/onboarding-zKMitzpb.js +0 -543
  718. package/dist/onboarding.finalize-ClHhYE2E.js +0 -401
  719. package/dist/onboarding.finalize-D5JkVJgg.js +0 -398
  720. package/dist/onboarding.gateway-config-DFh71Ndn.js +0 -198
  721. package/dist/onboarding.gateway-config-VBk6AP9U.js +0 -191
  722. package/dist/outbound-BYlZshIw.js +0 -221
  723. package/dist/outbound-CFfJC1j5.js +0 -220
  724. package/dist/outbound-attachment-BCNs1u1F.js +0 -18
  725. package/dist/outbound-attachment-B_0D60Yr.js +0 -18
  726. package/dist/outbound-attachment-o0seS0CP.js +0 -18
  727. package/dist/pairing-cli-BeydfoF9.js +0 -122
  728. package/dist/pairing-cli-DWzX866x.js +0 -127
  729. package/dist/pairing-labels-B-N8S5Fc.js +0 -9
  730. package/dist/pairing-labels-B_53dY5L.js +0 -9
  731. package/dist/pairing-store-BxdqFZGK.js +0 -460
  732. package/dist/pairing-store-CTkD51uW.js +0 -459
  733. package/dist/path-env-DR5vn3QL.js +0 -89
  734. package/dist/path-env-qRJbjJzj.js +0 -89
  735. package/dist/path-safety-DkT9RmTG.js +0 -14
  736. package/dist/path-safety-juI2XbO1.js +0 -14
  737. package/dist/plugin-auto-enable-D23gv7Aw.js +0 -302
  738. package/dist/plugin-auto-enable-DuPS9XiJ.js +0 -301
  739. package/dist/plugin-registry-CNu_1KZz.js +0 -33
  740. package/dist/plugin-registry-DeHwd2jk.js +0 -33
  741. package/dist/plugin-sdk/agents/agent-helpers/thinking.d.ts +0 -5
  742. package/dist/plugin-sdk/agents/auth-profiles/constants.d.ts +0 -16
  743. package/dist/plugin-sdk/agents/auth-profiles/display.d.ts +0 -7
  744. package/dist/plugin-sdk/agents/auth-profiles/doctor.d.ts +0 -8
  745. package/dist/plugin-sdk/agents/auth-profiles/oauth.d.ts +0 -14
  746. package/dist/plugin-sdk/agents/auth-profiles/session-override.d.ts +0 -18
  747. package/dist/plugin-sdk/agents/auth-profiles.d.ts +0 -8
  748. package/dist/plugin-sdk/agents/defaults.d.ts +0 -3
  749. package/dist/plugin-sdk/agents/provider-auth.d.ts +0 -40
  750. package/dist/plugin-sdk/auto-reply/model-runtime.d.ts +0 -17
  751. package/dist/plugin-sdk/config/model-input.d.ts +0 -9
  752. package/dist/plugin-sdk/config/zod-schema.agent-model.d.ts +0 -5
  753. package/dist/plugin-sdk/sessions/model-overrides.d.ts +0 -14
  754. package/dist/plugin-sdk/telegram/reasoning-lane-coordinator.d.ts +0 -18
  755. package/dist/plugins-BflZz0sp.js +0 -453
  756. package/dist/plugins-cli-DV82scUw.js +0 -798
  757. package/dist/plugins-cli-Qj1UyIZO.js +0 -793
  758. package/dist/plugins-woGRXMzU.js +0 -455
  759. package/dist/ports-DrruB2fK.js +0 -370
  760. package/dist/ports-GT1yV-Tg.js +0 -96
  761. package/dist/ports-NPqtlfp0.js +0 -316
  762. package/dist/ports-QMI4-F9m.js +0 -96
  763. package/dist/program-CQmIaRUI.js +0 -244
  764. package/dist/program-context-DEU6ACnL.js +0 -474
  765. package/dist/progress-CBkSaM6z.js +0 -124
  766. package/dist/prompt-Bllj1dhc.js +0 -21
  767. package/dist/prompt-select-styled-BhTN6zE2.js +0 -1650
  768. package/dist/prompt-select-styled-WopXnjIy.js +0 -1647
  769. package/dist/prompt-style-DVEm3BZW.js +0 -9
  770. package/dist/provider-dispatcher-B4QMe-I6.js +0 -659
  771. package/dist/provider-dispatcher-Bfauw6zz.js +0 -660
  772. package/dist/push-apns-C0LyG-WB.js +0 -713
  773. package/dist/push-apns-DuG95AKC.js +0 -711
  774. package/dist/pw-ai-D9n6-Wa6.js +0 -1906
  775. package/dist/pw-ai-T280E6Mn.js +0 -1910
  776. package/dist/qr-cli-DVECWTHN.js +0 -352
  777. package/dist/qr-cli-hSLixZCe.js +0 -347
  778. package/dist/redact-eZq1uwNK.js +0 -191
  779. package/dist/redact-snapshot-BZYLIqe-.js +0 -2028
  780. package/dist/redact-snapshot-C6hVx_9I.js +0 -2028
  781. package/dist/register.agent-Dmj-sgEl.js +0 -1043
  782. package/dist/register.agent-IspcBFeD.js +0 -286
  783. package/dist/register.configure-BqJEqyGL.js +0 -130
  784. package/dist/register.configure-PPkU_4Ea.js +0 -124
  785. package/dist/register.import-Bs-UkOs-.js +0 -27
  786. package/dist/register.import-DLng8g-e.js +0 -30
  787. package/dist/register.maintenance-BbpkJil3.js +0 -497
  788. package/dist/register.maintenance-C5nkOQxa.js +0 -494
  789. package/dist/register.message-C83Hi1b3.js +0 -681
  790. package/dist/register.message-D16isu4u.js +0 -686
  791. package/dist/register.onboard-B8EzX3wY.js +0 -257
  792. package/dist/register.onboard-CyRbr_0V.js +0 -262
  793. package/dist/register.setup-DWyoowAz.js +0 -109
  794. package/dist/register.setup-Dz6GwMnu.js +0 -114
  795. package/dist/register.status-health-sessions-CbQOfycz.js +0 -423
  796. package/dist/register.status-health-sessions-DXIWG47y.js +0 -669
  797. package/dist/register.subclis-DeGP5UPU.js +0 -267
  798. package/dist/replies-BKrzM0QI.js +0 -136
  799. package/dist/replies-Cl2gYBVt.js +0 -136
  800. package/dist/reply-CCu_DY64.js +0 -13900
  801. package/dist/reply-DSKC8kyS.js +0 -13897
  802. package/dist/reply-directives-BHJKp1Du.js +0 -182
  803. package/dist/reply-directives-CD2WycBM.js +0 -182
  804. package/dist/reply-payloads-D_BM1Anb.js +0 -527
  805. package/dist/reply-prefix-DBLCYiup.js +0 -38
  806. package/dist/reply-prefix-Q4DOJSn_.js +0 -38
  807. package/dist/resolve-route-CBVbY0xS.js +0 -249
  808. package/dist/resolve-route-DGEgTEif.js +0 -249
  809. package/dist/response-prefix-template-rVZQOViK.js +0 -136
  810. package/dist/response-prefix-template-up4REfuR.js +0 -136
  811. package/dist/retry-BhuXOEVR.js +0 -77
  812. package/dist/retry-DUjAzOBy.js +0 -77
  813. package/dist/run-main-Um5xhxla.js +0 -320
  814. package/dist/runner-yVJ4HB2K.js +0 -2294
  815. package/dist/runner-z92MWZ3m.js +0 -2294
  816. package/dist/runtime-guard-DZ_xuCc4.js +0 -60
  817. package/dist/secure-random-Pl9rPl0l.js +0 -44
  818. package/dist/security-cli-CdwbWZUj.js +0 -484
  819. package/dist/security-cli-DP5QJpa5.js +0 -478
  820. package/dist/send-B1_Ymjb9.js +0 -1778
  821. package/dist/send-B84axiIa.js +0 -29
  822. package/dist/send-BN_zYVlx.js +0 -547
  823. package/dist/send-BqVOxAmK.js +0 -1174
  824. package/dist/send-Bx9bUGav.js +0 -492
  825. package/dist/send-C3pdJ6p-.js +0 -2245
  826. package/dist/send-CBGSXjfD.js +0 -2245
  827. package/dist/send-CGXyTF22.js +0 -426
  828. package/dist/send-CKavrhXj.js +0 -11
  829. package/dist/send-D08Je6DL.js +0 -374
  830. package/dist/send-D1aYEG-k.js +0 -332
  831. package/dist/send-DHldI3gf.js +0 -492
  832. package/dist/send-D_DUQJ6H.js +0 -349
  833. package/dist/send-Ds63eF4a.js +0 -349
  834. package/dist/send-YRVDWfSs.js +0 -547
  835. package/dist/send-xnwty9cY.js +0 -1775
  836. package/dist/server-BQFoyCRR.js +0 -200
  837. package/dist/server-DhXw25Jq.js +0 -205
  838. package/dist/server-lifecycle-BjCCyD3w.js +0 -2437
  839. package/dist/server-lifecycle-Coyr6Lda.js +0 -2437
  840. package/dist/server-node-events-De4WZQQD.js +0 -393
  841. package/dist/server-node-events-dXXayuqY.js +0 -398
  842. package/dist/service-Bjqii5nW.js +0 -670
  843. package/dist/service-fp29z5Ww.js +0 -670
  844. package/dist/session-DBL5nHDy.js +0 -170
  845. package/dist/session-cost-usage-DX09eTPU.js +0 -627
  846. package/dist/session-cost-usage-yYi525j3.js +0 -627
  847. package/dist/session-dirs-Cj5xi7zX.js +0 -947
  848. package/dist/session-dirs-DdF6TDsE.js +0 -947
  849. package/dist/session-utils-CEtEq6bi.js +0 -625
  850. package/dist/session-utils-WmlWAs1r.js +0 -625
  851. package/dist/session-xKIW6gL2.js +0 -170
  852. package/dist/sessions--PykPynp.js +0 -2593
  853. package/dist/sessions-Bw4LRnSr.js +0 -252
  854. package/dist/ssrf-Ck9HDZpv.js +0 -183
  855. package/dist/ssrf-m7kFIobZ.js +0 -183
  856. package/dist/status-CtzYFLLF.js +0 -2072
  857. package/dist/status-DiN1cq2p.js +0 -2068
  858. package/dist/status.update-C55QM2xs.js +0 -79
  859. package/dist/status.update-CBmPXwYN.js +0 -79
  860. package/dist/store-C3tOpizT.js +0 -64
  861. package/dist/store-CPJXuhvQ.js +0 -53
  862. package/dist/store-SusmIfz7.js +0 -2595
  863. package/dist/store-v3P-OWhi.js +0 -64
  864. package/dist/subagent-registry-Db4Ho_2Y.js +0 -4858
  865. package/dist/subagent-registry-Du_j0Fnt.js +0 -4860
  866. package/dist/subsystem-BUXAJwPD.js +0 -1079
  867. package/dist/subsystem-COd61u0P.js +0 -1139
  868. package/dist/system-cli-DYCpLO3T.js +0 -75
  869. package/dist/system-cli-eAk5wVbP.js +0 -70
  870. package/dist/systemd-DSnlM3jX.js +0 -547
  871. package/dist/systemd-TfK8GuTx.js +0 -547
  872. package/dist/systemd-linger-Axnc1xCb.js +0 -75
  873. package/dist/systemd-linger-_0_-RY4v.js +0 -75
  874. package/dist/table-DPTzZyhu.js +0 -279
  875. package/dist/tables-DI5LGEr1.js +0 -55
  876. package/dist/tables-PxcSPSO0.js +0 -55
  877. package/dist/tables-TWiml6b1.js +0 -55
  878. package/dist/tailnet-CEudzG0i.js +0 -40
  879. package/dist/tailnet-PnMrjwGT.js +0 -40
  880. package/dist/tailscale-DTATQxAG.js +0 -230
  881. package/dist/tailscale-Dbyahx0J.js +0 -230
  882. package/dist/targets-C1NeMn2J.js +0 -220
  883. package/dist/targets-CcTME3bp.js +0 -46
  884. package/dist/targets-CmC5m7Ey.js +0 -53
  885. package/dist/targets-D-u6Kyio.js +0 -650
  886. package/dist/targets-D7OKVXMI.js +0 -650
  887. package/dist/targets-DB4vBpIQ.js +0 -2172
  888. package/dist/targets-DfqPGOmM.js +0 -2173
  889. package/dist/targets-DyybKefq.js +0 -53
  890. package/dist/targets-JCISV-hS.js +0 -120
  891. package/dist/tokens-DzFOtLlW.js +0 -21
  892. package/dist/tool-display-Br6mwaJc.js +0 -785
  893. package/dist/tool-display-sgNwLOBj.js +0 -785
  894. package/dist/tool-images-BNfIJ_Kj.js +0 -263
  895. package/dist/tool-images-kloBqxqK.js +0 -263
  896. package/dist/trash-DPi0aCCQ.js +0 -125
  897. package/dist/trash-D_Jd_yQZ.js +0 -125
  898. package/dist/tui-CHc0EfJO.js +0 -3392
  899. package/dist/tui-CyHwc2uX.js +0 -3392
  900. package/dist/tui-cli-BvwbrIYO.js +0 -63
  901. package/dist/tui-cli-C9I18SfW.js +0 -58
  902. package/dist/update-DxyjwCL2.js +0 -349
  903. package/dist/update-IX7vdqA8.js +0 -349
  904. package/dist/update-cli-CBeXUSzq.js +0 -1373
  905. package/dist/update-cli-DkAWmUrp.js +0 -1370
  906. package/dist/usage-CYlQW4M2.js +0 -5279
  907. package/dist/utils-LBKvDoPx.js +0 -631
  908. package/dist/web-BUYUdnRH.js +0 -3065
  909. package/dist/web-Dquzwqf4.js +0 -70
  910. package/dist/web-tS8diboh.js +0 -76
  911. package/dist/webhooks-cli-B7Vw3CMz.js +0 -333
  912. package/dist/webhooks-cli-BpZHQlVd.js +0 -328
  913. package/dist/whatsapp-actions-D5HXezjp.js +0 -128
  914. package/dist/whatsapp-actions-DaA291Ya.js +0 -122
  915. package/dist/widearea-dns-DSoaA-eH.js +0 -127
  916. package/dist/workspace-B4ZvVYT9.js +0 -447
  917. package/dist/workspace-B8PA8oxJ.js +0 -449
  918. /package/dist/{account-lookup-0KDSp5Mj.js → account-lookup-BOCzCnir.js} +0 -0
  919. /package/dist/{account-lookup-zvANGr2x.js → account-lookup-DGscKBsr.js} +0 -0
  920. /package/dist/{ansi-D04X81yq.js → ansi-aRwLYlzD.js} +0 -0
  921. /package/dist/{api-BeQMq2iS.js → api-BDff51CS.js} +0 -0
  922. /package/dist/{api-CxX8-gGz.js → api-qWSMsT8m.js} +0 -0
  923. /package/dist/{argv-Co-b9Zsc.js → argv-neJY_Hxm.js} +0 -0
  924. /package/dist/{brew-C4zKZsHX.js → brew-ByYl36Mt.js} +0 -0
  925. /package/dist/{brew-DbSbN8sD.js → brew-CMSQ5Fek.js} +0 -0
  926. /package/dist/{chat-type-CYPyHAj-.js → chat-type-BKe459rw.js} +0 -0
  927. /package/dist/{chat-type-DKb2TlGZ.js → chat-type-DyovJwCt.js} +0 -0
  928. /package/dist/{cleanup-utils-CwQvD73q.js → cleanup-utils-S_P5Jebv.js} +0 -0
  929. /package/dist/{cli-name-BicfmwQX.js → cli-name-CRLBidNP.js} +0 -0
  930. /package/dist/{cli-name-C6rJGl18.js → cli-name-Yv30OygA.js} +0 -0
  931. /package/dist/{cli-utils-BhXbz2UF.js → cli-utils-C5nQDfa6.js} +0 -0
  932. /package/dist/{cli-utils-DZe_rVkZ.js → cli-utils-KcEwAsuZ.js} +0 -0
  933. /package/dist/{client-C61M8zI3.js → client-C7B0uFB0.js} +0 -0
  934. /package/dist/{client-DdpmATKq.js → client-Cd2HNUX0.js} +0 -0
  935. /package/dist/{command-options-C4paWSGf.js → command-options-1bi44p_B.js} +0 -0
  936. /package/dist/{command-options-CA30lfLK.js → command-options-7y5Zrv4M.js} +0 -0
  937. /package/dist/{config-eval-CjGZtLwx.js → config-eval-CJtk3Msr.js} +0 -0
  938. /package/dist/{config-eval-H_wlEYIG.js → config-eval-DQIwdWg7.js} +0 -0
  939. /package/dist/{constants-ChptG3d7.js → constants--3PuQVaS.js} +0 -0
  940. /package/dist/{constants-DY6b-_Wl.js → constants-DNWjlxZ5.js} +0 -0
  941. /package/dist/{credentials-BHWUBHMd.js → credentials-BhnauW0K.js} +0 -0
  942. /package/dist/{credentials-DFsi1_e8.js → credentials-eZcqWNG_.js} +0 -0
  943. /package/dist/{daemon-runtime-CMnbwryP.js → daemon-runtime-99xh1fGv.js} +0 -0
  944. /package/dist/{daemon-runtime-CvqE4ysg.js → daemon-runtime-BOcdJaFy.js} +0 -0
  945. /package/dist/{dangerous-name-matching-BzmiLXmA.js → dangerous-name-matching-YeatnYIA.js} +0 -0
  946. /package/dist/{dangerous-name-matching-DaVRgwer.js → dangerous-name-matching-oVb1EqYT.js} +0 -0
  947. /package/dist/{dangerous-tools-BOLoCRv4.js → dangerous-tools-BMt8-6jE.js} +0 -0
  948. /package/dist/{dangerous-tools-Baq7Q-i6.js → dangerous-tools-CripTfYv.js} +0 -0
  949. /package/dist/{fetch-timeout-DTIN7CGM.js → fetch-timeout-Db3da8yR.js} +0 -0
  950. /package/dist/{fetch-timeout-DoySHqfO.js → fetch-timeout-l_6RdoMw.js} +0 -0
  951. /package/dist/{file-identity-BxlKD8Ys.js → file-identity-Bs9zZOi2.js} +0 -0
  952. /package/dist/{format-duration-CqUERz51.js → format-duration-Bo-Mxi3E.js} +0 -0
  953. /package/dist/{format-duration-Ct-yiwkS.js → format-duration-CfrJ5T8k.js} +0 -0
  954. /package/dist/{format-relative-79_Y1n2Y.js → format-relative-8cNYQsqb.js} +0 -0
  955. /package/dist/{format-relative-CxLpEQOX.js → format-relative-CZOlQ2pA.js} +0 -0
  956. /package/dist/{health-format-B_QRD8Si.js → health-format-WMRp1BbP.js} +0 -0
  957. /package/dist/{heartbeat-wake-LGEgcXjs.js → heartbeat-wake-BtRrOB-t.js} +0 -0
  958. /package/dist/{heartbeat-wake-Y97geucO.js → heartbeat-wake-eRINROYK.js} +0 -0
  959. /package/dist/{help-format-NNm_Ov4H.js → help-format-BEb0SPHF.js} +0 -0
  960. /package/dist/{helpers-BAsMXprO.js → helpers-BJtPtu_2.js} +0 -0
  961. /package/dist/{helpers-DLgbkcEn.js → helpers-Cj6f8SPZ.js} +0 -0
  962. /package/dist/{helpers-R7bU5IBz.js → helpers-ryxLx-aM.js} +0 -0
  963. /package/dist/{host-env-security-szwfmhC4.js → host-env-security-CbiODGvQ.js} +0 -0
  964. /package/dist/{input-provenance-Bn6thJNm.js → input-provenance-CPhdY-0F.js} +0 -0
  965. /package/dist/{input-provenance-xUsSMOsz.js → input-provenance-DUNEQoFM.js} +0 -0
  966. /package/dist/{ip-C9q3Oq20.js → ip-BAhS4rY2.js} +0 -0
  967. /package/dist/{ip-D0zgNmBV.js → ip-BcdPcLiP.js} +0 -0
  968. /package/dist/{is-main-DN8-sNR5.js → is-main-KcWqINzy.js} +0 -0
  969. /package/dist/{json-file-ChO_R9yh.js → json-file-BVvmrQG3.js} +0 -0
  970. /package/dist/{json-file-B7l5-Xhr.js → json-file-Dbg7nZg1.js} +0 -0
  971. /package/dist/{json-files-CmpYSF4G.js → json-files-DSKEdz7x.js} +0 -0
  972. /package/dist/{lanes-ByWMUgrz.js → lanes-Brd-nf-Z.js} +0 -0
  973. /package/dist/{lanes-cHJ5arWg.js → lanes-COs3zODW.js} +0 -0
  974. /package/dist/{links-Bz4V7R_p.js → links-gse8sWn-.js} +0 -0
  975. /package/dist/{location-DBWCGNLq.js → location-D1FM_C63.js} +0 -0
  976. /package/dist/{location-GbZ0bBRU.js → location-LuzkqHGi.js} +0 -0
  977. /package/dist/{logger-DyL5G2DO.js → logger-BMP_j_Lx.js} +0 -0
  978. /package/dist/{logger-BWMPnILd.js → logger-DWbwXLjl.js} +0 -0
  979. /package/dist/{logger-GvipVDfh.js → logger-DXCDb7qu.js} +0 -0
  980. /package/dist/{logging-D8-Kozjc.js → logging-CAgCb3n3.js} +0 -0
  981. /package/dist/{message-channel-uWMAiywE.js → message-channel-D72Bc6Tb.js} +0 -0
  982. /package/dist/{mime-BS3jhcZE.js → mime-Cqg1jjia.js} +0 -0
  983. /package/dist/{mime-Cxh_64P6.js → mime-D4bQLMJL.js} +0 -0
  984. /package/dist/{mutable-allowlist-detectors-DiZDtmlZ.js → mutable-allowlist-detectors-NtI6s4TE.js} +0 -0
  985. /package/dist/{mutable-allowlist-detectors-U5ThQr9V.js → mutable-allowlist-detectors-nAmo9v5u.js} +0 -0
  986. /package/dist/{node-cli-Uf6lAntf.js → node-cli-bNJbha3z.js} +0 -0
  987. /package/dist/{parse-log-line-enq8pduH.js → parse-log-line-BY9Vz72K.js} +0 -0
  988. /package/dist/{parse-log-line-mz9TG6ig.js → parse-log-line-BrrE4onI.js} +0 -0
  989. /package/dist/{parse-timeout-BMP8a0_a.js → parse-timeout-Dfyln-4M.js} +0 -0
  990. /package/dist/{path-guards-CIx4hURU.js → path-guards-D9LU0y9L.js} +0 -0
  991. /package/dist/{path-guards-CrQOUlsq.js → path-guards-crZaTVvq.js} +0 -0
  992. /package/dist/plugin-sdk/{agents → auth}/api-key-rotation.d.ts +0 -0
  993. /package/dist/plugin-sdk/{agents/auth-profiles → auth}/paths.d.ts +0 -0
  994. /package/dist/plugin-sdk/{agents/auth-profiles → auth}/profiles.d.ts +0 -0
  995. /package/dist/plugin-sdk/{agents/auth-profiles → auth}/store.d.ts +0 -0
  996. /package/dist/plugin-sdk/{agents/auth-profiles → auth}/types.d.ts +0 -0
  997. /package/dist/{plugins-allowlist-BbTQ5Z2k.js → plugins-allowlist-CD4oIJNk.js} +0 -0
  998. /package/dist/{plugins-allowlist-C20oaESO.js → plugins-allowlist-CUhk3GDh.js} +0 -0
  999. /package/dist/{polls-B0CCBDeR.js → polls-ChvH1OIW.js} +0 -0
  1000. /package/dist/{polls-CwwHzYBM.js → polls-Dn1C2d1-.js} +0 -0
  1001. /package/dist/{ports-lsof-Wteul3ju.js → ports-lsof-BDQWExpn.js} +0 -0
  1002. /package/dist/{process-scoped-map-CV9kDvfG.js → process-scoped-map-BwUkYFQV.js} +0 -0
  1003. /package/dist/{process-scoped-map-PEvnG75N.js → process-scoped-map-CBWcUvTa.js} +0 -0
  1004. /package/dist/{program-context-jqeI5alP.js → program-context-DtsEOsdM.js} +0 -0
  1005. /package/dist/{progress-C1kUfYL-.js → progress-BjGCAXH7.js} +0 -0
  1006. /package/dist/{prompt-Yn2yClg1.js → prompt-FIISMuNm.js} +0 -0
  1007. /package/dist/{prompt-style-DjEYC_s-.js → prompt-style-DL64_X-p.js} +0 -0
  1008. /package/dist/{provider-utils-3JTMJroG.js → provider-utils-DiLhkKQp.js} +0 -0
  1009. /package/dist/{proxy-DL3MD6-P.js → proxy-DUTF0OYE.js} +0 -0
  1010. /package/dist/{proxy-DpNv2cSV.js → proxy-Dv0sbx6A.js} +0 -0
  1011. /package/dist/{pw-ai-state-CGfLv6nV.js → pw-ai-state-DKhOTqDv.js} +0 -0
  1012. /package/dist/{pw-ai-state-Dynx20hr.js → pw-ai-state-kkp06zyZ.js} +0 -0
  1013. /package/dist/{redact-Dx1Fue21.js → redact-BTeK8lMZ.js} +0 -0
  1014. /package/dist/{redact-identifier-BTIWtaa-.js → redact-identifier-F6t5pklx.js} +0 -0
  1015. /package/dist/{redact-identifier-CAagcfWA.js → redact-identifier-VdOrq-IK.js} +0 -0
  1016. /package/dist/{remoteclaw-root-C2HV2VeC.js → remoteclaw-root-DF8m3X4C.js} +0 -0
  1017. /package/dist/{remoteclaw-root-DybYl8PL.js → remoteclaw-root-rJHOCwzo.js} +0 -0
  1018. /package/dist/{render-CCLsW6Lz.js → render-e7fENCYH.js} +0 -0
  1019. /package/dist/{render-uf6PvGMV.js → render-qcqmrHse.js} +0 -0
  1020. /package/dist/{retry-DnqPAqWp.js → retry-CwZiwLDN.js} +0 -0
  1021. /package/dist/{runtime-DJNp29jv.js → runtime-Ds3E9SqF.js} +0 -0
  1022. /package/dist/{runtime-guard-U-ewY_QH.js → runtime-guard-CdJVmJc0.js} +0 -0
  1023. /package/dist/{secret-equal-BbHdTtqY.js → secret-equal-CDUVxXmp.js} +0 -0
  1024. /package/dist/{secret-equal-CXJEZiWb.js → secret-equal-d3sEnK98.js} +0 -0
  1025. /package/dist/{secure-random-CS2mSdTn.js → secure-random-CJtykx_p.js} +0 -0
  1026. /package/dist/{secure-random-_dzDDlFo.js → secure-random-y6N6Gted.js} +0 -0
  1027. /package/dist/{session-key-5YLnn_qf.js → session-key-BF-9YzxC.js} +0 -0
  1028. /package/dist/{stagger-BXv_apuy.js → stagger-B-_Wnofy.js} +0 -0
  1029. /package/dist/{stagger-MI9gd2rQ.js → stagger-CjkdqPuN.js} +0 -0
  1030. /package/dist/{status-BmtCS3T1.js → status-BFmH9Uge.js} +0 -0
  1031. /package/dist/{status-BrwHRn2B.js → status-BIupzBh9.js} +0 -0
  1032. /package/dist/{strip-inbound-meta-DjKcSFaW.js → strip-inbound-meta-BNXRYvmY.js} +0 -0
  1033. /package/dist/{strip-inbound-meta-jy3bkUab.js → strip-inbound-meta-BtNFmc6V.js} +0 -0
  1034. /package/dist/{table-C1rdyYl9.js → table-Au5EeKD6.js} +0 -0
  1035. /package/dist/{target-errors-BDpPcwh5.js → target-errors-B6YON-5k.js} +0 -0
  1036. /package/dist/{target-errors-DdIAPcMM.js → target-errors-sPHoHj73.js} +0 -0
  1037. /package/dist/{targets-D-qLBpTA.js → targets-BtGRUQMa.js} +0 -0
  1038. /package/dist/{targets-BMenhVHg.js → targets-D3r6Zgic.js} +0 -0
  1039. /package/dist/{targets-C-2xwh9f.js → targets-DDdPVd12.js} +0 -0
  1040. /package/dist/{targets-UncQvCVs.js → targets-Ds5eT_RZ.js} +0 -0
  1041. /package/dist/{targets-D7PT_rdO.js → targets-DtvPW-B8.js} +0 -0
  1042. /package/dist/{text-format-BQ3z_OXA.js → text-format-CFm4X8Ze.js} +0 -0
  1043. /package/dist/{text-format-oWqzVmah.js → text-format-KHU3KzvQ.js} +0 -0
  1044. /package/dist/{tokens-B-jmvNR9.js → tokens-BGw4xHhW.js} +0 -0
  1045. /package/dist/{usage-BdhBT0Vz.js → usage-BEjWlD9A.js} +0 -0
  1046. /package/dist/{usage-format-C3mNLfhI.js → usage-format-Cx3JveFn.js} +0 -0
  1047. /package/dist/{usage-format-DAaPzr_z.js → usage-format-D-ZaYT_e.js} +0 -0
  1048. /package/dist/{usage-BtQcAnf6.js → usage-o8O_TxA-.js} +0 -0
  1049. /package/dist/{widearea-dns-CsmBVbez.js → widearea-dns-DUDYT3z2.js} +0 -0
  1050. /package/dist/{workspace-BzPeZDew.js → workspace-9__vtmnA.js} +0 -0
  1051. /package/dist/{wsl-B_sPlzWw.js → wsl-BLrG__iS.js} +0 -0
  1052. /package/dist/{wsl-BCnYV9O0.js → wsl-C2dudsWt.js} +0 -0
@@ -1,1343 +0,0 @@
1
- import { Ct as theme, St as isRich, _ as defaultRuntime, at as shortenHomeInString, ot as shortenHomePath } from "./entry.js";
2
- import { _ as parseDurationMs, i as loadConfig } from "./config-FHu9Bn4R.js";
3
- import "./host-env-security-szwfmhC4.js";
4
- import "./inbound-path-policy-sdr5Ji0k.js";
5
- import "./env-vars-7aZqKPhk.js";
6
- import { r as resolveAgentConfig, s as resolveDefaultAgentId } from "./agent-scope-C50VuLKh.js";
7
- import { f as GATEWAY_CLIENT_MODES, p as GATEWAY_CLIENT_NAMES } from "./message-channel-uWMAiywE.js";
8
- import { a as randomIdempotencyKey, n as callGateway } from "./call-BbwtB9Y-.js";
9
- import "./net-Cg8AQeke.js";
10
- import "./logger-BWMPnILd.js";
11
- import "./ip-D0zgNmBV.js";
12
- import "./tailnet-CEudzG0i.js";
13
- import "./redact-Dx1Fue21.js";
14
- import "./errors-DZ199hOo.js";
15
- import { n as formatTimeAgo } from "./format-relative-CxLpEQOX.js";
16
- import { t as formatDocsLink } from "./links-Bz4V7R_p.js";
17
- import { n as withProgress } from "./progress-C1kUfYL-.js";
18
- import { t as runCommandWithRuntime } from "./cli-utils-BhXbz2UF.js";
19
- import { t as formatHelpExamples } from "./help-format-NNm_Ov4H.js";
20
- import { t as renderTable } from "./table-C1rdyYl9.js";
21
- import { a as resolveNodeIdFromCandidates, c as canvasSnapshotTempPath, d as parseCameraClipPayload, f as parseCameraSnapPayload, h as writeUrlToFile, i as parseEnvPairs, l as parseCanvasSnapshotPayload, m as writeCameraClipPayloadToFile, n as screenRecordTempPath, o as parseNodeList, p as writeBase64ToFile, r as writeScreenRecordToFile, s as parsePairingList, t as parseScreenRecordPayload, u as cameraTempPath } from "./nodes-screen-Cw7Hv7M2.js";
22
- import { t as parseTimeoutMs } from "./parse-timeout-BMP8a0_a.js";
23
- import path from "node:path";
24
- import fsp from "node:fs/promises";
25
-
26
- //#region src/cli/nodes-cli/format.ts
27
- function formatPermissions(raw) {
28
- if (!raw || typeof raw !== "object" || Array.isArray(raw)) return null;
29
- const entries = Object.entries(raw).map(([key, value]) => [String(key).trim(), value === true]).filter(([key]) => key.length > 0).toSorted((a, b) => a[0].localeCompare(b[0]));
30
- if (entries.length === 0) return null;
31
- return `[${entries.map(([key, granted]) => `${key}=${granted ? "yes" : "no"}`).join(", ")}]`;
32
- }
33
-
34
- //#endregion
35
- //#region src/cli/nodes-cli/rpc.ts
36
- const nodesCallOpts = (cmd, defaults) => cmd.option("--url <url>", "Gateway WebSocket URL (defaults to gateway.remote.url when configured)").option("--token <token>", "Gateway token (if required)").option("--timeout <ms>", "Timeout in ms", String(defaults?.timeoutMs ?? 1e4)).option("--json", "Output JSON", false);
37
- const callGatewayCli = async (method, opts, params, callOpts) => withProgress({
38
- label: `Nodes ${method}`,
39
- indeterminate: true,
40
- enabled: opts.json !== true
41
- }, async () => await callGateway({
42
- url: opts.url,
43
- token: opts.token,
44
- method,
45
- params,
46
- timeoutMs: callOpts?.transportTimeoutMs ?? Number(opts.timeout ?? 1e4),
47
- clientName: GATEWAY_CLIENT_NAMES.CLI,
48
- mode: GATEWAY_CLIENT_MODES.CLI
49
- }));
50
- function buildNodeInvokeParams(params) {
51
- const invokeParams = {
52
- nodeId: params.nodeId,
53
- command: params.command,
54
- params: params.params,
55
- idempotencyKey: params.idempotencyKey ?? randomIdempotencyKey()
56
- };
57
- if (typeof params.timeoutMs === "number" && Number.isFinite(params.timeoutMs)) invokeParams.timeoutMs = params.timeoutMs;
58
- return invokeParams;
59
- }
60
- function unauthorizedHintForMessage(message) {
61
- const haystack = message.toLowerCase();
62
- if (haystack.includes("unauthorizedclient") || haystack.includes("bridge client is not authorized") || haystack.includes("unsigned bridge clients are not allowed")) return [
63
- "peekaboo bridge rejected the client.",
64
- "sign the peekaboo CLI (TeamID Y5PE65HELJ) or launch the host with",
65
- "PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1 for local dev."
66
- ].join(" ");
67
- return null;
68
- }
69
- async function resolveNodeId(opts, query) {
70
- const q = String(query ?? "").trim();
71
- if (!q) throw new Error("node required");
72
- let nodes = [];
73
- try {
74
- nodes = parseNodeList(await callGatewayCli("node.list", opts, {}));
75
- } catch {
76
- const { paired } = parsePairingList(await callGatewayCli("node.pair.list", opts, {}));
77
- nodes = paired.map((n) => ({
78
- nodeId: n.nodeId,
79
- displayName: n.displayName,
80
- platform: n.platform,
81
- version: n.version,
82
- remoteIp: n.remoteIp
83
- }));
84
- }
85
- return resolveNodeIdFromCandidates(nodes, q);
86
- }
87
-
88
- //#endregion
89
- //#region src/cli/nodes-cli/cli-utils.ts
90
- function getNodesTheme() {
91
- const rich = isRich();
92
- const color = (fn) => (value) => rich ? fn(value) : value;
93
- return {
94
- rich,
95
- heading: color(theme.heading),
96
- ok: color(theme.success),
97
- warn: color(theme.warn),
98
- muted: color(theme.muted),
99
- error: color(theme.error)
100
- };
101
- }
102
- function runNodesCommand(label, action) {
103
- return runCommandWithRuntime(defaultRuntime, action, (err) => {
104
- const message = String(err);
105
- const { error, warn } = getNodesTheme();
106
- defaultRuntime.error(error(`nodes ${label} failed: ${message}`));
107
- const hint = unauthorizedHintForMessage(message);
108
- if (hint) defaultRuntime.error(warn(hint));
109
- defaultRuntime.exit(1);
110
- });
111
- }
112
-
113
- //#endregion
114
- //#region src/cli/nodes-cli/register.camera.ts
115
- const parseFacing = (value) => {
116
- const v = String(value ?? "").trim().toLowerCase();
117
- if (v === "front" || v === "back") return v;
118
- throw new Error(`invalid facing: ${value} (expected front|back)`);
119
- };
120
- function registerNodesCameraCommands(nodes) {
121
- const camera = nodes.command("camera").description("Capture camera media from a paired node");
122
- nodesCallOpts(camera.command("list").description("List available cameras on a node").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").action(async (opts) => {
123
- await runNodesCommand("camera list", async () => {
124
- const raw = await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
125
- nodeId: await resolveNodeId(opts, String(opts.node ?? "")),
126
- command: "camera.list",
127
- params: {}
128
- }));
129
- const res = typeof raw === "object" && raw !== null ? raw : {};
130
- const payload = typeof res.payload === "object" && res.payload !== null ? res.payload : {};
131
- const devices = Array.isArray(payload.devices) ? payload.devices : [];
132
- if (opts.json) {
133
- defaultRuntime.log(JSON.stringify(devices, null, 2));
134
- return;
135
- }
136
- if (devices.length === 0) {
137
- const { muted } = getNodesTheme();
138
- defaultRuntime.log(muted("No cameras reported."));
139
- return;
140
- }
141
- const { heading, muted } = getNodesTheme();
142
- const tableWidth = Math.max(60, (process.stdout.columns ?? 120) - 1);
143
- const rows = devices.map((device) => ({
144
- Name: typeof device.name === "string" ? device.name : "Unknown Camera",
145
- Position: typeof device.position === "string" ? device.position : muted("unspecified"),
146
- ID: typeof device.id === "string" ? device.id : ""
147
- }));
148
- defaultRuntime.log(heading("Cameras"));
149
- defaultRuntime.log(renderTable({
150
- width: tableWidth,
151
- columns: [
152
- {
153
- key: "Name",
154
- header: "Name",
155
- minWidth: 14,
156
- flex: true
157
- },
158
- {
159
- key: "Position",
160
- header: "Position",
161
- minWidth: 10
162
- },
163
- {
164
- key: "ID",
165
- header: "ID",
166
- minWidth: 10,
167
- flex: true
168
- }
169
- ],
170
- rows
171
- }).trimEnd());
172
- });
173
- }), { timeoutMs: 6e4 });
174
- nodesCallOpts(camera.command("snap").description("Capture a photo from a node camera (prints MEDIA:<path>)").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--facing <front|back|both>", "Camera facing", "both").option("--device-id <id>", "Camera device id (from nodes camera list)").option("--max-width <px>", "Max width in px (optional)").option("--quality <0-1>", "JPEG quality (default 0.9)").option("--delay-ms <ms>", "Delay before capture in ms (macOS default 2000)").option("--invoke-timeout <ms>", "Node invoke timeout in ms (default 20000)", "20000").action(async (opts) => {
175
- await runNodesCommand("camera snap", async () => {
176
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
177
- const facingOpt = String(opts.facing ?? "both").trim().toLowerCase();
178
- const facings = facingOpt === "both" ? ["front", "back"] : facingOpt === "front" || facingOpt === "back" ? [facingOpt] : (() => {
179
- throw new Error(`invalid facing: ${String(opts.facing)} (expected front|back|both)`);
180
- })();
181
- const maxWidth = opts.maxWidth ? Number.parseInt(String(opts.maxWidth), 10) : void 0;
182
- const quality = opts.quality ? Number.parseFloat(String(opts.quality)) : void 0;
183
- const delayMs = opts.delayMs ? Number.parseInt(String(opts.delayMs), 10) : void 0;
184
- const deviceId = opts.deviceId ? String(opts.deviceId).trim() : void 0;
185
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
186
- const results = [];
187
- for (const facing of facings) {
188
- const raw = await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
189
- nodeId,
190
- command: "camera.snap",
191
- params: {
192
- facing,
193
- maxWidth: Number.isFinite(maxWidth) ? maxWidth : void 0,
194
- quality: Number.isFinite(quality) ? quality : void 0,
195
- format: "jpg",
196
- delayMs: Number.isFinite(delayMs) ? delayMs : void 0,
197
- deviceId: deviceId || void 0
198
- },
199
- timeoutMs
200
- }));
201
- const payload = parseCameraSnapPayload((typeof raw === "object" && raw !== null ? raw : {}).payload);
202
- const filePath = cameraTempPath({
203
- kind: "snap",
204
- facing,
205
- ext: payload.format === "jpeg" ? "jpg" : payload.format
206
- });
207
- if (payload.url) await writeUrlToFile(filePath, payload.url);
208
- else if (payload.base64) await writeBase64ToFile(filePath, payload.base64);
209
- results.push({
210
- facing,
211
- path: filePath,
212
- width: payload.width,
213
- height: payload.height
214
- });
215
- }
216
- if (opts.json) {
217
- defaultRuntime.log(JSON.stringify({ files: results }, null, 2));
218
- return;
219
- }
220
- defaultRuntime.log(results.map((r) => `MEDIA:${shortenHomePath(r.path)}`).join("\n"));
221
- });
222
- }), { timeoutMs: 6e4 });
223
- nodesCallOpts(camera.command("clip").description("Capture a short video clip from a node camera (prints MEDIA:<path>)").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--facing <front|back>", "Camera facing", "front").option("--device-id <id>", "Camera device id (from nodes camera list)").option("--duration <ms|10s|1m>", "Duration (default 3000ms; supports ms/s/m, e.g. 10s)", "3000").option("--no-audio", "Disable audio capture").option("--invoke-timeout <ms>", "Node invoke timeout in ms (default 90000)", "90000").action(async (opts) => {
224
- await runNodesCommand("camera clip", async () => {
225
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
226
- const facing = parseFacing(String(opts.facing ?? "front"));
227
- const durationMs = parseDurationMs(String(opts.duration ?? "3000"));
228
- const includeAudio = opts.audio !== false;
229
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
230
- const deviceId = opts.deviceId ? String(opts.deviceId).trim() : void 0;
231
- const raw = await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
232
- nodeId,
233
- command: "camera.clip",
234
- params: {
235
- facing,
236
- durationMs: Number.isFinite(durationMs) ? durationMs : void 0,
237
- includeAudio,
238
- format: "mp4",
239
- deviceId: deviceId || void 0
240
- },
241
- timeoutMs
242
- }));
243
- const payload = parseCameraClipPayload((typeof raw === "object" && raw !== null ? raw : {}).payload);
244
- const filePath = await writeCameraClipPayloadToFile({
245
- payload,
246
- facing
247
- });
248
- if (opts.json) {
249
- defaultRuntime.log(JSON.stringify({ file: {
250
- facing,
251
- path: filePath,
252
- durationMs: payload.durationMs,
253
- hasAudio: payload.hasAudio
254
- } }, null, 2));
255
- return;
256
- }
257
- defaultRuntime.log(`MEDIA:${shortenHomePath(filePath)}`);
258
- });
259
- }), { timeoutMs: 9e4 });
260
- }
261
-
262
- //#endregion
263
- //#region src/cli/nodes-cli/a2ui-jsonl.ts
264
- const A2UI_ACTION_KEYS = [
265
- "beginRendering",
266
- "surfaceUpdate",
267
- "dataModelUpdate",
268
- "deleteSurface",
269
- "createSurface"
270
- ];
271
- function buildA2UITextJsonl(text) {
272
- const surfaceId = "main";
273
- const rootId = "root";
274
- const textId = "text";
275
- return [{ surfaceUpdate: {
276
- surfaceId,
277
- components: [{
278
- id: rootId,
279
- component: { Column: { children: { explicitList: [textId] } } }
280
- }, {
281
- id: textId,
282
- component: { Text: {
283
- text: { literalString: text },
284
- usageHint: "body"
285
- } }
286
- }]
287
- } }, { beginRendering: {
288
- surfaceId,
289
- root: rootId
290
- } }].map((payload) => JSON.stringify(payload)).join("\n");
291
- }
292
- function validateA2UIJsonl(jsonl) {
293
- const lines = jsonl.split(/\r?\n/);
294
- const errors = [];
295
- let sawV08 = false;
296
- let sawV09 = false;
297
- let messageCount = 0;
298
- lines.forEach((line, idx) => {
299
- const trimmed = line.trim();
300
- if (!trimmed) return;
301
- messageCount += 1;
302
- let obj;
303
- try {
304
- obj = JSON.parse(trimmed);
305
- } catch (err) {
306
- errors.push(`line ${idx + 1}: ${String(err)}`);
307
- return;
308
- }
309
- if (!obj || typeof obj !== "object" || Array.isArray(obj)) {
310
- errors.push(`line ${idx + 1}: expected JSON object`);
311
- return;
312
- }
313
- const record = obj;
314
- const actionKeys = A2UI_ACTION_KEYS.filter((key) => key in record);
315
- if (actionKeys.length !== 1) {
316
- errors.push(`line ${idx + 1}: expected exactly one action key (${A2UI_ACTION_KEYS.join(", ")})`);
317
- return;
318
- }
319
- if (actionKeys[0] === "createSurface") sawV09 = true;
320
- else sawV08 = true;
321
- });
322
- if (messageCount === 0) errors.push("no JSONL messages found");
323
- if (sawV08 && sawV09) errors.push("mixed A2UI v0.8 and v0.9 messages in one file");
324
- if (errors.length > 0) throw new Error(`Invalid A2UI JSONL:\n- ${errors.join("\n- ")}`);
325
- return {
326
- version: sawV09 ? "v0.9" : "v0.8",
327
- messageCount
328
- };
329
- }
330
-
331
- //#endregion
332
- //#region src/cli/nodes-cli/register.canvas.ts
333
- async function invokeCanvas(opts, command, params) {
334
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
335
- const timeoutMs = parseTimeoutMs(opts.invokeTimeout);
336
- return await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
337
- nodeId,
338
- command,
339
- params,
340
- timeoutMs: typeof timeoutMs === "number" ? timeoutMs : void 0
341
- }));
342
- }
343
- function registerNodesCanvasCommands(nodes) {
344
- const canvas = nodes.command("canvas").description("Capture or render canvas content from a paired node");
345
- nodesCallOpts(canvas.command("snapshot").description("Capture a canvas snapshot (prints MEDIA:<path>)").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--format <png|jpg|jpeg>", "Image format", "jpg").option("--max-width <px>", "Max width in px (optional)").option("--quality <0-1>", "JPEG quality (optional)").option("--invoke-timeout <ms>", "Node invoke timeout in ms (default 20000)", "20000").action(async (opts) => {
346
- await runNodesCommand("canvas snapshot", async () => {
347
- const formatOpt = String(opts.format ?? "jpg").trim().toLowerCase();
348
- const formatForParams = formatOpt === "jpg" ? "jpeg" : formatOpt === "jpeg" ? "jpeg" : "png";
349
- if (formatForParams !== "png" && formatForParams !== "jpeg") throw new Error(`invalid format: ${String(opts.format)} (expected png|jpg|jpeg)`);
350
- const maxWidth = opts.maxWidth ? Number.parseInt(String(opts.maxWidth), 10) : void 0;
351
- const quality = opts.quality ? Number.parseFloat(String(opts.quality)) : void 0;
352
- const raw = await invokeCanvas(opts, "canvas.snapshot", {
353
- format: formatForParams,
354
- maxWidth: Number.isFinite(maxWidth) ? maxWidth : void 0,
355
- quality: Number.isFinite(quality) ? quality : void 0
356
- });
357
- const payload = parseCanvasSnapshotPayload((typeof raw === "object" && raw !== null ? raw : {}).payload);
358
- const filePath = canvasSnapshotTempPath({ ext: payload.format === "jpeg" ? "jpg" : payload.format });
359
- await writeBase64ToFile(filePath, payload.base64);
360
- if (opts.json) {
361
- defaultRuntime.log(JSON.stringify({ file: {
362
- path: filePath,
363
- format: payload.format
364
- } }, null, 2));
365
- return;
366
- }
367
- defaultRuntime.log(`MEDIA:${shortenHomePath(filePath)}`);
368
- });
369
- }), { timeoutMs: 6e4 });
370
- nodesCallOpts(canvas.command("present").description("Show the canvas (optionally with a target URL/path)").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--target <urlOrPath>", "Target URL/path (optional)").option("--x <px>", "Placement x coordinate").option("--y <px>", "Placement y coordinate").option("--width <px>", "Placement width").option("--height <px>", "Placement height").option("--invoke-timeout <ms>", "Node invoke timeout in ms").action(async (opts) => {
371
- await runNodesCommand("canvas present", async () => {
372
- const placement = {
373
- x: opts.x ? Number.parseFloat(opts.x) : void 0,
374
- y: opts.y ? Number.parseFloat(opts.y) : void 0,
375
- width: opts.width ? Number.parseFloat(opts.width) : void 0,
376
- height: opts.height ? Number.parseFloat(opts.height) : void 0
377
- };
378
- const params = {};
379
- if (opts.target) params.url = String(opts.target);
380
- if (Number.isFinite(placement.x) || Number.isFinite(placement.y) || Number.isFinite(placement.width) || Number.isFinite(placement.height)) params.placement = placement;
381
- await invokeCanvas(opts, "canvas.present", params);
382
- if (!opts.json) {
383
- const { ok } = getNodesTheme();
384
- defaultRuntime.log(ok("canvas present ok"));
385
- }
386
- });
387
- }));
388
- nodesCallOpts(canvas.command("hide").description("Hide the canvas").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--invoke-timeout <ms>", "Node invoke timeout in ms").action(async (opts) => {
389
- await runNodesCommand("canvas hide", async () => {
390
- await invokeCanvas(opts, "canvas.hide", void 0);
391
- if (!opts.json) {
392
- const { ok } = getNodesTheme();
393
- defaultRuntime.log(ok("canvas hide ok"));
394
- }
395
- });
396
- }));
397
- nodesCallOpts(canvas.command("navigate").description("Navigate the canvas to a URL").argument("<url>", "Target URL/path").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--invoke-timeout <ms>", "Node invoke timeout in ms").action(async (url, opts) => {
398
- await runNodesCommand("canvas navigate", async () => {
399
- await invokeCanvas(opts, "canvas.navigate", { url });
400
- if (!opts.json) {
401
- const { ok } = getNodesTheme();
402
- defaultRuntime.log(ok("canvas navigate ok"));
403
- }
404
- });
405
- }));
406
- nodesCallOpts(canvas.command("eval").description("Evaluate JavaScript in the canvas").argument("[js]", "JavaScript to evaluate").option("--js <code>", "JavaScript to evaluate").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--invoke-timeout <ms>", "Node invoke timeout in ms").action(async (jsArg, opts) => {
407
- await runNodesCommand("canvas eval", async () => {
408
- const js = opts.js ?? jsArg;
409
- if (!js) throw new Error("missing --js or <js>");
410
- const raw = await invokeCanvas(opts, "canvas.eval", { javaScript: js });
411
- if (opts.json) {
412
- defaultRuntime.log(JSON.stringify(raw, null, 2));
413
- return;
414
- }
415
- const payload = typeof raw === "object" && raw !== null ? raw.payload : void 0;
416
- if (payload?.result) defaultRuntime.log(payload.result);
417
- else {
418
- const { ok } = getNodesTheme();
419
- defaultRuntime.log(ok("canvas eval ok"));
420
- }
421
- });
422
- }));
423
- const a2ui = canvas.command("a2ui").description("Render A2UI content on the canvas");
424
- nodesCallOpts(a2ui.command("push").description("Push A2UI JSONL to the canvas").option("--jsonl <path>", "Path to JSONL payload").option("--text <text>", "Render a quick A2UI text payload").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--invoke-timeout <ms>", "Node invoke timeout in ms").action(async (opts) => {
425
- await runNodesCommand("canvas a2ui push", async () => {
426
- const hasJsonl = Boolean(opts.jsonl);
427
- const hasText = typeof opts.text === "string";
428
- if (hasJsonl === hasText) throw new Error("provide exactly one of --jsonl or --text");
429
- const jsonl = hasText ? buildA2UITextJsonl(String(opts.text ?? "")) : await fsp.readFile(String(opts.jsonl), "utf8");
430
- const { version, messageCount } = validateA2UIJsonl(jsonl);
431
- if (version === "v0.9") throw new Error("Detected A2UI v0.9 JSONL (createSurface). RemoteClaw currently supports v0.8 only.");
432
- await invokeCanvas(opts, "canvas.a2ui.pushJSONL", { jsonl });
433
- if (!opts.json) {
434
- const { ok } = getNodesTheme();
435
- defaultRuntime.log(ok(`canvas a2ui push ok (v0.8, ${messageCount} message${messageCount === 1 ? "" : "s"})`));
436
- }
437
- });
438
- }));
439
- nodesCallOpts(a2ui.command("reset").description("Reset A2UI renderer state").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--invoke-timeout <ms>", "Node invoke timeout in ms").action(async (opts) => {
440
- await runNodesCommand("canvas a2ui reset", async () => {
441
- await invokeCanvas(opts, "canvas.a2ui.reset", void 0);
442
- if (!opts.json) {
443
- const { ok } = getNodesTheme();
444
- defaultRuntime.log(ok("canvas a2ui reset ok"));
445
- }
446
- });
447
- }));
448
- }
449
-
450
- //#endregion
451
- //#region src/infra/node-shell.ts
452
- function buildNodeShellCommand(command, platform) {
453
- if (String(platform ?? "").trim().toLowerCase().startsWith("win")) return [
454
- "cmd.exe",
455
- "/d",
456
- "/s",
457
- "/c",
458
- command
459
- ];
460
- return [
461
- "/bin/sh",
462
- "-lc",
463
- command
464
- ];
465
- }
466
-
467
- //#endregion
468
- //#region src/infra/path-prepend.ts
469
- function mergePathPrepend(existing, prepend) {
470
- if (prepend.length === 0) return existing;
471
- const partsExisting = (existing ?? "").split(path.delimiter).map((part) => part.trim()).filter(Boolean);
472
- const merged = [];
473
- const seen = /* @__PURE__ */ new Set();
474
- for (const part of [...prepend, ...partsExisting]) {
475
- if (seen.has(part)) continue;
476
- seen.add(part);
477
- merged.push(part);
478
- }
479
- return merged.join(path.delimiter);
480
- }
481
- function applyPathPrepend(env, prepend, options) {
482
- if (!Array.isArray(prepend) || prepend.length === 0) return;
483
- if (options?.requireExisting && !env.PATH) return;
484
- const merged = mergePathPrepend(env.PATH, prepend);
485
- if (merged) env.PATH = merged;
486
- }
487
-
488
- //#endregion
489
- //#region src/cli/nodes-cli/register.invoke.ts
490
- const DEFAULT_EXEC_APPROVAL_TIMEOUT_MS = 12e4;
491
- function minSecurity(a, b) {
492
- const order = [
493
- "deny",
494
- "allowlist",
495
- "full"
496
- ];
497
- return order[Math.min(order.indexOf(a), order.indexOf(b))] ?? "deny";
498
- }
499
- function maxAsk(a, b) {
500
- const order = [
501
- "off",
502
- "on-miss",
503
- "always"
504
- ];
505
- return order[Math.max(order.indexOf(a), order.indexOf(b))] ?? "on-miss";
506
- }
507
- function resolveExecApprovalsFromFile(_opts) {
508
- return { agent: {
509
- security: _opts.overrides?.security ?? "allowlist",
510
- ask: _opts.overrides?.ask ?? "on-miss"
511
- } };
512
- }
513
- function normalizeExecSecurity(value) {
514
- const normalized = value?.trim().toLowerCase();
515
- if (normalized === "deny" || normalized === "allowlist" || normalized === "full") return normalized;
516
- return null;
517
- }
518
- function normalizeExecAsk(value) {
519
- const normalized = value?.trim().toLowerCase();
520
- if (normalized === "off" || normalized === "on-miss" || normalized === "always") return normalized;
521
- return null;
522
- }
523
- function resolveExecDefaults(cfg, agentId) {
524
- const globalExec = cfg?.tools?.exec;
525
- if (!agentId) return globalExec ? {
526
- security: globalExec.security,
527
- ask: globalExec.ask,
528
- node: globalExec.node,
529
- pathPrepend: globalExec.pathPrepend,
530
- safeBins: globalExec.safeBins
531
- } : void 0;
532
- const agentExec = resolveAgentConfig(cfg, agentId)?.tools?.exec;
533
- return {
534
- security: agentExec?.security ?? globalExec?.security,
535
- ask: agentExec?.ask ?? globalExec?.ask,
536
- node: agentExec?.node ?? globalExec?.node,
537
- pathPrepend: agentExec?.pathPrepend ?? globalExec?.pathPrepend,
538
- safeBins: agentExec?.safeBins ?? globalExec?.safeBins
539
- };
540
- }
541
- async function resolveNodePlatform(opts, nodeId) {
542
- try {
543
- const match = parseNodeList(await callGatewayCli("node.list", opts, {})).find((node) => node.nodeId === nodeId);
544
- return typeof match?.platform === "string" ? match.platform : null;
545
- } catch {
546
- return null;
547
- }
548
- }
549
- function registerNodesInvokeCommands(nodes) {
550
- nodesCallOpts(nodes.command("invoke").description("Invoke a command on a paired node").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").requiredOption("--command <command>", "Command (e.g. canvas.eval)").option("--params <json>", "JSON object string for params", "{}").option("--invoke-timeout <ms>", "Node invoke timeout in ms (default 15000)", "15000").option("--idempotency-key <key>", "Idempotency key (optional)").action(async (opts) => {
551
- await runNodesCommand("invoke", async () => {
552
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
553
- const command = String(opts.command ?? "").trim();
554
- if (!nodeId || !command) {
555
- const { error } = getNodesTheme();
556
- defaultRuntime.error(error("--node and --command required"));
557
- defaultRuntime.exit(1);
558
- return;
559
- }
560
- const params = JSON.parse(String(opts.params ?? "{}"));
561
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
562
- const invokeParams = {
563
- nodeId,
564
- command,
565
- params,
566
- idempotencyKey: String(opts.idempotencyKey ?? randomIdempotencyKey())
567
- };
568
- if (typeof timeoutMs === "number" && Number.isFinite(timeoutMs)) invokeParams.timeoutMs = timeoutMs;
569
- const result = await callGatewayCli("node.invoke", opts, invokeParams);
570
- defaultRuntime.log(JSON.stringify(result, null, 2));
571
- });
572
- }), { timeoutMs: 3e4 });
573
- nodesCallOpts(nodes.command("run").description("Run a shell command on a node (mac only)").option("--node <idOrNameOrIp>", "Node id, name, or IP").option("--cwd <path>", "Working directory").option("--env <key=val>", "Environment override (repeatable)", (value, prev = []) => [...prev, value]).option("--raw <command>", "Run a raw shell command string (sh -lc / cmd.exe /c)").option("--agent <id>", "Agent id (default: configured default agent)").option("--ask <mode>", "Exec ask mode (off|on-miss|always)").option("--security <mode>", "Exec security mode (deny|allowlist|full)").option("--command-timeout <ms>", "Command timeout (ms)").option("--needs-screen-recording", "Require screen recording permission").option("--invoke-timeout <ms>", "Node invoke timeout in ms (default 30000)", "30000").argument("[command...]", "Command and args").action(async (command, opts) => {
574
- await runNodesCommand("run", async () => {
575
- const cfg = loadConfig();
576
- const agentId = opts.agent?.trim() || resolveDefaultAgentId(cfg);
577
- const execDefaults = resolveExecDefaults(cfg, agentId);
578
- const raw = typeof opts.raw === "string" ? opts.raw.trim() : "";
579
- if (raw && Array.isArray(command) && command.length > 0) throw new Error("use --raw or argv, not both");
580
- if (!raw && (!Array.isArray(command) || command.length === 0)) throw new Error("command required");
581
- const nodeQuery = String(opts.node ?? "").trim() || execDefaults?.node?.trim() || "";
582
- if (!nodeQuery) throw new Error("node required (set --node or tools.exec.node)");
583
- const nodeId = await resolveNodeId(opts, nodeQuery);
584
- const env = parseEnvPairs(opts.env);
585
- const timeoutMs = parseTimeoutMs(opts.commandTimeout);
586
- const invokeTimeout = parseTimeoutMs(opts.invokeTimeout);
587
- let argv = Array.isArray(command) ? command : [];
588
- let rawCommand;
589
- if (raw) {
590
- rawCommand = raw;
591
- const platform = await resolveNodePlatform(opts, nodeId);
592
- argv = buildNodeShellCommand(rawCommand, platform ?? void 0);
593
- }
594
- const nodeEnv = env ? { ...env } : void 0;
595
- if (nodeEnv) applyPathPrepend(nodeEnv, execDefaults?.pathPrepend, { requireExisting: true });
596
- let approvedByAsk = false;
597
- let approvalDecision = null;
598
- const configuredSecurity = normalizeExecSecurity(execDefaults?.security) ?? "allowlist";
599
- const requestedSecurity = normalizeExecSecurity(opts.security);
600
- if (opts.security && !requestedSecurity) throw new Error("invalid --security (use deny|allowlist|full)");
601
- const configuredAsk = normalizeExecAsk(execDefaults?.ask) ?? "on-miss";
602
- const requestedAsk = normalizeExecAsk(opts.ask);
603
- if (opts.ask && !requestedAsk) throw new Error("invalid --ask (use off|on-miss|always)");
604
- const security = minSecurity(configuredSecurity, requestedSecurity ?? configuredSecurity);
605
- const ask = maxAsk(configuredAsk, requestedAsk ?? configuredAsk);
606
- const approvalsSnapshot = await callGatewayCli("exec.approvals.node.get", opts, { nodeId });
607
- const approvalsFile = approvalsSnapshot && typeof approvalsSnapshot === "object" ? approvalsSnapshot.file : void 0;
608
- if (!approvalsFile || typeof approvalsFile !== "object") throw new Error("exec approvals unavailable");
609
- const approvals = resolveExecApprovalsFromFile({
610
- file: approvalsFile,
611
- agentId,
612
- overrides: {
613
- security,
614
- ask
615
- }
616
- });
617
- const hostSecurity = minSecurity(security, approvals.agent.security);
618
- const hostAsk = maxAsk(ask, approvals.agent.ask);
619
- const askFallback = approvals.agent.askFallback;
620
- if (hostSecurity === "deny") throw new Error("exec denied: host=node security=deny");
621
- const requiresAsk = hostAsk === "always" || hostAsk === "on-miss";
622
- let approvalId = null;
623
- if (requiresAsk) {
624
- approvalId = crypto.randomUUID();
625
- const approvalTimeoutMs = DEFAULT_EXEC_APPROVAL_TIMEOUT_MS;
626
- const transportTimeoutMs = Math.max(parseTimeoutMs(opts.timeout) ?? 0, approvalTimeoutMs + 1e4);
627
- const decisionResult = await callGatewayCli("exec.approval.request", opts, {
628
- id: approvalId,
629
- command: rawCommand ?? argv.join(" "),
630
- cwd: opts.cwd,
631
- nodeId,
632
- host: "node",
633
- security: hostSecurity,
634
- ask: hostAsk,
635
- agentId,
636
- resolvedPath: void 0,
637
- sessionKey: void 0,
638
- timeoutMs: approvalTimeoutMs
639
- }, { transportTimeoutMs });
640
- const decision = decisionResult && typeof decisionResult === "object" ? decisionResult.decision ?? null : null;
641
- if (decision === "deny") throw new Error("exec denied: user denied");
642
- if (!decision) if (askFallback === "full") {
643
- approvedByAsk = true;
644
- approvalDecision = "allow-once";
645
- } else if (askFallback === "allowlist") {} else throw new Error("exec denied: approval required (approval UI not available)");
646
- if (decision === "allow-once") {
647
- approvedByAsk = true;
648
- approvalDecision = "allow-once";
649
- }
650
- if (decision === "allow-always") {
651
- approvedByAsk = true;
652
- approvalDecision = "allow-always";
653
- }
654
- }
655
- const invokeParams = {
656
- nodeId,
657
- command: "system.run",
658
- params: {
659
- command: argv,
660
- cwd: opts.cwd,
661
- env: nodeEnv,
662
- timeoutMs,
663
- needsScreenRecording: opts.needsScreenRecording === true
664
- },
665
- idempotencyKey: String(opts.idempotencyKey ?? randomIdempotencyKey())
666
- };
667
- if (agentId) invokeParams.params.agentId = agentId;
668
- if (rawCommand) invokeParams.params.rawCommand = rawCommand;
669
- invokeParams.params.approved = approvedByAsk;
670
- if (approvalDecision) invokeParams.params.approvalDecision = approvalDecision;
671
- if (approvedByAsk && approvalId) invokeParams.params.runId = approvalId;
672
- if (invokeTimeout !== void 0) invokeParams.timeoutMs = invokeTimeout;
673
- const result = await callGatewayCli("node.invoke", opts, invokeParams);
674
- if (opts.json) {
675
- defaultRuntime.log(JSON.stringify(result, null, 2));
676
- return;
677
- }
678
- const payload = typeof result === "object" && result !== null ? result.payload : void 0;
679
- const stdout = typeof payload?.stdout === "string" ? payload.stdout : "";
680
- const stderr = typeof payload?.stderr === "string" ? payload.stderr : "";
681
- const exitCode = typeof payload?.exitCode === "number" ? payload.exitCode : null;
682
- const timedOut = payload?.timedOut === true;
683
- const success = payload?.success === true;
684
- if (stdout) process.stdout.write(stdout);
685
- if (stderr) process.stderr.write(stderr);
686
- if (timedOut) {
687
- const { error } = getNodesTheme();
688
- defaultRuntime.error(error("run timed out"));
689
- defaultRuntime.exit(1);
690
- return;
691
- }
692
- if (exitCode !== null && exitCode !== 0) {
693
- const hint = unauthorizedHintForMessage(`${stderr}\n${stdout}`);
694
- if (hint) {
695
- const { warn } = getNodesTheme();
696
- defaultRuntime.error(warn(hint));
697
- }
698
- }
699
- if (exitCode !== null && exitCode !== 0 && !success) {
700
- const { error } = getNodesTheme();
701
- defaultRuntime.error(error(`run exit ${exitCode}`));
702
- defaultRuntime.exit(1);
703
- return;
704
- }
705
- });
706
- }), { timeoutMs: 35e3 });
707
- }
708
-
709
- //#endregion
710
- //#region src/cli/nodes-cli/register.location.ts
711
- function registerNodesLocationCommands(nodes) {
712
- nodesCallOpts(nodes.command("location").description("Fetch location from a paired node").command("get").description("Fetch the current location from a node").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--max-age <ms>", "Use cached location newer than this (ms)").option("--accuracy <coarse|balanced|precise>", "Desired accuracy (default: balanced/precise depending on node setting)").option("--location-timeout <ms>", "Location fix timeout (ms)", "10000").option("--invoke-timeout <ms>", "Node invoke timeout in ms (default 20000)", "20000").action(async (opts) => {
713
- await runNodesCommand("location get", async () => {
714
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
715
- const maxAgeMs = opts.maxAge ? Number.parseInt(String(opts.maxAge), 10) : void 0;
716
- const desiredAccuracyRaw = typeof opts.accuracy === "string" ? opts.accuracy.trim().toLowerCase() : void 0;
717
- const desiredAccuracy = desiredAccuracyRaw === "coarse" || desiredAccuracyRaw === "balanced" || desiredAccuracyRaw === "precise" ? desiredAccuracyRaw : void 0;
718
- const timeoutMs = opts.locationTimeout ? Number.parseInt(String(opts.locationTimeout), 10) : void 0;
719
- const invokeTimeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
720
- const invokeParams = {
721
- nodeId,
722
- command: "location.get",
723
- params: {
724
- maxAgeMs: Number.isFinite(maxAgeMs) ? maxAgeMs : void 0,
725
- desiredAccuracy,
726
- timeoutMs: Number.isFinite(timeoutMs) ? timeoutMs : void 0
727
- },
728
- idempotencyKey: randomIdempotencyKey()
729
- };
730
- if (typeof invokeTimeoutMs === "number" && Number.isFinite(invokeTimeoutMs)) invokeParams.timeoutMs = invokeTimeoutMs;
731
- const raw = await callGatewayCli("node.invoke", opts, invokeParams);
732
- const res = typeof raw === "object" && raw !== null ? raw : {};
733
- const payload = res.payload && typeof res.payload === "object" ? res.payload : {};
734
- if (opts.json) {
735
- defaultRuntime.log(JSON.stringify(payload, null, 2));
736
- return;
737
- }
738
- const lat = payload.lat;
739
- const lon = payload.lon;
740
- const acc = payload.accuracyMeters;
741
- if (typeof lat === "number" && typeof lon === "number") {
742
- const accText = typeof acc === "number" ? ` ±${acc.toFixed(1)}m` : "";
743
- defaultRuntime.log(`${lat},${lon}${accText}`);
744
- return;
745
- }
746
- defaultRuntime.log(JSON.stringify(payload));
747
- });
748
- }), { timeoutMs: 3e4 });
749
- }
750
-
751
- //#endregion
752
- //#region src/cli/nodes-cli/register.notify.ts
753
- function registerNodesNotifyCommand(nodes) {
754
- nodesCallOpts(nodes.command("notify").description("Send a local notification on a node (mac only)").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--title <text>", "Notification title").option("--body <text>", "Notification body").option("--sound <name>", "Notification sound").option("--priority <passive|active|timeSensitive>", "Notification priority").option("--delivery <system|overlay|auto>", "Delivery mode", "system").option("--invoke-timeout <ms>", "Node invoke timeout in ms (default 15000)", "15000").action(async (opts) => {
755
- await runNodesCommand("notify", async () => {
756
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
757
- const title = String(opts.title ?? "").trim();
758
- const body = String(opts.body ?? "").trim();
759
- if (!title && !body) throw new Error("missing --title or --body");
760
- const invokeTimeout = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
761
- const invokeParams = {
762
- nodeId,
763
- command: "system.notify",
764
- params: {
765
- title,
766
- body,
767
- sound: opts.sound,
768
- priority: opts.priority,
769
- delivery: opts.delivery
770
- },
771
- idempotencyKey: String(opts.idempotencyKey ?? randomIdempotencyKey())
772
- };
773
- if (typeof invokeTimeout === "number" && Number.isFinite(invokeTimeout)) invokeParams.timeoutMs = invokeTimeout;
774
- const result = await callGatewayCli("node.invoke", opts, invokeParams);
775
- if (opts.json) {
776
- defaultRuntime.log(JSON.stringify(result, null, 2));
777
- return;
778
- }
779
- const { ok } = getNodesTheme();
780
- defaultRuntime.log(ok("notify ok"));
781
- });
782
- }));
783
- }
784
-
785
- //#endregion
786
- //#region src/cli/nodes-cli/pairing-render.ts
787
- function renderPendingPairingRequestsTable(params) {
788
- const { pending, now, tableWidth, theme } = params;
789
- const rows = pending.map((r) => ({
790
- Request: r.requestId,
791
- Node: r.displayName?.trim() ? r.displayName.trim() : r.nodeId,
792
- IP: r.remoteIp ?? "",
793
- Requested: typeof r.ts === "number" ? formatTimeAgo(Math.max(0, now - r.ts)) : theme.muted("unknown"),
794
- Repair: r.isRepair ? theme.warn("yes") : ""
795
- }));
796
- return {
797
- heading: theme.heading("Pending"),
798
- table: renderTable({
799
- width: tableWidth,
800
- columns: [
801
- {
802
- key: "Request",
803
- header: "Request",
804
- minWidth: 8
805
- },
806
- {
807
- key: "Node",
808
- header: "Node",
809
- minWidth: 14,
810
- flex: true
811
- },
812
- {
813
- key: "IP",
814
- header: "IP",
815
- minWidth: 10
816
- },
817
- {
818
- key: "Requested",
819
- header: "Requested",
820
- minWidth: 12
821
- },
822
- {
823
- key: "Repair",
824
- header: "Repair",
825
- minWidth: 6
826
- }
827
- ],
828
- rows
829
- }).trimEnd()
830
- };
831
- }
832
-
833
- //#endregion
834
- //#region src/cli/nodes-cli/register.pairing.ts
835
- function registerNodesPairingCommands(nodes) {
836
- nodesCallOpts(nodes.command("pending").description("List pending pairing requests").action(async (opts) => {
837
- await runNodesCommand("pending", async () => {
838
- const { pending } = parsePairingList(await callGatewayCli("node.pair.list", opts, {}));
839
- if (opts.json) {
840
- defaultRuntime.log(JSON.stringify(pending, null, 2));
841
- return;
842
- }
843
- if (pending.length === 0) {
844
- const { muted } = getNodesTheme();
845
- defaultRuntime.log(muted("No pending pairing requests."));
846
- return;
847
- }
848
- const { heading, warn, muted } = getNodesTheme();
849
- const tableWidth = Math.max(60, (process.stdout.columns ?? 120) - 1);
850
- const rendered = renderPendingPairingRequestsTable({
851
- pending,
852
- now: Date.now(),
853
- tableWidth,
854
- theme: {
855
- heading,
856
- warn,
857
- muted
858
- }
859
- });
860
- defaultRuntime.log(rendered.heading);
861
- defaultRuntime.log(rendered.table);
862
- });
863
- }));
864
- nodesCallOpts(nodes.command("approve").description("Approve a pending pairing request").argument("<requestId>", "Pending request id").action(async (requestId, opts) => {
865
- await runNodesCommand("approve", async () => {
866
- const result = await callGatewayCli("node.pair.approve", opts, { requestId });
867
- defaultRuntime.log(JSON.stringify(result, null, 2));
868
- });
869
- }));
870
- nodesCallOpts(nodes.command("reject").description("Reject a pending pairing request").argument("<requestId>", "Pending request id").action(async (requestId, opts) => {
871
- await runNodesCommand("reject", async () => {
872
- const result = await callGatewayCli("node.pair.reject", opts, { requestId });
873
- defaultRuntime.log(JSON.stringify(result, null, 2));
874
- });
875
- }));
876
- nodesCallOpts(nodes.command("rename").description("Rename a paired node (display name override)").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").requiredOption("--name <displayName>", "New display name").action(async (opts) => {
877
- await runNodesCommand("rename", async () => {
878
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
879
- const name = String(opts.name ?? "").trim();
880
- if (!nodeId || !name) {
881
- defaultRuntime.error("--node and --name required");
882
- defaultRuntime.exit(1);
883
- return;
884
- }
885
- const result = await callGatewayCli("node.rename", opts, {
886
- nodeId,
887
- displayName: name
888
- });
889
- if (opts.json) {
890
- defaultRuntime.log(JSON.stringify(result, null, 2));
891
- return;
892
- }
893
- const { ok } = getNodesTheme();
894
- defaultRuntime.log(ok(`node rename ok: ${nodeId} -> ${name}`));
895
- });
896
- }));
897
- }
898
-
899
- //#endregion
900
- //#region src/cli/nodes-cli/register.push.ts
901
- function normalizeEnvironment(value) {
902
- if (typeof value !== "string") return null;
903
- const normalized = value.trim().toLowerCase();
904
- if (normalized === "sandbox" || normalized === "production") return normalized;
905
- return null;
906
- }
907
- function registerNodesPushCommand(nodes) {
908
- nodesCallOpts(nodes.command("push").description("Send an APNs test push to an iOS node").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--title <text>", "Push title", "RemoteClaw").option("--body <text>", "Push body").option("--environment <sandbox|production>", "Override APNs environment").action(async (opts) => {
909
- await runNodesCommand("push", async () => {
910
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
911
- const title = String(opts.title ?? "").trim() || "RemoteClaw";
912
- const body = String(opts.body ?? "").trim() || `Push test for node ${nodeId}`;
913
- const environment = normalizeEnvironment(opts.environment);
914
- if (opts.environment && !environment) throw new Error("invalid --environment (use sandbox|production)");
915
- const params = {
916
- nodeId,
917
- title,
918
- body
919
- };
920
- if (environment) params.environment = environment;
921
- const result = await callGatewayCli("push.test", opts, params);
922
- if (opts.json) {
923
- defaultRuntime.log(JSON.stringify(result, null, 2));
924
- return;
925
- }
926
- const parsed = typeof result === "object" && result !== null ? result : {};
927
- const ok = parsed.ok === true;
928
- const status = typeof parsed.status === "number" ? parsed.status : 0;
929
- const reason = typeof parsed.reason === "string" && parsed.reason.trim().length > 0 ? parsed.reason.trim() : void 0;
930
- const env = typeof parsed.environment === "string" && parsed.environment.trim().length > 0 ? parsed.environment.trim() : "unknown";
931
- const { ok: okLabel, error: errorLabel } = getNodesTheme();
932
- const label = ok ? okLabel : errorLabel;
933
- defaultRuntime.log(label(`push.test status=${status} ok=${ok} env=${env}`));
934
- if (reason) defaultRuntime.log(`reason: ${reason}`);
935
- });
936
- }), { timeoutMs: 25e3 });
937
- }
938
-
939
- //#endregion
940
- //#region src/cli/nodes-cli/register.screen.ts
941
- function registerNodesScreenCommands(nodes) {
942
- nodesCallOpts(nodes.command("screen").description("Capture screen recordings from a paired node").command("record").description("Capture a short screen recording from a node (prints MEDIA:<path>)").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").option("--screen <index>", "Screen index (0 = primary)", "0").option("--duration <ms|10s>", "Clip duration (ms or 10s)", "10000").option("--fps <fps>", "Frames per second", "10").option("--no-audio", "Disable microphone audio capture").option("--out <path>", "Output path").option("--invoke-timeout <ms>", "Node invoke timeout in ms (default 120000)", "120000").action(async (opts) => {
943
- await runNodesCommand("screen record", async () => {
944
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
945
- const durationMs = parseDurationMs(opts.duration ?? "");
946
- const screenIndex = Number.parseInt(String(opts.screen ?? "0"), 10);
947
- const fps = Number.parseFloat(String(opts.fps ?? "10"));
948
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
949
- const raw = await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
950
- nodeId,
951
- command: "screen.record",
952
- params: {
953
- durationMs: Number.isFinite(durationMs) ? durationMs : void 0,
954
- screenIndex: Number.isFinite(screenIndex) ? screenIndex : void 0,
955
- fps: Number.isFinite(fps) ? fps : void 0,
956
- format: "mp4",
957
- includeAudio: opts.audio !== false
958
- },
959
- timeoutMs
960
- }));
961
- const parsed = parseScreenRecordPayload((typeof raw === "object" && raw !== null ? raw : {}).payload);
962
- const written = await writeScreenRecordToFile(opts.out ?? screenRecordTempPath({ ext: parsed.format || "mp4" }), parsed.base64);
963
- if (opts.json) {
964
- defaultRuntime.log(JSON.stringify({ file: {
965
- path: written.path,
966
- durationMs: parsed.durationMs,
967
- fps: parsed.fps,
968
- screenIndex: parsed.screenIndex,
969
- hasAudio: parsed.hasAudio
970
- } }, null, 2));
971
- return;
972
- }
973
- defaultRuntime.log(`MEDIA:${shortenHomePath(written.path)}`);
974
- });
975
- }), { timeoutMs: 18e4 });
976
- }
977
-
978
- //#endregion
979
- //#region src/cli/nodes-cli/register.status.ts
980
- function formatVersionLabel(raw) {
981
- const trimmed = raw.trim();
982
- if (!trimmed) return raw;
983
- if (trimmed.toLowerCase().startsWith("v")) return trimmed;
984
- return /^\d/.test(trimmed) ? `v${trimmed}` : trimmed;
985
- }
986
- function resolveNodeVersions(node) {
987
- const core = node.coreVersion?.trim() || void 0;
988
- const ui = node.uiVersion?.trim() || void 0;
989
- if (core || ui) return {
990
- core,
991
- ui
992
- };
993
- const legacy = node.version?.trim();
994
- if (!legacy) return {
995
- core: void 0,
996
- ui: void 0
997
- };
998
- const platform = node.platform?.trim().toLowerCase() ?? "";
999
- return platform === "darwin" || platform === "linux" || platform === "win32" || platform === "windows" ? {
1000
- core: legacy,
1001
- ui: void 0
1002
- } : {
1003
- core: void 0,
1004
- ui: legacy
1005
- };
1006
- }
1007
- function formatNodeVersions(node) {
1008
- const { core, ui } = resolveNodeVersions(node);
1009
- const parts = [];
1010
- if (core) parts.push(`core ${formatVersionLabel(core)}`);
1011
- if (ui) parts.push(`ui ${formatVersionLabel(ui)}`);
1012
- return parts.length > 0 ? parts.join(" · ") : null;
1013
- }
1014
- function formatPathEnv(raw) {
1015
- if (typeof raw !== "string") return null;
1016
- const trimmed = raw.trim();
1017
- if (!trimmed) return null;
1018
- const parts = trimmed.split(":").filter(Boolean);
1019
- return shortenHomeInString(parts.length <= 3 ? trimmed : `${parts.slice(0, 2).join(":")}:…:${parts.slice(-1)[0]}`);
1020
- }
1021
- function parseSinceMs(raw, label) {
1022
- if (raw === void 0 || raw === null) return;
1023
- const value = typeof raw === "string" ? raw.trim() : typeof raw === "number" ? String(raw).trim() : null;
1024
- if (value === null) {
1025
- defaultRuntime.error(`${label}: invalid duration value`);
1026
- defaultRuntime.exit(1);
1027
- return;
1028
- }
1029
- if (!value) return;
1030
- try {
1031
- return parseDurationMs(value);
1032
- } catch (err) {
1033
- const message = err instanceof Error ? err.message : String(err);
1034
- defaultRuntime.error(`${label}: ${message}`);
1035
- defaultRuntime.exit(1);
1036
- return;
1037
- }
1038
- }
1039
- function registerNodesStatusCommands(nodes) {
1040
- nodesCallOpts(nodes.command("status").description("List known nodes with connection status and capabilities").option("--connected", "Only show connected nodes").option("--last-connected <duration>", "Only show nodes connected within duration (e.g. 24h)").action(async (opts) => {
1041
- await runNodesCommand("status", async () => {
1042
- const connectedOnly = Boolean(opts.connected);
1043
- const sinceMs = parseSinceMs(opts.lastConnected, "Invalid --last-connected");
1044
- const result = await callGatewayCli("node.list", opts, {});
1045
- const obj = typeof result === "object" && result !== null ? result : {};
1046
- const { ok, warn, muted } = getNodesTheme();
1047
- const tableWidth = Math.max(60, (process.stdout.columns ?? 120) - 1);
1048
- const now = Date.now();
1049
- const nodes = parseNodeList(result);
1050
- const lastConnectedById = sinceMs !== void 0 ? new Map(parsePairingList(await callGatewayCli("node.pair.list", opts, {})).paired.map((entry) => [entry.nodeId, entry])) : null;
1051
- const filtered = nodes.filter((n) => {
1052
- if (connectedOnly && !n.connected) return false;
1053
- if (sinceMs !== void 0) {
1054
- const paired = lastConnectedById?.get(n.nodeId);
1055
- const lastConnectedAtMs = typeof paired?.lastConnectedAtMs === "number" ? paired.lastConnectedAtMs : typeof n.connectedAtMs === "number" ? n.connectedAtMs : void 0;
1056
- if (typeof lastConnectedAtMs !== "number") return false;
1057
- if (now - lastConnectedAtMs > sinceMs) return false;
1058
- }
1059
- return true;
1060
- });
1061
- if (opts.json) {
1062
- const ts = typeof obj.ts === "number" ? obj.ts : Date.now();
1063
- defaultRuntime.log(JSON.stringify({
1064
- ...obj,
1065
- ts,
1066
- nodes: filtered
1067
- }, null, 2));
1068
- return;
1069
- }
1070
- const pairedCount = filtered.filter((n) => Boolean(n.paired)).length;
1071
- const connectedCount = filtered.filter((n) => Boolean(n.connected)).length;
1072
- const filteredLabel = filtered.length !== nodes.length ? ` (of ${nodes.length})` : "";
1073
- defaultRuntime.log(`Known: ${filtered.length}${filteredLabel} · Paired: ${pairedCount} · Connected: ${connectedCount}`);
1074
- if (filtered.length === 0) return;
1075
- const rows = filtered.map((n) => {
1076
- const name = n.displayName?.trim() ? n.displayName.trim() : n.nodeId;
1077
- const perms = formatPermissions(n.permissions);
1078
- const versions = formatNodeVersions(n);
1079
- const pathEnv = formatPathEnv(n.pathEnv);
1080
- const detailParts = [
1081
- n.deviceFamily ? `device: ${n.deviceFamily}` : null,
1082
- n.modelIdentifier ? `hw: ${n.modelIdentifier}` : null,
1083
- perms ? `perms: ${perms}` : null,
1084
- versions,
1085
- pathEnv ? `path: ${pathEnv}` : null
1086
- ].filter(Boolean);
1087
- const caps = Array.isArray(n.caps) ? n.caps.map(String).filter(Boolean).toSorted().join(", ") : "?";
1088
- const paired = n.paired ? ok("paired") : warn("unpaired");
1089
- const connected = n.connected ? ok("connected") : muted("disconnected");
1090
- const since = typeof n.connectedAtMs === "number" ? ` (${formatTimeAgo(Math.max(0, now - n.connectedAtMs))})` : "";
1091
- return {
1092
- Node: name,
1093
- ID: n.nodeId,
1094
- IP: n.remoteIp ?? "",
1095
- Detail: detailParts.join(" · "),
1096
- Status: `${paired} · ${connected}${since}`,
1097
- Caps: caps
1098
- };
1099
- });
1100
- defaultRuntime.log(renderTable({
1101
- width: tableWidth,
1102
- columns: [
1103
- {
1104
- key: "Node",
1105
- header: "Node",
1106
- minWidth: 14,
1107
- flex: true
1108
- },
1109
- {
1110
- key: "ID",
1111
- header: "ID",
1112
- minWidth: 10
1113
- },
1114
- {
1115
- key: "IP",
1116
- header: "IP",
1117
- minWidth: 10
1118
- },
1119
- {
1120
- key: "Detail",
1121
- header: "Detail",
1122
- minWidth: 18,
1123
- flex: true
1124
- },
1125
- {
1126
- key: "Status",
1127
- header: "Status",
1128
- minWidth: 18
1129
- },
1130
- {
1131
- key: "Caps",
1132
- header: "Caps",
1133
- minWidth: 12,
1134
- flex: true
1135
- }
1136
- ],
1137
- rows
1138
- }).trimEnd());
1139
- });
1140
- }));
1141
- nodesCallOpts(nodes.command("describe").description("Describe a node (capabilities + supported invoke commands)").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").action(async (opts) => {
1142
- await runNodesCommand("describe", async () => {
1143
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
1144
- const result = await callGatewayCli("node.describe", opts, { nodeId });
1145
- if (opts.json) {
1146
- defaultRuntime.log(JSON.stringify(result, null, 2));
1147
- return;
1148
- }
1149
- const obj = typeof result === "object" && result !== null ? result : {};
1150
- const displayName = typeof obj.displayName === "string" ? obj.displayName : nodeId;
1151
- const connected = Boolean(obj.connected);
1152
- const paired = Boolean(obj.paired);
1153
- const caps = Array.isArray(obj.caps) ? obj.caps.map(String).filter(Boolean).toSorted() : null;
1154
- const commands = Array.isArray(obj.commands) ? obj.commands.map(String).filter(Boolean).toSorted() : [];
1155
- const perms = formatPermissions(obj.permissions);
1156
- const family = typeof obj.deviceFamily === "string" ? obj.deviceFamily : null;
1157
- const model = typeof obj.modelIdentifier === "string" ? obj.modelIdentifier : null;
1158
- const ip = typeof obj.remoteIp === "string" ? obj.remoteIp : null;
1159
- const pathEnv = typeof obj.pathEnv === "string" ? obj.pathEnv : null;
1160
- const versions = formatNodeVersions(obj);
1161
- const { heading, ok, warn, muted } = getNodesTheme();
1162
- const status = `${paired ? ok("paired") : warn("unpaired")} · ${connected ? ok("connected") : muted("disconnected")}`;
1163
- const tableWidth = Math.max(60, (process.stdout.columns ?? 120) - 1);
1164
- const rows = [
1165
- {
1166
- Field: "ID",
1167
- Value: nodeId
1168
- },
1169
- displayName ? {
1170
- Field: "Name",
1171
- Value: displayName
1172
- } : null,
1173
- ip ? {
1174
- Field: "IP",
1175
- Value: ip
1176
- } : null,
1177
- family ? {
1178
- Field: "Device",
1179
- Value: family
1180
- } : null,
1181
- model ? {
1182
- Field: "Model",
1183
- Value: model
1184
- } : null,
1185
- perms ? {
1186
- Field: "Perms",
1187
- Value: perms
1188
- } : null,
1189
- versions ? {
1190
- Field: "Version",
1191
- Value: versions
1192
- } : null,
1193
- pathEnv ? {
1194
- Field: "PATH",
1195
- Value: pathEnv
1196
- } : null,
1197
- {
1198
- Field: "Status",
1199
- Value: status
1200
- },
1201
- {
1202
- Field: "Caps",
1203
- Value: caps ? caps.join(", ") : "?"
1204
- }
1205
- ].filter(Boolean);
1206
- defaultRuntime.log(heading("Node"));
1207
- defaultRuntime.log(renderTable({
1208
- width: tableWidth,
1209
- columns: [{
1210
- key: "Field",
1211
- header: "Field",
1212
- minWidth: 8
1213
- }, {
1214
- key: "Value",
1215
- header: "Value",
1216
- minWidth: 24,
1217
- flex: true
1218
- }],
1219
- rows
1220
- }).trimEnd());
1221
- defaultRuntime.log("");
1222
- defaultRuntime.log(heading("Commands"));
1223
- if (commands.length === 0) {
1224
- defaultRuntime.log(muted("- (none reported)"));
1225
- return;
1226
- }
1227
- for (const c of commands) defaultRuntime.log(`- ${c}`);
1228
- });
1229
- }));
1230
- nodesCallOpts(nodes.command("list").description("List pending and paired nodes").option("--connected", "Only show connected nodes").option("--last-connected <duration>", "Only show nodes connected within duration (e.g. 24h)").action(async (opts) => {
1231
- await runNodesCommand("list", async () => {
1232
- const connectedOnly = Boolean(opts.connected);
1233
- const sinceMs = parseSinceMs(opts.lastConnected, "Invalid --last-connected");
1234
- const { pending, paired } = parsePairingList(await callGatewayCli("node.pair.list", opts, {}));
1235
- const { heading, muted, warn } = getNodesTheme();
1236
- const tableWidth = Math.max(60, (process.stdout.columns ?? 120) - 1);
1237
- const now = Date.now();
1238
- const hasFilters = connectedOnly || sinceMs !== void 0;
1239
- const pendingRows = hasFilters ? [] : pending;
1240
- const connectedById = hasFilters ? new Map(parseNodeList(await callGatewayCli("node.list", opts, {})).map((node) => [node.nodeId, node])) : null;
1241
- const filteredPaired = paired.filter((node) => {
1242
- if (connectedOnly) {
1243
- if (!(connectedById?.get(node.nodeId))?.connected) return false;
1244
- }
1245
- if (sinceMs !== void 0) {
1246
- const live = connectedById?.get(node.nodeId);
1247
- const lastConnectedAtMs = typeof node.lastConnectedAtMs === "number" ? node.lastConnectedAtMs : typeof live?.connectedAtMs === "number" ? live.connectedAtMs : void 0;
1248
- if (typeof lastConnectedAtMs !== "number") return false;
1249
- if (now - lastConnectedAtMs > sinceMs) return false;
1250
- }
1251
- return true;
1252
- });
1253
- const filteredLabel = hasFilters && filteredPaired.length !== paired.length ? ` (of ${paired.length})` : "";
1254
- defaultRuntime.log(`Pending: ${pendingRows.length} · Paired: ${filteredPaired.length}${filteredLabel}`);
1255
- if (opts.json) {
1256
- defaultRuntime.log(JSON.stringify({
1257
- pending: pendingRows,
1258
- paired: filteredPaired
1259
- }, null, 2));
1260
- return;
1261
- }
1262
- if (pendingRows.length > 0) {
1263
- const rendered = renderPendingPairingRequestsTable({
1264
- pending: pendingRows,
1265
- now,
1266
- tableWidth,
1267
- theme: {
1268
- heading,
1269
- warn,
1270
- muted
1271
- }
1272
- });
1273
- defaultRuntime.log("");
1274
- defaultRuntime.log(rendered.heading);
1275
- defaultRuntime.log(rendered.table);
1276
- }
1277
- if (filteredPaired.length > 0) {
1278
- const pairedRows = filteredPaired.map((n) => {
1279
- const live = connectedById?.get(n.nodeId);
1280
- const lastConnectedAtMs = typeof n.lastConnectedAtMs === "number" ? n.lastConnectedAtMs : typeof live?.connectedAtMs === "number" ? live.connectedAtMs : void 0;
1281
- return {
1282
- Node: n.displayName?.trim() ? n.displayName.trim() : n.nodeId,
1283
- Id: n.nodeId,
1284
- IP: n.remoteIp ?? "",
1285
- LastConnect: typeof lastConnectedAtMs === "number" ? formatTimeAgo(Math.max(0, now - lastConnectedAtMs)) : muted("unknown")
1286
- };
1287
- });
1288
- defaultRuntime.log("");
1289
- defaultRuntime.log(heading("Paired"));
1290
- defaultRuntime.log(renderTable({
1291
- width: tableWidth,
1292
- columns: [
1293
- {
1294
- key: "Node",
1295
- header: "Node",
1296
- minWidth: 14,
1297
- flex: true
1298
- },
1299
- {
1300
- key: "Id",
1301
- header: "ID",
1302
- minWidth: 10
1303
- },
1304
- {
1305
- key: "IP",
1306
- header: "IP",
1307
- minWidth: 10
1308
- },
1309
- {
1310
- key: "LastConnect",
1311
- header: "Last Connect",
1312
- minWidth: 14
1313
- }
1314
- ],
1315
- rows: pairedRows
1316
- }).trimEnd());
1317
- }
1318
- });
1319
- }));
1320
- }
1321
-
1322
- //#endregion
1323
- //#region src/cli/nodes-cli/register.ts
1324
- function registerNodesCli(program) {
1325
- const nodes = program.command("nodes").description("Manage gateway-owned nodes (pairing, status, invoke, and media)").addHelpText("after", () => `\n${theme.heading("Examples:")}\n${formatHelpExamples([
1326
- ["remoteclaw nodes status", "List known nodes with live status."],
1327
- ["remoteclaw nodes pairing pending", "Show pending node pairing requests."],
1328
- ["remoteclaw nodes run --node <id> --raw \"uname -a\"", "Run a shell command on a node."],
1329
- ["remoteclaw nodes camera snap --node <id>", "Capture a photo from a node camera."]
1330
- ])}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/nodes", "docs.remoteclaw.org/cli/nodes")}\n`);
1331
- registerNodesStatusCommands(nodes);
1332
- registerNodesPairingCommands(nodes);
1333
- registerNodesInvokeCommands(nodes);
1334
- registerNodesNotifyCommand(nodes);
1335
- registerNodesPushCommand(nodes);
1336
- registerNodesCanvasCommands(nodes);
1337
- registerNodesCameraCommands(nodes);
1338
- registerNodesScreenCommands(nodes);
1339
- registerNodesLocationCommands(nodes);
1340
- }
1341
-
1342
- //#endregion
1343
- export { registerNodesCli };