remoteclaw 0.1.0-next.87fb2cd → 0.1.0-next.9f7caba

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 (849) hide show
  1. package/dist/accounts-B5BNJ_lk.js +36 -0
  2. package/dist/accounts-BnkzjNsj.js +32 -0
  3. package/dist/accounts-DOwpPNpJ.js +47 -0
  4. package/dist/accounts-Y6fBCsx_.js +272 -0
  5. package/dist/ack-reactions-DndoGKeN.js +446 -0
  6. package/dist/ack-reactions-XQPdJAzb.js +446 -0
  7. package/dist/acp-cli-C2sAKfGR.js +1326 -0
  8. package/dist/acp-cli-DSmofBAf.js +1320 -0
  9. package/dist/active-listener-D4pocaWh.js +37 -0
  10. package/dist/agent-BA1XT2jG.js +728 -0
  11. package/dist/agent-CyVs7WvP.js +727 -0
  12. package/dist/agent-helpers-DlqwUqOd.js +606 -0
  13. package/dist/agent-scope-BDF8U7HM.js +99 -0
  14. package/dist/agent-scope-Dzc3Pxwr.js +101 -0
  15. package/dist/agents-GDnr7rw4.js +788 -0
  16. package/dist/agents.config-Ba4A6sdg.js +116 -0
  17. package/dist/agents.config-CeN3byLA.js +116 -0
  18. package/dist/audio-preflight-BFPZB_BA.js +69 -0
  19. package/dist/audio-preflight-CowiaUIn.js +64 -0
  20. package/dist/audit-BHUOvUJw.js +3149 -0
  21. package/dist/audit-oXRhFtwT.js +3149 -0
  22. package/dist/auth-0nvm_vu0.js +448 -0
  23. package/dist/auth-DCGEkWB5.js +448 -0
  24. package/dist/auth-profiles-DJsaxEsz.js +281 -0
  25. package/dist/banner--jCLPIfU.js +294 -0
  26. package/dist/binaries-DEBQrQj9.js +13 -0
  27. package/dist/bindings-C6J0GYWO.js +69 -0
  28. package/dist/bindings-D0yqi_XP.js +69 -0
  29. package/dist/bonjour-discovery-JS2eV51P.js +378 -0
  30. package/dist/bonjour-discovery-hfRH88nW.js +378 -0
  31. package/dist/boot/handler.js +30 -33
  32. package/dist/browser-cli-BABicrdh.js +1692 -0
  33. package/dist/browser-cli-Qa_1PYDv.js +1687 -0
  34. package/dist/build-info.json +3 -3
  35. package/dist/call-fGA-3SDL.js +2828 -0
  36. package/dist/call-jLXWNKPQ.js +2829 -0
  37. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  38. package/dist/catalog-BzeCPOus.js +185 -0
  39. package/dist/catalog-oYxNmkeA.js +185 -0
  40. package/dist/channel-account-context-BVnz5r1H.js +550 -0
  41. package/dist/channel-account-context-BcPTaTZb.js +550 -0
  42. package/dist/channel-activity-BuZbH6WD.js +94 -0
  43. package/dist/channel-activity-CDdk0baN.js +94 -0
  44. package/dist/channel-activity-hL4KZrCz.js +292 -0
  45. package/dist/channel-options-XhTwtBf5.js +33 -0
  46. package/dist/channel-options-ctxY53Lc.js +32 -0
  47. package/dist/channel-selection-CMK4YLlO.js +51 -0
  48. package/dist/channel-selection-_eCHA2U9.js +51 -0
  49. package/dist/channel-web-BZpC6hhV.js +2134 -0
  50. package/dist/channel-web-CQ6_87Mm.js +2136 -0
  51. package/dist/channels-cli-BNl9vUWn.js +1421 -0
  52. package/dist/channels-cli-DZR57uHI.js +1426 -0
  53. package/dist/channels-status-issues-CVIgTe2p.js +18 -0
  54. package/dist/channels-status-issues-DcC43ljl.js +18 -0
  55. package/dist/chat-envelope-CRqgofiw.js +248 -0
  56. package/dist/chrome-8vydo3dJ.js +1733 -0
  57. package/dist/chrome-B_rPhRU5.js +1732 -0
  58. package/dist/chunk-Cx-gs159.js +341 -0
  59. package/dist/clack-prompter-BzCKGyUs.js +121 -0
  60. package/dist/clack-prompter-D7MCzOPT.js +122 -0
  61. package/dist/cli/daemon-cli.js +1 -1
  62. package/dist/cli-CpAjRQ-P.js +125 -0
  63. package/dist/cli-DUXK9wJZ.js +130 -0
  64. package/dist/clipboard-DIewy_WG.js +31 -0
  65. package/dist/command-logger/handler.js +1 -1
  66. package/dist/command-registry-DJNQEtnc.js +215 -0
  67. package/dist/commands-CX-o6Gzn.js +41 -0
  68. package/dist/commands-ChY7s9hy.js +41 -0
  69. package/dist/commands-registry-C-NFTH7P.js +891 -0
  70. package/dist/commands-registry-C_sd8Lmg.js +892 -0
  71. package/dist/common-Gc07uSGw.js +156 -0
  72. package/dist/completion-cli-DhuIE5Go.js +452 -0
  73. package/dist/completion-cli-DpaiSYzH.js +452 -0
  74. package/dist/config-BzYPJgWg.js +6919 -0
  75. package/dist/config-CxSZl93L.js +6917 -0
  76. package/dist/config-cli-CWeRxEJK.js +241 -0
  77. package/dist/config-cli-CYQ2SdRU.js +246 -0
  78. package/dist/config-guard-CYJDizl5.js +97 -0
  79. package/dist/config-guard-D1Q3ZQbe.js +75 -0
  80. package/dist/config-validation-BQqpcnJj.js +18 -0
  81. package/dist/config-validation-DFt9nI1w.js +18 -0
  82. package/dist/configure-BQw2dIdc.js +891 -0
  83. package/dist/configure-CXTvRKTB.js +889 -0
  84. package/dist/constants-CMq8PtHp.js +70 -0
  85. package/dist/constants-tLOgmZZ1.js +70 -0
  86. package/dist/control-auth-DWYlgWkO.js +397 -0
  87. package/dist/control-auth-pDCKtSlm.js +397 -0
  88. package/dist/control-ui/assets/index-D8iWlx90.js +7738 -0
  89. package/dist/control-ui/assets/index-D8iWlx90.js.map +1 -0
  90. package/dist/control-ui/assets/index-D_fjkN3g.css +1 -0
  91. package/dist/control-ui/index.html +2 -2
  92. package/dist/control-ui-assets-BQiFibyu.js +186 -0
  93. package/dist/control-ui-assets-DvQAtkDy.js +186 -0
  94. package/dist/cron-cli-B06geKKo.js +490 -0
  95. package/dist/cron-cli-Ct2y3uRB.js +495 -0
  96. package/dist/daemon-cli-Bt5Kcq3U.js +1197 -0
  97. package/dist/daemon-cli-Cd0bKq3g.js +1199 -0
  98. package/dist/daemon-cli.js +29 -69
  99. package/dist/daemon-install-C3Q8Jcx3.js +55 -0
  100. package/dist/daemon-install-helpers-B7UgD_mo.js +462 -0
  101. package/dist/daemon-install-helpers-Crqe5m8B.js +462 -0
  102. package/dist/daemon-install-oa7I86B_.js +60 -0
  103. package/dist/deliver-04fDIQb1.js +481 -0
  104. package/dist/deliver-D4QqtgMj.js +481 -0
  105. package/dist/delivery-queue-BM3aWQIK.js +244 -0
  106. package/dist/devices-cli-B7jdFjR6.js +316 -0
  107. package/dist/devices-cli-D-YMJZn1.js +321 -0
  108. package/dist/diagnostics-lMmEIZdJ.js +46 -0
  109. package/dist/diagnostics-rgiIJEXZ.js +46 -0
  110. package/dist/directory-cli-DWHQF2VD.js +222 -0
  111. package/dist/directory-cli-D_pT4Je0.js +217 -0
  112. package/dist/dm-policy-shared-BHRB2wzi.js +22 -0
  113. package/dist/dm-policy-shared-BTzThzqQ.js +22 -0
  114. package/dist/dns-cli-BbdtaLDe.js +202 -0
  115. package/dist/dns-cli-DghCMHgj.js +197 -0
  116. package/dist/dock-BtLbLczG.js +928 -0
  117. package/dist/dock-_qq4sBie.js +929 -0
  118. package/dist/doctor-completion-Cs6sL_IA.js +92 -0
  119. package/dist/doctor-completion-Cx2tN3vQ.js +92 -0
  120. package/dist/doctor-config-flow-CilyEptw.js +1934 -0
  121. package/dist/doctor-config-flow-PRWWIepI.js +1933 -0
  122. package/dist/enable-BEScoJBZ.js +59 -0
  123. package/dist/enable-Dt27_ZMm.js +59 -0
  124. package/dist/entry.js +1 -3
  125. package/dist/env-DUb5GiQe.js +60 -0
  126. package/dist/exec-D6PvFXKb.js +164 -0
  127. package/dist/export-html/template.css +0 -36
  128. package/dist/export-html/template.js +0 -26
  129. package/dist/extensionAPI.js +78 -77
  130. package/dist/fetch-Duxh68Ws.js +67 -0
  131. package/dist/fs-safe-S3Zvbabd.js +98 -0
  132. package/dist/gateway-cli-Mo6X1-yC.js +23756 -0
  133. package/dist/gateway-cli-P6QI1rgs.js +23761 -0
  134. package/dist/gateway-rpc-AYvHI3Um.js +28 -0
  135. package/dist/gateway-rpc-Bsz_VM32.js +28 -0
  136. package/dist/gmail-setup-utils-D_g2PQOA.js +423 -0
  137. package/dist/gmail-setup-utils-ni_zkMpC.js +422 -0
  138. package/dist/health-C903Uthy.js +1423 -0
  139. package/dist/health-vO9pggEr.js +1420 -0
  140. package/dist/heartbeat-visibility-BHb-m9Fu.js +125 -0
  141. package/dist/heartbeat-visibility-DgRcKpeV.js +125 -0
  142. package/dist/helpers-DkUEDuKD.js +10 -0
  143. package/dist/hook-runner-global-CyIDoO1Z.js +527 -0
  144. package/dist/hooks-cli-B5oVqP3O.js +1222 -0
  145. package/dist/hooks-cli-xRelj3fq.js +1217 -0
  146. package/dist/image-ops-XoE9nn-z.js +354 -0
  147. package/dist/import-buqTDG9j.js +250 -0
  148. package/dist/import-j_5xbT7b.js +248 -0
  149. package/dist/inbound-path-policy-gHabNHWN.js +250 -0
  150. package/dist/index.js +93 -93
  151. package/dist/inspect-CV7o4EFm.js +559 -0
  152. package/dist/inspect-CkEMQlFE.js +559 -0
  153. package/dist/installs--lvmS_5X.js +325 -0
  154. package/dist/installs-BA3T7VAz.js +325 -0
  155. package/dist/ir-BaHZnJJM.js +940 -0
  156. package/dist/loader-8b9zCJni.js +22621 -0
  157. package/dist/loader-FZXIZr3R.js +22624 -0
  158. package/dist/local-roots-CWQNmgUt.js +313 -0
  159. package/dist/local-roots-DJo8GN9l.js +314 -0
  160. package/dist/logger-BiVcvOhw.js +49 -0
  161. package/dist/login-9iJ6gWZk.js +61 -0
  162. package/dist/login-EqnFreqS.js +62 -0
  163. package/dist/login-qr-C-iNjUWs.js +327 -0
  164. package/dist/login-qr-WMfGy6v_.js +322 -0
  165. package/dist/logs-cli-DFZz2ger.js +238 -0
  166. package/dist/logs-cli-gX4_EMx4.js +233 -0
  167. package/dist/markdown-tables-Bry8gXRC.js +29 -0
  168. package/dist/markdown-tables-vq6-CCk-.js +29 -0
  169. package/dist/media-C0_rYTSG.js +10455 -0
  170. package/dist/media-DNm8s1nv.js +940 -0
  171. package/dist/message-action-names-BMv6kUc8.js +2521 -0
  172. package/dist/message-action-names-DSrGq84w.js +2521 -0
  173. package/dist/message-channel-DF4I2vOK.js +91 -0
  174. package/dist/net-Dl7oQfqm.js +225 -0
  175. package/dist/node-cli-Cv_2cuVQ.js +24 -0
  176. package/dist/nodes-cli-Bh5kE7rx.js +1343 -0
  177. package/dist/nodes-cli-C1nJHXNR.js +1348 -0
  178. package/dist/note-CAx7Id1-.js +92 -0
  179. package/dist/note-CpSd8qLI.js +92 -0
  180. package/dist/npm-registry-spec-CaHkYE_x.js +786 -0
  181. package/dist/npm-registry-spec-CocXp7ba.js +786 -0
  182. package/dist/npm-resolution-DQS5ZVqD.js +86 -0
  183. package/dist/npm-resolution-w3878lun.js +86 -0
  184. package/dist/onboard-BCal_4Gv.js +407 -0
  185. package/dist/onboard-YnHnBbNe.js +405 -0
  186. package/dist/onboard-channels-B87Gz5qD.js +2547 -0
  187. package/dist/onboard-channels-RBADpVYy.js +2548 -0
  188. package/dist/onboard-config-DgTNC3ZT.js +39 -0
  189. package/dist/onboard-config-x054Cod3.js +39 -0
  190. package/dist/onboard-helpers-CoKiZn8s.js +363 -0
  191. package/dist/onboard-helpers-DKApDaN3.js +362 -0
  192. package/dist/onboard-remote-B1RsWyDT.js +127 -0
  193. package/dist/onboard-remote-BKJJgiD6.js +127 -0
  194. package/dist/onboarding-B4xiRmix.js +534 -0
  195. package/dist/onboarding-CBzaoGrg.js +532 -0
  196. package/dist/onboarding.finalize-CmKkVYDg.js +401 -0
  197. package/dist/onboarding.finalize-Deue-iB5.js +398 -0
  198. package/dist/onboarding.gateway-config-CVzVE8Em.js +191 -0
  199. package/dist/onboarding.gateway-config-Z5kbnB3s.js +198 -0
  200. package/dist/outbound-BFD5_jba.js +221 -0
  201. package/dist/outbound-Cnqvf0fO.js +220 -0
  202. package/dist/outbound-attachment-BnqWk5_B.js +18 -0
  203. package/dist/outbound-attachment-D05iLA7W.js +18 -0
  204. package/dist/outbound-attachment-DEyKzFjb.js +18 -0
  205. package/dist/pairing-cli-Blm356D6.js +122 -0
  206. package/dist/pairing-cli-h_rEV_wP.js +127 -0
  207. package/dist/pairing-labels-D1m2vZ16.js +9 -0
  208. package/dist/pairing-labels-DtbcpHbW.js +9 -0
  209. package/dist/pairing-store-3EoUkpJk.js +459 -0
  210. package/dist/pairing-store-DlhFf9Sd.js +460 -0
  211. package/dist/path-env-BHe995Zs.js +89 -0
  212. package/dist/path-env-Dt0Pot3Y.js +89 -0
  213. package/dist/path-safety-BlhW64vx.js +14 -0
  214. package/dist/plugin-auto-enable-CAXV8TAD.js +301 -0
  215. package/dist/plugin-auto-enable-SoRyAF_8.js +302 -0
  216. package/dist/plugin-registry-B3Ovot-q.js +33 -0
  217. package/dist/plugin-registry-CLs2mk9g.js +33 -0
  218. package/dist/plugin-sdk/auto-reply/reply/agent-runner-execution.d.ts +0 -1
  219. package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +0 -7
  220. package/dist/plugin-sdk/auto-reply/reply/session-updates.d.ts +0 -10
  221. package/dist/plugin-sdk/auto-reply/status.d.ts +1 -3
  222. package/dist/plugin-sdk/config/defaults.d.ts +0 -1
  223. package/dist/plugin-sdk/config/sessions/types.d.ts +0 -6
  224. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +21 -101
  225. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +8 -63
  226. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +2 -10
  227. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +10 -71
  228. package/dist/plugin-sdk/config/zod-schema.d.ts +10 -71
  229. package/dist/plugin-sdk/daemon/constants.d.ts +2 -2
  230. package/dist/plugin-sdk/index.js +34 -67
  231. package/dist/plugin-sdk/middleware/channel-bridge.d.ts +4 -0
  232. package/dist/plugin-sdk/middleware/runtime-factory.d.ts +42 -0
  233. package/dist/plugin-sdk/middleware/types.d.ts +4 -0
  234. package/dist/plugins-BtMu6L8i.js +453 -0
  235. package/dist/plugins-HyUNaoYP.js +455 -0
  236. package/dist/plugins-cli-Bfz5q2Eu.js +793 -0
  237. package/dist/plugins-cli-IC5XEIJP.js +798 -0
  238. package/dist/ports-B5ckNet-.js +96 -0
  239. package/dist/ports-Bd3hoh8b.js +96 -0
  240. package/dist/ports-BookgaRI.js +370 -0
  241. package/dist/ports-UXImZGj6.js +316 -0
  242. package/dist/program-DHHHUVxq.js +244 -0
  243. package/dist/program-context-CJ5VtH21.js +474 -0
  244. package/dist/progress-WaSih6uF.js +124 -0
  245. package/dist/prompt-select-styled-CvndflSu.js +1647 -0
  246. package/dist/prompt-select-styled-DRpXaDjZ.js +1650 -0
  247. package/dist/provider-dispatcher-BtSfIQn3.js +659 -0
  248. package/dist/provider-dispatcher-CUXHJBTf.js +660 -0
  249. package/dist/push-apns-BH90TRlq.js +713 -0
  250. package/dist/pw-ai-89JDYEsx.js +1906 -0
  251. package/dist/pw-ai-DLMRJYTF.js +1910 -0
  252. package/dist/qr-cli-B-vXl2tJ.js +352 -0
  253. package/dist/qr-cli-CPLEROlB.js +347 -0
  254. package/dist/redact-snapshot-D6v5Y3cH.js +2016 -0
  255. package/dist/redact-snapshot-DRkh_GXw.js +2016 -0
  256. package/dist/register.agent-6t54SCKS.js +1043 -0
  257. package/dist/register.agent-CrTeig6j.js +286 -0
  258. package/dist/register.configure-CLKO7CBz.js +124 -0
  259. package/dist/register.configure-CYhzeMUN.js +130 -0
  260. package/dist/register.import-CwB3CVmx.js +30 -0
  261. package/dist/register.import-DuMlmKVZ.js +27 -0
  262. package/dist/register.maintenance-BywvjbLM.js +494 -0
  263. package/dist/register.maintenance-CmZiik6M.js +497 -0
  264. package/dist/register.message-C4uOmrmu.js +681 -0
  265. package/dist/register.message-_xLO9io6.js +686 -0
  266. package/dist/register.onboard-D70dDDQi.js +262 -0
  267. package/dist/register.onboard-FyyzQnPJ.js +257 -0
  268. package/dist/register.setup-D6gZLMvn.js +114 -0
  269. package/dist/register.setup-PQ_egL-s.js +109 -0
  270. package/dist/register.status-health-sessions-CPGqgxER.js +668 -0
  271. package/dist/register.status-health-sessions-D0hrBo9e.js +423 -0
  272. package/dist/register.subclis-B4JkPvWw.js +267 -0
  273. package/dist/replies-DwXyI317.js +136 -0
  274. package/dist/replies-vM-49F7Z.js +136 -0
  275. package/dist/reply-DO3tkAbl.js +13717 -0
  276. package/dist/reply-directives-BSHSMfOP.js +182 -0
  277. package/dist/reply-directives-Bd8xCxw5.js +182 -0
  278. package/dist/reply-gX7Zk9R8.js +13720 -0
  279. package/dist/reply-payloads-BzxytLE1.js +527 -0
  280. package/dist/reply-prefix-BPUsoqRv.js +38 -0
  281. package/dist/reply-prefix-Cz79Mk_9.js +38 -0
  282. package/dist/resolve-route-CbxnmqSZ.js +249 -0
  283. package/dist/resolve-route-RsSFZfEu.js +249 -0
  284. package/dist/response-prefix-template-BqmQwHFv.js +136 -0
  285. package/dist/response-prefix-template-oS-m4x5k.js +136 -0
  286. package/dist/retry-BMUvSHT-.js +77 -0
  287. package/dist/run-main-D_Yvs705.js +302 -0
  288. package/dist/runner-BvtNyNts.js +2294 -0
  289. package/dist/runner-bzffxuwY.js +2294 -0
  290. package/dist/runtime-guard-B43sm9Yk.js +60 -0
  291. package/dist/secure-random-CsKN1dAJ.js +44 -0
  292. package/dist/security-cli-ClDV4uPt.js +484 -0
  293. package/dist/security-cli-D578rt9i.js +478 -0
  294. package/dist/send-16QFH4iu.js +492 -0
  295. package/dist/send-1ch3HEta.js +29 -0
  296. package/dist/send-B5mtDLya.js +492 -0
  297. package/dist/send-BA-OQAbS.js +547 -0
  298. package/dist/send-BAki96aY.js +547 -0
  299. package/dist/send-BzYdvFV2.js +1775 -0
  300. package/dist/send-C-Vix83b.js +374 -0
  301. package/dist/send-C2vPu8jr.js +2245 -0
  302. package/dist/send-CCpFrPS3.js +426 -0
  303. package/dist/send-CXoL2Zzi.js +349 -0
  304. package/dist/send-Cp7xKp6y.js +2245 -0
  305. package/dist/send-DmR0m7rx.js +332 -0
  306. package/dist/send-MwvIhKYv.js +11 -0
  307. package/dist/send-YjzTu9Vf.js +1778 -0
  308. package/dist/send-jlq_MH8C.js +1174 -0
  309. package/dist/send-ysN09khs.js +349 -0
  310. package/dist/server-02ElXzP1.js +200 -0
  311. package/dist/server-lifecycle-B8xKnzsQ.js +2437 -0
  312. package/dist/server-lifecycle-CEvhrc0-.js +2437 -0
  313. package/dist/server-node-events-DU4X16h1.js +398 -0
  314. package/dist/server-node-events-DrH58PI5.js +393 -0
  315. package/dist/server-ur9b1Yzm.js +205 -0
  316. package/dist/service-CiiOMO48.js +670 -0
  317. package/dist/service-Csa_Zp8l.js +670 -0
  318. package/dist/session-BtRSSNK_.js +170 -0
  319. package/dist/session-cost-usage-Cd5Heqqu.js +627 -0
  320. package/dist/session-cost-usage-CnPZY4id.js +627 -0
  321. package/dist/session-dirs-DhnTK_rA.js +947 -0
  322. package/dist/session-dirs-Ii3gbgos.js +947 -0
  323. package/dist/session-utils-Cs0dVU0y.js +624 -0
  324. package/dist/session-utils-DuK3Cyeh.js +624 -0
  325. package/dist/sessions-B3mSpWqX.js +2568 -0
  326. package/dist/sessions-BKYYI9GY.js +251 -0
  327. package/dist/status-B2d7Lmls.js +2067 -0
  328. package/dist/status-DSrcpDkP.js +2071 -0
  329. package/dist/status.update-BdkJ6oB8.js +79 -0
  330. package/dist/status.update-Cx6moscN.js +79 -0
  331. package/dist/store-COXTNbLU.js +53 -0
  332. package/dist/store-DdUK8zTC.js +2570 -0
  333. package/dist/subagent-registry-CpaLEiLw.js +4860 -0
  334. package/dist/subagent-registry-CwfHcOru.js +4858 -0
  335. package/dist/subsystem-BgxIzx7w.js +1137 -0
  336. package/dist/system-cli-C_3mdl-Y.js +75 -0
  337. package/dist/system-cli-Cg3uYNSx.js +70 -0
  338. package/dist/systemd-C9CRJ1Vh.js +547 -0
  339. package/dist/systemd-Clsb90Zg.js +547 -0
  340. package/dist/systemd-linger-CeBq5lTN.js +75 -0
  341. package/dist/systemd-linger-D70Sc4ia.js +75 -0
  342. package/dist/table-DVVqt1iT.js +279 -0
  343. package/dist/tables-6RxRFEl1.js +55 -0
  344. package/dist/tables-CamcS9gx.js +55 -0
  345. package/dist/tables-CmbvfFUi.js +55 -0
  346. package/dist/tailscale-C_8-YaZu.js +230 -0
  347. package/dist/targets--D1Sgq6T.js +220 -0
  348. package/dist/targets-BEON1rlZ.js +650 -0
  349. package/dist/targets-DRd0Al1y.js +650 -0
  350. package/dist/targets-DzGG0A-J.js +2245 -0
  351. package/dist/targets-IkURIBGL.js +53 -0
  352. package/dist/targets-NcJOa0-P.js +2244 -0
  353. package/dist/tool-images-BLldmoMO.js +263 -0
  354. package/dist/trash-CLx3VKz0.js +125 -0
  355. package/dist/tui-BqrwhnqU.js +3392 -0
  356. package/dist/tui-D1yYpK5L.js +3392 -0
  357. package/dist/tui-cli-DSoJ3FKB.js +58 -0
  358. package/dist/tui-cli-DmT2z3u-.js +63 -0
  359. package/dist/update-Bqxd57w0.js +349 -0
  360. package/dist/update-DNLS8oRs.js +349 -0
  361. package/dist/update-cli-CU9ZXQY3.js +1373 -0
  362. package/dist/update-cli-CVyu40ky.js +1370 -0
  363. package/dist/usage-DmDjx45Z.js +5337 -0
  364. package/dist/web-BUwk0Z14.js +3065 -0
  365. package/dist/web-D0Q23mS6.js +70 -0
  366. package/dist/web-Dbsn7rM8.js +76 -0
  367. package/dist/webhooks-cli-CVkKq_i_.js +328 -0
  368. package/dist/webhooks-cli-DUcnf7Eh.js +333 -0
  369. package/dist/whatsapp-actions-Drtn7JXc.js +128 -0
  370. package/dist/whatsapp-actions-OYitul5l.js +122 -0
  371. package/dist/workspace-CZ3yxyNd.js +447 -0
  372. package/dist/workspace-DJ7hsM9r.js +449 -0
  373. package/package.json +3 -3
  374. package/dist/accounts-B1aJFYXr.js +0 -272
  375. package/dist/accounts-Bexa80SB.js +0 -32
  376. package/dist/accounts-Cl_cFv9X.js +0 -47
  377. package/dist/accounts-Dn9h7HHT.js +0 -36
  378. package/dist/ack-reactions-B11TAC2D.js +0 -446
  379. package/dist/ack-reactions-CDUSdN8O.js +0 -446
  380. package/dist/acp-cli-CA1xMmVo.js +0 -1320
  381. package/dist/acp-cli-Dr83tqAg.js +0 -1326
  382. package/dist/active-listener-VzhWW8W6.js +0 -37
  383. package/dist/agent-CFKgqSEH.js +0 -732
  384. package/dist/agent-D2RVoS5g.js +0 -731
  385. package/dist/agent-helpers-D_9mS2Ti.js +0 -606
  386. package/dist/agent-scope-9WY5O-KK.js +0 -121
  387. package/dist/agent-scope-C50VuLKh.js +0 -119
  388. package/dist/agents-BBXCuDMp.js +0 -788
  389. package/dist/agents.config-BPGQ3Qyn.js +0 -116
  390. package/dist/agents.config-p3V3b9u6.js +0 -116
  391. package/dist/audio-preflight-BwmCYeuM.js +0 -64
  392. package/dist/audio-preflight-Dj6hBcFR.js +0 -69
  393. package/dist/audit-DhIKIeXD.js +0 -3138
  394. package/dist/audit-qgtCT3ik.js +0 -3138
  395. package/dist/auth-C6VDYgb7.js +0 -448
  396. package/dist/auth-Deh9i9Eg.js +0 -448
  397. package/dist/auth-profiles-CeDgZz_7.js +0 -281
  398. package/dist/banner-HCssFZcB.js +0 -294
  399. package/dist/binaries-X6FW-wD4.js +0 -13
  400. package/dist/bindings-B582pDIa.js +0 -69
  401. package/dist/bindings-CRU_udk8.js +0 -69
  402. package/dist/bonjour-discovery-BtPaR8vb.js +0 -378
  403. package/dist/bonjour-discovery-DuhiIZZx.js +0 -378
  404. package/dist/browser-cli-HH45lxP0.js +0 -1687
  405. package/dist/browser-cli-TB-GNoZq.js +0 -1692
  406. package/dist/call-BbwtB9Y-.js +0 -2828
  407. package/dist/call-ByOzoLDI.js +0 -2829
  408. package/dist/catalog-BY7OPtnz.js +0 -185
  409. package/dist/catalog-BqO6yem_.js +0 -185
  410. package/dist/channel-account-context-CjXyzMXE.js +0 -550
  411. package/dist/channel-account-context-CvIDAtHS.js +0 -550
  412. package/dist/channel-activity-BeRrcCd8.js +0 -94
  413. package/dist/channel-activity-DTKGf3j5.js +0 -94
  414. package/dist/channel-activity-hPfValKp.js +0 -292
  415. package/dist/channel-options-BLdLu0xk.js +0 -33
  416. package/dist/channel-options-BQ61blla.js +0 -32
  417. package/dist/channel-selection-CJXZTxae.js +0 -51
  418. package/dist/channel-selection-NNPbxnyZ.js +0 -51
  419. package/dist/channel-web-D1_mlyPg.js +0 -2136
  420. package/dist/channel-web-DmhVkWbP.js +0 -2134
  421. package/dist/channels-cli-C4O8pp1S.js +0 -1426
  422. package/dist/channels-cli-DAu1TXTH.js +0 -1421
  423. package/dist/channels-status-issues-BDAHISWe.js +0 -18
  424. package/dist/channels-status-issues-DwRDzwrV.js +0 -18
  425. package/dist/chat-envelope-el7Uo-Fe.js +0 -248
  426. package/dist/chrome-CNDtczoM.js +0 -1733
  427. package/dist/chrome-CdcwZN9t.js +0 -1732
  428. package/dist/chunk-DAjFKt2g.js +0 -341
  429. package/dist/clack-prompter-CCFnKP_1.js +0 -121
  430. package/dist/clack-prompter-CabwzmG4.js +0 -122
  431. package/dist/cli-BuMX-jRY.js +0 -130
  432. package/dist/cli-Ci4DmAyk.js +0 -125
  433. package/dist/clipboard-B2j4qGIl.js +0 -31
  434. package/dist/command-registry-DxsFXB5t.js +0 -215
  435. package/dist/commands-C2uNKRTf.js +0 -41
  436. package/dist/commands-CDonBOrw.js +0 -41
  437. package/dist/commands-registry-BvESmXoK.js +0 -893
  438. package/dist/commands-registry-CWJv6xe2.js +0 -892
  439. package/dist/common-Cp3rsBqx.js +0 -156
  440. package/dist/completion-cli-B-X5nwdT.js +0 -452
  441. package/dist/completion-cli-DD3pVpPn.js +0 -452
  442. package/dist/config-BqY7k-L8.js +0 -6953
  443. package/dist/config-FHu9Bn4R.js +0 -6951
  444. package/dist/config-cli-CPH_PfVk.js +0 -241
  445. package/dist/config-cli-Czvt02PC.js +0 -246
  446. package/dist/config-guard-5oI2BiSY.js +0 -97
  447. package/dist/config-guard-cB5a_ANg.js +0 -75
  448. package/dist/config-validation-BPNyd9_3.js +0 -18
  449. package/dist/config-validation-J3cJ0OCa.js +0 -18
  450. package/dist/configure-Bi_9d94n.js +0 -889
  451. package/dist/configure-DiQaHI3s.js +0 -891
  452. package/dist/constants-BmRFoHl0.js +0 -67
  453. package/dist/constants-C9WPAluB.js +0 -67
  454. package/dist/control-auth-D0tpV3ts.js +0 -397
  455. package/dist/control-auth-q4zZXaoS.js +0 -397
  456. package/dist/control-ui/assets/index-B4ZM1lW1.js +0 -7738
  457. package/dist/control-ui/assets/index-B4ZM1lW1.js.map +0 -1
  458. package/dist/control-ui/assets/index-PED72sKF.css +0 -1
  459. package/dist/control-ui-assets-Cx_mw4D0.js +0 -186
  460. package/dist/control-ui-assets-D4yaD8jm.js +0 -186
  461. package/dist/cron-cli-Bfh7ftYz.js +0 -495
  462. package/dist/cron-cli-C8j_uslU.js +0 -490
  463. package/dist/daemon-cli-DQFZB1yM.js +0 -1197
  464. package/dist/daemon-cli-lTsfNeDm.js +0 -1199
  465. package/dist/daemon-install-CcohRvKV.js +0 -55
  466. package/dist/daemon-install-DrTvAWhM.js +0 -60
  467. package/dist/daemon-install-helpers-CFGAfRlj.js +0 -462
  468. package/dist/daemon-install-helpers-DIUzSFG1.js +0 -462
  469. package/dist/defaults-B5KStIBg.js +0 -7
  470. package/dist/defaults-xUAL2Z-F.js +0 -7
  471. package/dist/deliver-912khjLK.js +0 -481
  472. package/dist/deliver-D78pwuPC.js +0 -481
  473. package/dist/delivery-queue-CxVRi4tw.js +0 -244
  474. package/dist/devices-cli-0qDhTgZR.js +0 -316
  475. package/dist/devices-cli-CstkYXzr.js +0 -321
  476. package/dist/diagnostics-HGkN467d.js +0 -46
  477. package/dist/diagnostics-VC0cz7kX.js +0 -46
  478. package/dist/directory-cli-5YXdoVdn.js +0 -217
  479. package/dist/directory-cli-duhBZl2c.js +0 -222
  480. package/dist/dm-policy-shared-BBfEyAN1.js +0 -22
  481. package/dist/dm-policy-shared-D8lgnmrC.js +0 -22
  482. package/dist/dns-cli-11CtErVU.js +0 -197
  483. package/dist/dns-cli-Sr6SB9ei.js +0 -202
  484. package/dist/dock-BqNINg7k.js +0 -928
  485. package/dist/dock-O8ArYwed.js +0 -929
  486. package/dist/doctor-completion-B1UlvZFx.js +0 -92
  487. package/dist/doctor-completion-C0j7b_f8.js +0 -92
  488. package/dist/doctor-config-flow-BVkHcvoj.js +0 -1933
  489. package/dist/doctor-config-flow-BiShkCxs.js +0 -1934
  490. package/dist/enable-DMIq6evt.js +0 -59
  491. package/dist/enable-ibNq4UWy.js +0 -59
  492. package/dist/env-Br2Bl6Ht.js +0 -60
  493. package/dist/exec-C6ACg_Mn.js +0 -164
  494. package/dist/fetch-Bmv93nu9.js +0 -67
  495. package/dist/fs-safe-DkBhNAc3.js +0 -98
  496. package/dist/gateway-cli-D4cDhvZx.js +0 -23747
  497. package/dist/gateway-cli-DuMjB8Ff.js +0 -23742
  498. package/dist/gateway-rpc-B4jTtupy.js +0 -28
  499. package/dist/gateway-rpc-Dq44SkOv.js +0 -28
  500. package/dist/gmail-setup-utils-BPmUIqso.js +0 -423
  501. package/dist/gmail-setup-utils-Cnx8A5pW.js +0 -422
  502. package/dist/health-SOuaKNRa.js +0 -1420
  503. package/dist/health-wr-JDHlc.js +0 -1423
  504. package/dist/heartbeat-visibility-BxkZjE5m.js +0 -125
  505. package/dist/heartbeat-visibility-ossI_l4t.js +0 -125
  506. package/dist/helpers-kkeXif0Q.js +0 -10
  507. package/dist/hook-runner-global-DJ14gXFP.js +0 -527
  508. package/dist/hooks-cli-BUTtESiX.js +0 -1217
  509. package/dist/hooks-cli-eqPYjw4l.js +0 -1222
  510. package/dist/image-ops-DRdKC0uO.js +0 -354
  511. package/dist/import-Be73VPF2.js +0 -170
  512. package/dist/import-DQ6NI4Fz.js +0 -168
  513. package/dist/inbound-path-policy-C_Qo8rqg.js +0 -250
  514. package/dist/inspect-B1Fq39RC.js +0 -559
  515. package/dist/inspect-Dt8hogS3.js +0 -559
  516. package/dist/installs-C8apg11p.js +0 -325
  517. package/dist/installs-pWdqG8HL.js +0 -325
  518. package/dist/ir-Ch9FC9Z_.js +0 -940
  519. package/dist/loader-Cuq-saEl.js +0 -22621
  520. package/dist/loader-u9FC6kYG.js +0 -22624
  521. package/dist/local-roots-BrH0Q63K.js +0 -313
  522. package/dist/local-roots-z2u_s7jG.js +0 -314
  523. package/dist/logger-pznB_IdT.js +0 -49
  524. package/dist/login-CYq-visu.js +0 -62
  525. package/dist/login-DOmWDMeP.js +0 -61
  526. package/dist/login-qr-CXU0wC5K.js +0 -322
  527. package/dist/login-qr-D85vVatX.js +0 -327
  528. package/dist/logs-cli-Cu2S08Y3.js +0 -238
  529. package/dist/logs-cli-D7ayUvz_.js +0 -233
  530. package/dist/markdown-tables-hhOWaw8L.js +0 -29
  531. package/dist/markdown-tables-jrnSPvZ6.js +0 -29
  532. package/dist/media-DN7yRfrH.js +0 -940
  533. package/dist/media-DOQIalam.js +0 -10492
  534. package/dist/message-action-names-Dk9kxwRd.js +0 -2521
  535. package/dist/message-action-names-EsOcuFpq.js +0 -2521
  536. package/dist/message-channel-BlYrtmIp.js +0 -91
  537. package/dist/net-D6D0wgcF.js +0 -225
  538. package/dist/node-cli-Q2-n3Fgv.js +0 -24
  539. package/dist/nodes-cli-BDq-4dHm.js +0 -1348
  540. package/dist/nodes-cli-C2SoKfCv.js +0 -1343
  541. package/dist/note-DR8A0G5H.js +0 -92
  542. package/dist/note-Dlv4NmlQ.js +0 -92
  543. package/dist/npm-registry-spec-COvUzy5J.js +0 -786
  544. package/dist/npm-registry-spec-Cobb5KYR.js +0 -786
  545. package/dist/npm-resolution-BmgD7x45.js +0 -86
  546. package/dist/npm-resolution-DNYcV-Br.js +0 -86
  547. package/dist/onboard-Dy0q82Mj.js +0 -405
  548. package/dist/onboard-channels-9QS_7iph.js +0 -2548
  549. package/dist/onboard-channels-EH2wvu6Y.js +0 -2547
  550. package/dist/onboard-config-BCTthQ7J.js +0 -24
  551. package/dist/onboard-config-y-2cgT0V.js +0 -24
  552. package/dist/onboard-helpers-ChPmr3lh.js +0 -363
  553. package/dist/onboard-helpers-Jy3345Jk.js +0 -362
  554. package/dist/onboard-remote-CM6Yl1oL.js +0 -127
  555. package/dist/onboard-remote-Id80PV28.js +0 -127
  556. package/dist/onboard-uvDMehqu.js +0 -407
  557. package/dist/onboarding-BVtzeopT.js +0 -534
  558. package/dist/onboarding-DlXBAIDc.js +0 -532
  559. package/dist/onboarding.finalize-Dve-3p-y.js +0 -398
  560. package/dist/onboarding.finalize-GIK3ktiW.js +0 -401
  561. package/dist/onboarding.gateway-config-BCV5T35-.js +0 -198
  562. package/dist/onboarding.gateway-config-DW-09FX5.js +0 -191
  563. package/dist/outbound-CFfJC1j5.js +0 -220
  564. package/dist/outbound-CjFRpudN.js +0 -221
  565. package/dist/outbound-attachment-BxMSma9v.js +0 -18
  566. package/dist/outbound-attachment-DIiKB_mP.js +0 -18
  567. package/dist/outbound-attachment-o0seS0CP.js +0 -18
  568. package/dist/pairing-cli-BeydfoF9.js +0 -122
  569. package/dist/pairing-cli-GgwzEWJX.js +0 -127
  570. package/dist/pairing-labels-B_53dY5L.js +0 -9
  571. package/dist/pairing-labels-BiSZLitI.js +0 -9
  572. package/dist/pairing-store-BgAv4uN8.js +0 -460
  573. package/dist/pairing-store-CTkD51uW.js +0 -459
  574. package/dist/path-env-ErEKbxOI.js +0 -89
  575. package/dist/path-env-qRJbjJzj.js +0 -89
  576. package/dist/path-safety-juI2XbO1.js +0 -14
  577. package/dist/plugin-auto-enable-CloCFyTz.js +0 -302
  578. package/dist/plugin-auto-enable-DuPS9XiJ.js +0 -301
  579. package/dist/plugin-registry-D5QsH-IS.js +0 -33
  580. package/dist/plugin-registry-DnO3azwy.js +0 -33
  581. package/dist/plugin-sdk/agents/defaults.d.ts +0 -3
  582. package/dist/plugin-sdk/auto-reply/model-runtime.d.ts +0 -17
  583. package/dist/plugin-sdk/config/model-input.d.ts +0 -9
  584. package/dist/plugin-sdk/config/zod-schema.agent-model.d.ts +0 -5
  585. package/dist/plugin-sdk/sessions/model-overrides.d.ts +0 -14
  586. package/dist/plugins-BXkDApVh.js +0 -455
  587. package/dist/plugins-BflZz0sp.js +0 -453
  588. package/dist/plugins-cli-Cf_RP_bn.js +0 -798
  589. package/dist/plugins-cli-DmbjYnO9.js +0 -793
  590. package/dist/ports-DIYJq-SY.js +0 -370
  591. package/dist/ports-DPL-Pzfh.js +0 -96
  592. package/dist/ports-NPqtlfp0.js +0 -316
  593. package/dist/ports-QMI4-F9m.js +0 -96
  594. package/dist/program-BaATq6CL.js +0 -244
  595. package/dist/program-context-C7b5MQbg.js +0 -474
  596. package/dist/progress--dapuyZA.js +0 -124
  597. package/dist/prompt-select-styled-BAsxl6hj.js +0 -1650
  598. package/dist/prompt-select-styled-aqjxCbwP.js +0 -1647
  599. package/dist/provider-dispatcher-B4QMe-I6.js +0 -659
  600. package/dist/provider-dispatcher-mAkRbPyH.js +0 -660
  601. package/dist/push-apns-CLmNS5AZ.js +0 -713
  602. package/dist/pw-ai-DuK87zsJ.js +0 -1906
  603. package/dist/pw-ai-ulOU3Ya1.js +0 -1910
  604. package/dist/qr-cli-9WQBnauO.js +0 -352
  605. package/dist/qr-cli-hSLixZCe.js +0 -347
  606. package/dist/redact-snapshot-BZYLIqe-.js +0 -2028
  607. package/dist/redact-snapshot-D2P_lRgf.js +0 -2028
  608. package/dist/register.agent-CquY2yLI.js +0 -286
  609. package/dist/register.agent-DZL_fw2K.js +0 -1043
  610. package/dist/register.configure-C2HjaKO0.js +0 -124
  611. package/dist/register.configure-D7Di47Lb.js +0 -130
  612. package/dist/register.import-Bs-UkOs-.js +0 -27
  613. package/dist/register.import-CaJ0DS1t.js +0 -30
  614. package/dist/register.maintenance-CslelbHK.js +0 -497
  615. package/dist/register.maintenance-Dd4fn6oX.js +0 -494
  616. package/dist/register.message-D2xmx0xB.js +0 -681
  617. package/dist/register.message-_Q8ehgQP.js +0 -686
  618. package/dist/register.onboard-BFSwh5g4.js +0 -262
  619. package/dist/register.onboard-CIupEYmX.js +0 -257
  620. package/dist/register.setup-7pk1r-54.js +0 -114
  621. package/dist/register.setup-Bm1Jtx0c.js +0 -109
  622. package/dist/register.status-health-sessions-C-Pbi-qq.js +0 -669
  623. package/dist/register.status-health-sessions-Cn4yWBWw.js +0 -423
  624. package/dist/register.subclis-DXmLofHX.js +0 -267
  625. package/dist/replies-BKrzM0QI.js +0 -136
  626. package/dist/replies-BkXDql3c.js +0 -136
  627. package/dist/reply-DSKC8kyS.js +0 -13897
  628. package/dist/reply-directives-CBeNSCHL.js +0 -182
  629. package/dist/reply-directives-CD2WycBM.js +0 -182
  630. package/dist/reply-n8KWtBQB.js +0 -13900
  631. package/dist/reply-payloads-CeL_cBnD.js +0 -527
  632. package/dist/reply-prefix-4zLS7A1Y.js +0 -38
  633. package/dist/reply-prefix-DBLCYiup.js +0 -38
  634. package/dist/resolve-route-BDGdM-l3.js +0 -249
  635. package/dist/resolve-route-CBVbY0xS.js +0 -249
  636. package/dist/response-prefix-template-CSxp9HN5.js +0 -136
  637. package/dist/response-prefix-template-up4REfuR.js +0 -136
  638. package/dist/retry-C81p7BZU.js +0 -77
  639. package/dist/run-main-CuA7VmAq.js +0 -320
  640. package/dist/runner-BbLPl1dz.js +0 -2294
  641. package/dist/runner-z92MWZ3m.js +0 -2294
  642. package/dist/runtime-guard-DZ_xuCc4.js +0 -60
  643. package/dist/secure-random-D2IOpBkk.js +0 -44
  644. package/dist/security-cli-BR3Y1FBJ.js +0 -484
  645. package/dist/security-cli-DP5QJpa5.js +0 -478
  646. package/dist/send-0uEtKwU_.js +0 -2245
  647. package/dist/send-B3O7bzYU.js +0 -1174
  648. package/dist/send-BWSo3i3H.js +0 -1778
  649. package/dist/send-BkSUAGj6.js +0 -349
  650. package/dist/send-Bx9bUGav.js +0 -492
  651. package/dist/send-CBGSXjfD.js +0 -2245
  652. package/dist/send-CRS-OcnW.js +0 -29
  653. package/dist/send-DPttDPIR.js +0 -374
  654. package/dist/send-D_DUQJ6H.js +0 -349
  655. package/dist/send-DyftOlFD.js +0 -332
  656. package/dist/send-Lij9A7lk.js +0 -547
  657. package/dist/send-YRVDWfSs.js +0 -547
  658. package/dist/send-dzS4fa9O.js +0 -492
  659. package/dist/send-uchxcHYC.js +0 -11
  660. package/dist/send-xUPOqzUr.js +0 -426
  661. package/dist/send-xnwty9cY.js +0 -1775
  662. package/dist/server-BE5lybcS.js +0 -205
  663. package/dist/server-LdLsvPPw.js +0 -200
  664. package/dist/server-lifecycle-B3Rdmq7-.js +0 -2437
  665. package/dist/server-lifecycle-CFmE_Adm.js +0 -2437
  666. package/dist/server-node-events-De4WZQQD.js +0 -393
  667. package/dist/server-node-events-d7eK4LBW.js +0 -398
  668. package/dist/service-BHos7oX8.js +0 -670
  669. package/dist/service-Bjqii5nW.js +0 -670
  670. package/dist/session-aUptxSVD.js +0 -170
  671. package/dist/session-cost-usage-DX09eTPU.js +0 -627
  672. package/dist/session-cost-usage-yYi525j3.js +0 -627
  673. package/dist/session-dirs-BADAi9Iz.js +0 -947
  674. package/dist/session-dirs-DdF6TDsE.js +0 -947
  675. package/dist/session-key-5YLnn_qf.js +0 -235
  676. package/dist/session-utils-CEtEq6bi.js +0 -625
  677. package/dist/session-utils-CiXbZkM2.js +0 -625
  678. package/dist/sessions--PykPynp.js +0 -2593
  679. package/dist/sessions-Bw4LRnSr.js +0 -252
  680. package/dist/status-CrGLegI6.js +0 -2072
  681. package/dist/status-D_3sszaS.js +0 -2068
  682. package/dist/status.update-C55QM2xs.js +0 -79
  683. package/dist/status.update-CVnonGHu.js +0 -79
  684. package/dist/store-C6w1sB5x.js +0 -53
  685. package/dist/store-DoOPG3rl.js +0 -2595
  686. package/dist/subagent-registry-C-xI2uK4.js +0 -4860
  687. package/dist/subagent-registry-Db4Ho_2Y.js +0 -4858
  688. package/dist/subsystem-CrJCqjAh.js +0 -1139
  689. package/dist/system-cli-CCKzF3uh.js +0 -75
  690. package/dist/system-cli-eAk5wVbP.js +0 -70
  691. package/dist/systemd-B5lyaCc3.js +0 -547
  692. package/dist/systemd-DSnlM3jX.js +0 -547
  693. package/dist/systemd-linger-DRPSEQVw.js +0 -75
  694. package/dist/systemd-linger-_0_-RY4v.js +0 -75
  695. package/dist/table-CpmqqcxJ.js +0 -279
  696. package/dist/tables-DI5LGEr1.js +0 -55
  697. package/dist/tables-D_PTzthR.js +0 -55
  698. package/dist/tables-DcQUNIvB.js +0 -55
  699. package/dist/tailscale-Dxyz13fn.js +0 -230
  700. package/dist/targets-B2vBpQdr.js +0 -2173
  701. package/dist/targets-B54vK3wc.js +0 -220
  702. package/dist/targets-Cm1X3IyA.js +0 -650
  703. package/dist/targets-D7OKVXMI.js +0 -650
  704. package/dist/targets-DB4vBpIQ.js +0 -2172
  705. package/dist/targets-DyybKefq.js +0 -53
  706. package/dist/tool-images-DVrUJEqc.js +0 -263
  707. package/dist/trash-DzrtBoP1.js +0 -125
  708. package/dist/tui-CyHwc2uX.js +0 -3392
  709. package/dist/tui-cHd20SZm.js +0 -3392
  710. package/dist/tui-cli-C7kQj9ef.js +0 -63
  711. package/dist/tui-cli-C9I18SfW.js +0 -58
  712. package/dist/update-DeQGoaIC.js +0 -349
  713. package/dist/update-IX7vdqA8.js +0 -349
  714. package/dist/update-cli-C52dmo3x.js +0 -1370
  715. package/dist/update-cli-DY_iE1E5.js +0 -1373
  716. package/dist/usage-B--dL37U.js +0 -5279
  717. package/dist/web-CMxp78WA.js +0 -76
  718. package/dist/web-DMweaNnG.js +0 -3065
  719. package/dist/web-Dquzwqf4.js +0 -70
  720. package/dist/webhooks-cli-BpZHQlVd.js +0 -328
  721. package/dist/webhooks-cli-CqFX8Ywl.js +0 -333
  722. package/dist/whatsapp-actions-C31Zdwez.js +0 -128
  723. package/dist/whatsapp-actions-DaA291Ya.js +0 -122
  724. package/dist/workspace-B4ZvVYT9.js +0 -447
  725. package/dist/workspace-B8qk__ff.js +0 -449
  726. /package/dist/{ansi-D04X81yq.js → ansi-aRwLYlzD.js} +0 -0
  727. /package/dist/{api-BeQMq2iS.js → api-B5a-GhRx.js} +0 -0
  728. /package/dist/{api-CxX8-gGz.js → api-CIseA2oL.js} +0 -0
  729. /package/dist/{argv-Co-b9Zsc.js → argv-BpnfFual.js} +0 -0
  730. /package/dist/{audio-DPOuhNq7.js → audio-B_mzy948.js} +0 -0
  731. /package/dist/{audio-VBcVDa08.js → audio-DDvXRwh-.js} +0 -0
  732. /package/dist/{brew-DbSbN8sD.js → brew-DJ_dfLHZ.js} +0 -0
  733. /package/dist/{brew-C4zKZsHX.js → brew-j-qOseim.js} +0 -0
  734. /package/dist/{cleanup-utils-CwQvD73q.js → cleanup-utils-CELo1uhg.js} +0 -0
  735. /package/dist/{cleanup-utils-o2MM9xyf.js → cleanup-utils-iC7eNxVL.js} +0 -0
  736. /package/dist/{cli-utils-BhXbz2UF.js → cli-utils-BRpudJBb.js} +0 -0
  737. /package/dist/{cli-utils-DZe_rVkZ.js → cli-utils-DJwgT-LP.js} +0 -0
  738. /package/dist/{client-C61M8zI3.js → client-Ck9_YeG3.js} +0 -0
  739. /package/dist/{client-DdpmATKq.js → client-CwnX0nXo.js} +0 -0
  740. /package/dist/{clipboard-Dzkx6Q2K.js → clipboard-DT-6OtUP.js} +0 -0
  741. /package/dist/{command-options-C4paWSGf.js → command-options-BOLa_fOM.js} +0 -0
  742. /package/dist/{command-options-CA30lfLK.js → command-options-DbRrl8qF.js} +0 -0
  743. /package/dist/{config-eval-CjGZtLwx.js → config-eval-BsrVpg0A.js} +0 -0
  744. /package/dist/{config-eval-H_wlEYIG.js → config-eval-BzDtybYL.js} +0 -0
  745. /package/dist/{constants-ChptG3d7.js → constants-B1UiXFxs.js} +0 -0
  746. /package/dist/{constants-DY6b-_Wl.js → constants-DKUEbLZr.js} +0 -0
  747. /package/dist/{credentials-DFsi1_e8.js → credentials-C82aU5z-.js} +0 -0
  748. /package/dist/{daemon-runtime-CMnbwryP.js → daemon-runtime-BOcdJaFy.js} +0 -0
  749. /package/dist/{daemon-runtime-CvqE4ysg.js → daemon-runtime-CbyS9Xgu.js} +0 -0
  750. /package/dist/{dangerous-name-matching-BzmiLXmA.js → dangerous-name-matching-C2i9AEgf.js} +0 -0
  751. /package/dist/{dangerous-name-matching-DaVRgwer.js → dangerous-name-matching-CCBwBn49.js} +0 -0
  752. /package/dist/{dangerous-tools-BOLoCRv4.js → dangerous-tools-BRtX1d_K.js} +0 -0
  753. /package/dist/{dangerous-tools-Baq7Q-i6.js → dangerous-tools-D8hrp16Q.js} +0 -0
  754. /package/dist/{delivery-queue-Cfa9Wmxp.js → delivery-queue-CgAgO5_a.js} +0 -0
  755. /package/dist/{errors-DZ199hOo.js → errors-Dblex1kc.js} +0 -0
  756. /package/dist/{fetch-C6XKGA11.js → fetch-Du9BJ20J.js} +0 -0
  757. /package/dist/{fetch-CEDsOiql.js → fetch-KSHIFKGH.js} +0 -0
  758. /package/dist/{format-duration-CqUERz51.js → format-duration-BRNiDrqx.js} +0 -0
  759. /package/dist/{format-duration-Ct-yiwkS.js → format-duration-C11mR8D_.js} +0 -0
  760. /package/dist/{format-relative-79_Y1n2Y.js → format-relative-C6kUHuOj.js} +0 -0
  761. /package/dist/{format-relative-CxLpEQOX.js → format-relative-CEWK-aoC.js} +0 -0
  762. /package/dist/{health-format-B_QRD8Si.js → health-format-D-AQZK4v.js} +0 -0
  763. /package/dist/{health-format-Bygse7KA.js → health-format-DGyISuUh.js} +0 -0
  764. /package/dist/{heartbeat-wake-LGEgcXjs.js → heartbeat-wake-BtRrOB-t.js} +0 -0
  765. /package/dist/{heartbeat-wake-Y97geucO.js → heartbeat-wake-SJ-JCo-E.js} +0 -0
  766. /package/dist/{help-format-sqWgYEdL.js → help-format-BjjZaoq3.js} +0 -0
  767. /package/dist/{help-format-NNm_Ov4H.js → help-format-DB1wv6bQ.js} +0 -0
  768. /package/dist/{helpers-R7bU5IBz.js → helpers-BVw8gMr-.js} +0 -0
  769. /package/dist/{helpers-BAsMXprO.js → helpers-D-8vB6NY.js} +0 -0
  770. /package/dist/{helpers-DLgbkcEn.js → helpers-D04-Gim7.js} +0 -0
  771. /package/dist/{inbound-context-DS_kpIYI.js → inbound-context-D94rw0Oq.js} +0 -0
  772. /package/dist/{input-provenance-Bn6thJNm.js → input-provenance-BDPOaXFk.js} +0 -0
  773. /package/dist/{ipv4-CDQpx1A7.js → ipv4-Bp2lJpEb.js} +0 -0
  774. /package/dist/{ipv4--2WXMVtE.js → ipv4-D73_qHXL.js} +0 -0
  775. /package/dist/{is-main-DN8-sNR5.js → is-main-CqNDOs3L.js} +0 -0
  776. /package/dist/{json-files-CmpYSF4G.js → json-files-Ct2lDInr.js} +0 -0
  777. /package/dist/{lanes-ByWMUgrz.js → lanes-DKkroN9D.js} +0 -0
  778. /package/dist/{links-Cm43Vcft.js → links-BWZPW7Lq.js} +0 -0
  779. /package/dist/{links-Bz4V7R_p.js → links-Y3epeqjH.js} +0 -0
  780. /package/dist/{location-DBWCGNLq.js → location-BcldrVN7.js} +0 -0
  781. /package/dist/{location-GbZ0bBRU.js → location-BrkAgrz9.js} +0 -0
  782. /package/dist/{logger-DyL5G2DO.js → logger-BuGfr7KR.js} +0 -0
  783. /package/dist/{logger-GvipVDfh.js → logger-TzwNwShm.js} +0 -0
  784. /package/dist/{logging-D8-Kozjc.js → logging-BiGr95aB.js} +0 -0
  785. /package/dist/{logging-D8R0sLY9.js → logging-DZhZ5xLX.js} +0 -0
  786. /package/dist/{mutable-allowlist-detectors-DiZDtmlZ.js → mutable-allowlist-detectors-BaVrnZS3.js} +0 -0
  787. /package/dist/{mutable-allowlist-detectors-U5ThQr9V.js → mutable-allowlist-detectors-NtI6s4TE.js} +0 -0
  788. /package/dist/{node-cli-Uf6lAntf.js → node-cli-DFKT5s4K.js} +0 -0
  789. /package/dist/{nodes-screen-Bmp1l9wY.js → nodes-screen-ByJHtT0R.js} +0 -0
  790. /package/dist/{nodes-screen-Cw7Hv7M2.js → nodes-screen-C17NdAyR.js} +0 -0
  791. /package/dist/{parse-log-line-enq8pduH.js → parse-log-line-CM1cOe-W.js} +0 -0
  792. /package/dist/{parse-log-line-mz9TG6ig.js → parse-log-line-DXE28Ti3.js} +0 -0
  793. /package/dist/{parse-timeout-BMP8a0_a.js → parse-timeout-DFxbkOgy.js} +0 -0
  794. /package/dist/{parse-timeout-CDkco8kd.js → parse-timeout-dIdCY9EB.js} +0 -0
  795. /package/dist/{path-guards-CrQOUlsq.js → path-guards-DJteVA0d.js} +0 -0
  796. /package/dist/{path-safety-DkT9RmTG.js → path-safety-BGnQWeUs.js} +0 -0
  797. /package/dist/{plugins-allowlist-BbTQ5Z2k.js → plugins-allowlist-Bvd3WXPX.js} +0 -0
  798. /package/dist/{plugins-allowlist-C20oaESO.js → plugins-allowlist-DyoGDzwZ.js} +0 -0
  799. /package/dist/{polls-B0CCBDeR.js → polls-DXd67TD8.js} +0 -0
  800. /package/dist/{ports-lsof-Wteul3ju.js → ports-lsof-BNQJW1Qu.js} +0 -0
  801. /package/dist/{program-context-jqeI5alP.js → program-context-DpJ5udOA.js} +0 -0
  802. /package/dist/{progress-C1kUfYL-.js → progress-Dvx-ExOb.js} +0 -0
  803. /package/dist/{prompt-Yn2yClg1.js → prompt-DRT7xYvH.js} +0 -0
  804. /package/dist/{prompt-BVZVovoB.js → prompt-YAKpM1vg.js} +0 -0
  805. /package/dist/{prompt-style-D0LUnqXi.js → prompt-style-BsR0RICZ.js} +0 -0
  806. /package/dist/{prompt-style-DjEYC_s-.js → prompt-style-inF3A_oX.js} +0 -0
  807. /package/dist/{proxy-DL3MD6-P.js → proxy-GJkoUC6V.js} +0 -0
  808. /package/dist/{proxy-DpNv2cSV.js → proxy-yk1Oqe9p.js} +0 -0
  809. /package/dist/{push-apns-DuG95AKC.js → push-apns-Ak1TkhPj.js} +0 -0
  810. /package/dist/{pw-ai-state-CGfLv6nV.js → pw-ai-state-D2Fjn4L6.js} +0 -0
  811. /package/dist/{pw-ai-state-Dynx20hr.js → pw-ai-state-Ds_-5nzI.js} +0 -0
  812. /package/dist/{redact-identifier-CAagcfWA.js → redact-identifier-CKA9ZTIc.js} +0 -0
  813. /package/dist/{remoteclaw-root-DybYl8PL.js → remoteclaw-root-BbqPSH6q.js} +0 -0
  814. /package/dist/{remoteclaw-root-C2HV2VeC.js → remoteclaw-root-dHyfh_2E.js} +0 -0
  815. /package/dist/{render-CCLsW6Lz.js → render-CUAKPmvZ.js} +0 -0
  816. /package/dist/{retry-DnqPAqWp.js → retry-0uBjohL-.js} +0 -0
  817. /package/dist/{retry-CxXVRdes.js → retry-BbVJvOUo.js} +0 -0
  818. /package/dist/{runtime-DJNp29jv.js → runtime-Ds3E9SqF.js} +0 -0
  819. /package/dist/{runtime-guard-U-ewY_QH.js → runtime-guard-Dw19MuxF.js} +0 -0
  820. /package/dist/{secret-equal-BbHdTtqY.js → secret-equal-DgjJcvjv.js} +0 -0
  821. /package/dist/{secure-random-CS2mSdTn.js → secure-random-Bla7VjVG.js} +0 -0
  822. /package/dist/{session-DBL5nHDy.js → session-C7PLQQMA.js} +0 -0
  823. /package/dist/{stagger-BXv_apuy.js → stagger-Cu9_3JD_.js} +0 -0
  824. /package/dist/{stagger-MI9gd2rQ.js → stagger-NmUOU1S6.js} +0 -0
  825. /package/dist/{status-BmtCS3T1.js → status-BNw-xk6B.js} +0 -0
  826. /package/dist/{status-BrwHRn2B.js → status-D98glect.js} +0 -0
  827. /package/dist/{store-BPZo49zT.js → store-CmRidfgp.js} +0 -0
  828. /package/dist/{store-v3P-OWhi.js → store-oxFp4Iqf.js} +0 -0
  829. /package/dist/{strip-inbound-meta-jy3bkUab.js → strip-inbound-meta-B21Qdh8I.js} +0 -0
  830. /package/dist/{subsystem-CDhxwtDd.js → subsystem-SgROXN1v.js} +0 -0
  831. /package/dist/{table-C1rdyYl9.js → table-DhGVhmP-.js} +0 -0
  832. /package/dist/{tailnet-PnMrjwGT.js → tailnet-wUV6epIk.js} +0 -0
  833. /package/dist/{tailscale-Dbyahx0J.js → tailscale-DAa9lokU.js} +0 -0
  834. /package/dist/{target-errors-BDpPcwh5.js → target-errors-BDipwemU.js} +0 -0
  835. /package/dist/{targets-C-2xwh9f.js → targets-DfXObWaL.js} +0 -0
  836. /package/dist/{targets-UncQvCVs.js → targets-PM39J-YL.js} +0 -0
  837. /package/dist/{text-format-BQ3z_OXA.js → text-format-CFm4X8Ze.js} +0 -0
  838. /package/dist/{text-format-oWqzVmah.js → text-format-Cy1bnk2A.js} +0 -0
  839. /package/dist/{tool-display-B-nr7cSF.js → tool-display-BAIuLbtW.js} +0 -0
  840. /package/dist/{trash-DPi0aCCQ.js → trash-BS86zpVy.js} +0 -0
  841. /package/dist/{usage-BdhBT0Vz.js → usage-BvSX010R.js} +0 -0
  842. /package/dist/{usage-format-C3mNLfhI.js → usage-format-C6Iz_Ws9.js} +0 -0
  843. /package/dist/{usage-format-DAaPzr_z.js → usage-format-CHBrzgvG.js} +0 -0
  844. /package/dist/{usage-BtQcAnf6.js → usage-sF5tij7A.js} +0 -0
  845. /package/dist/{widearea-dns-CsmBVbez.js → widearea-dns-CsqvX85g.js} +0 -0
  846. /package/dist/{widearea-dns-BXGCmXnD.js → widearea-dns-DtACcM7M.js} +0 -0
  847. /package/dist/{workspace-BzPeZDew.js → workspace-DpbQppPf.js} +0 -0
  848. /package/dist/{wsl-B_sPlzWw.js → wsl-B5ccPr42.js} +0 -0
  849. /package/dist/{wsl-BCnYV9O0.js → wsl-BJW8nTyL.js} +0 -0
@@ -0,0 +1,1326 @@
1
+ import "./paths-BTaH3rLn.js";
2
+ import { L as theme, _ as resolveUserPath, b as shortenHomePath } from "./utils-C5daYcFn.js";
3
+ import "./subsystem-BgxIzx7w.js";
4
+ import { n as defaultRuntime } from "./runtime-Ds3E9SqF.js";
5
+ import "./ansi-aRwLYlzD.js";
6
+ import "./agent-scope-Dzc3Pxwr.js";
7
+ import { f as GATEWAY_CLIENT_MODES, p as GATEWAY_CLIENT_NAMES } from "./message-channel-DF4I2vOK.js";
8
+ import { i as loadConfig } from "./config-BzYPJgWg.js";
9
+ import "./env-DUb5GiQe.js";
10
+ import "./host-env-security-Bms2_EMV.js";
11
+ import "./inbound-path-policy-gHabNHWN.js";
12
+ import { r as VERSION } from "./env-vars-CLGbxdpL.js";
13
+ import "./logger-BiVcvOhw.js";
14
+ import "./ip-C9q3Oq20.js";
15
+ import { f as GatewayClient, t as buildGatewayConnectionDetails } from "./call-jLXWNKPQ.js";
16
+ import "./net-Dl7oQfqm.js";
17
+ import "./tailnet-wUV6epIk.js";
18
+ import { t as resolveGatewayCredentialsFromConfig } from "./credentials-C82aU5z-.js";
19
+ import { t as isMainModule } from "./is-main-CqNDOs3L.js";
20
+ import { t as ensureRemoteClawCliOnPath } from "./path-env-Dt0Pot3Y.js";
21
+ import { t as formatDocsLink } from "./links-BWZPW7Lq.js";
22
+ import { a as isKnownCoreToolId, t as DANGEROUS_ACP_TOOLS } from "./dangerous-tools-D8hrp16Q.js";
23
+ import { n as inheritOptionFromParent } from "./command-options-DbRrl8qF.js";
24
+ import { fileURLToPath } from "node:url";
25
+ import fs from "node:fs";
26
+ import path from "node:path";
27
+ import { randomUUID } from "node:crypto";
28
+ import { spawn } from "node:child_process";
29
+ import * as readline$1 from "node:readline";
30
+ import { Readable, Writable } from "node:stream";
31
+ import { AgentSideConnection, ClientSideConnection, PROTOCOL_VERSION, ndJsonStream } from "@agentclientprotocol/sdk";
32
+
33
+ //#region src/acp/client.ts
34
+ const SAFE_AUTO_APPROVE_TOOL_IDS = new Set(["search"]);
35
+ const TRUSTED_SAFE_TOOL_ALIASES = new Set(["search"]);
36
+ const TOOL_NAME_MAX_LENGTH = 128;
37
+ const TOOL_NAME_PATTERN = /^[a-z0-9._-]+$/;
38
+ const TOOL_KIND_BY_ID = new Map([["search", "search"]]);
39
+ function asRecord(value) {
40
+ return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
41
+ }
42
+ function readFirstStringValue(source, keys) {
43
+ if (!source) return;
44
+ for (const key of keys) {
45
+ const value = source[key];
46
+ if (typeof value === "string" && value.trim()) return value.trim();
47
+ }
48
+ }
49
+ function normalizeToolName(value) {
50
+ const normalized = value.trim().toLowerCase();
51
+ if (!normalized || normalized.length > TOOL_NAME_MAX_LENGTH) return;
52
+ if (!TOOL_NAME_PATTERN.test(normalized)) return;
53
+ return normalized;
54
+ }
55
+ function parseToolNameFromTitle(title) {
56
+ if (!title) return;
57
+ const head = title.split(":", 1)[0]?.trim();
58
+ if (!head) return;
59
+ return normalizeToolName(head);
60
+ }
61
+ function resolveToolKindForPermission(toolName) {
62
+ if (!toolName) return;
63
+ return TOOL_KIND_BY_ID.get(toolName) ?? "other";
64
+ }
65
+ function resolveToolNameForPermission(params) {
66
+ const toolCall = params.toolCall;
67
+ const toolMeta = asRecord(toolCall?._meta);
68
+ const rawInput = asRecord(toolCall?.rawInput);
69
+ const fromMeta = readFirstStringValue(toolMeta, [
70
+ "toolName",
71
+ "tool_name",
72
+ "name"
73
+ ]);
74
+ const fromRawInput = readFirstStringValue(rawInput, [
75
+ "tool",
76
+ "toolName",
77
+ "tool_name",
78
+ "name"
79
+ ]);
80
+ const fromTitle = parseToolNameFromTitle(toolCall?.title);
81
+ return normalizeToolName(fromMeta ?? fromRawInput ?? fromTitle ?? "");
82
+ }
83
+ function shouldAutoApproveToolCall(toolName) {
84
+ const isTrustedToolId = typeof toolName === "string" && (isKnownCoreToolId(toolName) || TRUSTED_SAFE_TOOL_ALIASES.has(toolName));
85
+ if (!toolName || !isTrustedToolId || !SAFE_AUTO_APPROVE_TOOL_IDS.has(toolName)) return false;
86
+ return true;
87
+ }
88
+ function pickOption(options, kinds) {
89
+ for (const kind of kinds) {
90
+ const match = options.find((option) => option.kind === kind);
91
+ if (match) return match;
92
+ }
93
+ }
94
+ function selectedPermission(optionId) {
95
+ return { outcome: {
96
+ outcome: "selected",
97
+ optionId
98
+ } };
99
+ }
100
+ function cancelledPermission() {
101
+ return { outcome: { outcome: "cancelled" } };
102
+ }
103
+ function promptUserPermission(toolName, toolTitle) {
104
+ if (!process.stdin.isTTY || !process.stderr.isTTY) {
105
+ console.error(`[permission denied] ${toolName ?? "unknown"}: non-interactive terminal`);
106
+ return Promise.resolve(false);
107
+ }
108
+ return new Promise((resolve) => {
109
+ let settled = false;
110
+ const rl = readline$1.createInterface({
111
+ input: process.stdin,
112
+ output: process.stderr
113
+ });
114
+ const finish = (approved) => {
115
+ if (settled) return;
116
+ settled = true;
117
+ clearTimeout(timeout);
118
+ rl.close();
119
+ resolve(approved);
120
+ };
121
+ const timeout = setTimeout(() => {
122
+ console.error(`\n[permission timeout] denied: ${toolName ?? "unknown"}`);
123
+ finish(false);
124
+ }, 3e4);
125
+ const label = toolTitle ? toolName ? `${toolTitle} (${toolName})` : toolTitle : toolName ?? "unknown tool";
126
+ rl.question(`\n[permission] Allow "${label}"? (y/N) `, (answer) => {
127
+ const approved = answer.trim().toLowerCase() === "y";
128
+ console.error(`[permission ${approved ? "approved" : "denied"}] ${toolName ?? "unknown"}`);
129
+ finish(approved);
130
+ });
131
+ });
132
+ }
133
+ async function resolvePermissionRequest(params, deps = {}) {
134
+ const log = deps.log ?? ((line) => console.error(line));
135
+ const prompt = deps.prompt ?? promptUserPermission;
136
+ const options = params.options ?? [];
137
+ const toolTitle = params.toolCall?.title ?? "tool";
138
+ const toolName = resolveToolNameForPermission(params);
139
+ const toolKind = resolveToolKindForPermission(toolName);
140
+ if (options.length === 0) {
141
+ log(`[permission cancelled] ${toolName ?? "unknown"}: no options available`);
142
+ return cancelledPermission();
143
+ }
144
+ const allowOption = pickOption(options, ["allow_once", "allow_always"]);
145
+ const rejectOption = pickOption(options, ["reject_once", "reject_always"]);
146
+ const autoApproveAllowed = shouldAutoApproveToolCall(toolName);
147
+ if (!(!toolName || !autoApproveAllowed || DANGEROUS_ACP_TOOLS.has(toolName))) {
148
+ const option = allowOption ?? options[0];
149
+ if (!option) {
150
+ log(`[permission cancelled] ${toolName}: no selectable options`);
151
+ return cancelledPermission();
152
+ }
153
+ log(`[permission auto-approved] ${toolName} (${toolKind ?? "unknown"})`);
154
+ return selectedPermission(option.optionId);
155
+ }
156
+ log(`\n[permission requested] ${toolTitle}${toolName ? ` (${toolName})` : ""}${toolKind ? ` [${toolKind}]` : ""}`);
157
+ const approved = await prompt(toolName, toolTitle);
158
+ if (approved && allowOption) return selectedPermission(allowOption.optionId);
159
+ if (!approved && rejectOption) return selectedPermission(rejectOption.optionId);
160
+ log(`[permission cancelled] ${toolName ?? "unknown"}: missing ${approved ? "allow" : "reject"} option`);
161
+ return cancelledPermission();
162
+ }
163
+ function toArgs(value) {
164
+ if (!value) return [];
165
+ return Array.isArray(value) ? value : [value];
166
+ }
167
+ function buildServerArgs(opts) {
168
+ const args = ["acp", ...toArgs(opts.serverArgs)];
169
+ if (opts.serverVerbose && !args.includes("--verbose") && !args.includes("-v")) args.push("--verbose");
170
+ return args;
171
+ }
172
+ function resolveSelfEntryPath() {
173
+ try {
174
+ const here = fileURLToPath(import.meta.url);
175
+ const candidate = path.resolve(path.dirname(here), "..", "entry.js");
176
+ if (fs.existsSync(candidate)) return candidate;
177
+ } catch {}
178
+ const argv1 = process.argv[1]?.trim();
179
+ if (argv1) return path.isAbsolute(argv1) ? argv1 : path.resolve(process.cwd(), argv1);
180
+ return null;
181
+ }
182
+ function printSessionUpdate(notification) {
183
+ const update = notification.update;
184
+ if (!("sessionUpdate" in update)) return;
185
+ switch (update.sessionUpdate) {
186
+ case "agent_message_chunk":
187
+ if (update.content?.type === "text") process.stdout.write(update.content.text);
188
+ return;
189
+ case "tool_call":
190
+ console.log(`\n[tool] ${update.title} (${update.status})`);
191
+ return;
192
+ case "tool_call_update":
193
+ if (update.status) console.log(`[tool update] ${update.toolCallId}: ${update.status}`);
194
+ return;
195
+ case "available_commands_update": {
196
+ const names = update.availableCommands?.map((cmd) => `/${cmd.name}`).join(" ");
197
+ if (names) console.log(`\n[commands] ${names}`);
198
+ return;
199
+ }
200
+ default: return;
201
+ }
202
+ }
203
+ async function createAcpClient(opts = {}) {
204
+ const cwd = opts.cwd ?? process.cwd();
205
+ const log = Boolean(opts.verbose) ? (msg) => console.error(`[acp-client] ${msg}`) : () => {};
206
+ ensureRemoteClawCliOnPath();
207
+ const serverArgs = buildServerArgs(opts);
208
+ const entryPath = resolveSelfEntryPath();
209
+ const serverCommand = opts.serverCommand ?? (entryPath ? process.execPath : "remoteclaw");
210
+ const effectiveArgs = opts.serverCommand || !entryPath ? serverArgs : [entryPath, ...serverArgs];
211
+ log(`spawning: ${serverCommand} ${effectiveArgs.join(" ")}`);
212
+ const agent = spawn(serverCommand, effectiveArgs, {
213
+ stdio: [
214
+ "pipe",
215
+ "pipe",
216
+ "inherit"
217
+ ],
218
+ cwd
219
+ });
220
+ if (!agent.stdin || !agent.stdout) throw new Error("Failed to create ACP stdio pipes");
221
+ const client = new ClientSideConnection(() => ({
222
+ sessionUpdate: async (params) => {
223
+ printSessionUpdate(params);
224
+ },
225
+ requestPermission: async (params) => {
226
+ return resolvePermissionRequest(params, { cwd });
227
+ }
228
+ }), ndJsonStream(Writable.toWeb(agent.stdin), Readable.toWeb(agent.stdout)));
229
+ log("initializing");
230
+ await client.initialize({
231
+ protocolVersion: PROTOCOL_VERSION,
232
+ clientCapabilities: {
233
+ fs: {
234
+ readTextFile: true,
235
+ writeTextFile: true
236
+ },
237
+ terminal: true
238
+ },
239
+ clientInfo: {
240
+ name: "remoteclaw-acp-client",
241
+ version: "1.0.0"
242
+ }
243
+ });
244
+ log("creating session");
245
+ return {
246
+ client,
247
+ agent,
248
+ sessionId: (await client.newSession({
249
+ cwd,
250
+ mcpServers: []
251
+ })).sessionId
252
+ };
253
+ }
254
+ async function runAcpClientInteractive(opts = {}) {
255
+ const { client, agent, sessionId } = await createAcpClient(opts);
256
+ const rl = readline$1.createInterface({
257
+ input: process.stdin,
258
+ output: process.stdout
259
+ });
260
+ console.log("RemoteClaw ACP client");
261
+ console.log(`Session: ${sessionId}`);
262
+ console.log("Type a prompt, or \"exit\" to quit.\n");
263
+ const prompt = () => {
264
+ rl.question("> ", async (input) => {
265
+ const text = input.trim();
266
+ if (!text) {
267
+ prompt();
268
+ return;
269
+ }
270
+ if (text === "exit" || text === "quit") {
271
+ agent.kill();
272
+ rl.close();
273
+ process.exit(0);
274
+ }
275
+ try {
276
+ const response = await client.prompt({
277
+ sessionId,
278
+ prompt: [{
279
+ type: "text",
280
+ text
281
+ }]
282
+ });
283
+ console.log(`\n[${response.stopReason}]\n`);
284
+ } catch (err) {
285
+ console.error(`\n[error] ${String(err)}\n`);
286
+ }
287
+ prompt();
288
+ });
289
+ };
290
+ prompt();
291
+ agent.on("exit", (code) => {
292
+ console.log(`\nAgent exited with code ${code ?? 0}`);
293
+ rl.close();
294
+ process.exit(code ?? 0);
295
+ });
296
+ }
297
+
298
+ //#endregion
299
+ //#region src/acp/secret-file.ts
300
+ function readSecretFromFile(filePath, label) {
301
+ const resolvedPath = resolveUserPath(filePath.trim());
302
+ if (!resolvedPath) throw new Error(`${label} file path is empty.`);
303
+ let raw = "";
304
+ try {
305
+ raw = fs.readFileSync(resolvedPath, "utf8");
306
+ } catch (err) {
307
+ throw new Error(`Failed to read ${label} file at ${resolvedPath}: ${String(err)}`, { cause: err });
308
+ }
309
+ const secret = raw.trim();
310
+ if (!secret) throw new Error(`${label} file at ${resolvedPath} is empty.`);
311
+ return secret;
312
+ }
313
+
314
+ //#endregion
315
+ //#region src/infra/fixed-window-rate-limit.ts
316
+ function createFixedWindowRateLimiter(params) {
317
+ const maxRequests = Math.max(1, Math.floor(params.maxRequests));
318
+ const windowMs = Math.max(1, Math.floor(params.windowMs));
319
+ const now = params.now ?? Date.now;
320
+ let count = 0;
321
+ let windowStartMs = 0;
322
+ return {
323
+ consume() {
324
+ const nowMs = now();
325
+ if (nowMs - windowStartMs >= windowMs) {
326
+ windowStartMs = nowMs;
327
+ count = 0;
328
+ }
329
+ if (count >= maxRequests) return {
330
+ allowed: false,
331
+ retryAfterMs: Math.max(0, windowStartMs + windowMs - nowMs),
332
+ remaining: 0
333
+ };
334
+ count += 1;
335
+ return {
336
+ allowed: true,
337
+ retryAfterMs: 0,
338
+ remaining: Math.max(0, maxRequests - count)
339
+ };
340
+ },
341
+ reset() {
342
+ count = 0;
343
+ windowStartMs = 0;
344
+ }
345
+ };
346
+ }
347
+
348
+ //#endregion
349
+ //#region src/acp/commands.ts
350
+ function getAvailableCommands() {
351
+ return [
352
+ {
353
+ name: "help",
354
+ description: "Show help and common commands."
355
+ },
356
+ {
357
+ name: "commands",
358
+ description: "List available commands."
359
+ },
360
+ {
361
+ name: "status",
362
+ description: "Show current status."
363
+ },
364
+ {
365
+ name: "context",
366
+ description: "Explain context usage (list|detail|json).",
367
+ input: { hint: "list | detail | json" }
368
+ },
369
+ {
370
+ name: "whoami",
371
+ description: "Show sender id (alias: /id)."
372
+ },
373
+ {
374
+ name: "id",
375
+ description: "Alias for /whoami."
376
+ },
377
+ {
378
+ name: "subagents",
379
+ description: "List or manage sub-agents."
380
+ },
381
+ {
382
+ name: "config",
383
+ description: "Read or write config (owner-only)."
384
+ },
385
+ {
386
+ name: "debug",
387
+ description: "Set runtime-only overrides (owner-only)."
388
+ },
389
+ {
390
+ name: "usage",
391
+ description: "Toggle usage footer (off|tokens|full)."
392
+ },
393
+ {
394
+ name: "stop",
395
+ description: "Stop the current run."
396
+ },
397
+ {
398
+ name: "restart",
399
+ description: "Restart the gateway (if enabled)."
400
+ },
401
+ {
402
+ name: "dock-telegram",
403
+ description: "Route replies to Telegram."
404
+ },
405
+ {
406
+ name: "dock-discord",
407
+ description: "Route replies to Discord."
408
+ },
409
+ {
410
+ name: "dock-slack",
411
+ description: "Route replies to Slack."
412
+ },
413
+ {
414
+ name: "activation",
415
+ description: "Set group activation (mention|always)."
416
+ },
417
+ {
418
+ name: "send",
419
+ description: "Set send mode (on|off|inherit)."
420
+ },
421
+ {
422
+ name: "reset",
423
+ description: "Reset the session (/new)."
424
+ },
425
+ {
426
+ name: "new",
427
+ description: "Reset the session (/reset)."
428
+ },
429
+ {
430
+ name: "think",
431
+ description: "Set thinking level (off|minimal|low|medium|high|xhigh)."
432
+ },
433
+ {
434
+ name: "verbose",
435
+ description: "Set verbose mode (on|full|off)."
436
+ },
437
+ {
438
+ name: "reasoning",
439
+ description: "Toggle reasoning output (on|off|stream)."
440
+ },
441
+ {
442
+ name: "elevated",
443
+ description: "Toggle elevated mode (on|off)."
444
+ },
445
+ {
446
+ name: "model",
447
+ description: "Select a model (list|status|<name>)."
448
+ },
449
+ {
450
+ name: "queue",
451
+ description: "Adjust queue mode and options."
452
+ },
453
+ {
454
+ name: "bash",
455
+ description: "Run a host command (if enabled)."
456
+ },
457
+ {
458
+ name: "compact",
459
+ description: "Compact the session history."
460
+ }
461
+ ];
462
+ }
463
+
464
+ //#endregion
465
+ //#region src/acp/event-mapper.ts
466
+ const INLINE_CONTROL_ESCAPE_MAP = {
467
+ "\0": "\\0",
468
+ "\r": "\\r",
469
+ "\n": "\\n",
470
+ " ": "\\t",
471
+ "\v": "\\v",
472
+ "\f": "\\f",
473
+ "\u2028": "\\u2028",
474
+ "\u2029": "\\u2029"
475
+ };
476
+ function escapeInlineControlChars(value) {
477
+ let escaped = "";
478
+ for (const char of value) {
479
+ const codePoint = char.codePointAt(0);
480
+ if (codePoint === void 0) {
481
+ escaped += char;
482
+ continue;
483
+ }
484
+ if (!(codePoint <= 31 || codePoint >= 127 && codePoint <= 159 || codePoint === 8232 || codePoint === 8233)) {
485
+ escaped += char;
486
+ continue;
487
+ }
488
+ const mapped = INLINE_CONTROL_ESCAPE_MAP[char];
489
+ if (mapped) {
490
+ escaped += mapped;
491
+ continue;
492
+ }
493
+ escaped += codePoint <= 255 ? `\\x${codePoint.toString(16).padStart(2, "0")}` : `\\u${codePoint.toString(16).padStart(4, "0")}`;
494
+ }
495
+ return escaped;
496
+ }
497
+ function escapeResourceTitle(value) {
498
+ return escapeInlineControlChars(value).replace(/[()[\]]/g, (char) => `\\${char}`);
499
+ }
500
+ function extractTextFromPrompt(prompt, maxBytes) {
501
+ const parts = [];
502
+ let totalBytes = 0;
503
+ for (const block of prompt) {
504
+ let blockText;
505
+ if (block.type === "text") blockText = block.text;
506
+ else if (block.type === "resource") {
507
+ const resource = block.resource;
508
+ if (resource?.text) blockText = resource.text;
509
+ } else if (block.type === "resource_link") {
510
+ const title = block.title ? ` (${escapeResourceTitle(block.title)})` : "";
511
+ const uri = block.uri ? escapeInlineControlChars(block.uri) : "";
512
+ blockText = uri ? `[Resource link${title}] ${uri}` : `[Resource link${title}]`;
513
+ }
514
+ if (blockText !== void 0) {
515
+ if (maxBytes !== void 0) {
516
+ const separatorBytes = parts.length > 0 ? 1 : 0;
517
+ totalBytes += separatorBytes + Buffer.byteLength(blockText, "utf-8");
518
+ if (totalBytes > maxBytes) throw new Error(`Prompt exceeds maximum allowed size of ${maxBytes} bytes`);
519
+ }
520
+ parts.push(blockText);
521
+ }
522
+ }
523
+ return parts.join("\n");
524
+ }
525
+ function extractAttachmentsFromPrompt(prompt) {
526
+ const attachments = [];
527
+ for (const block of prompt) {
528
+ if (block.type !== "image") continue;
529
+ const image = block;
530
+ if (!image.data || !image.mimeType) continue;
531
+ attachments.push({
532
+ type: "image",
533
+ mimeType: image.mimeType,
534
+ content: image.data
535
+ });
536
+ }
537
+ return attachments;
538
+ }
539
+ function formatToolTitle(name, args) {
540
+ const base = name ?? "tool";
541
+ if (!args || Object.keys(args).length === 0) return base;
542
+ return `${base}: ${Object.entries(args).map(([key, value]) => {
543
+ const raw = typeof value === "string" ? value : JSON.stringify(value);
544
+ return `${key}: ${raw.length > 100 ? `${raw.slice(0, 100)}...` : raw}`;
545
+ }).join(", ")}`;
546
+ }
547
+ function inferToolKind(name) {
548
+ if (!name) return "other";
549
+ const normalized = name.toLowerCase();
550
+ if (normalized.includes("read")) return "read";
551
+ if (normalized.includes("edit")) return "edit";
552
+ if (normalized.includes("delete") || normalized.includes("remove")) return "delete";
553
+ if (normalized.includes("move") || normalized.includes("rename")) return "move";
554
+ if (normalized.includes("search") || normalized.includes("find")) return "search";
555
+ if (normalized.includes("run") || normalized.includes("bash")) return "execute";
556
+ if (normalized.includes("fetch") || normalized.includes("http")) return "fetch";
557
+ return "other";
558
+ }
559
+
560
+ //#endregion
561
+ //#region src/acp/meta.ts
562
+ function readString(meta, keys) {
563
+ if (!meta) return;
564
+ for (const key of keys) {
565
+ const value = meta[key];
566
+ if (typeof value === "string" && value.trim()) return value.trim();
567
+ }
568
+ }
569
+ function readBool(meta, keys) {
570
+ if (!meta) return;
571
+ for (const key of keys) {
572
+ const value = meta[key];
573
+ if (typeof value === "boolean") return value;
574
+ }
575
+ }
576
+ function readNumber(meta, keys) {
577
+ if (!meta) return;
578
+ for (const key of keys) {
579
+ const value = meta[key];
580
+ if (typeof value === "number" && Number.isFinite(value)) return value;
581
+ }
582
+ }
583
+
584
+ //#endregion
585
+ //#region src/acp/session-mapper.ts
586
+ function parseSessionMeta(meta) {
587
+ if (!meta || typeof meta !== "object") return {};
588
+ const record = meta;
589
+ return {
590
+ sessionKey: readString(record, [
591
+ "sessionKey",
592
+ "session",
593
+ "key"
594
+ ]),
595
+ sessionLabel: readString(record, ["sessionLabel", "label"]),
596
+ resetSession: readBool(record, ["resetSession", "reset"]),
597
+ requireExisting: readBool(record, ["requireExistingSession", "requireExisting"]),
598
+ prefixCwd: readBool(record, ["prefixCwd"])
599
+ };
600
+ }
601
+ async function resolveSessionKey(params) {
602
+ const requestedLabel = params.meta.sessionLabel ?? params.opts.defaultSessionLabel;
603
+ const requestedKey = params.meta.sessionKey ?? params.opts.defaultSessionKey;
604
+ const requireExisting = params.meta.requireExisting ?? params.opts.requireExistingSession ?? false;
605
+ if (params.meta.sessionLabel) {
606
+ const resolved = await params.gateway.request("sessions.resolve", { label: params.meta.sessionLabel });
607
+ if (!resolved?.key) throw new Error(`Unable to resolve session label: ${params.meta.sessionLabel}`);
608
+ return resolved.key;
609
+ }
610
+ if (params.meta.sessionKey) {
611
+ if (!requireExisting) return params.meta.sessionKey;
612
+ const resolved = await params.gateway.request("sessions.resolve", { key: params.meta.sessionKey });
613
+ if (!resolved?.key) throw new Error(`Session key not found: ${params.meta.sessionKey}`);
614
+ return resolved.key;
615
+ }
616
+ if (requestedLabel) {
617
+ const resolved = await params.gateway.request("sessions.resolve", { label: requestedLabel });
618
+ if (!resolved?.key) throw new Error(`Unable to resolve session label: ${requestedLabel}`);
619
+ return resolved.key;
620
+ }
621
+ if (requestedKey) {
622
+ if (!requireExisting) return requestedKey;
623
+ const resolved = await params.gateway.request("sessions.resolve", { key: requestedKey });
624
+ if (!resolved?.key) throw new Error(`Session key not found: ${requestedKey}`);
625
+ return resolved.key;
626
+ }
627
+ return params.fallbackKey;
628
+ }
629
+ async function resetSessionIfNeeded(params) {
630
+ if (!(params.meta.resetSession ?? params.opts.resetSession ?? false)) return;
631
+ await params.gateway.request("sessions.reset", { key: params.sessionKey });
632
+ }
633
+
634
+ //#endregion
635
+ //#region src/acp/session.ts
636
+ const DEFAULT_MAX_SESSIONS = 5e3;
637
+ const DEFAULT_IDLE_TTL_MS = 1440 * 60 * 1e3;
638
+ function createInMemorySessionStore(options = {}) {
639
+ const maxSessions = Math.max(1, options.maxSessions ?? DEFAULT_MAX_SESSIONS);
640
+ const idleTtlMs = Math.max(1e3, options.idleTtlMs ?? DEFAULT_IDLE_TTL_MS);
641
+ const now = options.now ?? Date.now;
642
+ const sessions = /* @__PURE__ */ new Map();
643
+ const runIdToSessionId = /* @__PURE__ */ new Map();
644
+ const touchSession = (session, nowMs) => {
645
+ session.lastTouchedAt = nowMs;
646
+ };
647
+ const removeSession = (sessionId) => {
648
+ const session = sessions.get(sessionId);
649
+ if (!session) return false;
650
+ if (session.activeRunId) runIdToSessionId.delete(session.activeRunId);
651
+ session.abortController?.abort();
652
+ sessions.delete(sessionId);
653
+ return true;
654
+ };
655
+ const reapIdleSessions = (nowMs) => {
656
+ const idleBefore = nowMs - idleTtlMs;
657
+ for (const [sessionId, session] of sessions.entries()) {
658
+ if (session.activeRunId || session.abortController) continue;
659
+ if (session.lastTouchedAt > idleBefore) continue;
660
+ removeSession(sessionId);
661
+ }
662
+ };
663
+ const evictOldestIdleSession = () => {
664
+ let oldestSessionId = null;
665
+ let oldestLastTouchedAt = Number.POSITIVE_INFINITY;
666
+ for (const [sessionId, session] of sessions.entries()) {
667
+ if (session.activeRunId || session.abortController) continue;
668
+ if (session.lastTouchedAt >= oldestLastTouchedAt) continue;
669
+ oldestLastTouchedAt = session.lastTouchedAt;
670
+ oldestSessionId = sessionId;
671
+ }
672
+ if (!oldestSessionId) return false;
673
+ return removeSession(oldestSessionId);
674
+ };
675
+ const createSession = (params) => {
676
+ const nowMs = now();
677
+ const sessionId = params.sessionId ?? randomUUID();
678
+ const existingSession = sessions.get(sessionId);
679
+ if (existingSession) {
680
+ existingSession.sessionKey = params.sessionKey;
681
+ existingSession.cwd = params.cwd;
682
+ touchSession(existingSession, nowMs);
683
+ return existingSession;
684
+ }
685
+ reapIdleSessions(nowMs);
686
+ if (sessions.size >= maxSessions && !evictOldestIdleSession()) throw new Error(`ACP session limit reached (max ${maxSessions}). Close idle ACP clients and retry.`);
687
+ const session = {
688
+ sessionId,
689
+ sessionKey: params.sessionKey,
690
+ cwd: params.cwd,
691
+ createdAt: nowMs,
692
+ lastTouchedAt: nowMs,
693
+ abortController: null,
694
+ activeRunId: null
695
+ };
696
+ sessions.set(sessionId, session);
697
+ return session;
698
+ };
699
+ const hasSession = (sessionId) => sessions.has(sessionId);
700
+ const getSession = (sessionId) => {
701
+ const session = sessions.get(sessionId);
702
+ if (session) touchSession(session, now());
703
+ return session;
704
+ };
705
+ const getSessionByRunId = (runId) => {
706
+ const sessionId = runIdToSessionId.get(runId);
707
+ if (!sessionId) return;
708
+ const session = sessions.get(sessionId);
709
+ if (session) touchSession(session, now());
710
+ return session;
711
+ };
712
+ const setActiveRun = (sessionId, runId, abortController) => {
713
+ const session = sessions.get(sessionId);
714
+ if (!session) return;
715
+ session.activeRunId = runId;
716
+ session.abortController = abortController;
717
+ runIdToSessionId.set(runId, sessionId);
718
+ touchSession(session, now());
719
+ };
720
+ const clearActiveRun = (sessionId) => {
721
+ const session = sessions.get(sessionId);
722
+ if (!session) return;
723
+ if (session.activeRunId) runIdToSessionId.delete(session.activeRunId);
724
+ session.activeRunId = null;
725
+ session.abortController = null;
726
+ touchSession(session, now());
727
+ };
728
+ const cancelActiveRun = (sessionId) => {
729
+ const session = sessions.get(sessionId);
730
+ if (!session?.abortController) return false;
731
+ session.abortController.abort();
732
+ if (session.activeRunId) runIdToSessionId.delete(session.activeRunId);
733
+ session.abortController = null;
734
+ session.activeRunId = null;
735
+ touchSession(session, now());
736
+ return true;
737
+ };
738
+ const clearAllSessionsForTest = () => {
739
+ for (const session of sessions.values()) session.abortController?.abort();
740
+ sessions.clear();
741
+ runIdToSessionId.clear();
742
+ };
743
+ return {
744
+ createSession,
745
+ hasSession,
746
+ getSession,
747
+ getSessionByRunId,
748
+ setActiveRun,
749
+ clearActiveRun,
750
+ cancelActiveRun,
751
+ clearAllSessionsForTest
752
+ };
753
+ }
754
+ const defaultAcpSessionStore = createInMemorySessionStore();
755
+
756
+ //#endregion
757
+ //#region src/acp/types.ts
758
+ const ACP_AGENT_INFO = {
759
+ name: "remoteclaw-acp",
760
+ title: "RemoteClaw ACP Gateway",
761
+ version: VERSION
762
+ };
763
+
764
+ //#endregion
765
+ //#region src/acp/translator.ts
766
+ const MAX_PROMPT_BYTES = 2 * 1024 * 1024;
767
+ const SESSION_CREATE_RATE_LIMIT_DEFAULT_MAX_REQUESTS = 120;
768
+ const SESSION_CREATE_RATE_LIMIT_DEFAULT_WINDOW_MS = 1e4;
769
+ var AcpGatewayAgent = class {
770
+ constructor(connection, gateway, opts = {}) {
771
+ this.pendingPrompts = /* @__PURE__ */ new Map();
772
+ this.connection = connection;
773
+ this.gateway = gateway;
774
+ this.opts = opts;
775
+ this.log = opts.verbose ? (msg) => process.stderr.write(`[acp] ${msg}\n`) : () => {};
776
+ this.sessionStore = opts.sessionStore ?? defaultAcpSessionStore;
777
+ this.sessionCreateRateLimiter = createFixedWindowRateLimiter({
778
+ maxRequests: Math.max(1, opts.sessionCreateRateLimit?.maxRequests ?? SESSION_CREATE_RATE_LIMIT_DEFAULT_MAX_REQUESTS),
779
+ windowMs: Math.max(1e3, opts.sessionCreateRateLimit?.windowMs ?? SESSION_CREATE_RATE_LIMIT_DEFAULT_WINDOW_MS)
780
+ });
781
+ }
782
+ start() {
783
+ this.log("ready");
784
+ }
785
+ handleGatewayReconnect() {
786
+ this.log("gateway reconnected");
787
+ }
788
+ handleGatewayDisconnect(reason) {
789
+ this.log(`gateway disconnected: ${reason}`);
790
+ for (const pending of this.pendingPrompts.values()) {
791
+ pending.reject(/* @__PURE__ */ new Error(`Gateway disconnected: ${reason}`));
792
+ this.sessionStore.clearActiveRun(pending.sessionId);
793
+ }
794
+ this.pendingPrompts.clear();
795
+ }
796
+ async handleGatewayEvent(evt) {
797
+ if (evt.event === "chat") {
798
+ await this.handleChatEvent(evt);
799
+ return;
800
+ }
801
+ if (evt.event === "agent") await this.handleAgentEvent(evt);
802
+ }
803
+ async initialize(_params) {
804
+ return {
805
+ protocolVersion: PROTOCOL_VERSION,
806
+ agentCapabilities: {
807
+ loadSession: true,
808
+ promptCapabilities: {
809
+ image: true,
810
+ audio: false,
811
+ embeddedContext: true
812
+ },
813
+ mcpCapabilities: {
814
+ http: false,
815
+ sse: false
816
+ },
817
+ sessionCapabilities: { list: {} }
818
+ },
819
+ agentInfo: ACP_AGENT_INFO,
820
+ authMethods: []
821
+ };
822
+ }
823
+ async newSession(params) {
824
+ if (params.mcpServers.length > 0) this.log(`ignoring ${params.mcpServers.length} MCP servers`);
825
+ this.enforceSessionCreateRateLimit("newSession");
826
+ const sessionId = randomUUID();
827
+ const meta = parseSessionMeta(params._meta);
828
+ const sessionKey = await resolveSessionKey({
829
+ meta,
830
+ fallbackKey: `acp:${sessionId}`,
831
+ gateway: this.gateway,
832
+ opts: this.opts
833
+ });
834
+ await resetSessionIfNeeded({
835
+ meta,
836
+ sessionKey,
837
+ gateway: this.gateway,
838
+ opts: this.opts
839
+ });
840
+ const session = this.sessionStore.createSession({
841
+ sessionId,
842
+ sessionKey,
843
+ cwd: params.cwd
844
+ });
845
+ this.log(`newSession: ${session.sessionId} -> ${session.sessionKey}`);
846
+ await this.sendAvailableCommands(session.sessionId);
847
+ return { sessionId: session.sessionId };
848
+ }
849
+ async loadSession(params) {
850
+ if (params.mcpServers.length > 0) this.log(`ignoring ${params.mcpServers.length} MCP servers`);
851
+ if (!this.sessionStore.hasSession(params.sessionId)) this.enforceSessionCreateRateLimit("loadSession");
852
+ const meta = parseSessionMeta(params._meta);
853
+ const sessionKey = await resolveSessionKey({
854
+ meta,
855
+ fallbackKey: params.sessionId,
856
+ gateway: this.gateway,
857
+ opts: this.opts
858
+ });
859
+ await resetSessionIfNeeded({
860
+ meta,
861
+ sessionKey,
862
+ gateway: this.gateway,
863
+ opts: this.opts
864
+ });
865
+ const session = this.sessionStore.createSession({
866
+ sessionId: params.sessionId,
867
+ sessionKey,
868
+ cwd: params.cwd
869
+ });
870
+ this.log(`loadSession: ${session.sessionId} -> ${session.sessionKey}`);
871
+ await this.sendAvailableCommands(session.sessionId);
872
+ return {};
873
+ }
874
+ async unstable_listSessions(params) {
875
+ const limit = readNumber(params._meta, ["limit"]) ?? 100;
876
+ const result = await this.gateway.request("sessions.list", { limit });
877
+ const cwd = params.cwd ?? process.cwd();
878
+ return {
879
+ sessions: result.sessions.map((session) => ({
880
+ sessionId: session.key,
881
+ cwd,
882
+ title: session.displayName ?? session.label ?? session.key,
883
+ updatedAt: session.updatedAt ? new Date(session.updatedAt).toISOString() : void 0,
884
+ _meta: {
885
+ sessionKey: session.key,
886
+ kind: session.kind,
887
+ channel: session.channel
888
+ }
889
+ })),
890
+ nextCursor: null
891
+ };
892
+ }
893
+ async authenticate(_params) {
894
+ return {};
895
+ }
896
+ async setSessionMode(params) {
897
+ const session = this.sessionStore.getSession(params.sessionId);
898
+ if (!session) throw new Error(`Session ${params.sessionId} not found`);
899
+ if (!params.modeId) return {};
900
+ try {
901
+ await this.gateway.request("sessions.patch", {
902
+ key: session.sessionKey,
903
+ thinkingLevel: params.modeId
904
+ });
905
+ this.log(`setSessionMode: ${session.sessionId} -> ${params.modeId}`);
906
+ } catch (err) {
907
+ this.log(`setSessionMode error: ${String(err)}`);
908
+ }
909
+ return {};
910
+ }
911
+ async prompt(params) {
912
+ const session = this.sessionStore.getSession(params.sessionId);
913
+ if (!session) throw new Error(`Session ${params.sessionId} not found`);
914
+ if (session.abortController) this.sessionStore.cancelActiveRun(params.sessionId);
915
+ const meta = parseSessionMeta(params._meta);
916
+ const userText = extractTextFromPrompt(params.prompt, MAX_PROMPT_BYTES);
917
+ const attachments = extractAttachmentsFromPrompt(params.prompt);
918
+ const prefixCwd = meta.prefixCwd ?? this.opts.prefixCwd ?? true;
919
+ const displayCwd = shortenHomePath(session.cwd);
920
+ const message = prefixCwd ? `[Working directory: ${displayCwd}]\n\n${userText}` : userText;
921
+ if (Buffer.byteLength(message, "utf-8") > MAX_PROMPT_BYTES) throw new Error(`Prompt exceeds maximum allowed size of ${MAX_PROMPT_BYTES} bytes`);
922
+ const abortController = new AbortController();
923
+ const runId = randomUUID();
924
+ this.sessionStore.setActiveRun(params.sessionId, runId, abortController);
925
+ return new Promise((resolve, reject) => {
926
+ this.pendingPrompts.set(params.sessionId, {
927
+ sessionId: params.sessionId,
928
+ sessionKey: session.sessionKey,
929
+ idempotencyKey: runId,
930
+ resolve,
931
+ reject
932
+ });
933
+ this.gateway.request("chat.send", {
934
+ sessionKey: session.sessionKey,
935
+ message,
936
+ attachments: attachments.length > 0 ? attachments : void 0,
937
+ idempotencyKey: runId,
938
+ thinking: readString(params._meta, ["thinking", "thinkingLevel"]),
939
+ deliver: readBool(params._meta, ["deliver"]),
940
+ timeoutMs: readNumber(params._meta, ["timeoutMs"])
941
+ }, { expectFinal: true }).catch((err) => {
942
+ this.pendingPrompts.delete(params.sessionId);
943
+ this.sessionStore.clearActiveRun(params.sessionId);
944
+ reject(err instanceof Error ? err : new Error(String(err)));
945
+ });
946
+ });
947
+ }
948
+ async cancel(params) {
949
+ const session = this.sessionStore.getSession(params.sessionId);
950
+ if (!session) return;
951
+ this.sessionStore.cancelActiveRun(params.sessionId);
952
+ try {
953
+ await this.gateway.request("chat.abort", { sessionKey: session.sessionKey });
954
+ } catch (err) {
955
+ this.log(`cancel error: ${String(err)}`);
956
+ }
957
+ const pending = this.pendingPrompts.get(params.sessionId);
958
+ if (pending) {
959
+ this.pendingPrompts.delete(params.sessionId);
960
+ pending.resolve({ stopReason: "cancelled" });
961
+ }
962
+ }
963
+ async handleAgentEvent(evt) {
964
+ const payload = evt.payload;
965
+ if (!payload) return;
966
+ const stream = payload.stream;
967
+ const data = payload.data;
968
+ const sessionKey = payload.sessionKey;
969
+ if (!stream || !data || !sessionKey) return;
970
+ if (stream !== "tool") return;
971
+ const phase = data.phase;
972
+ const name = data.name;
973
+ const toolCallId = data.toolCallId;
974
+ if (!toolCallId) return;
975
+ const pending = this.findPendingBySessionKey(sessionKey);
976
+ if (!pending) return;
977
+ if (phase === "start") {
978
+ if (!pending.toolCalls) pending.toolCalls = /* @__PURE__ */ new Set();
979
+ if (pending.toolCalls.has(toolCallId)) return;
980
+ pending.toolCalls.add(toolCallId);
981
+ const args = data.args;
982
+ await this.connection.sessionUpdate({
983
+ sessionId: pending.sessionId,
984
+ update: {
985
+ sessionUpdate: "tool_call",
986
+ toolCallId,
987
+ title: formatToolTitle(name, args),
988
+ status: "in_progress",
989
+ rawInput: args,
990
+ kind: inferToolKind(name)
991
+ }
992
+ });
993
+ return;
994
+ }
995
+ if (phase === "result") {
996
+ const isError = Boolean(data.isError);
997
+ await this.connection.sessionUpdate({
998
+ sessionId: pending.sessionId,
999
+ update: {
1000
+ sessionUpdate: "tool_call_update",
1001
+ toolCallId,
1002
+ status: isError ? "failed" : "completed",
1003
+ rawOutput: data.result
1004
+ }
1005
+ });
1006
+ }
1007
+ }
1008
+ async handleChatEvent(evt) {
1009
+ const payload = evt.payload;
1010
+ if (!payload) return;
1011
+ const sessionKey = payload.sessionKey;
1012
+ const state = payload.state;
1013
+ const runId = payload.runId;
1014
+ const messageData = payload.message;
1015
+ if (!sessionKey || !state) return;
1016
+ const pending = this.findPendingBySessionKey(sessionKey);
1017
+ if (!pending) return;
1018
+ if (runId && pending.idempotencyKey !== runId) return;
1019
+ if (state === "delta" && messageData) {
1020
+ await this.handleDeltaEvent(pending.sessionId, messageData);
1021
+ return;
1022
+ }
1023
+ if (state === "final") {
1024
+ this.finishPrompt(pending.sessionId, pending, "end_turn");
1025
+ return;
1026
+ }
1027
+ if (state === "aborted") {
1028
+ this.finishPrompt(pending.sessionId, pending, "cancelled");
1029
+ return;
1030
+ }
1031
+ if (state === "error") this.finishPrompt(pending.sessionId, pending, "refusal");
1032
+ }
1033
+ async handleDeltaEvent(sessionId, messageData) {
1034
+ const fullText = messageData.content?.find((c) => c.type === "text")?.text ?? "";
1035
+ const pending = this.pendingPrompts.get(sessionId);
1036
+ if (!pending) return;
1037
+ const sentSoFar = pending.sentTextLength ?? 0;
1038
+ if (fullText.length <= sentSoFar) return;
1039
+ const newText = fullText.slice(sentSoFar);
1040
+ pending.sentTextLength = fullText.length;
1041
+ pending.sentText = fullText;
1042
+ await this.connection.sessionUpdate({
1043
+ sessionId,
1044
+ update: {
1045
+ sessionUpdate: "agent_message_chunk",
1046
+ content: {
1047
+ type: "text",
1048
+ text: newText
1049
+ }
1050
+ }
1051
+ });
1052
+ }
1053
+ finishPrompt(sessionId, pending, stopReason) {
1054
+ this.pendingPrompts.delete(sessionId);
1055
+ this.sessionStore.clearActiveRun(sessionId);
1056
+ pending.resolve({ stopReason });
1057
+ }
1058
+ findPendingBySessionKey(sessionKey) {
1059
+ for (const pending of this.pendingPrompts.values()) if (pending.sessionKey === sessionKey) return pending;
1060
+ }
1061
+ async sendAvailableCommands(sessionId) {
1062
+ await this.connection.sessionUpdate({
1063
+ sessionId,
1064
+ update: {
1065
+ sessionUpdate: "available_commands_update",
1066
+ availableCommands: getAvailableCommands()
1067
+ }
1068
+ });
1069
+ }
1070
+ enforceSessionCreateRateLimit(method) {
1071
+ const budget = this.sessionCreateRateLimiter.consume();
1072
+ if (budget.allowed) return;
1073
+ throw new Error(`ACP session creation rate limit exceeded for ${method}; retry after ${Math.ceil(budget.retryAfterMs / 1e3)}s.`);
1074
+ }
1075
+ };
1076
+
1077
+ //#endregion
1078
+ //#region src/acp/server.ts
1079
+ async function serveAcpGateway(opts = {}) {
1080
+ const cfg = loadConfig();
1081
+ const connection = buildGatewayConnectionDetails({
1082
+ config: cfg,
1083
+ url: opts.gatewayUrl
1084
+ });
1085
+ const creds = resolveGatewayCredentialsFromConfig({
1086
+ cfg,
1087
+ env: process.env,
1088
+ explicitAuth: {
1089
+ token: opts.gatewayToken,
1090
+ password: opts.gatewayPassword
1091
+ }
1092
+ });
1093
+ let agent = null;
1094
+ let onClosed;
1095
+ const closed = new Promise((resolve) => {
1096
+ onClosed = resolve;
1097
+ });
1098
+ let stopped = false;
1099
+ let onGatewayReadyResolve;
1100
+ let onGatewayReadyReject;
1101
+ let gatewayReadySettled = false;
1102
+ const gatewayReady = new Promise((resolve, reject) => {
1103
+ onGatewayReadyResolve = resolve;
1104
+ onGatewayReadyReject = reject;
1105
+ });
1106
+ const resolveGatewayReady = () => {
1107
+ if (gatewayReadySettled) return;
1108
+ gatewayReadySettled = true;
1109
+ onGatewayReadyResolve();
1110
+ };
1111
+ const rejectGatewayReady = (err) => {
1112
+ if (gatewayReadySettled) return;
1113
+ gatewayReadySettled = true;
1114
+ onGatewayReadyReject(err instanceof Error ? err : new Error(String(err)));
1115
+ };
1116
+ const gateway = new GatewayClient({
1117
+ url: connection.url,
1118
+ token: creds.token,
1119
+ password: creds.password,
1120
+ clientName: GATEWAY_CLIENT_NAMES.CLI,
1121
+ clientDisplayName: "ACP",
1122
+ clientVersion: "acp",
1123
+ mode: GATEWAY_CLIENT_MODES.CLI,
1124
+ onEvent: (evt) => {
1125
+ agent?.handleGatewayEvent(evt);
1126
+ },
1127
+ onHelloOk: () => {
1128
+ resolveGatewayReady();
1129
+ agent?.handleGatewayReconnect();
1130
+ },
1131
+ onConnectError: (err) => {
1132
+ rejectGatewayReady(err);
1133
+ },
1134
+ onClose: (code, reason) => {
1135
+ if (!stopped) rejectGatewayReady(/* @__PURE__ */ new Error(`gateway closed before ready (${code}): ${reason}`));
1136
+ agent?.handleGatewayDisconnect(`${code}: ${reason}`);
1137
+ if (stopped) onClosed();
1138
+ }
1139
+ });
1140
+ const shutdown = () => {
1141
+ if (stopped) return;
1142
+ stopped = true;
1143
+ resolveGatewayReady();
1144
+ gateway.stop();
1145
+ onClosed();
1146
+ };
1147
+ process.once("SIGINT", shutdown);
1148
+ process.once("SIGTERM", shutdown);
1149
+ gateway.start();
1150
+ await gatewayReady.catch((err) => {
1151
+ shutdown();
1152
+ throw err;
1153
+ });
1154
+ if (stopped) return closed;
1155
+ new AgentSideConnection((conn) => {
1156
+ agent = new AcpGatewayAgent(conn, gateway, opts);
1157
+ agent.start();
1158
+ return agent;
1159
+ }, ndJsonStream(Writable.toWeb(process.stdout), Readable.toWeb(process.stdin)));
1160
+ return closed;
1161
+ }
1162
+ function parseArgs(args) {
1163
+ const opts = {};
1164
+ let tokenFile;
1165
+ let passwordFile;
1166
+ for (let i = 0; i < args.length; i += 1) {
1167
+ const arg = args[i];
1168
+ if (arg === "--url" || arg === "--gateway-url") {
1169
+ opts.gatewayUrl = args[i + 1];
1170
+ i += 1;
1171
+ continue;
1172
+ }
1173
+ if (arg === "--token" || arg === "--gateway-token") {
1174
+ opts.gatewayToken = args[i + 1];
1175
+ i += 1;
1176
+ continue;
1177
+ }
1178
+ if (arg === "--token-file" || arg === "--gateway-token-file") {
1179
+ tokenFile = args[i + 1];
1180
+ i += 1;
1181
+ continue;
1182
+ }
1183
+ if (arg === "--password" || arg === "--gateway-password") {
1184
+ opts.gatewayPassword = args[i + 1];
1185
+ i += 1;
1186
+ continue;
1187
+ }
1188
+ if (arg === "--password-file" || arg === "--gateway-password-file") {
1189
+ passwordFile = args[i + 1];
1190
+ i += 1;
1191
+ continue;
1192
+ }
1193
+ if (arg === "--session") {
1194
+ opts.defaultSessionKey = args[i + 1];
1195
+ i += 1;
1196
+ continue;
1197
+ }
1198
+ if (arg === "--session-label") {
1199
+ opts.defaultSessionLabel = args[i + 1];
1200
+ i += 1;
1201
+ continue;
1202
+ }
1203
+ if (arg === "--require-existing") {
1204
+ opts.requireExistingSession = true;
1205
+ continue;
1206
+ }
1207
+ if (arg === "--reset-session") {
1208
+ opts.resetSession = true;
1209
+ continue;
1210
+ }
1211
+ if (arg === "--no-prefix-cwd") {
1212
+ opts.prefixCwd = false;
1213
+ continue;
1214
+ }
1215
+ if (arg === "--verbose" || arg === "-v") {
1216
+ opts.verbose = true;
1217
+ continue;
1218
+ }
1219
+ if (arg === "--help" || arg === "-h") {
1220
+ printHelp();
1221
+ process.exit(0);
1222
+ }
1223
+ }
1224
+ if (opts.gatewayToken?.trim() && tokenFile?.trim()) throw new Error("Use either --token or --token-file.");
1225
+ if (opts.gatewayPassword?.trim() && passwordFile?.trim()) throw new Error("Use either --password or --password-file.");
1226
+ if (tokenFile?.trim()) opts.gatewayToken = readSecretFromFile(tokenFile, "Gateway token");
1227
+ if (passwordFile?.trim()) opts.gatewayPassword = readSecretFromFile(passwordFile, "Gateway password");
1228
+ return opts;
1229
+ }
1230
+ function printHelp() {
1231
+ console.log(`Usage: remoteclaw acp [options]
1232
+
1233
+ Gateway-backed ACP server for IDE integration.
1234
+
1235
+ Options:
1236
+ --url <url> Gateway WebSocket URL
1237
+ --token <token> Gateway auth token
1238
+ --token-file <path> Read gateway auth token from file
1239
+ --password <password> Gateway auth password
1240
+ --password-file <path> Read gateway auth password from file
1241
+ --session <key> Default session key (e.g. "agent:main:main")
1242
+ --session-label <label> Default session label to resolve
1243
+ --require-existing Fail if the session key/label does not exist
1244
+ --reset-session Reset the session key before first use
1245
+ --no-prefix-cwd Do not prefix prompts with the working directory
1246
+ --verbose, -v Verbose logging to stderr
1247
+ --help, -h Show this help message
1248
+ `);
1249
+ }
1250
+ if (isMainModule({ currentFile: fileURLToPath(import.meta.url) })) {
1251
+ const argv = process.argv.slice(2);
1252
+ if (argv.includes("--token") || argv.includes("--gateway-token")) console.error("Warning: --token can be exposed via process listings. Prefer --token-file or REMOTECLAW_GATEWAY_TOKEN.");
1253
+ if (argv.includes("--password") || argv.includes("--gateway-password")) console.error("Warning: --password can be exposed via process listings. Prefer --password-file or REMOTECLAW_GATEWAY_PASSWORD.");
1254
+ serveAcpGateway(parseArgs(argv)).catch((err) => {
1255
+ console.error(String(err));
1256
+ process.exit(1);
1257
+ });
1258
+ }
1259
+
1260
+ //#endregion
1261
+ //#region src/cli/acp-cli.ts
1262
+ function resolveSecretOption(params) {
1263
+ const direct = params.direct?.trim();
1264
+ const file = params.file?.trim();
1265
+ if (direct && file) throw new Error(`Use either ${params.directFlag} or ${params.fileFlag} for ${params.label}.`);
1266
+ if (file) return readSecretFromFile(file, params.label);
1267
+ return direct || void 0;
1268
+ }
1269
+ function warnSecretCliFlag(flag) {
1270
+ defaultRuntime.error(`Warning: ${flag} can be exposed via process listings. Prefer ${flag}-file or environment variables.`);
1271
+ }
1272
+ function registerAcpCli(program) {
1273
+ const acp = program.command("acp").description("Run an ACP bridge backed by the Gateway");
1274
+ acp.option("--url <url>", "Gateway WebSocket URL (defaults to gateway.remote.url when configured)").option("--token <token>", "Gateway token (if required)").option("--token-file <path>", "Read gateway token from file").option("--password <password>", "Gateway password (if required)").option("--password-file <path>", "Read gateway password from file").option("--session <key>", "Default session key (e.g. agent:main:main)").option("--session-label <label>", "Default session label to resolve").option("--require-existing", "Fail if the session key/label does not exist", false).option("--reset-session", "Reset the session key before first use", false).option("--no-prefix-cwd", "Do not prefix prompts with the working directory", false).option("-v, --verbose", "Verbose logging to stderr", false).addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/acp", "docs.remoteclaw.org/cli/acp")}\n`).action(async (opts) => {
1275
+ try {
1276
+ const gatewayToken = resolveSecretOption({
1277
+ direct: opts.token,
1278
+ file: opts.tokenFile,
1279
+ directFlag: "--token",
1280
+ fileFlag: "--token-file",
1281
+ label: "Gateway token"
1282
+ });
1283
+ const gatewayPassword = resolveSecretOption({
1284
+ direct: opts.password,
1285
+ file: opts.passwordFile,
1286
+ directFlag: "--password",
1287
+ fileFlag: "--password-file",
1288
+ label: "Gateway password"
1289
+ });
1290
+ if (opts.token) warnSecretCliFlag("--token");
1291
+ if (opts.password) warnSecretCliFlag("--password");
1292
+ await serveAcpGateway({
1293
+ gatewayUrl: opts.url,
1294
+ gatewayToken,
1295
+ gatewayPassword,
1296
+ defaultSessionKey: opts.session,
1297
+ defaultSessionLabel: opts.sessionLabel,
1298
+ requireExistingSession: Boolean(opts.requireExisting),
1299
+ resetSession: Boolean(opts.resetSession),
1300
+ prefixCwd: !opts.noPrefixCwd,
1301
+ verbose: Boolean(opts.verbose)
1302
+ });
1303
+ } catch (err) {
1304
+ defaultRuntime.error(String(err));
1305
+ defaultRuntime.exit(1);
1306
+ }
1307
+ });
1308
+ acp.command("client").description("Run an interactive ACP client against the local ACP bridge").option("--cwd <dir>", "Working directory for the ACP session").option("--server <command>", "ACP server command (default: remoteclaw)").option("--server-args <args...>", "Extra arguments for the ACP server").option("--server-verbose", "Enable verbose logging on the ACP server", false).option("-v, --verbose", "Verbose client logging", false).action(async (opts, command) => {
1309
+ const inheritedVerbose = inheritOptionFromParent(command, "verbose");
1310
+ try {
1311
+ await runAcpClientInteractive({
1312
+ cwd: opts.cwd,
1313
+ serverCommand: opts.server,
1314
+ serverArgs: opts.serverArgs,
1315
+ serverVerbose: Boolean(opts.serverVerbose),
1316
+ verbose: Boolean(opts.verbose || inheritedVerbose)
1317
+ });
1318
+ } catch (err) {
1319
+ defaultRuntime.error(String(err));
1320
+ defaultRuntime.exit(1);
1321
+ }
1322
+ });
1323
+ }
1324
+
1325
+ //#endregion
1326
+ export { registerAcpCli };