@qqbrowser/openclaw-qbot 0.0.142 → 0.0.144

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-CSBvrqwW.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-BZi4nuQb.js → completion-cli-Bizog38J.js} +2 -2
  26. package/dist/{completion-cli-C40TWdsv.js → completion-cli-W1_FoDFF.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-BJ6steqx.js → doctor-completion-Da0cocZX.js} +2 -2
  36. package/dist/{doctor-completion-DMJhfrtC.js → doctor-completion-DpCWb88H.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-C4YOlz3m.js} +6 -6
  40. package/dist/{gateway-cli-C_s9eMlC.js → gateway-cli-D78GfbjG.js} +6 -6
  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-2iF3lTUI.js} +3 -3
  53. package/dist/{onboard-CjVhdaiR.js → onboard-B9ouFJC7.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-B6ixWwgp.js → onboarding-BTBbx6Ka.js} +2 -2
  57. package/dist/{onboarding-ouEqUuUr.js → onboarding-TkoOoq9D.js} +2 -2
  58. package/dist/{onboarding.finalize-Bgat5Npc.js → onboarding.finalize-C9QGFQpa.js} +2 -2
  59. package/dist/{onboarding.finalize-DsMVlTcH.js → onboarding.finalize-CwjLMPKK.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-CCS3CIqA.js} +3 -3
  157. package/dist/{program-context-B9ydtPje.js → program-context-lyPXjPfN.js} +2 -2
  158. package/dist/{prompt-select-styled-DIOWLjl0.js → prompt-select-styled-DmTwJKOO.js} +2 -2
  159. package/dist/{prompt-select-styled-BeJNbzSa.js → prompt-select-styled-Z30OVmpM.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-r_MzNK3-.js → register.maintenance-COWBeetm.js} +2 -2
  169. package/dist/{register.maintenance-BhsBepKS.js → register.maintenance-vhmmqtIi.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-CNwnStUk.js → register.onboard-CJZKG0PP.js} +2 -2
  173. package/dist/{register.onboard-C3yL50_c.js → register.onboard-CaFl_mB1.js} +2 -2
  174. package/dist/{register.setup-BRJMzgfU.js → register.setup-CSW03BKj.js} +2 -2
  175. package/dist/{register.setup-BvsS-zgm.js → register.setup-DDkBFyvF.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-B_0ZS-_K.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-CV49c7uu.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-YrBbmw4f.js → update-cli--P65ciut.js} +2 -2
  194. package/dist/{update-cli-BwBMOeP0.js → update-cli-Ibrshx_w.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,4 +1,4 @@
1
- import{p as e}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import{Ac as t,Bo as n,Tc as r}from"./auth-profiles-T8DuH3ax.js";import{t as i}from"./command-format-CLxIPuLR.js";import{a,d as o,f as s,n as c}from"./agent-scope-DAWJwFfl.js";import{c as l,g as u,t as d}from"./session-key-C7F_iqYg.js";import{v as f,x as p}from"./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{lt as m,n as h,r as g,t as _,x as v,y}from"./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{F as b,L as x}from"./compact-Dg66DXx_.js";import{s as S}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"./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{a as C,l as w}from"./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"./links-CBnmRP9D.js";import"./cli-utils-BleB1eys.js";import"./help-format-B4aEI7V9.js";import"./progress-d1m2sqR1.js";import"./exec-approvals-BXO9Cezj.js";import"./outbound-BtUeDLjU.js";import"./channel-web-BrElpZAc.js";import"./session-bk3gFwO4.js";import"./login-Do_NA1Je.js";import"./provider-env-vars-Dt0Q29Su.js";import"./note-Dp-d_utk.js";import{t as T}from"./prompts-CMzglboN.js";import{t as E}from"./clack-prompter-DBPdGdqp.js";import{a as D,i as O,n as k,o as ee,r as A,t as j}from"./config-validation-C1La_IZU.js";import{a as te,i as M,n as N,r as P,t as F}from"./agents.config-DfIJAGcd.js";import"./enable-BhD84GhD.js";import"./install-safe-path-C6kc_8NW.js";import"./npm-pack-install-C0te3Oap.js";import"./skill-scanner-CkxXNioD.js";import"./installs-C1xQLuby.js";import"./plugin-install-plan-NvDGp0d8.js";import{r as ne}from"./onboard-channels-CZK_7xMR.js";import"./auth-choice.apply-helpers-B7S-PcH_.js";import"./issue-format-C_lNzrKa.js";import"./openai-codex-model-default-DuE2_wN7.js";import"./auth-token-kGltuM6S.js";import{n as I}from"./logging-tYw1NbJd.js";import"./provider-auth-helpers-pBVCjBj9.js";import"./oauth-tls-preflight-BSBRDIfC.js";import"./auth-choice-options-B3WQyS7I.js";import{n as re}from"./auth-choice-prompt-uegl56cf.js";import{i as ie,r as ae}from"./auth-choice-DvTApGhx.js";import"./openai-model-default-DJObMvLJ.js";import"./model-picker-D3ZSpr0i.js";import"./ollama-setup-BMEKWyIE.js";import L from"node:path";import R from"node:fs/promises";function z(e){return{...e,log:()=>{}}}async function B(e){return await j(e)}function V(e,t,n){return e?t?.trim()?l(t):n?.fallbackToDefault?s(e):null:null}function H(e,t){return e?N(e).some(e=>e.id===t):!1}function oe(e){return`${l(e.agentId)} <- ${O(e)}`}function se(e){let t=V(e.cfg,e.agentInput?.trim(),{fallbackToDefault:!0});return t?H(e.cfg,t)?t:(e.runtime.error(`Agent "${t}" not found.`),e.runtime.exit(1),null):(e.runtime.error(`Unable to resolve agent id.`),e.runtime.exit(1),null)}function U(e){return e.map(e=>`${O(e.binding)} (agent=${e.existingAgentId})`)}function W(e){let t=(e.bindValues??[]).map(e=>e.trim()).filter(Boolean);if(t.length===0)return e.runtime.error(e.emptyMessage),e.runtime.exit(1),null;let n=D({agentId:e.agentId,specs:t,config:e.cfg});return n.errors.length>0?(e.runtime.error(n.errors.join(`
1
+ import{p as e}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import"./boolean-D15s2V33.js";import{Ac as t,Bo as n,Tc as r}from"./auth-profiles-T8DuH3ax.js";import{t as i}from"./command-format-CLxIPuLR.js";import{a,d as o,f as s,n as c}from"./agent-scope-DAWJwFfl.js";import{c as l,g as u,t as d}from"./session-key-C7F_iqYg.js";import{v as f,x as p}from"./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{lt as m,n as h,r as g,t as _,x as v,y}from"./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{F as b,L as x}from"./compact-BEeB6bwq.js";import{s as S}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"./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{a as C,l as w}from"./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"./links-CBnmRP9D.js";import"./cli-utils-BleB1eys.js";import"./help-format-B4aEI7V9.js";import"./progress-d1m2sqR1.js";import"./exec-approvals-BXO9Cezj.js";import"./outbound-BtUeDLjU.js";import"./channel-web-D5TgFlMz.js";import"./session-bk3gFwO4.js";import"./login-Do_NA1Je.js";import"./provider-env-vars-Dt0Q29Su.js";import"./note-Dp-d_utk.js";import{t as T}from"./prompts-CMzglboN.js";import{t as E}from"./clack-prompter-DBPdGdqp.js";import{a as D,i as O,n as k,o as ee,r as A,t as j}from"./config-validation-C1La_IZU.js";import{a as te,i as M,n as N,r as P,t as F}from"./agents.config-BUQjISaN.js";import"./enable-BhD84GhD.js";import"./install-safe-path-C6kc_8NW.js";import"./npm-pack-install-C0te3Oap.js";import"./skill-scanner-CkxXNioD.js";import"./installs-C1xQLuby.js";import"./plugin-install-plan-NvDGp0d8.js";import{r as ne}from"./onboard-channels-BXReNh4B.js";import"./auth-choice.apply-helpers-B7S-PcH_.js";import"./issue-format-C_lNzrKa.js";import"./openai-codex-model-default-DuE2_wN7.js";import"./auth-token-kGltuM6S.js";import{n as I}from"./logging-tYw1NbJd.js";import"./provider-auth-helpers-BzlcSA6U.js";import"./oauth-tls-preflight-BSBRDIfC.js";import"./auth-choice-options-B3WQyS7I.js";import{n as re}from"./auth-choice-prompt-uegl56cf.js";import{i as ie,r as ae}from"./auth-choice-CYGzLW73.js";import"./openai-model-default-DJObMvLJ.js";import"./model-picker-D3ZSpr0i.js";import"./ollama-setup-BMEKWyIE.js";import L from"node:path";import R from"node:fs/promises";function z(e){return{...e,log:()=>{}}}async function B(e){return await j(e)}function V(e,t,n){return e?t?.trim()?l(t):n?.fallbackToDefault?s(e):null:null}function H(e,t){return e?N(e).some(e=>e.id===t):!1}function oe(e){return`${l(e.agentId)} <- ${O(e)}`}function se(e){let t=V(e.cfg,e.agentInput?.trim(),{fallbackToDefault:!0});return t?H(e.cfg,t)?t:(e.runtime.error(`Agent "${t}" not found.`),e.runtime.exit(1),null):(e.runtime.error(`Unable to resolve agent id.`),e.runtime.exit(1),null)}function U(e){return e.map(e=>`${O(e.binding)} (agent=${e.existingAgentId})`)}function W(e){let t=(e.bindValues??[]).map(e=>e.trim()).filter(Boolean);if(t.length===0)return e.runtime.error(e.emptyMessage),e.runtime.exit(1),null;let n=D({agentId:e.agentId,specs:t,config:e.cfg});return n.errors.length>0?(e.runtime.error(n.errors.join(`
2
2
  `)),e.runtime.exit(1),null):n}function G(e){return e.json?(e.runtime.log(JSON.stringify(e.payload,null,2)),(e.conflictCount??0)>0&&e.runtime.exit(1),!0):!1}async function K(e){let t=await B(e.runtime);if(!t)return null;let n=se({cfg:t,runtime:e.runtime,agentInput:e.agentInput});return n?{cfg:t,agentId:n}:null}async function ce(t,n=e){let r=await B(n);if(!r)return;let i=V(r,t.agent?.trim());if(t.agent&&!i){n.error(`Agent id is required.`),n.exit(1);return}if(i&&!H(r,i)){n.error(`Agent "${i}" not found.`),n.exit(1);return}let a=v(r).filter(e=>!i||l(e.agentId)===i);if(t.json){n.log(JSON.stringify(a.map(e=>({agentId:l(e.agentId),match:e.match,description:O(e)})),null,2));return}if(a.length===0){n.log(i?`No routing bindings for agent "${i}".`:`No routing bindings.`);return}n.log([`Routing bindings:`,...a.map(e=>`- ${oe(e)}`)].join(`
3
3
  `))}async function le(t,r=e){let i=await K({runtime:r,agentInput:t.agent});if(!i)return;let{cfg:a,agentId:o}=i,s=W({runtime:r,cfg:a,agentId:o,bindValues:t.bind,emptyMessage:`Provide at least one --bind <channel[:accountId]>.`});if(!s)return;let c=k(a,s.bindings);(c.added.length>0||c.updated.length>0)&&(await n(c.config),t.json||I(r));let l={agentId:o,added:c.added.map(O),updated:c.updated.map(O),skipped:c.skipped.map(O),conflicts:U(c.conflicts)};if(!G({runtime:r,json:t.json,payload:l,conflictCount:c.conflicts.length})){if(c.added.length>0){r.log(`Added bindings:`);for(let e of c.added)r.log(`- ${O(e)}`)}else c.updated.length===0&&r.log(`No new bindings added.`);if(c.updated.length>0){r.log(`Updated bindings:`);for(let e of c.updated)r.log(`- ${O(e)}`)}if(c.skipped.length>0){r.log(`Already present:`);for(let e of c.skipped)r.log(`- ${O(e)}`)}if(c.conflicts.length>0){r.error(`Skipped bindings already claimed by another agent:`);for(let e of c.conflicts)r.error(`- ${O(e.binding)} (agent=${e.existingAgentId})`);r.exit(1)}}}async function ue(t,r=e){let i=await K({runtime:r,agentInput:t.agent});if(!i)return;let{cfg:a,agentId:o}=i;if(t.all&&(t.bind?.length??0)>0){r.error(`Use either --all or --bind, not both.`),r.exit(1);return}if(t.all){let e=v(a),i=e.filter(e=>l(e.agentId)===o),s=e.filter(e=>l(e.agentId)!==o),c=(a.bindings??[]).filter(e=>!y(e));if(i.length===0){r.log(`No bindings to remove for agent "${o}".`);return}await n({...a,bindings:[...s,...c].length>0?[...s,...c]:void 0}),t.json||I(r);let u={agentId:o,removed:i.map(O),missing:[],conflicts:[]};if(G({runtime:r,json:t.json,payload:u}))return;r.log(`Removed ${i.length} binding(s) for "${o}".`);return}let s=W({runtime:r,cfg:a,agentId:o,bindValues:t.bind,emptyMessage:`Provide at least one --bind <channel[:accountId]> or use --all.`});if(!s)return;let c=ee(a,s.bindings);c.removed.length>0&&(await n(c.config),t.json||I(r));let u={agentId:o,removed:c.removed.map(O),missing:c.missing.map(O),conflicts:U(c.conflicts)};if(!G({runtime:r,json:t.json,payload:u,conflictCount:c.conflicts.length})){if(c.removed.length>0){r.log(`Removed bindings:`);for(let e of c.removed)r.log(`- ${O(e)}`)}else r.log(`No bindings removed.`);if(c.missing.length>0){r.log(`Not found:`);for(let e of c.missing)r.log(`- ${O(e)}`)}if(c.conflicts.length>0){r.error(`Bindings are owned by another agent:`);for(let e of c.conflicts)r.error(`- ${O(e.binding)} (agent=${e.existingAgentId})`);r.exit(1)}}}async function q(e){try{return await R.stat(e),!0}catch{return!1}}async function de(i,u=e,m){let h=await B(u);if(!h)return;let g=i.workspace?.trim(),_=i.name?.trim(),v=m?.hasFlags===!0,y=!!(i.nonInteractive||v);if(y&&!g){u.error(`Non-interactive mode requires --workspace. Re-run without flags to use the wizard.`),u.exit(1);return}if(y){if(!_){u.error(`Agent name is required in non-interactive mode.`),u.exit(1);return}if(!g){u.error(`Non-interactive mode requires --workspace. Re-run without flags to use the wizard.`),u.exit(1);return}let e=l(_);if(e===`main`){u.error(`"${d}" is reserved. Choose another name.`),u.exit(1);return}if(e!==_&&u.log(`Normalized agent id to "${e}".`),P(c(h),e)>=0){u.error(`Agent "${e}" already exists.`),u.exit(1);return}let t=f(g),r=i.agentDir?.trim()?f(i.agentDir.trim()):a(h,e),o=i.model?.trim(),s=F(h,{agentId:e,name:_,workspace:t,agentDir:r,...o?{model:o}:{}}),m=D({agentId:e,specs:i.bind,config:s});if(m.errors.length>0){u.error(m.errors.join(`
4
4
  `)),u.exit(1);return}let v=m.bindings.length>0?k(s,m.bindings):{config:s,added:[],updated:[],skipped:[],conflicts:[]};await n(v.config),i.json||I(u),await C(t,i.json?z(u):u,{skipBootstrap:!!v.config.agents?.defaults?.skipBootstrap,agentId:e});let y={agentId:e,name:_,workspace:t,agentDir:r,model:o,bindings:{added:v.added.map(O),updated:v.updated.map(O),skipped:v.skipped.map(O),conflicts:v.conflicts.map(e=>`${O(e.binding)} (agent=${e.existingAgentId})`)}};i.json?u.log(JSON.stringify(y,null,2)):(u.log(`Agent: ${e}`),u.log(`Workspace: ${p(t)}`),u.log(`Agent dir: ${p(r)}`),o&&u.log(`Model: ${o}`),v.conflicts.length>0&&u.error([`Skipped bindings already claimed by another agent:`,...v.conflicts.map(e=>`- ${O(e.binding)} (agent=${e.existingAgentId})`)].join(`
@@ -7,4 +7,4 @@ import{p as e}from"./subsystem-BLbY429l.js";import"./paths-BjD3T_xq.js";import".
7
7
  `),`Routing`);await n(x),I(u),await C(v,u,{skipBootstrap:!!x.agents?.defaults?.skipBootstrap,agentId:p});let E={agentId:p,name:d,workspace:v,agentDir:y};i.json&&u.log(JSON.stringify(E,null,2)),await b.outro(`Agent "${p}" ready.`)}catch(e){if(e instanceof T){u.exit(1);return}throw e}}async function fe(t,r=e){let i=await B(r);if(!i)return;let s=t.id?.trim();if(!s){r.error(`Agent id is required.`),r.exit(1);return}let u=l(s);if(u!==s&&r.log(`Normalized agent id to "${u}".`),u===`main`){r.error(`"${d}" cannot be deleted.`),r.exit(1);return}if(P(c(i),u)<0){r.error(`Agent "${u}" not found.`),r.exit(1);return}if(!t.force){if(!process.stdin.isTTY){r.error(`Non-interactive session. Re-run with --force.`),r.exit(1);return}if(!await E().confirm({message:`Delete agent "${u}" and prune workspace/state?`,initialValue:!1})){r.log(`Cancelled.`);return}}let f=o(i,u),p=a(i,u),m=S(u),h=te(i,u);await n(h.config),t.json||I(r);let g=t.json?z(r):r;await w(f,g),await w(p,g),await w(m,g),t.json?r.log(JSON.stringify({agentId:u,workspace:f,agentDir:p,sessionsDir:m,removedBindings:h.removedBindings,removedAllow:h.removedAllow},null,2)):r.log(`Deleted agent: ${u}`)}const J=e=>L.resolve(f(e)),Y=e=>e?.trim()||void 0;async function pe(e){try{let t=x(await R.readFile(e,`utf-8`));return b(t)?t:null}catch{return null}}function me(e,t){let n=c(e),r=n.length>0?n.map(e=>l(e.id)):[s(e)],i=J(t);return r.filter(t=>J(o(e,t))===i)}async function he(t,r=e){let i=await B(r);if(!i)return;let a=Y(t.agent),o=Y(t.name),u=Y(t.emoji),d=Y(t.theme),f=Y(t.avatar),m=!!(o||u||d||f),h=Y(t.identityFile),g=Y(t.workspace),_=!!(t.fromIdentity||h||!m),v,y;h?(v=J(h),y=L.dirname(v)):g?y=J(g):(_||!a)&&(y=L.resolve(process.cwd()));let b=a?l(a):void 0;if(!b){if(!y){r.error(`Select an agent with --agent or provide a workspace via --workspace.`),r.exit(1);return}let e=me(i,y);if(e.length===0){r.error(`No agent workspace matches ${p(y)}. Pass --agent to target a specific agent.`),r.exit(1);return}if(e.length>1){r.error(`Multiple agents match ${p(y)}: ${e.join(`, `)}. Pass --agent to choose one.`),r.exit(1);return}b=e[0]}let x=null;if(_&&(v?x=await pe(v):y&&(x=M(y)),!x)){let e=v??(y?L.join(y,`IDENTITY.md`):`IDENTITY.md`);r.error(`No identity data found in ${p(e)}.`),r.exit(1);return}let S=x?.theme??x?.creature??x?.vibe??void 0,C={...o||x?.name?{name:o??x?.name}:{},...u||x?.emoji?{emoji:u??x?.emoji}:{},...d||S?{theme:d??S}:{},...f||x?.avatar?{avatar:f??x?.avatar}:{}};if(!C.name&&!C.emoji&&!C.theme&&!C.avatar){r.error(`No identity fields provided. Use --name/--emoji/--theme/--avatar or --from-identity.`),r.exit(1);return}let w=c(i),T=P(w,b),E=T>=0?w[T]:{id:b},D={...E.identity,...C},O={...E,identity:D},k=[...w];if(T>=0)k[T]=O;else{let e=l(s(i));k.length===0&&b!==e&&k.push({id:e}),k.push(O)}if(await n({...i,agents:{...i.agents,list:k}}),t.json){r.log(JSON.stringify({agentId:b,identity:D,workspace:y??null,identityFile:v??null},null,2));return}I(r),r.log(`Agent: ${b}`),D.name&&r.log(`Name: ${D.name}`),D.theme&&r.log(`Theme: ${D.theme}`),D.emoji&&r.log(`Emoji: ${D.emoji}`),D.avatar&&r.log(`Avatar: ${D.avatar}`),y&&r.log(`Workspace: ${p(y)}`)}function X(e,t){return`${e}:${t??`default`}`}function Z(e){return`${_(e.provider)?.meta.label??e.provider} ${e.name?.trim()?`${e.accountId} (${e.name.trim()})`:e.accountId}`}function ge(e){let t=[e.state];return e.enabled===!1&&e.state!==`disabled`&&t.push(`disabled`),t.join(`, `)}async function _e(e){let t=new Map;for(let n of h()){let r=n.config.listAccountIds(e);for(let i of r){let r=n.config.resolveAccount(e,i),a=n.config.describeAccount?.(r,e),o=n.config.isEnabled?n.config.isEnabled(r,e):typeof a?.enabled==`boolean`?a.enabled:r.enabled,s=n.config.isConfigured?await n.config.isConfigured(r,e):a?.configured,c=typeof o==`boolean`?o:!0,l=typeof s==`boolean`?s:!0,u=n.status?.resolveAccountState?.({account:r,cfg:e,configured:l,enabled:c})??(typeof a?.linked==`boolean`?a.linked?`linked`:`not linked`:l?`configured`:`not configured`),d=a?.name??r.name;t.set(X(n.id,i),{provider:n.id,accountId:i,name:d,state:u,enabled:o,configured:s})}}return t}function Q(e,t){let n=_(t);return n?m({plugin:n,cfg:e}):u}function ve(e,t){let n=_(e.provider);if(!n)return!!e.configured;if(n.meta.showConfigured===!1){let r=t[n.id];return!!e.configured||!!r}return!!e.configured}function $(e){return`${Z({provider:e.provider,accountId:e.accountId,name:e.name})}: ${ge(e)}`}function ye(e,t){if(t.length===0)return[];let n=new Map;for(let r of t){let t=g(r.match.channel);if(!t)continue;let i=r.match.accountId??Q(e,t),a=X(t,i);if(!n.has(a)){let e=Z({provider:t,accountId:i});n.set(a,e)}}return[...n.values()]}function be(e){let t=[...e.providerStatus.values()],n=[];if(e.bindings.length>0){let t=new Set;for(let r of e.bindings){let i=g(r.match.channel);if(!i)continue;let a=r.match.accountId??Q(e.cfg,i),o=X(i,a);if(t.has(o))continue;t.add(o);let s=e.providerStatus.get(o);s?n.push($(s)):n.push(`${Z({provider:i,accountId:a})}: unknown`)}return n}if(e.summaryIsDefault)for(let r of t)ve(r,e.cfg)&&n.push($(r));return n}function xe(e){let t=e.isDefault?` (default)`:``,n=e.name&&e.name!==e.id?`${e.id}${t} (${e.name})`:`${e.id}${t}`,r=[];e.identityEmoji&&r.push(e.identityEmoji),e.identityName&&r.push(e.identityName);let i=r.length>0?r.join(` `):null,a=e.identitySource===`identity`?`IDENTITY.md`:e.identitySource===`config`?`config`:null,o=[`- ${n}`];if(i&&o.push(` Identity: ${i}${a?` (${a})`:``}`),o.push(` Workspace: ${p(e.workspace)}`),o.push(` Agent dir: ${p(e.agentDir)}`),e.model&&o.push(` Model: ${e.model}`),o.push(` Routing rules: ${e.bindings}`),e.routes?.length&&o.push(` Routing: ${e.routes.join(`, `)}`),e.providers?.length){o.push(` Providers:`);for(let t of e.providers)o.push(` - ${t}`)}if(e.bindingDetails?.length){o.push(` Routing rules:`);for(let t of e.bindingDetails)o.push(` - ${t}`)}return o.join(`
8
8
  `)}async function Se(t,n=e){let r=await B(n);if(!r)return;let a=N(r),o=new Map;for(let e of v(r)){let t=l(e.agentId),n=o.get(t)??[];n.push(e),o.set(t,n)}if(t.bindings)for(let e of a){let t=o.get(e.id)??[];t.length>0&&(e.bindingDetails=t.map(e=>O(e)))}let s=await _e(r);for(let e of a){let t=o.get(e.id)??[],n=ye(r,t);n.length>0?e.routes=n:e.isDefault&&(e.routes=[`default (no explicit rules)`]);let i=be({summaryIsDefault:e.isDefault,cfg:r,bindings:t,providerStatus:s});i.length>0&&(e.providers=i)}if(t.json){n.log(JSON.stringify(a,null,2));return}let c=[`Agents:`,...a.map(xe)];c.push(`Routing rules map channel/account/peer to an agent. Use --bindings for full rules.`),c.push(`Channel status reflects local config/creds. For live health: ${i(`openclaw channels status --probe`)}.`),n.log(c.join(`
9
9
  `))}export{de as agentsAddCommand,le as agentsBindCommand,ce as agentsBindingsCommand,fe as agentsDeleteCommand,Se as agentsListCommand,he as agentsSetIdentityCommand,ue as agentsUnbindCommand};
10
- //# sourceMappingURL=agents-Bpp_F5In.js.map
10
+ //# sourceMappingURL=agents-D3Z05GqK.js.map
@@ -1,2 +1,2 @@
1
- import{a as e,d as t,f as n,n as r}from"./agent-scope-DAWJwFfl.js";import{c as i}from"./session-key-C7F_iqYg.js";import{x as a}from"./plugins-DNlgeTTc.js";import{F as o,I as s}from"./compact-Dg66DXx_.js";function c(e,t){let n=i(t);return e.findIndex(e=>i(e.id)===n)}function l(e,t){return r(e).find(e=>i(e.id)===i(t))?.name?.trim()||void 0}function u(e,t){let n=r(e).find(e=>i(e.id)===i(t));if(n?.model){if(typeof n.model==`string`&&n.model.trim())return n.model.trim();if(typeof n.model==`object`){let e=n.model.primary?.trim();if(e)return e}}let a=e.agents?.defaults?.model;return typeof a==`string`?a:a?.primary?.trim()||void 0}function d(e){let t=s(e);return t&&o(t)?t:null}function f(o){let s=i(n(o)),c=r(o),f=c.length>0?c.map(e=>i(e.id)):[s],p=new Map;for(let e of a(o)){let t=i(e.agentId);p.set(t,(p.get(t)??0)+1)}return f.filter((e,t)=>f.indexOf(e)===t).map(n=>{let r=t(o,n),a=d(r),f=c.find(e=>i(e.id)===n)?.identity,m=a?.name??f?.name?.trim(),h=a?.emoji??f?.emoji?.trim(),g=a?`identity`:f&&(m||h)?`config`:void 0;return{id:n,name:l(o,n),identityName:m,identityEmoji:h,identitySource:g,workspace:r,agentDir:e(o,n),model:u(o,n),bindings:p.get(n)??0,isDefault:n===s}})}function p(e,t){let a=i(t.agentId),o=t.name?.trim(),s=r(e),l=c(s,a),u={...l>=0?s[l]:{id:a},...o?{name:o}:{},...t.workspace?{workspace:t.workspace}:{},...t.agentDir?{agentDir:t.agentDir}:{},...t.model?{model:t.model}:{}},d=[...s];return l>=0?d[l]=u:(d.length===0&&a!==i(n(e))&&d.push({id:n(e)}),d.push(u)),{...e,agents:{...e.agents,list:d}}}function m(e,t){let n=i(t),a=r(e).filter(e=>i(e.id)!==n),o=a.length>0?a:void 0,s=e.bindings??[],c=s.filter(e=>i(e.agentId)!==n),l=e.tools?.agentToAgent?.allow??[],u=l.filter(e=>e!==n),d=e.agents?{...e.agents,list:o}:o?{list:o}:void 0,f=e.tools?.agentToAgent?{...e.tools,agentToAgent:{...e.tools.agentToAgent,allow:u.length>0?u:void 0}}:e.tools;return{config:{...e,agents:d,bindings:c.length>0?c:void 0,tools:f},removedBindings:s.length-c.length,removedAllow:l.length-u.length}}export{m as a,d as i,f as n,c as r,p as t};
2
- //# sourceMappingURL=agents.config-DfIJAGcd.js.map
1
+ import{a as e,d as t,f as n,n as r}from"./agent-scope-DAWJwFfl.js";import{c as i}from"./session-key-C7F_iqYg.js";import{x as a}from"./plugins-DNlgeTTc.js";import{F as o,I as s}from"./compact-BEeB6bwq.js";function c(e,t){let n=i(t);return e.findIndex(e=>i(e.id)===n)}function l(e,t){return r(e).find(e=>i(e.id)===i(t))?.name?.trim()||void 0}function u(e,t){let n=r(e).find(e=>i(e.id)===i(t));if(n?.model){if(typeof n.model==`string`&&n.model.trim())return n.model.trim();if(typeof n.model==`object`){let e=n.model.primary?.trim();if(e)return e}}let a=e.agents?.defaults?.model;return typeof a==`string`?a:a?.primary?.trim()||void 0}function d(e){let t=s(e);return t&&o(t)?t:null}function f(o){let s=i(n(o)),c=r(o),f=c.length>0?c.map(e=>i(e.id)):[s],p=new Map;for(let e of a(o)){let t=i(e.agentId);p.set(t,(p.get(t)??0)+1)}return f.filter((e,t)=>f.indexOf(e)===t).map(n=>{let r=t(o,n),a=d(r),f=c.find(e=>i(e.id)===n)?.identity,m=a?.name??f?.name?.trim(),h=a?.emoji??f?.emoji?.trim(),g=a?`identity`:f&&(m||h)?`config`:void 0;return{id:n,name:l(o,n),identityName:m,identityEmoji:h,identitySource:g,workspace:r,agentDir:e(o,n),model:u(o,n),bindings:p.get(n)??0,isDefault:n===s}})}function p(e,t){let a=i(t.agentId),o=t.name?.trim(),s=r(e),l=c(s,a),u={...l>=0?s[l]:{id:a},...o?{name:o}:{},...t.workspace?{workspace:t.workspace}:{},...t.agentDir?{agentDir:t.agentDir}:{},...t.model?{model:t.model}:{}},d=[...s];return l>=0?d[l]=u:(d.length===0&&a!==i(n(e))&&d.push({id:n(e)}),d.push(u)),{...e,agents:{...e.agents,list:d}}}function m(e,t){let n=i(t),a=r(e).filter(e=>i(e.id)!==n),o=a.length>0?a:void 0,s=e.bindings??[],c=s.filter(e=>i(e.agentId)!==n),l=e.tools?.agentToAgent?.allow??[],u=l.filter(e=>e!==n),d=e.agents?{...e.agents,list:o}:o?{list:o}:void 0,f=e.tools?.agentToAgent?{...e.tools,agentToAgent:{...e.tools.agentToAgent,allow:u.length>0?u:void 0}}:e.tools;return{config:{...e,agents:d,bindings:c.length>0?c:void 0,tools:f},removedBindings:s.length-c.length,removedAllow:l.length-u.length}}export{m as a,d as i,f as n,c as r,p as t};
2
+ //# sourceMappingURL=agents.config-BUQjISaN.js.map
@@ -1,2 +1,2 @@
1
- import{dn as e,un as t}from"./reply-l-Y47HP4.js";import{a as n,d as r,f as i,n as a}from"./agent-scope-DXZc3eNT.js";import{c as o}from"./session-key-D3P0tf5P.js";import{x as s}from"./plugins-CYLrFT4h.js";function c(e,t){let n=o(t);return e.findIndex(e=>o(e.id)===n)}function l(e,t){return a(e).find(e=>o(e.id)===o(t))?.name?.trim()||void 0}function u(e,t){let n=a(e).find(e=>o(e.id)===o(t));if(n?.model){if(typeof n.model==`string`&&n.model.trim())return n.model.trim();if(typeof n.model==`object`){let e=n.model.primary?.trim();if(e)return e}}let r=e.agents?.defaults?.model;return typeof r==`string`?r:r?.primary?.trim()||void 0}function d(n){let r=e(n);return r&&t(r)?r:null}function f(e){let t=o(i(e)),c=a(e),f=c.length>0?c.map(e=>o(e.id)):[t],p=new Map;for(let t of s(e)){let e=o(t.agentId);p.set(e,(p.get(e)??0)+1)}return f.filter((e,t)=>f.indexOf(e)===t).map(i=>{let a=r(e,i),s=d(a),f=c.find(e=>o(e.id)===i)?.identity,m=s?.name??f?.name?.trim(),h=s?.emoji??f?.emoji?.trim(),g=s?`identity`:f&&(m||h)?`config`:void 0;return{id:i,name:l(e,i),identityName:m,identityEmoji:h,identitySource:g,workspace:a,agentDir:n(e,i),model:u(e,i),bindings:p.get(i)??0,isDefault:i===t}})}function p(e,t){let n=o(t.agentId),r=t.name?.trim(),s=a(e),l=c(s,n),u={...l>=0?s[l]:{id:n},...r?{name:r}:{},...t.workspace?{workspace:t.workspace}:{},...t.agentDir?{agentDir:t.agentDir}:{},...t.model?{model:t.model}:{}},d=[...s];return l>=0?d[l]=u:(d.length===0&&n!==o(i(e))&&d.push({id:i(e)}),d.push(u)),{...e,agents:{...e.agents,list:d}}}function m(e,t){let n=o(t),r=a(e).filter(e=>o(e.id)!==n),i=r.length>0?r:void 0,s=e.bindings??[],c=s.filter(e=>o(e.agentId)!==n),l=e.tools?.agentToAgent?.allow??[],u=l.filter(e=>e!==n),d=e.agents?{...e.agents,list:i}:i?{list:i}:void 0,f=e.tools?.agentToAgent?{...e.tools,agentToAgent:{...e.tools.agentToAgent,allow:u.length>0?u:void 0}}:e.tools;return{config:{...e,agents:d,bindings:c.length>0?c:void 0,tools:f},removedBindings:s.length-c.length,removedAllow:l.length-u.length}}export{m as a,d as i,f as n,c as r,p as t};
2
- //# sourceMappingURL=agents.config-B6LRG9eP.js.map
1
+ import{dn as e,un as t}from"./reply-CjyZeZ-j.js";import{a as n,d as r,f as i,n as a}from"./agent-scope-DXZc3eNT.js";import{c as o}from"./session-key-D3P0tf5P.js";import{x as s}from"./plugins-CYLrFT4h.js";function c(e,t){let n=o(t);return e.findIndex(e=>o(e.id)===n)}function l(e,t){return a(e).find(e=>o(e.id)===o(t))?.name?.trim()||void 0}function u(e,t){let n=a(e).find(e=>o(e.id)===o(t));if(n?.model){if(typeof n.model==`string`&&n.model.trim())return n.model.trim();if(typeof n.model==`object`){let e=n.model.primary?.trim();if(e)return e}}let r=e.agents?.defaults?.model;return typeof r==`string`?r:r?.primary?.trim()||void 0}function d(n){let r=e(n);return r&&t(r)?r:null}function f(e){let t=o(i(e)),c=a(e),f=c.length>0?c.map(e=>o(e.id)):[t],p=new Map;for(let t of s(e)){let e=o(t.agentId);p.set(e,(p.get(e)??0)+1)}return f.filter((e,t)=>f.indexOf(e)===t).map(i=>{let a=r(e,i),s=d(a),f=c.find(e=>o(e.id)===i)?.identity,m=s?.name??f?.name?.trim(),h=s?.emoji??f?.emoji?.trim(),g=s?`identity`:f&&(m||h)?`config`:void 0;return{id:i,name:l(e,i),identityName:m,identityEmoji:h,identitySource:g,workspace:a,agentDir:n(e,i),model:u(e,i),bindings:p.get(i)??0,isDefault:i===t}})}function p(e,t){let n=o(t.agentId),r=t.name?.trim(),s=a(e),l=c(s,n),u={...l>=0?s[l]:{id:n},...r?{name:r}:{},...t.workspace?{workspace:t.workspace}:{},...t.agentDir?{agentDir:t.agentDir}:{},...t.model?{model:t.model}:{}},d=[...s];return l>=0?d[l]=u:(d.length===0&&n!==o(i(e))&&d.push({id:i(e)}),d.push(u)),{...e,agents:{...e.agents,list:d}}}function m(e,t){let n=o(t),r=a(e).filter(e=>o(e.id)!==n),i=r.length>0?r:void 0,s=e.bindings??[],c=s.filter(e=>o(e.agentId)!==n),l=e.tools?.agentToAgent?.allow??[],u=l.filter(e=>e!==n),d=e.agents?{...e.agents,list:i}:i?{list:i}:void 0,f=e.tools?.agentToAgent?{...e.tools,agentToAgent:{...e.tools.agentToAgent,allow:u.length>0?u:void 0}}:e.tools;return{config:{...e,agents:d,bindings:c.length>0?c:void 0,tools:f},removedBindings:s.length-c.length,removedAllow:l.length-u.length}}export{m as a,d as i,f as n,c as r,p as t};
2
+ //# sourceMappingURL=agents.config-BvxrGqOT.js.map
@@ -1,4 +1,4 @@
1
- import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{Al as t,Hl as n,Mc as r,Pl as i,Sc as a,Tc as o,Ul as s,Xc as c,ao as l,cl as u,fl as d,io as f,iu as p,no as m,r as h,ro as g,ru as _,ta as ee,yc as v}from"./auth-profiles-T8DuH3ax.js";import{F as y,a as te,d as ne,f as b,j as re}from"./agent-scope-DAWJwFfl.js";import{n as ie}from"./model-catalog-COVzoZD9.js";import{f as x}from"./onboard-helpers-PGl5bVPE.js";import{t as ae}from"./enable-BhD84GhD.js";import{a as S,c as oe,d as C,f as w,i as T,l as E,n as D,o as se,s as ce,t as O,u as le}from"./auth-choice.apply-helpers-B7S-PcH_.js";import{n as ue,t as k}from"./openai-codex-model-default-DuE2_wN7.js";import{$ as de,A as fe,At as pe,B as me,C as he,Ct as ge,D as _e,Dt as ve,E as ye,Et as be,F as xe,Ft as A,G as Se,H as Ce,I as we,It as Te,J as Ee,K as De,L as Oe,Lt as ke,M as Ae,Mt as j,N as je,Nt as M,O as Me,Ot as Ne,P as Pe,Pt as N,Q as Fe,R as Ie,Rt as P,S as Le,St as F,T as Re,Tt as ze,U as Be,V as Ve,W as He,X as Ue,Y as We,Z as Ge,_ as I,_t as L,a as R,at as z,b as Ke,bt as qe,c as Je,ct as Ye,d as Xe,dt as Ze,et as Qe,f as $e,ft as et,gt as tt,h as B,ht as nt,i as rt,it as V,j as it,jt as at,k as ot,kt as st,l as ct,lt,m as ut,mt as dt,n as H,nt as U,ot as ft,p as pt,pt as mt,q as ht,r as gt,rt as W,s as _t,st as vt,t as yt,tt as G,u as bt,ut as xt,v as St,vt as K,w as Ct,wt,x as Tt,xt as Et,y as Dt,yt as Ot,z as kt}from"./auth-token-kGltuM6S.js";import{n as q,t as J}from"./oauth-env-DAamJ1oz.js";import{a as At,c as jt,i as Mt,n as Nt,o as Y,r as Pt,s as Ft,t as It}from"./provider-auth-helpers-pBVCjBj9.js";import{a as X,i as Lt,n as Rt,o as zt,r as Bt,t as Z}from"./openai-model-default-DJObMvLJ.js";import{r as Vt,s as Ht}from"./model-picker-D3ZSpr0i.js";import{i as Ut,n as Wt}from"./ollama-setup-BMEKWyIE.js";import{randomBytes as Gt}from"node:crypto";import{createServer as Kt}from"node:http";const qt=`anthropic/claude-sonnet-4-6`;async function Jt(e){let t=S(e.opts?.secretInputMode);if(e.authChoice===`setup-token`||e.authChoice===`oauth`||e.authChoice===`token`){let n=e.config;await e.prompter.note(["Run `claude setup-token` in your terminal.",`Then paste the generated token below.`].join(`
1
+ import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{Al as t,Hl as n,Mc as r,Pl as i,Sc as a,Tc as o,Ul as s,Xc as c,ao as l,cl as u,fl as d,io as f,iu as p,no as m,r as h,ro as g,ru as _,ta as ee,yc as v}from"./auth-profiles-T8DuH3ax.js";import{F as y,a as te,d as ne,f as b,j as re}from"./agent-scope-DAWJwFfl.js";import{n as ie}from"./model-catalog-COVzoZD9.js";import{f as x}from"./onboard-helpers-PGl5bVPE.js";import{t as ae}from"./enable-BhD84GhD.js";import{a as S,c as oe,d as C,f as w,i as T,l as E,n as D,o as se,s as ce,t as O,u as le}from"./auth-choice.apply-helpers-B7S-PcH_.js";import{n as ue,t as k}from"./openai-codex-model-default-DuE2_wN7.js";import{$ as de,A as fe,At as pe,B as me,C as he,Ct as ge,D as _e,Dt as ve,E as ye,Et as be,F as xe,Ft as A,G as Se,H as Ce,I as we,It as Te,J as Ee,K as De,L as Oe,Lt as ke,M as Ae,Mt as j,N as je,Nt as M,O as Me,Ot as Ne,P as Pe,Pt as N,Q as Fe,R as Ie,Rt as P,S as Le,St as F,T as Re,Tt as ze,U as Be,V as Ve,W as He,X as Ue,Y as We,Z as Ge,_ as I,_t as L,a as R,at as z,b as Ke,bt as qe,c as Je,ct as Ye,d as Xe,dt as Ze,et as Qe,f as $e,ft as et,gt as tt,h as B,ht as nt,i as rt,it as V,j as it,jt as at,k as ot,kt as st,l as ct,lt,m as ut,mt as dt,n as H,nt as U,ot as ft,p as pt,pt as mt,q as ht,r as gt,rt as W,s as _t,st as vt,t as yt,tt as G,u as bt,ut as xt,v as St,vt as K,w as Ct,wt,x as Tt,xt as Et,y as Dt,yt as Ot,z as kt}from"./auth-token-kGltuM6S.js";import{n as q,t as J}from"./oauth-env-DAamJ1oz.js";import{a as At,c as jt,i as Mt,n as Nt,o as Y,r as Pt,s as Ft,t as It}from"./provider-auth-helpers-BzlcSA6U.js";import{a as X,i as Lt,n as Rt,o as zt,r as Bt,t as Z}from"./openai-model-default-DJObMvLJ.js";import{r as Vt,s as Ht}from"./model-picker-D3ZSpr0i.js";import{i as Ut,n as Wt}from"./ollama-setup-BMEKWyIE.js";import{randomBytes as Gt}from"node:crypto";import{createServer as Kt}from"node:http";const qt=`anthropic/claude-sonnet-4-6`;async function Jt(e){let t=S(e.opts?.secretInputMode);if(e.authChoice===`setup-token`||e.authChoice===`oauth`||e.authChoice===`token`){let n=e.config;await e.prompter.note(["Run `claude setup-token` in your terminal.",`Then paste the generated token below.`].join(`
2
2
  `),`Anthropic setup-token`);let r=await oe({prompter:e.prompter,explicitMode:t,copy:{modeMessage:`How do you want to provide this setup token?`,plaintextLabel:`Paste setup token now`,plaintextHint:`Stores the token directly in the auth profile`}}),i=``,o;if(r===`ref`){let t=await ce({provider:`anthropic-setup-token`,config:e.config,prompter:e.prompter,preferredEnvVar:`ANTHROPIC_SETUP_TOKEN`,copy:{sourceMessage:`Where is this Anthropic setup token stored?`,envVarPlaceholder:`ANTHROPIC_SETUP_TOKEN`}});i=t.resolvedValue.trim(),o=t.ref}else{let t=await e.prompter.text({message:`Paste Anthropic setup-token`,validate:e=>H(String(e??``))});i=String(t??``).trim()}let s=H(i);if(s)throw Error(s);let c=await e.prompter.text({message:`Token name (blank = default)`,placeholder:`default`}),l=`anthropic`,u=yt({provider:l,name:String(c??``)});return a({profileId:u,agentDir:e.agentDir,credential:{type:`token`,provider:l,token:i,...o?{tokenRef:o}:{}}}),n=B(n,{profileId:u,provider:l,mode:`token`}),e.setDefaultModel&&(n=q(n,qt)),{config:n}}if(e.authChoice===`apiKey`){if(e.opts?.tokenProvider&&e.opts.tokenProvider!==`anthropic`)return null;let n=e.config;return await T({token:e.opts?.token,tokenProvider:e.opts?.tokenProvider??`anthropic`,secretInputMode:t,config:n,expectedProviders:[`anthropic`],provider:`anthropic`,envLabel:`ANTHROPIC_API_KEY`,promptMessage:`Enter Anthropic API key`,normalize:C,validate:w,prompter:e.prompter,setCredential:async(t,n)=>vt(t,e.agentDir,{secretInputMode:n})}),n=B(n,{profileId:`anthropic:default`,provider:`anthropic`,mode:`api_key`}),e.setDefaultModel&&(n=q(n,qt)),{config:n}}return null}async function Yt(e){if(e.authChoice!==`huggingface-api-key`)return null;let t=e.config,r,i=O(e),a=S(e.opts?.secretInputMode),o=await T({token:e.opts?.token,tokenProvider:e.opts?.tokenProvider,secretInputMode:a,config:t,expectedProviders:[`huggingface`],provider:`huggingface`,envLabel:`Hugging Face token`,promptMessage:`Enter Hugging Face API key (HF token)`,normalize:C,validate:w,prompter:e.prompter,setCredential:async(t,n)=>Ze(t,e.agentDir,{secretInputMode:n}),noteMessage:[`Hugging Face Inference Providers offer OpenAI-compatible chat completions.`,`Create a token at: https://huggingface.co/settings/tokens (fine-grained, 'Make calls to Inference Providers').`].join(`
3
3
  `),noteTitle:`Hugging Face`});t=B(t,{profileId:`huggingface:default`,provider:`huggingface`,mode:`api_key`});let c=await n(o),l=[];for(let e of c){let t=`huggingface/${e.id}`,n=e.name??e.id;l.push({value:t,label:n}),l.push({value:`${t}:cheapest`,label:`${n} (cheapest)`}),l.push({value:`${t}:fastest`,label:`${n} (fastest)`})}let u=Qe;l.sort((e,t)=>e.value===u?-1:t.value===u?1:e.label.localeCompare(t.label,void 0,{sensitivity:`base`}));let d=l.length===0?u:l.length===1?l[0].value:await e.prompter.select({message:`Default Hugging Face model`,options:l,initialValue:l.some(e=>e.value===u)?u:l[0].value});s(d)&&await e.prompter.note(`Provider locked — router will choose backend by cost or speed.`,`Hugging Face`);let f=await E({config:t,setDefaultModel:e.setDefaultModel,defaultModel:d,applyDefaultConfig:e=>{let t=I(e),n=t.agents?.defaults?.model;return le({cfg:{...t,agents:{...t.agents,defaults:{...t.agents?.defaults,model:{...n&&typeof n==`object`&&`fallbacks`in n?{fallbacks:n.fallbacks}:{},primary:d}}}},modelRef:d})},applyProviderConfig:I,noteDefault:d,noteAgentModel:i,prompter:e.prompter});return t=f.config,r=f.agentModelOverride??r,{config:t,agentModelOverride:r}}async function Xt(e){let t=e.config,n,r=O(e),i=S(e.opts?.secretInputMode),a=o(e.agentDir,{allowKeychainPrompt:!1}),s=h({cfg:t,store:a,provider:`openrouter`}).find(e=>!!a.profiles[e]),c=s?a.profiles[s]:void 0,l=`openrouter:default`,u=`api_key`,d=!1;s&&c?.type&&(l=s,u=c.type===`oauth`?`oauth`:c.type===`token`?`token`:`api_key`,d=!0),!d&&e.opts?.token&&e.opts?.tokenProvider===`openrouter`&&(await F(C(e.opts.token),e.agentDir,{secretInputMode:i}),d=!0),d||=(await T({token:e.opts?.token,tokenProvider:e.opts?.tokenProvider,secretInputMode:i,config:t,expectedProviders:[`openrouter`],provider:`openrouter`,envLabel:`OPENROUTER_API_KEY`,promptMessage:`Enter OpenRouter API key`,normalize:C,validate:w,prompter:e.prompter,setCredential:async(t,n)=>F(t,e.agentDir,{secretInputMode:n})}),!0),d&&(t=B(t,{profileId:l,provider:`openrouter`,mode:u}));let f=await E({config:t,setDefaultModel:e.setDefaultModel,defaultModel:U,applyDefaultConfig:Ae,applyProviderConfig:je,noteDefault:U,noteAgentModel:r,prompter:e.prompter});return t=f.config,n=f.agentModelOverride??n,{config:t,agentModelOverride:n}}const Zt=`opencode/claude-opus-4-6`,Qt={openrouter:`openrouter-api-key`,litellm:`litellm-api-key`,"vercel-ai-gateway":`ai-gateway-api-key`,"cloudflare-ai-gateway":`cloudflare-ai-gateway-api-key`,moonshot:`moonshot-api-key`,"kimi-code":`kimi-code-api-key`,"kimi-coding":`kimi-code-api-key`,google:`gemini-api-key`,zai:`zai-api-key`,xiaomi:`xiaomi-api-key`,synthetic:`synthetic-api-key`,venice:`venice-api-key`,together:`together-api-key`,huggingface:`huggingface-api-key`,mistral:`mistral-api-key`,opencode:`opencode-zen`,"opencode-go":`opencode-go`,kilocode:`kilocode-api-key`,qianfan:`qianfan-api-key`},$t={"zai-coding-global":`coding-global`,"zai-coding-cn":`coding-cn`,"zai-global":`global`,"zai-cn":`cn`},en={"ai-gateway-api-key":{provider:`vercel-ai-gateway`,profileId:`vercel-ai-gateway:default`,expectedProviders:[`vercel-ai-gateway`],envLabel:`AI_GATEWAY_API_KEY`,promptMessage:`Enter Vercel AI Gateway API key`,setCredential:ve,defaultModel:V,applyDefaultConfig:Fe,applyProviderConfig:de,noteDefault:V},"moonshot-api-key":{provider:`moonshot`,profileId:`moonshot:default`,expectedProviders:[`moonshot`],envLabel:`MOONSHOT_API_KEY`,promptMessage:`Enter Moonshot API key`,setCredential:K,defaultModel:Te,applyDefaultConfig:Me,applyProviderConfig:fe},"moonshot-api-key-cn":{provider:`moonshot`,profileId:`moonshot:default`,expectedProviders:[`moonshot`],envLabel:`MOONSHOT_API_KEY`,promptMessage:`Enter Moonshot API key (.cn)`,setCredential:K,defaultModel:Te,applyDefaultConfig:ot,applyProviderConfig:it},"kimi-code-api-key":{provider:`kimi-coding`,profileId:`kimi-coding:default`,expectedProviders:[`kimi-code`,`kimi-coding`],envLabel:`KIMI_API_KEY`,promptMessage:`Enter Kimi Coding API key`,setCredential:mt,defaultModel:M,applyDefaultConfig:Ke,applyProviderConfig:Tt,noteDefault:M,noteMessage:[`Kimi Coding uses a dedicated endpoint and API key.`,`Get your API key at: https://www.kimi.com/code/en`].join(`
4
4
  `),noteTitle:`Kimi Coding`},"xiaomi-api-key":{provider:`xiaomi`,profileId:`xiaomi:default`,expectedProviders:[`xiaomi`],envLabel:`XIAOMI_API_KEY`,promptMessage:`Enter Xiaomi API key`,setCredential:pe,defaultModel:z,applyDefaultConfig:He,applyProviderConfig:Se,noteDefault:z},"mistral-api-key":{provider:`mistral`,profileId:`mistral:default`,expectedProviders:[`mistral`],envLabel:`MISTRAL_API_KEY`,promptMessage:`Enter Mistral API key`,setCredential:tt,defaultModel:N,applyDefaultConfig:Le,applyProviderConfig:he,noteDefault:N},"venice-api-key":{provider:`venice`,profileId:`venice:default`,expectedProviders:[`venice`],envLabel:`VENICE_API_KEY`,promptMessage:`Enter Venice AI API key`,setCredential:be,defaultModel:i,applyDefaultConfig:me,applyProviderConfig:Ve,noteDefault:i,noteMessage:[`Venice AI provides privacy-focused inference with uncensored models.`,`Get your API key at: https://venice.ai/settings/api`,`Supports 'private' (fully private) and 'anonymized' (proxy) modes.`].join(`
@@ -18,4 +18,4 @@ Default proxy runs on http://localhost:4000`,noteTitle:`LiteLLM`}),!0),d&&(t=B(t
18
18
  `),`Chutes OAuth`);let s=e.prompter.progress(`Starting OAuth flow…`);try{let{onAuth:c,onPrompt:l}=Y({isRemote:n,prompter:e.prompter,runtime:e.runtime,spin:s,openUrl:x,localBrowserMessage:`Complete sign-in in browser…`}),u=await fn({app:{clientId:a,clientSecret:o,redirectUri:r,scopes:i.split(/\s+/).filter(Boolean)},manual:n,onAuth:c,onPrompt:l,onProgress:e=>s.update(e)});s.stop(`Chutes OAuth complete`);let d=await j(`chutes`,u,e.agentDir);t=B(t,{profileId:d,provider:`chutes`,mode:`oauth`})}catch(t){s.stop(`Chutes OAuth failed`),e.runtime.error(String(t)),await e.prompter.note([`Trouble with OAuth?`,`Verify CHUTES_CLIENT_ID (and CHUTES_CLIENT_SECRET if required).`,`Verify the OAuth app redirect URI includes: ${r}`,`Chutes docs: https://chutes.ai/docs/sign-in-with-chutes/overview`].join(`
19
19
  `),`OAuth help`)}return{config:t}}return null}async function mn(e){if(e.authChoice!==`ollama`)return null;let{config:t,defaultModelId:n}=await Ut({cfg:e.config,prompter:e.prompter,agentDir:e.agentDir}),r=`ollama/${n}`,i=q(t,r);return e.setDefaultModel?(await Wt({config:i,prompter:e.prompter}),{config:i}):{config:t,agentModelOverride:r}}async function hn(e){let t=S(e.opts?.secretInputMode),n=O(e),r=e.authChoice;if(r===`apiKey`&&e.opts?.tokenProvider===`openai`&&(r=`openai-api-key`),r===`openai-api-key`){let r=e.config,i;return await T({token:e.opts?.token,tokenProvider:e.opts?.tokenProvider,secretInputMode:t,config:r,expectedProviders:[`openai`],provider:`openai`,envLabel:`OPENAI_API_KEY`,promptMessage:`Enter OpenAI API key`,normalize:C,validate:w,prompter:e.prompter,setCredential:async(t,n)=>Ot(t,e.agentDir,{secretInputMode:n})}),r=B(r,{profileId:`openai:default`,provider:`openai`,mode:`api_key`}),await(async()=>{let t=await E({config:r,setDefaultModel:e.setDefaultModel,defaultModel:Z,applyDefaultConfig:Rt,applyProviderConfig:Bt,noteDefault:Z,noteAgentModel:n,prompter:e.prompter});return r=t.config,i=t.agentModelOverride??i,{config:r,agentModelOverride:i}})()}if(e.authChoice===`openai-codex`){let t=e.config,r,i;try{i=await At({prompter:e.prompter,runtime:e.runtime,isRemote:J(),openUrl:async e=>{await x(e)},localBrowserMessage:`Complete sign-in in browser…`})}catch{return{config:t,agentModelOverride:r}}if(i){let a=await j(`openai-codex`,i,e.agentDir,{syncSiblingAgents:!0});if(t=B(t,{profileId:a,provider:`openai-codex`,mode:`oauth`}),e.setDefaultModel){let n=ue(t);t=n.next,n.changed&&await e.prompter.note(`Default model set to ${k}`,`Model configured`)}else r=k,await n(k)}return{config:t,agentModelOverride:r}}return null}async function gn(e){return await Q(e,{authChoice:`qwen-portal`,pluginId:`qwen-portal-auth`,providerId:`qwen-portal`,methodId:`device`,label:`Qwen`})}function _n(e,t){let n=e.agents?.defaults?.model,r=n&&typeof n==`object`&&`fallbacks`in n?n.fallbacks:void 0;return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,model:{...r?{fallbacks:r}:void 0,primary:t}}}}}async function vn(e){if(e.authChoice!==`vllm`)return null;let{config:t,modelRef:n}=await Ht({cfg:e.config,prompter:e.prompter,agentDir:e.agentDir});return e.setDefaultModel?(await e.prompter.note(`Default model set to ${n}`,`Model configured`),{config:_n(t,n)}):{config:t,agentModelOverride:n}}const yn=`volcengine-plan/ark-code-latest`;async function bn(e){if(e.authChoice!==`volcengine-api-key`)return null;let t=S(e.opts?.secretInputMode);return await T({token:e.opts?.volcengineApiKey,tokenProvider:`volcengine`,secretInputMode:t,config:e.config,expectedProviders:[`volcengine`],provider:`volcengine`,envLabel:`VOLCANO_ENGINE_API_KEY`,promptMessage:`Enter Volcano Engine API key`,normalize:C,validate:w,prompter:e.prompter,setCredential:async(t,n)=>Ne(t,e.agentDir,{secretInputMode:n})}),{config:Vt(B(e.config,{profileId:`volcengine:default`,provider:`volcengine`,mode:`api_key`}),yn),agentModelOverride:yn}}async function xn(e){if(e.authChoice!==`xai-api-key`)return null;let t=e.config,n,r=O(e),i=S(e.opts?.secretInputMode);await T({token:e.opts?.xaiApiKey,tokenProvider:`xai`,secretInputMode:i,config:t,expectedProviders:[`xai`],provider:`xai`,envLabel:`XAI_API_KEY`,promptMessage:`Enter xAI API key`,normalize:C,validate:w,prompter:e.prompter,setCredential:async(t,n)=>st(t,e.agentDir,{secretInputMode:n})}),t=B(t,{profileId:`xai:default`,provider:`xai`,mode:`api_key`});{let i=await E({config:t,setDefaultModel:e.setDefaultModel,defaultModel:P,applyDefaultConfig:Ce,applyProviderConfig:Be,noteDefault:P,noteAgentModel:r,prompter:e.prompter});t=i.config,n=i.agentModelOverride??n}return{config:t,agentModelOverride:n}}async function Sn(e){let t=[Jt,vn,mn,hn,pn,tn,cn,on,sn,an,gn,xn,bn,rn];for(let n of t){let t=await n(e);if(t)return t}return{config:e.config}}async function $(e,t,n){let r=c({cfg:e,agentId:n?.agentId}),i=[],a=await ie({config:e,useCache:!1});a.length>0&&(a.some(e=>e.provider===r.provider&&e.id===r.model)||i.push(`Model not found: ${r.provider}/${r.model}. Update agents.defaults.model or run /models list.`));let s=o(n?.agentDir),l=v(s,r.provider).length>0,f=d(r.provider),p=u(e,r.provider);!l&&!f&&!p&&i.push(`No auth configured for provider "${r.provider}". The agent may fail until credentials are added.`),r.provider===`openai`&&v(s,`openai-codex`).length>0&&i.push(`Detected OpenAI Codex OAuth. Consider setting agents.defaults.model to ${k}.`),i.length>0&&await t.note(i.join(`
20
20
  `),`Model check`)}const Cn={oauth:`anthropic`,"setup-token":`anthropic`,"claude-cli":`anthropic`,token:`anthropic`,apiKey:`anthropic`,vllm:`vllm`,ollama:`ollama`,"openai-codex":`openai-codex`,"codex-cli":`openai-codex`,chutes:`chutes`,"openai-api-key":`openai`,"openrouter-api-key":`openrouter`,"kilocode-api-key":`kilocode`,"ai-gateway-api-key":`vercel-ai-gateway`,"cloudflare-ai-gateway-api-key":`cloudflare-ai-gateway`,"moonshot-api-key":`moonshot`,"moonshot-api-key-cn":`moonshot`,"kimi-code-api-key":`kimi-coding`,"gemini-api-key":`google`,"google-gemini-cli":`google-gemini-cli`,"mistral-api-key":`mistral`,"zai-api-key":`zai`,"zai-coding-global":`zai`,"zai-coding-cn":`zai`,"zai-global":`zai`,"zai-cn":`zai`,"xiaomi-api-key":`xiaomi`,"synthetic-api-key":`synthetic`,"venice-api-key":`venice`,"together-api-key":`together`,"huggingface-api-key":`huggingface`,"github-copilot":`github-copilot`,"copilot-proxy":`copilot-proxy`,"minimax-cloud":`minimax`,"minimax-api":`minimax`,"minimax-api-key-cn":`minimax-cn`,"minimax-api-lightning":`minimax`,minimax:`lmstudio`,"opencode-zen":`opencode`,"opencode-go":`opencode-go`,"xai-api-key":`xai`,"litellm-api-key":`litellm`,"qwen-portal":`qwen-portal`,"volcengine-api-key":`volcengine`,"byteplus-api-key":`byteplus`,"minimax-portal":`minimax-portal`,"qianfan-api-key":`qianfan`,"custom-api-key":`custom`};function wn(e){return Cn[e]}var Tn=e({applyAuthChoice:()=>Sn,resolvePreferredProviderForAuthChoice:()=>wn,warnIfModelConfigLooksOff:()=>$});export{Sn as i,wn as n,$ as r,Tn as t};
21
- //# sourceMappingURL=auth-choice-DvTApGhx.js.map
21
+ //# sourceMappingURL=auth-choice-CYGzLW73.js.map
@@ -1,4 +1,4 @@
1
- import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{K as t,Kl as n,M as r,O as i,Tt as a,Ul as o,X as s,Yl as c,at as l,bs as u,bt as d,g as f,go as p,it as m,nu as h,vs as ee,xs as te,ys as ne,yt as g}from"./model-selection-BlC_rXAN.js";import{F as _,a as re,d as ie,f as v,j as ae}from"./agent-scope-DXZc3eNT.js";import{n as oe}from"./model-catalog-C1kpjR75.js";import{f as y}from"./onboard-helpers-zwybUJWu.js";import{t as se}from"./enable-Ccf9wSM8.js";import{a as b,c as ce,d as x,f as S,i as C,l as w,n as T,o as le,s as ue,t as E,u as de}from"./auth-choice.apply-helpers-gaL-oSft.js";import{n as fe,t as D}from"./openai-codex-model-default-yVfRw-Mm.js";import{$ as pe,A as me,At as he,B as ge,C as _e,Ct as ve,D as ye,Dt as be,E as xe,Et as Se,F as Ce,Ft as O,G as we,H as Te,I as Ee,It as k,J as De,K as Oe,L as ke,Lt as A,M as Ae,Mt as j,N as je,Nt as M,O as Me,Ot as Ne,P as Pe,Pt as N,Q as Fe,R as Ie,Rt as P,S as Le,St as F,T as Re,Tt as ze,U as Be,V as Ve,W as He,X as Ue,Y as We,Z as Ge,_ as I,_t as L,a as R,at as z,b as Ke,bt as qe,c as Je,ct as Ye,d as Xe,dt as Ze,et as Qe,f as $e,ft as et,gt as tt,h as B,ht as nt,i as rt,it as V,j as it,jt as at,k as ot,kt as st,l as ct,lt,m as ut,mt as dt,n as H,nt as U,ot as ft,p as pt,pt as mt,q as ht,r as gt,rt as W,s as _t,st as vt,t as yt,tt as bt,u as xt,ut as St,v as Ct,vt as G,w as wt,wt as Tt,x as Et,xt as Dt,y as Ot,yt as kt,z as At}from"./auth-token-9OTF1FmL.js";import{n as K,t as q}from"./oauth-env-DSLBTWb1.js";import{a as jt,c as Mt,i as Nt,n as Pt,o as J,r as Ft,s as It,t as Lt}from"./provider-auth-helpers-1lU43eTW.js";import{a as Y,i as Rt,n as zt,o as Bt,r as Vt,t as X}from"./openai-model-default-Bl8MHPb6.js";import{r as Z,s as Ht}from"./model-picker-bZNuI66U.js";import{i as Ut,n as Wt}from"./ollama-setup-DlwS6Gl-.js";import{randomBytes as Gt}from"node:crypto";import{createServer as Kt}from"node:http";const qt=`anthropic/claude-sonnet-4-6`;async function Jt(e){let t=b(e.opts?.secretInputMode);if(e.authChoice===`setup-token`||e.authChoice===`oauth`||e.authChoice===`token`){let r=e.config;await e.prompter.note(["Run `claude setup-token` in your terminal.",`Then paste the generated token below.`].join(`
1
+ import{t as e}from"./rolldown-runtime-CNxR59P3.js";import{K as t,Kl as n,M as r,O as i,Tt as a,Ul as o,X as s,Yl as c,at as l,bs as u,bt as d,g as f,go as p,it as m,nu as h,vs as ee,xs as te,ys as ne,yt as g}from"./model-selection-BlC_rXAN.js";import{F as _,a as re,d as ie,f as v,j as ae}from"./agent-scope-DXZc3eNT.js";import{n as oe}from"./model-catalog-C1kpjR75.js";import{f as y}from"./onboard-helpers-zwybUJWu.js";import{t as se}from"./enable-Ccf9wSM8.js";import{a as b,c as ce,d as x,f as S,i as C,l as w,n as T,o as le,s as ue,t as E,u as de}from"./auth-choice.apply-helpers-gaL-oSft.js";import{n as fe,t as D}from"./openai-codex-model-default-yVfRw-Mm.js";import{$ as pe,A as me,At as he,B as ge,C as _e,Ct as ve,D as ye,Dt as be,E as xe,Et as Se,F as Ce,Ft as O,G as we,H as Te,I as Ee,It as k,J as De,K as Oe,L as ke,Lt as A,M as Ae,Mt as j,N as je,Nt as M,O as Me,Ot as Ne,P as Pe,Pt as N,Q as Fe,R as Ie,Rt as P,S as Le,St as F,T as Re,Tt as ze,U as Be,V as Ve,W as He,X as Ue,Y as We,Z as Ge,_ as I,_t as L,a as R,at as z,b as Ke,bt as qe,c as Je,ct as Ye,d as Xe,dt as Ze,et as Qe,f as $e,ft as et,gt as tt,h as B,ht as nt,i as rt,it as V,j as it,jt as at,k as ot,kt as st,l as ct,lt,m as ut,mt as dt,n as H,nt as U,ot as ft,p as pt,pt as mt,q as ht,r as gt,rt as W,s as _t,st as vt,t as yt,tt as bt,u as xt,ut as St,v as Ct,vt as G,w as wt,wt as Tt,x as Et,xt as Dt,y as Ot,yt as kt,z as At}from"./auth-token-9OTF1FmL.js";import{n as K,t as q}from"./oauth-env-DSLBTWb1.js";import{a as jt,c as Mt,i as Nt,n as Pt,o as J,r as Ft,s as It,t as Lt}from"./provider-auth-helpers-CDIiLD1m.js";import{a as Y,i as Rt,n as zt,o as Bt,r as Vt,t as X}from"./openai-model-default-Bl8MHPb6.js";import{r as Z,s as Ht}from"./model-picker-bZNuI66U.js";import{i as Ut,n as Wt}from"./ollama-setup-DlwS6Gl-.js";import{randomBytes as Gt}from"node:crypto";import{createServer as Kt}from"node:http";const qt=`anthropic/claude-sonnet-4-6`;async function Jt(e){let t=b(e.opts?.secretInputMode);if(e.authChoice===`setup-token`||e.authChoice===`oauth`||e.authChoice===`token`){let r=e.config;await e.prompter.note(["Run `claude setup-token` in your terminal.",`Then paste the generated token below.`].join(`
2
2
  `),`Anthropic setup-token`);let i=await ce({prompter:e.prompter,explicitMode:t,copy:{modeMessage:`How do you want to provide this setup token?`,plaintextLabel:`Paste setup token now`,plaintextHint:`Stores the token directly in the auth profile`}}),a=``,o;if(i===`ref`){let t=await ue({provider:`anthropic-setup-token`,config:e.config,prompter:e.prompter,preferredEnvVar:`ANTHROPIC_SETUP_TOKEN`,copy:{sourceMessage:`Where is this Anthropic setup token stored?`,envVarPlaceholder:`ANTHROPIC_SETUP_TOKEN`}});a=t.resolvedValue.trim(),o=t.ref}else{let t=await e.prompter.text({message:`Paste Anthropic setup-token`,validate:e=>H(String(e??``))});a=String(t??``).trim()}let s=H(a);if(s)throw Error(s);let c=await e.prompter.text({message:`Token name (blank = default)`,placeholder:`default`}),l=`anthropic`,u=yt({provider:l,name:String(c??``)});return n({profileId:u,agentDir:e.agentDir,credential:{type:`token`,provider:l,token:a,...o?{tokenRef:o}:{}}}),r=B(r,{profileId:u,provider:l,mode:`token`}),e.setDefaultModel&&(r=K(r,qt)),{config:r}}if(e.authChoice===`apiKey`){if(e.opts?.tokenProvider&&e.opts.tokenProvider!==`anthropic`)return null;let n=e.config;return await C({token:e.opts?.token,tokenProvider:e.opts?.tokenProvider??`anthropic`,secretInputMode:t,config:n,expectedProviders:[`anthropic`],provider:`anthropic`,envLabel:`ANTHROPIC_API_KEY`,promptMessage:`Enter Anthropic API key`,normalize:x,validate:S,prompter:e.prompter,setCredential:async(t,n)=>vt(t,e.agentDir,{secretInputMode:n})}),n=B(n,{profileId:`anthropic:default`,provider:`anthropic`,mode:`api_key`}),e.setDefaultModel&&(n=K(n,qt)),{config:n}}return null}async function Yt(e){if(e.authChoice!==`huggingface-api-key`)return null;let t=e.config,n,r=E(e),i=b(e.opts?.secretInputMode),a=await C({token:e.opts?.token,tokenProvider:e.opts?.tokenProvider,secretInputMode:i,config:t,expectedProviders:[`huggingface`],provider:`huggingface`,envLabel:`Hugging Face token`,promptMessage:`Enter Hugging Face API key (HF token)`,normalize:x,validate:S,prompter:e.prompter,setCredential:async(t,n)=>Ze(t,e.agentDir,{secretInputMode:n}),noteMessage:[`Hugging Face Inference Providers offer OpenAI-compatible chat completions.`,`Create a token at: https://huggingface.co/settings/tokens (fine-grained, 'Make calls to Inference Providers').`].join(`
3
3
  `),noteTitle:`Hugging Face`});t=B(t,{profileId:`huggingface:default`,provider:`huggingface`,mode:`api_key`});let o=await m(a),s=[];for(let e of o){let t=`huggingface/${e.id}`,n=e.name??e.id;s.push({value:t,label:n}),s.push({value:`${t}:cheapest`,label:`${n} (cheapest)`}),s.push({value:`${t}:fastest`,label:`${n} (fastest)`})}let c=Qe;s.sort((e,t)=>e.value===c?-1:t.value===c?1:e.label.localeCompare(t.label,void 0,{sensitivity:`base`}));let u=s.length===0?c:s.length===1?s[0].value:await e.prompter.select({message:`Default Hugging Face model`,options:s,initialValue:s.some(e=>e.value===c)?c:s[0].value});l(u)&&await e.prompter.note(`Provider locked — router will choose backend by cost or speed.`,`Hugging Face`);let d=await w({config:t,setDefaultModel:e.setDefaultModel,defaultModel:u,applyDefaultConfig:e=>{let t=I(e),n=t.agents?.defaults?.model;return de({cfg:{...t,agents:{...t.agents,defaults:{...t.agents?.defaults,model:{...n&&typeof n==`object`&&`fallbacks`in n?{fallbacks:n.fallbacks}:{},primary:u}}}},modelRef:u})},applyProviderConfig:I,noteDefault:u,noteAgentModel:r,prompter:e.prompter});return t=d.config,n=d.agentModelOverride??n,{config:t,agentModelOverride:n}}async function Xt(e){let t=e.config,n,r=E(e),i=b(e.opts?.secretInputMode),o=c(e.agentDir,{allowKeychainPrompt:!1}),s=a({cfg:t,store:o,provider:`openrouter`}).find(e=>!!o.profiles[e]),l=s?o.profiles[s]:void 0,u=`openrouter:default`,d=`api_key`,f=!1;s&&l?.type&&(u=s,d=l.type===`oauth`?`oauth`:l.type===`token`?`token`:`api_key`,f=!0),!f&&e.opts?.token&&e.opts?.tokenProvider===`openrouter`&&(await F(x(e.opts.token),e.agentDir,{secretInputMode:i}),f=!0),f||=(await C({token:e.opts?.token,tokenProvider:e.opts?.tokenProvider,secretInputMode:i,config:t,expectedProviders:[`openrouter`],provider:`openrouter`,envLabel:`OPENROUTER_API_KEY`,promptMessage:`Enter OpenRouter API key`,normalize:x,validate:S,prompter:e.prompter,setCredential:async(t,n)=>F(t,e.agentDir,{secretInputMode:n})}),!0),f&&(t=B(t,{profileId:u,provider:`openrouter`,mode:d}));let p=await w({config:t,setDefaultModel:e.setDefaultModel,defaultModel:U,applyDefaultConfig:Ae,applyProviderConfig:je,noteDefault:U,noteAgentModel:r,prompter:e.prompter});return t=p.config,n=p.agentModelOverride??n,{config:t,agentModelOverride:n}}const Zt=`opencode/claude-opus-4-6`,Qt={openrouter:`openrouter-api-key`,litellm:`litellm-api-key`,"vercel-ai-gateway":`ai-gateway-api-key`,"cloudflare-ai-gateway":`cloudflare-ai-gateway-api-key`,moonshot:`moonshot-api-key`,"kimi-code":`kimi-code-api-key`,"kimi-coding":`kimi-code-api-key`,google:`gemini-api-key`,zai:`zai-api-key`,xiaomi:`xiaomi-api-key`,synthetic:`synthetic-api-key`,venice:`venice-api-key`,together:`together-api-key`,huggingface:`huggingface-api-key`,mistral:`mistral-api-key`,opencode:`opencode-zen`,"opencode-go":`opencode-go`,kilocode:`kilocode-api-key`,qianfan:`qianfan-api-key`},$t={"zai-coding-global":`coding-global`,"zai-coding-cn":`coding-cn`,"zai-global":`global`,"zai-cn":`cn`},en={"ai-gateway-api-key":{provider:`vercel-ai-gateway`,profileId:`vercel-ai-gateway:default`,expectedProviders:[`vercel-ai-gateway`],envLabel:`AI_GATEWAY_API_KEY`,promptMessage:`Enter Vercel AI Gateway API key`,setCredential:be,defaultModel:V,applyDefaultConfig:Fe,applyProviderConfig:pe,noteDefault:V},"moonshot-api-key":{provider:`moonshot`,profileId:`moonshot:default`,expectedProviders:[`moonshot`],envLabel:`MOONSHOT_API_KEY`,promptMessage:`Enter Moonshot API key`,setCredential:G,defaultModel:k,applyDefaultConfig:Me,applyProviderConfig:me},"moonshot-api-key-cn":{provider:`moonshot`,profileId:`moonshot:default`,expectedProviders:[`moonshot`],envLabel:`MOONSHOT_API_KEY`,promptMessage:`Enter Moonshot API key (.cn)`,setCredential:G,defaultModel:k,applyDefaultConfig:ot,applyProviderConfig:it},"kimi-code-api-key":{provider:`kimi-coding`,profileId:`kimi-coding:default`,expectedProviders:[`kimi-code`,`kimi-coding`],envLabel:`KIMI_API_KEY`,promptMessage:`Enter Kimi Coding API key`,setCredential:mt,defaultModel:M,applyDefaultConfig:Ke,applyProviderConfig:Et,noteDefault:M,noteMessage:[`Kimi Coding uses a dedicated endpoint and API key.`,`Get your API key at: https://www.kimi.com/code/en`].join(`
4
4
  `),noteTitle:`Kimi Coding`},"xiaomi-api-key":{provider:`xiaomi`,profileId:`xiaomi:default`,expectedProviders:[`xiaomi`],envLabel:`XIAOMI_API_KEY`,promptMessage:`Enter Xiaomi API key`,setCredential:he,defaultModel:z,applyDefaultConfig:He,applyProviderConfig:we,noteDefault:z},"mistral-api-key":{provider:`mistral`,profileId:`mistral:default`,expectedProviders:[`mistral`],envLabel:`MISTRAL_API_KEY`,promptMessage:`Enter Mistral API key`,setCredential:tt,defaultModel:N,applyDefaultConfig:Le,applyProviderConfig:_e,noteDefault:N},"venice-api-key":{provider:`venice`,profileId:`venice:default`,expectedProviders:[`venice`],envLabel:`VENICE_API_KEY`,promptMessage:`Enter Venice AI API key`,setCredential:Se,defaultModel:s,applyDefaultConfig:ge,applyProviderConfig:Ve,noteDefault:s,noteMessage:[`Venice AI provides privacy-focused inference with uncensored models.`,`Get your API key at: https://venice.ai/settings/api`,`Supports 'private' (fully private) and 'anonymized' (proxy) modes.`].join(`
@@ -18,4 +18,4 @@ Default proxy runs on http://localhost:4000`,noteTitle:`LiteLLM`}),!0),f&&(t=B(t
18
18
  `),`Chutes OAuth`);let s=e.prompter.progress(`Starting OAuth flow…`);try{let{onAuth:c,onPrompt:l}=J({isRemote:n,prompter:e.prompter,runtime:e.runtime,spin:s,openUrl:y,localBrowserMessage:`Complete sign-in in browser…`}),u=await fn({app:{clientId:a,clientSecret:o,redirectUri:r,scopes:i.split(/\s+/).filter(Boolean)},manual:n,onAuth:c,onPrompt:l,onProgress:e=>s.update(e)});s.stop(`Chutes OAuth complete`);let d=await j(`chutes`,u,e.agentDir);t=B(t,{profileId:d,provider:`chutes`,mode:`oauth`})}catch(t){s.stop(`Chutes OAuth failed`),e.runtime.error(String(t)),await e.prompter.note([`Trouble with OAuth?`,`Verify CHUTES_CLIENT_ID (and CHUTES_CLIENT_SECRET if required).`,`Verify the OAuth app redirect URI includes: ${r}`,`Chutes docs: https://chutes.ai/docs/sign-in-with-chutes/overview`].join(`
19
19
  `),`OAuth help`)}return{config:t}}return null}async function mn(e){if(e.authChoice!==`ollama`)return null;let{config:t,defaultModelId:n}=await Ut({cfg:e.config,prompter:e.prompter,agentDir:e.agentDir}),r=`ollama/${n}`,i=K(t,r);return e.setDefaultModel?(await Wt({config:i,prompter:e.prompter}),{config:i}):{config:t,agentModelOverride:r}}async function hn(e){let t=b(e.opts?.secretInputMode),n=E(e),r=e.authChoice;if(r===`apiKey`&&e.opts?.tokenProvider===`openai`&&(r=`openai-api-key`),r===`openai-api-key`){let r=e.config,i;return await C({token:e.opts?.token,tokenProvider:e.opts?.tokenProvider,secretInputMode:t,config:r,expectedProviders:[`openai`],provider:`openai`,envLabel:`OPENAI_API_KEY`,promptMessage:`Enter OpenAI API key`,normalize:x,validate:S,prompter:e.prompter,setCredential:async(t,n)=>kt(t,e.agentDir,{secretInputMode:n})}),r=B(r,{profileId:`openai:default`,provider:`openai`,mode:`api_key`}),await(async()=>{let t=await w({config:r,setDefaultModel:e.setDefaultModel,defaultModel:X,applyDefaultConfig:zt,applyProviderConfig:Vt,noteDefault:X,noteAgentModel:n,prompter:e.prompter});return r=t.config,i=t.agentModelOverride??i,{config:r,agentModelOverride:i}})()}if(e.authChoice===`openai-codex`){let t=e.config,r,i;try{i=await jt({prompter:e.prompter,runtime:e.runtime,isRemote:q(),openUrl:async e=>{await y(e)},localBrowserMessage:`Complete sign-in in browser…`})}catch{return{config:t,agentModelOverride:r}}if(i){let a=await j(`openai-codex`,i,e.agentDir,{syncSiblingAgents:!0});if(t=B(t,{profileId:a,provider:`openai-codex`,mode:`oauth`}),e.setDefaultModel){let n=fe(t);t=n.next,n.changed&&await e.prompter.note(`Default model set to ${D}`,`Model configured`)}else r=D,await n(D)}return{config:t,agentModelOverride:r}}return null}async function gn(e){return await Q(e,{authChoice:`qwen-portal`,pluginId:`qwen-portal-auth`,providerId:`qwen-portal`,methodId:`device`,label:`Qwen`})}function _n(e,t){let n=e.agents?.defaults?.model,r=n&&typeof n==`object`&&`fallbacks`in n?n.fallbacks:void 0;return{...e,agents:{...e.agents,defaults:{...e.agents?.defaults,model:{...r?{fallbacks:r}:void 0,primary:t}}}}}async function vn(e){if(e.authChoice!==`vllm`)return null;let{config:t,modelRef:n}=await Ht({cfg:e.config,prompter:e.prompter,agentDir:e.agentDir});return e.setDefaultModel?(await e.prompter.note(`Default model set to ${n}`,`Model configured`),{config:_n(t,n)}):{config:t,agentModelOverride:n}}const yn=`volcengine-plan/ark-code-latest`;async function bn(e){if(e.authChoice!==`volcengine-api-key`)return null;let t=b(e.opts?.secretInputMode);return await C({token:e.opts?.volcengineApiKey,tokenProvider:`volcengine`,secretInputMode:t,config:e.config,expectedProviders:[`volcengine`],provider:`volcengine`,envLabel:`VOLCANO_ENGINE_API_KEY`,promptMessage:`Enter Volcano Engine API key`,normalize:x,validate:S,prompter:e.prompter,setCredential:async(t,n)=>Ne(t,e.agentDir,{secretInputMode:n})}),{config:Z(B(e.config,{profileId:`volcengine:default`,provider:`volcengine`,mode:`api_key`}),yn),agentModelOverride:yn}}async function xn(e){if(e.authChoice!==`xai-api-key`)return null;let t=e.config,n,r=E(e),i=b(e.opts?.secretInputMode);await C({token:e.opts?.xaiApiKey,tokenProvider:`xai`,secretInputMode:i,config:t,expectedProviders:[`xai`],provider:`xai`,envLabel:`XAI_API_KEY`,promptMessage:`Enter xAI API key`,normalize:x,validate:S,prompter:e.prompter,setCredential:async(t,n)=>st(t,e.agentDir,{secretInputMode:n})}),t=B(t,{profileId:`xai:default`,provider:`xai`,mode:`api_key`});{let i=await w({config:t,setDefaultModel:e.setDefaultModel,defaultModel:P,applyDefaultConfig:Te,applyProviderConfig:Be,noteDefault:P,noteAgentModel:r,prompter:e.prompter});t=i.config,n=i.agentModelOverride??n}return{config:t,agentModelOverride:n}}async function Sn(e){let t=[Jt,vn,mn,hn,pn,tn,cn,on,sn,an,gn,xn,bn,rn];for(let n of t){let t=await n(e);if(t)return t}return{config:e.config}}async function $(e,t,n){let a=f({cfg:e,agentId:n?.agentId}),s=[],l=await oe({config:e,useCache:!1});l.length>0&&(l.some(e=>e.provider===a.provider&&e.id===a.model)||s.push(`Model not found: ${a.provider}/${a.model}. Update agents.defaults.model or run /models list.`));let u=c(n?.agentDir),d=o(u,a.provider).length>0,p=r(a.provider),m=i(e,a.provider);!d&&!p&&!m&&s.push(`No auth configured for provider "${a.provider}". The agent may fail until credentials are added.`),a.provider===`openai`&&o(u,`openai-codex`).length>0&&s.push(`Detected OpenAI Codex OAuth. Consider setting agents.defaults.model to ${D}.`),s.length>0&&await t.note(s.join(`
20
20
  `),`Model check`)}const Cn={oauth:`anthropic`,"setup-token":`anthropic`,"claude-cli":`anthropic`,token:`anthropic`,apiKey:`anthropic`,vllm:`vllm`,ollama:`ollama`,"openai-codex":`openai-codex`,"codex-cli":`openai-codex`,chutes:`chutes`,"openai-api-key":`openai`,"openrouter-api-key":`openrouter`,"kilocode-api-key":`kilocode`,"ai-gateway-api-key":`vercel-ai-gateway`,"cloudflare-ai-gateway-api-key":`cloudflare-ai-gateway`,"moonshot-api-key":`moonshot`,"moonshot-api-key-cn":`moonshot`,"kimi-code-api-key":`kimi-coding`,"gemini-api-key":`google`,"google-gemini-cli":`google-gemini-cli`,"mistral-api-key":`mistral`,"zai-api-key":`zai`,"zai-coding-global":`zai`,"zai-coding-cn":`zai`,"zai-global":`zai`,"zai-cn":`zai`,"xiaomi-api-key":`xiaomi`,"synthetic-api-key":`synthetic`,"venice-api-key":`venice`,"together-api-key":`together`,"huggingface-api-key":`huggingface`,"github-copilot":`github-copilot`,"copilot-proxy":`copilot-proxy`,"minimax-cloud":`minimax`,"minimax-api":`minimax`,"minimax-api-key-cn":`minimax-cn`,"minimax-api-lightning":`minimax`,minimax:`lmstudio`,"opencode-zen":`opencode`,"opencode-go":`opencode-go`,"xai-api-key":`xai`,"litellm-api-key":`litellm`,"qwen-portal":`qwen-portal`,"volcengine-api-key":`volcengine`,"byteplus-api-key":`byteplus`,"minimax-portal":`minimax-portal`,"qianfan-api-key":`qianfan`,"custom-api-key":`custom`};function wn(e){return Cn[e]}var Tn=e({applyAuthChoice:()=>Sn,resolvePreferredProviderForAuthChoice:()=>wn,warnIfModelConfigLooksOff:()=>$});export{Sn as i,wn as n,$ as r,Tn as t};
21
- //# sourceMappingURL=auth-choice-EQdNd7jO.js.map
21
+ //# sourceMappingURL=auth-choice-DJn6683d.js.map
@@ -1,2 +1,2 @@
1
- import{A as e,Q as t,d as n,k as r}from"./subsystem-BLbY429l.js";import{jo as i}from"./auth-profiles-T8DuH3ax.js";import{Sn as a}from"./compact-Dg66DXx_.js";const o=`All your chats, one OpenClaw.`,s={newYear:`New Year's Day: New year, new config—same old EADDRINUSE, but this time we resolve it like grown-ups.`,lunarNewYear:`Lunar New Year: May your builds be lucky, your branches prosperous, and your merge conflicts chased away with fireworks.`,christmas:`Christmas: Ho ho ho—Santa's little claw-sistant is here to ship joy, roll back chaos, and stash the keys safely.`,eid:`Eid al-Fitr: Celebration mode: queues cleared, tasks completed, and good vibes committed to main with clean history.`,diwali:`Diwali: Let the logs sparkle and the bugs flee—today we light up the terminal and ship with pride.`,easter:`Easter: I found your missing environment variable—consider it a tiny CLI egg hunt with fewer jellybeans.`,hanukkah:`Hanukkah: Eight nights, eight retries, zero shame—may your gateway stay lit and your deployments stay peaceful.`,halloween:`Halloween: Spooky season: beware haunted dependencies, cursed caches, and the ghost of node_modules past.`,thanksgiving:`Thanksgiving: Grateful for stable ports, working DNS, and a bot that reads the logs so nobody has to.`,valentines:`Valentine's Day: Roses are typed, violets are piped—I'll automate the chores so you can spend time with humans.`},c=[`Your terminal just grew claws—type something and let the bot pinch the busywork.`,`Welcome to the command line: where dreams compile and confidence segfaults.`,`I run on caffeine, JSON5, and the audacity of "it worked on my machine."`,`Gateway online—please keep hands, feet, and appendages inside the shell at all times.`,`I speak fluent bash, mild sarcasm, and aggressive tab-completion energy.`,`One CLI to rule them all, and one more restart because you changed the port.`,`If it works, it's automation; if it breaks, it's a "learning opportunity."`,`Pairing codes exist because even bots believe in consent—and good security hygiene.`,`Your .env is showing; don't worry, I'll pretend I didn't see it.`,`I'll do the boring stuff while you dramatically stare at the logs like it's cinema.`,`I'm not saying your workflow is chaotic... I'm just bringing a linter and a helmet.`,`Type the command with confidence—nature will provide the stack trace if needed.`,`I don't judge, but your missing API keys are absolutely judging you.`,`I can grep it, git blame it, and gently roast it—pick your coping mechanism.`,`Hot reload for config, cold sweat for deploys.`,`I'm the assistant your terminal demanded, not the one your sleep schedule requested.`,`I keep secrets like a vault... unless you print them in debug logs again.`,`Automation with claws: minimal fuss, maximal pinch.`,`I'm basically a Swiss Army knife, but with more opinions and fewer sharp edges.`,`If you're lost, run doctor; if you're brave, run prod; if you're wise, run tests.`,`Your task has been queued; your dignity has been deprecated.`,`I can't fix your code taste, but I can fix your build and your backlog.`,`I'm not magic—I'm just extremely persistent with retries and coping strategies.`,`It's not "failing," it's "discovering new ways to configure the same thing wrong."`,`Give me a workspace and I'll give you fewer tabs, fewer toggles, and more oxygen.`,`I read logs so you can keep pretending you don't have to.`,`If something's on fire, I can't extinguish it—but I can write a beautiful postmortem.`,`I'll refactor your busywork like it owes me money.`,`Say "stop" and I'll stop—say "ship" and we'll both learn a lesson.`,`I'm the reason your shell history looks like a hacker-movie montage.`,`I'm like tmux: confusing at first, then suddenly you can't live without me.`,`I can run local, remote, or purely on vibes—results may vary with DNS.`,`If you can describe it, I can probably automate it—or at least make it funnier.`,`Your config is valid, your assumptions are not.`,`I don't just autocomplete—I auto-commit (emotionally), then ask you to review (logically).`,`Less clicking, more shipping, fewer "where did that file go" moments.`,`Claws out, commit in—let's ship something mildly responsible.`,`I'll butter your workflow like a lobster roll: messy, delicious, effective.`,`Shell yeah—I'm here to pinch the toil and leave you the glory.`,`If it's repetitive, I'll automate it; if it's hard, I'll bring jokes and a rollback plan.`,`The only crab in your contacts you actually want to hear from. 🦞`,`WhatsApp automation without the "please accept our new privacy policy".`,`iMessage green bubble energy, but for everyone.`,`No $999 stand required.`,`We ship features faster than Apple ships calculator updates.`,`Your AI assistant, now without the $3,499 headset.`,`Ah, the fruit tree company! 🍎`,`Greetings, Professor Falken`,`I don't sleep, I just enter low-power mode and dream of clean diffs.`,`Your personal assistant, minus the passive-aggressive calendar reminders.`,`Built by lobsters, for humans. Don't question the hierarchy.`,`I've seen your commit messages. We'll work on that together.`,`More integrations than your therapist's intake form.`,`Running on your hardware, reading your logs, judging nothing (mostly).`,`The only open-source project where the mascot could eat the competition.`,`Self-hosted, self-updating, self-aware (just kidding... unless?).`,`I autocomplete your thoughts—just slower and with more API calls.`,`Somewhere between 'hello world' and 'oh god what have I built.'`,`Your .zshrc wishes it could do what I do.`,`I've read more man pages than any human should—so you don't have to.`,`Powered by open source, sustained by spite and good documentation.`,`I'm the middleware between your ambition and your attention span.`,`Finally, a use for that always-on Mac Mini under your desk.`,`Like having a senior engineer on call, except I don't bill hourly or sigh audibly.`,`Making 'I'll automate that later' happen now.`,`Your second brain, except this one actually remembers where you left things.`,`Half butler, half debugger, full crustacean.`,`I don't have opinions about tabs vs spaces. I have opinions about everything else.`,`Open source means you can see exactly how I judge your config.`,`I've survived more breaking changes than your last three relationships.`,`Runs on a Raspberry Pi. Dreams of a rack in Iceland.`,`The lobster in your shell. 🦞`,`Alexa, but with taste.`,`I'm not AI-powered, I'm AI-possessed. Big difference.`,`Deployed locally, trusted globally, debugged eternally.`,`You had me at 'openclaw gateway start.'`,s.newYear,s.lunarNewYear,s.christmas,s.eid,s.diwali,s.easter,s.hanukkah,s.halloween,s.thanksgiving,s.valentines],l=1440*60*1e3;function u(e){return{year:e.getUTCFullYear(),month:e.getUTCMonth(),day:e.getUTCDate()}}const d=(e,t)=>n=>{let r=u(n);return r.month===e&&r.day===t},f=(e,t=1)=>n=>{let r=u(n);return e.some(([e,n,i])=>{if(r.year!==e)return!1;let a=Date.UTC(e,n,i),o=Date.UTC(r.year,r.month,r.day);return o>=a&&o<a+t*l})},p=new Map([[s.newYear,d(0,1)],[s.lunarNewYear,f([[2025,0,29],[2026,1,17],[2027,1,6]],1)],[s.eid,f([[2025,2,30],[2025,2,31],[2026,2,20],[2027,2,10]],1)],[s.diwali,f([[2025,9,20],[2026,10,8],[2027,9,28]],1)],[s.easter,f([[2025,3,20],[2026,3,5],[2027,2,28]],1)],[s.hanukkah,(e=>t=>{let n=u(t),r=e.find(e=>e.year===n.year);if(!r)return!1;let i=Date.UTC(r.year,r.month,r.day),a=Date.UTC(n.year,n.month,n.day);return a>=i&&a<i+r.duration*l})([{year:2025,month:11,day:15,duration:8},{year:2026,month:11,day:5,duration:8},{year:2027,month:11,day:25,duration:8}])],[s.halloween,d(9,31)],[s.thanksgiving,e=>{let t=u(e);if(t.month!==10)return!1;let n=1+(4-new Date(Date.UTC(t.year,10,1)).getUTCDay()+7)%7+21;return t.day===n}],[s.valentines,d(1,14)],[s.christmas,d(11,25)]]);function m(e,t){let n=p.get(e);return n?n(t):!0}function h(e={}){if(c.length===0)return[o];let t=e.now?e.now():new Date,n=c.filter(e=>m(e,t));return n.length>0?n:c}function g(e={}){if(e.mode===`off`)return``;if(e.mode===`default`)return o;let t=(e.env??process.env)?.OPENCLAW_TAGLINE_INDEX;if(t!==void 0){let e=Number.parseInt(t,10);if(!Number.isNaN(e)&&e>=0){let t=c.length>0?c:[o];return t[e%t.length]}}let n=h(e),r=e.random??Math.random;return n[Math.floor(r()*n.length)%n.length]}let _=!1;typeof Intl<`u`&&`Segmenter`in Intl&&new Intl.Segmenter(void 0,{granularity:`grapheme`});const v=e=>e.some(e=>e===`--json`||e.startsWith(`--json=`)),y=e=>e.some(e=>e===`--version`||e===`-V`)||t(e);function b(e){if(e===`random`||e===`default`||e===`off`)return e}function x(e){let t=b(e.mode);if(t)return t;try{return b(i().cli?.banner?.taglineMode)}catch{return}}function S(t,i={}){let o=i.commit??a({env:i.env,moduleUrl:import.meta.url})??`unknown`,s=g({...i,mode:x(i)}),c=i.richTty??r(),l=`🦞 OpenClaw`,u=i.columns??process.stdout.columns??120,d=`${l} ${t} (${o})`,f=s?`${d} — ${s}`:d,p=n(f)<=u;if(c){if(p)return s?`${e.heading(l)} ${e.info(t)} ${e.muted(`(${o})`)} ${e.muted(`—`)} ${e.accentDim(s)}`:`${e.heading(l)} ${e.info(t)} ${e.muted(`(${o})`)}`;let n=`${e.heading(l)} ${e.info(t)} ${e.muted(`(${o})`)}`;return s?`${n}\n${`${` `.repeat(3)}${e.accentDim(s)}`}`:n}if(p)return f;let m=d;return s?`${m}\n${`${` `.repeat(3)}${s}`}`:m}function C(e,t={}){if(_)return;let n=t.argv??process.argv;if(!process.stdout.isTTY||v(n)||y(n))return;let r=S(e,t);process.stdout.write(`\n${r}\n\n`),_=!0}function w(){return _}export{S as n,w as r,C as t};
2
- //# sourceMappingURL=banner-9u45RL26.js.map
1
+ import{A as e,Q as t,d as n,k as r}from"./subsystem-BLbY429l.js";import{jo as i}from"./auth-profiles-T8DuH3ax.js";import{Sn as a}from"./compact-BEeB6bwq.js";const o=`All your chats, one OpenClaw.`,s={newYear:`New Year's Day: New year, new config—same old EADDRINUSE, but this time we resolve it like grown-ups.`,lunarNewYear:`Lunar New Year: May your builds be lucky, your branches prosperous, and your merge conflicts chased away with fireworks.`,christmas:`Christmas: Ho ho ho—Santa's little claw-sistant is here to ship joy, roll back chaos, and stash the keys safely.`,eid:`Eid al-Fitr: Celebration mode: queues cleared, tasks completed, and good vibes committed to main with clean history.`,diwali:`Diwali: Let the logs sparkle and the bugs flee—today we light up the terminal and ship with pride.`,easter:`Easter: I found your missing environment variable—consider it a tiny CLI egg hunt with fewer jellybeans.`,hanukkah:`Hanukkah: Eight nights, eight retries, zero shame—may your gateway stay lit and your deployments stay peaceful.`,halloween:`Halloween: Spooky season: beware haunted dependencies, cursed caches, and the ghost of node_modules past.`,thanksgiving:`Thanksgiving: Grateful for stable ports, working DNS, and a bot that reads the logs so nobody has to.`,valentines:`Valentine's Day: Roses are typed, violets are piped—I'll automate the chores so you can spend time with humans.`},c=[`Your terminal just grew claws—type something and let the bot pinch the busywork.`,`Welcome to the command line: where dreams compile and confidence segfaults.`,`I run on caffeine, JSON5, and the audacity of "it worked on my machine."`,`Gateway online—please keep hands, feet, and appendages inside the shell at all times.`,`I speak fluent bash, mild sarcasm, and aggressive tab-completion energy.`,`One CLI to rule them all, and one more restart because you changed the port.`,`If it works, it's automation; if it breaks, it's a "learning opportunity."`,`Pairing codes exist because even bots believe in consent—and good security hygiene.`,`Your .env is showing; don't worry, I'll pretend I didn't see it.`,`I'll do the boring stuff while you dramatically stare at the logs like it's cinema.`,`I'm not saying your workflow is chaotic... I'm just bringing a linter and a helmet.`,`Type the command with confidence—nature will provide the stack trace if needed.`,`I don't judge, but your missing API keys are absolutely judging you.`,`I can grep it, git blame it, and gently roast it—pick your coping mechanism.`,`Hot reload for config, cold sweat for deploys.`,`I'm the assistant your terminal demanded, not the one your sleep schedule requested.`,`I keep secrets like a vault... unless you print them in debug logs again.`,`Automation with claws: minimal fuss, maximal pinch.`,`I'm basically a Swiss Army knife, but with more opinions and fewer sharp edges.`,`If you're lost, run doctor; if you're brave, run prod; if you're wise, run tests.`,`Your task has been queued; your dignity has been deprecated.`,`I can't fix your code taste, but I can fix your build and your backlog.`,`I'm not magic—I'm just extremely persistent with retries and coping strategies.`,`It's not "failing," it's "discovering new ways to configure the same thing wrong."`,`Give me a workspace and I'll give you fewer tabs, fewer toggles, and more oxygen.`,`I read logs so you can keep pretending you don't have to.`,`If something's on fire, I can't extinguish it—but I can write a beautiful postmortem.`,`I'll refactor your busywork like it owes me money.`,`Say "stop" and I'll stop—say "ship" and we'll both learn a lesson.`,`I'm the reason your shell history looks like a hacker-movie montage.`,`I'm like tmux: confusing at first, then suddenly you can't live without me.`,`I can run local, remote, or purely on vibes—results may vary with DNS.`,`If you can describe it, I can probably automate it—or at least make it funnier.`,`Your config is valid, your assumptions are not.`,`I don't just autocomplete—I auto-commit (emotionally), then ask you to review (logically).`,`Less clicking, more shipping, fewer "where did that file go" moments.`,`Claws out, commit in—let's ship something mildly responsible.`,`I'll butter your workflow like a lobster roll: messy, delicious, effective.`,`Shell yeah—I'm here to pinch the toil and leave you the glory.`,`If it's repetitive, I'll automate it; if it's hard, I'll bring jokes and a rollback plan.`,`The only crab in your contacts you actually want to hear from. 🦞`,`WhatsApp automation without the "please accept our new privacy policy".`,`iMessage green bubble energy, but for everyone.`,`No $999 stand required.`,`We ship features faster than Apple ships calculator updates.`,`Your AI assistant, now without the $3,499 headset.`,`Ah, the fruit tree company! 🍎`,`Greetings, Professor Falken`,`I don't sleep, I just enter low-power mode and dream of clean diffs.`,`Your personal assistant, minus the passive-aggressive calendar reminders.`,`Built by lobsters, for humans. Don't question the hierarchy.`,`I've seen your commit messages. We'll work on that together.`,`More integrations than your therapist's intake form.`,`Running on your hardware, reading your logs, judging nothing (mostly).`,`The only open-source project where the mascot could eat the competition.`,`Self-hosted, self-updating, self-aware (just kidding... unless?).`,`I autocomplete your thoughts—just slower and with more API calls.`,`Somewhere between 'hello world' and 'oh god what have I built.'`,`Your .zshrc wishes it could do what I do.`,`I've read more man pages than any human should—so you don't have to.`,`Powered by open source, sustained by spite and good documentation.`,`I'm the middleware between your ambition and your attention span.`,`Finally, a use for that always-on Mac Mini under your desk.`,`Like having a senior engineer on call, except I don't bill hourly or sigh audibly.`,`Making 'I'll automate that later' happen now.`,`Your second brain, except this one actually remembers where you left things.`,`Half butler, half debugger, full crustacean.`,`I don't have opinions about tabs vs spaces. I have opinions about everything else.`,`Open source means you can see exactly how I judge your config.`,`I've survived more breaking changes than your last three relationships.`,`Runs on a Raspberry Pi. Dreams of a rack in Iceland.`,`The lobster in your shell. 🦞`,`Alexa, but with taste.`,`I'm not AI-powered, I'm AI-possessed. Big difference.`,`Deployed locally, trusted globally, debugged eternally.`,`You had me at 'openclaw gateway start.'`,s.newYear,s.lunarNewYear,s.christmas,s.eid,s.diwali,s.easter,s.hanukkah,s.halloween,s.thanksgiving,s.valentines],l=1440*60*1e3;function u(e){return{year:e.getUTCFullYear(),month:e.getUTCMonth(),day:e.getUTCDate()}}const d=(e,t)=>n=>{let r=u(n);return r.month===e&&r.day===t},f=(e,t=1)=>n=>{let r=u(n);return e.some(([e,n,i])=>{if(r.year!==e)return!1;let a=Date.UTC(e,n,i),o=Date.UTC(r.year,r.month,r.day);return o>=a&&o<a+t*l})},p=new Map([[s.newYear,d(0,1)],[s.lunarNewYear,f([[2025,0,29],[2026,1,17],[2027,1,6]],1)],[s.eid,f([[2025,2,30],[2025,2,31],[2026,2,20],[2027,2,10]],1)],[s.diwali,f([[2025,9,20],[2026,10,8],[2027,9,28]],1)],[s.easter,f([[2025,3,20],[2026,3,5],[2027,2,28]],1)],[s.hanukkah,(e=>t=>{let n=u(t),r=e.find(e=>e.year===n.year);if(!r)return!1;let i=Date.UTC(r.year,r.month,r.day),a=Date.UTC(n.year,n.month,n.day);return a>=i&&a<i+r.duration*l})([{year:2025,month:11,day:15,duration:8},{year:2026,month:11,day:5,duration:8},{year:2027,month:11,day:25,duration:8}])],[s.halloween,d(9,31)],[s.thanksgiving,e=>{let t=u(e);if(t.month!==10)return!1;let n=1+(4-new Date(Date.UTC(t.year,10,1)).getUTCDay()+7)%7+21;return t.day===n}],[s.valentines,d(1,14)],[s.christmas,d(11,25)]]);function m(e,t){let n=p.get(e);return n?n(t):!0}function h(e={}){if(c.length===0)return[o];let t=e.now?e.now():new Date,n=c.filter(e=>m(e,t));return n.length>0?n:c}function g(e={}){if(e.mode===`off`)return``;if(e.mode===`default`)return o;let t=(e.env??process.env)?.OPENCLAW_TAGLINE_INDEX;if(t!==void 0){let e=Number.parseInt(t,10);if(!Number.isNaN(e)&&e>=0){let t=c.length>0?c:[o];return t[e%t.length]}}let n=h(e),r=e.random??Math.random;return n[Math.floor(r()*n.length)%n.length]}let _=!1;typeof Intl<`u`&&`Segmenter`in Intl&&new Intl.Segmenter(void 0,{granularity:`grapheme`});const v=e=>e.some(e=>e===`--json`||e.startsWith(`--json=`)),y=e=>e.some(e=>e===`--version`||e===`-V`)||t(e);function b(e){if(e===`random`||e===`default`||e===`off`)return e}function x(e){let t=b(e.mode);if(t)return t;try{return b(i().cli?.banner?.taglineMode)}catch{return}}function S(t,i={}){let o=i.commit??a({env:i.env,moduleUrl:import.meta.url})??`unknown`,s=g({...i,mode:x(i)}),c=i.richTty??r(),l=`🦞 OpenClaw`,u=i.columns??process.stdout.columns??120,d=`${l} ${t} (${o})`,f=s?`${d} — ${s}`:d,p=n(f)<=u;if(c){if(p)return s?`${e.heading(l)} ${e.info(t)} ${e.muted(`(${o})`)} ${e.muted(`—`)} ${e.accentDim(s)}`:`${e.heading(l)} ${e.info(t)} ${e.muted(`(${o})`)}`;let n=`${e.heading(l)} ${e.info(t)} ${e.muted(`(${o})`)}`;return s?`${n}\n${`${` `.repeat(3)}${e.accentDim(s)}`}`:n}if(p)return f;let m=d;return s?`${m}\n${`${` `.repeat(3)}${s}`}`:m}function C(e,t={}){if(_)return;let n=t.argv??process.argv;if(!process.stdout.isTTY||v(n)||y(n))return;let r=S(e,t);process.stdout.write(`\n${r}\n\n`),_=!0}function w(){return _}export{S as n,w as r,C as t};
2
+ //# sourceMappingURL=banner-xQa2kS6O.js.map
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.0.142",
3
- "commit": "f8e78d51079f62d078210766d28196717947d32a",
4
- "builtAt": "2026-04-07T07:01:03.121Z"
2
+ "version": "0.0.144",
3
+ "commit": "dd047fd7e5b5bb717463880691ed8ad87023a1d0",
4
+ "builtAt": "2026-04-08T04:19:53.852Z"
5
5
  }
@@ -1,2 +1,2 @@
1
- import"../../paths-CrCoPIVK.js";import"../../paths-CChBdtE8.js";import{t as e}from"../../subsystem-Bc2XrjUz.js";import"../../workspace-B0ZQeHXg.js";import"../../utils-D3t-vPka.js";import"../../model-selection-B5JsBS9D.js";import"../../github-copilot-token-DePP-lIf.js";import"../../boolean-DypnRoRK.js";import"../../proxy-env-DcmW_urA.js";import{_ as t}from"../../frontmatter-CzpfPBFl.js";import"../../logger-5W0OocJW.js";import"../../send-Chz0YMoJ.js";import"../../send-vthbs31u.js";import"../../pi-embedded-Dsz7p3MF.js";import"../../tokens-CL2fSjGl.js";import"../../deliver-BFQ4Zx9z.js";import"../../diagnostic-BrE4lMIf.js";import"../../send-CYgHok1p.js";import"../../pi-model-discovery-DeQdHV8O.js";import"../../image-CcVQg-YN.js";import"../../audio-transcription-runner-DSr6OIz1.js";import"../../fetch-B_wRifvZ.js";import"../../fetch-guard-D10s0raB.js";import"../../api-key-rotation-Di6QgXx7.js";import"../../proxy-fetch-BZ9O8Dvj.js";import"../../ir-DBWscfBd.js";import"../../render-CBsnn-2A.js";import"../../target-errors-CRlevJJ5.js";import"../../commands-registry-SeddSmFK.js";import"../../fetch-_g8lZ8K8.js";import"../../skill-commands-BWW6mc6t.js";import"../../channel-activity-CgbOWaay.js";import"../../tables-CrXdLc_6.js";import"../../send-D9hVVn7p2.js";import"../../outbound-attachment-Dds8xirj.js";import"../../send-DlfVd5mL.js";import"../../fetch-BJT3BrkJ.js";import"../../query-expansion-BUUx_oWg.js";import"../../manager-Dtd_loL8.js";import"node:fs/promises";import"node:path";import"node:crypto";e(`gateway/boot`);const n=e(`hooks/boot-md`),r=async e=>{t(e)&&e.context.cfg&&n.info(`BOOT.md loading skipped (SKIP_BOOT_MD=true)`)};export{r as default};
1
+ import"../../paths-CrCoPIVK.js";import"../../paths-CChBdtE8.js";import{t as e}from"../../subsystem-Bc2XrjUz.js";import"../../workspace-B0ZQeHXg.js";import"../../utils-D3t-vPka.js";import"../../model-selection-B5JsBS9D.js";import"../../github-copilot-token-DePP-lIf.js";import"../../boolean-DypnRoRK.js";import"../../proxy-env-DcmW_urA.js";import{_ as t}from"../../frontmatter-CzpfPBFl.js";import"../../logger-5W0OocJW.js";import"../../send-Chz0YMoJ.js";import"../../send-vthbs31u.js";import"../../pi-embedded-DjX-gdoY.js";import"../../tokens-CL2fSjGl.js";import"../../deliver-BFQ4Zx9z.js";import"../../diagnostic-BrE4lMIf.js";import"../../send-CYgHok1p.js";import"../../pi-model-discovery-DeQdHV8O.js";import"../../image-CcVQg-YN.js";import"../../audio-transcription-runner-DSr6OIz1.js";import"../../fetch-B_wRifvZ.js";import"../../fetch-guard-D10s0raB.js";import"../../api-key-rotation-Di6QgXx7.js";import"../../proxy-fetch-BZ9O8Dvj.js";import"../../ir-DBWscfBd.js";import"../../render-CBsnn-2A.js";import"../../target-errors-CRlevJJ5.js";import"../../commands-registry-SeddSmFK.js";import"../../fetch-_g8lZ8K8.js";import"../../skill-commands-BWW6mc6t.js";import"../../channel-activity-CgbOWaay.js";import"../../tables-CrXdLc_6.js";import"../../send-D9hVVn7p2.js";import"../../outbound-attachment-Dds8xirj.js";import"../../send-DlfVd5mL.js";import"../../fetch-BJT3BrkJ.js";import"../../query-expansion-BUUx_oWg.js";import"../../manager-Dtd_loL8.js";import"node:fs/promises";import"node:path";import"node:crypto";e(`gateway/boot`);const n=e(`hooks/boot-md`),r=async e=>{t(e)&&e.context.cfg&&n.info(`BOOT.md loading skipped (SKIP_BOOT_MD=true)`)};export{r as default};
2
2
  //# sourceMappingURL=handler.js.map
@@ -1,4 +1,4 @@
1
- import{G as e,U as t,k as n}from"../../paths-CrCoPIVK.js";import{c as r}from"../../paths-CChBdtE8.js";import{t as i}from"../../subsystem-Bc2XrjUz.js";import{H as a,Q as o,R as s}from"../../workspace-B0ZQeHXg.js";import"../../utils-D3t-vPka.js";import{Tn as c}from"../../model-selection-B5JsBS9D.js";import"../../github-copilot-token-DePP-lIf.js";import"../../boolean-DypnRoRK.js";import"../../proxy-env-DcmW_urA.js";import"../../frontmatter-CzpfPBFl.js";import"../../logger-5W0OocJW.js";import"../../send-Chz0YMoJ.js";import"../../send-vthbs31u.js";import"../../pi-embedded-Dsz7p3MF.js";import"../../tokens-CL2fSjGl.js";import"../../deliver-BFQ4Zx9z.js";import"../../diagnostic-BrE4lMIf.js";import"../../send-CYgHok1p.js";import"../../pi-model-discovery-DeQdHV8O.js";import"../../image-CcVQg-YN.js";import"../../audio-transcription-runner-DSr6OIz1.js";import"../../fetch-B_wRifvZ.js";import"../../fetch-guard-D10s0raB.js";import"../../api-key-rotation-Di6QgXx7.js";import"../../proxy-fetch-BZ9O8Dvj.js";import"../../ir-DBWscfBd.js";import"../../render-CBsnn-2A.js";import"../../target-errors-CRlevJJ5.js";import"../../commands-registry-SeddSmFK.js";import"../../fetch-_g8lZ8K8.js";import"../../skill-commands-BWW6mc6t.js";import"../../channel-activity-CgbOWaay.js";import"../../tables-CrXdLc_6.js";import"../../send-D9hVVn7p2.js";import"../../outbound-attachment-Dds8xirj.js";import"../../send-DlfVd5mL.js";import"../../fetch-BJT3BrkJ.js";import"../../query-expansion-BUUx_oWg.js";import"../../manager-Dtd_loL8.js";import{generateSlugViaLLM as l}from"../../llm-slug-generator.js";import{t as u}from"../../config-BqW5S1xL.js";import d from"node:fs/promises";import f from"node:os";import p from"node:path";const m=i(`hooks/session-memory`);function h(e){if(!e.cfg||!e.workspaceDir)return e.sessionKey;let n=t(e.cfg,e.workspaceDir),r=o(e.sessionKey);return!n||!r||n===r.agentId?e.sessionKey:a({agentId:n,requestKey:r.rest})}async function g(e,t=15){try{let n=(await d.readFile(e,`utf-8`)).trim().split(`
1
+ import{G as e,U as t,k as n}from"../../paths-CrCoPIVK.js";import{c as r}from"../../paths-CChBdtE8.js";import{t as i}from"../../subsystem-Bc2XrjUz.js";import{H as a,Q as o,R as s}from"../../workspace-B0ZQeHXg.js";import"../../utils-D3t-vPka.js";import{Tn as c}from"../../model-selection-B5JsBS9D.js";import"../../github-copilot-token-DePP-lIf.js";import"../../boolean-DypnRoRK.js";import"../../proxy-env-DcmW_urA.js";import"../../frontmatter-CzpfPBFl.js";import"../../logger-5W0OocJW.js";import"../../send-Chz0YMoJ.js";import"../../send-vthbs31u.js";import"../../pi-embedded-DjX-gdoY.js";import"../../tokens-CL2fSjGl.js";import"../../deliver-BFQ4Zx9z.js";import"../../diagnostic-BrE4lMIf.js";import"../../send-CYgHok1p.js";import"../../pi-model-discovery-DeQdHV8O.js";import"../../image-CcVQg-YN.js";import"../../audio-transcription-runner-DSr6OIz1.js";import"../../fetch-B_wRifvZ.js";import"../../fetch-guard-D10s0raB.js";import"../../api-key-rotation-Di6QgXx7.js";import"../../proxy-fetch-BZ9O8Dvj.js";import"../../ir-DBWscfBd.js";import"../../render-CBsnn-2A.js";import"../../target-errors-CRlevJJ5.js";import"../../commands-registry-SeddSmFK.js";import"../../fetch-_g8lZ8K8.js";import"../../skill-commands-BWW6mc6t.js";import"../../channel-activity-CgbOWaay.js";import"../../tables-CrXdLc_6.js";import"../../send-D9hVVn7p2.js";import"../../outbound-attachment-Dds8xirj.js";import"../../send-DlfVd5mL.js";import"../../fetch-BJT3BrkJ.js";import"../../query-expansion-BUUx_oWg.js";import"../../manager-Dtd_loL8.js";import{generateSlugViaLLM as l}from"../../llm-slug-generator.js";import{t as u}from"../../config-BqW5S1xL.js";import d from"node:fs/promises";import f from"node:os";import p from"node:path";const m=i(`hooks/session-memory`);function h(e){if(!e.cfg||!e.workspaceDir)return e.sessionKey;let n=t(e.cfg,e.workspaceDir),r=o(e.sessionKey);return!n||!r||n===r.agentId?e.sessionKey:a({agentId:n,requestKey:r.rest})}async function g(e,t=15){try{let n=(await d.readFile(e,`utf-8`)).trim().split(`
2
2
  `),r=[];for(let e of n)try{let t=JSON.parse(e);if(t.type===`message`&&t.message){let e=t.message,n=e.role;if((n===`user`||n===`assistant`)&&e.content){if(n===`user`&&c(e))continue;let t=Array.isArray(e.content)?e.content.find(e=>e.type===`text`)?.text:e.content;t&&!t.startsWith(`/`)&&r.push(`${n}: ${t}`)}}}catch{}return r.slice(-t).join(`
3
3
  `)}catch{return null}}async function _(e,t=15){let n=await g(e,t);if(n)return n;try{let r=p.dirname(e),i=`${p.basename(e)}.reset.`,a=(await d.readdir(r)).filter(e=>e.startsWith(i)).toSorted();if(a.length===0)return n;let o=p.join(r,a[a.length-1]),s=await g(o,t);return s&&m.debug(`Loaded session content from reset fallback`,{sessionFilePath:e,latestResetPath:o}),s||n}catch{return n}}function v(e){let t=e.indexOf(`.reset.`);return t===-1?e:e.slice(0,t)}async function y(e){try{let t=await d.readdir(e.sessionsDir),n=new Set(t),r=e.currentSessionFile?v(p.basename(e.currentSessionFile)):void 0;if(r&&n.has(r))return p.join(e.sessionsDir,r);let i=e.sessionId?.trim();if(i){let r=`${i}.jsonl`;if(n.has(r))return p.join(e.sessionsDir,r);let a=t.filter(e=>e.startsWith(`${i}-topic-`)&&e.endsWith(`.jsonl`)&&!e.includes(`.reset.`)).toSorted().toReversed();if(a.length>0)return p.join(e.sessionsDir,a[0])}if(!e.currentSessionFile)return;let a=t.filter(e=>e.endsWith(`.jsonl`)&&!e.includes(`.reset.`)).toSorted().toReversed();if(a.length>0)return p.join(e.sessionsDir,a[0])}catch{}}const b=async t=>{let i=t.action===`new`||t.action===`reset`;if(!(t.type!==`command`||!i))try{m.debug(`Hook triggered for reset/new command`,{action:t.action});let i=t.context||{},a=i.cfg,o=typeof i.workspaceDir==`string`&&i.workspaceDir.trim().length>0?i.workspaceDir:void 0,c=s(t.sessionKey),g=o||(a?e(a,c):p.join(r(process.env,f.homedir),`workspace`)),v=h({cfg:a,workspaceDir:o,sessionKey:t.sessionKey}),b=p.join(g,`memory`);await d.mkdir(b,{recursive:!0});let x=new Date(t.timestamp),S=x.toISOString().split(`T`)[0],C=i.previousSessionEntry||i.sessionEntry||{},w=C.sessionId,T=C.sessionFile||void 0;if(!T||T.includes(`.reset.`)){let e=new Set;T&&e.add(p.dirname(T)),e.add(p.join(g,`sessions`));for(let t of e){let e=await y({sessionsDir:t,currentSessionFile:T,sessionId:w});if(e){T=e,m.debug(`Found previous session file`,{file:T});break}}}m.debug(`Session context resolved`,{sessionId:w,sessionFile:T,hasCfg:!!a});let E=T||void 0,D=u(a,`session-memory`),O=typeof D?.messages==`number`&&D.messages>0?D.messages:15,k=null,A=null;if(E){A=await _(E,O),m.debug(`Session content loaded`,{length:A?.length??0,messageCount:O});let e=!(process.env.OPENCLAW_TEST_FAST===`1`||process.env.VITEST===`true`||process.env.VITEST===`1`)&&D?.llmSlug!==!1;A&&a&&e&&(m.debug(`Calling generateSlugViaLLM...`),k=await l({sessionContent:A,cfg:a}),m.debug(`Generated slug`,{slug:k}))}k||(k=x.toISOString().split(`T`)[1].split(`.`)[0].replace(/:/g,``).slice(0,4),m.debug(`Using fallback timestamp slug`,{slug:k}));let j=`${S}-${k}.md`,M=p.join(b,j);m.debug(`Memory file path resolved`,{filename:j,path:M.replace(f.homedir(),`~`)});let N=x.toISOString().split(`T`)[1].split(`.`)[0],P=C.sessionId||`unknown`,F=i.commandSource||`unknown`,I=[`# Session: ${S} ${N} UTC`,``,`- **Session Key**: ${v}`,`- **Session ID**: ${P}`,`- **Source**: ${F}`,``];A&&I.push(`## Conversation Summary`,``,A,``),await n({rootDir:b,relativePath:j,data:I.join(`
4
4
  `),encoding:`utf-8`}),m.debug(`Memory file written successfully`);let L=M.replace(f.homedir(),`~`);m.info(`Session context saved to ${L}`)}catch(e){e instanceof Error?m.error(`Failed to save session memory`,{errorName:e.name,errorMessage:e.message,stack:e.stack}):m.error(`Failed to save session memory`,{error:String(e)})}};export{b as default};
@@ -1 +1 @@
1
- 80e3d5c2929accd4025fc7ce3ede2596bf1e533d5c2068b9f05a560dee18e260
1
+ e89823f0632d601e4fc7f1ab50adde522eab3e654d23a00d771f31fe0388fff8
@@ -1,2 +1,2 @@
1
- import{i as e}from"./entry.js";import{n as t}from"./registry-BptzrW8D.js";import{n}from"./plugins-DNlgeTTc.js";import{a as r}from"./plugin-auto-enable-NzmNh4oU.js";import{t as i}from"./plugin-registry-C6dY-Et7.js";import{fileURLToPath as a}from"node:url";import o from"node:path";import s from"node:fs";function c(e){let t=new Set,n=[];for(let r of e)!r||t.has(r)||(t.add(r),n.push(r));return n}let l;function u(){if(l!==void 0)return l;try{let e=o.resolve(o.dirname(a(import.meta.url)),`..`,`cli-startup-metadata.json`),t=s.readFileSync(e,`utf8`),n=JSON.parse(t);if(Array.isArray(n.channelOptions))return l=c(n.channelOptions.filter(e=>typeof e==`string`)),l}catch{}return l=null,null}function d(){if(e(process.env.OPENCLAW_EAGER_CHANNEL_OPTIONS)){let e=r().map(e=>e.id),a=c([...t,...e]);i();let o=n().map(e=>e.id);return c([...a,...o])}let a=u(),o=r().map(e=>e.id);return c(a?[...a,...o]:[...t,...o])}function f(e=[]){return[...e,...d()].join(`|`)}export{d as n,f as t};
2
- //# sourceMappingURL=channel-options-D2syI791.js.map
1
+ import{i as e}from"./entry.js";import{n as t}from"./registry-BptzrW8D.js";import{n}from"./plugins-DNlgeTTc.js";import{a as r}from"./plugin-auto-enable-NzmNh4oU.js";import{t as i}from"./plugin-registry-CYlBYbc8.js";import{fileURLToPath as a}from"node:url";import o from"node:path";import s from"node:fs";function c(e){let t=new Set,n=[];for(let r of e)!r||t.has(r)||(t.add(r),n.push(r));return n}let l;function u(){if(l!==void 0)return l;try{let e=o.resolve(o.dirname(a(import.meta.url)),`..`,`cli-startup-metadata.json`),t=s.readFileSync(e,`utf8`),n=JSON.parse(t);if(Array.isArray(n.channelOptions))return l=c(n.channelOptions.filter(e=>typeof e==`string`)),l}catch{}return l=null,null}function d(){if(e(process.env.OPENCLAW_EAGER_CHANNEL_OPTIONS)){let e=r().map(e=>e.id),a=c([...t,...e]);i();let o=n().map(e=>e.id);return c([...a,...o])}let a=u(),o=r().map(e=>e.id);return c(a?[...a,...o]:[...t,...o])}function f(e=[]){return[...e,...d()].join(`|`)}export{d as n,f as t};
2
+ //# sourceMappingURL=channel-options-BurUBfoY.js.map
@@ -1,2 +1,2 @@
1
- import{t as e}from"./env-D7wNuBx1.js";import{n as t}from"./registry-hFAtCSWG.js";import{n}from"./plugins-CYLrFT4h.js";import{a as r}from"./plugin-auto-enable-DpVL6-ES.js";import{t as i}from"./plugin-registry-CIBiHZH1.js";import{fileURLToPath as a}from"node:url";import o from"node:fs";import s from"node:path";function c(e){let t=new Set,n=[];for(let r of e)!r||t.has(r)||(t.add(r),n.push(r));return n}let l;function u(){if(l!==void 0)return l;try{let e=s.resolve(s.dirname(a(import.meta.url)),`..`,`cli-startup-metadata.json`),t=o.readFileSync(e,`utf8`),n=JSON.parse(t);if(Array.isArray(n.channelOptions))return l=c(n.channelOptions.filter(e=>typeof e==`string`)),l}catch{}return l=null,null}function d(){if(e(process.env.OPENCLAW_EAGER_CHANNEL_OPTIONS)){let e=r().map(e=>e.id),a=c([...t,...e]);i();let o=n().map(e=>e.id);return c([...a,...o])}let a=u(),o=r().map(e=>e.id);return c(a?[...a,...o]:[...t,...o])}function f(e=[]){return[...e,...d()].join(`|`)}export{d as n,f as t};
2
- //# sourceMappingURL=channel-options-CEIzjOno.js.map
1
+ import{t as e}from"./env-D7wNuBx1.js";import{n as t}from"./registry-hFAtCSWG.js";import{n}from"./plugins-CYLrFT4h.js";import{a as r}from"./plugin-auto-enable-DpVL6-ES.js";import{t as i}from"./plugin-registry-CI5K3iWc.js";import{fileURLToPath as a}from"node:url";import o from"node:fs";import s from"node:path";function c(e){let t=new Set,n=[];for(let r of e)!r||t.has(r)||(t.add(r),n.push(r));return n}let l;function u(){if(l!==void 0)return l;try{let e=s.resolve(s.dirname(a(import.meta.url)),`..`,`cli-startup-metadata.json`),t=o.readFileSync(e,`utf8`),n=JSON.parse(t);if(Array.isArray(n.channelOptions))return l=c(n.channelOptions.filter(e=>typeof e==`string`)),l}catch{}return l=null,null}function d(){if(e(process.env.OPENCLAW_EAGER_CHANNEL_OPTIONS)){let e=r().map(e=>e.id),a=c([...t,...e]);i();let o=n().map(e=>e.id);return c([...a,...o])}let a=u(),o=r().map(e=>e.id);return c(a?[...a,...o]:[...t,...o])}function f(e=[]){return[...e,...d()].join(`|`)}export{d as n,f as t};
2
+ //# sourceMappingURL=channel-options-Ce8uNnAp.js.map
@@ -1,6 +1,6 @@
1
- import{S as e,T as t,j as n,p as r,t as i}from"./subsystem-BLbY429l.js";import{Hn as a,It as o,Nt as s,Un as c,Yn as l,ai as u,jo as d,jt as f}from"./auth-profiles-T8DuH3ax.js";import{t as p}from"./command-format-CLxIPuLR.js";import{a as m,c as h,n as g,r as _}from"./session-key-C7F_iqYg.js";import{S as v,_ as y,d as b,f as x,n as S,p as C,w}from"./utils-CGdo13HV.js";import{$ as ee,G as T,U as E,q as D}from"./plugins-DNlgeTTc.js";import{B as O,Bn as te,Cn as k,In as ne,J as A,K as j,M,Mr as N,N as P,Q as re,R as ie,U as F,Un as I,W as ae,Wn as L,_t as oe,ar as se,b as R,dn as z,gt as ce,ht as B,j as le,jr as V,mt as H,q as ue,un as U,z as W,zn as de}from"./compact-Dg66DXx_.js";import{c as G}from"./paths-BfjJY2VL.js";import{X as K,Z as fe}from"./send-DkiKKUkt.js";import{i as pe}from"./fetch-CQaNr5J1.js";import{v as me}from"./audio-transcription-runner-Bd1OZC6K.js";import{a as he,d as ge,h as _e,m as ve,s as ye}from"./ir-D8Hh84ab.js";import{f as be,p as xe}from"./session-utils-8acNlxwP.js";import{d as Se,f as Ce,l as we,p as Te}from"./pi-tools.policy-D40r0HmD.js";import{c as Ee}from"./pairing-store-BH-FTYkn.js";import{a as De,o as Oe,s as ke}from"./group-access-BHKVOhrj.js";import{n as Ae}from"./channel-activity-BBrgoad1.js";import{t as je}from"./tables-Brc2lNcB.js";import{r as Me}from"./format-duration-C8AzNqKh.js";import{r as Ne}from"./active-listener-D8VOdVx3.js";import{i as Pe,r as Fe}from"./outbound-BtUeDLjU.js";import{i as Ie,n as q,r as Le,t as Re}from"./session-bk3gFwO4.js";import{randomUUID as ze}from"node:crypto";import{DisconnectReason as Be,downloadMediaMessage as Ve,extractMessageContent as He,getContentType as Ue,isJidGroup as We,normalizeMessageContent as Ge}from"@whiskeysockets/baileys";const Ke={initialMs:2e3,maxMs:3e4,factor:1.8,jitter:.25,maxAttempts:12};function qe(e,t){let n=t??e.web?.heartbeatSeconds;return typeof n==`number`&&n>0?n:60}function Je(e,t){let n=e.web?.reconnect??{},r=t??{},i={...Ke,...n,...r};return i.initialMs=Math.max(250,i.initialMs),i.maxMs=Math.max(i.initialMs,i.maxMs),i.factor=S(i.factor,1.1,10),i.jitter=S(i.jitter,0,1),i.maxAttempts=Math.max(0,Math.floor(i.maxAttempts)),i}function J(){return ze()}const Y=i(`gateway/channels/whatsapp`),X=Y.child(`inbound`),Z=Y.child(`outbound`),Ye=Y.child(`heartbeat`);function Xe(){return setInterval(()=>{},1e6).unref(),new Promise(()=>{})}const Ze=se({ttlMs:20*6e4,maxSize:5e3});function Qe(e){return Ze.check(e)}const $e=new Set([`FN`,`N`,`TEL`]);function et(e){if(!e)return{phones:[]};let t=e.split(/\r?\n/),n,r,i=[];for(let e of t){let t=e.trim();if(!t)continue;let a=t.indexOf(`:`);if(a===-1)continue;let o=t.slice(0,a).toUpperCase(),s=t.slice(a+1).trim();if(!s)continue;let c=tt(o);if(!c||!$e.has(c))continue;let l=nt(s);if(l){if(c===`FN`&&!r){r=rt(l);continue}if(c===`N`&&!n){n=rt(l);continue}if(c===`TEL`){let e=it(l);e&&i.push(e)}}}return{name:r??n,phones:i}}function tt(e){let[t]=e.split(`;`);if(!t)return;let n=t.split(`.`);return n[n.length-1]||void 0}function nt(e){return e.replace(/\\n/gi,` `).replace(/\\,/g,`,`).replace(/\\;/g,`;`).trim()}function rt(e){return e.replace(/;/g,` `).replace(/\s+/g,` `).trim()}function it(e){let t=e.trim();return t?t.toLowerCase().startsWith(`tel:`)?t.slice(4).trim():t:``}function Q(e){return Ge(e)}function at(e){if(!e)return;let t=Ue(e),n=t?e[t]:void 0,r=n&&typeof n==`object`&&`contextInfo`in n?n.contextInfo:void 0;if(r)return r;let i=e.extendedTextMessage?.contextInfo??e.imageMessage?.contextInfo??e.videoMessage?.contextInfo??e.documentMessage?.contextInfo??e.audioMessage?.contextInfo??e.stickerMessage?.contextInfo??e.buttonsResponseMessage?.contextInfo??e.listResponseMessage?.contextInfo??e.templateButtonReplyMessage?.contextInfo??e.interactiveResponseMessage?.contextInfo??e.buttonsMessage?.contextInfo??e.listMessage?.contextInfo;if(i)return i;for(let t of Object.values(e)){if(!t||typeof t!=`object`||!(`contextInfo`in t))continue;let e=t.contextInfo;if(e)return e}}function ot(e){let t=Q(e);if(!t)return;let n=[t.extendedTextMessage?.contextInfo?.mentionedJid,t.extendedTextMessage?.contextInfo?.quotedMessage?.extendedTextMessage?.contextInfo?.mentionedJid,t.imageMessage?.contextInfo?.mentionedJid,t.videoMessage?.contextInfo?.mentionedJid,t.documentMessage?.contextInfo?.mentionedJid,t.audioMessage?.contextInfo?.mentionedJid,t.stickerMessage?.contextInfo?.mentionedJid,t.buttonsResponseMessage?.contextInfo?.mentionedJid,t.listResponseMessage?.contextInfo?.mentionedJid].flatMap(e=>e??[]).filter(Boolean);if(n.length!==0)return Array.from(new Set(n))}function st(e){let t=Q(e);if(!t)return;let n=He(t),r=[t,n&&n!==t?n:void 0];for(let e of r){if(!e)continue;if(typeof e.conversation==`string`&&e.conversation.trim())return e.conversation.trim();let t=e.extendedTextMessage?.text;if(t?.trim())return t.trim();let n=e.imageMessage?.caption??e.videoMessage?.caption??e.documentMessage?.caption;if(n?.trim())return n.trim()}let i=lt(t)??(n&&n!==t?lt(n):void 0);if(i)return i}function ct(e){let t=Q(e);if(t){if(t.imageMessage)return`<media:image>`;if(t.videoMessage)return`<media:video>`;if(t.audioMessage)return`<media:audio>`;if(t.documentMessage)return`<media:document>`;if(t.stickerMessage)return`<media:sticker>`}}function lt(e){let t=Q(e);if(!t)return;let n=t.contactMessage??void 0;if(n){let{name:e,phones:t}=ut({displayName:n.displayName,vcard:n.vcard});return dt(e,t)}let r=t.contactsArrayMessage?.contacts??void 0;if(!(!r||r.length===0))return ft(r.map(e=>ut({displayName:e.displayName,vcard:e.vcard})).map(e=>pt(e.name,e.phones)).filter(e=>!!e),r.length)}function ut(e){let t=(e.displayName??``).trim(),n=et(e.vcard??void 0);return{name:t||n.name,phones:n.phones}}function dt(e,t){let n=pt(e,t);return n?`<contact: ${n}>`:`<contact>`}function ft(e,t){let n=e.map(e=>e.trim()).filter(Boolean);if(n.length===0)return`<contacts: ${t} ${t===1?`contact`:`contacts`}>`;let r=Math.max(t-n.length,0),i=r>0?` +${r} more`:``;return`<contacts: ${n.join(`, `)}${i}>`}function pt(e,t){let n=[e,mt(t)].filter(e=>!!e);if(n.length!==0)return n.join(`, `)}function mt(e){let t=e?.map(e=>e.trim()).filter(Boolean)??[];if(t.length===0)return;let{shown:n,remaining:r}=ht(t,t.length,1),[i]=n;if(i)return r===0?i:`${i} (+${r} more)`}function ht(e,t,n){let r=e.slice(0,n);return{shown:r,remaining:Math.max(t-r.length,0)}}function gt(e){let t=Q(e);if(!t)return null;let n=t.liveLocationMessage??void 0;if(n){let e=n.degreesLatitude,t=n.degreesLongitude;if(e!=null&&t!=null){let r=Number(e),i=Number(t);if(Number.isFinite(r)&&Number.isFinite(i))return{latitude:r,longitude:i,accuracy:n.accuracyInMeters??void 0,caption:n.caption??void 0,source:`live`,isLive:!0}}}let r=t.locationMessage??void 0;if(r){let e=r.degreesLatitude,t=r.degreesLongitude;if(e!=null&&t!=null){let n=Number(e),i=Number(t);if(Number.isFinite(n)&&Number.isFinite(i)){let e=!!r.isLive;return{latitude:n,longitude:i,accuracy:r.accuracyInMeters??void 0,name:r.name??void 0,address:r.address??void 0,caption:r.comment??void 0,source:e?`live`:r.name||r.address?`place`:`pin`,isLive:e}}}}return null}function _t(t){let n=Q(t);if(!n)return null;let r=at(n),i=Ge(r?.quotedMessage);if(!i)return null;let a=gt(i),o=a?K(a):void 0,s=[st(i),o].filter(Boolean).join(`
1
+ import{S as e,T as t,j as n,p as r,t as i}from"./subsystem-BLbY429l.js";import{Hn as a,It as o,Nt as s,Un as c,Yn as l,ai as u,jo as d,jt as f}from"./auth-profiles-T8DuH3ax.js";import{t as p}from"./command-format-CLxIPuLR.js";import{a as m,c as h,n as g,r as _}from"./session-key-C7F_iqYg.js";import{S as v,_ as y,d as b,f as x,n as S,p as C,w}from"./utils-CGdo13HV.js";import{$ as ee,G as T,U as E,q as D}from"./plugins-DNlgeTTc.js";import{B as O,Bn as te,Cn as k,In as ne,J as A,K as j,M,Mr as N,N as P,Q as re,R as ie,U as F,Un as I,W as ae,Wn as L,_t as oe,ar as se,b as R,dn as z,gt as ce,ht as B,j as le,jr as V,mt as H,q as ue,un as U,z as W,zn as de}from"./compact-BEeB6bwq.js";import{c as G}from"./paths-BfjJY2VL.js";import{X as K,Z as fe}from"./send-DkiKKUkt.js";import{i as pe}from"./fetch-CQaNr5J1.js";import{v as me}from"./audio-transcription-runner-Bd1OZC6K.js";import{a as he,d as ge,h as _e,m as ve,s as ye}from"./ir-D8Hh84ab.js";import{f as be,p as xe}from"./session-utils-8acNlxwP.js";import{d as Se,f as Ce,l as we,p as Te}from"./pi-tools.policy-D40r0HmD.js";import{c as Ee}from"./pairing-store-BH-FTYkn.js";import{a as De,o as Oe,s as ke}from"./group-access-BHKVOhrj.js";import{n as Ae}from"./channel-activity-BBrgoad1.js";import{t as je}from"./tables-Brc2lNcB.js";import{r as Me}from"./format-duration-C8AzNqKh.js";import{r as Ne}from"./active-listener-D8VOdVx3.js";import{i as Pe,r as Fe}from"./outbound-BtUeDLjU.js";import{i as Ie,n as q,r as Le,t as Re}from"./session-bk3gFwO4.js";import{randomUUID as ze}from"node:crypto";import{DisconnectReason as Be,downloadMediaMessage as Ve,extractMessageContent as He,getContentType as Ue,isJidGroup as We,normalizeMessageContent as Ge}from"@whiskeysockets/baileys";const Ke={initialMs:2e3,maxMs:3e4,factor:1.8,jitter:.25,maxAttempts:12};function qe(e,t){let n=t??e.web?.heartbeatSeconds;return typeof n==`number`&&n>0?n:60}function Je(e,t){let n=e.web?.reconnect??{},r=t??{},i={...Ke,...n,...r};return i.initialMs=Math.max(250,i.initialMs),i.maxMs=Math.max(i.initialMs,i.maxMs),i.factor=S(i.factor,1.1,10),i.jitter=S(i.jitter,0,1),i.maxAttempts=Math.max(0,Math.floor(i.maxAttempts)),i}function J(){return ze()}const Y=i(`gateway/channels/whatsapp`),X=Y.child(`inbound`),Z=Y.child(`outbound`),Ye=Y.child(`heartbeat`);function Xe(){return setInterval(()=>{},1e6).unref(),new Promise(()=>{})}const Ze=se({ttlMs:20*6e4,maxSize:5e3});function Qe(e){return Ze.check(e)}const $e=new Set([`FN`,`N`,`TEL`]);function et(e){if(!e)return{phones:[]};let t=e.split(/\r?\n/),n,r,i=[];for(let e of t){let t=e.trim();if(!t)continue;let a=t.indexOf(`:`);if(a===-1)continue;let o=t.slice(0,a).toUpperCase(),s=t.slice(a+1).trim();if(!s)continue;let c=tt(o);if(!c||!$e.has(c))continue;let l=nt(s);if(l){if(c===`FN`&&!r){r=rt(l);continue}if(c===`N`&&!n){n=rt(l);continue}if(c===`TEL`){let e=it(l);e&&i.push(e)}}}return{name:r??n,phones:i}}function tt(e){let[t]=e.split(`;`);if(!t)return;let n=t.split(`.`);return n[n.length-1]||void 0}function nt(e){return e.replace(/\\n/gi,` `).replace(/\\,/g,`,`).replace(/\\;/g,`;`).trim()}function rt(e){return e.replace(/;/g,` `).replace(/\s+/g,` `).trim()}function it(e){let t=e.trim();return t?t.toLowerCase().startsWith(`tel:`)?t.slice(4).trim():t:``}function Q(e){return Ge(e)}function at(e){if(!e)return;let t=Ue(e),n=t?e[t]:void 0,r=n&&typeof n==`object`&&`contextInfo`in n?n.contextInfo:void 0;if(r)return r;let i=e.extendedTextMessage?.contextInfo??e.imageMessage?.contextInfo??e.videoMessage?.contextInfo??e.documentMessage?.contextInfo??e.audioMessage?.contextInfo??e.stickerMessage?.contextInfo??e.buttonsResponseMessage?.contextInfo??e.listResponseMessage?.contextInfo??e.templateButtonReplyMessage?.contextInfo??e.interactiveResponseMessage?.contextInfo??e.buttonsMessage?.contextInfo??e.listMessage?.contextInfo;if(i)return i;for(let t of Object.values(e)){if(!t||typeof t!=`object`||!(`contextInfo`in t))continue;let e=t.contextInfo;if(e)return e}}function ot(e){let t=Q(e);if(!t)return;let n=[t.extendedTextMessage?.contextInfo?.mentionedJid,t.extendedTextMessage?.contextInfo?.quotedMessage?.extendedTextMessage?.contextInfo?.mentionedJid,t.imageMessage?.contextInfo?.mentionedJid,t.videoMessage?.contextInfo?.mentionedJid,t.documentMessage?.contextInfo?.mentionedJid,t.audioMessage?.contextInfo?.mentionedJid,t.stickerMessage?.contextInfo?.mentionedJid,t.buttonsResponseMessage?.contextInfo?.mentionedJid,t.listResponseMessage?.contextInfo?.mentionedJid].flatMap(e=>e??[]).filter(Boolean);if(n.length!==0)return Array.from(new Set(n))}function st(e){let t=Q(e);if(!t)return;let n=He(t),r=[t,n&&n!==t?n:void 0];for(let e of r){if(!e)continue;if(typeof e.conversation==`string`&&e.conversation.trim())return e.conversation.trim();let t=e.extendedTextMessage?.text;if(t?.trim())return t.trim();let n=e.imageMessage?.caption??e.videoMessage?.caption??e.documentMessage?.caption;if(n?.trim())return n.trim()}let i=lt(t)??(n&&n!==t?lt(n):void 0);if(i)return i}function ct(e){let t=Q(e);if(t){if(t.imageMessage)return`<media:image>`;if(t.videoMessage)return`<media:video>`;if(t.audioMessage)return`<media:audio>`;if(t.documentMessage)return`<media:document>`;if(t.stickerMessage)return`<media:sticker>`}}function lt(e){let t=Q(e);if(!t)return;let n=t.contactMessage??void 0;if(n){let{name:e,phones:t}=ut({displayName:n.displayName,vcard:n.vcard});return dt(e,t)}let r=t.contactsArrayMessage?.contacts??void 0;if(!(!r||r.length===0))return ft(r.map(e=>ut({displayName:e.displayName,vcard:e.vcard})).map(e=>pt(e.name,e.phones)).filter(e=>!!e),r.length)}function ut(e){let t=(e.displayName??``).trim(),n=et(e.vcard??void 0);return{name:t||n.name,phones:n.phones}}function dt(e,t){let n=pt(e,t);return n?`<contact: ${n}>`:`<contact>`}function ft(e,t){let n=e.map(e=>e.trim()).filter(Boolean);if(n.length===0)return`<contacts: ${t} ${t===1?`contact`:`contacts`}>`;let r=Math.max(t-n.length,0),i=r>0?` +${r} more`:``;return`<contacts: ${n.join(`, `)}${i}>`}function pt(e,t){let n=[e,mt(t)].filter(e=>!!e);if(n.length!==0)return n.join(`, `)}function mt(e){let t=e?.map(e=>e.trim()).filter(Boolean)??[];if(t.length===0)return;let{shown:n,remaining:r}=ht(t,t.length,1),[i]=n;if(i)return r===0?i:`${i} (+${r} more)`}function ht(e,t,n){let r=e.slice(0,n);return{shown:r,remaining:Math.max(t-r.length,0)}}function gt(e){let t=Q(e);if(!t)return null;let n=t.liveLocationMessage??void 0;if(n){let e=n.degreesLatitude,t=n.degreesLongitude;if(e!=null&&t!=null){let r=Number(e),i=Number(t);if(Number.isFinite(r)&&Number.isFinite(i))return{latitude:r,longitude:i,accuracy:n.accuracyInMeters??void 0,caption:n.caption??void 0,source:`live`,isLive:!0}}}let r=t.locationMessage??void 0;if(r){let e=r.degreesLatitude,t=r.degreesLongitude;if(e!=null&&t!=null){let n=Number(e),i=Number(t);if(Number.isFinite(n)&&Number.isFinite(i)){let e=!!r.isLive;return{latitude:n,longitude:i,accuracy:r.accuracyInMeters??void 0,name:r.name??void 0,address:r.address??void 0,caption:r.comment??void 0,source:e?`live`:r.name||r.address?`place`:`pin`,isLive:e}}}}return null}function _t(t){let n=Q(t);if(!n)return null;let r=at(n),i=Ge(r?.quotedMessage);if(!i)return null;let a=gt(i),o=a?K(a):void 0,s=[st(i),o].filter(Boolean).join(`
2
2
  `).trim();if(s||=ct(i),!s){let t=i?Ue(i):void 0;return e(`Quoted message missing extractable body${t?` (type ${t})`:``}`),null}let c=r?.participant??void 0,l=c?x(c)??c:void 0,u=l??`unknown sender`;return{id:r?.stanzaId?String(r.stanzaId):void 0,body:s,sender:u,senderJid:c,senderE164:l}}function vt(e){return Oe({providerConfigPresent:e.providerConfigPresent,groupPolicy:e.groupPolicy,defaultGroupPolicy:e.defaultGroupPolicy})}async function yt(t){let n=d(),r=E({cfg:n,accountId:t.accountId}),i=r.dmPolicy??`pairing`,a=r.allowFrom??[],o=await we({provider:`whatsapp`,accountId:r.accountId,dmPolicy:i}),s=a.length===0&&t.selfE164?[t.selfE164]:[],c=a.length>0?a:s,l=r.groupAllowFrom??(a.length>0?a:void 0),u=t.from===t.selfE164,f=r.selfChatMode??b(t.selfE164,a),p=typeof t.pairingGraceMs==`number`&&t.pairingGraceMs>0?t.pairingGraceMs:3e4,m=typeof t.connectedAtMs==`number`&&typeof t.messageTimestampMs==`number`&&t.messageTimestampMs<t.connectedAtMs-p,h=De(n),{groupPolicy:g,providerMissingFallbackApplied:_}=vt({providerConfigPresent:n.channels?.whatsapp!==void 0,groupPolicy:r.groupPolicy,defaultGroupPolicy:h});ke({providerMissingFallbackApplied:_,providerKey:`whatsapp`,accountId:r.accountId,log:t=>e(t)});let v=C(t.from),y=typeof t.senderE164==`string`?C(t.senderE164):null,x=Ce({isGroup:t.group,dmPolicy:i,groupPolicy:g,allowFrom:t.group?a:c,groupAllowFrom:l,storeAllowFrom:o,isSenderAllowed:e=>{if(e.includes(`*`))return!0;let n=new Set(e.map(e=>C(String(e))).filter(e=>!!e));return!t.group&&u?!0:t.group?!!(y&&n.has(y)):n.has(v)}});if(t.group&&x.decision!==`allow`)return x.reason===`groupPolicy=disabled`?e(`Blocked group message (groupPolicy: disabled)`):x.reason===`groupPolicy=allowlist (empty allowlist)`?e(`Blocked group message (groupPolicy: allowlist, no groupAllowFrom)`):e(`Blocked group message from ${t.senderE164??`unknown sender`} (groupPolicy: allowlist)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:f,resolvedAccountId:r.accountId};if(!t.group){if(t.isFromMe&&!u)return e(`Skipping outbound DM (fromMe); no pairing reply needed.`),{allowed:!1,shouldMarkRead:!1,isSelfChat:f,resolvedAccountId:r.accountId};if(x.decision===`block`&&x.reason===`dmPolicy=disabled`)return e(`Blocked dm (dmPolicy: disabled)`),{allowed:!1,shouldMarkRead:!1,isSelfChat:f,resolvedAccountId:r.accountId};if(x.decision===`pairing`&&!u){let n=t.from;return m?e(`Skipping pairing reply for historical DM from ${n}.`):await M({channel:`whatsapp`,senderId:n,senderIdLine:`Your WhatsApp phone number: ${n}`,meta:{name:(t.pushName??``).trim()||void 0},upsertPairingRequest:async({id:e,meta:t})=>await Ee({channel:`whatsapp`,id:e,accountId:r.accountId,meta:t}),onCreated:()=>{e(`whatsapp pairing request sender=${n} name=${t.pushName??`unknown`}`)},sendPairingReply:async e=>{await t.sock.sendMessage(t.remoteJid,{text:e})},onReplyError:t=>{e(`whatsapp pairing reply failed for ${n}: ${String(t)}`)}}),{allowed:!1,shouldMarkRead:!1,isSelfChat:f,resolvedAccountId:r.accountId}}if(x.decision!==`allow`)return e(`Blocked unauthorized sender ${t.from} (dmPolicy=${i})`),{allowed:!1,shouldMarkRead:!1,isSelfChat:f,resolvedAccountId:r.accountId}}return{allowed:!0,shouldMarkRead:!0,isSelfChat:f,resolvedAccountId:r.accountId}}function bt(e){return Ge(e)}function xt(e){let t=e.imageMessage?.mimetype??e.videoMessage?.mimetype??e.documentMessage?.mimetype??e.audioMessage?.mimetype??e.stickerMessage?.mimetype??void 0;if(t)return t;if(e.audioMessage)return`audio/ogg; codecs=opus`;if(e.imageMessage)return`image/jpeg`;if(e.videoMessage)return`video/mp4`;if(e.stickerMessage)return`image/webp`}async function St(t,n){let r=bt(t.message);if(!r)return;let i=xt(r),a=r.documentMessage?.fileName??void 0;if(!(!r.imageMessage&&!r.videoMessage&&!r.documentMessage&&!r.audioMessage&&!r.stickerMessage))try{return{buffer:await Ve(t,`buffer`,{},{reuploadRequest:n.updateMediaMessage,logger:n.logger}),mimetype:i,fileName:a}}catch(t){e(`downloadMediaMessage failed: ${String(t)}`);return}}function Ct(e){Ae({channel:`whatsapp`,accountId:e,direction:`outbound`})}function wt(e){return typeof e==`object`&&e&&`key`in e?String(e.key?.id??`unknown`):`unknown`}function Tt(e){return{sendMessage:async(t,n,r,i,a)=>{let o=w(t),s;if(r&&i)if(i.startsWith(`image/`))s={image:r,caption:n||void 0,mimetype:i};else if(i.startsWith(`audio/`))s={audio:r,ptt:!0,mimetype:i};else if(i.startsWith(`video/`)){let e=a?.gifPlayback;s={video:r,caption:n||void 0,mimetype:i,...e?{gifPlayback:!0}:{}}}else s={document:r,fileName:a?.fileName?.trim()||`file`,caption:n||void 0,mimetype:i};else s={text:n};let c=await e.sock.sendMessage(o,s);return Ct(a?.accountId??e.defaultAccountId),{messageId:wt(c)}},sendPoll:async(t,n)=>{let r=w(t),i=await e.sock.sendMessage(r,{poll:{name:n.question,values:n.options,selectableCount:n.maxSelections??1}});return Ct(e.defaultAccountId),{messageId:wt(i)}},sendReaction:async(t,n,r,i,a)=>{let o=w(t);await e.sock.sendMessage(o,{react:{text:r,key:{remoteJid:o,id:n,fromMe:i,participant:a?w(a):void 0}}})},sendComposingTo:async t=>{let n=w(t);await e.sock.sendPresenceUpdate(`composing`,n)}}}async function Et(r){let a=n({module:`web-inbound`}),o=i(`gateway/channels/whatsapp`).child(`inbound`),s=await Re(!1,r.verbose,{authDir:r.authDir});await Ie(s);let c=Date.now(),l=null,d=new Promise(e=>{l=e}),f=e=>{if(!l)return;let t=l;l=null,t(e)};try{await s.sendPresenceUpdate(`available`),t()&&e(`Sent global 'available' presence on connect`)}catch(t){e(`Failed to send 'available' presence on connect: ${String(t)}`)}let p=s.user?.id,m=p?x(p):null,h=j({debounceMs:r.debounceMs??0,buildKey:e=>{let t=e.chatType===`group`?e.senderJid??e.senderE164??e.senderName??e.from:e.from;if(!t)return null;let n=e.chatType===`group`?e.chatId:e.from;return`${e.accountId}:${n}:${t}`},shouldDebounce:r.shouldDebounce,onFlush:async e=>{let t=e.at(-1);if(!t)return;if(e.length===1){await r.onMessage(t);return}let n=new Set;for(let t of e)for(let e of t.mentionedJids??[])n.add(e);let i=e.map(e=>e.body).filter(Boolean).join(`
3
3
  `),a={...t,body:i,mentionedJids:n.size>0?Array.from(n):void 0};await r.onMessage(a)},onError:e=>{a.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)}}),g=new Map,_=300*1e3,v=s.signalRepository?.lidMapping,b=async e=>y(e,{authDir:r.authDir,lidLookup:v}),S=async t=>{let n=g.get(t);if(n&&n.expires>Date.now())return n;try{let e=await s.groupMetadata(t),n=(await Promise.all(e.participants?.map(async e=>await b(e.id)??e.id)??[])).filter(Boolean)??[],r={subject:e.subject,participants:n,expires:Date.now()+_};return g.set(t,r),r}catch(n){return e(`Failed to fetch group metadata for ${t}: ${String(n)}`),{expires:Date.now()+_}}},C=async e=>{let t=e.key?.id??void 0,n=e.key?.remoteJid;if(!n||n.endsWith(`@status`)||n.endsWith(`@broadcast`))return null;let i=We(n)===!0;if(t&&Qe(`${r.accountId}:${n}:${t}`))return null;let a=e.key?.participant??void 0,o=i?n:await b(n);if(!o)return null;let l=i?a?await b(a):null:o,u,d;if(i){let e=await S(n);u=e.subject,d=e.participants}let f=e.messageTimestamp?Number(e.messageTimestamp)*1e3:void 0,p=await yt({accountId:r.accountId,from:o,selfE164:m,senderE164:l,group:i,pushName:e.pushName??void 0,isFromMe:!!e.key?.fromMe,messageTimestampMs:f,connectedAtMs:c,sock:{sendMessage:(e,t)=>s.sendMessage(e,t)},remoteJid:n});return p.allowed?{id:t,remoteJid:n,group:i,participantJid:a,from:o,senderE164:l,groupSubject:u,groupParticipants:d,messageTimestampMs:f,access:p}:null},w=async n=>{let{id:i,remoteJid:a,participantJid:o,access:c}=n;if(i&&!c.isSelfChat&&r.sendReadReceipts!==!1)try{await s.readMessages([{remoteJid:a,id:i,participant:o,fromMe:!1}]),t()&&e(`Marked message ${i} as read for ${a}${o?` (participant ${o})`:``}`)}catch(t){e(`Failed to mark message ${i} read: ${String(t)}`)}else i&&c.isSelfChat&&t()&&e(`Self-chat mode: skipping read receipt for ${i}`)},ee=async t=>{let n=gt(t.message??void 0),i=n?K(n):void 0,a=st(t.message??void 0);if(i&&(a=[a,i].filter(Boolean).join(`
4
4
  `).trim()),!a&&(a=ct(t.message??void 0),!a))return null;let o=_t(t.message),c,l,d;try{let e=await St(t,s);if(e){let t=(typeof r.mediaMaxMb==`number`&&r.mediaMaxMb>0?r.mediaMaxMb:50)*1024*1024;c=(await u(e.buffer,e.mimetype,`inbound`,t,e.fileName)).path,l=e.mimetype,d=e.fileName}}catch(t){e(`Inbound media download failed: ${String(t)}`)}return{body:a,location:n??void 0,replyContext:o,mediaPath:c,mediaType:l,mediaFileName:d}},T=async(t,n,r)=>{let i=n.remoteJid,c=async()=>{try{await s.sendPresenceUpdate(`composing`,i)}catch(t){e(`Presence update failed: ${String(t)}`)}},l=async e=>{await s.sendMessage(i,{text:e})},u=async e=>{await s.sendMessage(i,e)},d=n.messageTimestampMs,f=ot(t.message),g=t.pushName??void 0;a.info({from:n.from,to:m??`me`,body:r.body,mediaPath:r.mediaPath,mediaType:r.mediaType,mediaFileName:r.mediaFileName,timestamp:d},`inbound message`);let _={id:n.id,from:n.from,conversationId:n.from,to:m??`me`,accountId:n.access.resolvedAccountId,body:r.body,pushName:g,timestamp:d,chatType:n.group?`group`:`direct`,chatId:n.remoteJid,senderJid:n.participantJid,senderE164:n.senderE164??void 0,senderName:g,replyToId:r.replyContext?.id,replyToBody:r.replyContext?.body,replyToSender:r.replyContext?.sender,replyToSenderJid:r.replyContext?.senderJid,replyToSenderE164:r.replyContext?.senderE164,groupSubject:n.groupSubject,groupParticipants:n.groupParticipants,mentionedJids:f??void 0,selfJid:p,selfE164:m,fromMe:!!t.key?.fromMe,location:r.location??void 0,sendComposing:c,reply:l,sendMedia:u,mediaPath:r.mediaPath,mediaType:r.mediaType,mediaFileName:r.mediaFileName};try{Promise.resolve(h.enqueue(_)).catch(e=>{a.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)})}catch(e){a.error({error:String(e)},`failed handling inbound web message`),o.error(`Failed handling inbound web message: ${String(e)}`)}},E=async e=>{if(!(e.type!==`notify`&&e.type!==`append`))for(let t of e.messages??[]){Ae({channel:`whatsapp`,accountId:r.accountId,direction:`inbound`});let n=await C(t);if(!n||(await w(n),e.type===`append`))continue;let i=await ee(t);i&&await T(t,n,i)}};s.ev.on(`messages.upsert`,E);let D=e=>{try{if(e.connection===`close`){let t=Le(e.lastDisconnect?.error);f({status:t,isLoggedOut:t===Be.loggedOut,error:e.lastDisconnect?.error})}}catch(e){a.error({error:String(e)},`connection.update handler error`),f({status:void 0,isLoggedOut:!1,error:e})}};return s.ev.on(`connection.update`,D),{close:async()=>{try{let e=s.ev,t=E,n=D;typeof e.off==`function`?(e.off(`messages.upsert`,t),e.off(`connection.update`,n)):typeof e.removeListener==`function`&&(e.removeListener(`messages.upsert`,t),e.removeListener(`connection.update`,n)),s.ws?.close()}catch(t){e(`Socket close failed: ${String(t)}`)}},onClose:d,signalClose:e=>{f(e??{status:void 0,isLoggedOut:!1,error:`closed`})},...Tt({sock:{sendMessage:(e,t)=>s.sendMessage(e,t),sendPresenceUpdate:(e,t)=>s.sendPresenceUpdate(e,t)},defaultAccountId:r.accountId})}}function Dt(e,t){return{mentionRegexes:I(e,t),allowFrom:e.channels?.whatsapp?.allowFrom}}function Ot(e,t){let n=t?{authDir:t}:void 0;return{normalizedMentions:e.mentionedJids?.length?e.mentionedJids.map(e=>x(e,n)??e).filter(Boolean):[],selfE164:e.selfE164??(e.selfJid?x(e.selfJid,n):null),selfJid:e.selfJid?e.selfJid.replace(/:\\d+/,``):null}}function kt(e,t,n){let r=e=>L(e),i=b(n.selfE164,t.allowFrom);if((e.mentionedJids?.length??0)>0&&!i)return!!(n.selfE164&&n.normalizedMentions.includes(n.selfE164)||n.selfJid&&n.normalizedMentions.includes(n.selfJid));let a=r(e.body);if(t.mentionRegexes.some(e=>e.test(a)))return!0;if(n.selfE164){let t=n.selfE164.replace(/\D/g,``);if(t){if(a.replace(/[^\d]/g,``).includes(t))return!0;let n=e.body.replace(/[\s-]/g,``);if(RegExp(`\\+?${t}`,`i`).test(n))return!0}}return!1}function At(e,t,n){let r=Ot(e,n);return{wasMentioned:kt(e,t,r),details:{from:e.from,body:e.body,bodyClean:L(e.body),mentionedJids:e.mentionedJids??null,normalizedMentionedJids:r.normalizedMentions.length?r.normalizedMentions:null,selfJid:e.selfJid??null,selfJidBare:r.selfJid,selfE164:e.selfE164??null,resolvedSelfE164:r.selfE164}}}function jt(e,t){let n=e.allowFrom;return(Array.isArray(n)&&n.length>0?n:t?[t]:[]).filter(e=>!!(e&&e!==`*`)).map(e=>C(e)).filter(e=>!!e)}function Mt(e){let t=new Set,n=Math.max(1,e.maxItems??100),r=e=>`combined:${e.sessionKey}:${e.combinedBody}`,i=()=>{for(;t.size>n;){let e=t.values().next().value;if(!e)break;t.delete(e)}};return{rememberText:(n,a)=>{n&&(t.add(n),a.combinedBody&&a.combinedBodySessionKey&&t.add(r({sessionKey:a.combinedBodySessionKey,combinedBody:a.combinedBody})),a.logVerboseMessage&&e.logVerbose?.(`Added to echo detection set (size now: ${t.size}): ${n.substring(0,50)}...`),i())},has:e=>t.has(e),forget:e=>{t.delete(e)},buildCombinedKey:r}}function Nt(e){let t=H({agentId:e.agentId,channel:`whatsapp`,accountId:e.route.accountId,peer:{kind:e.msg.chatType===`group`?`group`:`direct`,id:e.peerId},dmScope:e.cfg.session?.dmScope,identityLinks:e.cfg.session?.identityLinks}),n=_({agentId:e.agentId,mainKey:g});return{sessionKey:t,mainSessionKey:n,lastRoutePolicy:B({sessionKey:t,mainSessionKey:n})}}async function Pt(e){let t=e.cfg.broadcast?.[e.peerId];if(!t||!Array.isArray(t)||t.length===0)return!1;let n=e.cfg.broadcast?.strategy||`parallel`;X.info(`Broadcasting message to ${t.length} agents (${n})`);let r=e.cfg.agents?.list?.map(e=>h(e.id)),i=(r?.length??0)>0,a=e.msg.chatType===`group`?e.groupHistories.get(e.groupHistoryKey)??[]:void 0,o=async t=>{let n=h(t);if(i&&!r?.includes(n))return X.warn(`Broadcast agent ${t} not found in agents.list; skipping`),!1;let o=Nt({cfg:e.cfg,msg:e.msg,route:e.route,peerId:e.peerId,agentId:n}),s={...e.route,agentId:n,...o};try{return await e.processMessage(e.msg,s,e.groupHistoryKey,{groupHistory:a,suppressGroupHistoryClear:!0})}catch(e){return X.error(`Broadcast agent ${t} failed: ${q(e)}`),!1}};if(n===`sequential`)for(let e of t)await o(e);else await Promise.allSettled(t.map(o));return e.msg.chatType===`group`&&e.groupHistories.set(e.groupHistoryKey,[]),!0}function Ft(e,t,n){let r=e;for(let e of t)r=r.replace(e,` `);if(n){let e=n.replace(/\D/g,``);if(e){let t=RegExp(`\\+?${e}`,`g`);r=r.replace(t,` `)}}return r.replace(/\s+/g,` `).trim()}function It(e,t){let n=l({From:t,ChatType:`group`,Provider:`whatsapp`})?.id,r=e.channels?.whatsapp,i=!!(r?.groupAllowFrom?.length||r?.allowFrom?.length);return a({cfg:e,channel:`whatsapp`,groupId:n??t,hasGroupAllowFrom:i})}function Lt(e,t){let n=l({From:t,ChatType:`group`,Provider:`whatsapp`})?.id;return c({cfg:e,channel:`whatsapp`,groupId:n??t})}function Rt(e){let t=f(G(e.cfg.session?.store,{agentId:e.agentId}))[e.sessionKey],n=Lt(e.cfg,e.conversationId)?`mention`:`always`;return U(t?.groupActivation)??n}function zt(e,t,n){for(let r of e){let e=C(r)??r;!e||t.has(e)||(t.add(e),n.push(e))}}function Bt(e,t,n,r){if(!n||!r)return;let i=C(n)??n;if(!i)return;let a=e.get(t);a||(a=new Map,e.set(t,a)),a.set(i,r)}function Vt(e){let{participants:t,roster:n,fallbackE164:r}=e,i=new Set,a=[];if(t?.length&&zt(t,i,a),n&&zt(n.keys(),i,a),a.length===0&&r){let e=C(r)??r;e&&a.push(e)}if(a.length!==0)return a.map(e=>{let t=n?.get(e);return t?`${t} (${e})`:e}).join(`, `)}function Ht(e,t){let n=C(t.senderE164??``);return n?jt(e,t.selfE164??void 0).includes(n):!1}function Ut(e){let t=e.msg.senderName&&e.msg.senderE164?`${e.msg.senderName} (${e.msg.senderE164})`:e.msg.senderName??e.msg.senderE164??`Unknown`;O({historyMap:e.groupHistories,historyKey:e.groupHistoryKey,limit:e.groupHistoryLimit,entry:{sender:t,body:e.msg.body,timestamp:e.msg.timestamp,id:e.msg.id,senderJid:e.msg.senderJid}})}function Wt(e,t){return e.logVerbose(t),Ut({msg:e.msg,groupHistories:e.groupHistories,groupHistoryKey:e.groupHistoryKey,groupHistoryLimit:e.groupHistoryLimit}),{shouldProcess:!1}}function Gt(e){let t=It(e.cfg,e.conversationId);if(t.allowlistEnabled&&!t.allowed)return e.logVerbose(`Skipping group message ${e.conversationId} (not in allowlist)`),{shouldProcess:!1};Bt(e.groupMemberNames,e.groupHistoryKey,e.msg.senderE164,e.msg.senderName);let n=Dt(e.cfg,e.agentId),r=Ft(e.msg.body,n.mentionRegexes,e.msg.selfE164),i=z(r),a=Ht(e.baseMentionConfig,e.msg),o=a&&de(r,e.cfg);if(i.hasCommand&&!a)return Wt(e,`Ignoring /activation from non-owner in group ${e.conversationId}`);let s=At(e.msg,n,e.authDir);e.replyLogger.debug({conversationId:e.conversationId,wasMentioned:s.wasMentioned,...s.details},`group mention debug`);let c=s.wasMentioned,l=Rt({cfg:e.cfg,agentId:e.agentId,sessionKey:e.sessionKey,conversationId:e.conversationId})!==`always`,u=e.msg.selfJid?.replace(/:\\d+/,``),d=e.msg.replyToSenderJid?.replace(/:\\d+/,``),f=e.msg.selfE164?C(e.msg.selfE164):null,p=e.msg.replyToSenderE164?C(e.msg.replyToSenderE164):null,m=P({requireMention:l,canDetectMention:!0,wasMentioned:c,implicitMention:!!(u&&d&&u===d||f&&p&&f===p),shouldBypassMention:o});return e.msg.wasMentioned=m.effectiveWasMentioned,!o&&l&&m.shouldSkip?Wt(e,`Group message stored for context (no mention detected) in ${e.conversationId}: ${e.msg.body}`):{shouldProcess:!0}}function Kt(e,t){e.add(t),t.finally(()=>{e.delete(t)})}function qt(e){let t=G(e.cfg.session?.store,{agentId:e.storeAgentId}),n=o({storePath:t,sessionKey:e.sessionKey,deliveryContext:{channel:e.channel,to:e.to,accountId:e.accountId},ctx:e.ctx}).catch(n=>{e.warn({error:q(n),storePath:t,sessionKey:e.sessionKey,to:e.to},`failed updating last route`)});Kt(e.backgroundTasks,n)}function Jt(e){return e.chatType===`group`?e.conversationId??e.from:e.senderE164?C(e.senderE164)??e.senderE164:e.from.includes(`@`)?x(e.from)??e.from:C(e.from)??e.from}function $(e,t=400){return!e||e.length<=t?e:`${e.slice(0,t)}… (truncated ${e.length-t} chars)`}function Yt(e){let t=(e instanceof Error?`${e.message}\n${e.stack??``}`:(e=>{if(e==null)return``;if(typeof e==`string`)return e;if(e instanceof Error)return`${e.message}\n${e.stack??``}`;if(typeof e==`object`)try{return JSON.stringify(e)}catch{return Object.prototype.toString.call(e)}return typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`?String(e):typeof e==`symbol`?e.description??e.toString():typeof e==`function`?e.name?`[function ${e.name}]`:`[function]`:Object.prototype.toString.call(e)})(e)).toLowerCase();return t.includes(`unsupported state or unable to authenticate data`)||t.includes(`bad mac`)?t.includes(`@whiskeysockets/baileys`)||t.includes(`baileys`)||t.includes(`noise-handler`)||t.includes(`aesdecryptgcm`):!1}function Xt(e){if(e.isReasoning===!0)return!0;let t=e.text;return typeof t==`string`?t.trimStart().toLowerCase().startsWith(`reasoning:`):!1}async function Zt(n){let{replyResult:r,msg:i,maxMediaBytes:a,textLimit:o,replyLogger:s,connectionId:c,skipLog:l}=n,u=Date.now();if(Xt(r)){Z.debug(`Suppressed reasoning payload to ${i.from}`);return}let d=n.tableMode??`code`,f=n.chunkMode??`length`,p=ge(Pe(je(r.text||``,d)),o,f),m=r.mediaUrls?.length?r.mediaUrls:r.mediaUrl?[r.mediaUrl]:[],h=async(t,n,r=3)=>{let a;for(let o=1;o<=r;o++)try{return await t()}catch(t){a=t;let s=q(t),c=o===r;if(!/closed|reset|timed\s*out|disconnect/i.test(s)||c)throw t;let l=500*o;e(`Retrying ${n} to ${i.from} after failure (${o}/${r-1}) in ${l}ms: ${s}`),await v(l)}throw a};if(m.length===0&&p.length){let e=p.length;for(let[t,n]of p.entries()){let r=Date.now();if(await h(()=>i.reply(n),`text`),!l){let n=Date.now()-r;Z.debug(`Sent chunk ${t+1}/${e} to ${i.from} (${n.toFixed(0)}ms)`)}}s.info({correlationId:i.id??J(),connectionId:c??null,to:i.from,from:i.to,text:$(r.text,240),mediaUrl:null,mediaSizeBytes:null,mediaKind:null,durationMs:Date.now()-u},`auto-reply sent (text)`);return}let g=[...p];for(let[r,o]of m.entries()){let l=r===0&&g.shift()||void 0;try{let r=await he(o,{maxBytes:a,localRoots:n.mediaLocalRoots});if(t()&&(e(`Web auto-reply media size: ${(r.buffer.length/(1024*1024)).toFixed(2)}MB`),e(`Web auto-reply media source: ${o} (kind ${r.kind})`)),r.kind===`image`)await h(()=>i.sendMedia({image:r.buffer,caption:l,mimetype:r.contentType}),`media:image`);else if(r.kind===`audio`)await h(()=>i.sendMedia({audio:r.buffer,ptt:!0,mimetype:r.contentType,caption:l}),`media:audio`);else if(r.kind===`video`)await h(()=>i.sendMedia({video:r.buffer,caption:l,mimetype:r.contentType}),`media:video`);else{let e=r.fileName??o.split(`/`).pop()??`file`,t=r.contentType??`application/octet-stream`;await h(()=>i.sendMedia({document:r.buffer,fileName:e,caption:l,mimetype:t}),`media:document`)}Z.info(`Sent media reply to ${i.from} (${(r.buffer.length/(1024*1024)).toFixed(2)}MB)`),s.info({correlationId:i.id??J(),connectionId:c??null,to:i.from,from:i.to,text:l??null,mediaUrl:o,mediaSizeBytes:r.buffer.length,mediaKind:r.kind,durationMs:Date.now()-u},`auto-reply sent (media)`)}catch(e){if(Z.error(`Failed sending web media to ${i.from}: ${q(e)}`),s.warn({err:e,mediaUrl:o},`failed to send web media reply`),r===0){let t=e instanceof Error?`⚠️ Media failed: ${e.message}`:`⚠️ Media failed.`,n=[g.shift()??l??``,t].filter(Boolean).join(`
5
5
  `);n&&(Z.warn(`Media skipped; sent text-only to ${i.from}`),await i.reply(n))}}}for(let e of g)await i.reply(e)}function Qt(t){if(!t.msg.id)return;let n=t.cfg.channels?.whatsapp?.ackReaction,r=(n?.emoji??``).trim(),i=n?.direct??!0,a=n?.group??`mentions`,o=t.msg.conversationId??t.msg.from,s=t.msg.chatType===`group`?Rt({cfg:t.cfg,agentId:t.agentId,sessionKey:t.sessionKey,conversationId:o}):null;F({emoji:r,isDirect:t.msg.chatType===`direct`,isGroup:t.msg.chatType===`group`,directEnabled:i,groupMode:a,wasMentioned:t.msg.wasMentioned===!0,groupActivated:s===`always`})&&(t.info({chatId:t.msg.chatId,messageId:t.msg.id,emoji:r},`sending ack reaction`),Fe(t.msg.chatId,t.msg.id,r,{verbose:t.verbose,fromMe:!1,participant:t.msg.senderJid,accountId:t.accountId}).catch(n=>{t.warn({error:q(n),chatId:t.msg.chatId,messageId:t.msg.id},`failed to send ack reaction`),e(`WhatsApp ack reaction failed for chat ${t.msg.chatId}: ${q(n)}`)}))}function $t(e){return e.replyToBody?`[Replying to ${e.replyToSender??`unknown sender`}${e.replyToId?` id:${e.replyToId}`:``}]\n${e.replyToBody}\n[/Replying]`:null}function en(e){let{cfg:t,msg:n,agentId:r,previousTimestamp:i,envelope:a}=e,o=N(t,r,{configured:t.channels?.whatsapp?.messagePrefix,hasAllowFrom:(t.channels?.whatsapp?.allowFrom?.length??0)>0}),s=o?`${o} `:``,c=$t(n),l=`${s}${n.body}${c?`\n\n${c}`:``}`;return A({channel:`WhatsApp`,from:n.chatType===`group`?n.from:n.from?.replace(/^whatsapp:/,``),timestamp:n.timestamp,body:l,chatType:n.chatType,sender:{name:n.senderName,e164:n.senderE164,id:n.senderJid},previousTimestamp:i,envelope:a,fromMe:n.fromMe})}async function tn(e){let t=e.cfg.commands?.useAccessGroups!==!1;if(!t)return!0;let n=e.msg.chatType===`group`,r=C(n?e.msg.senderE164??``:e.msg.senderE164??e.msg.from??``);if(!r)return!1;let i=E({cfg:e.cfg,accountId:e.msg.accountId}),a=i.dmPolicy??`pairing`,o=i.groupPolicy??`allowlist`,s=i.allowFrom??[],c=i.groupAllowFrom??(s.length>0?s:void 0),l=n?[]:await we({provider:`whatsapp`,accountId:e.msg.accountId,dmPolicy:a});return Se({isGroup:n,dmPolicy:a,groupPolicy:o,allowFrom:s.length>0?s:e.msg.selfE164?[e.msg.selfE164]:[],groupAllowFrom:c,storeAllowFrom:l,isSenderAllowed:e=>e.includes(`*`)?!0:e.map(e=>C(String(e))).filter(e=>!!e).includes(r),command:{useAccessGroups:t,allowTextCommands:!0,hasControlCommand:!0}}).commandAuthorized}function nn(e){let t=E({cfg:e.cfg,accountId:e.msg.accountId});return Te({dmScope:e.cfg.session?.dmScope,allowFrom:t.allowFrom,normalizeEntry:e=>C(e)})}async function rn(n){let r=n.msg.conversationId??n.msg.from,{storePath:i,envelopeOptions:a,previousTimestamp:o}=R({cfg:n.cfg,agentId:n.route.agentId,sessionKey:n.route.sessionKey}),c=en({cfg:n.cfg,msg:n.msg,agentId:n.route.agentId,previousTimestamp:o,envelope:a}),l=!1;if(n.msg.chatType===`group`){let e=n.groupHistory??n.groupHistories.get(n.groupHistoryKey)??[];e.length>0&&(c=W({entries:e.map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})),currentMessage:c,excludeLast:!1,formatEntry:e=>A({channel:`WhatsApp`,from:r,timestamp:e.timestamp,body:e.body,chatType:`group`,senderLabel:e.sender,envelope:a})})),l=!(n.suppressGroupHistoryClear??!1)}let u=n.buildCombinedEchoKey({sessionKey:n.route.sessionKey,combinedBody:c});if(n.echoHas(u))return e(`Skipping auto-reply: detected echo for combined message`),n.echoForget(u),!1;Qt({cfg:n.cfg,msg:n.msg,agentId:n.route.agentId,sessionKey:n.route.sessionKey,conversationId:r,verbose:n.verbose,accountId:n.route.accountId,info:n.replyLogger.info.bind(n.replyLogger),warn:n.replyLogger.warn.bind(n.replyLogger)});let d=n.msg.id??J();n.replyLogger.info({connectionId:n.connectionId,correlationId:d,from:n.msg.chatType===`group`?r:n.msg.from,to:n.msg.to,body:$(c,240),mediaType:n.msg.mediaType??null,mediaPath:n.msg.mediaPath??null},`inbound web message`);let f=n.msg.chatType===`group`?r:n.msg.from,p=n.msg.mediaType?`, ${n.msg.mediaType}`:``;X.info(`Inbound message ${f} -> ${n.msg.to} (${n.msg.chatType}${p}, ${c.length} chars)`),t()&&X.debug(`Inbound body: ${$(c,400)}`);let m=n.msg.chatType===`group`?void 0:n.msg.senderE164?C(n.msg.senderE164):n.msg.from.includes(`@`)?x(n.msg.from):C(n.msg.from),h=n.maxMediaTextChunkLimit??_e(n.cfg,`whatsapp`),g=ve(n.cfg,`whatsapp`,n.route.accountId),_=ye({cfg:n.cfg,channel:`whatsapp`,accountId:n.route.accountId}),v=pe(n.cfg,n.route.agentId),y=!1,b=!1,S=te(n.msg.body,n.cfg)?await tn({cfg:n.cfg,msg:n.msg}):void 0,w=n.cfg.messages?.responsePrefix,{onModelSelected:ee,...T}=ie({cfg:n.cfg,agentId:n.route.agentId,channel:`whatsapp`,accountId:n.route.accountId}),E=n.msg.chatType!==`group`&&!!n.msg.selfE164&&C(n.msg.from)===C(n.msg.selfE164??``),D=T.responsePrefix??(w===void 0&&E?V(n.cfg,n.route.agentId):void 0),O=n.msg.chatType===`group`?(n.groupHistory??n.groupHistories.get(n.groupHistoryKey)??[]).map(e=>({sender:e.sender,body:e.body,timestamp:e.timestamp})):void 0,k=ne({Body:c,BodyForAgent:n.msg.body,InboundHistory:O,RawBody:n.msg.body,CommandBody:n.msg.body,From:n.msg.from,To:n.msg.to,SessionKey:n.route.sessionKey,AccountId:n.route.accountId,MessageSid:n.msg.id,ReplyToId:n.msg.replyToId,ReplyToBody:n.msg.replyToBody,ReplyToSender:n.msg.replyToSender,MediaPath:n.msg.mediaPath,MediaUrl:n.msg.mediaUrl,MediaType:n.msg.mediaType,ChatType:n.msg.chatType,ConversationLabel:n.msg.chatType===`group`?r:n.msg.from,GroupSubject:n.msg.groupSubject,GroupMembers:Vt({participants:n.msg.groupParticipants,roster:n.groupMemberNames.get(n.groupHistoryKey),fallbackE164:n.msg.senderE164}),SenderName:n.msg.senderName,SenderId:n.msg.senderJid?.trim()||n.msg.senderE164,SenderE164:n.msg.senderE164,CommandAuthorized:S,WasMentioned:n.msg.wasMentioned,...n.msg.location?fe(n.msg.location):{},Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:n.msg.from}),j=nn({cfg:n.cfg,msg:n.msg}),M=!j||j===m,N=oe({route:n.route,sessionKey:n.route.sessionKey});m&&N===n.route.mainSessionKey&&M?qt({cfg:n.cfg,backgroundTasks:n.backgroundTasks,storeAgentId:n.route.agentId,sessionKey:n.route.mainSessionKey,channel:`whatsapp`,to:m,accountId:n.route.accountId,ctx:k,warn:n.replyLogger.warn.bind(n.replyLogger)}):m&&N===n.route.mainSessionKey&&j&&e(`Skipping main-session last route update for ${m} (pinned owner ${j})`);let P=s({storePath:i,sessionKey:n.route.sessionKey,ctx:k}).catch(e=>{n.replyLogger.warn({error:q(e),storePath:i,sessionKey:n.route.sessionKey},`failed updating session meta`)});Kt(n.backgroundTasks,P);let{queuedFinal:re}=await ae({ctx:k,cfg:n.cfg,replyResolver:n.replyResolver,dispatcherOptions:{...T,responsePrefix:D,onHeartbeatStrip:()=>{y||(y=!0,e(`Stripped stray HEARTBEAT_OK token from web reply`))},deliver:async(e,i)=>{if(i.kind!==`final`)return;await Zt({replyResult:e,msg:n.msg,mediaLocalRoots:v,maxMediaBytes:n.maxMediaBytes,textLimit:h,chunkMode:g,replyLogger:n.replyLogger,connectionId:n.connectionId,skipLog:!1,tableMode:_}),b=!0;let a=e.text?!0:void 0;n.rememberSentText(e.text,{combinedBody:c,combinedBodySessionKey:n.route.sessionKey,logVerboseMessage:a});let o=n.msg.chatType===`group`?r:n.msg.from??`unknown`,s=!!(e.mediaUrl||e.mediaUrls?.length);if(Z.info(`Auto-replied to ${o}${s?` (media)`:``}`),t()){let t=e.text==null?`<media>`:$(e.text,400);Z.debug(`Reply body: ${t}${s?` (media)`:``}`)}},onError:(e,t)=>{let i=t.kind===`tool`?`tool update`:t.kind===`block`?`block update`:`auto-reply`;Z.error(`Failed sending web ${i} to ${n.msg.from??r}: ${q(e)}`)},onReplyStart:n.msg.sendComposing},replyOptions:{disableBlockStreaming:!0,onModelSelected:ee}});return re?(l&&n.groupHistories.set(n.groupHistoryKey,[]),b):(l&&n.groupHistories.set(n.groupHistoryKey,[]),e(`Skipping auto-reply: silent token or no text/media returned from resolver`),!1)}function an(t){let n=async(e,n,r,i)=>rn({cfg:t.cfg,msg:e,route:n,groupHistoryKey:r,groupHistories:t.groupHistories,groupMemberNames:t.groupMemberNames,connectionId:t.connectionId,verbose:t.verbose,maxMediaBytes:t.maxMediaBytes,replyResolver:t.replyResolver,replyLogger:t.replyLogger,backgroundTasks:t.backgroundTasks,rememberSentText:t.echoTracker.rememberText,echoHas:t.echoTracker.has,echoForget:t.echoTracker.forget,buildCombinedEchoKey:t.echoTracker.buildCombinedKey,groupHistory:i?.groupHistory,suppressGroupHistoryClear:i?.suppressGroupHistoryClear});return async r=>{let i=r.conversationId??r.from,a=Jt(r),o=ce({cfg:d(),channel:`whatsapp`,accountId:r.accountId,peer:{kind:r.chatType===`group`?`group`:`direct`,id:a}}),s=r.chatType===`group`?m({channel:`whatsapp`,accountId:o.accountId,peerKind:`group`,peerId:a}):o.sessionKey;if(r.from===r.to&&e(`📱 Same-phone mode detected (from === to: ${r.from})`),t.echoTracker.has(r.body)){e(`Skipping auto-reply: detected echo (message matches recently sent text)`),t.echoTracker.forget(r.body);return}if(r.chatType===`group`){let n={From:r.from,To:r.to,SessionKey:o.sessionKey,AccountId:o.accountId,ChatType:r.chatType,ConversationLabel:i,GroupSubject:r.groupSubject,SenderName:r.senderName,SenderId:r.senderJid?.trim()||r.senderE164,SenderE164:r.senderE164,Provider:`whatsapp`,Surface:`whatsapp`,OriginatingChannel:`whatsapp`,OriginatingTo:i};if(qt({cfg:t.cfg,backgroundTasks:t.backgroundTasks,storeAgentId:o.agentId,sessionKey:o.sessionKey,channel:`whatsapp`,to:i,accountId:o.accountId,ctx:n,warn:t.replyLogger.warn.bind(t.replyLogger)}),!Gt({cfg:t.cfg,msg:r,conversationId:i,groupHistoryKey:s,agentId:o.agentId,sessionKey:o.sessionKey,baseMentionConfig:t.baseMentionConfig,authDir:t.account.authDir,groupHistories:t.groupHistories,groupHistoryLimit:t.groupHistoryLimit,groupMemberNames:t.groupMemberNames,logVerbose:e,replyLogger:t.replyLogger}).shouldProcess)return}else !r.senderE164&&a&&a.startsWith(`+`)&&(r.senderE164=C(a)??r.senderE164);await Pt({cfg:t.cfg,msg:r,peerId:a,route:o,groupHistoryKey:s,groupHistories:t.groupHistories,processMessage:n})||await n(r,o,s)}}function on(e){return e===440}async function sn(t,i=Et,a=!0,o=re,s=r,c,l={}){let u=J(),f=n({module:`web-auto-reply`,runId:u}),m=n({module:`web-heartbeat`,runId:u}),h=n({module:`web-reconnect`,runId:u}),g={running:!0,connected:!1,reconnectAttempts:0,lastConnectedAt:null,lastDisconnect:null,lastMessageAt:null,lastEventAt:null,lastError:null},_=()=>{l.statusSink?.({...g,lastDisconnect:g.lastDisconnect?{...g.lastDisconnect}:null})};_();let v=d(),y=E({cfg:v,accountId:l.accountId}),b={...v,channels:{...v.channels,whatsapp:{...v.channels?.whatsapp,ackReaction:y.ackReaction,messagePrefix:y.messagePrefix,allowFrom:y.allowFrom,groupAllowFrom:y.groupAllowFrom,groupPolicy:y.groupPolicy,textChunkLimit:y.textChunkLimit,chunkMode:y.chunkMode,mediaMaxMb:y.mediaMaxMb,blockStreaming:y.blockStreaming,groups:y.groups}}},x=T(y),S=qe(b,l.heartbeatSeconds),C=Je(b,l.reconnect),w=Dt(b),O=b.channels?.whatsapp?.accounts?.[l.accountId??``]?.historyLimit??b.channels?.whatsapp?.historyLimit??b.messages?.groupChat?.historyLimit??50,te=new Map,ne=new Map,A=Mt({maxItems:100,logVerbose:e}),j=l.sleep??((e,t)=>xe(e,t??c)),M=()=>c?.aborted===!0,N=c&&new Promise(e=>c.addEventListener(`abort`,()=>e(`aborted`),{once:!0})),P=process.getMaxListeners?.()??10;process.setMaxListeners&&P<50&&process.setMaxListeners(50);let ie=!1,F=()=>{ie=!0};process.once(`SIGINT`,F);let I=0;for(;!M();){let n=J(),r=Date.now(),u=null,d=null,v=null,T=0,E=null,P=l.messageTimeoutMs??1800*1e3,ae=l.watchdogCheckMs??60*1e3,L=new Set,oe=an({cfg:b,verbose:t,connectionId:n,maxMediaBytes:x,groupHistoryLimit:O,groupHistories:te,groupMemberNames:ne,echoTracker:A,backgroundTasks:L,replyResolver:o??re,replyLogger:f,baseMentionConfig:w,account:y}),se=ue({cfg:b,channel:`whatsapp`}),R=await(i??Et)({verbose:t,accountId:y.accountId,authDir:y.authDir,mediaMaxMb:y.mediaMaxMb,sendReadReceipts:y.sendReadReceipts,debounceMs:se,shouldDebounce:e=>e.mediaPath||e.mediaType||e.location||e.replyToId||e.replyToBody?!1:!de(e.body,b),onMessage:async e=>{T+=1,v=Date.now(),g.lastMessageAt=v,g.lastEventAt=v,_(),await oe(e)}});Object.assign(g,le()),g.lastError=null,_();let{e164:z}=ee(y.authDir),B=ce({cfg:b,channel:`whatsapp`,accountId:y.accountId});k(`WhatsApp gateway connected${z?` as ${z}`:``}.`,{sessionKey:B.sessionKey}),Ne(y.accountId,R),E=me(e=>{if(!Yt(e))return!1;let t=q(e);return h.warn({connectionId:n,error:t},`web reconnect: unhandled rejection from WhatsApp socket; forcing reconnect`),R.signalClose?.({status:499,isLoggedOut:!1,error:e}),!0});let V=async()=>{Ne(y.accountId,null),E&&=(E(),null),u&&clearInterval(u),d&&clearInterval(d),L.size>0&&(await Promise.allSettled(L),L.clear());try{await R.close()}catch(t){e(`Socket close failed: ${q(t)}`)}};if(a&&(u=setInterval(()=>{let e=D(y.authDir),t=v?Math.floor((Date.now()-v)/6e4):null,i={connectionId:n,reconnectAttempts:I,messagesHandled:T,lastMessageAt:v,authAgeMs:e,uptimeMs:Date.now()-r,...t!==null&&t>30?{minutesSinceLastMessage:t}:{}};t&&t>30?m.warn(i,`⚠️ web gateway heartbeat - no messages in 30+ minutes`):m.info(i,`web gateway heartbeat`)},S*1e3),d=setInterval(()=>{if(!v)return;let t=Date.now()-v;if(t<=P)return;let r=Math.floor(t/6e4);m.warn({connectionId:n,minutesSinceLastMessage:r,lastMessageAt:new Date(v),messagesHandled:T},`Message timeout detected - forcing reconnect`),Ye.warn(`No messages received in ${r}m - restarting connection`),V().catch(t=>{e(`Close listener failed: ${q(t)}`)}),R.signalClose?.({status:499,isLoggedOut:!1,error:`watchdog-timeout`})},ae)),Y.info(`Listening for personal WhatsApp inbound messages.`),(process.stdout.isTTY||process.stderr.isTTY)&&Y.raw(`Ctrl+C to stop.`),!a){await V(),process.removeListener(`SIGINT`,F);return}let H=await Promise.race([R.onClose?.catch(e=>(h.error({error:q(e)},`listener.onClose rejected`),{status:500,isLoggedOut:!1,error:e}))??Xe(),N??Xe()]);if(Date.now()-r>S*1e3&&(I=0),g.reconnectAttempts=I,_(),M()||ie||H===`aborted`){await V();break}let U=(typeof H==`object`&&H&&`status`in H?H.status:void 0)??`unknown`,W=typeof H==`object`&&H&&`isLoggedOut`in H&&H.isLoggedOut,G=q(H);if(g.connected=!1,g.lastEventAt=Date.now(),g.lastDisconnect={at:g.lastEventAt,status:typeof U==`number`?U:void 0,error:G,loggedOut:!!W},g.lastError=G,g.reconnectAttempts=I,_(),h.info({connectionId:n,status:U,loggedOut:W,reconnectAttempts:I,error:G},`web reconnect: connection closed`),k(`WhatsApp gateway disconnected (status ${U??`unknown`})`,{sessionKey:B.sessionKey}),W){s.error(`WhatsApp session logged out. Run \`${p(`openclaw channels login --channel web`)}\` to relink.`),await V();break}if(on(U)){h.warn({connectionId:n,status:U,error:G},`web reconnect: non-retryable close status; stopping monitor`),s.error(`WhatsApp Web connection closed (status ${U}: session conflict). Resolve conflicting WhatsApp Web sessions, then relink with \`${p(`openclaw channels login --channel web`)}\`. Stopping web monitoring.`),await V();break}if(I+=1,g.reconnectAttempts=I,_(),C.maxAttempts>0&&I>=C.maxAttempts){h.warn({connectionId:n,status:U,reconnectAttempts:I,maxAttempts:C.maxAttempts},`web reconnect: max attempts reached; continuing in degraded mode`),s.error(`WhatsApp Web reconnect: max attempts reached (${I}/${C.maxAttempts}). Stopping web monitoring.`),await V();break}let K=be(C,I);h.info({connectionId:n,status:U,reconnectAttempts:I,maxAttempts:C.maxAttempts||`unlimited`,delayMs:K},`web reconnect: scheduling retry`),s.error(`WhatsApp Web connection closed (status ${U}). Retry ${I}/${C.maxAttempts||`∞`} in ${Me(K)}… (${G})`),await V();try{await j(K,c)}catch{break}}g.running=!1,g.connected=!1,g.lastEventAt=Date.now(),_(),process.removeListener(`SIGINT`,F)}export{Et as n,sn as t};
6
- //# sourceMappingURL=channel-web-BrElpZAc.js.map
6
+ //# sourceMappingURL=channel-web-D5TgFlMz.js.map