@spacebar_ai/moldclaw-core 2026.3.43 → 2026.3.45

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 (1131) hide show
  1. package/dist/accounts-5qY-dKca.d.ts +103 -0
  2. package/dist/accounts-CxV5zzzp.js +114 -0
  3. package/dist/acp-cli-2JoKJ0xt.js +2093 -0
  4. package/dist/actions.runtime-BJPd9nat.js +119 -0
  5. package/dist/actions.runtime-DVs4a2cB.js +133 -0
  6. package/dist/agent-scope-lZlwP1At.js +208 -0
  7. package/dist/agents-CmT3Jwvj.js +222 -0
  8. package/dist/agents-D7Pebhph.js +853 -0
  9. package/dist/agents.config-CX9CPNfP.js +17 -0
  10. package/dist/agents.config-DF9Zwn9n.js +121 -0
  11. package/dist/allow-list-B3f4EqAM.js +81 -0
  12. package/dist/allowlist-_YpK0-4h.js +142 -0
  13. package/dist/api-B44giplI.js +117 -0
  14. package/dist/audit-C3InXm7H.js +787 -0
  15. package/dist/audit-ChWS6RiF.js +54 -0
  16. package/dist/audit-channel.collect.runtime-DZzrS6v2.js +605 -0
  17. package/dist/audit-channel.runtime-B2XTOsSF.js +121 -0
  18. package/dist/audit-extra.async-C2G0mqmk.js +813 -0
  19. package/dist/audit-membership-runtime-DOv5-eHo.js +162 -0
  20. package/dist/audit.deep.runtime-DyL9O_sU.js +25 -0
  21. package/dist/audit.nondeep.runtime-C6jFgJfH.js +832 -0
  22. package/dist/audit.runtime-Cvh2wmWM.js +118 -0
  23. package/dist/auth-Ch3Rchm4.js +101 -0
  24. package/dist/auth-choice-Beq0dWPS.js +268 -0
  25. package/dist/auth-choice-DZYg94gS.js +122 -0
  26. package/dist/auth-choice-TVG_8lJj.js +507 -0
  27. package/dist/auth-choice-options-B_qxsjdj.js +123 -0
  28. package/dist/auth-choice-prompt-BayzDobT.js +115 -0
  29. package/dist/auth-choice-prompt-_UES859x.js +36 -0
  30. package/dist/auth-choice.apply-helpers-BhbNIV8X.js +66 -0
  31. package/dist/auth-choice.plugin-providers.runtime-CVC4Jzhp.js +119 -0
  32. package/dist/auth-profiles-C-Ul-Qkn.js +128139 -0
  33. package/dist/auth-profiles.runtime-Clyka_jV.js +116 -0
  34. package/dist/banner-CojBHPWr.js +342 -0
  35. package/dist/bluebubbles-BnLsj2Fy.d.ts +6 -0
  36. package/dist/bluebubbles-irYTGbfn.js +64 -0
  37. package/dist/bot-DdyrB2z9.d.ts +478 -0
  38. package/dist/brave-w4Fo8WZ3.js +24 -0
  39. package/dist/browser-cli-DWFs3P_i.js +1494 -0
  40. package/dist/build-info.json +3 -3
  41. package/dist/bundled/boot-md/handler.d.ts +1 -1
  42. package/dist/bundled/boot-md/handler.js +35 -35
  43. package/dist/bundled/bootstrap-extra-files/handler.d.ts +1 -1
  44. package/dist/bundled/bootstrap-extra-files/handler.js +1 -1
  45. package/dist/bundled/command-logger/handler.d.ts +1 -1
  46. package/dist/bundled/session-memory/handler.d.ts +1 -1
  47. package/dist/bundled/session-memory/handler.js +36 -36
  48. package/dist/call-Do7wTSr7.js +39 -0
  49. package/dist/call-gdDAt07d.js +640 -0
  50. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  51. package/dist/channel-34O87pvK.js +949 -0
  52. package/dist/channel-B3Xo_4d8.js +1598 -0
  53. package/dist/channel-BEqDvL49.js +397 -0
  54. package/dist/channel-BLOk9WRE.js +214 -0
  55. package/dist/channel-BY5H2cdy.js +803 -0
  56. package/dist/channel-BeOtzXIH.js +4681 -0
  57. package/dist/channel-Bt8x_5Kj.js +306 -0
  58. package/dist/channel-C3E8XWLF.js +1321 -0
  59. package/dist/channel-C6ngVfGr.js +943 -0
  60. package/dist/channel-CVDBca2b.js +226 -0
  61. package/dist/channel-Cctli72q.js +562 -0
  62. package/dist/channel-DEAbU9Dj2.js +316 -0
  63. package/dist/channel-DIULkrBN.js +575 -0
  64. package/dist/channel-DXb4gsSd.js +619 -0
  65. package/dist/channel-Dap9LY-9.js +352 -0
  66. package/dist/channel-DcJdUnab.js +538 -0
  67. package/dist/channel-ZYCQj3hP.js +207 -0
  68. package/dist/channel-account-context-Baszl3_B.js +103 -0
  69. package/dist/channel-hlzhFHDl.js +497 -0
  70. package/dist/channel-options-PwBzYYtq.js +50 -0
  71. package/dist/channel-plugin-ids-TZIY4hFs.js +26 -0
  72. package/dist/channel-summary-CCEAV13o.js +111 -0
  73. package/dist/channel-tY2Hg5ac.js +542 -0
  74. package/dist/channel-vMWcWq1U.js +920 -0
  75. package/dist/channel.runtime-8qWgkCxX.js +404 -0
  76. package/dist/channel.runtime-C4jtgrbI.js +179 -0
  77. package/dist/channel.runtime-CJ4ug6Mp.js +127 -0
  78. package/dist/channel.runtime-ChKRJAZ8.js +4011 -0
  79. package/dist/channel.runtime-Cj54LYU-.js +418 -0
  80. package/dist/channel.runtime-KH06-bu1.js +870 -0
  81. package/dist/channel.runtime-_GYnBh2X.js +199 -0
  82. package/dist/channel.runtime-go7Pzt6N.js +241 -0
  83. package/dist/channel.runtime-iypIZ0EU.js +171 -0
  84. package/dist/channel.runtime-mukTWpon.js +182 -0
  85. package/dist/channel.runtime-oNtF1sc3.js +218 -0
  86. package/dist/channel.setup-BZfok6kX.js +11 -0
  87. package/dist/channel.setup-CbXfZ2dq.js +9 -0
  88. package/dist/channel.setup-CfyM55np.js +8 -0
  89. package/dist/channel.setup-CoG-gJ6n.js +9 -0
  90. package/dist/channel.setup-Cp4PH_rc.js +57 -0
  91. package/dist/channel.setup-V2w9Jk9j.js +6 -0
  92. package/dist/channel.setup-t7F5WZE7.js +8 -0
  93. package/dist/channels/plugins/actions/discord.d.ts +2 -2
  94. package/dist/channels/plugins/actions/discord.js +35 -35
  95. package/dist/channels/plugins/actions/signal.d.ts +1 -1
  96. package/dist/channels/plugins/actions/signal.js +35 -35
  97. package/dist/channels/plugins/actions/telegram.d.ts +2 -2
  98. package/dist/channels/plugins/actions/telegram.js +35 -35
  99. package/dist/channels/plugins/agent-tools/whatsapp-login.d.ts +3 -3
  100. package/dist/channels/plugins/agent-tools/whatsapp-login.js +35 -35
  101. package/dist/channels-H5ThmyG8.js +1118 -0
  102. package/dist/channels-cQ-6NFCQ.js +404 -0
  103. package/dist/channels-cli-TmchKLFS.js +291 -0
  104. package/dist/channels-status-issues-DXnkXEeJ.js +16 -0
  105. package/dist/clawbot-cli-Cpbxu8dD.js +118 -0
  106. package/dist/cleanup-utils-D0L17RsX.js +96 -0
  107. package/dist/cli/daemon-cli.js +1 -1
  108. package/dist/cli--2bGSKdX.js +154 -0
  109. package/dist/command-registry-BaVPDmwn.js +242 -0
  110. package/dist/command-registry-DhLyeSbO.js +14 -0
  111. package/dist/command-secret-gateway-C5D_-jb0.js +111 -0
  112. package/dist/compact.runtime-C9a0kRAg.js +116 -0
  113. package/dist/completion-cli-Bg95upyk.js +17 -0
  114. package/dist/completion-cli-CrPdlnCH.js +445 -0
  115. package/dist/config-BbvDRSYp.js +31 -0
  116. package/dist/config-CwBv71QC.js +44 -0
  117. package/dist/config-cli-jsZsYhAl.js +678 -0
  118. package/dist/config-guard-DTaXXqly.js +118 -0
  119. package/dist/config-validation-Q6U1sP84.js +262 -0
  120. package/dist/config-value-DT3-5958.js +132 -0
  121. package/dist/configure-BJfMiVej.js +1100 -0
  122. package/dist/configure-Cist3Iza.js +243 -0
  123. package/dist/control-ui-assets-C1YDYi82.js +232 -0
  124. package/dist/control-ui-shared-Dm5Dh0Lo.js +29 -0
  125. package/dist/core-BwKq3krw.js +150 -0
  126. package/dist/core-hjBwfDsW.d.ts +87 -0
  127. package/dist/cron-cli-Bktbk7iP.js +639 -0
  128. package/dist/daemon-cli-BXyH8DBL.js +339 -0
  129. package/dist/daemon-install-mxcGYsRJ.js +180 -0
  130. package/dist/deliver-BPYUKaSp.js +111 -0
  131. package/dist/deliver-runtime-CwnLQZTN.js +111 -0
  132. package/dist/device-id-cli-XvwZbIyC.js +52 -0
  133. package/dist/device-identity-IG5DngWM.js +365 -0
  134. package/dist/devices-cli-DIsxj4xp.js +342 -0
  135. package/dist/diagnostic-DTPopFvh.js +310 -0
  136. package/dist/directory-cli-D253m0er.js +311 -0
  137. package/dist/directory-config-helpers-DpFcAbmo.d.ts +38 -0
  138. package/dist/directory.static-BXv9MXqm.js +44 -0
  139. package/dist/discord-DwFf1qp7.js +114 -0
  140. package/dist/discovery-DzRM1wzK.js +48 -0
  141. package/dist/dm-policy-shared-DKoGdUpY.d.ts +95 -0
  142. package/dist/dns-cli-BJiz6CLK.js +217 -0
  143. package/dist/docs-cli-Dq2Yi5qO.js +174 -0
  144. package/dist/doctor-completion-BPl6HiiZ.js +90 -0
  145. package/dist/doctor-config-flow-BHR1Ayyh.js +2437 -0
  146. package/dist/doctor-config-flow-PXVtrfkE.js +112 -0
  147. package/dist/enable-Cyagpq3b.js +24 -0
  148. package/dist/entry.js +4 -4
  149. package/dist/exec-approvals-cli-kLAev6bP.js +421 -0
  150. package/dist/extensions/acpx/index.d.ts +1 -1
  151. package/dist/extensions/amazon-bedrock/index.d.ts +1 -1
  152. package/dist/extensions/amazon-bedrock/index.js +4 -4
  153. package/dist/extensions/anthropic/index.d.ts +1 -1
  154. package/dist/extensions/anthropic/index.js +35 -35
  155. package/dist/extensions/bluebubbles/index.d.ts +1 -1
  156. package/dist/extensions/bluebubbles/index.js +39 -39
  157. package/dist/extensions/bluebubbles/setup-entry.d.ts +2 -2
  158. package/dist/extensions/bluebubbles/setup-entry.js +39 -39
  159. package/dist/extensions/brave/index.d.ts +1 -1
  160. package/dist/extensions/brave/index.js +5 -5
  161. package/dist/extensions/byteplus/index.d.ts +1 -1
  162. package/dist/extensions/byteplus/index.js +35 -35
  163. package/dist/extensions/cloudflare-ai-gateway/index.d.ts +1 -1
  164. package/dist/extensions/cloudflare-ai-gateway/index.js +36 -36
  165. package/dist/extensions/copilot-proxy/index.d.ts +1 -1
  166. package/dist/extensions/copilot-proxy/index.js +4 -4
  167. package/dist/extensions/device-pair/index.d.ts +1 -1
  168. package/dist/extensions/device-pair/index.js +4 -4
  169. package/dist/extensions/diagnostics-otel/index.d.ts +1 -1
  170. package/dist/extensions/diagnostics-otel/index.js +4 -4
  171. package/dist/extensions/diffs/index.d.ts +1 -1
  172. package/dist/extensions/discord/index.d.ts +1 -1
  173. package/dist/extensions/discord/index.js +40 -40
  174. package/dist/extensions/discord/setup-entry.d.ts +1 -1
  175. package/dist/extensions/discord/setup-entry.js +38 -38
  176. package/dist/extensions/elevenlabs/index.d.ts +1 -1
  177. package/dist/extensions/elevenlabs/index.js +35 -35
  178. package/dist/extensions/feishu/index.d.ts +2 -2
  179. package/dist/extensions/feishu/index.js +40 -40
  180. package/dist/extensions/feishu/setup-entry.d.ts +2 -2
  181. package/dist/extensions/feishu/setup-entry.js +37 -37
  182. package/dist/extensions/firecrawl/index.d.ts +1 -1
  183. package/dist/extensions/firecrawl/index.js +35 -35
  184. package/dist/extensions/github-copilot/index.d.ts +1 -1
  185. package/dist/extensions/github-copilot/index.js +35 -35
  186. package/dist/extensions/google/index.d.ts +1 -1
  187. package/dist/extensions/google/index.js +35 -35
  188. package/dist/extensions/googlechat/index.d.ts +1 -1
  189. package/dist/extensions/googlechat/index.js +38 -38
  190. package/dist/extensions/googlechat/setup-entry.d.ts +1 -1
  191. package/dist/extensions/googlechat/setup-entry.js +38 -38
  192. package/dist/extensions/huggingface/index.d.ts +1 -1
  193. package/dist/extensions/huggingface/index.js +35 -35
  194. package/dist/extensions/imessage/index.d.ts +1 -1
  195. package/dist/extensions/imessage/index.js +39 -39
  196. package/dist/extensions/imessage/setup-entry.d.ts +1 -1
  197. package/dist/extensions/imessage/setup-entry.js +39 -39
  198. package/dist/extensions/irc/index.d.ts +1 -1
  199. package/dist/extensions/irc/index.js +38 -38
  200. package/dist/extensions/irc/setup-entry.d.ts +2 -2
  201. package/dist/extensions/irc/setup-entry.js +38 -38
  202. package/dist/extensions/kakao-talkchannel/index.d.ts +1 -1
  203. package/dist/extensions/kakao-talkchannel/index.js +4 -4
  204. package/dist/extensions/kilocode/index.d.ts +1 -1
  205. package/dist/extensions/kilocode/index.js +35 -35
  206. package/dist/extensions/kimi-coding/index.d.ts +1 -1
  207. package/dist/extensions/kimi-coding/index.js +35 -35
  208. package/dist/extensions/line/index.d.ts +1 -1
  209. package/dist/extensions/line/index.js +37 -37
  210. package/dist/extensions/line/setup-entry.d.ts +1 -1
  211. package/dist/extensions/line/setup-entry.js +37 -37
  212. package/dist/extensions/llm-task/index.d.ts +1 -1
  213. package/dist/extensions/llm-task/index.js +35 -35
  214. package/dist/extensions/lobster/index.d.ts +1 -1
  215. package/dist/extensions/lobster/index.js +4 -4
  216. package/dist/extensions/matrix/index.d.ts +1 -1
  217. package/dist/extensions/matrix/index.js +40 -40
  218. package/dist/extensions/matrix/setup-entry.d.ts +2 -2
  219. package/dist/extensions/matrix/setup-entry.js +40 -40
  220. package/dist/extensions/mattermost/index.d.ts +1 -1
  221. package/dist/extensions/mattermost/index.js +37 -37
  222. package/dist/extensions/mattermost/setup-entry.d.ts +2 -2
  223. package/dist/extensions/mattermost/setup-entry.js +37 -37
  224. package/dist/extensions/memory-core/index.d.ts +1 -1
  225. package/dist/extensions/memory-core/index.js +4 -4
  226. package/dist/extensions/memory-lancedb/index.d.ts +1 -1
  227. package/dist/extensions/memory-lancedb/index.js +4 -4
  228. package/dist/extensions/microsoft/index.d.ts +1 -1
  229. package/dist/extensions/microsoft/index.js +35 -35
  230. package/dist/extensions/minimax/index.d.ts +1 -1
  231. package/dist/extensions/minimax/index.js +35 -35
  232. package/dist/extensions/mistral/index.d.ts +1 -1
  233. package/dist/extensions/mistral/index.js +35 -35
  234. package/dist/extensions/modelstudio/index.d.ts +1 -1
  235. package/dist/extensions/modelstudio/index.js +35 -35
  236. package/dist/extensions/moonshot/index.d.ts +1 -1
  237. package/dist/extensions/moonshot/index.js +35 -35
  238. package/dist/extensions/msteams/index.d.ts +1 -1
  239. package/dist/extensions/msteams/index.js +40 -40
  240. package/dist/extensions/msteams/setup-entry.d.ts +1 -1
  241. package/dist/extensions/msteams/setup-entry.js +40 -40
  242. package/dist/extensions/nextcloud-talk/index.d.ts +1 -1
  243. package/dist/extensions/nextcloud-talk/index.js +37 -37
  244. package/dist/extensions/nextcloud-talk/setup-entry.d.ts +2 -2
  245. package/dist/extensions/nextcloud-talk/setup-entry.js +37 -37
  246. package/dist/extensions/nostr/index.d.ts +1 -1
  247. package/dist/extensions/nostr/index.js +37 -37
  248. package/dist/extensions/nostr/setup-entry.d.ts +1 -1
  249. package/dist/extensions/nostr/setup-entry.js +37 -37
  250. package/dist/extensions/nvidia/index.d.ts +1 -1
  251. package/dist/extensions/nvidia/index.js +4 -4
  252. package/dist/extensions/ollama/index.d.ts +1 -1
  253. package/dist/extensions/ollama/index.js +7 -7
  254. package/dist/extensions/open-prose/index.d.ts +1 -1
  255. package/dist/extensions/open-prose/index.js +4 -4
  256. package/dist/extensions/openai/index.d.ts +1 -1
  257. package/dist/extensions/openai/index.js +35 -35
  258. package/dist/extensions/opencode/index.d.ts +1 -1
  259. package/dist/extensions/opencode/index.js +35 -35
  260. package/dist/extensions/opencode-go/index.d.ts +1 -1
  261. package/dist/extensions/opencode-go/index.js +35 -35
  262. package/dist/extensions/openrouter/index.d.ts +1 -1
  263. package/dist/extensions/openrouter/index.js +35 -35
  264. package/dist/extensions/openshell/index.d.ts +1 -1
  265. package/dist/extensions/openshell/index.js +35 -35
  266. package/dist/extensions/perplexity/index.d.ts +1 -1
  267. package/dist/extensions/perplexity/index.js +5 -5
  268. package/dist/extensions/phone-control/index.d.ts +1 -1
  269. package/dist/extensions/phone-control/index.js +4 -4
  270. package/dist/extensions/qianfan/index.d.ts +1 -1
  271. package/dist/extensions/qianfan/index.js +35 -35
  272. package/dist/extensions/qwen-portal-auth/index.d.ts +1 -1
  273. package/dist/extensions/qwen-portal-auth/index.js +35 -35
  274. package/dist/extensions/sglang/index.d.ts +1 -1
  275. package/dist/extensions/sglang/index.js +35 -35
  276. package/dist/extensions/signal/index.d.ts +1 -1
  277. package/dist/extensions/signal/index.js +38 -38
  278. package/dist/extensions/signal/setup-entry.d.ts +1 -1
  279. package/dist/extensions/signal/setup-entry.js +38 -38
  280. package/dist/extensions/slack/index.d.ts +1 -1
  281. package/dist/extensions/slack/index.js +39 -39
  282. package/dist/extensions/slack/setup-entry.d.ts +1 -1
  283. package/dist/extensions/slack/setup-entry.js +38 -38
  284. package/dist/extensions/synology-chat/index.d.ts +1 -1
  285. package/dist/extensions/synology-chat/index.js +37 -37
  286. package/dist/extensions/synology-chat/setup-entry.d.ts +1 -1
  287. package/dist/extensions/synology-chat/setup-entry.js +37 -37
  288. package/dist/extensions/synthetic/index.d.ts +1 -1
  289. package/dist/extensions/synthetic/index.js +35 -35
  290. package/dist/extensions/talk-voice/index.d.ts +1 -1
  291. package/dist/extensions/talk-voice/index.js +35 -35
  292. package/dist/extensions/telegram/index.d.ts +1 -1
  293. package/dist/extensions/telegram/index.js +38 -38
  294. package/dist/extensions/telegram/setup-entry.d.ts +1 -1
  295. package/dist/extensions/telegram/setup-entry.js +37 -37
  296. package/dist/extensions/thread-ownership/index.d.ts +1 -1
  297. package/dist/extensions/thread-ownership/index.js +4 -4
  298. package/dist/extensions/tlon/index.d.ts +1 -1
  299. package/dist/extensions/tlon/index.js +37 -37
  300. package/dist/extensions/tlon/setup-entry.d.ts +1 -1
  301. package/dist/extensions/tlon/setup-entry.js +37 -37
  302. package/dist/extensions/together/index.d.ts +1 -1
  303. package/dist/extensions/together/index.js +35 -35
  304. package/dist/extensions/twitch/index.d.ts +2 -2
  305. package/dist/extensions/twitch/index.js +37 -37
  306. package/dist/extensions/venice/index.d.ts +1 -1
  307. package/dist/extensions/venice/index.js +35 -35
  308. package/dist/extensions/vercel-ai-gateway/index.d.ts +1 -1
  309. package/dist/extensions/vercel-ai-gateway/index.js +36 -36
  310. package/dist/extensions/vllm/index.d.ts +1 -1
  311. package/dist/extensions/vllm/index.js +35 -35
  312. package/dist/extensions/voice-call/index.d.ts +1 -1
  313. package/dist/extensions/voice-call/index.js +35 -35
  314. package/dist/extensions/volcengine/index.d.ts +1 -1
  315. package/dist/extensions/volcengine/index.js +35 -35
  316. package/dist/extensions/whatsapp/index.d.ts +1 -1
  317. package/dist/extensions/whatsapp/index.js +38 -38
  318. package/dist/extensions/whatsapp/setup-entry.d.ts +1 -1
  319. package/dist/extensions/whatsapp/setup-entry.js +38 -38
  320. package/dist/extensions/xai/index.d.ts +1 -1
  321. package/dist/extensions/xai/index.js +35 -35
  322. package/dist/extensions/xiaomi/index.d.ts +1 -1
  323. package/dist/extensions/xiaomi/index.js +35 -35
  324. package/dist/extensions/zai/index.d.ts +1 -1
  325. package/dist/extensions/zai/index.js +35 -35
  326. package/dist/extensions/zalo/index.d.ts +1 -1
  327. package/dist/extensions/zalo/index.js +39 -39
  328. package/dist/extensions/zalo/setup-entry.d.ts +1 -1
  329. package/dist/extensions/zalo/setup-entry.js +39 -39
  330. package/dist/extensions/zalouser/index.d.ts +1 -1
  331. package/dist/extensions/zalouser/index.js +40 -40
  332. package/dist/extensions/zalouser/setup-entry.d.ts +1 -1
  333. package/dist/extensions/zalouser/setup-entry.js +40 -40
  334. package/dist/feishu-fIcnHDTd.d.ts +36 -0
  335. package/dist/gateway-cli-DofujQf3.js +26437 -0
  336. package/dist/gateway-install-token-vvtOvufH.js +163 -0
  337. package/dist/gateway-rpc-C0Vk51W7.js +26 -0
  338. package/dist/gateway-runtime-CBm3CCoA.js +69 -0
  339. package/dist/git-commit-BTWXFY41.js +177 -0
  340. package/dist/git-commit-D6GTN5Yt.js +2 -0
  341. package/dist/googlechat-BvwsCVKl.d.ts +12 -0
  342. package/dist/googlechat-DzoFLiDG.js +307 -0
  343. package/dist/group-access-DpiQnd-G.d.ts +61 -0
  344. package/dist/health-CqUU_ecm.js +570 -0
  345. package/dist/health-Dzn8BT5I.js +113 -0
  346. package/dist/heartbeat-summary-Dct2lqJj.js +57 -0
  347. package/dist/help-CtwSApfq.js +81 -0
  348. package/dist/hooks-9gokOxZ5.d.ts +6 -0
  349. package/dist/hooks-cli-DtBvd1lb.js +1000 -0
  350. package/dist/hooks-status-Bm_pGORf.js +78 -0
  351. package/dist/http-registry-D-S6a1Na.d.ts +20 -0
  352. package/dist/identity-file-Diub2a0t.js +60 -0
  353. package/dist/image-generation-CbIVzmAR.d.ts +9 -0
  354. package/dist/imessage-C7Z59nbV.js +31 -0
  355. package/dist/imessage-scXvYYHX.js +115 -0
  356. package/dist/inbound-reply-dispatch-gzPJFtkc.js +71 -0
  357. package/dist/inbound-reply-dispatch-n7U3qg15.d.ts +72 -0
  358. package/dist/index.js +2 -2
  359. package/dist/install-target-B4n74f_B.js +574 -0
  360. package/dist/installs-e1WEcS2x.js +532 -0
  361. package/dist/io-BaBxjB1v.js +9739 -0
  362. package/dist/io-CgHb1Jld.js +29 -0
  363. package/dist/irc-DxJ7uOKl.js +672 -0
  364. package/dist/library-DjjiKiBC.js +112 -0
  365. package/dist/lifecycle-core-Dn8PK6nk.js +382 -0
  366. package/dist/line/accounts.d.ts +2 -2
  367. package/dist/line/send.d.ts +1 -1
  368. package/dist/line/send.js +7 -7
  369. package/dist/line/template-messages.d.ts +1 -1
  370. package/dist/line-B5QFpgN_.d.ts +75 -0
  371. package/dist/line-BBiBiGgL.js +530 -0
  372. package/dist/llm-slug-generator-BQ09Fz6D.js +67 -0
  373. package/dist/llm-slug-generator.d.ts +1 -1
  374. package/dist/llm-slug-generator.js +36 -36
  375. package/dist/logging-CdisccbY.js +13 -0
  376. package/dist/logging-LKQSgX1d.js +30 -0
  377. package/dist/login-qr-B2ElPfmb.js +112 -0
  378. package/dist/login-qr-Di3uPIK1.js +233 -0
  379. package/dist/logs-cli-CNzOvZ2d.js +256 -0
  380. package/dist/manager-runtime-2RwW64dE.js +111 -0
  381. package/dist/manager.runtime-BacHmSFL.js +715 -0
  382. package/dist/manifest-registry-CS_p1OBQ.js +1329 -0
  383. package/dist/matrix-43_RGLZN.d.ts +68 -0
  384. package/dist/matrix-6-xpfQHf.js +1269 -0
  385. package/dist/matrix-DKYdZvGK.js +1495 -0
  386. package/dist/mcp-cli-Ci2jvv3s.js +87 -0
  387. package/dist/media-understanding.runtime-0668UZMb.js +116 -0
  388. package/dist/memory-cli-BGfRJOPh.js +111 -0
  389. package/dist/memory-search-BHhETk6u.js +17 -0
  390. package/dist/memory-search-tTD5o_rU.js +204 -0
  391. package/dist/method-scopes-B2ZKSsxQ.js +2452 -0
  392. package/dist/model-auth-markers-LqZ4qhrZ.d.ts +20 -0
  393. package/dist/model-picker-D9Gmg9vM.js +390 -0
  394. package/dist/model-picker-VOam6Dfa.js +112 -0
  395. package/dist/model-picker.runtime-B8h4yaGk.js +125 -0
  396. package/dist/model-selection-bBBxfXdb.js +653 -0
  397. package/dist/model-suppression.runtime-IpdzuuaW.js +116 -0
  398. package/dist/models-CEr8OkSA.js +118 -0
  399. package/dist/models-FgjlnyvT.js +2514 -0
  400. package/dist/models-cli-CdXULEZe.js +309 -0
  401. package/dist/models-config-UQxq76ac.js +111 -0
  402. package/dist/models-config.providers.discovery-puxTsH39.d.ts +18 -0
  403. package/dist/moldclaw-root-Cb6HRlUO.js +92 -0
  404. package/dist/monitor-BGAB5pZp.js +772 -0
  405. package/dist/monitor-C_1qA4q5.js +6823 -0
  406. package/dist/monitor-D8WcCUuA.js +782 -0
  407. package/dist/monitor-DesGoihT.js +113 -0
  408. package/dist/monitor-DhrUY3U6.js +3468 -0
  409. package/dist/monitor-DsDCIG87.js +3076 -0
  410. package/dist/monitor-dBB-luY7.js +115 -0
  411. package/dist/monitor-shared-CkicpwVc.js +444 -0
  412. package/dist/msteams-qmY7xMCK.js +852 -0
  413. package/dist/node-cli-B_2nTm80.js +2503 -0
  414. package/dist/node-resolve-BYC2FbO2.js +835 -0
  415. package/dist/nodes-cli-CBX71Wd_.js +1380 -0
  416. package/dist/nostr-BFKRoOlz.d.ts +7 -0
  417. package/dist/nostr-OB78XVlq.js +8744 -0
  418. package/dist/npm-resolution-DZJB3Hgh.js +60 -0
  419. package/dist/oauth-env-CLG8KOrz.js +10 -0
  420. package/dist/onboard-BON0C360.js +48 -0
  421. package/dist/onboard-DsKI17iq.js +25 -0
  422. package/dist/onboard-DyBwXVGT.js +589 -0
  423. package/dist/onboard-channels-BaVA02kK.js +1241 -0
  424. package/dist/onboard-channels-JJVMXpKl.js +205 -0
  425. package/dist/onboard-custom-D6YDrk9n.js +571 -0
  426. package/dist/onboard-custom-DqsNalL1.js +114 -0
  427. package/dist/onboard-helpers-DiSRTpZC.js +335 -0
  428. package/dist/onboard-helpers-DqZsjdb8.js +113 -0
  429. package/dist/onboard-hooks-pzEPZAvl.js +72 -0
  430. package/dist/onboard-remote-DFMLELsg.js +181 -0
  431. package/dist/onboard-remote-DmMYxY80.js +117 -0
  432. package/dist/onboard-search-B7FsNd7m.js +302 -0
  433. package/dist/onboard-skills-BJRdI-K3.js +133 -0
  434. package/dist/onboard-skills-Cg1YQAZa.js +117 -0
  435. package/dist/outbound-media-BHD4aJEX.d.ts +11 -0
  436. package/dist/outbound-media-CrraEXXv.js +11 -0
  437. package/dist/pairing-access-CzHpaM0R.d.ts +21 -0
  438. package/dist/pairing-cli-DSQTYgc0.js +217 -0
  439. package/dist/perplexity-CXwMDD3u.js +24 -0
  440. package/dist/persistent-dedupe-B9vrAf8t.d.ts +26 -0
  441. package/dist/pi-model-discovery-runtime-vSSbBDFG.js +111 -0
  442. package/dist/pi-tools.before-tool-call.runtime-C5yLUogH.js +381 -0
  443. package/dist/plugin-install-B1RfdrdV.js +117 -0
  444. package/dist/plugin-install-C9aaL42Y.js +184 -0
  445. package/dist/plugin-install-plan-BlfDt117.js +49 -0
  446. package/dist/plugin-registry-D2P9SYJ9.js +113 -0
  447. package/dist/plugin-registry-QtjVXmj3.js +49 -0
  448. package/dist/plugin-sdk/account-resolution.js +35 -35
  449. package/dist/plugin-sdk/acp-runtime.js +35 -35
  450. package/dist/plugin-sdk/agent-runtime.js +35 -35
  451. package/dist/plugin-sdk/bluebubbles.js +37 -37
  452. package/dist/plugin-sdk/channel-config-helpers.js +35 -35
  453. package/dist/plugin-sdk/channel-policy.js +35 -35
  454. package/dist/plugin-sdk/channel-runtime.js +35 -35
  455. package/dist/plugin-sdk/compat.js +36 -36
  456. package/dist/plugin-sdk/config-runtime.js +35 -35
  457. package/dist/plugin-sdk/conversation-runtime.js +35 -35
  458. package/dist/plugin-sdk/copilot-proxy.js +4 -4
  459. package/dist/plugin-sdk/core.js +4 -4
  460. package/dist/plugin-sdk/device-pair.js +4 -4
  461. package/dist/plugin-sdk/discord.js +35 -35
  462. package/dist/plugin-sdk/feishu.js +35 -35
  463. package/dist/plugin-sdk/gateway-runtime.js +10 -10
  464. package/dist/plugin-sdk/googlechat.js +37 -37
  465. package/dist/plugin-sdk/image-generation-runtime.js +35 -35
  466. package/dist/plugin-sdk/image-generation.js +35 -35
  467. package/dist/plugin-sdk/imessage.js +36 -36
  468. package/dist/plugin-sdk/index.js +35 -35
  469. package/dist/plugin-sdk/infra-runtime.js +35 -35
  470. package/dist/plugin-sdk/irc.js +37 -37
  471. package/dist/plugin-sdk/line.js +36 -36
  472. package/dist/plugin-sdk/llm-task.js +35 -35
  473. package/dist/plugin-sdk/lobster.js +4 -4
  474. package/dist/plugin-sdk/matrix.js +37 -37
  475. package/dist/plugin-sdk/mattermost.js +36 -36
  476. package/dist/plugin-sdk/media-runtime.js +35 -35
  477. package/dist/plugin-sdk/media-understanding-runtime.js +35 -35
  478. package/dist/plugin-sdk/media-understanding.js +35 -35
  479. package/dist/plugin-sdk/memory-lancedb.js +4 -4
  480. package/dist/plugin-sdk/minimax-portal-auth.js +4 -4
  481. package/dist/plugin-sdk/msteams.js +38 -38
  482. package/dist/plugin-sdk/nextcloud-talk.js +36 -36
  483. package/dist/plugin-sdk/nostr.js +36 -36
  484. package/dist/plugin-sdk/ollama-setup.js +9 -9
  485. package/dist/plugin-sdk/open-prose.js +4 -4
  486. package/dist/plugin-sdk/phone-control.js +4 -4
  487. package/dist/plugin-sdk/plugin-runtime.js +35 -35
  488. package/dist/plugin-sdk/provider-auth.js +35 -35
  489. package/dist/plugin-sdk/provider-models.js +5 -5
  490. package/dist/plugin-sdk/provider-onboard.js +4 -4
  491. package/dist/plugin-sdk/provider-setup.js +39 -39
  492. package/dist/plugin-sdk/provider-stream.js +4 -4
  493. package/dist/plugin-sdk/provider-usage.js +4 -4
  494. package/dist/plugin-sdk/qwen-portal-auth.js +35 -35
  495. package/dist/plugin-sdk/reply-history.js +35 -35
  496. package/dist/plugin-sdk/reply-runtime.js +35 -35
  497. package/dist/plugin-sdk/routing.js +3 -3
  498. package/dist/plugin-sdk/sandbox.js +35 -35
  499. package/dist/plugin-sdk/security-runtime.js +35 -35
  500. package/dist/plugin-sdk/self-hosted-provider-setup.js +37 -37
  501. package/dist/plugin-sdk/setup.js +35 -35
  502. package/dist/plugin-sdk/signal.js +35 -35
  503. package/dist/plugin-sdk/slack.js +35 -35
  504. package/dist/plugin-sdk/speech-runtime.js +35 -35
  505. package/dist/plugin-sdk/speech.js +35 -35
  506. package/dist/plugin-sdk/src/secrets/secure-file-store.d.ts +26 -0
  507. package/dist/plugin-sdk/src/subscription/provider.d.ts +5 -3
  508. package/dist/plugin-sdk/synology-chat.js +36 -36
  509. package/dist/plugin-sdk/talk-voice.js +4 -4
  510. package/dist/plugin-sdk/telegram.js +35 -35
  511. package/dist/plugin-sdk/text-runtime.js +7 -7
  512. package/dist/plugin-sdk/thread-ownership.js +4 -4
  513. package/dist/plugin-sdk/tlon.js +36 -36
  514. package/dist/plugin-sdk/twitch.js +35 -35
  515. package/dist/plugin-sdk/voice-call.js +35 -35
  516. package/dist/plugin-sdk/whatsapp.js +35 -35
  517. package/dist/plugin-sdk/zalo.js +38 -38
  518. package/dist/plugin-sdk/zalouser.js +38 -38
  519. package/dist/plugins/runtime/index.d.ts +1 -1
  520. package/dist/plugins/runtime/index.js +35 -35
  521. package/dist/plugins-CAULK-lt.js +111 -0
  522. package/dist/plugins-cli-BGAgYy3Z.js +917 -0
  523. package/dist/policy-WKZJ8cPK.js +143 -0
  524. package/dist/preflight-audio.runtime-Bc6Hv-u4.js +116 -0
  525. package/dist/probe-B7a_VBCB.js +47 -0
  526. package/dist/probe-BLioBOhT.js +6329 -0
  527. package/dist/probe-BkM5pykD.js +21 -0
  528. package/dist/probe-DOEaWez2.js +1793 -0
  529. package/dist/probe-DpcJ0WeP.js +129 -0
  530. package/dist/probe-auth-BcNjX8hy.js +40 -0
  531. package/dist/probe-auth-DhuAb8ls.js +48 -0
  532. package/dist/program-zG0CuBsn.js +253 -0
  533. package/dist/prompt-select-styled-B-D6NQFO.js +2673 -0
  534. package/dist/provider-api-key-auth.runtime-DgGM_pHf.js +121 -0
  535. package/dist/provider-auth-choice-BOQA0idb.js +126 -0
  536. package/dist/provider-auth-choice-helpers-hzDkh3f1.js +48 -0
  537. package/dist/provider-auth-choice-preference-BPcuoO9b.js +189 -0
  538. package/dist/provider-auth-choice.runtime-B4E0A4J8.js +123 -0
  539. package/dist/provider-auth-choices-0KaDNPBQ.js +57 -0
  540. package/dist/provider-auth-guidance-BxxMxMEt.js +34 -0
  541. package/dist/provider-auth-result-Bto1bYtS.d.ts +18 -0
  542. package/dist/provider-models-DxOmeToO.d.ts +867 -0
  543. package/dist/provider-models-xnyxy6mO.js +2113 -0
  544. package/dist/provider-ollama-setup-DBYK__ov.d.ts +32 -0
  545. package/dist/provider-ollama-setup-QzgCxj44.js +314 -0
  546. package/dist/provider-onboard-B9ionepI.js +139 -0
  547. package/dist/provider-onboard-CURxJ_UX.d.ts +40 -0
  548. package/dist/provider-runtime.runtime-DFAIaPZT.js +111 -0
  549. package/dist/provider-self-hosted-setup-CclMg3QB.js +182 -0
  550. package/dist/provider-self-hosted-setup-qeY8BYSy.d.ts +61 -0
  551. package/dist/provider-stream-Chz_EFw3.js +512 -0
  552. package/dist/provider-usage-Cn_OrdMP.js +111 -0
  553. package/dist/provider-usage-kxemdMp2.js +633 -0
  554. package/dist/provider-wizard-BMc1Dzks.js +152 -0
  555. package/dist/push-apns-CuIs_G0k.js +1038 -0
  556. package/dist/pw-ai-DUe4BbH2.js +1867 -0
  557. package/dist/qmd-manager-CAAFp7qK.js +1570 -0
  558. package/dist/qr-cli-9H9go9JE.js +113 -0
  559. package/dist/qr-cli-Bxxttvx3.js +369 -0
  560. package/dist/reactions-Dx2ypGlm.js +281 -0
  561. package/dist/read-only-account-inspect.discord.runtime-D_RVd1-r.js +116 -0
  562. package/dist/read-only-account-inspect.slack.runtime-Ckl92Rhy.js +116 -0
  563. package/dist/read-only-account-inspect.telegram.runtime-D97ssjQk.js +116 -0
  564. package/dist/redact-snapshot-ojhTflxp.js +2663 -0
  565. package/dist/register.agent-DlBmy_RL.js +439 -0
  566. package/dist/register.backup-8nOYtJqg.js +625 -0
  567. package/dist/register.configure-BV_GUQ5w.js +252 -0
  568. package/dist/register.maintenance-BafAHBum.js +574 -0
  569. package/dist/register.message-CHhfcEq2.js +709 -0
  570. package/dist/register.onboard-DjPNnlnr.js +192 -0
  571. package/dist/register.setup-BMGXI9PG.js +212 -0
  572. package/dist/register.status-health-sessions-BJMsh2AL.js +498 -0
  573. package/dist/register.subclis-B7nrik3-.js +315 -0
  574. package/dist/register.subclis-BCoAVyGn.js +13 -0
  575. package/dist/replies-BU4AvOyD.js +110 -0
  576. package/dist/resolve-channels-CDfj5NGq.js +226 -0
  577. package/dist/resolve-channels-Cz120Lvf.js +262 -0
  578. package/dist/resolve-route-DdX-HBVt.js +538 -0
  579. package/dist/resolve-users-Bc6nRqpb.js +143 -0
  580. package/dist/root-help-QAkoA7GD.js +32 -0
  581. package/dist/routes-CcJNnwTF.js +7097 -0
  582. package/dist/rpc-DDUAlBbH.js +67 -0
  583. package/dist/run-main-Cf8vXm6i.js +424 -0
  584. package/dist/runtime-Bitmi8Er.d.ts +26 -0
  585. package/dist/runtime-discord-ops.runtime-DWBnG-Hf.js +9078 -0
  586. package/dist/runtime-slack-ops.runtime-oYfbYvX4.js +4556 -0
  587. package/dist/runtime-telegram-ops.runtime-EPGDYN1f.js +133 -0
  588. package/dist/runtime-whatsapp-login.runtime-BGJoKM2h.js +114 -0
  589. package/dist/runtime-whatsapp-outbound.runtime-D3Sag6Bv.js +117 -0
  590. package/dist/sandbox-cli-waaYyhsC.js +535 -0
  591. package/dist/search-manager-BjDsOXzB.js +16 -0
  592. package/dist/search-manager-D-G9UaXe.js +386 -0
  593. package/dist/secrets-cli-BmeEhlzt.js +2070 -0
  594. package/dist/security-cli-CSsLnFuN.js +575 -0
  595. package/dist/send-6o7piqfv.js +100 -0
  596. package/dist/send-99FyFLgk.js +629 -0
  597. package/dist/send-B1pX9_Oc.js +283 -0
  598. package/dist/send-Dg5-AjXW.js +1025 -0
  599. package/dist/send-LdV9TRoN.js +631 -0
  600. package/dist/server-node-events-BAUUKNFW.js +506 -0
  601. package/dist/server-zI_K-D05.js +107 -0
  602. package/dist/sessions-DJGywtY2.js +112 -0
  603. package/dist/sessions-WR0GKdGl.js +218 -0
  604. package/dist/setup-2LvBON2J.js +387 -0
  605. package/dist/setup-CFIMq-Pz.d.ts +37 -0
  606. package/dist/setup-binary-CcAv8NXz.js +406 -0
  607. package/dist/setup-browser-C4eRV3h6.js +70 -0
  608. package/dist/setup-core-ByqF8Nvc.js +166 -0
  609. package/dist/setup-core-COkq8Zop.js +205 -0
  610. package/dist/setup-core-C_o77DVV.js +143 -0
  611. package/dist/setup-core-tAdHbqi9.js +47 -0
  612. package/dist/setup-surface-DMHtZByF.js +490 -0
  613. package/dist/setup-wizard-helpers-r0J6l8ST.d.ts +203 -0
  614. package/dist/setup.finalize-pTkXn8pV.js +522 -0
  615. package/dist/setup.gateway-config-D1wiUQe6.js +343 -0
  616. package/dist/shared-BaM_tMxk.js +102 -0
  617. package/dist/shared-BgUgXsM9.js +75 -0
  618. package/dist/shared-CezRuVfl.js +96 -0
  619. package/dist/shared-DQgf3R0B.js +298 -0
  620. package/dist/shared-RA6kxQfu.js +182 -0
  621. package/dist/signal-xxP4dGx7.js +114 -0
  622. package/dist/skills-Bio8GwTE.js +20 -0
  623. package/dist/skills-DE_MXFSN.js +853 -0
  624. package/dist/skills-cli-BGuW-tKw.js +292 -0
  625. package/dist/skills-install-BIlG41ei.js +763 -0
  626. package/dist/skills-status-B08PtBc_.js +21 -0
  627. package/dist/skills-status-CzM008aB.js +169 -0
  628. package/dist/slack-Bzt3M7d8.js +114 -0
  629. package/dist/slash-commands.runtime-EYqj8SbV.js +128 -0
  630. package/dist/slash-dispatch.runtime-vWH92PUY.js +141 -0
  631. package/dist/slash-skill-commands.runtime-sUTjM3J0.js +116 -0
  632. package/dist/src-Iso9-DPo.js +1701 -0
  633. package/dist/status-8S882KRO.js +43 -0
  634. package/dist/status-BF7h_jTB.js +126 -0
  635. package/dist/status-DxOIyRm9.js +131 -0
  636. package/dist/status-HlvixAOq.js +606 -0
  637. package/dist/status-json-CShBo8A6.js +288 -0
  638. package/dist/status-qhtgsJFd.js +1599 -0
  639. package/dist/status.link-channel-D3dLYZiH.js +143 -0
  640. package/dist/status.scan.deps.runtime-mCmOLzpG.js +126 -0
  641. package/dist/status.scan.runtime-CYuUlDeg.js +119 -0
  642. package/dist/status.summary-BjB1aTjV.js +592 -0
  643. package/dist/status.summary.runtime-DW4MOt1Z.js +118 -0
  644. package/dist/status.update-BxblMS7P.js +77 -0
  645. package/dist/subagent-orphan-recovery-CCVopsdP.js +307 -0
  646. package/dist/subagent-registry-runtime-oG47Fzvg.js +111 -0
  647. package/dist/subscription-CpFdxuFS.js +33 -0
  648. package/dist/subscription-DaA1urx-.js +102 -0
  649. package/dist/subscription-cli-Bvto9EmO.js +134 -0
  650. package/dist/synology-chat-CVy1tJGY.js +297 -0
  651. package/dist/system-cli-BvNps8sl.js +94 -0
  652. package/dist/telegram/audit.d.ts +1 -1
  653. package/dist/telegram/audit.js +1 -1
  654. package/dist/telegram/token.d.ts +1 -1
  655. package/dist/telegram/token.js +35 -35
  656. package/dist/telegram-Dug8pd82.js +114 -0
  657. package/dist/text-chunking-CQ6ttpWs.js +84 -0
  658. package/dist/text-chunking-DDUU_vAF.d.ts +79 -0
  659. package/dist/tlon-BnckVr_7.js +433 -0
  660. package/dist/tui-DXTge9Ac.js +3834 -0
  661. package/dist/tui-cli-BRUfLUTd.js +137 -0
  662. package/dist/types-2H_e7eWT.d.ts +45 -0
  663. package/dist/types-ZKnGUchG.d.ts +22692 -0
  664. package/dist/types.base-BFiQZ4J9.d.ts +188 -0
  665. package/dist/ui--iP08xRA.js +31 -0
  666. package/dist/update-CtxBD-Cf.js +1036 -0
  667. package/dist/update-cli-DPE3GCHJ.js +1503 -0
  668. package/dist/update-offset-store-BlBY7dWj.js +112 -0
  669. package/dist/update-runner-Cfcrhf2j.js +1496 -0
  670. package/dist/upsert-with-lock-BZU7Le8n.js +33 -0
  671. package/dist/usage-Czgwvg0h.js +115 -0
  672. package/dist/web-BGDXhunB.js +112 -0
  673. package/dist/web-shared-B5Q0mIJq.d.ts +45 -0
  674. package/dist/webhook-request-guards-CsKDhZJr.d.ts +76 -0
  675. package/dist/webhook-targets-CjxuEE9C.d.ts +106 -0
  676. package/dist/webhook-targets-Dtt6rH4N.js +181 -0
  677. package/dist/webhooks-cli-Wl9y6AWW.js +350 -0
  678. package/dist/whatsapp-D64cBQ_9.js +114 -0
  679. package/dist/whatsapp-actions-CVoTcagb.js +167 -0
  680. package/dist/workspace-DJ_S272u.js +484 -0
  681. package/dist/workspace-DbZSqjw0.js +289 -0
  682. package/dist/workspace-cli-D93DLmAh.js +154 -0
  683. package/dist/workspace-dirs-CGeIPpGN.js +2003 -0
  684. package/dist/zalo-CK2dlGmu.d.ts +9 -0
  685. package/dist/zalo-DxoY8M22.js +415 -0
  686. package/dist/zalouser-DTHIrPvs.js +30911 -0
  687. package/extensions/discord/src/monitor/allow-list.ts +8 -1
  688. package/extensions/discord/src/monitor/message-handler.preflight.ts +4 -1
  689. package/package.json +1 -1
  690. package/dist/accounts-CS8U4v8C.js +0 -114
  691. package/dist/accounts-gLr-Udmt.d.ts +0 -103
  692. package/dist/acp-cli-BGT0jXcC.js +0 -2093
  693. package/dist/actions.runtime-BfckTw6c.js +0 -119
  694. package/dist/actions.runtime-Cl9mBfqH.js +0 -133
  695. package/dist/agent-scope-C-YmLnnb.js +0 -208
  696. package/dist/agents-CydD54p8.js +0 -222
  697. package/dist/agents-DpQsZO6O.js +0 -853
  698. package/dist/agents.config-XU7IsYE-.js +0 -121
  699. package/dist/agents.config-ssoQXuvF.js +0 -17
  700. package/dist/allow-list-Cfn6lmMK.js +0 -81
  701. package/dist/allowlist-CCYXVpM9.js +0 -142
  702. package/dist/api-BoXoFKxy.js +0 -117
  703. package/dist/audit-Bv05N5o9.js +0 -787
  704. package/dist/audit-CIWW1Aqm.js +0 -54
  705. package/dist/audit-channel.collect.runtime-Bi7yrdcO.js +0 -605
  706. package/dist/audit-channel.runtime-C_NDweiW.js +0 -121
  707. package/dist/audit-extra.async-Dp7OKSXg.js +0 -813
  708. package/dist/audit-membership-runtime-B8FQ6VtN.js +0 -162
  709. package/dist/audit.deep.runtime-CXhobL6b.js +0 -25
  710. package/dist/audit.nondeep.runtime-CrEm3T16.js +0 -832
  711. package/dist/audit.runtime-CJPKj1Zg.js +0 -118
  712. package/dist/auth-Byfp0flq.js +0 -101
  713. package/dist/auth-choice-BgOjdeXN.js +0 -507
  714. package/dist/auth-choice-CD1Heq0M.js +0 -122
  715. package/dist/auth-choice-ePNfg0iQ.js +0 -268
  716. package/dist/auth-choice-options-BlewQWI0.js +0 -123
  717. package/dist/auth-choice-prompt-BP2b6aXz.js +0 -36
  718. package/dist/auth-choice-prompt-Cmwl4n97.js +0 -115
  719. package/dist/auth-choice.apply-helpers-Dq-nxuuX.js +0 -66
  720. package/dist/auth-choice.plugin-providers.runtime-B23kOUzQ.js +0 -119
  721. package/dist/auth-profiles-1kPLbBwI.js +0 -127823
  722. package/dist/auth-profiles.runtime-DAfSjku1.js +0 -116
  723. package/dist/banner-DeOsobLO.js +0 -342
  724. package/dist/bluebubbles-BsLGedBM.js +0 -64
  725. package/dist/bluebubbles-U2sAfO4_.d.ts +0 -6
  726. package/dist/bot-DW12K3bO.d.ts +0 -478
  727. package/dist/brave-BoWimrLe.js +0 -24
  728. package/dist/browser-cli-D_S3wEYE.js +0 -1494
  729. package/dist/call-ByEzDJ1_.js +0 -640
  730. package/dist/call-CHCWVg-O.js +0 -39
  731. package/dist/channel-3VC0oOMu.js +0 -214
  732. package/dist/channel-B9fCBPiS.js +0 -207
  733. package/dist/channel-B9q775cM.js +0 -562
  734. package/dist/channel-BG3UK54j.js +0 -803
  735. package/dist/channel-BRQAdMML.js +0 -352
  736. package/dist/channel-BmlLp933.js +0 -1321
  737. package/dist/channel-By6KvdTG.js +0 -920
  738. package/dist/channel-C8rRsdf6.js +0 -226
  739. package/dist/channel-CLEDBbXE.js +0 -943
  740. package/dist/channel-CMvBAG7o.js +0 -306
  741. package/dist/channel-CmlxxjHY.js +0 -1598
  742. package/dist/channel-CqG6_xN0.js +0 -949
  743. package/dist/channel-DNueHKs92.js +0 -316
  744. package/dist/channel-DUtyN7BX.js +0 -4681
  745. package/dist/channel-DWD6GrfZ.js +0 -538
  746. package/dist/channel-DaRYMYzj.js +0 -619
  747. package/dist/channel-Dj6BgLp8.js +0 -575
  748. package/dist/channel-account-context-Ba3u5D21.js +0 -103
  749. package/dist/channel-crabk6Em.js +0 -542
  750. package/dist/channel-i8uqQaK2.js +0 -497
  751. package/dist/channel-options-xljvwHS2.js +0 -50
  752. package/dist/channel-plugin-ids-DAgknSG4.js +0 -26
  753. package/dist/channel-summary-dHTMCG75.js +0 -111
  754. package/dist/channel-xVWQ96Ni.js +0 -397
  755. package/dist/channel.runtime-B6PoZ4BV.js +0 -182
  756. package/dist/channel.runtime-BPZmo57e.js +0 -404
  757. package/dist/channel.runtime-B_1uGR-U.js +0 -199
  758. package/dist/channel.runtime-BiXnPU0d.js +0 -218
  759. package/dist/channel.runtime-BpvDc9sv.js +0 -870
  760. package/dist/channel.runtime-CUua3W80.js +0 -418
  761. package/dist/channel.runtime-CaCBTd0A.js +0 -179
  762. package/dist/channel.runtime-D0FfYvUj.js +0 -4011
  763. package/dist/channel.runtime-DhoJtpvJ.js +0 -241
  764. package/dist/channel.runtime-Kj9EXNE0.js +0 -127
  765. package/dist/channel.runtime-r4tPuPyh.js +0 -171
  766. package/dist/channel.setup-B7d_grfe.js +0 -6
  767. package/dist/channel.setup-C0vu1fhi.js +0 -9
  768. package/dist/channel.setup-CAI0FNHj.js +0 -11
  769. package/dist/channel.setup-CkDVwv5R.js +0 -57
  770. package/dist/channel.setup-Cpd00YqQ.js +0 -8
  771. package/dist/channel.setup-DbBz1-WT.js +0 -9
  772. package/dist/channel.setup-GZnAvD9g.js +0 -8
  773. package/dist/channels-5H484RSw.js +0 -1118
  774. package/dist/channels-BnPudfyx.js +0 -404
  775. package/dist/channels-cli-WIC-QeH_.js +0 -291
  776. package/dist/channels-status-issues-RDmzovJU.js +0 -16
  777. package/dist/clawbot-cli-BgutNwf8.js +0 -118
  778. package/dist/cleanup-utils-DBl1Aij1.js +0 -96
  779. package/dist/cli-1P7u6zqu.js +0 -154
  780. package/dist/command-registry-B8jovrws.js +0 -232
  781. package/dist/command-registry-DtDl1FVm.js +0 -14
  782. package/dist/command-secret-gateway-BgUo3FxJ.js +0 -111
  783. package/dist/compact.runtime-CXbXM0AU.js +0 -116
  784. package/dist/completion-cli-Cik_owAE.js +0 -17
  785. package/dist/completion-cli-RU3P2RSl.js +0 -445
  786. package/dist/config-5HUpB1L1.js +0 -31
  787. package/dist/config-cli-QHaUHoZI.js +0 -433
  788. package/dist/config-guard-C9Sn3pE-.js +0 -118
  789. package/dist/config-sW57gztj.js +0 -44
  790. package/dist/config-validation-5LkjIKNt.js +0 -262
  791. package/dist/config-value-CtTWALxG.js +0 -132
  792. package/dist/configure-BmR2TPLf.js +0 -243
  793. package/dist/configure-DaLN-5xM.js +0 -1100
  794. package/dist/control-ui-assets-CH3MYmAo.js +0 -232
  795. package/dist/control-ui-shared-CA77PTml.js +0 -29
  796. package/dist/core-CvDzLs7B.js +0 -150
  797. package/dist/core-dPA4nFkn.d.ts +0 -87
  798. package/dist/cron-cli-tguLpzyq.js +0 -639
  799. package/dist/daemon-cli-ptosOkL8.js +0 -339
  800. package/dist/daemon-install-DzU4EnVa.js +0 -180
  801. package/dist/deliver-DwxFoHM3.js +0 -111
  802. package/dist/deliver-runtime-DOdDyaPI.js +0 -111
  803. package/dist/device-id-cli-GopvlxxZ.js +0 -52
  804. package/dist/device-identity-CRfhC3_s.js +0 -365
  805. package/dist/devices-cli-ain7ESqU.js +0 -342
  806. package/dist/diagnostic-D96Xaqrj.js +0 -310
  807. package/dist/directory-cli-fh1UxGgY.js +0 -311
  808. package/dist/directory-config-helpers-CpU1oflo.d.ts +0 -38
  809. package/dist/directory.static-CKjJUNGl.js +0 -44
  810. package/dist/discord-CflhwDEM.js +0 -114
  811. package/dist/discovery-x0ZqY4AB.js +0 -48
  812. package/dist/dm-policy-shared-73A52W6E.d.ts +0 -95
  813. package/dist/dns-cli-DCHyKjGf.js +0 -217
  814. package/dist/docs-cli-D3OoqYSP.js +0 -174
  815. package/dist/doctor-completion-Bq2eP87s.js +0 -90
  816. package/dist/doctor-config-flow-D8XRG9Ku.js +0 -2437
  817. package/dist/doctor-config-flow-DGiF1HGc.js +0 -112
  818. package/dist/enable-0QSF4YGH.js +0 -24
  819. package/dist/exec-approvals-cli-Bncym0Gd.js +0 -421
  820. package/dist/feishu-B5JDcyF9.d.ts +0 -36
  821. package/dist/gateway-cli-DYscsmA-.js +0 -26437
  822. package/dist/gateway-install-token-CNv17ac9.js +0 -163
  823. package/dist/gateway-rpc-BGC1Rxvg.js +0 -26
  824. package/dist/gateway-runtime-D89mSQPB.js +0 -69
  825. package/dist/git-commit-CeLH5Ozm.js +0 -2
  826. package/dist/git-commit-DUKRiCP-.js +0 -177
  827. package/dist/googlechat-BgXeXjd1.js +0 -307
  828. package/dist/googlechat-De-T7C31.d.ts +0 -12
  829. package/dist/group-access-Deh1tVNr.d.ts +0 -61
  830. package/dist/health-BEjzWwaB.js +0 -570
  831. package/dist/health-FjqrWQL6.js +0 -113
  832. package/dist/heartbeat-summary-CfdSA9M1.js +0 -57
  833. package/dist/help-BZeVprq1.js +0 -81
  834. package/dist/hooks-B5pYs_d7.d.ts +0 -6
  835. package/dist/hooks-cli-B7uGJs2O.js +0 -1000
  836. package/dist/hooks-status-CfceaUSg.js +0 -78
  837. package/dist/http-registry-C-KXqwnj.d.ts +0 -20
  838. package/dist/identity-file-sshkKKIr.js +0 -60
  839. package/dist/image-generation-CafM5hZh.d.ts +0 -9
  840. package/dist/imessage-BcV3WGx_.js +0 -31
  841. package/dist/imessage-Dhje7Ty-.js +0 -115
  842. package/dist/inbound-reply-dispatch-C73_7SOl.js +0 -71
  843. package/dist/inbound-reply-dispatch-DmL0KWLe.d.ts +0 -72
  844. package/dist/install-target-D7NRhfzc.js +0 -574
  845. package/dist/installs-Bj6jblqc.js +0 -532
  846. package/dist/io-CMfWWPXQ.js +0 -9738
  847. package/dist/io-CV844hAM.js +0 -29
  848. package/dist/irc-DKi1fDYI.js +0 -672
  849. package/dist/library-rygTG3oA.js +0 -112
  850. package/dist/lifecycle-core-BPlvShWY.js +0 -382
  851. package/dist/line-CGsemKWJ.js +0 -530
  852. package/dist/line-CKU3ER-n.d.ts +0 -75
  853. package/dist/llm-slug-generator-DlhVyMqT.js +0 -67
  854. package/dist/logging-5wu9k6w4.js +0 -30
  855. package/dist/logging-CxP9suT8.js +0 -13
  856. package/dist/login-qr-BcDsiwHs.js +0 -233
  857. package/dist/login-qr-Y8pJ5yV4.js +0 -112
  858. package/dist/logs-cli-XI9oVXpH.js +0 -256
  859. package/dist/manager-runtime-DkIlXBhD.js +0 -111
  860. package/dist/manager.runtime-Q0q2rJCC.js +0 -715
  861. package/dist/manifest-registry-DAd0SRAP.js +0 -1329
  862. package/dist/matrix-BI0DBBrG.js +0 -1495
  863. package/dist/matrix-DiABGjJR.js +0 -1269
  864. package/dist/matrix-fC6NrFM5.d.ts +0 -68
  865. package/dist/mcp-cli-BOyn_DLL.js +0 -87
  866. package/dist/media-understanding.runtime-DjUa7Dka.js +0 -116
  867. package/dist/memory-cli-CJd_vl-Y.js +0 -111
  868. package/dist/memory-search-CEEItIFR.js +0 -17
  869. package/dist/memory-search-Cv1SBrn7.js +0 -204
  870. package/dist/method-scopes-CQE7-bZ-.js +0 -2452
  871. package/dist/model-auth-markers-B1bbs9Qd.d.ts +0 -20
  872. package/dist/model-picker-D6_89XHg.js +0 -112
  873. package/dist/model-picker-Svaw-APs.js +0 -390
  874. package/dist/model-picker.runtime-Chi9nV7A.js +0 -125
  875. package/dist/model-selection-hL8i1Jbs.js +0 -653
  876. package/dist/model-suppression.runtime-DjWJZ0X-.js +0 -116
  877. package/dist/models-7qj1dG_W.js +0 -118
  878. package/dist/models-BPOB_xJF.js +0 -2514
  879. package/dist/models-cli-DdlOVUjS.js +0 -309
  880. package/dist/models-config-CBqUS-jX.js +0 -111
  881. package/dist/models-config.providers.discovery-BKB5JH9M.d.ts +0 -18
  882. package/dist/moldclaw-root-D6PbhbZk.js +0 -88
  883. package/dist/monitor-BPYhkEqF.js +0 -782
  884. package/dist/monitor-BuTcQ24j.js +0 -3468
  885. package/dist/monitor-CuXvNhFh.js +0 -113
  886. package/dist/monitor-D-TqSIHF.js +0 -6823
  887. package/dist/monitor-DRSgo9u2.js +0 -3076
  888. package/dist/monitor-DcHch39z.js +0 -772
  889. package/dist/monitor-DsHBMrXp.js +0 -115
  890. package/dist/monitor-shared-CL8T4gt1.js +0 -444
  891. package/dist/msteams-7FMwTvQG.js +0 -852
  892. package/dist/node-cli-BCjaSCZM.js +0 -2503
  893. package/dist/node-resolve-D5Hvcgyx.js +0 -835
  894. package/dist/nodes-cli-Dd_SNbkt.js +0 -1380
  895. package/dist/nostr-D8scBiYq.d.ts +0 -7
  896. package/dist/nostr-DBTFTxKs.js +0 -8744
  897. package/dist/npm-resolution-CYfb3MHG.js +0 -60
  898. package/dist/oauth-env-zPt5RywA.js +0 -10
  899. package/dist/onboard-BEFQQeig.js +0 -25
  900. package/dist/onboard-CJHNyxJh.js +0 -48
  901. package/dist/onboard-D_3UeLEN.js +0 -589
  902. package/dist/onboard-channels-B_JL0Djc.js +0 -1241
  903. package/dist/onboard-channels-CqZzHt2C.js +0 -205
  904. package/dist/onboard-custom-CER3Ggbq.js +0 -571
  905. package/dist/onboard-custom-bNRdGECb.js +0 -114
  906. package/dist/onboard-helpers-BK0Hsb7Y.js +0 -335
  907. package/dist/onboard-helpers-CXZ5RPoR.js +0 -113
  908. package/dist/onboard-hooks-1NsxEDjH.js +0 -72
  909. package/dist/onboard-remote-DuKhC_7W.js +0 -117
  910. package/dist/onboard-remote-OwRcDuB3.js +0 -181
  911. package/dist/onboard-search-Cy8dOq2W.js +0 -302
  912. package/dist/onboard-skills-D5phRa6r.js +0 -117
  913. package/dist/onboard-skills-c9qWCNe9.js +0 -133
  914. package/dist/outbound-media-CgNYEQWb.d.ts +0 -11
  915. package/dist/outbound-media-DYRO2vTD.js +0 -11
  916. package/dist/pairing-access-Dsiu5Mvl.d.ts +0 -21
  917. package/dist/pairing-cli-BOnv0TYn.js +0 -217
  918. package/dist/perplexity-EZwC3y2b.js +0 -24
  919. package/dist/persistent-dedupe-DMLOqJ23.d.ts +0 -26
  920. package/dist/pi-model-discovery-runtime-BToY3A6K.js +0 -111
  921. package/dist/pi-tools.before-tool-call.runtime-D_acPtld.js +0 -381
  922. package/dist/plugin-install-CgJpSjYd.js +0 -184
  923. package/dist/plugin-install-Cl1A4EF6.js +0 -117
  924. package/dist/plugin-install-plan-Dc2Z4DeU.js +0 -49
  925. package/dist/plugin-registry-B1UaWrQD.js +0 -49
  926. package/dist/plugin-registry-Cy8biwnn.js +0 -113
  927. package/dist/plugins-CXwvg50F.js +0 -111
  928. package/dist/plugins-cli-Uvzp2aYV.js +0 -917
  929. package/dist/policy-DsMBbEe7.js +0 -143
  930. package/dist/preflight-audio.runtime-hWsZIYvc.js +0 -116
  931. package/dist/probe-CNsSf1Uf.js +0 -6329
  932. package/dist/probe-CqOIrPhb.js +0 -47
  933. package/dist/probe-DH6gDw-h.js +0 -129
  934. package/dist/probe-DM16PLf4.js +0 -21
  935. package/dist/probe-DvAEEWYr.js +0 -1793
  936. package/dist/probe-auth-COfgCble.js +0 -48
  937. package/dist/probe-auth-I_5TX1Eh.js +0 -40
  938. package/dist/program-Dz80sgTU.js +0 -253
  939. package/dist/prompt-select-styled-wQehwFxK.js +0 -2673
  940. package/dist/provider-api-key-auth.runtime-BR9GU4ya.js +0 -121
  941. package/dist/provider-auth-choice-CdhA84kr.js +0 -126
  942. package/dist/provider-auth-choice-helpers-kabp_0zA.js +0 -48
  943. package/dist/provider-auth-choice-preference-se3zAM_2.js +0 -189
  944. package/dist/provider-auth-choice.runtime-BMc8-xNQ.js +0 -123
  945. package/dist/provider-auth-choices-CYsCViGi.js +0 -57
  946. package/dist/provider-auth-guidance-CMjUWlNf.js +0 -34
  947. package/dist/provider-auth-result-Cw6qIhO-.d.ts +0 -18
  948. package/dist/provider-models-BCId_Lfu.js +0 -2113
  949. package/dist/provider-models-Ok-DrSiY.d.ts +0 -867
  950. package/dist/provider-ollama-setup-B6XJZ0So.js +0 -314
  951. package/dist/provider-ollama-setup-lGDdTl0b.d.ts +0 -32
  952. package/dist/provider-onboard-CSPi7jOK.d.ts +0 -40
  953. package/dist/provider-onboard-Ca0TaNud.js +0 -139
  954. package/dist/provider-runtime.runtime-DwwkHw_7.js +0 -111
  955. package/dist/provider-self-hosted-setup-BEKLVGpj.js +0 -182
  956. package/dist/provider-self-hosted-setup-Df91By-J.d.ts +0 -61
  957. package/dist/provider-stream-DrUD69ai.js +0 -512
  958. package/dist/provider-usage-BgKHCnjr.js +0 -111
  959. package/dist/provider-usage-D8EZpFz9.js +0 -633
  960. package/dist/provider-wizard-DMdb-zj_.js +0 -152
  961. package/dist/push-apns-BPH6d4VV.js +0 -1038
  962. package/dist/pw-ai-DttfldtL.js +0 -1867
  963. package/dist/qmd-manager-CybcDUfk.js +0 -1570
  964. package/dist/qr-cli-8NcmJ8Ft.js +0 -369
  965. package/dist/qr-cli-DWe0Our3.js +0 -113
  966. package/dist/reactions-D6N0LR16.js +0 -281
  967. package/dist/read-only-account-inspect.discord.runtime-CqUWTRfl.js +0 -116
  968. package/dist/read-only-account-inspect.slack.runtime-9-jpln3q.js +0 -116
  969. package/dist/read-only-account-inspect.telegram.runtime-EKPI1D7n.js +0 -116
  970. package/dist/redact-snapshot-DwJEIVk9.js +0 -2663
  971. package/dist/register.agent-D3YdDirP.js +0 -439
  972. package/dist/register.backup-dR27qCuo.js +0 -625
  973. package/dist/register.configure-BjFhkkka.js +0 -252
  974. package/dist/register.maintenance-DiMQJIOa.js +0 -574
  975. package/dist/register.message-CdZsKYH1.js +0 -709
  976. package/dist/register.onboard-B0rV1eaO.js +0 -192
  977. package/dist/register.setup-wKMvohzo.js +0 -212
  978. package/dist/register.status-health-sessions-BJ68m6pt.js +0 -498
  979. package/dist/register.subclis-CnnrWt2a.js +0 -315
  980. package/dist/register.subclis-lSvTkC6z.js +0 -13
  981. package/dist/replies-BABt9b48.js +0 -110
  982. package/dist/resolve-channels-BqZFl2Ux.js +0 -262
  983. package/dist/resolve-channels-DjQLXb7B.js +0 -226
  984. package/dist/resolve-route-CSHDsa_m.js +0 -538
  985. package/dist/resolve-users-BG6HaSR5.js +0 -143
  986. package/dist/root-help-ohmaCyC_.js +0 -32
  987. package/dist/routes-4k2kpvoT.js +0 -7097
  988. package/dist/rpc-Cnwn4Q6L.js +0 -67
  989. package/dist/run-main-VYlacKA0.js +0 -424
  990. package/dist/runtime-D61jzMiI.d.ts +0 -26
  991. package/dist/runtime-discord-ops.runtime-DafrU-rI.js +0 -9078
  992. package/dist/runtime-slack-ops.runtime-CdXBKXwd.js +0 -4556
  993. package/dist/runtime-telegram-ops.runtime-B12sF7gE.js +0 -133
  994. package/dist/runtime-whatsapp-login.runtime-CqEudH37.js +0 -114
  995. package/dist/runtime-whatsapp-outbound.runtime-D5m2qyn-.js +0 -117
  996. package/dist/sandbox-cli-CHJiEWXB.js +0 -535
  997. package/dist/search-manager-BtNC3-i_.js +0 -16
  998. package/dist/search-manager-C7J7B3_a.js +0 -386
  999. package/dist/secrets-cli-C6yIWBbN.js +0 -2070
  1000. package/dist/security-cli-BVu9BkjD.js +0 -575
  1001. package/dist/send-BSreC7rr.js +0 -631
  1002. package/dist/send-BsLHQG_B.js +0 -1025
  1003. package/dist/send-BuNhp8PH.js +0 -283
  1004. package/dist/send-DOCswVar.js +0 -100
  1005. package/dist/send-Dl0LLErk.js +0 -629
  1006. package/dist/server-node-events-Bq2067EG.js +0 -506
  1007. package/dist/server-y38L7N5H.js +0 -107
  1008. package/dist/sessions-BV8gXURR.js +0 -112
  1009. package/dist/sessions-dl1Kc-Ci.js +0 -218
  1010. package/dist/setup-BSPXdMuK.d.ts +0 -37
  1011. package/dist/setup-DGszQH0_.js +0 -387
  1012. package/dist/setup-binary-C17YnmA8.js +0 -406
  1013. package/dist/setup-browser-CPx-nEsr.js +0 -70
  1014. package/dist/setup-core-BByHN1ME.js +0 -143
  1015. package/dist/setup-core-C0KPlBmL.js +0 -47
  1016. package/dist/setup-core-Cq37G6of.js +0 -166
  1017. package/dist/setup-core-uO84_Y75.js +0 -205
  1018. package/dist/setup-surface-BEMi7Rmb.js +0 -490
  1019. package/dist/setup-wizard-helpers-Ck9wDR0b.d.ts +0 -203
  1020. package/dist/setup.finalize-BzPBa8zW.js +0 -522
  1021. package/dist/setup.gateway-config-DdwkF-8e.js +0 -343
  1022. package/dist/shared-BCw4SKjB.js +0 -96
  1023. package/dist/shared-CjNzsULP.js +0 -75
  1024. package/dist/shared-Cu1BE7ZE.js +0 -298
  1025. package/dist/shared-DSClmyUn.js +0 -182
  1026. package/dist/shared-DyJdGH6y.js +0 -102
  1027. package/dist/signal-Dyv4NZsB.js +0 -114
  1028. package/dist/skills-CbB5b27M.js +0 -853
  1029. package/dist/skills-CnfI7Szw.js +0 -20
  1030. package/dist/skills-cli-CavB1f_3.js +0 -292
  1031. package/dist/skills-install-B1OBdgd0.js +0 -763
  1032. package/dist/skills-status-B3gAmIbW.js +0 -169
  1033. package/dist/skills-status-DrHhFgU9.js +0 -21
  1034. package/dist/slack-BRzqnoAz.js +0 -114
  1035. package/dist/slash-commands.runtime-BK88kgds.js +0 -128
  1036. package/dist/slash-dispatch.runtime-COGywwJE.js +0 -141
  1037. package/dist/slash-skill-commands.runtime-Ti4brxgh.js +0 -116
  1038. package/dist/src-DUR6OQxI.js +0 -1701
  1039. package/dist/status-C6dgQY9a.js +0 -131
  1040. package/dist/status-CNK0Q7QH.js +0 -606
  1041. package/dist/status-DBcX0DSC.js +0 -43
  1042. package/dist/status-DKgFgbwv.js +0 -1599
  1043. package/dist/status-Wn5lhNAc.js +0 -126
  1044. package/dist/status-json-D2EkWqAl.js +0 -288
  1045. package/dist/status.link-channel-D3ULIdEa.js +0 -143
  1046. package/dist/status.scan.deps.runtime-BsjWTAm4.js +0 -126
  1047. package/dist/status.scan.runtime-D4HbzROD.js +0 -119
  1048. package/dist/status.summary-C3YxPrDK.js +0 -592
  1049. package/dist/status.summary.runtime-DAkXPSaK.js +0 -118
  1050. package/dist/status.update-B4NnN9P1.js +0 -77
  1051. package/dist/subagent-orphan-recovery-QiQEBv36.js +0 -307
  1052. package/dist/subagent-registry-runtime-BJatPQFK.js +0 -111
  1053. package/dist/subscription-BhZORXN9.js +0 -100
  1054. package/dist/subscription-QEUjQRMv.js +0 -33
  1055. package/dist/subscription-cli-HrULlAgc.js +0 -134
  1056. package/dist/synology-chat-DB76GWMN.js +0 -297
  1057. package/dist/system-cli-D8jDwWuL.js +0 -94
  1058. package/dist/telegram-BHiiqKkQ.js +0 -114
  1059. package/dist/text-chunking-Baonm9Lu.js +0 -84
  1060. package/dist/text-chunking-DzB11ONk.d.ts +0 -79
  1061. package/dist/tlon-DLESxNgD.js +0 -433
  1062. package/dist/tui-C75zi2Cl.js +0 -3834
  1063. package/dist/tui-cli-DFwx5e6i.js +0 -137
  1064. package/dist/types-BKldC9YN.d.ts +0 -22692
  1065. package/dist/types-MeyueBE0.d.ts +0 -45
  1066. package/dist/types.base-Cw0-zIvE.d.ts +0 -188
  1067. package/dist/ui-B55NOIB6.js +0 -31
  1068. package/dist/update--ojavYQ4.js +0 -1036
  1069. package/dist/update-cli-Cvj5aWYM.js +0 -1503
  1070. package/dist/update-offset-store-upatuWwX.js +0 -112
  1071. package/dist/update-runner-DHkY_-76.js +0 -1496
  1072. package/dist/upsert-with-lock-C171GLaR.js +0 -33
  1073. package/dist/usage-N3bxnbmt.js +0 -115
  1074. package/dist/web-RdvT7gKa.js +0 -112
  1075. package/dist/web-shared-C2qHVxw1.d.ts +0 -45
  1076. package/dist/webhook-request-guards-CosLyl01.d.ts +0 -76
  1077. package/dist/webhook-targets-Bfnag-du.js +0 -181
  1078. package/dist/webhook-targets-DP_EkQa4.d.ts +0 -106
  1079. package/dist/webhooks-cli-ZpnXrq7G.js +0 -350
  1080. package/dist/whatsapp-DNTAyZHt.js +0 -114
  1081. package/dist/whatsapp-actions-o1zKQzKZ.js +0 -167
  1082. package/dist/workspace-CpWi5wPr.js +0 -479
  1083. package/dist/workspace-Ii7aRS7c.js +0 -289
  1084. package/dist/workspace-dirs-x10McA9t.js +0 -2003
  1085. package/dist/zalo-C9OQRYRw.d.ts +0 -9
  1086. package/dist/zalo-zm_bYCKg.js +0 -415
  1087. package/dist/zalouser-CvVEUvc5.js +0 -30911
  1088. /package/dist/{account-id-B3YSn4hl.d.ts → account-id-B8ce6G_4.d.ts} +0 -0
  1089. /package/dist/{acpx-CnNv70m2.d.ts → acpx-Ci50I9T2.d.ts} +0 -0
  1090. /package/dist/{agent-media-payload-DE2pEcsz.d.ts → agent-media-payload-en-gS5p6.d.ts} +0 -0
  1091. /package/dist/{allow-from-DPpHnT2A.d.ts → allow-from-cMeQ47Ot.d.ts} +0 -0
  1092. /package/dist/{allowlist-resolution-CLFiZ6nE.d.ts → allowlist-resolution-DoAWbfXV.d.ts} +0 -0
  1093. /package/dist/{bluebubbles-Duhu-Jer.d.ts → bluebubbles-C6yYmUl0.d.ts} +0 -0
  1094. /package/dist/{boolean-param-BhFjB3gp.d.ts → boolean-param-CdO2TFTk.d.ts} +0 -0
  1095. /package/dist/{channel-config-schema-DnnVMdjR.d.ts → channel-config-schema-Chp38wel.d.ts} +0 -0
  1096. /package/dist/{channel-policy-Baq-Z06b.d.ts → channel-policy-g2h6AbYQ.d.ts} +0 -0
  1097. /package/dist/{chat-type-DpiBgwuG.d.ts → chat-type-BLt59pPT.d.ts} +0 -0
  1098. /package/dist/{command-format-vi4xq8e8.d.ts → command-format-BDJC05Jp.d.ts} +0 -0
  1099. /package/dist/{diffs-DK7fVSDo.d.ts → diffs-D_iNKCyn.d.ts} +0 -0
  1100. /package/dist/{directory-runtime-BTLPaysA.d.ts → directory-runtime-DhMex6HY.d.ts} +0 -0
  1101. /package/dist/{exec-C01wtBHu.d.ts → exec-pjfUY4KM.d.ts} +0 -0
  1102. /package/dist/{gaxios-fetch-compat-wZ38b3w3.js → gaxios-fetch-compat-B_vtINdV.js} +0 -0
  1103. /package/dist/{history-CwXuP2TW.d.ts → history-aqSS5VGQ.d.ts} +0 -0
  1104. /package/dist/{inbound-envelope-SggrBs9m.d.ts → inbound-envelope-C5hWuZod.d.ts} +0 -0
  1105. /package/dist/{index-apAZHsDo.d.ts → index-DXVQFYGX.d.ts} +0 -0
  1106. /package/dist/{json-store-r75IZGk9.d.ts → json-store-UnqQ5aV3.d.ts} +0 -0
  1107. /package/dist/{keyed-async-queue-DHIr7yNe.d.ts → keyed-async-queue-guucpLw3.d.ts} +0 -0
  1108. /package/dist/{links-HeQ3r_L0.d.ts → links-Bar0meEK.d.ts} +0 -0
  1109. /package/dist/{markdown-to-line-CDb4Jy3V.d.ts → markdown-to-line-D8uH_KOj.d.ts} +0 -0
  1110. /package/dist/{mattermost-DtCsxpgg.d.ts → mattermost-xl7jAFJL.d.ts} +0 -0
  1111. /package/dist/{net-BATPDwdQ.d.ts → net-rGOKGds6.d.ts} +0 -0
  1112. /package/dist/{nextcloud-talk-Bb2wHOwp.d.ts → nextcloud-talk-De2CZ9dV.d.ts} +0 -0
  1113. /package/dist/{oauth-utils-u567CLT0.d.ts → oauth-utils-DzN1AlEH.d.ts} +0 -0
  1114. /package/dist/{parse-finite-number-l3tNlrZh.d.ts → parse-finite-number-odgyqhi0.d.ts} +0 -0
  1115. /package/dist/{provider-usage.types-C6061OVN.d.ts → provider-usage.types-EDE9o-H_.d.ts} +0 -0
  1116. /package/dist/{reply-history-BDsFnZFl.d.ts → reply-history-CVuU31xe.d.ts} +0 -0
  1117. /package/dist/{reply-payload-CCvM4W9u.d.ts → reply-payload-CHkpBYwL.d.ts} +0 -0
  1118. /package/dist/{request-url-C54l4-xC.d.ts → request-url-DHisbiHY.d.ts} +0 -0
  1119. /package/dist/{run-command-D3RqWcHu.d.ts → run-command-y0Cndsb1.d.ts} +0 -0
  1120. /package/dist/{secret-input-schema-BLBt-NAP.d.ts → secret-input-schema-b1vpYDQN.d.ts} +0 -0
  1121. /package/dist/{session-key-BQ2-bR-9.d.ts → session-key-DTHQl57f.d.ts} +0 -0
  1122. /package/dist/{ssh-config-C4mcH9Ly.js → ssh-config-hEHBfU2_.js} +0 -0
  1123. /package/dist/{testing-DLkhGsoz.d.ts → testing-DszuZXgK.d.ts} +0 -0
  1124. /package/dist/{thinking-DRkjX18p.d.ts → thinking-IwXTGSeT.d.ts} +0 -0
  1125. /package/dist/{tool-send-CMMD1uDu.d.ts → tool-send-DWHRmKpz.d.ts} +0 -0
  1126. /package/dist/{vllm-defaults-CcGuf4hL.d.ts → vllm-defaults-CrxZgE6-.d.ts} +0 -0
  1127. /package/dist/{wait-Daog8bxM.d.ts → wait-wDWw_MTI.d.ts} +0 -0
  1128. /package/dist/{webhook-memory-guards-C5MrExwT.d.ts → webhook-memory-guards-DreORuJy.d.ts} +0 -0
  1129. /package/dist/{windows-spawn-j2l-dqu8.d.ts → windows-spawn-BIzH92x2.d.ts} +0 -0
  1130. /package/dist/{zod-schema.agent-runtime-krMrBnIn.d.ts → zod-schema.agent-runtime-CP2rmis3.d.ts} +0 -0
  1131. /package/dist/{zod-schema.core-BNDieZDZ.d.ts → zod-schema.core-Foi1tYwi.d.ts} +0 -0
@@ -1,1380 +0,0 @@
1
- import "./redact-fatrROh9.js";
2
- import "./errors-DOJWZqNo.js";
3
- import "./unhandled-rejections-CTvNvnT0.js";
4
- import "./logger-BFfIIIKH.js";
5
- import "./paths-D6AgsMTU.js";
6
- import "./tmp-moldclaw-dir-DWF-d8qD.js";
7
- import { n as isRich, r as theme } from "./theme-BSXzMzAA.js";
8
- import "./globals-DESrFYmC.js";
9
- import { n as defaultRuntime } from "./runtime-_tQz41uA.js";
10
- import "./ansi-BPhP6LBZ.js";
11
- import "./subsystem-CPmDTJ2P.js";
12
- import "./boolean-B6zcAynR.js";
13
- import "./env-D42cffog.js";
14
- import "./warning-filter-B1UOeM0G.js";
15
- import { S as shortenHomePath, x as shortenHomeInString } from "./utils-C7ykRPCQ.js";
16
- import { t as formatDocsLink } from "./links-BcahUP5U.js";
17
- import "./setup-binary-C17YnmA8.js";
18
- import { $d as buildNodeShellCommand, $l as writeScreenRecordToFile, Hd as parsePreparedSystemRunPayload, Ql as screenRecordTempPath, Zl as parseScreenRecordPayload, ad as canvasSnapshotTempPath, cd as parseCameraClipPayload, dd as writeCameraClipPayloadToFile, ef as applyPathPrepend, eu as parseEnvPairs, fd as writeCameraPayloadToFile, ld as parseCameraSnapPayload, od as parseCanvasSnapshotPayload, sd as cameraTempPath, tu as parseTimeoutMs, ud as writeBase64ToFile } from "./auth-profiles-1kPLbBwI.js";
19
- import "./model-selection-hL8i1Jbs.js";
20
- import { i as resolveAgentConfig, m as resolveDefaultAgentId } from "./agent-scope-C-YmLnnb.js";
21
- import "./boundary-file-read-tPYh_8fH.js";
22
- import "./logger-BGzLUitz.js";
23
- import "./exec-CvEtXqTZ.js";
24
- import "./workspace-CpWi5wPr.js";
25
- import { c as loadConfig } from "./io-CMfWWPXQ.js";
26
- import "./host-env-security-DQ2i_W12.js";
27
- import "./safe-text-Cnulee_z.js";
28
- import "./version-T8nMYUnU.js";
29
- import "./env-substitution-68cyvF5h.js";
30
- import "./config-state-h5jUoHya.js";
31
- import "./network-mode-BtWXzwYn.js";
32
- import "./registry-C1pRrsQl.js";
33
- import "./manifest-registry-DAd0SRAP.js";
34
- import "./ip-C4YAIpr4.js";
35
- import { t as parseDurationMs } from "./parse-duration-CwV75fzr.js";
36
- import "./zod-schema.core-DvwgNmpd.js";
37
- import "./config-sW57gztj.js";
38
- import "./audit-fs-CMb-YUHX.js";
39
- import "./resolve-PSlwZjg3.js";
40
- import "./provider-web-search-CcUC9ktE.js";
41
- import "./text-runtime-Cfq-Uyx0.js";
42
- import "./workspace-dirs-x10McA9t.js";
43
- import "./config-BwkGZjD5.js";
44
- import "./tailnet-fFTz5Twr.js";
45
- import "./net-K181nxTH.js";
46
- import "./credentials-D-5Pb-aZ.js";
47
- import "./routes-4k2kpvoT.js";
48
- import "./frontmatter-Cgg0ICvh.js";
49
- import "./env-overrides-DBQl3LRc.js";
50
- import "./path-alias-guards-BtSO7sk7.js";
51
- import "./skills-CbB5b27M.js";
52
- import "./ports-Ca74cFb2.js";
53
- import "./ports-lsof-CoiADo0p.js";
54
- import "./ssh-tunnel-DsY-9yao.js";
55
- import "./image-ops-Ck_D_vpe.js";
56
- import "./fs-safe-CRXFoBmh.js";
57
- import "./mime-DGFQe4XX.js";
58
- import "./server-middleware-Djfoa1s0.js";
59
- import "./message-channel-DFE4FuE_.js";
60
- import "./resolve-route-CSHDsa_m.js";
61
- import "./internal-hooks-83AcmxP3.js";
62
- import "./lazy-runtime-BoGB4usD.js";
63
- import "./config-schema-BNU4GQh_.js";
64
- import "./method-scopes-CQE7-bZ-.js";
65
- import "./session-cost-usage-DWgQk6XT.js";
66
- import "./paths-ApLcu1Uu.js";
67
- import "./routing-DQ-fpTaA.js";
68
- import "./send-BuNhp8PH.js";
69
- import { a as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS, c as loadExecApprovals, d as minSecurity, h as normalizeExecSecurity, i as parsePairingList, l as maxAsk, p as normalizeExecAsk, r as parseNodeList, x as resolveExecApprovalsFromFile } from "./node-resolve-D5Hvcgyx.js";
70
- import "./provider-stream-DrUD69ai.js";
71
- import "./identity-file-sshkKKIr.js";
72
- import "./provider-models-BCId_Lfu.js";
73
- import "./secret-file-p1IhQzwJ.js";
74
- import "./logging-Dy7UYzIN.js";
75
- import "./runtime-env-BlEtPF6b.js";
76
- import "./registry-BFMbkmgR.js";
77
- import "./provider-onboard-Ca0TaNud.js";
78
- import "./model-definitions-Cyyzm6Kr.js";
79
- import "./usage-N3bxnbmt.js";
80
- import "./device-identity-CRfhC3_s.js";
81
- import "./auth-Byfp0flq.js";
82
- import "./subscription-BhZORXN9.js";
83
- import "./diagnostic-D96Xaqrj.js";
84
- import "./message-hook-mappers-CeiHXgSQ.js";
85
- import "./json-store--7cBPxTG.js";
86
- import { s as randomIdempotencyKey } from "./call-ByEzDJ1_.js";
87
- import "./multimodal-BJBBn_4F.js";
88
- import "./memory-search-Cv1SBrn7.js";
89
- import "./query-expansion-D_Mm5Hhi.js";
90
- import "./search-manager-C7J7B3_a.js";
91
- import "./core-CvDzLs7B.js";
92
- import "./issue-format-B0SI57Es.js";
93
- import "./logging-CxP9suT8.js";
94
- import "./note-dOl5kPAy.js";
95
- import "./state-paths-DsMoTg25.js";
96
- import "./config-value-CtTWALxG.js";
97
- import "./command-secret-targets-BFF4x_RB.js";
98
- import "./brave-BoWimrLe.js";
99
- import "./provider-usage-D8EZpFz9.js";
100
- import "./perplexity-EZwC3y2b.js";
101
- import "./restart-stale-pids-CPF1_61W.js";
102
- import "./delivery-queue-BOf5wYIc.js";
103
- import { n as formatTimeAgo } from "./format-relative-B1Jfwsqe.js";
104
- import "./pairing-token-bu1e6z6X.js";
105
- import "./accounts-J2OhhhQi.js";
106
- import "./process-runtime-D27SftX_.js";
107
- import "./audit-CIWW1Aqm.js";
108
- import "./cli-runtime-DTCHPjCi.js";
109
- import { n as runCommandWithRuntime } from "./cli-utils-BCuSS4l6.js";
110
- import { t as formatHelpExamples } from "./help-format-BFzPm_8V.js";
111
- import "./progress-Cwq59vgZ.js";
112
- import "./gateway-runtime-D89mSQPB.js";
113
- import { n as renderTable, t as getTerminalTableWidth } from "./table-BldgNDVQ.js";
114
- import { a as resolveNodeId, i as resolveNode, n as callGatewayCli, o as unauthorizedHintForMessage, r as nodesCallOpts, s as formatPermissions, t as buildNodeInvokeParams } from "./rpc-Cnwn4Q6L.js";
115
- import fs from "node:fs/promises";
116
- //#region src/cli/nodes-cli/cli-utils.ts
117
- function getNodesTheme() {
118
- const rich = isRich();
119
- const color = (fn) => (value) => rich ? fn(value) : value;
120
- return {
121
- rich,
122
- heading: color(theme.heading),
123
- ok: color(theme.success),
124
- warn: color(theme.warn),
125
- muted: color(theme.muted),
126
- error: color(theme.error)
127
- };
128
- }
129
- function runNodesCommand(label, action) {
130
- return runCommandWithRuntime(defaultRuntime, action, (err) => {
131
- const message = String(err);
132
- const { error, warn } = getNodesTheme();
133
- defaultRuntime.error(error(`nodes ${label} failed: ${message}`));
134
- const hint = unauthorizedHintForMessage(message);
135
- if (hint) defaultRuntime.error(warn(hint));
136
- defaultRuntime.exit(1);
137
- });
138
- }
139
- //#endregion
140
- //#region src/cli/nodes-cli/register.camera.ts
141
- const parseFacing = (value) => {
142
- const v = String(value ?? "").trim().toLowerCase();
143
- if (v === "front" || v === "back") return v;
144
- throw new Error(`invalid facing: ${value} (expected front|back)`);
145
- };
146
- function getGatewayInvokePayload(raw) {
147
- return typeof raw === "object" && raw !== null ? raw.payload : void 0;
148
- }
149
- function registerNodesCameraCommands(nodes) {
150
- const camera = nodes.command("camera").description("Capture camera media from a paired node");
151
- nodesCallOpts(camera.command("list").description("List available cameras on a node").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").action(async (opts) => {
152
- await runNodesCommand("camera list", async () => {
153
- const raw = await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
154
- nodeId: await resolveNodeId(opts, String(opts.node ?? "")),
155
- command: "camera.list",
156
- params: {}
157
- }));
158
- const res = typeof raw === "object" && raw !== null ? raw : {};
159
- const payload = typeof res.payload === "object" && res.payload !== null ? res.payload : {};
160
- const devices = Array.isArray(payload.devices) ? payload.devices : [];
161
- if (opts.json) {
162
- defaultRuntime.log(JSON.stringify(devices, null, 2));
163
- return;
164
- }
165
- if (devices.length === 0) {
166
- const { muted } = getNodesTheme();
167
- defaultRuntime.log(muted("No cameras reported."));
168
- return;
169
- }
170
- const { heading, muted } = getNodesTheme();
171
- const tableWidth = getTerminalTableWidth();
172
- const rows = devices.map((device) => ({
173
- Name: typeof device.name === "string" ? device.name : "Unknown Camera",
174
- Position: typeof device.position === "string" ? device.position : muted("unspecified"),
175
- ID: typeof device.id === "string" ? device.id : ""
176
- }));
177
- defaultRuntime.log(heading("Cameras"));
178
- defaultRuntime.log(renderTable({
179
- width: tableWidth,
180
- columns: [
181
- {
182
- key: "Name",
183
- header: "Name",
184
- minWidth: 14,
185
- flex: true
186
- },
187
- {
188
- key: "Position",
189
- header: "Position",
190
- minWidth: 10
191
- },
192
- {
193
- key: "ID",
194
- header: "ID",
195
- minWidth: 10,
196
- flex: true
197
- }
198
- ],
199
- rows
200
- }).trimEnd());
201
- });
202
- }), { timeoutMs: 6e4 });
203
- 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) => {
204
- await runNodesCommand("camera snap", async () => {
205
- const node = await resolveNode(opts, String(opts.node ?? ""));
206
- const nodeId = node.nodeId;
207
- const facingOpt = String(opts.facing ?? "both").trim().toLowerCase();
208
- const facings = facingOpt === "both" ? ["front", "back"] : facingOpt === "front" || facingOpt === "back" ? [facingOpt] : (() => {
209
- throw new Error(`invalid facing: ${String(opts.facing)} (expected front|back|both)`);
210
- })();
211
- const maxWidth = opts.maxWidth ? Number.parseInt(String(opts.maxWidth), 10) : void 0;
212
- const quality = opts.quality ? Number.parseFloat(String(opts.quality)) : void 0;
213
- const delayMs = opts.delayMs ? Number.parseInt(String(opts.delayMs), 10) : void 0;
214
- const deviceId = opts.deviceId ? String(opts.deviceId).trim() : void 0;
215
- if (deviceId && facings.length > 1) throw new Error("facing=both is not allowed when --device-id is set");
216
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
217
- const results = [];
218
- for (const facing of facings) {
219
- const payload = parseCameraSnapPayload(getGatewayInvokePayload(await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
220
- nodeId,
221
- command: "camera.snap",
222
- params: {
223
- facing,
224
- maxWidth: Number.isFinite(maxWidth) ? maxWidth : void 0,
225
- quality: Number.isFinite(quality) ? quality : void 0,
226
- format: "jpg",
227
- delayMs: Number.isFinite(delayMs) ? delayMs : void 0,
228
- deviceId: deviceId || void 0
229
- },
230
- timeoutMs
231
- }))));
232
- const filePath = cameraTempPath({
233
- kind: "snap",
234
- facing,
235
- ext: payload.format === "jpeg" ? "jpg" : payload.format
236
- });
237
- await writeCameraPayloadToFile({
238
- filePath,
239
- payload,
240
- expectedHost: node.remoteIp,
241
- invalidPayloadMessage: "invalid camera.snap payload"
242
- });
243
- results.push({
244
- facing,
245
- path: filePath,
246
- width: payload.width,
247
- height: payload.height
248
- });
249
- }
250
- if (opts.json) {
251
- defaultRuntime.log(JSON.stringify({ files: results }, null, 2));
252
- return;
253
- }
254
- defaultRuntime.log(results.map((r) => `MEDIA:${shortenHomePath(r.path)}`).join("\n"));
255
- });
256
- }), { timeoutMs: 6e4 });
257
- 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) => {
258
- await runNodesCommand("camera clip", async () => {
259
- const node = await resolveNode(opts, String(opts.node ?? ""));
260
- const nodeId = node.nodeId;
261
- const facing = parseFacing(String(opts.facing ?? "front"));
262
- const durationMs = parseDurationMs(String(opts.duration ?? "3000"));
263
- const includeAudio = opts.audio !== false;
264
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
265
- const deviceId = opts.deviceId ? String(opts.deviceId).trim() : void 0;
266
- const payload = parseCameraClipPayload(getGatewayInvokePayload(await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
267
- nodeId,
268
- command: "camera.clip",
269
- params: {
270
- facing,
271
- durationMs: Number.isFinite(durationMs) ? durationMs : void 0,
272
- includeAudio,
273
- format: "mp4",
274
- deviceId: deviceId || void 0
275
- },
276
- timeoutMs
277
- }))));
278
- const filePath = await writeCameraClipPayloadToFile({
279
- payload,
280
- facing,
281
- expectedHost: node.remoteIp
282
- });
283
- if (opts.json) {
284
- defaultRuntime.log(JSON.stringify({ file: {
285
- facing,
286
- path: filePath,
287
- durationMs: payload.durationMs,
288
- hasAudio: payload.hasAudio
289
- } }, null, 2));
290
- return;
291
- }
292
- defaultRuntime.log(`MEDIA:${shortenHomePath(filePath)}`);
293
- });
294
- }), { timeoutMs: 9e4 });
295
- }
296
- //#endregion
297
- //#region src/cli/nodes-cli/a2ui-jsonl.ts
298
- const A2UI_ACTION_KEYS = [
299
- "beginRendering",
300
- "surfaceUpdate",
301
- "dataModelUpdate",
302
- "deleteSurface",
303
- "createSurface"
304
- ];
305
- function buildA2UITextJsonl(text) {
306
- const surfaceId = "main";
307
- const rootId = "root";
308
- const textId = "text";
309
- return [{ surfaceUpdate: {
310
- surfaceId,
311
- components: [{
312
- id: rootId,
313
- component: { Column: { children: { explicitList: [textId] } } }
314
- }, {
315
- id: textId,
316
- component: { Text: {
317
- text: { literalString: text },
318
- usageHint: "body"
319
- } }
320
- }]
321
- } }, { beginRendering: {
322
- surfaceId,
323
- root: rootId
324
- } }].map((payload) => JSON.stringify(payload)).join("\n");
325
- }
326
- function validateA2UIJsonl(jsonl) {
327
- const lines = jsonl.split(/\r?\n/);
328
- const errors = [];
329
- let sawV08 = false;
330
- let sawV09 = false;
331
- let messageCount = 0;
332
- lines.forEach((line, idx) => {
333
- const trimmed = line.trim();
334
- if (!trimmed) return;
335
- messageCount += 1;
336
- let obj;
337
- try {
338
- obj = JSON.parse(trimmed);
339
- } catch (err) {
340
- errors.push(`line ${idx + 1}: ${String(err)}`);
341
- return;
342
- }
343
- if (!obj || typeof obj !== "object" || Array.isArray(obj)) {
344
- errors.push(`line ${idx + 1}: expected JSON object`);
345
- return;
346
- }
347
- const record = obj;
348
- const actionKeys = A2UI_ACTION_KEYS.filter((key) => key in record);
349
- if (actionKeys.length !== 1) {
350
- errors.push(`line ${idx + 1}: expected exactly one action key (${A2UI_ACTION_KEYS.join(", ")})`);
351
- return;
352
- }
353
- if (actionKeys[0] === "createSurface") sawV09 = true;
354
- else sawV08 = true;
355
- });
356
- if (messageCount === 0) errors.push("no JSONL messages found");
357
- if (sawV08 && sawV09) errors.push("mixed A2UI v0.8 and v0.9 messages in one file");
358
- if (errors.length > 0) throw new Error(`Invalid A2UI JSONL:\n- ${errors.join("\n- ")}`);
359
- return {
360
- version: sawV09 ? "v0.9" : "v0.8",
361
- messageCount
362
- };
363
- }
364
- //#endregion
365
- //#region src/cli/nodes-cli/register.canvas.ts
366
- async function invokeCanvas(opts, command, params) {
367
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
368
- const timeoutMs = parseTimeoutMs(opts.invokeTimeout);
369
- return await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
370
- nodeId,
371
- command,
372
- params,
373
- timeoutMs: typeof timeoutMs === "number" ? timeoutMs : void 0
374
- }));
375
- }
376
- function registerNodesCanvasCommands(nodes) {
377
- const canvas = nodes.command("canvas").description("Capture or render canvas content from a paired node");
378
- 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) => {
379
- await runNodesCommand("canvas snapshot", async () => {
380
- const formatOpt = String(opts.format ?? "jpg").trim().toLowerCase();
381
- const formatForParams = formatOpt === "jpg" ? "jpeg" : formatOpt === "jpeg" ? "jpeg" : "png";
382
- if (formatForParams !== "png" && formatForParams !== "jpeg") throw new Error(`invalid format: ${String(opts.format)} (expected png|jpg|jpeg)`);
383
- const maxWidth = opts.maxWidth ? Number.parseInt(String(opts.maxWidth), 10) : void 0;
384
- const quality = opts.quality ? Number.parseFloat(String(opts.quality)) : void 0;
385
- const raw = await invokeCanvas(opts, "canvas.snapshot", {
386
- format: formatForParams,
387
- maxWidth: Number.isFinite(maxWidth) ? maxWidth : void 0,
388
- quality: Number.isFinite(quality) ? quality : void 0
389
- });
390
- const payload = parseCanvasSnapshotPayload((typeof raw === "object" && raw !== null ? raw : {}).payload);
391
- const filePath = canvasSnapshotTempPath({ ext: payload.format === "jpeg" ? "jpg" : payload.format });
392
- await writeBase64ToFile(filePath, payload.base64);
393
- if (opts.json) {
394
- defaultRuntime.log(JSON.stringify({ file: {
395
- path: filePath,
396
- format: payload.format
397
- } }, null, 2));
398
- return;
399
- }
400
- defaultRuntime.log(`MEDIA:${shortenHomePath(filePath)}`);
401
- });
402
- }), { timeoutMs: 6e4 });
403
- 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) => {
404
- await runNodesCommand("canvas present", async () => {
405
- const placement = {
406
- x: opts.x ? Number.parseFloat(opts.x) : void 0,
407
- y: opts.y ? Number.parseFloat(opts.y) : void 0,
408
- width: opts.width ? Number.parseFloat(opts.width) : void 0,
409
- height: opts.height ? Number.parseFloat(opts.height) : void 0
410
- };
411
- const params = {};
412
- if (opts.target) params.url = String(opts.target);
413
- if (Number.isFinite(placement.x) || Number.isFinite(placement.y) || Number.isFinite(placement.width) || Number.isFinite(placement.height)) params.placement = placement;
414
- await invokeCanvas(opts, "canvas.present", params);
415
- if (!opts.json) {
416
- const { ok } = getNodesTheme();
417
- defaultRuntime.log(ok("canvas present ok"));
418
- }
419
- });
420
- }));
421
- 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) => {
422
- await runNodesCommand("canvas hide", async () => {
423
- await invokeCanvas(opts, "canvas.hide", void 0);
424
- if (!opts.json) {
425
- const { ok } = getNodesTheme();
426
- defaultRuntime.log(ok("canvas hide ok"));
427
- }
428
- });
429
- }));
430
- 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) => {
431
- await runNodesCommand("canvas navigate", async () => {
432
- await invokeCanvas(opts, "canvas.navigate", { url });
433
- if (!opts.json) {
434
- const { ok } = getNodesTheme();
435
- defaultRuntime.log(ok("canvas navigate ok"));
436
- }
437
- });
438
- }));
439
- 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) => {
440
- await runNodesCommand("canvas eval", async () => {
441
- const js = opts.js ?? jsArg;
442
- if (!js) throw new Error("missing --js or <js>");
443
- const raw = await invokeCanvas(opts, "canvas.eval", { javaScript: js });
444
- if (opts.json) {
445
- defaultRuntime.log(JSON.stringify(raw, null, 2));
446
- return;
447
- }
448
- const payload = typeof raw === "object" && raw !== null ? raw.payload : void 0;
449
- if (payload?.result) defaultRuntime.log(payload.result);
450
- else {
451
- const { ok } = getNodesTheme();
452
- defaultRuntime.log(ok("canvas eval ok"));
453
- }
454
- });
455
- }));
456
- const a2ui = canvas.command("a2ui").description("Render A2UI content on the canvas");
457
- 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) => {
458
- await runNodesCommand("canvas a2ui push", async () => {
459
- const hasJsonl = Boolean(opts.jsonl);
460
- const hasText = typeof opts.text === "string";
461
- if (hasJsonl === hasText) throw new Error("provide exactly one of --jsonl or --text");
462
- const jsonl = hasText ? buildA2UITextJsonl(String(opts.text ?? "")) : await fs.readFile(String(opts.jsonl), "utf8");
463
- const { version, messageCount } = validateA2UIJsonl(jsonl);
464
- if (version === "v0.9") throw new Error("Detected A2UI v0.9 JSONL (createSurface). moldClaw currently supports v0.8 only.");
465
- await invokeCanvas(opts, "canvas.a2ui.pushJSONL", { jsonl });
466
- if (!opts.json) {
467
- const { ok } = getNodesTheme();
468
- defaultRuntime.log(ok(`canvas a2ui push ok (v0.8, ${messageCount} message${messageCount === 1 ? "" : "s"})`));
469
- }
470
- });
471
- }));
472
- 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) => {
473
- await runNodesCommand("canvas a2ui reset", async () => {
474
- await invokeCanvas(opts, "canvas.a2ui.reset", void 0);
475
- if (!opts.json) {
476
- const { ok } = getNodesTheme();
477
- defaultRuntime.log(ok("canvas a2ui reset ok"));
478
- }
479
- });
480
- }));
481
- }
482
- //#endregion
483
- //#region src/cli/nodes-cli/register.invoke.ts
484
- function resolveExecDefaults(cfg, agentId) {
485
- const globalExec = cfg?.tools?.exec;
486
- if (!agentId) return globalExec ? {
487
- security: globalExec.security,
488
- ask: globalExec.ask,
489
- node: globalExec.node,
490
- pathPrepend: globalExec.pathPrepend,
491
- safeBins: globalExec.safeBins
492
- } : void 0;
493
- const agentExec = resolveAgentConfig(cfg, agentId)?.tools?.exec;
494
- return {
495
- security: agentExec?.security ?? globalExec?.security,
496
- ask: agentExec?.ask ?? globalExec?.ask,
497
- node: agentExec?.node ?? globalExec?.node,
498
- pathPrepend: agentExec?.pathPrepend ?? globalExec?.pathPrepend,
499
- safeBins: agentExec?.safeBins ?? globalExec?.safeBins
500
- };
501
- }
502
- async function resolveNodePlatform(opts, nodeId) {
503
- try {
504
- const match = parseNodeList(await callGatewayCli("node.list", opts, {})).find((node) => node.nodeId === nodeId);
505
- return typeof match?.platform === "string" ? match.platform : null;
506
- } catch {
507
- return null;
508
- }
509
- }
510
- function requirePreparedRunPayload(payload) {
511
- const prepared = parsePreparedSystemRunPayload(payload);
512
- if (!prepared) throw new Error("invalid system.run.prepare response");
513
- return prepared;
514
- }
515
- function resolveNodesRunPolicy(opts, execDefaults) {
516
- const configuredSecurity = normalizeExecSecurity(execDefaults?.security) ?? "allowlist";
517
- const requestedSecurity = normalizeExecSecurity(opts.security);
518
- if (opts.security && !requestedSecurity) throw new Error("invalid --security (use deny|allowlist|full)");
519
- const configuredAsk = normalizeExecAsk(execDefaults?.ask) ?? loadExecApprovals().defaults?.ask ?? "on-miss";
520
- const requestedAsk = normalizeExecAsk(opts.ask);
521
- if (opts.ask && !requestedAsk) throw new Error("invalid --ask (use off|on-miss|always)");
522
- return {
523
- security: minSecurity(configuredSecurity, requestedSecurity ?? configuredSecurity),
524
- ask: maxAsk(configuredAsk, requestedAsk ?? configuredAsk)
525
- };
526
- }
527
- async function prepareNodesRunContext(params) {
528
- const env = parseEnvPairs(params.opts.env);
529
- const timeoutMs = parseTimeoutMs(params.opts.commandTimeout);
530
- const invokeTimeout = parseTimeoutMs(params.opts.invokeTimeout);
531
- let argv = Array.isArray(params.command) ? params.command : [];
532
- let rawCommand;
533
- if (params.raw) {
534
- rawCommand = params.raw;
535
- const platform = await resolveNodePlatform(params.opts, params.nodeId);
536
- argv = buildNodeShellCommand(rawCommand, platform ?? void 0);
537
- }
538
- const nodeEnv = env ? { ...env } : void 0;
539
- if (nodeEnv) applyPathPrepend(nodeEnv, params.execDefaults?.pathPrepend, { requireExisting: true });
540
- return {
541
- prepared: requirePreparedRunPayload((await callGatewayCli("node.invoke", params.opts, {
542
- nodeId: params.nodeId,
543
- command: "system.run.prepare",
544
- params: {
545
- command: argv,
546
- rawCommand,
547
- cwd: params.opts.cwd,
548
- agentId: params.agentId
549
- },
550
- idempotencyKey: `prepare-${randomIdempotencyKey()}`
551
- }))?.payload),
552
- nodeEnv,
553
- timeoutMs,
554
- invokeTimeout
555
- };
556
- }
557
- async function resolveNodeApprovals(params) {
558
- const approvalsSnapshot = await callGatewayCli("exec.approvals.node.get", params.opts, { nodeId: params.nodeId });
559
- const approvalsFile = approvalsSnapshot && typeof approvalsSnapshot === "object" ? approvalsSnapshot.file : void 0;
560
- if (!approvalsFile || typeof approvalsFile !== "object") throw new Error("exec approvals unavailable");
561
- const approvals = resolveExecApprovalsFromFile({
562
- file: approvalsFile,
563
- agentId: params.agentId,
564
- overrides: {
565
- security: params.security,
566
- ask: params.ask
567
- }
568
- });
569
- return {
570
- approvals,
571
- hostSecurity: minSecurity(params.security, approvals.agent.security),
572
- hostAsk: maxAsk(params.ask, approvals.agent.ask),
573
- askFallback: approvals.agent.askFallback
574
- };
575
- }
576
- async function maybeRequestNodesRunApproval(params) {
577
- let approvedByAsk = false;
578
- let approvalDecision = null;
579
- let approvalId = null;
580
- if (!(params.hostAsk === "always" || params.hostAsk === "on-miss")) return {
581
- approvedByAsk,
582
- approvalDecision,
583
- approvalId
584
- };
585
- approvalId = crypto.randomUUID();
586
- const approvalTimeoutMs = DEFAULT_EXEC_APPROVAL_TIMEOUT_MS;
587
- const transportTimeoutMs = Math.max(parseTimeoutMs(params.opts.timeout) ?? 0, approvalTimeoutMs + 1e4);
588
- const decisionResult = await callGatewayCli("exec.approval.request", params.opts, {
589
- id: approvalId,
590
- systemRunPlan: params.approvalPlan,
591
- cwd: params.approvalPlan.cwd,
592
- nodeId: params.nodeId,
593
- host: "node",
594
- security: params.hostSecurity,
595
- ask: params.hostAsk,
596
- agentId: params.approvalPlan.agentId ?? params.agentId,
597
- resolvedPath: void 0,
598
- sessionKey: params.approvalPlan.sessionKey ?? void 0,
599
- timeoutMs: approvalTimeoutMs
600
- }, { transportTimeoutMs });
601
- const decision = decisionResult && typeof decisionResult === "object" ? decisionResult.decision ?? null : null;
602
- if (decision === "deny") throw new Error("exec denied: user denied");
603
- if (!decision) {
604
- if (params.askFallback === "full") {
605
- approvedByAsk = true;
606
- approvalDecision = "allow-once";
607
- } else if (params.askFallback !== "allowlist") throw new Error("exec denied: approval required (approval UI not available)");
608
- }
609
- if (decision === "allow-once") {
610
- approvedByAsk = true;
611
- approvalDecision = "allow-once";
612
- }
613
- if (decision === "allow-always") {
614
- approvedByAsk = true;
615
- approvalDecision = "allow-always";
616
- }
617
- return {
618
- approvedByAsk,
619
- approvalDecision,
620
- approvalId
621
- };
622
- }
623
- function buildSystemRunInvokeParams(params) {
624
- const invokeParams = {
625
- nodeId: params.nodeId,
626
- command: "system.run",
627
- params: {
628
- command: params.approvalPlan.argv,
629
- rawCommand: params.approvalPlan.commandText,
630
- cwd: params.approvalPlan.cwd,
631
- env: params.nodeEnv,
632
- timeoutMs: params.timeoutMs,
633
- needsScreenRecording: params.needsScreenRecording
634
- },
635
- idempotencyKey: String(params.idempotencyKey ?? randomIdempotencyKey())
636
- };
637
- if (params.approvalPlan.agentId ?? params.fallbackAgentId) invokeParams.params.agentId = params.approvalPlan.agentId ?? params.fallbackAgentId;
638
- if (params.approvalPlan.sessionKey) invokeParams.params.sessionKey = params.approvalPlan.sessionKey;
639
- invokeParams.params.approved = params.approvedByAsk;
640
- if (params.approvalDecision) invokeParams.params.approvalDecision = params.approvalDecision;
641
- if (params.approvedByAsk && params.approvalId) invokeParams.params.runId = params.approvalId;
642
- if (params.invokeTimeout !== void 0) invokeParams.timeoutMs = params.invokeTimeout;
643
- return invokeParams;
644
- }
645
- function registerNodesInvokeCommands(nodes) {
646
- 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) => {
647
- await runNodesCommand("invoke", async () => {
648
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
649
- const command = String(opts.command ?? "").trim();
650
- if (!nodeId || !command) {
651
- const { error } = getNodesTheme();
652
- defaultRuntime.error(error("--node and --command required"));
653
- defaultRuntime.exit(1);
654
- return;
655
- }
656
- const params = JSON.parse(String(opts.params ?? "{}"));
657
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
658
- const invokeParams = {
659
- nodeId,
660
- command,
661
- params,
662
- idempotencyKey: String(opts.idempotencyKey ?? randomIdempotencyKey())
663
- };
664
- if (typeof timeoutMs === "number" && Number.isFinite(timeoutMs)) invokeParams.timeoutMs = timeoutMs;
665
- const result = await callGatewayCli("node.invoke", opts, invokeParams);
666
- defaultRuntime.log(JSON.stringify(result, null, 2));
667
- });
668
- }), { timeoutMs: 3e4 });
669
- 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) => {
670
- await runNodesCommand("run", async () => {
671
- const cfg = loadConfig();
672
- const agentId = opts.agent?.trim() || resolveDefaultAgentId(cfg);
673
- const execDefaults = resolveExecDefaults(cfg, agentId);
674
- const raw = typeof opts.raw === "string" ? opts.raw.trim() : "";
675
- if (raw && Array.isArray(command) && command.length > 0) throw new Error("use --raw or argv, not both");
676
- if (!raw && (!Array.isArray(command) || command.length === 0)) throw new Error("command required");
677
- const nodeQuery = String(opts.node ?? "").trim() || execDefaults?.node?.trim() || "";
678
- if (!nodeQuery) throw new Error("node required (set --node or tools.exec.node)");
679
- const nodeId = await resolveNodeId(opts, nodeQuery);
680
- const preparedContext = await prepareNodesRunContext({
681
- opts,
682
- command,
683
- raw,
684
- nodeId,
685
- agentId,
686
- execDefaults
687
- });
688
- const approvalPlan = preparedContext.prepared.plan;
689
- const policy = resolveNodesRunPolicy(opts, execDefaults);
690
- const approvals = await resolveNodeApprovals({
691
- opts,
692
- nodeId,
693
- agentId,
694
- security: policy.security,
695
- ask: policy.ask
696
- });
697
- if (approvals.hostSecurity === "deny") throw new Error("exec denied: host=node security=deny");
698
- const approvalResult = await maybeRequestNodesRunApproval({
699
- opts,
700
- nodeId,
701
- agentId,
702
- approvalPlan,
703
- hostSecurity: approvals.hostSecurity,
704
- hostAsk: approvals.hostAsk,
705
- askFallback: approvals.askFallback
706
- });
707
- const result = await callGatewayCli("node.invoke", opts, buildSystemRunInvokeParams({
708
- nodeId,
709
- approvalPlan,
710
- nodeEnv: preparedContext.nodeEnv,
711
- timeoutMs: preparedContext.timeoutMs,
712
- invokeTimeout: preparedContext.invokeTimeout,
713
- approvedByAsk: approvalResult.approvedByAsk,
714
- approvalDecision: approvalResult.approvalDecision,
715
- approvalId: approvalResult.approvalId,
716
- idempotencyKey: opts.idempotencyKey,
717
- fallbackAgentId: agentId,
718
- needsScreenRecording: opts.needsScreenRecording === true
719
- }));
720
- if (opts.json) {
721
- defaultRuntime.log(JSON.stringify(result, null, 2));
722
- return;
723
- }
724
- const payload = typeof result === "object" && result !== null ? result.payload : void 0;
725
- const stdout = typeof payload?.stdout === "string" ? payload.stdout : "";
726
- const stderr = typeof payload?.stderr === "string" ? payload.stderr : "";
727
- const exitCode = typeof payload?.exitCode === "number" ? payload.exitCode : null;
728
- const timedOut = payload?.timedOut === true;
729
- const success = payload?.success === true;
730
- if (stdout) process.stdout.write(stdout);
731
- if (stderr) process.stderr.write(stderr);
732
- if (timedOut) {
733
- const { error } = getNodesTheme();
734
- defaultRuntime.error(error("run timed out"));
735
- defaultRuntime.exit(1);
736
- return;
737
- }
738
- if (exitCode !== null && exitCode !== 0) {
739
- const hint = unauthorizedHintForMessage(`${stderr}\n${stdout}`);
740
- if (hint) {
741
- const { warn } = getNodesTheme();
742
- defaultRuntime.error(warn(hint));
743
- }
744
- }
745
- if (exitCode !== null && exitCode !== 0 && !success) {
746
- const { error } = getNodesTheme();
747
- defaultRuntime.error(error(`run exit ${exitCode}`));
748
- defaultRuntime.exit(1);
749
- return;
750
- }
751
- });
752
- }), { timeoutMs: 35e3 });
753
- }
754
- //#endregion
755
- //#region src/cli/nodes-cli/register.location.ts
756
- function registerNodesLocationCommands(nodes) {
757
- 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) => {
758
- await runNodesCommand("location get", async () => {
759
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
760
- const maxAgeMs = opts.maxAge ? Number.parseInt(String(opts.maxAge), 10) : void 0;
761
- const desiredAccuracyRaw = typeof opts.accuracy === "string" ? opts.accuracy.trim().toLowerCase() : void 0;
762
- const desiredAccuracy = desiredAccuracyRaw === "coarse" || desiredAccuracyRaw === "balanced" || desiredAccuracyRaw === "precise" ? desiredAccuracyRaw : void 0;
763
- const timeoutMs = opts.locationTimeout ? Number.parseInt(String(opts.locationTimeout), 10) : void 0;
764
- const invokeTimeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
765
- const invokeParams = {
766
- nodeId,
767
- command: "location.get",
768
- params: {
769
- maxAgeMs: Number.isFinite(maxAgeMs) ? maxAgeMs : void 0,
770
- desiredAccuracy,
771
- timeoutMs: Number.isFinite(timeoutMs) ? timeoutMs : void 0
772
- },
773
- idempotencyKey: randomIdempotencyKey()
774
- };
775
- if (typeof invokeTimeoutMs === "number" && Number.isFinite(invokeTimeoutMs)) invokeParams.timeoutMs = invokeTimeoutMs;
776
- const raw = await callGatewayCli("node.invoke", opts, invokeParams);
777
- const res = typeof raw === "object" && raw !== null ? raw : {};
778
- const payload = res.payload && typeof res.payload === "object" ? res.payload : {};
779
- if (opts.json) {
780
- defaultRuntime.log(JSON.stringify(payload, null, 2));
781
- return;
782
- }
783
- const lat = payload.lat;
784
- const lon = payload.lon;
785
- const acc = payload.accuracyMeters;
786
- if (typeof lat === "number" && typeof lon === "number") {
787
- const accText = typeof acc === "number" ? ` ±${acc.toFixed(1)}m` : "";
788
- defaultRuntime.log(`${lat},${lon}${accText}`);
789
- return;
790
- }
791
- defaultRuntime.log(JSON.stringify(payload));
792
- });
793
- }), { timeoutMs: 3e4 });
794
- }
795
- //#endregion
796
- //#region src/cli/nodes-cli/register.notify.ts
797
- function registerNodesNotifyCommand(nodes) {
798
- 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) => {
799
- await runNodesCommand("notify", async () => {
800
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
801
- const title = String(opts.title ?? "").trim();
802
- const body = String(opts.body ?? "").trim();
803
- if (!title && !body) throw new Error("missing --title or --body");
804
- const invokeTimeout = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
805
- const invokeParams = {
806
- nodeId,
807
- command: "system.notify",
808
- params: {
809
- title,
810
- body,
811
- sound: opts.sound,
812
- priority: opts.priority,
813
- delivery: opts.delivery
814
- },
815
- idempotencyKey: String(opts.idempotencyKey ?? randomIdempotencyKey())
816
- };
817
- if (typeof invokeTimeout === "number" && Number.isFinite(invokeTimeout)) invokeParams.timeoutMs = invokeTimeout;
818
- const result = await callGatewayCli("node.invoke", opts, invokeParams);
819
- if (opts.json) {
820
- defaultRuntime.log(JSON.stringify(result, null, 2));
821
- return;
822
- }
823
- const { ok } = getNodesTheme();
824
- defaultRuntime.log(ok("notify ok"));
825
- });
826
- }));
827
- }
828
- //#endregion
829
- //#region src/cli/nodes-cli/pairing-render.ts
830
- function renderPendingPairingRequestsTable(params) {
831
- const { pending, now, tableWidth, theme } = params;
832
- const rows = pending.map((r) => ({
833
- Request: r.requestId,
834
- Node: r.displayName?.trim() ? r.displayName.trim() : r.nodeId,
835
- IP: r.remoteIp ?? "",
836
- Requested: typeof r.ts === "number" ? formatTimeAgo(Math.max(0, now - r.ts)) : theme.muted("unknown"),
837
- Repair: r.isRepair ? theme.warn("yes") : ""
838
- }));
839
- return {
840
- heading: theme.heading("Pending"),
841
- table: renderTable({
842
- width: tableWidth,
843
- columns: [
844
- {
845
- key: "Request",
846
- header: "Request",
847
- minWidth: 8
848
- },
849
- {
850
- key: "Node",
851
- header: "Node",
852
- minWidth: 14,
853
- flex: true
854
- },
855
- {
856
- key: "IP",
857
- header: "IP",
858
- minWidth: 10
859
- },
860
- {
861
- key: "Requested",
862
- header: "Requested",
863
- minWidth: 12
864
- },
865
- {
866
- key: "Repair",
867
- header: "Repair",
868
- minWidth: 6
869
- }
870
- ],
871
- rows
872
- }).trimEnd()
873
- };
874
- }
875
- //#endregion
876
- //#region src/cli/nodes-cli/register.pairing.ts
877
- function registerNodesPairingCommands(nodes) {
878
- nodesCallOpts(nodes.command("pending").description("List pending pairing requests").action(async (opts) => {
879
- await runNodesCommand("pending", async () => {
880
- const { pending } = parsePairingList(await callGatewayCli("node.pair.list", opts, {}));
881
- if (opts.json) {
882
- defaultRuntime.log(JSON.stringify(pending, null, 2));
883
- return;
884
- }
885
- if (pending.length === 0) {
886
- const { muted } = getNodesTheme();
887
- defaultRuntime.log(muted("No pending pairing requests."));
888
- return;
889
- }
890
- const { heading, warn, muted } = getNodesTheme();
891
- const tableWidth = getTerminalTableWidth();
892
- const rendered = renderPendingPairingRequestsTable({
893
- pending,
894
- now: Date.now(),
895
- tableWidth,
896
- theme: {
897
- heading,
898
- warn,
899
- muted
900
- }
901
- });
902
- defaultRuntime.log(rendered.heading);
903
- defaultRuntime.log(rendered.table);
904
- });
905
- }));
906
- nodesCallOpts(nodes.command("approve").description("Approve a pending pairing request").argument("<requestId>", "Pending request id").action(async (requestId, opts) => {
907
- await runNodesCommand("approve", async () => {
908
- const result = await callGatewayCli("node.pair.approve", opts, { requestId });
909
- defaultRuntime.log(JSON.stringify(result, null, 2));
910
- });
911
- }));
912
- nodesCallOpts(nodes.command("reject").description("Reject a pending pairing request").argument("<requestId>", "Pending request id").action(async (requestId, opts) => {
913
- await runNodesCommand("reject", async () => {
914
- const result = await callGatewayCli("node.pair.reject", opts, { requestId });
915
- defaultRuntime.log(JSON.stringify(result, null, 2));
916
- });
917
- }));
918
- 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) => {
919
- await runNodesCommand("rename", async () => {
920
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
921
- const name = String(opts.name ?? "").trim();
922
- if (!nodeId || !name) {
923
- defaultRuntime.error("--node and --name required");
924
- defaultRuntime.exit(1);
925
- return;
926
- }
927
- const result = await callGatewayCli("node.rename", opts, {
928
- nodeId,
929
- displayName: name
930
- });
931
- if (opts.json) {
932
- defaultRuntime.log(JSON.stringify(result, null, 2));
933
- return;
934
- }
935
- const { ok } = getNodesTheme();
936
- defaultRuntime.log(ok(`node rename ok: ${nodeId} -> ${name}`));
937
- });
938
- }));
939
- }
940
- //#endregion
941
- //#region src/cli/nodes-cli/register.push.ts
942
- function normalizeEnvironment(value) {
943
- if (typeof value !== "string") return null;
944
- const normalized = value.trim().toLowerCase();
945
- if (normalized === "sandbox" || normalized === "production") return normalized;
946
- return null;
947
- }
948
- function registerNodesPushCommand(nodes) {
949
- 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", "moldClaw").option("--body <text>", "Push body").option("--environment <sandbox|production>", "Override APNs environment").action(async (opts) => {
950
- await runNodesCommand("push", async () => {
951
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
952
- const title = String(opts.title ?? "").trim() || "moldClaw";
953
- const body = String(opts.body ?? "").trim() || `Push test for node ${nodeId}`;
954
- const environment = normalizeEnvironment(opts.environment);
955
- if (opts.environment && !environment) throw new Error("invalid --environment (use sandbox|production)");
956
- const params = {
957
- nodeId,
958
- title,
959
- body
960
- };
961
- if (environment) params.environment = environment;
962
- const result = await callGatewayCli("push.test", opts, params);
963
- if (opts.json) {
964
- defaultRuntime.log(JSON.stringify(result, null, 2));
965
- return;
966
- }
967
- const parsed = typeof result === "object" && result !== null ? result : {};
968
- const ok = parsed.ok === true;
969
- const status = typeof parsed.status === "number" ? parsed.status : 0;
970
- const reason = typeof parsed.reason === "string" && parsed.reason.trim().length > 0 ? parsed.reason.trim() : void 0;
971
- const env = typeof parsed.environment === "string" && parsed.environment.trim().length > 0 ? parsed.environment.trim() : "unknown";
972
- const { ok: okLabel, error: errorLabel } = getNodesTheme();
973
- const label = ok ? okLabel : errorLabel;
974
- defaultRuntime.log(label(`push.test status=${status} ok=${ok} env=${env}`));
975
- if (reason) defaultRuntime.log(`reason: ${reason}`);
976
- });
977
- }), { timeoutMs: 25e3 });
978
- }
979
- //#endregion
980
- //#region src/cli/nodes-cli/register.screen.ts
981
- function registerNodesScreenCommands(nodes) {
982
- 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) => {
983
- await runNodesCommand("screen record", async () => {
984
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
985
- const durationMs = parseDurationMs(opts.duration ?? "");
986
- const screenIndex = Number.parseInt(String(opts.screen ?? "0"), 10);
987
- const fps = Number.parseFloat(String(opts.fps ?? "10"));
988
- const timeoutMs = opts.invokeTimeout ? Number.parseInt(String(opts.invokeTimeout), 10) : void 0;
989
- const raw = await callGatewayCli("node.invoke", opts, buildNodeInvokeParams({
990
- nodeId,
991
- command: "screen.record",
992
- params: {
993
- durationMs: Number.isFinite(durationMs) ? durationMs : void 0,
994
- screenIndex: Number.isFinite(screenIndex) ? screenIndex : void 0,
995
- fps: Number.isFinite(fps) ? fps : void 0,
996
- format: "mp4",
997
- includeAudio: opts.audio !== false
998
- },
999
- timeoutMs
1000
- }));
1001
- const parsed = parseScreenRecordPayload((typeof raw === "object" && raw !== null ? raw : {}).payload);
1002
- const written = await writeScreenRecordToFile(opts.out ?? screenRecordTempPath({ ext: parsed.format || "mp4" }), parsed.base64);
1003
- if (opts.json) {
1004
- defaultRuntime.log(JSON.stringify({ file: {
1005
- path: written.path,
1006
- durationMs: parsed.durationMs,
1007
- fps: parsed.fps,
1008
- screenIndex: parsed.screenIndex,
1009
- hasAudio: parsed.hasAudio
1010
- } }, null, 2));
1011
- return;
1012
- }
1013
- defaultRuntime.log(`MEDIA:${shortenHomePath(written.path)}`);
1014
- });
1015
- }), { timeoutMs: 18e4 });
1016
- }
1017
- //#endregion
1018
- //#region src/cli/nodes-cli/register.status.ts
1019
- function formatVersionLabel(raw) {
1020
- const trimmed = raw.trim();
1021
- if (!trimmed) return raw;
1022
- if (trimmed.toLowerCase().startsWith("v")) return trimmed;
1023
- return /^\d/.test(trimmed) ? `v${trimmed}` : trimmed;
1024
- }
1025
- function resolveNodeVersions(node) {
1026
- const core = node.coreVersion?.trim() || void 0;
1027
- const ui = node.uiVersion?.trim() || void 0;
1028
- if (core || ui) return {
1029
- core,
1030
- ui
1031
- };
1032
- const legacy = node.version?.trim();
1033
- if (!legacy) return {
1034
- core: void 0,
1035
- ui: void 0
1036
- };
1037
- const platform = node.platform?.trim().toLowerCase() ?? "";
1038
- return platform === "darwin" || platform === "linux" || platform === "win32" || platform === "windows" ? {
1039
- core: legacy,
1040
- ui: void 0
1041
- } : {
1042
- core: void 0,
1043
- ui: legacy
1044
- };
1045
- }
1046
- function formatNodeVersions(node) {
1047
- const { core, ui } = resolveNodeVersions(node);
1048
- const parts = [];
1049
- if (core) parts.push(`core ${formatVersionLabel(core)}`);
1050
- if (ui) parts.push(`ui ${formatVersionLabel(ui)}`);
1051
- return parts.length > 0 ? parts.join(" · ") : null;
1052
- }
1053
- function formatPathEnv(raw) {
1054
- if (typeof raw !== "string") return null;
1055
- const trimmed = raw.trim();
1056
- if (!trimmed) return null;
1057
- const parts = trimmed.split(":").filter(Boolean);
1058
- return shortenHomeInString(parts.length <= 3 ? trimmed : `${parts.slice(0, 2).join(":")}:…:${parts.slice(-1)[0]}`);
1059
- }
1060
- function parseSinceMs(raw, label) {
1061
- if (raw === void 0 || raw === null) return;
1062
- const value = typeof raw === "string" ? raw.trim() : typeof raw === "number" ? String(raw).trim() : null;
1063
- if (value === null) {
1064
- defaultRuntime.error(`${label}: invalid duration value`);
1065
- defaultRuntime.exit(1);
1066
- return;
1067
- }
1068
- if (!value) return;
1069
- try {
1070
- return parseDurationMs(value);
1071
- } catch (err) {
1072
- const message = err instanceof Error ? err.message : String(err);
1073
- defaultRuntime.error(`${label}: ${message}`);
1074
- defaultRuntime.exit(1);
1075
- return;
1076
- }
1077
- }
1078
- function registerNodesStatusCommands(nodes) {
1079
- 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) => {
1080
- await runNodesCommand("status", async () => {
1081
- const connectedOnly = Boolean(opts.connected);
1082
- const sinceMs = parseSinceMs(opts.lastConnected, "Invalid --last-connected");
1083
- const result = await callGatewayCli("node.list", opts, {});
1084
- const obj = typeof result === "object" && result !== null ? result : {};
1085
- const { ok, warn, muted } = getNodesTheme();
1086
- const tableWidth = getTerminalTableWidth();
1087
- const now = Date.now();
1088
- const nodes = parseNodeList(result);
1089
- const lastConnectedById = sinceMs !== void 0 ? new Map(parsePairingList(await callGatewayCli("node.pair.list", opts, {})).paired.map((entry) => [entry.nodeId, entry])) : null;
1090
- const filtered = nodes.filter((n) => {
1091
- if (connectedOnly && !n.connected) return false;
1092
- if (sinceMs !== void 0) {
1093
- const paired = lastConnectedById?.get(n.nodeId);
1094
- const lastConnectedAtMs = typeof paired?.lastConnectedAtMs === "number" ? paired.lastConnectedAtMs : typeof n.connectedAtMs === "number" ? n.connectedAtMs : void 0;
1095
- if (typeof lastConnectedAtMs !== "number") return false;
1096
- if (now - lastConnectedAtMs > sinceMs) return false;
1097
- }
1098
- return true;
1099
- });
1100
- if (opts.json) {
1101
- const ts = typeof obj.ts === "number" ? obj.ts : Date.now();
1102
- defaultRuntime.log(JSON.stringify({
1103
- ...obj,
1104
- ts,
1105
- nodes: filtered
1106
- }, null, 2));
1107
- return;
1108
- }
1109
- const pairedCount = filtered.filter((n) => Boolean(n.paired)).length;
1110
- const connectedCount = filtered.filter((n) => Boolean(n.connected)).length;
1111
- const filteredLabel = filtered.length !== nodes.length ? ` (of ${nodes.length})` : "";
1112
- defaultRuntime.log(`Known: ${filtered.length}${filteredLabel} · Paired: ${pairedCount} · Connected: ${connectedCount}`);
1113
- if (filtered.length === 0) return;
1114
- const rows = filtered.map((n) => {
1115
- const name = n.displayName?.trim() ? n.displayName.trim() : n.nodeId;
1116
- const perms = formatPermissions(n.permissions);
1117
- const versions = formatNodeVersions(n);
1118
- const pathEnv = formatPathEnv(n.pathEnv);
1119
- const detailParts = [
1120
- n.deviceFamily ? `device: ${n.deviceFamily}` : null,
1121
- n.modelIdentifier ? `hw: ${n.modelIdentifier}` : null,
1122
- perms ? `perms: ${perms}` : null,
1123
- versions,
1124
- pathEnv ? `path: ${pathEnv}` : null
1125
- ].filter(Boolean);
1126
- const caps = Array.isArray(n.caps) ? n.caps.map(String).filter(Boolean).toSorted().join(", ") : "?";
1127
- const paired = n.paired ? ok("paired") : warn("unpaired");
1128
- const connected = n.connected ? ok("connected") : muted("disconnected");
1129
- const since = typeof n.connectedAtMs === "number" ? ` (${formatTimeAgo(Math.max(0, now - n.connectedAtMs))})` : "";
1130
- return {
1131
- Node: name,
1132
- ID: n.nodeId,
1133
- IP: n.remoteIp ?? "",
1134
- Detail: detailParts.join(" · "),
1135
- Status: `${paired} · ${connected}${since}`,
1136
- Caps: caps
1137
- };
1138
- });
1139
- defaultRuntime.log(renderTable({
1140
- width: tableWidth,
1141
- columns: [
1142
- {
1143
- key: "Node",
1144
- header: "Node",
1145
- minWidth: 14,
1146
- flex: true
1147
- },
1148
- {
1149
- key: "ID",
1150
- header: "ID",
1151
- minWidth: 10
1152
- },
1153
- {
1154
- key: "IP",
1155
- header: "IP",
1156
- minWidth: 10
1157
- },
1158
- {
1159
- key: "Detail",
1160
- header: "Detail",
1161
- minWidth: 18,
1162
- flex: true
1163
- },
1164
- {
1165
- key: "Status",
1166
- header: "Status",
1167
- minWidth: 18
1168
- },
1169
- {
1170
- key: "Caps",
1171
- header: "Caps",
1172
- minWidth: 12,
1173
- flex: true
1174
- }
1175
- ],
1176
- rows
1177
- }).trimEnd());
1178
- });
1179
- }));
1180
- nodesCallOpts(nodes.command("describe").description("Describe a node (capabilities + supported invoke commands)").requiredOption("--node <idOrNameOrIp>", "Node id, name, or IP").action(async (opts) => {
1181
- await runNodesCommand("describe", async () => {
1182
- const nodeId = await resolveNodeId(opts, String(opts.node ?? ""));
1183
- const result = await callGatewayCli("node.describe", opts, { nodeId });
1184
- if (opts.json) {
1185
- defaultRuntime.log(JSON.stringify(result, null, 2));
1186
- return;
1187
- }
1188
- const obj = typeof result === "object" && result !== null ? result : {};
1189
- const displayName = typeof obj.displayName === "string" ? obj.displayName : nodeId;
1190
- const connected = Boolean(obj.connected);
1191
- const paired = Boolean(obj.paired);
1192
- const caps = Array.isArray(obj.caps) ? obj.caps.map(String).filter(Boolean).toSorted() : null;
1193
- const commands = Array.isArray(obj.commands) ? obj.commands.map(String).filter(Boolean).toSorted() : [];
1194
- const perms = formatPermissions(obj.permissions);
1195
- const family = typeof obj.deviceFamily === "string" ? obj.deviceFamily : null;
1196
- const model = typeof obj.modelIdentifier === "string" ? obj.modelIdentifier : null;
1197
- const ip = typeof obj.remoteIp === "string" ? obj.remoteIp : null;
1198
- const pathEnv = typeof obj.pathEnv === "string" ? obj.pathEnv : null;
1199
- const versions = formatNodeVersions(obj);
1200
- const { heading, ok, warn, muted } = getNodesTheme();
1201
- const status = `${paired ? ok("paired") : warn("unpaired")} · ${connected ? ok("connected") : muted("disconnected")}`;
1202
- const tableWidth = getTerminalTableWidth();
1203
- const rows = [
1204
- {
1205
- Field: "ID",
1206
- Value: nodeId
1207
- },
1208
- displayName ? {
1209
- Field: "Name",
1210
- Value: displayName
1211
- } : null,
1212
- ip ? {
1213
- Field: "IP",
1214
- Value: ip
1215
- } : null,
1216
- family ? {
1217
- Field: "Device",
1218
- Value: family
1219
- } : null,
1220
- model ? {
1221
- Field: "Model",
1222
- Value: model
1223
- } : null,
1224
- perms ? {
1225
- Field: "Perms",
1226
- Value: perms
1227
- } : null,
1228
- versions ? {
1229
- Field: "Version",
1230
- Value: versions
1231
- } : null,
1232
- pathEnv ? {
1233
- Field: "PATH",
1234
- Value: pathEnv
1235
- } : null,
1236
- {
1237
- Field: "Status",
1238
- Value: status
1239
- },
1240
- {
1241
- Field: "Caps",
1242
- Value: caps ? caps.join(", ") : "?"
1243
- }
1244
- ].filter(Boolean);
1245
- defaultRuntime.log(heading("Node"));
1246
- defaultRuntime.log(renderTable({
1247
- width: tableWidth,
1248
- columns: [{
1249
- key: "Field",
1250
- header: "Field",
1251
- minWidth: 8
1252
- }, {
1253
- key: "Value",
1254
- header: "Value",
1255
- minWidth: 24,
1256
- flex: true
1257
- }],
1258
- rows
1259
- }).trimEnd());
1260
- defaultRuntime.log("");
1261
- defaultRuntime.log(heading("Commands"));
1262
- if (commands.length === 0) {
1263
- defaultRuntime.log(muted("- (none reported)"));
1264
- return;
1265
- }
1266
- for (const c of commands) defaultRuntime.log(`- ${c}`);
1267
- });
1268
- }));
1269
- 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) => {
1270
- await runNodesCommand("list", async () => {
1271
- const connectedOnly = Boolean(opts.connected);
1272
- const sinceMs = parseSinceMs(opts.lastConnected, "Invalid --last-connected");
1273
- const { pending, paired } = parsePairingList(await callGatewayCli("node.pair.list", opts, {}));
1274
- const { heading, muted, warn } = getNodesTheme();
1275
- const tableWidth = getTerminalTableWidth();
1276
- const now = Date.now();
1277
- const hasFilters = connectedOnly || sinceMs !== void 0;
1278
- const pendingRows = hasFilters ? [] : pending;
1279
- const connectedById = hasFilters ? new Map(parseNodeList(await callGatewayCli("node.list", opts, {})).map((node) => [node.nodeId, node])) : null;
1280
- const filteredPaired = paired.filter((node) => {
1281
- if (connectedOnly) {
1282
- if (!(connectedById?.get(node.nodeId))?.connected) return false;
1283
- }
1284
- if (sinceMs !== void 0) {
1285
- const live = connectedById?.get(node.nodeId);
1286
- const lastConnectedAtMs = typeof node.lastConnectedAtMs === "number" ? node.lastConnectedAtMs : typeof live?.connectedAtMs === "number" ? live.connectedAtMs : void 0;
1287
- if (typeof lastConnectedAtMs !== "number") return false;
1288
- if (now - lastConnectedAtMs > sinceMs) return false;
1289
- }
1290
- return true;
1291
- });
1292
- const filteredLabel = hasFilters && filteredPaired.length !== paired.length ? ` (of ${paired.length})` : "";
1293
- defaultRuntime.log(`Pending: ${pendingRows.length} · Paired: ${filteredPaired.length}${filteredLabel}`);
1294
- if (opts.json) {
1295
- defaultRuntime.log(JSON.stringify({
1296
- pending: pendingRows,
1297
- paired: filteredPaired
1298
- }, null, 2));
1299
- return;
1300
- }
1301
- if (pendingRows.length > 0) {
1302
- const rendered = renderPendingPairingRequestsTable({
1303
- pending: pendingRows,
1304
- now,
1305
- tableWidth,
1306
- theme: {
1307
- heading,
1308
- warn,
1309
- muted
1310
- }
1311
- });
1312
- defaultRuntime.log("");
1313
- defaultRuntime.log(rendered.heading);
1314
- defaultRuntime.log(rendered.table);
1315
- }
1316
- if (filteredPaired.length > 0) {
1317
- const pairedRows = filteredPaired.map((n) => {
1318
- const live = connectedById?.get(n.nodeId);
1319
- const lastConnectedAtMs = typeof n.lastConnectedAtMs === "number" ? n.lastConnectedAtMs : typeof live?.connectedAtMs === "number" ? live.connectedAtMs : void 0;
1320
- return {
1321
- Node: n.displayName?.trim() ? n.displayName.trim() : n.nodeId,
1322
- Id: n.nodeId,
1323
- IP: n.remoteIp ?? "",
1324
- LastConnect: typeof lastConnectedAtMs === "number" ? formatTimeAgo(Math.max(0, now - lastConnectedAtMs)) : muted("unknown")
1325
- };
1326
- });
1327
- defaultRuntime.log("");
1328
- defaultRuntime.log(heading("Paired"));
1329
- defaultRuntime.log(renderTable({
1330
- width: tableWidth,
1331
- columns: [
1332
- {
1333
- key: "Node",
1334
- header: "Node",
1335
- minWidth: 14,
1336
- flex: true
1337
- },
1338
- {
1339
- key: "Id",
1340
- header: "ID",
1341
- minWidth: 10
1342
- },
1343
- {
1344
- key: "IP",
1345
- header: "IP",
1346
- minWidth: 10
1347
- },
1348
- {
1349
- key: "LastConnect",
1350
- header: "Last Connect",
1351
- minWidth: 14
1352
- }
1353
- ],
1354
- rows: pairedRows
1355
- }).trimEnd());
1356
- }
1357
- });
1358
- }));
1359
- }
1360
- //#endregion
1361
- //#region src/cli/nodes-cli/register.ts
1362
- function registerNodesCli(program) {
1363
- const nodes = program.command("nodes").description("Manage gateway-owned nodes (pairing, status, invoke, and media)").addHelpText("after", () => `\n${theme.heading("Examples:")}\n${formatHelpExamples([
1364
- ["moldclaw nodes status", "List known nodes with live status."],
1365
- ["moldclaw nodes pairing pending", "Show pending node pairing requests."],
1366
- ["moldclaw nodes run --node <id> --raw \"uname -a\"", "Run a shell command on a node."],
1367
- ["moldclaw nodes camera snap --node <id>", "Capture a photo from a node camera."]
1368
- ])}\n\n${theme.muted("Docs:")} ${formatDocsLink("/cli/nodes", "docs.moldclaw.ai/cli/nodes")}\n`);
1369
- registerNodesStatusCommands(nodes);
1370
- registerNodesPairingCommands(nodes);
1371
- registerNodesInvokeCommands(nodes);
1372
- registerNodesNotifyCommand(nodes);
1373
- registerNodesPushCommand(nodes);
1374
- registerNodesCanvasCommands(nodes);
1375
- registerNodesCameraCommands(nodes);
1376
- registerNodesScreenCommands(nodes);
1377
- registerNodesLocationCommands(nodes);
1378
- }
1379
- //#endregion
1380
- export { registerNodesCli };