@qqbrowser/openclaw-qbot 0.0.142 → 0.0.143

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 (257) hide show
  1. package/dist/{agents-Bpp_F5In.js → agents-D3Z05GqK.js} +2 -2
  2. package/dist/{agents.config-DfIJAGcd.js → agents.config-BUQjISaN.js} +2 -2
  3. package/dist/{agents.config-B6LRG9eP.js → agents.config-BvxrGqOT.js} +2 -2
  4. package/dist/{auth-choice-DvTApGhx.js → auth-choice-CYGzLW73.js} +2 -2
  5. package/dist/{auth-choice-EQdNd7jO.js → auth-choice-DJn6683d.js} +2 -2
  6. package/dist/{banner-9u45RL26.js → banner-xQa2kS6O.js} +2 -2
  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-D2syI791.js → channel-options-BurUBfoY.js} +2 -2
  12. package/dist/{channel-options-CEIzjOno.js → channel-options-Ce8uNnAp.js} +2 -2
  13. package/dist/{channel-web-BrElpZAc.js → channel-web-D5TgFlMz.js} +2 -2
  14. package/dist/{channel-web-CxHbET4B.js → channel-web-D7FkrASC.js} +2 -2
  15. package/dist/{channels-cli-BmAJuuRs.js → channels-cli-BfzZrnkt.js} +2 -2
  16. package/dist/{channels-cli-Dgosczr6.js → channels-cli-DFI6F6G0.js} +2 -2
  17. package/dist/{cli-D8T2tphD.js → cli-CMLvfh6N.js} +2 -2
  18. package/dist/{cli-BcnoCo4z.js → cli-MTpYYgjl.js} +2 -2
  19. package/dist/{command-registry-CfuXCRwV.js → command-registry-CPthpEk3.js} +2 -2
  20. package/dist/{compact-Dg66DXx_.js → compact-BEeB6bwq.js} +7 -7
  21. package/dist/{compact.runtime-3mTLUPqu.js → compact.runtime-BC7F7HPJ.js} +1 -1
  22. package/dist/{compact.runtime-DcTdUW4o.js → compact.runtime-BTUQRS-2.js} +1 -1
  23. package/dist/{compact.runtime-Bhewj5vA.js → compact.runtime-C0GyLWem.js} +1 -1
  24. package/dist/{compact.runtime-XXtYlNJN.js → compact.runtime-CrOFsO5D.js} +1 -1
  25. package/dist/{completion-cli-C40TWdsv.js → completion-cli-C4_SZmjl.js} +2 -2
  26. package/dist/{completion-cli-BZi4nuQb.js → completion-cli-DeGEpJri.js} +2 -2
  27. package/dist/{config-cli-CBte2b1h.js → config-cli-B9hEiZsw.js} +2 -2
  28. package/dist/{config-cli-1ojSLwAj.js → config-cli-BNTGUqL_.js} +2 -2
  29. package/dist/{configure-kod4tmZa.js → configure-DForkh7R.js} +2 -2
  30. package/dist/{configure-DJrNDEpR.js → configure-DR77VUCy.js} +2 -2
  31. package/dist/{deps-send-whatsapp.runtime-C4O9crnk.js → deps-send-whatsapp.runtime-BuIiTn5n.js} +1 -1
  32. package/dist/{deps-send-whatsapp.runtime-5Lot99zq.js → deps-send-whatsapp.runtime-C4hGmfeP.js} +1 -1
  33. package/dist/{deps-send-whatsapp.runtime-LiNvHd_E.js → deps-send-whatsapp.runtime-CYlLppMS.js} +1 -1
  34. package/dist/{deps-send-whatsapp.runtime-Bg-_kVX6.js → deps-send-whatsapp.runtime-FY-HuZ5S.js} +1 -1
  35. package/dist/{doctor-completion-DMJhfrtC.js → doctor-completion-APZJ17BJ.js} +2 -2
  36. package/dist/{doctor-completion-BJ6steqx.js → doctor-completion-Bad_h3hm.js} +2 -2
  37. package/dist/entry.js +1 -1
  38. package/dist/extensionAPI.js +1 -1
  39. package/dist/{gateway-cli-CKu0FA7D.js → gateway-cli-CbJj0QhL.js} +3 -3
  40. package/dist/{gateway-cli-C_s9eMlC.js → gateway-cli-tXsBFRlk.js} +3 -3
  41. package/dist/{health-PaRHFItm.js → health-DBu0V1Y-.js} +2 -2
  42. package/dist/{health-BgOggK9k.js → health-RQzDNQwf.js} +2 -2
  43. package/dist/{hooks-cli-CsBrScq0.js → hooks-cli-B3eDoEHO.js} +2 -2
  44. package/dist/{hooks-cli-BzyzTNBx.js → hooks-cli-xgORhqZ2.js} +2 -2
  45. package/dist/index.js +2 -2
  46. package/dist/llm-slug-generator.js +1 -1
  47. package/dist/{models-C_Vg3Cty.js → models-BEO5lvkx.js} +2 -2
  48. package/dist/{models-cli-CDZliTXq.js → models-cli-BbcJ6A0F.js} +2 -2
  49. package/dist/{models-cli-bGr8jwAb.js → models-cli-Dacwv6BY.js} +2 -2
  50. package/dist/{npm-resolution-DWPloph4.js → npm-resolution-Bui58Ks1.js} +2 -2
  51. package/dist/{npm-resolution-BnJGLwhi.js → npm-resolution-Ct6MRtq6.js} +2 -2
  52. package/dist/{onboard-B0BNCQaO.js → onboard-7i9A1nNd.js} +3 -3
  53. package/dist/{onboard-CjVhdaiR.js → onboard-DSaXIS5U.js} +3 -3
  54. package/dist/{onboard-channels-CZK_7xMR.js → onboard-channels-BXReNh4B.js} +2 -2
  55. package/dist/{onboard-channels-BMIOddLN.js → onboard-channels-CjXCpXI-.js} +2 -2
  56. package/dist/{onboarding-ouEqUuUr.js → onboarding-BRewu6jg.js} +2 -2
  57. package/dist/{onboarding-B6ixWwgp.js → onboarding-RZTEMxl0.js} +2 -2
  58. package/dist/{onboarding.finalize-DsMVlTcH.js → onboarding.finalize-Bi53z1zE.js} +2 -2
  59. package/dist/{onboarding.finalize-Bgat5Npc.js → onboarding.finalize-Bp8ST2z_.js} +2 -2
  60. package/dist/{pi-embedded-BZSn84Bh.js → pi-embedded-B_6OtP8m.js} +7 -7
  61. package/dist/{pi-embedded-Dsz7p3MF.js → pi-embedded-DjX-gdoY.js} +7 -7
  62. package/dist/{plugin-registry-CIBiHZH1.js → plugin-registry-CI5K3iWc.js} +2 -2
  63. package/dist/{plugin-registry-C6dY-Et7.js → plugin-registry-CYlBYbc8.js} +2 -2
  64. package/dist/plugin-sdk/{channel-web-9zn1Itpg.cjs → channel-web-BSUPSLCU.cjs} +2 -2
  65. package/dist/plugin-sdk/{channel-web-4ZQVqsrt.js → channel-web-CeSPyNTh.js} +2 -2
  66. package/dist/plugin-sdk/{channel-web-BrB00HKH.js → channel-web-Cptth4mc.js} +2 -2
  67. package/dist/plugin-sdk/{channel-web-DN5La-Ol.cjs → channel-web-D4x22KPN.cjs} +2 -2
  68. package/dist/plugin-sdk/{compact.runtime-8oUv1ld1.cjs → compact.runtime-BDgWntMu.cjs} +1 -1
  69. package/dist/plugin-sdk/{compact.runtime-CmJayEYX.js → compact.runtime-BJFMaTF4.js} +1 -1
  70. package/dist/plugin-sdk/{compact.runtime-BjJCBESR.cjs → compact.runtime-BWadwUyE.cjs} +1 -1
  71. package/dist/plugin-sdk/{compact.runtime-ALKRoVEG.js → compact.runtime-Bfu2rMai.js} +1 -1
  72. package/dist/plugin-sdk/{compact.runtime-DBlESOSV.cjs → compact.runtime-Cg47oUHq.cjs} +1 -1
  73. package/dist/plugin-sdk/{compact.runtime-Dmc0G6Yn.js → compact.runtime-CqK86P7R.js} +1 -1
  74. package/dist/plugin-sdk/{compact.runtime-Chumwp0K.cjs → compact.runtime-CqrB25-A.cjs} +1 -1
  75. package/dist/plugin-sdk/{compact.runtime-Ddfxp3fz.js → compact.runtime-DeATtENL.js} +1 -1
  76. package/dist/plugin-sdk/{compact.runtime-C_dc78Lp.cjs → compact.runtime-GMu30Jmw.cjs} +1 -1
  77. package/dist/plugin-sdk/{compact.runtime-ZrApPcrV.js → compact.runtime-YFzugj-k.js} +1 -1
  78. package/dist/plugin-sdk/{compact.runtime-BF4SCZ-5.js → compact.runtime-a8Z4_6wu.js} +1 -1
  79. package/dist/plugin-sdk/{compact.runtime-CbzQiVEW.cjs → compact.runtime-jGNfnpo2.cjs} +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-BEDFRjff.js → deps-send-whatsapp.runtime-23E2Ab5R.js} +1 -1
  83. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-QY0XTSgX.cjs → deps-send-whatsapp.runtime-B1oA3XBA.cjs} +1 -1
  84. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-Du_3Rw7K.cjs → deps-send-whatsapp.runtime-C8q_3sOf.cjs} +1 -1
  85. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-DMeaTnvE.cjs → deps-send-whatsapp.runtime-CsebM75z.cjs} +1 -1
  86. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-CrVVnzLl.js → deps-send-whatsapp.runtime-D3mYdwaT.js} +1 -1
  87. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-DR4rvUQL.js → deps-send-whatsapp.runtime-DDwUEbJ8.js} +1 -1
  88. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-BULlOkpi.cjs → deps-send-whatsapp.runtime-Di3p_3Eh.cjs} +1 -1
  89. package/dist/plugin-sdk/{deps-send-whatsapp.runtime--uXLMs1C.js → deps-send-whatsapp.runtime-JzRD4jTI.js} +1 -1
  90. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-BRjb9631.cjs → deps-send-whatsapp.runtime-gEp895yA.cjs} +1 -1
  91. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-VQXeRmRl.js → deps-send-whatsapp.runtime-iV5E6CHf.js} +1 -1
  92. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-2Us9O7dL.cjs → deps-send-whatsapp.runtime-k0yGrhs2.cjs} +1 -1
  93. package/dist/plugin-sdk/{deps-send-whatsapp.runtime-BfV5Q2fx.js → deps-send-whatsapp.runtime-v3sqBoDg.js} +1 -1
  94. package/dist/plugin-sdk/{dispatch-C2YTqGlf.js → dispatch-3PrSaGZi.js} +7 -7
  95. package/dist/plugin-sdk/{dispatch-DHbSBeFJ.js → dispatch-Bcf1uPHo.js} +7 -7
  96. package/dist/plugin-sdk/{dispatch-SWyfAZT0.cjs → dispatch-BgGE9usQ.cjs} +7 -7
  97. package/dist/plugin-sdk/{dispatch-BYlcmJ9u.js → dispatch-BhUN9ZDP.js} +7 -7
  98. package/dist/plugin-sdk/{dispatch-DK5ub8qa.cjs → dispatch-C3k8j6Zb.cjs} +7 -7
  99. package/dist/plugin-sdk/{dispatch-DCSwqteL.js → dispatch-C_gJPvbD.js} +7 -7
  100. package/dist/plugin-sdk/{dispatch-5v3v8zzA.js → dispatch-Df8B7owq.js} +7 -7
  101. package/dist/plugin-sdk/{dispatch-CNy3g9ma.cjs → dispatch-YK0qHNtb.cjs} +7 -7
  102. package/dist/plugin-sdk/{dispatch-B6UbZCpL.cjs → dispatch-_fZDA253.cjs} +7 -7
  103. package/dist/plugin-sdk/{dispatch-mR2vLkGa.cjs → dispatch-wEH2eS4y.cjs} +7 -7
  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-0zCEbT4w.cjs → reply-BoWg-IXT.cjs} +7 -7
  115. package/dist/plugin-sdk/{reply-D-f2bbXy.js → reply-bS9U9BwG.js} +7 -7
  116. package/dist/plugin-sdk/{slash-dispatch.runtime-CNhhOTEP.js → slash-dispatch.runtime-4y3z-kPo.js} +1 -1
  117. package/dist/plugin-sdk/{slash-dispatch.runtime-B3b2L4iH.js → slash-dispatch.runtime-BRr9YGOs.js} +1 -1
  118. package/dist/plugin-sdk/{slash-dispatch.runtime-CPPp4KKH.cjs → slash-dispatch.runtime-BtdMVJQe.cjs} +1 -1
  119. package/dist/plugin-sdk/{slash-dispatch.runtime-Dw9M-fvv.js → slash-dispatch.runtime-C6iak1_0.js} +1 -1
  120. package/dist/plugin-sdk/{slash-dispatch.runtime-BoTYqNiv.js → slash-dispatch.runtime-CMx727dE.js} +1 -1
  121. package/dist/plugin-sdk/{slash-dispatch.runtime-CaWoVNJu.cjs → slash-dispatch.runtime-CXXaAMYa.cjs} +1 -1
  122. package/dist/plugin-sdk/{slash-dispatch.runtime-DbheDKxM.cjs → slash-dispatch.runtime-Cvom2Onl.cjs} +1 -1
  123. package/dist/plugin-sdk/{slash-dispatch.runtime-DpBWBF7J.js → slash-dispatch.runtime-D00kIROj.js} +1 -1
  124. package/dist/plugin-sdk/{slash-dispatch.runtime-DSQ2U0MM.cjs → slash-dispatch.runtime-DEu-D4XB.cjs} +1 -1
  125. package/dist/plugin-sdk/{slash-dispatch.runtime-Bu6Gwr3m.cjs → slash-dispatch.runtime-DG7_jQXD.cjs} +1 -1
  126. package/dist/plugin-sdk/{slash-dispatch.runtime-CCEMBSm2.cjs → slash-dispatch.runtime-DVP1q-_z.cjs} +1 -1
  127. package/dist/plugin-sdk/{slash-dispatch.runtime-Dm_cVnlq.js → slash-dispatch.runtime-U6qjtCfd.js} +1 -1
  128. package/dist/plugin-sdk/{subagent-registry-runtime-bVH8kl6Y.js → subagent-registry-runtime-BD_DkCmR.js} +1 -1
  129. package/dist/plugin-sdk/{subagent-registry-runtime-Der4fbZK.cjs → subagent-registry-runtime-BWiMCyG_.cjs} +1 -1
  130. package/dist/plugin-sdk/{subagent-registry-runtime-Pp_rfnk0.js → subagent-registry-runtime-C6vGkwe9.js} +1 -1
  131. package/dist/plugin-sdk/{subagent-registry-runtime-B0cZ_eaC.cjs → subagent-registry-runtime-CCcI3vhb.cjs} +1 -1
  132. package/dist/plugin-sdk/{subagent-registry-runtime-B-P4w-z9.js → subagent-registry-runtime-CDCU--WW.js} +1 -1
  133. package/dist/plugin-sdk/{subagent-registry-runtime-Ciev9m2W.cjs → subagent-registry-runtime-D98xiwmA.cjs} +1 -1
  134. package/dist/plugin-sdk/{subagent-registry-runtime-DBPvxiJW.cjs → subagent-registry-runtime-LebBdxD7.cjs} +1 -1
  135. package/dist/plugin-sdk/{subagent-registry-runtime-BfmeSbXD.cjs → subagent-registry-runtime-MfHdezNY.cjs} +1 -1
  136. package/dist/plugin-sdk/{subagent-registry-runtime-CL0sdx5J.cjs → subagent-registry-runtime-bMabqk9V.cjs} +1 -1
  137. package/dist/plugin-sdk/{subagent-registry-runtime-DH_Jx5hU.js → subagent-registry-runtime-h3qrqiJH.js} +1 -1
  138. package/dist/plugin-sdk/{subagent-registry-runtime-CEvE9keW.js → subagent-registry-runtime-tmI7JUke.js} +1 -1
  139. package/dist/plugin-sdk/{subagent-registry-runtime-Du8BhjzJ.js → subagent-registry-runtime-uC8wbfNS.js} +1 -1
  140. package/dist/plugin-sdk/{web-BdnQzLgF.js → web-9Os8v8Cu.js} +2 -2
  141. package/dist/plugin-sdk/{web-pcTha_l7.cjs → web-BQ9hOKe8.cjs} +2 -2
  142. package/dist/plugin-sdk/{web-C9T7tf6w.js → web-Bjk0MWu3.js} +2 -2
  143. package/dist/plugin-sdk/{web-_tj8xNZE.js → web-BsmnVZaX.js} +2 -2
  144. package/dist/plugin-sdk/{web-B2PwjHsu.cjs → web-CUbdclQS.cjs} +2 -2
  145. package/dist/plugin-sdk/{web-CcYBsmAj.cjs → web-C_Vx3mgY.cjs} +1 -1
  146. package/dist/plugin-sdk/{web-BZoOYDwf.js → web-Cdo1e0C7.js} +1 -1
  147. package/dist/plugin-sdk/{web-CODD4ksc.cjs → web-CfTkaUMk.cjs} +2 -2
  148. package/dist/plugin-sdk/{web-24o5tNe3.js → web-DkmdYSZ8.js} +1 -1
  149. package/dist/plugin-sdk/{web-B-QDcVRv.cjs → web-DpGXJ6SQ.cjs} +2 -2
  150. package/dist/plugin-sdk/{web-Czl9vNVv.cjs → web-DuF9udb6.cjs} +1 -1
  151. package/dist/plugin-sdk/{web-CkdCvvR-.js → web-Jr2J55LO.js} +2 -2
  152. package/dist/plugin-sdk/whatsapp.cjs +1 -1
  153. package/dist/plugin-sdk/whatsapp.js +1 -1
  154. package/dist/{plugins-cli-BiVMAr5T.js → plugins-cli-BzJeq-CW.js} +2 -2
  155. package/dist/{plugins-cli-BbjMbzJU.js → plugins-cli-o74CJV4A.js} +2 -2
  156. package/dist/{program-BrAZTwFr.js → program-D9AMAbv6.js} +3 -3
  157. package/dist/{program-context-B9ydtPje.js → program-context-BX9wN65q.js} +2 -2
  158. package/dist/{prompt-select-styled-BeJNbzSa.js → prompt-select-styled-C2c13Ndq.js} +2 -2
  159. package/dist/{prompt-select-styled-DIOWLjl0.js → prompt-select-styled-hxyoyq2i.js} +2 -2
  160. package/dist/{provider-auth-helpers-pBVCjBj9.js → provider-auth-helpers-BzlcSA6U.js} +2 -2
  161. package/dist/{provider-auth-helpers-1lU43eTW.js → provider-auth-helpers-CDIiLD1m.js} +2 -2
  162. package/dist/{push-apns-BGUOmD5M.js → push-apns-CrAWstBo.js} +2 -2
  163. package/dist/{push-apns-B_a2MBJ4.js → push-apns-CrMV74Qs.js} +2 -2
  164. package/dist/{register.agent-CX78s_X9.js → register.agent-CisptTv_.js} +2 -2
  165. package/dist/{register.agent-DLDKQENq.js → register.agent-Dl2Ef-K5.js} +2 -2
  166. package/dist/{register.configure-BA5u9hT3.js → register.configure-CvPihXst.js} +2 -2
  167. package/dist/{register.configure-BhPtf3Qo.js → register.configure-D8bJJ16k.js} +2 -2
  168. package/dist/{register.maintenance-BhsBepKS.js → register.maintenance-AeTvVTtt.js} +2 -2
  169. package/dist/{register.maintenance-r_MzNK3-.js → register.maintenance-BkM8-Ttt.js} +2 -2
  170. package/dist/{register.message-CTF--Z2a.js → register.message-3zVHQZ27.js} +2 -2
  171. package/dist/{register.message-jcZ875be.js → register.message-CM_Qudzn.js} +2 -2
  172. package/dist/{register.onboard-C3yL50_c.js → register.onboard-BY-QLNp9.js} +2 -2
  173. package/dist/{register.onboard-CNwnStUk.js → register.onboard-C-j99DGw.js} +2 -2
  174. package/dist/{register.setup-BRJMzgfU.js → register.setup-DA4HFCro.js} +2 -2
  175. package/dist/{register.setup-BvsS-zgm.js → register.setup-DiAi_1pJ.js} +2 -2
  176. package/dist/{register.status-health-sessions-Dqmkw820.js → register.status-health-sessions-BXiMraHZ.js} +2 -2
  177. package/dist/{register.status-health-sessions-DVc__2pc.js → register.status-health-sessions-Bo9VWxLG.js} +2 -2
  178. package/dist/{register.subclis-D-24j83X.js → register.subclis-smZuHVcv.js} +2 -2
  179. package/dist/{reply-l-Y47HP4.js → reply-CjyZeZ-j.js} +7 -7
  180. package/dist/{run-main-B_YBE_TN.js → run-main-DEZR4lCo.js} +2 -2
  181. package/dist/{server-node-events-CFSY_-4t.js → server-node-events-BWiQg1NL.js} +2 -2
  182. package/dist/{server-node-events-ZFwmPwQ-.js → server-node-events-DicMyck-.js} +2 -2
  183. package/dist/{slash-dispatch.runtime-pdAIQrzR.js → slash-dispatch.runtime-CGgP5dBX.js} +1 -1
  184. package/dist/{slash-dispatch.runtime-CKWXmLO1.js → slash-dispatch.runtime-CknX8Fkv.js} +1 -1
  185. package/dist/{slash-dispatch.runtime-DIR5H2MY.js → slash-dispatch.runtime-CoKGpcpS.js} +1 -1
  186. package/dist/{slash-dispatch.runtime-14ABU-DD.js → slash-dispatch.runtime-pSpPe8qL.js} +1 -1
  187. package/dist/{status-DYqPF0rB.js → status-BoL8-JxA.js} +2 -2
  188. package/dist/{status-JIPeVrsc.js → status-DEAX-TLb.js} +2 -2
  189. package/dist/{subagent-registry-runtime-rPbwTnju.js → subagent-registry-runtime-2Nh6-7ym.js} +1 -1
  190. package/dist/{subagent-registry-runtime-DTVXQJOP.js → subagent-registry-runtime-CG_2Atu3.js} +1 -1
  191. package/dist/{subagent-registry-runtime-Cj4CKKl_.js → subagent-registry-runtime-Cc264UfD.js} +1 -1
  192. package/dist/{subagent-registry-runtime-8_ktZPZB.js → subagent-registry-runtime-CpYm78z3.js} +1 -1
  193. package/dist/{update-cli-BwBMOeP0.js → update-cli-C0qadZEs.js} +2 -2
  194. package/dist/{update-cli-YrBbmw4f.js → update-cli-ISorpxrU.js} +2 -2
  195. package/dist/{update-runner-BvtyRBD2.js → update-runner-CvWH2ZAc.js} +2 -2
  196. package/dist/{update-runner-DYamgo1V.js → update-runner-mMbwEOlU.js} +2 -2
  197. package/dist/{web-DwcxsgH0.js → web-ARUUCMQo.js} +2 -2
  198. package/dist/{web-C15yQ-wI.js → web-C6jRFeYp.js} +1 -1
  199. package/dist/{web-C6So15hm.js → web-CDXYiCsB.js} +1 -1
  200. package/dist/{web-Cq3xWCaD.js → web-CiagxaWr.js} +2 -2
  201. package/node_modules/@aws-sdk/client-bedrock-runtime/package.json +42 -42
  202. package/node_modules/@aws-sdk/core/dist-cjs/index.js +17 -0
  203. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +17 -0
  204. package/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js +1 -0
  205. package/node_modules/@aws-sdk/core/dist-es/submodules/client/longPollMiddleware.js +15 -0
  206. package/node_modules/@aws-sdk/core/package.json +11 -11
  207. package/node_modules/@aws-sdk/credential-provider-env/package.json +5 -5
  208. package/node_modules/@aws-sdk/credential-provider-http/package.json +10 -10
  209. package/node_modules/@aws-sdk/credential-provider-ini/package.json +14 -14
  210. package/node_modules/@aws-sdk/credential-provider-login/package.json +8 -8
  211. package/node_modules/@aws-sdk/credential-provider-node/package.json +12 -12
  212. package/node_modules/@aws-sdk/credential-provider-process/package.json +6 -6
  213. package/node_modules/@aws-sdk/credential-provider-sso/package.json +8 -8
  214. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +7 -7
  215. package/node_modules/@aws-sdk/eventstream-handler-node/package.json +4 -4
  216. package/node_modules/@aws-sdk/middleware-eventstream/package.json +4 -4
  217. package/node_modules/@aws-sdk/middleware-host-header/package.json +4 -4
  218. package/node_modules/@aws-sdk/middleware-logger/package.json +3 -3
  219. package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +4 -4
  220. package/node_modules/@aws-sdk/middleware-user-agent/package.json +8 -8
  221. package/node_modules/@aws-sdk/middleware-websocket/package.json +9 -9
  222. package/node_modules/@aws-sdk/nested-clients/package.json +32 -32
  223. package/node_modules/@aws-sdk/region-config-resolver/package.json +5 -5
  224. package/node_modules/@aws-sdk/token-providers/package.json +7 -7
  225. package/node_modules/@aws-sdk/types/package.json +2 -2
  226. package/node_modules/@aws-sdk/util-endpoints/package.json +5 -5
  227. package/node_modules/@aws-sdk/util-format-url/package.json +4 -4
  228. package/node_modules/@aws-sdk/util-user-agent-browser/package.json +3 -3
  229. package/node_modules/@aws-sdk/util-user-agent-node/package.json +5 -5
  230. package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
  231. package/node_modules/@whiskeysockets/baileys/node_modules/p-queue/dist/index.js +1 -0
  232. package/node_modules/@whiskeysockets/baileys/node_modules/p-queue/package.json +1 -1
  233. package/node_modules/content-disposition/index.js +118 -40
  234. package/node_modules/content-disposition/package.json +8 -11
  235. package/node_modules/path-expression-matcher/lib/pem.cjs +1 -1
  236. package/node_modules/path-expression-matcher/lib/pem.d.cts +18 -0
  237. package/node_modules/path-expression-matcher/lib/pem.min.js +1 -1
  238. package/node_modules/path-expression-matcher/package.json +1 -1
  239. package/node_modules/path-expression-matcher/src/Expression.js +2 -2
  240. package/node_modules/path-expression-matcher/src/ExpressionSet.js +24 -4
  241. package/package.json +1 -1
  242. package/preset-config.json +1 -1
  243. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/LICENSE +0 -201
  244. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/README.md +0 -62
  245. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-cjs/index.js +0 -157
  246. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/constants.js +0 -2
  247. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromEnvSigningName.js +0 -16
  248. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js +0 -81
  249. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromStatic.js +0 -8
  250. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js +0 -11
  251. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js +0 -10
  252. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/index.js +0 -4
  253. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/nodeProvider.js +0 -5
  254. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js +0 -7
  255. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js +0 -7
  256. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js +0 -8
  257. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/package.json +0 -70
@@ -1,3 +1,3 @@
1
- import{A as e,O as t,k as n}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import{Gc as r,Hc as i,Io as a,Kc as o,Lc as s,Mc as c,Oo as l,Qc as u,Rc as d,Ro as f,Sc as p,Tc as m,Xc as h,Yc as g,cl as _,dl as v,du as y,eu as b,fl as x,fu as S,hl as ee,jc as C,jo as w,l as te,ml as T,n as ne,pu as re,r as E,sl as D,so as O,ul as k,vl as ie,xc as A,yc as j}from"./auth-profiles-T8DuH3ax.js";import{t as M}from"./command-format-CLxIPuLR.js";import{F as ae,N,P,a as oe,d as se,f as ce,j as le,l as ue,s as de}from"./agent-scope-DAWJwFfl.js";import{x as F}from"./utils-CGdo13HV.js";import{r as fe}from"./string-normalization-DJT5zuUF.js";import"./openclaw-root-CnsBf6ZU.js";import{i as pe,l as I}from"./types.secrets-D4tbc3Wq.js";import"./github-copilot-token-C79yeDKS.js";import"./env-overrides-DHtB4kK3.js";import"./version-q3SkUw2K.js";import{t as me}from"./parse-duration-XTjMKl8s.js";import"./registry-BptzrW8D.js";import"./skills-CKTicUKS.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-CW81y5Wz.js";import"./send-DavpkzhH.js";import{Tr as he,Xr as L,an as ge,cr as _e,fn as ve,hn as ye,in as be,mn as xe,nn as R,rn as Se}from"./compact-Dg66DXx_.js";import{i as Ce,s as we}from"./paths-BfjJY2VL.js";import"./chat-envelope-Bznn2SoS.js";import"./models-config-_htt7eY5.js";import"./tokens-DRM8vzJx.js";import"./with-timeout-c1CzdShT.js";import"./deliver-BHuhHfkH.js";import"./diagnostic-DQq4Bwrs.js";import"./send-DkiKKUkt.js";import{n as Te,t as Ee}from"./pi-model-discovery-CpjYoBQf.js";import"./exec-approvals-allowlist-D8mN7nxV.js";import"./exec-safe-bin-runtime-policy-dcCS_Adf.js";import{n as De}from"./model-catalog-COVzoZD9.js";import"./fetch-CQaNr5J1.js";import"./audio-transcription-runner-Bd1OZC6K.js";import"./fetch-guard-BrTtJw7h.js";import"./image-BkWwI54C.js";import"./tool-display-DJDtttQg.js";import"./api-key-rotation-D0QU-kQ9.js";import"./proxy-fetch-gWETR3cl.js";import"./ir-D8Hh84ab.js";import"./render-DrrPmnMI.js";import"./target-errors-CgWAJOam.js";import"./commands-Dy7duWlt.js";import"./commands-registry-Cpl4QnG4.js";import"./session-cost-usage-CHtVgnE8.js";import"./session-utils-8acNlxwP.js";import"./sqlite-CILF3z9U.js";import"./call-B8Fb4_oh.js";import"./pi-tools.policy-D40r0HmD.js";import"./pairing-store-BH-FTYkn.js";import"./fetch-Dh-apy46.js";import"./skill-commands-CSF6wVPU.js";import"./workspace-dirs-A8Vib9_B.js";import"./pairing-token-DAR7V7FJ.js";import"./channel-activity-BBrgoad1.js";import"./tables-Brc2lNcB.js";import"./kill-tree-B3g7HrAO.js";import"./runtime-web-tools-D8fms06-.js";import"./runtime-Dlg2-Omq.js";import"./node-shell-DyOfwHrh.js";import"./stagger-DxzgG2jd.js";import"./channel-selection-BBeE1TmB.js";import"./plugin-auto-enable-NzmNh4oU.js";import"./send-CVplsJpw.js";import"./outbound-attachment-BgAe99RM.js";import"./delivery-queue-nkPJu0fY.js";import"./send-C48Y9SAq.js";import"./system-run-command-BKfMiqQM.js";import"./fetch-Ce-scEU-.js";import{i as Oe,s as z}from"./command-secret-targets-BlN-J_fA.js";import"./connection-auth-B_Uk6Vk8.js";import{f as B}from"./onboard-helpers-PGl5bVPE.js";import{n as V,r as H,t as ke}from"./prompt-style-BThRSQJR.js";import"./pairing-labels-D-kzQEL2.js";import"./search-manager-Bp9x20r6.js";import"./manager-C2YW7Hkq.js";import"./memory-cli-XaxtBQm1.js";import"./links-CBnmRP9D.js";import"./cli-utils-BleB1eys.js";import"./help-format-B4aEI7V9.js";import{r as Ae}from"./progress-d1m2sqR1.js";import"./exec-approvals-BXO9Cezj.js";import"./provider-env-vars-Dt0Q29Su.js";import"./note-Dp-d_utk.js";import{t as je}from"./clack-prompter-DBPdGdqp.js";import"./issue-format-C_lNzrKa.js";import{n as Me,t as Ne}from"./table-CR7TFMew.js";import{t as U}from"./model-param-b-B0r2cPDw.js";import{n as W}from"./format-Ce7I7s-k.js";import{a as G,c as Pe,d as Fe,f as Ie,i as Le,l as K,m as q,n as Re,o as ze,p as Be,r as Ve,s as He,t as Ue,u as We}from"./openai-codex-model-default-DuE2_wN7.js";import{Mt as Ge,h as Ke,n as qe}from"./auth-token-kGltuM6S.js";import{t as Je}from"./oauth-env-DAamJ1oz.js";import{n as J}from"./logging-tYw1NbJd.js";import{a as Ye,i as Xe,n as Ze,o as Qe,r as $e,s as et,t as tt}from"./provider-auth-helpers-pBVCjBj9.js";import"./oauth-tls-preflight-BSBRDIfC.js";import nt from"node:path";import rt from"node:fs/promises";import it from"node:crypto";import{complete as at,getEnvApiKey as ot,getModel as st}from"@mariozechner/pi-ai";import{Type as ct}from"@sinclair/typebox";import{cancel as lt,confirm as ut,isCancel as dt,multiselect as ft,select as pt,text as mt}from"@clack/prompts";async function ht(e){try{let{snapshot:e}=await a();if(e.valid)return e.resolved}catch{}return e}async function gt(e){let t=w(),n=await ht(t),{resolvedConfig:r,diagnostics:i}=await z({config:t,commandName:e.commandName,targetIds:Oe()});if(e.runtime)for(let t of i)e.runtime.log(`[secrets] ${t}`);return f(r,n),{sourceConfig:n,resolvedConfig:r,diagnostics:i}}async function Y(e){return(await gt(e)).resolvedConfig}async function _t(e,t){Le(e);let n=(await Y({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 vt(e,t,n){let r=We(e),i=Be({raw:t,cfg:await Y({commandName:`models aliases add`,runtime:n})});await q(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}}}}),J(n),n.log(`Alias ${r} -> ${i.provider}/${i.model}`)}async function yt(e,t){let n=We(e),r=await q(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}}}});J(t),(!r.agents?.defaults?.models||Object.values(r.agents.defaults.models).every(e=>!e?.alias?.trim()))&&t.log(`No aliases configured.`)}function bt(e){return(typeof e==`symbol`||dt(e))&&(lt(`Cancelled.`),process.exit(0)),e}const xt=async e=>bt(await ut({...e,message:V(e.message)})),X=async e=>bt(await mt({...e,message:V(e.message)})),St=async e=>bt(await pt({...e,message:V(e.message),options:e.options.map(e=>e.hint===void 0?e:{...e,hint:ke(e.hint)})}));function Ct(e){let t=e?.trim();return t?r(t)===`anthropic`?`anthropic`:`custom`:null}function wt(e){return`${r(e)}:manual`}async function Tt(e,t){let n=Ct(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 xt({message:"Have you run `claude setup-token` and copied the token?",initialValue:!0}))return;let r=await X({message:`Paste Anthropic setup-token`,validate:e=>qe(String(e??``))}),i=String(r??``).trim(),a=wt(n);p({profileId:a,credential:{type:`token`,provider:n,token:i}}),await q(e=>Ke(e,{profileId:a,provider:n,mode:`token`})),J(t),t.log(`Auth profile: ${a} (${n}/token)`)}async function Et(e,t){let n=e.provider?.trim();if(!n)throw Error(`Missing --provider.`);let i=r(n),a=e.profileId?.trim()||wt(i),o=await X({message:`Paste token for ${i}`,validate:e=>e?.trim()?void 0:`Required`}),s=String(o??``).trim(),c=e.expiresIn?.trim()&&e.expiresIn.trim().length>0?Date.now()+me(String(e.expiresIn??``).trim(),{defaultUnit:`d`}):void 0;p({profileId:a,credential:{type:`token`,provider:i,token:s,...c?{expires:c}:{}}}),await q(e=>Ke(e,{profileId:a,provider:i,mode:`token`})),J(t),t.log(`Auth profile: ${a} (${i}/token)`)}async function Dt(e,t){let n=await St({message:`Token provider`,options:[{value:`anthropic`,label:`anthropic`},{value:`custom`,label:`custom (type provider id)`}]}),i=n===`custom`?r(String(await X({message:`Provider id`,validate:e=>e?.trim()?void 0:`Required`}))):n;if(await St({message:`Token method`,options:[...i===`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 Tt({provider:i},t);return}let a=wt(i);await Et({provider:i,profileId:String(await X({message:`Profile id`,initialValue:a,validate:e=>e?.trim()?void 0:`Required`})).trim(),expiresIn:await xt({message:`Does this token expire?`,initialValue:!1})?String(await X({message:`Expires in (duration)`,initialValue:`365d`,validate:e=>{try{me(String(e??``),{defaultUnit:`d`});return}catch{return`Invalid duration (e.g. 365d, 12h, 30m)`}}})).trim():void 0},t)}function Ot(e,t){let n=t?.trim();if(!n)return null;let r=Xe(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 \`${M(`openclaw plugins list --json`)}\`.`)}function kt(e){return e.type===`api_key`?`api_key`:e.type===`token`?`token`:`oauth`}async function At(e){let t=await Ye({prompter:e.prompter,runtime:e.runtime,isRemote:Je(),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 Ge(`openai-codex`,t,e.agentDir,{syncSiblingAgents:!0});await q(t=>{let r=Ke(t,{profileId:n,provider:`openai-codex`,mode:`oauth`});return e.opts.setDefault&&(r=Re(r).next),r}),J(e.runtime),e.runtime.log(`Auth profile: ${n} (openai-codex/oauth)`),e.opts.setDefault?e.runtime.log(`Default model set to ${Ue}`):e.runtime.log(`Default model available: ${Ue} (use --set-default to apply)`)}async function jt(e,t){if(!process.stdin.isTTY)throw Error(`models auth login requires an interactive TTY.`);let n=await Pe(),i=ce(n),a=oe(n,i),o=se(n,i)??le(),s=r(String(e.provider??``)),c=je();if(s===`openai-codex`){await At({opts:e,runtime:t,prompter:c,agentDir:a});return}let l=et({config:n,workspaceDir:o});if(l.length===0)throw Error(`No provider plugins found. Install one via \`${M(`openclaw plugins install`)}\`.`);let u=Ot(l,e.provider)??await c.select({message:`Select a provider`,options:l.map(e=>({value:e.id,label:e.label,hint:e.docsPath?`Docs: ${e.docsPath}`:void 0}))}).then(e=>Xe(l,String(e)));if(!u)throw Error(`Unknown provider. Use --provider <id> to pick a provider plugin.`);let d=$e(u,e.method)??(u.auth.length===1?u.auth[0]:await c.select({message:`Auth method for ${u.label}`,options:u.auth.map(e=>({value:e.id,label:e.label,hint:e.hint}))}).then(e=>u.auth.find(t=>t.id===String(e))));if(!d)throw Error(`Unknown auth method. Use --method <id> to select one.`);let f=Je(),m=await d.run({config:n,agentDir:a,workspaceDir:o,prompter:c,runtime:t,isRemote:f,openUrl:async e=>{await B(e)},oauth:{createVpsAwareHandlers:e=>Qe(e)}});for(let e of m.profiles)p({profileId:e.profileId,credential:e.credential,agentDir:a});await q(t=>{let n=t;m.configPatch&&(n=Ze(n,m.configPatch));for(let e of m.profiles)n=Ke(n,{profileId:e.profileId,provider:e.credential.provider,mode:kt(e.credential)});return e.setDefault&&m.defaultModel&&(n=tt(n,m.defaultModel)),n}),J(t);for(let e of m.profiles)t.log(`Auth profile: ${e.profileId} (${e.credential.provider}/${kt(e.credential)})`);m.defaultModel&&t.log(e.setDefault?`Default model set to ${m.defaultModel}`:`Default model available: ${m.defaultModel} (use --set-default to apply)`),m.notes&&m.notes.length>0&&await c.note(m.notes.join(`
1
+ import{A as e,O as t,k as n}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import{Gc as r,Hc as i,Io as a,Kc as o,Lc as s,Mc as c,Oo as l,Qc as u,Rc as d,Ro as f,Sc as p,Tc as m,Xc as h,Yc as g,cl as _,dl as v,du as y,eu as b,fl as x,fu as S,hl as ee,jc as C,jo as w,l as te,ml as T,n as ne,pu as re,r as E,sl as D,so as O,ul as k,vl as ie,xc as A,yc as j}from"./auth-profiles-T8DuH3ax.js";import{t as M}from"./command-format-CLxIPuLR.js";import{F as ae,N,P,a as oe,d as se,f as ce,j as le,l as ue,s as de}from"./agent-scope-DAWJwFfl.js";import{x as F}from"./utils-CGdo13HV.js";import{r as fe}from"./string-normalization-DJT5zuUF.js";import"./openclaw-root-CnsBf6ZU.js";import{i as pe,l as I}from"./types.secrets-D4tbc3Wq.js";import"./github-copilot-token-C79yeDKS.js";import"./env-overrides-DHtB4kK3.js";import"./version-q3SkUw2K.js";import{t as me}from"./parse-duration-XTjMKl8s.js";import"./registry-BptzrW8D.js";import"./skills-CKTicUKS.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-CW81y5Wz.js";import"./send-DavpkzhH.js";import{Tr as he,Xr as L,an as ge,cr as _e,fn as ve,hn as ye,in as be,mn as xe,nn as R,rn as Se}from"./compact-BEeB6bwq.js";import{i as Ce,s as we}from"./paths-BfjJY2VL.js";import"./chat-envelope-Bznn2SoS.js";import"./models-config-_htt7eY5.js";import"./tokens-DRM8vzJx.js";import"./with-timeout-c1CzdShT.js";import"./deliver-BHuhHfkH.js";import"./diagnostic-DQq4Bwrs.js";import"./send-DkiKKUkt.js";import{n as Te,t as Ee}from"./pi-model-discovery-CpjYoBQf.js";import"./exec-approvals-allowlist-D8mN7nxV.js";import"./exec-safe-bin-runtime-policy-dcCS_Adf.js";import{n as De}from"./model-catalog-COVzoZD9.js";import"./fetch-CQaNr5J1.js";import"./audio-transcription-runner-Bd1OZC6K.js";import"./fetch-guard-BrTtJw7h.js";import"./image-BkWwI54C.js";import"./tool-display-DJDtttQg.js";import"./api-key-rotation-D0QU-kQ9.js";import"./proxy-fetch-gWETR3cl.js";import"./ir-D8Hh84ab.js";import"./render-DrrPmnMI.js";import"./target-errors-CgWAJOam.js";import"./commands-Dy7duWlt.js";import"./commands-registry-Cpl4QnG4.js";import"./session-cost-usage-CHtVgnE8.js";import"./session-utils-8acNlxwP.js";import"./sqlite-CILF3z9U.js";import"./call-B8Fb4_oh.js";import"./pi-tools.policy-D40r0HmD.js";import"./pairing-store-BH-FTYkn.js";import"./fetch-Dh-apy46.js";import"./skill-commands-CSF6wVPU.js";import"./workspace-dirs-A8Vib9_B.js";import"./pairing-token-DAR7V7FJ.js";import"./channel-activity-BBrgoad1.js";import"./tables-Brc2lNcB.js";import"./kill-tree-B3g7HrAO.js";import"./runtime-web-tools-D8fms06-.js";import"./runtime-Dlg2-Omq.js";import"./node-shell-DyOfwHrh.js";import"./stagger-DxzgG2jd.js";import"./channel-selection-BBeE1TmB.js";import"./plugin-auto-enable-NzmNh4oU.js";import"./send-CVplsJpw.js";import"./outbound-attachment-BgAe99RM.js";import"./delivery-queue-nkPJu0fY.js";import"./send-C48Y9SAq.js";import"./system-run-command-BKfMiqQM.js";import"./fetch-Ce-scEU-.js";import{i as Oe,s as z}from"./command-secret-targets-BlN-J_fA.js";import"./connection-auth-B_Uk6Vk8.js";import{f as B}from"./onboard-helpers-PGl5bVPE.js";import{n as V,r as H,t as ke}from"./prompt-style-BThRSQJR.js";import"./pairing-labels-D-kzQEL2.js";import"./search-manager-Bp9x20r6.js";import"./manager-C2YW7Hkq.js";import"./memory-cli-XaxtBQm1.js";import"./links-CBnmRP9D.js";import"./cli-utils-BleB1eys.js";import"./help-format-B4aEI7V9.js";import{r as Ae}from"./progress-d1m2sqR1.js";import"./exec-approvals-BXO9Cezj.js";import"./provider-env-vars-Dt0Q29Su.js";import"./note-Dp-d_utk.js";import{t as je}from"./clack-prompter-DBPdGdqp.js";import"./issue-format-C_lNzrKa.js";import{n as Me,t as Ne}from"./table-CR7TFMew.js";import{t as U}from"./model-param-b-B0r2cPDw.js";import{n as W}from"./format-Ce7I7s-k.js";import{a as G,c as Pe,d as Fe,f as Ie,i as Le,l as K,m as q,n as Re,o as ze,p as Be,r as Ve,s as He,t as Ue,u as We}from"./openai-codex-model-default-DuE2_wN7.js";import{Mt as Ge,h as Ke,n as qe}from"./auth-token-kGltuM6S.js";import{t as Je}from"./oauth-env-DAamJ1oz.js";import{n as J}from"./logging-tYw1NbJd.js";import{a as Ye,i as Xe,n as Ze,o as Qe,r as $e,s as et,t as tt}from"./provider-auth-helpers-BzlcSA6U.js";import"./oauth-tls-preflight-BSBRDIfC.js";import nt from"node:path";import rt from"node:fs/promises";import it from"node:crypto";import{complete as at,getEnvApiKey as ot,getModel as st}from"@mariozechner/pi-ai";import{Type as ct}from"@sinclair/typebox";import{cancel as lt,confirm as ut,isCancel as dt,multiselect as ft,select as pt,text as mt}from"@clack/prompts";async function ht(e){try{let{snapshot:e}=await a();if(e.valid)return e.resolved}catch{}return e}async function gt(e){let t=w(),n=await ht(t),{resolvedConfig:r,diagnostics:i}=await z({config:t,commandName:e.commandName,targetIds:Oe()});if(e.runtime)for(let t of i)e.runtime.log(`[secrets] ${t}`);return f(r,n),{sourceConfig:n,resolvedConfig:r,diagnostics:i}}async function Y(e){return(await gt(e)).resolvedConfig}async function _t(e,t){Le(e);let n=(await Y({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 vt(e,t,n){let r=We(e),i=Be({raw:t,cfg:await Y({commandName:`models aliases add`,runtime:n})});await q(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}}}}),J(n),n.log(`Alias ${r} -> ${i.provider}/${i.model}`)}async function yt(e,t){let n=We(e),r=await q(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}}}});J(t),(!r.agents?.defaults?.models||Object.values(r.agents.defaults.models).every(e=>!e?.alias?.trim()))&&t.log(`No aliases configured.`)}function bt(e){return(typeof e==`symbol`||dt(e))&&(lt(`Cancelled.`),process.exit(0)),e}const xt=async e=>bt(await ut({...e,message:V(e.message)})),X=async e=>bt(await mt({...e,message:V(e.message)})),St=async e=>bt(await pt({...e,message:V(e.message),options:e.options.map(e=>e.hint===void 0?e:{...e,hint:ke(e.hint)})}));function Ct(e){let t=e?.trim();return t?r(t)===`anthropic`?`anthropic`:`custom`:null}function wt(e){return`${r(e)}:manual`}async function Tt(e,t){let n=Ct(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 xt({message:"Have you run `claude setup-token` and copied the token?",initialValue:!0}))return;let r=await X({message:`Paste Anthropic setup-token`,validate:e=>qe(String(e??``))}),i=String(r??``).trim(),a=wt(n);p({profileId:a,credential:{type:`token`,provider:n,token:i}}),await q(e=>Ke(e,{profileId:a,provider:n,mode:`token`})),J(t),t.log(`Auth profile: ${a} (${n}/token)`)}async function Et(e,t){let n=e.provider?.trim();if(!n)throw Error(`Missing --provider.`);let i=r(n),a=e.profileId?.trim()||wt(i),o=await X({message:`Paste token for ${i}`,validate:e=>e?.trim()?void 0:`Required`}),s=String(o??``).trim(),c=e.expiresIn?.trim()&&e.expiresIn.trim().length>0?Date.now()+me(String(e.expiresIn??``).trim(),{defaultUnit:`d`}):void 0;p({profileId:a,credential:{type:`token`,provider:i,token:s,...c?{expires:c}:{}}}),await q(e=>Ke(e,{profileId:a,provider:i,mode:`token`})),J(t),t.log(`Auth profile: ${a} (${i}/token)`)}async function Dt(e,t){let n=await St({message:`Token provider`,options:[{value:`anthropic`,label:`anthropic`},{value:`custom`,label:`custom (type provider id)`}]}),i=n===`custom`?r(String(await X({message:`Provider id`,validate:e=>e?.trim()?void 0:`Required`}))):n;if(await St({message:`Token method`,options:[...i===`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 Tt({provider:i},t);return}let a=wt(i);await Et({provider:i,profileId:String(await X({message:`Profile id`,initialValue:a,validate:e=>e?.trim()?void 0:`Required`})).trim(),expiresIn:await xt({message:`Does this token expire?`,initialValue:!1})?String(await X({message:`Expires in (duration)`,initialValue:`365d`,validate:e=>{try{me(String(e??``),{defaultUnit:`d`});return}catch{return`Invalid duration (e.g. 365d, 12h, 30m)`}}})).trim():void 0},t)}function Ot(e,t){let n=t?.trim();if(!n)return null;let r=Xe(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 \`${M(`openclaw plugins list --json`)}\`.`)}function kt(e){return e.type===`api_key`?`api_key`:e.type===`token`?`token`:`oauth`}async function At(e){let t=await Ye({prompter:e.prompter,runtime:e.runtime,isRemote:Je(),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 Ge(`openai-codex`,t,e.agentDir,{syncSiblingAgents:!0});await q(t=>{let r=Ke(t,{profileId:n,provider:`openai-codex`,mode:`oauth`});return e.opts.setDefault&&(r=Re(r).next),r}),J(e.runtime),e.runtime.log(`Auth profile: ${n} (openai-codex/oauth)`),e.opts.setDefault?e.runtime.log(`Default model set to ${Ue}`):e.runtime.log(`Default model available: ${Ue} (use --set-default to apply)`)}async function jt(e,t){if(!process.stdin.isTTY)throw Error(`models auth login requires an interactive TTY.`);let n=await Pe(),i=ce(n),a=oe(n,i),o=se(n,i)??le(),s=r(String(e.provider??``)),c=je();if(s===`openai-codex`){await At({opts:e,runtime:t,prompter:c,agentDir:a});return}let l=et({config:n,workspaceDir:o});if(l.length===0)throw Error(`No provider plugins found. Install one via \`${M(`openclaw plugins install`)}\`.`);let u=Ot(l,e.provider)??await c.select({message:`Select a provider`,options:l.map(e=>({value:e.id,label:e.label,hint:e.docsPath?`Docs: ${e.docsPath}`:void 0}))}).then(e=>Xe(l,String(e)));if(!u)throw Error(`Unknown provider. Use --provider <id> to pick a provider plugin.`);let d=$e(u,e.method)??(u.auth.length===1?u.auth[0]:await c.select({message:`Auth method for ${u.label}`,options:u.auth.map(e=>({value:e.id,label:e.label,hint:e.hint}))}).then(e=>u.auth.find(t=>t.id===String(e))));if(!d)throw Error(`Unknown auth method. Use --method <id> to select one.`);let f=Je(),m=await d.run({config:n,agentDir:a,workspaceDir:o,prompter:c,runtime:t,isRemote:f,openUrl:async e=>{await B(e)},oauth:{createVpsAwareHandlers:e=>Qe(e)}});for(let e of m.profiles)p({profileId:e.profileId,credential:e.credential,agentDir:a});await q(t=>{let n=t;m.configPatch&&(n=Ze(n,m.configPatch));for(let e of m.profiles)n=Ke(n,{profileId:e.profileId,provider:e.credential.provider,mode:kt(e.credential)});return e.setDefault&&m.defaultModel&&(n=tt(n,m.defaultModel)),n}),J(t);for(let e of m.profiles)t.log(`Auth profile: ${e.profileId} (${e.credential.provider}/${kt(e.credential)})`);m.defaultModel&&t.log(e.setDefault?`Default model set to ${m.defaultModel}`:`Default model available: ${m.defaultModel} (use --set-default to apply)`),m.notes&&m.notes.length>0&&await c.note(m.notes.join(`
2
2
  `),`Provider notes`)}function Mt(e,t){let n=Fe({cfg:e,rawAgentId:t})??ce(e);return{agentId:n,agentDir:oe(e,n)}}function Nt(e,t){let n=r(t),i=e.order?.[n];return Array.isArray(i)?i:[]}async function Pt(e,t){let n=e.provider?.trim();if(!n)throw Error(`Missing --provider.`);let i=r(n),a=await Y({commandName:`models auth-order`,runtime:t}),{agentId:o,agentDir:s}=Mt(a,e.agent);return{cfg:a,agentId:o,agentDir:s,provider:i}}async function Ft(e,t){let{agentId:n,agentDir:r,provider:i}=await Pt(e,t),a=Nt(m(r,{allowKeychainPrompt:!1}),i);if(e.json){t.log(JSON.stringify({agentId:n,agentDir:r,provider:i,authStorePath:F(`${r}/auth-profiles.json`),order:a.length>0?a:null},null,2));return}t.log(`Agent: ${n}`),t.log(`Provider: ${i}`),t.log(`Auth file: ${F(`${r}/auth-profiles.json`)}`),t.log(a.length>0?`Order override: ${a.join(`, `)}`:`Order override: (none)`)}async function It(e,t){let{agentId:n,agentDir:r,provider:i}=await Pt(e,t);if(!await A({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 Lt(e,t){let{agentId:n,agentDir:i,provider:a}=await Pt(e,t),o=m(i,{allowKeychainPrompt:!1}),s=a,c=fe(e.order??[]);if(c.length===0)throw Error(`Missing profile ids. Provide one or more profile ids.`);for(let e of c){let t=o.profiles[e];if(!t)throw Error(`Auth profile "${e}" not found in ${i}.`);if(r(t.provider)!==s)throw Error(`Auth profile "${e}" is for ${t.provider}, not ${a}.`)}let l=await A({agentDir:i,provider:a,order:c});if(!l)throw Error(`Failed to update auth-profiles.json (lock busy?).`);t.log(`Agent: ${n}`),t.log(`Provider: ${a}`),t.log(`Order override: ${Nt(l,a).join(`, `)}`)}function Z(e,t){return N(e.agents?.defaults?.[t])}function Rt(e,t){let n=ae(e.agents?.defaults?.[t.key]);return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,[t.key]:K(n,{fallbacks:t.fallbacks}),...t.models?{models:t.models}:void 0}}}}async function zt(e,t,n){Le(t);let r=Z(await Y({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 Bt(e,t,n){let r=await q(n=>{let r=Be({raw:t,cfg:n}),a=i(r.provider,r.model),o={...n.agents?.defaults?.models};o[a]||(o[a]={});let s=Z(n,e.key);return Ie({cfg:n,entries:s}).includes(a)?n:Rt(n,{key:e.key,fallbacks:[...s,a],models:o})});J(n),n.log(`${e.logPrefix}: ${Z(r,e.key).join(`, `)}`)}async function Vt(e,t,n){let r=await q(n=>{let r=Be({raw:t,cfg:n}),a=i(r.provider,r.model),o=s({cfg:n,defaultProvider:S}),c=Z(n,e.key),l=c.filter(e=>{let t=u({raw:String(e??``),defaultProvider:S,aliasIndex:o});return t?i(t.ref.provider,t.ref.model)!==a:!0});if(l.length===c.length)throw Error(`${e.notFoundLabel} not found: ${a}`);return Rt(n,{key:e.key,fallbacks:l})});J(n),n.log(`${e.logPrefix}: ${Z(r,e.key).join(`, `)}`)}async function Ht(e,t){await q(t=>Rt(t,{key:e.key,fallbacks:[]})),J(t),t.log(e.clearedMessage)}async function Ut(e,t){return await zt({label:`Fallbacks`,key:`model`},e,t)}async function Wt(e,t){return await Bt({label:`Fallbacks`,key:`model`,logPrefix:`Fallbacks`},e,t)}async function Gt(e,t){return await Vt({label:`Fallbacks`,key:`model`,notFoundLabel:`Fallback`,logPrefix:`Fallbacks`},e,t)}async function Kt(e){return await Ht({key:`model`,clearedMessage:`Fallback list cleared.`},e)}async function qt(e,t){return await zt({label:`Image fallbacks`,key:`imageModel`},e,t)}async function Jt(e,t){return await Bt({label:`Image fallbacks`,key:`imageModel`,logPrefix:`Image fallbacks`},e,t)}async function Yt(e,t){return await Vt({label:`Image fallbacks`,key:`imageModel`,notFoundLabel:`Image fallback`,logPrefix:`Image fallbacks`},e,t)}async function Xt(e){return await Ht({key:`imageModel`,clearedMessage:`Image fallback list cleared.`},e)}function Zt(e){let t=g({cfg:e,defaultProvider:S,defaultModel:y}),n=s({cfg:e,defaultProvider:S}),r=[],a=new Map,c=new Map;for(let[e,t]of n.byKey.entries())c.set(e,t);let l=(e,t)=>{let n=i(e.provider,e.model);a.has(n)||(a.set(n,new Set),r.push(n)),a.get(n)?.add(t)};l(t,`default`);let d=N(e.agents?.defaults?.model),f=N(e.agents?.defaults?.imageModel),p=P(e.agents?.defaults?.imageModel)??``;if(d.forEach((e,t)=>{let r=u({raw:String(e??``),defaultProvider:S,aliasIndex:n});r&&l(r.ref,`fallback#${t+1}`)}),p){let e=u({raw:p,defaultProvider:S,aliasIndex:n});e&&l(e.ref,`image`)}f.forEach((e,t)=>{let r=u({raw:String(e??``),defaultProvider:S,aliasIndex:n});r&&l(r.ref,`img-fallback#${t+1}`)});for(let t of Object.keys(e.agents?.defaults?.models??{})){let e=o(String(t??``),S);e&&l(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:a.get(e)??new Set,aliases:c.get(e)??[]}})}}const Qt=`MODEL_AVAILABILITY_UNAVAILABLE`;function $t(e){return e instanceof Error?e.stack??`${e.name}: ${e.message}`:String(e)}function en(e){return e instanceof Error?e.code===Qt:!1}const tn=(e,t,n)=>!t||!n?!1:!!(j(n,e).length>0||e===`amazon-bedrock`&&v()||x(e)||_(t,e));function nn(e){let t=Error(e);return t.code=Qt,t}function rn(e){return en(e)&&e instanceof Error?e:nn(`Model availability unavailable: getAvailable() failed.\n${$t(e)}`)}function an(e){if(!Array.isArray(e))throw nn(`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 nn(`Model availability unavailable: getAvailable() returned invalid model entries.`);return e}function on(e){let t;try{t=e.getAvailable()}catch(e){throw rn(e)}try{return an(t)}catch(e){throw rn(e)}}async function sn(e,t){let n=c(),r=Te(Ee(n),n),a=r.getAll(),o,s;try{let e=on(r);o=new Set(e.map(e=>i(e.provider,e.id)))}catch(e){if(!en(e))throw e;o=void 0,s||=$t(e)}return{registry:r,models:a,availableKeys:o,availabilityErrorMessage:s}}function cn(e){let{model:t,key:n,tags:r,aliases:a=[],availableKeys:o,cfg:s,authStore:c,allowProviderAvailabilityFallback:l=!1}=e;if(!t)return{key:n,name:n,input:`-`,contextWindow:null,local:null,available:null,tags:[...r,`missing`],missing:!0};let u=t.input.join(`+`)||`text`,d=He(t.baseUrl),f=o?.has(i(t.provider,t.id))??!1,p=o!==void 0&&!l?f:f||(s&&c?tn(t.provider,s,c):!1),m=a.length>0?[`alias:${a.join(`,`)}`]:[],h=new Set(r);if(m.length>0){for(let e of h)(e===`alias`||e.startsWith(`alias:`))&&h.delete(e);for(let e of m)h.add(e)}return{key:n,name:t.name||t.id,input:u,contextWindow:t.contextWindow??null,local:d,available:p,tags:Array.from(h),missing:!1}}function ln(e,t){return!(e.provider&&t.provider.toLowerCase()!==e.provider||e.local&&!He(t.baseUrl??``))}function un(e){let t=e.context.configuredByKey.get(e.key);return cn({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 dn(e,t){let n=await sn(e,t);return{...n,discoveredKeys:new Set(n.models.map(e=>i(e.provider,e.id)))}}function fn(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(!ln(e.context.filter,r))continue;let n=i(r.provider,r.id);e.rows.push(un({model:r,key:n,context:e.context})),t.add(n)}return t}async function pn(e){let t=await De({config:e.context.cfg});for(let n of t){if(e.context.filter.provider&&n.provider.toLowerCase()!==e.context.filter.provider)continue;let t=i(n.provider,n.id);if(e.seenKeys.has(t))continue;let r=L({provider:n.provider,modelId:n.id,modelRegistry:e.modelRegistry,cfg:e.context.cfg});!r||!ln(e.context.filter,r)||(e.rows.push(un({model:r,key:t,context:e.context,allowProviderAvailabilityFallback:!e.context.discoveredKeys.has(t)})),e.seenKeys.add(t))}}function mn(e){for(let t of e.entries){if(e.context.filter.provider&&t.ref.provider.toLowerCase()!==e.context.filter.provider)continue;let n=L({provider:t.ref.provider,modelId:t.ref.model,modelRegistry:e.modelRegistry,cfg:e.context.cfg});e.context.filter.local&&n&&!He(n.baseUrl??``)||e.context.filter.local&&!n||e.rows.push(cn({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(i(n.provider,n.id)):!1}))}}const hn=e=>!!(n()&&!e?.json&&!e?.plain),Q=(e,t)=>e.padEnd(t),gn=(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,_n=(e,t)=>e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`;function vn(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=hn(i),o=[Q(`Model`,42),Q(`Input`,10),Q(`Ctx`,8),Q(`Local`,5),Q(`Auth`,5),`Tags`].join(` `);r.log(a?e.heading(o):o);for(let i of n){let n=Q(_n(i.key,42),42),o=Q(i.input||`-`,10),s=Q(ze(i.contextWindow),8),c=Q(i.local===null?`-`:i.local?`yes`:`no`,5),l=Q(i.available===null?`-`:i.available?`yes`:`no`,5),u=i.tags.length>0?a?i.tags.map(e=>gn(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 yn(e,t){Le(e);let{ensureAuthProfileStore:n}=await import(`./auth-profiles-T8DuH3ax.js`).then(e=>e.t),{ensureOpenClawModelsJson:r}=await import(`./models-config-_htt7eY5.js`).then(e=>e.n),{sourceConfig:i,resolvedConfig:a}=await gt({commandName:`models list`,runtime:t}),s=n(),c=(()=>{let t=e.provider?.trim();if(t)return o(`${t}/_`,`anthropic`)?.provider??t.toLowerCase()})(),l,u=new Set,d,f;try{await r(i??a);let e=await dn(a,{sourceConfig:i});l=e.registry,u=e.discoveredKeys,d=e.availableKeys,f=e.availabilityErrorMessage}catch(e){t.error(`Model registry unavailable:\n${$t(e)}`),process.exitCode=1;return}f!==void 0&&t.error(`Model availability lookup failed; falling back to auth heuristics for discovered models: ${f}`);let{entries:p}=Zt(a),m=new Map(p.map(e=>[e.key,e])),h=[],g={cfg:a,authStore:s,availableKeys:d,configuredByKey:m,discoveredKeys:u,filter:{provider:c,local:e.local}};if(e.all){let e=fn({rows:h,models:l?.getAll()??[],context:g});l&&await pn({rows:h,modelRegistry:l,context:g,seenKeys:e})}else{let e=l;if(!e){t.error(`Model registry unavailable.`),process.exitCode=1;return}mn({rows:h,entries:p,modelRegistry:e,context:g})}if(h.length===0){t.log(`No models found.`);return}vn(h,t,e)}function bn(e){return b(e,{includeEnvVarName:!1})?`marker(${e.trim()})`:R(e)}function xn(e){let t=typeof e.value==`string`?e.value.trim():``;if(t){let n=bn(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 Sn(e){let{provider:t,cfg:n,store:r}=e,i=Date.now(),a=j(r,t),o=(e,t)=>{let n=te(r,t);if(!n||i>=n)return e;let a=r.usageStats?.[t];return`${e} [${typeof a?.disabledUntil==`number`&&i<a.disabledUntil?`disabled${a.disabledReason?`:${a.disabledReason}`:``}`:`cooldown`} ${ge(n-i)}]`},s=a.map(e=>{let t=r.profiles[e];if(!t)return`${e}=missing`;if(t.type===`api_key`)return o(`${e}=${xn({value:t.key,ref:t.keyRef,kind:`api-key`})}`,e);if(t.type===`token`)return o(`${e}=${xn({value:t.token,ref:t.tokenRef,kind:`token`})}`,e);let i=re({cfg:n,store:r,profileId:e}),a=i===e?``:i.startsWith(e)?i.slice(e.length).trim():`(${i})`;return o(`${e}=OAuth${a?` ${a}`:``}`,e)}),c=a.filter(e=>r.profiles[e]?.type===`oauth`).length,l=a.filter(e=>r.profiles[e]?.type===`token`).length,u=a.filter(e=>r.profiles[e]?.type===`api_key`).length,d=x(t),f=D(n,t),p=T({cfg:n,provider:t});return{provider:t,effective:a.length>0?{kind:`profiles`,detail:F(C())}:d?{kind:`env`,detail:d.source.includes(`OAUTH_TOKEN`)||d.source.toLowerCase().includes(`oauth`)?`OAuth (env)`:R(d.apiKey)}:p?{kind:`models.json`,detail:bn(p.apiKey)}:{kind:`missing`,detail:`missing`},profiles:{count:a.length,oauth:c,token:l,apiKey:u,labels:s},...d?{env:{value:d.source.includes(`OAUTH_TOKEN`)||d.source.toLowerCase().includes(`oauth`)?`OAuth (env)`:R(d.apiKey),source:d.source}}:{},...f?{modelsJson:{value:bn(f),source:`models.json: ${F(e.modelsPath)}`}}:{}}}function Cn(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 wn(e){let t=new Map;for(let n of e){let e=o(String(n??``),S);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 Tn(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 En(e){return e===`missing_credential`?`missing_credential`:e===`expired`?`expired`:e===`invalid_expires`?`invalid_expires`:e===`unresolved_ref`?`unresolved_ref`:`ineligible_profile`}function Dn(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 On(e,t){let n=t.secrets?.defaults;return e.type===`api_key`?I(e.key)===void 0?pe(e.keyRef,n):null:e.type===`token`&&I(e.token)===void 0?pe(e.tokenRef,n):null}function kn(e){return`Auth profile credentials are missing or expired.\n↳ Auth reason [unresolved_ref]: could not resolve SecretRef "${e}".`}async function An(e){if(!e.profile)return null;let t=On(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:kn(`${t.source}:${t.provider}:${t.id}`)}}}async function jn(e){let{cfg:t,providers:n,modelCandidates:i,options:a}=e,o=m(),s=a.provider?.trim(),c=s?r(s):null,l=new Set((a.profileIds??[]).map(e=>e.trim()).filter(Boolean)),u={},f=await De({config:t}),p=wn(i),h=[],g=[];for(let e of n){let n=r(e);if(c&&n!==c)continue;let i=Tn({provider:n,candidates:p,catalog:f}),a=j(o,n),s=d(o.order,n)??d(t?.auth?.order,n),m=s&&s.length>0?new Set(E({cfg:t,store:o,provider:n})):null,v=l.size?a.filter(e=>l.has(e)):a;if(v.length>0){for(let e of v){let r=o.profiles[e],a=r?.type,c=re({cfg:t,store:o,profileId:e});if(s&&!s.includes(e)){g.push({provider:n,profileId:e,model:i?`${i.provider}/${i.model}`:void 0,label:c,source:`profile`,mode:a,status:`unknown`,reasonCode:`excluded_by_auth_order`,error:`Excluded by auth.order for this provider.`});continue}if(m&&!m.has(e)){let r=En(ne({cfg:t,store:o,provider:n,profileId:e}).reasonCode);g.push({provider:n,model:i?`${i.provider}/${i.model}`:void 0,profileId:e,label:c,source:`profile`,mode:a,status:`unknown`,reasonCode:r,error:Dn(r)});continue}let l=await An({cfg:t,profile:r,cache:u});if(l){g.push({provider:n,model:i?`${i.provider}/${i.model}`:void 0,profileId:e,label:c,source:`profile`,mode:a,status:`unknown`,reasonCode:l.reasonCode,error:l.error});continue}if(!i){g.push({provider:n,model:void 0,profileId:e,label:c,source:`profile`,mode:a,status:`no_model`,reasonCode:`no_model`,error:`No model available for probe`});continue}h.push({provider:n,model:i,profileId:e,label:c,source:`profile`,mode:a})}continue}if(l.size>0)continue;let y=x(n),b=_(t,n);if(!y&&!b)continue;let S=y?`env`:`models.json`,ee=y?`env`:`models.json`,C=y?.source.includes(`OAUTH_TOKEN`)?`oauth`:`api_key`;if(!i){g.push({provider:n,model:void 0,label:S,source:ee,mode:C,status:`no_model`,reasonCode:`no_model`,error:`No model available for probe`});continue}h.push({provider:n,model:i,label:S,source:ee,mode:C})}return{targets:h,results:g}}async function Mn(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}-${it.randomUUID()}`,u=Ce(l,n);await rt.mkdir(a,{recursive:!0});let d=Date.now();try{return await _e({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-${it.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=he(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:Cn(t.reason),error:W(t.message),latencyMs:Date.now()-d}}}async function Nn(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=ce(t),l=c(),u=se(t,s)??le(),d=we(s);await rt.mkdir(u,{recursive:!0});let f=0,p=Array.from({length:n.length}),m=0,h=async()=>{for(;;){let e=m;if(m+=1,e>=n.length)return;let o=n[e];a?.({completed:f,total:n.length,label:`Probing ${o.provider}${o.profileId?` (${o.label})`:``}`}),p[e]=await Mn({cfg:t,agentId:s,agentDir:l,workspaceDir:u,sessionDir:d,target:o,timeoutMs:r,maxTokens:i}),f+=1,a?.({completed:f,total:n.length})}};return await Promise.all(Array.from({length:o},()=>h())),p.filter(e=>!!e)}async function Pn(e){let t=Date.now(),n=await jn({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 Nn({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 Fn(e){return!e&&e!==0?`-`:G(e)}function In(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 Ln(e){return e.totalTargets===0?`No probe targets.`:`Probed ${e.totalTargets} target${e.totalTargets===1?``:`s`} in ${G(e.durationMs)}`}async function Rn(n,r){if(Le(n),n.plain&&n.probe)throw Error(`--probe cannot be used with --plain output.`);let i=l().configPath,a=await Y({commandName:`models status`,runtime:r}),d=Fe({cfg:a,rawAgentId:n.agent}),f=d?oe(a,d):c(),p=d?de(a,d):void 0,_=d?ue(a,d):void 0,v=d?h({cfg:a,agentId:d}):g({cfg:a,defaultProvider:S,defaultModel:y}),b=P(a.agents?.defaults?.model)??``,w=p??b,T=`${v.provider}/${v.model}`,ne=w||T,re=N(a.agents?.defaults?.model),E=_??re,D=P(a.agents?.defaults?.imageModel)??``,O=N(a.agents?.defaults?.imageModel),k=Object.entries(a.agents?.defaults?.models??{}).reduce((e,[t,n])=>{let r=typeof n?.alias==`string`?n.alias.trim():void 0;return r&&(e[r]=t),e},{}),A=Object.keys(a.agents?.defaults?.models??{}),j=m(f),ae=nt.join(f,`models.json`),se=new Set(Object.values(j.profiles).map(e=>e.provider).filter(e=>!!e)),ce=new Set(Object.keys(a.models?.providers??{}).map(e=>typeof e==`string`?e.trim():``).filter(Boolean)),le=new Set,fe=new Set;for(let e of[ne,...E,D,...O,...A]){let t=o(String(e??``),S);t?.provider&&le.add(t.provider)}for(let e of[ne,...E,D,...O]){let t=o(String(e??``),S);t?.provider&&fe.add(t.provider)}let pe=new Set;for(let e of[`anthropic`,`github-copilot`,`google-vertex`,`openai`,`google`,`groq`,`cerebras`,`xai`,`openrouter`,`zai`,`mistral`,`synthetic`])x(e)&&pe.add(e);let I=Array.from(new Set([...se,...ce,...le,...pe])).map(e=>typeof e==`string`?e.trim():``).filter(Boolean).toSorted((e,t)=>e.localeCompare(t)),me=ee(),he=ie(process.env)||a.env?.shellEnv?.enabled===!0,L=I.map(e=>Sn({provider:e,cfg:a,store:j,modelsPath:ae})).filter(e=>e.profiles.count>0||!!e.env||!!e.modelsJson),_e=new Map(L.map(e=>[e.provider,e])),R=Array.from(fe).filter(e=>!_e.has(e)).toSorted((e,t)=>e.localeCompare(t)),Ce=n.probeProfile?(Array.isArray(n.probeProfile)?n.probeProfile:[n.probeProfile]).flatMap(e=>String(e??``).split(`,`)).map(e=>e.trim()).filter(Boolean):[],we=n.probeTimeout?Number(n.probeTimeout):8e3;if(!Number.isFinite(we)||we<=0)throw Error(`--probe-timeout must be a positive number (ms).`);let Te=n.probeConcurrency?Number(n.probeConcurrency):2;if(!Number.isFinite(Te)||Te<=0)throw Error(`--probe-concurrency must be > 0.`);let Ee=n.probeMaxTokens?Number(n.probeMaxTokens):8;if(!Number.isFinite(Ee)||Ee<=0)throw Error(`--probe-max-tokens must be > 0.`);let De=s({cfg:a,defaultProvider:S}),Oe=[w||T,...E,D,...O,...A].filter(Boolean).map(e=>u({raw:String(e??``),defaultProvider:S,aliasIndex:De})?.ref).filter(e=>!!e).map(e=>`${e.provider}/${e.model}`),z;n.probe&&(z=await Ae({label:`Probing auth profiles…`,total:1},async e=>await Pn({cfg:a,providers:I,modelCandidates:Oe,options:{provider:n.probeProvider,profileIds:Ce,timeoutMs:we,concurrency:Te,maxTokens:Ee},onProgress:e})));let B=L.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})`}),V=be({store:j,cfg:a,warnAfterMs:Se,providers:I}),H=V.profiles.filter(e=>e.type===`oauth`||e.type===`token`),ke=(()=>{let e=Date.now(),t=[];for(let n of Object.keys(j.usageStats??{})){let r=te(j,n);if(!r||e>=r)continue;let i=j.usageStats?.[n],a=typeof i?.disabledUntil==`number`&&e<i.disabledUntil?`disabled`:`cooldown`;t.push({profileId:n,provider:j.profiles[n]?.provider,kind:a,reason:i?.disabledReason,until:r,remainingMs:r-e})}return t.toSorted((e,t)=>e.remainingMs-t.remainingMs)})(),je=(()=>{let e=H.some(e=>[`expired`,`missing`].includes(e.status))||R.length>0,t=H.some(e=>e.status===`expiring`);return e?1:t?2:0})();if(n.json){r.log(JSON.stringify({configPath:i,...d?{agentId:d}:{},agentDir:f,defaultModel:ne,resolvedDefault:T,fallbacks:E,imageModel:D||null,imageFallbacks:O,...d?{modelConfig:{defaultSource:p?`agent`:`defaults`,fallbacksSource:_===void 0?`defaults`:`agent`}}:{},aliases:k,allowed:A,auth:{storePath:C(f),shellEnvFallback:{enabled:he,appliedKeys:me},providersWithOAuth:B,missingProvidersInUse:R,providers:L,unusableProfiles:ke,oauth:{warnAfterMs:V.warnAfterMs,profiles:V.profiles,providers:V.providers},probes:z}},null,2)),n.check&&r.exit(je);return}if(n.plain){r.log(T),n.check&&r.exit(je);return}let U=hn(n),W=n=>t(U,e.accent,n.padEnd(14)),G=(e,t)=>W(t?`${e} (${t})`:e),Pe=w&&w!==T?`${T} (from ${w})`:T;r.log(`${W(`Config`)}${t(U,e.muted,`:`)} ${t(U,e.info,F(i))}`),r.log(`${W(`Agent dir`)}${t(U,e.muted,`:`)} ${t(U,e.info,F(f))}`),r.log(`${G(`Default`,d?p?`agent`:`defaults`:void 0)}${t(U,e.muted,`:`)} ${t(U,e.success,Pe)}`),r.log(`${G(`Fallbacks (${E.length||0})`,d?_===void 0?`defaults`:`agent`:void 0)}${t(U,e.muted,`:`)} ${t(U,E.length?e.warn:e.muted,E.length?E.join(`, `):`-`)}`),r.log(`${G(`Image model`,d?`defaults`:void 0)}${t(U,e.muted,`:`)} ${t(U,D?e.accentBright:e.muted,D||`-`)}`),r.log(`${G(`Image fallbacks (${O.length||0})`,d?`defaults`:void 0)}${t(U,e.muted,`:`)} ${t(U,O.length?e.accentBright:e.muted,O.length?O.join(`, `):`-`)}`),r.log(`${W(`Aliases (${Object.keys(k).length||0})`)}${t(U,e.muted,`:`)} ${t(U,Object.keys(k).length?e.accent:e.muted,Object.keys(k).length?Object.entries(k).map(([t,n])=>U?`${e.accentDim(t)} ${e.muted(`->`)} ${e.info(n)}`:`${t} -> ${n}`).join(`, `):`-`)}`),r.log(`${W(`Configured models (${A.length||0})`)}${t(U,e.muted,`:`)} ${t(U,A.length?e.info:e.muted,A.length?A.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,F(C(f)))}`),r.log(`${W(`Shell env`)}${t(U,e.muted,`:`)} ${t(U,he?e.success:e.muted,he?`on`:`off`)}${me.length?t(U,e.muted,` (applied: ${me.join(`, `)})`):``}`),r.log(`${W(`Providers w/ OAuth/tokens (${B.length||0})`)}${t(U,e.muted,`:`)} ${t(U,B.length?e.info:e.muted,B.length?B.join(`, `):`-`)}`);let Ie=n=>t(U,e.warn,n),K=(n,r)=>`${Ie(n)}=${t(U,e.info,r)}`,q=()=>t(U,e.muted,` | `);for(let n of L){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(R.length>0){r.log(``),r.log(t(U,e.heading,`Missing auth`));for(let t of R){let n=t===`anthropic`?`Run \`claude setup-token\`, then \`${M(`openclaw models auth setup-token`)}\` or \`${M(`openclaw configure`)}\`.`:`Run \`${M(`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`)),H.length===0)r.log(t(U,e.muted,`- none`));else{let n=new Map,i=Array.from(new Set(H.map(e=>ye(e.provider)).filter(e=>!!e)));if(i.length>0)try{let e=await ve({providers:i,agentDir:f,timeoutMs:3500});for(let t of e.providers){let e=xe(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 H){let t=o.get(e.provider);t?t.push(e):o.set(e.provider,[e])}for(let[i,s]of o){let o=ye(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 ${ge(n.remainingMs)}`:` expires unknown`;r.log(` - ${o} ${s}${c}`)}}}if(z)if(r.log(``),r.log(t(U,e.heading,`Auth probes`)),z.results.length===0)r.log(t(U,e.muted,`- none`));else{let n=Ne(),i=In(z.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=Fn(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(Me({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,Ln(z)))}n.check&&r.exit(je)}const zn={name:`ping`,description:`Return OK.`,parameters:ct.Object({})};function Bn(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?null:e>0xe8d4a51000?Math.round(e):Math.round(e*1e3)}function Vn(e){return e&&e.toLowerCase().split(/[^a-z]+/).filter(Boolean).includes(`image`)?[`text`,`image`]:[`text`]}function $(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 Hn(e){if(!e||typeof e!=`object`)return null;let t=e,n=$(t.prompt),r=$(t.completion),i=$(t.request)??0,a=$(t.image)??0,o=$(t.web_search)??0,s=$(t.internal_reasoning)??0;return n===null||r===null?null:{prompt:n,completion:r,request:i,image:a,webSearch:o,internalReasoning:s}}function Un(e){return e.id.endsWith(`:free`)?!0:e.pricing?e.pricing.prompt===0&&e.pricing.completion===0:!1}async function Wn(e,t){let n=new AbortController,r=setTimeout(n.abort.bind(n),e);try{return await t(n.signal)}finally{clearTimeout(r)}}async function Gn(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:U(`${n} ${r}`),createdAtMs:Bn(t.created_at),pricing:Hn(t.pricing)}}).filter(e=>!!e)}async function Kn(e,t,n){let r={messages:[{role:`user`,content:`Call the ping tool with {} and nothing else.`,timestamp:Date.now()}],tools:[zn]},i=Date.now();try{return(await Wn(n,n=>at(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 qn(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 Wn(n,n=>at(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 Jn(e){return e.input?.includes(`image`)?e:{...e,input:Array.from(new Set([...e.input??[],`image`]))}}function Yn(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 Xn(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 Zn(e={}){let t=e.fetchImpl??fetch,n=e.probe??!0,r=e.apiKey?.trim()||ot(`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 Gn(t),u=Date.now(),d=l.filter(e=>!(!Un(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=st(`openrouter`,`openrouter/auto`);return e.onProgress?.({phase:`probe`,completed:0,total:d.length}),Xn(d,a,async e=>{let t=Un(e);if(!n)return Yn({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:Vn(e.modality),reasoning:f.reasoning};return Yn({entry:e,isFree:t,tool:await Kn(a,r,i),image:a.input?.includes(`image`)?await qn(Jn(a),r,i):{ok:!1,latencyMs:null,skipped:!0}})},{onProgress:(t,n)=>e.onProgress?.({phase:`probe`,completed:t,total:n})})}const Qn=e=>ft({...e,message:V(e.message),options:e.options.map(e=>e.hint===void 0?e:{...e,hint:ke(e.hint)})});function $n(e,t){if(dt(e))throw lt(H(`Model scan cancelled.`)??`Model scan cancelled.`),t.exit(0),Error(`unreachable`);return e}function er(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?nr(e,t):i-a})}function tr(e){return e.slice().toSorted((e,t)=>{let n=e.image.latencyMs??1/0,r=t.image.latencyMs??1/0;return n===r?nr(e,t):n-r})}function nr(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 rr(e){return[e.tool.ok?`tool ${G(e.tool.latencyMs)}`:`tool fail`,e.image.skipped?`img skip`:e.image.ok?`img ${G(e.image.latencyMs)}`:`img fail`,e.contextLength?`ctx ${ze(e.contextLength)}`:`ctx ?`,e.inferredParamB?`${e.inferredParamB}b`:null].filter(Boolean).join(` | `)}function ir(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 ar(e,t){let n=[Q(`Model`,42),Q(`Tool`,10),Q(`Image`,10),Q(`Ctx`,8),Q(`Params`,8),`Notes`].join(` `);t.log(n);for(let n of e){let e=Q(_n(n.modelRef,42),42),r=Q(n.tool.ok?G(n.tool.latencyMs):`fail`,10),i=Q(n.image.ok?G(n.image.latencyMs):n.image.skipped?`skip`:`fail`,10),a=Q(ze(n.contextLength),8),o=Q(n.inferredParamB?`${n.inferredParamB}b`:`-`,8),s=n.modality?`modality:${n.modality}`:``;t.log([e,r,i,a,o,s].join(` `))}}async function or(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 a=e.timeout?Number(e.timeout):void 0;if(a!==void 0&&(!Number.isFinite(a)||a<=0))throw Error(`--timeout must be > 0`);let o=e.concurrency?Number(e.concurrency):void 0;if(o!==void 0&&(!Number.isFinite(o)||o<=0))throw Error(`--concurrency must be > 0`);let s=await Y({commandName:`models scan`,runtime:t}),c=e.probe??!0,l;if(c)try{l=(await k({provider:`openrouter`,cfg:s})).apiKey}catch{l=void 0}let u=await Ae({label:`Scanning OpenRouter models...`,indeterminate:!1,enabled:e.json!==!0},async t=>await Zn({apiKey:l??void 0,minParamB:n,maxAgeDays:r,providerFilter:e.provider,timeoutMs:a,concurrency:o,probe:c,onProgress:({phase:e,completed:n,total:r})=>{e===`probe`&&t({completed:n,total:r,label:`${c?`Probing models`:`Scanning models`} (${n}/${r})`})}}));if(!c){e.json?t.log(JSON.stringify(u,null,2)):(t.log(`Found ${u.length} OpenRouter free models (metadata only; pass --probe to test tools/images).`),ar(er(u),t));return}let d=u.filter(e=>e.tool.ok);if(d.length===0)throw Error(`No tool-capable OpenRouter free models found.`);let f=er(u),p=er(d),m=tr(u.filter(e=>e.image.ok)),h=p.filter(e=>e.image.ok),g=(h.length>0?h:p).slice(0,Math.floor(i)).map(e=>e.modelRef),_=m.slice(0,Math.floor(i)).map(e=>e.modelRef);e.json||(ir(u,t),ar(f,t));let v=e.input===!1,y=process.stdin.isTTY&&!e.yes&&!v&&!e.json,b=g,x=_;if(y)b=$n(await Qn({message:`Select fallback models (ordered)`,options:p.map(e=>({value:e.modelRef,label:e.modelRef,hint:rr(e)})),initialValues:g}),t),m.length>0&&(x=$n(await Qn({message:`Select image fallback models (ordered)`,options:m.map(e=>({value:e.modelRef,label:e.modelRef,hint:rr(e)})),initialValues:_}),t));else if(!process.stdin.isTTY&&!e.yes&&!v&&!e.json)throw Error(`Non-interactive scan: pass --yes to apply defaults.`);if(b.length===0)throw Error(`No models selected for fallbacks.`);if(e.setImage&&x.length===0)throw Error(`No image-capable models selected for image model.`);if(await q(t=>{let n={...t.agents?.defaults?.models};for(let e of b)n[e]||(n[e]={});for(let e of x)n[e]||(n[e]={});let r=ae(t.agents?.defaults?.imageModel),i=x.length>0?{...r?.primary?{primary:r.primary}:void 0,fallbacks:x,...e.setImage?{primary:x[0]}:{}}:t.agents?.defaults?.imageModel,a=ae(t.agents?.defaults?.model),o={...t.agents?.defaults,model:{...a?.primary?{primary:a.primary}:void 0,fallbacks:b,...e.setDefault?{primary:b[0]}:{}},...i?{imageModel:i}:{},models:n};return{...t,agents:{...t.agents,defaults:o}}}),e.json){t.log(JSON.stringify({selected:b,selectedImages:x,setDefault:!!e.setDefault,setImage:!!e.setImage,results:u,warnings:[]},null,2));return}J(t),t.log(`Fallbacks: ${b.join(`, `)}`),x.length>0&&t.log(`Image fallbacks: ${x.join(`, `)}`),e.setDefault&&t.log(`Default model: ${b[0]}`),e.setImage&&x.length>0&&t.log(`Image model: ${x[0]}`)}async function sr(e,t){let n=await q(t=>Ve({cfg:t,modelRaw:e,field:`model`}));J(t),t.log(`Default model: ${P(n.agents?.defaults?.model)??e}`)}async function cr(e,t){let n=await q(t=>Ve({cfg:t,modelRaw:e,field:`imageModel`}));J(t),t.log(`Image model: ${P(n.agents?.defaults?.imageModel)??e}`)}export{Et as _,Xt as a,_t as b,Wt as c,Gt as d,It as f,jt as g,Dt as h,Jt as i,Kt as l,Lt as m,yn as modelsListCommand,Rn as modelsStatusCommand,sr as n,qt as o,Ft as p,or as r,Yt as s,cr as t,Ut as u,Tt as v,yt as x,vt as y};
3
- //# sourceMappingURL=models-C_Vg3Cty.js.map
3
+ //# sourceMappingURL=models-BEO5lvkx.js.map
@@ -1,2 +1,2 @@
1
- import{A as e,p as t}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import"./auth-profiles-T8DuH3ax.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-CKTicUKS.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-CW81y5Wz.js";import"./send-DavpkzhH.js";import"./compact-Dg66DXx_.js";import"./paths-BfjJY2VL.js";import"./chat-envelope-Bznn2SoS.js";import"./models-config-_htt7eY5.js";import"./tokens-DRM8vzJx.js";import"./with-timeout-c1CzdShT.js";import"./deliver-BHuhHfkH.js";import"./diagnostic-DQq4Bwrs.js";import"./send-DkiKKUkt.js";import"./pi-model-discovery-CpjYoBQf.js";import"./exec-approvals-allowlist-D8mN7nxV.js";import"./exec-safe-bin-runtime-policy-dcCS_Adf.js";import"./model-catalog-COVzoZD9.js";import"./fetch-CQaNr5J1.js";import"./audio-transcription-runner-Bd1OZC6K.js";import"./fetch-guard-BrTtJw7h.js";import"./image-BkWwI54C.js";import"./tool-display-DJDtttQg.js";import"./api-key-rotation-D0QU-kQ9.js";import"./proxy-fetch-gWETR3cl.js";import"./ir-D8Hh84ab.js";import"./render-DrrPmnMI.js";import"./target-errors-CgWAJOam.js";import"./commands-Dy7duWlt.js";import"./commands-registry-Cpl4QnG4.js";import"./session-cost-usage-CHtVgnE8.js";import"./session-utils-8acNlxwP.js";import"./sqlite-CILF3z9U.js";import"./call-B8Fb4_oh.js";import"./pi-tools.policy-D40r0HmD.js";import"./pairing-store-BH-FTYkn.js";import"./fetch-Dh-apy46.js";import"./skill-commands-CSF6wVPU.js";import"./workspace-dirs-A8Vib9_B.js";import"./pairing-token-DAR7V7FJ.js";import"./channel-activity-BBrgoad1.js";import"./tables-Brc2lNcB.js";import"./kill-tree-B3g7HrAO.js";import"./runtime-web-tools-D8fms06-.js";import"./runtime-Dlg2-Omq.js";import"./node-shell-DyOfwHrh.js";import"./stagger-DxzgG2jd.js";import"./channel-selection-BBeE1TmB.js";import"./plugin-auto-enable-NzmNh4oU.js";import"./send-CVplsJpw.js";import"./outbound-attachment-BgAe99RM.js";import"./delivery-queue-nkPJu0fY.js";import"./send-C48Y9SAq.js";import"./system-run-command-BKfMiqQM.js";import"./fetch-Ce-scEU-.js";import"./command-secret-targets-BlN-J_fA.js";import"./connection-auth-B_Uk6Vk8.js";import"./onboard-helpers-PGl5bVPE.js";import"./prompt-style-BThRSQJR.js";import"./pairing-labels-D-kzQEL2.js";import"./search-manager-Bp9x20r6.js";import"./manager-C2YW7Hkq.js";import"./memory-cli-XaxtBQm1.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-C_lNzrKa.js";import"./table-CR7TFMew.js";import"./openai-codex-model-default-DuE2_wN7.js";import"./auth-token-kGltuM6S.js";import"./logging-tYw1NbJd.js";import{c as a}from"./provider-auth-helpers-pBVCjBj9.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-C_Vg3Cty.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};
2
- //# sourceMappingURL=models-cli-CDZliTXq.js.map
1
+ import{A as e,p as t}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import"./auth-profiles-T8DuH3ax.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-CKTicUKS.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-CW81y5Wz.js";import"./send-DavpkzhH.js";import"./compact-BEeB6bwq.js";import"./paths-BfjJY2VL.js";import"./chat-envelope-Bznn2SoS.js";import"./models-config-_htt7eY5.js";import"./tokens-DRM8vzJx.js";import"./with-timeout-c1CzdShT.js";import"./deliver-BHuhHfkH.js";import"./diagnostic-DQq4Bwrs.js";import"./send-DkiKKUkt.js";import"./pi-model-discovery-CpjYoBQf.js";import"./exec-approvals-allowlist-D8mN7nxV.js";import"./exec-safe-bin-runtime-policy-dcCS_Adf.js";import"./model-catalog-COVzoZD9.js";import"./fetch-CQaNr5J1.js";import"./audio-transcription-runner-Bd1OZC6K.js";import"./fetch-guard-BrTtJw7h.js";import"./image-BkWwI54C.js";import"./tool-display-DJDtttQg.js";import"./api-key-rotation-D0QU-kQ9.js";import"./proxy-fetch-gWETR3cl.js";import"./ir-D8Hh84ab.js";import"./render-DrrPmnMI.js";import"./target-errors-CgWAJOam.js";import"./commands-Dy7duWlt.js";import"./commands-registry-Cpl4QnG4.js";import"./session-cost-usage-CHtVgnE8.js";import"./session-utils-8acNlxwP.js";import"./sqlite-CILF3z9U.js";import"./call-B8Fb4_oh.js";import"./pi-tools.policy-D40r0HmD.js";import"./pairing-store-BH-FTYkn.js";import"./fetch-Dh-apy46.js";import"./skill-commands-CSF6wVPU.js";import"./workspace-dirs-A8Vib9_B.js";import"./pairing-token-DAR7V7FJ.js";import"./channel-activity-BBrgoad1.js";import"./tables-Brc2lNcB.js";import"./kill-tree-B3g7HrAO.js";import"./runtime-web-tools-D8fms06-.js";import"./runtime-Dlg2-Omq.js";import"./node-shell-DyOfwHrh.js";import"./stagger-DxzgG2jd.js";import"./channel-selection-BBeE1TmB.js";import"./plugin-auto-enable-NzmNh4oU.js";import"./send-CVplsJpw.js";import"./outbound-attachment-BgAe99RM.js";import"./delivery-queue-nkPJu0fY.js";import"./send-C48Y9SAq.js";import"./system-run-command-BKfMiqQM.js";import"./fetch-Ce-scEU-.js";import"./command-secret-targets-BlN-J_fA.js";import"./connection-auth-B_Uk6Vk8.js";import"./onboard-helpers-PGl5bVPE.js";import"./prompt-style-BThRSQJR.js";import"./pairing-labels-D-kzQEL2.js";import"./search-manager-Bp9x20r6.js";import"./manager-C2YW7Hkq.js";import"./memory-cli-XaxtBQm1.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-C_lNzrKa.js";import"./table-CR7TFMew.js";import"./openai-codex-model-default-DuE2_wN7.js";import"./auth-token-kGltuM6S.js";import"./logging-tYw1NbJd.js";import{c as a}from"./provider-auth-helpers-BzlcSA6U.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-BEO5lvkx.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};
2
+ //# sourceMappingURL=models-cli-BbcJ6A0F.js.map
@@ -1,3 +1,3 @@
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-BlC_rXAN.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-l-Y47HP4.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-DHbOKEGc.js";import"./frontmatter-BkZkwkVO.js";import"./plugins-CYLrFT4h.js";import"./logger-Bl8URnrW.js";import"./exec-DHqLtFYt.js";import"./windows-spawn-AB7ItGAE.js";import"./redact-3_CiXMY6.js";import"./path-alias-guards-mvyLCPlN.js";import"./errors-Bunti32V.js";import"./send-Cgd_VJHR.js";import"./send-hZFDcGLM.js";import{i as Ee,s as De}from"./paths-yLEk_25I.js";import"./chat-envelope-HVpKusFc.js";import"./audio-transcription-runner-D4Bp6MM7.js";import"./image-DsoO5VP5.js";import"./models-config-CdMhNxKV.js";import"./tool-display-DjuSUUbH.js";import"./fetch-guard-DPdY0NXR.js";import"./api-key-rotation-BRt-vnRV.js";import"./local-roots-6waH0SZ0.js";import{n as L}from"./model-catalog-C1kpjR75.js";import"./proxy-fetch-BADsUK4d.js";import"./tokens-XGbQGn67.js";import"./deliver-ClBkV2eD.js";import"./commands-CGpM84iR.js";import"./commands-registry-B1x54ukc.js";import"./pairing-store-Cg2UxreQ.js";import"./fetch-Dikjvc5M.js";import"./call-CqoMqP5b.js";import"./with-timeout-WveKxvFV.js";import"./diagnostic-DOzHPnht.js";import"./send-B7sHR38c2.js";import{n as Oe,t as ke}from"./pi-model-discovery-Dps1PPWz.js";import"./exec-approvals-allowlist-CE3nYh0K.js";import"./exec-safe-bin-runtime-policy-Dt0GchLp.js";import"./ir-Dk7OQ4bA.js";import"./render-D8OWO2hT.js";import"./target-errors-a35Md15n.js";import"./read-only-account-inspect-DBwAwB3_.js";import"./channel-selection-CbNtbAEf.js";import"./plugin-auto-enable-DpVL6-ES.js";import"./send-C-AP01PR.js";import"./outbound-attachment-B7wMxwj6.js";import"./delivery-queue-CKbauSFq.js";import"./send-DbeEC2a3.js";import"./channel-activity-YjYNzCpJ.js";import"./tables-Oieq7UbT.js";import"./fetch-Bn0mWg6a.js";import"./skill-commands-HJHHZqt6.js";import"./workspace-dirs-BhF1Dzxt.js";import"./pairing-token-BjYBuREl.js";import"./restart-CHXEHdSC.js";import"./runtime-web-tools-bz76ZaRc.js";import{i as R,s as z}from"./command-secret-targets-BVN3kiT9.js";import"./session-cost-usage-BgqKixv0.js";import"./connection-auth-C8iru0UB.js";import{f as B}from"./onboard-helpers-zwybUJWu.js";import{n as V,r as Ae,t as H}from"./prompt-style-CXKekIBY.js";import"./pairing-labels-BUU_-70B.js";import"./memory-cli-jhzJ3as7.js";import"./query-expansion-0OxEb1Io.js";import"./manager-M1GKhLUC.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-DECgxo6A.js";import"./system-run-command-DEWnZE0r.js";import"./runtime-BC5Ep2pJ.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-BT7cQEt3.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-yVfRw-Mm.js";import{Mt as Je,h as Ye,n as Xe}from"./auth-token-9OTF1FmL.js";import{t as Ze}from"./oauth-env-DSLBTWb1.js";import{n as Y}from"./logging-Dqe9dxSX.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-1lU43eTW.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-BlC_rXAN.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-CjyZeZ-j.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-DHbOKEGc.js";import"./frontmatter-BkZkwkVO.js";import"./plugins-CYLrFT4h.js";import"./logger-Bl8URnrW.js";import"./exec-DHqLtFYt.js";import"./windows-spawn-AB7ItGAE.js";import"./redact-3_CiXMY6.js";import"./path-alias-guards-mvyLCPlN.js";import"./errors-Bunti32V.js";import"./send-Cgd_VJHR.js";import"./send-hZFDcGLM.js";import{i as Ee,s as De}from"./paths-yLEk_25I.js";import"./chat-envelope-HVpKusFc.js";import"./audio-transcription-runner-D4Bp6MM7.js";import"./image-DsoO5VP5.js";import"./models-config-CdMhNxKV.js";import"./tool-display-DjuSUUbH.js";import"./fetch-guard-DPdY0NXR.js";import"./api-key-rotation-BRt-vnRV.js";import"./local-roots-6waH0SZ0.js";import{n as L}from"./model-catalog-C1kpjR75.js";import"./proxy-fetch-BADsUK4d.js";import"./tokens-XGbQGn67.js";import"./deliver-ClBkV2eD.js";import"./commands-CGpM84iR.js";import"./commands-registry-B1x54ukc.js";import"./pairing-store-Cg2UxreQ.js";import"./fetch-Dikjvc5M.js";import"./call-CqoMqP5b.js";import"./with-timeout-WveKxvFV.js";import"./diagnostic-DOzHPnht.js";import"./send-B7sHR38c2.js";import{n as Oe,t as ke}from"./pi-model-discovery-Dps1PPWz.js";import"./exec-approvals-allowlist-CE3nYh0K.js";import"./exec-safe-bin-runtime-policy-Dt0GchLp.js";import"./ir-Dk7OQ4bA.js";import"./render-D8OWO2hT.js";import"./target-errors-a35Md15n.js";import"./read-only-account-inspect-DBwAwB3_.js";import"./channel-selection-CbNtbAEf.js";import"./plugin-auto-enable-DpVL6-ES.js";import"./send-C-AP01PR.js";import"./outbound-attachment-B7wMxwj6.js";import"./delivery-queue-CKbauSFq.js";import"./send-DbeEC2a3.js";import"./channel-activity-YjYNzCpJ.js";import"./tables-Oieq7UbT.js";import"./fetch-Bn0mWg6a.js";import"./skill-commands-HJHHZqt6.js";import"./workspace-dirs-BhF1Dzxt.js";import"./pairing-token-BjYBuREl.js";import"./restart-CHXEHdSC.js";import"./runtime-web-tools-bz76ZaRc.js";import{i as R,s as z}from"./command-secret-targets-BVN3kiT9.js";import"./session-cost-usage-BgqKixv0.js";import"./connection-auth-C8iru0UB.js";import{f as B}from"./onboard-helpers-zwybUJWu.js";import{n as V,r as Ae,t as H}from"./prompt-style-CXKekIBY.js";import"./pairing-labels-BUU_-70B.js";import"./memory-cli-jhzJ3as7.js";import"./query-expansion-0OxEb1Io.js";import"./manager-M1GKhLUC.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-DECgxo6A.js";import"./system-run-command-DEWnZE0r.js";import"./runtime-BC5Ep2pJ.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-BT7cQEt3.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-yVfRw-Mm.js";import{Mt as Je,h as Ye,n as Xe}from"./auth-token-9OTF1FmL.js";import{t as Ze}from"./oauth-env-DSLBTWb1.js";import{n as Y}from"./logging-Dqe9dxSX.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-CDIiLD1m.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-BlC_rXAN.js`).then(e=>e.Ct),{ensureOpenClawModelsJson:r}=await import(`./models-config-CdMhNxKV.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};
3
- //# sourceMappingURL=models-cli-bGr8jwAb.js.map
3
+ //# sourceMappingURL=models-cli-Dacwv6BY.js.map
@@ -1,2 +1,2 @@
1
- import{t as e}from"./subsystem-C5XF2Fy5.js";import{qs as t}from"./model-selection-BlC_rXAN.js";import{at as n,ot as r}from"./reply-l-Y47HP4.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};
2
- //# sourceMappingURL=npm-resolution-DWPloph4.js.map
1
+ import{t as e}from"./subsystem-C5XF2Fy5.js";import{qs as t}from"./model-selection-BlC_rXAN.js";import{at as n,ot as r}from"./reply-CjyZeZ-j.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};
2
+ //# sourceMappingURL=npm-resolution-Bui58Ks1.js.map
@@ -1,2 +1,2 @@
1
- import{t as e}from"./subsystem-BLbY429l.js";import{jo as t}from"./auth-profiles-T8DuH3ax.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-Dg66DXx_.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};
2
- //# sourceMappingURL=npm-resolution-BnJGLwhi.js.map
1
+ import{t as e}from"./subsystem-BLbY429l.js";import{jo as t}from"./auth-profiles-T8DuH3ax.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-BEeB6bwq.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};
2
+ //# sourceMappingURL=npm-resolution-Ct6MRtq6.js.map
@@ -1,6 +1,6 @@
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-T8DuH3ax.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-PGl5bVPE.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-ouEqUuUr.js";import{n as x}from"./logging-tYw1NbJd.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-B7LSoXZ_.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-C30rBssi.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-PaRHFItm.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-T8DuH3ax.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-PGl5bVPE.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-BRewu6jg.js";import{n as x}from"./logging-tYw1NbJd.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-B7LSoXZ_.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-C30rBssi.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-DBu0V1Y-.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};
6
- //# sourceMappingURL=onboard-B0BNCQaO.js.map
6
+ //# sourceMappingURL=onboard-7i9A1nNd.js.map
@@ -1,6 +1,6 @@
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-BlC_rXAN.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-zwybUJWu.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-B6ixWwgp.js";import{n as x}from"./logging-Dqe9dxSX.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-CxMH4c-u.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-HrqlOCrc.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-BgOggK9k.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-BlC_rXAN.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-zwybUJWu.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-RZTEMxl0.js";import{n as x}from"./logging-Dqe9dxSX.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-CxMH4c-u.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-HrqlOCrc.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-RQzDNQwf.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};
6
- //# sourceMappingURL=onboard-CjVhdaiR.js.map
6
+ //# sourceMappingURL=onboard-DSaXIS5U.js.map