@qqbrowser/openclaw-qbot 0.0.128 → 0.0.129

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 (1471) hide show
  1. package/dist/account-lookup-CW-_CL7y.js +1 -1
  2. package/dist/acp-cli-01SGjPGi.js +1 -1
  3. package/dist/acp-cli-uxN405XG.js +1 -1
  4. package/dist/active-listener-BZ6loNaF.js +1 -1
  5. package/dist/active-listener-D8VOdVx3.js +1 -1
  6. package/dist/active-listener-DB5mhDuO.js +1 -1
  7. package/dist/active-listener-DeKRt_UV.js +1 -1
  8. package/dist/agent-scope-DAWJwFfl.js +1 -1
  9. package/dist/agent-scope-DXZc3eNT.js +1 -1
  10. package/dist/agents-BMh3ZeoB.js +1 -1
  11. package/dist/agents.config-B-0lZSmb.js +1 -1
  12. package/dist/agents.config-BDEN2Eph.js +1 -1
  13. package/dist/allow-from-B6dI7oz8.js +1 -1
  14. package/dist/allow-from-DEeVIPKS.js +1 -1
  15. package/dist/api-BeG0ObSq.js +1 -1
  16. package/dist/api-Dx8x1KTs.js +1 -1
  17. package/dist/api-key-rotation-C_MG2y1D.js +1 -1
  18. package/dist/api-key-rotation-D8WsZ43x.js +1 -1
  19. package/dist/api-key-rotation-DYYvcqSG.js +1 -1
  20. package/dist/api-key-rotation-dNu0GxPN.js +1 -1
  21. package/dist/arg-split-BOqSMBuf.js +1 -1
  22. package/dist/arg-split-DE5RqDHq.js +1 -1
  23. package/dist/audio-preflight--K4-eUVY.js +1 -1
  24. package/dist/audio-preflight-BKIm58PG.js +1 -1
  25. package/dist/audio-preflight-CAfi10dl.js +1 -1
  26. package/dist/audio-preflight-Xm0NL5JA.js +1 -1
  27. package/dist/audio-transcription-runner-BJNP7vB8.js +1 -1
  28. package/dist/audio-transcription-runner-BUsb6cqv.js +1 -1
  29. package/dist/audio-transcription-runner-C_31Yoq0.js +1 -1
  30. package/dist/audio-transcription-runner-CjKLRVPo.js +1 -1
  31. package/dist/audit-7DFnKINd.js +1 -1
  32. package/dist/audit-B6LsW3Ai.js +1 -1
  33. package/dist/audit-membership-runtime-BpRsMj5-.js +1 -1
  34. package/dist/audit-membership-runtime-BsfLZNBj.js +1 -1
  35. package/dist/audit-membership-runtime-DRHirRmx.js +1 -1
  36. package/dist/audit-membership-runtime-g0dEWJTp.js +1 -1
  37. package/dist/audit-membership-runtime-kdyToskD.js +1 -1
  38. package/dist/auth-choice-BNd2SNjJ.js +1 -1
  39. package/dist/auth-choice-C3aUWXx9.js +1 -1
  40. package/dist/auth-choice-DViEjgMg.js +1 -1
  41. package/dist/auth-choice-edozMf7r.js +1 -1
  42. package/dist/auth-choice-options-B3WQyS7I.js +1 -1
  43. package/dist/auth-choice-options-Dw14noox.js +1 -1
  44. package/dist/auth-choice-prompt-uegl56cf.js +1 -1
  45. package/dist/auth-choice-prompt-xYj13czb.js +1 -1
  46. package/dist/auth-choice.apply-helpers-CNLYnRxx.js +1 -1
  47. package/dist/auth-choice.apply-helpers-DCe5nTyP.js +1 -1
  48. package/dist/auth-profiles-BhXA8Jy2.js +1 -1
  49. package/dist/auth-token-C75IOb_K.js +1 -1
  50. package/dist/auth-token-CzgZf-ta.js +1 -1
  51. package/dist/banner-mIDEloRy.js +1 -1
  52. package/dist/bonjour-discovery-CpvzLjyB.js +1 -1
  53. package/dist/bonjour-discovery-wsh3Si1Q.js +1 -1
  54. package/dist/boolean-Ch3DfXPy.js +1 -1
  55. package/dist/boolean-D15s2V33.js +1 -1
  56. package/dist/boolean-DypnRoRK.js +1 -1
  57. package/dist/brew-COcDl8CB.js +1 -1
  58. package/dist/brew-DDPm_HfE.js +1 -1
  59. package/dist/browser-cli-BjzNbvF9.js +1 -1
  60. package/dist/browser-cli-CgHkgtgV.js +1 -1
  61. package/dist/build-info.json +2 -2
  62. package/dist/bundled/boot-md/handler.js +1 -1
  63. package/dist/bundled/bootstrap-extra-files/handler.js +1 -1
  64. package/dist/bundled/command-logger/handler.js +1 -1
  65. package/dist/bundled/session-memory/handler.js +1 -1
  66. package/dist/call-BA3O_Qpl.js +1 -1
  67. package/dist/call-BQT0zCgv.js +1 -1
  68. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  69. package/dist/channel-account-context-BMPAMZEv.js +1 -1
  70. package/dist/channel-account-context-DAcarnqW.js +1 -1
  71. package/dist/channel-activity-B04WbrrK.js +1 -1
  72. package/dist/channel-activity-BPRCQpI6.js +1 -1
  73. package/dist/channel-activity-D2VTmenR.js +1 -1
  74. package/dist/channel-activity-DHY5wAyl.js +1 -1
  75. package/dist/channel-activity-DYpm-0Cz.js +1 -1
  76. package/dist/channel-options-BYmHreMn.js +1 -1
  77. package/dist/channel-options-Cbv7VETu.js +1 -1
  78. package/dist/channel-selection-Ddyykqxv.js +1 -1
  79. package/dist/channel-selection-oRONo9z3.js +1 -1
  80. package/dist/channel-web-CK4RqVCH.js +1 -1
  81. package/dist/channel-web-Xw89Exy3.js +1 -1
  82. package/dist/channels/plugins/actions/discord.js +1 -1
  83. package/dist/channels/plugins/actions/signal.js +1 -1
  84. package/dist/channels/plugins/actions/telegram.js +1 -1
  85. package/dist/channels/plugins/agent-tools/whatsapp-login.js +1 -1
  86. package/dist/channels-cli-D2y5Xk5i.js +1 -1
  87. package/dist/channels-cli-cwFjBXcP.js +1 -1
  88. package/dist/channels-status-issues-8eFrGKyf.js +1 -1
  89. package/dist/channels-status-issues-PRgOT90w.js +1 -1
  90. package/dist/chat-envelope-Bznn2SoS.js +1 -1
  91. package/dist/chat-envelope-HVpKusFc.js +1 -1
  92. package/dist/clack-prompter-DBPdGdqp.js +1 -1
  93. package/dist/clack-prompter-Dq0aY6iM.js +1 -1
  94. package/dist/clawbot-cli-BwG1-8A9.js +1 -1
  95. package/dist/clawbot-cli-CaNu5A0G.js +1 -1
  96. package/dist/cleanup-utils-BWm70DoD.js +1 -1
  97. package/dist/cleanup-utils-D-RhEX6F.js +1 -1
  98. package/dist/cli-CQKA38bc.js +1 -1
  99. package/dist/cli-i7P4bYBg.js +1 -1
  100. package/dist/cli-utils-BY7dLMFy.js +1 -1
  101. package/dist/cli-utils-BleB1eys.js +1 -1
  102. package/dist/clipboard-Bk8cviBt.js +1 -1
  103. package/dist/clipboard-CKT_VIkG.js +1 -1
  104. package/dist/cmd-argv-BBT5l8AV.js +1 -1
  105. package/dist/cmd-argv-Bh-KpaZ0.js +1 -1
  106. package/dist/command-format-BbDT1tlm.js +1 -1
  107. package/dist/command-format-CLxIPuLR.js +1 -1
  108. package/dist/command-options-BpOUDl2S.js +1 -1
  109. package/dist/command-options-Bq5nQxz6.js +1 -1
  110. package/dist/command-poll-backoff-BZLHYB2k.js +1 -1
  111. package/dist/command-poll-backoff-Cww_r-24.js +1 -1
  112. package/dist/command-poll-backoff-Df6cOQrX.js +1 -1
  113. package/dist/command-poll-backoff-endAPdwn.js +1 -1
  114. package/dist/command-registry-BYk36N_R.js +1 -1
  115. package/dist/command-secret-targets-BBTiqQKa.js +1 -1
  116. package/dist/command-secret-targets-KM3OecbM.js +1 -1
  117. package/dist/commands-CGpM84iR.js +1 -1
  118. package/dist/commands-Dy7duWlt.js +1 -1
  119. package/dist/commands-registry-B3FI6TSl.js +1 -1
  120. package/dist/commands-registry-CxDVU5s9.js +1 -1
  121. package/dist/commands-registry-Dn2uuNuy.js +1 -1
  122. package/dist/commands-registry-Du79fdAL.js +1 -1
  123. package/dist/compact-CuBCVnVS.js +1 -1
  124. package/dist/completion-cli-CRNTbZlR.js +1 -1
  125. package/dist/completion-cli-DbGDCoiM.js +1 -1
  126. package/dist/config-BqW5S1xL.js +1 -1
  127. package/dist/config-DAQjvwZw.js +1 -1
  128. package/dist/config-cli-D_coAWd9.js +1 -1
  129. package/dist/config-cli-EKXoNzLf.js +1 -1
  130. package/dist/config-guard-U0wlYLUN.js +1 -1
  131. package/dist/config-guard-XayIkveC.js +1 -1
  132. package/dist/config-validation-B0nN9egx.js +1 -1
  133. package/dist/config-validation-CAHnpjrk.js +1 -1
  134. package/dist/configure-DNnQRKy8.js +1 -1
  135. package/dist/configure-NCNskZPe.js +1 -1
  136. package/dist/connection-auth-BcPbGyxw.js +1 -1
  137. package/dist/connection-auth-DZ-3Svr_.js +1 -1
  138. package/dist/context-window-guard-7crlatf9.js +1 -1
  139. package/dist/context-window-guard-CPChk363.js +1 -1
  140. package/dist/control-ui/apple-touch-icon.png +0 -0
  141. package/dist/control-ui/assets/de-DuUYLvt1.js +1 -0
  142. package/dist/control-ui/assets/es-DHtyqUQZ.js +1 -0
  143. package/dist/control-ui/assets/index-CYbiPp9k.js +8383 -0
  144. package/dist/control-ui/assets/index-C_GaJ8wS.css +1 -0
  145. package/dist/control-ui/assets/pt-BR-D2dJb9G8.js +1 -0
  146. package/dist/control-ui/assets/zh-CN-BgJ8_lE3.js +1 -0
  147. package/dist/control-ui/assets/zh-TW-cW5xB87I.js +1 -0
  148. package/dist/control-ui/favicon-32.png +0 -0
  149. package/dist/control-ui/favicon.ico +0 -0
  150. package/dist/control-ui/favicon.svg +22 -0
  151. package/dist/control-ui/index.html +17 -0
  152. package/dist/control-ui-assets-BIa0GGDg.js +1 -1
  153. package/dist/control-ui-assets-CTHGGgaX.js +1 -1
  154. package/dist/cron-cli-Cro66JtU.js +1 -1
  155. package/dist/cron-cli-DIeBukvk.js +1 -1
  156. package/dist/daemon-cli-Cw_fxNgE.js +1 -1
  157. package/dist/daemon-cli-DQsKS3pT.js +1 -1
  158. package/dist/daemon-cli.js +1 -1
  159. package/dist/daemon-install-C_DmJEkV.js +1 -1
  160. package/dist/daemon-install-D1DacLbM.js +1 -1
  161. package/dist/daemon-install-plan.shared-BSDdwWjB.js +1 -1
  162. package/dist/daemon-install-plan.shared-Dx3DBXCG.js +1 -1
  163. package/dist/daemon-runtime-DHiDbRuC.js +1 -1
  164. package/dist/daemon-runtime-VcpeBRJV.js +1 -1
  165. package/dist/dangerous-name-matching-BOmvAibz.js +1 -1
  166. package/dist/dangerous-name-matching-DtllRqBD.js +1 -1
  167. package/dist/dangerous-tools-CFRYQJ6V.js +1 -1
  168. package/dist/dangerous-tools-oYCu5wfC.js +1 -1
  169. package/dist/deliver-2c-EsQ_W.js +1 -1
  170. package/dist/deliver-BudDnEIb.js +1 -1
  171. package/dist/deliver-COKdxPmA.js +1 -1
  172. package/dist/deliver-DHP2vHKB.js +1 -1
  173. package/dist/delivery-queue-CKbauSFq.js +1 -1
  174. package/dist/delivery-queue-nkPJu0fY.js +1 -1
  175. package/dist/device-pairing-4eDo43Kk.js +1 -1
  176. package/dist/device-pairing-B7ZXiXp3.js +1 -1
  177. package/dist/devices-cli-BXUIb_UN.js +1 -1
  178. package/dist/devices-cli-D7PkbnHO.js +1 -1
  179. package/dist/diagnostic-Bzd5vlKH.js +1 -1
  180. package/dist/diagnostic-CFmHdXHP.js +1 -1
  181. package/dist/diagnostic-CW_Jv5UM.js +1 -1
  182. package/dist/diagnostic-Dza7-pMC.js +1 -1
  183. package/dist/diagnostics-BgbeL9KE.js +1 -1
  184. package/dist/diagnostics-Cdctg9K_.js +1 -1
  185. package/dist/directory-cli-CxeuNJcC.js +1 -1
  186. package/dist/directory-cli-DFlYCB5L.js +1 -1
  187. package/dist/dns-cli-BDbHznhi.js +1 -1
  188. package/dist/dns-cli-OuwliJ60.js +1 -1
  189. package/dist/docs-cli-Cdw9Iz9a.js +1 -1
  190. package/dist/docs-cli-ClD2UyX1.js +1 -1
  191. package/dist/doctor-completion-BSOX-LSq.js +1 -1
  192. package/dist/doctor-completion-DXqdpdlo.js +1 -1
  193. package/dist/doctor-config-flow-DHB8N7tT.js +1 -1
  194. package/dist/doctor-config-flow-MjfHBDlw.js +1 -1
  195. package/dist/enable-DVuqWT2a.js +1 -1
  196. package/dist/enable-DWaSH1HY.js +1 -1
  197. package/dist/entry-status-CCwwKO43.js +1 -1
  198. package/dist/entry-status-CoXkbJcX.js +1 -1
  199. package/dist/entry.js +1 -1
  200. package/dist/env-D7wNuBx1.js +1 -1
  201. package/dist/env-overrides-DHtB4kK3.js +1 -1
  202. package/dist/env-overrides-DXJbFrwI.js +1 -1
  203. package/dist/errors-6SQWM9dj.js +1 -1
  204. package/dist/errors-Bunti32V.js +1 -1
  205. package/dist/exec-B3eleY5O.js +1 -1
  206. package/dist/exec-DHqLtFYt.js +1 -1
  207. package/dist/exec-approvals-BXO9Cezj.js +1 -1
  208. package/dist/exec-approvals-BpBNEy6i.js +1 -1
  209. package/dist/exec-approvals-allowlist-BKFaHvA5.js +1 -1
  210. package/dist/exec-approvals-allowlist-DBh9Pm77.js +1 -1
  211. package/dist/exec-approvals-cli-0neCwpk-.js +1 -1
  212. package/dist/exec-approvals-cli-BuHSw09B.js +1 -1
  213. package/dist/exec-safe-bin-runtime-policy-Ck3GO5AB.js +1 -1
  214. package/dist/exec-safe-bin-runtime-policy-D2WexijZ.js +1 -1
  215. package/dist/fetch-BI3CnKE3.js +1 -1
  216. package/dist/fetch-BJT3BrkJ.js +1 -1
  217. package/dist/fetch-Bn0mWg6a.js +1 -1
  218. package/dist/fetch-CY5G3PDq.js +1 -1
  219. package/dist/fetch-Ce-scEU-.js +1 -1
  220. package/dist/fetch-D0rZDHKO.js +1 -1
  221. package/dist/fetch-DHo17YmK.js +1 -1
  222. package/dist/fetch-Dh-apy46.js +1 -1
  223. package/dist/fetch-Dikjvc5M.js +1 -1
  224. package/dist/fetch-DsjPfQlp.js +1 -1
  225. package/dist/fetch-_g8lZ8K8.js +1 -1
  226. package/dist/fetch-guard-BaRbr_V6.js +1 -1
  227. package/dist/fetch-guard-BmNIhXP-.js +1 -1
  228. package/dist/fetch-guard-ChVqc0HF.js +1 -1
  229. package/dist/fetch-guard-Cji70DJW.js +1 -1
  230. package/dist/fetch-hy0JKSsm.js +1 -1
  231. package/dist/fetch-timeout-CdYxWG9w.js +1 -1
  232. package/dist/fetch-timeout-Cj8_oAls.js +1 -1
  233. package/dist/fetch-timeout-DoOI_izT.js +1 -1
  234. package/dist/fetch-timeout-u8g99Ax0.js +1 -1
  235. package/dist/fetch-xT2jRpqs.js +1 -1
  236. package/dist/format-Bn1bwJKX.js +1 -1
  237. package/dist/format-Ce7I7s-k.js +1 -1
  238. package/dist/format-duration-C8AzNqKh.js +1 -1
  239. package/dist/format-duration-D5AMtmHa.js +1 -1
  240. package/dist/format-relative-B9pSIdGe.js +1 -1
  241. package/dist/format-relative-DkMjYy7z.js +1 -1
  242. package/dist/frontmatter-BkZkwkVO.js +1 -1
  243. package/dist/frontmatter-C7mzDNxd.js +1 -1
  244. package/dist/frontmatter-CzpfPBFl.js +1 -1
  245. package/dist/gateway-cli-Bj-BYgGN.js +1 -1
  246. package/dist/gateway-cli-DP65otLl.js +1 -1
  247. package/dist/gateway-install-token-BIqlEgy0.js +1 -1
  248. package/dist/gateway-install-token-CtUJl3A3.js +1 -1
  249. package/dist/gateway-rpc-DJHjmEZz.js +1 -1
  250. package/dist/gateway-rpc-XRAMeV67.js +1 -1
  251. package/dist/github-copilot-token-C79yeDKS.js +1 -1
  252. package/dist/github-copilot-token-DGYAlOmV.js +1 -1
  253. package/dist/github-copilot-token-DePP-lIf.js +1 -1
  254. package/dist/github-copilot-token-wm6mbypz.js +1 -1
  255. package/dist/gmail-setup-utils-CYOH3zzx.js +1 -1
  256. package/dist/gmail-setup-utils-S-MyEGuj.js +1 -1
  257. package/dist/group-access-BHKVOhrj.js +1 -1
  258. package/dist/group-access-D2DOYMfr.js +1 -1
  259. package/dist/health-Bedsiigi.js +1 -1
  260. package/dist/health-Cy_CvKbX.js +1 -1
  261. package/dist/health-format-B1nj3Wfn.js +1 -1
  262. package/dist/health-format-VBr6LEpt.js +1 -1
  263. package/dist/heartbeat-visibility-BQ_esv2m.js +1 -1
  264. package/dist/heartbeat-visibility-q74UdY8O.js +1 -1
  265. package/dist/help-format-B4aEI7V9.js +1 -1
  266. package/dist/help-format-BRbF_INg.js +1 -1
  267. package/dist/helpers-COz1ghcB.js +1 -1
  268. package/dist/helpers-Cp8gcO6u.js +1 -1
  269. package/dist/hooks-cli-DrnH2iDk.js +1 -1
  270. package/dist/hooks-cli-DvfZKyZl.js +1 -1
  271. package/dist/hooks-status-BHt-Xvh4.js +1 -1
  272. package/dist/hooks-status-CRJ4J0ZW.js +1 -1
  273. package/dist/image-BJC11A7e.js +1 -1
  274. package/dist/image-BKPxWO_2.js +1 -1
  275. package/dist/image-Ba-mOMMV.js +1 -1
  276. package/dist/image-D-R3N1it.js +1 -1
  277. package/dist/index.js +1 -1
  278. package/dist/inspect-BKV-I1UE.js +1 -1
  279. package/dist/inspect-z59cgmYc.js +1 -1
  280. package/dist/install-safe-path-C6kc_8NW.js +1 -1
  281. package/dist/install-safe-path-iesxijn2.js +1 -1
  282. package/dist/installs-BNeI_oML.js +1 -1
  283. package/dist/installs-C1xQLuby.js +1 -1
  284. package/dist/ipv4-BXZDlz5C.js +1 -1
  285. package/dist/ipv4-BnPLbv6y.js +1 -1
  286. package/dist/ir-BYCrFFZ9.js +1 -1
  287. package/dist/ir-CH7YvSi9.js +1 -1
  288. package/dist/ir-CSysIkNU.js +1 -1
  289. package/dist/ir-CZdZsdnI.js +1 -1
  290. package/dist/is-main-DG5ueqhF.js +1 -1
  291. package/dist/issue-format-CpTuk_rQ.js +1 -1
  292. package/dist/issue-format-kj7FXHhi.js +1 -1
  293. package/dist/kill-tree-DBJW8_Q-.js +1 -1
  294. package/dist/lifecycle-core-B72WHNHV.js +1 -1
  295. package/dist/lifecycle-core-dhkH_Nux.js +1 -1
  296. package/dist/line/accounts.js +1 -1
  297. package/dist/line/send.js +1 -1
  298. package/dist/line/template-messages.js +1 -1
  299. package/dist/links-CBnmRP9D.js +1 -1
  300. package/dist/links-CySwdMcF.js +1 -1
  301. package/dist/llm-slug-generator.js +1 -1
  302. package/dist/load-options-BsOW74dp.js +1 -1
  303. package/dist/load-options-C7dLuybp.js +1 -1
  304. package/dist/load-options-DV4j6Aqb.js +1 -1
  305. package/dist/load-options-Dwt0CeEg.js +1 -1
  306. package/dist/local-roots-Dxioh0C2.js +1 -1
  307. package/dist/logger-5W0OocJW.js +1 -1
  308. package/dist/logger-Bl8URnrW.js +1 -1
  309. package/dist/logger-DwWqfo66.js +1 -1
  310. package/dist/logger-kQAOe3qp.js +1 -1
  311. package/dist/logging-Dz4Qg6th.js +1 -1
  312. package/dist/logging-KiJmOmw4.js +1 -1
  313. package/dist/login-BMZxDYaU.js +1 -1
  314. package/dist/login-BdzP8F8J.js +1 -1
  315. package/dist/login-BzU0cMck.js +1 -1
  316. package/dist/login-Cb1A6qwM.js +1 -1
  317. package/dist/login-qr-BgsmAwKm.js +1 -1
  318. package/dist/login-qr-Bux8gWTO.js +1 -1
  319. package/dist/login-qr-COr_25Hx.js +1 -1
  320. package/dist/login-qr-CxBPOOAK.js +1 -1
  321. package/dist/login-qr-DnQm7bM4.js +1 -1
  322. package/dist/logs-cli-BM2XCmrH.js +1 -1
  323. package/dist/logs-cli-HKhyxaUs.js +1 -1
  324. package/dist/manager-B6zZuJEB.js +1 -1
  325. package/dist/manager-BwrZfep3.js +1 -1
  326. package/dist/manager-C5SBozw4.js +1 -1
  327. package/dist/manager-CjihRbGa.js +1 -1
  328. package/dist/memory-cli-CnruTL1h.js +1 -1
  329. package/dist/memory-cli-DHvscp7X.js +1 -1
  330. package/dist/model-catalog-BLdaFmIo.js +1 -1
  331. package/dist/model-catalog-vNCcsy4h.js +1 -1
  332. package/dist/model-param-b-B0r2cPDw.js +1 -1
  333. package/dist/model-param-b-BqIr5rY5.js +1 -1
  334. package/dist/model-picker-BaeW3tiV.js +1 -1
  335. package/dist/model-picker-DN0czUYS.js +1 -1
  336. package/dist/model-selection-C2QwHmXT.js +1 -1
  337. package/dist/model-selection-I1ctjFOB.js +1 -1
  338. package/dist/model-selection-qkByRv5A.js +1 -1
  339. package/dist/models-UTdl0vXO.js +1 -1
  340. package/dist/models-cli-QRONP7EL.js +1 -1
  341. package/dist/models-cli-vRoB_gfX.js +1 -1
  342. package/dist/models-config-CWIlroKT.js +1 -1
  343. package/dist/models-config-DN2Q51fC.js +1 -1
  344. package/dist/mutable-allowlist-detectors-C4rNVag8.js +1 -1
  345. package/dist/mutable-allowlist-detectors-CL0qe54J.js +1 -1
  346. package/dist/node-cli-2-E4-83G.js +1 -1
  347. package/dist/node-cli-DUI7Zctj.js +1 -1
  348. package/dist/node-command-policy-Bbmnc16l.js +1 -1
  349. package/dist/node-command-policy-DgkwfoCs.js +1 -1
  350. package/dist/node-commands-8GBOiktk.js +1 -1
  351. package/dist/node-commands-DdkziOTx.js +1 -1
  352. package/dist/node-resolve-B3BJbmQX.js +1 -1
  353. package/dist/node-resolve-DLZf3-1V.js +1 -1
  354. package/dist/node-service-BRfrNp8l.js +1 -1
  355. package/dist/node-service-C0bl7jcZ.js +1 -1
  356. package/dist/node-shell-dXp4vk-i.js +1 -1
  357. package/dist/nodes-cli-DU13-dCL.js +1 -1
  358. package/dist/nodes-cli-rPeIRj_f.js +1 -1
  359. package/dist/nodes-screen-C7-5RrbN.js +1 -1
  360. package/dist/note-D4GAwgha.js +1 -1
  361. package/dist/note-Dp-d_utk.js +1 -1
  362. package/dist/npm-pack-install-B23L-AtF.js +1 -1
  363. package/dist/npm-pack-install-C0te3Oap.js +1 -1
  364. package/dist/npm-resolution-BCXCw93f.js +1 -1
  365. package/dist/npm-resolution-Cmm82lui.js +1 -1
  366. package/dist/oauth-env-DAamJ1oz.js +1 -1
  367. package/dist/oauth-env-DSLBTWb1.js +1 -1
  368. package/dist/oauth-tls-preflight-BSBRDIfC.js +1 -1
  369. package/dist/oauth-tls-preflight-ByNjbUR5.js +1 -1
  370. package/dist/ollama-setup-CKt3tF-S.js +1 -1
  371. package/dist/ollama-setup-I8lghdX1.js +1 -1
  372. package/dist/onboard-B3WSjKCu.js +1 -1
  373. package/dist/onboard-C65vdb94.js +1 -1
  374. package/dist/onboard-channels-9CmG3Jgn.js +1 -1
  375. package/dist/onboard-channels-CV1AK9jY.js +1 -1
  376. package/dist/onboard-config-B7U20YRw.js +1 -1
  377. package/dist/onboard-config-DS9dUv8M.js +1 -1
  378. package/dist/onboard-custom-CwHYUB0T.js +1 -1
  379. package/dist/onboard-custom-uwufXtQf.js +1 -1
  380. package/dist/onboard-helpers-CGJLUoxR.js +1 -1
  381. package/dist/onboard-helpers-DbpWQoiB.js +1 -1
  382. package/dist/onboard-hooks-CERzXObm.js +1 -1
  383. package/dist/onboard-hooks-gQ3sxBNi.js +1 -1
  384. package/dist/onboard-provider-auth-flags-CqbipO7D.js +1 -1
  385. package/dist/onboard-provider-auth-flags-Dvwzdz37.js +1 -1
  386. package/dist/onboard-remote-BeDZ_gbH.js +1 -1
  387. package/dist/onboard-remote-KTUx-3G1.js +1 -1
  388. package/dist/onboard-search-f2tJD4hg.js +1 -1
  389. package/dist/onboard-search-fslKKhyg.js +1 -1
  390. package/dist/onboard-skills-BoS_oVdm.js +1 -1
  391. package/dist/onboard-skills-C4omGWoD.js +1 -1
  392. package/dist/onboarding-B8icigkk.js +1 -1
  393. package/dist/onboarding-BJRqNsZ8.js +1 -1
  394. package/dist/onboarding.finalize-D0qISqn-.js +1 -1
  395. package/dist/onboarding.finalize-Ds9NwPBL.js +1 -1
  396. package/dist/onboarding.gateway-config-F8n_QFUR.js +1 -1
  397. package/dist/onboarding.gateway-config-eno73eHw.js +1 -1
  398. package/dist/onboarding.secret-input-B6fzeucQ.js +1 -1
  399. package/dist/onboarding.secret-input-CBuD3c32.js +1 -1
  400. package/dist/openai-codex-model-default-Df2T3foI.js +1 -1
  401. package/dist/openai-codex-model-default-DtIeKJm0.js +1 -1
  402. package/dist/openai-model-default-DIE55yBt.js +1 -1
  403. package/dist/openai-model-default-sqvWk4kB.js +1 -1
  404. package/dist/openclaw-exec-env-BWbOu_YC.js +1 -1
  405. package/dist/openclaw-root-CnsBf6ZU.js +1 -1
  406. package/dist/openclaw-root-D_0Q6--h.js +1 -1
  407. package/dist/outbound-B88MLJN3.js +1 -1
  408. package/dist/outbound-C-4qToKv.js +1 -1
  409. package/dist/outbound-CSk4oF0g.js +1 -1
  410. package/dist/outbound-DKMI_4xm.js +1 -1
  411. package/dist/outbound-attachment-BOax42-M.js +1 -1
  412. package/dist/outbound-attachment-DBNxdLYh.js +1 -1
  413. package/dist/outbound-attachment-DVjJQ3V6.js +1 -1
  414. package/dist/outbound-attachment-aZWcoZ-N.js +1 -1
  415. package/dist/pairing-cli-Cby6Ww8F.js +1 -1
  416. package/dist/pairing-cli-DiJb_a0V.js +1 -1
  417. package/dist/pairing-labels-BP1h0iHy.js +1 -1
  418. package/dist/pairing-labels-ryOnuOFA.js +1 -1
  419. package/dist/pairing-store-Bv4KSELv.js +1 -1
  420. package/dist/pairing-store-CjTPxq0X.js +1 -1
  421. package/dist/pairing-token-CKX1ds78.js +1 -1
  422. package/dist/pairing-token-CX0SUJsB.js +1 -1
  423. package/dist/parse-duration-XTjMKl8s.js +1 -1
  424. package/dist/parse-finite-number-DqzUM-_s.js +1 -1
  425. package/dist/parse-finite-number-dBmDLLKL.js +1 -1
  426. package/dist/parse-log-line-CsYLg7Qu.js +1 -1
  427. package/dist/parse-log-line-NV-cipB_.js +1 -1
  428. package/dist/parse-port-Bv1Y9Wk5.js +1 -1
  429. package/dist/parse-port-JVwkxcZ8.js +1 -1
  430. package/dist/parse-timeout-DWSGfCkQ.js +1 -1
  431. package/dist/parse-timeout-Dx4QnVzo.js +1 -1
  432. package/dist/path-alias-guards-kY_ZbWs-.js +1 -1
  433. package/dist/path-alias-guards-mvyLCPlN.js +1 -1
  434. package/dist/path-env-BPd1Yd-i.js +1 -1
  435. package/dist/path-env-emdAQejM.js +1 -1
  436. package/dist/path-safety-BukYK8Kd.js +1 -1
  437. package/dist/path-safety-DaaMJFdt.js +1 -1
  438. package/dist/paths-B4IRk3wi.js +1 -1
  439. package/dist/paths-BfjJY2VL.js +1 -1
  440. package/dist/paths-BjD3T_xq.js +1 -1
  441. package/dist/paths-BpQOWYiT.js +1 -1
  442. package/dist/paths-CChBdtE8.js +1 -1
  443. package/dist/paths-CrCoPIVK.js +1 -1
  444. package/dist/paths-piJASC5k.js +1 -1
  445. package/dist/paths-yLEk_25I.js +1 -1
  446. package/dist/pi-embedded-ZEWNj7P5.js +1 -1
  447. package/dist/pi-embedded-bqE4EmdD.js +1 -1
  448. package/dist/pi-model-discovery-6myCPEJE.js +1 -1
  449. package/dist/pi-model-discovery-AiV9h8k6.js +1 -1
  450. package/dist/pi-model-discovery-BzqdozHB.js +1 -1
  451. package/dist/pi-model-discovery-C8YBu6D4.js +1 -1
  452. package/dist/pi-tools.before-tool-call.runtime-CPAJMO7J.js +1 -1
  453. package/dist/pi-tools.before-tool-call.runtime-CYmLHod0.js +1 -1
  454. package/dist/pi-tools.before-tool-call.runtime-CfVqI0Ng.js +1 -1
  455. package/dist/pi-tools.before-tool-call.runtime-D9FlPJ_v.js +1 -1
  456. package/dist/pi-tools.policy-CeSKHaKa.js +1 -1
  457. package/dist/plugin-auto-enable-Cp7L8ko8.js +1 -1
  458. package/dist/plugin-auto-enable-DCOxqfDQ.js +1 -1
  459. package/dist/plugin-install-plan-BobX0y9S.js +1 -1
  460. package/dist/plugin-install-plan-NvDGp0d8.js +1 -1
  461. package/dist/plugin-registry-Fg000e4I.js +1 -1
  462. package/dist/plugin-registry-fm5tDUbE.js +1 -1
  463. package/dist/plugin-sdk/account-id.cjs +1 -1
  464. package/dist/plugin-sdk/account-id.js +1 -1
  465. package/dist/plugin-sdk/acpx.cjs +1 -1
  466. package/dist/plugin-sdk/acpx.js +1 -1
  467. package/dist/plugin-sdk/active-listener-BFeaYGID.js +1 -1
  468. package/dist/plugin-sdk/active-listener-BszCM2Au.cjs +1 -1
  469. package/dist/plugin-sdk/active-listener-CIcleJgU.cjs +1 -1
  470. package/dist/plugin-sdk/active-listener-Cqgd7xVh.cjs +1 -1
  471. package/dist/plugin-sdk/active-listener-D578zEtk.cjs +1 -1
  472. package/dist/plugin-sdk/active-listener-D6gGPLq-.js +1 -1
  473. package/dist/plugin-sdk/active-listener-DKSZRn4x.cjs +1 -1
  474. package/dist/plugin-sdk/active-listener-DNO10F1L.js +1 -1
  475. package/dist/plugin-sdk/active-listener-DQq07Aar.js +1 -1
  476. package/dist/plugin-sdk/active-listener-Dle_kYqb.js +1 -1
  477. package/dist/plugin-sdk/active-listener-DmJcHkMC.js +1 -1
  478. package/dist/plugin-sdk/active-listener-UmFpcYFY.cjs +1 -1
  479. package/dist/plugin-sdk/api-key-rotation-39TRXDEA.cjs +1 -1
  480. package/dist/plugin-sdk/api-key-rotation-7qlqJ_ou.js +1 -1
  481. package/dist/plugin-sdk/api-key-rotation-BY7fLi9z.js +1 -1
  482. package/dist/plugin-sdk/api-key-rotation-CF9_CKS-.cjs +1 -1
  483. package/dist/plugin-sdk/api-key-rotation-CWylhFOt.cjs +1 -1
  484. package/dist/plugin-sdk/api-key-rotation-ClZmonv2.js +1 -1
  485. package/dist/plugin-sdk/api-key-rotation-CmesQWXP.cjs +1 -1
  486. package/dist/plugin-sdk/api-key-rotation-Cs6II2__.js +1 -1
  487. package/dist/plugin-sdk/api-key-rotation-CxaiMcI1.js +1 -1
  488. package/dist/plugin-sdk/api-key-rotation-D5cfmg7E.cjs +1 -1
  489. package/dist/plugin-sdk/api-key-rotation-DkP7KnSm.cjs +1 -1
  490. package/dist/plugin-sdk/api-key-rotation-mDqgBFMG.js +1 -1
  491. package/dist/plugin-sdk/audio-preflight-B-HrF5Oc.js +1 -1
  492. package/dist/plugin-sdk/audio-preflight-B2MGeSoT.js +1 -1
  493. package/dist/plugin-sdk/audio-preflight-BVjiz_Qk.cjs +1 -1
  494. package/dist/plugin-sdk/audio-preflight-Behqe7F3.cjs +1 -1
  495. package/dist/plugin-sdk/audio-preflight-C0ncOCbK.cjs +1 -1
  496. package/dist/plugin-sdk/audio-preflight-C1o1n-KK.js +1 -1
  497. package/dist/plugin-sdk/audio-preflight-CzLYTZ5P.cjs +1 -1
  498. package/dist/plugin-sdk/audio-preflight-DDiBwIB9.js +1 -1
  499. package/dist/plugin-sdk/audio-preflight-DQyh-XSn.cjs +1 -1
  500. package/dist/plugin-sdk/audio-preflight-WH9WDR81.cjs +1 -1
  501. package/dist/plugin-sdk/audio-preflight-ZPLO3G1S.js +1 -1
  502. package/dist/plugin-sdk/audio-preflight-s3BAID12.js +1 -1
  503. package/dist/plugin-sdk/audio-transcription-runner-2-ZQ5Md-.cjs +1 -1
  504. package/dist/plugin-sdk/audio-transcription-runner-BO7T_SzP.cjs +1 -1
  505. package/dist/plugin-sdk/audio-transcription-runner-CRYJlAeP.js +1 -1
  506. package/dist/plugin-sdk/audio-transcription-runner-CmW24oVR.js +1 -1
  507. package/dist/plugin-sdk/audio-transcription-runner-CmYuWS0_.cjs +1 -1
  508. package/dist/plugin-sdk/audio-transcription-runner-CslXJs5c.js +1 -1
  509. package/dist/plugin-sdk/audio-transcription-runner-DE1tKTQV.cjs +1 -1
  510. package/dist/plugin-sdk/audio-transcription-runner-DZR84B28.js +1 -1
  511. package/dist/plugin-sdk/audio-transcription-runner-DoR-NOcV.cjs +1 -1
  512. package/dist/plugin-sdk/audio-transcription-runner-IE4olXkd.cjs +1 -1
  513. package/dist/plugin-sdk/audio-transcription-runner-YiDQM_Rb.js +1 -1
  514. package/dist/plugin-sdk/audio-transcription-runner-kAVM4YFR.js +1 -1
  515. package/dist/plugin-sdk/audit-membership-runtime-7LqcvqFo.js +1 -1
  516. package/dist/plugin-sdk/audit-membership-runtime-BQFUzFc0.cjs +1 -1
  517. package/dist/plugin-sdk/audit-membership-runtime-BYtdDX9G.cjs +1 -1
  518. package/dist/plugin-sdk/audit-membership-runtime-BzEtBUX6.cjs +1 -1
  519. package/dist/plugin-sdk/audit-membership-runtime-CBUmGrl4.js +1 -1
  520. package/dist/plugin-sdk/audit-membership-runtime-ChlVgt2y.js +1 -1
  521. package/dist/plugin-sdk/audit-membership-runtime-DLRX7LR0.js +1 -1
  522. package/dist/plugin-sdk/audit-membership-runtime-DbJW5X3L.cjs +1 -1
  523. package/dist/plugin-sdk/audit-membership-runtime-Du9LAxDa.cjs +1 -1
  524. package/dist/plugin-sdk/audit-membership-runtime-DylNnj1m.js +1 -1
  525. package/dist/plugin-sdk/audit-membership-runtime-voi5sPwF.js +1 -1
  526. package/dist/plugin-sdk/audit-membership-runtime-yWYvSpgZ.cjs +1 -1
  527. package/dist/plugin-sdk/bluebubbles.cjs +1 -1
  528. package/dist/plugin-sdk/bluebubbles.js +1 -1
  529. package/dist/plugin-sdk/channel-activity-Bed876M5.js +1 -1
  530. package/dist/plugin-sdk/channel-activity-Bu8tAmGa.cjs +1 -1
  531. package/dist/plugin-sdk/channel-activity-C01Im_o1.js +1 -1
  532. package/dist/plugin-sdk/channel-activity-CIycjzUC.js +1 -1
  533. package/dist/plugin-sdk/channel-activity-Cdkn3O_i.js +1 -1
  534. package/dist/plugin-sdk/channel-activity-Cia2G3v5.js +1 -1
  535. package/dist/plugin-sdk/channel-activity-D6d2wU8H.cjs +1 -1
  536. package/dist/plugin-sdk/channel-activity-DNv7JLBx.cjs +1 -1
  537. package/dist/plugin-sdk/channel-activity-Df3DfYyZ.cjs +1 -1
  538. package/dist/plugin-sdk/channel-activity-Rut-HCfT.cjs +1 -1
  539. package/dist/plugin-sdk/channel-activity-mffNSQrX.cjs +1 -1
  540. package/dist/plugin-sdk/channel-activity-qjwFifkE.js +1 -1
  541. package/dist/plugin-sdk/channel-web-Ces_xx2T.js +1 -1
  542. package/dist/plugin-sdk/channel-web-CsmEnYD8.cjs +1 -1
  543. package/dist/plugin-sdk/channel-web-DtzNv49H.cjs +1 -1
  544. package/dist/plugin-sdk/channel-web-VEZVrMYU.js +1 -1
  545. package/dist/plugin-sdk/command-poll-backoff-4910Mpwp.js +1 -1
  546. package/dist/plugin-sdk/command-poll-backoff-BLJZzV5W.cjs +1 -1
  547. package/dist/plugin-sdk/command-poll-backoff-CUNcN0dv.cjs +1 -1
  548. package/dist/plugin-sdk/command-poll-backoff-Cww_r-24.js +1 -1
  549. package/dist/plugin-sdk/command-poll-backoff-D0lJhquZ.js +1 -1
  550. package/dist/plugin-sdk/command-poll-backoff-Glwt3wHa.cjs +1 -1
  551. package/dist/plugin-sdk/commands-registry-33H8WYTk.cjs +1 -1
  552. package/dist/plugin-sdk/commands-registry-BGdm1KdC.js +1 -1
  553. package/dist/plugin-sdk/commands-registry-BgV9i-bj.cjs +1 -1
  554. package/dist/plugin-sdk/commands-registry-BifdCfty.cjs +1 -1
  555. package/dist/plugin-sdk/commands-registry-CJLBIIIp.js +1 -1
  556. package/dist/plugin-sdk/commands-registry-CWK9ARbc.js +1 -1
  557. package/dist/plugin-sdk/commands-registry-CfVD1h8L.cjs +1 -1
  558. package/dist/plugin-sdk/commands-registry-CpG4pxrA.js +1 -1
  559. package/dist/plugin-sdk/commands-registry-D-AnIQWz.cjs +1 -1
  560. package/dist/plugin-sdk/commands-registry-DBI4cPqT.cjs +1 -1
  561. package/dist/plugin-sdk/commands-registry-DOBe9cWq.js +1 -1
  562. package/dist/plugin-sdk/commands-registry-DqemUyiv.js +1 -1
  563. package/dist/plugin-sdk/common-CEe87dmX.js +1 -1
  564. package/dist/plugin-sdk/common-CjMKHm2Z.cjs +1 -1
  565. package/dist/plugin-sdk/compat.cjs +1 -1
  566. package/dist/plugin-sdk/compat.js +1 -1
  567. package/dist/plugin-sdk/config-DT_csBcZ.cjs +1 -1
  568. package/dist/plugin-sdk/config-LR8GH3Ws.js +1 -1
  569. package/dist/plugin-sdk/copilot-proxy.cjs +1 -1
  570. package/dist/plugin-sdk/copilot-proxy.js +1 -1
  571. package/dist/plugin-sdk/core.cjs +1 -1
  572. package/dist/plugin-sdk/core.js +1 -1
  573. package/dist/plugin-sdk/deliver-AORlkcbD.cjs +1 -1
  574. package/dist/plugin-sdk/deliver-BiBFW5fm.cjs +1 -1
  575. package/dist/plugin-sdk/deliver-BpqEPwLO.cjs +1 -1
  576. package/dist/plugin-sdk/deliver-BvC6aUKM.js +1 -1
  577. package/dist/plugin-sdk/deliver-CT0AIuK1.cjs +1 -1
  578. package/dist/plugin-sdk/deliver-CmddcjtG.cjs +1 -1
  579. package/dist/plugin-sdk/deliver-DFz5N1Eh.js +1 -1
  580. package/dist/plugin-sdk/deliver-DcJWpoqf.cjs +1 -1
  581. package/dist/plugin-sdk/deliver-ILim6ANU.js +1 -1
  582. package/dist/plugin-sdk/deliver-QgxW9IxV.js +1 -1
  583. package/dist/plugin-sdk/deliver-cT-Q8v0h.js +1 -1
  584. package/dist/plugin-sdk/deliver-cu_NQTmb.js +1 -1
  585. package/dist/plugin-sdk/device-pair.cjs +1 -1
  586. package/dist/plugin-sdk/device-pair.js +1 -1
  587. package/dist/plugin-sdk/diagnostic-BCyE1aYH.cjs +1 -1
  588. package/dist/plugin-sdk/diagnostic-BFea3l_a.js +1 -1
  589. package/dist/plugin-sdk/diagnostic-BvR96WdC.js +1 -1
  590. package/dist/plugin-sdk/diagnostic-C0xDsk89.cjs +1 -1
  591. package/dist/plugin-sdk/diagnostic-CEPhLgsW.cjs +1 -1
  592. package/dist/plugin-sdk/diagnostic-CbLwUqTE.cjs +1 -1
  593. package/dist/plugin-sdk/diagnostic-CbfxoqI_.cjs +1 -1
  594. package/dist/plugin-sdk/diagnostic-DDwUPG1m.js +1 -1
  595. package/dist/plugin-sdk/diagnostic-DS_mKKOu.js +1 -1
  596. package/dist/plugin-sdk/diagnostic-DYpehqHU.cjs +1 -1
  597. package/dist/plugin-sdk/diagnostic-DkncnZ3G.js +1 -1
  598. package/dist/plugin-sdk/diagnostic-Dz8HPEDe.js +1 -1
  599. package/dist/plugin-sdk/diagnostics-otel.cjs +1 -1
  600. package/dist/plugin-sdk/diagnostics-otel.js +1 -1
  601. package/dist/plugin-sdk/diffs.cjs +1 -1
  602. package/dist/plugin-sdk/diffs.js +1 -1
  603. package/dist/plugin-sdk/discord.cjs +1 -1
  604. package/dist/plugin-sdk/discord.js +1 -1
  605. package/dist/plugin-sdk/dispatch-6m3206FH.js +1 -1
  606. package/dist/plugin-sdk/dispatch-BYZNaz0n.cjs +1 -1
  607. package/dist/plugin-sdk/dispatch-BahZCe-D.js +1 -1
  608. package/dist/plugin-sdk/dispatch-Bi3yeWxb.cjs +1 -1
  609. package/dist/plugin-sdk/dispatch-BjB_TqWy.cjs +1 -1
  610. package/dist/plugin-sdk/dispatch-CNR186B3.js +1 -1
  611. package/dist/plugin-sdk/dispatch-CStT30wi.cjs +1 -1
  612. package/dist/plugin-sdk/dispatch-CdZAW9dg.cjs +1 -1
  613. package/dist/plugin-sdk/dispatch-Ewg2Jgw9.js +1 -1
  614. package/dist/plugin-sdk/dispatch-HRTsdeCV.js +1 -1
  615. package/dist/plugin-sdk/feishu.cjs +1 -1
  616. package/dist/plugin-sdk/feishu.js +1 -1
  617. package/dist/plugin-sdk/fetch-7Iq9POda.js +1 -1
  618. package/dist/plugin-sdk/fetch-B1GR6-u4.js +1 -1
  619. package/dist/plugin-sdk/fetch-B27H-XCf.js +1 -1
  620. package/dist/plugin-sdk/fetch-BMYDLRWo.js +1 -1
  621. package/dist/plugin-sdk/fetch-BN9y3kTg.cjs +1 -1
  622. package/dist/plugin-sdk/fetch-BVEVk5YF.js +1 -1
  623. package/dist/plugin-sdk/fetch-BY6lVRlY.cjs +1 -1
  624. package/dist/plugin-sdk/fetch-Bi8krAaT.cjs +1 -1
  625. package/dist/plugin-sdk/fetch-BjXhwqrE.cjs +1 -1
  626. package/dist/plugin-sdk/fetch-BtZY623f.js +1 -1
  627. package/dist/plugin-sdk/fetch-C-HRWp5R.js +1 -1
  628. package/dist/plugin-sdk/fetch-C3LEMysf.js +1 -1
  629. package/dist/plugin-sdk/fetch-CCLWsYaQ.js +1 -1
  630. package/dist/plugin-sdk/fetch-CZewCAvu.cjs +1 -1
  631. package/dist/plugin-sdk/fetch-ClKErpni.cjs +1 -1
  632. package/dist/plugin-sdk/fetch-DBRI0sKI.js +1 -1
  633. package/dist/plugin-sdk/fetch-DQxuOB8o.cjs +1 -1
  634. package/dist/plugin-sdk/fetch-DUMEaqum.cjs +1 -1
  635. package/dist/plugin-sdk/fetch-DpwR_cJU.cjs +1 -1
  636. package/dist/plugin-sdk/fetch-J0IzopiJ.js +1 -1
  637. package/dist/plugin-sdk/fetch-guard-D8TdhTHU.js +1 -1
  638. package/dist/plugin-sdk/fetch-guard-DC_pFJEy.js +1 -1
  639. package/dist/plugin-sdk/fetch-guard-DDkd30BG.js +1 -1
  640. package/dist/plugin-sdk/fetch-guard-DELiFG5g.js +1 -1
  641. package/dist/plugin-sdk/fetch-guard-DIYjBRpq.cjs +1 -1
  642. package/dist/plugin-sdk/fetch-guard-DPVfELS7.js +1 -1
  643. package/dist/plugin-sdk/fetch-guard-Dpz6CnJY.cjs +1 -1
  644. package/dist/plugin-sdk/fetch-guard-DqNKwgHP.cjs +1 -1
  645. package/dist/plugin-sdk/fetch-guard-DqTxZ3G8.cjs +1 -1
  646. package/dist/plugin-sdk/fetch-guard-EoAitPe9.cjs +1 -1
  647. package/dist/plugin-sdk/fetch-guard-qfU6iTvp.js +1 -1
  648. package/dist/plugin-sdk/fetch-guard-u2Dt6P9i.cjs +1 -1
  649. package/dist/plugin-sdk/fetch-lw-aF17e.cjs +1 -1
  650. package/dist/plugin-sdk/fetch-timeout-6oZsqWxA.js +1 -1
  651. package/dist/plugin-sdk/fetch-timeout-BygUD0rd.cjs +1 -1
  652. package/dist/plugin-sdk/fetch-timeout-CLw1U7VS.js +1 -1
  653. package/dist/plugin-sdk/fetch-timeout-CX1w-9p4.cjs +1 -1
  654. package/dist/plugin-sdk/fetch-timeout-Coc9xyC3.cjs +1 -1
  655. package/dist/plugin-sdk/fetch-timeout-Cz6GuU_c.js +1 -1
  656. package/dist/plugin-sdk/fetch-timeout-DC8T2JCr.js +1 -1
  657. package/dist/plugin-sdk/fetch-timeout-DFDmks9T.cjs +1 -1
  658. package/dist/plugin-sdk/fetch-timeout-DkYpp08Q.js +1 -1
  659. package/dist/plugin-sdk/github-copilot-token-BHdMLLqf.cjs +1 -1
  660. package/dist/plugin-sdk/github-copilot-token-Bt4PduRB.js +1 -1
  661. package/dist/plugin-sdk/github-copilot-token-C1O2cBqk.cjs +1 -1
  662. package/dist/plugin-sdk/github-copilot-token-C1hiDugd.js +1 -1
  663. package/dist/plugin-sdk/github-copilot-token-C8j8_NjX.js +1 -1
  664. package/dist/plugin-sdk/github-copilot-token-CCrgp2py.cjs +1 -1
  665. package/dist/plugin-sdk/github-copilot-token-DoHgkI2r.cjs +1 -1
  666. package/dist/plugin-sdk/github-copilot-token-N8vnLZPw.js +1 -1
  667. package/dist/plugin-sdk/github-copilot-token-TMkfxxD2.cjs +1 -1
  668. package/dist/plugin-sdk/github-copilot-token-vKAKX6iE.js +1 -1
  669. package/dist/plugin-sdk/github-copilot-token-ylX_gawo.js +1 -1
  670. package/dist/plugin-sdk/github-copilot-token-zskwAEpd.cjs +1 -1
  671. package/dist/plugin-sdk/google-gemini-cli-auth.cjs +1 -1
  672. package/dist/plugin-sdk/google-gemini-cli-auth.js +1 -1
  673. package/dist/plugin-sdk/googlechat.cjs +1 -1
  674. package/dist/plugin-sdk/googlechat.js +1 -1
  675. package/dist/plugin-sdk/image-0OHO98b9.cjs +1 -1
  676. package/dist/plugin-sdk/image-B9SLKAOs.cjs +1 -1
  677. package/dist/plugin-sdk/image-BVnZq5Y4.js +1 -1
  678. package/dist/plugin-sdk/image-CKLAyhco.js +1 -1
  679. package/dist/plugin-sdk/image-DUHEJeBF.js +1 -1
  680. package/dist/plugin-sdk/image-DngxW2Nh.cjs +1 -1
  681. package/dist/plugin-sdk/image-DrPh2689.cjs +1 -1
  682. package/dist/plugin-sdk/image-ISWO0Dwt.js +1 -1
  683. package/dist/plugin-sdk/image-KfZYW6Lh.cjs +1 -1
  684. package/dist/plugin-sdk/image-YVlw68CK.js +1 -1
  685. package/dist/plugin-sdk/image-gehqJnV6.js +1 -1
  686. package/dist/plugin-sdk/image-jUYo-0eT.cjs +1 -1
  687. package/dist/plugin-sdk/imessage.cjs +1 -1
  688. package/dist/plugin-sdk/imessage.js +1 -1
  689. package/dist/plugin-sdk/index.cjs +1 -1
  690. package/dist/plugin-sdk/index.js +1 -1
  691. package/dist/plugin-sdk/ir-78toXVqC.cjs +1 -1
  692. package/dist/plugin-sdk/ir-A_TqKaXP.cjs +1 -1
  693. package/dist/plugin-sdk/ir-B0_rUT7m.js +1 -1
  694. package/dist/plugin-sdk/ir-B7agH4cQ.cjs +1 -1
  695. package/dist/plugin-sdk/ir-B9ap_YNW.cjs +1 -1
  696. package/dist/plugin-sdk/ir-BxKSHYao.cjs +1 -1
  697. package/dist/plugin-sdk/ir-BzZArF6l.js +1 -1
  698. package/dist/plugin-sdk/ir-CpkEWZD6.js +1 -1
  699. package/dist/plugin-sdk/ir-D4Dz-giw.cjs +1 -1
  700. package/dist/plugin-sdk/ir-DJ08DSkk.js +1 -1
  701. package/dist/plugin-sdk/ir-L2vhtuGx.js +1 -1
  702. package/dist/plugin-sdk/ir-ntSck5Kp.js +1 -1
  703. package/dist/plugin-sdk/irc.cjs +1 -1
  704. package/dist/plugin-sdk/irc.js +1 -1
  705. package/dist/plugin-sdk/keyed-async-queue.cjs +1 -1
  706. package/dist/plugin-sdk/keyed-async-queue.js +1 -1
  707. package/dist/plugin-sdk/line.cjs +1 -1
  708. package/dist/plugin-sdk/line.js +1 -1
  709. package/dist/plugin-sdk/llm-task.cjs +1 -1
  710. package/dist/plugin-sdk/llm-task.js +1 -1
  711. package/dist/plugin-sdk/load-options-B9Ss5YOO.js +1 -1
  712. package/dist/plugin-sdk/load-options-BOfn6Zgo.cjs +1 -1
  713. package/dist/plugin-sdk/load-options-BXvm8HVv.js +1 -1
  714. package/dist/plugin-sdk/load-options-Bb7u8yZz.cjs +1 -1
  715. package/dist/plugin-sdk/load-options-BcSg1ODN.js +1 -1
  716. package/dist/plugin-sdk/load-options-NqnXJ-Nh.cjs +1 -1
  717. package/dist/plugin-sdk/lobster.cjs +1 -1
  718. package/dist/plugin-sdk/lobster.js +1 -1
  719. package/dist/plugin-sdk/local-roots-B0zm186S.js +1 -1
  720. package/dist/plugin-sdk/local-roots-B4Uy4kG3.cjs +1 -1
  721. package/dist/plugin-sdk/local-roots-CM1R1Ncr.cjs +1 -1
  722. package/dist/plugin-sdk/local-roots-CW78ZeZV.js +1 -1
  723. package/dist/plugin-sdk/local-roots-CnsaE7a_.js +1 -1
  724. package/dist/plugin-sdk/local-roots-D1k-fAlE.cjs +1 -1
  725. package/dist/plugin-sdk/local-roots-DQ_vfJPK.js +1 -1
  726. package/dist/plugin-sdk/local-roots-DYlB1au6.cjs +1 -1
  727. package/dist/plugin-sdk/local-roots-H4-t0qG_.js +1 -1
  728. package/dist/plugin-sdk/local-roots-SCyeUfM3.cjs +1 -1
  729. package/dist/plugin-sdk/local-roots-l4PqCmiU.js +1 -1
  730. package/dist/plugin-sdk/local-roots-xHoEq1Fq.cjs +1 -1
  731. package/dist/plugin-sdk/logger-6O6OsYBL.cjs +1 -1
  732. package/dist/plugin-sdk/logger-BlddiV_d.cjs +1 -1
  733. package/dist/plugin-sdk/logger-Bm93ZKOk.cjs +1 -1
  734. package/dist/plugin-sdk/logger-BtrWb0dj.js +1 -1
  735. package/dist/plugin-sdk/logger-C210xuWx.js +1 -1
  736. package/dist/plugin-sdk/logger-DJGHvDbX.js +1 -1
  737. package/dist/plugin-sdk/logger-DPlqYkRm.cjs +1 -1
  738. package/dist/plugin-sdk/logger-DUYnS-W3.cjs +1 -1
  739. package/dist/plugin-sdk/logger-DwWqfo66.js +1 -1
  740. package/dist/plugin-sdk/logger-vBDTZWl3.js +1 -1
  741. package/dist/plugin-sdk/login-BN1TsFp4.cjs +1 -1
  742. package/dist/plugin-sdk/login-BXUtcSnB.cjs +1 -1
  743. package/dist/plugin-sdk/login-BoMH2iJT.js +1 -1
  744. package/dist/plugin-sdk/login-BtT7yRJO.js +1 -1
  745. package/dist/plugin-sdk/login-COzybMRK.js +1 -1
  746. package/dist/plugin-sdk/login-Cw1jFbel.cjs +1 -1
  747. package/dist/plugin-sdk/login-DEmpr5YK.js +1 -1
  748. package/dist/plugin-sdk/login-Dln00cFs.cjs +1 -1
  749. package/dist/plugin-sdk/login-S2Fe5n5K.cjs +1 -1
  750. package/dist/plugin-sdk/login-TieaF0ts.cjs +1 -1
  751. package/dist/plugin-sdk/login-ZQK4uJLw.js +1 -1
  752. package/dist/plugin-sdk/login-fKxJv0_F.js +1 -1
  753. package/dist/plugin-sdk/login-qr-1ilmySGx.js +1 -1
  754. package/dist/plugin-sdk/login-qr-B0ZSZaNI.js +1 -1
  755. package/dist/plugin-sdk/login-qr-B2P2Ky4j.js +1 -1
  756. package/dist/plugin-sdk/login-qr-B2U87iU8.js +1 -1
  757. package/dist/plugin-sdk/login-qr-B4x_eWI_.js +1 -1
  758. package/dist/plugin-sdk/login-qr-BIaJB24t.cjs +1 -1
  759. package/dist/plugin-sdk/login-qr-BMl5Beq2.cjs +1 -1
  760. package/dist/plugin-sdk/login-qr-Bkm3QorK.cjs +1 -1
  761. package/dist/plugin-sdk/login-qr-ClL8FMAJ.cjs +1 -1
  762. package/dist/plugin-sdk/login-qr-DFVK1lg-.js +1 -1
  763. package/dist/plugin-sdk/login-qr-DhieI9fL.cjs +1 -1
  764. package/dist/plugin-sdk/login-qr-DyQT1QnE.cjs +1 -1
  765. package/dist/plugin-sdk/manager-0tvX3Z_N.cjs +1 -1
  766. package/dist/plugin-sdk/manager-8uylP7PH.cjs +1 -1
  767. package/dist/plugin-sdk/manager-B6hWglXe.js +1 -1
  768. package/dist/plugin-sdk/manager-BGoKN9ur.js +1 -1
  769. package/dist/plugin-sdk/manager-BRP1lzb6.js +1 -1
  770. package/dist/plugin-sdk/manager-BeLNhsXC.cjs +1 -1
  771. package/dist/plugin-sdk/manager-BnytMgmq.js +1 -1
  772. package/dist/plugin-sdk/manager-BoMQeM1I.cjs +1 -1
  773. package/dist/plugin-sdk/manager-CYZY9vcM.js +1 -1
  774. package/dist/plugin-sdk/manager-DCDy2V1U.cjs +1 -1
  775. package/dist/plugin-sdk/manager-DE7sDip8.cjs +1 -1
  776. package/dist/plugin-sdk/manager-PwgQZNK1.js +1 -1
  777. package/dist/plugin-sdk/matrix.cjs +1 -1
  778. package/dist/plugin-sdk/matrix.js +1 -1
  779. package/dist/plugin-sdk/mattermost.cjs +1 -1
  780. package/dist/plugin-sdk/mattermost.js +1 -1
  781. package/dist/plugin-sdk/memory-core.cjs +1 -1
  782. package/dist/plugin-sdk/memory-core.js +1 -1
  783. package/dist/plugin-sdk/minimax-portal-auth.cjs +1 -1
  784. package/dist/plugin-sdk/minimax-portal-auth.js +1 -1
  785. package/dist/plugin-sdk/model-auth-BgS7ynQw.cjs +1 -1
  786. package/dist/plugin-sdk/model-auth-CKlA2xRB.cjs +1 -1
  787. package/dist/plugin-sdk/model-auth-CLnFIqcf.cjs +1 -1
  788. package/dist/plugin-sdk/model-auth-D7YupJDS.js +1 -1
  789. package/dist/plugin-sdk/model-auth-eNVBeC-B.js +1 -1
  790. package/dist/plugin-sdk/model-auth-fJrNIbke.cjs +1 -1
  791. package/dist/plugin-sdk/model-auth-g6eGgTwR.js +1 -1
  792. package/dist/plugin-sdk/model-auth-wcxJptQX.js +1 -1
  793. package/dist/plugin-sdk/model-selection-4ExiFkaW.js +1 -1
  794. package/dist/plugin-sdk/model-selection-CZY_x2-a.cjs +1 -1
  795. package/dist/plugin-sdk/msteams.cjs +1 -1
  796. package/dist/plugin-sdk/msteams.js +1 -1
  797. package/dist/plugin-sdk/nextcloud-talk.cjs +1 -1
  798. package/dist/plugin-sdk/nextcloud-talk.js +1 -1
  799. package/dist/plugin-sdk/nostr.cjs +1 -1
  800. package/dist/plugin-sdk/nostr.js +1 -1
  801. package/dist/plugin-sdk/outbound-2VVSR_d4.js +1 -1
  802. package/dist/plugin-sdk/outbound-B03BQa7T.cjs +1 -1
  803. package/dist/plugin-sdk/outbound-BE8CJ9c_.js +1 -1
  804. package/dist/plugin-sdk/outbound-BWtGs0dn.cjs +1 -1
  805. package/dist/plugin-sdk/outbound-BrD0UsX0.js +1 -1
  806. package/dist/plugin-sdk/outbound-Bvu4LbQx.js +1 -1
  807. package/dist/plugin-sdk/outbound-C5rNt-8z.cjs +1 -1
  808. package/dist/plugin-sdk/outbound-C6BJCoYf.cjs +1 -1
  809. package/dist/plugin-sdk/outbound-Cgc0JJtB.js +1 -1
  810. package/dist/plugin-sdk/outbound-DAHIkpiA.cjs +1 -1
  811. package/dist/plugin-sdk/outbound-DnO_udAm.cjs +1 -1
  812. package/dist/plugin-sdk/outbound-UAHsCNyW.js +1 -1
  813. package/dist/plugin-sdk/outbound-attachment-0QahtSQB.cjs +1 -1
  814. package/dist/plugin-sdk/outbound-attachment-8qvAj1MK.js +1 -1
  815. package/dist/plugin-sdk/outbound-attachment-B6SJy_CG.js +1 -1
  816. package/dist/plugin-sdk/outbound-attachment-BVdSGifg.js +1 -1
  817. package/dist/plugin-sdk/outbound-attachment-C-QqSQ79.cjs +1 -1
  818. package/dist/plugin-sdk/outbound-attachment-CYGrnygD.cjs +1 -1
  819. package/dist/plugin-sdk/outbound-attachment-CtA5eBgj.cjs +1 -1
  820. package/dist/plugin-sdk/outbound-attachment-D8Ng5uVX.cjs +1 -1
  821. package/dist/plugin-sdk/outbound-attachment-DS0S0NLK.js +1 -1
  822. package/dist/plugin-sdk/outbound-attachment-Ds2XsjQl.js +1 -1
  823. package/dist/plugin-sdk/outbound-attachment-acB4qID1.js +1 -1
  824. package/dist/plugin-sdk/outbound-attachment-x4Q2SVIA.cjs +1 -1
  825. package/dist/plugin-sdk/paths-BPlgbwrb.cjs +1 -1
  826. package/dist/plugin-sdk/paths-Bcdg3ma0.cjs +1 -1
  827. package/dist/plugin-sdk/paths-BpQOWYiT.js +1 -1
  828. package/dist/plugin-sdk/paths-BvlJvmRS.cjs +1 -1
  829. package/dist/plugin-sdk/paths-CIcxeNL-.cjs +1 -1
  830. package/dist/plugin-sdk/paths-CXgWvWAM.js +1 -1
  831. package/dist/plugin-sdk/paths-Chp3zwtq.cjs +1 -1
  832. package/dist/plugin-sdk/paths-CnHSNSeR.js +1 -1
  833. package/dist/plugin-sdk/paths-Cqca1YmF.cjs +1 -1
  834. package/dist/plugin-sdk/paths-CtrEseGU.js +1 -1
  835. package/dist/plugin-sdk/paths-D55o_j8-.js +1 -1
  836. package/dist/plugin-sdk/paths-D90l3h_o.cjs +1 -1
  837. package/dist/plugin-sdk/paths-DaRoqzBQ.js +1 -1
  838. package/dist/plugin-sdk/paths-Dd7r1qlB.cjs +1 -1
  839. package/dist/plugin-sdk/paths-DhSjTRMz.js +1 -1
  840. package/dist/plugin-sdk/paths-Do0djuaj.js +1 -1
  841. package/dist/plugin-sdk/paths-J4JUiRsa.js +1 -1
  842. package/dist/plugin-sdk/paths-cBAF6Bj0.js +1 -1
  843. package/dist/plugin-sdk/paths-piJASC5k.js +1 -1
  844. package/dist/plugin-sdk/paths-rO4ehkyU.js +1 -1
  845. package/dist/plugin-sdk/pi-model-discovery--UcCzdQg.js +1 -1
  846. package/dist/plugin-sdk/pi-model-discovery-Bi4dKtW0.cjs +1 -1
  847. package/dist/plugin-sdk/pi-model-discovery-CCK2Ppj9.js +1 -1
  848. package/dist/plugin-sdk/pi-model-discovery-CRSZ0OFi.js +1 -1
  849. package/dist/plugin-sdk/pi-model-discovery-Cx_r4FGY.js +1 -1
  850. package/dist/plugin-sdk/pi-model-discovery-D3JQMjAa.cjs +1 -1
  851. package/dist/plugin-sdk/pi-model-discovery-DN1RHetG.cjs +1 -1
  852. package/dist/plugin-sdk/pi-model-discovery-DVFSU0-f.cjs +1 -1
  853. package/dist/plugin-sdk/pi-model-discovery-DWMAAhA-.cjs +1 -1
  854. package/dist/plugin-sdk/pi-model-discovery-DYOHzCjs.js +1 -1
  855. package/dist/plugin-sdk/pi-model-discovery-DdSVvbQ5.cjs +1 -1
  856. package/dist/plugin-sdk/pi-model-discovery-DejkxBol.js +1 -1
  857. package/dist/plugin-sdk/pi-model-discovery-SmVAFMj_.cjs +1 -1
  858. package/dist/plugin-sdk/pi-model-discovery-ma8st1Ek.js +1 -1
  859. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-B2WodYBY.cjs +1 -1
  860. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BC114tUb.js +1 -1
  861. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BF6jP1nM.js +1 -1
  862. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-Beg-U7Z-.cjs +1 -1
  863. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-BkEYsSLL.js +1 -1
  864. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-C21sWtkh.js +1 -1
  865. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CKkgBGIj.cjs +1 -1
  866. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-CNun__L-.js +1 -1
  867. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-Clulhv2X.cjs +1 -1
  868. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-DvwL5in9.cjs +1 -1
  869. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-FnzjmZqP.js +1 -1
  870. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-Rq5y0QJ2.cjs +1 -1
  871. package/dist/plugin-sdk/polls-BuaJuIpV.cjs +1 -1
  872. package/dist/plugin-sdk/polls-CBAGZuJ6.js +1 -1
  873. package/dist/plugin-sdk/polls-CSKMbBIS.js +1 -1
  874. package/dist/plugin-sdk/polls-D0wY0FvT.cjs +1 -1
  875. package/dist/plugin-sdk/polls-PGxiE05J.js +1 -1
  876. package/dist/plugin-sdk/polls-yWqSCEP0.cjs +1 -1
  877. package/dist/plugin-sdk/proxy-env-B765haXA.js +1 -1
  878. package/dist/plugin-sdk/proxy-env-Bcl14j2_.cjs +1 -1
  879. package/dist/plugin-sdk/proxy-env-BlrHtJWH.js +1 -1
  880. package/dist/plugin-sdk/proxy-env-D48qBPAr.cjs +1 -1
  881. package/dist/plugin-sdk/proxy-env-DGzNnnJh.js +1 -1
  882. package/dist/plugin-sdk/proxy-env-DQoJjkWE.cjs +1 -1
  883. package/dist/plugin-sdk/proxy-env-DWw9TnOj.cjs +1 -1
  884. package/dist/plugin-sdk/proxy-env-MEjSyzTr.js +1 -1
  885. package/dist/plugin-sdk/proxy-env-a590sPAz.cjs +1 -1
  886. package/dist/plugin-sdk/proxy-env-k93igu7v.cjs +1 -1
  887. package/dist/plugin-sdk/proxy-env-m9eG3uZN.js +1 -1
  888. package/dist/plugin-sdk/proxy-env-t6hcaFqC.js +1 -1
  889. package/dist/plugin-sdk/proxy-fetch-B9aXJVe-.js +1 -1
  890. package/dist/plugin-sdk/proxy-fetch-BaA3JYgW.cjs +1 -1
  891. package/dist/plugin-sdk/proxy-fetch-BwXFVsHE.cjs +1 -1
  892. package/dist/plugin-sdk/proxy-fetch-BzcKzknk.cjs +1 -1
  893. package/dist/plugin-sdk/proxy-fetch-CYVChsKE.js +1 -1
  894. package/dist/plugin-sdk/proxy-fetch-ClOb2LUH.js +1 -1
  895. package/dist/plugin-sdk/proxy-fetch-DH7VIiBH.cjs +1 -1
  896. package/dist/plugin-sdk/proxy-fetch-DPOhfrou.cjs +1 -1
  897. package/dist/plugin-sdk/proxy-fetch-DXt2R_Z5.js +1 -1
  898. package/dist/plugin-sdk/proxy-fetch-Del551nu.js +1 -1
  899. package/dist/plugin-sdk/proxy-fetch-YCVHz7Rl.js +1 -1
  900. package/dist/plugin-sdk/proxy-fetch-qbrYAz8k.cjs +1 -1
  901. package/dist/plugin-sdk/pw-ai-3piACPqP.cjs +1 -1
  902. package/dist/plugin-sdk/pw-ai-8dajXBkZ.js +1 -1
  903. package/dist/plugin-sdk/pw-ai-B7mrBDW5.js +1 -1
  904. package/dist/plugin-sdk/pw-ai-BLD7x-3a.js +1 -1
  905. package/dist/plugin-sdk/pw-ai-BYmANcaC.cjs +1 -1
  906. package/dist/plugin-sdk/pw-ai-C1rVW06B.cjs +1 -1
  907. package/dist/plugin-sdk/pw-ai-CCDvaBUm.cjs +1 -1
  908. package/dist/plugin-sdk/pw-ai-CVYUOcKM.js +1 -1
  909. package/dist/plugin-sdk/pw-ai-DBg5CCXp.cjs +1 -1
  910. package/dist/plugin-sdk/pw-ai-DY11CCd3.cjs +1 -1
  911. package/dist/plugin-sdk/pw-ai-Kf2RyA25.js +1 -1
  912. package/dist/plugin-sdk/pw-ai-f5yF3n3t.js +1 -1
  913. package/dist/plugin-sdk/qmd-manager-B3xNbdye.cjs +1 -1
  914. package/dist/plugin-sdk/qmd-manager-BMyDNBPi.js +1 -1
  915. package/dist/plugin-sdk/qmd-manager-BZhiv_zq.cjs +1 -1
  916. package/dist/plugin-sdk/qmd-manager-C3uVDbhW.js +1 -1
  917. package/dist/plugin-sdk/qmd-manager-CW46NrS-.cjs +1 -1
  918. package/dist/plugin-sdk/qmd-manager-C_e04BNg.js +1 -1
  919. package/dist/plugin-sdk/qmd-manager-CczVoslK.cjs +1 -1
  920. package/dist/plugin-sdk/qmd-manager-CzLKqPmR.js +1 -1
  921. package/dist/plugin-sdk/qmd-manager-DFh8b5N-.cjs +1 -1
  922. package/dist/plugin-sdk/qmd-manager-DXLfZZMI.js +1 -1
  923. package/dist/plugin-sdk/qmd-manager-FL9fAfNo.cjs +1 -1
  924. package/dist/plugin-sdk/qmd-manager-fWxbGqzk.js +1 -1
  925. package/dist/plugin-sdk/query-expansion-0zYzKrrd.cjs +1 -1
  926. package/dist/plugin-sdk/query-expansion-BYSjmpkV.cjs +1 -1
  927. package/dist/plugin-sdk/query-expansion-CAboqtWr.js +1 -1
  928. package/dist/plugin-sdk/query-expansion-C_DnhmUy.js +1 -1
  929. package/dist/plugin-sdk/query-expansion-Cb2vnF6y.js +1 -1
  930. package/dist/plugin-sdk/query-expansion-DCeqywxh.cjs +1 -1
  931. package/dist/plugin-sdk/query-expansion-DF4LMxRQ.js +1 -1
  932. package/dist/plugin-sdk/query-expansion-DKJkqmNM.cjs +1 -1
  933. package/dist/plugin-sdk/query-expansion-DO2CFW4z.cjs +1 -1
  934. package/dist/plugin-sdk/query-expansion-DyCDaZbL.js +1 -1
  935. package/dist/plugin-sdk/query-expansion-cpXCyoDy.cjs +1 -1
  936. package/dist/plugin-sdk/query-expansion-r_iXkNzt.js +1 -1
  937. package/dist/plugin-sdk/qwen-portal-auth.cjs +1 -1
  938. package/dist/plugin-sdk/qwen-portal-auth.js +1 -1
  939. package/dist/plugin-sdk/render-6fCdtAr6.cjs +1 -1
  940. package/dist/plugin-sdk/render-CBsnn-2A.js +1 -1
  941. package/dist/plugin-sdk/render-CzHaQB0d.cjs +1 -1
  942. package/dist/plugin-sdk/render-DGmfCIRG.js +1 -1
  943. package/dist/plugin-sdk/render-DhTJXP1U.js +1 -1
  944. package/dist/plugin-sdk/render-Djx15dPh.js +1 -1
  945. package/dist/plugin-sdk/render-DxBO2Blp.cjs +1 -1
  946. package/dist/plugin-sdk/render-g5VlmgpF.cjs +1 -1
  947. package/dist/plugin-sdk/reply-BrHB7v5V.cjs +1 -1
  948. package/dist/plugin-sdk/reply-Clex4c2R.js +1 -1
  949. package/dist/plugin-sdk/resolve-outbound-target-BHLQMMp-.cjs +1 -1
  950. package/dist/plugin-sdk/resolve-outbound-target-Cvz2WXAk.cjs +1 -1
  951. package/dist/plugin-sdk/resolve-outbound-target-DDqGniMw.js +1 -1
  952. package/dist/plugin-sdk/resolve-outbound-target-DEpmpEep.js +1 -1
  953. package/dist/plugin-sdk/send--HeMLLzj.js +1 -1
  954. package/dist/plugin-sdk/send-2IhtEEzb.js +1 -1
  955. package/dist/plugin-sdk/send-9tPLnqkc.js +1 -1
  956. package/dist/plugin-sdk/send-B-exJfkg.js +1 -1
  957. package/dist/plugin-sdk/send-B4kzPtcN.js +1 -1
  958. package/dist/plugin-sdk/send-BCSkdYN6.cjs +1 -1
  959. package/dist/plugin-sdk/send-BEmZxBcF.js +1 -1
  960. package/dist/plugin-sdk/send-BHvZIrbJ.cjs +1 -1
  961. package/dist/plugin-sdk/send-BLbCBxeF.js +1 -1
  962. package/dist/plugin-sdk/send-BOkABdQu.cjs +1 -1
  963. package/dist/plugin-sdk/send-BPNd63Qs.js +1 -1
  964. package/dist/plugin-sdk/send-BVAm6Zbr.cjs +1 -1
  965. package/dist/plugin-sdk/send-B_619b3s.js +1 -1
  966. package/dist/plugin-sdk/send-BcuylzbX.js +1 -1
  967. package/dist/plugin-sdk/send-BdFvK9Wc2.js +1 -1
  968. package/dist/plugin-sdk/send-Bh-J7XWZ.cjs +1 -1
  969. package/dist/plugin-sdk/send-BkREPc90.cjs +1 -1
  970. package/dist/plugin-sdk/send-Bp4f-KJu.cjs +1 -1
  971. package/dist/plugin-sdk/send-BtF36kYb.js +1 -1
  972. package/dist/plugin-sdk/send-C6S8tkTA.cjs +1 -1
  973. package/dist/plugin-sdk/send-CDQF_izk.js +1 -1
  974. package/dist/plugin-sdk/send-CF3qas-K.js +1 -1
  975. package/dist/plugin-sdk/send-CFKQX2Wo.js +1 -1
  976. package/dist/plugin-sdk/send-CIP1u5a-.js +1 -1
  977. package/dist/plugin-sdk/send-CIxh7PV0.cjs +1 -1
  978. package/dist/plugin-sdk/send-CJJdcDHX.js +1 -1
  979. package/dist/plugin-sdk/send-COtvydDt.cjs +1 -1
  980. package/dist/plugin-sdk/send-CPwh7tRu.js +1 -1
  981. package/dist/plugin-sdk/send-CRnIqXN9.cjs +1 -1
  982. package/dist/plugin-sdk/send-CSqipUeV.cjs +1 -1
  983. package/dist/plugin-sdk/send-Chfe8tPY.js +1 -1
  984. package/dist/plugin-sdk/send-ClMvdjfg.js +1 -1
  985. package/dist/plugin-sdk/send-CmoJSYhT.js +1 -1
  986. package/dist/plugin-sdk/send-Cs5jSTw0.cjs +1 -1
  987. package/dist/plugin-sdk/send-D-6Et_9H.js +1 -1
  988. package/dist/plugin-sdk/send-D13uFnzH.cjs +1 -1
  989. package/dist/plugin-sdk/send-D3eT0F4N.cjs +1 -1
  990. package/dist/plugin-sdk/send-DAtg_VHa.js +1 -1
  991. package/dist/plugin-sdk/send-DCF59ijQ.cjs +1 -1
  992. package/dist/plugin-sdk/send-DN2xic3w.cjs +1 -1
  993. package/dist/plugin-sdk/send-DOjSTB6D.cjs +1 -1
  994. package/dist/plugin-sdk/send-DavwL7cF.js +1 -1
  995. package/dist/plugin-sdk/send-Dbmn1rgD.cjs +1 -1
  996. package/dist/plugin-sdk/send-DhfDqcwc.cjs +1 -1
  997. package/dist/plugin-sdk/send-DsDCrJWq.js +1 -1
  998. package/dist/plugin-sdk/send-DyR5Lpl-.js +1 -1
  999. package/dist/plugin-sdk/send-DyzuwDjE.js +1 -1
  1000. package/dist/plugin-sdk/send-GtphEa1b.cjs +1 -1
  1001. package/dist/plugin-sdk/send-HZNY_u3L.cjs +1 -1
  1002. package/dist/plugin-sdk/send-IM-76QZu.js +1 -1
  1003. package/dist/plugin-sdk/send-IqcgAO8b.cjs +1 -1
  1004. package/dist/plugin-sdk/send-OQcuL9tP.js +1 -1
  1005. package/dist/plugin-sdk/send-_92aOzWU.cjs +1 -1
  1006. package/dist/plugin-sdk/send-h_kE-cAK.js +1 -1
  1007. package/dist/plugin-sdk/send-jOMdGt0L.cjs +1 -1
  1008. package/dist/plugin-sdk/send-mZ_d-t_3.cjs +1 -1
  1009. package/dist/plugin-sdk/send-puyUta4_.cjs +1 -1
  1010. package/dist/plugin-sdk/send-t5U34FhY.cjs +1 -1
  1011. package/dist/plugin-sdk/send-tvw8j-Se.cjs +1 -1
  1012. package/dist/plugin-sdk/send-z1vaCgF3.cjs +1 -1
  1013. package/dist/plugin-sdk/session--K1m5v7m.js +1 -1
  1014. package/dist/plugin-sdk/session-B1DJ45om.js +1 -1
  1015. package/dist/plugin-sdk/session-B80NWO1m.js +1 -1
  1016. package/dist/plugin-sdk/session-BKPBr445.js +1 -1
  1017. package/dist/plugin-sdk/session-BQLjsBwL.cjs +1 -1
  1018. package/dist/plugin-sdk/session-BZHltxdM.js +1 -1
  1019. package/dist/plugin-sdk/session-Bt5yI-VW.cjs +1 -1
  1020. package/dist/plugin-sdk/session-CC1GqwiM.cjs +1 -1
  1021. package/dist/plugin-sdk/session-C_yqyp3P.cjs +1 -1
  1022. package/dist/plugin-sdk/session-ClISxvtJ.js +1 -1
  1023. package/dist/plugin-sdk/session-D4nn-nXX.cjs +1 -1
  1024. package/dist/plugin-sdk/session-DOA4CJgj.cjs +1 -1
  1025. package/dist/plugin-sdk/sessions-BwTjGneU.js +1 -1
  1026. package/dist/plugin-sdk/sessions-CJbvfO6m.cjs +1 -1
  1027. package/dist/plugin-sdk/signal.cjs +1 -1
  1028. package/dist/plugin-sdk/signal.js +1 -1
  1029. package/dist/plugin-sdk/skill-commands-5WGHyr3h.cjs +1 -1
  1030. package/dist/plugin-sdk/skill-commands-BZlF3g3o.js +1 -1
  1031. package/dist/plugin-sdk/skill-commands-BmBQSmNH.js +1 -1
  1032. package/dist/plugin-sdk/skill-commands-CD4GQXTR.cjs +1 -1
  1033. package/dist/plugin-sdk/skill-commands-CGOPOT-r.js +1 -1
  1034. package/dist/plugin-sdk/skill-commands-CM9ziCQY.cjs +1 -1
  1035. package/dist/plugin-sdk/skill-commands-CVsU5rEy.js +1 -1
  1036. package/dist/plugin-sdk/skill-commands-DNPxE-kc.cjs +1 -1
  1037. package/dist/plugin-sdk/skill-commands-DcgKCVDt.js +1 -1
  1038. package/dist/plugin-sdk/skill-commands-IAwkVeOe.js +1 -1
  1039. package/dist/plugin-sdk/skill-commands-ZyLkXbR_.cjs +1 -1
  1040. package/dist/plugin-sdk/skill-commands-xJWQthd5.cjs +1 -1
  1041. package/dist/plugin-sdk/slack.cjs +1 -1
  1042. package/dist/plugin-sdk/slack.js +1 -1
  1043. package/dist/plugin-sdk/synology-chat.cjs +1 -1
  1044. package/dist/plugin-sdk/synology-chat.js +1 -1
  1045. package/dist/plugin-sdk/tables-BZUVdTR-.cjs +1 -1
  1046. package/dist/plugin-sdk/tables-Bbodvj_s.cjs +1 -1
  1047. package/dist/plugin-sdk/tables-C5b2CtNw.cjs +1 -1
  1048. package/dist/plugin-sdk/tables-C6TX2QvW.js +1 -1
  1049. package/dist/plugin-sdk/tables-Cz5osenc.js +1 -1
  1050. package/dist/plugin-sdk/tables-DBSeZ07-.cjs +1 -1
  1051. package/dist/plugin-sdk/tables-DLSXY2-Q.js +1 -1
  1052. package/dist/plugin-sdk/tables-DQad-z2Z.cjs +1 -1
  1053. package/dist/plugin-sdk/tables-DYuLwL1d.js +1 -1
  1054. package/dist/plugin-sdk/tables-D_J655yN.js +1 -1
  1055. package/dist/plugin-sdk/tables-_vqK8P0T.js +1 -1
  1056. package/dist/plugin-sdk/tables-bSgb8OzP.cjs +1 -1
  1057. package/dist/plugin-sdk/target-errors-B-mJ4s4b.cjs +1 -1
  1058. package/dist/plugin-sdk/target-errors-BAHAHc8f.js +1 -1
  1059. package/dist/plugin-sdk/target-errors-BKruhz8r.js +1 -1
  1060. package/dist/plugin-sdk/target-errors-BbQBR5da.js +1 -1
  1061. package/dist/plugin-sdk/target-errors-BjgLCOTm.cjs +1 -1
  1062. package/dist/plugin-sdk/target-errors-CQbFkOae.js +1 -1
  1063. package/dist/plugin-sdk/target-errors-C_HYvghh.cjs +1 -1
  1064. package/dist/plugin-sdk/target-errors-CaaKhU6m.js +1 -1
  1065. package/dist/plugin-sdk/target-errors-QWTCk98R.cjs +1 -1
  1066. package/dist/plugin-sdk/target-errors-oh0u5K2w.cjs +1 -1
  1067. package/dist/plugin-sdk/targets-BSc11Uk8.cjs +1 -1
  1068. package/dist/plugin-sdk/targets-BSkiizml.js +1 -1
  1069. package/dist/plugin-sdk/targets-CBI0xqve.cjs +1 -1
  1070. package/dist/plugin-sdk/targets-CL5fYQi7.js +1 -1
  1071. package/dist/plugin-sdk/targets-CUZWrFrm.cjs +1 -1
  1072. package/dist/plugin-sdk/targets-CVEYTFPQ.js +1 -1
  1073. package/dist/plugin-sdk/targets-Co2R6K14.cjs +1 -1
  1074. package/dist/plugin-sdk/targets-CrkJkzil.js +1 -1
  1075. package/dist/plugin-sdk/targets-D-m7SV9x.cjs +1 -1
  1076. package/dist/plugin-sdk/targets-D8HTxbo4.js +1 -1
  1077. package/dist/plugin-sdk/targets-DcGNB9nk.cjs +1 -1
  1078. package/dist/plugin-sdk/targets-Dn9gDiEw.js +1 -1
  1079. package/dist/plugin-sdk/targets-X28mff4s.cjs +1 -1
  1080. package/dist/plugin-sdk/targets-uycXZ8vQ.js +1 -1
  1081. package/dist/plugin-sdk/telegram.cjs +1 -1
  1082. package/dist/plugin-sdk/telegram.js +1 -1
  1083. package/dist/plugin-sdk/test-utils.cjs +1 -1
  1084. package/dist/plugin-sdk/test-utils.js +1 -1
  1085. package/dist/plugin-sdk/tlon.cjs +1 -1
  1086. package/dist/plugin-sdk/tlon.js +1 -1
  1087. package/dist/plugin-sdk/tokens-AAdZjj0M.js +1 -1
  1088. package/dist/plugin-sdk/tokens-B20KNIDD.js +1 -1
  1089. package/dist/plugin-sdk/tokens-B8ys7Q2e.js +1 -1
  1090. package/dist/plugin-sdk/tokens-BPc1fcZ3.js +1 -1
  1091. package/dist/plugin-sdk/tokens-BqABmXSe.js +1 -1
  1092. package/dist/plugin-sdk/tokens-CXsPDJTr.cjs +1 -1
  1093. package/dist/plugin-sdk/tokens-CnB4dJmp.cjs +1 -1
  1094. package/dist/plugin-sdk/tokens-CytSl1X8.cjs +1 -1
  1095. package/dist/plugin-sdk/tokens-DgPZk2Uu.js +1 -1
  1096. package/dist/plugin-sdk/tokens-Dq2wDF3_.cjs +1 -1
  1097. package/dist/plugin-sdk/tokens-DtrljGtQ.cjs +1 -1
  1098. package/dist/plugin-sdk/tokens-g5KWvWhD.cjs +1 -1
  1099. package/dist/plugin-sdk/twitch.cjs +1 -1
  1100. package/dist/plugin-sdk/twitch.js +1 -1
  1101. package/dist/plugin-sdk/utils-BJtJR72k.js +1 -1
  1102. package/dist/plugin-sdk/utils-PPIvU9qw.cjs +1 -1
  1103. package/dist/plugin-sdk/voice-call.cjs +1 -1
  1104. package/dist/plugin-sdk/voice-call.js +1 -1
  1105. package/dist/plugin-sdk/web-B4A8zBP9.cjs +1 -1
  1106. package/dist/plugin-sdk/web-BKKx3jqf.cjs +1 -1
  1107. package/dist/plugin-sdk/web-BTBgpaEi.js +1 -1
  1108. package/dist/plugin-sdk/web-BfjArU7g.js +1 -1
  1109. package/dist/plugin-sdk/web-C7KhecaH.cjs +1 -1
  1110. package/dist/plugin-sdk/web-CFMrBQv7.js +1 -1
  1111. package/dist/plugin-sdk/web-CS0AvKLx.js +1 -1
  1112. package/dist/plugin-sdk/web-EfgEjg15.cjs +1 -1
  1113. package/dist/plugin-sdk/weixin.cjs +1 -1
  1114. package/dist/plugin-sdk/weixin.js +1 -1
  1115. package/dist/plugin-sdk/whatsapp-actions-6N2LIWVD.js +1 -1
  1116. package/dist/plugin-sdk/whatsapp-actions-BGEghean.js +1 -1
  1117. package/dist/plugin-sdk/whatsapp-actions-BP_fSzB9.cjs +1 -1
  1118. package/dist/plugin-sdk/whatsapp-actions-BSx6-Onq.cjs +1 -1
  1119. package/dist/plugin-sdk/whatsapp-actions-BZAMGDn8.cjs +1 -1
  1120. package/dist/plugin-sdk/whatsapp-actions-BvZMduqd.js +1 -1
  1121. package/dist/plugin-sdk/whatsapp-actions-CDUbwNdp.cjs +1 -1
  1122. package/dist/plugin-sdk/whatsapp-actions-DNVIKnqz.cjs +1 -1
  1123. package/dist/plugin-sdk/whatsapp-actions-DTVbVkOo.js +1 -1
  1124. package/dist/plugin-sdk/whatsapp-actions-DjMYqpSS.js +1 -1
  1125. package/dist/plugin-sdk/whatsapp-actions-P1DVqKhD.cjs +1 -1
  1126. package/dist/plugin-sdk/whatsapp-actions-shElOKKX.js +1 -1
  1127. package/dist/plugin-sdk/whatsapp.cjs +1 -1
  1128. package/dist/plugin-sdk/whatsapp.js +1 -1
  1129. package/dist/plugin-sdk/zalo.cjs +1 -1
  1130. package/dist/plugin-sdk/zalo.js +1 -1
  1131. package/dist/plugin-sdk/zalouser.cjs +1 -1
  1132. package/dist/plugin-sdk/zalouser.js +1 -1
  1133. package/dist/plugins-CYLrFT4h.js +1 -1
  1134. package/dist/plugins-DNlgeTTc.js +1 -1
  1135. package/dist/plugins-cli-BiV4FaGs.js +1 -1
  1136. package/dist/plugins-cli-C0PLRxT0.js +1 -1
  1137. package/dist/polls-BIVz6a4F.js +1 -1
  1138. package/dist/polls-Bh5wc9-6.js +1 -1
  1139. package/dist/polls-C_XSFz3d.js +1 -1
  1140. package/dist/polls-DKJOFSzJ.js +1 -1
  1141. package/dist/ports-Bjc9q__g.js +1 -1
  1142. package/dist/ports-Di2_MOUb.js +1 -1
  1143. package/dist/probe-auth-9RrZOStc.js +1 -1
  1144. package/dist/probe-auth-Cg6SAov9.js +1 -1
  1145. package/dist/profile-utils-CWmra1aY.js +1 -1
  1146. package/dist/program-CI--7377.js +1 -1
  1147. package/dist/program-context-CH9p6anW.js +1 -1
  1148. package/dist/program-context-Cu8fVR-O.js +1 -1
  1149. package/dist/progress-LNttnI-y.js +1 -1
  1150. package/dist/progress-d1m2sqR1.js +1 -1
  1151. package/dist/prompt-select-styled-CbTtKeIC.js +1 -1
  1152. package/dist/prompt-select-styled-sYEl0gMg.js +1 -1
  1153. package/dist/prompt-style-BThRSQJR.js +1 -1
  1154. package/dist/prompt-style-CXKekIBY.js +1 -1
  1155. package/dist/prompts-CMzglboN.js +1 -1
  1156. package/dist/prompts-wv-lfVrJ.js +1 -1
  1157. package/dist/provider-auth-helpers-C3OaF218.js +1 -1
  1158. package/dist/provider-auth-helpers-CZyb7LUg.js +1 -1
  1159. package/dist/provider-env-vars-D8p6Ohpj.js +1 -1
  1160. package/dist/provider-env-vars-Dt0Q29Su.js +1 -1
  1161. package/dist/proxy-env-BNhTHkd_.js +1 -1
  1162. package/dist/proxy-env-DcmW_urA.js +1 -1
  1163. package/dist/proxy-env-DrC3TIGh.js +1 -1
  1164. package/dist/proxy-env-FJr5nlvs.js +1 -1
  1165. package/dist/proxy-fetch-BADsUK4d.js +1 -1
  1166. package/dist/proxy-fetch-BZ9O8Dvj.js +1 -1
  1167. package/dist/proxy-fetch-DnjU1fEB.js +1 -1
  1168. package/dist/proxy-fetch-gWETR3cl.js +1 -1
  1169. package/dist/push-apns-kySzOiJr.js +1 -1
  1170. package/dist/push-apns-tM6G9LLm.js +1 -1
  1171. package/dist/pw-ai-B7YMA_4Q.js +1 -1
  1172. package/dist/pw-ai-C7peCONw.js +1 -1
  1173. package/dist/pw-ai-CojtT9WR.js +1 -1
  1174. package/dist/pw-ai-DWJWFzTA.js +1 -1
  1175. package/dist/qmd-manager-C_e04BNg.js +1 -1
  1176. package/dist/qmd-manager-DSQ_mDCl.js +1 -1
  1177. package/dist/qmd-manager-DcBYbt_V.js +1 -1
  1178. package/dist/qmd-manager-NLI0R6kp.js +1 -1
  1179. package/dist/qr-cli-DUR7oW0_.js +1 -1
  1180. package/dist/qr-cli-kb3ygh9I.js +1 -1
  1181. package/dist/query-expansion-0OxEb1Io.js +1 -1
  1182. package/dist/query-expansion-BUUx_oWg.js +1 -1
  1183. package/dist/query-expansion-r_iXkNzt.js +1 -1
  1184. package/dist/reaction-level-DVPHL14p.js +1 -1
  1185. package/dist/reaction-message-id-BEEe7X3D.js +1 -1
  1186. package/dist/read-only-account-inspect-DEnPVHTo.js +1 -1
  1187. package/dist/redact-3_CiXMY6.js +1 -1
  1188. package/dist/redact-CnRxK70G.js +1 -1
  1189. package/dist/register.agent-BwmE1VD-.js +1 -1
  1190. package/dist/register.agent-D1hQi_68.js +1 -1
  1191. package/dist/register.backup-8s5jgnHQ.js +1 -1
  1192. package/dist/register.backup-CAiwLaIW.js +1 -1
  1193. package/dist/register.configure-BsTw4XfK.js +1 -1
  1194. package/dist/register.configure-DxR84Ot6.js +1 -1
  1195. package/dist/register.maintenance-3nzWAo_a.js +1 -1
  1196. package/dist/register.maintenance-DxKGQ9Jo.js +1 -1
  1197. package/dist/register.message-Bk1pHVSK.js +1 -1
  1198. package/dist/register.message-PcFtBR0-.js +1 -1
  1199. package/dist/register.onboard-AWxbhU7j.js +1 -1
  1200. package/dist/register.onboard-BTOZN8ro.js +1 -1
  1201. package/dist/register.setup-B-e1qIbc.js +1 -1
  1202. package/dist/register.setup-CweJJdt8.js +1 -1
  1203. package/dist/register.status-health-sessions-B1R_nl6P.js +1 -1
  1204. package/dist/register.status-health-sessions-CWNLXpAn.js +1 -1
  1205. package/dist/register.subclis-C0VQ_HfZ.js +1 -1
  1206. package/dist/registry-BptzrW8D.js +1 -1
  1207. package/dist/registry-hFAtCSWG.js +1 -1
  1208. package/dist/render-BXEUPIHe.js +1 -1
  1209. package/dist/render-CBsnn-2A.js +1 -1
  1210. package/dist/render-D8OWO2hT.js +1 -1
  1211. package/dist/render-DrrPmnMI.js +1 -1
  1212. package/dist/reply-r9KtzgpM.js +1 -1
  1213. package/dist/restart-CTfuVGfA.js +1 -1
  1214. package/dist/rpc-BQXfCyCw.js +1 -1
  1215. package/dist/rpc-CcrILVsV.js +1 -1
  1216. package/dist/run-main-CuQQyoU3.js +1 -1
  1217. package/dist/runtime-BlsMYeaw.js +1 -1
  1218. package/dist/runtime-DLxfCs7F.js +1 -1
  1219. package/dist/runtime-guard-DFYBaYZS.js +1 -1
  1220. package/dist/runtime-guard-DX2Ie4ri.js +1 -1
  1221. package/dist/runtime-status-CqFBmdRd.js +1 -1
  1222. package/dist/runtime-status-DszMjvJK.js +1 -1
  1223. package/dist/runtime-web-tools-BWv0X5qp.js +1 -1
  1224. package/dist/runtime-web-tools-CCIXUISf.js +1 -1
  1225. package/dist/sandbox-cli-CxluKLFV.js +1 -1
  1226. package/dist/sandbox-cli-xCX6FV4Z.js +1 -1
  1227. package/dist/scan-paths-C13EseXp.js +1 -1
  1228. package/dist/scan-paths-CWtvWW40.js +1 -1
  1229. package/dist/search-manager-KMRzwyPH.js +1 -1
  1230. package/dist/secret-file-C7JffiM_.js +1 -1
  1231. package/dist/secret-file-D60EFEOe.js +1 -1
  1232. package/dist/secret-file-DuWm26jS.js +1 -1
  1233. package/dist/secrets-cli-Be6OBr6Q.js +1 -1
  1234. package/dist/secrets-cli-DmDZiX17.js +1 -1
  1235. package/dist/secure-random-D7JQgiK-.js +1 -1
  1236. package/dist/security-cli-CllLwpQ-.js +1 -1
  1237. package/dist/security-cli-DcA9keUK.js +1 -1
  1238. package/dist/send-8rJCpsDu.js +1 -1
  1239. package/dist/send-BJjoLBo3.js +1 -1
  1240. package/dist/send-BOxuQt9L.js +1 -1
  1241. package/dist/send-BPfl_1It.js +1 -1
  1242. package/dist/send-BdS6jUBa.js +1 -1
  1243. package/dist/send-BeZJ1zbp.js +1 -1
  1244. package/dist/send-BkZ8dWQV2.js +1 -1
  1245. package/dist/send-CDAeI9xB2.js +1 -1
  1246. package/dist/send-CgeRzkWS.js +1 -1
  1247. package/dist/send-CiTZ4p2t.js +1 -1
  1248. package/dist/send-D0y-r_hg2.js +1 -1
  1249. package/dist/send-DIw8ExHc.js +1 -1
  1250. package/dist/send-DRm6AFp-.js +1 -1
  1251. package/dist/send-DS5Quwb7.js +1 -1
  1252. package/dist/send-DVmPgxm7.js +1 -1
  1253. package/dist/send-Ds5sy22D.js +1 -1
  1254. package/dist/send-DvGzdoKK.js +1 -1
  1255. package/dist/send-OVet2uKx.js +1 -1
  1256. package/dist/send-YPQFx-fV.js +1 -1
  1257. package/dist/send-e2ppdA_R.js +1 -1
  1258. package/dist/server-Dzqb5Tau.js +1 -1
  1259. package/dist/server-node-events-B2irOUJ_.js +1 -1
  1260. package/dist/server-node-events-DSr6P0VG.js +1 -1
  1261. package/dist/server-w7sUBJEA.js +1 -1
  1262. package/dist/service-BtB9epJk.js +1 -1
  1263. package/dist/service-DZ9EbS15.js +1 -1
  1264. package/dist/session-BYYOduc1.js +1 -1
  1265. package/dist/session-B_qrXLsR.js +1 -1
  1266. package/dist/session-Be0RV2V1.js +1 -1
  1267. package/dist/session-bk3gFwO4.js +1 -1
  1268. package/dist/session-cost-usage-BgqKixv0.js +1 -1
  1269. package/dist/session-cost-usage-CHtVgnE8.js +1 -1
  1270. package/dist/session-key-C7F_iqYg.js +1 -1
  1271. package/dist/session-key-D3P0tf5P.js +1 -1
  1272. package/dist/session-utils-CrR0wD3W.js +1 -1
  1273. package/dist/sessions-BvTGb3rW.js +1 -1
  1274. package/dist/shared-9x5sqYRb.js +1 -1
  1275. package/dist/shared-BKWhOp64.js +1 -1
  1276. package/dist/shared-BV-hfJ3h.js +1 -1
  1277. package/dist/skill-commands-C59b8Yso.js +1 -1
  1278. package/dist/skill-commands-CqIEajsA.js +1 -1
  1279. package/dist/skill-commands-F5NFH0NR.js +1 -1
  1280. package/dist/skill-commands-O39uSj-k.js +1 -1
  1281. package/dist/skill-scanner-CUUF3Fvo.js +1 -1
  1282. package/dist/skill-scanner-CkxXNioD.js +1 -1
  1283. package/dist/skills-CKTicUKS.js +1 -1
  1284. package/dist/skills-DHbOKEGc.js +1 -1
  1285. package/dist/skills-cli-CZD1Ng18.js +1 -1
  1286. package/dist/skills-cli-nj0w4fe0.js +1 -1
  1287. package/dist/skills-install-D0I6c17J.js +1 -1
  1288. package/dist/skills-install-XHpqMBWl.js +1 -1
  1289. package/dist/skills-status-BWIugRCz.js +1 -1
  1290. package/dist/skills-status-DswSl5aD.js +1 -1
  1291. package/dist/sqlite-CILF3z9U.js +1 -1
  1292. package/dist/stagger-DmFYysrJ.js +1 -1
  1293. package/dist/stagger-DxzgG2jd.js +1 -1
  1294. package/dist/status-DKB9gdSp.js +1 -1
  1295. package/dist/status-DgRrUxyg.js +1 -1
  1296. package/dist/status-YZD9V9xi.js +1 -1
  1297. package/dist/status-isxcm8Xz.js +1 -1
  1298. package/dist/status.update-B_8Gumuc.js +1 -1
  1299. package/dist/status.update-Cf2e-l9d.js +1 -1
  1300. package/dist/string-normalization-BrUPaXaM.js +1 -1
  1301. package/dist/string-normalization-DJT5zuUF.js +1 -1
  1302. package/dist/subsystem-BLbY429l.js +1 -1
  1303. package/dist/subsystem-Bc2XrjUz.js +1 -1
  1304. package/dist/subsystem-C5XF2Fy5.js +1 -1
  1305. package/dist/system-cli-CRs3TOTw.js +1 -1
  1306. package/dist/system-cli-GyoLZQpj.js +1 -1
  1307. package/dist/system-run-command-DCzdgYyb.js +1 -1
  1308. package/dist/system-run-command-FCk9hSMO.js +1 -1
  1309. package/dist/systemd-D7odsu4K.js +1 -1
  1310. package/dist/systemd-DbevZh65.js +1 -1
  1311. package/dist/systemd-hints-lXpMy-kY.js +1 -1
  1312. package/dist/systemd-hints-x1lJAOxS.js +1 -1
  1313. package/dist/systemd-linger-C2MJD6KG.js +1 -1
  1314. package/dist/systemd-linger-cWKbFNpu.js +1 -1
  1315. package/dist/table-CR7TFMew.js +1 -1
  1316. package/dist/table-CY440fI1.js +1 -1
  1317. package/dist/tables-3Rjt6nwZ.js +1 -1
  1318. package/dist/tables-B9wFKQvT.js +1 -1
  1319. package/dist/tables-D1pcaye7.js +1 -1
  1320. package/dist/tables-h7y1Jhf4.js +1 -1
  1321. package/dist/target-errors-CUQcIty1.js +1 -1
  1322. package/dist/target-errors-D55sWZ4E.js +1 -1
  1323. package/dist/target-errors-DH0aw-m5.js +1 -1
  1324. package/dist/target-errors-LuLROpta.js +1 -1
  1325. package/dist/targets-4EaxWBal.js +1 -1
  1326. package/dist/targets-BJTo7bqu.js +1 -1
  1327. package/dist/targets-BYVMrXDf.js +1 -1
  1328. package/dist/targets-Bq6rS6-Z.js +1 -1
  1329. package/dist/targets-CL5fYQi7.js +1 -1
  1330. package/dist/targets-fozeWOOg.js +1 -1
  1331. package/dist/targets-m_41k_Mv.js +1 -1
  1332. package/dist/telegram/audit.js +1 -1
  1333. package/dist/text-format-CvrvBBre.js +1 -1
  1334. package/dist/text-format-DEWK6oCT.js +1 -1
  1335. package/dist/token-DnTmiyJu.js +1 -1
  1336. package/dist/tokens-B2fq-rL6.js +1 -1
  1337. package/dist/tokens-CL2fSjGl.js +1 -1
  1338. package/dist/tokens-DRM8vzJx.js +1 -1
  1339. package/dist/tokens-XGbQGn67.js +1 -1
  1340. package/dist/tool-display-DJDtttQg.js +1 -1
  1341. package/dist/tool-display-DjuSUUbH.js +1 -1
  1342. package/dist/tui-CqEb9hrT.js +1 -1
  1343. package/dist/tui-DdZ8SpNW.js +1 -1
  1344. package/dist/tui-cli-Bj0okLCf.js +1 -1
  1345. package/dist/tui-cli-CYvBshyB.js +1 -1
  1346. package/dist/types.secrets-C-5U96pc.js +1 -1
  1347. package/dist/types.secrets-D4tbc3Wq.js +1 -1
  1348. package/dist/update-BGrxUIyz.js +1 -1
  1349. package/dist/update-CwTy5DPl.js +1 -1
  1350. package/dist/update-cli-lciKU8_L.js +1 -1
  1351. package/dist/update-cli-xb0jHjE8.js +1 -1
  1352. package/dist/update-runner-8Hto6X-M.js +1 -1
  1353. package/dist/update-runner-LVJcy569.js +1 -1
  1354. package/dist/usage-format-BWD8FJFL.js +1 -1
  1355. package/dist/usage-format-yPwal8Iz.js +1 -1
  1356. package/dist/utils-CGdo13HV.js +1 -1
  1357. package/dist/utils-D3t-vPka.js +1 -1
  1358. package/dist/utils-R-mFyVJi.js +1 -1
  1359. package/dist/utils-UGOV_184.js +1 -1
  1360. package/dist/version-q3SkUw2K.js +1 -1
  1361. package/dist/warning-filter.js +1 -1
  1362. package/dist/web-Bfz_qlYe.js +1 -1
  1363. package/dist/web-ClbIohhf.js +1 -1
  1364. package/dist/webhooks-cli-DKfKihmJ.js +1 -1
  1365. package/dist/webhooks-cli-LU2ADRQp.js +1 -1
  1366. package/dist/whatsapp-actions-1TJ8dlv0.js +1 -1
  1367. package/dist/whatsapp-actions-CuDiuPGa.js +1 -1
  1368. package/dist/whatsapp-actions-DkLDOIk1.js +1 -1
  1369. package/dist/whatsapp-actions-EnduXWui.js +1 -1
  1370. package/dist/widearea-dns-BDx7vkV2.js +1 -1
  1371. package/dist/widearea-dns-BFjqKXu_.js +1 -1
  1372. package/dist/windows-spawn-7oINn5ao.js +1 -1
  1373. package/dist/windows-spawn-AB7ItGAE.js +1 -1
  1374. package/dist/with-timeout-WveKxvFV.js +1 -1
  1375. package/dist/with-timeout-c1CzdShT.js +1 -1
  1376. package/dist/workspace-B0ZQeHXg.js +1 -1
  1377. package/dist/workspace-C45T1Cxg.js +1 -1
  1378. package/dist/workspace-dirs-A8Vib9_B.js +1 -1
  1379. package/dist/workspace-dirs-BhF1Dzxt.js +1 -1
  1380. package/dist/workspace-xNEpaJvu.js +1 -1
  1381. package/dist/wsl-DHxB2Ew_.js +1 -1
  1382. package/dist/wsl-Ok7GaSJ6.js +1 -1
  1383. package/extensions/memory-core/index.js +1 -0
  1384. package/extensions/memory-core/package.json +1 -1
  1385. package/extensions/openclaw-telemetry-galileo-embedded/index.js +4 -0
  1386. package/extensions/openclaw-telemetry-galileo-embedded/package.json +2 -2
  1387. package/extensions/openclaw-telemetry-galileo-embedded/src/service.js +13 -0
  1388. package/extensions/openclaw-weixin/index.js +1 -0
  1389. package/extensions/openclaw-weixin/package.json +3 -3
  1390. package/extensions/openclaw-weixin/src/api/api.js +1 -0
  1391. package/extensions/openclaw-weixin/src/api/config-cache.js +1 -0
  1392. package/extensions/openclaw-weixin/src/api/session-guard.js +1 -0
  1393. package/extensions/openclaw-weixin/src/api/types.js +1 -0
  1394. package/extensions/openclaw-weixin/src/auth/accounts.js +1 -0
  1395. package/extensions/openclaw-weixin/src/auth/login-qr.js +11 -0
  1396. package/extensions/openclaw-weixin/src/auth/pairing.js +1 -0
  1397. package/extensions/openclaw-weixin/src/cdn/aes-ecb.js +1 -0
  1398. package/extensions/openclaw-weixin/src/cdn/cdn-upload.js +1 -0
  1399. package/extensions/openclaw-weixin/src/cdn/cdn-url.js +1 -0
  1400. package/extensions/openclaw-weixin/src/cdn/pic-decrypt.js +1 -0
  1401. package/extensions/openclaw-weixin/src/cdn/upload.js +1 -0
  1402. package/extensions/openclaw-weixin/src/channel.js +6 -0
  1403. package/extensions/openclaw-weixin/src/config/config-schema.js +1 -0
  1404. package/extensions/openclaw-weixin/src/log-upload.js +4 -0
  1405. package/extensions/openclaw-weixin/src/media/media-download.js +1 -0
  1406. package/extensions/openclaw-weixin/src/media/mime.js +1 -0
  1407. package/extensions/openclaw-weixin/src/media/silk-transcode.js +1 -0
  1408. package/extensions/openclaw-weixin/src/messaging/debug-mode.js +1 -0
  1409. package/extensions/openclaw-weixin/src/messaging/error-notice.js +1 -0
  1410. package/extensions/openclaw-weixin/src/messaging/inbound.js +2 -0
  1411. package/extensions/openclaw-weixin/src/messaging/process-message.js +3 -0
  1412. package/extensions/openclaw-weixin/src/messaging/send-media.js +1 -0
  1413. package/extensions/openclaw-weixin/src/messaging/send.js +1 -0
  1414. package/extensions/openclaw-weixin/src/messaging/slash-commands.js +2 -0
  1415. package/extensions/openclaw-weixin/src/monitor/monitor.js +1 -0
  1416. package/extensions/openclaw-weixin/src/runtime.js +1 -0
  1417. package/extensions/openclaw-weixin/src/storage/state-dir.js +1 -0
  1418. package/extensions/openclaw-weixin/src/storage/sync-buf.js +1 -0
  1419. package/extensions/openclaw-weixin/src/util/logger.js +2 -0
  1420. package/extensions/openclaw-weixin/src/util/random.js +1 -0
  1421. package/extensions/openclaw-weixin/src/util/redact.js +1 -0
  1422. package/extensions/qbagent-mcp-server-x5uselocal-node/index.js +1 -0
  1423. package/extensions/qbagent-mcp-server-x5uselocal-node/package.json +1 -1
  1424. package/extensions/qbagent-mcp-server-x5uselocal-node/src/browser-use-tool.js +1 -0
  1425. package/extensions/qbagent-mcp-server-x5uselocal-node/src/server.js +1 -0
  1426. package/extensions/qbagent-mcp-server-x5uselocal-node/src/tools.js +1 -0
  1427. package/extensions/qbagent-mcp-server-x5uselocal-node/src/websocket-manager.js +1 -0
  1428. package/package.json +1 -1
  1429. package/preset-config.json +22 -0
  1430. package/extensions/memory-core/index.ts +0 -38
  1431. package/extensions/openclaw-telemetry-galileo-embedded/index.ts +0 -663
  1432. package/extensions/openclaw-telemetry-galileo-embedded/src/service.ts +0 -1590
  1433. package/extensions/openclaw-weixin/index.ts +0 -26
  1434. package/extensions/openclaw-weixin/src/api/api.ts +0 -238
  1435. package/extensions/openclaw-weixin/src/api/config-cache.ts +0 -79
  1436. package/extensions/openclaw-weixin/src/api/session-guard.ts +0 -58
  1437. package/extensions/openclaw-weixin/src/api/types.ts +0 -222
  1438. package/extensions/openclaw-weixin/src/auth/accounts.ts +0 -363
  1439. package/extensions/openclaw-weixin/src/auth/login-qr.ts +0 -344
  1440. package/extensions/openclaw-weixin/src/auth/pairing.ts +0 -120
  1441. package/extensions/openclaw-weixin/src/cdn/aes-ecb.ts +0 -21
  1442. package/extensions/openclaw-weixin/src/cdn/cdn-upload.ts +0 -75
  1443. package/extensions/openclaw-weixin/src/cdn/cdn-url.ts +0 -17
  1444. package/extensions/openclaw-weixin/src/cdn/pic-decrypt.ts +0 -85
  1445. package/extensions/openclaw-weixin/src/cdn/upload.ts +0 -154
  1446. package/extensions/openclaw-weixin/src/channel.ts +0 -483
  1447. package/extensions/openclaw-weixin/src/config/config-schema.ts +0 -21
  1448. package/extensions/openclaw-weixin/src/log-upload.ts +0 -129
  1449. package/extensions/openclaw-weixin/src/media/media-download.ts +0 -138
  1450. package/extensions/openclaw-weixin/src/media/mime.ts +0 -76
  1451. package/extensions/openclaw-weixin/src/media/silk-transcode.ts +0 -74
  1452. package/extensions/openclaw-weixin/src/messaging/debug-mode.ts +0 -68
  1453. package/extensions/openclaw-weixin/src/messaging/error-notice.ts +0 -36
  1454. package/extensions/openclaw-weixin/src/messaging/inbound.ts +0 -283
  1455. package/extensions/openclaw-weixin/src/messaging/process-message.ts +0 -488
  1456. package/extensions/openclaw-weixin/src/messaging/send-media.ts +0 -76
  1457. package/extensions/openclaw-weixin/src/messaging/send.ts +0 -267
  1458. package/extensions/openclaw-weixin/src/messaging/slash-commands.ts +0 -105
  1459. package/extensions/openclaw-weixin/src/monitor/monitor.ts +0 -225
  1460. package/extensions/openclaw-weixin/src/runtime.ts +0 -67
  1461. package/extensions/openclaw-weixin/src/storage/state-dir.ts +0 -11
  1462. package/extensions/openclaw-weixin/src/storage/sync-buf.ts +0 -79
  1463. package/extensions/openclaw-weixin/src/util/logger.ts +0 -146
  1464. package/extensions/openclaw-weixin/src/util/random.ts +0 -17
  1465. package/extensions/openclaw-weixin/src/util/redact.ts +0 -57
  1466. package/extensions/openclaw-weixin/src/vendor.d.ts +0 -21
  1467. package/extensions/qbagent-mcp-server-x5uselocal-node/index.ts +0 -140
  1468. package/extensions/qbagent-mcp-server-x5uselocal-node/src/browser-use-tool.ts +0 -157
  1469. package/extensions/qbagent-mcp-server-x5uselocal-node/src/server.ts +0 -135
  1470. package/extensions/qbagent-mcp-server-x5uselocal-node/src/tools.ts +0 -205
  1471. package/extensions/qbagent-mcp-server-x5uselocal-node/src/websocket-manager.ts +0 -351
@@ -1,4 +1,4 @@
1
1
  import"./paths-B4IRk3wi.js";import{A as e,k as t,p as n}from"./subsystem-C5XF2Fy5.js";import{S as r,x as i}from"./utils-UGOV_184.js";import{qs as a,yc as o}from"./model-selection-I1ctjFOB.js";import{f as s,i as c}from"./agent-scope-DXZc3eNT.js";import"./openclaw-root-D_0Q6--h.js";import"./github-copilot-token-DGYAlOmV.js";import"./boolean-Ch3DfXPy.js";import"./env-D7wNuBx1.js";import"./env-overrides-DXJbFrwI.js";import"./registry-hFAtCSWG.js";import"./skills-DHbOKEGc.js";import"./frontmatter-BkZkwkVO.js";import"./plugins-CYLrFT4h.js";import"./logger-Bl8URnrW.js";import"./exec-DHqLtFYt.js";import"./windows-spawn-AB7ItGAE.js";import"./redact-3_CiXMY6.js";import"./path-alias-guards-mvyLCPlN.js";import"./errors-Bunti32V.js";import"./paths-yLEk_25I.js";import"./chat-envelope-HVpKusFc.js";import"./fetch-guard-Cji70DJW.js";import{a as l}from"./call-BA3O_Qpl.js";import"./exec-approvals-allowlist-BKFaHvA5.js";import{n as u}from"./format-relative-B9pSIdGe.js";import{t as d}from"./links-CySwdMcF.js";import{n as f}from"./cli-utils-BY7dLMFy.js";import{t as p}from"./help-format-BRbF_INg.js";import"./progress-LNttnI-y.js";import{a as m,d as h,g,i as _,l as v,s as y,t as b}from"./exec-approvals-BpBNEy6i.js";import{_ as x,a as S,c as ee,d as C,f as w,g as T,i as te,l as E,n as ne,o as re,p as ie,r as D,s as O,t as k,u as ae}from"./nodes-screen-C7-5RrbN.js";import"./system-run-command-DCzdgYyb.js";import{i as A,r as j}from"./node-resolve-B3BJbmQX.js";import{t as M}from"./parse-timeout-Dx4QnVzo.js";import{n as N,t as P}from"./table-CY440fI1.js";import{a as F,i as I,n as L,o as R,r as z,s as B,t as V}from"./rpc-BQXfCyCw.js";import H from"node:fs/promises";function U(){let n=t(),r=e=>t=>n?e(t):t;return{rich:n,heading:r(e.heading),ok:r(e.success),warn:r(e.warn),muted:r(e.muted),error:r(e.error)}}function W(e,t){return f(n,t,t=>{let r=String(t),{error:i,warn:a}=U();n.error(i(`nodes ${e} failed: ${r}`));let o=R(r);o&&n.error(a(o)),n.exit(1)})}const G=e=>{let t=String(e??``).trim().toLowerCase();if(t===`front`||t===`back`)return t;throw Error(`invalid facing: ${e} (expected front|back)`)};function K(e){let t=e.command(`camera`).description(`Capture camera media from a paired node`);z(t.command(`list`).description(`List available cameras on a node`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).action(async e=>{await W(`camera list`,async()=>{let t=await L(`node.invoke`,e,V({nodeId:await F(e,String(e.node??``)),command:`camera.list`,params:{}})),r=typeof t==`object`&&t?t:{},i=typeof r.payload==`object`&&r.payload!==null?r.payload:{},a=Array.isArray(i.devices)?i.devices:[];if(e.json){n.log(JSON.stringify(a,null,2));return}if(a.length===0){let{muted:e}=U();n.log(e(`No cameras reported.`));return}let{heading:o,muted:s}=U(),c=P(),l=a.map(e=>({Name:typeof e.name==`string`?e.name:`Unknown Camera`,Position:typeof e.position==`string`?e.position:s(`unspecified`),ID:typeof e.id==`string`?e.id:``}));n.log(o(`Cameras`)),n.log(N({width:c,columns:[{key:`Name`,header:`Name`,minWidth:14,flex:!0},{key:`Position`,header:`Position`,minWidth:10},{key:`ID`,header:`ID`,minWidth:10,flex:!0}],rows:l}).trimEnd())})}),{timeoutMs:6e4}),z(t.command(`snap`).description(`Capture a photo from a node camera (prints MEDIA:<path>)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--facing <front|back|both>`,`Camera facing`,`both`).option(`--device-id <id>`,`Camera device id (from nodes camera list)`).option(`--max-width <px>`,`Max width in px (optional)`).option(`--quality <0-1>`,`JPEG quality (default 0.9)`).option(`--delay-ms <ms>`,`Delay before capture in ms (macOS default 2000)`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 20000)`,`20000`).action(async e=>{await W(`camera snap`,async()=>{let t=await I(e,String(e.node??``)),i=t.nodeId,a=String(e.facing??`both`).trim().toLowerCase(),o=a===`both`?[`front`,`back`]:a===`front`||a===`back`?[a]:(()=>{throw Error(`invalid facing: ${String(e.facing)} (expected front|back|both)`)})(),s=e.maxWidth?Number.parseInt(String(e.maxWidth),10):void 0,c=e.quality?Number.parseFloat(String(e.quality)):void 0,l=e.delayMs?Number.parseInt(String(e.delayMs),10):void 0,u=e.deviceId?String(e.deviceId).trim():void 0;if(u&&o.length>1)throw Error(`facing=both is not allowed when --device-id is set`);let d=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,f=[];for(let n of o){let r=await L(`node.invoke`,e,V({nodeId:i,command:`camera.snap`,params:{facing:n,maxWidth:Number.isFinite(s)?s:void 0,quality:Number.isFinite(c)?c:void 0,format:`jpg`,delayMs:Number.isFinite(l)?l:void 0,deviceId:u||void 0},timeoutMs:d})),a=E((typeof r==`object`&&r?r:{}).payload),o=O({kind:`snap`,facing:n,ext:a.format===`jpeg`?`jpg`:a.format});await w({filePath:o,payload:a,expectedHost:t.remoteIp,invalidPayloadMessage:`invalid camera.snap payload`}),f.push({facing:n,path:o,width:a.width,height:a.height})}if(e.json){n.log(JSON.stringify({files:f},null,2));return}n.log(f.map(e=>`MEDIA:${r(e.path)}`).join(`
2
2
  `))})}),{timeoutMs:6e4}),z(t.command(`clip`).description(`Capture a short video clip from a node camera (prints MEDIA:<path>)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--facing <front|back>`,`Camera facing`,`front`).option(`--device-id <id>`,`Camera device id (from nodes camera list)`).option(`--duration <ms|10s|1m>`,`Duration (default 3000ms; supports ms/s/m, e.g. 10s)`,`3000`).option(`--no-audio`,`Disable audio capture`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 90000)`,`90000`).action(async e=>{await W(`camera clip`,async()=>{let t=await I(e,String(e.node??``)),i=t.nodeId,a=G(String(e.facing??`front`)),s=o(String(e.duration??`3000`)),c=e.audio!==!1,l=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,u=e.deviceId?String(e.deviceId).trim():void 0,d=await L(`node.invoke`,e,V({nodeId:i,command:`camera.clip`,params:{facing:a,durationMs:Number.isFinite(s)?s:void 0,includeAudio:c,format:`mp4`,deviceId:u||void 0},timeoutMs:l})),f=ee((typeof d==`object`&&d?d:{}).payload),p=await C({payload:f,facing:a,expectedHost:t.remoteIp});if(e.json){n.log(JSON.stringify({file:{facing:a,path:p,durationMs:f.durationMs,hasAudio:f.hasAudio}},null,2));return}n.log(`MEDIA:${r(p)}`)})}),{timeoutMs:9e4})}const q=[`beginRendering`,`surfaceUpdate`,`dataModelUpdate`,`deleteSurface`,`createSurface`];function J(e){let t=`main`,n=`root`,r=`text`;return[{surfaceUpdate:{surfaceId:t,components:[{id:n,component:{Column:{children:{explicitList:[r]}}}},{id:r,component:{Text:{text:{literalString:e},usageHint:`body`}}}]}},{beginRendering:{surfaceId:t,root:n}}].map(e=>JSON.stringify(e)).join(`
3
3
  `)}function oe(e){let t=e.split(/\r?\n/),n=[],r=!1,i=!1,a=0;if(t.forEach((e,t)=>{let o=e.trim();if(!o)return;a+=1;let s;try{s=JSON.parse(o)}catch(e){n.push(`line ${t+1}: ${String(e)}`);return}if(!s||typeof s!=`object`||Array.isArray(s)){n.push(`line ${t+1}: expected JSON object`);return}let c=s,l=q.filter(e=>e in c);if(l.length!==1){n.push(`line ${t+1}: expected exactly one action key (${q.join(`, `)})`);return}l[0]===`createSurface`?i=!0:r=!0}),a===0&&n.push(`no JSONL messages found`),r&&i&&n.push(`mixed A2UI v0.8 and v0.9 messages in one file`),n.length>0)throw Error(`Invalid A2UI JSONL:\n- ${n.join(`
4
- - `)}`);return{version:i?`v0.9`:`v0.8`,messageCount:a}}async function Y(e,t,n){let r=await F(e,String(e.node??``)),i=M(e.invokeTimeout);return await L(`node.invoke`,e,V({nodeId:r,command:t,params:n,timeoutMs:typeof i==`number`?i:void 0}))}function se(e){let t=e.command(`canvas`).description(`Capture or render canvas content from a paired node`);z(t.command(`snapshot`).description(`Capture a canvas snapshot (prints MEDIA:<path>)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--format <png|jpg|jpeg>`,`Image format`,`jpg`).option(`--max-width <px>`,`Max width in px (optional)`).option(`--quality <0-1>`,`JPEG quality (optional)`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 20000)`,`20000`).action(async e=>{await W(`canvas snapshot`,async()=>{let t=String(e.format??`jpg`).trim().toLowerCase(),i=t===`jpg`||t===`jpeg`?`jpeg`:`png`;if(i!==`png`&&i!==`jpeg`)throw Error(`invalid format: ${String(e.format)} (expected png|jpg|jpeg)`);let a=e.maxWidth?Number.parseInt(String(e.maxWidth),10):void 0,o=e.quality?Number.parseFloat(String(e.quality)):void 0,s=await Y(e,`canvas.snapshot`,{format:i,maxWidth:Number.isFinite(a)?a:void 0,quality:Number.isFinite(o)?o:void 0}),c=re((typeof s==`object`&&s?s:{}).payload),l=S({ext:c.format===`jpeg`?`jpg`:c.format});if(await ae(l,c.base64),e.json){n.log(JSON.stringify({file:{path:l,format:c.format}},null,2));return}n.log(`MEDIA:${r(l)}`)})}),{timeoutMs:6e4}),z(t.command(`present`).description(`Show the canvas (optionally with a target URL/path)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--target <urlOrPath>`,`Target URL/path (optional)`).option(`--x <px>`,`Placement x coordinate`).option(`--y <px>`,`Placement y coordinate`).option(`--width <px>`,`Placement width`).option(`--height <px>`,`Placement height`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await W(`canvas present`,async()=>{let t={x:e.x?Number.parseFloat(e.x):void 0,y:e.y?Number.parseFloat(e.y):void 0,width:e.width?Number.parseFloat(e.width):void 0,height:e.height?Number.parseFloat(e.height):void 0},r={};if(e.target&&(r.url=String(e.target)),(Number.isFinite(t.x)||Number.isFinite(t.y)||Number.isFinite(t.width)||Number.isFinite(t.height))&&(r.placement=t),await Y(e,`canvas.present`,r),!e.json){let{ok:e}=U();n.log(e(`canvas present ok`))}})})),z(t.command(`hide`).description(`Hide the canvas`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await W(`canvas hide`,async()=>{if(await Y(e,`canvas.hide`,void 0),!e.json){let{ok:e}=U();n.log(e(`canvas hide ok`))}})})),z(t.command(`navigate`).description(`Navigate the canvas to a URL`).argument(`<url>`,`Target URL/path`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async(e,t)=>{await W(`canvas navigate`,async()=>{if(await Y(t,`canvas.navigate`,{url:e}),!t.json){let{ok:e}=U();n.log(e(`canvas navigate ok`))}})})),z(t.command(`eval`).description(`Evaluate JavaScript in the canvas`).argument(`[js]`,`JavaScript to evaluate`).option(`--js <code>`,`JavaScript to evaluate`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async(e,t)=>{await W(`canvas eval`,async()=>{let r=t.js??e;if(!r)throw Error(`missing --js or <js>`);let i=await Y(t,`canvas.eval`,{javaScript:r});if(t.json){n.log(JSON.stringify(i,null,2));return}let a=typeof i==`object`&&i?i.payload:void 0;if(a?.result)n.log(a.result);else{let{ok:e}=U();n.log(e(`canvas eval ok`))}})}));let i=t.command(`a2ui`).description(`Render A2UI content on the canvas`);z(i.command(`push`).description(`Push A2UI JSONL to the canvas`).option(`--jsonl <path>`,`Path to JSONL payload`).option(`--text <text>`,`Render a quick A2UI text payload`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await W(`canvas a2ui push`,async()=>{let t=!!e.jsonl,r=typeof e.text==`string`;if(t===r)throw Error(`provide exactly one of --jsonl or --text`);let i=r?J(String(e.text??``)):await H.readFile(String(e.jsonl),`utf8`),{version:a,messageCount:o}=oe(i);if(a===`v0.9`)throw Error(`Detected A2UI v0.9 JSONL (createSurface). OpenClaw currently supports v0.8 only.`);if(await Y(e,`canvas.a2ui.pushJSONL`,{jsonl:i}),!e.json){let{ok:e}=U();n.log(e(`canvas a2ui push ok (v0.8, ${o} message${o===1?``:`s`})`))}})})),z(i.command(`reset`).description(`Reset A2UI renderer state`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await W(`canvas a2ui reset`,async()=>{if(await Y(e,`canvas.a2ui.reset`,void 0),!e.json){let{ok:e}=U();n.log(e(`canvas a2ui reset ok`))}})}))}function ce(e,t){let n=e?.tools?.exec;if(!t)return n?{security:n.security,ask:n.ask,node:n.node,pathPrepend:n.pathPrepend,safeBins:n.safeBins}:void 0;let r=c(e,t)?.tools?.exec;return{security:r?.security??n?.security,ask:r?.ask??n?.ask,node:r?.node??n?.node,pathPrepend:r?.pathPrepend??n?.pathPrepend,safeBins:r?.safeBins??n?.safeBins}}async function le(e,t){try{let n=j(await L(`node.list`,e,{})).find(e=>e.nodeId===t);return typeof n?.platform==`string`?n.platform:null}catch{return null}}function ue(e){let t=ie(e);if(!t)throw Error(`invalid system.run.prepare response`);return t}function de(e,t){let n=h(t?.security)??`allowlist`,r=h(e.security);if(e.security&&!r)throw Error(`invalid --security (use deny|allowlist|full)`);let i=v(t?.ask)??_().defaults?.ask??`on-miss`,a=v(e.ask);if(e.ask&&!a)throw Error(`invalid --ask (use off|on-miss|always)`);return{security:y(n,r??n),ask:m(i,a??i)}}async function fe(e){let t=te(e.opts.env),n=M(e.opts.commandTimeout),r=M(e.opts.invokeTimeout),i=Array.isArray(e.command)?e.command:[],a;if(e.raw){a=e.raw;let t=await le(e.opts,e.nodeId);i=T(a,t??void 0)}let o=t?{...t}:void 0;return o&&x(o,e.execDefaults?.pathPrepend,{requireExisting:!0}),{prepared:ue((await L(`node.invoke`,e.opts,{nodeId:e.nodeId,command:`system.run.prepare`,params:{command:i,rawCommand:a,cwd:e.opts.cwd,agentId:e.agentId},idempotencyKey:`prepare-${l()}`}))?.payload),nodeEnv:o,timeoutMs:n,invokeTimeout:r}}async function pe(e){let t=await L(`exec.approvals.node.get`,e.opts,{nodeId:e.nodeId}),n=t&&typeof t==`object`?t.file:void 0;if(!n||typeof n!=`object`)throw Error(`exec approvals unavailable`);let r=g({file:n,agentId:e.agentId,overrides:{security:e.security,ask:e.ask}});return{approvals:r,hostSecurity:y(e.security,r.agent.security),hostAsk:m(e.ask,r.agent.ask),askFallback:r.agent.askFallback}}async function me(e){let t=!1,n=null,r=null;if(!(e.hostAsk===`always`||e.hostAsk===`on-miss`))return{approvedByAsk:t,approvalDecision:n,approvalId:r};r=crypto.randomUUID();let i=b,a=Math.max(M(e.opts.timeout)??0,i+1e4),o=await L(`exec.approval.request`,e.opts,{id:r,systemRunPlan:e.approvalPlan,cwd:e.approvalPlan.cwd,nodeId:e.nodeId,host:`node`,security:e.hostSecurity,ask:e.hostAsk,agentId:e.approvalPlan.agentId??e.agentId,resolvedPath:void 0,sessionKey:e.approvalPlan.sessionKey??void 0,timeoutMs:i},{transportTimeoutMs:a}),s=o&&typeof o==`object`?o.decision??null:null;if(s===`deny`)throw Error(`exec denied: user denied`);if(!s){if(e.askFallback===`full`)t=!0,n=`allow-once`;else if(e.askFallback!==`allowlist`)throw Error(`exec denied: approval required (approval UI not available)`)}return s===`allow-once`&&(t=!0,n=`allow-once`),s===`allow-always`&&(t=!0,n=`allow-always`),{approvedByAsk:t,approvalDecision:n,approvalId:r}}function he(e){let t={nodeId:e.nodeId,command:`system.run`,params:{command:e.approvalPlan.argv,rawCommand:e.approvalPlan.commandText,cwd:e.approvalPlan.cwd,env:e.nodeEnv,timeoutMs:e.timeoutMs,needsScreenRecording:e.needsScreenRecording},idempotencyKey:String(e.idempotencyKey??l())};return(e.approvalPlan.agentId??e.fallbackAgentId)&&(t.params.agentId=e.approvalPlan.agentId??e.fallbackAgentId),e.approvalPlan.sessionKey&&(t.params.sessionKey=e.approvalPlan.sessionKey),t.params.approved=e.approvedByAsk,e.approvalDecision&&(t.params.approvalDecision=e.approvalDecision),e.approvedByAsk&&e.approvalId&&(t.params.runId=e.approvalId),e.invokeTimeout!==void 0&&(t.timeoutMs=e.invokeTimeout),t}function ge(e){z(e.command(`invoke`).description(`Invoke a command on a paired node`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).requiredOption(`--command <command>`,`Command (e.g. canvas.eval)`).option(`--params <json>`,`JSON object string for params`,`{}`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 15000)`,`15000`).option(`--idempotency-key <key>`,`Idempotency key (optional)`).action(async e=>{await W(`invoke`,async()=>{let t=await F(e,String(e.node??``)),r=String(e.command??``).trim();if(!t||!r){let{error:e}=U();n.error(e(`--node and --command required`)),n.exit(1);return}let i=JSON.parse(String(e.params??`{}`)),a=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,o={nodeId:t,command:r,params:i,idempotencyKey:String(e.idempotencyKey??l())};typeof a==`number`&&Number.isFinite(a)&&(o.timeoutMs=a);let s=await L(`node.invoke`,e,o);n.log(JSON.stringify(s,null,2))})}),{timeoutMs:3e4}),z(e.command(`run`).description(`Run a shell command on a node (mac only)`).option(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--cwd <path>`,`Working directory`).option(`--env <key=val>`,`Environment override (repeatable)`,(e,t=[])=>[...t,e]).option(`--raw <command>`,`Run a raw shell command string (sh -lc / cmd.exe /c)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).option(`--ask <mode>`,`Exec ask mode (off|on-miss|always)`).option(`--security <mode>`,`Exec security mode (deny|allowlist|full)`).option(`--command-timeout <ms>`,`Command timeout (ms)`).option(`--needs-screen-recording`,`Require screen recording permission`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 30000)`,`30000`).argument(`[command...]`,`Command and args`).action(async(e,t)=>{await W(`run`,async()=>{let r=a(),i=t.agent?.trim()||s(r),o=ce(r,i),c=typeof t.raw==`string`?t.raw.trim():``;if(c&&Array.isArray(e)&&e.length>0)throw Error(`use --raw or argv, not both`);if(!c&&(!Array.isArray(e)||e.length===0))throw Error(`command required`);let l=String(t.node??``).trim()||o?.node?.trim()||``;if(!l)throw Error(`node required (set --node or tools.exec.node)`);let u=await F(t,l),d=await fe({opts:t,command:e,raw:c,nodeId:u,agentId:i,execDefaults:o}),f=d.prepared.plan,p=de(t,o),m=await pe({opts:t,nodeId:u,agentId:i,security:p.security,ask:p.ask});if(m.hostSecurity===`deny`)throw Error(`exec denied: host=node security=deny`);let h=await me({opts:t,nodeId:u,agentId:i,approvalPlan:f,hostSecurity:m.hostSecurity,hostAsk:m.hostAsk,askFallback:m.askFallback}),g=await L(`node.invoke`,t,he({nodeId:u,approvalPlan:f,nodeEnv:d.nodeEnv,timeoutMs:d.timeoutMs,invokeTimeout:d.invokeTimeout,approvedByAsk:h.approvedByAsk,approvalDecision:h.approvalDecision,approvalId:h.approvalId,idempotencyKey:t.idempotencyKey,fallbackAgentId:i,needsScreenRecording:t.needsScreenRecording===!0}));if(t.json){n.log(JSON.stringify(g,null,2));return}let _=typeof g==`object`&&g?g.payload:void 0,v=typeof _?.stdout==`string`?_.stdout:``,y=typeof _?.stderr==`string`?_.stderr:``,b=typeof _?.exitCode==`number`?_.exitCode:null,x=_?.timedOut===!0,S=_?.success===!0;if(v&&process.stdout.write(v),y&&process.stderr.write(y),x){let{error:e}=U();n.error(e(`run timed out`)),n.exit(1);return}if(b!==null&&b!==0){let e=R(`${y}\n${v}`);if(e){let{warn:t}=U();n.error(t(e))}}if(b!==null&&b!==0&&!S){let{error:e}=U();n.error(e(`run exit ${b}`)),n.exit(1);return}})}),{timeoutMs:35e3})}function _e(e){z(e.command(`location`).description(`Fetch location from a paired node`).command(`get`).description(`Fetch the current location from a node`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--max-age <ms>`,`Use cached location newer than this (ms)`).option(`--accuracy <coarse|balanced|precise>`,`Desired accuracy (default: balanced/precise depending on node setting)`).option(`--location-timeout <ms>`,`Location fix timeout (ms)`,`10000`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 20000)`,`20000`).action(async e=>{await W(`location get`,async()=>{let t=await F(e,String(e.node??``)),r=e.maxAge?Number.parseInt(String(e.maxAge),10):void 0,i=typeof e.accuracy==`string`?e.accuracy.trim().toLowerCase():void 0,a=i===`coarse`||i===`balanced`||i===`precise`?i:void 0,o=e.locationTimeout?Number.parseInt(String(e.locationTimeout),10):void 0,s=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,c={nodeId:t,command:`location.get`,params:{maxAgeMs:Number.isFinite(r)?r:void 0,desiredAccuracy:a,timeoutMs:Number.isFinite(o)?o:void 0},idempotencyKey:l()};typeof s==`number`&&Number.isFinite(s)&&(c.timeoutMs=s);let u=await L(`node.invoke`,e,c),d=typeof u==`object`&&u?u:{},f=d.payload&&typeof d.payload==`object`?d.payload:{};if(e.json){n.log(JSON.stringify(f,null,2));return}let p=f.lat,m=f.lon,h=f.accuracyMeters;if(typeof p==`number`&&typeof m==`number`){let e=typeof h==`number`?` ±${h.toFixed(1)}m`:``;n.log(`${p},${m}${e}`);return}n.log(JSON.stringify(f))})}),{timeoutMs:3e4})}function ve(e){z(e.command(`notify`).description(`Send a local notification on a node (mac only)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--title <text>`,`Notification title`).option(`--body <text>`,`Notification body`).option(`--sound <name>`,`Notification sound`).option(`--priority <passive|active|timeSensitive>`,`Notification priority`).option(`--delivery <system|overlay|auto>`,`Delivery mode`,`system`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 15000)`,`15000`).action(async e=>{await W(`notify`,async()=>{let t=await F(e,String(e.node??``)),r=String(e.title??``).trim(),i=String(e.body??``).trim();if(!r&&!i)throw Error(`missing --title or --body`);let a=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,o={nodeId:t,command:`system.notify`,params:{title:r,body:i,sound:e.sound,priority:e.priority,delivery:e.delivery},idempotencyKey:String(e.idempotencyKey??l())};typeof a==`number`&&Number.isFinite(a)&&(o.timeoutMs=a);let s=await L(`node.invoke`,e,o);if(e.json){n.log(JSON.stringify(s,null,2));return}let{ok:c}=U();n.log(c(`notify ok`))})}))}function X(e){let{pending:t,now:n,tableWidth:r,theme:i}=e,a=t.map(e=>({Request:e.requestId,Node:e.displayName?.trim()?e.displayName.trim():e.nodeId,IP:e.remoteIp??``,Requested:typeof e.ts==`number`?u(Math.max(0,n-e.ts)):i.muted(`unknown`),Repair:e.isRepair?i.warn(`yes`):``}));return{heading:i.heading(`Pending`),table:N({width:r,columns:[{key:`Request`,header:`Request`,minWidth:8},{key:`Node`,header:`Node`,minWidth:14,flex:!0},{key:`IP`,header:`IP`,minWidth:10},{key:`Requested`,header:`Requested`,minWidth:12},{key:`Repair`,header:`Repair`,minWidth:6}],rows:a}).trimEnd()}}function ye(e){z(e.command(`pending`).description(`List pending pairing requests`).action(async e=>{await W(`pending`,async()=>{let{pending:t}=A(await L(`node.pair.list`,e,{}));if(e.json){n.log(JSON.stringify(t,null,2));return}if(t.length===0){let{muted:e}=U();n.log(e(`No pending pairing requests.`));return}let{heading:r,warn:i,muted:a}=U(),o=P(),s=X({pending:t,now:Date.now(),tableWidth:o,theme:{heading:r,warn:i,muted:a}});n.log(s.heading),n.log(s.table)})})),z(e.command(`approve`).description(`Approve a pending pairing request`).argument(`<requestId>`,`Pending request id`).action(async(e,t)=>{await W(`approve`,async()=>{let r=await L(`node.pair.approve`,t,{requestId:e});n.log(JSON.stringify(r,null,2))})})),z(e.command(`reject`).description(`Reject a pending pairing request`).argument(`<requestId>`,`Pending request id`).action(async(e,t)=>{await W(`reject`,async()=>{let r=await L(`node.pair.reject`,t,{requestId:e});n.log(JSON.stringify(r,null,2))})})),z(e.command(`rename`).description(`Rename a paired node (display name override)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).requiredOption(`--name <displayName>`,`New display name`).action(async e=>{await W(`rename`,async()=>{let t=await F(e,String(e.node??``)),r=String(e.name??``).trim();if(!t||!r){n.error(`--node and --name required`),n.exit(1);return}let i=await L(`node.rename`,e,{nodeId:t,displayName:r});if(e.json){n.log(JSON.stringify(i,null,2));return}let{ok:a}=U();n.log(a(`node rename ok: ${t} -> ${r}`))})}))}function be(e){if(typeof e!=`string`)return null;let t=e.trim().toLowerCase();return t===`sandbox`||t===`production`?t:null}function xe(e){z(e.command(`push`).description(`Send an APNs test push to an iOS node`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--title <text>`,`Push title`,`OpenClaw`).option(`--body <text>`,`Push body`).option(`--environment <sandbox|production>`,`Override APNs environment`).action(async e=>{await W(`push`,async()=>{let t=await F(e,String(e.node??``)),r=String(e.title??``).trim()||`OpenClaw`,i=String(e.body??``).trim()||`Push test for node ${t}`,a=be(e.environment);if(e.environment&&!a)throw Error(`invalid --environment (use sandbox|production)`);let o={nodeId:t,title:r,body:i};a&&(o.environment=a);let s=await L(`push.test`,e,o);if(e.json){n.log(JSON.stringify(s,null,2));return}let c=typeof s==`object`&&s?s:{},l=c.ok===!0,u=typeof c.status==`number`?c.status:0,d=typeof c.reason==`string`&&c.reason.trim().length>0?c.reason.trim():void 0,f=typeof c.environment==`string`&&c.environment.trim().length>0?c.environment.trim():`unknown`,{ok:p,error:m}=U(),h=l?p:m;n.log(h(`push.test status=${u} ok=${l} env=${f}`)),d&&n.log(`reason: ${d}`)})}),{timeoutMs:25e3})}function Se(e){z(e.command(`screen`).description(`Capture screen recordings from a paired node`).command(`record`).description(`Capture a short screen recording from a node (prints MEDIA:<path>)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--screen <index>`,`Screen index (0 = primary)`,`0`).option(`--duration <ms|10s>`,`Clip duration (ms or 10s)`,`10000`).option(`--fps <fps>`,`Frames per second`,`10`).option(`--no-audio`,`Disable microphone audio capture`).option(`--out <path>`,`Output path`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 120000)`,`120000`).action(async e=>{await W(`screen record`,async()=>{let t=await F(e,String(e.node??``)),i=o(e.duration??``),a=Number.parseInt(String(e.screen??`0`),10),s=Number.parseFloat(String(e.fps??`10`)),c=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,l=await L(`node.invoke`,e,V({nodeId:t,command:`screen.record`,params:{durationMs:Number.isFinite(i)?i:void 0,screenIndex:Number.isFinite(a)?a:void 0,fps:Number.isFinite(s)?s:void 0,format:`mp4`,includeAudio:e.audio!==!1},timeoutMs:c})),u=k((typeof l==`object`&&l?l:{}).payload),d=await D(e.out??ne({ext:u.format||`mp4`}),u.base64);if(e.json){n.log(JSON.stringify({file:{path:d.path,durationMs:u.durationMs,fps:u.fps,screenIndex:u.screenIndex,hasAudio:u.hasAudio}},null,2));return}n.log(`MEDIA:${r(d.path)}`)})}),{timeoutMs:18e4})}function Z(e){let t=e.trim();return t?t.toLowerCase().startsWith(`v`)?t:/^\d/.test(t)?`v${t}`:t:e}function Ce(e){let t=e.coreVersion?.trim()||void 0,n=e.uiVersion?.trim()||void 0;if(t||n)return{core:t,ui:n};let r=e.version?.trim();if(!r)return{core:void 0,ui:void 0};let i=e.platform?.trim().toLowerCase()??``;return i===`darwin`||i===`linux`||i===`win32`||i===`windows`?{core:r,ui:void 0}:{core:void 0,ui:r}}function Q(e){let{core:t,ui:n}=Ce(e),r=[];return t&&r.push(`core ${Z(t)}`),n&&r.push(`ui ${Z(n)}`),r.length>0?r.join(` · `):null}function we(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=t.split(`:`).filter(Boolean);return i(n.length<=3?t:`${n.slice(0,2).join(`:`)}:…:${n.slice(-1)[0]}`)}function $(e,t){if(e==null)return;let r=typeof e==`string`?e.trim():typeof e==`number`?String(e).trim():null;if(r===null){n.error(`${t}: invalid duration value`),n.exit(1);return}if(r)try{return o(r)}catch(e){let r=e instanceof Error?e.message:String(e);n.error(`${t}: ${r}`),n.exit(1);return}}function Te(e){z(e.command(`status`).description(`List known nodes with connection status and capabilities`).option(`--connected`,`Only show connected nodes`).option(`--last-connected <duration>`,`Only show nodes connected within duration (e.g. 24h)`).action(async e=>{await W(`status`,async()=>{let t=!!e.connected,r=$(e.lastConnected,`Invalid --last-connected`),i=await L(`node.list`,e,{}),a=typeof i==`object`&&i?i:{},{ok:o,warn:s,muted:c}=U(),l=P(),d=Date.now(),f=j(i),p=r===void 0?null:new Map(A(await L(`node.pair.list`,e,{})).paired.map(e=>[e.nodeId,e])),m=f.filter(e=>{if(t&&!e.connected)return!1;if(r!==void 0){let t=p?.get(e.nodeId),n=typeof t?.lastConnectedAtMs==`number`?t.lastConnectedAtMs:typeof e.connectedAtMs==`number`?e.connectedAtMs:void 0;if(typeof n!=`number`||d-n>r)return!1}return!0});if(e.json){let e=typeof a.ts==`number`?a.ts:Date.now();n.log(JSON.stringify({...a,ts:e,nodes:m},null,2));return}let h=m.filter(e=>!!e.paired).length,g=m.filter(e=>!!e.connected).length,_=m.length===f.length?``:` (of ${f.length})`;if(n.log(`Known: ${m.length}${_} · Paired: ${h} · Connected: ${g}`),m.length===0)return;let v=m.map(e=>{let t=e.displayName?.trim()?e.displayName.trim():e.nodeId,n=B(e.permissions),r=Q(e),i=we(e.pathEnv),a=[e.deviceFamily?`device: ${e.deviceFamily}`:null,e.modelIdentifier?`hw: ${e.modelIdentifier}`:null,n?`perms: ${n}`:null,r,i?`path: ${i}`:null].filter(Boolean),l=Array.isArray(e.caps)?e.caps.map(String).filter(Boolean).toSorted().join(`, `):`?`,f=e.paired?o(`paired`):s(`unpaired`),p=e.connected?o(`connected`):c(`disconnected`),m=typeof e.connectedAtMs==`number`?` (${u(Math.max(0,d-e.connectedAtMs))})`:``;return{Node:t,ID:e.nodeId,IP:e.remoteIp??``,Detail:a.join(` · `),Status:`${f} · ${p}${m}`,Caps:l}});n.log(N({width:l,columns:[{key:`Node`,header:`Node`,minWidth:14,flex:!0},{key:`ID`,header:`ID`,minWidth:10},{key:`IP`,header:`IP`,minWidth:10},{key:`Detail`,header:`Detail`,minWidth:18,flex:!0},{key:`Status`,header:`Status`,minWidth:18},{key:`Caps`,header:`Caps`,minWidth:12,flex:!0}],rows:v}).trimEnd())})})),z(e.command(`describe`).description(`Describe a node (capabilities + supported invoke commands)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).action(async e=>{await W(`describe`,async()=>{let t=await F(e,String(e.node??``)),r=await L(`node.describe`,e,{nodeId:t});if(e.json){n.log(JSON.stringify(r,null,2));return}let i=typeof r==`object`&&r?r:{},a=typeof i.displayName==`string`?i.displayName:t,o=!!i.connected,s=!!i.paired,c=Array.isArray(i.caps)?i.caps.map(String).filter(Boolean).toSorted():null,l=Array.isArray(i.commands)?i.commands.map(String).filter(Boolean).toSorted():[],u=B(i.permissions),d=typeof i.deviceFamily==`string`?i.deviceFamily:null,f=typeof i.modelIdentifier==`string`?i.modelIdentifier:null,p=typeof i.remoteIp==`string`?i.remoteIp:null,m=typeof i.pathEnv==`string`?i.pathEnv:null,h=Q(i),{heading:g,ok:_,warn:v,muted:y}=U(),b=`${s?_(`paired`):v(`unpaired`)} · ${o?_(`connected`):y(`disconnected`)}`,x=P(),S=[{Field:`ID`,Value:t},a?{Field:`Name`,Value:a}:null,p?{Field:`IP`,Value:p}:null,d?{Field:`Device`,Value:d}:null,f?{Field:`Model`,Value:f}:null,u?{Field:`Perms`,Value:u}:null,h?{Field:`Version`,Value:h}:null,m?{Field:`PATH`,Value:m}:null,{Field:`Status`,Value:b},{Field:`Caps`,Value:c?c.join(`, `):`?`}].filter(Boolean);if(n.log(g(`Node`)),n.log(N({width:x,columns:[{key:`Field`,header:`Field`,minWidth:8},{key:`Value`,header:`Value`,minWidth:24,flex:!0}],rows:S}).trimEnd()),n.log(``),n.log(g(`Commands`)),l.length===0){n.log(y(`- (none reported)`));return}for(let e of l)n.log(`- ${e}`)})})),z(e.command(`list`).description(`List pending and paired nodes`).option(`--connected`,`Only show connected nodes`).option(`--last-connected <duration>`,`Only show nodes connected within duration (e.g. 24h)`).action(async e=>{await W(`list`,async()=>{let t=!!e.connected,r=$(e.lastConnected,`Invalid --last-connected`),{pending:i,paired:a}=A(await L(`node.pair.list`,e,{})),{heading:o,muted:s,warn:c}=U(),l=P(),d=Date.now(),f=t||r!==void 0,p=f?[]:i,m=f?new Map(j(await L(`node.list`,e,{})).map(e=>[e.nodeId,e])):null,h=a.filter(e=>{if(t&&!m?.get(e.nodeId)?.connected)return!1;if(r!==void 0){let t=m?.get(e.nodeId),n=typeof e.lastConnectedAtMs==`number`?e.lastConnectedAtMs:typeof t?.connectedAtMs==`number`?t.connectedAtMs:void 0;if(typeof n!=`number`||d-n>r)return!1}return!0}),g=f&&h.length!==a.length?` (of ${a.length})`:``;if(n.log(`Pending: ${p.length} · Paired: ${h.length}${g}`),e.json){n.log(JSON.stringify({pending:p,paired:h},null,2));return}if(p.length>0){let e=X({pending:p,now:d,tableWidth:l,theme:{heading:o,warn:c,muted:s}});n.log(``),n.log(e.heading),n.log(e.table)}if(h.length>0){let e=h.map(e=>{let t=m?.get(e.nodeId),n=typeof e.lastConnectedAtMs==`number`?e.lastConnectedAtMs:typeof t?.connectedAtMs==`number`?t.connectedAtMs:void 0;return{Node:e.displayName?.trim()?e.displayName.trim():e.nodeId,Id:e.nodeId,IP:e.remoteIp??``,LastConnect:typeof n==`number`?u(Math.max(0,d-n)):s(`unknown`)}});n.log(``),n.log(o(`Paired`)),n.log(N({width:l,columns:[{key:`Node`,header:`Node`,minWidth:14,flex:!0},{key:`Id`,header:`ID`,minWidth:10},{key:`IP`,header:`IP`,minWidth:10},{key:`LastConnect`,header:`Last Connect`,minWidth:14}],rows:e}).trimEnd())}})}))}function Ee(t){let n=t.command(`nodes`).description(`Manage gateway-owned nodes (pairing, status, invoke, and media)`).addHelpText(`after`,()=>`\n${e.heading(`Examples:`)}\n${p([[`openclaw nodes status`,`List known nodes with live status.`],[`openclaw nodes pairing pending`,`Show pending node pairing requests.`],[`openclaw nodes run --node <id> --raw "uname -a"`,`Run a shell command on a node.`],[`openclaw nodes camera snap --node <id>`,`Capture a photo from a node camera.`]])}\n\n${e.muted(`Docs:`)} ${d(`/cli/nodes`,`docs.openclaw.ai/cli/nodes`)}\n`);Te(n),ye(n),ge(n),ve(n),xe(n),se(n),K(n),Se(n),_e(n)}export{Ee as registerNodesCli};
4
+ - `)}`);return{version:i?`v0.9`:`v0.8`,messageCount:a}}async function Y(e,t,n){let r=await F(e,String(e.node??``)),i=M(e.invokeTimeout);return await L(`node.invoke`,e,V({nodeId:r,command:t,params:n,timeoutMs:typeof i==`number`?i:void 0}))}function se(e){let t=e.command(`canvas`).description(`Capture or render canvas content from a paired node`);z(t.command(`snapshot`).description(`Capture a canvas snapshot (prints MEDIA:<path>)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--format <png|jpg|jpeg>`,`Image format`,`jpg`).option(`--max-width <px>`,`Max width in px (optional)`).option(`--quality <0-1>`,`JPEG quality (optional)`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 20000)`,`20000`).action(async e=>{await W(`canvas snapshot`,async()=>{let t=String(e.format??`jpg`).trim().toLowerCase(),i=t===`jpg`||t===`jpeg`?`jpeg`:`png`;if(i!==`png`&&i!==`jpeg`)throw Error(`invalid format: ${String(e.format)} (expected png|jpg|jpeg)`);let a=e.maxWidth?Number.parseInt(String(e.maxWidth),10):void 0,o=e.quality?Number.parseFloat(String(e.quality)):void 0,s=await Y(e,`canvas.snapshot`,{format:i,maxWidth:Number.isFinite(a)?a:void 0,quality:Number.isFinite(o)?o:void 0}),c=re((typeof s==`object`&&s?s:{}).payload),l=S({ext:c.format===`jpeg`?`jpg`:c.format});if(await ae(l,c.base64),e.json){n.log(JSON.stringify({file:{path:l,format:c.format}},null,2));return}n.log(`MEDIA:${r(l)}`)})}),{timeoutMs:6e4}),z(t.command(`present`).description(`Show the canvas (optionally with a target URL/path)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--target <urlOrPath>`,`Target URL/path (optional)`).option(`--x <px>`,`Placement x coordinate`).option(`--y <px>`,`Placement y coordinate`).option(`--width <px>`,`Placement width`).option(`--height <px>`,`Placement height`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await W(`canvas present`,async()=>{let t={x:e.x?Number.parseFloat(e.x):void 0,y:e.y?Number.parseFloat(e.y):void 0,width:e.width?Number.parseFloat(e.width):void 0,height:e.height?Number.parseFloat(e.height):void 0},r={};if(e.target&&(r.url=String(e.target)),(Number.isFinite(t.x)||Number.isFinite(t.y)||Number.isFinite(t.width)||Number.isFinite(t.height))&&(r.placement=t),await Y(e,`canvas.present`,r),!e.json){let{ok:e}=U();n.log(e(`canvas present ok`))}})})),z(t.command(`hide`).description(`Hide the canvas`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await W(`canvas hide`,async()=>{if(await Y(e,`canvas.hide`,void 0),!e.json){let{ok:e}=U();n.log(e(`canvas hide ok`))}})})),z(t.command(`navigate`).description(`Navigate the canvas to a URL`).argument(`<url>`,`Target URL/path`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async(e,t)=>{await W(`canvas navigate`,async()=>{if(await Y(t,`canvas.navigate`,{url:e}),!t.json){let{ok:e}=U();n.log(e(`canvas navigate ok`))}})})),z(t.command(`eval`).description(`Evaluate JavaScript in the canvas`).argument(`[js]`,`JavaScript to evaluate`).option(`--js <code>`,`JavaScript to evaluate`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async(e,t)=>{await W(`canvas eval`,async()=>{let r=t.js??e;if(!r)throw Error(`missing --js or <js>`);let i=await Y(t,`canvas.eval`,{javaScript:r});if(t.json){n.log(JSON.stringify(i,null,2));return}let a=typeof i==`object`&&i?i.payload:void 0;if(a?.result)n.log(a.result);else{let{ok:e}=U();n.log(e(`canvas eval ok`))}})}));let i=t.command(`a2ui`).description(`Render A2UI content on the canvas`);z(i.command(`push`).description(`Push A2UI JSONL to the canvas`).option(`--jsonl <path>`,`Path to JSONL payload`).option(`--text <text>`,`Render a quick A2UI text payload`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await W(`canvas a2ui push`,async()=>{let t=!!e.jsonl,r=typeof e.text==`string`;if(t===r)throw Error(`provide exactly one of --jsonl or --text`);let i=r?J(String(e.text??``)):await H.readFile(String(e.jsonl),`utf8`),{version:a,messageCount:o}=oe(i);if(a===`v0.9`)throw Error(`Detected A2UI v0.9 JSONL (createSurface). OpenClaw currently supports v0.8 only.`);if(await Y(e,`canvas.a2ui.pushJSONL`,{jsonl:i}),!e.json){let{ok:e}=U();n.log(e(`canvas a2ui push ok (v0.8, ${o} message${o===1?``:`s`})`))}})})),z(i.command(`reset`).description(`Reset A2UI renderer state`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms`).action(async e=>{await W(`canvas a2ui reset`,async()=>{if(await Y(e,`canvas.a2ui.reset`,void 0),!e.json){let{ok:e}=U();n.log(e(`canvas a2ui reset ok`))}})}))}function ce(e,t){let n=e?.tools?.exec;if(!t)return n?{security:n.security,ask:n.ask,node:n.node,pathPrepend:n.pathPrepend,safeBins:n.safeBins}:void 0;let r=c(e,t)?.tools?.exec;return{security:r?.security??n?.security,ask:r?.ask??n?.ask,node:r?.node??n?.node,pathPrepend:r?.pathPrepend??n?.pathPrepend,safeBins:r?.safeBins??n?.safeBins}}async function le(e,t){try{let n=j(await L(`node.list`,e,{})).find(e=>e.nodeId===t);return typeof n?.platform==`string`?n.platform:null}catch{return null}}function ue(e){let t=ie(e);if(!t)throw Error(`invalid system.run.prepare response`);return t}function de(e,t){let n=h(t?.security)??`allowlist`,r=h(e.security);if(e.security&&!r)throw Error(`invalid --security (use deny|allowlist|full)`);let i=v(t?.ask)??_().defaults?.ask??`on-miss`,a=v(e.ask);if(e.ask&&!a)throw Error(`invalid --ask (use off|on-miss|always)`);return{security:y(n,r??n),ask:m(i,a??i)}}async function fe(e){let t=te(e.opts.env),n=M(e.opts.commandTimeout),r=M(e.opts.invokeTimeout),i=Array.isArray(e.command)?e.command:[],a;if(e.raw){a=e.raw;let t=await le(e.opts,e.nodeId);i=T(a,t??void 0)}let o=t?{...t}:void 0;return o&&x(o,e.execDefaults?.pathPrepend,{requireExisting:!0}),{prepared:ue((await L(`node.invoke`,e.opts,{nodeId:e.nodeId,command:`system.run.prepare`,params:{command:i,rawCommand:a,cwd:e.opts.cwd,agentId:e.agentId},idempotencyKey:`prepare-${l()}`}))?.payload),nodeEnv:o,timeoutMs:n,invokeTimeout:r}}async function pe(e){let t=await L(`exec.approvals.node.get`,e.opts,{nodeId:e.nodeId}),n=t&&typeof t==`object`?t.file:void 0;if(!n||typeof n!=`object`)throw Error(`exec approvals unavailable`);let r=g({file:n,agentId:e.agentId,overrides:{security:e.security,ask:e.ask}});return{approvals:r,hostSecurity:y(e.security,r.agent.security),hostAsk:m(e.ask,r.agent.ask),askFallback:r.agent.askFallback}}async function me(e){let t=!1,n=null,r=null;if(!(e.hostAsk===`always`||e.hostAsk===`on-miss`))return{approvedByAsk:t,approvalDecision:n,approvalId:r};r=crypto.randomUUID();let i=b,a=Math.max(M(e.opts.timeout)??0,i+1e4),o=await L(`exec.approval.request`,e.opts,{id:r,systemRunPlan:e.approvalPlan,cwd:e.approvalPlan.cwd,nodeId:e.nodeId,host:`node`,security:e.hostSecurity,ask:e.hostAsk,agentId:e.approvalPlan.agentId??e.agentId,resolvedPath:void 0,sessionKey:e.approvalPlan.sessionKey??void 0,timeoutMs:i},{transportTimeoutMs:a}),s=o&&typeof o==`object`?o.decision??null:null;if(s===`deny`)throw Error(`exec denied: user denied`);if(!s){if(e.askFallback===`full`)t=!0,n=`allow-once`;else if(e.askFallback!==`allowlist`)throw Error(`exec denied: approval required (approval UI not available)`)}return s===`allow-once`&&(t=!0,n=`allow-once`),s===`allow-always`&&(t=!0,n=`allow-always`),{approvedByAsk:t,approvalDecision:n,approvalId:r}}function he(e){let t={nodeId:e.nodeId,command:`system.run`,params:{command:e.approvalPlan.argv,rawCommand:e.approvalPlan.commandText,cwd:e.approvalPlan.cwd,env:e.nodeEnv,timeoutMs:e.timeoutMs,needsScreenRecording:e.needsScreenRecording},idempotencyKey:String(e.idempotencyKey??l())};return(e.approvalPlan.agentId??e.fallbackAgentId)&&(t.params.agentId=e.approvalPlan.agentId??e.fallbackAgentId),e.approvalPlan.sessionKey&&(t.params.sessionKey=e.approvalPlan.sessionKey),t.params.approved=e.approvedByAsk,e.approvalDecision&&(t.params.approvalDecision=e.approvalDecision),e.approvedByAsk&&e.approvalId&&(t.params.runId=e.approvalId),e.invokeTimeout!==void 0&&(t.timeoutMs=e.invokeTimeout),t}function ge(e){z(e.command(`invoke`).description(`Invoke a command on a paired node`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).requiredOption(`--command <command>`,`Command (e.g. canvas.eval)`).option(`--params <json>`,`JSON object string for params`,`{}`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 15000)`,`15000`).option(`--idempotency-key <key>`,`Idempotency key (optional)`).action(async e=>{await W(`invoke`,async()=>{let t=await F(e,String(e.node??``)),r=String(e.command??``).trim();if(!t||!r){let{error:e}=U();n.error(e(`--node and --command required`)),n.exit(1);return}let i=JSON.parse(String(e.params??`{}`)),a=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,o={nodeId:t,command:r,params:i,idempotencyKey:String(e.idempotencyKey??l())};typeof a==`number`&&Number.isFinite(a)&&(o.timeoutMs=a);let s=await L(`node.invoke`,e,o);n.log(JSON.stringify(s,null,2))})}),{timeoutMs:3e4}),z(e.command(`run`).description(`Run a shell command on a node (mac only)`).option(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--cwd <path>`,`Working directory`).option(`--env <key=val>`,`Environment override (repeatable)`,(e,t=[])=>[...t,e]).option(`--raw <command>`,`Run a raw shell command string (sh -lc / cmd.exe /c)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).option(`--ask <mode>`,`Exec ask mode (off|on-miss|always)`).option(`--security <mode>`,`Exec security mode (deny|allowlist|full)`).option(`--command-timeout <ms>`,`Command timeout (ms)`).option(`--needs-screen-recording`,`Require screen recording permission`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 30000)`,`30000`).argument(`[command...]`,`Command and args`).action(async(e,t)=>{await W(`run`,async()=>{let r=a(),i=t.agent?.trim()||s(r),o=ce(r,i),c=typeof t.raw==`string`?t.raw.trim():``;if(c&&Array.isArray(e)&&e.length>0)throw Error(`use --raw or argv, not both`);if(!c&&(!Array.isArray(e)||e.length===0))throw Error(`command required`);let l=String(t.node??``).trim()||o?.node?.trim()||``;if(!l)throw Error(`node required (set --node or tools.exec.node)`);let u=await F(t,l),d=await fe({opts:t,command:e,raw:c,nodeId:u,agentId:i,execDefaults:o}),f=d.prepared.plan,p=de(t,o),m=await pe({opts:t,nodeId:u,agentId:i,security:p.security,ask:p.ask});if(m.hostSecurity===`deny`)throw Error(`exec denied: host=node security=deny`);let h=await me({opts:t,nodeId:u,agentId:i,approvalPlan:f,hostSecurity:m.hostSecurity,hostAsk:m.hostAsk,askFallback:m.askFallback}),g=await L(`node.invoke`,t,he({nodeId:u,approvalPlan:f,nodeEnv:d.nodeEnv,timeoutMs:d.timeoutMs,invokeTimeout:d.invokeTimeout,approvedByAsk:h.approvedByAsk,approvalDecision:h.approvalDecision,approvalId:h.approvalId,idempotencyKey:t.idempotencyKey,fallbackAgentId:i,needsScreenRecording:t.needsScreenRecording===!0}));if(t.json){n.log(JSON.stringify(g,null,2));return}let _=typeof g==`object`&&g?g.payload:void 0,v=typeof _?.stdout==`string`?_.stdout:``,y=typeof _?.stderr==`string`?_.stderr:``,b=typeof _?.exitCode==`number`?_.exitCode:null,x=_?.timedOut===!0,S=_?.success===!0;if(v&&process.stdout.write(v),y&&process.stderr.write(y),x){let{error:e}=U();n.error(e(`run timed out`)),n.exit(1);return}if(b!==null&&b!==0){let e=R(`${y}\n${v}`);if(e){let{warn:t}=U();n.error(t(e))}}if(b!==null&&b!==0&&!S){let{error:e}=U();n.error(e(`run exit ${b}`)),n.exit(1);return}})}),{timeoutMs:35e3})}function _e(e){z(e.command(`location`).description(`Fetch location from a paired node`).command(`get`).description(`Fetch the current location from a node`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--max-age <ms>`,`Use cached location newer than this (ms)`).option(`--accuracy <coarse|balanced|precise>`,`Desired accuracy (default: balanced/precise depending on node setting)`).option(`--location-timeout <ms>`,`Location fix timeout (ms)`,`10000`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 20000)`,`20000`).action(async e=>{await W(`location get`,async()=>{let t=await F(e,String(e.node??``)),r=e.maxAge?Number.parseInt(String(e.maxAge),10):void 0,i=typeof e.accuracy==`string`?e.accuracy.trim().toLowerCase():void 0,a=i===`coarse`||i===`balanced`||i===`precise`?i:void 0,o=e.locationTimeout?Number.parseInt(String(e.locationTimeout),10):void 0,s=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,c={nodeId:t,command:`location.get`,params:{maxAgeMs:Number.isFinite(r)?r:void 0,desiredAccuracy:a,timeoutMs:Number.isFinite(o)?o:void 0},idempotencyKey:l()};typeof s==`number`&&Number.isFinite(s)&&(c.timeoutMs=s);let u=await L(`node.invoke`,e,c),d=typeof u==`object`&&u?u:{},f=d.payload&&typeof d.payload==`object`?d.payload:{};if(e.json){n.log(JSON.stringify(f,null,2));return}let p=f.lat,m=f.lon,h=f.accuracyMeters;if(typeof p==`number`&&typeof m==`number`){let e=typeof h==`number`?` ±${h.toFixed(1)}m`:``;n.log(`${p},${m}${e}`);return}n.log(JSON.stringify(f))})}),{timeoutMs:3e4})}function ve(e){z(e.command(`notify`).description(`Send a local notification on a node (mac only)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--title <text>`,`Notification title`).option(`--body <text>`,`Notification body`).option(`--sound <name>`,`Notification sound`).option(`--priority <passive|active|timeSensitive>`,`Notification priority`).option(`--delivery <system|overlay|auto>`,`Delivery mode`,`system`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 15000)`,`15000`).action(async e=>{await W(`notify`,async()=>{let t=await F(e,String(e.node??``)),r=String(e.title??``).trim(),i=String(e.body??``).trim();if(!r&&!i)throw Error(`missing --title or --body`);let a=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,o={nodeId:t,command:`system.notify`,params:{title:r,body:i,sound:e.sound,priority:e.priority,delivery:e.delivery},idempotencyKey:String(e.idempotencyKey??l())};typeof a==`number`&&Number.isFinite(a)&&(o.timeoutMs=a);let s=await L(`node.invoke`,e,o);if(e.json){n.log(JSON.stringify(s,null,2));return}let{ok:c}=U();n.log(c(`notify ok`))})}))}function X(e){let{pending:t,now:n,tableWidth:r,theme:i}=e,a=t.map(e=>({Request:e.requestId,Node:e.displayName?.trim()?e.displayName.trim():e.nodeId,IP:e.remoteIp??``,Requested:typeof e.ts==`number`?u(Math.max(0,n-e.ts)):i.muted(`unknown`),Repair:e.isRepair?i.warn(`yes`):``}));return{heading:i.heading(`Pending`),table:N({width:r,columns:[{key:`Request`,header:`Request`,minWidth:8},{key:`Node`,header:`Node`,minWidth:14,flex:!0},{key:`IP`,header:`IP`,minWidth:10},{key:`Requested`,header:`Requested`,minWidth:12},{key:`Repair`,header:`Repair`,minWidth:6}],rows:a}).trimEnd()}}function ye(e){z(e.command(`pending`).description(`List pending pairing requests`).action(async e=>{await W(`pending`,async()=>{let{pending:t}=A(await L(`node.pair.list`,e,{}));if(e.json){n.log(JSON.stringify(t,null,2));return}if(t.length===0){let{muted:e}=U();n.log(e(`No pending pairing requests.`));return}let{heading:r,warn:i,muted:a}=U(),o=P(),s=X({pending:t,now:Date.now(),tableWidth:o,theme:{heading:r,warn:i,muted:a}});n.log(s.heading),n.log(s.table)})})),z(e.command(`approve`).description(`Approve a pending pairing request`).argument(`<requestId>`,`Pending request id`).action(async(e,t)=>{await W(`approve`,async()=>{let r=await L(`node.pair.approve`,t,{requestId:e});n.log(JSON.stringify(r,null,2))})})),z(e.command(`reject`).description(`Reject a pending pairing request`).argument(`<requestId>`,`Pending request id`).action(async(e,t)=>{await W(`reject`,async()=>{let r=await L(`node.pair.reject`,t,{requestId:e});n.log(JSON.stringify(r,null,2))})})),z(e.command(`rename`).description(`Rename a paired node (display name override)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).requiredOption(`--name <displayName>`,`New display name`).action(async e=>{await W(`rename`,async()=>{let t=await F(e,String(e.node??``)),r=String(e.name??``).trim();if(!t||!r){n.error(`--node and --name required`),n.exit(1);return}let i=await L(`node.rename`,e,{nodeId:t,displayName:r});if(e.json){n.log(JSON.stringify(i,null,2));return}let{ok:a}=U();n.log(a(`node rename ok: ${t} -> ${r}`))})}))}function be(e){if(typeof e!=`string`)return null;let t=e.trim().toLowerCase();return t===`sandbox`||t===`production`?t:null}function xe(e){z(e.command(`push`).description(`Send an APNs test push to an iOS node`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--title <text>`,`Push title`,`OpenClaw`).option(`--body <text>`,`Push body`).option(`--environment <sandbox|production>`,`Override APNs environment`).action(async e=>{await W(`push`,async()=>{let t=await F(e,String(e.node??``)),r=String(e.title??``).trim()||`OpenClaw`,i=String(e.body??``).trim()||`Push test for node ${t}`,a=be(e.environment);if(e.environment&&!a)throw Error(`invalid --environment (use sandbox|production)`);let o={nodeId:t,title:r,body:i};a&&(o.environment=a);let s=await L(`push.test`,e,o);if(e.json){n.log(JSON.stringify(s,null,2));return}let c=typeof s==`object`&&s?s:{},l=c.ok===!0,u=typeof c.status==`number`?c.status:0,d=typeof c.reason==`string`&&c.reason.trim().length>0?c.reason.trim():void 0,f=typeof c.environment==`string`&&c.environment.trim().length>0?c.environment.trim():`unknown`,{ok:p,error:m}=U(),h=l?p:m;n.log(h(`push.test status=${u} ok=${l} env=${f}`)),d&&n.log(`reason: ${d}`)})}),{timeoutMs:25e3})}function Se(e){z(e.command(`screen`).description(`Capture screen recordings from a paired node`).command(`record`).description(`Capture a short screen recording from a node (prints MEDIA:<path>)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).option(`--screen <index>`,`Screen index (0 = primary)`,`0`).option(`--duration <ms|10s>`,`Clip duration (ms or 10s)`,`10000`).option(`--fps <fps>`,`Frames per second`,`10`).option(`--no-audio`,`Disable microphone audio capture`).option(`--out <path>`,`Output path`).option(`--invoke-timeout <ms>`,`Node invoke timeout in ms (default 120000)`,`120000`).action(async e=>{await W(`screen record`,async()=>{let t=await F(e,String(e.node??``)),i=o(e.duration??``),a=Number.parseInt(String(e.screen??`0`),10),s=Number.parseFloat(String(e.fps??`10`)),c=e.invokeTimeout?Number.parseInt(String(e.invokeTimeout),10):void 0,l=await L(`node.invoke`,e,V({nodeId:t,command:`screen.record`,params:{durationMs:Number.isFinite(i)?i:void 0,screenIndex:Number.isFinite(a)?a:void 0,fps:Number.isFinite(s)?s:void 0,format:`mp4`,includeAudio:e.audio!==!1},timeoutMs:c})),u=k((typeof l==`object`&&l?l:{}).payload),d=await D(e.out??ne({ext:u.format||`mp4`}),u.base64);if(e.json){n.log(JSON.stringify({file:{path:d.path,durationMs:u.durationMs,fps:u.fps,screenIndex:u.screenIndex,hasAudio:u.hasAudio}},null,2));return}n.log(`MEDIA:${r(d.path)}`)})}),{timeoutMs:18e4})}function Z(e){let t=e.trim();return t?t.toLowerCase().startsWith(`v`)?t:/^\d/.test(t)?`v${t}`:t:e}function Ce(e){let t=e.coreVersion?.trim()||void 0,n=e.uiVersion?.trim()||void 0;if(t||n)return{core:t,ui:n};let r=e.version?.trim();if(!r)return{core:void 0,ui:void 0};let i=e.platform?.trim().toLowerCase()??``;return i===`darwin`||i===`linux`||i===`win32`||i===`windows`?{core:r,ui:void 0}:{core:void 0,ui:r}}function Q(e){let{core:t,ui:n}=Ce(e),r=[];return t&&r.push(`core ${Z(t)}`),n&&r.push(`ui ${Z(n)}`),r.length>0?r.join(` · `):null}function we(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=t.split(`:`).filter(Boolean);return i(n.length<=3?t:`${n.slice(0,2).join(`:`)}:…:${n.slice(-1)[0]}`)}function $(e,t){if(e==null)return;let r=typeof e==`string`?e.trim():typeof e==`number`?String(e).trim():null;if(r===null){n.error(`${t}: invalid duration value`),n.exit(1);return}if(r)try{return o(r)}catch(e){let r=e instanceof Error?e.message:String(e);n.error(`${t}: ${r}`),n.exit(1);return}}function Te(e){z(e.command(`status`).description(`List known nodes with connection status and capabilities`).option(`--connected`,`Only show connected nodes`).option(`--last-connected <duration>`,`Only show nodes connected within duration (e.g. 24h)`).action(async e=>{await W(`status`,async()=>{let t=!!e.connected,r=$(e.lastConnected,`Invalid --last-connected`),i=await L(`node.list`,e,{}),a=typeof i==`object`&&i?i:{},{ok:o,warn:s,muted:c}=U(),l=P(),d=Date.now(),f=j(i),p=r===void 0?null:new Map(A(await L(`node.pair.list`,e,{})).paired.map(e=>[e.nodeId,e])),m=f.filter(e=>{if(t&&!e.connected)return!1;if(r!==void 0){let t=p?.get(e.nodeId),n=typeof t?.lastConnectedAtMs==`number`?t.lastConnectedAtMs:typeof e.connectedAtMs==`number`?e.connectedAtMs:void 0;if(typeof n!=`number`||d-n>r)return!1}return!0});if(e.json){let e=typeof a.ts==`number`?a.ts:Date.now();n.log(JSON.stringify({...a,ts:e,nodes:m},null,2));return}let h=m.filter(e=>!!e.paired).length,g=m.filter(e=>!!e.connected).length,_=m.length===f.length?``:` (of ${f.length})`;if(n.log(`Known: ${m.length}${_} · Paired: ${h} · Connected: ${g}`),m.length===0)return;let v=m.map(e=>{let t=e.displayName?.trim()?e.displayName.trim():e.nodeId,n=B(e.permissions),r=Q(e),i=we(e.pathEnv),a=[e.deviceFamily?`device: ${e.deviceFamily}`:null,e.modelIdentifier?`hw: ${e.modelIdentifier}`:null,n?`perms: ${n}`:null,r,i?`path: ${i}`:null].filter(Boolean),l=Array.isArray(e.caps)?e.caps.map(String).filter(Boolean).toSorted().join(`, `):`?`,f=e.paired?o(`paired`):s(`unpaired`),p=e.connected?o(`connected`):c(`disconnected`),m=typeof e.connectedAtMs==`number`?` (${u(Math.max(0,d-e.connectedAtMs))})`:``;return{Node:t,ID:e.nodeId,IP:e.remoteIp??``,Detail:a.join(` · `),Status:`${f} · ${p}${m}`,Caps:l}});n.log(N({width:l,columns:[{key:`Node`,header:`Node`,minWidth:14,flex:!0},{key:`ID`,header:`ID`,minWidth:10},{key:`IP`,header:`IP`,minWidth:10},{key:`Detail`,header:`Detail`,minWidth:18,flex:!0},{key:`Status`,header:`Status`,minWidth:18},{key:`Caps`,header:`Caps`,minWidth:12,flex:!0}],rows:v}).trimEnd())})})),z(e.command(`describe`).description(`Describe a node (capabilities + supported invoke commands)`).requiredOption(`--node <idOrNameOrIp>`,`Node id, name, or IP`).action(async e=>{await W(`describe`,async()=>{let t=await F(e,String(e.node??``)),r=await L(`node.describe`,e,{nodeId:t});if(e.json){n.log(JSON.stringify(r,null,2));return}let i=typeof r==`object`&&r?r:{},a=typeof i.displayName==`string`?i.displayName:t,o=!!i.connected,s=!!i.paired,c=Array.isArray(i.caps)?i.caps.map(String).filter(Boolean).toSorted():null,l=Array.isArray(i.commands)?i.commands.map(String).filter(Boolean).toSorted():[],u=B(i.permissions),d=typeof i.deviceFamily==`string`?i.deviceFamily:null,f=typeof i.modelIdentifier==`string`?i.modelIdentifier:null,p=typeof i.remoteIp==`string`?i.remoteIp:null,m=typeof i.pathEnv==`string`?i.pathEnv:null,h=Q(i),{heading:g,ok:_,warn:v,muted:y}=U(),b=`${s?_(`paired`):v(`unpaired`)} · ${o?_(`connected`):y(`disconnected`)}`,x=P(),S=[{Field:`ID`,Value:t},a?{Field:`Name`,Value:a}:null,p?{Field:`IP`,Value:p}:null,d?{Field:`Device`,Value:d}:null,f?{Field:`Model`,Value:f}:null,u?{Field:`Perms`,Value:u}:null,h?{Field:`Version`,Value:h}:null,m?{Field:`PATH`,Value:m}:null,{Field:`Status`,Value:b},{Field:`Caps`,Value:c?c.join(`, `):`?`}].filter(Boolean);if(n.log(g(`Node`)),n.log(N({width:x,columns:[{key:`Field`,header:`Field`,minWidth:8},{key:`Value`,header:`Value`,minWidth:24,flex:!0}],rows:S}).trimEnd()),n.log(``),n.log(g(`Commands`)),l.length===0){n.log(y(`- (none reported)`));return}for(let e of l)n.log(`- ${e}`)})})),z(e.command(`list`).description(`List pending and paired nodes`).option(`--connected`,`Only show connected nodes`).option(`--last-connected <duration>`,`Only show nodes connected within duration (e.g. 24h)`).action(async e=>{await W(`list`,async()=>{let t=!!e.connected,r=$(e.lastConnected,`Invalid --last-connected`),{pending:i,paired:a}=A(await L(`node.pair.list`,e,{})),{heading:o,muted:s,warn:c}=U(),l=P(),d=Date.now(),f=t||r!==void 0,p=f?[]:i,m=f?new Map(j(await L(`node.list`,e,{})).map(e=>[e.nodeId,e])):null,h=a.filter(e=>{if(t&&!m?.get(e.nodeId)?.connected)return!1;if(r!==void 0){let t=m?.get(e.nodeId),n=typeof e.lastConnectedAtMs==`number`?e.lastConnectedAtMs:typeof t?.connectedAtMs==`number`?t.connectedAtMs:void 0;if(typeof n!=`number`||d-n>r)return!1}return!0}),g=f&&h.length!==a.length?` (of ${a.length})`:``;if(n.log(`Pending: ${p.length} · Paired: ${h.length}${g}`),e.json){n.log(JSON.stringify({pending:p,paired:h},null,2));return}if(p.length>0){let e=X({pending:p,now:d,tableWidth:l,theme:{heading:o,warn:c,muted:s}});n.log(``),n.log(e.heading),n.log(e.table)}if(h.length>0){let e=h.map(e=>{let t=m?.get(e.nodeId),n=typeof e.lastConnectedAtMs==`number`?e.lastConnectedAtMs:typeof t?.connectedAtMs==`number`?t.connectedAtMs:void 0;return{Node:e.displayName?.trim()?e.displayName.trim():e.nodeId,Id:e.nodeId,IP:e.remoteIp??``,LastConnect:typeof n==`number`?u(Math.max(0,d-n)):s(`unknown`)}});n.log(``),n.log(o(`Paired`)),n.log(N({width:l,columns:[{key:`Node`,header:`Node`,minWidth:14,flex:!0},{key:`Id`,header:`ID`,minWidth:10},{key:`IP`,header:`IP`,minWidth:10},{key:`LastConnect`,header:`Last Connect`,minWidth:14}],rows:e}).trimEnd())}})}))}function Ee(t){let n=t.command(`nodes`).description(`Manage gateway-owned nodes (pairing, status, invoke, and media)`).addHelpText(`after`,()=>`\n${e.heading(`Examples:`)}\n${p([[`openclaw nodes status`,`List known nodes with live status.`],[`openclaw nodes pairing pending`,`Show pending node pairing requests.`],[`openclaw nodes run --node <id> --raw "uname -a"`,`Run a shell command on a node.`],[`openclaw nodes camera snap --node <id>`,`Capture a photo from a node camera.`]])}\n\n${e.muted(`Docs:`)} ${d(`/cli/nodes`,`docs.openclaw.ai/cli/nodes`)}\n`);Te(n),ye(n),ge(n),ve(n),xe(n),se(n),K(n),Se(n),_e(n)}export{Ee as registerNodesCli};
@@ -1 +1 @@
1
- import{H as e}from"./subsystem-C5XF2Fy5.js";import{Fa as t}from"./model-selection-I1ctjFOB.js";import{r as n}from"./command-format-BbDT1tlm.js";import{t as r}from"./fetch-guard-Cji70DJW.js";import{c as i,l as a,n as o,o as s,t as c}from"./system-run-command-DCzdgYyb.js";import l from"node:fs";import*as u from"node:path";import d from"node:path";import*as f from"node:fs/promises";import{randomUUID as p}from"node:crypto";function m(e){if(`PATH`in e)return`PATH`;for(let t of Object.keys(e))if(t.toUpperCase()===`PATH`)return t;return`PATH`}function h(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e){if(typeof r!=`string`)continue;let e=r.trim();!e||t.has(e)||(t.add(e),n.push(e))}return n}function g(e,t){if(t.length===0)return e;let n=(e??``).split(d.delimiter).map(e=>e.trim()).filter(Boolean),r=new Set(t);return[...t,...n.filter(e=>!r.has(e))].join(d.delimiter)}function _(e,t,n){if(!Array.isArray(t)||t.length===0)return;let r=m(e);if(n?.requireExisting&&!e[r])return;let i=g(e[r],t);i&&(e[r]=i)}function v(e,t){return String(t??``).trim().toLowerCase().startsWith(`win`)?[`cmd.exe`,`/d`,`/s`,`/c`,e]:[`/bin/sh`,`-lc`,e]}function y(e){return typeof e==`string`?e:``}function b(e,t){let n=i(e);return!n||n===t?null:n}function x(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e,n=s(t.plan);if(n)return{plan:n};if(!t.plan||typeof t.plan!=`object`||Array.isArray(t.plan))return null;let r=t.plan,o=a(r.argv),c=i(r.rawCommand)??i(t.commandText)??i(t.cmdText);return o.length===0||!c?null:{plan:{argv:o,cwd:i(r.cwd),commandText:c,commandPreview:i(r.commandPreview),agentId:i(r.agentId),sessionKey:i(r.sessionKey)}}}function S(e){let t=(i(e.host)??``)===`node`?s(e.systemRunPlan):null,n=a(e.commandArgv),r=y(e.command),o=t?t.commandText||c(t.argv):r,l=t?b(t.commandPreview??r,o):null,u=t?{...t,commandPreview:l}:null;return{plan:u,commandArgv:u?.argv??(n.length>0?n:void 0),commandText:o,commandPreview:l,cwd:u?.cwd??i(e.cwd),agentId:u?.agentId??i(e.agentId),sessionKey:u?.sessionKey??i(e.sessionKey)}}function C(e){let t=s(e.plan??null);if(t)return{ok:!0,plan:t,argv:[...t.argv],cwd:t.cwd,agentId:t.agentId,sessionKey:t.sessionKey,commandText:t.commandText};let n=o({command:e.command,rawCommand:e.rawCommand});return n.ok?{ok:!0,plan:null,argv:n.argv,cwd:i(e.cwd),agentId:i(e.agentId),sessionKey:i(e.sessionKey),commandText:n.commandText}:{ok:!1,message:n.message,details:n.details}}function w(e){return typeof e==`object`&&e?e:{}}function T(e){return typeof e==`string`?e:void 0}function E(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function D(e){return typeof e==`boolean`?e:void 0}function O(t){let n=t.tmpDir??e();return t.tmpDir||l.mkdirSync(n,{recursive:!0,mode:448}),{tmpDir:n,id:t.id??p(),ext:t.ext.startsWith(`.`)?t.ext:`.${t.ext}`}}const k=250*1024*1024;function A(e){let t=w(e),n=T(t.format),r=T(t.base64),i=T(t.url),a=E(t.width),o=E(t.height);if(!n||!r&&!i||a===void 0||o===void 0)throw Error(`invalid camera.snap payload`);return{format:n,...r?{base64:r}:{},...i?{url:i}:{},width:a,height:o}}function j(e){let t=w(e),n=T(t.format),r=T(t.base64),i=T(t.url),a=E(t.durationMs),o=D(t.hasAudio);if(!n||!r&&!i||a===void 0||o===void 0)throw Error(`invalid camera.clip payload`);return{format:n,...r?{base64:r}:{},...i?{url:i}:{},durationMs:a,hasAudio:o}}function M(e){let{tmpDir:t,id:r,ext:i}=O({tmpDir:e.tmpDir,id:e.id,ext:e.ext}),a=e.facing?`-${e.facing}`:``,o=n();return u.join(t,`${o}-camera-${e.kind}${a}-${r}${i}`)}async function N(e,n,i){let a=new URL(n);if(a.protocol!==`https:`)throw Error(`writeUrlToFile: only https URLs are allowed, got ${a.protocol}`);let o=t(i.expectedHost);if(!o)throw Error(`writeUrlToFile: expectedHost is required`);if(t(a.hostname)!==o)throw Error(`writeUrlToFile: url host ${a.hostname} must match node host ${i.expectedHost}`);let s={allowPrivateNetwork:!0,allowedHostnames:[o],hostnameAllowlist:[o]},c=async()=>{},l=0;try{let a=await r({url:n,auditContext:`writeUrlToFile`,policy:s});c=a.release;let u=new URL(a.finalUrl);if(u.protocol!==`https:`)throw Error(`writeUrlToFile: redirect resolved to non-https URL ${a.finalUrl}`);if(t(u.hostname)!==o)throw Error(`writeUrlToFile: redirect host ${u.hostname} must match node host ${i.expectedHost}`);let d=a.response;if(!d.ok)throw Error(`failed to download ${n}: ${d.status} ${d.statusText}`);let p=d.headers.get(`content-length`),m=p?Number.parseInt(p,10):void 0;if(typeof m==`number`&&Number.isFinite(m)&&m>k)throw Error(`writeUrlToFile: content-length ${m} exceeds max ${k}`);let h=d.body;if(!h)throw Error(`failed to download ${n}: empty response body`);let g=await f.open(e,`w`),_;try{let e=h.getReader();for(;;){let{done:t,value:n}=await e.read();if(t)break;if(!(!n||n.byteLength===0)){if(l+=n.byteLength,l>k)throw Error(`writeUrlToFile: downloaded ${l} bytes, exceeds max ${k}`);await g.write(n)}}}catch(e){_=e}finally{await g.close()}if(_)throw await f.unlink(e).catch(()=>{}),_}finally{await c()}return{path:e,bytes:l}}async function P(e,t){let n=Buffer.from(t,`base64`);return await f.writeFile(e,n),{path:e,bytes:n.length}}function F(e){let t=e?.trim();if(!t)throw Error(`camera URL payload requires node remoteIp`);return t}async function I(e){if(e.payload.url){await N(e.filePath,e.payload.url,{expectedHost:F(e.expectedHost)});return}if(e.payload.base64){await P(e.filePath,e.payload.base64);return}throw Error(e.invalidPayloadMessage??`invalid camera payload`)}async function L(e){let t=M({kind:`clip`,facing:e.facing,ext:e.payload.format,tmpDir:e.tmpDir,id:e.id});return await I({filePath:t,payload:e.payload,expectedHost:e.expectedHost,invalidPayloadMessage:`invalid camera.clip payload`}),t}function R(e){let t=w(e),n=T(t.format),r=T(t.base64);if(!n||!r)throw Error(`invalid canvas.snapshot payload`);return{format:n,base64:r}}function z(e){let{tmpDir:t,id:r,ext:i}=O(e),a=n();return u.join(t,`${a}-canvas-snapshot-${r}${i}`)}function B(e){if(!Array.isArray(e)||e.length===0)return;let t={};for(let n of e){if(typeof n!=`string`)continue;let e=n.indexOf(`=`);if(e<=0)continue;let r=n.slice(0,e).trim();r&&(t[r]=n.slice(e+1))}return Object.keys(t).length>0?t:void 0}function V(e){let t=w(e),n=T(t.format),r=T(t.base64);if(!n||!r)throw Error(`invalid screen.record payload`);return{format:n,base64:r,durationMs:typeof t.durationMs==`number`?t.durationMs:void 0,fps:typeof t.fps==`number`?t.fps:void 0,screenIndex:typeof t.screenIndex==`number`?t.screenIndex:void 0,hasAudio:typeof t.hasAudio==`boolean`?t.hasAudio:void 0}}function H(e){let{tmpDir:t,id:n,ext:r}=O(e);return u.join(t,`openclaw-screen-record-${n}${r}`)}async function U(e,t){return P(e,t)}export{_,z as a,h as b,j as c,L as d,I as f,v as g,C as h,B as i,A as l,S as m,H as n,R as o,x as p,U as r,M as s,V as t,P as u,m as v,g as y};
1
+ import{H as e}from"./subsystem-C5XF2Fy5.js";import{Fa as t}from"./model-selection-I1ctjFOB.js";import{r as n}from"./command-format-BbDT1tlm.js";import{t as r}from"./fetch-guard-Cji70DJW.js";import{c as i,l as a,n as o,o as s,t as c}from"./system-run-command-DCzdgYyb.js";import l from"node:fs";import*as u from"node:path";import d from"node:path";import*as f from"node:fs/promises";import{randomUUID as p}from"node:crypto";function m(e){if(`PATH`in e)return`PATH`;for(let t of Object.keys(e))if(t.toUpperCase()===`PATH`)return t;return`PATH`}function h(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e){if(typeof r!=`string`)continue;let e=r.trim();!e||t.has(e)||(t.add(e),n.push(e))}return n}function g(e,t){if(t.length===0)return e;let n=(e??``).split(d.delimiter).map(e=>e.trim()).filter(Boolean),r=new Set(t);return[...t,...n.filter(e=>!r.has(e))].join(d.delimiter)}function _(e,t,n){if(!Array.isArray(t)||t.length===0)return;let r=m(e);if(n?.requireExisting&&!e[r])return;let i=g(e[r],t);i&&(e[r]=i)}function v(e,t){return String(t??``).trim().toLowerCase().startsWith(`win`)?[`cmd.exe`,`/d`,`/s`,`/c`,e]:[`/bin/sh`,`-lc`,e]}function y(e){return typeof e==`string`?e:``}function b(e,t){let n=i(e);return!n||n===t?null:n}function x(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e,n=s(t.plan);if(n)return{plan:n};if(!t.plan||typeof t.plan!=`object`||Array.isArray(t.plan))return null;let r=t.plan,o=a(r.argv),c=i(r.rawCommand)??i(t.commandText)??i(t.cmdText);return o.length===0||!c?null:{plan:{argv:o,cwd:i(r.cwd),commandText:c,commandPreview:i(r.commandPreview),agentId:i(r.agentId),sessionKey:i(r.sessionKey)}}}function S(e){let t=(i(e.host)??``)===`node`?s(e.systemRunPlan):null,n=a(e.commandArgv),r=y(e.command),o=t?t.commandText||c(t.argv):r,l=t?b(t.commandPreview??r,o):null,u=t?{...t,commandPreview:l}:null;return{plan:u,commandArgv:u?.argv??(n.length>0?n:void 0),commandText:o,commandPreview:l,cwd:u?.cwd??i(e.cwd),agentId:u?.agentId??i(e.agentId),sessionKey:u?.sessionKey??i(e.sessionKey)}}function C(e){let t=s(e.plan??null);if(t)return{ok:!0,plan:t,argv:[...t.argv],cwd:t.cwd,agentId:t.agentId,sessionKey:t.sessionKey,commandText:t.commandText};let n=o({command:e.command,rawCommand:e.rawCommand});return n.ok?{ok:!0,plan:null,argv:n.argv,cwd:i(e.cwd),agentId:i(e.agentId),sessionKey:i(e.sessionKey),commandText:n.commandText}:{ok:!1,message:n.message,details:n.details}}function w(e){return typeof e==`object`&&e?e:{}}function T(e){return typeof e==`string`?e:void 0}function E(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function D(e){return typeof e==`boolean`?e:void 0}function O(t){let n=t.tmpDir??e();return t.tmpDir||l.mkdirSync(n,{recursive:!0,mode:448}),{tmpDir:n,id:t.id??p(),ext:t.ext.startsWith(`.`)?t.ext:`.${t.ext}`}}const k=250*1024*1024;function A(e){let t=w(e),n=T(t.format),r=T(t.base64),i=T(t.url),a=E(t.width),o=E(t.height);if(!n||!r&&!i||a===void 0||o===void 0)throw Error(`invalid camera.snap payload`);return{format:n,...r?{base64:r}:{},...i?{url:i}:{},width:a,height:o}}function j(e){let t=w(e),n=T(t.format),r=T(t.base64),i=T(t.url),a=E(t.durationMs),o=D(t.hasAudio);if(!n||!r&&!i||a===void 0||o===void 0)throw Error(`invalid camera.clip payload`);return{format:n,...r?{base64:r}:{},...i?{url:i}:{},durationMs:a,hasAudio:o}}function M(e){let{tmpDir:t,id:r,ext:i}=O({tmpDir:e.tmpDir,id:e.id,ext:e.ext}),a=e.facing?`-${e.facing}`:``,o=n();return u.join(t,`${o}-camera-${e.kind}${a}-${r}${i}`)}async function N(e,n,i){let a=new URL(n);if(a.protocol!==`https:`)throw Error(`writeUrlToFile: only https URLs are allowed, got ${a.protocol}`);let o=t(i.expectedHost);if(!o)throw Error(`writeUrlToFile: expectedHost is required`);if(t(a.hostname)!==o)throw Error(`writeUrlToFile: url host ${a.hostname} must match node host ${i.expectedHost}`);let s={allowPrivateNetwork:!0,allowedHostnames:[o],hostnameAllowlist:[o]},c=async()=>{},l=0;try{let a=await r({url:n,auditContext:`writeUrlToFile`,policy:s});c=a.release;let u=new URL(a.finalUrl);if(u.protocol!==`https:`)throw Error(`writeUrlToFile: redirect resolved to non-https URL ${a.finalUrl}`);if(t(u.hostname)!==o)throw Error(`writeUrlToFile: redirect host ${u.hostname} must match node host ${i.expectedHost}`);let d=a.response;if(!d.ok)throw Error(`failed to download ${n}: ${d.status} ${d.statusText}`);let p=d.headers.get(`content-length`),m=p?Number.parseInt(p,10):void 0;if(typeof m==`number`&&Number.isFinite(m)&&m>k)throw Error(`writeUrlToFile: content-length ${m} exceeds max ${k}`);let h=d.body;if(!h)throw Error(`failed to download ${n}: empty response body`);let g=await f.open(e,`w`),_;try{let e=h.getReader();for(;;){let{done:t,value:n}=await e.read();if(t)break;if(!(!n||n.byteLength===0)){if(l+=n.byteLength,l>k)throw Error(`writeUrlToFile: downloaded ${l} bytes, exceeds max ${k}`);await g.write(n)}}}catch(e){_=e}finally{await g.close()}if(_)throw await f.unlink(e).catch(()=>{}),_}finally{await c()}return{path:e,bytes:l}}async function P(e,t){let n=Buffer.from(t,`base64`);return await f.writeFile(e,n),{path:e,bytes:n.length}}function F(e){let t=e?.trim();if(!t)throw Error(`camera URL payload requires node remoteIp`);return t}async function I(e){if(e.payload.url){await N(e.filePath,e.payload.url,{expectedHost:F(e.expectedHost)});return}if(e.payload.base64){await P(e.filePath,e.payload.base64);return}throw Error(e.invalidPayloadMessage??`invalid camera payload`)}async function L(e){let t=M({kind:`clip`,facing:e.facing,ext:e.payload.format,tmpDir:e.tmpDir,id:e.id});return await I({filePath:t,payload:e.payload,expectedHost:e.expectedHost,invalidPayloadMessage:`invalid camera.clip payload`}),t}function R(e){let t=w(e),n=T(t.format),r=T(t.base64);if(!n||!r)throw Error(`invalid canvas.snapshot payload`);return{format:n,base64:r}}function z(e){let{tmpDir:t,id:r,ext:i}=O(e),a=n();return u.join(t,`${a}-canvas-snapshot-${r}${i}`)}function B(e){if(!Array.isArray(e)||e.length===0)return;let t={};for(let n of e){if(typeof n!=`string`)continue;let e=n.indexOf(`=`);if(e<=0)continue;let r=n.slice(0,e).trim();r&&(t[r]=n.slice(e+1))}return Object.keys(t).length>0?t:void 0}function V(e){let t=w(e),n=T(t.format),r=T(t.base64);if(!n||!r)throw Error(`invalid screen.record payload`);return{format:n,base64:r,durationMs:typeof t.durationMs==`number`?t.durationMs:void 0,fps:typeof t.fps==`number`?t.fps:void 0,screenIndex:typeof t.screenIndex==`number`?t.screenIndex:void 0,hasAudio:typeof t.hasAudio==`boolean`?t.hasAudio:void 0}}function H(e){let{tmpDir:t,id:n,ext:r}=O(e);return u.join(t,`openclaw-screen-record-${n}${r}`)}async function U(e,t){return P(e,t)}export{_,z as a,h as b,j as c,L as d,I as f,v as g,C as h,B as i,A as l,S as m,H as n,R as o,x as p,U as r,M as s,V as t,P as u,m as v,g as y};
@@ -1,3 +1,3 @@
1
1
  import{d as e}from"./subsystem-C5XF2Fy5.js";import{r as t}from"./prompt-style-CXKekIBY.js";import{note as n}from"@clack/prompts";const r=/^(https?:\/\/|file:\/\/)/i,i=/^[a-zA-Z]:[\\/]/,a=/^[a-zA-Z0-9._-]+$/;function o(e){if(!e)return!1;let t=e.trim().toLowerCase();return t?t!==`0`&&t!==`false`&&t!==`off`:!1}function s(e,t){if(t<=0)return[e];let n=Array.from(e),r=[];for(let e=0;e<n.length;e+=t)r.push(n.slice(e,e+t).join(``));return r.length>0?r:[e]}function c(e){return e?r.test(e)||e.startsWith(`/`)||e.startsWith(`~/`)||e.startsWith(`./`)||e.startsWith(`../`)||i.test(e)||e.startsWith(`\\\\`)||e.includes(`/`)||e.includes(`\\`)?!0:e.includes(`_`)&&a.test(e):!1}function l(t,n){if(t.trim().length===0)return[t];let r=t.match(/^(\s*)([-*\u2022]\s+)?(.*)$/),i=r?.[1]??``,a=r?.[2]??``,o=r?.[3]??``,l=`${i}${a}`,u=`${i}${a?` `.repeat(a.length):``}`,d=Math.max(10,n-e(l)),f=Math.max(10,n-e(u)),p=o.split(/\s+/).filter(Boolean),m=[],h=``,g=l,_=d;for(let t of p){if(!h){if(e(t)>_){if(c(t)){h=t;continue}let e=s(t,_),n=e.shift()??``;m.push(g+n),g=u,_=f;for(let t of e)m.push(g+t);continue}h=t;continue}let n=`${h} ${t}`;if(e(n)<=_){h=n;continue}if(m.push(g+h),g=u,_=f,e(t)>_){if(c(t)){h=t;continue}let e=s(t,_),n=e.shift()??``;m.push(g+n);for(let t of e)m.push(g+t);h=``;continue}h=t}return(h||p.length===0)&&m.push(g+h),m}function u(e,t={}){let n=t.columns??process.stdout.columns??80,r=t.maxWidth??Math.max(40,Math.min(88,n-10));return e.split(`
2
2
  `).flatMap(e=>l(e,r)).join(`
3
- `)}function d(e,r){o(process.env.OPENCLAW_SUPPRESS_NOTES)||n(u(e),t(r))}export{d as t};
3
+ `)}function d(e,r){o(process.env.OPENCLAW_SUPPRESS_NOTES)||n(u(e),t(r))}export{d as t};
@@ -1,3 +1,3 @@
1
1
  import{d as e}from"./subsystem-BLbY429l.js";import{r as t}from"./prompt-style-BThRSQJR.js";import{note as n}from"@clack/prompts";const r=/^(https?:\/\/|file:\/\/)/i,i=/^[a-zA-Z]:[\\/]/,a=/^[a-zA-Z0-9._-]+$/;function o(e){if(!e)return!1;let t=e.trim().toLowerCase();return t?t!==`0`&&t!==`false`&&t!==`off`:!1}function s(e,t){if(t<=0)return[e];let n=Array.from(e),r=[];for(let e=0;e<n.length;e+=t)r.push(n.slice(e,e+t).join(``));return r.length>0?r:[e]}function c(e){return e?r.test(e)||e.startsWith(`/`)||e.startsWith(`~/`)||e.startsWith(`./`)||e.startsWith(`../`)||i.test(e)||e.startsWith(`\\\\`)||e.includes(`/`)||e.includes(`\\`)?!0:e.includes(`_`)&&a.test(e):!1}function l(t,n){if(t.trim().length===0)return[t];let r=t.match(/^(\s*)([-*\u2022]\s+)?(.*)$/),i=r?.[1]??``,a=r?.[2]??``,o=r?.[3]??``,l=`${i}${a}`,u=`${i}${a?` `.repeat(a.length):``}`,d=Math.max(10,n-e(l)),f=Math.max(10,n-e(u)),p=o.split(/\s+/).filter(Boolean),m=[],h=``,g=l,_=d;for(let t of p){if(!h){if(e(t)>_){if(c(t)){h=t;continue}let e=s(t,_),n=e.shift()??``;m.push(g+n),g=u,_=f;for(let t of e)m.push(g+t);continue}h=t;continue}let n=`${h} ${t}`;if(e(n)<=_){h=n;continue}if(m.push(g+h),g=u,_=f,e(t)>_){if(c(t)){h=t;continue}let e=s(t,_),n=e.shift()??``;m.push(g+n);for(let t of e)m.push(g+t);h=``;continue}h=t}return(h||p.length===0)&&m.push(g+h),m}function u(e,t={}){let n=t.columns??process.stdout.columns??80,r=t.maxWidth??Math.max(40,Math.min(88,n-10));return e.split(`
2
2
  `).flatMap(e=>l(e,r)).join(`
3
- `)}function d(e,r){o(process.env.OPENCLAW_SUPPRESS_NOTES)||n(u(e),t(r))}export{d as t};
3
+ `)}function d(e,r){o(process.env.OPENCLAW_SUPPRESS_NOTES)||n(u(e),t(r))}export{d as t};
@@ -1 +1 @@
1
- import{y as e}from"./utils-UGOV_184.js";import{g as t,h as n,m as r}from"./env-overrides-DXJbFrwI.js";import{t as i}from"./exec-DHqLtFYt.js";import{c as a,d as o,n as s,s as c,t as l,u}from"./install-safe-path-iesxijn2.js";import d from"node:os";import f from"node:path";import p from"node:fs/promises";function m(e){return{resolvedName:e?.name,resolvedVersion:e?.version,resolvedSpec:e?.resolvedSpec,integrity:e?.integrity,shasum:e?.shasum,resolvedAt:e?.resolvedAt}}async function h(e,t){let n=await p.mkdtemp(f.join(d.tmpdir(),e));try{return await t(n)}finally{await p.rm(n,{recursive:!0,force:!0}).catch(()=>void 0)}}async function g(t){let n=e(t);return await a(n)?u(n)?{ok:!0,path:n}:{ok:!1,error:`unsupported archive: ${n}`}:{ok:!1,error:`archive not found: ${n}`}}function _(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function v(e){let t=e.lastIndexOf(`@`);if(t<=0||t>=e.length-1)return;let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();if(!(!n||!r))return`${n}@${r}`}function y(e){if(!e||typeof e!=`object`)return null;let t=e,n=_(t.name),r=_(t.version),i=_(t.id),a=(n&&r?`${n}@${r}`:void 0)??(i?v(i):void 0);return{filename:_(t.filename),metadata:{name:n,version:r,resolvedSpec:a,integrity:_(t.integrity),shasum:_(t.shasum)}}}function b(e){let t=e.trim();if(!t)return null;let n=[t],r=t.indexOf(`[`);r>0&&n.push(t.slice(r));for(let e of n){let t;try{t=JSON.parse(e)}catch{continue}let n=Array.isArray(t)?t:[t],r=null;for(let e=n.length-1;e>=0;--e){let t=y(n[e]);if(t&&(r||=t,t.filename))return t}if(r)return r}return null}function x(e){let t=e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);for(let e=t.length-1;e>=0;--e){let n=t[e]?.match(/([^\s"']+\.tgz)/);if(n?.[1])return n[1]}}async function S(e){let t=(await p.readdir(e,{withFileTypes:!0}).catch(()=>[])).filter(e=>e.isFile()&&e.name.endsWith(`.tgz`));if(t.length===0)return;if(t.length===1)return t[0]?.name;let n=await Promise.all(t.map(async t=>({name:t.name,mtimeMs:(await p.stat(f.join(e,t.name))).mtimeMs})));return n.sort((e,t)=>t.mtimeMs-e.mtimeMs),n[0]?.name}async function C(e){let t=await i([`npm`,`pack`,e.spec,`--ignore-scripts`,`--json`],{timeoutMs:Math.max(e.timeoutMs,3e5),cwd:e.cwd,env:{COREPACK_ENABLE_DOWNLOAD_PROMPT:`0`,NPM_CONFIG_IGNORE_SCRIPTS:`true`}});if(t.code!==0){let n=t.stderr.trim()||t.stdout.trim();return/E404|is not in this registry/i.test(n)?{ok:!1,error:`Package not found on npm: ${e.spec}. See https://docs.openclaw.ai/tools/plugin for installable plugins.`}:{ok:!1,error:`npm pack failed: ${n}`}}let n=b(t.stdout||``),r=n?.filename??x(t.stdout||``);if(r||=await S(e.cwd),!r)return{ok:!1,error:`npm pack produced no archive`};let o=f.isAbsolute(r)?r:f.join(e.cwd,r);if(!await a(o)){let t=await S(e.cwd);if(!t)return{ok:!1,error:`npm pack produced no archive`};o=f.join(e.cwd,t)}return{ok:!0,archivePath:o,metadata:n?.metadata??{}}}async function w(t){let n=e(t);return await a(n)?{ok:!0,resolvedPath:n,stat:await p.stat(n)}:{ok:!1,error:`path not found: ${n}`}}async function T(e){return await h(e.tempDirPrefix,async t=>{let n=f.join(t,`extract`);await p.mkdir(n,{recursive:!0}),e.logger?.info?.(`Extracting ${e.archivePath}…`);try{await c({archivePath:e.archivePath,destDir:n,timeoutMs:e.timeoutMs,logger:e.logger})}catch(e){return{ok:!1,error:`failed to extract archive: ${String(e)}`}}let r=``;try{r=await o(n)}catch(e){return{ok:!1,error:String(e)}}return await e.onExtracted(r)})}function E(e,t){return{logger:e.logger??t,mode:e.mode??`install`,dryRun:e.dryRun??!1}}function D(e,t,n=12e4){return{...E(e,t),timeoutMs:e.timeoutMs??n}}const O=`install base directory changed during install`;function k(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}async function A(e){let t=f.join(e,`package.json`),n=``;try{n=await p.readFile(t,`utf-8`)}catch{return}let r;try{let e=JSON.parse(n);if(!k(e))return;r=e}catch{return}let i=r.devDependencies;if(!k(i))return;let a=Object.entries(i).filter(([,e])=>!(typeof e==`string`?e.trim():``).startsWith(`workspace:`));a.length!==Object.keys(i).length&&(a.length===0?delete r.devDependencies:r.devDependencies=Object.fromEntries(a),await p.writeFile(t,`${JSON.stringify(r,null,2)}\n`,`utf-8`))}async function j(e){for(let t of e.candidatePaths)await l({baseDir:e.installBaseDir,candidatePath:t,boundaryLabel:`install directory`})}function M(e){return!!e&&e!==`..`&&!e.startsWith(`..${f.sep}`)}function N(e){return e instanceof Error&&e.message===O}async function P(e){let t=await p.lstat(e.installBaseDir);if(!t.isDirectory()||t.isSymbolicLink()||await p.realpath(e.installBaseDir)!==e.expectedRealPath)throw Error(O)}async function F(e){e&&await p.rm(e,{recursive:!0,force:!0}).catch(()=>void 0)}async function I(e){let t=f.resolve(e.installBaseDir),n=f.resolve(e.targetDir),r=f.relative(t,n);if(!M(r))throw Error(`invalid install target path`);let i=await p.realpath(e.installBaseDir);return{installBaseRealPath:i,canonicalTargetDir:f.join(i,r)}}async function L(e){e.logger?.info?.(`Installing to ${e.targetDir}…`);let t=f.dirname(e.targetDir);await p.mkdir(t,{recursive:!0}),await j({installBaseDir:t,candidatePaths:[e.targetDir]});let n,r;try{({installBaseRealPath:n,canonicalTargetDir:r}=await I({installBaseDir:t,targetDir:e.targetDir}))}catch(t){return{ok:!1,error:`${e.copyErrorPrefix}: ${String(t)}`}}let o=null,s=null,c=async(t,n)=>(N(n)?e.logger?.warn?.(`Install base directory changed during install; aborting staged publish.`):(await l(),o&&=(await F(o),null)),{ok:!1,error:t}),l=async()=>{s&&=(await p.rename(s,r).catch(()=>void 0),null)};try{await j({installBaseDir:n,candidatePaths:[r]}),o=await p.mkdtemp(f.join(n,`.openclaw-install-stage-`)),await p.cp(e.sourceDir,o,{recursive:!0})}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}try{await e.afterCopy?.(o)}catch(e){return await c(`post-copy validation failed: ${String(e)}`,e)}if(e.hasDeps){await A(o),e.logger?.info?.(e.depsLogMessage);let t=await i([`npm`,`install`,`--omit=dev`,`--omit=peer`,`--silent`,`--ignore-scripts`],{timeoutMs:Math.max(e.timeoutMs,3e5),cwd:o});if(t.code!==0)return await c(`npm install failed: ${t.stderr.trim()||t.stdout.trim()}`)}if(e.mode===`update`&&await a(r)){let i=f.join(n,`.openclaw-install-backups`);s=f.join(i,`${f.basename(r)}-${Date.now()}`);try{await p.mkdir(i,{recursive:!0}),await j({installBaseDir:n,candidatePaths:[s]}),await P({installBaseDir:t,expectedRealPath:n}),await p.rename(r,s)}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}}try{await P({installBaseDir:t,expectedRealPath:n}),await p.rename(o,r),o=null}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}if(s)try{await P({installBaseDir:t,expectedRealPath:n})}catch(t){N(t)&&e.logger?.warn?.(`Install base directory changed before backup cleanup; leaving backup in place.`),s=null}return s&&await p.rm(s,{recursive:!0,force:!0}).catch(()=>void 0),o&&await F(o),{ok:!0}}async function R(e){return L({...e,hasDeps:Object.keys(e.manifestDependencies??{}).length>0})}async function z(e){await p.mkdir(e.baseDir,{recursive:!0});let t=s({baseDir:e.baseDir,id:e.id,invalidNameMessage:e.invalidNameMessage});if(!t.ok)return{ok:!1,error:t.error};try{await l({baseDir:e.baseDir,candidatePath:t.path,boundaryLabel:e.boundaryLabel})}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}return{ok:!0,targetDir:t.path}}async function B(e){return e.mode===`install`&&await a(e.targetDir)?{ok:!1,error:e.alreadyExistsError}:{ok:!0}}async function V(e){if(!e.expectedIntegrity||!e.resolution.integrity||e.expectedIntegrity===e.resolution.integrity)return{proceed:!0};let t={expectedIntegrity:e.expectedIntegrity,actualIntegrity:e.resolution.integrity},n=e.createPayload({spec:e.spec,expectedIntegrity:t.expectedIntegrity,actualIntegrity:t.actualIntegrity,resolution:e.resolution}),r=!0;return e.onIntegrityDrift?r=await e.onIntegrityDrift(n):e.warn?.(n),{integrityDrift:t,proceed:r,payload:n}}async function H(e){let t=await V({spec:e.spec,expectedIntegrity:e.expectedIntegrity,resolution:e.resolution,createPayload:e=>({...e}),onIntegrityDrift:e.onIntegrityDrift,warn:t=>{e.warn?.(`Integrity drift detected for ${t.resolution.resolvedSpec??t.spec}: expected ${t.expectedIntegrity}, got ${t.actualIntegrity}`)}});return!t.proceed&&t.payload?{integrityDrift:t.integrityDrift,error:`aborted: npm package integrity drift detected for ${t.payload.resolution.resolvedSpec??t.payload.spec}`}:{integrityDrift:t.integrityDrift}}async function U(e){return await K({tempDirPrefix:e.tempDirPrefix,spec:e.spec,timeoutMs:e.timeoutMs,expectedIntegrity:e.expectedIntegrity,onIntegrityDrift:e.onIntegrityDrift,warn:e.warn,installFromArchive:async({archivePath:t})=>await e.installFromArchive({archivePath:t,...e.archiveInstallParams})})}function W(e){return e.ok}function G(e){if(!e.ok)return e;let t=e.installResult;return W(t)?{...t,npmResolution:e.npmResolution,...e.integrityDrift?{integrityDrift:e.integrityDrift}:{}}:t}async function K(e){return await h(e.tempDirPrefix,async i=>{let a=t(e.spec);if(!a)return{ok:!1,error:`unsupported npm spec`};let o=await C({spec:e.spec,timeoutMs:e.timeoutMs,cwd:i});if(!o.ok)return o;let s={...o.metadata,resolvedAt:new Date().toISOString()};if(s.version&&!n({spec:a,resolvedVersion:s.version}))return{ok:!1,error:r({spec:a,resolvedVersion:s.version})};let c=await H({spec:e.spec,expectedIntegrity:e.expectedIntegrity,resolution:s,onIntegrityDrift:e.onIntegrityDrift,warn:e.warn});return c.error?{ok:!1,error:c.error}:{ok:!0,installResult:await e.installFromArchive({archivePath:o.archivePath}),npmResolution:s,integrityDrift:c.integrityDrift}})}export{L as a,D as c,m as d,g as f,z as i,w as l,U as n,R as o,B as r,E as s,G as t,T as u};
1
+ import{y as e}from"./utils-UGOV_184.js";import{g as t,h as n,m as r}from"./env-overrides-DXJbFrwI.js";import{t as i}from"./exec-DHqLtFYt.js";import{c as a,d as o,n as s,s as c,t as l,u}from"./install-safe-path-iesxijn2.js";import d from"node:os";import f from"node:path";import p from"node:fs/promises";function m(e){return{resolvedName:e?.name,resolvedVersion:e?.version,resolvedSpec:e?.resolvedSpec,integrity:e?.integrity,shasum:e?.shasum,resolvedAt:e?.resolvedAt}}async function h(e,t){let n=await p.mkdtemp(f.join(d.tmpdir(),e));try{return await t(n)}finally{await p.rm(n,{recursive:!0,force:!0}).catch(()=>void 0)}}async function g(t){let n=e(t);return await a(n)?u(n)?{ok:!0,path:n}:{ok:!1,error:`unsupported archive: ${n}`}:{ok:!1,error:`archive not found: ${n}`}}function _(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function v(e){let t=e.lastIndexOf(`@`);if(t<=0||t>=e.length-1)return;let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();if(!(!n||!r))return`${n}@${r}`}function y(e){if(!e||typeof e!=`object`)return null;let t=e,n=_(t.name),r=_(t.version),i=_(t.id),a=(n&&r?`${n}@${r}`:void 0)??(i?v(i):void 0);return{filename:_(t.filename),metadata:{name:n,version:r,resolvedSpec:a,integrity:_(t.integrity),shasum:_(t.shasum)}}}function b(e){let t=e.trim();if(!t)return null;let n=[t],r=t.indexOf(`[`);r>0&&n.push(t.slice(r));for(let e of n){let t;try{t=JSON.parse(e)}catch{continue}let n=Array.isArray(t)?t:[t],r=null;for(let e=n.length-1;e>=0;--e){let t=y(n[e]);if(t&&(r||=t,t.filename))return t}if(r)return r}return null}function x(e){let t=e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);for(let e=t.length-1;e>=0;--e){let n=t[e]?.match(/([^\s"']+\.tgz)/);if(n?.[1])return n[1]}}async function S(e){let t=(await p.readdir(e,{withFileTypes:!0}).catch(()=>[])).filter(e=>e.isFile()&&e.name.endsWith(`.tgz`));if(t.length===0)return;if(t.length===1)return t[0]?.name;let n=await Promise.all(t.map(async t=>({name:t.name,mtimeMs:(await p.stat(f.join(e,t.name))).mtimeMs})));return n.sort((e,t)=>t.mtimeMs-e.mtimeMs),n[0]?.name}async function C(e){let t=await i([`npm`,`pack`,e.spec,`--ignore-scripts`,`--json`],{timeoutMs:Math.max(e.timeoutMs,3e5),cwd:e.cwd,env:{COREPACK_ENABLE_DOWNLOAD_PROMPT:`0`,NPM_CONFIG_IGNORE_SCRIPTS:`true`}});if(t.code!==0){let n=t.stderr.trim()||t.stdout.trim();return/E404|is not in this registry/i.test(n)?{ok:!1,error:`Package not found on npm: ${e.spec}. See https://docs.openclaw.ai/tools/plugin for installable plugins.`}:{ok:!1,error:`npm pack failed: ${n}`}}let n=b(t.stdout||``),r=n?.filename??x(t.stdout||``);if(r||=await S(e.cwd),!r)return{ok:!1,error:`npm pack produced no archive`};let o=f.isAbsolute(r)?r:f.join(e.cwd,r);if(!await a(o)){let t=await S(e.cwd);if(!t)return{ok:!1,error:`npm pack produced no archive`};o=f.join(e.cwd,t)}return{ok:!0,archivePath:o,metadata:n?.metadata??{}}}async function w(t){let n=e(t);return await a(n)?{ok:!0,resolvedPath:n,stat:await p.stat(n)}:{ok:!1,error:`path not found: ${n}`}}async function T(e){return await h(e.tempDirPrefix,async t=>{let n=f.join(t,`extract`);await p.mkdir(n,{recursive:!0}),e.logger?.info?.(`Extracting ${e.archivePath}…`);try{await c({archivePath:e.archivePath,destDir:n,timeoutMs:e.timeoutMs,logger:e.logger})}catch(e){return{ok:!1,error:`failed to extract archive: ${String(e)}`}}let r=``;try{r=await o(n)}catch(e){return{ok:!1,error:String(e)}}return await e.onExtracted(r)})}function E(e,t){return{logger:e.logger??t,mode:e.mode??`install`,dryRun:e.dryRun??!1}}function D(e,t,n=12e4){return{...E(e,t),timeoutMs:e.timeoutMs??n}}const O=`install base directory changed during install`;function k(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}async function A(e){let t=f.join(e,`package.json`),n=``;try{n=await p.readFile(t,`utf-8`)}catch{return}let r;try{let e=JSON.parse(n);if(!k(e))return;r=e}catch{return}let i=r.devDependencies;if(!k(i))return;let a=Object.entries(i).filter(([,e])=>!(typeof e==`string`?e.trim():``).startsWith(`workspace:`));a.length!==Object.keys(i).length&&(a.length===0?delete r.devDependencies:r.devDependencies=Object.fromEntries(a),await p.writeFile(t,`${JSON.stringify(r,null,2)}\n`,`utf-8`))}async function j(e){for(let t of e.candidatePaths)await l({baseDir:e.installBaseDir,candidatePath:t,boundaryLabel:`install directory`})}function M(e){return!!e&&e!==`..`&&!e.startsWith(`..${f.sep}`)}function N(e){return e instanceof Error&&e.message===O}async function P(e){let t=await p.lstat(e.installBaseDir);if(!t.isDirectory()||t.isSymbolicLink()||await p.realpath(e.installBaseDir)!==e.expectedRealPath)throw Error(O)}async function F(e){e&&await p.rm(e,{recursive:!0,force:!0}).catch(()=>void 0)}async function I(e){let t=f.resolve(e.installBaseDir),n=f.resolve(e.targetDir),r=f.relative(t,n);if(!M(r))throw Error(`invalid install target path`);let i=await p.realpath(e.installBaseDir);return{installBaseRealPath:i,canonicalTargetDir:f.join(i,r)}}async function L(e){e.logger?.info?.(`Installing to ${e.targetDir}…`);let t=f.dirname(e.targetDir);await p.mkdir(t,{recursive:!0}),await j({installBaseDir:t,candidatePaths:[e.targetDir]});let n,r;try{({installBaseRealPath:n,canonicalTargetDir:r}=await I({installBaseDir:t,targetDir:e.targetDir}))}catch(t){return{ok:!1,error:`${e.copyErrorPrefix}: ${String(t)}`}}let o=null,s=null,c=async(t,n)=>(N(n)?e.logger?.warn?.(`Install base directory changed during install; aborting staged publish.`):(await l(),o&&=(await F(o),null)),{ok:!1,error:t}),l=async()=>{s&&=(await p.rename(s,r).catch(()=>void 0),null)};try{await j({installBaseDir:n,candidatePaths:[r]}),o=await p.mkdtemp(f.join(n,`.openclaw-install-stage-`)),await p.cp(e.sourceDir,o,{recursive:!0})}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}try{await e.afterCopy?.(o)}catch(e){return await c(`post-copy validation failed: ${String(e)}`,e)}if(e.hasDeps){await A(o),e.logger?.info?.(e.depsLogMessage);let t=await i([`npm`,`install`,`--omit=dev`,`--omit=peer`,`--silent`,`--ignore-scripts`],{timeoutMs:Math.max(e.timeoutMs,3e5),cwd:o});if(t.code!==0)return await c(`npm install failed: ${t.stderr.trim()||t.stdout.trim()}`)}if(e.mode===`update`&&await a(r)){let i=f.join(n,`.openclaw-install-backups`);s=f.join(i,`${f.basename(r)}-${Date.now()}`);try{await p.mkdir(i,{recursive:!0}),await j({installBaseDir:n,candidatePaths:[s]}),await P({installBaseDir:t,expectedRealPath:n}),await p.rename(r,s)}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}}try{await P({installBaseDir:t,expectedRealPath:n}),await p.rename(o,r),o=null}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}if(s)try{await P({installBaseDir:t,expectedRealPath:n})}catch(t){N(t)&&e.logger?.warn?.(`Install base directory changed before backup cleanup; leaving backup in place.`),s=null}return s&&await p.rm(s,{recursive:!0,force:!0}).catch(()=>void 0),o&&await F(o),{ok:!0}}async function R(e){return L({...e,hasDeps:Object.keys(e.manifestDependencies??{}).length>0})}async function z(e){await p.mkdir(e.baseDir,{recursive:!0});let t=s({baseDir:e.baseDir,id:e.id,invalidNameMessage:e.invalidNameMessage});if(!t.ok)return{ok:!1,error:t.error};try{await l({baseDir:e.baseDir,candidatePath:t.path,boundaryLabel:e.boundaryLabel})}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}return{ok:!0,targetDir:t.path}}async function B(e){return e.mode===`install`&&await a(e.targetDir)?{ok:!1,error:e.alreadyExistsError}:{ok:!0}}async function V(e){if(!e.expectedIntegrity||!e.resolution.integrity||e.expectedIntegrity===e.resolution.integrity)return{proceed:!0};let t={expectedIntegrity:e.expectedIntegrity,actualIntegrity:e.resolution.integrity},n=e.createPayload({spec:e.spec,expectedIntegrity:t.expectedIntegrity,actualIntegrity:t.actualIntegrity,resolution:e.resolution}),r=!0;return e.onIntegrityDrift?r=await e.onIntegrityDrift(n):e.warn?.(n),{integrityDrift:t,proceed:r,payload:n}}async function H(e){let t=await V({spec:e.spec,expectedIntegrity:e.expectedIntegrity,resolution:e.resolution,createPayload:e=>({...e}),onIntegrityDrift:e.onIntegrityDrift,warn:t=>{e.warn?.(`Integrity drift detected for ${t.resolution.resolvedSpec??t.spec}: expected ${t.expectedIntegrity}, got ${t.actualIntegrity}`)}});return!t.proceed&&t.payload?{integrityDrift:t.integrityDrift,error:`aborted: npm package integrity drift detected for ${t.payload.resolution.resolvedSpec??t.payload.spec}`}:{integrityDrift:t.integrityDrift}}async function U(e){return await K({tempDirPrefix:e.tempDirPrefix,spec:e.spec,timeoutMs:e.timeoutMs,expectedIntegrity:e.expectedIntegrity,onIntegrityDrift:e.onIntegrityDrift,warn:e.warn,installFromArchive:async({archivePath:t})=>await e.installFromArchive({archivePath:t,...e.archiveInstallParams})})}function W(e){return e.ok}function G(e){if(!e.ok)return e;let t=e.installResult;return W(t)?{...t,npmResolution:e.npmResolution,...e.integrityDrift?{integrityDrift:e.integrityDrift}:{}}:t}async function K(e){return await h(e.tempDirPrefix,async i=>{let a=t(e.spec);if(!a)return{ok:!1,error:`unsupported npm spec`};let o=await C({spec:e.spec,timeoutMs:e.timeoutMs,cwd:i});if(!o.ok)return o;let s={...o.metadata,resolvedAt:new Date().toISOString()};if(s.version&&!n({spec:a,resolvedVersion:s.version}))return{ok:!1,error:r({spec:a,resolvedVersion:s.version})};let c=await H({spec:e.spec,expectedIntegrity:e.expectedIntegrity,resolution:s,onIntegrityDrift:e.onIntegrityDrift,warn:e.warn});return c.error?{ok:!1,error:c.error}:{ok:!0,installResult:await e.installFromArchive({archivePath:o.archivePath}),npmResolution:s,integrityDrift:c.integrityDrift}})}export{L as a,D as c,m as d,g as f,z as i,w as l,U as n,R as o,B as r,E as s,G as t,T as u};
@@ -1 +1 @@
1
- import{v as e}from"./utils-CGdo13HV.js";import{g as t,h as n,m as r}from"./env-overrides-DHtB4kK3.js";import{t as i}from"./exec-B3eleY5O.js";import{c as a,d as o,n as s,s as c,t as l,u}from"./install-safe-path-C6kc_8NW.js";import d from"node:os";import f from"node:path";import p from"node:fs/promises";function m(e){return{resolvedName:e?.name,resolvedVersion:e?.version,resolvedSpec:e?.resolvedSpec,integrity:e?.integrity,shasum:e?.shasum,resolvedAt:e?.resolvedAt}}async function h(e,t){let n=await p.mkdtemp(f.join(d.tmpdir(),e));try{return await t(n)}finally{await p.rm(n,{recursive:!0,force:!0}).catch(()=>void 0)}}async function g(t){let n=e(t);return await a(n)?u(n)?{ok:!0,path:n}:{ok:!1,error:`unsupported archive: ${n}`}:{ok:!1,error:`archive not found: ${n}`}}function _(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function v(e){let t=e.lastIndexOf(`@`);if(t<=0||t>=e.length-1)return;let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();if(!(!n||!r))return`${n}@${r}`}function y(e){if(!e||typeof e!=`object`)return null;let t=e,n=_(t.name),r=_(t.version),i=_(t.id),a=(n&&r?`${n}@${r}`:void 0)??(i?v(i):void 0);return{filename:_(t.filename),metadata:{name:n,version:r,resolvedSpec:a,integrity:_(t.integrity),shasum:_(t.shasum)}}}function b(e){let t=e.trim();if(!t)return null;let n=[t],r=t.indexOf(`[`);r>0&&n.push(t.slice(r));for(let e of n){let t;try{t=JSON.parse(e)}catch{continue}let n=Array.isArray(t)?t:[t],r=null;for(let e=n.length-1;e>=0;--e){let t=y(n[e]);if(t&&(r||=t,t.filename))return t}if(r)return r}return null}function x(e){let t=e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);for(let e=t.length-1;e>=0;--e){let n=t[e]?.match(/([^\s"']+\.tgz)/);if(n?.[1])return n[1]}}async function S(e){let t=(await p.readdir(e,{withFileTypes:!0}).catch(()=>[])).filter(e=>e.isFile()&&e.name.endsWith(`.tgz`));if(t.length===0)return;if(t.length===1)return t[0]?.name;let n=await Promise.all(t.map(async t=>({name:t.name,mtimeMs:(await p.stat(f.join(e,t.name))).mtimeMs})));return n.sort((e,t)=>t.mtimeMs-e.mtimeMs),n[0]?.name}async function C(e){let t=await i([`npm`,`pack`,e.spec,`--ignore-scripts`,`--json`],{timeoutMs:Math.max(e.timeoutMs,3e5),cwd:e.cwd,env:{COREPACK_ENABLE_DOWNLOAD_PROMPT:`0`,NPM_CONFIG_IGNORE_SCRIPTS:`true`}});if(t.code!==0){let n=t.stderr.trim()||t.stdout.trim();return/E404|is not in this registry/i.test(n)?{ok:!1,error:`Package not found on npm: ${e.spec}. See https://docs.openclaw.ai/tools/plugin for installable plugins.`}:{ok:!1,error:`npm pack failed: ${n}`}}let n=b(t.stdout||``),r=n?.filename??x(t.stdout||``);if(r||=await S(e.cwd),!r)return{ok:!1,error:`npm pack produced no archive`};let o=f.isAbsolute(r)?r:f.join(e.cwd,r);if(!await a(o)){let t=await S(e.cwd);if(!t)return{ok:!1,error:`npm pack produced no archive`};o=f.join(e.cwd,t)}return{ok:!0,archivePath:o,metadata:n?.metadata??{}}}async function w(t){let n=e(t);return await a(n)?{ok:!0,resolvedPath:n,stat:await p.stat(n)}:{ok:!1,error:`path not found: ${n}`}}async function T(e){return await h(e.tempDirPrefix,async t=>{let n=f.join(t,`extract`);await p.mkdir(n,{recursive:!0}),e.logger?.info?.(`Extracting ${e.archivePath}…`);try{await c({archivePath:e.archivePath,destDir:n,timeoutMs:e.timeoutMs,logger:e.logger})}catch(e){return{ok:!1,error:`failed to extract archive: ${String(e)}`}}let r=``;try{r=await o(n)}catch(e){return{ok:!1,error:String(e)}}return await e.onExtracted(r)})}function E(e,t){return{logger:e.logger??t,mode:e.mode??`install`,dryRun:e.dryRun??!1}}function D(e,t,n=12e4){return{...E(e,t),timeoutMs:e.timeoutMs??n}}const O=`install base directory changed during install`;function k(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}async function A(e){let t=f.join(e,`package.json`),n=``;try{n=await p.readFile(t,`utf-8`)}catch{return}let r;try{let e=JSON.parse(n);if(!k(e))return;r=e}catch{return}let i=r.devDependencies;if(!k(i))return;let a=Object.entries(i).filter(([,e])=>!(typeof e==`string`?e.trim():``).startsWith(`workspace:`));a.length!==Object.keys(i).length&&(a.length===0?delete r.devDependencies:r.devDependencies=Object.fromEntries(a),await p.writeFile(t,`${JSON.stringify(r,null,2)}\n`,`utf-8`))}async function j(e){for(let t of e.candidatePaths)await l({baseDir:e.installBaseDir,candidatePath:t,boundaryLabel:`install directory`})}function M(e){return!!e&&e!==`..`&&!e.startsWith(`..${f.sep}`)}function N(e){return e instanceof Error&&e.message===O}async function P(e){let t=await p.lstat(e.installBaseDir);if(!t.isDirectory()||t.isSymbolicLink()||await p.realpath(e.installBaseDir)!==e.expectedRealPath)throw Error(O)}async function F(e){e&&await p.rm(e,{recursive:!0,force:!0}).catch(()=>void 0)}async function I(e){let t=f.resolve(e.installBaseDir),n=f.resolve(e.targetDir),r=f.relative(t,n);if(!M(r))throw Error(`invalid install target path`);let i=await p.realpath(e.installBaseDir);return{installBaseRealPath:i,canonicalTargetDir:f.join(i,r)}}async function L(e){e.logger?.info?.(`Installing to ${e.targetDir}…`);let t=f.dirname(e.targetDir);await p.mkdir(t,{recursive:!0}),await j({installBaseDir:t,candidatePaths:[e.targetDir]});let n,r;try{({installBaseRealPath:n,canonicalTargetDir:r}=await I({installBaseDir:t,targetDir:e.targetDir}))}catch(t){return{ok:!1,error:`${e.copyErrorPrefix}: ${String(t)}`}}let o=null,s=null,c=async(t,n)=>(N(n)?e.logger?.warn?.(`Install base directory changed during install; aborting staged publish.`):(await l(),o&&=(await F(o),null)),{ok:!1,error:t}),l=async()=>{s&&=(await p.rename(s,r).catch(()=>void 0),null)};try{await j({installBaseDir:n,candidatePaths:[r]}),o=await p.mkdtemp(f.join(n,`.openclaw-install-stage-`)),await p.cp(e.sourceDir,o,{recursive:!0})}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}try{await e.afterCopy?.(o)}catch(e){return await c(`post-copy validation failed: ${String(e)}`,e)}if(e.hasDeps){await A(o),e.logger?.info?.(e.depsLogMessage);let t=await i([`npm`,`install`,`--omit=dev`,`--omit=peer`,`--silent`,`--ignore-scripts`],{timeoutMs:Math.max(e.timeoutMs,3e5),cwd:o});if(t.code!==0)return await c(`npm install failed: ${t.stderr.trim()||t.stdout.trim()}`)}if(e.mode===`update`&&await a(r)){let i=f.join(n,`.openclaw-install-backups`);s=f.join(i,`${f.basename(r)}-${Date.now()}`);try{await p.mkdir(i,{recursive:!0}),await j({installBaseDir:n,candidatePaths:[s]}),await P({installBaseDir:t,expectedRealPath:n}),await p.rename(r,s)}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}}try{await P({installBaseDir:t,expectedRealPath:n}),await p.rename(o,r),o=null}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}if(s)try{await P({installBaseDir:t,expectedRealPath:n})}catch(t){N(t)&&e.logger?.warn?.(`Install base directory changed before backup cleanup; leaving backup in place.`),s=null}return s&&await p.rm(s,{recursive:!0,force:!0}).catch(()=>void 0),o&&await F(o),{ok:!0}}async function R(e){return L({...e,hasDeps:Object.keys(e.manifestDependencies??{}).length>0})}async function z(e){await p.mkdir(e.baseDir,{recursive:!0});let t=s({baseDir:e.baseDir,id:e.id,invalidNameMessage:e.invalidNameMessage});if(!t.ok)return{ok:!1,error:t.error};try{await l({baseDir:e.baseDir,candidatePath:t.path,boundaryLabel:e.boundaryLabel})}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}return{ok:!0,targetDir:t.path}}async function B(e){return e.mode===`install`&&await a(e.targetDir)?{ok:!1,error:e.alreadyExistsError}:{ok:!0}}async function V(e){if(!e.expectedIntegrity||!e.resolution.integrity||e.expectedIntegrity===e.resolution.integrity)return{proceed:!0};let t={expectedIntegrity:e.expectedIntegrity,actualIntegrity:e.resolution.integrity},n=e.createPayload({spec:e.spec,expectedIntegrity:t.expectedIntegrity,actualIntegrity:t.actualIntegrity,resolution:e.resolution}),r=!0;return e.onIntegrityDrift?r=await e.onIntegrityDrift(n):e.warn?.(n),{integrityDrift:t,proceed:r,payload:n}}async function H(e){let t=await V({spec:e.spec,expectedIntegrity:e.expectedIntegrity,resolution:e.resolution,createPayload:e=>({...e}),onIntegrityDrift:e.onIntegrityDrift,warn:t=>{e.warn?.(`Integrity drift detected for ${t.resolution.resolvedSpec??t.spec}: expected ${t.expectedIntegrity}, got ${t.actualIntegrity}`)}});return!t.proceed&&t.payload?{integrityDrift:t.integrityDrift,error:`aborted: npm package integrity drift detected for ${t.payload.resolution.resolvedSpec??t.payload.spec}`}:{integrityDrift:t.integrityDrift}}async function U(e){return await K({tempDirPrefix:e.tempDirPrefix,spec:e.spec,timeoutMs:e.timeoutMs,expectedIntegrity:e.expectedIntegrity,onIntegrityDrift:e.onIntegrityDrift,warn:e.warn,installFromArchive:async({archivePath:t})=>await e.installFromArchive({archivePath:t,...e.archiveInstallParams})})}function W(e){return e.ok}function G(e){if(!e.ok)return e;let t=e.installResult;return W(t)?{...t,npmResolution:e.npmResolution,...e.integrityDrift?{integrityDrift:e.integrityDrift}:{}}:t}async function K(e){return await h(e.tempDirPrefix,async i=>{let a=t(e.spec);if(!a)return{ok:!1,error:`unsupported npm spec`};let o=await C({spec:e.spec,timeoutMs:e.timeoutMs,cwd:i});if(!o.ok)return o;let s={...o.metadata,resolvedAt:new Date().toISOString()};if(s.version&&!n({spec:a,resolvedVersion:s.version}))return{ok:!1,error:r({spec:a,resolvedVersion:s.version})};let c=await H({spec:e.spec,expectedIntegrity:e.expectedIntegrity,resolution:s,onIntegrityDrift:e.onIntegrityDrift,warn:e.warn});return c.error?{ok:!1,error:c.error}:{ok:!0,installResult:await e.installFromArchive({archivePath:o.archivePath}),npmResolution:s,integrityDrift:c.integrityDrift}})}export{L as a,D as c,m as d,g as f,z as i,w as l,U as n,R as o,B as r,E as s,G as t,T as u};
1
+ import{v as e}from"./utils-CGdo13HV.js";import{g as t,h as n,m as r}from"./env-overrides-DHtB4kK3.js";import{t as i}from"./exec-B3eleY5O.js";import{c as a,d as o,n as s,s as c,t as l,u}from"./install-safe-path-C6kc_8NW.js";import d from"node:os";import f from"node:path";import p from"node:fs/promises";function m(e){return{resolvedName:e?.name,resolvedVersion:e?.version,resolvedSpec:e?.resolvedSpec,integrity:e?.integrity,shasum:e?.shasum,resolvedAt:e?.resolvedAt}}async function h(e,t){let n=await p.mkdtemp(f.join(d.tmpdir(),e));try{return await t(n)}finally{await p.rm(n,{recursive:!0,force:!0}).catch(()=>void 0)}}async function g(t){let n=e(t);return await a(n)?u(n)?{ok:!0,path:n}:{ok:!1,error:`unsupported archive: ${n}`}:{ok:!1,error:`archive not found: ${n}`}}function _(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function v(e){let t=e.lastIndexOf(`@`);if(t<=0||t>=e.length-1)return;let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();if(!(!n||!r))return`${n}@${r}`}function y(e){if(!e||typeof e!=`object`)return null;let t=e,n=_(t.name),r=_(t.version),i=_(t.id),a=(n&&r?`${n}@${r}`:void 0)??(i?v(i):void 0);return{filename:_(t.filename),metadata:{name:n,version:r,resolvedSpec:a,integrity:_(t.integrity),shasum:_(t.shasum)}}}function b(e){let t=e.trim();if(!t)return null;let n=[t],r=t.indexOf(`[`);r>0&&n.push(t.slice(r));for(let e of n){let t;try{t=JSON.parse(e)}catch{continue}let n=Array.isArray(t)?t:[t],r=null;for(let e=n.length-1;e>=0;--e){let t=y(n[e]);if(t&&(r||=t,t.filename))return t}if(r)return r}return null}function x(e){let t=e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);for(let e=t.length-1;e>=0;--e){let n=t[e]?.match(/([^\s"']+\.tgz)/);if(n?.[1])return n[1]}}async function S(e){let t=(await p.readdir(e,{withFileTypes:!0}).catch(()=>[])).filter(e=>e.isFile()&&e.name.endsWith(`.tgz`));if(t.length===0)return;if(t.length===1)return t[0]?.name;let n=await Promise.all(t.map(async t=>({name:t.name,mtimeMs:(await p.stat(f.join(e,t.name))).mtimeMs})));return n.sort((e,t)=>t.mtimeMs-e.mtimeMs),n[0]?.name}async function C(e){let t=await i([`npm`,`pack`,e.spec,`--ignore-scripts`,`--json`],{timeoutMs:Math.max(e.timeoutMs,3e5),cwd:e.cwd,env:{COREPACK_ENABLE_DOWNLOAD_PROMPT:`0`,NPM_CONFIG_IGNORE_SCRIPTS:`true`}});if(t.code!==0){let n=t.stderr.trim()||t.stdout.trim();return/E404|is not in this registry/i.test(n)?{ok:!1,error:`Package not found on npm: ${e.spec}. See https://docs.openclaw.ai/tools/plugin for installable plugins.`}:{ok:!1,error:`npm pack failed: ${n}`}}let n=b(t.stdout||``),r=n?.filename??x(t.stdout||``);if(r||=await S(e.cwd),!r)return{ok:!1,error:`npm pack produced no archive`};let o=f.isAbsolute(r)?r:f.join(e.cwd,r);if(!await a(o)){let t=await S(e.cwd);if(!t)return{ok:!1,error:`npm pack produced no archive`};o=f.join(e.cwd,t)}return{ok:!0,archivePath:o,metadata:n?.metadata??{}}}async function w(t){let n=e(t);return await a(n)?{ok:!0,resolvedPath:n,stat:await p.stat(n)}:{ok:!1,error:`path not found: ${n}`}}async function T(e){return await h(e.tempDirPrefix,async t=>{let n=f.join(t,`extract`);await p.mkdir(n,{recursive:!0}),e.logger?.info?.(`Extracting ${e.archivePath}…`);try{await c({archivePath:e.archivePath,destDir:n,timeoutMs:e.timeoutMs,logger:e.logger})}catch(e){return{ok:!1,error:`failed to extract archive: ${String(e)}`}}let r=``;try{r=await o(n)}catch(e){return{ok:!1,error:String(e)}}return await e.onExtracted(r)})}function E(e,t){return{logger:e.logger??t,mode:e.mode??`install`,dryRun:e.dryRun??!1}}function D(e,t,n=12e4){return{...E(e,t),timeoutMs:e.timeoutMs??n}}const O=`install base directory changed during install`;function k(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}async function A(e){let t=f.join(e,`package.json`),n=``;try{n=await p.readFile(t,`utf-8`)}catch{return}let r;try{let e=JSON.parse(n);if(!k(e))return;r=e}catch{return}let i=r.devDependencies;if(!k(i))return;let a=Object.entries(i).filter(([,e])=>!(typeof e==`string`?e.trim():``).startsWith(`workspace:`));a.length!==Object.keys(i).length&&(a.length===0?delete r.devDependencies:r.devDependencies=Object.fromEntries(a),await p.writeFile(t,`${JSON.stringify(r,null,2)}\n`,`utf-8`))}async function j(e){for(let t of e.candidatePaths)await l({baseDir:e.installBaseDir,candidatePath:t,boundaryLabel:`install directory`})}function M(e){return!!e&&e!==`..`&&!e.startsWith(`..${f.sep}`)}function N(e){return e instanceof Error&&e.message===O}async function P(e){let t=await p.lstat(e.installBaseDir);if(!t.isDirectory()||t.isSymbolicLink()||await p.realpath(e.installBaseDir)!==e.expectedRealPath)throw Error(O)}async function F(e){e&&await p.rm(e,{recursive:!0,force:!0}).catch(()=>void 0)}async function I(e){let t=f.resolve(e.installBaseDir),n=f.resolve(e.targetDir),r=f.relative(t,n);if(!M(r))throw Error(`invalid install target path`);let i=await p.realpath(e.installBaseDir);return{installBaseRealPath:i,canonicalTargetDir:f.join(i,r)}}async function L(e){e.logger?.info?.(`Installing to ${e.targetDir}…`);let t=f.dirname(e.targetDir);await p.mkdir(t,{recursive:!0}),await j({installBaseDir:t,candidatePaths:[e.targetDir]});let n,r;try{({installBaseRealPath:n,canonicalTargetDir:r}=await I({installBaseDir:t,targetDir:e.targetDir}))}catch(t){return{ok:!1,error:`${e.copyErrorPrefix}: ${String(t)}`}}let o=null,s=null,c=async(t,n)=>(N(n)?e.logger?.warn?.(`Install base directory changed during install; aborting staged publish.`):(await l(),o&&=(await F(o),null)),{ok:!1,error:t}),l=async()=>{s&&=(await p.rename(s,r).catch(()=>void 0),null)};try{await j({installBaseDir:n,candidatePaths:[r]}),o=await p.mkdtemp(f.join(n,`.openclaw-install-stage-`)),await p.cp(e.sourceDir,o,{recursive:!0})}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}try{await e.afterCopy?.(o)}catch(e){return await c(`post-copy validation failed: ${String(e)}`,e)}if(e.hasDeps){await A(o),e.logger?.info?.(e.depsLogMessage);let t=await i([`npm`,`install`,`--omit=dev`,`--omit=peer`,`--silent`,`--ignore-scripts`],{timeoutMs:Math.max(e.timeoutMs,3e5),cwd:o});if(t.code!==0)return await c(`npm install failed: ${t.stderr.trim()||t.stdout.trim()}`)}if(e.mode===`update`&&await a(r)){let i=f.join(n,`.openclaw-install-backups`);s=f.join(i,`${f.basename(r)}-${Date.now()}`);try{await p.mkdir(i,{recursive:!0}),await j({installBaseDir:n,candidatePaths:[s]}),await P({installBaseDir:t,expectedRealPath:n}),await p.rename(r,s)}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}}try{await P({installBaseDir:t,expectedRealPath:n}),await p.rename(o,r),o=null}catch(t){return await c(`${e.copyErrorPrefix}: ${String(t)}`,t)}if(s)try{await P({installBaseDir:t,expectedRealPath:n})}catch(t){N(t)&&e.logger?.warn?.(`Install base directory changed before backup cleanup; leaving backup in place.`),s=null}return s&&await p.rm(s,{recursive:!0,force:!0}).catch(()=>void 0),o&&await F(o),{ok:!0}}async function R(e){return L({...e,hasDeps:Object.keys(e.manifestDependencies??{}).length>0})}async function z(e){await p.mkdir(e.baseDir,{recursive:!0});let t=s({baseDir:e.baseDir,id:e.id,invalidNameMessage:e.invalidNameMessage});if(!t.ok)return{ok:!1,error:t.error};try{await l({baseDir:e.baseDir,candidatePath:t.path,boundaryLabel:e.boundaryLabel})}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}return{ok:!0,targetDir:t.path}}async function B(e){return e.mode===`install`&&await a(e.targetDir)?{ok:!1,error:e.alreadyExistsError}:{ok:!0}}async function V(e){if(!e.expectedIntegrity||!e.resolution.integrity||e.expectedIntegrity===e.resolution.integrity)return{proceed:!0};let t={expectedIntegrity:e.expectedIntegrity,actualIntegrity:e.resolution.integrity},n=e.createPayload({spec:e.spec,expectedIntegrity:t.expectedIntegrity,actualIntegrity:t.actualIntegrity,resolution:e.resolution}),r=!0;return e.onIntegrityDrift?r=await e.onIntegrityDrift(n):e.warn?.(n),{integrityDrift:t,proceed:r,payload:n}}async function H(e){let t=await V({spec:e.spec,expectedIntegrity:e.expectedIntegrity,resolution:e.resolution,createPayload:e=>({...e}),onIntegrityDrift:e.onIntegrityDrift,warn:t=>{e.warn?.(`Integrity drift detected for ${t.resolution.resolvedSpec??t.spec}: expected ${t.expectedIntegrity}, got ${t.actualIntegrity}`)}});return!t.proceed&&t.payload?{integrityDrift:t.integrityDrift,error:`aborted: npm package integrity drift detected for ${t.payload.resolution.resolvedSpec??t.payload.spec}`}:{integrityDrift:t.integrityDrift}}async function U(e){return await K({tempDirPrefix:e.tempDirPrefix,spec:e.spec,timeoutMs:e.timeoutMs,expectedIntegrity:e.expectedIntegrity,onIntegrityDrift:e.onIntegrityDrift,warn:e.warn,installFromArchive:async({archivePath:t})=>await e.installFromArchive({archivePath:t,...e.archiveInstallParams})})}function W(e){return e.ok}function G(e){if(!e.ok)return e;let t=e.installResult;return W(t)?{...t,npmResolution:e.npmResolution,...e.integrityDrift?{integrityDrift:e.integrityDrift}:{}}:t}async function K(e){return await h(e.tempDirPrefix,async i=>{let a=t(e.spec);if(!a)return{ok:!1,error:`unsupported npm spec`};let o=await C({spec:e.spec,timeoutMs:e.timeoutMs,cwd:i});if(!o.ok)return o;let s={...o.metadata,resolvedAt:new Date().toISOString()};if(s.version&&!n({spec:a,resolvedVersion:s.version}))return{ok:!1,error:r({spec:a,resolvedVersion:s.version})};let c=await H({spec:e.spec,expectedIntegrity:e.expectedIntegrity,resolution:s,onIntegrityDrift:e.onIntegrityDrift,warn:e.warn});return c.error?{ok:!1,error:c.error}:{ok:!0,installResult:await e.installFromArchive({archivePath:o.archivePath}),npmResolution:s,integrityDrift:c.integrityDrift}})}export{L as a,D as c,m as d,g as f,z as i,w as l,U as n,R as o,B as r,E as s,G as t,T as u};
@@ -1 +1 @@
1
- import{t as e}from"./subsystem-BLbY429l.js";import{jo as t}from"./auth-profiles-BhXA8Jy2.js";import{d as n,f as r,j as i}from"./agent-scope-DAWJwFfl.js";import{c as a,l as o}from"./compact-CuBCVnVS.js";import{d as s}from"./npm-pack-install-C0te3Oap.js";import c from"node:path";const l=e(`plugins`);function u(e){let s=e?.config??t(),c=e?.workspaceDir?e.workspaceDir:n(s,r(s))??i();return{workspaceDir:c,...o({config:s,workspaceDir:c,logger:a(l)})}}function d(e,t){return e.startsWith(`.`)||e.startsWith(`~`)||c.isAbsolute(e)||t.some(t=>e.endsWith(t))}function f(e){let t=e.pin&&e.resolvedSpec?e.resolvedSpec:e.rawSpec;return e.pin?e.resolvedSpec?{recordSpec:t,pinNotice:`Pinned npm install record to ${e.resolvedSpec}.`}:{recordSpec:t,pinWarning:`Could not resolve exact npm version for --pin; storing original npm spec.`}:{recordSpec:t}}function p(e){return{source:`npm`,spec:e.spec,installPath:e.installPath,version:e.version,...s(e.resolution)}}function m(e){let t=f({rawSpec:e.rawSpec,pin:e.pin,resolvedSpec:e.resolution?.resolvedSpec});return g(t,e.log,e.warn),p({spec:t.recordSpec,installPath:e.installPath,version:e.version,resolution:e.resolution})}function h(e,t,n,r,i,a,o){return m({rawSpec:e,pin:t,installPath:n,version:r,resolution:i,log:a,warn:e=>a(o(e))})}function g(e,t,n){e.pinWarning&&n(e.pinWarning),e.pinNotice&&t(e.pinNotice)}export{u as i,h as n,d as r,p as t};
1
+ import{t as e}from"./subsystem-BLbY429l.js";import{jo as t}from"./auth-profiles-BhXA8Jy2.js";import{d as n,f as r,j as i}from"./agent-scope-DAWJwFfl.js";import{c as a,l as o}from"./compact-CuBCVnVS.js";import{d as s}from"./npm-pack-install-C0te3Oap.js";import c from"node:path";const l=e(`plugins`);function u(e){let s=e?.config??t(),c=e?.workspaceDir?e.workspaceDir:n(s,r(s))??i();return{workspaceDir:c,...o({config:s,workspaceDir:c,logger:a(l)})}}function d(e,t){return e.startsWith(`.`)||e.startsWith(`~`)||c.isAbsolute(e)||t.some(t=>e.endsWith(t))}function f(e){let t=e.pin&&e.resolvedSpec?e.resolvedSpec:e.rawSpec;return e.pin?e.resolvedSpec?{recordSpec:t,pinNotice:`Pinned npm install record to ${e.resolvedSpec}.`}:{recordSpec:t,pinWarning:`Could not resolve exact npm version for --pin; storing original npm spec.`}:{recordSpec:t}}function p(e){return{source:`npm`,spec:e.spec,installPath:e.installPath,version:e.version,...s(e.resolution)}}function m(e){let t=f({rawSpec:e.rawSpec,pin:e.pin,resolvedSpec:e.resolution?.resolvedSpec});return g(t,e.log,e.warn),p({spec:t.recordSpec,installPath:e.installPath,version:e.version,resolution:e.resolution})}function h(e,t,n,r,i,a,o){return m({rawSpec:e,pin:t,installPath:n,version:r,resolution:i,log:a,warn:e=>a(o(e))})}function g(e,t,n){e.pinWarning&&n(e.pinWarning),e.pinNotice&&t(e.pinNotice)}export{u as i,h as n,d as r,p as t};
@@ -1 +1 @@
1
- import{t as e}from"./subsystem-C5XF2Fy5.js";import{qs as t}from"./model-selection-I1ctjFOB.js";import{at as n,ot as r}from"./reply-r9KtzgpM.js";import{d as i,f as a,j as o}from"./agent-scope-DXZc3eNT.js";import{d as s}from"./npm-pack-install-B23L-AtF.js";import c from"node:path";const l=e(`plugins`);function u(e){let s=e?.config??t(),c=e?.workspaceDir?e.workspaceDir:i(s,a(s))??o();return{workspaceDir:c,...r({config:s,workspaceDir:c,logger:n(l)})}}function d(e,t){return e.startsWith(`.`)||e.startsWith(`~`)||c.isAbsolute(e)||t.some(t=>e.endsWith(t))}function f(e){let t=e.pin&&e.resolvedSpec?e.resolvedSpec:e.rawSpec;return e.pin?e.resolvedSpec?{recordSpec:t,pinNotice:`Pinned npm install record to ${e.resolvedSpec}.`}:{recordSpec:t,pinWarning:`Could not resolve exact npm version for --pin; storing original npm spec.`}:{recordSpec:t}}function p(e){return{source:`npm`,spec:e.spec,installPath:e.installPath,version:e.version,...s(e.resolution)}}function m(e){let t=f({rawSpec:e.rawSpec,pin:e.pin,resolvedSpec:e.resolution?.resolvedSpec});return g(t,e.log,e.warn),p({spec:t.recordSpec,installPath:e.installPath,version:e.version,resolution:e.resolution})}function h(e,t,n,r,i,a,o){return m({rawSpec:e,pin:t,installPath:n,version:r,resolution:i,log:a,warn:e=>a(o(e))})}function g(e,t,n){e.pinWarning&&n(e.pinWarning),e.pinNotice&&t(e.pinNotice)}export{u as i,h as n,d as r,p as t};
1
+ import{t as e}from"./subsystem-C5XF2Fy5.js";import{qs as t}from"./model-selection-I1ctjFOB.js";import{at as n,ot as r}from"./reply-r9KtzgpM.js";import{d as i,f as a,j as o}from"./agent-scope-DXZc3eNT.js";import{d as s}from"./npm-pack-install-B23L-AtF.js";import c from"node:path";const l=e(`plugins`);function u(e){let s=e?.config??t(),c=e?.workspaceDir?e.workspaceDir:i(s,a(s))??o();return{workspaceDir:c,...r({config:s,workspaceDir:c,logger:n(l)})}}function d(e,t){return e.startsWith(`.`)||e.startsWith(`~`)||c.isAbsolute(e)||t.some(t=>e.endsWith(t))}function f(e){let t=e.pin&&e.resolvedSpec?e.resolvedSpec:e.rawSpec;return e.pin?e.resolvedSpec?{recordSpec:t,pinNotice:`Pinned npm install record to ${e.resolvedSpec}.`}:{recordSpec:t,pinWarning:`Could not resolve exact npm version for --pin; storing original npm spec.`}:{recordSpec:t}}function p(e){return{source:`npm`,spec:e.spec,installPath:e.installPath,version:e.version,...s(e.resolution)}}function m(e){let t=f({rawSpec:e.rawSpec,pin:e.pin,resolvedSpec:e.resolution?.resolvedSpec});return g(t,e.log,e.warn),p({spec:t.recordSpec,installPath:e.installPath,version:e.version,resolution:e.resolution})}function h(e,t,n,r,i,a,o){return m({rawSpec:e,pin:t,installPath:n,version:r,resolution:i,log:a,warn:e=>a(o(e))})}function g(e,t,n){e.pinWarning&&n(e.pinWarning),e.pinNotice&&t(e.pinNotice)}export{u as i,h as n,d as r,p as t};
@@ -1 +1 @@
1
- import{r as e}from"./wsl-DHxB2Ew_.js";function t(e){if(!e||typeof e!=`object`||!(`fallbacks`in e))return;let t=e.fallbacks;return Array.isArray(t)?t.map(e=>String(e)):void 0}function n(e,t){return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,models:t.agentModels}},models:{mode:e.models?.mode??`merge`,providers:t.providers}}}function r(e,n){let r=t(e.agents?.defaults?.model);return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,model:{...r?{fallbacks:r}:void 0,primary:n}}}}}function i(e,t){let n=s(e,t.providerId),r=t.defaultModels,i=t.defaultModelId??r[0]?.id,a=i?n.existingModels.some(e=>e.id===i):!0,o=n.existingModels.length>0?a||r.length===0?n.existingModels:[...n.existingModels,...r]:r;return c(e,{agentModels:t.agentModels,providerId:t.providerId,providerState:n,api:t.api,baseUrl:t.baseUrl,mergedModels:o,fallbackModels:r})}function a(e,t){return i(e,{agentModels:t.agentModels,providerId:t.providerId,api:t.api,baseUrl:t.baseUrl,defaultModels:[t.defaultModel],defaultModelId:t.defaultModelId??t.defaultModel.id})}function o(e,t){let n=s(e,t.providerId),r=t.catalogModels,i=n.existingModels.length>0?[...n.existingModels,...r.filter(e=>!n.existingModels.some(t=>t.id===e.id))]:r;return c(e,{agentModels:t.agentModels,providerId:t.providerId,providerState:n,api:t.api,baseUrl:t.baseUrl,mergedModels:i,fallbackModels:r})}function s(e,t){let n={...e.models?.providers},r=n[t];return{providers:n,existingProvider:r,existingModels:Array.isArray(r?.models)?r.models:[]}}function c(e,t){return t.providerState.providers[t.providerId]=l({existingProvider:t.providerState.existingProvider,api:t.api,baseUrl:t.baseUrl,mergedModels:t.mergedModels,fallbackModels:t.fallbackModels}),n(e,{agentModels:t.agentModels,providers:t.providerState.providers})}function l(e){let{apiKey:t,...n}=e.existingProvider??{},r=typeof t==`string`?t.trim():void 0;return{...n,baseUrl:e.baseUrl,api:e.api,...r?{apiKey:r}:{},models:e.mergedModels.length>0?e.mergedModels:e.fallbackModels}}function u(){return!!(process.env.SSH_CLIENT||process.env.SSH_TTY||process.env.SSH_CONNECTION||process.env.REMOTE_CONTAINERS||process.env.CODESPACES||process.platform===`linux`&&!process.env.DISPLAY&&!process.env.WAYLAND_DISPLAY&&!e())}export{i as a,a as i,r as n,o,n as r,u as t};
1
+ import{r as e}from"./wsl-DHxB2Ew_.js";function t(e){if(!e||typeof e!=`object`||!(`fallbacks`in e))return;let t=e.fallbacks;return Array.isArray(t)?t.map(e=>String(e)):void 0}function n(e,t){return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,models:t.agentModels}},models:{mode:e.models?.mode??`merge`,providers:t.providers}}}function r(e,n){let r=t(e.agents?.defaults?.model);return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,model:{...r?{fallbacks:r}:void 0,primary:n}}}}}function i(e,t){let n=s(e,t.providerId),r=t.defaultModels,i=t.defaultModelId??r[0]?.id,a=i?n.existingModels.some(e=>e.id===i):!0,o=n.existingModels.length>0?a||r.length===0?n.existingModels:[...n.existingModels,...r]:r;return c(e,{agentModels:t.agentModels,providerId:t.providerId,providerState:n,api:t.api,baseUrl:t.baseUrl,mergedModels:o,fallbackModels:r})}function a(e,t){return i(e,{agentModels:t.agentModels,providerId:t.providerId,api:t.api,baseUrl:t.baseUrl,defaultModels:[t.defaultModel],defaultModelId:t.defaultModelId??t.defaultModel.id})}function o(e,t){let n=s(e,t.providerId),r=t.catalogModels,i=n.existingModels.length>0?[...n.existingModels,...r.filter(e=>!n.existingModels.some(t=>t.id===e.id))]:r;return c(e,{agentModels:t.agentModels,providerId:t.providerId,providerState:n,api:t.api,baseUrl:t.baseUrl,mergedModels:i,fallbackModels:r})}function s(e,t){let n={...e.models?.providers},r=n[t];return{providers:n,existingProvider:r,existingModels:Array.isArray(r?.models)?r.models:[]}}function c(e,t){return t.providerState.providers[t.providerId]=l({existingProvider:t.providerState.existingProvider,api:t.api,baseUrl:t.baseUrl,mergedModels:t.mergedModels,fallbackModels:t.fallbackModels}),n(e,{agentModels:t.agentModels,providers:t.providerState.providers})}function l(e){let{apiKey:t,...n}=e.existingProvider??{},r=typeof t==`string`?t.trim():void 0;return{...n,baseUrl:e.baseUrl,api:e.api,...r?{apiKey:r}:{},models:e.mergedModels.length>0?e.mergedModels:e.fallbackModels}}function u(){return!!(process.env.SSH_CLIENT||process.env.SSH_TTY||process.env.SSH_CONNECTION||process.env.REMOTE_CONTAINERS||process.env.CODESPACES||process.platform===`linux`&&!process.env.DISPLAY&&!process.env.WAYLAND_DISPLAY&&!e())}export{i as a,a as i,r as n,o,n as r,u as t};
@@ -1 +1 @@
1
- import{r as e}from"./wsl-Ok7GaSJ6.js";function t(e){if(!e||typeof e!=`object`||!(`fallbacks`in e))return;let t=e.fallbacks;return Array.isArray(t)?t.map(e=>String(e)):void 0}function n(e,t){return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,models:t.agentModels}},models:{mode:e.models?.mode??`merge`,providers:t.providers}}}function r(e,n){let r=t(e.agents?.defaults?.model);return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,model:{...r?{fallbacks:r}:void 0,primary:n}}}}}function i(e,t){let n=s(e,t.providerId),r=t.defaultModels,i=t.defaultModelId??r[0]?.id,a=i?n.existingModels.some(e=>e.id===i):!0,o=n.existingModels.length>0?a||r.length===0?n.existingModels:[...n.existingModels,...r]:r;return c(e,{agentModels:t.agentModels,providerId:t.providerId,providerState:n,api:t.api,baseUrl:t.baseUrl,mergedModels:o,fallbackModels:r})}function a(e,t){return i(e,{agentModels:t.agentModels,providerId:t.providerId,api:t.api,baseUrl:t.baseUrl,defaultModels:[t.defaultModel],defaultModelId:t.defaultModelId??t.defaultModel.id})}function o(e,t){let n=s(e,t.providerId),r=t.catalogModels,i=n.existingModels.length>0?[...n.existingModels,...r.filter(e=>!n.existingModels.some(t=>t.id===e.id))]:r;return c(e,{agentModels:t.agentModels,providerId:t.providerId,providerState:n,api:t.api,baseUrl:t.baseUrl,mergedModels:i,fallbackModels:r})}function s(e,t){let n={...e.models?.providers},r=n[t];return{providers:n,existingProvider:r,existingModels:Array.isArray(r?.models)?r.models:[]}}function c(e,t){return t.providerState.providers[t.providerId]=l({existingProvider:t.providerState.existingProvider,api:t.api,baseUrl:t.baseUrl,mergedModels:t.mergedModels,fallbackModels:t.fallbackModels}),n(e,{agentModels:t.agentModels,providers:t.providerState.providers})}function l(e){let{apiKey:t,...n}=e.existingProvider??{},r=typeof t==`string`?t.trim():void 0;return{...n,baseUrl:e.baseUrl,api:e.api,...r?{apiKey:r}:{},models:e.mergedModels.length>0?e.mergedModels:e.fallbackModels}}function u(){return!!(process.env.SSH_CLIENT||process.env.SSH_TTY||process.env.SSH_CONNECTION||process.env.REMOTE_CONTAINERS||process.env.CODESPACES||process.platform===`linux`&&!process.env.DISPLAY&&!process.env.WAYLAND_DISPLAY&&!e())}export{i as a,a as i,r as n,o,n as r,u as t};
1
+ import{r as e}from"./wsl-Ok7GaSJ6.js";function t(e){if(!e||typeof e!=`object`||!(`fallbacks`in e))return;let t=e.fallbacks;return Array.isArray(t)?t.map(e=>String(e)):void 0}function n(e,t){return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,models:t.agentModels}},models:{mode:e.models?.mode??`merge`,providers:t.providers}}}function r(e,n){let r=t(e.agents?.defaults?.model);return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,model:{...r?{fallbacks:r}:void 0,primary:n}}}}}function i(e,t){let n=s(e,t.providerId),r=t.defaultModels,i=t.defaultModelId??r[0]?.id,a=i?n.existingModels.some(e=>e.id===i):!0,o=n.existingModels.length>0?a||r.length===0?n.existingModels:[...n.existingModels,...r]:r;return c(e,{agentModels:t.agentModels,providerId:t.providerId,providerState:n,api:t.api,baseUrl:t.baseUrl,mergedModels:o,fallbackModels:r})}function a(e,t){return i(e,{agentModels:t.agentModels,providerId:t.providerId,api:t.api,baseUrl:t.baseUrl,defaultModels:[t.defaultModel],defaultModelId:t.defaultModelId??t.defaultModel.id})}function o(e,t){let n=s(e,t.providerId),r=t.catalogModels,i=n.existingModels.length>0?[...n.existingModels,...r.filter(e=>!n.existingModels.some(t=>t.id===e.id))]:r;return c(e,{agentModels:t.agentModels,providerId:t.providerId,providerState:n,api:t.api,baseUrl:t.baseUrl,mergedModels:i,fallbackModels:r})}function s(e,t){let n={...e.models?.providers},r=n[t];return{providers:n,existingProvider:r,existingModels:Array.isArray(r?.models)?r.models:[]}}function c(e,t){return t.providerState.providers[t.providerId]=l({existingProvider:t.providerState.existingProvider,api:t.api,baseUrl:t.baseUrl,mergedModels:t.mergedModels,fallbackModels:t.fallbackModels}),n(e,{agentModels:t.agentModels,providers:t.providerState.providers})}function l(e){let{apiKey:t,...n}=e.existingProvider??{},r=typeof t==`string`?t.trim():void 0;return{...n,baseUrl:e.baseUrl,api:e.api,...r?{apiKey:r}:{},models:e.mergedModels.length>0?e.mergedModels:e.fallbackModels}}function u(){return!!(process.env.SSH_CLIENT||process.env.SSH_TTY||process.env.SSH_CONNECTION||process.env.REMOTE_CONTAINERS||process.env.CODESPACES||process.platform===`linux`&&!process.env.DISPLAY&&!process.env.WAYLAND_DISPLAY&&!e())}export{i as a,a as i,r as n,o,n as r,u as t};
@@ -1,3 +1,3 @@
1
1
  import{t as e}from"./command-format-CLxIPuLR.js";import{t}from"./note-Dp-d_utk.js";import n from"node:path";const r=new Set([`UNABLE_TO_GET_ISSUER_CERT_LOCALLY`,`UNABLE_TO_VERIFY_LEAF_SIGNATURE`,`CERT_HAS_EXPIRED`,`DEPTH_ZERO_SELF_SIGNED_CERT`,`SELF_SIGNED_CERT_IN_CHAIN`,`ERR_TLS_CERT_ALTNAME_INVALID`]),i=[/unable to get local issuer certificate/i,/unable to verify the first certificate/i,/self[- ]signed certificate/i,/certificate has expired/i];function a(e){return e&&typeof e==`object`?e:null}function o(e){let t=a(e),n=a(t?.cause),o=typeof n?.code==`string`?n.code:void 0,s=typeof n?.message==`string`?n.message:typeof t?.message==`string`?t.message:String(e);return{code:o,message:s,kind:o&&r.has(o)||i.some(e=>e.test(s))?`tls-cert`:`network`}}function s(e){let t=`${n.sep}Cellar${n.sep}`,r=e.indexOf(t);return r>0?e.slice(0,r):process.env.HOMEBREW_PREFIX?.trim()||null}function c(){let e=s(process.execPath);return e?n.join(e,`etc`,`openssl@3`,`cert.pem`):null}function l(e){let t=e.auth?.profiles;return t?Object.values(t).some(e=>e.provider===`openai-codex`&&e.mode===`oauth`):!1}function u(e){return e.deep===!0?!0:l(e.cfg)}async function d(e){let t=e?.timeoutMs??5e3,n=e?.fetchImpl??fetch;try{return await n(`https://auth.openai.com/oauth/authorize?response_type=code&client_id=openclaw-preflight&redirect_uri=http%3A%2F%2Flocalhost%3A1455%2Fauth%2Fcallback&scope=openid+profile+email`,{method:`GET`,redirect:`manual`,signal:AbortSignal.timeout(t)}),{ok:!0}}catch(e){let t=o(e);return{ok:!1,kind:t.kind,code:t.code,message:t.message}}}function f(t){if(t.kind!==`tls-cert`)return[`OpenAI OAuth prerequisites check failed due to a network error before the browser flow.`,`Cause: ${t.message}`,`Verify DNS/firewall/proxy access to auth.openai.com and retry.`].join(`
2
2
  `);let n=c(),r=[`OpenAI OAuth prerequisites check failed: Node/OpenSSL cannot validate TLS certificates.`,`Cause: ${t.code?`${t.code} (${t.message})`:t.message}`,``,`Fix (Homebrew Node/OpenSSL):`,`- ${e(`brew postinstall ca-certificates`)}`,`- ${e(`brew postinstall openssl@3`)}`];return n&&r.push(`- Verify cert bundle exists: ${n}`),r.push(`- Retry the OAuth login flow.`),r.join(`
3
- `)}async function p(e){if(!u(e))return;let n=await d({timeoutMs:4e3});n.ok||n.kind!==`tls-cert`||t(f(n),`OAuth TLS prerequisites`)}export{p as n,d as r,f as t};
3
+ `)}async function p(e){if(!u(e))return;let n=await d({timeoutMs:4e3});n.ok||n.kind!==`tls-cert`||t(f(n),`OAuth TLS prerequisites`)}export{p as n,d as r,f as t};
@@ -1,3 +1,3 @@
1
1
  import{t as e}from"./command-format-BbDT1tlm.js";import{t}from"./note-D4GAwgha.js";import n from"node:path";const r=new Set([`UNABLE_TO_GET_ISSUER_CERT_LOCALLY`,`UNABLE_TO_VERIFY_LEAF_SIGNATURE`,`CERT_HAS_EXPIRED`,`DEPTH_ZERO_SELF_SIGNED_CERT`,`SELF_SIGNED_CERT_IN_CHAIN`,`ERR_TLS_CERT_ALTNAME_INVALID`]),i=[/unable to get local issuer certificate/i,/unable to verify the first certificate/i,/self[- ]signed certificate/i,/certificate has expired/i];function a(e){return e&&typeof e==`object`?e:null}function o(e){let t=a(e),n=a(t?.cause),o=typeof n?.code==`string`?n.code:void 0,s=typeof n?.message==`string`?n.message:typeof t?.message==`string`?t.message:String(e);return{code:o,message:s,kind:o&&r.has(o)||i.some(e=>e.test(s))?`tls-cert`:`network`}}function s(e){let t=`${n.sep}Cellar${n.sep}`,r=e.indexOf(t);return r>0?e.slice(0,r):process.env.HOMEBREW_PREFIX?.trim()||null}function c(){let e=s(process.execPath);return e?n.join(e,`etc`,`openssl@3`,`cert.pem`):null}function l(e){let t=e.auth?.profiles;return t?Object.values(t).some(e=>e.provider===`openai-codex`&&e.mode===`oauth`):!1}function u(e){return e.deep===!0?!0:l(e.cfg)}async function d(e){let t=e?.timeoutMs??5e3,n=e?.fetchImpl??fetch;try{return await n(`https://auth.openai.com/oauth/authorize?response_type=code&client_id=openclaw-preflight&redirect_uri=http%3A%2F%2Flocalhost%3A1455%2Fauth%2Fcallback&scope=openid+profile+email`,{method:`GET`,redirect:`manual`,signal:AbortSignal.timeout(t)}),{ok:!0}}catch(e){let t=o(e);return{ok:!1,kind:t.kind,code:t.code,message:t.message}}}function f(t){if(t.kind!==`tls-cert`)return[`OpenAI OAuth prerequisites check failed due to a network error before the browser flow.`,`Cause: ${t.message}`,`Verify DNS/firewall/proxy access to auth.openai.com and retry.`].join(`
2
2
  `);let n=c(),r=[`OpenAI OAuth prerequisites check failed: Node/OpenSSL cannot validate TLS certificates.`,`Cause: ${t.code?`${t.code} (${t.message})`:t.message}`,``,`Fix (Homebrew Node/OpenSSL):`,`- ${e(`brew postinstall ca-certificates`)}`,`- ${e(`brew postinstall openssl@3`)}`];return n&&r.push(`- Verify cert bundle exists: ${n}`),r.push(`- Retry the OAuth login flow.`),r.join(`
3
- `)}async function p(e){if(!u(e))return;let n=await d({timeoutMs:4e3});n.ok||n.kind!==`tls-cert`||t(f(n),`OAuth TLS prerequisites`)}export{p as n,d as r,f as t};
3
+ `)}async function p(e){if(!u(e))return;let n=await d({timeoutMs:4e3});n.ok||n.kind!==`tls-cert`||t(f(n),`OAuth TLS prerequisites`)}export{p as n,d as r,f as t};
@@ -4,4 +4,4 @@ import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{ct as t,lt as n,ot as
4
4
  `),`Ollama Cloud`),!await i.confirm({message:`Have you signed in?`}))throw new c(`Ollama cloud sign-in cancelled`);if(!(await v(l)).signedIn)throw new c(`Ollama cloud sign-in required`);b=!0}else if(await i.note([`Could not verify Ollama Cloud authentication.`,`Cloud models may not work until you sign in at https://ollama.com.`].join(`
5
5
  `),`Ollama Cloud`),!await i.confirm({message:`Continue without cloud auth?`}))throw new c(`Ollama cloud auth could not be verified`)}let x=y===`local`||!b?p:m,S=[...x,..._.filter(e=>!x.includes(e))];await w(e.agentDir);let T=x[0]??`glm-4.7-flash`;return{config:C(e.cfg,l,S,g),defaultModelId:T}}async function E(e){let{opts:i,runtime:a}=e,s=o((i.customBaseUrl?.trim()||r).replace(/\/+$/,``)),{reachable:c,models:u}=await n(s),d=h(i.customModelId);if(!c)return a.error([`Ollama could not be reached at ${s}.`,`Download it at https://ollama.com/download`].join(`
6
6
  `)),a.exit(1),e.nextConfig;await w();let f=await t(s,u.slice(0,50)),m=new Map(f.map(e=>[e.name,e])),_=u.map(e=>e.name),v=p,y=[...v,..._.filter(e=>!v.includes(e))],b=d??v[0],S=!1,T=new Set(_),E=g(b);E&&T.add(b),!E&&!_.includes(b)&&(S=await x(s,b,a),S&&T.add(b));let D=y,O=b;if((S||E)&&!D.includes(b)&&(D=[...D,b]),!T.has(b))if(T.size>0)O=D.find(e=>T.has(e))??Array.from(T)[0],a.log(`Ollama model ${b} was not available; using ${O} instead.`);else return a.error([`No Ollama models are available at ${s}.`,`Pull a model first, then re-run onboarding.`].join(`
7
- `)),a.exit(1),e.nextConfig;let k=C(e.nextConfig,s,D,m),A=`ollama/${O}`;return a.log(`Default Ollama model: ${O}`),l(k,A)}async function D(e){let t=e.config.agents?.defaults?.model,i=typeof t==`string`?t:t?.primary;if(!i?.startsWith(`ollama/`))return;let a=e.config.models?.providers?.ollama?.baseUrl??r,o=i.slice(7);if(g(o))return;let{models:s}=await n(a);if(!s.some(e=>e.name===o)&&!await b(a,o,e.prompter))throw new c(`Failed to download selected Ollama model`)}export{T as i,D as n,d as r,E as t};
7
+ `)),a.exit(1),e.nextConfig;let k=C(e.nextConfig,s,D,m),A=`ollama/${O}`;return a.log(`Default Ollama model: ${O}`),l(k,A)}async function D(e){let t=e.config.agents?.defaults?.model,i=typeof t==`string`?t:t?.primary;if(!i?.startsWith(`ollama/`))return;let a=e.config.models?.providers?.ollama?.baseUrl??r,o=i.slice(7);if(g(o))return;let{models:s}=await n(a);if(!s.some(e=>e.name===o)&&!await b(a,o,e.prompter))throw new c(`Failed to download selected Ollama model`)}export{T as i,D as n,d as r,E as t};
@@ -4,4 +4,4 @@ import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{Cc as t,Gl as n,Jl as
4
4
  `),`Ollama Cloud`),!await t.confirm({message:`Have you signed in?`}))throw new c(`Ollama cloud sign-in cancelled`);if(!(await v(l)).signedIn)throw new c(`Ollama cloud sign-in required`);b=!0}else if(await t.note([`Could not verify Ollama Cloud authentication.`,`Cloud models may not work until you sign in at https://ollama.com.`].join(`
5
5
  `),`Ollama Cloud`),!await t.confirm({message:`Continue without cloud auth?`}))throw new c(`Ollama cloud auth could not be verified`)}let x=y===`local`||!b?p:m,S=[...x,..._.filter(e=>!x.includes(e))];await w(e.agentDir);let T=x[0]??`glm-4.7-flash`;return{config:C(e.cfg,l,S,g),defaultModelId:T}}async function E(e){let{opts:t,runtime:n}=e,s=r((t.customBaseUrl?.trim()||a).replace(/\/+$/,``)),{reachable:c,models:u}=await o(s),d=h(t.customModelId);if(!c)return n.error([`Ollama could not be reached at ${s}.`,`Download it at https://ollama.com/download`].join(`
6
6
  `)),n.exit(1),e.nextConfig;await w();let f=await i(s,u.slice(0,50)),m=new Map(f.map(e=>[e.name,e])),_=u.map(e=>e.name),v=p,y=[...v,..._.filter(e=>!v.includes(e))],b=d??v[0],S=!1,T=new Set(_),E=g(b);E&&T.add(b),!E&&!_.includes(b)&&(S=await x(s,b,n),S&&T.add(b));let D=y,O=b;if((S||E)&&!D.includes(b)&&(D=[...D,b]),!T.has(b))if(T.size>0)O=D.find(e=>T.has(e))??Array.from(T)[0],n.log(`Ollama model ${b} was not available; using ${O} instead.`);else return n.error([`No Ollama models are available at ${s}.`,`Pull a model first, then re-run onboarding.`].join(`
7
- `)),n.exit(1),e.nextConfig;let k=C(e.nextConfig,s,D,m),A=`ollama/${O}`;return n.log(`Default Ollama model: ${O}`),l(k,A)}async function D(e){let t=e.config.agents?.defaults?.model,n=typeof t==`string`?t:t?.primary;if(!n?.startsWith(`ollama/`))return;let r=e.config.models?.providers?.ollama?.baseUrl??a,i=n.slice(7);if(g(i))return;let{models:s}=await o(r);if(!s.some(e=>e.name===i)&&!await b(r,i,e.prompter))throw new c(`Failed to download selected Ollama model`)}export{T as i,D as n,d as r,E as t};
7
+ `)),n.exit(1),e.nextConfig;let k=C(e.nextConfig,s,D,m),A=`ollama/${O}`;return n.log(`Default Ollama model: ${O}`),l(k,A)}async function D(e){let t=e.config.agents?.defaults?.model,n=typeof t==`string`?t:t?.primary;if(!n?.startsWith(`ollama/`))return;let r=e.config.models?.providers?.ollama?.baseUrl??a,i=n.slice(7);if(g(i))return;let{models:s}=await o(r);if(!s.some(e=>e.name===i)&&!await b(r,i,e.prompter))throw new c(`Failed to download selected Ollama model`)}export{T as i,D as n,d as r,E as t};
@@ -2,4 +2,4 @@ import{u as e}from"./paths-B4IRk3wi.js";import{m as t,p as n}from"./subsystem-C5
2
2
  `)),r.exit(1);return}let g=n.authChoice??p.choice??`skip`;if(g!==`skip`){let{applyNonInteractiveAuthChoice:e}=await import(`./auth-choice-BNd2SNjJ.js`),t=await e({nextConfig:d,authChoice:g,opts:n,runtime:r,baseConfig:i});if(!t)return;d=t}let _=e(i),v=k({nextConfig:d,opts:n,runtime:r,defaultPort:_});if(!v)return;if(d=v.nextConfig,d=j({nextConfig:d,opts:n,runtime:r}),d=m(d,{command:`onboard`,mode:o}),await a(d),x(r),await l(c,r,{skipBootstrap:!!d.agents?.defaults?.skipBootstrap}),n.installDaemon){let{installGatewayDaemonNonInteractive:e}=await import(`./daemon-install-C_DmJEkV.js`);await e({nextConfig:d,opts:n,runtime:r,port:v.port})}let y=n.daemonRuntime??`node`;if(!n.skipHealth){let{healthCommand:e}=await import(`./health-Cy_CvKbX.js`).then(e=>e.i);await u({url:f({bind:v.bind,port:v.port,customBindHost:d.gateway?.customBindHost,basePath:void 0}).wsUrl,token:v.gatewayToken,deadlineMs:15e3}),await e({json:!1,timeoutMs:1e4},r)}A({opts:n,runtime:r,mode:o,workspaceDir:c,authChoice:g,gateway:{port:v.port,bind:v.bind,authMode:v.authMode,tailscaleMode:v.tailscaleMode},installDaemon:!!n.installDaemon,daemonRuntime:n.installDaemon?y:void 0,skipSkills:!!n.skipSkills,skipHealth:!!n.skipHealth}),n.json||r.log(`Tip: run \`${s(`openclaw configure --section web`)}\` to store your Brave API key for web_search. Docs: https://docs.openclaw.ai/tools/web`)}async function P(e){let{opts:t,runtime:n,baseConfig:r}=e,i=`remote`,o=t.remoteUrl?.trim();if(!o){n.error(`Missing --remote-url for remote mode.`),n.exit(1);return}let c={...r,gateway:{...r.gateway,mode:`remote`,remote:{url:o,token:t.remoteToken?.trim()||void 0}}};c=m(c,{command:`onboard`,mode:i}),await a(c),x(n);let l={mode:i,remoteUrl:o,auth:t.remoteToken?`token`:`none`};t.json?n.log(JSON.stringify(l,null,2)):(n.log(`Remote gateway: ${o}`),n.log(`Auth: ${l.auth}`),n.log(`Tip: run \`${s(`openclaw configure --section web`)}\` to store your Brave API key for web_search. Docs: https://docs.openclaw.ai/tools/web`))}async function F(e,t=n){let r=await i();if(r.exists&&!r.valid){t.error(`Config invalid. Run \`${s(`openclaw doctor`)}\` to repair it, then re-run onboarding.`),t.exit(1);return}let a=r.valid&&r.exists?r.config:{},o=e.mode??`local`;if(o!==`local`&&o!==`remote`){t.error(`Invalid --mode "${String(o)}" (use local|remote).`),t.exit(1);return}if(o===`remote`){await P({opts:e,runtime:t,baseConfig:a});return}await N({opts:e,runtime:t,baseConfig:a})}const I=new Set([`config`,`config+creds+sessions`,`full`]);async function L(e,t=n){_(t);let a=e.authChoice,o=S(a);if(e.nonInteractive&&C(a)){t.error([`Auth choice "${String(a)}" is deprecated.`,`Use "--auth-choice token" (Anthropic setup-token) or "--auth-choice openai-codex".`].join(`
3
3
  `)),t.exit(1);return}a===`claude-cli`&&t.log(`Auth choice "claude-cli" is deprecated; using setup-token flow instead.`),a===`codex-cli`&&t.log(`Auth choice "codex-cli" is deprecated; using OpenAI Codex OAuth instead.`);let c=e.flow===`manual`?`advanced`:e.flow,l=o===e.authChoice&&c===e.flow?e:{...e,authChoice:o,flow:c};if(l.secretInputMode&&l.secretInputMode!==`plaintext`&&l.secretInputMode!==`ref`){t.error(`Invalid --secret-input-mode. Use "plaintext" or "ref".`),t.exit(1);return}if(l.resetScope&&!I.has(l.resetScope)){t.error(`Invalid --reset-scope. Use "config", "config+creds+sessions", or "full".`),t.exit(1);return}if(l.nonInteractive&&l.acceptRisk!==!0){t.error([`Non-interactive onboarding requires explicit risk acknowledgement.`,`Read: https://docs.openclaw.ai/security`,`Re-run with: ${s(`openclaw onboard --non-interactive --accept-risk ...`)}`].join(`
4
4
  `)),t.exit(1);return}if(l.reset){let e=await i(),n=e.valid?e.config:{},a=l.workspace??n.agents?.defaults?.workspace??h;await d(l.resetScope??`config+creds+sessions`,r(a),t)}if(process.platform===`win32`&&t.log([`Windows detected — OpenClaw runs great on WSL2!`,`Native Windows might be trickier.`,`Quick setup: wsl --install (one command, one reboot)`,`Guide: https://docs.openclaw.ai/windows`].join(`
5
- `)),l.nonInteractive){await F(l,t);return}await E(l,t)}export{L as t};
5
+ `)),l.nonInteractive){await F(l,t);return}await E(l,t)}export{L as t};
@@ -2,4 +2,4 @@ import{m as e,p as t}from"./subsystem-BLbY429l.js";import{u as n}from"./paths-Bj
2
2
  `)),i.exit(1);return}let g=t.authChoice??p.choice??`skip`;if(g!==`skip`){let{applyNonInteractiveAuthChoice:e}=await import(`./auth-choice-DViEjgMg.js`),n=await e({nextConfig:d,authChoice:g,opts:t,runtime:i,baseConfig:o});if(!n)return;d=n}let _=n(o),v=k({nextConfig:d,opts:t,runtime:i,defaultPort:_});if(!v)return;if(d=v.nextConfig,d=j({nextConfig:d,opts:t,runtime:i}),d=m(d,{command:`onboard`,mode:s}),await r(d),x(i),await l(c,i,{skipBootstrap:!!d.agents?.defaults?.skipBootstrap}),t.installDaemon){let{installGatewayDaemonNonInteractive:e}=await import(`./daemon-install-D1DacLbM.js`);await e({nextConfig:d,opts:t,runtime:i,port:v.port})}let y=t.daemonRuntime??`node`;if(!t.skipHealth){let{healthCommand:e}=await import(`./health-Bedsiigi.js`).then(e=>e.i);await u({url:f({bind:v.bind,port:v.port,customBindHost:d.gateway?.customBindHost,basePath:void 0}).wsUrl,token:v.gatewayToken,deadlineMs:15e3}),await e({json:!1,timeoutMs:1e4},i)}A({opts:t,runtime:i,mode:s,workspaceDir:c,authChoice:g,gateway:{port:v.port,bind:v.bind,authMode:v.authMode,tailscaleMode:v.tailscaleMode},installDaemon:!!t.installDaemon,daemonRuntime:t.installDaemon?y:void 0,skipSkills:!!t.skipSkills,skipHealth:!!t.skipHealth}),t.json||i.log(`Tip: run \`${a(`openclaw configure --section web`)}\` to store your Brave API key for web_search. Docs: https://docs.openclaw.ai/tools/web`)}async function P(e){let{opts:t,runtime:n,baseConfig:i}=e,o=`remote`,s=t.remoteUrl?.trim();if(!s){n.error(`Missing --remote-url for remote mode.`),n.exit(1);return}let c={...i,gateway:{...i.gateway,mode:`remote`,remote:{url:s,token:t.remoteToken?.trim()||void 0}}};c=m(c,{command:`onboard`,mode:o}),await r(c),x(n);let l={mode:o,remoteUrl:s,auth:t.remoteToken?`token`:`none`};t.json?n.log(JSON.stringify(l,null,2)):(n.log(`Remote gateway: ${s}`),n.log(`Auth: ${l.auth}`),n.log(`Tip: run \`${a(`openclaw configure --section web`)}\` to store your Brave API key for web_search. Docs: https://docs.openclaw.ai/tools/web`))}async function F(e,n=t){let r=await i();if(r.exists&&!r.valid){n.error(`Config invalid. Run \`${a(`openclaw doctor`)}\` to repair it, then re-run onboarding.`),n.exit(1);return}let o=r.valid&&r.exists?r.config:{},s=e.mode??`local`;if(s!==`local`&&s!==`remote`){n.error(`Invalid --mode "${String(s)}" (use local|remote).`),n.exit(1);return}if(s===`remote`){await P({opts:e,runtime:n,baseConfig:o});return}await N({opts:e,runtime:n,baseConfig:o})}const I=new Set([`config`,`config+creds+sessions`,`full`]);async function L(e,n=t){y(n);let r=e.authChoice,s=S(r);if(e.nonInteractive&&C(r)){n.error([`Auth choice "${String(r)}" is deprecated.`,`Use "--auth-choice token" (Anthropic setup-token) or "--auth-choice openai-codex".`].join(`
3
3
  `)),n.exit(1);return}r===`claude-cli`&&n.log(`Auth choice "claude-cli" is deprecated; using setup-token flow instead.`),r===`codex-cli`&&n.log(`Auth choice "codex-cli" is deprecated; using OpenAI Codex OAuth instead.`);let c=e.flow===`manual`?`advanced`:e.flow,l=s===e.authChoice&&c===e.flow?e:{...e,authChoice:s,flow:c};if(l.secretInputMode&&l.secretInputMode!==`plaintext`&&l.secretInputMode!==`ref`){n.error(`Invalid --secret-input-mode. Use "plaintext" or "ref".`),n.exit(1);return}if(l.resetScope&&!I.has(l.resetScope)){n.error(`Invalid --reset-scope. Use "config", "config+creds+sessions", or "full".`),n.exit(1);return}if(l.nonInteractive&&l.acceptRisk!==!0){n.error([`Non-interactive onboarding requires explicit risk acknowledgement.`,`Read: https://docs.openclaw.ai/security`,`Re-run with: ${a(`openclaw onboard --non-interactive --accept-risk ...`)}`].join(`
4
4
  `)),n.exit(1);return}if(l.reset){let e=await i(),t=e.valid?e.config:{},r=l.workspace??t.agents?.defaults?.workspace??h;await d(l.resetScope??`config+creds+sessions`,o(r),n)}if(process.platform===`win32`&&n.log([`Windows detected — OpenClaw runs great on WSL2!`,`Native Windows might be trickier.`,`Quick setup: wsl --install (one command, one reboot)`,`Guide: https://docs.openclaw.ai/windows`].join(`
5
- `)),l.nonInteractive){await F(l,n);return}await E(l,n)}export{L as t};
5
+ `)),l.nonInteractive){await F(l,n);return}await E(l,n)}export{L as t};
@@ -15,4 +15,4 @@ import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{t}from"./subsystem-C5X
15
15
  `),`How channels work`)}function _n(e){let t=null;for(let[n,r]of e)r.quickstartScore!=null&&(!t||r.quickstartScore>t.score)&&(t={channel:n,score:r.quickstartScore});return t?.channel}async function vn(e){let{selection:t,prompter:n,accountIdsByChannel:r}=e,i=t.map(e=>$(e)?.dmPolicy).filter(Boolean);if(i.length===0||!await n.confirm({message:`Configure DM access policies now? (default: pairing)`,initialValue:!1}))return e.cfg;let a=e.cfg,o=async e=>(await n.note([`Default: pairing (unknown DMs get a pairing code).`,`Approve: ${y(`openclaw pairing approve ${e.channel} <code>`)}`,`Allowlist DMs: ${e.policyKey}="allowlist" + ${e.allowFromKey} entries.`,`Public DMs: ${e.policyKey}="open" + ${e.allowFromKey} includes "*".`,`Multi-user DMs: run: `+y(`openclaw config set session.dmScope "per-channel-peer"`)+` (or "per-account-channel-peer" for multi-account channels) to isolate sessions.`,`Docs: ${P(`/channels/pairing`,`channels/pairing`)}`].join(`
16
16
  `),`${e.label} DM access`),await n.select({message:`${e.label} DM policy`,options:[{value:`pairing`,label:`Pairing (recommended)`},{value:`allowlist`,label:`Allowlist (specific users only)`},{value:`open`,label:`Open (public inbound DMs)`},{value:`disabled`,label:`Disabled (ignore DMs)`}]}));for(let e of i){let t=e.getCurrent(a),i=await o(e);i!==t&&(a=e.setPolicy(a,i)),i===`allowlist`&&e.promptAllowFrom&&(a=await e.promptAllowFrom({cfg:a,prompter:n,accountId:r?.get(e.channel)}))}return a}async function yn(e,t,n,r){let i=e,a=new Set(r?.forceAllowFromChannels??[]),o={...r?.accountIds};r?.whatsappAccountId?.trim()&&(o.whatsapp=r.whatsappAccountId.trim());let{installedPlugins:s,catalogEntries:c,statusByChannel:l,statusLines:u}=await mn({cfg:i,options:r,accountOverrides:o});if(!r?.skipStatusNote&&u.length>0&&await n.note(u.join(`
17
17
  `),`Channel status`),!(r?.skipConfirm||await n.confirm({message:`Configure chat channels now?`,initialValue:!0})))return e;let d=te().map(e=>({id:e.id,label:e.label,blurb:e.blurb})),f=new Set(d.map(e=>e.id));await gn(n,[...d,...s.filter(e=>!f.has(e.id)).map(e=>({id:e.id,label:e.meta.label,blurb:e.meta.blurb})),...c.filter(e=>!f.has(e.id)).map(e=>({id:e.id,label:e.meta.label,blurb:e.meta.blurb}))]);let p=r?.initialSelection?.[0]??_n(l),_=r?.promptAccountIds===!0,v=new Map,ne=(e,t)=>{r?.onAccountId?.(e,t),$(e)?.onAccountRecorded?.(t,r),v.set(e,t)},b=[],re=e=>{b.includes(e)||b.push(e)},ie=e=>{let t=j(e);if(!t)return i.plugins?.entries?.[e]?.enabled===!1?`plugin disabled`:i.plugins?.enabled===!1?`plugins disabled`:void 0;let n=ue({plugin:t,cfg:i}),r=t.config.resolveAccount(i,n),a;return t.config.isEnabled?a=t.config.isEnabled(r,i):typeof r?.enabled==`boolean`?a=r.enabled:typeof i.channels?.[e]?.enabled==`boolean`&&(a=i.channels[e]?.enabled),a===!1?`disabled`:void 0},x=e=>e.map(e=>{let t=l.get(e.id),n=ie(e.id),r=[t?.selectionHint,n].filter(Boolean).join(` · `)||void 0;return{value:e.meta.id,label:e.meta.selectionLabel??e.meta.label,...r?{hint:r}:{}}}),S=()=>{let e=te(),t=k(),n=new Set(t.map(e=>e.id)),r=me({workspaceDir:m(i,h(i))}).filter(e=>!n.has(e.id)),a=new Map;for(let t of e)a.set(t.id,t);for(let e of t)a.set(e.id,e.meta);for(let e of r)a.has(e.id)||a.set(e.id,e.meta);return{entries:Array.from(a,([e,t])=>({id:e,meta:t})),catalog:r,catalogById:new Map(r.map(e=>[e.id,e]))}},C=async e=>{let t=$(e);if(!t)return;let n=await t.getStatus({cfg:i,options:r,accountOverrides:o});l.set(e,n)},ae=async e=>{if(j(e))return!0;let r=F(i,e);if(i=r.config,!r.enabled)return await n.note(`Cannot enable ${e}: ${r.reason??`plugin disabled`}.`,`Channel setup`),!1;let a=m(i,h(i));return He({cfg:i,runtime:t,workspaceDir:a}),j(e)?(await C(e),!0):$(e)?(await n.note(`${e} plugin not available (continuing with onboarding). If the channel still doesn't work after setup, run \`${y(`openclaw plugins list`)}\` and \`${y(`openclaw plugins enable `+e)}\`, then restart the gateway.`,`Channel setup`),await C(e),!0):(await n.note(`${e} plugin not available.`,`Channel setup`),!1)},w=async(e,t)=>{i=t.cfg,t.accountId&&ne(e,t.accountId),re(e),await C(e)},oe=async(e,t)=>t===`skip`?!1:(await w(e,t),!0),T=async e=>{let s=$(e);if(!s){await n.note(`${e} does not support onboarding yet.`,`Channel setup`);return}await w(e,await s.configure({cfg:i,runtime:t,prompter:n,options:r,accountOverrides:o,shouldPromptAccountIds:_,forceAllowFrom:a.has(e)}))},se=async(e,s)=>{let c=j(e),l=$(e);if(l?.configureWhenConfigured)return await oe(e,await l.configureWhenConfigured({cfg:i,runtime:t,prompter:n,options:r,accountOverrides:o,shouldPromptAccountIds:_,forceAllowFrom:a.has(e),configured:!0,label:s})),void 0;let u=!!(r?.allowDisable&&(c?.config.setAccountEnabled||l?.disable)),d=!!(r?.allowDisable&&c?.config.deleteAccount),f=await fn({prompter:n,label:s,supportsDisable:u,supportsDelete:d});if(f===`skip`)return;if(f===`update`){await T(e);return}if(!r?.allowDisable)return;if(f===`delete`&&!d){await n.note(`${s} does not support deleting config entries.`,`Remove channel`);return}let p=g((f===`delete`?c?.config.deleteAccount:c?.config.setAccountEnabled)?await pn({cfg:i,prompter:n,label:s,channel:e}):`default`)??(c?ue({plugin:c,cfg:i}):`default`),m=dn(p);if(f===`delete`){if(!await n.confirm({message:`Delete ${s} account "${m}"?`,initialValue:!1}))return;c?.config.deleteAccount&&(i=c.config.deleteAccount({cfg:i,accountId:p})),await C(e);return}c?.config.setAccountEnabled?i=c.config.setAccountEnabled({cfg:i,accountId:p,enabled:!1}):l?.disable&&(i=l.disable(i)),await C(e)},E=async e=>{let{catalogById:s}=S(),c=s.get(e);if(c){let r=m(i,h(i)),a=await Ve({cfg:i,entry:c,prompter:n,runtime:t,workspaceDir:r});if(i=a.cfg,!a.installed)return;He({cfg:i,runtime:t,workspaceDir:r}),await C(e)}else if(!await ae(e))return;let u=j(e),d=$(e),f=u?.meta.label??c?.meta.label??e,p=l.get(e)?.configured??!1;if(d?.configureInteractive)return await oe(e,await d.configureInteractive({cfg:i,runtime:t,prompter:n,options:r,accountOverrides:o,shouldPromptAccountIds:_,forceAllowFrom:a.has(e),configured:p,label:f})),void 0;if(p){await se(e,f);return}await T(e)};if(r?.quickstartDefaults){let{entries:e}=S(),t=await n.select({message:`Select channel (QuickStart)`,options:[...x(e),{value:`__skip__`,label:`Skip for now`,hint:`You can add channels later via \`${y(`openclaw channels add`)}\``}],initialValue:p});t!==`__skip__`&&await E(t)}else{let e=`__done__`,t=r?.initialSelection?.[0]??p;for(;;){let{entries:r}=S(),i=await n.select({message:`Select a channel`,options:[...x(r),{value:e,label:`Finished`,hint:b.length>0?`Done`:`Skip for now`}],initialValue:t});if(i===e)break;await E(i)}}r?.onSelection?.(b);let D=new Map,{entries:ce}=S();for(let e of ce)D.set(e.id,ee(e.meta,P));let O=b.map(e=>D.get(e)).filter(e=>!!e);return O.length>0&&await n.note(O.join(`
18
- `),`Selected channels`),r?.skipDmPolicyPrompt||(i=await vn({cfg:i,selection:b,prompter:n,accountIdsByChannel:v})),i}export{He as a,Ve as i,un as n,yn as r,hn as t};
18
+ `),`Selected channels`),r?.skipDmPolicyPrompt||(i=await vn({cfg:i,selection:b,prompter:n,accountIdsByChannel:v})),i}export{He as a,Ve as i,un as n,yn as r,hn as t};
@@ -15,4 +15,4 @@ import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{t}from"./subsystem-BLb
15
15
  `),`How channels work`)}function _n(e){let t=null;for(let[n,r]of e)r.quickstartScore!=null&&(!t||r.quickstartScore>t.score)&&(t={channel:n,score:r.quickstartScore});return t?.channel}async function vn(e){let{selection:t,prompter:n,accountIdsByChannel:r}=e,i=t.map(e=>$(e)?.dmPolicy).filter(Boolean);if(i.length===0||!await n.confirm({message:`Configure DM access policies now? (default: pairing)`,initialValue:!1}))return e.cfg;let o=e.cfg,s=async e=>(await n.note([`Default: pairing (unknown DMs get a pairing code).`,`Approve: ${a(`openclaw pairing approve ${e.channel} <code>`)}`,`Allowlist DMs: ${e.policyKey}="allowlist" + ${e.allowFromKey} entries.`,`Public DMs: ${e.policyKey}="open" + ${e.allowFromKey} includes "*".`,`Multi-user DMs: run: `+a(`openclaw config set session.dmScope "per-channel-peer"`)+` (or "per-account-channel-peer" for multi-account channels) to isolate sessions.`,`Docs: ${F(`/channels/pairing`,`channels/pairing`)}`].join(`
16
16
  `),`${e.label} DM access`),await n.select({message:`${e.label} DM policy`,options:[{value:`pairing`,label:`Pairing (recommended)`},{value:`allowlist`,label:`Allowlist (specific users only)`},{value:`open`,label:`Open (public inbound DMs)`},{value:`disabled`,label:`Disabled (ignore DMs)`}]}));for(let e of i){let t=e.getCurrent(o),i=await s(e);i!==t&&(o=e.setPolicy(o,i)),i===`allowlist`&&e.promptAllowFrom&&(o=await e.promptAllowFrom({cfg:o,prompter:n,accountId:r?.get(e.channel)}))}return o}async function yn(e,t,n,r){let i=e,l=new Set(r?.forceAllowFromChannels??[]),u={...r?.accountIds};r?.whatsappAccountId?.trim()&&(u.whatsapp=r.whatsappAccountId.trim());let{installedPlugins:d,catalogEntries:f,statusByChannel:p,statusLines:g}=await mn({cfg:i,options:r,accountOverrides:u});if(!r?.skipStatusNote&&g.length>0&&await n.note(g.join(`
17
17
  `),`Channel status`),!(r?.skipConfirm||await n.confirm({message:`Configure chat channels now?`,initialValue:!0})))return e;let _=h().map(e=>({id:e.id,label:e.label,blurb:e.blurb})),v=new Set(_.map(e=>e.id));await gn(n,[..._,...d.filter(e=>!v.has(e.id)).map(e=>({id:e.id,label:e.meta.label,blurb:e.meta.blurb})),...f.filter(e=>!v.has(e.id)).map(e=>({id:e.id,label:e.meta.label,blurb:e.meta.blurb}))]);let y=r?.initialSelection?.[0]??_n(p),b=r?.promptAccountIds===!0,x=new Map,ee=(e,t)=>{r?.onAccountId?.(e,t),$(e)?.onAccountRecorded?.(t,r),x.set(e,t)},S=[],te=e=>{S.includes(e)||S.push(e)},ne=e=>{let t=A(e);if(!t)return i.plugins?.entries?.[e]?.enabled===!1?`plugin disabled`:i.plugins?.enabled===!1?`plugins disabled`:void 0;let n=re({plugin:t,cfg:i}),r=t.config.resolveAccount(i,n),a;return t.config.isEnabled?a=t.config.isEnabled(r,i):typeof r?.enabled==`boolean`?a=r.enabled:typeof i.channels?.[e]?.enabled==`boolean`&&(a=i.channels[e]?.enabled),a===!1?`disabled`:void 0},C=e=>e.map(e=>{let t=p.get(e.id),n=ne(e.id),r=[t?.selectionHint,n].filter(Boolean).join(` · `)||void 0;return{value:e.meta.id,label:e.meta.selectionLabel??e.meta.label,...r?{hint:r}:{}}}),w=()=>{let e=h(),t=ie(),n=new Set(t.map(e=>e.id)),r=pe({workspaceDir:o(i,s(i))}).filter(e=>!n.has(e.id)),a=new Map;for(let t of e)a.set(t.id,t);for(let e of t)a.set(e.id,e.meta);for(let e of r)a.has(e.id)||a.set(e.id,e.meta);return{entries:Array.from(a,([e,t])=>({id:e,meta:t})),catalog:r,catalogById:new Map(r.map(e=>[e.id,e]))}},T=async e=>{let t=$(e);if(!t)return;let n=await t.getStatus({cfg:i,options:r,accountOverrides:u});p.set(e,n)},E=async e=>{if(A(e))return!0;let r=I(i,e);if(i=r.config,!r.enabled)return await n.note(`Cannot enable ${e}: ${r.reason??`plugin disabled`}.`,`Channel setup`),!1;let c=o(i,s(i));return Ve({cfg:i,runtime:t,workspaceDir:c}),A(e)?(await T(e),!0):$(e)?(await n.note(`${e} plugin not available (continuing with onboarding). If the channel still doesn't work after setup, run \`${a(`openclaw plugins list`)}\` and \`${a(`openclaw plugins enable `+e)}\`, then restart the gateway.`,`Channel setup`),await T(e),!0):(await n.note(`${e} plugin not available.`,`Channel setup`),!1)},D=async(e,t)=>{i=t.cfg,t.accountId&&ee(e,t.accountId),te(e),await T(e)},O=async(e,t)=>t===`skip`?!1:(await D(e,t),!0),k=async e=>{let a=$(e);if(!a){await n.note(`${e} does not support onboarding yet.`,`Channel setup`);return}await D(e,await a.configure({cfg:i,runtime:t,prompter:n,options:r,accountOverrides:u,shouldPromptAccountIds:b,forceAllowFrom:l.has(e)}))},ae=async(e,a)=>{let o=A(e),s=$(e);if(s?.configureWhenConfigured)return await O(e,await s.configureWhenConfigured({cfg:i,runtime:t,prompter:n,options:r,accountOverrides:u,shouldPromptAccountIds:b,forceAllowFrom:l.has(e),configured:!0,label:a})),void 0;let d=!!(r?.allowDisable&&(o?.config.setAccountEnabled||s?.disable)),f=!!(r?.allowDisable&&o?.config.deleteAccount),p=await fn({prompter:n,label:a,supportsDisable:d,supportsDelete:f});if(p===`skip`)return;if(p===`update`){await k(e);return}if(!r?.allowDisable)return;if(p===`delete`&&!f){await n.note(`${a} does not support deleting config entries.`,`Remove channel`);return}let m=c((p===`delete`?o?.config.deleteAccount:o?.config.setAccountEnabled)?await pn({cfg:i,prompter:n,label:a,channel:e}):`default`)??(o?re({plugin:o,cfg:i}):`default`),h=dn(m);if(p===`delete`){if(!await n.confirm({message:`Delete ${a} account "${h}"?`,initialValue:!1}))return;o?.config.deleteAccount&&(i=o.config.deleteAccount({cfg:i,accountId:m})),await T(e);return}o?.config.setAccountEnabled?i=o.config.setAccountEnabled({cfg:i,accountId:m,enabled:!1}):s?.disable&&(i=s.disable(i)),await T(e)},j=async e=>{let{catalogById:a}=w(),c=a.get(e);if(c){let r=o(i,s(i)),a=await Be({cfg:i,entry:c,prompter:n,runtime:t,workspaceDir:r});if(i=a.cfg,!a.installed)return;Ve({cfg:i,runtime:t,workspaceDir:r}),await T(e)}else if(!await E(e))return;let d=A(e),f=$(e),m=d?.meta.label??c?.meta.label??e,h=p.get(e)?.configured??!1;if(f?.configureInteractive)return await O(e,await f.configureInteractive({cfg:i,runtime:t,prompter:n,options:r,accountOverrides:u,shouldPromptAccountIds:b,forceAllowFrom:l.has(e),configured:h,label:m})),void 0;if(h){await ae(e,m);return}await k(e)};if(r?.quickstartDefaults){let{entries:e}=w(),t=await n.select({message:`Select channel (QuickStart)`,options:[...C(e),{value:`__skip__`,label:`Skip for now`,hint:`You can add channels later via \`${a(`openclaw channels add`)}\``}],initialValue:y});t!==`__skip__`&&await j(t)}else{let e=`__done__`,t=r?.initialSelection?.[0]??y;for(;;){let{entries:r}=w(),i=await n.select({message:`Select a channel`,options:[...C(r),{value:e,label:`Finished`,hint:S.length>0?`Done`:`Skip for now`}],initialValue:t});if(i===e)break;await j(i)}}r?.onSelection?.(S);let oe=new Map,{entries:M}=w();for(let e of M)oe.set(e.id,m(e.meta,F));let N=S.map(e=>oe.get(e)).filter(e=>!!e);return N.length>0&&await n.note(N.join(`
18
- `),`Selected channels`),r?.skipDmPolicyPrompt||(i=await vn({cfg:i,selection:S,prompter:n,accountIdsByChannel:x})),i}export{Ve as a,Be as i,un as n,yn as r,hn as t};
18
+ `),`Selected channels`),r?.skipDmPolicyPrompt||(i=await vn({cfg:i,selection:S,prompter:n,accountIdsByChannel:x})),i}export{Ve as a,Be as i,un as n,yn as r,hn as t};
@@ -1 +1 @@
1
- import{t as e}from"./rolldown-runtime-CNxR59P3.js";var t=e({ONBOARDING_DEFAULT_DM_SCOPE:()=>n,ONBOARDING_DEFAULT_TOOLS_PROFILE:()=>r,applyOnboardingLocalWorkspaceConfig:()=>i});const n=`per-channel-peer`,r=`coding`;function i(e,t){return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,workspace:t}},gateway:{...e.gateway,mode:`local`},session:{...e.session,dmScope:e.session?.dmScope??`per-channel-peer`},tools:{...e.tools,profile:e.tools?.profile??`coding`}}}export{t as n,i as t};
1
+ import{t as e}from"./rolldown-runtime-CNxR59P3.js";var t=e({ONBOARDING_DEFAULT_DM_SCOPE:()=>n,ONBOARDING_DEFAULT_TOOLS_PROFILE:()=>r,applyOnboardingLocalWorkspaceConfig:()=>i});const n=`per-channel-peer`,r=`coding`;function i(e,t){return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,workspace:t}},gateway:{...e.gateway,mode:`local`},session:{...e.session,dmScope:e.session?.dmScope??`per-channel-peer`},tools:{...e.tools,profile:e.tools?.profile??`coding`}}}export{t as n,i as t};
@@ -1 +1 @@
1
- import{t as e}from"./rolldown-runtime-CNxR59P3.js";var t=e({ONBOARDING_DEFAULT_DM_SCOPE:()=>n,ONBOARDING_DEFAULT_TOOLS_PROFILE:()=>r,applyOnboardingLocalWorkspaceConfig:()=>i});const n=`per-channel-peer`,r=`coding`;function i(e,t){return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,workspace:t}},gateway:{...e.gateway,mode:`local`},session:{...e.session,dmScope:e.session?.dmScope??`per-channel-peer`},tools:{...e.tools,profile:e.tools?.profile??`coding`}}}export{t as n,i as t};
1
+ import{t as e}from"./rolldown-runtime-CNxR59P3.js";var t=e({ONBOARDING_DEFAULT_DM_SCOPE:()=>n,ONBOARDING_DEFAULT_TOOLS_PROFILE:()=>r,applyOnboardingLocalWorkspaceConfig:()=>i});const n=`per-channel-peer`,r=`coding`;function i(e,t){return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,workspace:t}},gateway:{...e.gateway,mode:`local`},session:{...e.session,dmScope:e.session?.dmScope??`per-channel-peer`},tools:{...e.tools,profile:e.tools?.profile??`coding`}}}export{t as n,i as t};
@@ -1,2 +1,2 @@
1
1
  import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{Hc as t,Lc as n,Wl as r,cu as i,fu as a,su as o}from"./auth-profiles-BhXA8Jy2.js";import{o as s}from"./types.secrets-D4tbc3Wq.js";import{t as c}from"./context-window-guard-CPChk363.js";import{n as l}from"./fetch-timeout-CdYxWG9w.js";import{r as u}from"./auth-choice.apply-helpers-DCe5nTyP.js";import{u as d}from"./openai-codex-model-default-Df2T3foI.js";import{r as f}from"./model-picker-DN0czUYS.js";var p=e({CustomApiError:()=>v,applyCustomApiConfig:()=>V,parseNonInteractiveCustomApiFlags:()=>B,promptCustomApiConfig:()=>H,resolveCustomProviderId:()=>z});const m=c;function h(e){let t=typeof e==`number`&&Number.isFinite(e)?Math.floor(e):0;return t>=16e3?t:c}function g(e){try{let t=new URL(e).hostname.toLowerCase();return t.endsWith(`.services.ai.azure.com`)||t.endsWith(`.openai.azure.com`)}catch{return!1}}function _(e,t){let n=e.endsWith(`/`)?e.slice(0,-1):e;return n.includes(`/openai/deployments/`)?n:`${n}/openai/deployments/${t}`}var v=class extends Error{constructor(e,t){super(t),this.name=`CustomApiError`,this.code=e}};const y=[{value:`openai`,label:`OpenAI-compatible`,hint:`Uses /chat/completions`},{value:`anthropic`,label:`Anthropic-compatible`,hint:`Uses /messages`},{value:`unknown`,label:`Unknown (detect automatically)`,hint:`Probes OpenAI then Anthropic endpoints`}];function b(e){let t=e.trim().toLowerCase();return t?t.replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``):``}function x(e){try{let t=new URL(e);return b(`custom-${t.hostname.replace(/[^a-z0-9]+/gi,`-`).toLowerCase()}${t.port?`-${t.port}`:``}`)||`custom`}catch{return`custom`}}function S(e){let t=b(e.requestedId)||`custom`,n=e.providers[t];if(!n?.baseUrl||n.baseUrl===e.baseUrl)return{providerId:t,renamed:!1};let r=2,i=`${t}-${r}`;for(;e.providers[i];)r+=1,i=`${t}-${r}`;return{providerId:i,renamed:!0}}function C(e){let r=e.raw.trim();if(!r)return;let i;try{i=d(r)}catch(e){return e instanceof Error?e.message:`Alias is invalid.`}let o=n({cfg:e.cfg,defaultProvider:a}),s=i.toLowerCase(),c=o.byAlias.get(s);if(!c)return;let l=t(c.ref.provider,c.ref.model);if(l!==e.modelRef)return`Alias ${i} already points to ${l}.`}function w(e){let t={};return e&&(t[`api-key`]=e),t}function T(e){let t={};return e&&(t.Authorization=`Bearer ${e}`),t}function E(e){let t={"anthropic-version":`2023-06-01`};return e&&(t[`x-api-key`]=e),t}function D(e){if(!e)return`unknown error`;if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return`unknown error`}}function O(e){return s(e)?e:o(e)}function k(e){let t=g(e.baseUrl)?_(e.baseUrl,e.modelId):e.baseUrl,n=new URL(e.endpointPath,t.endsWith(`/`)?t:`${t}/`);return g(e.baseUrl)&&n.searchParams.set(`api-version`,`2024-10-21`),n.href}async function A(e){try{let t=await l(e.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`,...e.headers},body:JSON.stringify(e.body)},3e4);return{ok:t.ok,status:t.status}}catch(e){return{ok:!1,error:e}}}async function j(e){let t=k({baseUrl:e.baseUrl,modelId:e.modelId,endpointPath:`chat/completions`}),n=g(e.baseUrl),r=n?w(e.apiKey):T(e.apiKey);return n?await A({endpoint:t,headers:r,body:{messages:[{role:`user`,content:`Hi`}],max_completion_tokens:5,stream:!1}}):await A({endpoint:t,headers:r,body:{model:e.modelId,messages:[{role:`user`,content:`Hi`}],max_tokens:1,stream:!1}})}async function M(e){return await A({endpoint:k({baseUrl:/\/v1\/?$/.test(e.baseUrl.trim())?e.baseUrl.trim():e.baseUrl.trim().replace(/\/?$/,``)+`/v1`,modelId:e.modelId,endpointPath:`messages`}),headers:E(e.apiKey),body:{model:e.modelId,max_tokens:1,messages:[{role:`user`,content:`Hi`}],stream:!1}})}async function N(e){let t=(await e.prompter.text({message:`API Base URL`,initialValue:e.initialBaseUrl??r,placeholder:`https://api.example.com/v1`,validate:e=>{try{new URL(e);return}catch{return`Please enter a valid URL (e.g. http://...)`}}})).trim(),n=x(t)||`custom`,a,o=await u({config:e.config,provider:n,envLabel:`CUSTOM_API_KEY`,promptMessage:`API Key (leave blank if not required)`,normalize:i,validate:()=>void 0,prompter:e.prompter,secretInputMode:e.secretInputMode,setCredential:async e=>{a=e}});return{baseUrl:t,apiKey:O(a),resolvedApiKey:i(o)}}async function P(e){return await e.select({message:`What would you like to change?`,options:[{value:`baseUrl`,label:`Change base URL`},{value:`model`,label:`Change model`},{value:`both`,label:`Change base URL and model`}]})}async function F(e){return(await e.text({message:`Model ID`,placeholder:`e.g. llama3, claude-3-7-sonnet`,validate:e=>e.trim()?void 0:`Model ID is required`})).trim()}async function I(e){let{baseUrl:t,apiKey:n,resolvedApiKey:r,modelId:i}=e.current;if(e.retryChoice===`baseUrl`||e.retryChoice===`both`){let i=await N({prompter:e.prompter,config:e.config,secretInputMode:e.secretInputMode,initialBaseUrl:t});t=i.baseUrl,n=i.apiKey,r=i.resolvedApiKey}return(e.retryChoice===`model`||e.retryChoice===`both`)&&(i=await F(e.prompter)),{baseUrl:t,apiKey:n,resolvedApiKey:r,modelId:i}}function L(e){return e===`anthropic`?`anthropic-messages`:`openai-completions`}function R(e){let t=e?.trim().toLowerCase();if(!t)return`openai`;if(t!==`openai`&&t!==`anthropic`)throw new v(`invalid_compatibility`,`Invalid --custom-compatibility (use "openai" or "anthropic").`);return t}function z(e){let t=e.config.models?.providers??{},n=e.baseUrl.trim(),r=e.providerId?.trim();if(r&&!b(r))throw new v(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);let i=r||x(n),a=S({requestedId:i,baseUrl:n,providers:t});return{providerId:a.providerId,...a.renamed?{providerIdRenamedFrom:b(i)||`custom`}:{}}}function B(e){let t=e.baseUrl?.trim()??``,n=e.modelId?.trim()??``;if(!t||!n)throw new v(`missing_required`,[`Auth choice "custom-api-key" requires a base URL and model ID.`,`Use --custom-base-url and --custom-model-id.`].join(`
2
- `));let r=e.apiKey?.trim(),i=e.providerId?.trim();if(i&&!b(i))throw new v(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);return{baseUrl:t,modelId:n,compatibility:R(e.compatibility),...r?{apiKey:r}:{},...i?{providerId:i}:{}}}function V(e){let n=e.baseUrl.trim();try{new URL(n)}catch{throw new v(`invalid_base_url`,`Custom provider base URL must be a valid URL.`)}if(e.compatibility!==`openai`&&e.compatibility!==`anthropic`)throw new v(`invalid_compatibility`,`Custom provider compatibility must be "openai" or "anthropic".`);let r=e.modelId.trim();if(!r)throw new v(`invalid_model_id`,`Custom provider model ID is required.`);let i=g(n)?_(n,r):n,a=z({config:e.config,baseUrl:i,providerId:e.providerId}),o=a.providerId,s=e.config.models?.providers??{},c=t(o,r),l=e.alias?.trim()??``,u=C({raw:l,cfg:e.config,modelRef:c});if(u)throw new v(`invalid_alias`,u);let d=s[o],p=Array.isArray(d?.models)?d.models:[],y=p.some(e=>e.id===r),b={id:r,name:`${r} (Custom Provider)`,contextWindow:m,maxTokens:4096,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!1},x=y?p.map(e=>e.id===r?{...e,contextWindow:h(e.contextWindow)}:e):[...p,b],{apiKey:S,...w}=d??{},T=O(e.apiKey)??O(S),E={...e.config,models:{...e.config.models,mode:e.config.models?.mode??`merge`,providers:{...s,[o]:{...w,baseUrl:i,api:L(e.compatibility),...T?{apiKey:T}:{},models:x.length>0?x:[b]}}}};return E=f(E,c),l&&(E={...E,agents:{...E.agents,defaults:{...E.agents?.defaults,models:{...E.agents?.defaults?.models,[c]:{...E.agents?.defaults?.models?.[c],alias:l}}}}}),{config:E,providerId:o,modelId:r,...a.providerIdRenamedFrom?{providerIdRenamedFrom:a.providerIdRenamedFrom}:{}}}async function H(e){let{prompter:n,runtime:r,config:i}=e,a=await N({prompter:n,config:i,secretInputMode:e.secretInputMode}),o=a.baseUrl,s=a.apiKey,c=a.resolvedApiKey,l=await n.select({message:`Endpoint compatibility`,options:y.map(e=>({value:e.value,label:e.label,hint:e.hint}))}),u=await F(n),d=l===`unknown`?null:l;for(;;){let t=!1;if(!d){let r=n.progress(`Detecting endpoint type...`);if((await j({baseUrl:o,apiKey:c,modelId:u})).ok)r.stop(`Detected OpenAI-compatible endpoint.`),d=`openai`,t=!0;else if((await M({baseUrl:o,apiKey:c,modelId:u})).ok)r.stop(`Detected Anthropic-compatible endpoint.`),d=`anthropic`,t=!0;else{r.stop(`Could not detect endpoint type.`),await n.note(`This endpoint did not respond to OpenAI or Anthropic style requests.`,`Endpoint detection`);let t=await P(n);({baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}=await I({prompter:n,config:i,secretInputMode:e.secretInputMode,retryChoice:t,current:{baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}}));continue}}if(t)break;let r=n.progress(`Verifying...`),a=d===`anthropic`?await M({baseUrl:o,apiKey:c,modelId:u}):await j({baseUrl:o,apiKey:c,modelId:u});if(a.ok){r.stop(`Verification successful.`);break}a.status===void 0?r.stop(`Verification failed: ${D(a.error)}`):r.stop(`Verification failed: status ${a.status}`);let f=await P(n);({baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}=await I({prompter:n,config:i,secretInputMode:e.secretInputMode,retryChoice:f,current:{baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}})),l===`unknown`&&(d=null)}let f=i.models?.providers??{},p=x(o),m=await n.text({message:`Endpoint ID`,initialValue:p,placeholder:`custom`,validate:e=>{if(!b(e))return`Endpoint ID is required.`}}),h=await n.text({message:`Model alias (optional)`,placeholder:`e.g. local, ollama`,initialValue:``,validate:e=>C({raw:e,cfg:i,modelRef:t(S({requestedId:b(m)||`custom`,baseUrl:o,providers:f}).providerId,u)})}),g=V({config:i,baseUrl:o,modelId:u,compatibility:d??`openai`,apiKey:s,providerId:m,alias:h});return g.providerIdRenamedFrom&&g.providerId&&await n.note(`Endpoint ID "${g.providerIdRenamedFrom}" already exists for a different base URL. Using "${g.providerId}".`,`Endpoint ID`),r.log(`Configured custom provider: ${g.providerId}/${g.modelId}`),g}export{H as a,B as i,V as n,z as o,p as r,v as t};
2
+ `));let r=e.apiKey?.trim(),i=e.providerId?.trim();if(i&&!b(i))throw new v(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);return{baseUrl:t,modelId:n,compatibility:R(e.compatibility),...r?{apiKey:r}:{},...i?{providerId:i}:{}}}function V(e){let n=e.baseUrl.trim();try{new URL(n)}catch{throw new v(`invalid_base_url`,`Custom provider base URL must be a valid URL.`)}if(e.compatibility!==`openai`&&e.compatibility!==`anthropic`)throw new v(`invalid_compatibility`,`Custom provider compatibility must be "openai" or "anthropic".`);let r=e.modelId.trim();if(!r)throw new v(`invalid_model_id`,`Custom provider model ID is required.`);let i=g(n)?_(n,r):n,a=z({config:e.config,baseUrl:i,providerId:e.providerId}),o=a.providerId,s=e.config.models?.providers??{},c=t(o,r),l=e.alias?.trim()??``,u=C({raw:l,cfg:e.config,modelRef:c});if(u)throw new v(`invalid_alias`,u);let d=s[o],p=Array.isArray(d?.models)?d.models:[],y=p.some(e=>e.id===r),b={id:r,name:`${r} (Custom Provider)`,contextWindow:m,maxTokens:4096,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!1},x=y?p.map(e=>e.id===r?{...e,contextWindow:h(e.contextWindow)}:e):[...p,b],{apiKey:S,...w}=d??{},T=O(e.apiKey)??O(S),E={...e.config,models:{...e.config.models,mode:e.config.models?.mode??`merge`,providers:{...s,[o]:{...w,baseUrl:i,api:L(e.compatibility),...T?{apiKey:T}:{},models:x.length>0?x:[b]}}}};return E=f(E,c),l&&(E={...E,agents:{...E.agents,defaults:{...E.agents?.defaults,models:{...E.agents?.defaults?.models,[c]:{...E.agents?.defaults?.models?.[c],alias:l}}}}}),{config:E,providerId:o,modelId:r,...a.providerIdRenamedFrom?{providerIdRenamedFrom:a.providerIdRenamedFrom}:{}}}async function H(e){let{prompter:n,runtime:r,config:i}=e,a=await N({prompter:n,config:i,secretInputMode:e.secretInputMode}),o=a.baseUrl,s=a.apiKey,c=a.resolvedApiKey,l=await n.select({message:`Endpoint compatibility`,options:y.map(e=>({value:e.value,label:e.label,hint:e.hint}))}),u=await F(n),d=l===`unknown`?null:l;for(;;){let t=!1;if(!d){let r=n.progress(`Detecting endpoint type...`);if((await j({baseUrl:o,apiKey:c,modelId:u})).ok)r.stop(`Detected OpenAI-compatible endpoint.`),d=`openai`,t=!0;else if((await M({baseUrl:o,apiKey:c,modelId:u})).ok)r.stop(`Detected Anthropic-compatible endpoint.`),d=`anthropic`,t=!0;else{r.stop(`Could not detect endpoint type.`),await n.note(`This endpoint did not respond to OpenAI or Anthropic style requests.`,`Endpoint detection`);let t=await P(n);({baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}=await I({prompter:n,config:i,secretInputMode:e.secretInputMode,retryChoice:t,current:{baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}}));continue}}if(t)break;let r=n.progress(`Verifying...`),a=d===`anthropic`?await M({baseUrl:o,apiKey:c,modelId:u}):await j({baseUrl:o,apiKey:c,modelId:u});if(a.ok){r.stop(`Verification successful.`);break}a.status===void 0?r.stop(`Verification failed: ${D(a.error)}`):r.stop(`Verification failed: status ${a.status}`);let f=await P(n);({baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}=await I({prompter:n,config:i,secretInputMode:e.secretInputMode,retryChoice:f,current:{baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}})),l===`unknown`&&(d=null)}let f=i.models?.providers??{},p=x(o),m=await n.text({message:`Endpoint ID`,initialValue:p,placeholder:`custom`,validate:e=>{if(!b(e))return`Endpoint ID is required.`}}),h=await n.text({message:`Model alias (optional)`,placeholder:`e.g. local, ollama`,initialValue:``,validate:e=>C({raw:e,cfg:i,modelRef:t(S({requestedId:b(m)||`custom`,baseUrl:o,providers:f}).providerId,u)})}),g=V({config:i,baseUrl:o,modelId:u,compatibility:d??`openai`,apiKey:s,providerId:m,alias:h});return g.providerIdRenamedFrom&&g.providerId&&await n.note(`Endpoint ID "${g.providerIdRenamedFrom}" already exists for a different base URL. Using "${g.providerId}".`,`Endpoint ID`),r.log(`Configured custom provider: ${g.providerId}/${g.modelId}`),g}export{H as a,B as i,V as n,z as o,p as r,v as t};
@@ -1,2 +1,2 @@
1
1
  import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{c as t,cu as n,lu as r,ot as i,pu as a,r as o}from"./model-selection-I1ctjFOB.js";import{o as s}from"./types.secrets-C-5U96pc.js";import{n as c}from"./fetch-timeout-u8g99Ax0.js";import{t as l}from"./context-window-guard-7crlatf9.js";import{r as u}from"./auth-choice.apply-helpers-CNLYnRxx.js";import{u as d}from"./openai-codex-model-default-DtIeKJm0.js";import{r as f}from"./model-picker-BaeW3tiV.js";var p=e({CustomApiError:()=>v,applyCustomApiConfig:()=>V,parseNonInteractiveCustomApiFlags:()=>B,promptCustomApiConfig:()=>H,resolveCustomProviderId:()=>z});const m=l;function h(e){let t=typeof e==`number`&&Number.isFinite(e)?Math.floor(e):0;return t>=16e3?t:l}function g(e){try{let t=new URL(e).hostname.toLowerCase();return t.endsWith(`.services.ai.azure.com`)||t.endsWith(`.openai.azure.com`)}catch{return!1}}function _(e,t){let n=e.endsWith(`/`)?e.slice(0,-1):e;return n.includes(`/openai/deployments/`)?n:`${n}/openai/deployments/${t}`}var v=class extends Error{constructor(e,t){super(t),this.name=`CustomApiError`,this.code=e}};const y=[{value:`openai`,label:`OpenAI-compatible`,hint:`Uses /chat/completions`},{value:`anthropic`,label:`Anthropic-compatible`,hint:`Uses /messages`},{value:`unknown`,label:`Unknown (detect automatically)`,hint:`Probes OpenAI then Anthropic endpoints`}];function b(e){let t=e.trim().toLowerCase();return t?t.replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``):``}function x(e){try{let t=new URL(e);return b(`custom-${t.hostname.replace(/[^a-z0-9]+/gi,`-`).toLowerCase()}${t.port?`-${t.port}`:``}`)||`custom`}catch{return`custom`}}function S(e){let t=b(e.requestedId)||`custom`,n=e.providers[t];if(!n?.baseUrl||n.baseUrl===e.baseUrl)return{providerId:t,renamed:!1};let r=2,i=`${t}-${r}`;for(;e.providers[i];)r+=1,i=`${t}-${r}`;return{providerId:i,renamed:!0}}function C(e){let n=e.raw.trim();if(!n)return;let r;try{r=d(n)}catch(e){return e instanceof Error?e.message:`Alias is invalid.`}let i=o({cfg:e.cfg,defaultProvider:a}),s=r.toLowerCase(),c=i.byAlias.get(s);if(!c)return;let l=t(c.ref.provider,c.ref.model);if(l!==e.modelRef)return`Alias ${r} already points to ${l}.`}function w(e){let t={};return e&&(t[`api-key`]=e),t}function T(e){let t={};return e&&(t.Authorization=`Bearer ${e}`),t}function E(e){let t={"anthropic-version":`2023-06-01`};return e&&(t[`x-api-key`]=e),t}function D(e){if(!e)return`unknown error`;if(e instanceof Error)return e.message;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return`unknown error`}}function O(e){return s(e)?e:n(e)}function k(e){let t=g(e.baseUrl)?_(e.baseUrl,e.modelId):e.baseUrl,n=new URL(e.endpointPath,t.endsWith(`/`)?t:`${t}/`);return g(e.baseUrl)&&n.searchParams.set(`api-version`,`2024-10-21`),n.href}async function A(e){try{let t=await c(e.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`,...e.headers},body:JSON.stringify(e.body)},3e4);return{ok:t.ok,status:t.status}}catch(e){return{ok:!1,error:e}}}async function j(e){let t=k({baseUrl:e.baseUrl,modelId:e.modelId,endpointPath:`chat/completions`}),n=g(e.baseUrl),r=n?w(e.apiKey):T(e.apiKey);return n?await A({endpoint:t,headers:r,body:{messages:[{role:`user`,content:`Hi`}],max_completion_tokens:5,stream:!1}}):await A({endpoint:t,headers:r,body:{model:e.modelId,messages:[{role:`user`,content:`Hi`}],max_tokens:1,stream:!1}})}async function M(e){return await A({endpoint:k({baseUrl:/\/v1\/?$/.test(e.baseUrl.trim())?e.baseUrl.trim():e.baseUrl.trim().replace(/\/?$/,``)+`/v1`,modelId:e.modelId,endpointPath:`messages`}),headers:E(e.apiKey),body:{model:e.modelId,max_tokens:1,messages:[{role:`user`,content:`Hi`}],stream:!1}})}async function N(e){let t=(await e.prompter.text({message:`API Base URL`,initialValue:e.initialBaseUrl??i,placeholder:`https://api.example.com/v1`,validate:e=>{try{new URL(e);return}catch{return`Please enter a valid URL (e.g. http://...)`}}})).trim(),n=x(t)||`custom`,a,o=await u({config:e.config,provider:n,envLabel:`CUSTOM_API_KEY`,promptMessage:`API Key (leave blank if not required)`,normalize:r,validate:()=>void 0,prompter:e.prompter,secretInputMode:e.secretInputMode,setCredential:async e=>{a=e}});return{baseUrl:t,apiKey:O(a),resolvedApiKey:r(o)}}async function P(e){return await e.select({message:`What would you like to change?`,options:[{value:`baseUrl`,label:`Change base URL`},{value:`model`,label:`Change model`},{value:`both`,label:`Change base URL and model`}]})}async function F(e){return(await e.text({message:`Model ID`,placeholder:`e.g. llama3, claude-3-7-sonnet`,validate:e=>e.trim()?void 0:`Model ID is required`})).trim()}async function I(e){let{baseUrl:t,apiKey:n,resolvedApiKey:r,modelId:i}=e.current;if(e.retryChoice===`baseUrl`||e.retryChoice===`both`){let i=await N({prompter:e.prompter,config:e.config,secretInputMode:e.secretInputMode,initialBaseUrl:t});t=i.baseUrl,n=i.apiKey,r=i.resolvedApiKey}return(e.retryChoice===`model`||e.retryChoice===`both`)&&(i=await F(e.prompter)),{baseUrl:t,apiKey:n,resolvedApiKey:r,modelId:i}}function L(e){return e===`anthropic`?`anthropic-messages`:`openai-completions`}function R(e){let t=e?.trim().toLowerCase();if(!t)return`openai`;if(t!==`openai`&&t!==`anthropic`)throw new v(`invalid_compatibility`,`Invalid --custom-compatibility (use "openai" or "anthropic").`);return t}function z(e){let t=e.config.models?.providers??{},n=e.baseUrl.trim(),r=e.providerId?.trim();if(r&&!b(r))throw new v(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);let i=r||x(n),a=S({requestedId:i,baseUrl:n,providers:t});return{providerId:a.providerId,...a.renamed?{providerIdRenamedFrom:b(i)||`custom`}:{}}}function B(e){let t=e.baseUrl?.trim()??``,n=e.modelId?.trim()??``;if(!t||!n)throw new v(`missing_required`,[`Auth choice "custom-api-key" requires a base URL and model ID.`,`Use --custom-base-url and --custom-model-id.`].join(`
2
- `));let r=e.apiKey?.trim(),i=e.providerId?.trim();if(i&&!b(i))throw new v(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);return{baseUrl:t,modelId:n,compatibility:R(e.compatibility),...r?{apiKey:r}:{},...i?{providerId:i}:{}}}function V(e){let n=e.baseUrl.trim();try{new URL(n)}catch{throw new v(`invalid_base_url`,`Custom provider base URL must be a valid URL.`)}if(e.compatibility!==`openai`&&e.compatibility!==`anthropic`)throw new v(`invalid_compatibility`,`Custom provider compatibility must be "openai" or "anthropic".`);let r=e.modelId.trim();if(!r)throw new v(`invalid_model_id`,`Custom provider model ID is required.`);let i=g(n)?_(n,r):n,a=z({config:e.config,baseUrl:i,providerId:e.providerId}),o=a.providerId,s=e.config.models?.providers??{},c=t(o,r),l=e.alias?.trim()??``,u=C({raw:l,cfg:e.config,modelRef:c});if(u)throw new v(`invalid_alias`,u);let d=s[o],p=Array.isArray(d?.models)?d.models:[],y=p.some(e=>e.id===r),b={id:r,name:`${r} (Custom Provider)`,contextWindow:m,maxTokens:4096,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!1},x=y?p.map(e=>e.id===r?{...e,contextWindow:h(e.contextWindow)}:e):[...p,b],{apiKey:S,...w}=d??{},T=O(e.apiKey)??O(S),E={...e.config,models:{...e.config.models,mode:e.config.models?.mode??`merge`,providers:{...s,[o]:{...w,baseUrl:i,api:L(e.compatibility),...T?{apiKey:T}:{},models:x.length>0?x:[b]}}}};return E=f(E,c),l&&(E={...E,agents:{...E.agents,defaults:{...E.agents?.defaults,models:{...E.agents?.defaults?.models,[c]:{...E.agents?.defaults?.models?.[c],alias:l}}}}}),{config:E,providerId:o,modelId:r,...a.providerIdRenamedFrom?{providerIdRenamedFrom:a.providerIdRenamedFrom}:{}}}async function H(e){let{prompter:n,runtime:r,config:i}=e,a=await N({prompter:n,config:i,secretInputMode:e.secretInputMode}),o=a.baseUrl,s=a.apiKey,c=a.resolvedApiKey,l=await n.select({message:`Endpoint compatibility`,options:y.map(e=>({value:e.value,label:e.label,hint:e.hint}))}),u=await F(n),d=l===`unknown`?null:l;for(;;){let t=!1;if(!d){let r=n.progress(`Detecting endpoint type...`);if((await j({baseUrl:o,apiKey:c,modelId:u})).ok)r.stop(`Detected OpenAI-compatible endpoint.`),d=`openai`,t=!0;else if((await M({baseUrl:o,apiKey:c,modelId:u})).ok)r.stop(`Detected Anthropic-compatible endpoint.`),d=`anthropic`,t=!0;else{r.stop(`Could not detect endpoint type.`),await n.note(`This endpoint did not respond to OpenAI or Anthropic style requests.`,`Endpoint detection`);let t=await P(n);({baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}=await I({prompter:n,config:i,secretInputMode:e.secretInputMode,retryChoice:t,current:{baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}}));continue}}if(t)break;let r=n.progress(`Verifying...`),a=d===`anthropic`?await M({baseUrl:o,apiKey:c,modelId:u}):await j({baseUrl:o,apiKey:c,modelId:u});if(a.ok){r.stop(`Verification successful.`);break}a.status===void 0?r.stop(`Verification failed: ${D(a.error)}`):r.stop(`Verification failed: status ${a.status}`);let f=await P(n);({baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}=await I({prompter:n,config:i,secretInputMode:e.secretInputMode,retryChoice:f,current:{baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}})),l===`unknown`&&(d=null)}let f=i.models?.providers??{},p=x(o),m=await n.text({message:`Endpoint ID`,initialValue:p,placeholder:`custom`,validate:e=>{if(!b(e))return`Endpoint ID is required.`}}),h=await n.text({message:`Model alias (optional)`,placeholder:`e.g. local, ollama`,initialValue:``,validate:e=>C({raw:e,cfg:i,modelRef:t(S({requestedId:b(m)||`custom`,baseUrl:o,providers:f}).providerId,u)})}),g=V({config:i,baseUrl:o,modelId:u,compatibility:d??`openai`,apiKey:s,providerId:m,alias:h});return g.providerIdRenamedFrom&&g.providerId&&await n.note(`Endpoint ID "${g.providerIdRenamedFrom}" already exists for a different base URL. Using "${g.providerId}".`,`Endpoint ID`),r.log(`Configured custom provider: ${g.providerId}/${g.modelId}`),g}export{H as a,B as i,V as n,z as o,p as r,v as t};
2
+ `));let r=e.apiKey?.trim(),i=e.providerId?.trim();if(i&&!b(i))throw new v(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);return{baseUrl:t,modelId:n,compatibility:R(e.compatibility),...r?{apiKey:r}:{},...i?{providerId:i}:{}}}function V(e){let n=e.baseUrl.trim();try{new URL(n)}catch{throw new v(`invalid_base_url`,`Custom provider base URL must be a valid URL.`)}if(e.compatibility!==`openai`&&e.compatibility!==`anthropic`)throw new v(`invalid_compatibility`,`Custom provider compatibility must be "openai" or "anthropic".`);let r=e.modelId.trim();if(!r)throw new v(`invalid_model_id`,`Custom provider model ID is required.`);let i=g(n)?_(n,r):n,a=z({config:e.config,baseUrl:i,providerId:e.providerId}),o=a.providerId,s=e.config.models?.providers??{},c=t(o,r),l=e.alias?.trim()??``,u=C({raw:l,cfg:e.config,modelRef:c});if(u)throw new v(`invalid_alias`,u);let d=s[o],p=Array.isArray(d?.models)?d.models:[],y=p.some(e=>e.id===r),b={id:r,name:`${r} (Custom Provider)`,contextWindow:m,maxTokens:4096,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!1},x=y?p.map(e=>e.id===r?{...e,contextWindow:h(e.contextWindow)}:e):[...p,b],{apiKey:S,...w}=d??{},T=O(e.apiKey)??O(S),E={...e.config,models:{...e.config.models,mode:e.config.models?.mode??`merge`,providers:{...s,[o]:{...w,baseUrl:i,api:L(e.compatibility),...T?{apiKey:T}:{},models:x.length>0?x:[b]}}}};return E=f(E,c),l&&(E={...E,agents:{...E.agents,defaults:{...E.agents?.defaults,models:{...E.agents?.defaults?.models,[c]:{...E.agents?.defaults?.models?.[c],alias:l}}}}}),{config:E,providerId:o,modelId:r,...a.providerIdRenamedFrom?{providerIdRenamedFrom:a.providerIdRenamedFrom}:{}}}async function H(e){let{prompter:n,runtime:r,config:i}=e,a=await N({prompter:n,config:i,secretInputMode:e.secretInputMode}),o=a.baseUrl,s=a.apiKey,c=a.resolvedApiKey,l=await n.select({message:`Endpoint compatibility`,options:y.map(e=>({value:e.value,label:e.label,hint:e.hint}))}),u=await F(n),d=l===`unknown`?null:l;for(;;){let t=!1;if(!d){let r=n.progress(`Detecting endpoint type...`);if((await j({baseUrl:o,apiKey:c,modelId:u})).ok)r.stop(`Detected OpenAI-compatible endpoint.`),d=`openai`,t=!0;else if((await M({baseUrl:o,apiKey:c,modelId:u})).ok)r.stop(`Detected Anthropic-compatible endpoint.`),d=`anthropic`,t=!0;else{r.stop(`Could not detect endpoint type.`),await n.note(`This endpoint did not respond to OpenAI or Anthropic style requests.`,`Endpoint detection`);let t=await P(n);({baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}=await I({prompter:n,config:i,secretInputMode:e.secretInputMode,retryChoice:t,current:{baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}}));continue}}if(t)break;let r=n.progress(`Verifying...`),a=d===`anthropic`?await M({baseUrl:o,apiKey:c,modelId:u}):await j({baseUrl:o,apiKey:c,modelId:u});if(a.ok){r.stop(`Verification successful.`);break}a.status===void 0?r.stop(`Verification failed: ${D(a.error)}`):r.stop(`Verification failed: status ${a.status}`);let f=await P(n);({baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}=await I({prompter:n,config:i,secretInputMode:e.secretInputMode,retryChoice:f,current:{baseUrl:o,apiKey:s,resolvedApiKey:c,modelId:u}})),l===`unknown`&&(d=null)}let f=i.models?.providers??{},p=x(o),m=await n.text({message:`Endpoint ID`,initialValue:p,placeholder:`custom`,validate:e=>{if(!b(e))return`Endpoint ID is required.`}}),h=await n.text({message:`Model alias (optional)`,placeholder:`e.g. local, ollama`,initialValue:``,validate:e=>C({raw:e,cfg:i,modelRef:t(S({requestedId:b(m)||`custom`,baseUrl:o,providers:f}).providerId,u)})}),g=V({config:i,baseUrl:o,modelId:u,compatibility:d??`openai`,apiKey:s,providerId:m,alias:h});return g.providerIdRenamedFrom&&g.providerId&&await n.note(`Endpoint ID "${g.providerIdRenamedFrom}" already exists for a different base URL. Using "${g.providerId}".`,`Endpoint ID`),r.log(`Configured custom provider: ${g.providerId}/${g.modelId}`),g}export{H as a,B as i,V as n,z as o,p as r,v as t};
@@ -2,4 +2,4 @@ import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{t}from"./paths-B4IRk3w
2
2
  `):`No key settings detected.`}function P(){return E.randomBytes(24).toString(`hex`)}function F(e){if(typeof e!=`string`)return``;let t=e.trim();return t===`undefined`||t===`null`?``:t}function I(e){if(typeof e!=`string`)return`Required`;let t=e.trim();if(!t)return`Required`;if(t===`undefined`||t===`null`)return`Cannot be the literal string "undefined" or "null"`}function L(e){let t=[`▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄`,`██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██`,`██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██`,`██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██`,`▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀`,` 🦞 OPENCLAW 🦞 `,` `].join(`
3
3
  `);e.log(t)}function R(e,t){let n=process.env.GIT_COMMIT?.trim()||process.env.GIT_SHA?.trim()||void 0;return{...e,wizard:{...e.wizard,lastRunAt:new Date().toISOString(),lastRunVersion:c,lastRunCommit:n,lastRunCommand:t.command,lastRunMode:t.mode}}}async function z(){let e=process.platform,t=!!(process.env.DISPLAY||process.env.WAYLAND_DISPLAY);if((process.env.SSH_CLIENT||process.env.SSH_TTY||process.env.SSH_CONNECTION)&&!t&&e!==`win32`)return{argv:null,reason:`ssh-no-display`};if(e===`win32`)return{argv:[`cmd`,`/c`,`start`,``],command:`cmd`,quoteUrl:!0};if(e===`darwin`)return await J(`open`)?{argv:[`open`],command:`open`}:{argv:null,reason:`missing-open`};if(e===`linux`){let e=await x();if(!t&&!e)return{argv:null,reason:`no-display`};if(e){if(await J(`wslview`))return{argv:[`wslview`],command:`wslview`};if(!t)return{argv:null,reason:`wsl-no-wslview`}}return await J(`xdg-open`)?{argv:[`xdg-open`],command:`xdg-open`}:{argv:null,reason:`missing-xdg-open`}}return{argv:null,reason:`unsupported-platform`}}async function B(){let e=await z();return e.argv?{ok:!0,command:e.command}:{ok:!1,reason:e.reason}}function V(e){let t=A(e.basePath),n=t?`${t}/`:`/`,r=`http://localhost:${e.port}${n}`,i=e.token?`${r}#token=${encodeURIComponent(e.token)}`:void 0,a=H();return[`No GUI detected. Open from your computer:`,`ssh -N -L ${e.port}:127.0.0.1:${e.port} ${a}`,`Then open:`,r,i,`Docs:`,`https://docs.openclaw.ai/gateway/remote`,`https://docs.openclaw.ai/web/control-ui`].filter(Boolean).join(`
4
4
  `)}function H(){return`${process.env.USER||process.env.LOGNAME||`user`}@${process.env.SSH_CONNECTION?.trim().split(/\s+/)?.[2]??`<host>`}`}async function U(e){if(Y())return!1;let t=await z();if(!t.argv)return!1;let n=t.quoteUrl===!0,r=[...t.argv];n?(r.at(-1)===``&&(r[r.length-1]=`""`),r.push(`"${e}"`)):r.push(e);try{return await v(r,{timeoutMs:5e3,windowsVerbatimArguments:n}),!0}catch{return!1}}async function W(e,t,n){let i=await h({dir:e,ensureBootstrapFiles:!n?.skipBootstrap});t.log(`Workspace OK: ${r(i.dir)}`);let a=y(n?.agentId);await T.mkdir(a,{recursive:!0}),t.log(`Sessions OK: ${r(a)}`)}function G(){return[{value:`npm`,label:`npm`},{value:`pnpm`,label:`pnpm`},{value:`bun`,label:`bun`}]}async function K(e,t){if(e){try{await T.access(e)}catch{return}try{await v([`trash`,e],{timeoutMs:5e3}),t.log(`Moved to Trash: ${r(e)}`)}catch{t.log(`Failed to move to Trash (manual delete): ${r(e)}`)}}}async function q(e,n,r){await K(t,r),e!==`config`&&(await K(C.join(i,`credentials`),r),await K(y(),r),e===`full`&&await K(n,r))}async function J(e){if(!e?.trim()||!p(e))return!1;let t=e.startsWith(`~`)?o(e):e;if(C.isAbsolute(t)||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`))try{return await T.access(t),!0}catch{return!1}let n=process.platform===`win32`?[`where`,e]:[`/usr/bin/env`,`which`,e];try{let e=await v(n,{timeoutMs:2e3});return e.code===0&&e.stdout.trim().length>0}catch{return!1}}function Y(){return!!process.env.VITEST}async function X(e){let t=e.url.trim(),n=e.timeoutMs??1500;try{return await b({url:t,token:e.token,password:e.password,method:`health`,timeoutMs:n,clientName:d.PROBE,mode:m.PROBE}),{ok:!0}}catch(e){return{ok:!1,detail:ie(e)}}}async function Z(e){let t=e.deadlineMs??15e3,r=e.pollMs??400,i=e.probeTimeoutMs??1500,a=Date.now(),o;for(;Date.now()-a<t;){let t=await X({url:e.url,token:e.token,password:e.password,timeoutMs:i});if(t.ok)return t;o=t.detail,await n(r)}return{ok:!1,detail:o}}function ie(e){let t=`unknown error`;e instanceof Error?t=e.message||t:typeof e==`string`?t=e||t:e!==void 0&&(t=w(e,{depth:2}));let n=t.split(`
5
- `).map(e=>e.trim()).find(Boolean)??t;return n.length>120?`${n.slice(0,119)}…`:n}const Q=_;function $(e){let t=e.port,n=e.bind??`loopback`,r=e.customBindHost?.trim(),i=s(),a=n===`custom`&&r&&te(r)?r:n===`tailnet`&&i?i??`127.0.0.1`:n===`lan`?ee()??`127.0.0.1`:`127.0.0.1`,o=A(e.basePath),c=o?`${o}/`:`/`,l=o||``;return{httpUrl:`http://${a}:${t}${c}`,wsUrl:`ws://${a}:${t}${l}`}}export{A as C,j as S,G as _,W as a,Z as b,q as c,re as d,U as f,$ as g,P as h,B as i,K as l,X as m,R as n,V as o,L as p,J as r,M as s,Q as t,F as u,N as v,ne as w,k as x,I as y};
5
+ `).map(e=>e.trim()).find(Boolean)??t;return n.length>120?`${n.slice(0,119)}…`:n}const Q=_;function $(e){let t=e.port,n=e.bind??`loopback`,r=e.customBindHost?.trim(),i=s(),a=n===`custom`&&r&&te(r)?r:n===`tailnet`&&i?i??`127.0.0.1`:n===`lan`?ee()??`127.0.0.1`:`127.0.0.1`,o=A(e.basePath),c=o?`${o}/`:`/`,l=o||``;return{httpUrl:`http://${a}:${t}${c}`,wsUrl:`ws://${a}:${t}${l}`}}export{A as C,j as S,G as _,W as a,Z as b,q as c,re as d,U as f,$ as g,P as h,B as i,K as l,X as m,R as n,V as o,L as p,J as r,M as s,Q as t,F as u,N as v,ne as w,k as x,I as y};