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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1199) hide show
  1. package/README.md +11 -9
  2. package/dist/accounts-79XhjwAj.js +32 -0
  3. package/dist/accounts-B1M3fOxL.js +272 -0
  4. package/dist/accounts-BwbvnKsW.js +205 -0
  5. package/dist/accounts-CIVjmTg9.js +270 -0
  6. package/dist/accounts-D1awQXKu.js +36 -0
  7. package/dist/accounts-DHkGVGUR.js +36 -0
  8. package/dist/accounts-P7cmIXUM.js +206 -0
  9. package/dist/accounts-XFgBY644.js +47 -0
  10. package/dist/accounts-_ZuNC5bz.js +47 -0
  11. package/dist/ack-reactions-BGJ9Vigf.js +621 -0
  12. package/dist/ack-reactions-Diu9O24z.js +621 -0
  13. package/dist/acp-cli-BwZ-va2P.js +1316 -0
  14. package/dist/acp-cli-eVKByz-j.js +1311 -0
  15. package/dist/active-listener--jrUO-8L.js +37 -0
  16. package/dist/active-listener-C7SyMcNY.js +37 -0
  17. package/dist/agent-BAxK2KQW.js +688 -0
  18. package/dist/agent-Dd5Yfhmq.js +687 -0
  19. package/dist/agent-helpers-5F0tdxud.js +400 -0
  20. package/dist/agent-helpers-Bs2nBXeI.js +400 -0
  21. package/dist/agent-scope-BA1HP4K6.js +114 -0
  22. package/dist/agent-scope-CAQLm3LP.js +116 -0
  23. package/dist/agents-D--9DD91.js +754 -0
  24. package/dist/agents.config-CmyzLYqW.js +116 -0
  25. package/dist/agents.config-DerBqRzk.js +116 -0
  26. package/dist/ansi-DtaiOnt1.js +107 -0
  27. package/dist/audio-ClIuKwkl.js +43 -0
  28. package/dist/audio-DqlIYYTb.js +43 -0
  29. package/dist/audit-Cn0cNCE4.js +3114 -0
  30. package/dist/audit-DXY4NHBC.js +3114 -0
  31. package/dist/auth-B-QK8JhI.js +315 -0
  32. package/dist/auth-C1zx1O24.js +314 -0
  33. package/dist/auth-DDmNYVMW.js +448 -0
  34. package/dist/auth-DH1wEw0w.js +448 -0
  35. package/dist/banner-CBWZhANO.js +294 -0
  36. package/dist/binaries-CYwLdubd.js +13 -0
  37. package/dist/bindings-DFAFatwT.js +69 -0
  38. package/dist/bindings-GUKIzFCp.js +69 -0
  39. package/dist/bonjour-discovery-AQMJqY4V.js +378 -0
  40. package/dist/bonjour-discovery-BLcPWHFJ.js +378 -0
  41. package/dist/boot/handler.js +41 -84
  42. package/dist/browser-cli-8Dv5ogFT.js +1690 -0
  43. package/dist/browser-cli-wNLo8SOy.js +1694 -0
  44. package/dist/build-info.json +3 -3
  45. package/dist/call-BTHzKFbN.js +518 -0
  46. package/dist/call-D_NchaCs.js +517 -0
  47. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  48. package/dist/catalog-DgpN5jxU.js +186 -0
  49. package/dist/catalog-k056Nh93.js +186 -0
  50. package/dist/channel-account-context-BHIy71Yh.js +133 -0
  51. package/dist/channel-account-context-DXU_-EkJ.js +133 -0
  52. package/dist/channel-activity-BatlvP_U.js +292 -0
  53. package/dist/channel-activity-BhT7NQ_v.js +94 -0
  54. package/dist/channel-activity-CvjEwpJz.js +94 -0
  55. package/dist/channel-options-BCccA2WC.js +32 -0
  56. package/dist/channel-options-VPR_pNyS.js +33 -0
  57. package/dist/channel-selection-AH6_y6RS.js +51 -0
  58. package/dist/channel-selection-ovohyJQZ.js +51 -0
  59. package/dist/channel-web-APDaQ_wp.js +2134 -0
  60. package/dist/channel-web-BW_YuNlT.js +2132 -0
  61. package/dist/channels-cli-DVsZyaU5.js +1436 -0
  62. package/dist/channels-cli-ubrg5vcL.js +1440 -0
  63. package/dist/channels-status-issues-BbYNzwLp.js +18 -0
  64. package/dist/channels-status-issues-DRybAijg.js +18 -0
  65. package/dist/chat-envelope-AJFUAuBM.js +248 -0
  66. package/dist/chat-envelope-BrfcPlDM.js +248 -0
  67. package/dist/chrome-Bv2UtAMQ.js +1732 -0
  68. package/dist/chrome-C6Vc_7su.js +1733 -0
  69. package/dist/chunk-BAMyFYtF.js +341 -0
  70. package/dist/chunk-BzVoFUZL.js +341 -0
  71. package/dist/clack-prompter-C6mBTOzE.js +122 -0
  72. package/dist/clack-prompter-DKcYqv3o.js +121 -0
  73. package/dist/cleanup-utils-Cb-leJcy.js +94 -0
  74. package/dist/cli/daemon-cli.js +1 -1
  75. package/dist/cli-Cs1n6-eD.js +135 -0
  76. package/dist/cli-Di3p1tLN.js +131 -0
  77. package/dist/client-B6h7bgbF.js +2311 -0
  78. package/dist/client-CMtdm9Ii.js +2311 -0
  79. package/dist/clipboard-A06eV_5C.js +31 -0
  80. package/dist/clipboard-DQBl3coj.js +31 -0
  81. package/dist/command-format-BiiNHkWG.js +18 -0
  82. package/dist/command-format-Dntg_tnC.js +32 -0
  83. package/dist/command-logger/handler.js +1 -1
  84. package/dist/command-registry-CCAvdWh2.js +215 -0
  85. package/dist/commands-D93TXYhv.js +41 -0
  86. package/dist/commands-UD7V7QC9.js +41 -0
  87. package/dist/commands-registry-CCbTtSSK.js +891 -0
  88. package/dist/commands-registry-De8JhZLG.js +890 -0
  89. package/dist/common-D4fL3S2m.js +156 -0
  90. package/dist/common-DXNisGxw.js +156 -0
  91. package/dist/completion-cli-CLo-r-UP.js +452 -0
  92. package/dist/completion-cli-D4ajG3yt.js +452 -0
  93. package/dist/config-BTH7fB_v.js +3345 -0
  94. package/dist/config-DwuBnd6D.js +3347 -0
  95. package/dist/config-cli-D0D1LSNt.js +243 -0
  96. package/dist/config-cli-tWsFNKQM.js +247 -0
  97. package/dist/config-guard-BcT7soTj.js +92 -0
  98. package/dist/config-guard-Bqak3bDc.js +75 -0
  99. package/dist/config-validation-CHEjSJ5K.js +18 -0
  100. package/dist/config-validation-CvgqLhyG.js +18 -0
  101. package/dist/configure-CK_0tFJG.js +889 -0
  102. package/dist/configure-D0z0kE-B.js +891 -0
  103. package/dist/constants-BBVTjb1j.js +75 -0
  104. package/dist/constants-PMRtHBHU.js +75 -0
  105. package/dist/control-auth-DrGYtMJM.js +397 -0
  106. package/dist/control-auth-KY4Qdr2I.js +397 -0
  107. package/dist/control-ui/assets/index-DdiU_ccM.css +1 -0
  108. package/dist/control-ui/assets/index-kVUYi64u.js +7723 -0
  109. package/dist/control-ui/assets/index-kVUYi64u.js.map +1 -0
  110. package/dist/control-ui/index.html +2 -2
  111. package/dist/control-ui-assets-DO1L6M0S.js +186 -0
  112. package/dist/control-ui-assets-S_TLo6Fs.js +186 -0
  113. package/dist/conversation-label-CDH4rKMG.js +36 -0
  114. package/dist/conversation-label-CMOfgCVl.js +36 -0
  115. package/dist/cron-cli-C7h_hLHu.js +495 -0
  116. package/dist/cron-cli-DTNg0Uvl.js +499 -0
  117. package/dist/daemon-cli-BlJS9zWM.js +737 -0
  118. package/dist/daemon-cli-Cfc1yszp.js +735 -0
  119. package/dist/daemon-cli.js +174 -1167
  120. package/dist/daemon-install-BbBLuLWg.js +60 -0
  121. package/dist/daemon-install-WEBvqVOj.js +56 -0
  122. package/dist/daemon-install-helpers-BVtPC2TK.js +504 -0
  123. package/dist/daemon-install-helpers-DVr51zvE.js +504 -0
  124. package/dist/deliver-EB272zWh.js +481 -0
  125. package/dist/deliver-iGD_woru.js +481 -0
  126. package/dist/delivery-queue-BDvalA10.js +244 -0
  127. package/dist/delivery-queue-BimvYz5E.js +244 -0
  128. package/dist/devices-cli-BXCOsNFc.js +323 -0
  129. package/dist/devices-cli-CHGdYfrz.js +319 -0
  130. package/dist/diagnostics-BzzhTQzK.js +35 -0
  131. package/dist/diagnostics-DILtxtcE.js +35 -0
  132. package/dist/directory-cli-COS40yI9.js +221 -0
  133. package/dist/directory-cli-Cb5j1JTC.js +225 -0
  134. package/dist/dispatcher-BUqxh_mA.js +174 -0
  135. package/dist/dispatcher-By-KZRWZ.js +173 -0
  136. package/dist/dm-policy-shared-BCp9_z3w.js +22 -0
  137. package/dist/dm-policy-shared-DgeKqjOu.js +22 -0
  138. package/dist/dns-cli-B8yyXB2N.js +203 -0
  139. package/dist/dns-cli-DAkTk-gM.js +199 -0
  140. package/dist/dock-B0bIIDS3.js +906 -0
  141. package/dist/dock-C3PzQ6CS.js +907 -0
  142. package/dist/doctor-completion-BXGEqLhU.js +92 -0
  143. package/dist/doctor-completion-D_mNzioP.js +92 -0
  144. package/dist/doctor-config-flow-BDDsR2J1.js +978 -0
  145. package/dist/doctor-config-flow-CwFFRUic.js +979 -0
  146. package/dist/enable-C3I9dWel.js +59 -0
  147. package/dist/enable-DnwKeWnR.js +59 -0
  148. package/dist/entry.js +75 -21
  149. package/dist/env-DyyqmxSM.js +60 -0
  150. package/dist/env-vars-CD2_baIP.js +43 -0
  151. package/dist/env-vars-a7S70ba7.js +43 -0
  152. package/dist/errors-0dfGxeYQ.js +35 -0
  153. package/dist/errors-C1kDByVU.js +35 -0
  154. package/dist/exec-CAk1dxq_.js +164 -0
  155. package/dist/exec-epNpA1aU.js +164 -0
  156. package/dist/export-html/template.css +0 -36
  157. package/dist/export-html/template.js +1 -32
  158. package/dist/extensionAPI.js +1765 -1590
  159. package/dist/fetch-BMQq41sB.js +281 -0
  160. package/dist/fetch-Cky99wYB.js +281 -0
  161. package/dist/fetch-D3tw4B4n.js +67 -0
  162. package/dist/fetch-DTsU2XnC.js +67 -0
  163. package/dist/fetch-Dgm9ZHFm.js +67 -0
  164. package/dist/file-lock-DWH0TfVu.js +107 -0
  165. package/dist/file-lock-DXW9h9ek.js +107 -0
  166. package/dist/fs-safe-BjSd07M4.js +115 -0
  167. package/dist/fs-safe-aWIhCWlb.js +125 -0
  168. package/dist/gateway-cli-C4y4H61g.js +24546 -0
  169. package/dist/gateway-cli-CtFr42NV.js +24550 -0
  170. package/dist/gateway-rpc-B92CH0D3.js +28 -0
  171. package/dist/gateway-rpc-DZNlWapO.js +28 -0
  172. package/dist/gmail-setup-utils-CKyh29_R.js +422 -0
  173. package/dist/gmail-setup-utils-DquflkMR.js +423 -0
  174. package/dist/health-BYl7T-4m.js +1417 -0
  175. package/dist/health-DdviISKg.js +1414 -0
  176. package/dist/health-format-BE5TK5bs.js +28 -0
  177. package/dist/heartbeat-visibility-BO3iRpB6.js +125 -0
  178. package/dist/heartbeat-visibility-Cwp4TrTv.js +125 -0
  179. package/dist/help-format-D3JhWp1E.js +17 -0
  180. package/dist/helpers-DAEoFkbn.js +10 -0
  181. package/dist/helpers-ndPQWl6m.js +10 -0
  182. package/dist/hook-runner-global-C1thol1d.js +527 -0
  183. package/dist/hooks-cli-BKS9uZ0H.js +1221 -0
  184. package/dist/hooks-cli-FLWcCr9q.js +1217 -0
  185. package/dist/host-env-security-BGibnCbS.js +106 -0
  186. package/dist/host-env-security-axRnIi8d.js +106 -0
  187. package/dist/image-ops-CX41n0v5.js +354 -0
  188. package/dist/image-ops-DSL3eFfQ.js +354 -0
  189. package/dist/import-BSFgt760.js +604 -0
  190. package/dist/import-Da1CHJJg.js +606 -0
  191. package/dist/inbound-context-BLy-G2Eq.js +68 -0
  192. package/dist/inbound-context-a5bzQvRt.js +68 -0
  193. package/dist/index.js +137 -108
  194. package/dist/inspect-BEpFbi0c.js +286 -0
  195. package/dist/inspect-BeNNpWna.js +286 -0
  196. package/dist/installs-CH7Qq_m_.js +319 -0
  197. package/dist/installs-CcM8H2YA.js +319 -0
  198. package/dist/ipv4-DNo9AFDu.js +46 -0
  199. package/dist/ipv4-VfoVR5uR.js +46 -0
  200. package/dist/ir-BPwP8hIc.js +972 -0
  201. package/dist/json-files-BI20PLIm.js +46 -0
  202. package/dist/lifecycle-core-5Zxqwa6V.js +476 -0
  203. package/dist/lifecycle-core-C1bGeLby.js +474 -0
  204. package/dist/links-CtGBIrG8.js +15 -0
  205. package/dist/loader-BoP3JA-r.js +22411 -0
  206. package/dist/loader-DXbpue-L.js +22414 -0
  207. package/dist/logger-ASsO5Nz-.js +49 -0
  208. package/dist/logging-Cd9y2AdQ.js +20 -0
  209. package/dist/logging-DRwtiLIS.js +1 -0
  210. package/dist/logging-fywhKCmE.js +1 -0
  211. package/dist/login-B2UXzgaB.js +61 -0
  212. package/dist/login-BEFL3xY9.js +62 -0
  213. package/dist/login-qr-C7wAz2fe.js +329 -0
  214. package/dist/login-qr-DWpUP1Ud.js +325 -0
  215. package/dist/logs-cli-CAcd-pXA.js +240 -0
  216. package/dist/logs-cli-D7Bzarht.js +236 -0
  217. package/dist/markdown-tables-BBNUZp4n.js +29 -0
  218. package/dist/markdown-tables-NgPcfXoF.js +29 -0
  219. package/dist/media-4-qOIjO-.js +971 -0
  220. package/dist/media-DTwJhAbE.js +9481 -0
  221. package/dist/message-action-names-BsNTjuBE.js +2520 -0
  222. package/dist/message-action-names-ocKcq8_3.js +2520 -0
  223. package/dist/message-channel-CtcVHawF.js +91 -0
  224. package/dist/message-channel-tuc9CdEw.js +91 -0
  225. package/dist/mime-CAqaK3kp.js +146 -0
  226. package/dist/mime-ViuhRuMM.js +146 -0
  227. package/dist/net-DSkFMHJ8.js +225 -0
  228. package/dist/net-DTqfFYzt.js +225 -0
  229. package/dist/node-cli-BeXU67eQ.js +1458 -0
  230. package/dist/node-cli-i2aCtnmM.js +1462 -0
  231. package/dist/node-service-RyMlWp8N.js +67 -0
  232. package/dist/node-service-TL9b6Qfz.js +67 -0
  233. package/dist/nodes-cli-CtqnXBMD.js +1346 -0
  234. package/dist/nodes-cli-DgQU3LrG.js +1350 -0
  235. package/dist/nodes-screen-B7HJugJ0.js +250 -0
  236. package/dist/nodes-screen-nCRd71Mk.js +250 -0
  237. package/dist/note-B6142LyJ.js +92 -0
  238. package/dist/note-D-EI0czq.js +92 -0
  239. package/dist/npm-registry-spec-PPyRXSpx.js +786 -0
  240. package/dist/npm-registry-spec-uUmDWe6v.js +786 -0
  241. package/dist/npm-resolution-BC1LqCm2.js +86 -0
  242. package/dist/npm-resolution-DhlhUmRF.js +86 -0
  243. package/dist/onboard-CGpC2ecw.js +647 -0
  244. package/dist/onboard-auth-cNtb3FTP.js +211 -0
  245. package/dist/onboard-auth-gwz-0mZ6.js +207 -0
  246. package/dist/onboard-channels-CXjJYzHC.js +2548 -0
  247. package/dist/onboard-channels-vtaIxYml.js +2549 -0
  248. package/dist/onboard-config-DOmXYEvJ.js +39 -0
  249. package/dist/onboard-config-JmR21VYa.js +39 -0
  250. package/dist/onboard-helpers-8afRV_Tm.js +364 -0
  251. package/dist/onboard-helpers-DTRrJLj-.js +363 -0
  252. package/dist/onboard-jLzfwoPx.js +649 -0
  253. package/dist/onboard-remote-CFkvVAYg.js +127 -0
  254. package/dist/onboard-remote-JfBnmK70.js +127 -0
  255. package/dist/onboarding-Dt0LKvZn.js +586 -0
  256. package/dist/onboarding-gMKlA2bP.js +588 -0
  257. package/dist/onboarding.finalize-BDML6Jx7.js +403 -0
  258. package/dist/onboarding.finalize-D850VgMA.js +405 -0
  259. package/dist/onboarding.gateway-config-DolBTXWT.js +196 -0
  260. package/dist/onboarding.gateway-config-rJkIamlG.js +202 -0
  261. package/dist/outbound-CPMaDtgC.js +220 -0
  262. package/dist/outbound-CYSuCMiW.js +221 -0
  263. package/dist/outbound-attachment-Ci02LXoq.js +18 -0
  264. package/dist/outbound-attachment-CqZ7Qc_o.js +18 -0
  265. package/dist/outbound-attachment-CuqWdsdV.js +18 -0
  266. package/dist/pairing-cli-B9JKvvST.js +126 -0
  267. package/dist/pairing-cli-C4HrfIHe.js +130 -0
  268. package/dist/pairing-labels-CBmGQ31P.js +9 -0
  269. package/dist/pairing-labels-D0xwC7Xb.js +9 -0
  270. package/dist/pairing-store-BoF0g-iN.js +459 -0
  271. package/dist/pairing-store-CseXj-5p.js +460 -0
  272. package/dist/path-env-CPZbb7me.js +89 -0
  273. package/dist/path-env-GTM4HXCN.js +89 -0
  274. package/dist/path-safety-BFE0XmGC.js +14 -0
  275. package/dist/path-safety-BJ8ge6Ho.js +14 -0
  276. package/dist/paths-DHuXVC00.js +229 -0
  277. package/dist/plugin-auto-enable-B_9J1XED.js +302 -0
  278. package/dist/plugin-auto-enable-DghjlFCL.js +301 -0
  279. package/dist/plugin-registry-68h2T8vi.js +33 -0
  280. package/dist/plugin-registry-BitdVPb4.js +33 -0
  281. package/dist/plugin-sdk/agents/agent-helpers.d.ts +0 -1
  282. package/dist/plugin-sdk/agents/agent-scope.d.ts +11 -0
  283. package/dist/plugin-sdk/agents/agent-types.d.ts +1 -6
  284. package/dist/plugin-sdk/agents/agent-utils.d.ts +0 -14
  285. package/dist/plugin-sdk/agents/provider-utils.d.ts +0 -1
  286. package/dist/plugin-sdk/agents/subagent-registry.store.d.ts +0 -1
  287. package/dist/plugin-sdk/agents/subagent-spawn.d.ts +0 -1
  288. package/dist/plugin-sdk/agents/tools/sessions-helpers.d.ts +0 -1
  289. package/dist/plugin-sdk/auth/constants.d.ts +15 -0
  290. package/dist/plugin-sdk/auth/display.d.ts +7 -0
  291. package/dist/plugin-sdk/auth/doctor.d.ts +8 -0
  292. package/dist/plugin-sdk/auth/env-injection.d.ts +38 -0
  293. package/dist/plugin-sdk/auth/index.d.ts +10 -0
  294. package/dist/plugin-sdk/auth/oauth.d.ts +13 -0
  295. package/dist/plugin-sdk/auth/order.d.ts +8 -0
  296. package/dist/plugin-sdk/auth/paths.d.ts +3 -0
  297. package/dist/plugin-sdk/auth/profiles.d.ts +11 -0
  298. package/dist/plugin-sdk/auth/provider-auth.d.ts +32 -0
  299. package/dist/plugin-sdk/auth/store.d.ts +7 -0
  300. package/dist/plugin-sdk/auth/types.d.ts +45 -0
  301. package/dist/plugin-sdk/auth/usage.d.ts +80 -0
  302. package/dist/plugin-sdk/auto-reply/reply/agent-runner-execution.d.ts +0 -1
  303. package/dist/plugin-sdk/auto-reply/reply/agent-runner-utils.d.ts +3 -36
  304. package/dist/plugin-sdk/auto-reply/reply/commands-status.d.ts +1 -7
  305. package/dist/plugin-sdk/auto-reply/reply/commands-subagents/shared.d.ts +1 -1
  306. package/dist/plugin-sdk/auto-reply/reply/commands-types.d.ts +1 -13
  307. package/dist/plugin-sdk/auto-reply/reply/directive-handling.levels.d.ts +1 -10
  308. package/dist/plugin-sdk/auto-reply/reply/directive-handling.params.d.ts +1 -11
  309. package/dist/plugin-sdk/auto-reply/reply/directive-handling.parse.d.ts +1 -29
  310. package/dist/plugin-sdk/auto-reply/reply/directive-handling.persist.d.ts +0 -3
  311. package/dist/plugin-sdk/auto-reply/reply/directive-handling.shared.d.ts +0 -25
  312. package/dist/plugin-sdk/auto-reply/reply/directives.d.ts +3 -42
  313. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives-apply.d.ts +0 -9
  314. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives-utils.d.ts +0 -1
  315. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +1 -20
  316. package/dist/plugin-sdk/auto-reply/reply/get-reply-inline-actions.d.ts +1 -12
  317. package/dist/plugin-sdk/auto-reply/reply/get-reply-run.d.ts +1 -15
  318. package/dist/plugin-sdk/auto-reply/reply/queue/types.d.ts +1 -17
  319. package/dist/plugin-sdk/auto-reply/reply/response-prefix-template.d.ts +4 -6
  320. package/dist/plugin-sdk/auto-reply/reply/session-run-accounting.d.ts +0 -7
  321. package/dist/plugin-sdk/auto-reply/reply/session-updates.d.ts +0 -10
  322. package/dist/plugin-sdk/auto-reply/reply.d.ts +1 -1
  323. package/dist/plugin-sdk/auto-reply/status.d.ts +3 -12
  324. package/dist/plugin-sdk/auto-reply/templating.d.ts +0 -4
  325. package/dist/plugin-sdk/auto-reply/thinking.d.ts +0 -15
  326. package/dist/plugin-sdk/auto-reply/types.d.ts +1 -2
  327. package/dist/plugin-sdk/channels/dock.d.ts +1 -2
  328. package/dist/plugin-sdk/channels/plugins/types.adapters.d.ts +0 -6
  329. package/dist/plugin-sdk/channels/plugins/types.core.d.ts +1 -0
  330. package/dist/plugin-sdk/channels/plugins/types.d.ts +1 -1
  331. package/dist/plugin-sdk/channels/plugins/types.plugin.d.ts +1 -2
  332. package/dist/plugin-sdk/channels/voice-credentials.d.ts +26 -0
  333. package/dist/plugin-sdk/commands/agent/session.d.ts +1 -2
  334. package/dist/plugin-sdk/commands/onboard-helpers.d.ts +0 -1
  335. package/dist/plugin-sdk/commands/onboard-types.d.ts +2 -1
  336. package/dist/plugin-sdk/config/defaults.d.ts +0 -1
  337. package/dist/plugin-sdk/config/legacy.migrations.d.ts +2 -1
  338. package/dist/plugin-sdk/config/legacy.shared.d.ts +0 -9
  339. package/dist/plugin-sdk/config/sessions/types.d.ts +0 -17
  340. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +28 -120
  341. package/dist/plugin-sdk/config/types.agents.d.ts +8 -0
  342. package/dist/plugin-sdk/config/types.base.d.ts +0 -1
  343. package/dist/plugin-sdk/config/types.messages.d.ts +1 -6
  344. package/dist/plugin-sdk/config/types.remoteclaw.d.ts +2 -2
  345. package/dist/plugin-sdk/config/types.tools.d.ts +1 -74
  346. package/dist/plugin-sdk/config/types.tts.d.ts +2 -1
  347. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +9 -70
  348. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +12 -210
  349. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +14 -86
  350. package/dist/plugin-sdk/config/zod-schema.core.d.ts +6 -234
  351. package/dist/plugin-sdk/config/zod-schema.d.ts +111 -378
  352. package/dist/plugin-sdk/config/zod-schema.providers-core.d.ts +148 -160
  353. package/dist/plugin-sdk/config/zod-schema.providers-whatsapp.d.ts +12 -12
  354. package/dist/plugin-sdk/config/zod-schema.providers.d.ts +88 -96
  355. package/dist/plugin-sdk/config/zod-schema.session.d.ts +4 -10
  356. package/dist/plugin-sdk/daemon/constants.d.ts +2 -2
  357. package/dist/plugin-sdk/gateway/protocol/index.d.ts +10 -17
  358. package/dist/plugin-sdk/gateway/protocol/schema/sessions.d.ts +0 -7
  359. package/dist/plugin-sdk/gateway/server/ws-types.d.ts +2 -0
  360. package/dist/plugin-sdk/gateway/session-utils.types.d.ts +0 -3
  361. package/dist/plugin-sdk/index.js +722 -1283
  362. package/dist/plugin-sdk/infra/agent-events.d.ts +1 -1
  363. package/dist/plugin-sdk/infra/provider-usage.auth.d.ts +0 -1
  364. package/dist/plugin-sdk/infra/provider-usage.load.d.ts +0 -1
  365. package/dist/plugin-sdk/line/config-schema.d.ts +4 -4
  366. package/dist/plugin-sdk/logging/levels.d.ts +1 -1
  367. package/dist/plugin-sdk/middleware/auth-key-retry.d.ts +31 -0
  368. package/dist/plugin-sdk/middleware/channel-bridge.d.ts +4 -0
  369. package/dist/plugin-sdk/middleware/cli-runtime-base.d.ts +6 -0
  370. package/dist/plugin-sdk/middleware/error-classifier.d.ts +5 -0
  371. package/dist/plugin-sdk/middleware/media-capability.d.ts +21 -0
  372. package/dist/plugin-sdk/middleware/media-resolver.d.ts +12 -0
  373. package/dist/plugin-sdk/middleware/runtime-factory.d.ts +42 -0
  374. package/dist/plugin-sdk/middleware/runtimes/claude.d.ts +10 -0
  375. package/dist/plugin-sdk/middleware/runtimes/codex.d.ts +5 -0
  376. package/dist/plugin-sdk/middleware/runtimes/gemini.d.ts +11 -0
  377. package/dist/plugin-sdk/middleware/runtimes/opencode.d.ts +5 -0
  378. package/dist/plugin-sdk/middleware/types.d.ts +41 -1
  379. package/dist/plugin-sdk/plugin-sdk/index.d.ts +5 -1
  380. package/dist/plugin-sdk/plugins/manifest-registry.d.ts +2 -0
  381. package/dist/plugin-sdk/plugins/manifest.d.ts +4 -4
  382. package/dist/plugin-sdk/plugins/registry.d.ts +18 -0
  383. package/dist/plugin-sdk/plugins/types.d.ts +5 -1
  384. package/dist/plugin-sdk/stt/defaults.d.ts +2 -0
  385. package/dist/plugin-sdk/stt/preflight.d.ts +14 -0
  386. package/dist/plugin-sdk/stt/providers/deepgram/index.d.ts +2 -0
  387. package/dist/plugin-sdk/stt/providers/google/index.d.ts +2 -0
  388. package/dist/plugin-sdk/stt/providers/groq/index.d.ts +2 -0
  389. package/dist/plugin-sdk/stt/providers/index.d.ts +4 -0
  390. package/dist/plugin-sdk/stt/providers/mistral/index.d.ts +2 -0
  391. package/dist/plugin-sdk/stt/providers/openai/index.d.ts +2 -0
  392. package/dist/plugin-sdk/stt/stt.d.ts +27 -0
  393. package/dist/plugin-sdk/stt/types.d.ts +22 -0
  394. package/dist/plugin-sdk/terminal/palette.d.ts +2 -2
  395. package/dist/plugin-sdk/tts/providers/edge.d.ts +2 -0
  396. package/dist/plugin-sdk/tts/providers/elevenlabs.d.ts +2 -0
  397. package/dist/plugin-sdk/tts/providers/index.d.ts +4 -0
  398. package/dist/plugin-sdk/tts/providers/openai.d.ts +2 -0
  399. package/dist/plugin-sdk/tts/tts.d.ts +13 -5
  400. package/dist/plugin-sdk/tts/types.d.ts +21 -0
  401. package/dist/plugins-BviLFPLV.js +255 -0
  402. package/dist/plugins-CaudBUbl.js +254 -0
  403. package/dist/plugins-cli-CsLhphNr.js +803 -0
  404. package/dist/plugins-cli-CujSP9NS.js +807 -0
  405. package/dist/ports-BtuzUQHl.js +370 -0
  406. package/dist/ports-CMcHia07.js +96 -0
  407. package/dist/ports-DALdfBQy.js +96 -0
  408. package/dist/ports-gRBeuUtp.js +316 -0
  409. package/dist/preflight-Bq8rimP-.js +667 -0
  410. package/dist/preflight-DyYbEp9X.js +667 -0
  411. package/dist/program-D64vUv0b.js +250 -0
  412. package/dist/program-context-CTFkimUr.js +474 -0
  413. package/dist/progress-BcwxtM9Q.js +124 -0
  414. package/dist/prompt-DtWGd43j.js +21 -0
  415. package/dist/prompt-select-styled-GW2PexAK.js +1672 -0
  416. package/dist/prompt-select-styled-JOuWGHX7.js +1669 -0
  417. package/dist/prompt-style-BpUMhEHC.js +9 -0
  418. package/dist/provider-auth-B7QgxlKt.js +187 -0
  419. package/dist/provider-auth-j-EQvvIk.js +187 -0
  420. package/dist/provider-dispatcher-Bx6CaIoV.js +660 -0
  421. package/dist/provider-dispatcher-DhkvjhO5.js +659 -0
  422. package/dist/push-apns--nEiZmEN.js +711 -0
  423. package/dist/push-apns-BtS6B6lb.js +713 -0
  424. package/dist/pw-ai-BpCsXF-x.js +1908 -0
  425. package/dist/pw-ai-ud_Kbn5S.js +1911 -0
  426. package/dist/qr-cli-BCeVLGfz.js +353 -0
  427. package/dist/qr-cli-Crsqtw01.js +349 -0
  428. package/dist/redact-Ci96Gj0O.js +191 -0
  429. package/dist/redact-snapshot-B9nof-Pb.js +1952 -0
  430. package/dist/redact-snapshot-BKiS91Mj.js +1952 -0
  431. package/dist/register.agent-CcvOeVnL.js +292 -0
  432. package/dist/register.agent-azH_tdVX.js +1014 -0
  433. package/dist/register.configure-DAaZLjHs.js +130 -0
  434. package/dist/register.configure-lUl8O79m.js +135 -0
  435. package/dist/register.import-B83Dn36B.js +29 -0
  436. package/dist/register.import-wIYU2cVW.js +31 -0
  437. package/dist/register.maintenance-Bo-ooQDU.js +501 -0
  438. package/dist/register.maintenance-BwZ4OkK2.js +503 -0
  439. package/dist/register.message-BQhRoEQQ.js +687 -0
  440. package/dist/register.message-CvZKWeGb.js +691 -0
  441. package/dist/register.onboard---3EPh-O.js +98 -0
  442. package/dist/register.onboard-rsHSJUvQ.js +94 -0
  443. package/dist/register.setup-B0gc_lne.js +118 -0
  444. package/dist/register.setup-MWpb7jxL.js +114 -0
  445. package/dist/register.status-health-sessions-BZJ0wTSa.js +429 -0
  446. package/dist/register.status-health-sessions-CyrUwwtB.js +667 -0
  447. package/dist/register.subclis-i2d2ugaJ.js +267 -0
  448. package/dist/replies-BIx-MbQ7.js +136 -0
  449. package/dist/replies-DVU655H4.js +136 -0
  450. package/dist/reply-CL5VMSKN.js +12372 -0
  451. package/dist/reply-XKyfU3rS.js +12375 -0
  452. package/dist/reply-directives-DQfJ001O.js +182 -0
  453. package/dist/reply-directives-DfUITt7C.js +182 -0
  454. package/dist/reply-payloads-ZHo6kfTS.js +527 -0
  455. package/dist/reply-prefix-BSf3PC0x.js +37 -0
  456. package/dist/reply-prefix-DBTlMHLK.js +37 -0
  457. package/dist/resolve-route-B-_IgETc.js +249 -0
  458. package/dist/resolve-route-C8ZsgWDQ.js +249 -0
  459. package/dist/response-prefix-template-3LeqJx2X.js +134 -0
  460. package/dist/response-prefix-template-DBrUVx5V.js +134 -0
  461. package/dist/retry-CDrH81GP.js +77 -0
  462. package/dist/retry-Dar_7pCv.js +77 -0
  463. package/dist/run-main-rOudcbbs.js +308 -0
  464. package/dist/runtime-guard-CK80eucm.js +60 -0
  465. package/dist/runtime-status-CR9445g5.js +12 -0
  466. package/dist/runtime-status-hFVEC3wO.js +12 -0
  467. package/dist/secure-random-CLWSvf8A.js +44 -0
  468. package/dist/security-cli-B8lXw9ke.js +488 -0
  469. package/dist/security-cli-CRkS3VAf.js +483 -0
  470. package/dist/send-6g8QKfWj.js +374 -0
  471. package/dist/send-B5Hz1PIn.js +29 -0
  472. package/dist/send-B8eIlA1u.js +349 -0
  473. package/dist/send-BFZPQE4j.js +492 -0
  474. package/dist/send-BpTDvE0D.js +1779 -0
  475. package/dist/send-BxOrO1Wv.js +1776 -0
  476. package/dist/send-C6gPJu-Z.js +11 -0
  477. package/dist/send-C7MoKtkN.js +426 -0
  478. package/dist/send-CXzq2LI6.js +2245 -0
  479. package/dist/send-CYOZoObr.js +547 -0
  480. package/dist/send-CfQyIvcC.js +332 -0
  481. package/dist/send-DUtuuwhw.js +492 -0
  482. package/dist/send-DbafVwxp.js +2245 -0
  483. package/dist/send-DeZg8K7y.js +349 -0
  484. package/dist/send-DwkjxJlv.js +547 -0
  485. package/dist/send-iX9xbxlU.js +1178 -0
  486. package/dist/server-BKfCzEzd.js +206 -0
  487. package/dist/server-fmO4eo7K.js +202 -0
  488. package/dist/server-lifecycle-CgPpP10P.js +2437 -0
  489. package/dist/server-lifecycle-Cn8yY5MW.js +2437 -0
  490. package/dist/server-node-events-C-ZzSBYh.js +391 -0
  491. package/dist/server-node-events-DYlyfDHM.js +395 -0
  492. package/dist/service-C2j81L86.js +670 -0
  493. package/dist/service-C8a0SXHD.js +670 -0
  494. package/dist/session-AulYhqOb.js +170 -0
  495. package/dist/session-C6VKWvx6.js +170 -0
  496. package/dist/session-cost-usage-0Vs4hgMe.js +627 -0
  497. package/dist/session-cost-usage-C-DsaOfN.js +627 -0
  498. package/dist/session-dirs-CO1f2ArM.js +318 -0
  499. package/dist/session-dirs-DoboH7Oy.js +318 -0
  500. package/dist/session-utils-CRK8ToKG.js +621 -0
  501. package/dist/session-utils-DWlkmCX8.js +621 -0
  502. package/dist/sessions-DtqrmUJS.js +2553 -0
  503. package/dist/sessions-gT-4fcX-.js +245 -0
  504. package/dist/shell-env-DBS5su07.js +163 -0
  505. package/dist/shell-env-c3j5zcU9.js +163 -0
  506. package/dist/ssrf-8wNqPNzN.js +183 -0
  507. package/dist/ssrf-CJIdPXuS.js +183 -0
  508. package/dist/status-BI_-xpDt.js +1947 -0
  509. package/dist/status-PZVwjKjl.js +1943 -0
  510. package/dist/status.update-BmuDZ7E7.js +449 -0
  511. package/dist/status.update-Mf6HSRvU.js +449 -0
  512. package/dist/store-B7PGEdFf.js +2555 -0
  513. package/dist/store-CzhBjUCN.js +64 -0
  514. package/dist/store-YkSxKAey.js +53 -0
  515. package/dist/store-ZNeFv2Q7.js +64 -0
  516. package/dist/subagent-registry-R1DiAM4R.js +4839 -0
  517. package/dist/subagent-registry-xLRXC8Bg.js +4841 -0
  518. package/dist/subsystem-BAW_f3DI.js +1195 -0
  519. package/dist/subsystem-DGSHVL8I.js +1081 -0
  520. package/dist/system-cli-9SvRrT9D.js +77 -0
  521. package/dist/system-cli-yCa5Q1YM.js +73 -0
  522. package/dist/systemd-40Rij3QR.js +547 -0
  523. package/dist/systemd-5C97CSzd.js +547 -0
  524. package/dist/systemd-hints-3iQteJw-.js +278 -0
  525. package/dist/systemd-hints-CyQqHq1i.js +278 -0
  526. package/dist/systemd-linger-B2rPbnAi.js +75 -0
  527. package/dist/systemd-linger-DDvkfxH-.js +75 -0
  528. package/dist/table-DFx25vNb.js +279 -0
  529. package/dist/tables-C5fI0PmT.js +55 -0
  530. package/dist/tables-Cm9qvQ9D.js +55 -0
  531. package/dist/tables-fRe01eP1.js +55 -0
  532. package/dist/tailnet-Da-_9e8E.js +40 -0
  533. package/dist/tailnet-xt92Yaop.js +40 -0
  534. package/dist/tailscale-CnV0JWca.js +230 -0
  535. package/dist/tailscale-VkEC8dzj.js +230 -0
  536. package/dist/targets-C99szk_e.js +114 -0
  537. package/dist/targets-CPaTjbpp.js +2607 -0
  538. package/dist/targets-D-p4rJVS.js +650 -0
  539. package/dist/targets-D2OQt8-7.js +650 -0
  540. package/dist/targets-D94MtTiZ.js +2606 -0
  541. package/dist/targets-RajrXTl7.js +220 -0
  542. package/dist/targets-_UWmnyI9.js +53 -0
  543. package/dist/targets-tDrl_ioQ.js +46 -0
  544. package/dist/thinking-4nOZPunr.js +60 -0
  545. package/dist/thinking-ZfH2V9Os.js +60 -0
  546. package/dist/tokens-TtJJxzRr.js +21 -0
  547. package/dist/tool-display-Bxs_1jIn.js +785 -0
  548. package/dist/tool-display-D9p_Ttkq.js +785 -0
  549. package/dist/tool-images-9Ron321Q.js +263 -0
  550. package/dist/tool-images-BWhy6WRN.js +263 -0
  551. package/dist/trash-B5xyvBDf.js +125 -0
  552. package/dist/trash-BpB96kHe.js +125 -0
  553. package/dist/tui-Ba0uZDrg.js +3237 -0
  554. package/dist/tui-Biz0HqDj.js +3237 -0
  555. package/dist/tui-cli-C-UV6o2v.js +63 -0
  556. package/dist/tui-cli-Ds_bLT-h.js +67 -0
  557. package/dist/types.tools-BBb2rl3g.js +23 -0
  558. package/dist/types.tools-BDJw1yFx.js +23 -0
  559. package/dist/update-Barj5dsg.js +349 -0
  560. package/dist/update-D839Q8su.js +349 -0
  561. package/dist/update-cli-C0LnrpIt.js +1148 -0
  562. package/dist/update-cli-CUypa-T-.js +1150 -0
  563. package/dist/usage-BI9kergH.js +5465 -0
  564. package/dist/utils-DPoNpP7D.js +631 -0
  565. package/dist/version-3QUZW8EP.js +52 -0
  566. package/dist/version-CVMnqdzu.js +52 -0
  567. package/dist/voice-credentials-64XAMSJm.js +46 -0
  568. package/dist/voice-credentials-v-CQkTpD.js +46 -0
  569. package/dist/web-63IbbidQ.js +3051 -0
  570. package/dist/web-D9N764Da.js +80 -0
  571. package/dist/web-DUvNYLzr.js +75 -0
  572. package/dist/webhooks-cli-owhVNNkz.js +334 -0
  573. package/dist/webhooks-cli-zlvka6QD.js +330 -0
  574. package/dist/whatsapp-actions-8DejyRG5.js +126 -0
  575. package/dist/whatsapp-actions-DCzp5LKe.js +131 -0
  576. package/dist/widearea-dns-CQqZIeu8.js +127 -0
  577. package/dist/workspace-CB7pVojf.js +441 -0
  578. package/dist/workspace-DWEyzM0F.js +439 -0
  579. package/dist/zod-schema-CvFqwpNE.js +2719 -0
  580. package/dist/zod-schema-Y5SQgJLm.js +2719 -0
  581. package/extensions/matrix/src/matrix/monitor/replies.ts +0 -24
  582. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +0 -1
  583. package/extensions/voice-call/index.ts +18 -1
  584. package/package.json +3 -4
  585. package/dist/accounts-7fm_KzPm.js +0 -32
  586. package/dist/accounts-BFy_Z3od.js +0 -272
  587. package/dist/accounts-BTXSfPWi.js +0 -270
  588. package/dist/accounts-BxGS70Do.js +0 -36
  589. package/dist/accounts-CNY1TGj1.js +0 -47
  590. package/dist/accounts-DqRQ75w3.js +0 -36
  591. package/dist/accounts-iODF3SK2.js +0 -47
  592. package/dist/ack-reactions-C1hk85VE.js +0 -446
  593. package/dist/ack-reactions-DRC2CiDQ.js +0 -446
  594. package/dist/acp-cli-DD-PD4NM.js +0 -1326
  595. package/dist/acp-cli-DIyRCOum.js +0 -1320
  596. package/dist/active-listener-VzhWW8W6.js +0 -37
  597. package/dist/active-listener-z0qVEcom.js +0 -37
  598. package/dist/agent-D2HeDFFR.js +0 -731
  599. package/dist/agent-Da_eZ5BP.js +0 -732
  600. package/dist/agent-helpers-B6VfZ9_u.js +0 -606
  601. package/dist/agent-helpers-CTx5KKJu.js +0 -606
  602. package/dist/agent-scope-BqPmD-Ax.js +0 -114
  603. package/dist/agent-scope-DgQzamQB.js +0 -116
  604. package/dist/agents-TB3QpHoo.js +0 -788
  605. package/dist/agents.config-BsAQTYe1.js +0 -116
  606. package/dist/agents.config-C9fyYfAh.js +0 -116
  607. package/dist/ansi-D04X81yq.js +0 -14
  608. package/dist/audio-DPOuhNq7.js +0 -43
  609. package/dist/audio-VBcVDa08.js +0 -43
  610. package/dist/audio-preflight-CK3EA3Dv.js +0 -69
  611. package/dist/audio-preflight-tdXtrutj.js +0 -64
  612. package/dist/audit-CJipUWDi.js +0 -3138
  613. package/dist/audit-COWzB9Y1.js +0 -3138
  614. package/dist/auth-CAczFgAO.js +0 -448
  615. package/dist/auth-Deh9i9Eg.js +0 -448
  616. package/dist/auth-profiles-BquJGKLC.js +0 -279
  617. package/dist/auth-profiles-D8vKiBPq.js +0 -281
  618. package/dist/banner-CUWBOR42.js +0 -294
  619. package/dist/binaries-DXW6oATV.js +0 -13
  620. package/dist/bindings-8YtSWb91.js +0 -69
  621. package/dist/bindings-l1R5LQQH.js +0 -69
  622. package/dist/bonjour-discovery-DdAk1VyO.js +0 -378
  623. package/dist/bonjour-discovery-DuhiIZZx.js +0 -378
  624. package/dist/browser-cli-5Q9lhGdd.js +0 -1687
  625. package/dist/browser-cli-D2qMeSx1.js +0 -1692
  626. package/dist/call-CZHVeMf1.js +0 -2828
  627. package/dist/call-CoMjY7ah.js +0 -2829
  628. package/dist/catalog-CYiAleBT.js +0 -185
  629. package/dist/catalog-pjPqB2hC.js +0 -185
  630. package/dist/channel-account-context-CvIDAtHS.js +0 -550
  631. package/dist/channel-account-context-q-o0pG1A.js +0 -550
  632. package/dist/channel-activity-BaCNOZpP.js +0 -94
  633. package/dist/channel-activity-Cd1JhIUj.js +0 -292
  634. package/dist/channel-activity-DTKGf3j5.js +0 -94
  635. package/dist/channel-options-8SjIcDDI.js +0 -33
  636. package/dist/channel-options-BtQGtMF4.js +0 -32
  637. package/dist/channel-selection-C4DzrynU.js +0 -51
  638. package/dist/channel-selection-DdfhwFuY.js +0 -51
  639. package/dist/channel-web-BKJSXnwf.js +0 -2136
  640. package/dist/channel-web-BUzvNE_A.js +0 -2134
  641. package/dist/channels-cli-CCXY796Z.js +0 -1421
  642. package/dist/channels-cli-DTfx1zFC.js +0 -1426
  643. package/dist/channels-status-issues-DnmuqPsi.js +0 -18
  644. package/dist/channels-status-issues-p1pCvTh8.js +0 -18
  645. package/dist/chat-envelope-DEZ-5RY8.js +0 -248
  646. package/dist/chat-envelope-el7Uo-Fe.js +0 -248
  647. package/dist/chrome-Dd4dv0Vh.js +0 -1732
  648. package/dist/chrome-DdNEInwI.js +0 -1733
  649. package/dist/chunk-CSQfUhgF.js +0 -341
  650. package/dist/chunk-D0Y_w4oX.js +0 -341
  651. package/dist/clack-prompter-B7tOxhJd.js +0 -122
  652. package/dist/clack-prompter-CCFnKP_1.js +0 -121
  653. package/dist/cleanup-utils-CqAVZz2b.js +0 -94
  654. package/dist/cli-BRwDPW0r.js +0 -125
  655. package/dist/cli-CV86F7iv.js +0 -130
  656. package/dist/clipboard-D7_SKHPK.js +0 -31
  657. package/dist/clipboard-Dzkx6Q2K.js +0 -31
  658. package/dist/command-format-CVfo8I5f.js +0 -18
  659. package/dist/command-format-DgXcqxBt.js +0 -32
  660. package/dist/command-registry-BvLC28b4.js +0 -215
  661. package/dist/commands-B49Lu-pa.js +0 -41
  662. package/dist/commands-DI1BCqnj.js +0 -41
  663. package/dist/commands-registry-Cr6SIR3n.js +0 -892
  664. package/dist/commands-registry-agiTEGDz.js +0 -893
  665. package/dist/common-CMI-qsF8.js +0 -156
  666. package/dist/common-DSVmydhm.js +0 -156
  667. package/dist/completion-cli-C7O4JU8t.js +0 -452
  668. package/dist/completion-cli-CQNXtEJ7.js +0 -452
  669. package/dist/config-ChYRSJQt.js +0 -6953
  670. package/dist/config-CwtWvygh.js +0 -6951
  671. package/dist/config-cli-Df5nJcfO.js +0 -241
  672. package/dist/config-cli-Dqe5O1pl.js +0 -246
  673. package/dist/config-guard-C6hyuH-z.js +0 -75
  674. package/dist/config-guard-kNMQS_tm.js +0 -97
  675. package/dist/config-validation-BZBaBH69.js +0 -18
  676. package/dist/config-validation-DkrbzCyL.js +0 -18
  677. package/dist/configure-CoJmCHqT.js +0 -891
  678. package/dist/configure-DJbojDRf.js +0 -889
  679. package/dist/constants-BmRFoHl0.js +0 -67
  680. package/dist/constants-C9WPAluB.js +0 -67
  681. package/dist/control-auth-7k6Cb2zH.js +0 -397
  682. package/dist/control-auth-DBxfkJ3g.js +0 -397
  683. package/dist/control-ui/assets/index-B4ZM1lW1.js +0 -7738
  684. package/dist/control-ui/assets/index-B4ZM1lW1.js.map +0 -1
  685. package/dist/control-ui/assets/index-PED72sKF.css +0 -1
  686. package/dist/control-ui-assets-Cx_mw4D0.js +0 -186
  687. package/dist/control-ui-assets-W1AUuGrO.js +0 -186
  688. package/dist/conversation-label-C4SDz4sT.js +0 -36
  689. package/dist/conversation-label-D1frnvYe.js +0 -36
  690. package/dist/cron-cli-BJXQKtR3.js +0 -495
  691. package/dist/cron-cli-CTIj0WPW.js +0 -490
  692. package/dist/daemon-cli-CZbHvkRG.js +0 -1197
  693. package/dist/daemon-cli-Cf_YKWvV.js +0 -1199
  694. package/dist/daemon-install-CcohRvKV.js +0 -55
  695. package/dist/daemon-install-DDshfT0J.js +0 -60
  696. package/dist/daemon-install-helpers-CFGAfRlj.js +0 -462
  697. package/dist/daemon-install-helpers-DIUzSFG1.js +0 -462
  698. package/dist/defaults-B5KStIBg.js +0 -7
  699. package/dist/defaults-xUAL2Z-F.js +0 -7
  700. package/dist/deliver-BDf2lIEK.js +0 -481
  701. package/dist/deliver-DvmkSwLt.js +0 -481
  702. package/dist/delivery-queue-Cfa9Wmxp.js +0 -244
  703. package/dist/delivery-queue-CxVRi4tw.js +0 -244
  704. package/dist/devices-cli-CRsW5WOw.js +0 -316
  705. package/dist/devices-cli-Crzrk5uf.js +0 -321
  706. package/dist/diagnostics-99iCgBUh.js +0 -46
  707. package/dist/diagnostics-VC0cz7kX.js +0 -46
  708. package/dist/directory-cli-BnoQqeOX.js +0 -222
  709. package/dist/directory-cli-DdBAX3AV.js +0 -217
  710. package/dist/dm-policy-shared-DNqPbnip.js +0 -22
  711. package/dist/dm-policy-shared-vCb_hnqo.js +0 -22
  712. package/dist/dns-cli-D410XQr9.js +0 -197
  713. package/dist/dns-cli-Fgg96Xkg.js +0 -202
  714. package/dist/dock-DXSgTbDw.js +0 -928
  715. package/dist/dock-FtQwUHXE.js +0 -929
  716. package/dist/doctor-completion-BWmtCiFR.js +0 -92
  717. package/dist/doctor-completion-DTM_wDxy.js +0 -92
  718. package/dist/doctor-config-flow-Ccna5fPs.js +0 -1934
  719. package/dist/doctor-config-flow-DqzrK_jh.js +0 -1933
  720. package/dist/enable-DcJnkzfz.js +0 -59
  721. package/dist/enable-ibNq4UWy.js +0 -59
  722. package/dist/env-DeF64iu0.js +0 -60
  723. package/dist/env-vars-7aZqKPhk.js +0 -93
  724. package/dist/env-vars-CLGbxdpL.js +0 -93
  725. package/dist/errors-8F-77i6m.js +0 -35
  726. package/dist/errors-DZ199hOo.js +0 -35
  727. package/dist/exec-DbKuYyM1.js +0 -164
  728. package/dist/exec-DkFE7lqU.js +0 -164
  729. package/dist/fetch-C6XKGA11.js +0 -67
  730. package/dist/fetch-CEDsOiql.js +0 -67
  731. package/dist/fetch-ePscvwi1.js +0 -67
  732. package/dist/file-lock-CIvloidc.js +0 -107
  733. package/dist/file-lock-CzBL_VIx.js +0 -107
  734. package/dist/fs-safe-DSwT85uK.js +0 -88
  735. package/dist/fs-safe-DkBhNAc3.js +0 -98
  736. package/dist/gateway-cli-BJooqlkO.js +0 -23747
  737. package/dist/gateway-cli-C2wPjxY4.js +0 -23742
  738. package/dist/gateway-rpc-BcT4FqJQ.js +0 -28
  739. package/dist/gateway-rpc-DhKAJ5EW.js +0 -28
  740. package/dist/gmail-setup-utils-Cnx8A5pW.js +0 -422
  741. package/dist/gmail-setup-utils-nkabbKOE.js +0 -423
  742. package/dist/health-BZX-PyP0.js +0 -1420
  743. package/dist/health-BgD0koJx.js +0 -1423
  744. package/dist/health-format-BG95OE6N.js +0 -28
  745. package/dist/heartbeat-visibility-DeW9EIeS.js +0 -125
  746. package/dist/heartbeat-visibility-DvogUlnZ.js +0 -125
  747. package/dist/help-format-DAxf0l_h.js +0 -17
  748. package/dist/helpers-R7bU5IBz.js +0 -10
  749. package/dist/helpers-kkeXif0Q.js +0 -10
  750. package/dist/hook-runner-global-cyaKukZP.js +0 -527
  751. package/dist/hooks-cli-DTygpzqS.js +0 -1217
  752. package/dist/hooks-cli-Dg853OdZ.js +0 -1222
  753. package/dist/host-env-security-Bms2_EMV.js +0 -92
  754. package/dist/host-env-security-szwfmhC4.js +0 -92
  755. package/dist/image-ops-Bi6JPSkD.js +0 -354
  756. package/dist/image-ops-DWytvdh_.js +0 -354
  757. package/dist/import-D8BBZQgl.js +0 -170
  758. package/dist/import-DQ6NI4Fz.js +0 -168
  759. package/dist/inbound-context-CPkkQW0i.js +0 -68
  760. package/dist/inbound-context-DS_kpIYI.js +0 -68
  761. package/dist/inbound-path-policy-Bg4gZBx-.js +0 -250
  762. package/dist/inbound-path-policy-sdr5Ji0k.js +0 -250
  763. package/dist/inspect-Dt8hogS3.js +0 -559
  764. package/dist/inspect-vYIL1oA0.js +0 -559
  765. package/dist/installs-ClX3qQmh.js +0 -325
  766. package/dist/installs-CxjOiLUM.js +0 -325
  767. package/dist/ipv4--2WXMVtE.js +0 -46
  768. package/dist/ipv4-CDQpx1A7.js +0 -46
  769. package/dist/ir-BvKdMuSP.js +0 -940
  770. package/dist/json-files-DzpTak5i.js +0 -46
  771. package/dist/links-C3soDNDH.js +0 -15
  772. package/dist/loader-BWZ_iRxI.js +0 -22624
  773. package/dist/loader-ClFP7wvS.js +0 -22621
  774. package/dist/local-roots-B6rSCu4U.js +0 -314
  775. package/dist/local-roots-v2HlOaG5.js +0 -313
  776. package/dist/logger-Bw3cFE5t.js +0 -49
  777. package/dist/logging-C-nxX2fn.js +0 -20
  778. package/dist/login-Cmpeb59f.js +0 -62
  779. package/dist/login-D1CV2eNF.js +0 -61
  780. package/dist/login-qr-B3tpFLRV.js +0 -327
  781. package/dist/login-qr-CSQzrtFX.js +0 -322
  782. package/dist/logs-cli-BSiUZwb2.js +0 -238
  783. package/dist/logs-cli-DDtoJ1Fr.js +0 -233
  784. package/dist/markdown-tables-PJUMrC4T.js +0 -29
  785. package/dist/markdown-tables-dDWBbtqd.js +0 -29
  786. package/dist/media-Dqv7Q0aS.js +0 -10492
  787. package/dist/media-DtN0R9A0.js +0 -940
  788. package/dist/message-action-names-Bs50Ia1g.js +0 -2521
  789. package/dist/message-action-names-Btd7cMvx.js +0 -2521
  790. package/dist/message-channel-DzJqHVZD.js +0 -91
  791. package/dist/message-channel-uWMAiywE.js +0 -91
  792. package/dist/mime-BS3jhcZE.js +0 -149
  793. package/dist/mime-Cxh_64P6.js +0 -149
  794. package/dist/net-Cg8AQeke.js +0 -225
  795. package/dist/net-D6D0wgcF.js +0 -225
  796. package/dist/node-cli-Q2-n3Fgv.js +0 -24
  797. package/dist/node-cli-Uf6lAntf.js +0 -24
  798. package/dist/nodes-cli-DVLvMgBV.js +0 -1343
  799. package/dist/nodes-cli-Dxf7vAKk.js +0 -1348
  800. package/dist/nodes-screen-BR9sYoPa.js +0 -250
  801. package/dist/nodes-screen-Cw7Hv7M2.js +0 -250
  802. package/dist/note-Dlv4NmlQ.js +0 -92
  803. package/dist/note-kvWV4xtw.js +0 -92
  804. package/dist/npm-registry-spec-0qiKawvv.js +0 -786
  805. package/dist/npm-registry-spec-COvUzy5J.js +0 -786
  806. package/dist/npm-resolution-DJnq5QBs.js +0 -86
  807. package/dist/npm-resolution-DVl2spoD.js +0 -86
  808. package/dist/onboard-BcQWYGY3.js +0 -405
  809. package/dist/onboard-RQ_FAMyg.js +0 -407
  810. package/dist/onboard-channels-CHh_BuxJ.js +0 -2547
  811. package/dist/onboard-channels-DXD-CK_M.js +0 -2548
  812. package/dist/onboard-config-BCTthQ7J.js +0 -24
  813. package/dist/onboard-config-y-2cgT0V.js +0 -24
  814. package/dist/onboard-helpers-BRMP8mup.js +0 -362
  815. package/dist/onboard-helpers-CUGbuZwH.js +0 -363
  816. package/dist/onboard-remote-D-qWujdL.js +0 -127
  817. package/dist/onboard-remote-o_OW-uzc.js +0 -127
  818. package/dist/onboarding-Bf9kVcef.js +0 -541
  819. package/dist/onboarding-CVlOLLp1.js +0 -543
  820. package/dist/onboarding.finalize-CQSt37fw.js +0 -398
  821. package/dist/onboarding.finalize-DggVL7Ay.js +0 -401
  822. package/dist/onboarding.gateway-config-BLca3Td2.js +0 -198
  823. package/dist/onboarding.gateway-config-C1mcOkRh.js +0 -191
  824. package/dist/outbound-DXXccLDS.js +0 -220
  825. package/dist/outbound-ZnVvUReT.js +0 -221
  826. package/dist/outbound-attachment-CfRb07J7.js +0 -18
  827. package/dist/outbound-attachment-DGXTtERK.js +0 -18
  828. package/dist/outbound-attachment-_jj74QBM.js +0 -18
  829. package/dist/pairing-cli-Bgm4fRA3.js +0 -127
  830. package/dist/pairing-cli-J0uGb1nU.js +0 -122
  831. package/dist/pairing-labels-CVm65Jkh.js +0 -9
  832. package/dist/pairing-labels-DD1mcvQG.js +0 -9
  833. package/dist/pairing-store-5qapT5-t.js +0 -460
  834. package/dist/pairing-store-MLceBEeL.js +0 -459
  835. package/dist/path-env-DR5vn3QL.js +0 -89
  836. package/dist/path-env-qRJbjJzj.js +0 -89
  837. package/dist/path-guards-CIx4hURU.js +0 -31
  838. package/dist/path-guards-CrQOUlsq.js +0 -31
  839. package/dist/path-safety-DkT9RmTG.js +0 -14
  840. package/dist/path-safety-juI2XbO1.js +0 -14
  841. package/dist/paths-BTaH3rLn.js +0 -232
  842. package/dist/plugin-auto-enable-BUSF117F.js +0 -301
  843. package/dist/plugin-auto-enable-CoDnqA0S.js +0 -302
  844. package/dist/plugin-registry-D2B6nbn1.js +0 -33
  845. package/dist/plugin-registry-fLaMC0ik.js +0 -33
  846. package/dist/plugin-sdk/agents/agent-helpers/thinking.d.ts +0 -5
  847. package/dist/plugin-sdk/agents/agent-paths.d.ts +0 -1
  848. package/dist/plugin-sdk/agents/auth-profiles/constants.d.ts +0 -16
  849. package/dist/plugin-sdk/agents/auth-profiles/display.d.ts +0 -7
  850. package/dist/plugin-sdk/agents/auth-profiles/doctor.d.ts +0 -8
  851. package/dist/plugin-sdk/agents/auth-profiles/oauth.d.ts +0 -14
  852. package/dist/plugin-sdk/agents/auth-profiles/paths.d.ts +0 -4
  853. package/dist/plugin-sdk/agents/auth-profiles/profiles.d.ts +0 -12
  854. package/dist/plugin-sdk/agents/auth-profiles/session-override.d.ts +0 -18
  855. package/dist/plugin-sdk/agents/auth-profiles/store.d.ts +0 -10
  856. package/dist/plugin-sdk/agents/auth-profiles/types.d.ts +0 -13
  857. package/dist/plugin-sdk/agents/auth-profiles.d.ts +0 -8
  858. package/dist/plugin-sdk/agents/defaults.d.ts +0 -3
  859. package/dist/plugin-sdk/agents/provider-auth.d.ts +0 -40
  860. package/dist/plugin-sdk/auto-reply/model-runtime.d.ts +0 -17
  861. package/dist/plugin-sdk/auto-reply/reply/directive-handling.auth.d.ts +0 -19
  862. package/dist/plugin-sdk/auto-reply/reply/elevated-allowlist-matcher.d.ts +0 -20
  863. package/dist/plugin-sdk/auto-reply/reply/elevated-unavailable.d.ts +0 -8
  864. package/dist/plugin-sdk/auto-reply/reply/reply-elevated.d.ts +0 -16
  865. package/dist/plugin-sdk/compat/legacy-names.d.ts +0 -8
  866. package/dist/plugin-sdk/config/legacy.migrations.part-1.d.ts +0 -2
  867. package/dist/plugin-sdk/config/legacy.migrations.part-2.d.ts +0 -2
  868. package/dist/plugin-sdk/config/legacy.migrations.part-3.d.ts +0 -2
  869. package/dist/plugin-sdk/config/model-input.d.ts +0 -9
  870. package/dist/plugin-sdk/config/zod-schema.agent-model.d.ts +0 -5
  871. package/dist/plugin-sdk/link-understanding/apply.d.ts +0 -10
  872. package/dist/plugin-sdk/link-understanding/defaults.d.ts +0 -2
  873. package/dist/plugin-sdk/link-understanding/detect.d.ts +0 -3
  874. package/dist/plugin-sdk/link-understanding/format.d.ts +0 -4
  875. package/dist/plugin-sdk/link-understanding/runner.d.ts +0 -11
  876. package/dist/plugin-sdk/media/input-files.d.ts +0 -95
  877. package/dist/plugin-sdk/media-understanding/apply.d.ts +0 -19
  878. package/dist/plugin-sdk/media-understanding/attachments.d.ts +0 -49
  879. package/dist/plugin-sdk/media-understanding/audio-preflight.d.ts +0 -16
  880. package/dist/plugin-sdk/media-understanding/concurrency.d.ts +0 -1
  881. package/dist/plugin-sdk/media-understanding/defaults.d.ts +0 -12
  882. package/dist/plugin-sdk/media-understanding/errors.d.ts +0 -6
  883. package/dist/plugin-sdk/media-understanding/format.d.ts +0 -7
  884. package/dist/plugin-sdk/media-understanding/fs.d.ts +0 -1
  885. package/dist/plugin-sdk/media-understanding/output-extract.d.ts +0 -2
  886. package/dist/plugin-sdk/media-understanding/providers/anthropic/index.d.ts +0 -2
  887. package/dist/plugin-sdk/media-understanding/providers/deepgram/index.d.ts +0 -2
  888. package/dist/plugin-sdk/media-understanding/providers/google/index.d.ts +0 -2
  889. package/dist/plugin-sdk/media-understanding/providers/google/video.d.ts +0 -3
  890. package/dist/plugin-sdk/media-understanding/providers/groq/index.d.ts +0 -2
  891. package/dist/plugin-sdk/media-understanding/providers/index.d.ts +0 -4
  892. package/dist/plugin-sdk/media-understanding/providers/minimax/index.d.ts +0 -2
  893. package/dist/plugin-sdk/media-understanding/providers/mistral/index.d.ts +0 -2
  894. package/dist/plugin-sdk/media-understanding/providers/moonshot/index.d.ts +0 -2
  895. package/dist/plugin-sdk/media-understanding/providers/moonshot/video.d.ts +0 -3
  896. package/dist/plugin-sdk/media-understanding/providers/openai/index.d.ts +0 -2
  897. package/dist/plugin-sdk/media-understanding/providers/zai/index.d.ts +0 -2
  898. package/dist/plugin-sdk/media-understanding/resolve.d.ts +0 -44
  899. package/dist/plugin-sdk/media-understanding/runner.d.ts +0 -34
  900. package/dist/plugin-sdk/media-understanding/runner.entries.d.ts +0 -33
  901. package/dist/plugin-sdk/media-understanding/scope.d.ts +0 -9
  902. package/dist/plugin-sdk/media-understanding/types.d.ts +0 -74
  903. package/dist/plugin-sdk/media-understanding/video.d.ts +0 -2
  904. package/dist/plugin-sdk/sessions/model-overrides.d.ts +0 -14
  905. package/dist/plugin-sdk/telegram/reasoning-lane-coordinator.d.ts +0 -18
  906. package/dist/plugin-sdk/utils/mask-api-key.d.ts +0 -1
  907. package/dist/plugin-sdk/utils/run-with-concurrency.d.ts +0 -11
  908. package/dist/plugins-CsYMlnVa.js +0 -455
  909. package/dist/plugins-Dhit-VHt.js +0 -453
  910. package/dist/plugins-cli-BwuvKtN-.js +0 -798
  911. package/dist/plugins-cli-D34k2VsI.js +0 -793
  912. package/dist/ports-DrruB2fK.js +0 -370
  913. package/dist/ports-GT1yV-Tg.js +0 -96
  914. package/dist/ports-NPqtlfp0.js +0 -316
  915. package/dist/ports-QMI4-F9m.js +0 -96
  916. package/dist/program-C5ukTU6N.js +0 -244
  917. package/dist/program-context-D55P0vBV.js +0 -474
  918. package/dist/progress-CBkSaM6z.js +0 -124
  919. package/dist/prompt-Bllj1dhc.js +0 -21
  920. package/dist/prompt-select-styled-WStiI-bz.js +0 -1647
  921. package/dist/prompt-select-styled-ram-aXWu.js +0 -1650
  922. package/dist/prompt-style-DVEm3BZW.js +0 -9
  923. package/dist/provider-dispatcher-epFKwpGK.js +0 -659
  924. package/dist/provider-dispatcher-vEBMmwZ0.js +0 -660
  925. package/dist/push-apns-C0LyG-WB.js +0 -713
  926. package/dist/push-apns-DuG95AKC.js +0 -711
  927. package/dist/pw-ai-TygsEDgY.js +0 -1906
  928. package/dist/pw-ai-eS0sIkZo.js +0 -1910
  929. package/dist/qr-cli-B8sYhugo.js +0 -352
  930. package/dist/qr-cli-yP8i4Iv1.js +0 -347
  931. package/dist/redact-eZq1uwNK.js +0 -191
  932. package/dist/redact-snapshot-gOLgfKp3.js +0 -2028
  933. package/dist/redact-snapshot-uT-CXbM8.js +0 -2028
  934. package/dist/register.agent-CSoigVGq.js +0 -1043
  935. package/dist/register.agent-GZLrbUPm.js +0 -286
  936. package/dist/register.configure-CXpiRohq.js +0 -124
  937. package/dist/register.configure-RaqiHe5L.js +0 -130
  938. package/dist/register.import-Bs-UkOs-.js +0 -27
  939. package/dist/register.import-DLng8g-e.js +0 -30
  940. package/dist/register.maintenance-B-ZLQ56Y.js +0 -494
  941. package/dist/register.maintenance-Bjr_SmG9.js +0 -497
  942. package/dist/register.message-BCQ8Vg4O.js +0 -686
  943. package/dist/register.message-ChhiSr7g.js +0 -681
  944. package/dist/register.onboard-DJCqNufv.js +0 -257
  945. package/dist/register.onboard-jlxjsrv6.js +0 -262
  946. package/dist/register.setup-C-sdixz5.js +0 -114
  947. package/dist/register.setup-Dwpe4ArC.js +0 -109
  948. package/dist/register.status-health-sessions-BWFRHBCZ.js +0 -669
  949. package/dist/register.status-health-sessions-D7noMz9y.js +0 -423
  950. package/dist/register.subclis-DFI5u4a6.js +0 -267
  951. package/dist/replies-Bzcj-R8d.js +0 -136
  952. package/dist/replies-uvTI-4lg.js +0 -136
  953. package/dist/reply-B9qz9Wwk.js +0 -13897
  954. package/dist/reply-CmGAXQKc.js +0 -13900
  955. package/dist/reply-directives-Be97YiyM.js +0 -182
  956. package/dist/reply-directives-DsLughUT.js +0 -182
  957. package/dist/reply-payloads-DW0YgT82.js +0 -527
  958. package/dist/reply-prefix-BzoT8h8o.js +0 -38
  959. package/dist/reply-prefix-CSaiVnkC.js +0 -38
  960. package/dist/resolve-route-2P40JKXk.js +0 -249
  961. package/dist/resolve-route-_CwEKLq6.js +0 -249
  962. package/dist/response-prefix-template-BAlvtSjL.js +0 -136
  963. package/dist/response-prefix-template-D-tls8tI.js +0 -136
  964. package/dist/retry-B042l5UJ.js +0 -77
  965. package/dist/retry-BhuXOEVR.js +0 -77
  966. package/dist/run-main-B-O5ZtbU.js +0 -320
  967. package/dist/runner-DGkTSlOS.js +0 -2294
  968. package/dist/runner-hs4uxAUP.js +0 -2294
  969. package/dist/runtime-DJNp29jv.js +0 -94
  970. package/dist/runtime-guard-DZ_xuCc4.js +0 -60
  971. package/dist/secure-random-DTcQnwrI.js +0 -44
  972. package/dist/security-cli-1iY1lW6F.js +0 -484
  973. package/dist/security-cli-BuiPPQYU.js +0 -478
  974. package/dist/send-3lgWtHHf.js +0 -349
  975. package/dist/send-6l2S1bcr.js +0 -11
  976. package/dist/send-9NV7sSlD.js +0 -2245
  977. package/dist/send-B0TcjZUD.js +0 -1778
  978. package/dist/send-Bb6K_10X.js +0 -2245
  979. package/dist/send-BzN7X1Om.js +0 -374
  980. package/dist/send-CLrRM0El.js +0 -426
  981. package/dist/send-Caz-txXK.js +0 -492
  982. package/dist/send-DJEr4rP6.js +0 -547
  983. package/dist/send-DJiDHXsu.js +0 -349
  984. package/dist/send-DOjg7kJj.js +0 -1775
  985. package/dist/send-DVXOiKT4.js +0 -1174
  986. package/dist/send-Dc_K995l.js +0 -547
  987. package/dist/send-Dh6d3CLl.js +0 -332
  988. package/dist/send-iPAfbiYM.js +0 -492
  989. package/dist/send-pwe9Gu8e.js +0 -29
  990. package/dist/server-B0IC-Osg.js +0 -205
  991. package/dist/server-MccRxMpb.js +0 -200
  992. package/dist/server-lifecycle-C_0CfoP7.js +0 -2437
  993. package/dist/server-lifecycle-IKdGw1kM.js +0 -2437
  994. package/dist/server-node-events-Czr2gXp_.js +0 -393
  995. package/dist/server-node-events-DFG6cXud.js +0 -398
  996. package/dist/service-Bjqii5nW.js +0 -670
  997. package/dist/service-fp29z5Ww.js +0 -670
  998. package/dist/session-DBL5nHDy.js +0 -170
  999. package/dist/session-cost-usage-DX09eTPU.js +0 -627
  1000. package/dist/session-cost-usage-yYi525j3.js +0 -627
  1001. package/dist/session-dirs-Cj5xi7zX.js +0 -947
  1002. package/dist/session-dirs-DdF6TDsE.js +0 -947
  1003. package/dist/session-utils-C7BtKlun.js +0 -625
  1004. package/dist/session-utils-CLe1dano.js +0 -625
  1005. package/dist/session-xKIW6gL2.js +0 -170
  1006. package/dist/sessions-C65iUuN9.js +0 -2593
  1007. package/dist/sessions-DjZ9IshB.js +0 -252
  1008. package/dist/ssrf-Ck9HDZpv.js +0 -183
  1009. package/dist/ssrf-m7kFIobZ.js +0 -183
  1010. package/dist/status-C6ghjxvX.js +0 -2072
  1011. package/dist/status-D-qTB8aZ.js +0 -2068
  1012. package/dist/status.update-C55QM2xs.js +0 -79
  1013. package/dist/status.update-CBmPXwYN.js +0 -79
  1014. package/dist/store-Bjk6rTC_.js +0 -53
  1015. package/dist/store-C3tOpizT.js +0 -64
  1016. package/dist/store-uRA67h-o.js +0 -2595
  1017. package/dist/store-v3P-OWhi.js +0 -64
  1018. package/dist/subagent-registry-BTG1aAZ8.js +0 -4860
  1019. package/dist/subagent-registry-CoclNL5c.js +0 -4858
  1020. package/dist/subsystem-COd61u0P.js +0 -1139
  1021. package/dist/subsystem-D9ZpRKFP.js +0 -1079
  1022. package/dist/system-cli-C__5QOMX.js +0 -70
  1023. package/dist/system-cli-Dr4XoVTq.js +0 -75
  1024. package/dist/systemd-DSnlM3jX.js +0 -547
  1025. package/dist/systemd-TfK8GuTx.js +0 -547
  1026. package/dist/systemd-linger-Axnc1xCb.js +0 -75
  1027. package/dist/systemd-linger-_0_-RY4v.js +0 -75
  1028. package/dist/table-DPTzZyhu.js +0 -279
  1029. package/dist/tables-BQ-CvUfT.js +0 -55
  1030. package/dist/tables-D3a9iSU1.js +0 -55
  1031. package/dist/tables-D3zdgEuK.js +0 -55
  1032. package/dist/tailnet-CEudzG0i.js +0 -40
  1033. package/dist/tailnet-PnMrjwGT.js +0 -40
  1034. package/dist/tailscale-DTATQxAG.js +0 -230
  1035. package/dist/tailscale-Dbyahx0J.js +0 -230
  1036. package/dist/targets-B_0Y1i-1.js +0 -2173
  1037. package/dist/targets-CMhBAn87.js +0 -120
  1038. package/dist/targets-CTmhieRB.js +0 -650
  1039. package/dist/targets-CcTME3bp.js +0 -46
  1040. package/dist/targets-DfaVEd_u.js +0 -220
  1041. package/dist/targets-DtiQgjEL.js +0 -2172
  1042. package/dist/targets-DyybKefq.js +0 -53
  1043. package/dist/targets-rDolm5YS.js +0 -650
  1044. package/dist/tokens-DzFOtLlW.js +0 -21
  1045. package/dist/tool-display-Br6mwaJc.js +0 -785
  1046. package/dist/tool-display-sgNwLOBj.js +0 -785
  1047. package/dist/tool-images-BNfIJ_Kj.js +0 -263
  1048. package/dist/tool-images-kloBqxqK.js +0 -263
  1049. package/dist/trash-DPi0aCCQ.js +0 -125
  1050. package/dist/trash-D_Jd_yQZ.js +0 -125
  1051. package/dist/tui-BSDCI2hh.js +0 -3392
  1052. package/dist/tui-DT7hLOBk.js +0 -3392
  1053. package/dist/tui-cli-DUWvLaoG.js +0 -58
  1054. package/dist/tui-cli-Dn2iXQTO.js +0 -63
  1055. package/dist/update-Bgl3Pk2N.js +0 -349
  1056. package/dist/update-CFPFib4P.js +0 -349
  1057. package/dist/update-cli-DSDSQ2Xi.js +0 -1373
  1058. package/dist/update-cli-DYR_7NLy.js +0 -1370
  1059. package/dist/usage-CS1zeIan.js +0 -5279
  1060. package/dist/utils-LBKvDoPx.js +0 -631
  1061. package/dist/web-BECD5Akw.js +0 -70
  1062. package/dist/web-D4oENnAL.js +0 -3065
  1063. package/dist/web-KP-TI2sO.js +0 -76
  1064. package/dist/webhooks-cli-BqoG_i-D.js +0 -328
  1065. package/dist/webhooks-cli-Ddu7dfdE.js +0 -333
  1066. package/dist/whatsapp-actions-BZLIjQ8J.js +0 -122
  1067. package/dist/whatsapp-actions-KCc1vHN5.js +0 -128
  1068. package/dist/widearea-dns-DSoaA-eH.js +0 -127
  1069. package/dist/workspace-4EaHHEWi.js +0 -447
  1070. package/dist/workspace-B_1t_yq3.js +0 -449
  1071. /package/dist/{account-lookup-0KDSp5Mj.js → account-lookup-C0ndrpt-.js} +0 -0
  1072. /package/dist/{account-lookup-zvANGr2x.js → account-lookup-CIY_RKhi.js} +0 -0
  1073. /package/dist/{api-BeQMq2iS.js → api-BE4ZCWWB.js} +0 -0
  1074. /package/dist/{api-CxX8-gGz.js → api-wsk9zRVi.js} +0 -0
  1075. /package/dist/{argv-Co-b9Zsc.js → argv-BY8EVMTP.js} +0 -0
  1076. /package/dist/{brew-DbSbN8sD.js → brew-CmTYeZk1.js} +0 -0
  1077. /package/dist/{brew-C4zKZsHX.js → brew-V4lMBeE3.js} +0 -0
  1078. /package/dist/{chat-type-CYPyHAj-.js → chat-type-BP9akbag.js} +0 -0
  1079. /package/dist/{chat-type-DKb2TlGZ.js → chat-type-CH3W-zKy.js} +0 -0
  1080. /package/dist/{cleanup-utils-CwQvD73q.js → cleanup-utils-ZC2zvntc.js} +0 -0
  1081. /package/dist/{cli-name-BicfmwQX.js → cli-name-BZsYSp9l.js} +0 -0
  1082. /package/dist/{cli-name-C6rJGl18.js → cli-name-CRe5Ow_t.js} +0 -0
  1083. /package/dist/{cli-utils-BhXbz2UF.js → cli-utils-BUOtyfnU.js} +0 -0
  1084. /package/dist/{cli-utils-DZe_rVkZ.js → cli-utils-CGB3cBZm.js} +0 -0
  1085. /package/dist/{client-C61M8zI3.js → client-9dK56xly.js} +0 -0
  1086. /package/dist/{client-DdpmATKq.js → client-D-R1YdRD.js} +0 -0
  1087. /package/dist/{command-options-C4paWSGf.js → command-options-CnHA4TzR.js} +0 -0
  1088. /package/dist/{command-options-CA30lfLK.js → command-options-D2nN4AXX.js} +0 -0
  1089. /package/dist/{config-eval-CjGZtLwx.js → config-eval-BQIR-wSg.js} +0 -0
  1090. /package/dist/{config-eval-H_wlEYIG.js → config-eval-Bh82JoXK.js} +0 -0
  1091. /package/dist/{constants-ChptG3d7.js → constants-C7j1VA2S.js} +0 -0
  1092. /package/dist/{constants-DY6b-_Wl.js → constants-DoYLsBmv.js} +0 -0
  1093. /package/dist/{credentials-BHWUBHMd.js → credentials-C_RoJFmK.js} +0 -0
  1094. /package/dist/{credentials-DFsi1_e8.js → credentials-DM_Dj0m8.js} +0 -0
  1095. /package/dist/{daemon-runtime-CMnbwryP.js → daemon-runtime-9oDBR7YW.js} +0 -0
  1096. /package/dist/{daemon-runtime-CvqE4ysg.js → daemon-runtime-CzFI2dPw.js} +0 -0
  1097. /package/dist/{dangerous-name-matching-BzmiLXmA.js → dangerous-name-matching-BlTBBZns.js} +0 -0
  1098. /package/dist/{dangerous-name-matching-DaVRgwer.js → dangerous-name-matching-CSq9sJDG.js} +0 -0
  1099. /package/dist/{dangerous-tools-BOLoCRv4.js → dangerous-tools-BRmbBvRf.js} +0 -0
  1100. /package/dist/{dangerous-tools-Baq7Q-i6.js → dangerous-tools-D4jtl72G.js} +0 -0
  1101. /package/dist/{fetch-timeout-DTIN7CGM.js → fetch-timeout-CytN1wiO.js} +0 -0
  1102. /package/dist/{fetch-timeout-DoySHqfO.js → fetch-timeout-DBRRPNBi.js} +0 -0
  1103. /package/dist/{file-identity-BxlKD8Ys.js → file-identity-CeRK5CJC.js} +0 -0
  1104. /package/dist/{format-duration-CqUERz51.js → format-duration-B-Uv5nOi.js} +0 -0
  1105. /package/dist/{format-duration-Ct-yiwkS.js → format-duration-D1M3Zxu6.js} +0 -0
  1106. /package/dist/{format-relative-79_Y1n2Y.js → format-relative-Czf5fUjn.js} +0 -0
  1107. /package/dist/{format-relative-CxLpEQOX.js → format-relative-zwkkXJvs.js} +0 -0
  1108. /package/dist/{health-format-B_QRD8Si.js → health-format-DF54wvUU.js} +0 -0
  1109. /package/dist/{heartbeat-wake-LGEgcXjs.js → heartbeat-wake-CvHncCjP.js} +0 -0
  1110. /package/dist/{heartbeat-wake-Y97geucO.js → heartbeat-wake-DLxQm6-U.js} +0 -0
  1111. /package/dist/{help-format-NNm_Ov4H.js → help-format-CJQ7APRn.js} +0 -0
  1112. /package/dist/{helpers-BAsMXprO.js → helpers-BER76F_2.js} +0 -0
  1113. /package/dist/{helpers-DLgbkcEn.js → helpers-n2CtWpm9.js} +0 -0
  1114. /package/dist/{input-provenance-Bn6thJNm.js → input-provenance-gIfDn1ki.js} +0 -0
  1115. /package/dist/{input-provenance-xUsSMOsz.js → input-provenance-wkso1o5V.js} +0 -0
  1116. /package/dist/{ip-C9q3Oq20.js → ip-D4VG5EJO.js} +0 -0
  1117. /package/dist/{ip-D0zgNmBV.js → ip-MwCwRA7c.js} +0 -0
  1118. /package/dist/{is-main-DN8-sNR5.js → is-main-BmHYGRhd.js} +0 -0
  1119. /package/dist/{json-file-B7l5-Xhr.js → json-file-BW22hGtf.js} +0 -0
  1120. /package/dist/{json-file-ChO_R9yh.js → json-file-DwRAfAAy.js} +0 -0
  1121. /package/dist/{json-files-CmpYSF4G.js → json-files-Dy52honG.js} +0 -0
  1122. /package/dist/{lanes-ByWMUgrz.js → lanes-1CBKdsiR.js} +0 -0
  1123. /package/dist/{lanes-cHJ5arWg.js → lanes-DqVYfPRG.js} +0 -0
  1124. /package/dist/{links-Bz4V7R_p.js → links-CwTlzaPe.js} +0 -0
  1125. /package/dist/{location-DBWCGNLq.js → location-50gaJF5Z.js} +0 -0
  1126. /package/dist/{location-GbZ0bBRU.js → location-Qo8Ii1zo.js} +0 -0
  1127. /package/dist/{logger-DyL5G2DO.js → logger-B8BE0PyS.js} +0 -0
  1128. /package/dist/{logger-BWMPnILd.js → logger-CPvz-aPM.js} +0 -0
  1129. /package/dist/{logger-GvipVDfh.js → logger-cL0D2DCr.js} +0 -0
  1130. /package/dist/{logging-D8-Kozjc.js → logging-DTEoeoa3.js} +0 -0
  1131. /package/dist/{mutable-allowlist-detectors-DiZDtmlZ.js → mutable-allowlist-detectors-BXE7Hr7F.js} +0 -0
  1132. /package/dist/{mutable-allowlist-detectors-U5ThQr9V.js → mutable-allowlist-detectors-CtKavajp.js} +0 -0
  1133. /package/dist/{parse-log-line-enq8pduH.js → parse-log-line-GisaZn5H.js} +0 -0
  1134. /package/dist/{parse-log-line-mz9TG6ig.js → parse-log-line-ZsbwG_u7.js} +0 -0
  1135. /package/dist/{parse-timeout-BMP8a0_a.js → parse-timeout-BpphuwYl.js} +0 -0
  1136. /package/dist/{parse-timeout-CDkco8kd.js → parse-timeout-CE6BjmGU.js} +0 -0
  1137. /package/dist/plugin-sdk/{agents → auth}/api-key-rotation.d.ts +0 -0
  1138. /package/dist/plugin-sdk/{media-understanding → stt}/providers/deepgram/audio.d.ts +0 -0
  1139. /package/dist/plugin-sdk/{media-understanding → stt}/providers/google/audio.d.ts +0 -0
  1140. /package/dist/plugin-sdk/{media-understanding → stt}/providers/google/inline-data.d.ts +0 -0
  1141. /package/dist/plugin-sdk/{media-understanding → stt}/providers/openai/audio.d.ts +0 -0
  1142. /package/dist/plugin-sdk/{media-understanding → stt}/providers/shared.d.ts +0 -0
  1143. /package/dist/{plugins-allowlist-BbTQ5Z2k.js → plugins-allowlist-A38nxBRG.js} +0 -0
  1144. /package/dist/{plugins-allowlist-C20oaESO.js → plugins-allowlist-D2tS9tcu.js} +0 -0
  1145. /package/dist/{polls-B0CCBDeR.js → polls-BLyT08ZI.js} +0 -0
  1146. /package/dist/{polls-CwwHzYBM.js → polls-BmymsJEe.js} +0 -0
  1147. /package/dist/{ports-lsof-Wteul3ju.js → ports-lsof-CDyv5GJd.js} +0 -0
  1148. /package/dist/{process-scoped-map-CV9kDvfG.js → process-scoped-map-BCJR56ZB.js} +0 -0
  1149. /package/dist/{process-scoped-map-PEvnG75N.js → process-scoped-map-Cb1EHPyN.js} +0 -0
  1150. /package/dist/{program-context-jqeI5alP.js → program-context-DlXnmuB7.js} +0 -0
  1151. /package/dist/{progress-C1kUfYL-.js → progress-DRLmcFiG.js} +0 -0
  1152. /package/dist/{prompt-Yn2yClg1.js → prompt-BRGfic91.js} +0 -0
  1153. /package/dist/{prompt-style-DjEYC_s-.js → prompt-style-CUuA6OCy.js} +0 -0
  1154. /package/dist/{provider-utils-3JTMJroG.js → provider-utils-C9kBVF1f.js} +0 -0
  1155. /package/dist/{provider-utils-FaBmofiq.js → provider-utils-DiLhkKQp.js} +0 -0
  1156. /package/dist/{proxy-DL3MD6-P.js → proxy-BMJL0Qog.js} +0 -0
  1157. /package/dist/{proxy-DpNv2cSV.js → proxy-D-qGA1vm.js} +0 -0
  1158. /package/dist/{pw-ai-state-CGfLv6nV.js → pw-ai-state--TxTVwRW.js} +0 -0
  1159. /package/dist/{pw-ai-state-Dynx20hr.js → pw-ai-state-CwXeO5d0.js} +0 -0
  1160. /package/dist/{redact-Dx1Fue21.js → redact-BW8tobyp.js} +0 -0
  1161. /package/dist/{redact-identifier-BTIWtaa-.js → redact-identifier-BJOQDEj0.js} +0 -0
  1162. /package/dist/{redact-identifier-CAagcfWA.js → redact-identifier-Bv5SUUw-.js} +0 -0
  1163. /package/dist/{remoteclaw-root-C2HV2VeC.js → remoteclaw-root-BfPjgewe.js} +0 -0
  1164. /package/dist/{remoteclaw-root-DybYl8PL.js → remoteclaw-root-E4-hmb4E.js} +0 -0
  1165. /package/dist/{render-CCLsW6Lz.js → render-BhKzKdV0.js} +0 -0
  1166. /package/dist/{render-uf6PvGMV.js → render-e7fENCYH.js} +0 -0
  1167. /package/dist/{retry-DnqPAqWp.js → retry-BWv_fy4u.js} +0 -0
  1168. /package/dist/{runtime-guard-U-ewY_QH.js → runtime-guard-Bhx-pb8_.js} +0 -0
  1169. /package/dist/{secret-equal-BbHdTtqY.js → secret-equal-D6AoXne1.js} +0 -0
  1170. /package/dist/{secret-equal-CXJEZiWb.js → secret-equal-DLnUuWM3.js} +0 -0
  1171. /package/dist/{secure-random-CS2mSdTn.js → secure-random-CJtykx_p.js} +0 -0
  1172. /package/dist/{secure-random-_dzDDlFo.js → secure-random-CRVHgtmO.js} +0 -0
  1173. /package/dist/{session-key-5YLnn_qf.js → session-key-BF-9YzxC.js} +0 -0
  1174. /package/dist/{session-key-C2n-VILA.js → session-key-CgKWfjoZ.js} +0 -0
  1175. /package/dist/{stagger-BXv_apuy.js → stagger--wvODnNe.js} +0 -0
  1176. /package/dist/{stagger-MI9gd2rQ.js → stagger-BLmTO4cK.js} +0 -0
  1177. /package/dist/{status-BmtCS3T1.js → status-1zVD-Clq.js} +0 -0
  1178. /package/dist/{status-BrwHRn2B.js → status-BtRY0nXQ.js} +0 -0
  1179. /package/dist/{strip-inbound-meta-DjKcSFaW.js → strip-inbound-meta-zmUXypSS.js} +0 -0
  1180. /package/dist/{strip-inbound-meta-jy3bkUab.js → strip-inbound-meta-zqtN9FTK.js} +0 -0
  1181. /package/dist/{table-C1rdyYl9.js → table-On3hkCqi.js} +0 -0
  1182. /package/dist/{target-errors-BDpPcwh5.js → target-errors-DJVRKFcU.js} +0 -0
  1183. /package/dist/{target-errors-DdIAPcMM.js → target-errors-GZXDqlUu.js} +0 -0
  1184. /package/dist/{targets-C-2xwh9f.js → targets-B46m7u5J.js} +0 -0
  1185. /package/dist/{targets-D-qLBpTA.js → targets-B_d_1z3N.js} +0 -0
  1186. /package/dist/{targets-UncQvCVs.js → targets-D01MJGnh.js} +0 -0
  1187. /package/dist/{targets-BMenhVHg.js → targets-D3r6Zgic.js} +0 -0
  1188. /package/dist/{text-format-BQ3z_OXA.js → text-format-DarxU3JH.js} +0 -0
  1189. /package/dist/{text-format-oWqzVmah.js → text-format-Ds92M9UT.js} +0 -0
  1190. /package/dist/{tokens-B-jmvNR9.js → tokens-Dw7ZdYwT.js} +0 -0
  1191. /package/dist/{usage-BdhBT0Vz.js → usage-BIzKZ5dT.js} +0 -0
  1192. /package/dist/{usage-BtQcAnf6.js → usage-BvZOzIC7.js} +0 -0
  1193. /package/dist/{usage-format-C3mNLfhI.js → usage-format-CmniSPCG.js} +0 -0
  1194. /package/dist/{usage-format-DAaPzr_z.js → usage-format-D_KQYQ-w.js} +0 -0
  1195. /package/dist/{widearea-dns-CsmBVbez.js → widearea-dns-D01FFYZ8.js} +0 -0
  1196. /package/dist/{workspace-BzPeZDew.js → workspace-BJCKO8Ns.js} +0 -0
  1197. /package/dist/{workspace-DkGLVfOl.js → workspace-BisvA9oA.js} +0 -0
  1198. /package/dist/{wsl-B_sPlzWw.js → wsl-PDLKeX04.js} +0 -0
  1199. /package/dist/{wsl-BCnYV9O0.js → wsl-kFaeW76c.js} +0 -0
@@ -0,0 +1,1732 @@
1
+ import { H as CONFIG_DIR, o as createSubsystemLogger } from "./entry.js";
2
+ import { i as loadConfig } from "./config-BTH7fB_v.js";
3
+ import { n as isLoopbackAddress, p as rawDataToString, r as isLoopbackHost } from "./net-DSkFMHJ8.js";
4
+ import { i as resolvePinnedHostnameWithPolicy } from "./ssrf-CJIdPXuS.js";
5
+ import { t as ensurePortAvailable } from "./ports-gRBeuUtp.js";
6
+ import { c as DEFAULT_REMOTECLAW_BROWSER_PROFILE_NAME, o as DEFAULT_REMOTECLAW_BROWSER_COLOR } from "./constants-DoYLsBmv.js";
7
+ import { execFileSync, spawn } from "node:child_process";
8
+ import os from "node:os";
9
+ import path from "node:path";
10
+ import fs from "node:fs";
11
+ import { createHmac } from "node:crypto";
12
+ import WebSocket, { WebSocketServer } from "ws";
13
+ import { createServer } from "node:http";
14
+
15
+ //#region src/browser/extension-relay-auth.ts
16
+ const RELAY_TOKEN_CONTEXT = "remoteclaw-extension-relay-v1";
17
+ const DEFAULT_RELAY_PROBE_TIMEOUT_MS = 500;
18
+ const REMOTECLAW_RELAY_BROWSER = "RemoteClaw/extension-relay";
19
+ function resolveGatewayAuthToken() {
20
+ const envToken = process.env.REMOTECLAW_GATEWAY_TOKEN?.trim() || process.env.CLAWDBOT_GATEWAY_TOKEN?.trim();
21
+ if (envToken) return envToken;
22
+ try {
23
+ const configToken = loadConfig().gateway?.auth?.token?.trim();
24
+ if (configToken) return configToken;
25
+ } catch {}
26
+ return null;
27
+ }
28
+ function deriveRelayAuthToken(gatewayToken, port) {
29
+ return createHmac("sha256", gatewayToken).update(`${RELAY_TOKEN_CONTEXT}:${port}`).digest("hex");
30
+ }
31
+ function resolveRelayAcceptedTokensForPort(port) {
32
+ const gatewayToken = resolveGatewayAuthToken();
33
+ if (!gatewayToken) throw new Error("extension relay requires gateway auth token (set gateway.auth.token or REMOTECLAW_GATEWAY_TOKEN)");
34
+ const relayToken = deriveRelayAuthToken(gatewayToken, port);
35
+ if (relayToken === gatewayToken) return [relayToken];
36
+ return [relayToken, gatewayToken];
37
+ }
38
+ function resolveRelayAuthTokenForPort(port) {
39
+ return resolveRelayAcceptedTokensForPort(port)[0];
40
+ }
41
+ async function probeAuthenticatedRemoteClawRelay(params) {
42
+ const ctrl = new AbortController();
43
+ const timer = setTimeout(() => ctrl.abort(), params.timeoutMs ?? DEFAULT_RELAY_PROBE_TIMEOUT_MS);
44
+ try {
45
+ const versionUrl = new URL("/json/version", `${params.baseUrl}/`).toString();
46
+ const res = await fetch(versionUrl, {
47
+ signal: ctrl.signal,
48
+ headers: { [params.relayAuthHeader]: params.relayAuthToken }
49
+ });
50
+ if (!res.ok) return false;
51
+ const body = await res.json();
52
+ return (typeof body?.Browser === "string" ? body.Browser.trim() : "") === REMOTECLAW_RELAY_BROWSER;
53
+ } catch {
54
+ return false;
55
+ } finally {
56
+ clearTimeout(timer);
57
+ }
58
+ }
59
+
60
+ //#endregion
61
+ //#region src/browser/extension-relay.ts
62
+ const RELAY_AUTH_HEADER = "x-remoteclaw-relay-token";
63
+ function headerValue(value) {
64
+ if (!value) return;
65
+ if (Array.isArray(value)) return value[0];
66
+ return value;
67
+ }
68
+ function getHeader(req, name) {
69
+ return headerValue(req.headers[name.toLowerCase()]);
70
+ }
71
+ function getRelayAuthTokenFromRequest(req, url) {
72
+ const headerToken = getHeader(req, RELAY_AUTH_HEADER)?.trim();
73
+ if (headerToken) return headerToken;
74
+ const queryToken = url?.searchParams.get("token")?.trim();
75
+ if (queryToken) return queryToken;
76
+ }
77
+ function parseUrlPort(parsed) {
78
+ const port = parsed.port?.trim() !== "" ? Number(parsed.port) : parsed.protocol === "https:" ? 443 : 80;
79
+ if (!Number.isFinite(port) || port <= 0 || port > 65535) return null;
80
+ return port;
81
+ }
82
+ function parseBaseUrl(raw) {
83
+ const parsed = new URL(raw.trim().replace(/\/$/, ""));
84
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") throw new Error(`extension relay cdpUrl must be http(s), got ${parsed.protocol}`);
85
+ const host = parsed.hostname;
86
+ const port = parseUrlPort(parsed);
87
+ if (!port) throw new Error(`extension relay cdpUrl has invalid port: ${parsed.port || "(empty)"}`);
88
+ return {
89
+ host,
90
+ port,
91
+ baseUrl: parsed.toString().replace(/\/$/, "")
92
+ };
93
+ }
94
+ function text(res, status, bodyText) {
95
+ const body = Buffer.from(bodyText);
96
+ res.write(`HTTP/1.1 ${status} ${status === 200 ? "OK" : "ERR"}\r\nContent-Type: text/plain; charset=utf-8\r
97
+ Content-Length: ${body.length}\r\nConnection: close\r
98
+ \r
99
+ `);
100
+ res.write(body);
101
+ res.end();
102
+ }
103
+ function rejectUpgrade(socket, status, bodyText) {
104
+ text(socket, status, bodyText);
105
+ try {
106
+ socket.destroy();
107
+ } catch {}
108
+ }
109
+ const relayRuntimeByPort = /* @__PURE__ */ new Map();
110
+ function isAddrInUseError(err) {
111
+ return typeof err === "object" && err !== null && "code" in err && err.code === "EADDRINUSE";
112
+ }
113
+ function relayAuthTokenForUrl(url) {
114
+ try {
115
+ const parsed = new URL(url);
116
+ if (!isLoopbackHost(parsed.hostname)) return null;
117
+ const port = parseUrlPort(parsed);
118
+ if (!port) return null;
119
+ return relayRuntimeByPort.get(port)?.relayAuthToken ?? null;
120
+ } catch {
121
+ return null;
122
+ }
123
+ }
124
+ function getChromeExtensionRelayAuthHeaders(url) {
125
+ const token = relayAuthTokenForUrl(url);
126
+ if (!token) return {};
127
+ return { [RELAY_AUTH_HEADER]: token };
128
+ }
129
+ async function ensureChromeExtensionRelayServer(opts) {
130
+ const info = parseBaseUrl(opts.cdpUrl);
131
+ if (!isLoopbackHost(info.host)) throw new Error(`extension relay requires loopback cdpUrl host (got ${info.host})`);
132
+ const existing = relayRuntimeByPort.get(info.port);
133
+ if (existing) return existing.server;
134
+ const relayAuthToken = resolveRelayAuthTokenForPort(info.port);
135
+ const relayAuthTokens = new Set(resolveRelayAcceptedTokensForPort(info.port));
136
+ let extensionWs = null;
137
+ const cdpClients = /* @__PURE__ */ new Set();
138
+ const connectedTargets = /* @__PURE__ */ new Map();
139
+ const extensionConnected = () => extensionWs?.readyState === WebSocket.OPEN;
140
+ const pendingExtension = /* @__PURE__ */ new Map();
141
+ let nextExtensionId = 1;
142
+ const sendToExtension = async (payload) => {
143
+ const ws = extensionWs;
144
+ if (!ws || ws.readyState !== WebSocket.OPEN) throw new Error("Chrome extension not connected");
145
+ ws.send(JSON.stringify(payload));
146
+ return await new Promise((resolve, reject) => {
147
+ const timer = setTimeout(() => {
148
+ pendingExtension.delete(payload.id);
149
+ reject(/* @__PURE__ */ new Error(`extension request timeout: ${payload.params.method}`));
150
+ }, 3e4);
151
+ pendingExtension.set(payload.id, {
152
+ resolve,
153
+ reject,
154
+ timer
155
+ });
156
+ });
157
+ };
158
+ const broadcastToCdpClients = (evt) => {
159
+ const msg = JSON.stringify(evt);
160
+ for (const ws of cdpClients) {
161
+ if (ws.readyState !== WebSocket.OPEN) continue;
162
+ ws.send(msg);
163
+ }
164
+ };
165
+ const sendResponseToCdp = (ws, res) => {
166
+ if (ws.readyState !== WebSocket.OPEN) return;
167
+ ws.send(JSON.stringify(res));
168
+ };
169
+ const ensureTargetEventsForClient = (ws, mode) => {
170
+ for (const target of connectedTargets.values()) if (mode === "autoAttach") ws.send(JSON.stringify({
171
+ method: "Target.attachedToTarget",
172
+ params: {
173
+ sessionId: target.sessionId,
174
+ targetInfo: {
175
+ ...target.targetInfo,
176
+ attached: true
177
+ },
178
+ waitingForDebugger: false
179
+ }
180
+ }));
181
+ else ws.send(JSON.stringify({
182
+ method: "Target.targetCreated",
183
+ params: { targetInfo: {
184
+ ...target.targetInfo,
185
+ attached: true
186
+ } }
187
+ }));
188
+ };
189
+ const routeCdpCommand = async (cmd) => {
190
+ switch (cmd.method) {
191
+ case "Browser.getVersion": return {
192
+ protocolVersion: "1.3",
193
+ product: "Chrome/RemoteClaw-Extension-Relay",
194
+ revision: "0",
195
+ userAgent: "RemoteClaw-Extension-Relay",
196
+ jsVersion: "V8"
197
+ };
198
+ case "Browser.setDownloadBehavior": return {};
199
+ case "Target.setAutoAttach":
200
+ case "Target.setDiscoverTargets": return {};
201
+ case "Target.getTargets": return { targetInfos: Array.from(connectedTargets.values()).map((t) => ({
202
+ ...t.targetInfo,
203
+ attached: true
204
+ })) };
205
+ case "Target.getTargetInfo": {
206
+ const params = cmd.params ?? {};
207
+ const targetId = typeof params.targetId === "string" ? params.targetId : void 0;
208
+ if (targetId) {
209
+ for (const t of connectedTargets.values()) if (t.targetId === targetId) return { targetInfo: t.targetInfo };
210
+ }
211
+ if (cmd.sessionId && connectedTargets.has(cmd.sessionId)) {
212
+ const t = connectedTargets.get(cmd.sessionId);
213
+ if (t) return { targetInfo: t.targetInfo };
214
+ }
215
+ return { targetInfo: Array.from(connectedTargets.values())[0]?.targetInfo };
216
+ }
217
+ case "Target.attachToTarget": {
218
+ const params = cmd.params ?? {};
219
+ const targetId = typeof params.targetId === "string" ? params.targetId : void 0;
220
+ if (!targetId) throw new Error("targetId required");
221
+ for (const t of connectedTargets.values()) if (t.targetId === targetId) return { sessionId: t.sessionId };
222
+ throw new Error("target not found");
223
+ }
224
+ default: return await sendToExtension({
225
+ id: nextExtensionId++,
226
+ method: "forwardCDPCommand",
227
+ params: {
228
+ method: cmd.method,
229
+ sessionId: cmd.sessionId,
230
+ params: cmd.params
231
+ }
232
+ });
233
+ }
234
+ };
235
+ const server = createServer((req, res) => {
236
+ const path = new URL(req.url ?? "/", info.baseUrl).pathname;
237
+ if (path.startsWith("/json")) {
238
+ const token = getHeader(req, RELAY_AUTH_HEADER)?.trim();
239
+ if (!token || !relayAuthTokens.has(token)) {
240
+ res.writeHead(401);
241
+ res.end("Unauthorized");
242
+ return;
243
+ }
244
+ }
245
+ if (req.method === "HEAD" && path === "/") {
246
+ res.writeHead(200);
247
+ res.end();
248
+ return;
249
+ }
250
+ if (path === "/") {
251
+ res.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" });
252
+ res.end("OK");
253
+ return;
254
+ }
255
+ if (path === "/extension/status") {
256
+ res.writeHead(200, { "Content-Type": "application/json" });
257
+ res.end(JSON.stringify({ connected: extensionConnected() }));
258
+ return;
259
+ }
260
+ const cdpWsUrl = `${`ws://${req.headers.host?.trim() || `${info.host}:${info.port}`}`}/cdp`;
261
+ if ((path === "/json/version" || path === "/json/version/") && (req.method === "GET" || req.method === "PUT")) {
262
+ const payload = {
263
+ Browser: "RemoteClaw/extension-relay",
264
+ "Protocol-Version": "1.3"
265
+ };
266
+ if (extensionConnected()) payload.webSocketDebuggerUrl = cdpWsUrl;
267
+ res.writeHead(200, { "Content-Type": "application/json" });
268
+ res.end(JSON.stringify(payload));
269
+ return;
270
+ }
271
+ if (new Set([
272
+ "/json",
273
+ "/json/",
274
+ "/json/list",
275
+ "/json/list/"
276
+ ]).has(path) && (req.method === "GET" || req.method === "PUT")) {
277
+ const list = Array.from(connectedTargets.values()).map((t) => ({
278
+ id: t.targetId,
279
+ type: t.targetInfo.type ?? "page",
280
+ title: t.targetInfo.title ?? "",
281
+ description: t.targetInfo.title ?? "",
282
+ url: t.targetInfo.url ?? "",
283
+ webSocketDebuggerUrl: cdpWsUrl,
284
+ devtoolsFrontendUrl: `/devtools/inspector.html?ws=${cdpWsUrl.replace("ws://", "")}`
285
+ }));
286
+ res.writeHead(200, { "Content-Type": "application/json" });
287
+ res.end(JSON.stringify(list));
288
+ return;
289
+ }
290
+ const handleTargetActionRoute = (match, cdpMethod) => {
291
+ if (!match || req.method !== "GET" && req.method !== "PUT") return false;
292
+ const targetId = decodeURIComponent(match[1] ?? "").trim();
293
+ if (!targetId) {
294
+ res.writeHead(400);
295
+ res.end("targetId required");
296
+ return true;
297
+ }
298
+ (async () => {
299
+ try {
300
+ await sendToExtension({
301
+ id: nextExtensionId++,
302
+ method: "forwardCDPCommand",
303
+ params: {
304
+ method: cdpMethod,
305
+ params: { targetId }
306
+ }
307
+ });
308
+ } catch {}
309
+ })();
310
+ res.writeHead(200);
311
+ res.end("OK");
312
+ return true;
313
+ };
314
+ if (handleTargetActionRoute(path.match(/^\/json\/activate\/(.+)$/), "Target.activateTarget")) return;
315
+ if (handleTargetActionRoute(path.match(/^\/json\/close\/(.+)$/), "Target.closeTarget")) return;
316
+ res.writeHead(404);
317
+ res.end("not found");
318
+ });
319
+ const wssExtension = new WebSocketServer({ noServer: true });
320
+ const wssCdp = new WebSocketServer({ noServer: true });
321
+ server.on("upgrade", (req, socket, head) => {
322
+ const url = new URL(req.url ?? "/", info.baseUrl);
323
+ const pathname = url.pathname;
324
+ const remote = req.socket.remoteAddress;
325
+ if (!isLoopbackAddress(remote)) {
326
+ rejectUpgrade(socket, 403, "Forbidden");
327
+ return;
328
+ }
329
+ const origin = headerValue(req.headers.origin);
330
+ if (origin && !origin.startsWith("chrome-extension://")) {
331
+ rejectUpgrade(socket, 403, "Forbidden: invalid origin");
332
+ return;
333
+ }
334
+ if (pathname === "/extension") {
335
+ const token = getRelayAuthTokenFromRequest(req, url);
336
+ if (!token || !relayAuthTokens.has(token)) {
337
+ rejectUpgrade(socket, 401, "Unauthorized");
338
+ return;
339
+ }
340
+ if (extensionConnected()) {
341
+ rejectUpgrade(socket, 409, "Extension already connected");
342
+ return;
343
+ }
344
+ if (extensionWs && extensionWs.readyState !== WebSocket.OPEN) {
345
+ try {
346
+ extensionWs.terminate();
347
+ } catch {}
348
+ extensionWs = null;
349
+ }
350
+ wssExtension.handleUpgrade(req, socket, head, (ws) => {
351
+ wssExtension.emit("connection", ws, req);
352
+ });
353
+ return;
354
+ }
355
+ if (pathname === "/cdp") {
356
+ const token = getRelayAuthTokenFromRequest(req, url);
357
+ if (!token || !relayAuthTokens.has(token)) {
358
+ rejectUpgrade(socket, 401, "Unauthorized");
359
+ return;
360
+ }
361
+ if (!extensionConnected()) {
362
+ rejectUpgrade(socket, 503, "Extension not connected");
363
+ return;
364
+ }
365
+ wssCdp.handleUpgrade(req, socket, head, (ws) => {
366
+ wssCdp.emit("connection", ws, req);
367
+ });
368
+ return;
369
+ }
370
+ rejectUpgrade(socket, 404, "Not Found");
371
+ });
372
+ wssExtension.on("connection", (ws) => {
373
+ extensionWs = ws;
374
+ const ping = setInterval(() => {
375
+ if (ws.readyState !== WebSocket.OPEN) return;
376
+ ws.send(JSON.stringify({ method: "ping" }));
377
+ }, 5e3);
378
+ ws.on("message", (data) => {
379
+ if (extensionWs !== ws) return;
380
+ let parsed = null;
381
+ try {
382
+ parsed = JSON.parse(rawDataToString(data));
383
+ } catch {
384
+ return;
385
+ }
386
+ if (parsed && typeof parsed === "object" && "id" in parsed && typeof parsed.id === "number") {
387
+ const pending = pendingExtension.get(parsed.id);
388
+ if (!pending) return;
389
+ pendingExtension.delete(parsed.id);
390
+ clearTimeout(pending.timer);
391
+ if ("error" in parsed && typeof parsed.error === "string" && parsed.error.trim()) pending.reject(new Error(parsed.error));
392
+ else pending.resolve(parsed.result);
393
+ return;
394
+ }
395
+ if (parsed && typeof parsed === "object" && "method" in parsed) {
396
+ if (parsed.method === "pong") return;
397
+ if (parsed.method !== "forwardCDPEvent") return;
398
+ const evt = parsed;
399
+ const method = evt.params?.method;
400
+ const params = evt.params?.params;
401
+ const sessionId = evt.params?.sessionId;
402
+ if (!method || typeof method !== "string") return;
403
+ if (method === "Target.attachedToTarget") {
404
+ const attached = params ?? {};
405
+ if ((attached?.targetInfo?.type ?? "page") !== "page") return;
406
+ if (attached?.sessionId && attached?.targetInfo?.targetId) {
407
+ const prev = connectedTargets.get(attached.sessionId);
408
+ const nextTargetId = attached.targetInfo.targetId;
409
+ const prevTargetId = prev?.targetId;
410
+ const changedTarget = Boolean(prev && prevTargetId && prevTargetId !== nextTargetId);
411
+ connectedTargets.set(attached.sessionId, {
412
+ sessionId: attached.sessionId,
413
+ targetId: nextTargetId,
414
+ targetInfo: attached.targetInfo
415
+ });
416
+ if (changedTarget && prevTargetId) broadcastToCdpClients({
417
+ method: "Target.detachedFromTarget",
418
+ params: {
419
+ sessionId: attached.sessionId,
420
+ targetId: prevTargetId
421
+ },
422
+ sessionId: attached.sessionId
423
+ });
424
+ if (!prev || changedTarget) broadcastToCdpClients({
425
+ method,
426
+ params,
427
+ sessionId
428
+ });
429
+ return;
430
+ }
431
+ }
432
+ if (method === "Target.detachedFromTarget") {
433
+ const detached = params ?? {};
434
+ if (detached?.sessionId) connectedTargets.delete(detached.sessionId);
435
+ broadcastToCdpClients({
436
+ method,
437
+ params,
438
+ sessionId
439
+ });
440
+ return;
441
+ }
442
+ if (method === "Target.targetInfoChanged") {
443
+ const targetInfo = (params ?? {})?.targetInfo;
444
+ const targetId = targetInfo?.targetId;
445
+ if (targetId && (targetInfo?.type ?? "page") === "page") for (const [sid, target] of connectedTargets) {
446
+ if (target.targetId !== targetId) continue;
447
+ connectedTargets.set(sid, {
448
+ ...target,
449
+ targetInfo: {
450
+ ...target.targetInfo,
451
+ ...targetInfo
452
+ }
453
+ });
454
+ }
455
+ }
456
+ broadcastToCdpClients({
457
+ method,
458
+ params,
459
+ sessionId
460
+ });
461
+ }
462
+ });
463
+ ws.on("close", () => {
464
+ clearInterval(ping);
465
+ if (extensionWs !== ws) return;
466
+ extensionWs = null;
467
+ for (const [, pending] of pendingExtension) {
468
+ clearTimeout(pending.timer);
469
+ pending.reject(/* @__PURE__ */ new Error("extension disconnected"));
470
+ }
471
+ pendingExtension.clear();
472
+ connectedTargets.clear();
473
+ for (const client of cdpClients) try {
474
+ client.close(1011, "extension disconnected");
475
+ } catch {}
476
+ cdpClients.clear();
477
+ });
478
+ });
479
+ wssCdp.on("connection", (ws) => {
480
+ cdpClients.add(ws);
481
+ ws.on("message", async (data) => {
482
+ let cmd = null;
483
+ try {
484
+ cmd = JSON.parse(rawDataToString(data));
485
+ } catch {
486
+ return;
487
+ }
488
+ if (!cmd || typeof cmd !== "object") return;
489
+ if (typeof cmd.id !== "number" || typeof cmd.method !== "string") return;
490
+ if (!extensionConnected()) {
491
+ sendResponseToCdp(ws, {
492
+ id: cmd.id,
493
+ sessionId: cmd.sessionId,
494
+ error: { message: "Extension not connected" }
495
+ });
496
+ return;
497
+ }
498
+ try {
499
+ const result = await routeCdpCommand(cmd);
500
+ if (cmd.method === "Target.setAutoAttach" && !cmd.sessionId) ensureTargetEventsForClient(ws, "autoAttach");
501
+ if (cmd.method === "Target.setDiscoverTargets") {
502
+ if ((cmd.params ?? {}).discover === true) ensureTargetEventsForClient(ws, "discover");
503
+ }
504
+ if (cmd.method === "Target.attachToTarget") {
505
+ const params = cmd.params ?? {};
506
+ const targetId = typeof params.targetId === "string" ? params.targetId : void 0;
507
+ if (targetId) {
508
+ const target = Array.from(connectedTargets.values()).find((t) => t.targetId === targetId);
509
+ if (target) ws.send(JSON.stringify({
510
+ method: "Target.attachedToTarget",
511
+ params: {
512
+ sessionId: target.sessionId,
513
+ targetInfo: {
514
+ ...target.targetInfo,
515
+ attached: true
516
+ },
517
+ waitingForDebugger: false
518
+ }
519
+ }));
520
+ }
521
+ }
522
+ sendResponseToCdp(ws, {
523
+ id: cmd.id,
524
+ sessionId: cmd.sessionId,
525
+ result
526
+ });
527
+ } catch (err) {
528
+ sendResponseToCdp(ws, {
529
+ id: cmd.id,
530
+ sessionId: cmd.sessionId,
531
+ error: { message: err instanceof Error ? err.message : String(err) }
532
+ });
533
+ }
534
+ });
535
+ ws.on("close", () => {
536
+ cdpClients.delete(ws);
537
+ });
538
+ });
539
+ try {
540
+ await new Promise((resolve, reject) => {
541
+ server.listen(info.port, info.host, () => resolve());
542
+ server.once("error", reject);
543
+ });
544
+ } catch (err) {
545
+ if (isAddrInUseError(err) && await probeAuthenticatedRemoteClawRelay({
546
+ baseUrl: info.baseUrl,
547
+ relayAuthHeader: RELAY_AUTH_HEADER,
548
+ relayAuthToken
549
+ })) {
550
+ const existingRelay = {
551
+ host: info.host,
552
+ port: info.port,
553
+ baseUrl: info.baseUrl,
554
+ cdpWsUrl: `ws://${info.host}:${info.port}/cdp`,
555
+ extensionConnected: () => false,
556
+ stop: async () => {
557
+ relayRuntimeByPort.delete(info.port);
558
+ }
559
+ };
560
+ relayRuntimeByPort.set(info.port, {
561
+ server: existingRelay,
562
+ relayAuthToken
563
+ });
564
+ return existingRelay;
565
+ }
566
+ throw err;
567
+ }
568
+ const port = server.address()?.port ?? info.port;
569
+ const host = info.host;
570
+ const relay = {
571
+ host,
572
+ port,
573
+ baseUrl: `${new URL(info.baseUrl).protocol}//${host}:${port}`,
574
+ cdpWsUrl: `ws://${host}:${port}/cdp`,
575
+ extensionConnected,
576
+ stop: async () => {
577
+ relayRuntimeByPort.delete(port);
578
+ try {
579
+ extensionWs?.close(1001, "server stopping");
580
+ } catch {}
581
+ for (const ws of cdpClients) try {
582
+ ws.close(1001, "server stopping");
583
+ } catch {}
584
+ await new Promise((resolve) => {
585
+ server.close(() => resolve());
586
+ });
587
+ wssExtension.close();
588
+ wssCdp.close();
589
+ }
590
+ };
591
+ relayRuntimeByPort.set(port, {
592
+ server: relay,
593
+ relayAuthToken
594
+ });
595
+ return relay;
596
+ }
597
+ async function stopChromeExtensionRelayServer(opts) {
598
+ const info = parseBaseUrl(opts.cdpUrl);
599
+ const existing = relayRuntimeByPort.get(info.port);
600
+ if (!existing) return false;
601
+ await existing.server.stop();
602
+ return true;
603
+ }
604
+
605
+ //#endregion
606
+ //#region src/browser/cdp.helpers.ts
607
+ function getHeadersWithAuth(url, headers = {}) {
608
+ const mergedHeaders = {
609
+ ...getChromeExtensionRelayAuthHeaders(url),
610
+ ...headers
611
+ };
612
+ try {
613
+ const parsed = new URL(url);
614
+ if (Object.keys(mergedHeaders).some((key) => key.toLowerCase() === "authorization")) return mergedHeaders;
615
+ if (parsed.username || parsed.password) {
616
+ const auth = Buffer.from(`${parsed.username}:${parsed.password}`).toString("base64");
617
+ return {
618
+ ...mergedHeaders,
619
+ Authorization: `Basic ${auth}`
620
+ };
621
+ }
622
+ } catch {}
623
+ return mergedHeaders;
624
+ }
625
+ function appendCdpPath(cdpUrl, path) {
626
+ const url = new URL(cdpUrl);
627
+ url.pathname = `${url.pathname.replace(/\/$/, "")}${path.startsWith("/") ? path : `/${path}`}`;
628
+ return url.toString();
629
+ }
630
+ function createCdpSender(ws) {
631
+ let nextId = 1;
632
+ const pending = /* @__PURE__ */ new Map();
633
+ const send = (method, params, sessionId) => {
634
+ const id = nextId++;
635
+ const msg = {
636
+ id,
637
+ method,
638
+ params,
639
+ sessionId
640
+ };
641
+ ws.send(JSON.stringify(msg));
642
+ return new Promise((resolve, reject) => {
643
+ pending.set(id, {
644
+ resolve,
645
+ reject
646
+ });
647
+ });
648
+ };
649
+ const closeWithError = (err) => {
650
+ for (const [, p] of pending) p.reject(err);
651
+ pending.clear();
652
+ try {
653
+ ws.close();
654
+ } catch {}
655
+ };
656
+ ws.on("error", (err) => {
657
+ closeWithError(err instanceof Error ? err : new Error(String(err)));
658
+ });
659
+ ws.on("message", (data) => {
660
+ try {
661
+ const parsed = JSON.parse(rawDataToString(data));
662
+ if (typeof parsed.id !== "number") return;
663
+ const p = pending.get(parsed.id);
664
+ if (!p) return;
665
+ pending.delete(parsed.id);
666
+ if (parsed.error?.message) {
667
+ p.reject(new Error(parsed.error.message));
668
+ return;
669
+ }
670
+ p.resolve(parsed.result);
671
+ } catch {}
672
+ });
673
+ ws.on("close", () => {
674
+ closeWithError(/* @__PURE__ */ new Error("CDP socket closed"));
675
+ });
676
+ return {
677
+ send,
678
+ closeWithError
679
+ };
680
+ }
681
+ async function fetchJson(url, timeoutMs = 1500, init) {
682
+ return await (await fetchChecked(url, timeoutMs, init)).json();
683
+ }
684
+ async function fetchChecked(url, timeoutMs = 1500, init) {
685
+ const ctrl = new AbortController();
686
+ const t = setTimeout(ctrl.abort.bind(ctrl), timeoutMs);
687
+ try {
688
+ const headers = getHeadersWithAuth(url, init?.headers || {});
689
+ const res = await fetch(url, {
690
+ ...init,
691
+ headers,
692
+ signal: ctrl.signal
693
+ });
694
+ if (!res.ok) throw new Error(`HTTP ${res.status}`);
695
+ return res;
696
+ } finally {
697
+ clearTimeout(t);
698
+ }
699
+ }
700
+ async function fetchOk(url, timeoutMs = 1500, init) {
701
+ await fetchChecked(url, timeoutMs, init);
702
+ }
703
+ async function withCdpSocket(wsUrl, fn, opts) {
704
+ const headers = getHeadersWithAuth(wsUrl, opts?.headers ?? {});
705
+ const ws = new WebSocket(wsUrl, {
706
+ handshakeTimeout: typeof opts?.handshakeTimeoutMs === "number" && Number.isFinite(opts.handshakeTimeoutMs) ? Math.max(1, Math.floor(opts.handshakeTimeoutMs)) : 5e3,
707
+ ...Object.keys(headers).length ? { headers } : {}
708
+ });
709
+ const { send, closeWithError } = createCdpSender(ws);
710
+ const openPromise = new Promise((resolve, reject) => {
711
+ ws.once("open", () => resolve());
712
+ ws.once("error", (err) => reject(err));
713
+ ws.once("close", () => reject(/* @__PURE__ */ new Error("CDP socket closed")));
714
+ });
715
+ try {
716
+ await openPromise;
717
+ } catch (err) {
718
+ closeWithError(err instanceof Error ? err : new Error(String(err)));
719
+ throw err;
720
+ }
721
+ try {
722
+ return await fn(send);
723
+ } catch (err) {
724
+ closeWithError(err instanceof Error ? err : new Error(String(err)));
725
+ throw err;
726
+ } finally {
727
+ try {
728
+ ws.close();
729
+ } catch {}
730
+ }
731
+ }
732
+
733
+ //#endregion
734
+ //#region src/browser/navigation-guard.ts
735
+ const NETWORK_NAVIGATION_PROTOCOLS = new Set(["http:", "https:"]);
736
+ const SAFE_NON_NETWORK_URLS = new Set(["about:blank"]);
737
+ function isAllowedNonNetworkNavigationUrl(parsed) {
738
+ return SAFE_NON_NETWORK_URLS.has(parsed.href);
739
+ }
740
+ var InvalidBrowserNavigationUrlError = class extends Error {
741
+ constructor(message) {
742
+ super(message);
743
+ this.name = "InvalidBrowserNavigationUrlError";
744
+ }
745
+ };
746
+ function withBrowserNavigationPolicy(ssrfPolicy) {
747
+ return ssrfPolicy ? { ssrfPolicy } : {};
748
+ }
749
+ async function assertBrowserNavigationAllowed(opts) {
750
+ const rawUrl = String(opts.url ?? "").trim();
751
+ if (!rawUrl) throw new InvalidBrowserNavigationUrlError("url is required");
752
+ let parsed;
753
+ try {
754
+ parsed = new URL(rawUrl);
755
+ } catch {
756
+ throw new InvalidBrowserNavigationUrlError(`Invalid URL: ${rawUrl}`);
757
+ }
758
+ if (!NETWORK_NAVIGATION_PROTOCOLS.has(parsed.protocol)) {
759
+ if (isAllowedNonNetworkNavigationUrl(parsed)) return;
760
+ throw new InvalidBrowserNavigationUrlError(`Navigation blocked: unsupported protocol "${parsed.protocol}"`);
761
+ }
762
+ await resolvePinnedHostnameWithPolicy(parsed.hostname, {
763
+ lookupFn: opts.lookupFn,
764
+ policy: opts.ssrfPolicy
765
+ });
766
+ }
767
+ /**
768
+ * Best-effort post-navigation guard for final page URLs.
769
+ * Only validates network URLs (http/https) and about:blank to avoid false
770
+ * positives on browser-internal error pages (e.g. chrome-error://).
771
+ */
772
+ async function assertBrowserNavigationResultAllowed(opts) {
773
+ const rawUrl = String(opts.url ?? "").trim();
774
+ if (!rawUrl) return;
775
+ let parsed;
776
+ try {
777
+ parsed = new URL(rawUrl);
778
+ } catch {
779
+ return;
780
+ }
781
+ if (NETWORK_NAVIGATION_PROTOCOLS.has(parsed.protocol) || isAllowedNonNetworkNavigationUrl(parsed)) await assertBrowserNavigationAllowed(opts);
782
+ }
783
+
784
+ //#endregion
785
+ //#region src/browser/cdp.ts
786
+ function normalizeCdpWsUrl(wsUrl, cdpUrl) {
787
+ const ws = new URL(wsUrl);
788
+ const cdp = new URL(cdpUrl);
789
+ if (isLoopbackHost(ws.hostname) && !isLoopbackHost(cdp.hostname)) {
790
+ ws.hostname = cdp.hostname;
791
+ const cdpPort = cdp.port || (cdp.protocol === "https:" ? "443" : "80");
792
+ if (cdpPort) ws.port = cdpPort;
793
+ ws.protocol = cdp.protocol === "https:" ? "wss:" : "ws:";
794
+ }
795
+ if (cdp.protocol === "https:" && ws.protocol === "ws:") ws.protocol = "wss:";
796
+ if (!ws.username && !ws.password && (cdp.username || cdp.password)) {
797
+ ws.username = cdp.username;
798
+ ws.password = cdp.password;
799
+ }
800
+ for (const [key, value] of cdp.searchParams.entries()) if (!ws.searchParams.has(key)) ws.searchParams.append(key, value);
801
+ return ws.toString();
802
+ }
803
+ async function captureScreenshot(opts) {
804
+ return await withCdpSocket(opts.wsUrl, async (send) => {
805
+ await send("Page.enable");
806
+ let clip;
807
+ if (opts.fullPage) {
808
+ const metrics = await send("Page.getLayoutMetrics");
809
+ const size = metrics?.cssContentSize ?? metrics?.contentSize;
810
+ const width = Number(size?.width ?? 0);
811
+ const height = Number(size?.height ?? 0);
812
+ if (width > 0 && height > 0) clip = {
813
+ x: 0,
814
+ y: 0,
815
+ width,
816
+ height,
817
+ scale: 1
818
+ };
819
+ }
820
+ const format = opts.format ?? "png";
821
+ const quality = format === "jpeg" ? Math.max(0, Math.min(100, Math.round(opts.quality ?? 85))) : void 0;
822
+ const base64 = (await send("Page.captureScreenshot", {
823
+ format,
824
+ ...quality !== void 0 ? { quality } : {},
825
+ fromSurface: true,
826
+ captureBeyondViewport: true,
827
+ ...clip ? { clip } : {}
828
+ }))?.data;
829
+ if (!base64) throw new Error("Screenshot failed: missing data");
830
+ return Buffer.from(base64, "base64");
831
+ });
832
+ }
833
+ async function createTargetViaCdp(opts) {
834
+ await assertBrowserNavigationAllowed({
835
+ url: opts.url,
836
+ ...withBrowserNavigationPolicy(opts.ssrfPolicy)
837
+ });
838
+ const version = await fetchJson(appendCdpPath(opts.cdpUrl, "/json/version"), 1500);
839
+ const wsUrlRaw = String(version?.webSocketDebuggerUrl ?? "").trim();
840
+ const wsUrl = wsUrlRaw ? normalizeCdpWsUrl(wsUrlRaw, opts.cdpUrl) : "";
841
+ if (!wsUrl) throw new Error("CDP /json/version missing webSocketDebuggerUrl");
842
+ return await withCdpSocket(wsUrl, async (send) => {
843
+ const created = await send("Target.createTarget", { url: opts.url });
844
+ const targetId = String(created?.targetId ?? "").trim();
845
+ if (!targetId) throw new Error("CDP Target.createTarget returned no targetId");
846
+ return { targetId };
847
+ });
848
+ }
849
+ function axValue(v) {
850
+ if (!v || typeof v !== "object") return "";
851
+ const value = v.value;
852
+ if (typeof value === "string") return value;
853
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
854
+ return "";
855
+ }
856
+ function formatAriaSnapshot(nodes, limit) {
857
+ const byId = /* @__PURE__ */ new Map();
858
+ for (const n of nodes) if (n.nodeId) byId.set(n.nodeId, n);
859
+ const referenced = /* @__PURE__ */ new Set();
860
+ for (const n of nodes) for (const c of n.childIds ?? []) referenced.add(c);
861
+ const root = nodes.find((n) => n.nodeId && !referenced.has(n.nodeId)) ?? nodes[0];
862
+ if (!root?.nodeId) return [];
863
+ const out = [];
864
+ const stack = [{
865
+ id: root.nodeId,
866
+ depth: 0
867
+ }];
868
+ while (stack.length && out.length < limit) {
869
+ const popped = stack.pop();
870
+ if (!popped) break;
871
+ const { id, depth } = popped;
872
+ const n = byId.get(id);
873
+ if (!n) continue;
874
+ const role = axValue(n.role);
875
+ const name = axValue(n.name);
876
+ const value = axValue(n.value);
877
+ const description = axValue(n.description);
878
+ const ref = `ax${out.length + 1}`;
879
+ out.push({
880
+ ref,
881
+ role: role || "unknown",
882
+ name: name || "",
883
+ ...value ? { value } : {},
884
+ ...description ? { description } : {},
885
+ ...typeof n.backendDOMNodeId === "number" ? { backendDOMNodeId: n.backendDOMNodeId } : {},
886
+ depth
887
+ });
888
+ const children = (n.childIds ?? []).filter((c) => byId.has(c));
889
+ for (let i = children.length - 1; i >= 0; i--) {
890
+ const child = children[i];
891
+ if (child) stack.push({
892
+ id: child,
893
+ depth: depth + 1
894
+ });
895
+ }
896
+ }
897
+ return out;
898
+ }
899
+ async function snapshotAria(opts) {
900
+ const limit = Math.max(1, Math.min(2e3, Math.floor(opts.limit ?? 500)));
901
+ return await withCdpSocket(opts.wsUrl, async (send) => {
902
+ await send("Accessibility.enable").catch(() => {});
903
+ const res = await send("Accessibility.getFullAXTree");
904
+ return { nodes: formatAriaSnapshot(Array.isArray(res?.nodes) ? res.nodes : [], limit) };
905
+ });
906
+ }
907
+
908
+ //#endregion
909
+ //#region src/browser/chrome.executables.ts
910
+ const CHROMIUM_BUNDLE_IDS = new Set([
911
+ "com.google.Chrome",
912
+ "com.google.Chrome.beta",
913
+ "com.google.Chrome.canary",
914
+ "com.google.Chrome.dev",
915
+ "com.brave.Browser",
916
+ "com.brave.Browser.beta",
917
+ "com.brave.Browser.nightly",
918
+ "com.microsoft.Edge",
919
+ "com.microsoft.EdgeBeta",
920
+ "com.microsoft.EdgeDev",
921
+ "com.microsoft.EdgeCanary",
922
+ "org.chromium.Chromium",
923
+ "com.vivaldi.Vivaldi",
924
+ "com.operasoftware.Opera",
925
+ "com.operasoftware.OperaGX",
926
+ "com.yandex.desktop.yandex-browser",
927
+ "company.thebrowser.Browser"
928
+ ]);
929
+ const CHROMIUM_DESKTOP_IDS = new Set([
930
+ "google-chrome.desktop",
931
+ "google-chrome-beta.desktop",
932
+ "google-chrome-unstable.desktop",
933
+ "brave-browser.desktop",
934
+ "microsoft-edge.desktop",
935
+ "microsoft-edge-beta.desktop",
936
+ "microsoft-edge-dev.desktop",
937
+ "microsoft-edge-canary.desktop",
938
+ "chromium.desktop",
939
+ "chromium-browser.desktop",
940
+ "vivaldi.desktop",
941
+ "vivaldi-stable.desktop",
942
+ "opera.desktop",
943
+ "opera-gx.desktop",
944
+ "yandex-browser.desktop",
945
+ "org.chromium.Chromium.desktop"
946
+ ]);
947
+ const CHROMIUM_EXE_NAMES = new Set([
948
+ "chrome.exe",
949
+ "msedge.exe",
950
+ "brave.exe",
951
+ "brave-browser.exe",
952
+ "chromium.exe",
953
+ "vivaldi.exe",
954
+ "opera.exe",
955
+ "launcher.exe",
956
+ "yandex.exe",
957
+ "yandexbrowser.exe",
958
+ "google chrome",
959
+ "google chrome canary",
960
+ "brave browser",
961
+ "microsoft edge",
962
+ "chromium",
963
+ "chrome",
964
+ "brave",
965
+ "msedge",
966
+ "brave-browser",
967
+ "google-chrome",
968
+ "google-chrome-stable",
969
+ "google-chrome-beta",
970
+ "google-chrome-unstable",
971
+ "microsoft-edge",
972
+ "microsoft-edge-beta",
973
+ "microsoft-edge-dev",
974
+ "microsoft-edge-canary",
975
+ "chromium-browser",
976
+ "vivaldi",
977
+ "vivaldi-stable",
978
+ "opera",
979
+ "opera-stable",
980
+ "opera-gx",
981
+ "yandex-browser"
982
+ ]);
983
+ function exists$1(filePath) {
984
+ try {
985
+ return fs.existsSync(filePath);
986
+ } catch {
987
+ return false;
988
+ }
989
+ }
990
+ function execText(command, args, timeoutMs = 1200, maxBuffer = 1024 * 1024) {
991
+ try {
992
+ const output = execFileSync(command, args, {
993
+ timeout: timeoutMs,
994
+ encoding: "utf8",
995
+ maxBuffer
996
+ });
997
+ return String(output ?? "").trim() || null;
998
+ } catch {
999
+ return null;
1000
+ }
1001
+ }
1002
+ function inferKindFromIdentifier(identifier) {
1003
+ const id = identifier.toLowerCase();
1004
+ if (id.includes("brave")) return "brave";
1005
+ if (id.includes("edge")) return "edge";
1006
+ if (id.includes("chromium")) return "chromium";
1007
+ if (id.includes("canary")) return "canary";
1008
+ if (id.includes("opera") || id.includes("vivaldi") || id.includes("yandex") || id.includes("thebrowser")) return "chromium";
1009
+ return "chrome";
1010
+ }
1011
+ function inferKindFromExecutableName(name) {
1012
+ const lower = name.toLowerCase();
1013
+ if (lower.includes("brave")) return "brave";
1014
+ if (lower.includes("edge") || lower.includes("msedge")) return "edge";
1015
+ if (lower.includes("chromium")) return "chromium";
1016
+ if (lower.includes("canary") || lower.includes("sxs")) return "canary";
1017
+ if (lower.includes("opera") || lower.includes("vivaldi") || lower.includes("yandex")) return "chromium";
1018
+ return "chrome";
1019
+ }
1020
+ function detectDefaultChromiumExecutable(platform) {
1021
+ if (platform === "darwin") return detectDefaultChromiumExecutableMac();
1022
+ if (platform === "linux") return detectDefaultChromiumExecutableLinux();
1023
+ if (platform === "win32") return detectDefaultChromiumExecutableWindows();
1024
+ return null;
1025
+ }
1026
+ function detectDefaultChromiumExecutableMac() {
1027
+ const bundleId = detectDefaultBrowserBundleIdMac();
1028
+ if (!bundleId || !CHROMIUM_BUNDLE_IDS.has(bundleId)) return null;
1029
+ const appPathRaw = execText("/usr/bin/osascript", ["-e", `POSIX path of (path to application id "${bundleId}")`]);
1030
+ if (!appPathRaw) return null;
1031
+ const appPath = appPathRaw.trim().replace(/\/$/, "");
1032
+ const exeName = execText("/usr/bin/defaults", [
1033
+ "read",
1034
+ path.join(appPath, "Contents", "Info"),
1035
+ "CFBundleExecutable"
1036
+ ]);
1037
+ if (!exeName) return null;
1038
+ const exePath = path.join(appPath, "Contents", "MacOS", exeName.trim());
1039
+ if (!exists$1(exePath)) return null;
1040
+ return {
1041
+ kind: inferKindFromIdentifier(bundleId),
1042
+ path: exePath
1043
+ };
1044
+ }
1045
+ function detectDefaultBrowserBundleIdMac() {
1046
+ const plistPath = path.join(os.homedir(), "Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist");
1047
+ if (!exists$1(plistPath)) return null;
1048
+ const handlersRaw = execText("/usr/bin/plutil", [
1049
+ "-extract",
1050
+ "LSHandlers",
1051
+ "json",
1052
+ "-o",
1053
+ "-",
1054
+ "--",
1055
+ plistPath
1056
+ ], 2e3, 5 * 1024 * 1024);
1057
+ if (!handlersRaw) return null;
1058
+ let handlers;
1059
+ try {
1060
+ handlers = JSON.parse(handlersRaw);
1061
+ } catch {
1062
+ return null;
1063
+ }
1064
+ if (!Array.isArray(handlers)) return null;
1065
+ const resolveScheme = (scheme) => {
1066
+ let candidate = null;
1067
+ for (const entry of handlers) {
1068
+ if (!entry || typeof entry !== "object") continue;
1069
+ const record = entry;
1070
+ if (record.LSHandlerURLScheme !== scheme) continue;
1071
+ const role = typeof record.LSHandlerRoleAll === "string" && record.LSHandlerRoleAll || typeof record.LSHandlerRoleViewer === "string" && record.LSHandlerRoleViewer || null;
1072
+ if (role) candidate = role;
1073
+ }
1074
+ return candidate;
1075
+ };
1076
+ return resolveScheme("http") ?? resolveScheme("https");
1077
+ }
1078
+ function detectDefaultChromiumExecutableLinux() {
1079
+ const desktopId = execText("xdg-settings", ["get", "default-web-browser"]) || execText("xdg-mime", [
1080
+ "query",
1081
+ "default",
1082
+ "x-scheme-handler/http"
1083
+ ]);
1084
+ if (!desktopId) return null;
1085
+ const trimmed = desktopId.trim();
1086
+ if (!CHROMIUM_DESKTOP_IDS.has(trimmed)) return null;
1087
+ const desktopPath = findDesktopFilePath(trimmed);
1088
+ if (!desktopPath) return null;
1089
+ const execLine = readDesktopExecLine(desktopPath);
1090
+ if (!execLine) return null;
1091
+ const command = extractExecutableFromExecLine(execLine);
1092
+ if (!command) return null;
1093
+ const resolved = resolveLinuxExecutablePath(command);
1094
+ if (!resolved) return null;
1095
+ const exeName = path.posix.basename(resolved).toLowerCase();
1096
+ if (!CHROMIUM_EXE_NAMES.has(exeName)) return null;
1097
+ return {
1098
+ kind: inferKindFromExecutableName(exeName),
1099
+ path: resolved
1100
+ };
1101
+ }
1102
+ function detectDefaultChromiumExecutableWindows() {
1103
+ const progId = readWindowsProgId();
1104
+ const command = (progId ? readWindowsCommandForProgId(progId) : null) || readWindowsCommandForProgId("http");
1105
+ if (!command) return null;
1106
+ const exePath = extractWindowsExecutablePath(expandWindowsEnvVars(command));
1107
+ if (!exePath) return null;
1108
+ if (!exists$1(exePath)) return null;
1109
+ const exeName = path.win32.basename(exePath).toLowerCase();
1110
+ if (!CHROMIUM_EXE_NAMES.has(exeName)) return null;
1111
+ return {
1112
+ kind: inferKindFromExecutableName(exeName),
1113
+ path: exePath
1114
+ };
1115
+ }
1116
+ function findDesktopFilePath(desktopId) {
1117
+ const candidates = [
1118
+ path.join(os.homedir(), ".local", "share", "applications", desktopId),
1119
+ path.join("/usr/local/share/applications", desktopId),
1120
+ path.join("/usr/share/applications", desktopId),
1121
+ path.join("/var/lib/snapd/desktop/applications", desktopId)
1122
+ ];
1123
+ for (const candidate of candidates) if (exists$1(candidate)) return candidate;
1124
+ return null;
1125
+ }
1126
+ function readDesktopExecLine(desktopPath) {
1127
+ try {
1128
+ const lines = fs.readFileSync(desktopPath, "utf8").split(/\r?\n/);
1129
+ for (const line of lines) if (line.startsWith("Exec=")) return line.slice(5).trim();
1130
+ } catch {}
1131
+ return null;
1132
+ }
1133
+ function extractExecutableFromExecLine(execLine) {
1134
+ const tokens = splitExecLine(execLine);
1135
+ for (const token of tokens) {
1136
+ if (!token) continue;
1137
+ if (token === "env") continue;
1138
+ if (token.includes("=") && !token.startsWith("/") && !token.includes("\\")) continue;
1139
+ return token.replace(/^["']|["']$/g, "");
1140
+ }
1141
+ return null;
1142
+ }
1143
+ function splitExecLine(line) {
1144
+ const tokens = [];
1145
+ let current = "";
1146
+ let inQuotes = false;
1147
+ let quoteChar = "";
1148
+ for (let i = 0; i < line.length; i += 1) {
1149
+ const ch = line[i];
1150
+ if ((ch === "\"" || ch === "'") && (!inQuotes || ch === quoteChar)) {
1151
+ if (inQuotes) {
1152
+ inQuotes = false;
1153
+ quoteChar = "";
1154
+ } else {
1155
+ inQuotes = true;
1156
+ quoteChar = ch;
1157
+ }
1158
+ continue;
1159
+ }
1160
+ if (!inQuotes && /\s/.test(ch)) {
1161
+ if (current) {
1162
+ tokens.push(current);
1163
+ current = "";
1164
+ }
1165
+ continue;
1166
+ }
1167
+ current += ch;
1168
+ }
1169
+ if (current) tokens.push(current);
1170
+ return tokens;
1171
+ }
1172
+ function resolveLinuxExecutablePath(command) {
1173
+ const cleaned = command.trim().replace(/%[a-zA-Z]/g, "");
1174
+ if (!cleaned) return null;
1175
+ if (cleaned.startsWith("/")) return cleaned;
1176
+ const resolved = execText("which", [cleaned], 800);
1177
+ return resolved ? resolved.trim() : null;
1178
+ }
1179
+ function readWindowsProgId() {
1180
+ const output = execText("reg", [
1181
+ "query",
1182
+ "HKCU\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice",
1183
+ "/v",
1184
+ "ProgId"
1185
+ ]);
1186
+ if (!output) return null;
1187
+ return output.match(/ProgId\s+REG_\w+\s+(.+)$/im)?.[1]?.trim() || null;
1188
+ }
1189
+ function readWindowsCommandForProgId(progId) {
1190
+ const output = execText("reg", [
1191
+ "query",
1192
+ progId === "http" ? "HKCR\\http\\shell\\open\\command" : `HKCR\\${progId}\\shell\\open\\command`,
1193
+ "/ve"
1194
+ ]);
1195
+ if (!output) return null;
1196
+ return output.match(/REG_\w+\s+(.+)$/im)?.[1]?.trim() || null;
1197
+ }
1198
+ function expandWindowsEnvVars(value) {
1199
+ return value.replace(/%([^%]+)%/g, (_match, name) => {
1200
+ const key = String(name ?? "").trim();
1201
+ return key ? process.env[key] ?? `%${key}%` : _match;
1202
+ });
1203
+ }
1204
+ function extractWindowsExecutablePath(command) {
1205
+ const quoted = command.match(/"([^"]+\\.exe)"/i);
1206
+ if (quoted?.[1]) return quoted[1];
1207
+ const unquoted = command.match(/([^\\s]+\\.exe)/i);
1208
+ if (unquoted?.[1]) return unquoted[1];
1209
+ return null;
1210
+ }
1211
+ function findFirstExecutable(candidates) {
1212
+ for (const candidate of candidates) if (exists$1(candidate.path)) return candidate;
1213
+ return null;
1214
+ }
1215
+ function findChromeExecutableMac() {
1216
+ return findFirstExecutable([
1217
+ {
1218
+ kind: "chrome",
1219
+ path: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
1220
+ },
1221
+ {
1222
+ kind: "chrome",
1223
+ path: path.join(os.homedir(), "Applications/Google Chrome.app/Contents/MacOS/Google Chrome")
1224
+ },
1225
+ {
1226
+ kind: "brave",
1227
+ path: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser"
1228
+ },
1229
+ {
1230
+ kind: "brave",
1231
+ path: path.join(os.homedir(), "Applications/Brave Browser.app/Contents/MacOS/Brave Browser")
1232
+ },
1233
+ {
1234
+ kind: "edge",
1235
+ path: "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge"
1236
+ },
1237
+ {
1238
+ kind: "edge",
1239
+ path: path.join(os.homedir(), "Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge")
1240
+ },
1241
+ {
1242
+ kind: "chromium",
1243
+ path: "/Applications/Chromium.app/Contents/MacOS/Chromium"
1244
+ },
1245
+ {
1246
+ kind: "chromium",
1247
+ path: path.join(os.homedir(), "Applications/Chromium.app/Contents/MacOS/Chromium")
1248
+ },
1249
+ {
1250
+ kind: "canary",
1251
+ path: "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"
1252
+ },
1253
+ {
1254
+ kind: "canary",
1255
+ path: path.join(os.homedir(), "Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary")
1256
+ }
1257
+ ]);
1258
+ }
1259
+ function findChromeExecutableLinux() {
1260
+ return findFirstExecutable([
1261
+ {
1262
+ kind: "chrome",
1263
+ path: "/usr/bin/google-chrome"
1264
+ },
1265
+ {
1266
+ kind: "chrome",
1267
+ path: "/usr/bin/google-chrome-stable"
1268
+ },
1269
+ {
1270
+ kind: "chrome",
1271
+ path: "/usr/bin/chrome"
1272
+ },
1273
+ {
1274
+ kind: "brave",
1275
+ path: "/usr/bin/brave-browser"
1276
+ },
1277
+ {
1278
+ kind: "brave",
1279
+ path: "/usr/bin/brave-browser-stable"
1280
+ },
1281
+ {
1282
+ kind: "brave",
1283
+ path: "/usr/bin/brave"
1284
+ },
1285
+ {
1286
+ kind: "brave",
1287
+ path: "/snap/bin/brave"
1288
+ },
1289
+ {
1290
+ kind: "edge",
1291
+ path: "/usr/bin/microsoft-edge"
1292
+ },
1293
+ {
1294
+ kind: "edge",
1295
+ path: "/usr/bin/microsoft-edge-stable"
1296
+ },
1297
+ {
1298
+ kind: "chromium",
1299
+ path: "/usr/bin/chromium"
1300
+ },
1301
+ {
1302
+ kind: "chromium",
1303
+ path: "/usr/bin/chromium-browser"
1304
+ },
1305
+ {
1306
+ kind: "chromium",
1307
+ path: "/snap/bin/chromium"
1308
+ }
1309
+ ]);
1310
+ }
1311
+ function findChromeExecutableWindows() {
1312
+ const localAppData = process.env.LOCALAPPDATA ?? "";
1313
+ const programFiles = process.env.ProgramFiles ?? "C:\\Program Files";
1314
+ const programFilesX86 = process.env["ProgramFiles(x86)"] ?? "C:\\Program Files (x86)";
1315
+ const joinWin = path.win32.join;
1316
+ const candidates = [];
1317
+ if (localAppData) {
1318
+ candidates.push({
1319
+ kind: "chrome",
1320
+ path: joinWin(localAppData, "Google", "Chrome", "Application", "chrome.exe")
1321
+ });
1322
+ candidates.push({
1323
+ kind: "brave",
1324
+ path: joinWin(localAppData, "BraveSoftware", "Brave-Browser", "Application", "brave.exe")
1325
+ });
1326
+ candidates.push({
1327
+ kind: "edge",
1328
+ path: joinWin(localAppData, "Microsoft", "Edge", "Application", "msedge.exe")
1329
+ });
1330
+ candidates.push({
1331
+ kind: "chromium",
1332
+ path: joinWin(localAppData, "Chromium", "Application", "chrome.exe")
1333
+ });
1334
+ candidates.push({
1335
+ kind: "canary",
1336
+ path: joinWin(localAppData, "Google", "Chrome SxS", "Application", "chrome.exe")
1337
+ });
1338
+ }
1339
+ candidates.push({
1340
+ kind: "chrome",
1341
+ path: joinWin(programFiles, "Google", "Chrome", "Application", "chrome.exe")
1342
+ });
1343
+ candidates.push({
1344
+ kind: "chrome",
1345
+ path: joinWin(programFilesX86, "Google", "Chrome", "Application", "chrome.exe")
1346
+ });
1347
+ candidates.push({
1348
+ kind: "brave",
1349
+ path: joinWin(programFiles, "BraveSoftware", "Brave-Browser", "Application", "brave.exe")
1350
+ });
1351
+ candidates.push({
1352
+ kind: "brave",
1353
+ path: joinWin(programFilesX86, "BraveSoftware", "Brave-Browser", "Application", "brave.exe")
1354
+ });
1355
+ candidates.push({
1356
+ kind: "edge",
1357
+ path: joinWin(programFiles, "Microsoft", "Edge", "Application", "msedge.exe")
1358
+ });
1359
+ candidates.push({
1360
+ kind: "edge",
1361
+ path: joinWin(programFilesX86, "Microsoft", "Edge", "Application", "msedge.exe")
1362
+ });
1363
+ return findFirstExecutable(candidates);
1364
+ }
1365
+ function resolveBrowserExecutableForPlatform(resolved, platform) {
1366
+ if (resolved.executablePath) {
1367
+ if (!exists$1(resolved.executablePath)) throw new Error(`browser.executablePath not found: ${resolved.executablePath}`);
1368
+ return {
1369
+ kind: "custom",
1370
+ path: resolved.executablePath
1371
+ };
1372
+ }
1373
+ const detected = detectDefaultChromiumExecutable(platform);
1374
+ if (detected) return detected;
1375
+ if (platform === "darwin") return findChromeExecutableMac();
1376
+ if (platform === "linux") return findChromeExecutableLinux();
1377
+ if (platform === "win32") return findChromeExecutableWindows();
1378
+ return null;
1379
+ }
1380
+
1381
+ //#endregion
1382
+ //#region src/browser/chrome.profile-decoration.ts
1383
+ function decoratedMarkerPath(userDataDir) {
1384
+ return path.join(userDataDir, ".remoteclaw-profile-decorated");
1385
+ }
1386
+ function safeReadJson(filePath) {
1387
+ try {
1388
+ if (!fs.existsSync(filePath)) return null;
1389
+ const raw = fs.readFileSync(filePath, "utf-8");
1390
+ const parsed = JSON.parse(raw);
1391
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) return null;
1392
+ return parsed;
1393
+ } catch {
1394
+ return null;
1395
+ }
1396
+ }
1397
+ function safeWriteJson(filePath, data) {
1398
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
1399
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2));
1400
+ }
1401
+ function setDeep(obj, keys, value) {
1402
+ let node = obj;
1403
+ for (const key of keys.slice(0, -1)) {
1404
+ const next = node[key];
1405
+ if (typeof next !== "object" || next === null || Array.isArray(next)) node[key] = {};
1406
+ node = node[key];
1407
+ }
1408
+ node[keys[keys.length - 1] ?? ""] = value;
1409
+ }
1410
+ function parseHexRgbToSignedArgbInt(hex) {
1411
+ const cleaned = hex.trim().replace(/^#/, "");
1412
+ if (!/^[0-9a-fA-F]{6}$/.test(cleaned)) return null;
1413
+ const argbUnsigned = 255 << 24 | Number.parseInt(cleaned, 16);
1414
+ return argbUnsigned > 2147483647 ? argbUnsigned - 4294967296 : argbUnsigned;
1415
+ }
1416
+ function isProfileDecorated(userDataDir, desiredName, desiredColorHex) {
1417
+ const desiredColorInt = parseHexRgbToSignedArgbInt(desiredColorHex);
1418
+ const localStatePath = path.join(userDataDir, "Local State");
1419
+ const preferencesPath = path.join(userDataDir, "Default", "Preferences");
1420
+ const profile = safeReadJson(localStatePath)?.profile;
1421
+ const infoCache = typeof profile === "object" && profile !== null && !Array.isArray(profile) ? profile.info_cache : null;
1422
+ const info = typeof infoCache === "object" && infoCache !== null && !Array.isArray(infoCache) && typeof infoCache.Default === "object" && infoCache.Default !== null && !Array.isArray(infoCache.Default) ? infoCache.Default : null;
1423
+ const prefs = safeReadJson(preferencesPath);
1424
+ const browserTheme = (() => {
1425
+ const browser = prefs?.browser;
1426
+ const theme = typeof browser === "object" && browser !== null && !Array.isArray(browser) ? browser.theme : null;
1427
+ return typeof theme === "object" && theme !== null && !Array.isArray(theme) ? theme : null;
1428
+ })();
1429
+ const autogeneratedTheme = (() => {
1430
+ const autogenerated = prefs?.autogenerated;
1431
+ const theme = typeof autogenerated === "object" && autogenerated !== null && !Array.isArray(autogenerated) ? autogenerated.theme : null;
1432
+ return typeof theme === "object" && theme !== null && !Array.isArray(theme) ? theme : null;
1433
+ })();
1434
+ const nameOk = typeof info?.name === "string" ? info.name === desiredName : true;
1435
+ if (desiredColorInt == null) return nameOk;
1436
+ const localSeedOk = typeof info?.profile_color_seed === "number" ? info.profile_color_seed === desiredColorInt : false;
1437
+ const prefOk = typeof browserTheme?.user_color2 === "number" && browserTheme.user_color2 === desiredColorInt || typeof autogeneratedTheme?.color === "number" && autogeneratedTheme.color === desiredColorInt;
1438
+ return nameOk && localSeedOk && prefOk;
1439
+ }
1440
+ /**
1441
+ * Best-effort profile decoration (name + brand-orange). Chrome preference keys
1442
+ * vary by version; we keep this conservative and idempotent.
1443
+ */
1444
+ function decorateRemoteClawProfile(userDataDir, opts) {
1445
+ const desiredName = opts?.name ?? DEFAULT_REMOTECLAW_BROWSER_PROFILE_NAME;
1446
+ const desiredColor = (opts?.color ?? DEFAULT_REMOTECLAW_BROWSER_COLOR).toUpperCase();
1447
+ const desiredColorInt = parseHexRgbToSignedArgbInt(desiredColor);
1448
+ const localStatePath = path.join(userDataDir, "Local State");
1449
+ const preferencesPath = path.join(userDataDir, "Default", "Preferences");
1450
+ const localState = safeReadJson(localStatePath) ?? {};
1451
+ setDeep(localState, [
1452
+ "profile",
1453
+ "info_cache",
1454
+ "Default",
1455
+ "name"
1456
+ ], desiredName);
1457
+ setDeep(localState, [
1458
+ "profile",
1459
+ "info_cache",
1460
+ "Default",
1461
+ "shortcut_name"
1462
+ ], desiredName);
1463
+ setDeep(localState, [
1464
+ "profile",
1465
+ "info_cache",
1466
+ "Default",
1467
+ "user_name"
1468
+ ], desiredName);
1469
+ setDeep(localState, [
1470
+ "profile",
1471
+ "info_cache",
1472
+ "Default",
1473
+ "profile_color"
1474
+ ], desiredColor);
1475
+ setDeep(localState, [
1476
+ "profile",
1477
+ "info_cache",
1478
+ "Default",
1479
+ "user_color"
1480
+ ], desiredColor);
1481
+ if (desiredColorInt != null) {
1482
+ setDeep(localState, [
1483
+ "profile",
1484
+ "info_cache",
1485
+ "Default",
1486
+ "profile_color_seed"
1487
+ ], desiredColorInt);
1488
+ setDeep(localState, [
1489
+ "profile",
1490
+ "info_cache",
1491
+ "Default",
1492
+ "profile_highlight_color"
1493
+ ], desiredColorInt);
1494
+ setDeep(localState, [
1495
+ "profile",
1496
+ "info_cache",
1497
+ "Default",
1498
+ "default_avatar_fill_color"
1499
+ ], desiredColorInt);
1500
+ setDeep(localState, [
1501
+ "profile",
1502
+ "info_cache",
1503
+ "Default",
1504
+ "default_avatar_stroke_color"
1505
+ ], desiredColorInt);
1506
+ }
1507
+ safeWriteJson(localStatePath, localState);
1508
+ const prefs = safeReadJson(preferencesPath) ?? {};
1509
+ setDeep(prefs, ["profile", "name"], desiredName);
1510
+ setDeep(prefs, ["profile", "profile_color"], desiredColor);
1511
+ setDeep(prefs, ["profile", "user_color"], desiredColor);
1512
+ if (desiredColorInt != null) {
1513
+ setDeep(prefs, [
1514
+ "autogenerated",
1515
+ "theme",
1516
+ "color"
1517
+ ], desiredColorInt);
1518
+ setDeep(prefs, [
1519
+ "browser",
1520
+ "theme",
1521
+ "user_color2"
1522
+ ], desiredColorInt);
1523
+ }
1524
+ safeWriteJson(preferencesPath, prefs);
1525
+ try {
1526
+ fs.writeFileSync(decoratedMarkerPath(userDataDir), `${Date.now()}\n`, "utf-8");
1527
+ } catch {}
1528
+ }
1529
+ function ensureProfileCleanExit(userDataDir) {
1530
+ const preferencesPath = path.join(userDataDir, "Default", "Preferences");
1531
+ const prefs = safeReadJson(preferencesPath) ?? {};
1532
+ setDeep(prefs, ["exit_type"], "Normal");
1533
+ setDeep(prefs, ["exited_cleanly"], true);
1534
+ safeWriteJson(preferencesPath, prefs);
1535
+ }
1536
+
1537
+ //#endregion
1538
+ //#region src/browser/chrome.ts
1539
+ const log = createSubsystemLogger("browser").child("chrome");
1540
+ function exists(filePath) {
1541
+ try {
1542
+ return fs.existsSync(filePath);
1543
+ } catch {
1544
+ return false;
1545
+ }
1546
+ }
1547
+ function resolveBrowserExecutable(resolved) {
1548
+ return resolveBrowserExecutableForPlatform(resolved, process.platform);
1549
+ }
1550
+ function resolveRemoteClawUserDataDir(profileName = DEFAULT_REMOTECLAW_BROWSER_PROFILE_NAME) {
1551
+ return path.join(CONFIG_DIR, "browser", profileName, "user-data");
1552
+ }
1553
+ function cdpUrlForPort(cdpPort) {
1554
+ return `http://127.0.0.1:${cdpPort}`;
1555
+ }
1556
+ async function isChromeReachable(cdpUrl, timeoutMs = 500) {
1557
+ const version = await fetchChromeVersion(cdpUrl, timeoutMs);
1558
+ return Boolean(version);
1559
+ }
1560
+ async function fetchChromeVersion(cdpUrl, timeoutMs = 500) {
1561
+ const ctrl = new AbortController();
1562
+ const t = setTimeout(ctrl.abort.bind(ctrl), timeoutMs);
1563
+ try {
1564
+ const versionUrl = appendCdpPath(cdpUrl, "/json/version");
1565
+ const res = await fetch(versionUrl, {
1566
+ signal: ctrl.signal,
1567
+ headers: getHeadersWithAuth(versionUrl)
1568
+ });
1569
+ if (!res.ok) return null;
1570
+ const data = await res.json();
1571
+ if (!data || typeof data !== "object") return null;
1572
+ return data;
1573
+ } catch {
1574
+ return null;
1575
+ } finally {
1576
+ clearTimeout(t);
1577
+ }
1578
+ }
1579
+ async function getChromeWebSocketUrl(cdpUrl, timeoutMs = 500) {
1580
+ const version = await fetchChromeVersion(cdpUrl, timeoutMs);
1581
+ const wsUrl = String(version?.webSocketDebuggerUrl ?? "").trim();
1582
+ if (!wsUrl) return null;
1583
+ return normalizeCdpWsUrl(wsUrl, cdpUrl);
1584
+ }
1585
+ async function canOpenWebSocket(wsUrl, timeoutMs = 800) {
1586
+ return await new Promise((resolve) => {
1587
+ const headers = getHeadersWithAuth(wsUrl);
1588
+ const ws = new WebSocket(wsUrl, {
1589
+ handshakeTimeout: timeoutMs,
1590
+ ...Object.keys(headers).length ? { headers } : {}
1591
+ });
1592
+ const timer = setTimeout(() => {
1593
+ try {
1594
+ ws.terminate();
1595
+ } catch {}
1596
+ resolve(false);
1597
+ }, Math.max(50, timeoutMs + 25));
1598
+ ws.once("open", () => {
1599
+ clearTimeout(timer);
1600
+ try {
1601
+ ws.close();
1602
+ } catch {}
1603
+ resolve(true);
1604
+ });
1605
+ ws.once("error", () => {
1606
+ clearTimeout(timer);
1607
+ resolve(false);
1608
+ });
1609
+ });
1610
+ }
1611
+ async function isChromeCdpReady(cdpUrl, timeoutMs = 500, handshakeTimeoutMs = 800) {
1612
+ const wsUrl = await getChromeWebSocketUrl(cdpUrl, timeoutMs);
1613
+ if (!wsUrl) return false;
1614
+ return await canOpenWebSocket(wsUrl, handshakeTimeoutMs);
1615
+ }
1616
+ async function launchRemoteClawChrome(resolved, profile) {
1617
+ if (!profile.cdpIsLoopback) throw new Error(`Profile "${profile.name}" is remote; cannot launch local Chrome.`);
1618
+ await ensurePortAvailable(profile.cdpPort);
1619
+ const exe = resolveBrowserExecutable(resolved);
1620
+ if (!exe) throw new Error("No supported browser found (Chrome/Brave/Edge/Chromium on macOS, Linux, or Windows).");
1621
+ const userDataDir = resolveRemoteClawUserDataDir(profile.name);
1622
+ fs.mkdirSync(userDataDir, { recursive: true });
1623
+ const needsDecorate = !isProfileDecorated(userDataDir, profile.name, (profile.color ?? DEFAULT_REMOTECLAW_BROWSER_COLOR).toUpperCase());
1624
+ const spawnOnce = () => {
1625
+ const args = [
1626
+ `--remote-debugging-port=${profile.cdpPort}`,
1627
+ `--user-data-dir=${userDataDir}`,
1628
+ "--no-first-run",
1629
+ "--no-default-browser-check",
1630
+ "--disable-sync",
1631
+ "--disable-background-networking",
1632
+ "--disable-component-update",
1633
+ "--disable-features=Translate,MediaRouter",
1634
+ "--disable-session-crashed-bubble",
1635
+ "--hide-crash-restore-bubble",
1636
+ "--password-store=basic"
1637
+ ];
1638
+ if (resolved.headless) {
1639
+ args.push("--headless=new");
1640
+ args.push("--disable-gpu");
1641
+ }
1642
+ if (resolved.noSandbox) {
1643
+ args.push("--no-sandbox");
1644
+ args.push("--disable-setuid-sandbox");
1645
+ }
1646
+ if (process.platform === "linux") args.push("--disable-dev-shm-usage");
1647
+ args.push("--disable-blink-features=AutomationControlled");
1648
+ if (resolved.extraArgs.length > 0) args.push(...resolved.extraArgs);
1649
+ args.push("about:blank");
1650
+ return spawn(exe.path, args, {
1651
+ stdio: "pipe",
1652
+ env: {
1653
+ ...process.env,
1654
+ HOME: os.homedir()
1655
+ }
1656
+ });
1657
+ };
1658
+ const startedAt = Date.now();
1659
+ const localStatePath = path.join(userDataDir, "Local State");
1660
+ const preferencesPath = path.join(userDataDir, "Default", "Preferences");
1661
+ if (!exists(localStatePath) || !exists(preferencesPath)) {
1662
+ const bootstrap = spawnOnce();
1663
+ const deadline = Date.now() + 1e4;
1664
+ while (Date.now() < deadline) {
1665
+ if (exists(localStatePath) && exists(preferencesPath)) break;
1666
+ await new Promise((r) => setTimeout(r, 100));
1667
+ }
1668
+ try {
1669
+ bootstrap.kill("SIGTERM");
1670
+ } catch {}
1671
+ const exitDeadline = Date.now() + 5e3;
1672
+ while (Date.now() < exitDeadline) {
1673
+ if (bootstrap.exitCode != null) break;
1674
+ await new Promise((r) => setTimeout(r, 50));
1675
+ }
1676
+ }
1677
+ if (needsDecorate) try {
1678
+ decorateRemoteClawProfile(userDataDir, {
1679
+ name: profile.name,
1680
+ color: profile.color
1681
+ });
1682
+ log.info(`🦀 remoteclaw browser profile decorated (${profile.color})`);
1683
+ } catch (err) {
1684
+ log.warn(`remoteclaw browser profile decoration failed: ${String(err)}`);
1685
+ }
1686
+ try {
1687
+ ensureProfileCleanExit(userDataDir);
1688
+ } catch (err) {
1689
+ log.warn(`remoteclaw browser clean-exit prefs failed: ${String(err)}`);
1690
+ }
1691
+ const proc = spawnOnce();
1692
+ const readyDeadline = Date.now() + 15e3;
1693
+ while (Date.now() < readyDeadline) {
1694
+ if (await isChromeReachable(profile.cdpUrl, 500)) break;
1695
+ await new Promise((r) => setTimeout(r, 200));
1696
+ }
1697
+ if (!await isChromeReachable(profile.cdpUrl, 500)) {
1698
+ try {
1699
+ proc.kill("SIGKILL");
1700
+ } catch {}
1701
+ throw new Error(`Failed to start Chrome CDP on port ${profile.cdpPort} for profile "${profile.name}".`);
1702
+ }
1703
+ const pid = proc.pid ?? -1;
1704
+ log.info(`🦀 remoteclaw browser started (${exe.kind}) profile "${profile.name}" on 127.0.0.1:${profile.cdpPort} (pid ${pid})`);
1705
+ return {
1706
+ pid,
1707
+ exe,
1708
+ userDataDir,
1709
+ cdpPort: profile.cdpPort,
1710
+ startedAt,
1711
+ proc
1712
+ };
1713
+ }
1714
+ async function stopRemoteClawChrome(running, timeoutMs = 2500) {
1715
+ const proc = running.proc;
1716
+ if (proc.killed) return;
1717
+ try {
1718
+ proc.kill("SIGTERM");
1719
+ } catch {}
1720
+ const start = Date.now();
1721
+ while (Date.now() - start < timeoutMs) {
1722
+ if (!proc.exitCode && proc.killed) break;
1723
+ if (!await isChromeReachable(cdpUrlForPort(running.cdpPort), 200)) return;
1724
+ await new Promise((r) => setTimeout(r, 100));
1725
+ }
1726
+ try {
1727
+ proc.kill("SIGKILL");
1728
+ } catch {}
1729
+ }
1730
+
1731
+ //#endregion
1732
+ export { stopChromeExtensionRelayServer as C, ensureChromeExtensionRelayServer as S, appendCdpPath as _, resolveRemoteClawUserDataDir as a, getHeadersWithAuth as b, captureScreenshot as c, normalizeCdpWsUrl as d, snapshotAria as f, withBrowserNavigationPolicy as g, assertBrowserNavigationResultAllowed as h, launchRemoteClawChrome as i, createTargetViaCdp as l, assertBrowserNavigationAllowed as m, isChromeCdpReady as n, stopRemoteClawChrome as o, InvalidBrowserNavigationUrlError as p, isChromeReachable as r, resolveBrowserExecutableForPlatform as s, getChromeWebSocketUrl as t, formatAriaSnapshot as u, fetchJson as v, withCdpSocket as x, fetchOk as y };