@qqbrowser/openclaw-qbot 0.10.1 → 0.10.2

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 (214) hide show
  1. package/dist/{agents-Cd1yL8fG.js → agents-CCGNI0th.js} +1 -1
  2. package/dist/{agents.config-CaRMmWS8.js → agents.config-B9_IT_un.js} +1 -1
  3. package/dist/{agents.config-DSCcdYtv.js → agents.config-D8Q8p7re.js} +1 -1
  4. package/dist/{auth-choice-MqcWuVyu.js → auth-choice-DacG9sC7.js} +1 -1
  5. package/dist/{auth-choice-BmI4sIGs.js → auth-choice-EAV1bi1K.js} +1 -1
  6. package/dist/{banner-CAtilyXr.js → banner-DiQjNe9B.js} +1 -1
  7. package/dist/build-info.json +3 -3
  8. package/dist/bundled/boot-md/handler.js +1 -1
  9. package/dist/bundled/session-memory/handler.js +1 -1
  10. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  11. package/dist/{channel-options-CCqtIYCc.js → channel-options-DcI5T_Su.js} +1 -1
  12. package/dist/{channel-options-CKoyPq8p.js → channel-options-llKYy0-2.js} +1 -1
  13. package/dist/{channel-web-CwUfYqjg.js → channel-web-Qr8ST6tz.js} +1 -1
  14. package/dist/{channel-web-CCSMlUux.js → channel-web-TKrgB4oQ.js} +1 -1
  15. package/dist/{channels-cli-BfgVv5jH.js → channels-cli-BtyzpSQo.js} +1 -1
  16. package/dist/{channels-cli-BvGXgERj.js → channels-cli-CrdwqyiA.js} +1 -1
  17. package/dist/{cli-Bt--1dhL.js → cli-BDzG5MP5.js} +1 -1
  18. package/dist/{cli-CBg8KhmQ.js → cli-BY5POVX1.js} +1 -1
  19. package/dist/{command-registry-D_jtBegA.js → command-registry-DtMCIKRu.js} +1 -1
  20. package/dist/{compact-CYbPi7_-.js → compact-uyQDx8pN.js} +36 -36
  21. package/dist/{compact.runtime-BQu-8DFN.js → compact.runtime-BvWn8-VF.js} +1 -1
  22. package/dist/{compact.runtime-D-fOpaU3.js → compact.runtime-CbCNReBm.js} +1 -1
  23. package/dist/{compact.runtime-owWgKVDf.js → compact.runtime-DcRVnY_G.js} +1 -1
  24. package/dist/{compact.runtime-CrzmR0tV.js → compact.runtime-dgJTRf2V.js} +1 -1
  25. package/dist/{completion-cli-Bw_hBrlA.js → completion-cli-ByNU0Lbo.js} +1 -1
  26. package/dist/{completion-cli-BVbT_aR2.js → completion-cli-DHH7Zr2u.js} +1 -1
  27. package/dist/{config-cli-CwW76_j_.js → config-cli-BeVM5uz1.js} +1 -1
  28. package/dist/{config-cli-F-lkPjjz.js → config-cli-CcE1aKR3.js} +1 -1
  29. package/dist/{configure-DFlnM_zh.js → configure-CF42Va3r.js} +1 -1
  30. package/dist/{configure--c4tTVPz.js → configure-CYw7mK89.js} +1 -1
  31. package/dist/{deps-send-whatsapp.runtime-CqISN5vF.js → deps-send-whatsapp.runtime-7SqhJmWZ.js} +1 -1
  32. package/dist/{deps-send-whatsapp.runtime-C1zG74Si.js → deps-send-whatsapp.runtime-Bocaadqa.js} +1 -1
  33. package/dist/{deps-send-whatsapp.runtime-B5GMQIFv.js → deps-send-whatsapp.runtime-CjA6T7V6.js} +1 -1
  34. package/dist/{deps-send-whatsapp.runtime-CJnSJVnN.js → deps-send-whatsapp.runtime-DTyzQeR_.js} +1 -1
  35. package/dist/{doctor-completion-DI7mGC3D.js → doctor-completion-C15UB3EM.js} +1 -1
  36. package/dist/{doctor-completion-C9CPhCor.js → doctor-completion-KLuf1f33.js} +1 -1
  37. package/dist/entry.js +1 -1
  38. package/dist/extensionAPI.js +1 -1
  39. package/dist/{gateway-cli-BMmU2dsG.js → gateway-cli-CHyybU4X.js} +2 -2
  40. package/dist/{gateway-cli-Kp-caOwI.js → gateway-cli-DV3M2tJP.js} +2 -2
  41. package/dist/{health-B_-ZE5FK.js → health-2MbtCw6U.js} +1 -1
  42. package/dist/{health-CIZFVJEG.js → health-Dmtcw9K8.js} +1 -1
  43. package/dist/{hooks-cli-BoxAnC-E.js → hooks-cli-BaoD0-6l.js} +1 -1
  44. package/dist/{hooks-cli-CnCOjVv0.js → hooks-cli-DWCe4aHR.js} +1 -1
  45. package/dist/index.js +2 -2
  46. package/dist/llm-slug-generator.js +1 -1
  47. package/dist/{models-BBYqej07.js → models-DKf-4KoV.js} +1 -1
  48. package/dist/{models-cli-CMMhnlHo.js → models-cli-Bc8cIZ0A.js} +1 -1
  49. package/dist/{models-cli-CqbDyDn2.js → models-cli-Ble64nV3.js} +1 -1
  50. package/dist/{npm-resolution-CBlwQq3a.js → npm-resolution-BzXV2s2P.js} +1 -1
  51. package/dist/{npm-resolution--_-0q2ks.js → npm-resolution-CZUqHH_2.js} +1 -1
  52. package/dist/{onboard-DZG0HnuP.js → onboard-B8dVlGVk.js} +2 -2
  53. package/dist/{onboard-DlCEww7K.js → onboard-By9pkNca.js} +2 -2
  54. package/dist/{onboard-channels-BDMtq3ex.js → onboard-channels-C5lcb7dF.js} +1 -1
  55. package/dist/{onboard-channels-BO3AN_eA.js → onboard-channels-DFB6deX0.js} +1 -1
  56. package/dist/{onboarding-m-m__16h.js → onboarding-C7vbkuBI.js} +1 -1
  57. package/dist/{onboarding-CxRTJCBM.js → onboarding-DCldCoVy.js} +1 -1
  58. package/dist/{onboarding.finalize-BJxMhYUa.js → onboarding.finalize-C-b9zSIO.js} +1 -1
  59. package/dist/{onboarding.finalize-UiX3YmbI.js → onboarding.finalize-XCttW8IU.js} +1 -1
  60. package/dist/{pi-embedded-X_Svd4Wi.js → pi-embedded-CoHiJa9Q.js} +8 -8
  61. package/dist/{pi-embedded-6yGEd2xd.js → pi-embedded-DLlQ5e_w.js} +8 -8
  62. package/dist/{plugin-registry-DYwEy5eM.js → plugin-registry-C_HKxFxs.js} +1 -1
  63. package/dist/{plugin-registry-CN2aCPP7.js → plugin-registry-DBgXa8jD.js} +1 -1
  64. package/dist/plugin-sdk/{channel-web-Bg8DNyeb.js → channel-web-CMlv9Yzv.js} +1 -1
  65. package/dist/plugin-sdk/{channel-web-B795Ild9.cjs → channel-web-D1tzaMsH.cjs} +1 -1
  66. package/dist/plugin-sdk/{channel-web-D5zxPW-x.js → channel-web-DowgDxtO.js} +1 -1
  67. package/dist/plugin-sdk/{channel-web-CW42ALB5.cjs → channel-web-VsaRZCG2.cjs} +1 -1
  68. package/dist/plugin-sdk/{compact.runtime-Cr6oI5li.js → compact.runtime-B4M-VPyN.js} +1 -1
  69. package/dist/plugin-sdk/{compact.runtime-BR00C0_i.cjs → compact.runtime-BeWqnWW5.cjs} +1 -1
  70. package/dist/plugin-sdk/{compact.runtime-DOcQzBT5.cjs → compact.runtime-BnF9vU5j.cjs} +1 -1
  71. package/dist/plugin-sdk/{compact.runtime-D-3vVYGF.js → compact.runtime-C5vcsriA.js} +1 -1
  72. package/dist/plugin-sdk/{compact.runtime-BBqQuOlJ.cjs → compact.runtime-CS04yjUP.cjs} +1 -1
  73. package/dist/plugin-sdk/{compact.runtime-CGKItjCQ.js → compact.runtime-CepgZBh6.js} +1 -1
  74. package/dist/plugin-sdk/{compact.runtime-C-sPm0kL.cjs → compact.runtime-CuGn1L3D.cjs} +1 -1
  75. package/dist/plugin-sdk/{compact.runtime-CAiT8DtI.js → compact.runtime-DNocZUm6.js} +1 -1
  76. package/dist/plugin-sdk/{compact.runtime-CmQT69OD.cjs → compact.runtime-DQRsRwKH.cjs} +1 -1
  77. package/dist/plugin-sdk/{compact.runtime-BXuXwnQ_.cjs → compact.runtime-DnWYG9Ij.cjs} +1 -1
  78. package/dist/plugin-sdk/{compact.runtime-BxzvSPrQ.js → compact.runtime-W8dIsxRV.js} +1 -1
  79. package/dist/plugin-sdk/{compact.runtime-B1fslZX1.js → compact.runtime-hS2NXspw.js} +1 -1
  80. package/dist/plugin-sdk/compat.cjs +1 -1
  81. package/dist/plugin-sdk/compat.js +1 -1
  82. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-WXiE5pA7.js → deps-send-whatsapp.runtime-B5Nz8XrQ.js} +1 -1
  83. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-DKoOiTZZ.cjs → deps-send-whatsapp.runtime-B5R8WAYy.cjs} +1 -1
  84. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-DlO-S_iA.js → deps-send-whatsapp.runtime-B6ua6LoP.js} +1 -1
  85. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-BUuj08qp.cjs → deps-send-whatsapp.runtime-BPMIzR5x.cjs} +1 -1
  86. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-iI9qWUzR.cjs → deps-send-whatsapp.runtime-Bpq7VeGO.cjs} +1 -1
  87. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-3kX5dnHC.js → deps-send-whatsapp.runtime-D3YUudyV.js} +1 -1
  88. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-Xn1KqyPS.js → deps-send-whatsapp.runtime-DFxWO5_f.js} +1 -1
  89. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-CE9LgvzJ.cjs → deps-send-whatsapp.runtime-DZ_pLOPK.cjs} +1 -1
  90. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-t0Z0IyDq.cjs → deps-send-whatsapp.runtime-DyoJd0Hw.cjs} +1 -1
  91. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-rOnSc6qE.js → deps-send-whatsapp.runtime-ZkaerhQ1.js} +1 -1
  92. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-QUlRFE48.cjs → deps-send-whatsapp.runtime-_wzNB18A.cjs} +1 -1
  93. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-DKVfDIzU.js → deps-send-whatsapp.runtime-bBd46QxW.js} +1 -1
  94. package/dist/plugin-sdk/{dispatch-DAaOM5c1.cjs → dispatch-B8dzPpi1.cjs} +8 -8
  95. package/dist/plugin-sdk/{dispatch-DYRrW05S.js → dispatch-B9FQyNfe.js} +36 -36
  96. package/dist/plugin-sdk/{dispatch-Dl0eaYcY.cjs → dispatch-BB5AfYlI.cjs} +8 -8
  97. package/dist/plugin-sdk/{dispatch-_tJF5hSh.cjs → dispatch-BIaey_BU.cjs} +8 -8
  98. package/dist/plugin-sdk/{dispatch-B13B2T1k.js → dispatch-BY1FkQOr.js} +8 -8
  99. package/dist/plugin-sdk/{dispatch-cPg1rBWu.cjs → dispatch-Bybxc9Yl.cjs} +8 -8
  100. package/dist/plugin-sdk/{dispatch-BlOkbw2U.js → dispatch-CADw_Fi7.js} +8 -8
  101. package/dist/plugin-sdk/{dispatch-Dap2ZPC9.js → dispatch-CZqPeEcw.js} +8 -8
  102. package/dist/plugin-sdk/{dispatch-BaBcLOry.js → dispatch-DafB1x1O.js} +8 -8
  103. package/dist/plugin-sdk/{dispatch-D2Km7gvG.cjs → dispatch-DcyylSdu.cjs} +8 -8
  104. package/dist/plugin-sdk/index.cjs +1 -1
  105. package/dist/plugin-sdk/index.js +1 -1
  106. package/dist/plugin-sdk/irc.cjs +1 -1
  107. package/dist/plugin-sdk/irc.js +1 -1
  108. package/dist/plugin-sdk/matrix.cjs +1 -1
  109. package/dist/plugin-sdk/matrix.js +1 -1
  110. package/dist/plugin-sdk/msteams.cjs +1 -1
  111. package/dist/plugin-sdk/msteams.js +1 -1
  112. package/dist/plugin-sdk/nextcloud-talk.cjs +1 -1
  113. package/dist/plugin-sdk/nextcloud-talk.js +1 -1
  114. package/dist/plugin-sdk/{reply-JD6VIW5N.cjs → reply-6D8nZUZ1.cjs} +8 -8
  115. package/dist/plugin-sdk/{reply-73PF8kN_.js → reply-gpVkJsEs.js} +8 -8
  116. package/dist/plugin-sdk/{slash-dispatch.runtime-DAgDLU__.js → slash-dispatch.runtime-2hUZv0o4.js} +1 -1
  117. package/dist/plugin-sdk/{slash-dispatch.runtime-BfheQLfD.js → slash-dispatch.runtime-B4sdtKqK.js} +1 -1
  118. package/dist/plugin-sdk/{slash-dispatch.runtime-CmVqJqfV.js → slash-dispatch.runtime-BCAWJ135.js} +1 -1
  119. package/dist/plugin-sdk/{slash-dispatch.runtime-wWa-kKvH.js → slash-dispatch.runtime-BJX-7mTD.js} +1 -1
  120. package/dist/plugin-sdk/{slash-dispatch.runtime-C6cMCwSp.js → slash-dispatch.runtime-BY3aBzxK.js} +1 -1
  121. package/dist/plugin-sdk/{slash-dispatch.runtime-BVXTmhZU.js → slash-dispatch.runtime-CHFbytW1.js} +1 -1
  122. package/dist/plugin-sdk/{slash-dispatch.runtime-BcO6NdxL.cjs → slash-dispatch.runtime-Cf-EuMPD.cjs} +1 -1
  123. package/dist/plugin-sdk/{slash-dispatch.runtime-CYmmyw9o.cjs → slash-dispatch.runtime-CukipBLa.cjs} +1 -1
  124. package/dist/plugin-sdk/{slash-dispatch.runtime-DNI9fZFo.cjs → slash-dispatch.runtime-D7JTU7km.cjs} +1 -1
  125. package/dist/plugin-sdk/{slash-dispatch.runtime-BQWrcjEG.cjs → slash-dispatch.runtime-DZq0olM2.cjs} +1 -1
  126. package/dist/plugin-sdk/{slash-dispatch.runtime-Cp5-cPgM.cjs → slash-dispatch.runtime-ILA0KH-p.cjs} +1 -1
  127. package/dist/plugin-sdk/{slash-dispatch.runtime-CD6AFEn3.cjs → slash-dispatch.runtime-_i2UiDTt.cjs} +1 -1
  128. package/dist/plugin-sdk/{subagent-registry-runtime-BINR9wKz.cjs → subagent-registry-runtime-7wfZ9Ydg.cjs} +1 -1
  129. package/dist/plugin-sdk/{subagent-registry-runtime-q6csFFiS.js → subagent-registry-runtime-B6Go3QMY.js} +1 -1
  130. package/dist/plugin-sdk/{subagent-registry-runtime-CPYQLLoh.cjs → subagent-registry-runtime-Bf71VzVF.cjs} +1 -1
  131. package/dist/plugin-sdk/{subagent-registry-runtime-DCd8DMgz.js → subagent-registry-runtime-CKlyWpvM.js} +1 -1
  132. package/dist/plugin-sdk/{subagent-registry-runtime-BfT45xXa.cjs → subagent-registry-runtime-CcyvhbJH.cjs} +1 -1
  133. package/dist/plugin-sdk/{subagent-registry-runtime-DYhr9YcP.js → subagent-registry-runtime-D4y3Fxlu.js} +1 -1
  134. package/dist/plugin-sdk/{subagent-registry-runtime-BBwsJL9B.cjs → subagent-registry-runtime-DFCUhuvT.cjs} +1 -1
  135. package/dist/plugin-sdk/{subagent-registry-runtime-CjnSOShL.js → subagent-registry-runtime-DWZUy1eI.js} +1 -1
  136. package/dist/plugin-sdk/{subagent-registry-runtime-B9uDb_ij.js → subagent-registry-runtime-DkCs3cQj.js} +1 -1
  137. package/dist/plugin-sdk/{subagent-registry-runtime-DB8YDuGj.js → subagent-registry-runtime-RrhCNI-u.js} +1 -1
  138. package/dist/plugin-sdk/{subagent-registry-runtime-iiOzLeYb.cjs → subagent-registry-runtime-S2yCcuWA.cjs} +1 -1
  139. package/dist/plugin-sdk/{subagent-registry-runtime-ClkQBnJu.cjs → subagent-registry-runtime-zTYi4rJR.cjs} +1 -1
  140. package/dist/plugin-sdk/{web-Bh78uOi8.cjs → web-C-_Bja5u.cjs} +1 -1
  141. package/dist/plugin-sdk/{web-C4ezqWIt.js → web-C7h16O4t.js} +1 -1
  142. package/dist/plugin-sdk/{web-B7d3p3kx.cjs → web-Cf2Ivjcn.cjs} +1 -1
  143. package/dist/plugin-sdk/{web-DFDao2So.cjs → web-CfvlhITy.cjs} +1 -1
  144. package/dist/plugin-sdk/{web-JciOW43P.js → web-DzgvdKmn.js} +1 -1
  145. package/dist/plugin-sdk/{web-Bg2LIMdb.cjs → web-RmaRbUK1.cjs} +1 -1
  146. package/dist/plugin-sdk/{web-SwpoHf2A.js → web-bHdImk0G.js} +1 -1
  147. package/dist/plugin-sdk/{web-DjbeDvyv.js → web-bT52Rp59.js} +1 -1
  148. package/dist/plugin-sdk/{web-vSFigMHz.cjs → web-pFlzmHcu.cjs} +1 -1
  149. package/dist/plugin-sdk/{web-BEuW8Yqw.js → web-rFQBs9b0.js} +1 -1
  150. package/dist/plugin-sdk/{web--8MBOleK.js → web-uQqWClDT.js} +1 -1
  151. package/dist/plugin-sdk/{web-BPQv-4Qv.cjs → web-wnw_PMil.cjs} +1 -1
  152. package/dist/plugin-sdk/whatsapp.cjs +1 -1
  153. package/dist/plugin-sdk/whatsapp.js +1 -1
  154. package/dist/{plugins-cli-PVHBZeb8.js → plugins-cli-BjLj52hA.js} +1 -1
  155. package/dist/{plugins-cli-CnXgwZzI.js → plugins-cli-CwQOOOym.js} +1 -1
  156. package/dist/ports-BDZyt9rk.js +2 -0
  157. package/dist/ports-DmJX-iq9.js +2 -0
  158. package/dist/{program-D53eGuSf.js → program-RvezCMDs.js} +2 -2
  159. package/dist/{program-context-n-ovYq69.js → program-context-C4vPkfWW.js} +1 -1
  160. package/dist/{prompt-select-styled-DolCW-_j.js → prompt-select-styled-C-zw_5_b.js} +1 -1
  161. package/dist/{prompt-select-styled-DZnefcrY.js → prompt-select-styled-CoP6cSMX.js} +1 -1
  162. package/dist/{provider-auth-helpers-BLm2bdp5.js → provider-auth-helpers-DeCLF5oV.js} +1 -1
  163. package/dist/{provider-auth-helpers-DPz0vN_c.js → provider-auth-helpers-Rv3hdZ7j.js} +1 -1
  164. package/dist/{push-apns-BBv62ncV.js → push-apns-BfTKAzRZ.js} +1 -1
  165. package/dist/{push-apns-DIV5dBPP.js → push-apns-CeY33Rxc.js} +1 -1
  166. package/dist/{register.agent-DQdoMfmw.js → register.agent-CANRVL5k.js} +1 -1
  167. package/dist/{register.agent-DHOTtB8X.js → register.agent-He4UYNpV.js} +1 -1
  168. package/dist/{register.configure-C2N82brC.js → register.configure-CqsxTDtC.js} +1 -1
  169. package/dist/{register.configure-C6zjzaEo.js → register.configure-CwuLuKsv.js} +1 -1
  170. package/dist/{register.maintenance-CStaPxaB.js → register.maintenance-B5cnDjLy.js} +1 -1
  171. package/dist/{register.maintenance-aKBTd9Zp.js → register.maintenance-CHJQh81L.js} +1 -1
  172. package/dist/{register.message-DHDcOA8X.js → register.message-CEcXemHd.js} +1 -1
  173. package/dist/{register.message-Dh72QHKA.js → register.message-DoA6MALf.js} +1 -1
  174. package/dist/{register.onboard-DB9FWAKT.js → register.onboard-B01N1AYH.js} +1 -1
  175. package/dist/{register.onboard-Bu9gpFlA.js → register.onboard-B5iQpfVG.js} +1 -1
  176. package/dist/{register.setup-D76IRs4s.js → register.setup-BTKZzyRh.js} +1 -1
  177. package/dist/{register.setup-CeG2ETmr.js → register.setup-CPGByOtO.js} +1 -1
  178. package/dist/{register.status-health-sessions-mPGKFjIz.js → register.status-health-sessions-CPmSNp3F.js} +1 -1
  179. package/dist/{register.status-health-sessions-Dtpd1P2M.js → register.status-health-sessions-hrQLxH-w.js} +1 -1
  180. package/dist/{register.subclis-Drp2dGBe.js → register.subclis-CqVDIyhT.js} +1 -1
  181. package/dist/{reply-DwfVhea1.js → reply-mWIMy_ju.js} +8 -8
  182. package/dist/{run-main-CjwjyWA6.js → run-main-B2f6FBb0.js} +1 -1
  183. package/dist/{server-node-events-CL0pWoMa.js → server-node-events-BtKnElP0.js} +1 -1
  184. package/dist/{server-node-events-ChPQ984b.js → server-node-events-DnyBXZtB.js} +1 -1
  185. package/dist/{slash-dispatch.runtime-jR7ZpRLo.js → slash-dispatch.runtime-B8S9VVjy.js} +1 -1
  186. package/dist/{slash-dispatch.runtime-CHDiNcch.js → slash-dispatch.runtime-CS58xiJF.js} +1 -1
  187. package/dist/{slash-dispatch.runtime-DgsOlRbg.js → slash-dispatch.runtime-CZrxUnBW.js} +1 -1
  188. package/dist/{slash-dispatch.runtime-Bh87LG5X.js → slash-dispatch.runtime-Cq_OU6GL.js} +1 -1
  189. package/dist/{status-o3Gfr-6l.js → status-C3OhTrWE.js} +1 -1
  190. package/dist/{status-BSHWBrg0.js → status-tL-XCvJC.js} +1 -1
  191. package/dist/{subagent-registry-runtime-B8nEWxYm.js → subagent-registry-runtime-BvPAovsV.js} +1 -1
  192. package/dist/{subagent-registry-runtime-D5PhzS7u.js → subagent-registry-runtime-ClREKCLG.js} +1 -1
  193. package/dist/{subagent-registry-runtime-C6xoTyr_.js → subagent-registry-runtime-D2cjV86K.js} +1 -1
  194. package/dist/{subagent-registry-runtime-DU6-3b5M.js → subagent-registry-runtime-dcrGDOTV.js} +1 -1
  195. package/dist/{update-cli-DU5tRH3c.js → update-cli-CZsuMrHE.js} +1 -1
  196. package/dist/{update-cli-CL_cUjuq.js → update-cli-DAPHNGDM.js} +1 -1
  197. package/dist/{update-runner-DG-1TYYc.js → update-runner-DZkN4otc.js} +1 -1
  198. package/dist/{update-runner-DABdlxfN.js → update-runner-DhaHCCx3.js} +1 -1
  199. package/dist/{web-C0WkwHal.js → web-BPloShgg.js} +1 -1
  200. package/dist/{web-u71NbOpT.js → web-BbOH61Lx.js} +1 -1
  201. package/dist/{web-DPQjx48C.js → web-CMSYMAHG.js} +1 -1
  202. package/dist/{web-Dfi2WjvN.js → web-WBvnAfBv.js} +1 -1
  203. package/extensions/qqbrowser-skill-control/index.js +1 -1
  204. package/node_modules/@google/genai/dist/index.cjs +8 -8
  205. package/node_modules/@google/genai/dist/index.mjs +8 -8
  206. package/node_modules/@google/genai/dist/node/index.cjs +8 -8
  207. package/node_modules/@google/genai/dist/node/index.mjs +8 -8
  208. package/node_modules/@google/genai/dist/vertex_internal/index.cjs +1 -1
  209. package/node_modules/@google/genai/dist/vertex_internal/index.js +1 -1
  210. package/node_modules/@google/genai/dist/web/index.mjs +8 -8
  211. package/node_modules/@google/genai/package.json +1 -1
  212. package/package.json +1 -1
  213. package/dist/ports-BAaLOkJp.js +0 -2
  214. package/dist/ports-DDWP1p0X.js +0 -2
@@ -1,2 +1,2 @@
1
- import"./paths-B4IRk3wi.js";import{A as e,O as t,k as n,p as r}from"./subsystem-C5XF2Fy5.js";import{S as i}from"./utils-UGOV_184.js";import{A as a,Cs as o,D as s,Fl as c,Gl as l,Kl as u,M as d,O as f,P as p,Qs as m,Rl as h,Tt as g,Ul as _,Ws as v,Yl as y,au as b,c as x,d as S,ec as C,f as w,fu as ee,g as te,gt as T,h as ne,i as E,j as D,jt as re,nu as ie,pu as O,qs as k,r as ae,tu as oe,v as A,wt as se,yc as ce}from"./model-selection-BLbnMb5E.js";import{Ut as le,Yr as ue,a as de,f as fe,ft as pe,ht as me,i as he,mt as ge,o as _e,r as j}from"./reply-DwfVhea1.js";import{F as M,N,P as ve,a as ye,d as be,f as P,j as F,l as xe,s as Se}from"./agent-scope-DXZc3eNT.js";import{r as Ce}from"./string-normalization-BrUPaXaM.js";import"./openclaw-root-D_0Q6--h.js";import{i as I,l as we}from"./types.secrets-C-5U96pc.js";import"./github-copilot-token-DGYAlOmV.js";import{t as Te}from"./command-format-BbDT1tlm.js";import"./boolean-Ch3DfXPy.js";import"./env-D7wNuBx1.js";import"./env-overrides-DXJbFrwI.js";import"./registry-hFAtCSWG.js";import"./skills-CzUpDbU-.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"./send-C7rOdjPO.js";import"./send-BwblpWbK.js";import{i as Ee,s as De}from"./paths-yLEk_25I.js";import"./chat-envelope-HVpKusFc.js";import"./audio-transcription-runner-BwjMhAUa.js";import"./image-BP1cfEh1.js";import"./models-config-BlQ39qlq.js";import"./tool-display-DjuSUUbH.js";import"./fetch-guard-7BAwnP4a.js";import"./api-key-rotation-Rz2ESQSA.js";import"./local-roots-aA-4ohTq.js";import{n as L}from"./model-catalog-D-hkNWin.js";import"./proxy-fetch-BADsUK4d.js";import"./tokens-XGbQGn67.js";import"./deliver-DUNkj4hy.js";import"./commands-CGpM84iR.js";import"./commands-registry-DlvNUkXz.js";import"./pairing-store-EmfFQVcs.js";import"./fetch-Dikjvc5M.js";import"./call-JB-cGR9n.js";import"./with-timeout-WveKxvFV.js";import"./diagnostic-BEZszppF.js";import"./send-NbU9-scF2.js";import{n as Oe,t as ke}from"./pi-model-discovery-DnJkNRc-.js";import"./exec-approvals-allowlist-B-Yf6RsU.js";import"./exec-safe-bin-runtime-policy-CRPHdPbF.js";import"./ir-CNTx85qV.js";import"./render-D8OWO2hT.js";import"./target-errors-CoEHv_2r.js";import"./read-only-account-inspect-B0cm8yrv.js";import"./channel-selection-si1OzWyQ.js";import"./plugin-auto-enable-CTgkkJK7.js";import"./send-DmHpf5Fz.js";import"./outbound-attachment-9-8VNvRG.js";import"./delivery-queue-CKbauSFq.js";import"./send-AQ3CJLpI.js";import"./channel-activity-Dw6F-ehJ.js";import"./tables-fl9iXahm.js";import"./fetch-Bn0mWg6a.js";import"./skill-commands-DlHVddAk.js";import"./workspace-dirs-BhF1Dzxt.js";import"./pairing-token-B8RdfK2y.js";import"./restart-BeJuoXCx.js";import"./runtime-web-tools-C4F6aaRh.js";import{i as R,s as z}from"./command-secret-targets-CfXtLkLF.js";import"./session-cost-usage-BgqKixv0.js";import"./connection-auth-smZlFWxD.js";import{f as B}from"./onboard-helpers-D90u4wVK.js";import{n as V,r as Ae,t as H}from"./prompt-style-CXKekIBY.js";import"./pairing-labels-PIuZfthz.js";import"./memory-cli-BouV_wyL.js";import"./query-expansion-0OxEb1Io.js";import"./manager-CI6O4QH6.js";import{t as U}from"./links-CySwdMcF.js";import{n as W,t as G}from"./cli-utils-BY7dLMFy.js";import"./help-format-BRbF_INg.js";import{r as je}from"./progress-LNttnI-y.js";import"./exec-approvals-BpBNEy6i.js";import"./nodes-screen-8nRBsfID.js";import"./system-run-command-E8ymBXHh.js";import"./runtime-DYttInEE.js";import"./stagger-DmFYysrJ.js";import"./provider-env-vars-D8p6Ohpj.js";import"./note-D4GAwgha.js";import{t as Me}from"./clack-prompter-Dq0aY6iM.js";import"./issue-format-BtMzMXtZ.js";import{n as Ne,t as Pe}from"./table-CY440fI1.js";import{t as Fe}from"./model-param-b-BqIr5rY5.js";import{n as K}from"./format-Bn1bwJKX.js";import{a as q,c as Ie,d as Le,f as Re,i as ze,l as Be,m as J,n as Ve,o as He,p as Ue,r as We,s as Ge,t as Ke,u as qe}from"./openai-codex-model-default-Bx8i3bOg.js";import{Mt as Je,h as Ye,n as Xe}from"./auth-token-Dp6bxT29.js";import{t as Ze}from"./oauth-env-DSLBTWb1.js";import{n as Y}from"./logging-CbMVr2MA.js";import{a as Qe,c as $e,i as et,n as tt,o as nt,r as rt,s as it,t as at}from"./provider-auth-helpers-DPz0vN_c.js";import"./oauth-tls-preflight-ByNjbUR5.js";import ot from"node:path";import st from"node:fs/promises";import ct from"node:crypto";import{complete as lt,getEnvApiKey as ut,getModel as dt}from"@mariozechner/pi-ai";import{Type as ft}from"@sinclair/typebox";import{cancel as pt,confirm as mt,isCancel as ht,multiselect as gt,select as _t,text as vt}from"@clack/prompts";async function yt(e){try{let{snapshot:e}=await m();if(e.valid)return e.resolved}catch{}return e}async function bt(e){let t=k(),n=await yt(t),{resolvedConfig:r,diagnostics:i}=await z({config:t,commandName:e.commandName,targetIds:R()});if(e.runtime)for(let t of i)e.runtime.log(`[secrets] ${t}`);return C(r,n),{sourceConfig:n,resolvedConfig:r,diagnostics:i}}async function X(e){return(await bt(e)).resolvedConfig}async function xt(e,t){ze(e);let n=(await X({commandName:`models aliases list`,runtime:t})).agents?.defaults?.models??{},r=Object.entries(n).reduce((e,[t,n])=>{let r=n?.alias?.trim();return r&&(e[r]=t),e},{});if(e.json){t.log(JSON.stringify({aliases:r},null,2));return}if(e.plain){for(let[e,n]of Object.entries(r))t.log(`${e} ${n}`);return}if(t.log(`Aliases (${Object.keys(r).length}):`),Object.keys(r).length===0){t.log(`- none`);return}for(let[e,n]of Object.entries(r))t.log(`- ${e} -> ${n}`)}async function St(e,t,n){let r=qe(e),i=Ue({raw:t,cfg:await X({commandName:`models aliases add`,runtime:n})});await J(e=>{let t=`${i.provider}/${i.model}`,n={...e.agents?.defaults?.models};for(let[e,i]of Object.entries(n)){let n=i?.alias?.trim();if(n&&n===r&&e!==t)throw Error(`Alias ${r} already points to ${e}.`)}return n[t]={...n[t]??{},alias:r},{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,models:n}}}}),Y(n),n.log(`Alias ${r} -> ${i.provider}/${i.model}`)}async function Ct(e,t){let n=qe(e),r=await J(e=>{let t={...e.agents?.defaults?.models},r=!1;for(let[e,i]of Object.entries(t))if(i?.alias?.trim()===n){t[e]={...i,alias:void 0},r=!0;break}if(!r)throw Error(`Alias not found: ${n}`);return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,models:t}}}});Y(t),(!r.agents?.defaults?.models||Object.values(r.agents.defaults.models).every(e=>!e?.alias?.trim()))&&t.log(`No aliases configured.`)}function wt(e){return(typeof e==`symbol`||ht(e))&&(pt(`Cancelled.`),process.exit(0)),e}const Tt=async e=>wt(await mt({...e,message:V(e.message)})),Et=async e=>wt(await vt({...e,message:V(e.message)})),Dt=async e=>wt(await _t({...e,message:V(e.message),options:e.options.map(e=>e.hint===void 0?e:{...e,hint:H(e.hint)})}));function Ot(e){let t=e?.trim();return t?S(t)===`anthropic`?`anthropic`:`custom`:null}function kt(e){return`${S(e)}:manual`}async function At(e,t){let n=Ot(e.provider??`anthropic`);if(n!==`anthropic`)throw Error(`Only --provider anthropic is supported for setup-token.`);if(!process.stdin.isTTY)throw Error(`setup-token requires an interactive TTY.`);if(!e.yes&&!await Tt({message:"Have you run `claude setup-token` and copied the token?",initialValue:!0}))return;let r=await Et({message:`Paste Anthropic setup-token`,validate:e=>Xe(String(e??``))}),i=String(r??``).trim(),a=kt(n);u({profileId:a,credential:{type:`token`,provider:n,token:i}}),await J(e=>Ye(e,{profileId:a,provider:n,mode:`token`})),Y(t),t.log(`Auth profile: ${a} (${n}/token)`)}async function jt(e,t){let n=e.provider?.trim();if(!n)throw Error(`Missing --provider.`);let r=S(n),i=e.profileId?.trim()||kt(r),a=await Et({message:`Paste token for ${r}`,validate:e=>e?.trim()?void 0:`Required`}),o=String(a??``).trim(),s=e.expiresIn?.trim()&&e.expiresIn.trim().length>0?Date.now()+ce(String(e.expiresIn??``).trim(),{defaultUnit:`d`}):void 0;u({profileId:i,credential:{type:`token`,provider:r,token:o,...s?{expires:s}:{}}}),await J(e=>Ye(e,{profileId:i,provider:r,mode:`token`})),Y(t),t.log(`Auth profile: ${i} (${r}/token)`)}async function Mt(e,t){let n=await Dt({message:`Token provider`,options:[{value:`anthropic`,label:`anthropic`},{value:`custom`,label:`custom (type provider id)`}]}),r=n===`custom`?S(String(await Et({message:`Provider id`,validate:e=>e?.trim()?void 0:`Required`}))):n;if(await Dt({message:`Token method`,options:[...r===`anthropic`?[{value:`setup-token`,label:`setup-token (claude)`,hint:"Paste a setup-token from `claude setup-token`"}]:[],{value:`paste`,label:`paste token`}]})===`setup-token`){await At({provider:r},t);return}let i=kt(r);await jt({provider:r,profileId:String(await Et({message:`Profile id`,initialValue:i,validate:e=>e?.trim()?void 0:`Required`})).trim(),expiresIn:await Tt({message:`Does this token expire?`,initialValue:!1})?String(await Et({message:`Expires in (duration)`,initialValue:`365d`,validate:e=>{try{ce(String(e??``),{defaultUnit:`d`});return}catch{return`Invalid duration (e.g. 365d, 12h, 30m)`}}})).trim():void 0},t)}function Nt(e,t){let n=t?.trim();if(!n)return null;let r=et(e,n);if(r)return r;let i=e.map(e=>e.id).filter(Boolean).toSorted((e,t)=>e.localeCompare(t)),a=i.length>0?i.join(`, `):`(none)`;throw Error(`Unknown provider "${n}". Loaded providers: ${a}. Verify plugins via \`${Te(`openclaw plugins list --json`)}\`.`)}function Pt(e){return e.type===`api_key`?`api_key`:e.type===`token`?`token`:`oauth`}async function Ft(e){let t=await Qe({prompter:e.prompter,runtime:e.runtime,isRemote:Ze(),openUrl:async e=>{await B(e)},localBrowserMessage:`Complete sign-in in browser…`});if(!t)throw Error(`OpenAI Codex OAuth did not return credentials.`);let n=await Je(`openai-codex`,t,e.agentDir,{syncSiblingAgents:!0});await J(t=>{let r=Ye(t,{profileId:n,provider:`openai-codex`,mode:`oauth`});return e.opts.setDefault&&(r=Ve(r).next),r}),Y(e.runtime),e.runtime.log(`Auth profile: ${n} (openai-codex/oauth)`),e.opts.setDefault?e.runtime.log(`Default model set to ${Ke}`):e.runtime.log(`Default model available: ${Ke} (use --set-default to apply)`)}async function It(e,t){if(!process.stdin.isTTY)throw Error(`models auth login requires an interactive TTY.`);let n=await Ie(),r=P(n),i=ye(n,r),a=be(n,r)??F(),o=S(String(e.provider??``)),s=Me();if(o===`openai-codex`){await Ft({opts:e,runtime:t,prompter:s,agentDir:i});return}let c=it({config:n,workspaceDir:a});if(c.length===0)throw Error(`No provider plugins found. Install one via \`${Te(`openclaw plugins install`)}\`.`);let l=Nt(c,e.provider)??await s.select({message:`Select a provider`,options:c.map(e=>({value:e.id,label:e.label,hint:e.docsPath?`Docs: ${e.docsPath}`:void 0}))}).then(e=>et(c,String(e)));if(!l)throw Error(`Unknown provider. Use --provider <id> to pick a provider plugin.`);let d=rt(l,e.method)??(l.auth.length===1?l.auth[0]:await s.select({message:`Auth method for ${l.label}`,options:l.auth.map(e=>({value:e.id,label:e.label,hint:e.hint}))}).then(e=>l.auth.find(t=>t.id===String(e))));if(!d)throw Error(`Unknown auth method. Use --method <id> to select one.`);let f=Ze(),p=await d.run({config:n,agentDir:i,workspaceDir:a,prompter:s,runtime:t,isRemote:f,openUrl:async e=>{await B(e)},oauth:{createVpsAwareHandlers:e=>nt(e)}});for(let e of p.profiles)u({profileId:e.profileId,credential:e.credential,agentDir:i});await J(t=>{let n=t;p.configPatch&&(n=tt(n,p.configPatch));for(let e of p.profiles)n=Ye(n,{profileId:e.profileId,provider:e.credential.provider,mode:Pt(e.credential)});return e.setDefault&&p.defaultModel&&(n=at(n,p.defaultModel)),n}),Y(t);for(let e of p.profiles)t.log(`Auth profile: ${e.profileId} (${e.credential.provider}/${Pt(e.credential)})`);p.defaultModel&&t.log(e.setDefault?`Default model set to ${p.defaultModel}`:`Default model available: ${p.defaultModel} (use --set-default to apply)`),p.notes&&p.notes.length>0&&await s.note(p.notes.join(`
1
+ import"./paths-B4IRk3wi.js";import{A as e,O as t,k as n,p as r}from"./subsystem-C5XF2Fy5.js";import{S as i}from"./utils-UGOV_184.js";import{A as a,Cs as o,D as s,Fl as c,Gl as l,Kl as u,M as d,O as f,P as p,Qs as m,Rl as h,Tt as g,Ul as _,Ws as v,Yl as y,au as b,c as x,d as S,ec as C,f as w,fu as ee,g as te,gt as T,h as ne,i as E,j as D,jt as re,nu as ie,pu as O,qs as k,r as ae,tu as oe,v as A,wt as se,yc as ce}from"./model-selection-BLbnMb5E.js";import{Ut as le,Yr as ue,a as de,f as fe,ft as pe,ht as me,i as he,mt as ge,o as _e,r as j}from"./reply-mWIMy_ju.js";import{F as M,N,P as ve,a as ye,d as be,f as P,j as F,l as xe,s as Se}from"./agent-scope-DXZc3eNT.js";import{r as Ce}from"./string-normalization-BrUPaXaM.js";import"./openclaw-root-D_0Q6--h.js";import{i as I,l as we}from"./types.secrets-C-5U96pc.js";import"./github-copilot-token-DGYAlOmV.js";import{t as Te}from"./command-format-BbDT1tlm.js";import"./boolean-Ch3DfXPy.js";import"./env-D7wNuBx1.js";import"./env-overrides-DXJbFrwI.js";import"./registry-hFAtCSWG.js";import"./skills-CzUpDbU-.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"./send-C7rOdjPO.js";import"./send-BwblpWbK.js";import{i as Ee,s as De}from"./paths-yLEk_25I.js";import"./chat-envelope-HVpKusFc.js";import"./audio-transcription-runner-BwjMhAUa.js";import"./image-BP1cfEh1.js";import"./models-config-BlQ39qlq.js";import"./tool-display-DjuSUUbH.js";import"./fetch-guard-7BAwnP4a.js";import"./api-key-rotation-Rz2ESQSA.js";import"./local-roots-aA-4ohTq.js";import{n as L}from"./model-catalog-D-hkNWin.js";import"./proxy-fetch-BADsUK4d.js";import"./tokens-XGbQGn67.js";import"./deliver-DUNkj4hy.js";import"./commands-CGpM84iR.js";import"./commands-registry-DlvNUkXz.js";import"./pairing-store-EmfFQVcs.js";import"./fetch-Dikjvc5M.js";import"./call-JB-cGR9n.js";import"./with-timeout-WveKxvFV.js";import"./diagnostic-BEZszppF.js";import"./send-NbU9-scF2.js";import{n as Oe,t as ke}from"./pi-model-discovery-DnJkNRc-.js";import"./exec-approvals-allowlist-B-Yf6RsU.js";import"./exec-safe-bin-runtime-policy-CRPHdPbF.js";import"./ir-CNTx85qV.js";import"./render-D8OWO2hT.js";import"./target-errors-CoEHv_2r.js";import"./read-only-account-inspect-B0cm8yrv.js";import"./channel-selection-si1OzWyQ.js";import"./plugin-auto-enable-CTgkkJK7.js";import"./send-DmHpf5Fz.js";import"./outbound-attachment-9-8VNvRG.js";import"./delivery-queue-CKbauSFq.js";import"./send-AQ3CJLpI.js";import"./channel-activity-Dw6F-ehJ.js";import"./tables-fl9iXahm.js";import"./fetch-Bn0mWg6a.js";import"./skill-commands-DlHVddAk.js";import"./workspace-dirs-BhF1Dzxt.js";import"./pairing-token-B8RdfK2y.js";import"./restart-BeJuoXCx.js";import"./runtime-web-tools-C4F6aaRh.js";import{i as R,s as z}from"./command-secret-targets-CfXtLkLF.js";import"./session-cost-usage-BgqKixv0.js";import"./connection-auth-smZlFWxD.js";import{f as B}from"./onboard-helpers-D90u4wVK.js";import{n as V,r as Ae,t as H}from"./prompt-style-CXKekIBY.js";import"./pairing-labels-PIuZfthz.js";import"./memory-cli-BouV_wyL.js";import"./query-expansion-0OxEb1Io.js";import"./manager-CI6O4QH6.js";import{t as U}from"./links-CySwdMcF.js";import{n as W,t as G}from"./cli-utils-BY7dLMFy.js";import"./help-format-BRbF_INg.js";import{r as je}from"./progress-LNttnI-y.js";import"./exec-approvals-BpBNEy6i.js";import"./nodes-screen-8nRBsfID.js";import"./system-run-command-E8ymBXHh.js";import"./runtime-DYttInEE.js";import"./stagger-DmFYysrJ.js";import"./provider-env-vars-D8p6Ohpj.js";import"./note-D4GAwgha.js";import{t as Me}from"./clack-prompter-Dq0aY6iM.js";import"./issue-format-BtMzMXtZ.js";import{n as Ne,t as Pe}from"./table-CY440fI1.js";import{t as Fe}from"./model-param-b-BqIr5rY5.js";import{n as K}from"./format-Bn1bwJKX.js";import{a as q,c as Ie,d as Le,f as Re,i as ze,l as Be,m as J,n as Ve,o as He,p as Ue,r as We,s as Ge,t as Ke,u as qe}from"./openai-codex-model-default-Bx8i3bOg.js";import{Mt as Je,h as Ye,n as Xe}from"./auth-token-Dp6bxT29.js";import{t as Ze}from"./oauth-env-DSLBTWb1.js";import{n as Y}from"./logging-CbMVr2MA.js";import{a as Qe,c as $e,i as et,n as tt,o as nt,r as rt,s as it,t as at}from"./provider-auth-helpers-Rv3hdZ7j.js";import"./oauth-tls-preflight-ByNjbUR5.js";import ot from"node:path";import st from"node:fs/promises";import ct from"node:crypto";import{complete as lt,getEnvApiKey as ut,getModel as dt}from"@mariozechner/pi-ai";import{Type as ft}from"@sinclair/typebox";import{cancel as pt,confirm as mt,isCancel as ht,multiselect as gt,select as _t,text as vt}from"@clack/prompts";async function yt(e){try{let{snapshot:e}=await m();if(e.valid)return e.resolved}catch{}return e}async function bt(e){let t=k(),n=await yt(t),{resolvedConfig:r,diagnostics:i}=await z({config:t,commandName:e.commandName,targetIds:R()});if(e.runtime)for(let t of i)e.runtime.log(`[secrets] ${t}`);return C(r,n),{sourceConfig:n,resolvedConfig:r,diagnostics:i}}async function X(e){return(await bt(e)).resolvedConfig}async function xt(e,t){ze(e);let n=(await X({commandName:`models aliases list`,runtime:t})).agents?.defaults?.models??{},r=Object.entries(n).reduce((e,[t,n])=>{let r=n?.alias?.trim();return r&&(e[r]=t),e},{});if(e.json){t.log(JSON.stringify({aliases:r},null,2));return}if(e.plain){for(let[e,n]of Object.entries(r))t.log(`${e} ${n}`);return}if(t.log(`Aliases (${Object.keys(r).length}):`),Object.keys(r).length===0){t.log(`- none`);return}for(let[e,n]of Object.entries(r))t.log(`- ${e} -> ${n}`)}async function St(e,t,n){let r=qe(e),i=Ue({raw:t,cfg:await X({commandName:`models aliases add`,runtime:n})});await J(e=>{let t=`${i.provider}/${i.model}`,n={...e.agents?.defaults?.models};for(let[e,i]of Object.entries(n)){let n=i?.alias?.trim();if(n&&n===r&&e!==t)throw Error(`Alias ${r} already points to ${e}.`)}return n[t]={...n[t]??{},alias:r},{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,models:n}}}}),Y(n),n.log(`Alias ${r} -> ${i.provider}/${i.model}`)}async function Ct(e,t){let n=qe(e),r=await J(e=>{let t={...e.agents?.defaults?.models},r=!1;for(let[e,i]of Object.entries(t))if(i?.alias?.trim()===n){t[e]={...i,alias:void 0},r=!0;break}if(!r)throw Error(`Alias not found: ${n}`);return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,models:t}}}});Y(t),(!r.agents?.defaults?.models||Object.values(r.agents.defaults.models).every(e=>!e?.alias?.trim()))&&t.log(`No aliases configured.`)}function wt(e){return(typeof e==`symbol`||ht(e))&&(pt(`Cancelled.`),process.exit(0)),e}const Tt=async e=>wt(await mt({...e,message:V(e.message)})),Et=async e=>wt(await vt({...e,message:V(e.message)})),Dt=async e=>wt(await _t({...e,message:V(e.message),options:e.options.map(e=>e.hint===void 0?e:{...e,hint:H(e.hint)})}));function Ot(e){let t=e?.trim();return t?S(t)===`anthropic`?`anthropic`:`custom`:null}function kt(e){return`${S(e)}:manual`}async function At(e,t){let n=Ot(e.provider??`anthropic`);if(n!==`anthropic`)throw Error(`Only --provider anthropic is supported for setup-token.`);if(!process.stdin.isTTY)throw Error(`setup-token requires an interactive TTY.`);if(!e.yes&&!await Tt({message:"Have you run `claude setup-token` and copied the token?",initialValue:!0}))return;let r=await Et({message:`Paste Anthropic setup-token`,validate:e=>Xe(String(e??``))}),i=String(r??``).trim(),a=kt(n);u({profileId:a,credential:{type:`token`,provider:n,token:i}}),await J(e=>Ye(e,{profileId:a,provider:n,mode:`token`})),Y(t),t.log(`Auth profile: ${a} (${n}/token)`)}async function jt(e,t){let n=e.provider?.trim();if(!n)throw Error(`Missing --provider.`);let r=S(n),i=e.profileId?.trim()||kt(r),a=await Et({message:`Paste token for ${r}`,validate:e=>e?.trim()?void 0:`Required`}),o=String(a??``).trim(),s=e.expiresIn?.trim()&&e.expiresIn.trim().length>0?Date.now()+ce(String(e.expiresIn??``).trim(),{defaultUnit:`d`}):void 0;u({profileId:i,credential:{type:`token`,provider:r,token:o,...s?{expires:s}:{}}}),await J(e=>Ye(e,{profileId:i,provider:r,mode:`token`})),Y(t),t.log(`Auth profile: ${i} (${r}/token)`)}async function Mt(e,t){let n=await Dt({message:`Token provider`,options:[{value:`anthropic`,label:`anthropic`},{value:`custom`,label:`custom (type provider id)`}]}),r=n===`custom`?S(String(await Et({message:`Provider id`,validate:e=>e?.trim()?void 0:`Required`}))):n;if(await Dt({message:`Token method`,options:[...r===`anthropic`?[{value:`setup-token`,label:`setup-token (claude)`,hint:"Paste a setup-token from `claude setup-token`"}]:[],{value:`paste`,label:`paste token`}]})===`setup-token`){await At({provider:r},t);return}let i=kt(r);await jt({provider:r,profileId:String(await Et({message:`Profile id`,initialValue:i,validate:e=>e?.trim()?void 0:`Required`})).trim(),expiresIn:await Tt({message:`Does this token expire?`,initialValue:!1})?String(await Et({message:`Expires in (duration)`,initialValue:`365d`,validate:e=>{try{ce(String(e??``),{defaultUnit:`d`});return}catch{return`Invalid duration (e.g. 365d, 12h, 30m)`}}})).trim():void 0},t)}function Nt(e,t){let n=t?.trim();if(!n)return null;let r=et(e,n);if(r)return r;let i=e.map(e=>e.id).filter(Boolean).toSorted((e,t)=>e.localeCompare(t)),a=i.length>0?i.join(`, `):`(none)`;throw Error(`Unknown provider "${n}". Loaded providers: ${a}. Verify plugins via \`${Te(`openclaw plugins list --json`)}\`.`)}function Pt(e){return e.type===`api_key`?`api_key`:e.type===`token`?`token`:`oauth`}async function Ft(e){let t=await Qe({prompter:e.prompter,runtime:e.runtime,isRemote:Ze(),openUrl:async e=>{await B(e)},localBrowserMessage:`Complete sign-in in browser…`});if(!t)throw Error(`OpenAI Codex OAuth did not return credentials.`);let n=await Je(`openai-codex`,t,e.agentDir,{syncSiblingAgents:!0});await J(t=>{let r=Ye(t,{profileId:n,provider:`openai-codex`,mode:`oauth`});return e.opts.setDefault&&(r=Ve(r).next),r}),Y(e.runtime),e.runtime.log(`Auth profile: ${n} (openai-codex/oauth)`),e.opts.setDefault?e.runtime.log(`Default model set to ${Ke}`):e.runtime.log(`Default model available: ${Ke} (use --set-default to apply)`)}async function It(e,t){if(!process.stdin.isTTY)throw Error(`models auth login requires an interactive TTY.`);let n=await Ie(),r=P(n),i=ye(n,r),a=be(n,r)??F(),o=S(String(e.provider??``)),s=Me();if(o===`openai-codex`){await Ft({opts:e,runtime:t,prompter:s,agentDir:i});return}let c=it({config:n,workspaceDir:a});if(c.length===0)throw Error(`No provider plugins found. Install one via \`${Te(`openclaw plugins install`)}\`.`);let l=Nt(c,e.provider)??await s.select({message:`Select a provider`,options:c.map(e=>({value:e.id,label:e.label,hint:e.docsPath?`Docs: ${e.docsPath}`:void 0}))}).then(e=>et(c,String(e)));if(!l)throw Error(`Unknown provider. Use --provider <id> to pick a provider plugin.`);let d=rt(l,e.method)??(l.auth.length===1?l.auth[0]:await s.select({message:`Auth method for ${l.label}`,options:l.auth.map(e=>({value:e.id,label:e.label,hint:e.hint}))}).then(e=>l.auth.find(t=>t.id===String(e))));if(!d)throw Error(`Unknown auth method. Use --method <id> to select one.`);let f=Ze(),p=await d.run({config:n,agentDir:i,workspaceDir:a,prompter:s,runtime:t,isRemote:f,openUrl:async e=>{await B(e)},oauth:{createVpsAwareHandlers:e=>nt(e)}});for(let e of p.profiles)u({profileId:e.profileId,credential:e.credential,agentDir:i});await J(t=>{let n=t;p.configPatch&&(n=tt(n,p.configPatch));for(let e of p.profiles)n=Ye(n,{profileId:e.profileId,provider:e.credential.provider,mode:Pt(e.credential)});return e.setDefault&&p.defaultModel&&(n=at(n,p.defaultModel)),n}),Y(t);for(let e of p.profiles)t.log(`Auth profile: ${e.profileId} (${e.credential.provider}/${Pt(e.credential)})`);p.defaultModel&&t.log(e.setDefault?`Default model set to ${p.defaultModel}`:`Default model available: ${p.defaultModel} (use --set-default to apply)`),p.notes&&p.notes.length>0&&await s.note(p.notes.join(`
2
2
  `),`Provider notes`)}function Lt(e,t){let n=Le({cfg:e,rawAgentId:t})??P(e);return{agentId:n,agentDir:ye(e,n)}}function Rt(e,t){let n=S(t),r=e.order?.[n];return Array.isArray(r)?r:[]}async function zt(e,t){let n=e.provider?.trim();if(!n)throw Error(`Missing --provider.`);let r=S(n),i=await X({commandName:`models auth-order`,runtime:t}),{agentId:a,agentDir:o}=Lt(i,e.agent);return{cfg:i,agentId:a,agentDir:o,provider:r}}async function Bt(e,t){let{agentId:n,agentDir:r,provider:a}=await zt(e,t),o=Rt(y(r,{allowKeychainPrompt:!1}),a);if(e.json){t.log(JSON.stringify({agentId:n,agentDir:r,provider:a,authStorePath:i(`${r}/auth-profiles.json`),order:o.length>0?o:null},null,2));return}t.log(`Agent: ${n}`),t.log(`Provider: ${a}`),t.log(`Auth file: ${i(`${r}/auth-profiles.json`)}`),t.log(o.length>0?`Order override: ${o.join(`, `)}`:`Order override: (none)`)}async function Vt(e,t){let{agentId:n,agentDir:r,provider:i}=await zt(e,t);if(!await l({agentDir:r,provider:i,order:null}))throw Error(`Failed to update auth-profiles.json (lock busy?).`);t.log(`Agent: ${n}`),t.log(`Provider: ${i}`),t.log(`Cleared per-agent order override.`)}async function Ht(e,t){let{agentId:n,agentDir:r,provider:i}=await zt(e,t),a=y(r,{allowKeychainPrompt:!1}),o=i,s=Ce(e.order??[]);if(s.length===0)throw Error(`Missing profile ids. Provide one or more profile ids.`);for(let e of s){let t=a.profiles[e];if(!t)throw Error(`Auth profile "${e}" not found in ${r}.`);if(S(t.provider)!==o)throw Error(`Auth profile "${e}" is for ${t.provider}, not ${i}.`)}let c=await l({agentDir:r,provider:i,order:s});if(!c)throw Error(`Failed to update auth-profiles.json (lock busy?).`);t.log(`Agent: ${n}`),t.log(`Provider: ${i}`),t.log(`Order override: ${Rt(c,i).join(`, `)}`)}function Ut(e,t){return N(e.agents?.defaults?.[t])}function Wt(e,t){let n=M(e.agents?.defaults?.[t.key]);return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,[t.key]:Be(n,{fallbacks:t.fallbacks}),...t.models?{models:t.models}:void 0}}}}async function Gt(e,t,n){ze(t);let r=Ut(await X({commandName:`models ${e.key} list`,runtime:n}),e.key);if(t.json){n.log(JSON.stringify({fallbacks:r},null,2));return}if(t.plain){for(let e of r)n.log(e);return}if(n.log(`${e.label} (${r.length}):`),r.length===0){n.log(`- none`);return}for(let e of r)n.log(`- ${e}`)}async function Kt(e,t,n){let r=await J(n=>{let r=Ue({raw:t,cfg:n}),i=x(r.provider,r.model),a={...n.agents?.defaults?.models};a[i]||(a[i]={});let o=Ut(n,e.key);return Re({cfg:n,entries:o}).includes(i)?n:Wt(n,{key:e.key,fallbacks:[...o,i],models:a})});Y(n),n.log(`${e.logPrefix}: ${Ut(r,e.key).join(`, `)}`)}async function qt(e,t,n){let r=await J(n=>{let r=Ue({raw:t,cfg:n}),i=x(r.provider,r.model),a=ae({cfg:n,defaultProvider:O}),o=Ut(n,e.key),s=o.filter(e=>{let t=A({raw:String(e??``),defaultProvider:O,aliasIndex:a});return t?x(t.ref.provider,t.ref.model)!==i:!0});if(s.length===o.length)throw Error(`${e.notFoundLabel} not found: ${i}`);return Wt(n,{key:e.key,fallbacks:s})});Y(n),n.log(`${e.logPrefix}: ${Ut(r,e.key).join(`, `)}`)}async function Jt(e,t){await J(t=>Wt(t,{key:e.key,fallbacks:[]})),Y(t),t.log(e.clearedMessage)}async function Yt(e,t){return await Gt({label:`Fallbacks`,key:`model`},e,t)}async function Xt(e,t){return await Kt({label:`Fallbacks`,key:`model`,logPrefix:`Fallbacks`},e,t)}async function Zt(e,t){return await qt({label:`Fallbacks`,key:`model`,notFoundLabel:`Fallback`,logPrefix:`Fallbacks`},e,t)}async function Qt(e){return await Jt({key:`model`,clearedMessage:`Fallback list cleared.`},e)}async function $t(e,t){return await Gt({label:`Image fallbacks`,key:`imageModel`},e,t)}async function en(e,t){return await Kt({label:`Image fallbacks`,key:`imageModel`,logPrefix:`Image fallbacks`},e,t)}async function tn(e,t){return await qt({label:`Image fallbacks`,key:`imageModel`,notFoundLabel:`Image fallback`,logPrefix:`Image fallbacks`},e,t)}async function nn(e){return await Jt({key:`imageModel`,clearedMessage:`Image fallback list cleared.`},e)}function rn(e){let t=ne({cfg:e,defaultProvider:O,defaultModel:ee}),n=ae({cfg:e,defaultProvider:O}),r=[],i=new Map,a=new Map;for(let[e,t]of n.byKey.entries())a.set(e,t);let o=(e,t)=>{let n=x(e.provider,e.model);i.has(n)||(i.set(n,new Set),r.push(n)),i.get(n)?.add(t)};o(t,`default`);let s=N(e.agents?.defaults?.model),c=N(e.agents?.defaults?.imageModel),l=ve(e.agents?.defaults?.imageModel)??``;if(s.forEach((e,t)=>{let r=A({raw:String(e??``),defaultProvider:O,aliasIndex:n});r&&o(r.ref,`fallback#${t+1}`)}),l){let e=A({raw:l,defaultProvider:O,aliasIndex:n});e&&o(e.ref,`image`)}c.forEach((e,t)=>{let r=A({raw:String(e??``),defaultProvider:O,aliasIndex:n});r&&o(r.ref,`img-fallback#${t+1}`)});for(let t of Object.keys(e.agents?.defaults?.models??{})){let e=w(String(t??``),O);e&&o(e,`configured`)}return{entries:r.map(e=>{let t=e.indexOf(`/`);return{key:e,ref:{provider:t===-1?e:e.slice(0,t),model:t===-1?``:e.slice(t+1)},tags:i.get(e)??new Set,aliases:a.get(e)??[]}})}}const an=`MODEL_AVAILABILITY_UNAVAILABLE`;function on(e){return e instanceof Error?e.stack??`${e.name}: ${e.message}`:String(e)}function sn(e){return e instanceof Error?e.code===an:!1}const cn=(e,t,n)=>!t||!n?!1:!!(_(n,e).length>0||e===`amazon-bedrock`&&D()||d(e)||f(t,e));function ln(e){let t=Error(e);return t.code=an,t}function un(e){return sn(e)&&e instanceof Error?e:ln(`Model availability unavailable: getAvailable() failed.\n${on(e)}`)}function dn(e){if(!Array.isArray(e))throw ln(`Model availability unavailable: getAvailable() returned a non-array value.`);for(let t of e)if(!t||typeof t!=`object`||typeof t.provider!=`string`||typeof t.id!=`string`)throw ln(`Model availability unavailable: getAvailable() returned invalid model entries.`);return e}function fn(e){let t;try{t=e.getAvailable()}catch(e){throw un(e)}try{return dn(t)}catch(e){throw un(e)}}async function pn(e,t){let n=ie(),r=Oe(ke(n),n),i=r.getAll(),a,o;try{let e=fn(r);a=new Set(e.map(e=>x(e.provider,e.id)))}catch(e){if(!sn(e))throw e;a=void 0,o||=on(e)}return{registry:r,models:i,availableKeys:a,availabilityErrorMessage:o}}function mn(e){let{model:t,key:n,tags:r,aliases:i=[],availableKeys:a,cfg:o,authStore:s,allowProviderAvailabilityFallback:c=!1}=e;if(!t)return{key:n,name:n,input:`-`,contextWindow:null,local:null,available:null,tags:[...r,`missing`],missing:!0};let l=t.input.join(`+`)||`text`,u=Ge(t.baseUrl),d=a?.has(x(t.provider,t.id))??!1,f=a!==void 0&&!c?d:d||(o&&s?cn(t.provider,o,s):!1),p=i.length>0?[`alias:${i.join(`,`)}`]:[],m=new Set(r);if(p.length>0){for(let e of m)(e===`alias`||e.startsWith(`alias:`))&&m.delete(e);for(let e of p)m.add(e)}return{key:n,name:t.name||t.id,input:l,contextWindow:t.contextWindow??null,local:u,available:f,tags:Array.from(m),missing:!1}}function hn(e,t){return!(e.provider&&t.provider.toLowerCase()!==e.provider||e.local&&!Ge(t.baseUrl??``))}function gn(e){let t=e.context.configuredByKey.get(e.key);return mn({model:e.model,key:e.key,tags:t?Array.from(t.tags):[],aliases:t?.aliases??[],availableKeys:e.context.availableKeys,cfg:e.context.cfg,authStore:e.context.authStore,allowProviderAvailabilityFallback:e.allowProviderAvailabilityFallback??!1})}async function _n(e,t){let n=await pn(e,t);return{...n,discoveredKeys:new Set(n.models.map(e=>x(e.provider,e.id)))}}function vn(e){let t=new Set,n=[...e.models].toSorted((e,t)=>{let n=e.provider.localeCompare(t.provider);return n===0?e.id.localeCompare(t.id):n});for(let r of n){if(!hn(e.context.filter,r))continue;let n=x(r.provider,r.id);e.rows.push(gn({model:r,key:n,context:e.context})),t.add(n)}return t}async function yn(e){let t=await L({config:e.context.cfg});for(let n of t){if(e.context.filter.provider&&n.provider.toLowerCase()!==e.context.filter.provider)continue;let t=x(n.provider,n.id);if(e.seenKeys.has(t))continue;let r=ue({provider:n.provider,modelId:n.id,modelRegistry:e.modelRegistry,cfg:e.context.cfg});!r||!hn(e.context.filter,r)||(e.rows.push(gn({model:r,key:t,context:e.context,allowProviderAvailabilityFallback:!e.context.discoveredKeys.has(t)})),e.seenKeys.add(t))}}function bn(e){for(let t of e.entries){if(e.context.filter.provider&&t.ref.provider.toLowerCase()!==e.context.filter.provider)continue;let n=ue({provider:t.ref.provider,modelId:t.ref.model,modelRegistry:e.modelRegistry,cfg:e.context.cfg});e.context.filter.local&&n&&!Ge(n.baseUrl??``)||e.context.filter.local&&!n||e.rows.push(mn({model:n,key:t.key,tags:Array.from(t.tags),aliases:t.aliases,availableKeys:e.context.availableKeys,cfg:e.context.cfg,authStore:e.context.authStore,allowProviderAvailabilityFallback:n?!e.context.discoveredKeys.has(x(n.provider,n.id)):!1}))}}const xn=e=>!!(n()&&!e?.json&&!e?.plain),Z=(e,t)=>e.padEnd(t),Sn=(t,n)=>n?t===`default`?e.success(t):t===`image`?e.accentBright(t):t===`configured`?e.accent(t):t===`missing`?e.error(t):t.startsWith(`fallback#`)||t.startsWith(`img-fallback#`)?e.warn(t):t.startsWith(`alias:`)?e.accentDim(t):e.muted(t):t,Cn=(e,t)=>e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`;function wn(n,r,i={}){if(i.json){r.log(JSON.stringify({count:n.length,models:n},null,2));return}if(i.plain){for(let e of n)r.log(e.key);return}let a=xn(i),o=[Z(`Model`,42),Z(`Input`,10),Z(`Ctx`,8),Z(`Local`,5),Z(`Auth`,5),`Tags`].join(` `);r.log(a?e.heading(o):o);for(let i of n){let n=Z(Cn(i.key,42),42),o=Z(i.input||`-`,10),s=Z(He(i.contextWindow),8),c=Z(i.local===null?`-`:i.local?`yes`:`no`,5),l=Z(i.available===null?`-`:i.available?`yes`:`no`,5),u=i.tags.length>0?a?i.tags.map(e=>Sn(e,a)).join(`,`):i.tags.join(`,`):``,d=t(a,i.input.includes(`image`)?e.accentBright:e.info,o),f=t(a,i.local===null?e.muted:i.local?e.success:e.muted,c),p=t(a,i.available===null?e.muted:i.available?e.success:e.error,l),m=[a?e.accent(n):n,d,s,f,p,u].join(` `);r.log(m)}}async function Tn(e,t){ze(e);let{ensureAuthProfileStore:n}=await import(`./model-selection-BLbnMb5E.js`).then(e=>e.Ct),{ensureOpenClawModelsJson:r}=await import(`./models-config-BlQ39qlq.js`).then(e=>e.n),{sourceConfig:i,resolvedConfig:a}=await bt({commandName:`models list`,runtime:t}),o=n(),s=(()=>{let t=e.provider?.trim();if(t)return w(`${t}/_`,`anthropic`)?.provider??t.toLowerCase()})(),c,l=new Set,u,d;try{await r(i??a);let e=await _n(a,{sourceConfig:i});c=e.registry,l=e.discoveredKeys,u=e.availableKeys,d=e.availabilityErrorMessage}catch(e){t.error(`Model registry unavailable:\n${on(e)}`),process.exitCode=1;return}d!==void 0&&t.error(`Model availability lookup failed; falling back to auth heuristics for discovered models: ${d}`);let{entries:f}=rn(a),p=new Map(f.map(e=>[e.key,e])),m=[],h={cfg:a,authStore:o,availableKeys:u,configuredByKey:p,discoveredKeys:l,filter:{provider:s,local:e.local}};if(e.all){let e=vn({rows:m,models:c?.getAll()??[],context:h});c&&await yn({rows:m,modelRegistry:c,context:h,seenKeys:e})}else{let e=c;if(!e){t.error(`Model registry unavailable.`),process.exitCode=1;return}bn({rows:m,entries:f,modelRegistry:e,context:h})}if(m.length===0){t.log(`No models found.`);return}wn(m,t,e)}function En(e){return T(e,{includeEnvVarName:!1})?`marker(${e.trim()})`:j(e)}function Dn(e){let t=typeof e.value==`string`?e.value.trim():``;if(t){let n=En(t);return e.kind===`token`?`token:${n}`:n}if(e.ref){let t=`ref(${e.ref.source}:${e.ref.id})`;return e.kind===`token`?`token:${t}`:t}return e.kind===`token`?`token:missing`:`missing`}function On(e){let{provider:t,cfg:n,store:r}=e,a=Date.now(),o=_(r,t),c=(e,t)=>{let n=re(r,t);if(!n||a>=n)return e;let i=r.usageStats?.[t];return`${e} [${typeof i?.disabledUntil==`number`&&a<i.disabledUntil?`disabled${i.disabledReason?`:${i.disabledReason}`:``}`:`cooldown`} ${_e(n-a)}]`},l=o.map(e=>{let t=r.profiles[e];if(!t)return`${e}=missing`;if(t.type===`api_key`)return c(`${e}=${Dn({value:t.key,ref:t.keyRef,kind:`api-key`})}`,e);if(t.type===`token`)return c(`${e}=${Dn({value:t.token,ref:t.tokenRef,kind:`token`})}`,e);let i=b({cfg:n,store:r,profileId:e}),a=i===e?``:i.startsWith(e)?i.slice(e.length).trim():`(${i})`;return c(`${e}=OAuth${a?` ${a}`:``}`,e)}),u=o.filter(e=>r.profiles[e]?.type===`oauth`).length,f=o.filter(e=>r.profiles[e]?.type===`token`).length,m=o.filter(e=>r.profiles[e]?.type===`api_key`).length,h=d(t),g=s(n,t),v=p({cfg:n,provider:t});return{provider:t,effective:o.length>0?{kind:`profiles`,detail:i(oe())}:h?{kind:`env`,detail:h.source.includes(`OAUTH_TOKEN`)||h.source.toLowerCase().includes(`oauth`)?`OAuth (env)`:j(h.apiKey)}:v?{kind:`models.json`,detail:En(v.apiKey)}:{kind:`missing`,detail:`missing`},profiles:{count:o.length,oauth:u,token:f,apiKey:m,labels:l},...h?{env:{value:h.source.includes(`OAUTH_TOKEN`)||h.source.toLowerCase().includes(`oauth`)?`OAuth (env)`:j(h.apiKey),source:h.source}}:{},...g?{modelsJson:{value:En(g),source:`models.json: ${i(e.modelsPath)}`}}:{}}}function kn(e){return e?e===`auth`||e===`auth_permanent`?`auth`:e===`rate_limit`||e===`overloaded`?`rate_limit`:e===`billing`?`billing`:e===`timeout`?`timeout`:e===`format`?`format`:`unknown`:`unknown`}function An(e){let t=new Map;for(let n of e){let e=w(String(n??``),O);if(!e)continue;let r=t.get(e.provider)??[];r.includes(e.model)||r.push(e.model),t.set(e.provider,r)}return t}function jn(e){let{provider:t,candidates:n,catalog:r}=e,i=n.get(t);if(i&&i.length>0)return{provider:t,model:i[0]};let a=r.find(e=>e.provider===t);return a?{provider:a.provider,model:a.id}:null}function Mn(e){return e===`missing_credential`?`missing_credential`:e===`expired`?`expired`:e===`invalid_expires`?`invalid_expires`:e===`unresolved_ref`?`unresolved_ref`:`ineligible_profile`}function Nn(e){let t=`Auth profile credentials are missing or expired.`;return e===`expired`?`${t}\n↳ Auth reason [expired]: token credentials are expired.`:e===`invalid_expires`?`${t}\n↳ Auth reason [invalid_expires]: token expires must be a positive Unix ms timestamp.`:e===`missing_credential`?`${t}\n↳ Auth reason [missing_credential]: no inline credential or SecretRef is configured.`:e===`unresolved_ref`?`${t}\n↳ Auth reason [unresolved_ref]: configured SecretRef could not be resolved.`:`${t}\n↳ Auth reason [ineligible_profile]: profile is incompatible with provider config.`}function Pn(e,t){let n=t.secrets?.defaults;return e.type===`api_key`?we(e.key)===void 0?I(e.keyRef,n):null:e.type===`token`&&we(e.token)===void 0?I(e.tokenRef,n):null}function Fn(e){return`Auth profile credentials are missing or expired.\n↳ Auth reason [unresolved_ref]: could not resolve SecretRef "${e}".`}async function In(e){if(!e.profile)return null;let t=Pn(e.profile,e.cfg);if(!t)return null;try{return await o(t,{config:e.cfg,env:process.env,cache:e.cache}),null}catch{return{reasonCode:`unresolved_ref`,error:Fn(`${t.source}:${t.provider}:${t.id}`)}}}async function Ln(e){let{cfg:t,providers:n,modelCandidates:r,options:i}=e,a=y(),o=i.provider?.trim(),s=o?S(o):null,c=new Set((i.profileIds??[]).map(e=>e.trim()).filter(Boolean)),l={},u=await L({config:t}),p=An(r),m=[],h=[];for(let e of n){let n=S(e);if(s&&n!==s)continue;let r=jn({provider:n,candidates:p,catalog:u}),i=_(a,n),o=E(a.order,n)??E(t?.auth?.order,n),v=o&&o.length>0?new Set(g({cfg:t,store:a,provider:n})):null,y=c.size?i.filter(e=>c.has(e)):i;if(y.length>0){for(let e of y){let i=a.profiles[e],s=i?.type,c=b({cfg:t,store:a,profileId:e});if(o&&!o.includes(e)){h.push({provider:n,profileId:e,model:r?`${r.provider}/${r.model}`:void 0,label:c,source:`profile`,mode:s,status:`unknown`,reasonCode:`excluded_by_auth_order`,error:`Excluded by auth.order for this provider.`});continue}if(v&&!v.has(e)){let i=Mn(se({cfg:t,store:a,provider:n,profileId:e}).reasonCode);h.push({provider:n,model:r?`${r.provider}/${r.model}`:void 0,profileId:e,label:c,source:`profile`,mode:s,status:`unknown`,reasonCode:i,error:Nn(i)});continue}let u=await In({cfg:t,profile:i,cache:l});if(u){h.push({provider:n,model:r?`${r.provider}/${r.model}`:void 0,profileId:e,label:c,source:`profile`,mode:s,status:`unknown`,reasonCode:u.reasonCode,error:u.error});continue}if(!r){h.push({provider:n,model:void 0,profileId:e,label:c,source:`profile`,mode:s,status:`no_model`,reasonCode:`no_model`,error:`No model available for probe`});continue}m.push({provider:n,model:r,profileId:e,label:c,source:`profile`,mode:s})}continue}if(c.size>0)continue;let x=d(n),C=f(t,n);if(!x&&!C)continue;let w=x?`env`:`models.json`,ee=x?`env`:`models.json`,te=x?.source.includes(`OAUTH_TOKEN`)?`oauth`:`api_key`;if(!r){h.push({provider:n,model:void 0,label:w,source:ee,mode:te,status:`no_model`,reasonCode:`no_model`,error:`No model available for probe`});continue}m.push({provider:n,model:r,label:w,source:ee,mode:te})}return{targets:m,results:h}}async function Rn(e){let{cfg:t,agentId:n,agentDir:r,workspaceDir:i,sessionDir:a,target:o,timeoutMs:s,maxTokens:c}=e;if(!o.model)return{provider:o.provider,model:void 0,profileId:o.profileId,label:o.label,source:o.source,mode:o.mode,status:`no_model`,reasonCode:`no_model`,error:`No model available for probe`};let l=`probe-${o.provider}-${ct.randomUUID()}`,u=Ee(l,n);await st.mkdir(a,{recursive:!0});let d=Date.now();try{return await fe({sessionId:l,sessionFile:u,agentId:n,workspaceDir:i,agentDir:r,config:t,prompt:`Reply with OK. Do not use tools.`,provider:o.model.provider,model:o.model.model,authProfileId:o.profileId,authProfileIdSource:o.profileId?`user`:void 0,timeoutMs:s,runId:`probe-${ct.randomUUID()}`,lane:`auth-probe:${o.provider}:${o.profileId??o.source}`,thinkLevel:`off`,reasoningLevel:`off`,verboseLevel:`off`,streamParams:{maxTokens:c}}),{provider:o.provider,model:`${o.model.provider}/${o.model.model}`,profileId:o.profileId,label:o.label,source:o.source,mode:o.mode,status:`ok`,latencyMs:Date.now()-d}}catch(e){let t=le(e);return{provider:o.provider,model:`${o.model.provider}/${o.model.model}`,profileId:o.profileId,label:o.label,source:o.source,mode:o.mode,status:kn(t.reason),error:K(t.message),latencyMs:Date.now()-d}}}async function zn(e){let{cfg:t,targets:n,timeoutMs:r,maxTokens:i,onProgress:a}=e,o=Math.max(1,Math.min(n.length||1,e.concurrency)),s=P(t),c=ie(),l=be(t,s)??F(),u=De(s);await st.mkdir(l,{recursive:!0});let d=0,f=Array.from({length:n.length}),p=0,m=async()=>{for(;;){let e=p;if(p+=1,e>=n.length)return;let o=n[e];a?.({completed:d,total:n.length,label:`Probing ${o.provider}${o.profileId?` (${o.label})`:``}`}),f[e]=await Rn({cfg:t,agentId:s,agentDir:c,workspaceDir:l,sessionDir:u,target:o,timeoutMs:r,maxTokens:i}),d+=1,a?.({completed:d,total:n.length})}};return await Promise.all(Array.from({length:o},()=>m())),f.filter(e=>!!e)}async function Bn(e){let t=Date.now(),n=await Ln({cfg:e.cfg,providers:e.providers,modelCandidates:e.modelCandidates,options:e.options}),r=n.targets.length;e.onProgress?.({completed:0,total:r});let i=r?await zn({cfg:e.cfg,targets:n.targets,timeoutMs:e.options.timeoutMs,maxTokens:e.options.maxTokens,concurrency:e.options.concurrency,onProgress:e.onProgress}):[],a=Date.now();return{startedAt:t,finishedAt:a,durationMs:a-t,totalTargets:r,options:e.options,results:[...n.results,...i]}}function Vn(e){return!e&&e!==0?`-`:q(e)}function Hn(e){return e.slice().toSorted((e,t)=>{let n=e.provider.localeCompare(t.provider);if(n!==0)return n;let r=e.label||e.profileId||``,i=t.label||t.profileId||``;return r.localeCompare(i)})}function Un(e){return e.totalTargets===0?`No probe targets.`:`Probed ${e.totalTargets} target${e.totalTargets===1?``:`s`} in ${q(e.durationMs)}`}async function Wn(n,r){if(ze(n),n.plain&&n.probe)throw Error(`--probe cannot be used with --plain output.`);let a=v().configPath,o=await X({commandName:`models status`,runtime:r}),s=Le({cfg:o,rawAgentId:n.agent}),l=s?ye(o,s):ie(),u=s?Se(o,s):void 0,f=s?xe(o,s):void 0,p=s?te({cfg:o,agentId:s}):ne({cfg:o,defaultProvider:O,defaultModel:ee}),m=ve(o.agents?.defaults?.model)??``,g=u??m,_=`${p.provider}/${p.model}`,b=g||_,x=N(o.agents?.defaults?.model),S=f??x,C=ve(o.agents?.defaults?.imageModel)??``,T=N(o.agents?.defaults?.imageModel),E=Object.entries(o.agents?.defaults?.models??{}).reduce((e,[t,n])=>{let r=typeof n?.alias==`string`?n.alias.trim():void 0;return r&&(e[r]=t),e},{}),D=Object.keys(o.agents?.defaults?.models??{}),k=y(l),se=ot.join(l,`models.json`),ce=new Set(Object.values(k.profiles).map(e=>e.provider).filter(e=>!!e)),le=new Set(Object.keys(o.models?.providers??{}).map(e=>typeof e==`string`?e.trim():``).filter(Boolean)),ue=new Set,fe=new Set;for(let e of[b,...S,C,...T,...D]){let t=w(String(e??``),O);t?.provider&&ue.add(t.provider)}for(let e of[b,...S,C,...T]){let t=w(String(e??``),O);t?.provider&&fe.add(t.provider)}let j=new Set;for(let e of[`anthropic`,`github-copilot`,`google-vertex`,`openai`,`google`,`groq`,`cerebras`,`xai`,`openrouter`,`zai`,`mistral`,`synthetic`])d(e)&&j.add(e);let M=Array.from(new Set([...ce,...le,...ue,...j])).map(e=>typeof e==`string`?e.trim():``).filter(Boolean).toSorted((e,t)=>e.localeCompare(t)),be=c(),P=h(process.env)||o.env?.shellEnv?.enabled===!0,F=M.map(e=>On({provider:e,cfg:o,store:k,modelsPath:se})).filter(e=>e.profiles.count>0||!!e.env||!!e.modelsJson),Ce=new Map(F.map(e=>[e.provider,e])),I=Array.from(fe).filter(e=>!Ce.has(e)).toSorted((e,t)=>e.localeCompare(t)),we=n.probeProfile?(Array.isArray(n.probeProfile)?n.probeProfile:[n.probeProfile]).flatMap(e=>String(e??``).split(`,`)).map(e=>e.trim()).filter(Boolean):[],Ee=n.probeTimeout?Number(n.probeTimeout):8e3;if(!Number.isFinite(Ee)||Ee<=0)throw Error(`--probe-timeout must be a positive number (ms).`);let De=n.probeConcurrency?Number(n.probeConcurrency):2;if(!Number.isFinite(De)||De<=0)throw Error(`--probe-concurrency must be > 0.`);let L=n.probeMaxTokens?Number(n.probeMaxTokens):8;if(!Number.isFinite(L)||L<=0)throw Error(`--probe-max-tokens must be > 0.`);let Oe=ae({cfg:o,defaultProvider:O}),ke=[g||_,...S,C,...T,...D].filter(Boolean).map(e=>A({raw:String(e??``),defaultProvider:O,aliasIndex:Oe})?.ref).filter(e=>!!e).map(e=>`${e.provider}/${e.model}`),R;n.probe&&(R=await je({label:`Probing auth profiles…`,total:1},async e=>await Bn({cfg:o,providers:M,modelCandidates:ke,options:{provider:n.probeProvider,profileIds:we,timeoutMs:Ee,concurrency:De,maxTokens:L},onProgress:e})));let z=F.filter(e=>e.profiles.oauth>0||e.profiles.token>0||e.env?.value===`OAuth (env)`).map(e=>{let t=e.profiles.oauth+e.profiles.token+(e.env?.value===`OAuth (env)`?1:0);return`${e.provider} (${t})`}),B=de({store:k,cfg:o,warnAfterMs:he,providers:M}),V=B.profiles.filter(e=>e.type===`oauth`||e.type===`token`),Ae=(()=>{let e=Date.now(),t=[];for(let n of Object.keys(k.usageStats??{})){let r=re(k,n);if(!r||e>=r)continue;let i=k.usageStats?.[n],a=typeof i?.disabledUntil==`number`&&e<i.disabledUntil?`disabled`:`cooldown`;t.push({profileId:n,provider:k.profiles[n]?.provider,kind:a,reason:i?.disabledReason,until:r,remainingMs:r-e})}return t.toSorted((e,t)=>e.remainingMs-t.remainingMs)})(),H=(()=>{let e=V.some(e=>[`expired`,`missing`].includes(e.status))||I.length>0,t=V.some(e=>e.status===`expiring`);return e?1:t?2:0})();if(n.json){r.log(JSON.stringify({configPath:a,...s?{agentId:s}:{},agentDir:l,defaultModel:b,resolvedDefault:_,fallbacks:S,imageModel:C||null,imageFallbacks:T,...s?{modelConfig:{defaultSource:u?`agent`:`defaults`,fallbacksSource:f===void 0?`defaults`:`agent`}}:{},aliases:E,allowed:D,auth:{storePath:oe(l),shellEnvFallback:{enabled:P,appliedKeys:be},providersWithOAuth:z,missingProvidersInUse:I,providers:F,unusableProfiles:Ae,oauth:{warnAfterMs:B.warnAfterMs,profiles:B.profiles,providers:B.providers},probes:R}},null,2)),n.check&&r.exit(H);return}if(n.plain){r.log(_),n.check&&r.exit(H);return}let U=xn(n),W=n=>t(U,e.accent,n.padEnd(14)),G=(e,t)=>W(t?`${e} (${t})`:e),Me=g&&g!==_?`${_} (from ${g})`:_;r.log(`${W(`Config`)}${t(U,e.muted,`:`)} ${t(U,e.info,i(a))}`),r.log(`${W(`Agent dir`)}${t(U,e.muted,`:`)} ${t(U,e.info,i(l))}`),r.log(`${G(`Default`,s?u?`agent`:`defaults`:void 0)}${t(U,e.muted,`:`)} ${t(U,e.success,Me)}`),r.log(`${G(`Fallbacks (${S.length||0})`,s?f===void 0?`defaults`:`agent`:void 0)}${t(U,e.muted,`:`)} ${t(U,S.length?e.warn:e.muted,S.length?S.join(`, `):`-`)}`),r.log(`${G(`Image model`,s?`defaults`:void 0)}${t(U,e.muted,`:`)} ${t(U,C?e.accentBright:e.muted,C||`-`)}`),r.log(`${G(`Image fallbacks (${T.length||0})`,s?`defaults`:void 0)}${t(U,e.muted,`:`)} ${t(U,T.length?e.accentBright:e.muted,T.length?T.join(`, `):`-`)}`),r.log(`${W(`Aliases (${Object.keys(E).length||0})`)}${t(U,e.muted,`:`)} ${t(U,Object.keys(E).length?e.accent:e.muted,Object.keys(E).length?Object.entries(E).map(([t,n])=>U?`${e.accentDim(t)} ${e.muted(`->`)} ${e.info(n)}`:`${t} -> ${n}`).join(`, `):`-`)}`),r.log(`${W(`Configured models (${D.length||0})`)}${t(U,e.muted,`:`)} ${t(U,D.length?e.info:e.muted,D.length?D.join(`, `):`all`)}`),r.log(``),r.log(t(U,e.heading,`Auth overview`)),r.log(`${W(`Auth store`)}${t(U,e.muted,`:`)} ${t(U,e.info,i(oe(l)))}`),r.log(`${W(`Shell env`)}${t(U,e.muted,`:`)} ${t(U,P?e.success:e.muted,P?`on`:`off`)}${be.length?t(U,e.muted,` (applied: ${be.join(`, `)})`):``}`),r.log(`${W(`Providers w/ OAuth/tokens (${z.length||0})`)}${t(U,e.muted,`:`)} ${t(U,z.length?e.info:e.muted,z.length?z.join(`, `):`-`)}`);let Fe=n=>t(U,e.warn,n),K=(n,r)=>`${Fe(n)}=${t(U,e.info,r)}`,q=()=>t(U,e.muted,` | `);for(let n of F){let i=q(),a=[];a.push(K(`effective`,`${t(U,e.accentBright,n.effective.kind)}:${t(U,e.muted,n.effective.detail)}`)),n.profiles.count>0&&(a.push(K(`profiles`,`${n.profiles.count} (oauth=${n.profiles.oauth}, token=${n.profiles.token}, api_key=${n.profiles.apiKey})`)),n.profiles.labels.length>0&&a.push(t(U,e.info,n.profiles.labels.join(`, `)))),n.env&&a.push(K(`env`,`${n.env.value}${i}${K(`source`,n.env.source)}`)),n.modelsJson&&a.push(K(`models.json`,`${n.modelsJson.value}${i}${K(`source`,n.modelsJson.source)}`)),r.log(`- ${e.heading(n.provider)} ${a.join(i)}`)}if(I.length>0){r.log(``),r.log(t(U,e.heading,`Missing auth`));for(let t of I){let n=t===`anthropic`?`Run \`claude setup-token\`, then \`${Te(`openclaw models auth setup-token`)}\` or \`${Te(`openclaw configure`)}\`.`:`Run \`${Te(`openclaw configure`)}\` or set an API key env var.`;r.log(`- ${e.heading(t)} ${n}`)}}if(r.log(``),r.log(t(U,e.heading,`OAuth/token status`)),V.length===0)r.log(t(U,e.muted,`- none`));else{let n=new Map,i=Array.from(new Set(V.map(e=>me(e.provider)).filter(e=>!!e)));if(i.length>0)try{let e=await pe({providers:i,agentDir:l,timeoutMs:3500});for(let t of e.providers){let e=ge(t,{now:Date.now(),maxWindows:2,includeResets:!0});e&&n.set(t.provider,e)}}catch{}let a=n=>n===`ok`?t(U,e.success,`ok`):n===`static`?t(U,e.muted,`static`):n===`expiring`?t(U,e.warn,`expiring`):n===`missing`?t(U,e.warn,`unknown`):t(U,e.error,`expired`),o=new Map;for(let e of V){let t=o.get(e.provider);t?t.push(e):o.set(e.provider,[e])}for(let[i,s]of o){let o=me(i),c=o?n.get(o):void 0,l=c?t(U,e.muted,` usage: ${c}`):``;r.log(`- ${t(U,e.heading,i)}${l}`);for(let n of s){let i=n.label||n.profileId,o=t(U,e.accent,i),s=a(n.status),c=n.status===`static`?``:n.expiresAt?` expires in ${_e(n.remainingMs)}`:` expires unknown`;r.log(` - ${o} ${s}${c}`)}}}if(R)if(r.log(``),r.log(t(U,e.heading,`Auth probes`)),R.results.length===0)r.log(t(U,e.muted,`- none`));else{let n=Pe(),i=Hn(R.results),a=t=>t===`ok`?e.success:t===`rate_limit`||t===`timeout`||t===`billing`?e.warn:t===`auth`||t===`format`?e.error:e.muted,o=i.map(n=>{let r=t(U,a(n.status),n.status),i=Vn(n.latencyMs),o=n.model??`${n.provider}/-`,s=n.mode?` ${t(U,e.muted,`(${n.mode})`)}`:``,c=`${t(U,e.accent,n.label)}${s}`,l=n.error?.trim(),u=l?`\n${t(U,e.muted,`↳ ${l}`)}`:``,d=`${r}${t(U,e.muted,` · ${i}`)}${u}`;return{Model:t(U,e.heading,o),Profile:c,Status:d}});r.log(Ne({width:n,columns:[{key:`Model`,header:`Model`,minWidth:18},{key:`Profile`,header:`Profile`,minWidth:24},{key:`Status`,header:`Status`,minWidth:12}],rows:o}).trimEnd()),r.log(t(U,e.muted,Un(R)))}n.check&&r.exit(H)}const Gn={name:`ping`,description:`Return OK.`,parameters:ft.Object({})};function Kn(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?null:e>0xe8d4a51000?Math.round(e):Math.round(e*1e3)}function qn(e){return e&&e.toLowerCase().split(/[^a-z]+/).filter(Boolean).includes(`image`)?[`text`,`image`]:[`text`]}function Q(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null}function Jn(e){if(!e||typeof e!=`object`)return null;let t=e,n=Q(t.prompt),r=Q(t.completion),i=Q(t.request)??0,a=Q(t.image)??0,o=Q(t.web_search)??0,s=Q(t.internal_reasoning)??0;return n===null||r===null?null:{prompt:n,completion:r,request:i,image:a,webSearch:o,internalReasoning:s}}function Yn(e){return e.id.endsWith(`:free`)?!0:e.pricing?e.pricing.prompt===0&&e.pricing.completion===0:!1}async function Xn(e,t){let n=new AbortController,r=setTimeout(n.abort.bind(n),e);try{return await t(n.signal)}finally{clearTimeout(r)}}async function Zn(e){let t=await e(`https://openrouter.ai/api/v1/models`,{headers:{Accept:`application/json`}});if(!t.ok)throw Error(`OpenRouter /models failed: HTTP ${t.status}`);let n=await t.json();return(Array.isArray(n.data)?n.data:[]).map(e=>{if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.id==`string`?t.id.trim():``;if(!n)return null;let r=typeof t.name==`string`&&t.name.trim()?t.name.trim():n,i=typeof t.context_length==`number`&&Number.isFinite(t.context_length)?t.context_length:null,a=typeof t.max_completion_tokens==`number`&&Number.isFinite(t.max_completion_tokens)?t.max_completion_tokens:typeof t.max_output_tokens==`number`&&Number.isFinite(t.max_output_tokens)?t.max_output_tokens:null,o=Array.isArray(t.supported_parameters)?t.supported_parameters.filter(e=>typeof e==`string`).map(e=>e.trim()).filter(Boolean):[];return{id:n,name:r,contextLength:i,maxCompletionTokens:a,supportedParameters:o,supportedParametersCount:o.length,supportsToolsMeta:o.includes(`tools`),modality:typeof t.modality==`string`&&t.modality.trim()?t.modality.trim():null,inferredParamB:Fe(`${n} ${r}`),createdAtMs:Kn(t.created_at),pricing:Jn(t.pricing)}}).filter(e=>!!e)}async function Qn(e,t,n){let r={messages:[{role:`user`,content:`Call the ping tool with {} and nothing else.`,timestamp:Date.now()}],tools:[Gn]},i=Date.now();try{return(await Xn(n,n=>lt(e,r,{apiKey:t,maxTokens:256,temperature:0,toolChoice:`required`,signal:n}))).content.some(e=>e.type===`toolCall`)?{ok:!0,latencyMs:Date.now()-i}:{ok:!1,latencyMs:Date.now()-i,error:`No tool call returned`}}catch(e){return{ok:!1,latencyMs:Date.now()-i,error:e instanceof Error?e.message:String(e)}}}async function $n(e,t,n){let r={messages:[{role:`user`,content:[{type:`text`,text:`Reply with OK.`},{type:`image`,data:`iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+X3mIAAAAASUVORK5CYII=`,mimeType:`image/png`}],timestamp:Date.now()}]},i=Date.now();try{return await Xn(n,n=>lt(e,r,{apiKey:t,maxTokens:16,temperature:0,signal:n})),{ok:!0,latencyMs:Date.now()-i}}catch(e){return{ok:!1,latencyMs:Date.now()-i,error:e instanceof Error?e.message:String(e)}}}function er(e){return e.input?.includes(`image`)?e:{...e,input:Array.from(new Set([...e.input??[],`image`]))}}function tr(e){let{entry:t,isFree:n}=e;return{id:t.id,name:t.name,provider:`openrouter`,modelRef:`openrouter/${t.id}`,contextLength:t.contextLength,maxCompletionTokens:t.maxCompletionTokens,supportedParametersCount:t.supportedParametersCount,supportsToolsMeta:t.supportsToolsMeta,modality:t.modality,inferredParamB:t.inferredParamB,createdAtMs:t.createdAtMs,pricing:t.pricing,isFree:n,tool:e.tool,image:e.image}}async function nr(e,t,n,r){let i=Math.max(1,Math.floor(t)),a=Array.from({length:e.length},()=>void 0),o=0,s=0,c=async()=>{for(;;){let t=o;if(o+=1,t>=e.length)return;a[t]=await n(e[t],t),s+=1,r?.onProgress?.(s,e.length)}};return e.length===0?(r?.onProgress?.(0,0),a):(await Promise.all(Array.from({length:Math.min(i,e.length)},()=>c())),a)}async function rr(e={}){let t=e.fetchImpl??fetch,n=e.probe??!0,r=e.apiKey?.trim()||ut(`openrouter`)||``;if(n&&!r)throw Error(`Missing OpenRouter API key. Set OPENROUTER_API_KEY to run models scan.`);let i=Math.max(1,Math.floor(e.timeoutMs??12e3)),a=Math.max(1,Math.floor(e.concurrency??3)),o=Math.max(0,Math.floor(e.minParamB??0)),s=Math.max(0,Math.floor(e.maxAgeDays??0)),c=e.providerFilter?.trim().toLowerCase()??``,l=await Zn(t),u=Date.now(),d=l.filter(e=>!(!Yn(e)||c&&(e.id.split(`/`)[0]?.toLowerCase()??``)!==c||o>0&&(e.inferredParamB??0)<o||s>0&&e.createdAtMs&&(u-e.createdAtMs)/(1440*60*1e3)>s)),f=dt(`openrouter`,`openrouter/auto`);return e.onProgress?.({phase:`probe`,completed:0,total:d.length}),nr(d,a,async e=>{let t=Yn(e);if(!n)return tr({entry:e,isFree:t,tool:{ok:!1,latencyMs:null,skipped:!0},image:{ok:!1,latencyMs:null,skipped:!0}});let a={...f,id:e.id,name:e.name||e.id,contextWindow:e.contextLength??f.contextWindow,maxTokens:e.maxCompletionTokens??f.maxTokens,input:qn(e.modality),reasoning:f.reasoning};return tr({entry:e,isFree:t,tool:await Qn(a,r,i),image:a.input?.includes(`image`)?await $n(er(a),r,i):{ok:!1,latencyMs:null,skipped:!0}})},{onProgress:(t,n)=>e.onProgress?.({phase:`probe`,completed:t,total:n})})}const ir=e=>gt({...e,message:V(e.message),options:e.options.map(e=>e.hint===void 0?e:{...e,hint:H(e.hint)})});function ar(e,t){if(ht(e))throw pt(Ae(`Model scan cancelled.`)??`Model scan cancelled.`),t.exit(0),Error(`unreachable`);return e}function or(e){return e.slice().toSorted((e,t)=>{let n=e.image.ok?1:0,r=t.image.ok?1:0;if(n!==r)return r-n;let i=e.tool.latencyMs??1/0,a=t.tool.latencyMs??1/0;return i===a?cr(e,t):i-a})}function sr(e){return e.slice().toSorted((e,t)=>{let n=e.image.latencyMs??1/0,r=t.image.latencyMs??1/0;return n===r?cr(e,t):n-r})}function cr(e,t){let n=e.contextLength??0,r=t.contextLength??0;if(n!==r)return r-n;let i=e.inferredParamB??0,a=t.inferredParamB??0;return i===a?e.modelRef.localeCompare(t.modelRef):a-i}function lr(e){return[e.tool.ok?`tool ${q(e.tool.latencyMs)}`:`tool fail`,e.image.skipped?`img skip`:e.image.ok?`img ${q(e.image.latencyMs)}`:`img fail`,e.contextLength?`ctx ${He(e.contextLength)}`:`ctx ?`,e.inferredParamB?`${e.inferredParamB}b`:null].filter(Boolean).join(` | `)}function ur(e,t){let n=e.filter(e=>e.tool.ok),r=e.filter(e=>e.image.ok),i=e.filter(e=>e.tool.ok&&e.image.ok),a=r.filter(e=>!e.tool.ok);t.log(`Scan results: tested ${e.length}, tool ok ${n.length}, image ok ${r.length}, tool+image ok ${i.length}, image only ${a.length}`)}function dr(e,t){let n=[Z(`Model`,42),Z(`Tool`,10),Z(`Image`,10),Z(`Ctx`,8),Z(`Params`,8),`Notes`].join(` `);t.log(n);for(let n of e){let e=Z(Cn(n.modelRef,42),42),r=Z(n.tool.ok?q(n.tool.latencyMs):`fail`,10),i=Z(n.image.ok?q(n.image.latencyMs):n.image.skipped?`skip`:`fail`,10),a=Z(He(n.contextLength),8),o=Z(n.inferredParamB?`${n.inferredParamB}b`:`-`,8),s=n.modality?`modality:${n.modality}`:``;t.log([e,r,i,a,o,s].join(` `))}}async function fr(e,t){let n=e.minParams?Number(e.minParams):void 0;if(n!==void 0&&(!Number.isFinite(n)||n<0))throw Error(`--min-params must be >= 0`);let r=e.maxAgeDays?Number(e.maxAgeDays):void 0;if(r!==void 0&&(!Number.isFinite(r)||r<0))throw Error(`--max-age-days must be >= 0`);let i=e.maxCandidates?Number(e.maxCandidates):6;if(!Number.isFinite(i)||i<=0)throw Error(`--max-candidates must be > 0`);let o=e.timeout?Number(e.timeout):void 0;if(o!==void 0&&(!Number.isFinite(o)||o<=0))throw Error(`--timeout must be > 0`);let s=e.concurrency?Number(e.concurrency):void 0;if(s!==void 0&&(!Number.isFinite(s)||s<=0))throw Error(`--concurrency must be > 0`);let c=await X({commandName:`models scan`,runtime:t}),l=e.probe??!0,u;if(l)try{u=(await a({provider:`openrouter`,cfg:c})).apiKey}catch{u=void 0}let d=await je({label:`Scanning OpenRouter models...`,indeterminate:!1,enabled:e.json!==!0},async t=>await rr({apiKey:u??void 0,minParamB:n,maxAgeDays:r,providerFilter:e.provider,timeoutMs:o,concurrency:s,probe:l,onProgress:({phase:e,completed:n,total:r})=>{e===`probe`&&t({completed:n,total:r,label:`${l?`Probing models`:`Scanning models`} (${n}/${r})`})}}));if(!l){e.json?t.log(JSON.stringify(d,null,2)):(t.log(`Found ${d.length} OpenRouter free models (metadata only; pass --probe to test tools/images).`),dr(or(d),t));return}let f=d.filter(e=>e.tool.ok);if(f.length===0)throw Error(`No tool-capable OpenRouter free models found.`);let p=or(d),m=or(f),h=sr(d.filter(e=>e.image.ok)),g=m.filter(e=>e.image.ok),_=(g.length>0?g:m).slice(0,Math.floor(i)).map(e=>e.modelRef),v=h.slice(0,Math.floor(i)).map(e=>e.modelRef);e.json||(ur(d,t),dr(p,t));let y=e.input===!1,b=process.stdin.isTTY&&!e.yes&&!y&&!e.json,x=_,S=v;if(b)x=ar(await ir({message:`Select fallback models (ordered)`,options:m.map(e=>({value:e.modelRef,label:e.modelRef,hint:lr(e)})),initialValues:_}),t),h.length>0&&(S=ar(await ir({message:`Select image fallback models (ordered)`,options:h.map(e=>({value:e.modelRef,label:e.modelRef,hint:lr(e)})),initialValues:v}),t));else if(!process.stdin.isTTY&&!e.yes&&!y&&!e.json)throw Error(`Non-interactive scan: pass --yes to apply defaults.`);if(x.length===0)throw Error(`No models selected for fallbacks.`);if(e.setImage&&S.length===0)throw Error(`No image-capable models selected for image model.`);if(await J(t=>{let n={...t.agents?.defaults?.models};for(let e of x)n[e]||(n[e]={});for(let e of S)n[e]||(n[e]={});let r=M(t.agents?.defaults?.imageModel),i=S.length>0?{...r?.primary?{primary:r.primary}:void 0,fallbacks:S,...e.setImage?{primary:S[0]}:{}}:t.agents?.defaults?.imageModel,a=M(t.agents?.defaults?.model),o={...t.agents?.defaults,model:{...a?.primary?{primary:a.primary}:void 0,fallbacks:x,...e.setDefault?{primary:x[0]}:{}},...i?{imageModel:i}:{},models:n};return{...t,agents:{...t.agents,defaults:o}}}),e.json){t.log(JSON.stringify({selected:x,selectedImages:S,setDefault:!!e.setDefault,setImage:!!e.setImage,results:d,warnings:[]},null,2));return}Y(t),t.log(`Fallbacks: ${x.join(`, `)}`),S.length>0&&t.log(`Image fallbacks: ${S.join(`, `)}`),e.setDefault&&t.log(`Default model: ${x[0]}`),e.setImage&&S.length>0&&t.log(`Image model: ${S[0]}`)}async function pr(e,t){let n=await J(t=>We({cfg:t,modelRaw:e,field:`model`}));Y(t),t.log(`Default model: ${ve(n.agents?.defaults?.model)??e}`)}async function mr(e,t){let n=await J(t=>We({cfg:t,modelRaw:e,field:`imageModel`}));Y(t),t.log(`Image model: ${ve(n.agents?.defaults?.imageModel)??e}`)}function $(e){return W(r,e)}function hr(t){let n=t.command(`models`).description(`Model discovery, scanning, and configuration`).option(`--status-json`,"Output JSON (alias for `models status --json`)",!1).option(`--status-plain`,"Plain output (alias for `models status --plain`)",!1).option(`--agent <id>`,`Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)`).addHelpText(`after`,()=>`\n${e.muted(`Docs:`)} ${U(`/cli/models`,`docs.openclaw.ai/cli/models`)}\n`);n.command(`list`).description(`List models (configured by default)`).option(`--all`,`Show full model catalog`,!1).option(`--local`,`Filter to local models`,!1).option(`--provider <name>`,`Filter by provider`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain line output`,!1).action(async e=>{await $(async()=>{await Tn(e,r)})}),n.command(`status`).description(`Show configured model state`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).option(`--check`,`Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)`,!1).option(`--probe`,`Probe configured provider auth (live)`,!1).option(`--probe-provider <name>`,`Only probe a single provider`).option(`--probe-profile <id>`,`Only probe specific auth profile ids (repeat or comma-separated)`,(e,t)=>{let n=Array.isArray(t)?t:t?[t]:[];return n.push(e),n}).option(`--probe-timeout <ms>`,`Per-probe timeout in ms`).option(`--probe-concurrency <n>`,`Concurrent probes`).option(`--probe-max-tokens <n>`,`Probe max tokens (best-effort)`).option(`--agent <id>`,`Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)`).action(async(e,t)=>{let n=G(t,`agent`)??e.agent;await $(async()=>{await Wn({json:!!e.json,plain:!!e.plain,check:!!e.check,probe:!!e.probe,probeProvider:e.probeProvider,probeProfile:e.probeProfile,probeTimeout:e.probeTimeout,probeConcurrency:e.probeConcurrency,probeMaxTokens:e.probeMaxTokens,agent:n},r)})}),n.command(`set`).description(`Set the default model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await pr(e,r)})}),n.command(`set-image`).description(`Set the image model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await mr(e,r)})});let i=n.command(`aliases`).description(`Manage model aliases`);i.command(`list`).description(`List model aliases`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await $(async()=>{await xt(e,r)})}),i.command(`add`).description(`Add or update a model alias`).argument(`<alias>`,`Alias name`).argument(`<model>`,`Model id or alias`).action(async(e,t)=>{await $(async()=>{await St(e,t,r)})}),i.command(`remove`).description(`Remove a model alias`).argument(`<alias>`,`Alias name`).action(async e=>{await $(async()=>{await Ct(e,r)})});let a=n.command(`fallbacks`).description(`Manage model fallback list`);a.command(`list`).description(`List fallback models`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await $(async()=>{await Yt(e,r)})}),a.command(`add`).description(`Add a fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await Xt(e,r)})}),a.command(`remove`).description(`Remove a fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await Zt(e,r)})}),a.command(`clear`).description(`Clear all fallback models`).action(async()=>{await $(async()=>{await Qt(r)})});let o=n.command(`image-fallbacks`).description(`Manage image model fallback list`);o.command(`list`).description(`List image fallback models`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await $(async()=>{await $t(e,r)})}),o.command(`add`).description(`Add an image fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await en(e,r)})}),o.command(`remove`).description(`Remove an image fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await $(async()=>{await tn(e,r)})}),o.command(`clear`).description(`Clear all image fallback models`).action(async()=>{await $(async()=>{await nn(r)})}),n.command(`scan`).description(`Scan OpenRouter free models for tools + images`).option(`--min-params <b>`,`Minimum parameter size (billions)`).option(`--max-age-days <days>`,`Skip models older than N days`).option(`--provider <name>`,`Filter by provider prefix`).option(`--max-candidates <n>`,`Max fallback candidates`,`6`).option(`--timeout <ms>`,`Per-probe timeout in ms`).option(`--concurrency <n>`,`Probe concurrency`).option(`--no-probe`,`Skip live probes; list free candidates only`).option(`--yes`,`Accept defaults without prompting`,!1).option(`--no-input`,`Disable prompts (use defaults)`).option(`--set-default`,`Set agents.defaults.model to the first selection`,!1).option(`--set-image`,`Set agents.defaults.imageModel to the first image selection`,!1).option(`--json`,`Output JSON`,!1).action(async e=>{await $(async()=>{await fr(e,r)})}),n.action(async e=>{await $(async()=>{await Wn({json:!!e?.statusJson,plain:!!e?.statusPlain,agent:e?.agent},r)})});let s=n.command(`auth`).description(`Manage model auth profiles`);s.option(`--agent <id>`,`Agent id for auth order get/set/clear`),s.action(()=>{s.help()}),s.command(`add`).description(`Interactive auth helper (setup-token or paste token)`).action(async()=>{await $(async()=>{await Mt({},r)})}),s.command(`login`).description(`Run a provider plugin auth flow (OAuth/API key)`).option(`--provider <id>`,`Provider id registered by a plugin`).option(`--method <id>`,`Provider auth method id`).option(`--set-default`,`Apply the provider's default model recommendation`,!1).action(async e=>{await $(async()=>{await It({provider:e.provider,method:e.method,setDefault:!!e.setDefault},r)})}),s.command(`setup-token`).description(`Run a provider CLI to create/sync a token (TTY required)`).option(`--provider <name>`,`Provider id (default: anthropic)`).option(`--yes`,`Skip confirmation`,!1).action(async e=>{await $(async()=>{await At({provider:e.provider,yes:!!e.yes},r)})}),s.command(`paste-token`).description(`Paste a token into auth-profiles.json and update config`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--profile-id <id>`,`Auth profile id (default: <provider>:manual)`).option(`--expires-in <duration>`,`Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.`).action(async e=>{await $(async()=>{await jt({provider:e.provider,profileId:e.profileId,expiresIn:e.expiresIn},r)})}),s.command(`login-github-copilot`).description(`Login to GitHub Copilot via GitHub device flow (TTY required)`).option(`--profile-id <id>`,`Auth profile id (default: github-copilot:github)`).option(`--yes`,`Overwrite existing profile without prompting`,!1).action(async e=>{await $(async()=>{await $e({profileId:e.profileId,yes:!!e.yes},r)})});let c=s.command(`order`).description(`Manage per-agent auth profile order overrides`);c.command(`get`).description(`Show per-agent auth order override (from auth-profiles.json)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).option(`--json`,`Output JSON`,!1).action(async(e,t)=>{let n=G(t,`agent`)??e.agent;await $(async()=>{await Bt({provider:e.provider,agent:n,json:!!e.json},r)})}),c.command(`set`).description(`Set per-agent auth order override (locks rotation to this list)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).argument(`<profileIds...>`,`Auth profile ids (e.g. anthropic:default)`).action(async(e,t,n)=>{let i=G(n,`agent`)??t.agent;await $(async()=>{await Ht({provider:t.provider,agent:i,order:e},r)})}),c.command(`clear`).description(`Clear per-agent auth order override (fall back to config/round-robin)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).action(async(e,t)=>{let n=G(t,`agent`)??e.agent;await $(async()=>{await Vt({provider:e.provider,agent:n},r)})})}export{hr as registerModelsCli};
@@ -1 +1 @@
1
- import{A as e,p as t}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import"./auth-profiles-C8rZRS0X.js";import"./agent-scope-DAWJwFfl.js";import"./utils-CGdo13HV.js";import"./openclaw-root-CnsBf6ZU.js";import"./github-copilot-token-C79yeDKS.js";import"./env-overrides-DHtB4kK3.js";import"./version-q3SkUw2K.js";import"./registry-BptzrW8D.js";import"./skills-Bz_S4lPh.js";import"./frontmatter-C7mzDNxd.js";import"./plugins-DNlgeTTc.js";import"./logger-kQAOe3qp.js";import"./exec-B3eleY5O.js";import"./windows-spawn-7oINn5ao.js";import"./redact-CnRxK70G.js";import"./path-alias-guards-kY_ZbWs-.js";import"./errors-6SQWM9dj.js";import"./send-vNcod64S.js";import"./send-CyarIb2w.js";import"./compact-CYbPi7_-.js";import"./paths-BfjJY2VL.js";import"./chat-envelope-Bznn2SoS.js";import"./models-config-DZzS67GS.js";import"./tokens-DRM8vzJx.js";import"./with-timeout-c1CzdShT.js";import"./deliver-SqSusZP3.js";import"./diagnostic-D1H7_8QG.js";import"./send-Dj7NBAWg.js";import"./pi-model-discovery-BPkhPDMr.js";import"./exec-approvals-allowlist-CGjRWREs.js";import"./exec-safe-bin-runtime-policy-v44u39fl.js";import"./model-catalog-mt0IcDfR.js";import"./fetch-B4bz67_N.js";import"./audio-transcription-runner-BIKj1CBU.js";import"./fetch-guard-DaZmvp-L.js";import"./image-BVbOr9yV.js";import"./tool-display-DJDtttQg.js";import"./api-key-rotation-BpEL4aeX.js";import"./proxy-fetch-gWETR3cl.js";import"./ir-DdjufzKF.js";import"./render-DrrPmnMI.js";import"./target-errors-D6wejRd6.js";import"./commands-Dy7duWlt.js";import"./commands-registry-DT6FDUev.js";import"./session-cost-usage-CHtVgnE8.js";import"./session-utils-Bpdyx2A2.js";import"./sqlite-CILF3z9U.js";import"./call-BWx7hNtl.js";import"./pi-tools.policy-B6q8YOfg.js";import"./pairing-store-BaaVy1zB.js";import"./fetch-Dh-apy46.js";import"./skill-commands-DCqPy_Aa.js";import"./workspace-dirs-A8Vib9_B.js";import"./pairing-token-zdbQ951y.js";import"./channel-activity-BhiLsKvM.js";import"./tables-DENKrP-W.js";import"./kill-tree-D6nPx1_o.js";import"./runtime-web-tools-BYhCkBV8.js";import"./runtime-CK7gqwEF.js";import"./node-shell-BVZylVP6.js";import"./stagger-DxzgG2jd.js";import"./channel-selection-BPxE8JR7.js";import"./plugin-auto-enable-adba5Evb.js";import"./send-ChILboDj.js";import"./outbound-attachment-CVcDBkAD.js";import"./delivery-queue-nkPJu0fY.js";import"./send-COpehmAB.js";import"./system-run-command-DsWBVvSK.js";import"./fetch-Ce-scEU-.js";import"./command-secret-targets-BEjtBf5Z.js";import"./connection-auth-CjaeEu5D.js";import"./onboard-helpers-DOlI17Ac.js";import"./prompt-style-BThRSQJR.js";import"./pairing-labels-CZ-aX-up.js";import"./search-manager-CV2YsAym.js";import"./manager-CxZRoQkE.js";import"./memory-cli-C8fBBPgv.js";import{t as n}from"./links-CBnmRP9D.js";import{n as r,t as i}from"./cli-utils-BleB1eys.js";import"./help-format-B4aEI7V9.js";import"./progress-d1m2sqR1.js";import"./exec-approvals-BXO9Cezj.js";import"./provider-env-vars-Dt0Q29Su.js";import"./note-Dp-d_utk.js";import"./clack-prompter-DBPdGdqp.js";import"./issue-format-CN9PHzXY.js";import"./table-CR7TFMew.js";import"./openai-codex-model-default-DuRfnfUm.js";import"./auth-token-DZLZ3d_I.js";import"./logging-B7XHbCNn.js";import{c as a}from"./provider-auth-helpers-BLm2bdp5.js";import"./oauth-tls-preflight-BSBRDIfC.js";import{_ as o,a as s,b as c,c as l,d as u,f as d,g as f,h as p,i as m,l as h,m as g,modelsListCommand as _,modelsStatusCommand as v,n as y,o as b,p as x,r as S,s as C,t as w,u as T,v as E,x as D,y as O}from"./models-BBYqej07.js";function k(e){return r(t,e)}function A(r){let A=r.command(`models`).description(`Model discovery, scanning, and configuration`).option(`--status-json`,"Output JSON (alias for `models status --json`)",!1).option(`--status-plain`,"Plain output (alias for `models status --plain`)",!1).option(`--agent <id>`,`Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)`).addHelpText(`after`,()=>`\n${e.muted(`Docs:`)} ${n(`/cli/models`,`docs.openclaw.ai/cli/models`)}\n`);A.command(`list`).description(`List models (configured by default)`).option(`--all`,`Show full model catalog`,!1).option(`--local`,`Filter to local models`,!1).option(`--provider <name>`,`Filter by provider`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain line output`,!1).action(async e=>{await k(async()=>{await _(e,t)})}),A.command(`status`).description(`Show configured model state`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).option(`--check`,`Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)`,!1).option(`--probe`,`Probe configured provider auth (live)`,!1).option(`--probe-provider <name>`,`Only probe a single provider`).option(`--probe-profile <id>`,`Only probe specific auth profile ids (repeat or comma-separated)`,(e,t)=>{let n=Array.isArray(t)?t:t?[t]:[];return n.push(e),n}).option(`--probe-timeout <ms>`,`Per-probe timeout in ms`).option(`--probe-concurrency <n>`,`Concurrent probes`).option(`--probe-max-tokens <n>`,`Probe max tokens (best-effort)`).option(`--agent <id>`,`Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)`).action(async(e,n)=>{let r=i(n,`agent`)??e.agent;await k(async()=>{await v({json:!!e.json,plain:!!e.plain,check:!!e.check,probe:!!e.probe,probeProvider:e.probeProvider,probeProfile:e.probeProfile,probeTimeout:e.probeTimeout,probeConcurrency:e.probeConcurrency,probeMaxTokens:e.probeMaxTokens,agent:r},t)})}),A.command(`set`).description(`Set the default model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await y(e,t)})}),A.command(`set-image`).description(`Set the image model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await w(e,t)})});let j=A.command(`aliases`).description(`Manage model aliases`);j.command(`list`).description(`List model aliases`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await k(async()=>{await c(e,t)})}),j.command(`add`).description(`Add or update a model alias`).argument(`<alias>`,`Alias name`).argument(`<model>`,`Model id or alias`).action(async(e,n)=>{await k(async()=>{await O(e,n,t)})}),j.command(`remove`).description(`Remove a model alias`).argument(`<alias>`,`Alias name`).action(async e=>{await k(async()=>{await D(e,t)})});let M=A.command(`fallbacks`).description(`Manage model fallback list`);M.command(`list`).description(`List fallback models`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await k(async()=>{await T(e,t)})}),M.command(`add`).description(`Add a fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await l(e,t)})}),M.command(`remove`).description(`Remove a fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await u(e,t)})}),M.command(`clear`).description(`Clear all fallback models`).action(async()=>{await k(async()=>{await h(t)})});let N=A.command(`image-fallbacks`).description(`Manage image model fallback list`);N.command(`list`).description(`List image fallback models`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await k(async()=>{await b(e,t)})}),N.command(`add`).description(`Add an image fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await m(e,t)})}),N.command(`remove`).description(`Remove an image fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await C(e,t)})}),N.command(`clear`).description(`Clear all image fallback models`).action(async()=>{await k(async()=>{await s(t)})}),A.command(`scan`).description(`Scan OpenRouter free models for tools + images`).option(`--min-params <b>`,`Minimum parameter size (billions)`).option(`--max-age-days <days>`,`Skip models older than N days`).option(`--provider <name>`,`Filter by provider prefix`).option(`--max-candidates <n>`,`Max fallback candidates`,`6`).option(`--timeout <ms>`,`Per-probe timeout in ms`).option(`--concurrency <n>`,`Probe concurrency`).option(`--no-probe`,`Skip live probes; list free candidates only`).option(`--yes`,`Accept defaults without prompting`,!1).option(`--no-input`,`Disable prompts (use defaults)`).option(`--set-default`,`Set agents.defaults.model to the first selection`,!1).option(`--set-image`,`Set agents.defaults.imageModel to the first image selection`,!1).option(`--json`,`Output JSON`,!1).action(async e=>{await k(async()=>{await S(e,t)})}),A.action(async e=>{await k(async()=>{await v({json:!!e?.statusJson,plain:!!e?.statusPlain,agent:e?.agent},t)})});let P=A.command(`auth`).description(`Manage model auth profiles`);P.option(`--agent <id>`,`Agent id for auth order get/set/clear`),P.action(()=>{P.help()}),P.command(`add`).description(`Interactive auth helper (setup-token or paste token)`).action(async()=>{await k(async()=>{await p({},t)})}),P.command(`login`).description(`Run a provider plugin auth flow (OAuth/API key)`).option(`--provider <id>`,`Provider id registered by a plugin`).option(`--method <id>`,`Provider auth method id`).option(`--set-default`,`Apply the provider's default model recommendation`,!1).action(async e=>{await k(async()=>{await f({provider:e.provider,method:e.method,setDefault:!!e.setDefault},t)})}),P.command(`setup-token`).description(`Run a provider CLI to create/sync a token (TTY required)`).option(`--provider <name>`,`Provider id (default: anthropic)`).option(`--yes`,`Skip confirmation`,!1).action(async e=>{await k(async()=>{await E({provider:e.provider,yes:!!e.yes},t)})}),P.command(`paste-token`).description(`Paste a token into auth-profiles.json and update config`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--profile-id <id>`,`Auth profile id (default: <provider>:manual)`).option(`--expires-in <duration>`,`Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.`).action(async e=>{await k(async()=>{await o({provider:e.provider,profileId:e.profileId,expiresIn:e.expiresIn},t)})}),P.command(`login-github-copilot`).description(`Login to GitHub Copilot via GitHub device flow (TTY required)`).option(`--profile-id <id>`,`Auth profile id (default: github-copilot:github)`).option(`--yes`,`Overwrite existing profile without prompting`,!1).action(async e=>{await k(async()=>{await a({profileId:e.profileId,yes:!!e.yes},t)})});let F=P.command(`order`).description(`Manage per-agent auth profile order overrides`);F.command(`get`).description(`Show per-agent auth order override (from auth-profiles.json)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).option(`--json`,`Output JSON`,!1).action(async(e,n)=>{let r=i(n,`agent`)??e.agent;await k(async()=>{await x({provider:e.provider,agent:r,json:!!e.json},t)})}),F.command(`set`).description(`Set per-agent auth order override (locks rotation to this list)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).argument(`<profileIds...>`,`Auth profile ids (e.g. anthropic:default)`).action(async(e,n,r)=>{let a=i(r,`agent`)??n.agent;await k(async()=>{await g({provider:n.provider,agent:a,order:e},t)})}),F.command(`clear`).description(`Clear per-agent auth order override (fall back to config/round-robin)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).action(async(e,n)=>{let r=i(n,`agent`)??e.agent;await k(async()=>{await d({provider:e.provider,agent:r},t)})})}export{A as registerModelsCli};
1
+ import{A as e,p as t}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import"./auth-profiles-C8rZRS0X.js";import"./agent-scope-DAWJwFfl.js";import"./utils-CGdo13HV.js";import"./openclaw-root-CnsBf6ZU.js";import"./github-copilot-token-C79yeDKS.js";import"./env-overrides-DHtB4kK3.js";import"./version-q3SkUw2K.js";import"./registry-BptzrW8D.js";import"./skills-Bz_S4lPh.js";import"./frontmatter-C7mzDNxd.js";import"./plugins-DNlgeTTc.js";import"./logger-kQAOe3qp.js";import"./exec-B3eleY5O.js";import"./windows-spawn-7oINn5ao.js";import"./redact-CnRxK70G.js";import"./path-alias-guards-kY_ZbWs-.js";import"./errors-6SQWM9dj.js";import"./send-vNcod64S.js";import"./send-CyarIb2w.js";import"./compact-uyQDx8pN.js";import"./paths-BfjJY2VL.js";import"./chat-envelope-Bznn2SoS.js";import"./models-config-DZzS67GS.js";import"./tokens-DRM8vzJx.js";import"./with-timeout-c1CzdShT.js";import"./deliver-SqSusZP3.js";import"./diagnostic-D1H7_8QG.js";import"./send-Dj7NBAWg.js";import"./pi-model-discovery-BPkhPDMr.js";import"./exec-approvals-allowlist-CGjRWREs.js";import"./exec-safe-bin-runtime-policy-v44u39fl.js";import"./model-catalog-mt0IcDfR.js";import"./fetch-B4bz67_N.js";import"./audio-transcription-runner-BIKj1CBU.js";import"./fetch-guard-DaZmvp-L.js";import"./image-BVbOr9yV.js";import"./tool-display-DJDtttQg.js";import"./api-key-rotation-BpEL4aeX.js";import"./proxy-fetch-gWETR3cl.js";import"./ir-DdjufzKF.js";import"./render-DrrPmnMI.js";import"./target-errors-D6wejRd6.js";import"./commands-Dy7duWlt.js";import"./commands-registry-DT6FDUev.js";import"./session-cost-usage-CHtVgnE8.js";import"./session-utils-Bpdyx2A2.js";import"./sqlite-CILF3z9U.js";import"./call-BWx7hNtl.js";import"./pi-tools.policy-B6q8YOfg.js";import"./pairing-store-BaaVy1zB.js";import"./fetch-Dh-apy46.js";import"./skill-commands-DCqPy_Aa.js";import"./workspace-dirs-A8Vib9_B.js";import"./pairing-token-zdbQ951y.js";import"./channel-activity-BhiLsKvM.js";import"./tables-DENKrP-W.js";import"./kill-tree-D6nPx1_o.js";import"./runtime-web-tools-BYhCkBV8.js";import"./runtime-CK7gqwEF.js";import"./node-shell-BVZylVP6.js";import"./stagger-DxzgG2jd.js";import"./channel-selection-BPxE8JR7.js";import"./plugin-auto-enable-adba5Evb.js";import"./send-ChILboDj.js";import"./outbound-attachment-CVcDBkAD.js";import"./delivery-queue-nkPJu0fY.js";import"./send-COpehmAB.js";import"./system-run-command-DsWBVvSK.js";import"./fetch-Ce-scEU-.js";import"./command-secret-targets-BEjtBf5Z.js";import"./connection-auth-CjaeEu5D.js";import"./onboard-helpers-DOlI17Ac.js";import"./prompt-style-BThRSQJR.js";import"./pairing-labels-CZ-aX-up.js";import"./search-manager-CV2YsAym.js";import"./manager-CxZRoQkE.js";import"./memory-cli-C8fBBPgv.js";import{t as n}from"./links-CBnmRP9D.js";import{n as r,t as i}from"./cli-utils-BleB1eys.js";import"./help-format-B4aEI7V9.js";import"./progress-d1m2sqR1.js";import"./exec-approvals-BXO9Cezj.js";import"./provider-env-vars-Dt0Q29Su.js";import"./note-Dp-d_utk.js";import"./clack-prompter-DBPdGdqp.js";import"./issue-format-CN9PHzXY.js";import"./table-CR7TFMew.js";import"./openai-codex-model-default-DuRfnfUm.js";import"./auth-token-DZLZ3d_I.js";import"./logging-B7XHbCNn.js";import{c as a}from"./provider-auth-helpers-DeCLF5oV.js";import"./oauth-tls-preflight-BSBRDIfC.js";import{_ as o,a as s,b as c,c as l,d as u,f as d,g as f,h as p,i as m,l as h,m as g,modelsListCommand as _,modelsStatusCommand as v,n as y,o as b,p as x,r as S,s as C,t as w,u as T,v as E,x as D,y as O}from"./models-DKf-4KoV.js";function k(e){return r(t,e)}function A(r){let A=r.command(`models`).description(`Model discovery, scanning, and configuration`).option(`--status-json`,"Output JSON (alias for `models status --json`)",!1).option(`--status-plain`,"Plain output (alias for `models status --plain`)",!1).option(`--agent <id>`,`Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)`).addHelpText(`after`,()=>`\n${e.muted(`Docs:`)} ${n(`/cli/models`,`docs.openclaw.ai/cli/models`)}\n`);A.command(`list`).description(`List models (configured by default)`).option(`--all`,`Show full model catalog`,!1).option(`--local`,`Filter to local models`,!1).option(`--provider <name>`,`Filter by provider`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain line output`,!1).action(async e=>{await k(async()=>{await _(e,t)})}),A.command(`status`).description(`Show configured model state`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).option(`--check`,`Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)`,!1).option(`--probe`,`Probe configured provider auth (live)`,!1).option(`--probe-provider <name>`,`Only probe a single provider`).option(`--probe-profile <id>`,`Only probe specific auth profile ids (repeat or comma-separated)`,(e,t)=>{let n=Array.isArray(t)?t:t?[t]:[];return n.push(e),n}).option(`--probe-timeout <ms>`,`Per-probe timeout in ms`).option(`--probe-concurrency <n>`,`Concurrent probes`).option(`--probe-max-tokens <n>`,`Probe max tokens (best-effort)`).option(`--agent <id>`,`Agent id to inspect (overrides OPENCLAW_AGENT_DIR/PI_CODING_AGENT_DIR)`).action(async(e,n)=>{let r=i(n,`agent`)??e.agent;await k(async()=>{await v({json:!!e.json,plain:!!e.plain,check:!!e.check,probe:!!e.probe,probeProvider:e.probeProvider,probeProfile:e.probeProfile,probeTimeout:e.probeTimeout,probeConcurrency:e.probeConcurrency,probeMaxTokens:e.probeMaxTokens,agent:r},t)})}),A.command(`set`).description(`Set the default model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await y(e,t)})}),A.command(`set-image`).description(`Set the image model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await w(e,t)})});let j=A.command(`aliases`).description(`Manage model aliases`);j.command(`list`).description(`List model aliases`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await k(async()=>{await c(e,t)})}),j.command(`add`).description(`Add or update a model alias`).argument(`<alias>`,`Alias name`).argument(`<model>`,`Model id or alias`).action(async(e,n)=>{await k(async()=>{await O(e,n,t)})}),j.command(`remove`).description(`Remove a model alias`).argument(`<alias>`,`Alias name`).action(async e=>{await k(async()=>{await D(e,t)})});let M=A.command(`fallbacks`).description(`Manage model fallback list`);M.command(`list`).description(`List fallback models`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await k(async()=>{await T(e,t)})}),M.command(`add`).description(`Add a fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await l(e,t)})}),M.command(`remove`).description(`Remove a fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await u(e,t)})}),M.command(`clear`).description(`Clear all fallback models`).action(async()=>{await k(async()=>{await h(t)})});let N=A.command(`image-fallbacks`).description(`Manage image model fallback list`);N.command(`list`).description(`List image fallback models`).option(`--json`,`Output JSON`,!1).option(`--plain`,`Plain output`,!1).action(async e=>{await k(async()=>{await b(e,t)})}),N.command(`add`).description(`Add an image fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await m(e,t)})}),N.command(`remove`).description(`Remove an image fallback model`).argument(`<model>`,`Model id or alias`).action(async e=>{await k(async()=>{await C(e,t)})}),N.command(`clear`).description(`Clear all image fallback models`).action(async()=>{await k(async()=>{await s(t)})}),A.command(`scan`).description(`Scan OpenRouter free models for tools + images`).option(`--min-params <b>`,`Minimum parameter size (billions)`).option(`--max-age-days <days>`,`Skip models older than N days`).option(`--provider <name>`,`Filter by provider prefix`).option(`--max-candidates <n>`,`Max fallback candidates`,`6`).option(`--timeout <ms>`,`Per-probe timeout in ms`).option(`--concurrency <n>`,`Probe concurrency`).option(`--no-probe`,`Skip live probes; list free candidates only`).option(`--yes`,`Accept defaults without prompting`,!1).option(`--no-input`,`Disable prompts (use defaults)`).option(`--set-default`,`Set agents.defaults.model to the first selection`,!1).option(`--set-image`,`Set agents.defaults.imageModel to the first image selection`,!1).option(`--json`,`Output JSON`,!1).action(async e=>{await k(async()=>{await S(e,t)})}),A.action(async e=>{await k(async()=>{await v({json:!!e?.statusJson,plain:!!e?.statusPlain,agent:e?.agent},t)})});let P=A.command(`auth`).description(`Manage model auth profiles`);P.option(`--agent <id>`,`Agent id for auth order get/set/clear`),P.action(()=>{P.help()}),P.command(`add`).description(`Interactive auth helper (setup-token or paste token)`).action(async()=>{await k(async()=>{await p({},t)})}),P.command(`login`).description(`Run a provider plugin auth flow (OAuth/API key)`).option(`--provider <id>`,`Provider id registered by a plugin`).option(`--method <id>`,`Provider auth method id`).option(`--set-default`,`Apply the provider's default model recommendation`,!1).action(async e=>{await k(async()=>{await f({provider:e.provider,method:e.method,setDefault:!!e.setDefault},t)})}),P.command(`setup-token`).description(`Run a provider CLI to create/sync a token (TTY required)`).option(`--provider <name>`,`Provider id (default: anthropic)`).option(`--yes`,`Skip confirmation`,!1).action(async e=>{await k(async()=>{await E({provider:e.provider,yes:!!e.yes},t)})}),P.command(`paste-token`).description(`Paste a token into auth-profiles.json and update config`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--profile-id <id>`,`Auth profile id (default: <provider>:manual)`).option(`--expires-in <duration>`,`Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.`).action(async e=>{await k(async()=>{await o({provider:e.provider,profileId:e.profileId,expiresIn:e.expiresIn},t)})}),P.command(`login-github-copilot`).description(`Login to GitHub Copilot via GitHub device flow (TTY required)`).option(`--profile-id <id>`,`Auth profile id (default: github-copilot:github)`).option(`--yes`,`Overwrite existing profile without prompting`,!1).action(async e=>{await k(async()=>{await a({profileId:e.profileId,yes:!!e.yes},t)})});let F=P.command(`order`).description(`Manage per-agent auth profile order overrides`);F.command(`get`).description(`Show per-agent auth order override (from auth-profiles.json)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).option(`--json`,`Output JSON`,!1).action(async(e,n)=>{let r=i(n,`agent`)??e.agent;await k(async()=>{await x({provider:e.provider,agent:r,json:!!e.json},t)})}),F.command(`set`).description(`Set per-agent auth order override (locks rotation to this list)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).argument(`<profileIds...>`,`Auth profile ids (e.g. anthropic:default)`).action(async(e,n,r)=>{let a=i(r,`agent`)??n.agent;await k(async()=>{await g({provider:n.provider,agent:a,order:e},t)})}),F.command(`clear`).description(`Clear per-agent auth order override (fall back to config/round-robin)`).requiredOption(`--provider <name>`,`Provider id (e.g. anthropic)`).option(`--agent <id>`,`Agent id (default: configured default agent)`).action(async(e,n)=>{let r=i(n,`agent`)??e.agent;await k(async()=>{await d({provider:e.provider,agent:r},t)})})}export{A as registerModelsCli};
@@ -1 +1 @@
1
- import{t as e}from"./subsystem-C5XF2Fy5.js";import{qs as t}from"./model-selection-BLbnMb5E.js";import{at as n,ot as r}from"./reply-DwfVhea1.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-BLbnMb5E.js";import{at as n,ot as r}from"./reply-mWIMy_ju.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{t as e}from"./subsystem-BLbY429l.js";import{jo as t}from"./auth-profiles-C8rZRS0X.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-CYbPi7_-.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-C8rZRS0X.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-uyQDx8pN.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,5 +1,5 @@
1
- import{m as e,p as t}from"./subsystem-BLbY429l.js";import{u as n}from"./paths-BjD3T_xq.js";import{Bo as r,Fo as i}from"./auth-profiles-C8rZRS0X.js";import{t as a}from"./command-format-CLxIPuLR.js";import{v as o}from"./utils-CGdo13HV.js";import{s}from"./types.secrets-D4tbc3Wq.js";import{At as c}from"./plugins-DNlgeTTc.js";import{a as l,b as u,c as d,g as f,h as p,n as m,t as h,u as g}from"./onboard-helpers-DOlI17Ac.js";import{t as _}from"./prompts-CMzglboN.js";import{t as v}from"./clack-prompter-DBPdGdqp.js";import{t as y}from"./runtime-guard-DX2Ie4ri.js";import"./daemon-runtime-VcpeBRJV.js";import{t as b}from"./onboarding-CxRTJCBM.js";import{n as x}from"./logging-B7XHbCNn.js";import{i as S,r as C,t as w}from"./onboard-provider-auth-flags-CqbipO7D.js";import{t as T}from"./onboard-config-B7U20YRw.js";async function E(n,r=t){let i=v(),a=null;try{await b(n,r,i)}catch(e){if(e instanceof _){a=1;return}throw e}finally{e(`onboarding finish`,{resumeStdinIfPaused:!1}),a!==null&&r.exit(a)}}function D(e){return typeof e==`string`?e.trim().length>0:!!e}function O(e){let t=w.filter(({optionKey:t})=>D(e[t])).map(e=>({optionKey:e.optionKey,authChoice:e.authChoice,label:e.cliFlag}));return(D(e.customBaseUrl)||D(e.customModelId)||D(e.customApiKey))&&t.push({optionKey:`customBaseUrl`,authChoice:`custom-api-key`,label:`--custom-base-url/--custom-model-id/--custom-api-key`}),{choice:t[0]?.authChoice,matches:t}}function k(e){let{opts:t,runtime:n}=e,r=t.gatewayPort!==void 0;if(r&&(!Number.isFinite(t.gatewayPort)||(t.gatewayPort??0)<=0))return n.error(`Invalid --gateway-port`),n.exit(1),null;let i=r?t.gatewayPort:e.defaultPort,a=t.gatewayBind??`loopback`,o=t.gatewayAuth??`token`;if(o!==`token`&&o!==`password`)return n.error(`Invalid --gateway-auth (use token|password).`),n.exit(1),null;let l=o,u=t.tailscale??`off`,d=!!t.tailscaleResetOnExit;u!==`off`&&a!==`loopback`&&(a=`loopback`),u===`funnel`&&l!==`password`&&(l=`password`);let f=e.nextConfig,m=g(t.gatewayToken),h=g(process.env.OPENCLAW_GATEWAY_TOKEN),_=m||h||void 0,v=String(t.gatewayTokenRefEnv??``).trim();if(l===`token`)if(v){if(!s(v))return n.error(`Invalid --gateway-token-ref-env (use env var name like OPENCLAW_GATEWAY_TOKEN).`),n.exit(1),null;if(m)return n.error(`Use either --gateway-token or --gateway-token-ref-env, not both.`),n.exit(1),null;let e=process.env[v]?.trim();if(!e)return n.error(`Environment variable "${v}" is missing or empty.`),n.exit(1),null;_=e,f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`token`,token:{source:`env`,provider:c(f,`env`,{preferFirstProviderForSource:!0}),id:v}}}}}else _||=p(),f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`token`,token:_}}};if(l===`password`){let e=t.gatewayPassword?.trim();if(!e)return n.error(`Missing --gateway-password for password auth.`),n.exit(1),null;f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`password`,password:e}}}}return f={...f,gateway:{...f.gateway,port:i,bind:a,tailscale:{...f.gateway?.tailscale,mode:u,resetOnExit:d}}},{nextConfig:f,port:i,bind:a,authMode:l,tailscaleMode:u,tailscaleResetOnExit:d,gatewayToken:_}}function A(e){e.opts.json&&e.runtime.log(JSON.stringify({mode:e.mode,workspace:e.workspaceDir,authChoice:e.authChoice,gateway:e.gateway,installDaemon:!!e.installDaemon,daemonRuntime:e.daemonRuntime,skipSkills:!!e.skipSkills,skipHealth:!!e.skipHealth},null,2))}function j(e){let{nextConfig:t,opts:n,runtime:r}=e;if(n.skipSkills)return t;let i=n.nodeManager??`npm`;return[`npm`,`pnpm`,`bun`].includes(i)?{...t,skills:{...t.skills,install:{...t.skills?.install,nodeManager:i}}}:(r.error(`Invalid --node-manager (use npm, pnpm, or bun)`),r.exit(1),t)}function M(e){return o((e.opts.workspace??e.baseConfig.agents?.defaults?.workspace??e.defaultWorkspaceDir).trim())}async function N(e){let{opts:t,runtime:i,baseConfig:o}=e,s=`local`,c=M({opts:t,baseConfig:o,defaultWorkspaceDir:h}),d=T(o,c),p=O(t);if(!t.authChoice&&p.matches.length>1){i.error([`Multiple API key flags were provided for non-interactive onboarding.`,`Use a single provider flag or pass --auth-choice explicitly.`,`Flags: ${p.matches.map(e=>e.label).join(`, `)}`].join(`
2
- `)),i.exit(1);return}let g=t.authChoice??p.choice??`skip`;if(g!==`skip`){let{applyNonInteractiveAuthChoice:e}=await import(`./auth-choice-DDsPJF6F.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-CMNtsW5o.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-CIZFVJEG.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(`
1
+ import{m as e,p as t}from"./subsystem-BLbY429l.js";import{u as n}from"./paths-BjD3T_xq.js";import{Bo as r,Fo as i}from"./auth-profiles-C8rZRS0X.js";import{t as a}from"./command-format-CLxIPuLR.js";import{v as o}from"./utils-CGdo13HV.js";import{s}from"./types.secrets-D4tbc3Wq.js";import{At as c}from"./plugins-DNlgeTTc.js";import{a as l,b as u,c as d,g as f,h as p,n as m,t as h,u as g}from"./onboard-helpers-DOlI17Ac.js";import{t as _}from"./prompts-CMzglboN.js";import{t as v}from"./clack-prompter-DBPdGdqp.js";import{t as y}from"./runtime-guard-DX2Ie4ri.js";import"./daemon-runtime-VcpeBRJV.js";import{t as b}from"./onboarding-DCldCoVy.js";import{n as x}from"./logging-B7XHbCNn.js";import{i as S,r as C,t as w}from"./onboard-provider-auth-flags-CqbipO7D.js";import{t as T}from"./onboard-config-B7U20YRw.js";async function E(n,r=t){let i=v(),a=null;try{await b(n,r,i)}catch(e){if(e instanceof _){a=1;return}throw e}finally{e(`onboarding finish`,{resumeStdinIfPaused:!1}),a!==null&&r.exit(a)}}function D(e){return typeof e==`string`?e.trim().length>0:!!e}function O(e){let t=w.filter(({optionKey:t})=>D(e[t])).map(e=>({optionKey:e.optionKey,authChoice:e.authChoice,label:e.cliFlag}));return(D(e.customBaseUrl)||D(e.customModelId)||D(e.customApiKey))&&t.push({optionKey:`customBaseUrl`,authChoice:`custom-api-key`,label:`--custom-base-url/--custom-model-id/--custom-api-key`}),{choice:t[0]?.authChoice,matches:t}}function k(e){let{opts:t,runtime:n}=e,r=t.gatewayPort!==void 0;if(r&&(!Number.isFinite(t.gatewayPort)||(t.gatewayPort??0)<=0))return n.error(`Invalid --gateway-port`),n.exit(1),null;let i=r?t.gatewayPort:e.defaultPort,a=t.gatewayBind??`loopback`,o=t.gatewayAuth??`token`;if(o!==`token`&&o!==`password`)return n.error(`Invalid --gateway-auth (use token|password).`),n.exit(1),null;let l=o,u=t.tailscale??`off`,d=!!t.tailscaleResetOnExit;u!==`off`&&a!==`loopback`&&(a=`loopback`),u===`funnel`&&l!==`password`&&(l=`password`);let f=e.nextConfig,m=g(t.gatewayToken),h=g(process.env.OPENCLAW_GATEWAY_TOKEN),_=m||h||void 0,v=String(t.gatewayTokenRefEnv??``).trim();if(l===`token`)if(v){if(!s(v))return n.error(`Invalid --gateway-token-ref-env (use env var name like OPENCLAW_GATEWAY_TOKEN).`),n.exit(1),null;if(m)return n.error(`Use either --gateway-token or --gateway-token-ref-env, not both.`),n.exit(1),null;let e=process.env[v]?.trim();if(!e)return n.error(`Environment variable "${v}" is missing or empty.`),n.exit(1),null;_=e,f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`token`,token:{source:`env`,provider:c(f,`env`,{preferFirstProviderForSource:!0}),id:v}}}}}else _||=p(),f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`token`,token:_}}};if(l===`password`){let e=t.gatewayPassword?.trim();if(!e)return n.error(`Missing --gateway-password for password auth.`),n.exit(1),null;f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`password`,password:e}}}}return f={...f,gateway:{...f.gateway,port:i,bind:a,tailscale:{...f.gateway?.tailscale,mode:u,resetOnExit:d}}},{nextConfig:f,port:i,bind:a,authMode:l,tailscaleMode:u,tailscaleResetOnExit:d,gatewayToken:_}}function A(e){e.opts.json&&e.runtime.log(JSON.stringify({mode:e.mode,workspace:e.workspaceDir,authChoice:e.authChoice,gateway:e.gateway,installDaemon:!!e.installDaemon,daemonRuntime:e.daemonRuntime,skipSkills:!!e.skipSkills,skipHealth:!!e.skipHealth},null,2))}function j(e){let{nextConfig:t,opts:n,runtime:r}=e;if(n.skipSkills)return t;let i=n.nodeManager??`npm`;return[`npm`,`pnpm`,`bun`].includes(i)?{...t,skills:{...t.skills,install:{...t.skills?.install,nodeManager:i}}}:(r.error(`Invalid --node-manager (use npm, pnpm, or bun)`),r.exit(1),t)}function M(e){return o((e.opts.workspace??e.baseConfig.agents?.defaults?.workspace??e.defaultWorkspaceDir).trim())}async function N(e){let{opts:t,runtime:i,baseConfig:o}=e,s=`local`,c=M({opts:t,baseConfig:o,defaultWorkspaceDir:h}),d=T(o,c),p=O(t);if(!t.authChoice&&p.matches.length>1){i.error([`Multiple API key flags were provided for non-interactive onboarding.`,`Use a single provider flag or pass --auth-choice explicitly.`,`Flags: ${p.matches.map(e=>e.label).join(`, `)}`].join(`
2
+ `)),i.exit(1);return}let g=t.authChoice??p.choice??`skip`;if(g!==`skip`){let{applyNonInteractiveAuthChoice:e}=await import(`./auth-choice-DDsPJF6F.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-CMNtsW5o.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-Dmtcw9K8.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
5
  `)),l.nonInteractive){await F(l,n);return}await E(l,n)}export{L as t};
@@ -1,5 +1,5 @@
1
- import{u as e}from"./paths-B4IRk3wi.js";import{m as t,p as n}from"./subsystem-C5XF2Fy5.js";import{y as r}from"./utils-UGOV_184.js";import{Zs as i,nc as a}from"./model-selection-BLbnMb5E.js";import{s as o}from"./types.secrets-C-5U96pc.js";import{t as s}from"./command-format-BbDT1tlm.js";import{At as c}from"./plugins-CYLrFT4h.js";import{a as l,b as u,c as d,g as f,h as p,n as m,t as h,u as g}from"./onboard-helpers-D90u4wVK.js";import{t as _}from"./runtime-guard-DFYBaYZS.js";import{t as v}from"./prompts-wv-lfVrJ.js";import{t as y}from"./clack-prompter-Dq0aY6iM.js";import"./daemon-runtime-DHiDbRuC.js";import{t as b}from"./onboarding-m-m__16h.js";import{n as x}from"./logging-CbMVr2MA.js";import{i as S,r as C,t as w}from"./onboard-provider-auth-flags-Dvwzdz37.js";import{t as T}from"./onboard-config-DS9dUv8M.js";async function E(e,r=n){let i=y(),a=null;try{await b(e,r,i)}catch(e){if(e instanceof v){a=1;return}throw e}finally{t(`onboarding finish`,{resumeStdinIfPaused:!1}),a!==null&&r.exit(a)}}function D(e){return typeof e==`string`?e.trim().length>0:!!e}function O(e){let t=w.filter(({optionKey:t})=>D(e[t])).map(e=>({optionKey:e.optionKey,authChoice:e.authChoice,label:e.cliFlag}));return(D(e.customBaseUrl)||D(e.customModelId)||D(e.customApiKey))&&t.push({optionKey:`customBaseUrl`,authChoice:`custom-api-key`,label:`--custom-base-url/--custom-model-id/--custom-api-key`}),{choice:t[0]?.authChoice,matches:t}}function k(e){let{opts:t,runtime:n}=e,r=t.gatewayPort!==void 0;if(r&&(!Number.isFinite(t.gatewayPort)||(t.gatewayPort??0)<=0))return n.error(`Invalid --gateway-port`),n.exit(1),null;let i=r?t.gatewayPort:e.defaultPort,a=t.gatewayBind??`loopback`,s=t.gatewayAuth??`token`;if(s!==`token`&&s!==`password`)return n.error(`Invalid --gateway-auth (use token|password).`),n.exit(1),null;let l=s,u=t.tailscale??`off`,d=!!t.tailscaleResetOnExit;u!==`off`&&a!==`loopback`&&(a=`loopback`),u===`funnel`&&l!==`password`&&(l=`password`);let f=e.nextConfig,m=g(t.gatewayToken),h=g(process.env.OPENCLAW_GATEWAY_TOKEN),_=m||h||void 0,v=String(t.gatewayTokenRefEnv??``).trim();if(l===`token`)if(v){if(!o(v))return n.error(`Invalid --gateway-token-ref-env (use env var name like OPENCLAW_GATEWAY_TOKEN).`),n.exit(1),null;if(m)return n.error(`Use either --gateway-token or --gateway-token-ref-env, not both.`),n.exit(1),null;let e=process.env[v]?.trim();if(!e)return n.error(`Environment variable "${v}" is missing or empty.`),n.exit(1),null;_=e,f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`token`,token:{source:`env`,provider:c(f,`env`,{preferFirstProviderForSource:!0}),id:v}}}}}else _||=p(),f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`token`,token:_}}};if(l===`password`){let e=t.gatewayPassword?.trim();if(!e)return n.error(`Missing --gateway-password for password auth.`),n.exit(1),null;f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`password`,password:e}}}}return f={...f,gateway:{...f.gateway,port:i,bind:a,tailscale:{...f.gateway?.tailscale,mode:u,resetOnExit:d}}},{nextConfig:f,port:i,bind:a,authMode:l,tailscaleMode:u,tailscaleResetOnExit:d,gatewayToken:_}}function A(e){e.opts.json&&e.runtime.log(JSON.stringify({mode:e.mode,workspace:e.workspaceDir,authChoice:e.authChoice,gateway:e.gateway,installDaemon:!!e.installDaemon,daemonRuntime:e.daemonRuntime,skipSkills:!!e.skipSkills,skipHealth:!!e.skipHealth},null,2))}function j(e){let{nextConfig:t,opts:n,runtime:r}=e;if(n.skipSkills)return t;let i=n.nodeManager??`npm`;return[`npm`,`pnpm`,`bun`].includes(i)?{...t,skills:{...t.skills,install:{...t.skills?.install,nodeManager:i}}}:(r.error(`Invalid --node-manager (use npm, pnpm, or bun)`),r.exit(1),t)}function M(e){return r((e.opts.workspace??e.baseConfig.agents?.defaults?.workspace??e.defaultWorkspaceDir).trim())}async function N(t){let{opts:n,runtime:r,baseConfig:i}=t,o=`local`,c=M({opts:n,baseConfig:i,defaultWorkspaceDir:h}),d=T(i,c),p=O(n);if(!n.authChoice&&p.matches.length>1){r.error([`Multiple API key flags were provided for non-interactive onboarding.`,`Use a single provider flag or pass --auth-choice explicitly.`,`Flags: ${p.matches.map(e=>e.label).join(`, `)}`].join(`
2
- `)),r.exit(1);return}let g=n.authChoice??p.choice??`skip`;if(g!==`skip`){let{applyNonInteractiveAuthChoice:e}=await import(`./auth-choice-Dy0jIOLV.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-D2gMiA0p.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-B_-ZE5FK.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(`
1
+ import{u as e}from"./paths-B4IRk3wi.js";import{m as t,p as n}from"./subsystem-C5XF2Fy5.js";import{y as r}from"./utils-UGOV_184.js";import{Zs as i,nc as a}from"./model-selection-BLbnMb5E.js";import{s as o}from"./types.secrets-C-5U96pc.js";import{t as s}from"./command-format-BbDT1tlm.js";import{At as c}from"./plugins-CYLrFT4h.js";import{a as l,b as u,c as d,g as f,h as p,n as m,t as h,u as g}from"./onboard-helpers-D90u4wVK.js";import{t as _}from"./runtime-guard-DFYBaYZS.js";import{t as v}from"./prompts-wv-lfVrJ.js";import{t as y}from"./clack-prompter-Dq0aY6iM.js";import"./daemon-runtime-DHiDbRuC.js";import{t as b}from"./onboarding-C7vbkuBI.js";import{n as x}from"./logging-CbMVr2MA.js";import{i as S,r as C,t as w}from"./onboard-provider-auth-flags-Dvwzdz37.js";import{t as T}from"./onboard-config-DS9dUv8M.js";async function E(e,r=n){let i=y(),a=null;try{await b(e,r,i)}catch(e){if(e instanceof v){a=1;return}throw e}finally{t(`onboarding finish`,{resumeStdinIfPaused:!1}),a!==null&&r.exit(a)}}function D(e){return typeof e==`string`?e.trim().length>0:!!e}function O(e){let t=w.filter(({optionKey:t})=>D(e[t])).map(e=>({optionKey:e.optionKey,authChoice:e.authChoice,label:e.cliFlag}));return(D(e.customBaseUrl)||D(e.customModelId)||D(e.customApiKey))&&t.push({optionKey:`customBaseUrl`,authChoice:`custom-api-key`,label:`--custom-base-url/--custom-model-id/--custom-api-key`}),{choice:t[0]?.authChoice,matches:t}}function k(e){let{opts:t,runtime:n}=e,r=t.gatewayPort!==void 0;if(r&&(!Number.isFinite(t.gatewayPort)||(t.gatewayPort??0)<=0))return n.error(`Invalid --gateway-port`),n.exit(1),null;let i=r?t.gatewayPort:e.defaultPort,a=t.gatewayBind??`loopback`,s=t.gatewayAuth??`token`;if(s!==`token`&&s!==`password`)return n.error(`Invalid --gateway-auth (use token|password).`),n.exit(1),null;let l=s,u=t.tailscale??`off`,d=!!t.tailscaleResetOnExit;u!==`off`&&a!==`loopback`&&(a=`loopback`),u===`funnel`&&l!==`password`&&(l=`password`);let f=e.nextConfig,m=g(t.gatewayToken),h=g(process.env.OPENCLAW_GATEWAY_TOKEN),_=m||h||void 0,v=String(t.gatewayTokenRefEnv??``).trim();if(l===`token`)if(v){if(!o(v))return n.error(`Invalid --gateway-token-ref-env (use env var name like OPENCLAW_GATEWAY_TOKEN).`),n.exit(1),null;if(m)return n.error(`Use either --gateway-token or --gateway-token-ref-env, not both.`),n.exit(1),null;let e=process.env[v]?.trim();if(!e)return n.error(`Environment variable "${v}" is missing or empty.`),n.exit(1),null;_=e,f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`token`,token:{source:`env`,provider:c(f,`env`,{preferFirstProviderForSource:!0}),id:v}}}}}else _||=p(),f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`token`,token:_}}};if(l===`password`){let e=t.gatewayPassword?.trim();if(!e)return n.error(`Missing --gateway-password for password auth.`),n.exit(1),null;f={...f,gateway:{...f.gateway,auth:{...f.gateway?.auth,mode:`password`,password:e}}}}return f={...f,gateway:{...f.gateway,port:i,bind:a,tailscale:{...f.gateway?.tailscale,mode:u,resetOnExit:d}}},{nextConfig:f,port:i,bind:a,authMode:l,tailscaleMode:u,tailscaleResetOnExit:d,gatewayToken:_}}function A(e){e.opts.json&&e.runtime.log(JSON.stringify({mode:e.mode,workspace:e.workspaceDir,authChoice:e.authChoice,gateway:e.gateway,installDaemon:!!e.installDaemon,daemonRuntime:e.daemonRuntime,skipSkills:!!e.skipSkills,skipHealth:!!e.skipHealth},null,2))}function j(e){let{nextConfig:t,opts:n,runtime:r}=e;if(n.skipSkills)return t;let i=n.nodeManager??`npm`;return[`npm`,`pnpm`,`bun`].includes(i)?{...t,skills:{...t.skills,install:{...t.skills?.install,nodeManager:i}}}:(r.error(`Invalid --node-manager (use npm, pnpm, or bun)`),r.exit(1),t)}function M(e){return r((e.opts.workspace??e.baseConfig.agents?.defaults?.workspace??e.defaultWorkspaceDir).trim())}async function N(t){let{opts:n,runtime:r,baseConfig:i}=t,o=`local`,c=M({opts:n,baseConfig:i,defaultWorkspaceDir:h}),d=T(i,c),p=O(n);if(!n.authChoice&&p.matches.length>1){r.error([`Multiple API key flags were provided for non-interactive onboarding.`,`Use a single provider flag or pass --auth-choice explicitly.`,`Flags: ${p.matches.map(e=>e.label).join(`, `)}`].join(`
2
+ `)),r.exit(1);return}let g=n.authChoice??p.choice??`skip`;if(g!==`skip`){let{applyNonInteractiveAuthChoice:e}=await import(`./auth-choice-Dy0jIOLV.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-D2gMiA0p.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-2MbtCw6U.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
5
  `)),l.nonInteractive){await F(l,t);return}await E(l,t)}export{L as t};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{t}from"./subsystem-BLbY429l.js";import{Bn as n,Rn as r,zn as i}from"./auth-profiles-C8rZRS0X.js";import{t as a}from"./command-format-CLxIPuLR.js";import{d as o,f as s}from"./agent-scope-DAWJwFfl.js";import{_ as c,g as l}from"./session-key-C7F_iqYg.js";import{m as u,p as d,t as f}from"./utils-CGdo13HV.js";import{a as p}from"./types.secrets-D4tbc3Wq.js";import{i as m,o as h,r as g}from"./registry-BptzrW8D.js";import{g as _}from"./skills-Bz_S4lPh.js";import{D as v,E as y,H as b,O as x,T as ee,V as S,W as te,a as ne,at as C,c as w,ft as T,gt as E,ht as D,it as O,l as k,lt as re,n as ie,ot as ae,t as A,u as j,ut as oe}from"./plugins-DNlgeTTc.js";import{t as M}from"./exec-B3eleY5O.js";import{dt as N}from"./send-CyarIb2w.js";import{Dn as se,On as ce,c as le,g as ue,l as de,x as fe}from"./compact-CYbPi7_-.js";import{a as pe,n as me}from"./plugin-auto-enable-adba5Evb.js";import{o as he}from"./send-COpehmAB.js";import{r as P}from"./onboard-helpers-DOlI17Ac.js";import{t as F}from"./links-CBnmRP9D.js";import{t as ge}from"./login-CcYeF5T_.js";import{t as _e}from"./brew-DDPm_HfE.js";import{n as ve,r as ye,t as be}from"./api-BeG0ObSq.js";import{t as I}from"./enable-PO3qN4Lf.js";import{s as xe}from"./install-safe-path-C6kc_8NW.js";import{a as Se,i as Ce,n as we,s as Te,t as Ee}from"./installs-CKzq-YqL.js";import{n as De}from"./plugin-install-plan-sIOiMBS1.js";import{c as Oe,s as ke}from"./auth-choice.apply-helpers-D911bYcw.js";import Ae from"node:os";import L from"node:path";import je,{createWriteStream as Me}from"node:fs";import R from"node:fs/promises";import{pipeline as Ne}from"node:stream/promises";import{request as Pe}from"node:https";function Fe(e){let t=new Set;t.add(L.join(process.cwd(),`.git`)),e&&e!==process.cwd()&&t.add(L.join(e,`.git`));for(let e of t)if(je.existsSync(e))return!0;return!1}function Ie(e,t,n){if(!n)return null;let r=e.install.localPath?.trim();if(!r)return null;let i=new Set;i.add(L.resolve(process.cwd(),r)),t&&t!==process.cwd()&&i.add(L.resolve(t,r));for(let e of i)if(je.existsSync(e))return e;return null}function Le(e,t){let n=e.plugins?.load?.paths??[],r=Array.from(new Set([...n,t]));return{...e,plugins:{...e.plugins,load:{...e.plugins?.load,paths:r}}}}async function Re(e){let{entry:t,localPath:n,prompter:r,defaultChoice:i}=e,a=n?[{value:`local`,label:`Use local plugin path`,hint:n}]:[],o=[{value:`npm`,label:`Download from npm (${t.install.npmSpec})`},...a,{value:`skip`,label:`Skip for now`}],s=i===`local`&&!n?`npm`:i;return await r.select({message:`Install ${t.meta.label} plugin?`,options:o,initialValue:s})}function ze(e){let{cfg:t,entry:n,localPath:r,bundledLocalPath:i}=e;if(i)return`local`;let a=t.update?.channel;if(a===`dev`)return r?`local`:`npm`;if(a===`stable`||a===`beta`)return`npm`;let o=n.install.defaultChoice;return o===`local`?r?`local`:`npm`:o===`npm`?`npm`:r?`local`:`npm`}async function Be(e){let{entry:t,prompter:n,runtime:r,workspaceDir:i}=e,a=e.cfg,o=Fe(i),s=Se({workspaceDir:i}),c=De({pluginId:t.id,npmSpec:t.install.npmSpec,findBundledSource:e=>Ce({bundled:s,lookup:e})})?.bundledSource.localPath??null,l=c??Ie(t,i,o),u=await Re({entry:t,localPath:l,defaultChoice:ze({cfg:a,entry:t,localPath:l,bundledLocalPath:c}),prompter:n});if(u===`skip`)return{cfg:a,installed:!1};if(u===`local`&&l)return a=Le(a,l),a=I(a,t.id).config,{cfg:a,installed:!0};let d=await Te({spec:t.install.npmSpec,logger:{info:e=>r.log?.(e),warn:e=>r.log?.(e)}});return d.ok?(a=I(a,d.pluginId).config,a=we(a,{pluginId:d.pluginId,source:`npm`,spec:t.install.npmSpec,installPath:d.targetDir,version:d.version,...Ee(d.npmResolution)}),{cfg:a,installed:!0}):(await n.note(`Failed to install ${t.install.npmSpec}: ${d.error}`,`Plugin install`),l&&await n.confirm({message:`Use local plugin path instead? (${l})`,initialValue:!0})?(a=Le(a,l),a=I(a,t.id).config,{cfg:a,installed:!0}):(r.error?.(`Plugin install failed: ${d.error}`),{cfg:a,installed:!1}))}function Ve(e){_();let n=e.workspaceDir??o(e.cfg,s(e.cfg)),r=t(`plugins`);de({config:e.cfg,workspaceDir:n,cache:!1,logger:le(r)})}async function He(e){let t=e.listAccountIds(e.cfg),n=e.currentId?.trim()||e.defaultAccountId||`default`,r=await e.prompter.select({message:`${e.label} account`,options:[...t.map(e=>({value:e,label:e===`default`?`default (primary)`:e})),{value:`__new__`,label:`Add a new account`}],initialValue:n});if(r!==`__new__`)return c(r);let i=await e.prompter.text({message:`New ${e.label} account id`,validate:e=>e?.trim()?void 0:`Required`}),a=c(String(i));return String(i).trim()!==a&&await e.prompter.note(`Normalized account id to "${a}".`,`${e.label} account`),a}const Ue=async e=>await He(e);function We(e){let t=(e??[]).map(e=>String(e).trim()).filter(Boolean);return t.includes(`*`)||t.push(`*`),t}function Ge(e,t){let n=[...e??[],...t].map(e=>String(e).trim()).filter(Boolean);return[...new Set(n)]}function z(e){return e.split(/[\n,;]+/g).map(e=>e.trim()).filter(Boolean)}function Ke(e,t){let n=z(String(e??``)),r=[];for(let e of n){let n=t(e);if(`error`in n)return{entries:[],error:n.error};r.push(n.value)}return{entries:B(r)}}function qe(e,t){return Ke(e,e=>e===`*`?{value:`*`}:t(e))}function Je(e){let t=e.value.trim();if(!t)return null;let n=t.match(e.mentionPattern);if(n?.[1])return e.normalizeId?e.normalizeId(n[1]):n[1];let r=e.prefixPattern?t.replace(e.prefixPattern,``):t;return e.idPattern.test(r)?e.normalizeId?e.normalizeId(r):r:null}function B(e,t){let n=e.map(e=>String(e).trim()).filter(Boolean).map(e=>{if(e===`*`)return`*`;if(!t)return e;let n=t(e);return typeof n==`string`?n.trim():``}).filter(Boolean);return[...new Set(n)]}function V(e){return e.accountId?.trim()?c(e.accountId):e.defaultAccountId}async function H(e){let t=e.accountOverride?.trim(),n=t?c(t):e.defaultAccountId;return e.shouldPromptAccountIds&&!t&&(n=await Ue({cfg:e.cfg,prompter:e.prompter,label:e.label,currentId:n,listAccountIds:e.listAccountIds,defaultAccountId:e.defaultAccountId})),n}function Ye(e){let{cfg:t,channel:n,accountId:r,allowFrom:i}=e;return tt({cfg:t,channel:n,accountId:r,patch:{allowFrom:i},ensureEnabled:!1})}function Xe(e){let{cfg:t,channel:n,dmPolicy:r}=e,i=r===`open`?We(t.channels?.[n]?.allowFrom):void 0;return{...t,channels:{...t.channels,[n]:{...t.channels?.[n],dmPolicy:r,...i?{allowFrom:i}:{}}}}}function Ze(e){let t=e.cfg.channels?.[e.channel]??{allowFrom:void 0,dm:void 0},n=t.allowFrom??t.dm?.allowFrom,r=e.dmPolicy===`open`?We(n):void 0;return et({cfg:e.cfg,channel:e.channel,patch:{dmPolicy:e.dmPolicy,...r?{allowFrom:r}:{}}})}function Qe(e){return et({cfg:e.cfg,channel:e.channel,patch:{allowFrom:e.allowFrom}})}function $e(e){return W({cfg:e.cfg,channel:e.channel,accountId:e.accountId,patch:{groupPolicy:e.groupPolicy}})}function et(e){let{cfg:t,channel:n,patch:r}=e,i=t.channels?.[n]??{},a=i.dm??{};return{...t,channels:{...t.channels,[n]:{...i,...r,dm:{...a,enabled:typeof a.enabled==`boolean`?a.enabled:!0}}}}}function U(e,t,n){let r=e.channels?.[t]??{};return{...e,channels:{...e.channels,[t]:{...r,enabled:n}}}}function tt(e){let{cfg:t,channel:n,accountId:r,patch:i,ensureEnabled:a}=e;return ye({cfg:r===`default`?t:ve({cfg:t,channelKey:n}),channelKey:n,accountId:r,patch:i,ensureChannelEnabled:a,ensureAccountEnabled:a})}function W(e){return tt({...e,ensureEnabled:!0})}function G(e){let t=e.cfg;return e.tokenResult.useEnv&&(t=W({cfg:t,channel:e.channel,accountId:e.accountId,patch:{}})),e.tokenResult.token&&(t=W({cfg:t,channel:e.channel,accountId:e.accountId,patch:{[e.tokenPatchKey]:e.tokenResult.token}})),t}function nt(e){return{accountConfigured:e.accountConfigured,hasConfigToken:e.hasConfigToken,canUseEnv:e.allowEnv&&!!e.envValue?.trim()&&!e.hasConfigToken}}async function rt(e){let t=async()=>String(await e.prompter.text({message:e.inputPrompt,validate:e=>e?.trim()?void 0:`Required`})).trim();return e.canUseEnv?await e.prompter.confirm({message:e.envPrompt,initialValue:!0})?{useEnv:!0,token:null}:{useEnv:!1,token:await t()}:e.hasConfigToken&&e.accountConfigured&&await e.prompter.confirm({message:e.keepPrompt,initialValue:!0})?{useEnv:!1,token:null}:{useEnv:!1,token:await t()}}async function K(e){let t=nt({accountConfigured:e.accountConfigured,hasConfigToken:e.hasConfigToken,allowEnv:e.allowEnv,envValue:e.envValue});!t.accountConfigured&&e.onMissingConfigured&&await e.onMissingConfigured();let n=await it({cfg:e.cfg,prompter:e.prompter,providerHint:e.providerHint,credentialLabel:e.credentialLabel,secretInputMode:e.secretInputMode,accountConfigured:t.accountConfigured,canUseEnv:t.canUseEnv,hasConfigToken:t.hasConfigToken,envPrompt:e.envPrompt,keepPrompt:e.keepPrompt,inputPrompt:e.inputPrompt,preferredEnvVar:e.preferredEnvVar});return n.action===`use-env`?{cfg:e.applyUseEnv?await e.applyUseEnv(e.cfg):e.cfg,action:n.action,resolvedValue:e.envValue?.trim()||void 0}:n.action===`set`?{cfg:e.applySet?await e.applySet(e.cfg,n.value,n.resolvedValue):e.cfg,action:n.action,resolvedValue:n.resolvedValue}:{cfg:e.cfg,action:n.action}}async function it(e){if(await Oe({prompter:e.prompter,explicitMode:e.secretInputMode,copy:{modeMessage:`How do you want to provide this ${e.credentialLabel}?`,plaintextLabel:`Enter ${e.credentialLabel}`,plaintextHint:`Stores the credential directly in OpenClaw config`,refLabel:`Use external secret provider`,refHint:`Stores a reference to env or configured external secret providers`}})===`plaintext`){let t=await rt({prompter:e.prompter,accountConfigured:e.accountConfigured,canUseEnv:e.canUseEnv,hasConfigToken:e.hasConfigToken,envPrompt:e.envPrompt,keepPrompt:e.keepPrompt,inputPrompt:e.inputPrompt});return t.useEnv?{action:`use-env`}:t.token?{action:`set`,value:t.token,resolvedValue:t.token}:{action:`keep`}}if(e.hasConfigToken&&e.accountConfigured&&await e.prompter.confirm({message:e.keepPrompt,initialValue:!0}))return{action:`keep`};let t=await ke({provider:e.providerHint,config:e.cfg,prompter:e.prompter,preferredEnvVar:e.preferredEnvVar,copy:{sourceMessage:`Where is this ${e.credentialLabel} stored?`,envVarPlaceholder:e.preferredEnvVar??`OPENCLAW_SECRET`,envVarFormatError:`Use an env var name like "OPENCLAW_SECRET" (uppercase letters, numbers, underscores).`,noProvidersMessage:`No file/exec secret providers are configured yet. Add one under secrets.providers, or select Environment variable.`}});return{action:`set`,value:t.ref,resolvedValue:t.resolvedValue}}async function at(e){let t=V({accountId:e.accountId,defaultAccountId:e.defaultAccountId}),n=e.getExistingAllowFrom({cfg:e.cfg,accountId:t});await e.prompter.note(e.noteLines.join(`
1
+ import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{t}from"./subsystem-BLbY429l.js";import{Bn as n,Rn as r,zn as i}from"./auth-profiles-C8rZRS0X.js";import{t as a}from"./command-format-CLxIPuLR.js";import{d as o,f as s}from"./agent-scope-DAWJwFfl.js";import{_ as c,g as l}from"./session-key-C7F_iqYg.js";import{m as u,p as d,t as f}from"./utils-CGdo13HV.js";import{a as p}from"./types.secrets-D4tbc3Wq.js";import{i as m,o as h,r as g}from"./registry-BptzrW8D.js";import{g as _}from"./skills-Bz_S4lPh.js";import{D as v,E as y,H as b,O as x,T as ee,V as S,W as te,a as ne,at as C,c as w,ft as T,gt as E,ht as D,it as O,l as k,lt as re,n as ie,ot as ae,t as A,u as j,ut as oe}from"./plugins-DNlgeTTc.js";import{t as M}from"./exec-B3eleY5O.js";import{dt as N}from"./send-CyarIb2w.js";import{Dn as se,On as ce,c as le,g as ue,l as de,x as fe}from"./compact-uyQDx8pN.js";import{a as pe,n as me}from"./plugin-auto-enable-adba5Evb.js";import{o as he}from"./send-COpehmAB.js";import{r as P}from"./onboard-helpers-DOlI17Ac.js";import{t as F}from"./links-CBnmRP9D.js";import{t as ge}from"./login-CcYeF5T_.js";import{t as _e}from"./brew-DDPm_HfE.js";import{n as ve,r as ye,t as be}from"./api-BeG0ObSq.js";import{t as I}from"./enable-PO3qN4Lf.js";import{s as xe}from"./install-safe-path-C6kc_8NW.js";import{a as Se,i as Ce,n as we,s as Te,t as Ee}from"./installs-CKzq-YqL.js";import{n as De}from"./plugin-install-plan-sIOiMBS1.js";import{c as Oe,s as ke}from"./auth-choice.apply-helpers-D911bYcw.js";import Ae from"node:os";import L from"node:path";import je,{createWriteStream as Me}from"node:fs";import R from"node:fs/promises";import{pipeline as Ne}from"node:stream/promises";import{request as Pe}from"node:https";function Fe(e){let t=new Set;t.add(L.join(process.cwd(),`.git`)),e&&e!==process.cwd()&&t.add(L.join(e,`.git`));for(let e of t)if(je.existsSync(e))return!0;return!1}function Ie(e,t,n){if(!n)return null;let r=e.install.localPath?.trim();if(!r)return null;let i=new Set;i.add(L.resolve(process.cwd(),r)),t&&t!==process.cwd()&&i.add(L.resolve(t,r));for(let e of i)if(je.existsSync(e))return e;return null}function Le(e,t){let n=e.plugins?.load?.paths??[],r=Array.from(new Set([...n,t]));return{...e,plugins:{...e.plugins,load:{...e.plugins?.load,paths:r}}}}async function Re(e){let{entry:t,localPath:n,prompter:r,defaultChoice:i}=e,a=n?[{value:`local`,label:`Use local plugin path`,hint:n}]:[],o=[{value:`npm`,label:`Download from npm (${t.install.npmSpec})`},...a,{value:`skip`,label:`Skip for now`}],s=i===`local`&&!n?`npm`:i;return await r.select({message:`Install ${t.meta.label} plugin?`,options:o,initialValue:s})}function ze(e){let{cfg:t,entry:n,localPath:r,bundledLocalPath:i}=e;if(i)return`local`;let a=t.update?.channel;if(a===`dev`)return r?`local`:`npm`;if(a===`stable`||a===`beta`)return`npm`;let o=n.install.defaultChoice;return o===`local`?r?`local`:`npm`:o===`npm`?`npm`:r?`local`:`npm`}async function Be(e){let{entry:t,prompter:n,runtime:r,workspaceDir:i}=e,a=e.cfg,o=Fe(i),s=Se({workspaceDir:i}),c=De({pluginId:t.id,npmSpec:t.install.npmSpec,findBundledSource:e=>Ce({bundled:s,lookup:e})})?.bundledSource.localPath??null,l=c??Ie(t,i,o),u=await Re({entry:t,localPath:l,defaultChoice:ze({cfg:a,entry:t,localPath:l,bundledLocalPath:c}),prompter:n});if(u===`skip`)return{cfg:a,installed:!1};if(u===`local`&&l)return a=Le(a,l),a=I(a,t.id).config,{cfg:a,installed:!0};let d=await Te({spec:t.install.npmSpec,logger:{info:e=>r.log?.(e),warn:e=>r.log?.(e)}});return d.ok?(a=I(a,d.pluginId).config,a=we(a,{pluginId:d.pluginId,source:`npm`,spec:t.install.npmSpec,installPath:d.targetDir,version:d.version,...Ee(d.npmResolution)}),{cfg:a,installed:!0}):(await n.note(`Failed to install ${t.install.npmSpec}: ${d.error}`,`Plugin install`),l&&await n.confirm({message:`Use local plugin path instead? (${l})`,initialValue:!0})?(a=Le(a,l),a=I(a,t.id).config,{cfg:a,installed:!0}):(r.error?.(`Plugin install failed: ${d.error}`),{cfg:a,installed:!1}))}function Ve(e){_();let n=e.workspaceDir??o(e.cfg,s(e.cfg)),r=t(`plugins`);de({config:e.cfg,workspaceDir:n,cache:!1,logger:le(r)})}async function He(e){let t=e.listAccountIds(e.cfg),n=e.currentId?.trim()||e.defaultAccountId||`default`,r=await e.prompter.select({message:`${e.label} account`,options:[...t.map(e=>({value:e,label:e===`default`?`default (primary)`:e})),{value:`__new__`,label:`Add a new account`}],initialValue:n});if(r!==`__new__`)return c(r);let i=await e.prompter.text({message:`New ${e.label} account id`,validate:e=>e?.trim()?void 0:`Required`}),a=c(String(i));return String(i).trim()!==a&&await e.prompter.note(`Normalized account id to "${a}".`,`${e.label} account`),a}const Ue=async e=>await He(e);function We(e){let t=(e??[]).map(e=>String(e).trim()).filter(Boolean);return t.includes(`*`)||t.push(`*`),t}function Ge(e,t){let n=[...e??[],...t].map(e=>String(e).trim()).filter(Boolean);return[...new Set(n)]}function z(e){return e.split(/[\n,;]+/g).map(e=>e.trim()).filter(Boolean)}function Ke(e,t){let n=z(String(e??``)),r=[];for(let e of n){let n=t(e);if(`error`in n)return{entries:[],error:n.error};r.push(n.value)}return{entries:B(r)}}function qe(e,t){return Ke(e,e=>e===`*`?{value:`*`}:t(e))}function Je(e){let t=e.value.trim();if(!t)return null;let n=t.match(e.mentionPattern);if(n?.[1])return e.normalizeId?e.normalizeId(n[1]):n[1];let r=e.prefixPattern?t.replace(e.prefixPattern,``):t;return e.idPattern.test(r)?e.normalizeId?e.normalizeId(r):r:null}function B(e,t){let n=e.map(e=>String(e).trim()).filter(Boolean).map(e=>{if(e===`*`)return`*`;if(!t)return e;let n=t(e);return typeof n==`string`?n.trim():``}).filter(Boolean);return[...new Set(n)]}function V(e){return e.accountId?.trim()?c(e.accountId):e.defaultAccountId}async function H(e){let t=e.accountOverride?.trim(),n=t?c(t):e.defaultAccountId;return e.shouldPromptAccountIds&&!t&&(n=await Ue({cfg:e.cfg,prompter:e.prompter,label:e.label,currentId:n,listAccountIds:e.listAccountIds,defaultAccountId:e.defaultAccountId})),n}function Ye(e){let{cfg:t,channel:n,accountId:r,allowFrom:i}=e;return tt({cfg:t,channel:n,accountId:r,patch:{allowFrom:i},ensureEnabled:!1})}function Xe(e){let{cfg:t,channel:n,dmPolicy:r}=e,i=r===`open`?We(t.channels?.[n]?.allowFrom):void 0;return{...t,channels:{...t.channels,[n]:{...t.channels?.[n],dmPolicy:r,...i?{allowFrom:i}:{}}}}}function Ze(e){let t=e.cfg.channels?.[e.channel]??{allowFrom:void 0,dm:void 0},n=t.allowFrom??t.dm?.allowFrom,r=e.dmPolicy===`open`?We(n):void 0;return et({cfg:e.cfg,channel:e.channel,patch:{dmPolicy:e.dmPolicy,...r?{allowFrom:r}:{}}})}function Qe(e){return et({cfg:e.cfg,channel:e.channel,patch:{allowFrom:e.allowFrom}})}function $e(e){return W({cfg:e.cfg,channel:e.channel,accountId:e.accountId,patch:{groupPolicy:e.groupPolicy}})}function et(e){let{cfg:t,channel:n,patch:r}=e,i=t.channels?.[n]??{},a=i.dm??{};return{...t,channels:{...t.channels,[n]:{...i,...r,dm:{...a,enabled:typeof a.enabled==`boolean`?a.enabled:!0}}}}}function U(e,t,n){let r=e.channels?.[t]??{};return{...e,channels:{...e.channels,[t]:{...r,enabled:n}}}}function tt(e){let{cfg:t,channel:n,accountId:r,patch:i,ensureEnabled:a}=e;return ye({cfg:r===`default`?t:ve({cfg:t,channelKey:n}),channelKey:n,accountId:r,patch:i,ensureChannelEnabled:a,ensureAccountEnabled:a})}function W(e){return tt({...e,ensureEnabled:!0})}function G(e){let t=e.cfg;return e.tokenResult.useEnv&&(t=W({cfg:t,channel:e.channel,accountId:e.accountId,patch:{}})),e.tokenResult.token&&(t=W({cfg:t,channel:e.channel,accountId:e.accountId,patch:{[e.tokenPatchKey]:e.tokenResult.token}})),t}function nt(e){return{accountConfigured:e.accountConfigured,hasConfigToken:e.hasConfigToken,canUseEnv:e.allowEnv&&!!e.envValue?.trim()&&!e.hasConfigToken}}async function rt(e){let t=async()=>String(await e.prompter.text({message:e.inputPrompt,validate:e=>e?.trim()?void 0:`Required`})).trim();return e.canUseEnv?await e.prompter.confirm({message:e.envPrompt,initialValue:!0})?{useEnv:!0,token:null}:{useEnv:!1,token:await t()}:e.hasConfigToken&&e.accountConfigured&&await e.prompter.confirm({message:e.keepPrompt,initialValue:!0})?{useEnv:!1,token:null}:{useEnv:!1,token:await t()}}async function K(e){let t=nt({accountConfigured:e.accountConfigured,hasConfigToken:e.hasConfigToken,allowEnv:e.allowEnv,envValue:e.envValue});!t.accountConfigured&&e.onMissingConfigured&&await e.onMissingConfigured();let n=await it({cfg:e.cfg,prompter:e.prompter,providerHint:e.providerHint,credentialLabel:e.credentialLabel,secretInputMode:e.secretInputMode,accountConfigured:t.accountConfigured,canUseEnv:t.canUseEnv,hasConfigToken:t.hasConfigToken,envPrompt:e.envPrompt,keepPrompt:e.keepPrompt,inputPrompt:e.inputPrompt,preferredEnvVar:e.preferredEnvVar});return n.action===`use-env`?{cfg:e.applyUseEnv?await e.applyUseEnv(e.cfg):e.cfg,action:n.action,resolvedValue:e.envValue?.trim()||void 0}:n.action===`set`?{cfg:e.applySet?await e.applySet(e.cfg,n.value,n.resolvedValue):e.cfg,action:n.action,resolvedValue:n.resolvedValue}:{cfg:e.cfg,action:n.action}}async function it(e){if(await Oe({prompter:e.prompter,explicitMode:e.secretInputMode,copy:{modeMessage:`How do you want to provide this ${e.credentialLabel}?`,plaintextLabel:`Enter ${e.credentialLabel}`,plaintextHint:`Stores the credential directly in OpenClaw config`,refLabel:`Use external secret provider`,refHint:`Stores a reference to env or configured external secret providers`}})===`plaintext`){let t=await rt({prompter:e.prompter,accountConfigured:e.accountConfigured,canUseEnv:e.canUseEnv,hasConfigToken:e.hasConfigToken,envPrompt:e.envPrompt,keepPrompt:e.keepPrompt,inputPrompt:e.inputPrompt});return t.useEnv?{action:`use-env`}:t.token?{action:`set`,value:t.token,resolvedValue:t.token}:{action:`keep`}}if(e.hasConfigToken&&e.accountConfigured&&await e.prompter.confirm({message:e.keepPrompt,initialValue:!0}))return{action:`keep`};let t=await ke({provider:e.providerHint,config:e.cfg,prompter:e.prompter,preferredEnvVar:e.preferredEnvVar,copy:{sourceMessage:`Where is this ${e.credentialLabel} stored?`,envVarPlaceholder:e.preferredEnvVar??`OPENCLAW_SECRET`,envVarFormatError:`Use an env var name like "OPENCLAW_SECRET" (uppercase letters, numbers, underscores).`,noProvidersMessage:`No file/exec secret providers are configured yet. Add one under secrets.providers, or select Environment variable.`}});return{action:`set`,value:t.ref,resolvedValue:t.resolvedValue}}async function at(e){let t=V({accountId:e.accountId,defaultAccountId:e.defaultAccountId}),n=e.getExistingAllowFrom({cfg:e.cfg,accountId:t});await e.prompter.note(e.noteLines.join(`
2
2
  `),e.noteTitle);let r=await e.prompter.text({message:e.message,placeholder:e.placeholder,initialValue:n[0]?String(n[0]):void 0,validate:t=>{let n=String(t??``).trim();return n?e.parseEntries(n).error:`Required`}}),i=Ge(void 0,e.parseEntries(String(r)).entries);return Ye({cfg:e.cfg,channel:e.channel,accountId:t,allowFrom:i})}async function ot(e){let t=[];for(let n of e.resolvedSections)n.values.length!==0&&t.push(`${n.title}: ${n.values.join(`, `)}`);e.unresolved&&e.unresolved.length>0&&t.push(`Unresolved (kept as typed): ${e.unresolved.join(`, `)}`),t.length>0&&await e.prompter.note(t.join(`
3
3
  `),e.label)}async function st(e){await e.prompter.note(`Channel lookup failed; keeping entries as typed. ${String(e.error)}`,e.label)}async function ct(e){for(;;){let t=await e.prompter.text({message:e.message,placeholder:e.placeholder,initialValue:e.existing[0]?String(e.existing[0]):void 0,validate:e=>String(e??``).trim()?void 0:`Required`}),n=e.parseInputs(String(t));if(!e.token){let t=n.map(e.parseId).filter(Boolean);if(t.length!==n.length){await e.prompter.note(e.invalidWithoutTokenNote,e.label);continue}return Ge(e.existing,t)}let r=await e.resolveEntries({token:e.token,entries:n}).catch(()=>null);if(!r){await e.prompter.note(`Failed to resolve usernames. Try again.`,e.label);continue}let i=r.filter(e=>!e.resolved||!e.id);if(i.length>0){await e.prompter.note(`Could not resolve: ${i.map(e=>e.input).join(`, `)}`,e.label);continue}let a=r.map(e=>e.id);return Ge(e.existing,a)}}async function lt(e){await e.prompter.note(e.noteLines.join(`
4
4
  `),e.noteTitle);let t=await ct({prompter:e.prompter,existing:e.existing,token:e.token,message:e.message,placeholder:e.placeholder,label:e.noteTitle,parseInputs:z,parseId:e.parseId,invalidWithoutTokenNote:e.invalidWithoutTokenNote,resolveEntries:e.resolveEntries});return Qe({cfg:e.cfg,channel:e.channel,allowFrom:t})}function ut(e){return z(String(e??``))}function dt(e){return e.map(e=>e.trim()).filter(Boolean).join(`, `)}async function ft(e){let t=[{value:`allowlist`,label:`Allowlist (recommended)`}];e.allowOpen!==!1&&t.push({value:`open`,label:`Open (allow all channels)`}),e.allowDisabled!==!1&&t.push({value:`disabled`,label:`Disabled (block all channels)`});let n=e.currentPolicy??`allowlist`;return await e.prompter.select({message:`${e.label} access`,options:t,initialValue:n})}async function pt(e){let t=e.currentEntries&&e.currentEntries.length>0?dt(e.currentEntries):void 0;return ut(await e.prompter.text({message:`${e.label} allowlist (comma-separated)`,placeholder:e.placeholder,initialValue:t}))}async function mt(e){let t=(e.currentEntries??[]).length>0,n=e.defaultPrompt??!t;if(!await e.prompter.confirm({message:e.updatePrompt?`Update ${e.label} access?`:`Configure ${e.label} access?`,initialValue:n}))return null;let r=await ft({prompter:e.prompter,label:e.label,currentPolicy:e.currentPolicy,allowOpen:e.allowOpen,allowDisabled:e.allowDisabled});return r===`allowlist`?{policy:r,entries:await pt({prompter:e.prompter,label:e.label,currentEntries:e.currentEntries,placeholder:e.placeholder})}:{policy:r,entries:[]}}async function ht(e){let t=e.cfg,n=await mt({prompter:e.prompter,label:e.label,currentPolicy:e.currentPolicy,currentEntries:e.currentEntries,placeholder:e.placeholder,updatePrompt:e.updatePrompt});if(!n)return t;if(n.policy!==`allowlist`)return e.setPolicy(t,n.policy);let r=await e.resolveAllowlist({cfg:t,entries:n.entries});return t=e.setPolicy(t,`allowlist`),e.applyAllowlist({cfg:t,resolved:r})}const q=`discord`;async function gt(e){await e.note([`1) Discord Developer Portal → Applications → New Application`,`2) Bot → Add Bot → Reset Token → copy token`,`3) OAuth2 → URL Generator → scope 'bot' → invite to your server`,`Tip: enable Message Content Intent if you need message text. (Bot → Privileged Gateway Intents → Message Content Intent)`,`Docs: ${F(`/discord`,`discord`)}`].join(`
@@ -1,4 +1,4 @@
1
- import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{t}from"./subsystem-C5XF2Fy5.js";import{h as n,m as r,t as i}from"./utils-UGOV_184.js";import{Qr as a,Xr as o,Zr as s}from"./model-selection-BLbnMb5E.js";import{Tt as c,at as l,bt as u,li as d,ot as f,ui as p}from"./reply-DwfVhea1.js";import{d as m,f as h}from"./agent-scope-DXZc3eNT.js";import{_ as g,g as _}from"./session-key-D3P0tf5P.js";import{a as v}from"./types.secrets-C-5U96pc.js";import{t as y}from"./command-format-BbDT1tlm.js";import{i as ee,o as te,r as ne}from"./registry-hFAtCSWG.js";import{g as b}from"./skills-CzUpDbU-.js";import{D as re,E as ie,H as x,O as S,T as C,V as ae,W as w,a as oe,at as T,c as se,ft as E,gt as D,ht as ce,it as O,l as le,lt as ue,n as k,ot as A,t as j,u as de,ut as fe}from"./plugins-CYLrFT4h.js";import{t as M}from"./exec-DHqLtFYt.js";import{dt as pe}from"./send-BwblpWbK.js";import{a as me,n as he}from"./plugin-auto-enable-CTgkkJK7.js";import{o as ge}from"./send-AQ3CJLpI.js";import{r as N}from"./onboard-helpers-D90u4wVK.js";import{t as P}from"./links-CySwdMcF.js";import{t as _e}from"./login-DSZdCiDx.js";import{t as ve}from"./brew-COcDl8CB.js";import{n as ye,r as be,t as xe}from"./api-Dx8x1KTs.js";import{t as F}from"./enable-CjFPAUgo.js";import{s as Se}from"./install-safe-path-iesxijn2.js";import{a as Ce,i as we,n as Te,s as Ee,t as De}from"./installs-DzSskdtJ.js";import{n as Oe}from"./plugin-install-plan-BmyB3dR1.js";import{c as ke,s as Ae}from"./auth-choice.apply-helpers-pJ4CPZCk.js";import je,{createWriteStream as Me}from"node:fs";import Ne from"node:os";import I from"node:path";import L from"node:fs/promises";import{pipeline as Pe}from"node:stream/promises";import{request as Fe}from"node:https";function Ie(e){let t=new Set;t.add(I.join(process.cwd(),`.git`)),e&&e!==process.cwd()&&t.add(I.join(e,`.git`));for(let e of t)if(je.existsSync(e))return!0;return!1}function Le(e,t,n){if(!n)return null;let r=e.install.localPath?.trim();if(!r)return null;let i=new Set;i.add(I.resolve(process.cwd(),r)),t&&t!==process.cwd()&&i.add(I.resolve(t,r));for(let e of i)if(je.existsSync(e))return e;return null}function Re(e,t){let n=e.plugins?.load?.paths??[],r=Array.from(new Set([...n,t]));return{...e,plugins:{...e.plugins,load:{...e.plugins?.load,paths:r}}}}async function ze(e){let{entry:t,localPath:n,prompter:r,defaultChoice:i}=e,a=n?[{value:`local`,label:`Use local plugin path`,hint:n}]:[],o=[{value:`npm`,label:`Download from npm (${t.install.npmSpec})`},...a,{value:`skip`,label:`Skip for now`}],s=i===`local`&&!n?`npm`:i;return await r.select({message:`Install ${t.meta.label} plugin?`,options:o,initialValue:s})}function Be(e){let{cfg:t,entry:n,localPath:r,bundledLocalPath:i}=e;if(i)return`local`;let a=t.update?.channel;if(a===`dev`)return r?`local`:`npm`;if(a===`stable`||a===`beta`)return`npm`;let o=n.install.defaultChoice;return o===`local`?r?`local`:`npm`:o===`npm`?`npm`:r?`local`:`npm`}async function Ve(e){let{entry:t,prompter:n,runtime:r,workspaceDir:i}=e,a=e.cfg,o=Ie(i),s=Ce({workspaceDir:i}),c=Oe({pluginId:t.id,npmSpec:t.install.npmSpec,findBundledSource:e=>we({bundled:s,lookup:e})})?.bundledSource.localPath??null,l=c??Le(t,i,o),u=await ze({entry:t,localPath:l,defaultChoice:Be({cfg:a,entry:t,localPath:l,bundledLocalPath:c}),prompter:n});if(u===`skip`)return{cfg:a,installed:!1};if(u===`local`&&l)return a=Re(a,l),a=F(a,t.id).config,{cfg:a,installed:!0};let d=await Ee({spec:t.install.npmSpec,logger:{info:e=>r.log?.(e),warn:e=>r.log?.(e)}});return d.ok?(a=F(a,d.pluginId).config,a=Te(a,{pluginId:d.pluginId,source:`npm`,spec:t.install.npmSpec,installPath:d.targetDir,version:d.version,...De(d.npmResolution)}),{cfg:a,installed:!0}):(await n.note(`Failed to install ${t.install.npmSpec}: ${d.error}`,`Plugin install`),l&&await n.confirm({message:`Use local plugin path instead? (${l})`,initialValue:!0})?(a=Re(a,l),a=F(a,t.id).config,{cfg:a,installed:!0}):(r.error?.(`Plugin install failed: ${d.error}`),{cfg:a,installed:!1}))}function He(e){b();let n=e.workspaceDir??m(e.cfg,h(e.cfg)),r=t(`plugins`);f({config:e.cfg,workspaceDir:n,cache:!1,logger:l(r)})}async function Ue(e){let t=e.listAccountIds(e.cfg),n=e.currentId?.trim()||e.defaultAccountId||`default`,r=await e.prompter.select({message:`${e.label} account`,options:[...t.map(e=>({value:e,label:e===`default`?`default (primary)`:e})),{value:`__new__`,label:`Add a new account`}],initialValue:n});if(r!==`__new__`)return g(r);let i=await e.prompter.text({message:`New ${e.label} account id`,validate:e=>e?.trim()?void 0:`Required`}),a=g(String(i));return String(i).trim()!==a&&await e.prompter.note(`Normalized account id to "${a}".`,`${e.label} account`),a}const We=async e=>await Ue(e);function Ge(e){let t=(e??[]).map(e=>String(e).trim()).filter(Boolean);return t.includes(`*`)||t.push(`*`),t}function Ke(e,t){let n=[...e??[],...t].map(e=>String(e).trim()).filter(Boolean);return[...new Set(n)]}function R(e){return e.split(/[\n,;]+/g).map(e=>e.trim()).filter(Boolean)}function qe(e,t){let n=R(String(e??``)),r=[];for(let e of n){let n=t(e);if(`error`in n)return{entries:[],error:n.error};r.push(n.value)}return{entries:z(r)}}function Je(e,t){return qe(e,e=>e===`*`?{value:`*`}:t(e))}function Ye(e){let t=e.value.trim();if(!t)return null;let n=t.match(e.mentionPattern);if(n?.[1])return e.normalizeId?e.normalizeId(n[1]):n[1];let r=e.prefixPattern?t.replace(e.prefixPattern,``):t;return e.idPattern.test(r)?e.normalizeId?e.normalizeId(r):r:null}function z(e,t){let n=e.map(e=>String(e).trim()).filter(Boolean).map(e=>{if(e===`*`)return`*`;if(!t)return e;let n=t(e);return typeof n==`string`?n.trim():``}).filter(Boolean);return[...new Set(n)]}function B(e){return e.accountId?.trim()?g(e.accountId):e.defaultAccountId}async function V(e){let t=e.accountOverride?.trim(),n=t?g(t):e.defaultAccountId;return e.shouldPromptAccountIds&&!t&&(n=await We({cfg:e.cfg,prompter:e.prompter,label:e.label,currentId:n,listAccountIds:e.listAccountIds,defaultAccountId:e.defaultAccountId})),n}function Xe(e){let{cfg:t,channel:n,accountId:r,allowFrom:i}=e;return nt({cfg:t,channel:n,accountId:r,patch:{allowFrom:i},ensureEnabled:!1})}function Ze(e){let{cfg:t,channel:n,dmPolicy:r}=e,i=r===`open`?Ge(t.channels?.[n]?.allowFrom):void 0;return{...t,channels:{...t.channels,[n]:{...t.channels?.[n],dmPolicy:r,...i?{allowFrom:i}:{}}}}}function Qe(e){let t=e.cfg.channels?.[e.channel]??{allowFrom:void 0,dm:void 0},n=t.allowFrom??t.dm?.allowFrom,r=e.dmPolicy===`open`?Ge(n):void 0;return tt({cfg:e.cfg,channel:e.channel,patch:{dmPolicy:e.dmPolicy,...r?{allowFrom:r}:{}}})}function $e(e){return tt({cfg:e.cfg,channel:e.channel,patch:{allowFrom:e.allowFrom}})}function et(e){return U({cfg:e.cfg,channel:e.channel,accountId:e.accountId,patch:{groupPolicy:e.groupPolicy}})}function tt(e){let{cfg:t,channel:n,patch:r}=e,i=t.channels?.[n]??{},a=i.dm??{};return{...t,channels:{...t.channels,[n]:{...i,...r,dm:{...a,enabled:typeof a.enabled==`boolean`?a.enabled:!0}}}}}function H(e,t,n){let r=e.channels?.[t]??{};return{...e,channels:{...e.channels,[t]:{...r,enabled:n}}}}function nt(e){let{cfg:t,channel:n,accountId:r,patch:i,ensureEnabled:a}=e;return be({cfg:r===`default`?t:ye({cfg:t,channelKey:n}),channelKey:n,accountId:r,patch:i,ensureChannelEnabled:a,ensureAccountEnabled:a})}function U(e){return nt({...e,ensureEnabled:!0})}function W(e){let t=e.cfg;return e.tokenResult.useEnv&&(t=U({cfg:t,channel:e.channel,accountId:e.accountId,patch:{}})),e.tokenResult.token&&(t=U({cfg:t,channel:e.channel,accountId:e.accountId,patch:{[e.tokenPatchKey]:e.tokenResult.token}})),t}function rt(e){return{accountConfigured:e.accountConfigured,hasConfigToken:e.hasConfigToken,canUseEnv:e.allowEnv&&!!e.envValue?.trim()&&!e.hasConfigToken}}async function it(e){let t=async()=>String(await e.prompter.text({message:e.inputPrompt,validate:e=>e?.trim()?void 0:`Required`})).trim();return e.canUseEnv?await e.prompter.confirm({message:e.envPrompt,initialValue:!0})?{useEnv:!0,token:null}:{useEnv:!1,token:await t()}:e.hasConfigToken&&e.accountConfigured&&await e.prompter.confirm({message:e.keepPrompt,initialValue:!0})?{useEnv:!1,token:null}:{useEnv:!1,token:await t()}}async function G(e){let t=rt({accountConfigured:e.accountConfigured,hasConfigToken:e.hasConfigToken,allowEnv:e.allowEnv,envValue:e.envValue});!t.accountConfigured&&e.onMissingConfigured&&await e.onMissingConfigured();let n=await at({cfg:e.cfg,prompter:e.prompter,providerHint:e.providerHint,credentialLabel:e.credentialLabel,secretInputMode:e.secretInputMode,accountConfigured:t.accountConfigured,canUseEnv:t.canUseEnv,hasConfigToken:t.hasConfigToken,envPrompt:e.envPrompt,keepPrompt:e.keepPrompt,inputPrompt:e.inputPrompt,preferredEnvVar:e.preferredEnvVar});return n.action===`use-env`?{cfg:e.applyUseEnv?await e.applyUseEnv(e.cfg):e.cfg,action:n.action,resolvedValue:e.envValue?.trim()||void 0}:n.action===`set`?{cfg:e.applySet?await e.applySet(e.cfg,n.value,n.resolvedValue):e.cfg,action:n.action,resolvedValue:n.resolvedValue}:{cfg:e.cfg,action:n.action}}async function at(e){if(await ke({prompter:e.prompter,explicitMode:e.secretInputMode,copy:{modeMessage:`How do you want to provide this ${e.credentialLabel}?`,plaintextLabel:`Enter ${e.credentialLabel}`,plaintextHint:`Stores the credential directly in OpenClaw config`,refLabel:`Use external secret provider`,refHint:`Stores a reference to env or configured external secret providers`}})===`plaintext`){let t=await it({prompter:e.prompter,accountConfigured:e.accountConfigured,canUseEnv:e.canUseEnv,hasConfigToken:e.hasConfigToken,envPrompt:e.envPrompt,keepPrompt:e.keepPrompt,inputPrompt:e.inputPrompt});return t.useEnv?{action:`use-env`}:t.token?{action:`set`,value:t.token,resolvedValue:t.token}:{action:`keep`}}if(e.hasConfigToken&&e.accountConfigured&&await e.prompter.confirm({message:e.keepPrompt,initialValue:!0}))return{action:`keep`};let t=await Ae({provider:e.providerHint,config:e.cfg,prompter:e.prompter,preferredEnvVar:e.preferredEnvVar,copy:{sourceMessage:`Where is this ${e.credentialLabel} stored?`,envVarPlaceholder:e.preferredEnvVar??`OPENCLAW_SECRET`,envVarFormatError:`Use an env var name like "OPENCLAW_SECRET" (uppercase letters, numbers, underscores).`,noProvidersMessage:`No file/exec secret providers are configured yet. Add one under secrets.providers, or select Environment variable.`}});return{action:`set`,value:t.ref,resolvedValue:t.resolvedValue}}async function ot(e){let t=B({accountId:e.accountId,defaultAccountId:e.defaultAccountId}),n=e.getExistingAllowFrom({cfg:e.cfg,accountId:t});await e.prompter.note(e.noteLines.join(`
1
+ import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{t}from"./subsystem-C5XF2Fy5.js";import{h as n,m as r,t as i}from"./utils-UGOV_184.js";import{Qr as a,Xr as o,Zr as s}from"./model-selection-BLbnMb5E.js";import{Tt as c,at as l,bt as u,li as d,ot as f,ui as p}from"./reply-mWIMy_ju.js";import{d as m,f as h}from"./agent-scope-DXZc3eNT.js";import{_ as g,g as _}from"./session-key-D3P0tf5P.js";import{a as v}from"./types.secrets-C-5U96pc.js";import{t as y}from"./command-format-BbDT1tlm.js";import{i as ee,o as te,r as ne}from"./registry-hFAtCSWG.js";import{g as b}from"./skills-CzUpDbU-.js";import{D as re,E as ie,H as x,O as S,T as C,V as ae,W as w,a as oe,at as T,c as se,ft as E,gt as D,ht as ce,it as O,l as le,lt as ue,n as k,ot as A,t as j,u as de,ut as fe}from"./plugins-CYLrFT4h.js";import{t as M}from"./exec-DHqLtFYt.js";import{dt as pe}from"./send-BwblpWbK.js";import{a as me,n as he}from"./plugin-auto-enable-CTgkkJK7.js";import{o as ge}from"./send-AQ3CJLpI.js";import{r as N}from"./onboard-helpers-D90u4wVK.js";import{t as P}from"./links-CySwdMcF.js";import{t as _e}from"./login-DSZdCiDx.js";import{t as ve}from"./brew-COcDl8CB.js";import{n as ye,r as be,t as xe}from"./api-Dx8x1KTs.js";import{t as F}from"./enable-CjFPAUgo.js";import{s as Se}from"./install-safe-path-iesxijn2.js";import{a as Ce,i as we,n as Te,s as Ee,t as De}from"./installs-DzSskdtJ.js";import{n as Oe}from"./plugin-install-plan-BmyB3dR1.js";import{c as ke,s as Ae}from"./auth-choice.apply-helpers-pJ4CPZCk.js";import je,{createWriteStream as Me}from"node:fs";import Ne from"node:os";import I from"node:path";import L from"node:fs/promises";import{pipeline as Pe}from"node:stream/promises";import{request as Fe}from"node:https";function Ie(e){let t=new Set;t.add(I.join(process.cwd(),`.git`)),e&&e!==process.cwd()&&t.add(I.join(e,`.git`));for(let e of t)if(je.existsSync(e))return!0;return!1}function Le(e,t,n){if(!n)return null;let r=e.install.localPath?.trim();if(!r)return null;let i=new Set;i.add(I.resolve(process.cwd(),r)),t&&t!==process.cwd()&&i.add(I.resolve(t,r));for(let e of i)if(je.existsSync(e))return e;return null}function Re(e,t){let n=e.plugins?.load?.paths??[],r=Array.from(new Set([...n,t]));return{...e,plugins:{...e.plugins,load:{...e.plugins?.load,paths:r}}}}async function ze(e){let{entry:t,localPath:n,prompter:r,defaultChoice:i}=e,a=n?[{value:`local`,label:`Use local plugin path`,hint:n}]:[],o=[{value:`npm`,label:`Download from npm (${t.install.npmSpec})`},...a,{value:`skip`,label:`Skip for now`}],s=i===`local`&&!n?`npm`:i;return await r.select({message:`Install ${t.meta.label} plugin?`,options:o,initialValue:s})}function Be(e){let{cfg:t,entry:n,localPath:r,bundledLocalPath:i}=e;if(i)return`local`;let a=t.update?.channel;if(a===`dev`)return r?`local`:`npm`;if(a===`stable`||a===`beta`)return`npm`;let o=n.install.defaultChoice;return o===`local`?r?`local`:`npm`:o===`npm`?`npm`:r?`local`:`npm`}async function Ve(e){let{entry:t,prompter:n,runtime:r,workspaceDir:i}=e,a=e.cfg,o=Ie(i),s=Ce({workspaceDir:i}),c=Oe({pluginId:t.id,npmSpec:t.install.npmSpec,findBundledSource:e=>we({bundled:s,lookup:e})})?.bundledSource.localPath??null,l=c??Le(t,i,o),u=await ze({entry:t,localPath:l,defaultChoice:Be({cfg:a,entry:t,localPath:l,bundledLocalPath:c}),prompter:n});if(u===`skip`)return{cfg:a,installed:!1};if(u===`local`&&l)return a=Re(a,l),a=F(a,t.id).config,{cfg:a,installed:!0};let d=await Ee({spec:t.install.npmSpec,logger:{info:e=>r.log?.(e),warn:e=>r.log?.(e)}});return d.ok?(a=F(a,d.pluginId).config,a=Te(a,{pluginId:d.pluginId,source:`npm`,spec:t.install.npmSpec,installPath:d.targetDir,version:d.version,...De(d.npmResolution)}),{cfg:a,installed:!0}):(await n.note(`Failed to install ${t.install.npmSpec}: ${d.error}`,`Plugin install`),l&&await n.confirm({message:`Use local plugin path instead? (${l})`,initialValue:!0})?(a=Re(a,l),a=F(a,t.id).config,{cfg:a,installed:!0}):(r.error?.(`Plugin install failed: ${d.error}`),{cfg:a,installed:!1}))}function He(e){b();let n=e.workspaceDir??m(e.cfg,h(e.cfg)),r=t(`plugins`);f({config:e.cfg,workspaceDir:n,cache:!1,logger:l(r)})}async function Ue(e){let t=e.listAccountIds(e.cfg),n=e.currentId?.trim()||e.defaultAccountId||`default`,r=await e.prompter.select({message:`${e.label} account`,options:[...t.map(e=>({value:e,label:e===`default`?`default (primary)`:e})),{value:`__new__`,label:`Add a new account`}],initialValue:n});if(r!==`__new__`)return g(r);let i=await e.prompter.text({message:`New ${e.label} account id`,validate:e=>e?.trim()?void 0:`Required`}),a=g(String(i));return String(i).trim()!==a&&await e.prompter.note(`Normalized account id to "${a}".`,`${e.label} account`),a}const We=async e=>await Ue(e);function Ge(e){let t=(e??[]).map(e=>String(e).trim()).filter(Boolean);return t.includes(`*`)||t.push(`*`),t}function Ke(e,t){let n=[...e??[],...t].map(e=>String(e).trim()).filter(Boolean);return[...new Set(n)]}function R(e){return e.split(/[\n,;]+/g).map(e=>e.trim()).filter(Boolean)}function qe(e,t){let n=R(String(e??``)),r=[];for(let e of n){let n=t(e);if(`error`in n)return{entries:[],error:n.error};r.push(n.value)}return{entries:z(r)}}function Je(e,t){return qe(e,e=>e===`*`?{value:`*`}:t(e))}function Ye(e){let t=e.value.trim();if(!t)return null;let n=t.match(e.mentionPattern);if(n?.[1])return e.normalizeId?e.normalizeId(n[1]):n[1];let r=e.prefixPattern?t.replace(e.prefixPattern,``):t;return e.idPattern.test(r)?e.normalizeId?e.normalizeId(r):r:null}function z(e,t){let n=e.map(e=>String(e).trim()).filter(Boolean).map(e=>{if(e===`*`)return`*`;if(!t)return e;let n=t(e);return typeof n==`string`?n.trim():``}).filter(Boolean);return[...new Set(n)]}function B(e){return e.accountId?.trim()?g(e.accountId):e.defaultAccountId}async function V(e){let t=e.accountOverride?.trim(),n=t?g(t):e.defaultAccountId;return e.shouldPromptAccountIds&&!t&&(n=await We({cfg:e.cfg,prompter:e.prompter,label:e.label,currentId:n,listAccountIds:e.listAccountIds,defaultAccountId:e.defaultAccountId})),n}function Xe(e){let{cfg:t,channel:n,accountId:r,allowFrom:i}=e;return nt({cfg:t,channel:n,accountId:r,patch:{allowFrom:i},ensureEnabled:!1})}function Ze(e){let{cfg:t,channel:n,dmPolicy:r}=e,i=r===`open`?Ge(t.channels?.[n]?.allowFrom):void 0;return{...t,channels:{...t.channels,[n]:{...t.channels?.[n],dmPolicy:r,...i?{allowFrom:i}:{}}}}}function Qe(e){let t=e.cfg.channels?.[e.channel]??{allowFrom:void 0,dm:void 0},n=t.allowFrom??t.dm?.allowFrom,r=e.dmPolicy===`open`?Ge(n):void 0;return tt({cfg:e.cfg,channel:e.channel,patch:{dmPolicy:e.dmPolicy,...r?{allowFrom:r}:{}}})}function $e(e){return tt({cfg:e.cfg,channel:e.channel,patch:{allowFrom:e.allowFrom}})}function et(e){return U({cfg:e.cfg,channel:e.channel,accountId:e.accountId,patch:{groupPolicy:e.groupPolicy}})}function tt(e){let{cfg:t,channel:n,patch:r}=e,i=t.channels?.[n]??{},a=i.dm??{};return{...t,channels:{...t.channels,[n]:{...i,...r,dm:{...a,enabled:typeof a.enabled==`boolean`?a.enabled:!0}}}}}function H(e,t,n){let r=e.channels?.[t]??{};return{...e,channels:{...e.channels,[t]:{...r,enabled:n}}}}function nt(e){let{cfg:t,channel:n,accountId:r,patch:i,ensureEnabled:a}=e;return be({cfg:r===`default`?t:ye({cfg:t,channelKey:n}),channelKey:n,accountId:r,patch:i,ensureChannelEnabled:a,ensureAccountEnabled:a})}function U(e){return nt({...e,ensureEnabled:!0})}function W(e){let t=e.cfg;return e.tokenResult.useEnv&&(t=U({cfg:t,channel:e.channel,accountId:e.accountId,patch:{}})),e.tokenResult.token&&(t=U({cfg:t,channel:e.channel,accountId:e.accountId,patch:{[e.tokenPatchKey]:e.tokenResult.token}})),t}function rt(e){return{accountConfigured:e.accountConfigured,hasConfigToken:e.hasConfigToken,canUseEnv:e.allowEnv&&!!e.envValue?.trim()&&!e.hasConfigToken}}async function it(e){let t=async()=>String(await e.prompter.text({message:e.inputPrompt,validate:e=>e?.trim()?void 0:`Required`})).trim();return e.canUseEnv?await e.prompter.confirm({message:e.envPrompt,initialValue:!0})?{useEnv:!0,token:null}:{useEnv:!1,token:await t()}:e.hasConfigToken&&e.accountConfigured&&await e.prompter.confirm({message:e.keepPrompt,initialValue:!0})?{useEnv:!1,token:null}:{useEnv:!1,token:await t()}}async function G(e){let t=rt({accountConfigured:e.accountConfigured,hasConfigToken:e.hasConfigToken,allowEnv:e.allowEnv,envValue:e.envValue});!t.accountConfigured&&e.onMissingConfigured&&await e.onMissingConfigured();let n=await at({cfg:e.cfg,prompter:e.prompter,providerHint:e.providerHint,credentialLabel:e.credentialLabel,secretInputMode:e.secretInputMode,accountConfigured:t.accountConfigured,canUseEnv:t.canUseEnv,hasConfigToken:t.hasConfigToken,envPrompt:e.envPrompt,keepPrompt:e.keepPrompt,inputPrompt:e.inputPrompt,preferredEnvVar:e.preferredEnvVar});return n.action===`use-env`?{cfg:e.applyUseEnv?await e.applyUseEnv(e.cfg):e.cfg,action:n.action,resolvedValue:e.envValue?.trim()||void 0}:n.action===`set`?{cfg:e.applySet?await e.applySet(e.cfg,n.value,n.resolvedValue):e.cfg,action:n.action,resolvedValue:n.resolvedValue}:{cfg:e.cfg,action:n.action}}async function at(e){if(await ke({prompter:e.prompter,explicitMode:e.secretInputMode,copy:{modeMessage:`How do you want to provide this ${e.credentialLabel}?`,plaintextLabel:`Enter ${e.credentialLabel}`,plaintextHint:`Stores the credential directly in OpenClaw config`,refLabel:`Use external secret provider`,refHint:`Stores a reference to env or configured external secret providers`}})===`plaintext`){let t=await it({prompter:e.prompter,accountConfigured:e.accountConfigured,canUseEnv:e.canUseEnv,hasConfigToken:e.hasConfigToken,envPrompt:e.envPrompt,keepPrompt:e.keepPrompt,inputPrompt:e.inputPrompt});return t.useEnv?{action:`use-env`}:t.token?{action:`set`,value:t.token,resolvedValue:t.token}:{action:`keep`}}if(e.hasConfigToken&&e.accountConfigured&&await e.prompter.confirm({message:e.keepPrompt,initialValue:!0}))return{action:`keep`};let t=await Ae({provider:e.providerHint,config:e.cfg,prompter:e.prompter,preferredEnvVar:e.preferredEnvVar,copy:{sourceMessage:`Where is this ${e.credentialLabel} stored?`,envVarPlaceholder:e.preferredEnvVar??`OPENCLAW_SECRET`,envVarFormatError:`Use an env var name like "OPENCLAW_SECRET" (uppercase letters, numbers, underscores).`,noProvidersMessage:`No file/exec secret providers are configured yet. Add one under secrets.providers, or select Environment variable.`}});return{action:`set`,value:t.ref,resolvedValue:t.resolvedValue}}async function ot(e){let t=B({accountId:e.accountId,defaultAccountId:e.defaultAccountId}),n=e.getExistingAllowFrom({cfg:e.cfg,accountId:t});await e.prompter.note(e.noteLines.join(`
2
2
  `),e.noteTitle);let r=await e.prompter.text({message:e.message,placeholder:e.placeholder,initialValue:n[0]?String(n[0]):void 0,validate:t=>{let n=String(t??``).trim();return n?e.parseEntries(n).error:`Required`}}),i=Ke(void 0,e.parseEntries(String(r)).entries);return Xe({cfg:e.cfg,channel:e.channel,accountId:t,allowFrom:i})}async function st(e){let t=[];for(let n of e.resolvedSections)n.values.length!==0&&t.push(`${n.title}: ${n.values.join(`, `)}`);e.unresolved&&e.unresolved.length>0&&t.push(`Unresolved (kept as typed): ${e.unresolved.join(`, `)}`),t.length>0&&await e.prompter.note(t.join(`
3
3
  `),e.label)}async function ct(e){await e.prompter.note(`Channel lookup failed; keeping entries as typed. ${String(e.error)}`,e.label)}async function lt(e){for(;;){let t=await e.prompter.text({message:e.message,placeholder:e.placeholder,initialValue:e.existing[0]?String(e.existing[0]):void 0,validate:e=>String(e??``).trim()?void 0:`Required`}),n=e.parseInputs(String(t));if(!e.token){let t=n.map(e.parseId).filter(Boolean);if(t.length!==n.length){await e.prompter.note(e.invalidWithoutTokenNote,e.label);continue}return Ke(e.existing,t)}let r=await e.resolveEntries({token:e.token,entries:n}).catch(()=>null);if(!r){await e.prompter.note(`Failed to resolve usernames. Try again.`,e.label);continue}let i=r.filter(e=>!e.resolved||!e.id);if(i.length>0){await e.prompter.note(`Could not resolve: ${i.map(e=>e.input).join(`, `)}`,e.label);continue}let a=r.map(e=>e.id);return Ke(e.existing,a)}}async function ut(e){await e.prompter.note(e.noteLines.join(`
4
4
  `),e.noteTitle);let t=await lt({prompter:e.prompter,existing:e.existing,token:e.token,message:e.message,placeholder:e.placeholder,label:e.noteTitle,parseInputs:R,parseId:e.parseId,invalidWithoutTokenNote:e.invalidWithoutTokenNote,resolveEntries:e.resolveEntries});return $e({cfg:e.cfg,channel:e.channel,allowFrom:t})}function dt(e){return R(String(e??``))}function ft(e){return e.map(e=>e.trim()).filter(Boolean).join(`, `)}async function pt(e){let t=[{value:`allowlist`,label:`Allowlist (recommended)`}];e.allowOpen!==!1&&t.push({value:`open`,label:`Open (allow all channels)`}),e.allowDisabled!==!1&&t.push({value:`disabled`,label:`Disabled (block all channels)`});let n=e.currentPolicy??`allowlist`;return await e.prompter.select({message:`${e.label} access`,options:t,initialValue:n})}async function mt(e){let t=e.currentEntries&&e.currentEntries.length>0?ft(e.currentEntries):void 0;return dt(await e.prompter.text({message:`${e.label} allowlist (comma-separated)`,placeholder:e.placeholder,initialValue:t}))}async function ht(e){let t=(e.currentEntries??[]).length>0,n=e.defaultPrompt??!t;if(!await e.prompter.confirm({message:e.updatePrompt?`Update ${e.label} access?`:`Configure ${e.label} access?`,initialValue:n}))return null;let r=await pt({prompter:e.prompter,label:e.label,currentPolicy:e.currentPolicy,allowOpen:e.allowOpen,allowDisabled:e.allowDisabled});return r===`allowlist`?{policy:r,entries:await mt({prompter:e.prompter,label:e.label,currentEntries:e.currentEntries,placeholder:e.placeholder})}:{policy:r,entries:[]}}async function gt(e){let t=e.cfg,n=await ht({prompter:e.prompter,label:e.label,currentPolicy:e.currentPolicy,currentEntries:e.currentEntries,placeholder:e.placeholder,updatePrompt:e.updatePrompt});if(!n)return t;if(n.policy!==`allowlist`)return e.setPolicy(t,n.policy);let r=await e.resolveAllowlist({cfg:t,entries:n.entries});return t=e.setPolicy(t,`allowlist`),e.applyAllowlist({cfg:t,resolved:r})}const K=`discord`;async function _t(e){await e.note([`1) Discord Developer Portal → Applications → New Application`,`2) Bot → Add Bot → Reset Token → copy token`,`3) OAuth2 → URL Generator → scope 'bot' → invite to your server`,`Tip: enable Message Content Intent if you need message text. (Bot → Privileged Gateway Intents → Message Content Intent)`,`Docs: ${P(`/discord`,`discord`)}`].join(`
@@ -4,4 +4,4 @@ import{n as e,u as t}from"./paths-B4IRk3wi.js";import{p as n}from"./subsystem-C5
4
4
  `),`QuickStart`)}let x=t(h),S=`ws://127.0.0.1:${x}`,C=process.env.OPENCLAW_GATEWAY_TOKEN??process.env.CLAWDBOT_GATEWAY_TOKEN;try{let e=await l({config:h,value:h.gateway?.auth?.token,path:`gateway.auth.token`,env:process.env});e&&(C=e)}catch(e){await f.note([`Could not resolve gateway.auth.token SecretRef for onboarding probe.`,e instanceof Error?e.message:String(e)].join(`
5
5
  `),`Gateway auth`)}let w=process.env.OPENCLAW_GATEWAY_PASSWORD??process.env.CLAWDBOT_GATEWAY_PASSWORD;try{let e=await l({config:h,value:h.gateway?.auth?.password,path:`gateway.auth.password`,env:process.env});e&&(w=e)}catch(e){await f.note([`Could not resolve gateway.auth.password SecretRef for onboarding probe.`,e instanceof Error?e.message:String(e)].join(`
6
6
  `),`Gateway auth`)}let T=await p.probeGatewayReachable({url:S,token:C,password:w}),E=h.gateway?.remote?.url?.trim()??``,D=o(h.gateway?.remote?.token);try{let e=await l({config:h,value:h.gateway?.remote?.token,path:`gateway.remote.token`,env:process.env});e&&(D=e)}catch(e){await f.note([`Could not resolve gateway.remote.token SecretRef for onboarding probe.`,e instanceof Error?e.message:String(e)].join(`
7
- `),`Gateway auth`)}let O=E?await p.probeGatewayReachable({url:E,token:D}):null,k=c.mode??(y===`quickstart`?`local`:await f.select({message:`What do you want to set up?`,options:[{value:`local`,label:`Local gateway (this machine)`,hint:T.ok?`Gateway reachable (${S})`:`No gateway detected (${S})`},{value:`remote`,label:`Remote gateway (info-only)`,hint:E?O?.ok?`Gateway reachable (${E})`:`Configured but unreachable (${E})`:`No remote URL configured yet`}]}));if(k===`remote`){let{promptRemoteGatewayConfig:e}=await import(`./onboard-remote-C7Eg49Uf.js`).then(e=>e.t),{logConfigUpdated:t}=await import(`./logging-CbMVr2MA.js`).then(e=>e.r),n=await e(h,f,{secretInputMode:c.secretInputMode});n=p.applyWizardMetadata(n,{command:`onboard`,mode:k}),await a(n),t(d),await f.outro(`Remote gateway configured.`);return}let A=r((c.workspace??(y===`quickstart`?h.agents?.defaults?.workspace??p.DEFAULT_WORKSPACE:await f.text({message:`Workspace directory`,initialValue:h.agents?.defaults?.workspace??p.DEFAULT_WORKSPACE}))).trim()||p.DEFAULT_WORKSPACE),{applyOnboardingLocalWorkspaceConfig:j}=await import(`./onboard-config-DS9dUv8M.js`).then(e=>e.n),M=j(h,A),{ensureAuthProfileStore:N}=await import(`./model-selection-BLbnMb5E.js`).then(e=>e.Ct),{promptAuthChoiceGrouped:P}=await import(`./auth-choice-prompt-xYj13czb.js`).then(e=>e.t),{promptCustomApiConfig:F}=await import(`./onboard-custom--OylwoHQ.js`).then(e=>e.r),{applyAuthChoice:I,resolvePreferredProviderForAuthChoice:L,warnIfModelConfigLooksOff:R}=await import(`./auth-choice-BmI4sIGs.js`).then(e=>e.t),{applyPrimaryModel:z,promptDefaultModel:B}=await import(`./model-picker-DeiWyW0N.js`).then(e=>e.i),V=N(void 0,{allowKeychainPrompt:!1}),H=c.authChoice===void 0,U=c.authChoice??await P({prompter:f,store:V,includeSkip:!0});if(U===`custom-api-key`)M=(await F({prompter:f,runtime:d,config:M,secretInputMode:c.secretInputMode})).config;else{let e=await I({authChoice:U,config:M,prompter:f,runtime:d,setDefaultModel:!(H&&U===`ollama`),opts:{tokenProvider:c.tokenProvider,token:c.authChoice===`apiKey`&&c.token?c.token:void 0}});M=e.config,e.agentModelOverride&&(M=z(M,e.agentModelOverride))}if(H&&U!==`custom-api-key`){let e=await B({config:M,prompter:f,allowKeep:!0,ignoreAllowlist:!0,includeVllm:!0,preferredProvider:L(U)});e.config&&(M=e.config),e.model&&(M=z(M,e.model))}if(U===`ollama`){let{ensureOllamaModelPulled:e}=await import(`./ollama-setup-CGuyH3Ey.js`).then(e=>e.r);await e({config:M,prompter:f})}await R(M,f);let{configureGatewayForOnboarding:W}=await import(`./onboarding.gateway-config-TSq70E-S.js`),G=await W({flow:y,baseConfig:h,nextConfig:M,localPort:x,quickstartGateway:b,secretInputMode:c.secretInputMode,prompter:f,runtime:d});M=G.nextConfig;let K=G.settings;if(c.skipChannels??c.skipProviders)await f.note(`Skipping channel setup.`,`Channels`);else{let{listChannelPlugins:e}=await import(`./plugins-CYLrFT4h.js`).then(e=>e.i),{setupChannels:t}=await import(`./onboard-channels-BO3AN_eA.js`).then(e=>e.n),n=y===`quickstart`?e().filter(e=>e.meta.quickstartAllowFrom).map(e=>e.id):[];M=await t(M,d,f,{allowSignalInstall:!0,forceAllowFromChannels:n,skipDmPolicyPrompt:y===`quickstart`,skipConfirm:y===`quickstart`,quickstartDefaults:y===`quickstart`,secretInputMode:c.secretInputMode})}await a(M);let{logConfigUpdated:q}=await import(`./logging-CbMVr2MA.js`).then(e=>e.r);if(q(d),await p.ensureWorkspaceAndSessions(A,d,{skipBootstrap:!!M.agents?.defaults?.skipBootstrap}),c.skipSearch)await f.note(`Skipping search setup.`,`Search`);else{let{setupSearch:e}=await import(`./onboard-search-f2tJD4hg.js`);M=await e(M,d,f,{quickstartDefaults:y===`quickstart`,secretInputMode:c.secretInputMode})}if(c.skipSkills)await f.note(`Skipping skills setup.`,`Skills`);else{let{setupSkills:e}=await import(`./onboard-skills-_TBzISd2.js`).then(e=>e.t);M=await e(M,A,d,f)}let{setupInternalHooks:J}=await import(`./onboard-hooks-CERzXObm.js`);M=await J(M,d,f),M=p.applyWizardMetadata(M,{command:`onboard`,mode:k}),await a(M);let{finalizeOnboardingWizard:Y}=await import(`./onboarding.finalize-BJxMhYUa.js`),{launchedTui:X}=await Y({flow:y,opts:c,baseConfig:h,nextConfig:M,workspaceDir:A,settings:K,prompter:f,runtime:d})}export{d as t};
7
+ `),`Gateway auth`)}let O=E?await p.probeGatewayReachable({url:E,token:D}):null,k=c.mode??(y===`quickstart`?`local`:await f.select({message:`What do you want to set up?`,options:[{value:`local`,label:`Local gateway (this machine)`,hint:T.ok?`Gateway reachable (${S})`:`No gateway detected (${S})`},{value:`remote`,label:`Remote gateway (info-only)`,hint:E?O?.ok?`Gateway reachable (${E})`:`Configured but unreachable (${E})`:`No remote URL configured yet`}]}));if(k===`remote`){let{promptRemoteGatewayConfig:e}=await import(`./onboard-remote-C7Eg49Uf.js`).then(e=>e.t),{logConfigUpdated:t}=await import(`./logging-CbMVr2MA.js`).then(e=>e.r),n=await e(h,f,{secretInputMode:c.secretInputMode});n=p.applyWizardMetadata(n,{command:`onboard`,mode:k}),await a(n),t(d),await f.outro(`Remote gateway configured.`);return}let A=r((c.workspace??(y===`quickstart`?h.agents?.defaults?.workspace??p.DEFAULT_WORKSPACE:await f.text({message:`Workspace directory`,initialValue:h.agents?.defaults?.workspace??p.DEFAULT_WORKSPACE}))).trim()||p.DEFAULT_WORKSPACE),{applyOnboardingLocalWorkspaceConfig:j}=await import(`./onboard-config-DS9dUv8M.js`).then(e=>e.n),M=j(h,A),{ensureAuthProfileStore:N}=await import(`./model-selection-BLbnMb5E.js`).then(e=>e.Ct),{promptAuthChoiceGrouped:P}=await import(`./auth-choice-prompt-xYj13czb.js`).then(e=>e.t),{promptCustomApiConfig:F}=await import(`./onboard-custom--OylwoHQ.js`).then(e=>e.r),{applyAuthChoice:I,resolvePreferredProviderForAuthChoice:L,warnIfModelConfigLooksOff:R}=await import(`./auth-choice-EAV1bi1K.js`).then(e=>e.t),{applyPrimaryModel:z,promptDefaultModel:B}=await import(`./model-picker-DeiWyW0N.js`).then(e=>e.i),V=N(void 0,{allowKeychainPrompt:!1}),H=c.authChoice===void 0,U=c.authChoice??await P({prompter:f,store:V,includeSkip:!0});if(U===`custom-api-key`)M=(await F({prompter:f,runtime:d,config:M,secretInputMode:c.secretInputMode})).config;else{let e=await I({authChoice:U,config:M,prompter:f,runtime:d,setDefaultModel:!(H&&U===`ollama`),opts:{tokenProvider:c.tokenProvider,token:c.authChoice===`apiKey`&&c.token?c.token:void 0}});M=e.config,e.agentModelOverride&&(M=z(M,e.agentModelOverride))}if(H&&U!==`custom-api-key`){let e=await B({config:M,prompter:f,allowKeep:!0,ignoreAllowlist:!0,includeVllm:!0,preferredProvider:L(U)});e.config&&(M=e.config),e.model&&(M=z(M,e.model))}if(U===`ollama`){let{ensureOllamaModelPulled:e}=await import(`./ollama-setup-CGuyH3Ey.js`).then(e=>e.r);await e({config:M,prompter:f})}await R(M,f);let{configureGatewayForOnboarding:W}=await import(`./onboarding.gateway-config-TSq70E-S.js`),G=await W({flow:y,baseConfig:h,nextConfig:M,localPort:x,quickstartGateway:b,secretInputMode:c.secretInputMode,prompter:f,runtime:d});M=G.nextConfig;let K=G.settings;if(c.skipChannels??c.skipProviders)await f.note(`Skipping channel setup.`,`Channels`);else{let{listChannelPlugins:e}=await import(`./plugins-CYLrFT4h.js`).then(e=>e.i),{setupChannels:t}=await import(`./onboard-channels-DFB6deX0.js`).then(e=>e.n),n=y===`quickstart`?e().filter(e=>e.meta.quickstartAllowFrom).map(e=>e.id):[];M=await t(M,d,f,{allowSignalInstall:!0,forceAllowFromChannels:n,skipDmPolicyPrompt:y===`quickstart`,skipConfirm:y===`quickstart`,quickstartDefaults:y===`quickstart`,secretInputMode:c.secretInputMode})}await a(M);let{logConfigUpdated:q}=await import(`./logging-CbMVr2MA.js`).then(e=>e.r);if(q(d),await p.ensureWorkspaceAndSessions(A,d,{skipBootstrap:!!M.agents?.defaults?.skipBootstrap}),c.skipSearch)await f.note(`Skipping search setup.`,`Search`);else{let{setupSearch:e}=await import(`./onboard-search-f2tJD4hg.js`);M=await e(M,d,f,{quickstartDefaults:y===`quickstart`,secretInputMode:c.secretInputMode})}if(c.skipSkills)await f.note(`Skipping skills setup.`,`Skills`);else{let{setupSkills:e}=await import(`./onboard-skills-_TBzISd2.js`).then(e=>e.t);M=await e(M,A,d,f)}let{setupInternalHooks:J}=await import(`./onboard-hooks-CERzXObm.js`);M=await J(M,d,f),M=p.applyWizardMetadata(M,{command:`onboard`,mode:k}),await a(M);let{finalizeOnboardingWizard:Y}=await import(`./onboarding.finalize-C-b9zSIO.js`),{launchedTui:X}=await Y({flow:y,opts:c,baseConfig:h,nextConfig:M,workspaceDir:A,settings:K,prompter:f,runtime:d})}export{d as t};
@@ -4,4 +4,4 @@ import{p as e}from"./subsystem-BLbY429l.js";import{n as t,u as n}from"./paths-Bj
4
4
  `),`QuickStart`)}let x=n(h),S=`ws://127.0.0.1:${x}`,C=process.env.OPENCLAW_GATEWAY_TOKEN??process.env.CLAWDBOT_GATEWAY_TOKEN;try{let e=await l({config:h,value:h.gateway?.auth?.token,path:`gateway.auth.token`,env:process.env});e&&(C=e)}catch(e){await f.note([`Could not resolve gateway.auth.token SecretRef for onboarding probe.`,e instanceof Error?e.message:String(e)].join(`
5
5
  `),`Gateway auth`)}let w=process.env.OPENCLAW_GATEWAY_PASSWORD??process.env.CLAWDBOT_GATEWAY_PASSWORD;try{let e=await l({config:h,value:h.gateway?.auth?.password,path:`gateway.auth.password`,env:process.env});e&&(w=e)}catch(e){await f.note([`Could not resolve gateway.auth.password SecretRef for onboarding probe.`,e instanceof Error?e.message:String(e)].join(`
6
6
  `),`Gateway auth`)}let T=await p.probeGatewayReachable({url:S,token:C,password:w}),E=h.gateway?.remote?.url?.trim()??``,D=s(h.gateway?.remote?.token);try{let e=await l({config:h,value:h.gateway?.remote?.token,path:`gateway.remote.token`,env:process.env});e&&(D=e)}catch(e){await f.note([`Could not resolve gateway.remote.token SecretRef for onboarding probe.`,e instanceof Error?e.message:String(e)].join(`
7
- `),`Gateway auth`)}let O=E?await p.probeGatewayReachable({url:E,token:D}):null,k=c.mode??(y===`quickstart`?`local`:await f.select({message:`What do you want to set up?`,options:[{value:`local`,label:`Local gateway (this machine)`,hint:T.ok?`Gateway reachable (${S})`:`No gateway detected (${S})`},{value:`remote`,label:`Remote gateway (info-only)`,hint:E?O?.ok?`Gateway reachable (${E})`:`Configured but unreachable (${E})`:`No remote URL configured yet`}]}));if(k===`remote`){let{promptRemoteGatewayConfig:e}=await import(`./onboard-remote-B1-SlmUN.js`).then(e=>e.t),{logConfigUpdated:t}=await import(`./logging-B7XHbCNn.js`).then(e=>e.r),n=await e(h,f,{secretInputMode:c.secretInputMode});n=p.applyWizardMetadata(n,{command:`onboard`,mode:k}),await r(n),t(d),await f.outro(`Remote gateway configured.`);return}let A=o((c.workspace??(y===`quickstart`?h.agents?.defaults?.workspace??p.DEFAULT_WORKSPACE:await f.text({message:`Workspace directory`,initialValue:h.agents?.defaults?.workspace??p.DEFAULT_WORKSPACE}))).trim()||p.DEFAULT_WORKSPACE),{applyOnboardingLocalWorkspaceConfig:j}=await import(`./onboard-config-B7U20YRw.js`).then(e=>e.n),M=j(h,A),{ensureAuthProfileStore:N}=await import(`./auth-profiles-C8rZRS0X.js`).then(e=>e.t),{promptAuthChoiceGrouped:P}=await import(`./auth-choice-prompt-uegl56cf.js`).then(e=>e.t),{promptCustomApiConfig:F}=await import(`./onboard-custom-_Df_ciX2.js`).then(e=>e.r),{applyAuthChoice:I,resolvePreferredProviderForAuthChoice:L,warnIfModelConfigLooksOff:R}=await import(`./auth-choice-MqcWuVyu.js`).then(e=>e.t),{applyPrimaryModel:z,promptDefaultModel:B}=await import(`./model-picker-BB0Zdvyu.js`).then(e=>e.i),V=N(void 0,{allowKeychainPrompt:!1}),H=c.authChoice===void 0,U=c.authChoice??await P({prompter:f,store:V,includeSkip:!0});if(U===`custom-api-key`)M=(await F({prompter:f,runtime:d,config:M,secretInputMode:c.secretInputMode})).config;else{let e=await I({authChoice:U,config:M,prompter:f,runtime:d,setDefaultModel:!(H&&U===`ollama`),opts:{tokenProvider:c.tokenProvider,token:c.authChoice===`apiKey`&&c.token?c.token:void 0}});M=e.config,e.agentModelOverride&&(M=z(M,e.agentModelOverride))}if(H&&U!==`custom-api-key`){let e=await B({config:M,prompter:f,allowKeep:!0,ignoreAllowlist:!0,includeVllm:!0,preferredProvider:L(U)});e.config&&(M=e.config),e.model&&(M=z(M,e.model))}if(U===`ollama`){let{ensureOllamaModelPulled:e}=await import(`./ollama-setup-LVRPefmV.js`).then(e=>e.r);await e({config:M,prompter:f})}await R(M,f);let{configureGatewayForOnboarding:W}=await import(`./onboarding.gateway-config-CXjzrfwL.js`),G=await W({flow:y,baseConfig:h,nextConfig:M,localPort:x,quickstartGateway:b,secretInputMode:c.secretInputMode,prompter:f,runtime:d});M=G.nextConfig;let K=G.settings;if(c.skipChannels??c.skipProviders)await f.note(`Skipping channel setup.`,`Channels`);else{let{listChannelPlugins:e}=await import(`./plugins-DNlgeTTc.js`).then(e=>e.i),{setupChannels:t}=await import(`./onboard-channels-BDMtq3ex.js`).then(e=>e.n),n=y===`quickstart`?e().filter(e=>e.meta.quickstartAllowFrom).map(e=>e.id):[];M=await t(M,d,f,{allowSignalInstall:!0,forceAllowFromChannels:n,skipDmPolicyPrompt:y===`quickstart`,skipConfirm:y===`quickstart`,quickstartDefaults:y===`quickstart`,secretInputMode:c.secretInputMode})}await r(M);let{logConfigUpdated:q}=await import(`./logging-B7XHbCNn.js`).then(e=>e.r);if(q(d),await p.ensureWorkspaceAndSessions(A,d,{skipBootstrap:!!M.agents?.defaults?.skipBootstrap}),c.skipSearch)await f.note(`Skipping search setup.`,`Search`);else{let{setupSearch:e}=await import(`./onboard-search-fslKKhyg.js`);M=await e(M,d,f,{quickstartDefaults:y===`quickstart`,secretInputMode:c.secretInputMode})}if(c.skipSkills)await f.note(`Skipping skills setup.`,`Skills`);else{let{setupSkills:e}=await import(`./onboard-skills-DCgTr6hW.js`).then(e=>e.t);M=await e(M,A,d,f)}let{setupInternalHooks:J}=await import(`./onboard-hooks-gQ3sxBNi.js`);M=await J(M,d,f),M=p.applyWizardMetadata(M,{command:`onboard`,mode:k}),await r(M);let{finalizeOnboardingWizard:Y}=await import(`./onboarding.finalize-UiX3YmbI.js`),{launchedTui:X}=await Y({flow:y,opts:c,baseConfig:h,nextConfig:M,workspaceDir:A,settings:K,prompter:f,runtime:d})}export{d as t};
7
+ `),`Gateway auth`)}let O=E?await p.probeGatewayReachable({url:E,token:D}):null,k=c.mode??(y===`quickstart`?`local`:await f.select({message:`What do you want to set up?`,options:[{value:`local`,label:`Local gateway (this machine)`,hint:T.ok?`Gateway reachable (${S})`:`No gateway detected (${S})`},{value:`remote`,label:`Remote gateway (info-only)`,hint:E?O?.ok?`Gateway reachable (${E})`:`Configured but unreachable (${E})`:`No remote URL configured yet`}]}));if(k===`remote`){let{promptRemoteGatewayConfig:e}=await import(`./onboard-remote-B1-SlmUN.js`).then(e=>e.t),{logConfigUpdated:t}=await import(`./logging-B7XHbCNn.js`).then(e=>e.r),n=await e(h,f,{secretInputMode:c.secretInputMode});n=p.applyWizardMetadata(n,{command:`onboard`,mode:k}),await r(n),t(d),await f.outro(`Remote gateway configured.`);return}let A=o((c.workspace??(y===`quickstart`?h.agents?.defaults?.workspace??p.DEFAULT_WORKSPACE:await f.text({message:`Workspace directory`,initialValue:h.agents?.defaults?.workspace??p.DEFAULT_WORKSPACE}))).trim()||p.DEFAULT_WORKSPACE),{applyOnboardingLocalWorkspaceConfig:j}=await import(`./onboard-config-B7U20YRw.js`).then(e=>e.n),M=j(h,A),{ensureAuthProfileStore:N}=await import(`./auth-profiles-C8rZRS0X.js`).then(e=>e.t),{promptAuthChoiceGrouped:P}=await import(`./auth-choice-prompt-uegl56cf.js`).then(e=>e.t),{promptCustomApiConfig:F}=await import(`./onboard-custom-_Df_ciX2.js`).then(e=>e.r),{applyAuthChoice:I,resolvePreferredProviderForAuthChoice:L,warnIfModelConfigLooksOff:R}=await import(`./auth-choice-DacG9sC7.js`).then(e=>e.t),{applyPrimaryModel:z,promptDefaultModel:B}=await import(`./model-picker-BB0Zdvyu.js`).then(e=>e.i),V=N(void 0,{allowKeychainPrompt:!1}),H=c.authChoice===void 0,U=c.authChoice??await P({prompter:f,store:V,includeSkip:!0});if(U===`custom-api-key`)M=(await F({prompter:f,runtime:d,config:M,secretInputMode:c.secretInputMode})).config;else{let e=await I({authChoice:U,config:M,prompter:f,runtime:d,setDefaultModel:!(H&&U===`ollama`),opts:{tokenProvider:c.tokenProvider,token:c.authChoice===`apiKey`&&c.token?c.token:void 0}});M=e.config,e.agentModelOverride&&(M=z(M,e.agentModelOverride))}if(H&&U!==`custom-api-key`){let e=await B({config:M,prompter:f,allowKeep:!0,ignoreAllowlist:!0,includeVllm:!0,preferredProvider:L(U)});e.config&&(M=e.config),e.model&&(M=z(M,e.model))}if(U===`ollama`){let{ensureOllamaModelPulled:e}=await import(`./ollama-setup-LVRPefmV.js`).then(e=>e.r);await e({config:M,prompter:f})}await R(M,f);let{configureGatewayForOnboarding:W}=await import(`./onboarding.gateway-config-CXjzrfwL.js`),G=await W({flow:y,baseConfig:h,nextConfig:M,localPort:x,quickstartGateway:b,secretInputMode:c.secretInputMode,prompter:f,runtime:d});M=G.nextConfig;let K=G.settings;if(c.skipChannels??c.skipProviders)await f.note(`Skipping channel setup.`,`Channels`);else{let{listChannelPlugins:e}=await import(`./plugins-DNlgeTTc.js`).then(e=>e.i),{setupChannels:t}=await import(`./onboard-channels-C5lcb7dF.js`).then(e=>e.n),n=y===`quickstart`?e().filter(e=>e.meta.quickstartAllowFrom).map(e=>e.id):[];M=await t(M,d,f,{allowSignalInstall:!0,forceAllowFromChannels:n,skipDmPolicyPrompt:y===`quickstart`,skipConfirm:y===`quickstart`,quickstartDefaults:y===`quickstart`,secretInputMode:c.secretInputMode})}await r(M);let{logConfigUpdated:q}=await import(`./logging-B7XHbCNn.js`).then(e=>e.r);if(q(d),await p.ensureWorkspaceAndSessions(A,d,{skipBootstrap:!!M.agents?.defaults?.skipBootstrap}),c.skipSearch)await f.note(`Skipping search setup.`,`Search`);else{let{setupSearch:e}=await import(`./onboard-search-fslKKhyg.js`);M=await e(M,d,f,{quickstartDefaults:y===`quickstart`,secretInputMode:c.secretInputMode})}if(c.skipSkills)await f.note(`Skipping skills setup.`,`Skills`);else{let{setupSkills:e}=await import(`./onboard-skills-DCgTr6hW.js`).then(e=>e.t);M=await e(M,A,d,f)}let{setupInternalHooks:J}=await import(`./onboard-hooks-gQ3sxBNi.js`);M=await J(M,d,f),M=p.applyWizardMetadata(M,{command:`onboard`,mode:k}),await r(M);let{finalizeOnboardingWizard:Y}=await import(`./onboarding.finalize-XCttW8IU.js`),{launchedTui:X}=await Y({flow:y,opts:c,baseConfig:h,nextConfig:M,workspaceDir:A,settings:K,prompter:f,runtime:d})}export{d as t};