remoteclaw 0.1.0-next.da482d8 → 0.1.0-next.db8a792

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 (1020) hide show
  1. package/dist/accounts-BZ2kR_Ij.js +47 -0
  2. package/dist/accounts-Bi4rFQG5.js +272 -0
  3. package/dist/accounts-Bpk-loA6.js +47 -0
  4. package/dist/accounts-D1CBpsaa.js +32 -0
  5. package/dist/accounts-DAdUdbPk.js +36 -0
  6. package/dist/accounts-WYyfAiie.js +270 -0
  7. package/dist/accounts-zQKMwnvt.js +36 -0
  8. package/dist/ack-reactions-B1l-vKPr.js +621 -0
  9. package/dist/ack-reactions-BnG0DLMu.js +621 -0
  10. package/dist/acp-cli-Btx71t69.js +1319 -0
  11. package/dist/acp-cli-DVQMjl0p.js +1324 -0
  12. package/dist/active-listener-BfN4RKlA.js +37 -0
  13. package/dist/active-listener-Bq7ckjOV.js +37 -0
  14. package/dist/agent-D2IwuL6g.js +688 -0
  15. package/dist/agent-WaE2mXI1.js +687 -0
  16. package/dist/agent-helpers-BcaiJFiG.js +400 -0
  17. package/dist/agent-scope-DVvX_nkQ.js +116 -0
  18. package/dist/agents-BwnT7jca.js +760 -0
  19. package/dist/agents.config-Dorm30BQ.js +116 -0
  20. package/dist/audio-B1lTyRqS.js +43 -0
  21. package/dist/audio-e0dFnrn8.js +43 -0
  22. package/dist/audit-DZvqycbG.js +3150 -0
  23. package/dist/audit-Mit73dYD.js +3150 -0
  24. package/dist/auth-C-XX0Tdt.js +314 -0
  25. package/dist/auth-D8--b01l.js +315 -0
  26. package/dist/auth-DJ7XEBDO.js +448 -0
  27. package/dist/auth-otyjXf9l.js +448 -0
  28. package/dist/banner-DSE-i7gH.js +294 -0
  29. package/dist/binaries-BSjilwX-.js +13 -0
  30. package/dist/bindings-DFTxQj8x.js +69 -0
  31. package/dist/bonjour-discovery-BnxTMHRd.js +378 -0
  32. package/dist/bonjour-discovery-CVJYHT3g.js +378 -0
  33. package/dist/boot/handler.js +28 -44
  34. package/dist/browser-cli-BR2pZWTC.js +1694 -0
  35. package/dist/browser-cli-I0kfR7FV.js +1690 -0
  36. package/dist/build-info.json +3 -3
  37. package/dist/call-Ck7ysmEl.js +517 -0
  38. package/dist/call-MN6mCJEB.js +518 -0
  39. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  40. package/dist/catalog-Bt9EM4sK.js +185 -0
  41. package/dist/catalog-BtUvWKd9.js +185 -0
  42. package/dist/channel-account-context-BLQq9NKz.js +133 -0
  43. package/dist/channel-account-context-CaCzVa76.js +133 -0
  44. package/dist/channel-activity-BatlvP_U.js +292 -0
  45. package/dist/channel-activity-DHVMMb2x.js +94 -0
  46. package/dist/channel-activity-DtRx3b0W.js +94 -0
  47. package/dist/channel-options-C6kT3nXB.js +32 -0
  48. package/dist/channel-options-CbgR_vsp.js +33 -0
  49. package/dist/channel-selection-CzbrpDPd.js +51 -0
  50. package/dist/channel-selection-Xv5UFxOx.js +51 -0
  51. package/dist/channel-web-DfDokU69.js +2134 -0
  52. package/dist/channel-web-DtvksSuY.js +2132 -0
  53. package/dist/channels-cli-BmdCVX6O.js +1435 -0
  54. package/dist/channels-cli-CrAZpaiN.js +1439 -0
  55. package/dist/channels-status-issues-B77y-TLr.js +18 -0
  56. package/dist/channels-status-issues-COECL8nx.js +18 -0
  57. package/dist/chrome-Cr5wmMk8.js +1733 -0
  58. package/dist/chrome-YBrnJN-g.js +1732 -0
  59. package/dist/chunk-CrfQ_O--.js +341 -0
  60. package/dist/chunk-DFBUmlXU.js +341 -0
  61. package/dist/clack-prompter-CFNKgQXx.js +122 -0
  62. package/dist/clack-prompter-DDlR2e34.js +121 -0
  63. package/dist/cli/daemon-cli.js +1 -1
  64. package/dist/cli-BbOinSy6.js +130 -0
  65. package/dist/cli-DuvHXQ5h.js +134 -0
  66. package/dist/client-BZeatr3g.js +2316 -0
  67. package/dist/client-Bc9JFAwL.js +2316 -0
  68. package/dist/clipboard-Com-8GBg.js +31 -0
  69. package/dist/clipboard-J_9AABIu.js +31 -0
  70. package/dist/command-format-CMAQa4dB.js +32 -0
  71. package/dist/command-format-KkslAzwV.js +18 -0
  72. package/dist/command-logger/handler.js +1 -1
  73. package/dist/command-registry-BJnVtHo0.js +215 -0
  74. package/dist/commands-ijxtne0J.js +41 -0
  75. package/dist/commands-kZtQfqDl.js +41 -0
  76. package/dist/commands-registry-BrBtH2_B.js +891 -0
  77. package/dist/commands-registry-xZoSouba.js +892 -0
  78. package/dist/common-6D7nhDP-.js +156 -0
  79. package/dist/common-B4cjsvqP.js +156 -0
  80. package/dist/completion-cli-CpUq9QC3.js +452 -0
  81. package/dist/completion-cli-De4umD_N.js +452 -0
  82. package/dist/config-C_WcTz_O.js +4231 -0
  83. package/dist/config-DfcqHTH-.js +4229 -0
  84. package/dist/config-cli-C7rq2n_m.js +243 -0
  85. package/dist/config-cli-VToCKln2.js +247 -0
  86. package/dist/config-guard-BlAcGEao.js +75 -0
  87. package/dist/config-guard-C-h_KIeI.js +99 -0
  88. package/dist/config-validation-C0YXR2dY.js +18 -0
  89. package/dist/config-validation-DDYBTmxT.js +18 -0
  90. package/dist/configure-Bkre1zEB.js +891 -0
  91. package/dist/configure-ifuEamRQ.js +889 -0
  92. package/dist/control-auth-DK6cIBzl.js +397 -0
  93. package/dist/control-auth-DQ8bfDMk.js +397 -0
  94. package/dist/control-ui-assets-DLEWfed6.js +186 -0
  95. package/dist/control-ui-assets-DVhkAyhv.js +186 -0
  96. package/dist/conversation-label-HuHoShPF.js +36 -0
  97. package/dist/conversation-label-L0QTtKji.js +36 -0
  98. package/dist/cron-cli-DnxnTi83.js +498 -0
  99. package/dist/cron-cli-yqcBkqZT.js +494 -0
  100. package/dist/daemon-cli-CmQYq8uO.js +735 -0
  101. package/dist/daemon-cli-_OIRoswC.js +737 -0
  102. package/dist/daemon-cli.js +34 -69
  103. package/dist/daemon-install-BEgffqDj.js +56 -0
  104. package/dist/daemon-install-DAorzotp.js +60 -0
  105. package/dist/daemon-install-helpers-B82uvJjJ.js +504 -0
  106. package/dist/daemon-install-helpers-BhL2Gh4l.js +504 -0
  107. package/dist/deliver-CCvDBk5c.js +481 -0
  108. package/dist/deliver-CqKw0wFi.js +481 -0
  109. package/dist/delivery-queue-CK7VnUJf.js +244 -0
  110. package/dist/delivery-queue-DMeQchpT.js +244 -0
  111. package/dist/devices-cli-C6UAfRV_.js +323 -0
  112. package/dist/devices-cli-Le-isdZB.js +319 -0
  113. package/dist/diagnostics-BhFwk6F3.js +35 -0
  114. package/dist/diagnostics-BtaQtaVR.js +35 -0
  115. package/dist/directory-cli-BqMfX5og.js +220 -0
  116. package/dist/directory-cli-DD72TTD4.js +224 -0
  117. package/dist/dispatcher-BLC2WYZv.js +173 -0
  118. package/dist/dispatcher-Cm2FAG_D.js +174 -0
  119. package/dist/dm-policy-shared-DOzpxMHC.js +22 -0
  120. package/dist/dm-policy-shared-DZY0f1bR.js +22 -0
  121. package/dist/dns-cli-BgsNg-bn.js +203 -0
  122. package/dist/dns-cli-CdMU5yuG.js +199 -0
  123. package/dist/dock-ByrYnLiz.js +929 -0
  124. package/dist/dock-CpNmmysM.js +928 -0
  125. package/dist/doctor-completion-BPeaRbmd.js +92 -0
  126. package/dist/doctor-completion-CfOyGJd3.js +92 -0
  127. package/dist/doctor-config-flow-DMyTycn7.js +1935 -0
  128. package/dist/doctor-config-flow-DoMu-pTm.js +1934 -0
  129. package/dist/enable-D5KetMo7.js +59 -0
  130. package/dist/entry.js +61 -1
  131. package/dist/env-BJ36dSrx.js +60 -0
  132. package/dist/errors-BfONuT95.js +35 -0
  133. package/dist/errors-_DSePI1C.js +35 -0
  134. package/dist/exec-DkFE7lqU.js +164 -0
  135. package/dist/exec-mY96dhIg.js +164 -0
  136. package/dist/extensionAPI.js +112 -76
  137. package/dist/fetch-B3EQXbTa.js +67 -0
  138. package/dist/fetch-BPeSHPvr.js +281 -0
  139. package/dist/fetch-BQ7HvRwe.js +67 -0
  140. package/dist/fetch-CbGTzJ8L.js +281 -0
  141. package/dist/fetch-CfIaWynF.js +67 -0
  142. package/dist/file-lock-BHfqppLm.js +107 -0
  143. package/dist/file-lock-CCBpdPM_.js +107 -0
  144. package/dist/fs-safe-BcEpbVjc.js +88 -0
  145. package/dist/fs-safe-S3Zvbabd.js +98 -0
  146. package/dist/gateway-cli-BXipRcsU.js +24602 -0
  147. package/dist/gateway-cli-Bv2K3rXx.js +24606 -0
  148. package/dist/gateway-rpc-BHnd7P1q.js +28 -0
  149. package/dist/gateway-rpc-COEQDswS.js +28 -0
  150. package/dist/gmail-setup-utils-BpdKFe3P.js +423 -0
  151. package/dist/gmail-setup-utils-CqbWr0Kq.js +422 -0
  152. package/dist/health-1ero5j64.js +1414 -0
  153. package/dist/health-ioP2au7j.js +1417 -0
  154. package/dist/heartbeat-visibility-C88L-_f2.js +125 -0
  155. package/dist/heartbeat-visibility-Dk_Q02qX.js +125 -0
  156. package/dist/hook-runner-global-BztoD8lu.js +527 -0
  157. package/dist/hooks-cli-B8D9DzRR.js +1226 -0
  158. package/dist/hooks-cli-rZ3GOXag.js +1222 -0
  159. package/dist/image-ops-Cx1ym2Hi.js +354 -0
  160. package/dist/image-ops-DWytvdh_.js +354 -0
  161. package/dist/import-CTUBsy7D.js +604 -0
  162. package/dist/import-cBp4f62k.js +606 -0
  163. package/dist/inbound-context-COwswi8z.js +68 -0
  164. package/dist/inbound-context-ChcNR30g.js +68 -0
  165. package/dist/index.js +127 -102
  166. package/dist/inspect-BsS3_z-x.js +286 -0
  167. package/dist/inspect-drfsUSIW.js +286 -0
  168. package/dist/installs-BFmmM5Zd.js +325 -0
  169. package/dist/installs-DA7SG0Tx.js +325 -0
  170. package/dist/ipv4-BZGSwnH4.js +46 -0
  171. package/dist/ipv4-DsOgHE0B.js +46 -0
  172. package/dist/ir-R3Pk8Cv8.js +972 -0
  173. package/dist/lifecycle-core-BZMeOT7u.js +474 -0
  174. package/dist/lifecycle-core-C6-_Gts0.js +476 -0
  175. package/dist/loader-CJ2UHqV7.js +22414 -0
  176. package/dist/loader-dEFvmwXu.js +22411 -0
  177. package/dist/logger-9I2fg5mr.js +49 -0
  178. package/dist/login-D9uJTyEv.js +62 -0
  179. package/dist/login-DTh702_w.js +61 -0
  180. package/dist/login-qr-BKsmW6XI.js +325 -0
  181. package/dist/login-qr-SOXdIR58.js +329 -0
  182. package/dist/logs-cli-BshJBHZQ.js +236 -0
  183. package/dist/logs-cli-Ckh-BBTT.js +240 -0
  184. package/dist/markdown-tables-Cfz7zDXI.js +29 -0
  185. package/dist/markdown-tables-DeFSK6aY.js +29 -0
  186. package/dist/media-BD2cZGXT.js +971 -0
  187. package/dist/media-CjvpnJmQ.js +10388 -0
  188. package/dist/message-action-names-CZHrHMRE.js +2520 -0
  189. package/dist/message-action-names-CiZ-0Smk.js +2520 -0
  190. package/dist/message-channel-EMCYRaxk.js +91 -0
  191. package/dist/mime-1E7nn9IU.js +146 -0
  192. package/dist/mime-mSgQeDnC.js +146 -0
  193. package/dist/net-Cg8AQeke.js +225 -0
  194. package/dist/net-DMh1m8AZ.js +225 -0
  195. package/dist/node-cli-BJ5CCbqx.js +1462 -0
  196. package/dist/node-cli-wYYhAs8x.js +1458 -0
  197. package/dist/node-service-CkwVlcey.js +67 -0
  198. package/dist/node-service-DTVW9YJh.js +67 -0
  199. package/dist/nodes-cli-CMFYLD1o.js +1346 -0
  200. package/dist/nodes-cli-DC2zUx3f.js +1350 -0
  201. package/dist/nodes-screen-6pXv1lYa.js +250 -0
  202. package/dist/nodes-screen-CTIZKksn.js +250 -0
  203. package/dist/note-CMELkPJN.js +92 -0
  204. package/dist/npm-registry-spec-BiJI7Rkr.js +786 -0
  205. package/dist/npm-registry-spec-Dza35Ig4.js +786 -0
  206. package/dist/npm-resolution-CUQGDty4.js +86 -0
  207. package/dist/npm-resolution-CwbZK9AI.js +86 -0
  208. package/dist/onboard-8Qd9lU8x.js +649 -0
  209. package/dist/onboard-Q3cY65m8.js +647 -0
  210. package/dist/onboard-auth-BUzYDEqf.js +211 -0
  211. package/dist/onboard-auth-DcVXyd-Z.js +207 -0
  212. package/dist/onboard-channels-BFHuA-AU.js +2548 -0
  213. package/dist/onboard-channels-DVrPP_ie.js +2547 -0
  214. package/dist/onboard-helpers-B-bBSsyR.js +363 -0
  215. package/dist/onboard-helpers-YsCa-sAt.js +364 -0
  216. package/dist/onboard-remote-BWFcuEOD.js +127 -0
  217. package/dist/onboard-remote-C0THuDTK.js +127 -0
  218. package/dist/onboarding-B31lnOPp.js +586 -0
  219. package/dist/onboarding-DmN_qC8e.js +588 -0
  220. package/dist/onboarding.finalize-DGD0PA-D.js +402 -0
  221. package/dist/onboarding.finalize-DNIb3meE.js +404 -0
  222. package/dist/onboarding.gateway-config-BaeIuA62.js +195 -0
  223. package/dist/onboarding.gateway-config-DMV2Odzr.js +201 -0
  224. package/dist/outbound-BdxBHDax.js +220 -0
  225. package/dist/outbound-D-Y9rMgB.js +221 -0
  226. package/dist/outbound-attachment-CvZ04r5k.js +18 -0
  227. package/dist/outbound-attachment-DYa1asB5.js +18 -0
  228. package/dist/outbound-attachment-DgUpk7Uh.js +18 -0
  229. package/dist/pairing-cli-BxTv78V7.js +125 -0
  230. package/dist/pairing-cli-CxUCzNUc.js +129 -0
  231. package/dist/pairing-labels-DVO6NJr0.js +9 -0
  232. package/dist/pairing-labels-D_pD8Cag.js +9 -0
  233. package/dist/pairing-store-Bu9pVlkO.js +459 -0
  234. package/dist/pairing-store-CWaGbAGi.js +460 -0
  235. package/dist/path-env-RsuO6yO-.js +89 -0
  236. package/dist/path-env-_my-d_iR.js +89 -0
  237. package/dist/path-safety-CfiVyVz7.js +14 -0
  238. package/dist/path-safety-D-wLK4pV.js +14 -0
  239. package/dist/plugin-auto-enable-CW01H36W.js +301 -0
  240. package/dist/plugin-auto-enable-CeHhBLCU.js +302 -0
  241. package/dist/plugin-registry-CWL37HnB.js +33 -0
  242. package/dist/plugin-registry-ELliiumZ.js +33 -0
  243. package/dist/plugin-sdk/auth/provider-auth.d.ts +0 -6
  244. package/dist/plugin-sdk/auto-reply/reply/agent-runner-utils.d.ts +9 -29
  245. package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +0 -2
  246. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/shared.d.ts +1 -1
  247. package/dist/plugin-sdk/auto-reply/reply/queue/types.d.ts +0 -2
  248. package/dist/plugin-sdk/auto-reply/status.d.ts +0 -4
  249. package/dist/plugin-sdk/auto-reply/templating.d.ts +0 -4
  250. package/dist/plugin-sdk/config/sessions/types.d.ts +0 -2
  251. package/dist/plugin-sdk/config/types.tools.d.ts +1 -59
  252. package/dist/plugin-sdk/config/types.tts.d.ts +2 -1
  253. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +0 -177
  254. package/dist/plugin-sdk/config/zod-schema.core.d.ts +2 -230
  255. package/dist/plugin-sdk/config/zod-schema.d.ts +3 -192
  256. package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +3 -15
  257. package/dist/plugin-sdk/config/zod-schema.providers.d.ts +2 -10
  258. package/dist/plugin-sdk/config/zod-schema.session.d.ts +1 -5
  259. package/dist/plugin-sdk/gateway/protocol/index.d.ts +5 -5
  260. package/dist/plugin-sdk/index.js +72 -142
  261. package/dist/plugin-sdk/middleware/cli-runtime-base.d.ts +6 -0
  262. package/dist/plugin-sdk/middleware/runtimes/claude.d.ts +6 -0
  263. package/dist/plugin-sdk/middleware/runtimes/codex.d.ts +2 -2
  264. package/dist/plugin-sdk/plugin-sdk/index.d.ts +2 -0
  265. package/dist/plugin-sdk/plugins/manifest-registry.d.ts +2 -0
  266. package/dist/plugin-sdk/plugins/manifest.d.ts +2 -0
  267. package/dist/plugin-sdk/plugins/registry.d.ts +18 -0
  268. package/dist/plugin-sdk/plugins/types.d.ts +4 -0
  269. package/dist/plugin-sdk/stt/preflight.d.ts +2 -4
  270. package/dist/plugin-sdk/stt/providers/index.d.ts +1 -1
  271. package/dist/plugin-sdk/stt/providers/shared.d.ts +20 -1
  272. package/dist/plugin-sdk/tts/providers/edge.d.ts +2 -0
  273. package/dist/plugin-sdk/tts/providers/elevenlabs.d.ts +2 -0
  274. package/dist/plugin-sdk/tts/providers/index.d.ts +4 -0
  275. package/dist/plugin-sdk/tts/providers/openai.d.ts +2 -0
  276. package/dist/plugin-sdk/tts/tts.d.ts +13 -5
  277. package/dist/plugin-sdk/tts/types.d.ts +21 -0
  278. package/dist/plugins-DExsdlTp.js +455 -0
  279. package/dist/plugins-DdMgSc_b.js +453 -0
  280. package/dist/plugins-cli-DqBWiT_G.js +806 -0
  281. package/dist/plugins-cli-KQEzhU6P.js +802 -0
  282. package/dist/ports-CL0pXAXO.js +96 -0
  283. package/dist/ports-CRI-HSZx.js +370 -0
  284. package/dist/ports-DiQFcKUB.js +316 -0
  285. package/dist/ports-HRurfPIr.js +96 -0
  286. package/dist/preflight-6QRqxWh7.js +667 -0
  287. package/dist/preflight-DDZjr5KD.js +667 -0
  288. package/dist/program-DmhbOJj3.js +249 -0
  289. package/dist/program-context-PPMzZ6Gu.js +474 -0
  290. package/dist/prompt-select-styled-CmSWunD8.js +1669 -0
  291. package/dist/prompt-select-styled-PfxT9zl9.js +1672 -0
  292. package/dist/provider-auth-CfdnLqh3.js +187 -0
  293. package/dist/provider-auth-gpHOMUBP.js +187 -0
  294. package/dist/provider-dispatcher-D4eY8LZW.js +659 -0
  295. package/dist/provider-dispatcher-D5Q7M15D.js +660 -0
  296. package/dist/push-apns-BNwVMXX9.js +713 -0
  297. package/dist/push-apns-BszVkcZK.js +711 -0
  298. package/dist/pw-ai-Bdb3zrBM.js +1911 -0
  299. package/dist/pw-ai-BvcvEdGs.js +1908 -0
  300. package/dist/qr-cli-BBgk2ci1.js +349 -0
  301. package/dist/qr-cli-BLzVrhia.js +353 -0
  302. package/dist/redact-snapshot-CyBDcb_a.js +1966 -0
  303. package/dist/redact-snapshot-D9oPMqA-.js +1966 -0
  304. package/dist/register.agent-CAhKX3Ft.js +1019 -0
  305. package/dist/register.agent-RKHXtLLm.js +291 -0
  306. package/dist/register.configure-CW6XRGxV.js +129 -0
  307. package/dist/register.configure-dvrKc0j7.js +134 -0
  308. package/dist/register.import-CRLOolHv.js +31 -0
  309. package/dist/register.import-dhDEj7Om.js +29 -0
  310. package/dist/register.maintenance-EAhr1tJ9.js +500 -0
  311. package/dist/register.maintenance-lWz4v90u.js +502 -0
  312. package/dist/register.message-DyWkwUIU.js +690 -0
  313. package/dist/register.message-bl2Khz6c.js +686 -0
  314. package/dist/register.onboard-BAozmeei.js +97 -0
  315. package/dist/register.onboard-Da9hWQR1.js +93 -0
  316. package/dist/register.setup-DVrQWLoF.js +117 -0
  317. package/dist/register.setup-DbiLuuqg.js +113 -0
  318. package/dist/register.status-health-sessions-CA8ApUkH.js +668 -0
  319. package/dist/register.status-health-sessions-lGszs-NJ.js +428 -0
  320. package/dist/register.subclis-C-lqMygb.js +267 -0
  321. package/dist/replies-BTC1z8j0.js +136 -0
  322. package/dist/replies-BhlnuFp0.js +136 -0
  323. package/dist/reply-DZMooMoq.js +12880 -0
  324. package/dist/reply-directives-C0-hYyAt.js +182 -0
  325. package/dist/reply-directives-C_CGXLBJ.js +182 -0
  326. package/dist/reply-payloads-BospFSPI.js +527 -0
  327. package/dist/reply-prefix-DDgh77yy.js +37 -0
  328. package/dist/reply-prefix-DwKZPZyG.js +37 -0
  329. package/dist/reply-yGEQ0UW4.js +12877 -0
  330. package/dist/resolve-route-B73QhBIl.js +249 -0
  331. package/dist/resolve-route-DckdRbW8.js +249 -0
  332. package/dist/response-prefix-template-x5RBQnEy.js +134 -0
  333. package/dist/retry-CDrH81GP.js +77 -0
  334. package/dist/run-main-D869n5qf.js +307 -0
  335. package/dist/secure-random-CxzxAnMS.js +44 -0
  336. package/dist/security-cli-CfqosyUf.js +487 -0
  337. package/dist/security-cli-DMZun6gO.js +482 -0
  338. package/dist/send-3wvngctD.js +547 -0
  339. package/dist/send-AY7Fs5ky.js +374 -0
  340. package/dist/send-BSWD4Kr_.js +2245 -0
  341. package/dist/send-BT4HhTLm.js +349 -0
  342. package/dist/send-BvuxToC8.js +2245 -0
  343. package/dist/send-CaUxFvu0.js +492 -0
  344. package/dist/send-CiBRE4OY.js +1178 -0
  345. package/dist/send-Cidd4lQn.js +11 -0
  346. package/dist/send-Cq_Db9wG.js +1779 -0
  347. package/dist/send-DBFcxDPm.js +1776 -0
  348. package/dist/send-DUha0nIz.js +492 -0
  349. package/dist/send-DgYBI05s.js +332 -0
  350. package/dist/send-Dnf5bISH.js +426 -0
  351. package/dist/send-NcQk6UH1.js +547 -0
  352. package/dist/send-Og0-IMee.js +29 -0
  353. package/dist/send-oCN80Pl2.js +349 -0
  354. package/dist/server-DoGGLeP3.js +202 -0
  355. package/dist/server-V7G9FG2A.js +206 -0
  356. package/dist/server-lifecycle-CSWpSlvn.js +2437 -0
  357. package/dist/server-lifecycle-Cal8hBP1.js +2437 -0
  358. package/dist/server-node-events-DSee6jSG.js +394 -0
  359. package/dist/server-node-events-DbQWkU3M.js +390 -0
  360. package/dist/service-Duw0xMJX.js +670 -0
  361. package/dist/service-SRcnA1Am.js +670 -0
  362. package/dist/session-BLcfWX5_.js +170 -0
  363. package/dist/session-CQwkaAs-.js +170 -0
  364. package/dist/session-cost-usage-C-UcrvL4.js +627 -0
  365. package/dist/session-cost-usage-Dg3dzS0E.js +627 -0
  366. package/dist/session-dirs-D6mFEF90.js +318 -0
  367. package/dist/session-dirs-DVsG6e7L.js +318 -0
  368. package/dist/session-utils-C6522g3D.js +622 -0
  369. package/dist/session-utils-Dq2BJyVy.js +622 -0
  370. package/dist/sessions-CNkj4Eq8.js +247 -0
  371. package/dist/sessions-DDIoP7Rl.js +2569 -0
  372. package/dist/shell-env-D8nXPDbP.js +163 -0
  373. package/dist/ssrf-7I3FUHpm.js +183 -0
  374. package/dist/ssrf-DZi4qw5c.js +183 -0
  375. package/dist/status-CrAe8ZYt.js +1983 -0
  376. package/dist/status-DetRJxvZ.js +1979 -0
  377. package/dist/status.update-DquSK3p7.js +449 -0
  378. package/dist/status.update-iABAY3iW.js +449 -0
  379. package/dist/store-Bnm6zwaq.js +2571 -0
  380. package/dist/store-CVkGKjWm.js +64 -0
  381. package/dist/store-D_gpBpAW.js +64 -0
  382. package/dist/store-mxh63FBa.js +53 -0
  383. package/dist/subagent-registry-DNAz7Heu.js +4856 -0
  384. package/dist/subagent-registry-Dhz6HC4Z.js +4854 -0
  385. package/dist/subsystem-DGSHVL8I.js +1081 -0
  386. package/dist/subsystem-m7RSGQoR.js +1196 -0
  387. package/dist/system-cli-ByVDF6p8.js +77 -0
  388. package/dist/system-cli-CERb89Bl.js +73 -0
  389. package/dist/systemd-CSUtfsJx.js +547 -0
  390. package/dist/systemd-hints-BCxkQemJ.js +278 -0
  391. package/dist/systemd-hints-ef7m-7ZH.js +278 -0
  392. package/dist/systemd-linger-CWLgT0Wr.js +75 -0
  393. package/dist/systemd-linger-DT0E7YET.js +75 -0
  394. package/dist/systemd-tS61V4ao.js +547 -0
  395. package/dist/tables-DED01JNI.js +55 -0
  396. package/dist/tables-K3rOiGaJ.js +55 -0
  397. package/dist/tables-NcsXz3r_.js +55 -0
  398. package/dist/tailnet-CEudzG0i.js +40 -0
  399. package/dist/tailnet-D66Y5zC7.js +40 -0
  400. package/dist/tailscale-DjSRjPA-.js +230 -0
  401. package/dist/tailscale-DngZHD9L.js +230 -0
  402. package/dist/targets-BOpYPsGM.js +2545 -0
  403. package/dist/targets-BVsxzQh1.js +220 -0
  404. package/dist/targets-C99szk_e.js +114 -0
  405. package/dist/targets-CA4zx5G4.js +650 -0
  406. package/dist/targets-CTNm3bJ8.js +2544 -0
  407. package/dist/targets-DpmQjetK.js +53 -0
  408. package/dist/targets-Q-YGeAqu.js +650 -0
  409. package/dist/targets-rdWlC6Y-.js +53 -0
  410. package/dist/tool-display-Br6mwaJc.js +785 -0
  411. package/dist/tool-display-CLBf5cRa.js +785 -0
  412. package/dist/tool-images-DB4f57XK.js +263 -0
  413. package/dist/tool-images-kloBqxqK.js +263 -0
  414. package/dist/trash-B32LfX0l.js +125 -0
  415. package/dist/trash-SlUJxKO7.js +125 -0
  416. package/dist/tui-CHOtFK6k.js +3282 -0
  417. package/dist/tui-D4yiSpop.js +3282 -0
  418. package/dist/tui-cli-CzrjmAMZ.js +66 -0
  419. package/dist/tui-cli-Dpbs2QW_.js +62 -0
  420. package/dist/update-B5nYVxpc.js +349 -0
  421. package/dist/update-Bs3HhSnE.js +349 -0
  422. package/dist/update-cli-D_yz9Kyz.js +1147 -0
  423. package/dist/update-cli-DdfwNAsA.js +1149 -0
  424. package/dist/usage-BVyabt5E.js +5421 -0
  425. package/dist/voice-credentials-CI4VgB6u.js +46 -0
  426. package/dist/voice-credentials-l_d_gZiG.js +46 -0
  427. package/dist/web-B5xSAAH2.js +74 -0
  428. package/dist/web-Cc4tDVO9.js +3067 -0
  429. package/dist/web-Cdp9_IUk.js +79 -0
  430. package/dist/webhooks-cli-BDPcBkZL.js +330 -0
  431. package/dist/webhooks-cli-sRfsNesg.js +334 -0
  432. package/dist/whatsapp-actions-BGZXdWiP.js +125 -0
  433. package/dist/whatsapp-actions-HdmZu8oU.js +130 -0
  434. package/dist/workspace-D5LAl41l.js +449 -0
  435. package/dist/workspace-DRYGbrDM.js +447 -0
  436. package/dist/zod-schema-C8gEV0uz.js +2739 -0
  437. package/dist/zod-schema-CCUbW_Si.js +2739 -0
  438. package/package.json +1 -1
  439. package/dist/accounts-Aqbb2_Fn.js +0 -270
  440. package/dist/accounts-Bo2bX8jP.js +0 -272
  441. package/dist/accounts-D3fAPVzU.js +0 -36
  442. package/dist/accounts-DUEDngp6.js +0 -32
  443. package/dist/accounts-DZmv4bXS.js +0 -47
  444. package/dist/accounts-DmB4SVPK.js +0 -47
  445. package/dist/accounts-DtkyfvwR.js +0 -36
  446. package/dist/ack-reactions-Bvfy17SM.js +0 -446
  447. package/dist/ack-reactions-DYU8uhcz.js +0 -446
  448. package/dist/acp-cli-DVXhDMc6.js +0 -1324
  449. package/dist/acp-cli-QBL4_qcW.js +0 -1319
  450. package/dist/active-listener-CwxZ24bZ.js +0 -37
  451. package/dist/active-listener-v2sItamh.js +0 -37
  452. package/dist/agent-BisC5WZ6.js +0 -704
  453. package/dist/agent-Bqdrc0AK.js +0 -703
  454. package/dist/agent-helpers-BSGqeJr-.js +0 -400
  455. package/dist/agent-scope-_ND_-bJy.js +0 -116
  456. package/dist/agents-khSbraAA.js +0 -760
  457. package/dist/agents.config-D8gLHPWo.js +0 -116
  458. package/dist/audio-BIvUsncf.js +0 -43
  459. package/dist/audio-CQ8TfmVN.js +0 -43
  460. package/dist/audit-C0x7Cm6K.js +0 -3150
  461. package/dist/audit-CAY-uzWP.js +0 -3150
  462. package/dist/auth-DGqCLaQq.js +0 -448
  463. package/dist/auth-DLTRySEi.js +0 -314
  464. package/dist/auth-Drf91ntw.js +0 -315
  465. package/dist/auth-ku2khJyQ.js +0 -448
  466. package/dist/banner-txHC40UW.js +0 -294
  467. package/dist/binaries-BTvHIrCr.js +0 -13
  468. package/dist/bindings-DsWJQVKh.js +0 -69
  469. package/dist/bonjour-discovery-BElR62fH.js +0 -378
  470. package/dist/bonjour-discovery-C8XyVsjb.js +0 -378
  471. package/dist/browser-cli-DxJew43l.js +0 -1694
  472. package/dist/browser-cli-p0nakrjO.js +0 -1690
  473. package/dist/call-BrTmlOx3.js +0 -518
  474. package/dist/call-ChdUdwb4.js +0 -517
  475. package/dist/catalog-DTlcfTT9.js +0 -185
  476. package/dist/catalog-PixZqhZK.js +0 -185
  477. package/dist/channel-account-context-BO245Tcn.js +0 -133
  478. package/dist/channel-account-context-BgK0hm-I.js +0 -133
  479. package/dist/channel-activity-B0qlUR5e.js +0 -292
  480. package/dist/channel-activity-C-L6rDrQ.js +0 -94
  481. package/dist/channel-activity-DdgLBZ7M.js +0 -94
  482. package/dist/channel-options-CjlvAHSH.js +0 -32
  483. package/dist/channel-options-DpjP7qQf.js +0 -33
  484. package/dist/channel-selection-DW21dXB1.js +0 -51
  485. package/dist/channel-selection-wK_6S2Ku.js +0 -51
  486. package/dist/channel-web-COTkzJBt.js +0 -2136
  487. package/dist/channel-web-DUz5bn9h.js +0 -2134
  488. package/dist/channels-cli-D8RS8g2Q.js +0 -1438
  489. package/dist/channels-cli-X_8rENR6.js +0 -1434
  490. package/dist/channels-status-issues-B6I2l7Sm.js +0 -18
  491. package/dist/channels-status-issues-DhDH2fWp.js +0 -18
  492. package/dist/chrome-Dqtq7zCc.js +0 -1733
  493. package/dist/chrome-XeSY99Z_.js +0 -1732
  494. package/dist/chunk-CWD_zrz_.js +0 -341
  495. package/dist/chunk-LUabyS9k.js +0 -341
  496. package/dist/clack-prompter-fAgbvPW4.js +0 -122
  497. package/dist/clack-prompter-kf9qTN5p.js +0 -121
  498. package/dist/cli-BjPLpuZR.js +0 -133
  499. package/dist/cli-fFyOTtkD.js +0 -129
  500. package/dist/client-B9u3JdT_.js +0 -2316
  501. package/dist/client-DEEOhx0w.js +0 -2316
  502. package/dist/clipboard-B2nstLx7.js +0 -31
  503. package/dist/clipboard-C8QI9fes.js +0 -31
  504. package/dist/command-format-D0vKipG9.js +0 -32
  505. package/dist/command-format-LFmgWzKJ.js +0 -18
  506. package/dist/command-registry-BsPaMI53.js +0 -215
  507. package/dist/commands-BAYwlS3d.js +0 -41
  508. package/dist/commands-D842kCjj.js +0 -41
  509. package/dist/commands-registry-Cg2GTT2J.js +0 -892
  510. package/dist/commands-registry-Yz-uV5oG.js +0 -891
  511. package/dist/common-B67cBSew.js +0 -156
  512. package/dist/common-DEoiTqOr.js +0 -156
  513. package/dist/completion-cli-BO5mIPLa.js +0 -452
  514. package/dist/completion-cli-z9a6MVgr.js +0 -452
  515. package/dist/config-CAa0rZSx.js +0 -4225
  516. package/dist/config-W0w-gi2j.js +0 -4223
  517. package/dist/config-cli-DdRue35G.js +0 -243
  518. package/dist/config-cli-uOwxu5AC.js +0 -247
  519. package/dist/config-guard-BI85dxHR.js +0 -99
  520. package/dist/config-guard-DQqnigKh.js +0 -75
  521. package/dist/config-validation-D-h4LHyA.js +0 -18
  522. package/dist/config-validation-Df_kroIQ.js +0 -18
  523. package/dist/configure-B7ChPbXv.js +0 -891
  524. package/dist/configure-QspkIXME.js +0 -889
  525. package/dist/control-auth-BrBr2xb8.js +0 -397
  526. package/dist/control-auth-CehjYKnL.js +0 -397
  527. package/dist/control-ui-assets-D8F383Mo.js +0 -186
  528. package/dist/control-ui-assets-DYKtRIm0.js +0 -186
  529. package/dist/conversation-label-Bn5j3lUT.js +0 -36
  530. package/dist/conversation-label-CDH4rKMG.js +0 -36
  531. package/dist/cron-cli-DVzDHzAX.js +0 -494
  532. package/dist/cron-cli-gkH2qKM4.js +0 -498
  533. package/dist/daemon-cli-BTdNO1vH.js +0 -737
  534. package/dist/daemon-cli-DNNqI2LD.js +0 -735
  535. package/dist/daemon-install-CaEHG92p.js +0 -56
  536. package/dist/daemon-install-DbpDSDfW.js +0 -60
  537. package/dist/daemon-install-helpers-DjE_WnlY.js +0 -504
  538. package/dist/daemon-install-helpers-DocTUxqQ.js +0 -504
  539. package/dist/deliver-CDcL8ok6.js +0 -481
  540. package/dist/deliver-CS8JsevV.js +0 -481
  541. package/dist/delivery-queue-CTaYZQ_8.js +0 -244
  542. package/dist/delivery-queue-DMZ7mH8P.js +0 -244
  543. package/dist/devices-cli-BBJ4His-.js +0 -319
  544. package/dist/devices-cli-DHSJSFW1.js +0 -323
  545. package/dist/diagnostics-BSvCaLNs.js +0 -35
  546. package/dist/diagnostics-mWFAsFeo.js +0 -35
  547. package/dist/directory-cli-C-oHD_XE.js +0 -224
  548. package/dist/directory-cli-Cw99VGvr.js +0 -220
  549. package/dist/dispatcher-C8d1NNLZ.js +0 -174
  550. package/dist/dispatcher-DY6Ga60j.js +0 -173
  551. package/dist/dm-policy-shared-CRQ-Wr5g.js +0 -22
  552. package/dist/dm-policy-shared-CXXf2ltd.js +0 -22
  553. package/dist/dns-cli-BOqx9qo1.js +0 -199
  554. package/dist/dns-cli-WfqSC3JU.js +0 -203
  555. package/dist/dock-Big-J2VN.js +0 -929
  556. package/dist/dock-Cj4PKiUh.js +0 -928
  557. package/dist/doctor-completion-hYqcZ7IE.js +0 -92
  558. package/dist/doctor-completion-nxQQ5bEw.js +0 -92
  559. package/dist/doctor-config-flow-BUuADMDa.js +0 -1935
  560. package/dist/doctor-config-flow-yOUpQC2B.js +0 -1934
  561. package/dist/enable-DC9V0nTO.js +0 -59
  562. package/dist/env-B3zr72vQ.js +0 -60
  563. package/dist/errors-CdmXrBic.js +0 -35
  564. package/dist/errors-Cr_NbOb4.js +0 -35
  565. package/dist/exec-D_s-zAtY.js +0 -164
  566. package/dist/exec-Zz6eJ6YU.js +0 -164
  567. package/dist/fetch-BIZkXB5i.js +0 -67
  568. package/dist/fetch-DRVdxxEj.js +0 -67
  569. package/dist/fetch-DTR2MlOk.js +0 -67
  570. package/dist/file-lock-6NXMPZTT.js +0 -107
  571. package/dist/file-lock-C_KRlR7M.js +0 -107
  572. package/dist/fs-safe-DZHpH7TI.js +0 -98
  573. package/dist/fs-safe-vm3JMUkq.js +0 -88
  574. package/dist/gateway-cli-DEW-Ukmc.js +0 -24351
  575. package/dist/gateway-cli-DQYcZCOV.js +0 -24347
  576. package/dist/gateway-rpc-BCFkQPa2.js +0 -28
  577. package/dist/gateway-rpc-DOgYbsOG.js +0 -28
  578. package/dist/gmail-setup-utils-DMeA1UM1.js +0 -423
  579. package/dist/gmail-setup-utils-FHWSAur3.js +0 -422
  580. package/dist/health-BrLNGkZV.js +0 -1414
  581. package/dist/health-C8p9mnfl.js +0 -1417
  582. package/dist/heartbeat-visibility-CJVdaMZF.js +0 -125
  583. package/dist/heartbeat-visibility-DwK1UL0t.js +0 -125
  584. package/dist/hook-runner-global-C0DFQmQw.js +0 -527
  585. package/dist/hooks-cli-DEKi-tbA.js +0 -1221
  586. package/dist/hooks-cli-FndXPMD3.js +0 -1225
  587. package/dist/image-ops-B9ofmzSq.js +0 -354
  588. package/dist/image-ops-CMuvRsMY.js +0 -354
  589. package/dist/import-BH13F5mT.js +0 -606
  590. package/dist/import-D8HVcDqO.js +0 -604
  591. package/dist/inbound-context-BLy-G2Eq.js +0 -68
  592. package/dist/inbound-context-CmmmT8IP.js +0 -68
  593. package/dist/inbound-path-policy-BdmTOUka.js +0 -90
  594. package/dist/inbound-path-policy-BurOAu44.js +0 -90
  595. package/dist/inspect-nW8LAukU.js +0 -286
  596. package/dist/inspect-xy2EHy8G.js +0 -286
  597. package/dist/installs-CpfHmKY1.js +0 -325
  598. package/dist/installs-DebiMrGj.js +0 -325
  599. package/dist/ipv4-ysiNGssl.js +0 -46
  600. package/dist/ipv4-zc_Hfvbp.js +0 -46
  601. package/dist/ir-CaxTklDC.js +0 -940
  602. package/dist/lifecycle-core-Z5SScMlU.js +0 -476
  603. package/dist/lifecycle-core-pPwYSt7m.js +0 -474
  604. package/dist/loader-BapIdJyx.js +0 -22404
  605. package/dist/loader-BdAToyDH.js +0 -22401
  606. package/dist/local-roots-CrJ_Jv_G.js +0 -314
  607. package/dist/local-roots-n_Y4iYwb.js +0 -313
  608. package/dist/logger-B8yHnzPl.js +0 -49
  609. package/dist/login-C99fsB0N.js +0 -61
  610. package/dist/login-cLvGPjeO.js +0 -62
  611. package/dist/login-qr-CGqRFwgl.js +0 -329
  612. package/dist/login-qr-dnY5DC2C.js +0 -325
  613. package/dist/logs-cli-Bda7xY4N.js +0 -236
  614. package/dist/logs-cli-HzR-vnpD.js +0 -240
  615. package/dist/markdown-tables-58Hq__7K.js +0 -29
  616. package/dist/markdown-tables-GFEX0OR6.js +0 -29
  617. package/dist/media-CFsyXs3H.js +0 -940
  618. package/dist/media-Du5SHtnp.js +0 -10452
  619. package/dist/message-action-names-BfuEvR6j.js +0 -2521
  620. package/dist/message-action-names-CVBkpOLt.js +0 -2521
  621. package/dist/message-channel-FMNRI5Ax.js +0 -91
  622. package/dist/mime-AuIDUZPG.js +0 -149
  623. package/dist/mime-Cqg1jjia.js +0 -149
  624. package/dist/net-BEFkF-nI.js +0 -225
  625. package/dist/net-CNsUGiSw.js +0 -225
  626. package/dist/node-cli-Bu-InsO9.js +0 -1462
  627. package/dist/node-cli-DE7Pm7Fr.js +0 -1458
  628. package/dist/node-service-CumFZc9L.js +0 -67
  629. package/dist/node-service-DY1gG06I.js +0 -67
  630. package/dist/nodes-cli-B5aAExN0.js +0 -1350
  631. package/dist/nodes-cli-eKRqlKuO.js +0 -1346
  632. package/dist/nodes-screen-B3Sij1uT.js +0 -250
  633. package/dist/nodes-screen-DEvpoFmH.js +0 -250
  634. package/dist/note-CPFJCWJJ.js +0 -92
  635. package/dist/npm-registry-spec-BgMtTHvq.js +0 -786
  636. package/dist/npm-registry-spec-Dz3z1Zpd.js +0 -786
  637. package/dist/npm-resolution-Buio63BQ.js +0 -86
  638. package/dist/npm-resolution-gH1zHW2a.js +0 -86
  639. package/dist/onboard-BSf6qJWk.js +0 -647
  640. package/dist/onboard-V-SsZRk-.js +0 -649
  641. package/dist/onboard-auth-C_wHkop1.js +0 -207
  642. package/dist/onboard-auth-CkCBLvTg.js +0 -211
  643. package/dist/onboard-channels-DQTGPC18.js +0 -2548
  644. package/dist/onboard-channels-DSDQfR0u.js +0 -2547
  645. package/dist/onboard-helpers-Q7M6vdzh.js +0 -363
  646. package/dist/onboard-helpers-SCO3k5Y8.js +0 -364
  647. package/dist/onboard-remote-Co2hv1AD.js +0 -127
  648. package/dist/onboard-remote-Dl3BFSg2.js +0 -127
  649. package/dist/onboarding-B0bJfZ20.js +0 -588
  650. package/dist/onboarding-CeBR9OBi.js +0 -586
  651. package/dist/onboarding.finalize-BPgfWPB9.js +0 -404
  652. package/dist/onboarding.finalize-BmfLvNPJ.js +0 -402
  653. package/dist/onboarding.gateway-config-BL0Q7Wpg.js +0 -201
  654. package/dist/onboarding.gateway-config-D2QsXMYO.js +0 -195
  655. package/dist/outbound-CcaPcetn.js +0 -220
  656. package/dist/outbound-CeiW8z3a.js +0 -221
  657. package/dist/outbound-attachment-BIvFb3Is.js +0 -18
  658. package/dist/outbound-attachment-Bfm5-JYe.js +0 -18
  659. package/dist/outbound-attachment-CZ7zoYxB.js +0 -18
  660. package/dist/pairing-cli-CgX79ujL.js +0 -125
  661. package/dist/pairing-cli-DvbbXFgC.js +0 -129
  662. package/dist/pairing-labels-3wDxaApH.js +0 -9
  663. package/dist/pairing-labels-DCbWnbWk.js +0 -9
  664. package/dist/pairing-store-CdY7iRS0.js +0 -459
  665. package/dist/pairing-store-DykkYpQ7.js +0 -460
  666. package/dist/path-env-Cqo5LZmw.js +0 -89
  667. package/dist/path-env-GTM4HXCN.js +0 -89
  668. package/dist/path-safety-CXKAVpMp.js +0 -14
  669. package/dist/path-safety-DGB91qBk.js +0 -14
  670. package/dist/plugin-auto-enable-C6FPGg_-.js +0 -301
  671. package/dist/plugin-auto-enable-L8eOc8iC.js +0 -302
  672. package/dist/plugin-registry-CHlaWZD7.js +0 -33
  673. package/dist/plugin-registry-DQdMze4z.js +0 -33
  674. package/dist/plugin-sdk/auth/session-override.d.ts +0 -17
  675. package/dist/plugin-sdk/auto-reply/reply/directive-handling.auth.d.ts +0 -18
  676. package/dist/plugin-sdk/link-understanding/apply.d.ts +0 -10
  677. package/dist/plugin-sdk/link-understanding/defaults.d.ts +0 -2
  678. package/dist/plugin-sdk/link-understanding/detect.d.ts +0 -3
  679. package/dist/plugin-sdk/link-understanding/format.d.ts +0 -4
  680. package/dist/plugin-sdk/link-understanding/runner.d.ts +0 -11
  681. package/dist/plugin-sdk/media/input-files.d.ts +0 -95
  682. package/dist/plugin-sdk/media-understanding/apply.d.ts +0 -19
  683. package/dist/plugin-sdk/media-understanding/attachments.d.ts +0 -49
  684. package/dist/plugin-sdk/media-understanding/concurrency.d.ts +0 -1
  685. package/dist/plugin-sdk/media-understanding/defaults.d.ts +0 -11
  686. package/dist/plugin-sdk/media-understanding/errors.d.ts +0 -6
  687. package/dist/plugin-sdk/media-understanding/format.d.ts +0 -7
  688. package/dist/plugin-sdk/media-understanding/fs.d.ts +0 -1
  689. package/dist/plugin-sdk/media-understanding/output-extract.d.ts +0 -2
  690. package/dist/plugin-sdk/media-understanding/providers/anthropic/index.d.ts +0 -2
  691. package/dist/plugin-sdk/media-understanding/providers/deepgram/audio.d.ts +0 -1
  692. package/dist/plugin-sdk/media-understanding/providers/deepgram/index.d.ts +0 -2
  693. package/dist/plugin-sdk/media-understanding/providers/google/audio.d.ts +0 -1
  694. package/dist/plugin-sdk/media-understanding/providers/google/index.d.ts +0 -2
  695. package/dist/plugin-sdk/media-understanding/providers/google/video.d.ts +0 -3
  696. package/dist/plugin-sdk/media-understanding/providers/groq/index.d.ts +0 -2
  697. package/dist/plugin-sdk/media-understanding/providers/index.d.ts +0 -4
  698. package/dist/plugin-sdk/media-understanding/providers/minimax/index.d.ts +0 -2
  699. package/dist/plugin-sdk/media-understanding/providers/mistral/index.d.ts +0 -2
  700. package/dist/plugin-sdk/media-understanding/providers/moonshot/index.d.ts +0 -2
  701. package/dist/plugin-sdk/media-understanding/providers/moonshot/video.d.ts +0 -3
  702. package/dist/plugin-sdk/media-understanding/providers/openai/audio.d.ts +0 -1
  703. package/dist/plugin-sdk/media-understanding/providers/openai/index.d.ts +0 -2
  704. package/dist/plugin-sdk/media-understanding/providers/shared.d.ts +0 -20
  705. package/dist/plugin-sdk/media-understanding/providers/zai/index.d.ts +0 -2
  706. package/dist/plugin-sdk/media-understanding/resolve.d.ts +0 -44
  707. package/dist/plugin-sdk/media-understanding/runner.d.ts +0 -34
  708. package/dist/plugin-sdk/media-understanding/runner.entries.d.ts +0 -33
  709. package/dist/plugin-sdk/media-understanding/scope.d.ts +0 -9
  710. package/dist/plugin-sdk/media-understanding/types.d.ts +0 -59
  711. package/dist/plugin-sdk/media-understanding/video.d.ts +0 -2
  712. package/dist/plugin-sdk/utils/mask-api-key.d.ts +0 -1
  713. package/dist/plugin-sdk/utils/run-with-concurrency.d.ts +0 -11
  714. package/dist/plugins-7B167wIj.js +0 -453
  715. package/dist/plugins-BRHOfy1Z.js +0 -455
  716. package/dist/plugins-cli--I43zIaS.js +0 -797
  717. package/dist/plugins-cli-DIxMbY9I.js +0 -801
  718. package/dist/ports-BS8kQkd9.js +0 -96
  719. package/dist/ports-CAqyeQYZ.js +0 -316
  720. package/dist/ports-CTUgXF2d.js +0 -96
  721. package/dist/ports-DqfnVnCw.js +0 -370
  722. package/dist/preflight-CaRJtknt.js +0 -64
  723. package/dist/preflight-DeDRKMx4.js +0 -68
  724. package/dist/program-context-9dv7ClZz.js +0 -474
  725. package/dist/program-wVSvyiD-.js +0 -248
  726. package/dist/prompt-select-styled-BE_4W66Z.js +0 -1672
  727. package/dist/prompt-select-styled-BTPf06Os.js +0 -1669
  728. package/dist/provider-dispatcher-VZWITjmt.js +0 -660
  729. package/dist/provider-dispatcher-zYYGo00g.js +0 -659
  730. package/dist/push-apns-Cj0Ryn18.js +0 -713
  731. package/dist/push-apns-fFfYCqda.js +0 -711
  732. package/dist/pw-ai-CnN2sITD.js +0 -1908
  733. package/dist/pw-ai-fnX3cecw.js +0 -1911
  734. package/dist/qr-cli-CriPg41m.js +0 -349
  735. package/dist/qr-cli-DSURqD0D.js +0 -353
  736. package/dist/redact-snapshot-BecRL_h6.js +0 -2016
  737. package/dist/redact-snapshot-pTdzSrex.js +0 -2016
  738. package/dist/register.agent-B5_1XatO.js +0 -290
  739. package/dist/register.agent-Dba3CYyo.js +0 -1018
  740. package/dist/register.configure-DmwHGsPG.js +0 -128
  741. package/dist/register.configure-DrPlgBqB.js +0 -133
  742. package/dist/register.import-CPQqqdje.js +0 -31
  743. package/dist/register.import-D1UaH1QV.js +0 -29
  744. package/dist/register.maintenance-D76tiF4W.js +0 -501
  745. package/dist/register.maintenance-hUriFBfi.js +0 -499
  746. package/dist/register.message--VzmF3u4.js +0 -685
  747. package/dist/register.message-itNWUdvP.js +0 -689
  748. package/dist/register.onboard-Co8D908b.js +0 -93
  749. package/dist/register.onboard-q8JzWtuv.js +0 -97
  750. package/dist/register.setup-Djc6jZTc.js +0 -113
  751. package/dist/register.setup-hhPii4O7.js +0 -117
  752. package/dist/register.status-health-sessions-C1FhACQB.js +0 -668
  753. package/dist/register.status-health-sessions-DcUegHcH.js +0 -428
  754. package/dist/register.subclis-DAfihpBz.js +0 -267
  755. package/dist/replies-IpiCq1Ht.js +0 -136
  756. package/dist/replies-LSx_XhsP.js +0 -136
  757. package/dist/reply-D0CLqcBY.js +0 -13718
  758. package/dist/reply-Djq8ghfI.js +0 -13715
  759. package/dist/reply-directives-Cz7622Qx.js +0 -182
  760. package/dist/reply-directives-ssnaPNiU.js +0 -182
  761. package/dist/reply-payloads-CQMtrphw.js +0 -527
  762. package/dist/reply-prefix-CWcAZKhE.js +0 -37
  763. package/dist/reply-prefix-Drq7Pf3A.js +0 -37
  764. package/dist/resolve-route-B8uIc2H3.js +0 -249
  765. package/dist/resolve-route-C8ooNlI4.js +0 -249
  766. package/dist/response-prefix-template-DPOggmPO.js +0 -134
  767. package/dist/retry-BdhJlZQI.js +0 -77
  768. package/dist/run-main-B-Cb62fC.js +0 -306
  769. package/dist/runner-DUnmgjJ8.js +0 -2394
  770. package/dist/runner-EobZIrDt.js +0 -2394
  771. package/dist/secure-random-B5qmFc3N.js +0 -44
  772. package/dist/security-cli-05blEYyC.js +0 -482
  773. package/dist/security-cli-DYbt8duB.js +0 -487
  774. package/dist/send-7O3-bRtl.js +0 -547
  775. package/dist/send-9Huf62k3.js +0 -2245
  776. package/dist/send-B9mIJdUo.js +0 -547
  777. package/dist/send-Bj0RXr-a.js +0 -492
  778. package/dist/send-BzkAsn7K.js +0 -29
  779. package/dist/send-CXFhFLP9.js +0 -11
  780. package/dist/send-Ce_BDa8P.js +0 -349
  781. package/dist/send-ChvasRSh.js +0 -1779
  782. package/dist/send-Cl5BhbnF.js +0 -426
  783. package/dist/send-CpebTvM6.js +0 -374
  784. package/dist/send-DWf7BCPe.js +0 -492
  785. package/dist/send-DX8QSuSI.js +0 -1174
  786. package/dist/send-DZRn6PT2.js +0 -332
  787. package/dist/send-Dd2_MykI.js +0 -2245
  788. package/dist/send-IJaUAa8H.js +0 -1776
  789. package/dist/send-vvZXksNU.js +0 -349
  790. package/dist/server-BrzR9JmX.js +0 -206
  791. package/dist/server-_h27-uP_.js +0 -202
  792. package/dist/server-lifecycle-CUdA6Far.js +0 -2437
  793. package/dist/server-lifecycle-DQZWL8iP.js +0 -2437
  794. package/dist/server-node-events-DgB1z2Cx.js +0 -392
  795. package/dist/server-node-events-DtvPfM1I.js +0 -396
  796. package/dist/service-9le8AnC-.js +0 -670
  797. package/dist/service-Drb0kx6I.js +0 -670
  798. package/dist/session-BIAOl5QR.js +0 -170
  799. package/dist/session-Wu00pCn_.js +0 -170
  800. package/dist/session-cost-usage-7plmOKbs.js +0 -627
  801. package/dist/session-cost-usage-CPFxBFUg.js +0 -627
  802. package/dist/session-dirs-CfIrIJxG.js +0 -318
  803. package/dist/session-dirs-DlPpWt5Q.js +0 -318
  804. package/dist/session-utils-Sd9w4vc1.js +0 -622
  805. package/dist/session-utils-iL47hYmZ.js +0 -622
  806. package/dist/sessions-6pKQ3gN3.js +0 -247
  807. package/dist/sessions-ZRmCDdj1.js +0 -2569
  808. package/dist/shell-env-DYZq9PqC.js +0 -163
  809. package/dist/ssrf-B-rF_tZB.js +0 -183
  810. package/dist/ssrf-DJW14Wkh.js +0 -183
  811. package/dist/status-CTRQCXRj.js +0 -1979
  812. package/dist/status-Y67xsH93.js +0 -1983
  813. package/dist/status.update-DlBReI5-.js +0 -449
  814. package/dist/status.update-v7fEQ7R9.js +0 -449
  815. package/dist/store-B5989JkX.js +0 -64
  816. package/dist/store-BgtgYJoX.js +0 -53
  817. package/dist/store-DCrrxHyS.js +0 -2571
  818. package/dist/store-Ql6vAcsg.js +0 -64
  819. package/dist/subagent-registry-BGknZEUI.js +0 -4856
  820. package/dist/subagent-registry-CWeRBjfn.js +0 -4854
  821. package/dist/subsystem-Ct6qOOqZ.js +0 -1079
  822. package/dist/subsystem-PQ64_nsu.js +0 -1136
  823. package/dist/system-cli-CmO-4Rju.js +0 -77
  824. package/dist/system-cli-VBsa18K6.js +0 -73
  825. package/dist/systemd-CqFpK30Y.js +0 -547
  826. package/dist/systemd-fK9AV5bP.js +0 -547
  827. package/dist/systemd-hints-D3rr0j14.js +0 -278
  828. package/dist/systemd-hints-DNOSRaqA.js +0 -278
  829. package/dist/systemd-linger-B907NVVy.js +0 -75
  830. package/dist/systemd-linger-wYksBbM7.js +0 -75
  831. package/dist/tables-Boxa9MJH.js +0 -55
  832. package/dist/tables-CO_kxD0e.js +0 -55
  833. package/dist/tables-WZp8Vt9n.js +0 -55
  834. package/dist/tailnet-CfZhpSnt.js +0 -40
  835. package/dist/tailnet-D0NV0tRJ.js +0 -40
  836. package/dist/tailscale-B__xvMjA.js +0 -230
  837. package/dist/tailscale-q_ZrxUCc.js +0 -230
  838. package/dist/targets-B4rMyQFJ.js +0 -53
  839. package/dist/targets-BHYLCv06.js +0 -2534
  840. package/dist/targets-BjWhDMJM.js +0 -650
  841. package/dist/targets-BnpMZZC_.js +0 -120
  842. package/dist/targets-CHwGDIgO.js +0 -650
  843. package/dist/targets-DIDKlfKI.js +0 -220
  844. package/dist/targets-bqjVeCnF.js +0 -2535
  845. package/dist/targets-mqj9GNg1.js +0 -53
  846. package/dist/tool-display-C0hpLmkw.js +0 -785
  847. package/dist/tool-display-CQTRHo3Z.js +0 -785
  848. package/dist/tool-images-BYY11Gw3.js +0 -263
  849. package/dist/tool-images-CnJ0R8Fo.js +0 -263
  850. package/dist/trash-C0mjnHuW.js +0 -125
  851. package/dist/trash-Cgwc9mLD.js +0 -125
  852. package/dist/tui-9cJnR1dN.js +0 -3282
  853. package/dist/tui-BR3egaFJ.js +0 -3282
  854. package/dist/tui-cli-BYpkhE6J.js +0 -66
  855. package/dist/tui-cli-DndeZyup.js +0 -62
  856. package/dist/update-BJVdkzk7.js +0 -349
  857. package/dist/update-DjI6KTA5.js +0 -349
  858. package/dist/update-cli-B7Rl2Qr2.js +0 -1146
  859. package/dist/update-cli-CFk_jqUm.js +0 -1148
  860. package/dist/usage-CFv4a1Nf.js +0 -5448
  861. package/dist/voice-credentials-D59RcLbl.js +0 -45
  862. package/dist/voice-credentials-fjA7GShF.js +0 -45
  863. package/dist/web-Bs1td8Qw.js +0 -79
  864. package/dist/web-CSiw--Px.js +0 -3070
  865. package/dist/web-jRTtDiNf.js +0 -74
  866. package/dist/webhooks-cli-0yQha2yj.js +0 -334
  867. package/dist/webhooks-cli-ula0bTX-.js +0 -330
  868. package/dist/whatsapp-actions-3NdzsNg1.js +0 -130
  869. package/dist/whatsapp-actions-y_1vjkYY.js +0 -125
  870. package/dist/workspace-BT3X-qCZ.js +0 -449
  871. package/dist/workspace-D5hHXubL.js +0 -447
  872. package/dist/zod-schema-CbqZAIYy.js +0 -2696
  873. package/dist/zod-schema-YGQJEcnj.js +0 -2696
  874. /package/dist/{account-lookup-BOCzCnir.js → account-lookup-CIY_RKhi.js} +0 -0
  875. /package/dist/{account-lookup-C0ndrpt-.js → account-lookup-DGscKBsr.js} +0 -0
  876. /package/dist/{agent-helpers-eEHy5uX2.js → agent-helpers-D83kfcF9.js} +0 -0
  877. /package/dist/{agents.config-BgDBcY4h.js → agents.config-BPe_hkMn.js} +0 -0
  878. /package/dist/{api-Cd_7aESj.js → api-D8QQo5bc.js} +0 -0
  879. /package/dist/{api-DJ_oWYus.js → api-GywrnwRm.js} +0 -0
  880. /package/dist/{argv-BY8EVMTP.js → argv-DW4MYBdJ.js} +0 -0
  881. /package/dist/{bindings-Dr0bGRst.js → bindings-BpL4pISF.js} +0 -0
  882. /package/dist/{brew-CmTYeZk1.js → brew-CBsS-Vq1.js} +0 -0
  883. /package/dist/{brew-V4lMBeE3.js → brew-Clw9vXhE.js} +0 -0
  884. /package/dist/{chat-envelope-CrM0X4sl.js → chat-envelope-CY1yvCc-.js} +0 -0
  885. /package/dist/{chat-envelope-BIujl9Cj.js → chat-envelope-DUMcMMB2.js} +0 -0
  886. /package/dist/{chat-type-CH3W-zKy.js → chat-type-BKe459rw.js} +0 -0
  887. /package/dist/{chat-type-DyovJwCt.js → chat-type-CE6cJOyt.js} +0 -0
  888. /package/dist/{cleanup-utils-CNwlTKyR.js → cleanup-utils-365rf8YN.js} +0 -0
  889. /package/dist/{cleanup-utils-gNzIs9yk.js → cleanup-utils-rqUXvR3Z.js} +0 -0
  890. /package/dist/{cli-name-3MdfbvIR.js → cli-name-7Gb97Vyl.js} +0 -0
  891. /package/dist/{cli-name-CRLBidNP.js → cli-name-Yv30OygA.js} +0 -0
  892. /package/dist/{cli-utils-5ZIfXAfM.js → cli-utils-5W6ugvN5.js} +0 -0
  893. /package/dist/{cli-utils-BUOtyfnU.js → cli-utils-CZJacPS2.js} +0 -0
  894. /package/dist/{client-D5m46AuY.js → client-DQ-Nh-rV.js} +0 -0
  895. /package/dist/{client-DFyI5I0n.js → client-Fi2k2G9Z.js} +0 -0
  896. /package/dist/{command-options-Cn2fc1Of.js → command-options-CXHYeogR.js} +0 -0
  897. /package/dist/{command-options-D2nN4AXX.js → command-options-Cx6evn0x.js} +0 -0
  898. /package/dist/{config-eval-CU2G7a83.js → config-eval-DU_v_3lY.js} +0 -0
  899. /package/dist/{config-eval-BCKpAS_K.js → config-eval-V26Gl6eZ.js} +0 -0
  900. /package/dist/{constants-CRGAZ2ow.js → constants-C7gkSGRE.js} +0 -0
  901. /package/dist/{constants-BAZuhSRm.js → constants-DAiBiWlI.js} +0 -0
  902. /package/dist/{constants-DoYLsBmv.js → constants-DOnQraOP.js} +0 -0
  903. /package/dist/{constants-BBVTjb1j.js → constants-DQxqJVLu.js} +0 -0
  904. /package/dist/{credentials-DMAWNZdV.js → credentials-BHWUBHMd.js} +0 -0
  905. /package/dist/{credentials-Dmc3H-jd.js → credentials-DG0tD6-e.js} +0 -0
  906. /package/dist/{daemon-runtime-CzFI2dPw.js → daemon-runtime-B7Tmba31.js} +0 -0
  907. /package/dist/{daemon-runtime-aQhinwSL.js → daemon-runtime-KyXiP2ib.js} +0 -0
  908. /package/dist/{dangerous-name-matching-BlTBBZns.js → dangerous-name-matching-B4MRPcn-.js} +0 -0
  909. /package/dist/{dangerous-tools-BRmbBvRf.js → dangerous-tools-CIPZZJoN.js} +0 -0
  910. /package/dist/{dangerous-tools-E1i3IoxZ.js → dangerous-tools-D-GNbdpV.js} +0 -0
  911. /package/dist/{fetch-timeout-DBRRPNBi.js → fetch-timeout-CPe2rPLq.js} +0 -0
  912. /package/dist/{fetch-timeout-l_6RdoMw.js → fetch-timeout-DkT3EnRA.js} +0 -0
  913. /package/dist/{file-identity-BnGA6wyc.js → file-identity-C8MIb5lb.js} +0 -0
  914. /package/dist/{format-duration-B-Uv5nOi.js → format-duration-Cd7SCued.js} +0 -0
  915. /package/dist/{format-duration-D1M3Zxu6.js → format-duration-Oj8pTbYL.js} +0 -0
  916. /package/dist/{format-relative-Cywx6ldk.js → format-relative-8dpVUfzZ.js} +0 -0
  917. /package/dist/{format-relative-DcQZUAYl.js → format-relative-BMNeqaxW.js} +0 -0
  918. /package/dist/{health-format-CL2Xq92A.js → health-format-CwLlmYSK.js} +0 -0
  919. /package/dist/{health-format-CVgQD-z9.js → health-format-CycFH5Sj.js} +0 -0
  920. /package/dist/{heartbeat-wake-DLxQm6-U.js → heartbeat-wake-D6Lt5YUk.js} +0 -0
  921. /package/dist/{heartbeat-wake-DjsTDzF3.js → heartbeat-wake-uZkAP-tP.js} +0 -0
  922. /package/dist/{help-format-DM6-OBt-.js → help-format-B0YIbosn.js} +0 -0
  923. /package/dist/{help-format-CJQ7APRn.js → help-format-GeOPYD_A.js} +0 -0
  924. /package/dist/{helpers-BER76F_2.js → helpers-6_MYSJEW.js} +0 -0
  925. /package/dist/{helpers-DSMIGYx2.js → helpers-703bXVlF.js} +0 -0
  926. /package/dist/{helpers-D-r6yhnI.js → helpers-p_u0Gnj_.js} +0 -0
  927. /package/dist/{input-provenance-BgfeDgck.js → input-provenance-C4nlFv5Y.js} +0 -0
  928. /package/dist/{input-provenance-xUsSMOsz.js → input-provenance-duDehu0D.js} +0 -0
  929. /package/dist/{ip-BAhS4rY2.js → ip-BFJnbRh9.js} +0 -0
  930. /package/dist/{ip-BUhsZdJu.js → ip-D0zgNmBV.js} +0 -0
  931. /package/dist/{is-main-BmHYGRhd.js → is-main-BE1Jih91.js} +0 -0
  932. /package/dist/{json-file-B5WEJJye.js → json-file-CsV03dh-.js} +0 -0
  933. /package/dist/{json-file-Dbg7nZg1.js → json-file-CtQKYRLl.js} +0 -0
  934. /package/dist/{json-files-BFGbyEzL.js → json-files-B2yMsppu.js} +0 -0
  935. /package/dist/{json-files-CfhnuGaC.js → json-files-BYH8U7Mx.js} +0 -0
  936. /package/dist/{lanes-4FoQemog.js → lanes-BWL_LwXG.js} +0 -0
  937. /package/dist/{lanes-BhdzrAIa.js → lanes-cHJ5arWg.js} +0 -0
  938. /package/dist/{links-CwTlzaPe.js → links-BFtUmGLH.js} +0 -0
  939. /package/dist/{links-D5vtq30Q.js → links-BNjLUJ9U.js} +0 -0
  940. /package/dist/{location-50gaJF5Z.js → location-BC45kOxc.js} +0 -0
  941. /package/dist/{location-Qo8Ii1zo.js → location-BUhzov-a.js} +0 -0
  942. /package/dist/{logger-IA_Dr_BT.js → logger-1QWMF9Hc.js} +0 -0
  943. /package/dist/{logger-nEdVxm5D.js → logger-BWMPnILd.js} +0 -0
  944. /package/dist/{logger-O6JX52kK.js → logger-Liu31nEU.js} +0 -0
  945. /package/dist/{logging-FctZEleJ.js → logging-CtbzyUjs.js} +0 -0
  946. /package/dist/{logging-BiuZwq5D.js → logging-DJFQvfGD.js} +0 -0
  947. /package/dist/{logging-Bs1VqVFL.js → logging-JiRrQn2_.js} +0 -0
  948. /package/dist/{logging-JZEg5nDp.js → logging-kuFzZMsG.js} +0 -0
  949. /package/dist/{message-channel-tuc9CdEw.js → message-channel-DOyKgFu8.js} +0 -0
  950. /package/dist/{mutable-allowlist-detectors-CtKavajp.js → mutable-allowlist-detectors-4m-Kc8Kn.js} +0 -0
  951. /package/dist/{mutable-allowlist-detectors-TCG6mnbz.js → mutable-allowlist-detectors-BECxOoKX.js} +0 -0
  952. /package/dist/{onboard-config-BxfgUqk6.js → onboard-config-C9so5ggC.js} +0 -0
  953. /package/dist/{onboard-config-DNzlo8Cg.js → onboard-config-oXID97rS.js} +0 -0
  954. /package/dist/{parse-log-line-CT0H1-oQ.js → parse-log-line-BtFI563v.js} +0 -0
  955. /package/dist/{parse-log-line-pij_xhtE.js → parse-log-line-COptqka7.js} +0 -0
  956. /package/dist/{parse-timeout-CvODy9RC.js → parse-timeout-BpphuwYl.js} +0 -0
  957. /package/dist/{path-guards-DOpzcMXz.js → path-guards-DJteVA0d.js} +0 -0
  958. /package/dist/{path-guards-DipYoPVw.js → path-guards-DVRUJZVN.js} +0 -0
  959. /package/dist/plugin-sdk/{media-understanding → stt}/providers/google/inline-data.d.ts +0 -0
  960. /package/dist/{plugins-allowlist-Bcqe9Gd8.js → plugins-allowlist-Clt6dsY6.js} +0 -0
  961. /package/dist/{polls-DQrR-qT3.js → polls-C5xr-8pM.js} +0 -0
  962. /package/dist/{polls-ybwcqkWt.js → polls-DXd67TD8.js} +0 -0
  963. /package/dist/{ports-lsof-CDyv5GJd.js → ports-lsof-xWMTWvMQ.js} +0 -0
  964. /package/dist/{process-scoped-map-BwUkYFQV.js → process-scoped-map-C7KeadUK.js} +0 -0
  965. /package/dist/{process-scoped-map-_zxf_kLz.js → process-scoped-map-CQ1C5MbT.js} +0 -0
  966. /package/dist/{program-context-CG-t6Yp-.js → program-context-LuBAPt4y.js} +0 -0
  967. /package/dist/{progress-DRLmcFiG.js → progress-C-hTn2yV.js} +0 -0
  968. /package/dist/{progress-BOdRbOHD.js → progress-ChmZpgvt.js} +0 -0
  969. /package/dist/{prompt-WEkXwIMT.js → prompt-BXeXEH0o.js} +0 -0
  970. /package/dist/{prompt-BRGfic91.js → prompt-C31r0R5I.js} +0 -0
  971. /package/dist/{prompt-style-B4Cq4PyQ.js → prompt-style-BcM-VSMx.js} +0 -0
  972. /package/dist/{proxy-BMJL0Qog.js → proxy-dRhp8Ykw.js} +0 -0
  973. /package/dist/{pw-ai-state-CwXeO5d0.js → pw-ai-state-CjfcKQoO.js} +0 -0
  974. /package/dist/{pw-ai-state-DaISdsXY.js → pw-ai-state-DfjyEttO.js} +0 -0
  975. /package/dist/{redact-gXuh8MFk.js → redact-D975G-N6.js} +0 -0
  976. /package/dist/{redact-CqWx9rpK.js → redact-Dx1Fue21.js} +0 -0
  977. /package/dist/{redact-identifier-BJOQDEj0.js → redact-identifier-Bqj_YiPd.js} +0 -0
  978. /package/dist/{redact-identifier-DR54qsoT.js → redact-identifier-HyK89Sod.js} +0 -0
  979. /package/dist/{remoteclaw-root-CgNyrbxc.js → remoteclaw-root-B1iQBmbi.js} +0 -0
  980. /package/dist/{remoteclaw-root-u8dAeHID.js → remoteclaw-root-BmYwCzQN.js} +0 -0
  981. /package/dist/{render-CDCvpfhh.js → render-BvFSFJZW.js} +0 -0
  982. /package/dist/{render-CJl4GK1B.js → render-flG67HhW.js} +0 -0
  983. /package/dist/{response-prefix-template-D3ZcJP4E.js → response-prefix-template-DDvbVpx6.js} +0 -0
  984. /package/dist/{retry-cXXk2j6_.js → retry-CByUYDAZ.js} +0 -0
  985. /package/dist/{retry-B19gMxS7.js → retry-oNE3cBeG.js} +0 -0
  986. /package/dist/{runtime-guard-BS55uiSW.js → runtime-guard-CqNug-FG.js} +0 -0
  987. /package/dist/{runtime-guard-CK80eucm.js → runtime-guard-DAHXelsb.js} +0 -0
  988. /package/dist/{runtime-status-BhW7hP_U.js → runtime-status-CM4rzyfO.js} +0 -0
  989. /package/dist/{runtime-status-hFVEC3wO.js → runtime-status-DJYthOLz.js} +0 -0
  990. /package/dist/{secret-equal-CJzes24Z.js → secret-equal-1-dwi8DL.js} +0 -0
  991. /package/dist/{secret-equal-CQAmGfGc.js → secret-equal-CXJEZiWb.js} +0 -0
  992. /package/dist/{secure-random-B3f7Ri2X.js → secure-random-Ba4Y5xG5.js} +0 -0
  993. /package/dist/{secure-random-BkZFG9cd.js → secure-random-C6AVByhV.js} +0 -0
  994. /package/dist/{stagger-B-_Wnofy.js → stagger-CjeisVRF.js} +0 -0
  995. /package/dist/{stagger-B2ORDHsP.js → stagger-vkvpUmOz.js} +0 -0
  996. /package/dist/{status-C6YNwimj.js → status-DNLnVQZ4.js} +0 -0
  997. /package/dist/{status-yrDGXYZM.js → status-DZhl73dM.js} +0 -0
  998. /package/dist/{strip-inbound-meta-0cvL6itU.js → strip-inbound-meta-C3Cwe_ZO.js} +0 -0
  999. /package/dist/{strip-inbound-meta-DjKcSFaW.js → strip-inbound-meta-DuDjnGjC.js} +0 -0
  1000. /package/dist/{table-ByMyHTh_.js → table-B9zSN_7D.js} +0 -0
  1001. /package/dist/{table-C-dba-5-.js → table-j8Ayarot.js} +0 -0
  1002. /package/dist/{target-errors-DJVRKFcU.js → target-errors-ChjvOMuV.js} +0 -0
  1003. /package/dist/{target-errors-GZXDqlUu.js → target-errors-Dn4aykSV.js} +0 -0
  1004. /package/dist/{targets-B_d_1z3N.js → targets-BtGRUQMa.js} +0 -0
  1005. /package/dist/{targets-DOJXjN1U.js → targets-CE4AYRI9.js} +0 -0
  1006. /package/dist/{targets-D01MJGnh.js → targets-DlufWCmy.js} +0 -0
  1007. /package/dist/{targets-WSwPflb6.js → targets-akvAerZF.js} +0 -0
  1008. /package/dist/{text-format-DarxU3JH.js → text-format-VSogn9Yq.js} +0 -0
  1009. /package/dist/{text-format-mr5bZq0f.js → text-format-xeHt9ywT.js} +0 -0
  1010. /package/dist/{thinking-BqJmU6Zp.js → thinking-B171Rc3-.js} +0 -0
  1011. /package/dist/{tokens-C8yGxAcR.js → tokens-B-jmvNR9.js} +0 -0
  1012. /package/dist/{tokens-DAFBx5qr.js → tokens-kTLGxaAF.js} +0 -0
  1013. /package/dist/{usage-BXi79Rq6.js → usage-CRJFqYf8.js} +0 -0
  1014. /package/dist/{usage-C1lHaofV.js → usage-Txvb0Iq2.js} +0 -0
  1015. /package/dist/{usage-format-CD5jsZY1.js → usage-format-70DvrseE.js} +0 -0
  1016. /package/dist/{usage-format-CRVpDVj1.js → usage-format-Bs8DkQtr.js} +0 -0
  1017. /package/dist/{widearea-dns-C-0P7TRi.js → widearea-dns-BOgHvO4O.js} +0 -0
  1018. /package/dist/{widearea-dns-DFZMcfLf.js → widearea-dns-CGhfClCr.js} +0 -0
  1019. /package/dist/{workspace-BJCKO8Ns.js → workspace-DhUqtMK_.js} +0 -0
  1020. /package/dist/{wsl-kFaeW76c.js → wsl-Cs-gowFJ.js} +0 -0
@@ -1,1350 +0,0 @@
1
- import "./paths-BTaH3rLn.js";
2
- import { I as isRich, L as theme, b as shortenHomePath, y as shortenHomeInString } from "./utils-C5daYcFn.js";
3
- import "./subsystem-PQ64_nsu.js";
4
- import { i as defaultRuntime } from "./ansi-DtaiOnt1.js";
5
- import { c as resolveDefaultAgentId, i as resolveAgentConfig } from "./agent-scope-_ND_-bJy.js";
6
- import { f as GATEWAY_CLIENT_MODES, p as GATEWAY_CLIENT_NAMES } from "./message-channel-FMNRI5Ax.js";
7
- import { i as loadConfig } from "./config-CAa0rZSx.js";
8
- import "./env-B3zr72vQ.js";
9
- import "./host-env-security-BGibnCbS.js";
10
- import "./shell-env-DYZq9PqC.js";
11
- import "./version-CVMnqdzu.js";
12
- import "./env-vars-a7S70ba7.js";
13
- import { s as parseDurationMs } from "./zod-schema-CbqZAIYy.js";
14
- import "./logger-B8yHnzPl.js";
15
- import "./ip-BAhS4rY2.js";
16
- import "./redact-gXuh8MFk.js";
17
- import "./errors-CdmXrBic.js";
18
- import { n as formatTimeAgo } from "./format-relative-Cywx6ldk.js";
19
- import "./client-B9u3JdT_.js";
20
- import { a as randomIdempotencyKey, n as callGateway } from "./call-BrTmlOx3.js";
21
- import "./net-CNsUGiSw.js";
22
- import "./tailnet-CfZhpSnt.js";
23
- import { t as formatDocsLink } from "./links-D5vtq30Q.js";
24
- import { n as withProgress } from "./progress-BOdRbOHD.js";
25
- import { t as runCommandWithRuntime } from "./cli-utils-5ZIfXAfM.js";
26
- import { t as formatHelpExamples } from "./help-format-DM6-OBt-.js";
27
- import { t as renderTable } from "./table-C-dba-5-.js";
28
- 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-DEvpoFmH.js";
29
- import { t as parseTimeoutMs } from "./parse-timeout-CxYHsZWc.js";
30
- import path from "node:path";
31
- import fs from "node:fs/promises";
32
-
33
- //#region src/cli/nodes-cli/format.ts
34
- function formatPermissions(raw) {
35
- if (!raw || typeof raw !== "object" || Array.isArray(raw)) return null;
36
- 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]));
37
- if (entries.length === 0) return null;
38
- return `[${entries.map(([key, granted]) => `${key}=${granted ? "yes" : "no"}`).join(", ")}]`;
39
- }
40
-
41
- //#endregion
42
- //#region src/cli/nodes-cli/rpc.ts
43
- 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);
44
- const callGatewayCli = async (method, opts, params, callOpts) => withProgress({
45
- label: `Nodes ${method}`,
46
- indeterminate: true,
47
- enabled: opts.json !== true
48
- }, async () => await callGateway({
49
- url: opts.url,
50
- token: opts.token,
51
- method,
52
- params,
53
- timeoutMs: callOpts?.transportTimeoutMs ?? Number(opts.timeout ?? 1e4),
54
- clientName: GATEWAY_CLIENT_NAMES.CLI,
55
- mode: GATEWAY_CLIENT_MODES.CLI
56
- }));
57
- function buildNodeInvokeParams(params) {
58
- const invokeParams = {
59
- nodeId: params.nodeId,
60
- command: params.command,
61
- params: params.params,
62
- idempotencyKey: params.idempotencyKey ?? randomIdempotencyKey()
63
- };
64
- if (typeof params.timeoutMs === "number" && Number.isFinite(params.timeoutMs)) invokeParams.timeoutMs = params.timeoutMs;
65
- return invokeParams;
66
- }
67
- function unauthorizedHintForMessage(message) {
68
- const haystack = message.toLowerCase();
69
- if (haystack.includes("unauthorizedclient") || haystack.includes("bridge client is not authorized") || haystack.includes("unsigned bridge clients are not allowed")) return [
70
- "peekaboo bridge rejected the client.",
71
- "sign the peekaboo CLI (TeamID Y5PE65HELJ) or launch the host with",
72
- "PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1 for local dev."
73
- ].join(" ");
74
- return null;
75
- }
76
- async function resolveNodeId(opts, query) {
77
- const q = String(query ?? "").trim();
78
- if (!q) throw new Error("node required");
79
- let nodes = [];
80
- try {
81
- nodes = parseNodeList(await callGatewayCli("node.list", opts, {}));
82
- } catch {
83
- const { paired } = parsePairingList(await callGatewayCli("node.pair.list", opts, {}));
84
- nodes = paired.map((n) => ({
85
- nodeId: n.nodeId,
86
- displayName: n.displayName,
87
- platform: n.platform,
88
- version: n.version,
89
- remoteIp: n.remoteIp
90
- }));
91
- }
92
- return resolveNodeIdFromCandidates(nodes, q);
93
- }
94
-
95
- //#endregion
96
- //#region src/cli/nodes-cli/cli-utils.ts
97
- function getNodesTheme() {
98
- const rich = isRich();
99
- const color = (fn) => (value) => rich ? fn(value) : value;
100
- return {
101
- rich,
102
- heading: color(theme.heading),
103
- ok: color(theme.success),
104
- warn: color(theme.warn),
105
- muted: color(theme.muted),
106
- error: color(theme.error)
107
- };
108
- }
109
- function runNodesCommand(label, action) {
110
- return runCommandWithRuntime(defaultRuntime, action, (err) => {
111
- const message = String(err);
112
- const { error, warn } = getNodesTheme();
113
- defaultRuntime.error(error(`nodes ${label} failed: ${message}`));
114
- const hint = unauthorizedHintForMessage(message);
115
- if (hint) defaultRuntime.error(warn(hint));
116
- defaultRuntime.exit(1);
117
- });
118
- }
119
-
120
- //#endregion
121
- //#region src/cli/nodes-cli/register.camera.ts
122
- const parseFacing = (value) => {
123
- const v = String(value ?? "").trim().toLowerCase();
124
- if (v === "front" || v === "back") return v;
125
- throw new Error(`invalid facing: ${value} (expected front|back)`);
126
- };
127
- function registerNodesCameraCommands(nodes) {
128
- const camera = nodes.command("camera").description("Capture camera media from a paired node");
129
- nodesCallOpts(camera.command("list").description("List available cameras on a node").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").action(async (opts) => {
130
- await runNodesCommand("camera list", async () => {
131
- const raw = await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
132
- nodeId: await resolveNodeId(opts, String(opts.node ?? "")),
133
- command: "camera.list",
134
- params: {}
135
- }));
136
- const res = typeof raw === "object" && raw !== null ? raw : {};
137
- const payload = typeof res.payload === "object" && res.payload !== null ? res.payload : {};
138
- const devices = Array.isArray(payload.devices) ? payload.devices : [];
139
- if (opts.json) {
140
- defaultRuntime.log(JSON.stringify(devices, null, 2));
141
- return;
142
- }
143
- if (devices.length === 0) {
144
- const { muted } = getNodesTheme();
145
- defaultRuntime.log(muted("No cameras reported."));
146
- return;
147
- }
148
- const { heading, muted } = getNodesTheme();
149
- const tableWidth = Math.max(60, (process.stdout.columns ?? 120) - 1);
150
- const rows = devices.map((device) => ({
151
- Name: typeof device.name === "string" ? device.name : "Unknown Camera",
152
- Position: typeof device.position === "string" ? device.position : muted("unspecified"),
153
- ID: typeof device.id === "string" ? device.id : ""
154
- }));
155
- defaultRuntime.log(heading("Cameras"));
156
- defaultRuntime.log(renderTable({
157
- width: tableWidth,
158
- columns: [
159
- {
160
- key: "Name",
161
- header: "Name",
162
- minWidth: 14,
163
- flex: true
164
- },
165
- {
166
- key: "Position",
167
- header: "Position",
168
- minWidth: 10
169
- },
170
- {
171
- key: "ID",
172
- header: "ID",
173
- minWidth: 10,
174
- flex: true
175
- }
176
- ],
177
- rows
178
- }).trimEnd());
179
- });
180
- }), { timeoutMs: 6e4 });
181
- 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) => {
182
- await runNodesCommand("camera snap", async () => {
183
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
184
- const facingOpt = String(opts.facing ?? "both").trim().toLowerCase();
185
- const facings = facingOpt === "both" ? ["front", "back"] : facingOpt === "front" || facingOpt === "back" ? [facingOpt] : (() => {
186
- throw new Error(`invalid facing: ${String(opts.facing)} (expected front|back|both)`);
187
- })();
188
- const maxWidth = opts.maxWidth ? Number.parseInt(String(opts.maxWidth), 10) : void 0;
189
- const quality = opts.quality ? Number.parseFloat(String(opts.quality)) : void 0;
190
- const delayMs = opts.delayMs ? Number.parseInt(String(opts.delayMs), 10) : void 0;
191
- const deviceId = opts.deviceId ? String(opts.deviceId).trim() : void 0;
192
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
193
- const results = [];
194
- for (const facing of facings) {
195
- const raw = await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
196
- nodeId,
197
- command: "camera.snap",
198
- params: {
199
- facing,
200
- maxWidth: Number.isFinite(maxWidth) ? maxWidth : void 0,
201
- quality: Number.isFinite(quality) ? quality : void 0,
202
- format: "jpg",
203
- delayMs: Number.isFinite(delayMs) ? delayMs : void 0,
204
- deviceId: deviceId || void 0
205
- },
206
- timeoutMs
207
- }));
208
- const payload = parseCameraSnapPayload((typeof raw === "object" && raw !== null ? raw : {}).payload);
209
- const filePath = cameraTempPath({
210
- kind: "snap",
211
- facing,
212
- ext: payload.format === "jpeg" ? "jpg" : payload.format
213
- });
214
- if (payload.url) await writeUrlToFile(filePath, payload.url);
215
- else if (payload.base64) await writeBase64ToFile(filePath, payload.base64);
216
- results.push({
217
- facing,
218
- path: filePath,
219
- width: payload.width,
220
- height: payload.height
221
- });
222
- }
223
- if (opts.json) {
224
- defaultRuntime.log(JSON.stringify({ files: results }, null, 2));
225
- return;
226
- }
227
- defaultRuntime.log(results.map((r) => `MEDIA:${shortenHomePath(r.path)}`).join("\n"));
228
- });
229
- }), { timeoutMs: 6e4 });
230
- 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) => {
231
- await runNodesCommand("camera clip", async () => {
232
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
233
- const facing = parseFacing(String(opts.facing ?? "front"));
234
- const durationMs = parseDurationMs(String(opts.duration ?? "3000"));
235
- const includeAudio = opts.audio !== false;
236
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
237
- const deviceId = opts.deviceId ? String(opts.deviceId).trim() : void 0;
238
- const raw = await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
239
- nodeId,
240
- command: "camera.clip",
241
- params: {
242
- facing,
243
- durationMs: Number.isFinite(durationMs) ? durationMs : void 0,
244
- includeAudio,
245
- format: "mp4",
246
- deviceId: deviceId || void 0
247
- },
248
- timeoutMs
249
- }));
250
- const payload = parseCameraClipPayload((typeof raw === "object" && raw !== null ? raw : {}).payload);
251
- const filePath = await writeCameraClipPayloadToFile({
252
- payload,
253
- facing
254
- });
255
- if (opts.json) {
256
- defaultRuntime.log(JSON.stringify({ file: {
257
- facing,
258
- path: filePath,
259
- durationMs: payload.durationMs,
260
- hasAudio: payload.hasAudio
261
- } }, null, 2));
262
- return;
263
- }
264
- defaultRuntime.log(`MEDIA:${shortenHomePath(filePath)}`);
265
- });
266
- }), { timeoutMs: 9e4 });
267
- }
268
-
269
- //#endregion
270
- //#region src/cli/nodes-cli/a2ui-jsonl.ts
271
- const A2UI_ACTION_KEYS = [
272
- "beginRendering",
273
- "surfaceUpdate",
274
- "dataModelUpdate",
275
- "deleteSurface",
276
- "createSurface"
277
- ];
278
- function buildA2UITextJsonl(text) {
279
- const surfaceId = "main";
280
- const rootId = "root";
281
- const textId = "text";
282
- return [{ surfaceUpdate: {
283
- surfaceId,
284
- components: [{
285
- id: rootId,
286
- component: { Column: { children: { explicitList: [textId] } } }
287
- }, {
288
- id: textId,
289
- component: { Text: {
290
- text: { literalString: text },
291
- usageHint: "body"
292
- } }
293
- }]
294
- } }, { beginRendering: {
295
- surfaceId,
296
- root: rootId
297
- } }].map((payload) => JSON.stringify(payload)).join("\n");
298
- }
299
- function validateA2UIJsonl(jsonl) {
300
- const lines = jsonl.split(/\r?\n/);
301
- const errors = [];
302
- let sawV08 = false;
303
- let sawV09 = false;
304
- let messageCount = 0;
305
- lines.forEach((line, idx) => {
306
- const trimmed = line.trim();
307
- if (!trimmed) return;
308
- messageCount += 1;
309
- let obj;
310
- try {
311
- obj = JSON.parse(trimmed);
312
- } catch (err) {
313
- errors.push(`line ${idx + 1}: ${String(err)}`);
314
- return;
315
- }
316
- if (!obj || typeof obj !== "object" || Array.isArray(obj)) {
317
- errors.push(`line ${idx + 1}: expected JSON object`);
318
- return;
319
- }
320
- const record = obj;
321
- const actionKeys = A2UI_ACTION_KEYS.filter((key) => key in record);
322
- if (actionKeys.length !== 1) {
323
- errors.push(`line ${idx + 1}: expected exactly one action key (${A2UI_ACTION_KEYS.join(", ")})`);
324
- return;
325
- }
326
- if (actionKeys[0] === "createSurface") sawV09 = true;
327
- else sawV08 = true;
328
- });
329
- if (messageCount === 0) errors.push("no JSONL messages found");
330
- if (sawV08 && sawV09) errors.push("mixed A2UI v0.8 and v0.9 messages in one file");
331
- if (errors.length > 0) throw new Error(`Invalid A2UI JSONL:\n- ${errors.join("\n- ")}`);
332
- return {
333
- version: sawV09 ? "v0.9" : "v0.8",
334
- messageCount
335
- };
336
- }
337
-
338
- //#endregion
339
- //#region src/cli/nodes-cli/register.canvas.ts
340
- async function invokeCanvas(opts, command, params) {
341
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
342
- const timeoutMs = parseTimeoutMs(opts.invokeTimeout);
343
- return await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
344
- nodeId,
345
- command,
346
- params,
347
- timeoutMs: typeof timeoutMs === "number" ? timeoutMs : void 0
348
- }));
349
- }
350
- function registerNodesCanvasCommands(nodes) {
351
- const canvas = nodes.command("canvas").description("Capture or render canvas content from a paired node");
352
- 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) => {
353
- await runNodesCommand("canvas snapshot", async () => {
354
- const formatOpt = String(opts.format ?? "jpg").trim().toLowerCase();
355
- const formatForParams = formatOpt === "jpg" ? "jpeg" : formatOpt === "jpeg" ? "jpeg" : "png";
356
- if (formatForParams !== "png" && formatForParams !== "jpeg") throw new Error(`invalid format: ${String(opts.format)} (expected png|jpg|jpeg)`);
357
- const maxWidth = opts.maxWidth ? Number.parseInt(String(opts.maxWidth), 10) : void 0;
358
- const quality = opts.quality ? Number.parseFloat(String(opts.quality)) : void 0;
359
- const raw = await invokeCanvas(opts, "canvas.snapshot", {
360
- format: formatForParams,
361
- maxWidth: Number.isFinite(maxWidth) ? maxWidth : void 0,
362
- quality: Number.isFinite(quality) ? quality : void 0
363
- });
364
- const payload = parseCanvasSnapshotPayload((typeof raw === "object" && raw !== null ? raw : {}).payload);
365
- const filePath = canvasSnapshotTempPath({ ext: payload.format === "jpeg" ? "jpg" : payload.format });
366
- await writeBase64ToFile(filePath, payload.base64);
367
- if (opts.json) {
368
- defaultRuntime.log(JSON.stringify({ file: {
369
- path: filePath,
370
- format: payload.format
371
- } }, null, 2));
372
- return;
373
- }
374
- defaultRuntime.log(`MEDIA:${shortenHomePath(filePath)}`);
375
- });
376
- }), { timeoutMs: 6e4 });
377
- 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) => {
378
- await runNodesCommand("canvas present", async () => {
379
- const placement = {
380
- x: opts.x ? Number.parseFloat(opts.x) : void 0,
381
- y: opts.y ? Number.parseFloat(opts.y) : void 0,
382
- width: opts.width ? Number.parseFloat(opts.width) : void 0,
383
- height: opts.height ? Number.parseFloat(opts.height) : void 0
384
- };
385
- const params = {};
386
- if (opts.target) params.url = String(opts.target);
387
- if (Number.isFinite(placement.x) || Number.isFinite(placement.y) || Number.isFinite(placement.width) || Number.isFinite(placement.height)) params.placement = placement;
388
- await invokeCanvas(opts, "canvas.present", params);
389
- if (!opts.json) {
390
- const { ok } = getNodesTheme();
391
- defaultRuntime.log(ok("canvas present ok"));
392
- }
393
- });
394
- }));
395
- 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) => {
396
- await runNodesCommand("canvas hide", async () => {
397
- await invokeCanvas(opts, "canvas.hide", void 0);
398
- if (!opts.json) {
399
- const { ok } = getNodesTheme();
400
- defaultRuntime.log(ok("canvas hide ok"));
401
- }
402
- });
403
- }));
404
- 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) => {
405
- await runNodesCommand("canvas navigate", async () => {
406
- await invokeCanvas(opts, "canvas.navigate", { url });
407
- if (!opts.json) {
408
- const { ok } = getNodesTheme();
409
- defaultRuntime.log(ok("canvas navigate ok"));
410
- }
411
- });
412
- }));
413
- 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) => {
414
- await runNodesCommand("canvas eval", async () => {
415
- const js = opts.js ?? jsArg;
416
- if (!js) throw new Error("missing --js or <js>");
417
- const raw = await invokeCanvas(opts, "canvas.eval", { javaScript: js });
418
- if (opts.json) {
419
- defaultRuntime.log(JSON.stringify(raw, null, 2));
420
- return;
421
- }
422
- const payload = typeof raw === "object" && raw !== null ? raw.payload : void 0;
423
- if (payload?.result) defaultRuntime.log(payload.result);
424
- else {
425
- const { ok } = getNodesTheme();
426
- defaultRuntime.log(ok("canvas eval ok"));
427
- }
428
- });
429
- }));
430
- const a2ui = canvas.command("a2ui").description("Render A2UI content on the canvas");
431
- 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) => {
432
- await runNodesCommand("canvas a2ui push", async () => {
433
- const hasJsonl = Boolean(opts.jsonl);
434
- const hasText = typeof opts.text === "string";
435
- if (hasJsonl === hasText) throw new Error("provide exactly one of --jsonl or --text");
436
- const jsonl = hasText ? buildA2UITextJsonl(String(opts.text ?? "")) : await fs.readFile(String(opts.jsonl), "utf8");
437
- const { version, messageCount } = validateA2UIJsonl(jsonl);
438
- if (version === "v0.9") throw new Error("Detected A2UI v0.9 JSONL (createSurface). RemoteClaw currently supports v0.8 only.");
439
- await invokeCanvas(opts, "canvas.a2ui.pushJSONL", { jsonl });
440
- if (!opts.json) {
441
- const { ok } = getNodesTheme();
442
- defaultRuntime.log(ok(`canvas a2ui push ok (v0.8, ${messageCount} message${messageCount === 1 ? "" : "s"})`));
443
- }
444
- });
445
- }));
446
- 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) => {
447
- await runNodesCommand("canvas a2ui reset", async () => {
448
- await invokeCanvas(opts, "canvas.a2ui.reset", void 0);
449
- if (!opts.json) {
450
- const { ok } = getNodesTheme();
451
- defaultRuntime.log(ok("canvas a2ui reset ok"));
452
- }
453
- });
454
- }));
455
- }
456
-
457
- //#endregion
458
- //#region src/infra/node-shell.ts
459
- function buildNodeShellCommand(command, platform) {
460
- if (String(platform ?? "").trim().toLowerCase().startsWith("win")) return [
461
- "cmd.exe",
462
- "/d",
463
- "/s",
464
- "/c",
465
- command
466
- ];
467
- return [
468
- "/bin/sh",
469
- "-lc",
470
- command
471
- ];
472
- }
473
-
474
- //#endregion
475
- //#region src/infra/path-prepend.ts
476
- function mergePathPrepend(existing, prepend) {
477
- if (prepend.length === 0) return existing;
478
- const partsExisting = (existing ?? "").split(path.delimiter).map((part) => part.trim()).filter(Boolean);
479
- const merged = [];
480
- const seen = /* @__PURE__ */ new Set();
481
- for (const part of [...prepend, ...partsExisting]) {
482
- if (seen.has(part)) continue;
483
- seen.add(part);
484
- merged.push(part);
485
- }
486
- return merged.join(path.delimiter);
487
- }
488
- function applyPathPrepend(env, prepend, options) {
489
- if (!Array.isArray(prepend) || prepend.length === 0) return;
490
- if (options?.requireExisting && !env.PATH) return;
491
- const merged = mergePathPrepend(env.PATH, prepend);
492
- if (merged) env.PATH = merged;
493
- }
494
-
495
- //#endregion
496
- //#region src/cli/nodes-cli/register.invoke.ts
497
- const DEFAULT_EXEC_APPROVAL_TIMEOUT_MS = 12e4;
498
- function minSecurity(a, b) {
499
- const order = [
500
- "deny",
501
- "allowlist",
502
- "full"
503
- ];
504
- return order[Math.min(order.indexOf(a), order.indexOf(b))] ?? "deny";
505
- }
506
- function maxAsk(a, b) {
507
- const order = [
508
- "off",
509
- "on-miss",
510
- "always"
511
- ];
512
- return order[Math.max(order.indexOf(a), order.indexOf(b))] ?? "on-miss";
513
- }
514
- function resolveExecApprovalsFromFile(_opts) {
515
- return { agent: {
516
- security: _opts.overrides?.security ?? "allowlist",
517
- ask: _opts.overrides?.ask ?? "on-miss"
518
- } };
519
- }
520
- function normalizeExecSecurity(value) {
521
- const normalized = value?.trim().toLowerCase();
522
- if (normalized === "deny" || normalized === "allowlist" || normalized === "full") return normalized;
523
- return null;
524
- }
525
- function normalizeExecAsk(value) {
526
- const normalized = value?.trim().toLowerCase();
527
- if (normalized === "off" || normalized === "on-miss" || normalized === "always") return normalized;
528
- return null;
529
- }
530
- function resolveExecDefaults(cfg, agentId) {
531
- const globalExec = cfg?.tools?.exec;
532
- if (!agentId) return globalExec ? {
533
- security: globalExec.security,
534
- ask: globalExec.ask,
535
- node: globalExec.node,
536
- pathPrepend: globalExec.pathPrepend,
537
- safeBins: globalExec.safeBins
538
- } : void 0;
539
- const agentExec = resolveAgentConfig(cfg, agentId)?.tools?.exec;
540
- return {
541
- security: agentExec?.security ?? globalExec?.security,
542
- ask: agentExec?.ask ?? globalExec?.ask,
543
- node: agentExec?.node ?? globalExec?.node,
544
- pathPrepend: agentExec?.pathPrepend ?? globalExec?.pathPrepend,
545
- safeBins: agentExec?.safeBins ?? globalExec?.safeBins
546
- };
547
- }
548
- async function resolveNodePlatform(opts, nodeId) {
549
- try {
550
- const match = parseNodeList(await callGatewayCli("node.list", opts, {})).find((node) => node.nodeId === nodeId);
551
- return typeof match?.platform === "string" ? match.platform : null;
552
- } catch {
553
- return null;
554
- }
555
- }
556
- function registerNodesInvokeCommands(nodes) {
557
- 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) => {
558
- await runNodesCommand("invoke", async () => {
559
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
560
- const command = String(opts.command ?? "").trim();
561
- if (!nodeId || !command) {
562
- const { error } = getNodesTheme();
563
- defaultRuntime.error(error("--node and --command required"));
564
- defaultRuntime.exit(1);
565
- return;
566
- }
567
- const params = JSON.parse(String(opts.params ?? "{}"));
568
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
569
- const invokeParams = {
570
- nodeId,
571
- command,
572
- params,
573
- idempotencyKey: String(opts.idempotencyKey ?? randomIdempotencyKey())
574
- };
575
- if (typeof timeoutMs === "number" && Number.isFinite(timeoutMs)) invokeParams.timeoutMs = timeoutMs;
576
- const result = await callGatewayCli("node.invoke", opts, invokeParams);
577
- defaultRuntime.log(JSON.stringify(result, null, 2));
578
- });
579
- }), { timeoutMs: 3e4 });
580
- 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) => {
581
- await runNodesCommand("run", async () => {
582
- const cfg = loadConfig();
583
- const agentId = opts.agent?.trim() || resolveDefaultAgentId(cfg);
584
- const execDefaults = resolveExecDefaults(cfg, agentId);
585
- const raw = typeof opts.raw === "string" ? opts.raw.trim() : "";
586
- if (raw && Array.isArray(command) && command.length > 0) throw new Error("use --raw or argv, not both");
587
- if (!raw && (!Array.isArray(command) || command.length === 0)) throw new Error("command required");
588
- const nodeQuery = String(opts.node ?? "").trim() || execDefaults?.node?.trim() || "";
589
- if (!nodeQuery) throw new Error("node required (set --node or tools.exec.node)");
590
- const nodeId = await resolveNodeId(opts, nodeQuery);
591
- const env = parseEnvPairs(opts.env);
592
- const timeoutMs = parseTimeoutMs(opts.commandTimeout);
593
- const invokeTimeout = parseTimeoutMs(opts.invokeTimeout);
594
- let argv = Array.isArray(command) ? command : [];
595
- let rawCommand;
596
- if (raw) {
597
- rawCommand = raw;
598
- const platform = await resolveNodePlatform(opts, nodeId);
599
- argv = buildNodeShellCommand(rawCommand, platform ?? void 0);
600
- }
601
- const nodeEnv = env ? { ...env } : void 0;
602
- if (nodeEnv) applyPathPrepend(nodeEnv, execDefaults?.pathPrepend, { requireExisting: true });
603
- let approvedByAsk = false;
604
- let approvalDecision = null;
605
- const configuredSecurity = normalizeExecSecurity(execDefaults?.security) ?? "allowlist";
606
- const requestedSecurity = normalizeExecSecurity(opts.security);
607
- if (opts.security && !requestedSecurity) throw new Error("invalid --security (use deny|allowlist|full)");
608
- const configuredAsk = normalizeExecAsk(execDefaults?.ask) ?? "on-miss";
609
- const requestedAsk = normalizeExecAsk(opts.ask);
610
- if (opts.ask && !requestedAsk) throw new Error("invalid --ask (use off|on-miss|always)");
611
- const security = minSecurity(configuredSecurity, requestedSecurity ?? configuredSecurity);
612
- const ask = maxAsk(configuredAsk, requestedAsk ?? configuredAsk);
613
- const approvalsSnapshot = await callGatewayCli("exec.approvals.node.get", opts, { nodeId });
614
- const approvalsFile = approvalsSnapshot && typeof approvalsSnapshot === "object" ? approvalsSnapshot.file : void 0;
615
- if (!approvalsFile || typeof approvalsFile !== "object") throw new Error("exec approvals unavailable");
616
- const approvals = resolveExecApprovalsFromFile({
617
- file: approvalsFile,
618
- agentId,
619
- overrides: {
620
- security,
621
- ask
622
- }
623
- });
624
- const hostSecurity = minSecurity(security, approvals.agent.security);
625
- const hostAsk = maxAsk(ask, approvals.agent.ask);
626
- const askFallback = approvals.agent.askFallback;
627
- if (hostSecurity === "deny") throw new Error("exec denied: host=node security=deny");
628
- const requiresAsk = hostAsk === "always" || hostAsk === "on-miss";
629
- let approvalId = null;
630
- if (requiresAsk) {
631
- approvalId = crypto.randomUUID();
632
- const approvalTimeoutMs = DEFAULT_EXEC_APPROVAL_TIMEOUT_MS;
633
- const transportTimeoutMs = Math.max(parseTimeoutMs(opts.timeout) ?? 0, approvalTimeoutMs + 1e4);
634
- const decisionResult = await callGatewayCli("exec.approval.request", opts, {
635
- id: approvalId,
636
- command: rawCommand ?? argv.join(" "),
637
- cwd: opts.cwd,
638
- nodeId,
639
- host: "node",
640
- security: hostSecurity,
641
- ask: hostAsk,
642
- agentId,
643
- resolvedPath: void 0,
644
- sessionKey: void 0,
645
- timeoutMs: approvalTimeoutMs
646
- }, { transportTimeoutMs });
647
- const decision = decisionResult && typeof decisionResult === "object" ? decisionResult.decision ?? null : null;
648
- if (decision === "deny") throw new Error("exec denied: user denied");
649
- if (!decision) if (askFallback === "full") {
650
- approvedByAsk = true;
651
- approvalDecision = "allow-once";
652
- } else if (askFallback === "allowlist") {} else throw new Error("exec denied: approval required (approval UI not available)");
653
- if (decision === "allow-once") {
654
- approvedByAsk = true;
655
- approvalDecision = "allow-once";
656
- }
657
- if (decision === "allow-always") {
658
- approvedByAsk = true;
659
- approvalDecision = "allow-always";
660
- }
661
- }
662
- const invokeParams = {
663
- nodeId,
664
- command: "system.run",
665
- params: {
666
- command: argv,
667
- cwd: opts.cwd,
668
- env: nodeEnv,
669
- timeoutMs,
670
- needsScreenRecording: opts.needsScreenRecording === true
671
- },
672
- idempotencyKey: String(opts.idempotencyKey ?? randomIdempotencyKey())
673
- };
674
- if (agentId) invokeParams.params.agentId = agentId;
675
- if (rawCommand) invokeParams.params.rawCommand = rawCommand;
676
- invokeParams.params.approved = approvedByAsk;
677
- if (approvalDecision) invokeParams.params.approvalDecision = approvalDecision;
678
- if (approvedByAsk && approvalId) invokeParams.params.runId = approvalId;
679
- if (invokeTimeout !== void 0) invokeParams.timeoutMs = invokeTimeout;
680
- const result = await callGatewayCli("node.invoke", opts, invokeParams);
681
- if (opts.json) {
682
- defaultRuntime.log(JSON.stringify(result, null, 2));
683
- return;
684
- }
685
- const payload = typeof result === "object" && result !== null ? result.payload : void 0;
686
- const stdout = typeof payload?.stdout === "string" ? payload.stdout : "";
687
- const stderr = typeof payload?.stderr === "string" ? payload.stderr : "";
688
- const exitCode = typeof payload?.exitCode === "number" ? payload.exitCode : null;
689
- const timedOut = payload?.timedOut === true;
690
- const success = payload?.success === true;
691
- if (stdout) process.stdout.write(stdout);
692
- if (stderr) process.stderr.write(stderr);
693
- if (timedOut) {
694
- const { error } = getNodesTheme();
695
- defaultRuntime.error(error("run timed out"));
696
- defaultRuntime.exit(1);
697
- return;
698
- }
699
- if (exitCode !== null && exitCode !== 0) {
700
- const hint = unauthorizedHintForMessage(`${stderr}\n${stdout}`);
701
- if (hint) {
702
- const { warn } = getNodesTheme();
703
- defaultRuntime.error(warn(hint));
704
- }
705
- }
706
- if (exitCode !== null && exitCode !== 0 && !success) {
707
- const { error } = getNodesTheme();
708
- defaultRuntime.error(error(`run exit ${exitCode}`));
709
- defaultRuntime.exit(1);
710
- return;
711
- }
712
- });
713
- }), { timeoutMs: 35e3 });
714
- }
715
-
716
- //#endregion
717
- //#region src/cli/nodes-cli/register.location.ts
718
- function registerNodesLocationCommands(nodes) {
719
- 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) => {
720
- await runNodesCommand("location get", async () => {
721
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
722
- const maxAgeMs = opts.maxAge ? Number.parseInt(String(opts.maxAge), 10) : void 0;
723
- const desiredAccuracyRaw = typeof opts.accuracy === "string" ? opts.accuracy.trim().toLowerCase() : void 0;
724
- const desiredAccuracy = desiredAccuracyRaw === "coarse" || desiredAccuracyRaw === "balanced" || desiredAccuracyRaw === "precise" ? desiredAccuracyRaw : void 0;
725
- const timeoutMs = opts.locationTimeout ? Number.parseInt(String(opts.locationTimeout), 10) : void 0;
726
- const invokeTimeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
727
- const invokeParams = {
728
- nodeId,
729
- command: "location.get",
730
- params: {
731
- maxAgeMs: Number.isFinite(maxAgeMs) ? maxAgeMs : void 0,
732
- desiredAccuracy,
733
- timeoutMs: Number.isFinite(timeoutMs) ? timeoutMs : void 0
734
- },
735
- idempotencyKey: randomIdempotencyKey()
736
- };
737
- if (typeof invokeTimeoutMs === "number" && Number.isFinite(invokeTimeoutMs)) invokeParams.timeoutMs = invokeTimeoutMs;
738
- const raw = await callGatewayCli("node.invoke", opts, invokeParams);
739
- const res = typeof raw === "object" && raw !== null ? raw : {};
740
- const payload = res.payload && typeof res.payload === "object" ? res.payload : {};
741
- if (opts.json) {
742
- defaultRuntime.log(JSON.stringify(payload, null, 2));
743
- return;
744
- }
745
- const lat = payload.lat;
746
- const lon = payload.lon;
747
- const acc = payload.accuracyMeters;
748
- if (typeof lat === "number" && typeof lon === "number") {
749
- const accText = typeof acc === "number" ? ` ±${acc.toFixed(1)}m` : "";
750
- defaultRuntime.log(`${lat},${lon}${accText}`);
751
- return;
752
- }
753
- defaultRuntime.log(JSON.stringify(payload));
754
- });
755
- }), { timeoutMs: 3e4 });
756
- }
757
-
758
- //#endregion
759
- //#region src/cli/nodes-cli/register.notify.ts
760
- function registerNodesNotifyCommand(nodes) {
761
- 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) => {
762
- await runNodesCommand("notify", async () => {
763
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
764
- const title = String(opts.title ?? "").trim();
765
- const body = String(opts.body ?? "").trim();
766
- if (!title && !body) throw new Error("missing --title or --body");
767
- const invokeTimeout = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
768
- const invokeParams = {
769
- nodeId,
770
- command: "system.notify",
771
- params: {
772
- title,
773
- body,
774
- sound: opts.sound,
775
- priority: opts.priority,
776
- delivery: opts.delivery
777
- },
778
- idempotencyKey: String(opts.idempotencyKey ?? randomIdempotencyKey())
779
- };
780
- if (typeof invokeTimeout === "number" && Number.isFinite(invokeTimeout)) invokeParams.timeoutMs = invokeTimeout;
781
- const result = await callGatewayCli("node.invoke", opts, invokeParams);
782
- if (opts.json) {
783
- defaultRuntime.log(JSON.stringify(result, null, 2));
784
- return;
785
- }
786
- const { ok } = getNodesTheme();
787
- defaultRuntime.log(ok("notify ok"));
788
- });
789
- }));
790
- }
791
-
792
- //#endregion
793
- //#region src/cli/nodes-cli/pairing-render.ts
794
- function renderPendingPairingRequestsTable(params) {
795
- const { pending, now, tableWidth, theme } = params;
796
- const rows = pending.map((r) => ({
797
- Request: r.requestId,
798
- Node: r.displayName?.trim() ? r.displayName.trim() : r.nodeId,
799
- IP: r.remoteIp ?? "",
800
- Requested: typeof r.ts === "number" ? formatTimeAgo(Math.max(0, now - r.ts)) : theme.muted("unknown"),
801
- Repair: r.isRepair ? theme.warn("yes") : ""
802
- }));
803
- return {
804
- heading: theme.heading("Pending"),
805
- table: renderTable({
806
- width: tableWidth,
807
- columns: [
808
- {
809
- key: "Request",
810
- header: "Request",
811
- minWidth: 8
812
- },
813
- {
814
- key: "Node",
815
- header: "Node",
816
- minWidth: 14,
817
- flex: true
818
- },
819
- {
820
- key: "IP",
821
- header: "IP",
822
- minWidth: 10
823
- },
824
- {
825
- key: "Requested",
826
- header: "Requested",
827
- minWidth: 12
828
- },
829
- {
830
- key: "Repair",
831
- header: "Repair",
832
- minWidth: 6
833
- }
834
- ],
835
- rows
836
- }).trimEnd()
837
- };
838
- }
839
-
840
- //#endregion
841
- //#region src/cli/nodes-cli/register.pairing.ts
842
- function registerNodesPairingCommands(nodes) {
843
- nodesCallOpts(nodes.command("pending").description("List pending pairing requests").action(async (opts) => {
844
- await runNodesCommand("pending", async () => {
845
- const { pending } = parsePairingList(await callGatewayCli("node.pair.list", opts, {}));
846
- if (opts.json) {
847
- defaultRuntime.log(JSON.stringify(pending, null, 2));
848
- return;
849
- }
850
- if (pending.length === 0) {
851
- const { muted } = getNodesTheme();
852
- defaultRuntime.log(muted("No pending pairing requests."));
853
- return;
854
- }
855
- const { heading, warn, muted } = getNodesTheme();
856
- const tableWidth = Math.max(60, (process.stdout.columns ?? 120) - 1);
857
- const rendered = renderPendingPairingRequestsTable({
858
- pending,
859
- now: Date.now(),
860
- tableWidth,
861
- theme: {
862
- heading,
863
- warn,
864
- muted
865
- }
866
- });
867
- defaultRuntime.log(rendered.heading);
868
- defaultRuntime.log(rendered.table);
869
- });
870
- }));
871
- nodesCallOpts(nodes.command("approve").description("Approve a pending pairing request").argument("<requestId>", "Pending request id").action(async (requestId, opts) => {
872
- await runNodesCommand("approve", async () => {
873
- const result = await callGatewayCli("node.pair.approve", opts, { requestId });
874
- defaultRuntime.log(JSON.stringify(result, null, 2));
875
- });
876
- }));
877
- nodesCallOpts(nodes.command("reject").description("Reject a pending pairing request").argument("<requestId>", "Pending request id").action(async (requestId, opts) => {
878
- await runNodesCommand("reject", async () => {
879
- const result = await callGatewayCli("node.pair.reject", opts, { requestId });
880
- defaultRuntime.log(JSON.stringify(result, null, 2));
881
- });
882
- }));
883
- 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) => {
884
- await runNodesCommand("rename", async () => {
885
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
886
- const name = String(opts.name ?? "").trim();
887
- if (!nodeId || !name) {
888
- defaultRuntime.error("--node and --name required");
889
- defaultRuntime.exit(1);
890
- return;
891
- }
892
- const result = await callGatewayCli("node.rename", opts, {
893
- nodeId,
894
- displayName: name
895
- });
896
- if (opts.json) {
897
- defaultRuntime.log(JSON.stringify(result, null, 2));
898
- return;
899
- }
900
- const { ok } = getNodesTheme();
901
- defaultRuntime.log(ok(`node rename ok: ${nodeId} -> ${name}`));
902
- });
903
- }));
904
- }
905
-
906
- //#endregion
907
- //#region src/cli/nodes-cli/register.push.ts
908
- function normalizeEnvironment(value) {
909
- if (typeof value !== "string") return null;
910
- const normalized = value.trim().toLowerCase();
911
- if (normalized === "sandbox" || normalized === "production") return normalized;
912
- return null;
913
- }
914
- function registerNodesPushCommand(nodes) {
915
- 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) => {
916
- await runNodesCommand("push", async () => {
917
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
918
- const title = String(opts.title ?? "").trim() || "RemoteClaw";
919
- const body = String(opts.body ?? "").trim() || `Push test for node ${nodeId}`;
920
- const environment = normalizeEnvironment(opts.environment);
921
- if (opts.environment && !environment) throw new Error("invalid --environment (use sandbox|production)");
922
- const params = {
923
- nodeId,
924
- title,
925
- body
926
- };
927
- if (environment) params.environment = environment;
928
- const result = await callGatewayCli("push.test", opts, params);
929
- if (opts.json) {
930
- defaultRuntime.log(JSON.stringify(result, null, 2));
931
- return;
932
- }
933
- const parsed = typeof result === "object" && result !== null ? result : {};
934
- const ok = parsed.ok === true;
935
- const status = typeof parsed.status === "number" ? parsed.status : 0;
936
- const reason = typeof parsed.reason === "string" && parsed.reason.trim().length > 0 ? parsed.reason.trim() : void 0;
937
- const env = typeof parsed.environment === "string" && parsed.environment.trim().length > 0 ? parsed.environment.trim() : "unknown";
938
- const { ok: okLabel, error: errorLabel } = getNodesTheme();
939
- const label = ok ? okLabel : errorLabel;
940
- defaultRuntime.log(label(`push.test status=${status} ok=${ok} env=${env}`));
941
- if (reason) defaultRuntime.log(`reason: ${reason}`);
942
- });
943
- }), { timeoutMs: 25e3 });
944
- }
945
-
946
- //#endregion
947
- //#region src/cli/nodes-cli/register.screen.ts
948
- function registerNodesScreenCommands(nodes) {
949
- 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) => {
950
- await runNodesCommand("screen record", async () => {
951
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
952
- const durationMs = parseDurationMs(opts.duration ?? "");
953
- const screenIndex = Number.parseInt(String(opts.screen ?? "0"), 10);
954
- const fps = Number.parseFloat(String(opts.fps ?? "10"));
955
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
956
- const raw = await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
957
- nodeId,
958
- command: "screen.record",
959
- params: {
960
- durationMs: Number.isFinite(durationMs) ? durationMs : void 0,
961
- screenIndex: Number.isFinite(screenIndex) ? screenIndex : void 0,
962
- fps: Number.isFinite(fps) ? fps : void 0,
963
- format: "mp4",
964
- includeAudio: opts.audio !== false
965
- },
966
- timeoutMs
967
- }));
968
- const parsed = parseScreenRecordPayload((typeof raw === "object" && raw !== null ? raw : {}).payload);
969
- const written = await writeScreenRecordToFile(opts.out ?? screenRecordTempPath({ ext: parsed.format || "mp4" }), parsed.base64);
970
- if (opts.json) {
971
- defaultRuntime.log(JSON.stringify({ file: {
972
- path: written.path,
973
- durationMs: parsed.durationMs,
974
- fps: parsed.fps,
975
- screenIndex: parsed.screenIndex,
976
- hasAudio: parsed.hasAudio
977
- } }, null, 2));
978
- return;
979
- }
980
- defaultRuntime.log(`MEDIA:${shortenHomePath(written.path)}`);
981
- });
982
- }), { timeoutMs: 18e4 });
983
- }
984
-
985
- //#endregion
986
- //#region src/cli/nodes-cli/register.status.ts
987
- function formatVersionLabel(raw) {
988
- const trimmed = raw.trim();
989
- if (!trimmed) return raw;
990
- if (trimmed.toLowerCase().startsWith("v")) return trimmed;
991
- return /^\d/.test(trimmed) ? `v${trimmed}` : trimmed;
992
- }
993
- function resolveNodeVersions(node) {
994
- const core = node.coreVersion?.trim() || void 0;
995
- const ui = node.uiVersion?.trim() || void 0;
996
- if (core || ui) return {
997
- core,
998
- ui
999
- };
1000
- const legacy = node.version?.trim();
1001
- if (!legacy) return {
1002
- core: void 0,
1003
- ui: void 0
1004
- };
1005
- const platform = node.platform?.trim().toLowerCase() ?? "";
1006
- return platform === "darwin" || platform === "linux" || platform === "win32" || platform === "windows" ? {
1007
- core: legacy,
1008
- ui: void 0
1009
- } : {
1010
- core: void 0,
1011
- ui: legacy
1012
- };
1013
- }
1014
- function formatNodeVersions(node) {
1015
- const { core, ui } = resolveNodeVersions(node);
1016
- const parts = [];
1017
- if (core) parts.push(`core ${formatVersionLabel(core)}`);
1018
- if (ui) parts.push(`ui ${formatVersionLabel(ui)}`);
1019
- return parts.length > 0 ? parts.join(" · ") : null;
1020
- }
1021
- function formatPathEnv(raw) {
1022
- if (typeof raw !== "string") return null;
1023
- const trimmed = raw.trim();
1024
- if (!trimmed) return null;
1025
- const parts = trimmed.split(":").filter(Boolean);
1026
- return shortenHomeInString(parts.length <= 3 ? trimmed : `${parts.slice(0, 2).join(":")}:…:${parts.slice(-1)[0]}`);
1027
- }
1028
- function parseSinceMs(raw, label) {
1029
- if (raw === void 0 || raw === null) return;
1030
- const value = typeof raw === "string" ? raw.trim() : typeof raw === "number" ? String(raw).trim() : null;
1031
- if (value === null) {
1032
- defaultRuntime.error(`${label}: invalid duration value`);
1033
- defaultRuntime.exit(1);
1034
- return;
1035
- }
1036
- if (!value) return;
1037
- try {
1038
- return parseDurationMs(value);
1039
- } catch (err) {
1040
- const message = err instanceof Error ? err.message : String(err);
1041
- defaultRuntime.error(`${label}: ${message}`);
1042
- defaultRuntime.exit(1);
1043
- return;
1044
- }
1045
- }
1046
- function registerNodesStatusCommands(nodes) {
1047
- 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) => {
1048
- await runNodesCommand("status", async () => {
1049
- const connectedOnly = Boolean(opts.connected);
1050
- const sinceMs = parseSinceMs(opts.lastConnected, "Invalid --last-connected");
1051
- const result = await callGatewayCli("node.list", opts, {});
1052
- const obj = typeof result === "object" && result !== null ? result : {};
1053
- const { ok, warn, muted } = getNodesTheme();
1054
- const tableWidth = Math.max(60, (process.stdout.columns ?? 120) - 1);
1055
- const now = Date.now();
1056
- const nodes = parseNodeList(result);
1057
- const lastConnectedById = sinceMs !== void 0 ? new Map(parsePairingList(await callGatewayCli("node.pair.list", opts, {})).paired.map((entry) => [entry.nodeId, entry])) : null;
1058
- const filtered = nodes.filter((n) => {
1059
- if (connectedOnly && !n.connected) return false;
1060
- if (sinceMs !== void 0) {
1061
- const paired = lastConnectedById?.get(n.nodeId);
1062
- const lastConnectedAtMs = typeof paired?.lastConnectedAtMs === "number" ? paired.lastConnectedAtMs : typeof n.connectedAtMs === "number" ? n.connectedAtMs : void 0;
1063
- if (typeof lastConnectedAtMs !== "number") return false;
1064
- if (now - lastConnectedAtMs > sinceMs) return false;
1065
- }
1066
- return true;
1067
- });
1068
- if (opts.json) {
1069
- const ts = typeof obj.ts === "number" ? obj.ts : Date.now();
1070
- defaultRuntime.log(JSON.stringify({
1071
- ...obj,
1072
- ts,
1073
- nodes: filtered
1074
- }, null, 2));
1075
- return;
1076
- }
1077
- const pairedCount = filtered.filter((n) => Boolean(n.paired)).length;
1078
- const connectedCount = filtered.filter((n) => Boolean(n.connected)).length;
1079
- const filteredLabel = filtered.length !== nodes.length ? ` (of ${nodes.length})` : "";
1080
- defaultRuntime.log(`Known: ${filtered.length}${filteredLabel} · Paired: ${pairedCount} · Connected: ${connectedCount}`);
1081
- if (filtered.length === 0) return;
1082
- const rows = filtered.map((n) => {
1083
- const name = n.displayName?.trim() ? n.displayName.trim() : n.nodeId;
1084
- const perms = formatPermissions(n.permissions);
1085
- const versions = formatNodeVersions(n);
1086
- const pathEnv = formatPathEnv(n.pathEnv);
1087
- const detailParts = [
1088
- n.deviceFamily ? `device: ${n.deviceFamily}` : null,
1089
- n.modelIdentifier ? `hw: ${n.modelIdentifier}` : null,
1090
- perms ? `perms: ${perms}` : null,
1091
- versions,
1092
- pathEnv ? `path: ${pathEnv}` : null
1093
- ].filter(Boolean);
1094
- const caps = Array.isArray(n.caps) ? n.caps.map(String).filter(Boolean).toSorted().join(", ") : "?";
1095
- const paired = n.paired ? ok("paired") : warn("unpaired");
1096
- const connected = n.connected ? ok("connected") : muted("disconnected");
1097
- const since = typeof n.connectedAtMs === "number" ? ` (${formatTimeAgo(Math.max(0, now - n.connectedAtMs))})` : "";
1098
- return {
1099
- Node: name,
1100
- ID: n.nodeId,
1101
- IP: n.remoteIp ?? "",
1102
- Detail: detailParts.join(" · "),
1103
- Status: `${paired} · ${connected}${since}`,
1104
- Caps: caps
1105
- };
1106
- });
1107
- defaultRuntime.log(renderTable({
1108
- width: tableWidth,
1109
- columns: [
1110
- {
1111
- key: "Node",
1112
- header: "Node",
1113
- minWidth: 14,
1114
- flex: true
1115
- },
1116
- {
1117
- key: "ID",
1118
- header: "ID",
1119
- minWidth: 10
1120
- },
1121
- {
1122
- key: "IP",
1123
- header: "IP",
1124
- minWidth: 10
1125
- },
1126
- {
1127
- key: "Detail",
1128
- header: "Detail",
1129
- minWidth: 18,
1130
- flex: true
1131
- },
1132
- {
1133
- key: "Status",
1134
- header: "Status",
1135
- minWidth: 18
1136
- },
1137
- {
1138
- key: "Caps",
1139
- header: "Caps",
1140
- minWidth: 12,
1141
- flex: true
1142
- }
1143
- ],
1144
- rows
1145
- }).trimEnd());
1146
- });
1147
- }));
1148
- nodesCallOpts(nodes.command("describe").description("Describe a node (capabilities + supported invoke commands)").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").action(async (opts) => {
1149
- await runNodesCommand("describe", async () => {
1150
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
1151
- const result = await callGatewayCli("node.describe", opts, { nodeId });
1152
- if (opts.json) {
1153
- defaultRuntime.log(JSON.stringify(result, null, 2));
1154
- return;
1155
- }
1156
- const obj = typeof result === "object" && result !== null ? result : {};
1157
- const displayName = typeof obj.displayName === "string" ? obj.displayName : nodeId;
1158
- const connected = Boolean(obj.connected);
1159
- const paired = Boolean(obj.paired);
1160
- const caps = Array.isArray(obj.caps) ? obj.caps.map(String).filter(Boolean).toSorted() : null;
1161
- const commands = Array.isArray(obj.commands) ? obj.commands.map(String).filter(Boolean).toSorted() : [];
1162
- const perms = formatPermissions(obj.permissions);
1163
- const family = typeof obj.deviceFamily === "string" ? obj.deviceFamily : null;
1164
- const model = typeof obj.modelIdentifier === "string" ? obj.modelIdentifier : null;
1165
- const ip = typeof obj.remoteIp === "string" ? obj.remoteIp : null;
1166
- const pathEnv = typeof obj.pathEnv === "string" ? obj.pathEnv : null;
1167
- const versions = formatNodeVersions(obj);
1168
- const { heading, ok, warn, muted } = getNodesTheme();
1169
- const status = `${paired ? ok("paired") : warn("unpaired")} · ${connected ? ok("connected") : muted("disconnected")}`;
1170
- const tableWidth = Math.max(60, (process.stdout.columns ?? 120) - 1);
1171
- const rows = [
1172
- {
1173
- Field: "ID",
1174
- Value: nodeId
1175
- },
1176
- displayName ? {
1177
- Field: "Name",
1178
- Value: displayName
1179
- } : null,
1180
- ip ? {
1181
- Field: "IP",
1182
- Value: ip
1183
- } : null,
1184
- family ? {
1185
- Field: "Device",
1186
- Value: family
1187
- } : null,
1188
- model ? {
1189
- Field: "Model",
1190
- Value: model
1191
- } : null,
1192
- perms ? {
1193
- Field: "Perms",
1194
- Value: perms
1195
- } : null,
1196
- versions ? {
1197
- Field: "Version",
1198
- Value: versions
1199
- } : null,
1200
- pathEnv ? {
1201
- Field: "PATH",
1202
- Value: pathEnv
1203
- } : null,
1204
- {
1205
- Field: "Status",
1206
- Value: status
1207
- },
1208
- {
1209
- Field: "Caps",
1210
- Value: caps ? caps.join(", ") : "?"
1211
- }
1212
- ].filter(Boolean);
1213
- defaultRuntime.log(heading("Node"));
1214
- defaultRuntime.log(renderTable({
1215
- width: tableWidth,
1216
- columns: [{
1217
- key: "Field",
1218
- header: "Field",
1219
- minWidth: 8
1220
- }, {
1221
- key: "Value",
1222
- header: "Value",
1223
- minWidth: 24,
1224
- flex: true
1225
- }],
1226
- rows
1227
- }).trimEnd());
1228
- defaultRuntime.log("");
1229
- defaultRuntime.log(heading("Commands"));
1230
- if (commands.length === 0) {
1231
- defaultRuntime.log(muted("- (none reported)"));
1232
- return;
1233
- }
1234
- for (const c of commands) defaultRuntime.log(`- ${c}`);
1235
- });
1236
- }));
1237
- 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) => {
1238
- await runNodesCommand("list", async () => {
1239
- const connectedOnly = Boolean(opts.connected);
1240
- const sinceMs = parseSinceMs(opts.lastConnected, "Invalid --last-connected");
1241
- const { pending, paired } = parsePairingList(await callGatewayCli("node.pair.list", opts, {}));
1242
- const { heading, muted, warn } = getNodesTheme();
1243
- const tableWidth = Math.max(60, (process.stdout.columns ?? 120) - 1);
1244
- const now = Date.now();
1245
- const hasFilters = connectedOnly || sinceMs !== void 0;
1246
- const pendingRows = hasFilters ? [] : pending;
1247
- const connectedById = hasFilters ? new Map(parseNodeList(await callGatewayCli("node.list", opts, {})).map((node) => [node.nodeId, node])) : null;
1248
- const filteredPaired = paired.filter((node) => {
1249
- if (connectedOnly) {
1250
- if (!(connectedById?.get(node.nodeId))?.connected) return false;
1251
- }
1252
- if (sinceMs !== void 0) {
1253
- const live = connectedById?.get(node.nodeId);
1254
- const lastConnectedAtMs = typeof node.lastConnectedAtMs === "number" ? node.lastConnectedAtMs : typeof live?.connectedAtMs === "number" ? live.connectedAtMs : void 0;
1255
- if (typeof lastConnectedAtMs !== "number") return false;
1256
- if (now - lastConnectedAtMs > sinceMs) return false;
1257
- }
1258
- return true;
1259
- });
1260
- const filteredLabel = hasFilters && filteredPaired.length !== paired.length ? ` (of ${paired.length})` : "";
1261
- defaultRuntime.log(`Pending: ${pendingRows.length} · Paired: ${filteredPaired.length}${filteredLabel}`);
1262
- if (opts.json) {
1263
- defaultRuntime.log(JSON.stringify({
1264
- pending: pendingRows,
1265
- paired: filteredPaired
1266
- }, null, 2));
1267
- return;
1268
- }
1269
- if (pendingRows.length > 0) {
1270
- const rendered = renderPendingPairingRequestsTable({
1271
- pending: pendingRows,
1272
- now,
1273
- tableWidth,
1274
- theme: {
1275
- heading,
1276
- warn,
1277
- muted
1278
- }
1279
- });
1280
- defaultRuntime.log("");
1281
- defaultRuntime.log(rendered.heading);
1282
- defaultRuntime.log(rendered.table);
1283
- }
1284
- if (filteredPaired.length > 0) {
1285
- const pairedRows = filteredPaired.map((n) => {
1286
- const live = connectedById?.get(n.nodeId);
1287
- const lastConnectedAtMs = typeof n.lastConnectedAtMs === "number" ? n.lastConnectedAtMs : typeof live?.connectedAtMs === "number" ? live.connectedAtMs : void 0;
1288
- return {
1289
- Node: n.displayName?.trim() ? n.displayName.trim() : n.nodeId,
1290
- Id: n.nodeId,
1291
- IP: n.remoteIp ?? "",
1292
- LastConnect: typeof lastConnectedAtMs === "number" ? formatTimeAgo(Math.max(0, now - lastConnectedAtMs)) : muted("unknown")
1293
- };
1294
- });
1295
- defaultRuntime.log("");
1296
- defaultRuntime.log(heading("Paired"));
1297
- defaultRuntime.log(renderTable({
1298
- width: tableWidth,
1299
- columns: [
1300
- {
1301
- key: "Node",
1302
- header: "Node",
1303
- minWidth: 14,
1304
- flex: true
1305
- },
1306
- {
1307
- key: "Id",
1308
- header: "ID",
1309
- minWidth: 10
1310
- },
1311
- {
1312
- key: "IP",
1313
- header: "IP",
1314
- minWidth: 10
1315
- },
1316
- {
1317
- key: "LastConnect",
1318
- header: "Last Connect",
1319
- minWidth: 14
1320
- }
1321
- ],
1322
- rows: pairedRows
1323
- }).trimEnd());
1324
- }
1325
- });
1326
- }));
1327
- }
1328
-
1329
- //#endregion
1330
- //#region src/cli/nodes-cli/register.ts
1331
- function registerNodesCli(program) {
1332
- const nodes = program.command("nodes").description("Manage gateway-owned nodes (pairing, status, invoke, and media)").addHelpText("after", () => `\n${theme.heading("Examples:")}\n${formatHelpExamples([
1333
- ["remoteclaw nodes status", "List known nodes with live status."],
1334
- ["remoteclaw nodes pairing pending", "Show pending node pairing requests."],
1335
- ["remoteclaw nodes run --node <id> --raw \"uname -a\"", "Run a shell command on a node."],
1336
- ["remoteclaw nodes camera snap --node <id>", "Capture a photo from a node camera."]
1337
- ])}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/nodes", "docs.remoteclaw.org/cli/nodes")}\n`);
1338
- registerNodesStatusCommands(nodes);
1339
- registerNodesPairingCommands(nodes);
1340
- registerNodesInvokeCommands(nodes);
1341
- registerNodesNotifyCommand(nodes);
1342
- registerNodesPushCommand(nodes);
1343
- registerNodesCanvasCommands(nodes);
1344
- registerNodesCameraCommands(nodes);
1345
- registerNodesScreenCommands(nodes);
1346
- registerNodesLocationCommands(nodes);
1347
- }
1348
-
1349
- //#endregion
1350
- export { registerNodesCli };