@seanhogg/builderforce-agents 2026.10.9 → 2026.10.11

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 (437) hide show
  1. package/dist/{acp-cli-DcKpPsJa.js → acp-cli-C23mmrQt.js} +1 -1
  2. package/dist/{acp-cli-BxH-eUDl.js → acp-cli-D6F-D5JB.js} +1 -1
  3. package/dist/{agent-cXF-aL0g.js → agent-B-2r1Lr_.js} +1 -1
  4. package/dist/{agent-wJmvciTM.js → agent-BI9qSnSp.js} +1 -1
  5. package/dist/{agentbot-cli-Cub3Abbt.js → agentbot-cli-Cyrhr5jX.js} +1 -1
  6. package/dist/{agentbot-cli-CTRvEfBp.js → agentbot-cli-sC55m-XS.js} +1 -1
  7. package/dist/{agents-Cr7WO73I.js → agents-CMThT_Bj.js} +1 -1
  8. package/dist/agents-Chz9nfm2.js +1 -0
  9. package/dist/{api-key-rotation-CHBjUwUJ.js → api-key-rotation-CyCi-UqR.js} +1 -1
  10. package/dist/{audio-preflight-CWFuqbao.js → audio-preflight-B411b2-y.js} +1 -1
  11. package/dist/{audio-preflight-F2e3Y4CW.js → audio-preflight-Cs4eUjQk.js} +1 -1
  12. package/dist/{audit-DGnEhZYe.js → audit-B-USV03V.js} +1 -1
  13. package/dist/{audit-DBjjjW93.js → audit-SKNPS-K2.js} +1 -1
  14. package/dist/auth-choice-CChsMy-F.js +1 -0
  15. package/dist/{auth-choice-9gZuOvPS.js → auth-choice-CCib_yVL.js} +1 -1
  16. package/dist/auth-choice-DSnpkrMc.js +1 -0
  17. package/dist/{auth-choice-BoZFVmEa.js → auth-choice-DzBqqq7i.js} +1 -1
  18. package/dist/auth-choice.apply-6f3Jb_lS.js +1 -0
  19. package/dist/{auth-choice.apply-CcatXiNo.js → auth-choice.apply-BgOXoS8X.js} +1 -1
  20. package/dist/{auth-choice.apply-BHLQeym9.js → auth-choice.apply-DBuvopiF.js} +1 -1
  21. package/dist/auth-choice.apply-DeXnLwVS.js +1 -0
  22. package/dist/auth-choice.apply.transformers-CZDuBaOr.js +1 -0
  23. package/dist/{auth-choice.apply.transformers-CIn3fs7K.js → auth-choice.apply.transformers-Df9l_jRz.js} +2 -2
  24. package/dist/{auth-choice.apply.transformers-1plI0MUg.js → auth-choice.apply.transformers-DmdxpHGz.js} +2 -2
  25. package/dist/{auth-choice.apply.transformers-D5OrjEHo.js → auth-choice.apply.transformers-dn7l6XyJ.js} +1 -1
  26. package/dist/{auth-json-D1ite-pW.js → auth-json-BB-VBn5E.js} +1 -1
  27. package/dist/{auth-json-CN3MWw57.js → auth-json-BVyos95N.js} +1 -1
  28. package/dist/{auth-json-HGu227VM.js → auth-json-CoOe4tEg.js} +1 -1
  29. package/dist/{auth-json-DZ7E50Y1.js → auth-json-wrKixZxh.js} +1 -1
  30. package/dist/{auth-profiles-C1VbcUOm.js → auth-profiles-pt7Tr4HA.js} +1 -1
  31. package/dist/{auth-token-CyVfNEQb.js → auth-token-BE67qxLw.js} +1 -1
  32. package/dist/{auth-token-CoQ5ePPl.js → auth-token-BPHeoBAW.js} +1 -1
  33. package/dist/{banner-DY-L7_eI.js → banner-ErBINvbk.js} +1 -1
  34. package/dist/{browser-cli-D2O94twn.js → browser-cli-BZc64-Xx.js} +1 -1
  35. package/dist/{browser-cli-CoRx_4iM.js → browser-cli-CoxVKdon.js} +1 -1
  36. package/dist/build-info.json +3 -3
  37. package/dist/{builderforce-BmrsVdFw.js → builderforce-B9187Tm9.js} +4 -4
  38. package/dist/{builderforce-Bwyw0GJ6.js → builderforce-BLqHwgeu.js} +4 -4
  39. package/dist/builderforce-api-DKgXl8BH.js +1 -0
  40. package/dist/builderforce-api-DcPAGsla.js +1 -0
  41. package/dist/builderforce-onboarding-CaPJZSvw.js +24 -0
  42. package/dist/builderforce-onboarding-RXFb0gct.js +24 -0
  43. package/dist/{builderforcellm-syscheck-CprBhARf.js → builderforcellm-syscheck-9ksvqHYX.js} +1 -1
  44. package/dist/{builderforcellm-syscheck-DrFJ638L.js → builderforcellm-syscheck-F5JMAr3p.js} +1 -1
  45. package/dist/{call-DxPWzV-k.js → call-BnAs_SER.js} +1 -1
  46. package/dist/{call-DFjBq0H2.js → call-D1Opj5ev.js} +1 -1
  47. package/dist/{call-DmAU4cRX.js → call-Du2LiaX6.js} +1 -1
  48. package/dist/{call-BbRf8gFM.js → call-T8ciwMTA.js} +1 -1
  49. package/dist/{channel-options-d4EwVQD0.js → channel-options-B7sRMp2v.js} +1 -1
  50. package/dist/{channel-options-CDixz6dT.js → channel-options-rhDBCtlp.js} +1 -1
  51. package/dist/{channel-web-DJa8JC9W.js → channel-web-CcCqUQrJ.js} +1 -1
  52. package/dist/{channels-cli-BgKy0MbE.js → channels-cli-BjnLW14T.js} +1 -1
  53. package/dist/{channels-cli-nNW0ezPM.js → channels-cli-DVWUBsmc.js} +1 -1
  54. package/dist/{chrome-BnEbJV3D.js → chrome-CFmcixaE.js} +1 -1
  55. package/dist/{chrome-a3X9_-nf.js → chrome-DXt86tmV.js} +1 -1
  56. package/dist/cli/daemon-cli.js +1 -1
  57. package/dist/{cli-DkWt7p2x.js → cli-BUqtALJK.js} +1 -1
  58. package/dist/{cli-C5MbcECQ.js → cli-K4reS6IS.js} +1 -1
  59. package/dist/{coding-tools.policy-NEPm7Mz1.js → coding-tools.policy-D9Ba8eDh.js} +1 -1
  60. package/dist/{coding-tools.policy-6qh9acJy.js → coding-tools.policy-ZhOdlcEI.js} +1 -1
  61. package/dist/{command-registry-COUcUWby.js → command-registry-B7uAoROP.js} +1 -1
  62. package/dist/{command-registry-4_K-lfW5.js → command-registry-CW16Mk2Y.js} +1 -1
  63. package/dist/{completion-cli-DlvHqL86.js → completion-cli-ZvXrCQqk.js} +1 -1
  64. package/dist/{completion-cli-B2qcVd6q.js → completion-cli-gyvx5ZXu.js} +1 -1
  65. package/dist/{completion-cli-DpFvU4Qn.js → completion-cli-n8UsdT91.js} +1 -1
  66. package/dist/{completion-cli-SdcQ-kQj.js → completion-cli-sKReGv3d.js} +1 -1
  67. package/dist/{config-_1Ca6jGb.js → config-BgV_FYSq.js} +1 -1
  68. package/dist/{config-toczWD3q.js → config-BpChMIJ6.js} +1 -1
  69. package/dist/{config-BTWlKwtB.js → config-D01EgOky.js} +1 -1
  70. package/dist/{config-27_FNba3.js → config-Dsnbi-a3.js} +1 -1
  71. package/dist/{config-cli-DeiQz5sY.js → config-cli-Bpo74mE5.js} +1 -1
  72. package/dist/{config-cli-CfczShaZ.js → config-cli-CF31O_5s.js} +1 -1
  73. package/dist/{config-guard-CD-Wq8kk.js → config-guard-BRUOk5YL.js} +1 -1
  74. package/dist/{config-guard-ClVl2FvD.js → config-guard-BUpQiSTW.js} +1 -1
  75. package/dist/{config-guard-B4in8l8I.js → config-guard-USCN-dq0.js} +1 -1
  76. package/dist/{config-validation-jpeXzoU3.js → config-validation-BGpSeNbh.js} +1 -1
  77. package/dist/{config-validation-C6u-z9bJ.js → config-validation-CdBJ-tZq.js} +1 -1
  78. package/dist/{configure-3W9C5LiT.js → configure-CWr61Ph2.js} +1 -1
  79. package/dist/configure-DhazB2qh.js +1 -0
  80. package/dist/{configure-BtXQW7ue.js → configure-DlcO1tWx.js} +1 -1
  81. package/dist/configure-MXheujvX.js +1 -0
  82. package/dist/{control-service-CJuuqNOE.js → control-service-2PkCt256.js} +1 -1
  83. package/dist/{control-service-qKfWP7VD.js → control-service-CcsbseZS.js} +1 -1
  84. package/dist/{control-service-izGyCWQs.js → control-service-qK1oboMo.js} +1 -1
  85. package/dist/{control-service-BbsswoMy.js → control-service-y3GYvIBg.js} +1 -1
  86. package/dist/{cron-cli-BrOM4s6N.js → cron-cli-BYu_lA8i.js} +1 -1
  87. package/dist/{cron-cli-CwtTX6pg.js → cron-cli-D_Og20iB.js} +1 -1
  88. package/dist/{daemon-cli-DyVsMf8p.js → daemon-cli-BNzthScZ.js} +1 -1
  89. package/dist/{daemon-cli-DlwOVDbt.js → daemon-cli-Bh3p0hui.js} +1 -1
  90. package/dist/{daemon-cli-Br0wu9xQ.js → daemon-cli-DxxKiKVN.js} +1 -1
  91. package/dist/{daemon-cli-DmicpZED.js → daemon-cli-emNxLkIw.js} +1 -1
  92. package/dist/{daemon-runtime-CtOr1ncS.js → daemon-runtime-9XitJmIL.js} +1 -1
  93. package/dist/{daemon-runtime-B4UjqdyJ.js → daemon-runtime-Dx800VUt.js} +1 -1
  94. package/dist/{deliver-BpLm3ktn.js → deliver--6OBF3LL.js} +1 -1
  95. package/dist/{deliver-9o_SE4ZK.js → deliver-ADpnRGRf.js} +1 -1
  96. package/dist/{deliver-D2VAVelb.js → deliver-BM6-damm.js} +1 -1
  97. package/dist/{deliver-BuZu68tp.js → deliver-CsG0cHbZ.js} +1 -1
  98. package/dist/{deps-CkJiJ6wc.js → deps-Dg_9rfXK.js} +1 -1
  99. package/dist/{devices-cli-BfXeDnbx.js → devices-cli-B8DXzcRP.js} +1 -1
  100. package/dist/{devices-cli-B9G6YOsS.js → devices-cli-BZkdWSx-.js} +1 -1
  101. package/dist/{directory-cli-BRCaiGOn.js → directory-cli-B78pAVI_.js} +1 -1
  102. package/dist/{directory-cli-D5ciZ5fY.js → directory-cli-CSaRkkL8.js} +1 -1
  103. package/dist/{dm-policy-shared-CRZpjRv0.js → dm-policy-shared-B9lW-AsK.js} +1 -1
  104. package/dist/{dm-policy-shared-Dhw9_6mi.js → dm-policy-shared-DYZ_T-az.js} +1 -1
  105. package/dist/{dns-cli-CgZ7oMcT.js → dns-cli-CLPGOFA1.js} +1 -1
  106. package/dist/{dns-cli-C4f4Tyij.js → dns-cli-dr5dHzfI.js} +1 -1
  107. package/dist/{doctor-completion-BSotFS6p.js → doctor-completion-94zme499.js} +1 -1
  108. package/dist/{doctor-completion-DVxbs-74.js → doctor-completion-CbF34DIH.js} +1 -1
  109. package/dist/{embedded-helpers-CEsr3aQ0.js → embedded-helpers-C9jpiwlw.js} +1 -1
  110. package/dist/{embedded-helpers-DK8_apW0.js → embedded-helpers-DdU30lmt.js} +1 -1
  111. package/dist/entry.js +1 -1
  112. package/dist/{exec-approvals-cli-YuOu7mVg.js → exec-approvals-cli-CS_uabo7.js} +1 -1
  113. package/dist/{exec-approvals-cli-BPFi82B0.js → exec-approvals-cli-ktB7M7WE.js} +1 -1
  114. package/dist/{gateway-cli-D2Bg1Um6.js → gateway-cli-CKcoLVMA.js} +5 -5
  115. package/dist/{gateway-cli-DFEo8C0z.js → gateway-cli-CuXBDBWe.js} +5 -5
  116. package/dist/{gateway-rpc-BXR_lVIx.js → gateway-rpc-B02y0PnE.js} +1 -1
  117. package/dist/{gateway-rpc-ByUcnQ7W.js → gateway-rpc-ff1RVb0_.js} +1 -1
  118. package/dist/{gemini-auth-CkD5jCPh.js → gemini-auth-DDR12zst.js} +1 -1
  119. package/dist/health-D0DZmCmh.js +1 -0
  120. package/dist/{health-yS3NRKvY.js → health-FO8MG5Ur.js} +1 -1
  121. package/dist/{health-DVo8a9yg.js → health-zrsgFZmR.js} +1 -1
  122. package/dist/{hooks-cli-B0lVee-j.js → hooks-cli-5Y4hnSX9.js} +1 -1
  123. package/dist/{hooks-cli-DsVmrQAG.js → hooks-cli-DpHZzRo2.js} +1 -1
  124. package/dist/index.js +2 -2
  125. package/dist/{ink-session-BitZ1wcY.js → ink-session-Dt9Q4iH-.js} +2 -2
  126. package/dist/{ink-session-CyAqXDla.js → ink-session-N8wCBzwk.js} +2 -2
  127. package/dist/{installs-CWd54ARy.js → installs-B_t2YXgq.js} +1 -1
  128. package/dist/{installs-C9A8QFiF.js → installs-DFiF4lGy.js} +1 -1
  129. package/dist/{io-3R_ZyUxB.js → io-BLBq4T2o.js} +1 -1
  130. package/dist/{io-DSIGyPrT.js → io-CXN4uLS2.js} +1 -1
  131. package/dist/{io-6jLoKffb.js → io-Ckd4NlvH.js} +1 -1
  132. package/dist/{io-CohJffHG.js → io-D9hC2aG0.js} +1 -1
  133. package/dist/{lifecycle-core-BpMvDXy1.js → lifecycle-core-D9Dg5Qps.js} +1 -1
  134. package/dist/{lifecycle-core-Dwb4gHjZ.js → lifecycle-core-uxjxTzFv.js} +1 -1
  135. package/dist/login-B3sDAgHb.js +1 -0
  136. package/dist/{login-C_ZdMOvv.js → login-CwwuaXtb.js} +1 -1
  137. package/dist/{login-DtDUyFO3.js → login-D1bVUPlv.js} +1 -1
  138. package/dist/{login-CEnjUo5c.js → login-GLDax56V.js} +1 -1
  139. package/dist/{login-qr-B9lyIZVD.js → login-qr-CbiUcBLy.js} +1 -1
  140. package/dist/{login-qr-BCBsxwhT.js → login-qr-Cp0YqK4e.js} +1 -1
  141. package/dist/{logs-cli-CdM5W3HE.js → logs-cli-Cy11HfSG.js} +1 -1
  142. package/dist/{logs-cli-jh5Xn3TD.js → logs-cli-nD36c-Y1.js} +1 -1
  143. package/dist/{manager-CRba8roB.js → manager-BeohB4-8.js} +1 -1
  144. package/dist/{manager-B3IJ_IKf.js → manager-CTTXDBt3.js} +1 -1
  145. package/dist/{manager-TGVy_fAb.js → manager-CoQMlcrf.js} +1 -1
  146. package/dist/{manager-DwywI_5-.js → manager-DSz61dXv.js} +1 -1
  147. package/dist/{memory-cli-BlayFTAM.js → memory-cli-BpAiRntI.js} +1 -1
  148. package/dist/{memory-cli-DRz4wtHk.js → memory-cli-CbkWGjRn.js} +1 -1
  149. package/dist/{memory-cli-PdyTQ84w.js → memory-cli-CrBMLM2P.js} +1 -1
  150. package/dist/{memory-cli-ivAs7q7v.js → memory-cli-CveeVOWH.js} +1 -1
  151. package/dist/{model-catalog-CQOdhMUY.js → model-catalog-B29yeBYS.js} +1 -1
  152. package/dist/{model-catalog-CiiFJX77.js → model-catalog-BeBXvbFm.js} +1 -1
  153. package/dist/model-catalog-CMKHKuBL.js +1 -0
  154. package/dist/{model-catalog-C6UrZ0uG.js → model-catalog-DjNiebr7.js} +1 -1
  155. package/dist/{model-discovery-C9Xm95uL.js → model-discovery-D0i1JpiL.js} +1 -1
  156. package/dist/{model-picker-swoSwauV.js → model-picker-CGDNPRPc.js} +1 -1
  157. package/dist/model-picker-CGEF8yhc.js +1 -0
  158. package/dist/model-picker-DeUNOC78.js +1 -0
  159. package/dist/{model-picker-BUePD7Zg.js → model-picker-EIhpfOZa.js} +1 -1
  160. package/dist/{model-selection-9bRFKBI_.js → model-selection-DG9J_VTz.js} +1 -1
  161. package/dist/{models-BNivsd2o.js → models-BjIzVQYX.js} +2 -2
  162. package/dist/{models-DQeSIY6M.js → models-JoqOgEF5.js} +1 -1
  163. package/dist/{models-cli-KokGgWeP.js → models-cli-B2zbchgs.js} +1 -1
  164. package/dist/{models-cli-BcNxU4P_.js → models-cli-CkFdc8NN.js} +2 -2
  165. package/dist/{node-cli-DIMh3X2F.js → node-cli-CXnuxiBq.js} +1 -1
  166. package/dist/{node-cli-EmTU-Gh0.js → node-cli-oVyjVnb7.js} +1 -1
  167. package/dist/{nodes-cli-BX8TznFK.js → nodes-cli-BBVotxNt.js} +1 -1
  168. package/dist/{nodes-cli-DyHovdAc.js → nodes-cli-DVMBSUhK.js} +1 -1
  169. package/dist/{onboard-DfMVh1bM.js → onboard-BItclJp0.js} +1 -1
  170. package/dist/{onboard-BVmZ4jMw.js → onboard-CqvHIvKj.js} +1 -1
  171. package/dist/{onboard-auth.credentials-yagR-VMG.js → onboard-auth.credentials-DneFSdYg.js} +1 -1
  172. package/dist/{onboard-auth.credentials-BuT-etnE.js → onboard-auth.credentials-DpitLlzw.js} +1 -1
  173. package/dist/onboard-channels-B91m5S3w.js +1 -0
  174. package/dist/onboard-channels-BOoPtYbF.js +1 -0
  175. package/dist/{onboard-channels-B6QDFkkK.js → onboard-channels-Dn0u5C-C.js} +1 -1
  176. package/dist/{onboard-channels-C8FCFn29.js → onboard-channels-vhtccaIV.js} +1 -1
  177. package/dist/onboard-custom-BN0uzSq_.js +1 -0
  178. package/dist/{onboard-custom-D1nd8Hlu.js → onboard-custom-BYIza2e7.js} +1 -1
  179. package/dist/onboard-custom-CCFthqto.js +1 -0
  180. package/dist/{onboard-custom-C_BI0ZXn.js → onboard-custom-Ckf0xKXY.js} +1 -1
  181. package/dist/{onboard-helpers-CGlLpagb.js → onboard-helpers-B8I5AVyb.js} +1 -1
  182. package/dist/{onboard-helpers-CckrS8_K.js → onboard-helpers-Ce_c4Raj.js} +1 -1
  183. package/dist/{onboard-helpers-Cf5dNq7-.js → onboard-helpers-CiHzTaFX.js} +1 -1
  184. package/dist/{onboard-helpers-BvIZ4-R5.js → onboard-helpers-DC-nMl-V.js} +1 -1
  185. package/dist/{onboard-interactive-DYJttZ2w.js → onboard-interactive-Cl2K3EYn.js} +1 -1
  186. package/dist/{onboard-interactive-zgjmwJz-.js → onboard-interactive-JNux9zfA.js} +1 -1
  187. package/dist/{onboard-interactive-B3-KBZbZ.js → onboard-interactive-J_ObFzeW.js} +1 -1
  188. package/dist/{onboard-interactive-Dc_7URYb.js → onboard-interactive-OUNsvlh0.js} +1 -1
  189. package/dist/{onboard-remote-D5lR2lVm.js → onboard-remote-0-q7MG9t.js} +1 -1
  190. package/dist/{onboard-remote-BmSyHww1.js → onboard-remote-CgAAEZpq.js} +1 -1
  191. package/dist/{onboard-remote-CzzQMZ3X.js → onboard-remote-DKXHDdBD.js} +1 -1
  192. package/dist/{onboard-remote-DcuX8b2g.js → onboard-remote-cB8j9RG-.js} +1 -1
  193. package/dist/{onboard-skills-ILHIeg1R.js → onboard-skills-47upVdA2.js} +1 -1
  194. package/dist/{onboard-skills-BPlNN_-T.js → onboard-skills-9Um4TL2x.js} +1 -1
  195. package/dist/{onboard-skills-DIhjDMom.js → onboard-skills-DhCmvhJY.js} +1 -1
  196. package/dist/{onboard-skills-CI1OtWsE.js → onboard-skills-mI2kfvdT.js} +1 -1
  197. package/dist/{onboarding-D4-HDbmU.js → onboarding-BSENgR9C.js} +5 -5
  198. package/dist/{onboarding-CP9rrz8y.js → onboarding-CIaZLNc1.js} +5 -5
  199. package/dist/{onboarding.finalize-C2kZi7F0.js → onboarding.finalize-BwOpvoPE.js} +1 -1
  200. package/dist/{onboarding.finalize-BfWXPgX7.js → onboarding.finalize-yMK-g7Uy.js} +1 -1
  201. package/dist/{onboarding.gateway-config-Cd7_bXVs.js → onboarding.gateway-config-Kn1O-QFl.js} +1 -1
  202. package/dist/{onboarding.gateway-config-Bd8HJkso.js → onboarding.gateway-config-huOjFf8D.js} +1 -1
  203. package/dist/{openai-model-default-Cp3nf21W.js → openai-model-default-CH2-2Hvk.js} +1 -1
  204. package/dist/{openai-model-default-BMRrqTmH.js → openai-model-default-pfoEzWYJ.js} +1 -1
  205. package/dist/{outbound-BRInCJD9.js → outbound-BdeHcMAo.js} +1 -1
  206. package/dist/{outbound-CAtBpFoD.js → outbound-BylJYD7n.js} +1 -1
  207. package/dist/{outbound-OI-t5zZ0.js → outbound-CAirtWr1.js} +1 -1
  208. package/dist/{outbound-CnIvOJlU.js → outbound-VNcvF2MG.js} +1 -1
  209. package/dist/{outbound-send-deps-m6DqOma_.js → outbound-send-deps-B3Lg-uqF.js} +1 -1
  210. package/dist/{pairing-cli-CEr0yEsc.js → pairing-cli-5RtPvz2i.js} +1 -1
  211. package/dist/{pairing-cli-Dxfoni-F.js → pairing-cli-C_Mj6Dy4.js} +1 -1
  212. package/dist/{pairing-labels-3j_iRYOO.js → pairing-labels-BJPrScRl.js} +1 -1
  213. package/dist/{pairing-labels-BW5jQZlr.js → pairing-labels-oA-nKTaW.js} +1 -1
  214. package/dist/{pairing-store-QDb6lhIU.js → pairing-store-YRy7EBgI.js} +1 -1
  215. package/dist/{pairing-store-CbvMJhD3.js → pairing-store-ti3FEkmr.js} +1 -1
  216. package/dist/{plugin-auto-enable-BV9K9Vhr.js → plugin-auto-enable-Cupr4wbt.js} +1 -1
  217. package/dist/{plugin-auto-enable-DDry2fA6.js → plugin-auto-enable-D8gKiE3F.js} +1 -1
  218. package/dist/plugin-registry-BEfyc2f_.js +1 -0
  219. package/dist/{plugin-registry-C-_GA65s.js → plugin-registry-BoPaef5I.js} +1 -1
  220. package/dist/{plugin-registry-SAdxNUwm.js → plugin-registry-CxnuHO_n.js} +1 -1
  221. package/dist/plugin-registry-D0tIqo8L.js +1 -0
  222. package/dist/plugin-sdk/{accounts-Cy3WCbWg.js → accounts-BwreSNAR.js} +1 -1
  223. package/dist/plugin-sdk/{active-listener-DVWVNlT9.js → active-listener-DpQ7aGYd.js} +1 -1
  224. package/dist/plugin-sdk/agent-runtime/src/infra/workflow-telemetry.d.ts +12 -1
  225. package/dist/plugin-sdk/{agent-scope-DgKN27hJ.js → agent-scope-BQByW0cD.js} +1 -1
  226. package/dist/plugin-sdk/{api-key-rotation-ftXf7mBZ.js → api-key-rotation-7YdImWrh.js} +1 -1
  227. package/dist/plugin-sdk/{audio-preflight-CfTmmeS-.js → audio-preflight-EbkaATDO.js} +1 -1
  228. package/dist/plugin-sdk/{auth-json-BrNBg87n.js → auth-json-DK6qod1_.js} +1 -1
  229. package/dist/plugin-sdk/{bindings-CH-YLOLC.js → bindings-CDEzl4kl.js} +1 -1
  230. package/dist/plugin-sdk/{channel-web-B6rg0Rbf.js → channel-web-D2KuONp0.js} +1 -1
  231. package/dist/plugin-sdk/{chrome-CuXP-hes.js → chrome-SOXFIkUM.js} +1 -1
  232. package/dist/plugin-sdk/{chunk-C94IAOuf.js → chunk-cW0POl22.js} +1 -1
  233. package/dist/plugin-sdk/{command-format-B3XMq_73.js → command-format-CAX9XFjI.js} +1 -1
  234. package/dist/plugin-sdk/{common-n0l_XN-S.js → common-BxEWhN2X.js} +1 -1
  235. package/dist/plugin-sdk/{config-DsXZsCkJ.js → config-v1EU9Ll8.js} +2 -2
  236. package/dist/plugin-sdk/{fetch-B-GxSYRO.js → fetch-DH0Y8iyO.js} +1 -1
  237. package/dist/plugin-sdk/index.js +1 -1
  238. package/dist/plugin-sdk/{login-_my8QwPP.js → login-d1zBgykF.js} +1 -1
  239. package/dist/plugin-sdk/{login-qr-BaePtXuG.js → login-qr-B6exvQnN.js} +1 -1
  240. package/dist/plugin-sdk/{manager-BsC-4ymy.js → manager-BH_bmGds.js} +1 -1
  241. package/dist/plugin-sdk/{markdown-tables-BUfhHgfs.js → markdown-tables-Epim9b-0.js} +1 -1
  242. package/dist/plugin-sdk/{message-channel-CuZ2xOAM.js → message-channel-sBPQc_-T.js} +1 -1
  243. package/dist/plugin-sdk/{model-catalog-yuiXVcmw.js → model-catalog-cXsza5GU.js} +1 -1
  244. package/dist/plugin-sdk/{model-selection-BtgvnqB5.js → model-selection-K82MAGlL.js} +1 -1
  245. package/dist/plugin-sdk/{outbound-D_attiyO.js → outbound-Chn_H1O7.js} +1 -1
  246. package/dist/plugin-sdk/{plugins-BdkC9v5E.js → plugins-CaUOZBVb.js} +1 -1
  247. package/dist/plugin-sdk/{pw-ai-A7Rathx6.js → pw-ai-BIiJF7ZD.js} +1 -1
  248. package/dist/plugin-sdk/{qmd-manager-Dxn0jCpE.js → qmd-manager-BRe5fGZw.js} +1 -1
  249. package/dist/plugin-sdk/{registry-CZHRcH-q.js → registry-DJq2Cvo9.js} +1 -1
  250. package/dist/plugin-sdk/{render-CuA_WRX5.js → render-BUCRXPIk.js} +1 -1
  251. package/dist/plugin-sdk/{replies-DmLfO-pg.js → replies-Cz5OD3qN.js} +1 -1
  252. package/dist/plugin-sdk/{reply-3-ne-N_7.js → reply-D5Uk7pUv.js} +9 -9
  253. package/dist/plugin-sdk/{reply-prefix-w7kAvH11.js → reply-prefix-CCymsmsP.js} +1 -1
  254. package/dist/plugin-sdk/{resolve-route-0sbvl4ZN.js → resolve-route-DN1J7Wyc.js} +1 -1
  255. package/dist/plugin-sdk/{runner-4UfrAQnx.js → runner-CYkuO7Fh.js} +4 -4
  256. package/dist/plugin-sdk/{session-BB-yfDWx.js → session-D5jHDo78.js} +1 -1
  257. package/dist/plugin-sdk/{sqlite-JjFgDV-H.js → sqlite-BlMLqMl8.js} +1 -1
  258. package/dist/plugin-sdk/{subsystem-D0Ril4rt.js → subsystem-COTa5Ly_.js} +1 -1
  259. package/dist/plugin-sdk/{tool-images-WRTP95FT.js → tool-images-DSpchb4x.js} +1 -1
  260. package/dist/plugin-sdk/{tool-loop-detection-sC_rhJfb.js → tool-loop-detection-BP6u-mbh.js} +1 -1
  261. package/dist/plugin-sdk/web-BbganhKi.js +1 -0
  262. package/dist/plugin-sdk/{whatsapp-actions-ThxQ5niy.js → whatsapp-actions-CZUqxmP1.js} +1 -1
  263. package/dist/{plugins-BIG8NDB9.js → plugins-Cx29kkDj.js} +1 -1
  264. package/dist/{plugins-iAq-Gr8l.js → plugins-DJqou2hi.js} +1 -1
  265. package/dist/{plugins-cli-CpaVUv_r.js → plugins-cli-Bu-A8aGy.js} +1 -1
  266. package/dist/{plugins-cli-CPkSgvdL.js → plugins-cli-CGFsQDVW.js} +1 -1
  267. package/dist/{program-context-BCwL3wlM.js → program-context-ClBa4lUj.js} +1 -1
  268. package/dist/{program-2w7Ue902.js → program-vVCzU0cH.js} +2 -2
  269. package/dist/{prompt-select-styled-hB_nLOn1.js → prompt-select-styled-BJPGccTJ.js} +1 -1
  270. package/dist/{prompt-select-styled-Dd5swW2b.js → prompt-select-styled-BK74z6FF.js} +1 -1
  271. package/dist/{provider-auth-helpers-BpTnp2Yr.js → provider-auth-helpers-B84m5VMc.js} +1 -1
  272. package/dist/{provider-auth-helpers-CJTG_tVx.js → provider-auth-helpers-hNwpK_hl.js} +1 -1
  273. package/dist/{provider-dispatcher-TWwBT2aH.js → provider-dispatcher-BjR5DE3O.js} +1 -1
  274. package/dist/provider-dispatcher-DgOeVjcL.js +1 -0
  275. package/dist/{provider-usage-BdrU4cIE.js → provider-usage-B-wPVN_j.js} +1 -1
  276. package/dist/{provider-usage-Bn4ZrnU7.js → provider-usage-B8lFHp0K.js} +1 -1
  277. package/dist/{push-apns-C4sJnHbO.js → push-apns-BTPPvY81.js} +1 -1
  278. package/dist/{push-apns-CiD3rrVv.js → push-apns-CscYUS0D.js} +1 -1
  279. package/dist/{pw-ai-DSEj1QrV.js → pw-ai-CLS_VZ8p.js} +1 -1
  280. package/dist/{pw-ai-dNZY-qBs.js → pw-ai-D5og_rIf.js} +1 -1
  281. package/dist/{qr-cli-qr-SFLZW.js → qr-cli-CAquM1Zk.js} +1 -1
  282. package/dist/{qr-cli-B45dCV0o.js → qr-cli-GsR8n1cm.js} +1 -1
  283. package/dist/{qr-cli-CMlAIzrD.js → qr-cli-kAKgaL-T.js} +1 -1
  284. package/dist/{qr-cli-CySNSEFj.js → qr-cli-uyxNf-cQ.js} +1 -1
  285. package/dist/{register.agent-BA6LIJSb.js → register.agent-BwTCfyeJ.js} +1 -1
  286. package/dist/{register.agent-D2uCH8jZ.js → register.agent-Dhdo3_7k.js} +1 -1
  287. package/dist/register.configure-B0m0G3ot.js +1 -0
  288. package/dist/register.configure-D3cbjmTz.js +1 -0
  289. package/dist/{register.maintenance-BELfCO_C.js → register.maintenance-C6ocMld2.js} +1 -1
  290. package/dist/{register.maintenance-DukWFS_D.js → register.maintenance-CbE2zSyc.js} +1 -1
  291. package/dist/{register.message-DiZRRAE5.js → register.message-Jn4u533_.js} +1 -1
  292. package/dist/{register.message-8iGDhO8h.js → register.message-Tu1hlM0m.js} +1 -1
  293. package/dist/{register.onboard-B9DMNfHE.js → register.onboard-B34211N6.js} +1 -1
  294. package/dist/{register.onboard-Dt7rzAq-.js → register.onboard-S1d2WAE4.js} +1 -1
  295. package/dist/{register.setup-CSF-2ImP.js → register.setup-CJPyAwCQ.js} +1 -1
  296. package/dist/{register.setup-BRRVPrx7.js → register.setup-Sg8f3nsH.js} +1 -1
  297. package/dist/{register.status-health-sessions-D6wdwPwV.js → register.status-health-sessions-BlgVxoZ4.js} +1 -1
  298. package/dist/{register.status-health-sessions-ZSufYw5j.js → register.status-health-sessions-DwADQJ74.js} +1 -1
  299. package/dist/{register.subclis-4eDV9jKH.js → register.subclis-C9V_M-Lk.js} +1 -1
  300. package/dist/{register.subclis-Cr9DoYcv.js → register.subclis-pWn9XObB.js} +1 -1
  301. package/dist/{replies-DbkT_5BV.js → replies-BOGMDhSN.js} +1 -1
  302. package/dist/{replies-CzV-RFUG.js → replies-BXbV02ik.js} +1 -1
  303. package/dist/{replies-DIBQzxGp.js → replies-CUv671JF.js} +1 -1
  304. package/dist/{replies-Bd2RPZwQ.js → replies-DokbEfJD.js} +1 -1
  305. package/dist/{reply-Cd3vVnD7.js → reply-GY1C8tcv.js} +10 -10
  306. package/dist/{routes-BzfLvF8W.js → routes-DZntyPY6.js} +1 -1
  307. package/dist/{routes-lclJHOYY.js → routes-_iZdG1Fo.js} +1 -1
  308. package/dist/{rpc-BLqXRn5R.js → rpc-CbUnwStf.js} +1 -1
  309. package/dist/{rpc-DcQNGQlj.js → rpc-Cwm4gchc.js} +1 -1
  310. package/dist/{run-main-DLcDEJgv.js → run-main-DQMbgbcF.js} +1 -1
  311. package/dist/{runner-DwWmciCt.js → runner-Cu9NJouV.js} +1 -1
  312. package/dist/{runner-SxCr9kXD.js → runner-eTTUbLAK.js} +1 -1
  313. package/dist/{sandbox-BZibn6PX.js → sandbox-C4AKi2EX.js} +1 -1
  314. package/dist/{sandbox-z9t_PRf9.js → sandbox-DvKMuAXL.js} +1 -1
  315. package/dist/{sandbox-cli-BtGs0dBR.js → sandbox-cli-C0LhzYq_.js} +1 -1
  316. package/dist/{sandbox-cli-B8FpLgyY.js → sandbox-cli-De0iaoHB.js} +1 -1
  317. package/dist/{security-cli-D8Q8I7fn.js → security-cli-BvEfiO8m.js} +1 -1
  318. package/dist/{security-cli-IIMR7Pb4.js → security-cli-BzsQ0XQh.js} +1 -1
  319. package/dist/{send-DnMzjS7L.js → send-2dRKMWtl.js} +1 -1
  320. package/dist/{send-DerUBvXW.js → send-Aw8wK3vK.js} +1 -1
  321. package/dist/{send-BvroeIQ6.js → send-B7H8Ae5j.js} +1 -1
  322. package/dist/{send-4d9NswaD.js → send-BP5osGBo.js} +1 -1
  323. package/dist/{send-BU_-BGmf.js → send-BVal50Bi.js} +1 -1
  324. package/dist/{send-CxG2suVM.js → send-Bbo7TXLx.js} +1 -1
  325. package/dist/{send-CBBziNqM.js → send-BxoVLIy1.js} +1 -1
  326. package/dist/{send-dDpSBSBo.js → send-COKUbcqs.js} +1 -1
  327. package/dist/{send--12DIueA.js → send-CTw3PqN4.js} +1 -1
  328. package/dist/{send-UFtylOiq.js → send-CYGOPcKq.js} +1 -1
  329. package/dist/{send-DyF1Xy9K.js → send-ChGpVO3O.js} +1 -1
  330. package/dist/{send-Q-uTkSFE.js → send-Cqea2UFo.js} +1 -1
  331. package/dist/{send-j15662lv.js → send-CrFWgJKx.js} +1 -1
  332. package/dist/{send-gDb60Hk-.js → send-CwK8QBR3.js} +1 -1
  333. package/dist/{send-CceNWtYE.js → send-DqR7Rxzm.js} +1 -1
  334. package/dist/{send-CJHXQvVl.js → send-DxwfUIN-.js} +1 -1
  335. package/dist/{send-ByCVQQVz.js → send-KgN1P41U.js} +1 -1
  336. package/dist/{send-B1rJLLpr.js → send-bNp87SIq.js} +1 -1
  337. package/dist/{send-B_1BtyfA.js → send-kkm_zrHQ.js} +1 -1
  338. package/dist/{send-BJDzwYJN.js → send-l3ge4wkC.js} +1 -1
  339. package/dist/{server-context-DJZT7Upf.js → server-context-CQ2v4BAx.js} +1 -1
  340. package/dist/{server-context-owOmmyUM.js → server-context-CttALzrW.js} +1 -1
  341. package/dist/{server-node-events-54d8Rmjl.js → server-node-events-CIMO6Vae.js} +1 -1
  342. package/dist/{server-node-events-CSFVqgxX.js → server-node-events-iCF2ngcN.js} +1 -1
  343. package/dist/{session-BzQdcCqN.js → session-BJHsjD3z.js} +1 -1
  344. package/dist/{session-4FpEJvkE.js → session-C_b1ttHJ.js} +1 -1
  345. package/dist/{session-dirs-OxQuIvJW.js → session-dirs-Bvbgw0GC.js} +1 -1
  346. package/dist/{session-dirs-D_ARkyw0.js → session-dirs-DHaoq7zc.js} +1 -1
  347. package/dist/{session-utils-GMvum00v.js → session-utils-Dxou8SbO.js} +1 -1
  348. package/dist/{sessions-Bl1wwotX.js → sessions-BA8Se_bT.js} +1 -1
  349. package/dist/{sessions-CdanN_ZI.js → sessions-BuZVmOWt.js} +1 -1
  350. package/dist/{sessions-B5dwRhUC.js → sessions-DvbW0FNJ.js} +1 -1
  351. package/dist/{sessions-B1t7qeEn.js → sessions-DvqsIg0M.js} +1 -1
  352. package/dist/{shared-xj-xaKFi.js → shared-BBOiNdjf.js} +1 -1
  353. package/dist/{shared-BPN3qd7G.js → shared-C2orjbTD.js} +1 -1
  354. package/dist/{skill-scanner-U3AJgjqc.js → skill-scanner-BEvov9QH.js} +1 -1
  355. package/dist/{skill-scanner-DEmbPsRh.js → skill-scanner-OTLeRZ_p.js} +1 -1
  356. package/dist/{skills-cli-CIdnXa3B.js → skills-cli-C1BOgB3y.js} +1 -1
  357. package/dist/{skills-cli-BXbGr7vl.js → skills-cli-CFT2Aq5R.js} +1 -1
  358. package/dist/{skills-install-Btw_GHbI.js → skills-install-LlKntDHa.js} +1 -1
  359. package/dist/{skills-install-DMHQRpIl.js → skills-install-tx5Mahav.js} +1 -1
  360. package/dist/{status-DXaDS_0w.js → status-Bh8V7kjv.js} +1 -1
  361. package/dist/{status-BxeKmkVr.js → status-BtBHmhQh.js} +1 -1
  362. package/dist/{status-BkcmeZg6.js → status-CpwD4y9B.js} +1 -1
  363. package/dist/status-CqaTmyih.js +1 -0
  364. package/dist/{status-DouJcFzf.js → status-yXz8PUbL.js} +1 -1
  365. package/dist/{status.update-C9iy31xr.js → status.update-CdgsLBPg.js} +1 -1
  366. package/dist/{status.update-KYyRSDZY.js → status.update-hzMro-BT.js} +1 -1
  367. package/dist/{subagent-registry-Dr20nzwk.js → subagent-registry-CaRUNwCj.js} +1 -1
  368. package/dist/{subagent-registry-CyGxu3kP.js → subagent-registry-DDEN4oJi.js} +10 -10
  369. package/dist/{subagent-registry-BiXkIDeh.js → subagent-registry-DYYfeIc3.js} +1 -1
  370. package/dist/{system-cli-b4YgXPHv.js → system-cli-4aii1JYf.js} +1 -1
  371. package/dist/{system-cli-C7YzJeP4.js → system-cli-CfkDD3FV.js} +1 -1
  372. package/dist/{tui-DylWbrDx.js → tui-DnVRxfI8.js} +2 -2
  373. package/dist/{tui-BwWMByVp.js → tui-JfWoLGIV.js} +2 -2
  374. package/dist/{tui-cli-C_TTgabr.js → tui-cli-CGjg2Eb5.js} +1 -1
  375. package/dist/{tui-cli-Bh1V8-w9.js → tui-cli-cd7Efw5u.js} +1 -1
  376. package/dist/{tui-setup-check-DJZCJokQ.js → tui-setup-check-BEHm9wwo.js} +1 -1
  377. package/dist/{tui-setup-check-BABAyl-e.js → tui-setup-check-DK8vdhLI.js} +1 -1
  378. package/dist/{tui-stream-assembler-ign_cPkv.js → tui-stream-assembler-8ud9oyMK.js} +1 -1
  379. package/dist/{tui-stream-assembler-q9GANTDr.js → tui-stream-assembler-Br15rhRH.js} +1 -1
  380. package/dist/{update-BUzcmoDf.js → update-B5yKFeGO.js} +1 -1
  381. package/dist/{update-D6U-V8Au.js → update-DodoQDCk.js} +1 -1
  382. package/dist/{update-cli-DUrUIrYQ.js → update-cli-CfJJcSUS.js} +1 -1
  383. package/dist/{update-cli-CA3LuuJ7.js → update-cli-x8Ocbf-0.js} +1 -1
  384. package/dist/{usage-cli-CfEg1_NZ.js → usage-cli-CN7L1YRG.js} +1 -1
  385. package/dist/{usage-cli-CpbYMXxS.js → usage-cli-CQmokGkG.js} +1 -1
  386. package/dist/{web-D-NSyF6b.js → web-BXLk9UT2.js} +1 -1
  387. package/dist/web-Btgs8oWv.js +1 -0
  388. package/dist/{webhooks-cli-B_f61rq7.js → webhooks-cli-DIo8p3lk.js} +1 -1
  389. package/dist/{webhooks-cli-Bi0t3w6P.js → webhooks-cli-DhxEtiFt.js} +1 -1
  390. package/dist/{whatsapp-actions-JbF2MrTV.js → whatsapp-actions-B7r9AyZN.js} +1 -1
  391. package/dist/{whatsapp-actions-BkCMhD9X.js → whatsapp-actions-DX2QU6Gs.js} +1 -1
  392. package/dist/{with-timeout-T07SJo4N.js → with-timeout-B_p5pWDv.js} +1 -1
  393. package/dist/{with-timeout-Bwq-GyUQ.js → with-timeout-GDLpcjW7.js} +1 -1
  394. package/dist/workflow-telemetry-BMTg5lPd.js +1 -0
  395. package/dist/workflow-telemetry-Bg8MVUr_.js +2 -0
  396. package/dist/workflow-telemetry-Do1UsYwM.js +1 -0
  397. package/dist/workflow-telemetry-DqBPhVL4.js +2 -0
  398. package/package.json +1 -1
  399. package/dist/agents-DsZ5vLKE.js +0 -1
  400. package/dist/auth-choice-Btd2Rxxd.js +0 -1
  401. package/dist/auth-choice-CVV9wRFN.js +0 -1
  402. package/dist/auth-choice.apply-BOK9XRCQ.js +0 -1
  403. package/dist/auth-choice.apply-Cv-BiV5Q.js +0 -1
  404. package/dist/auth-choice.apply.transformers-CXywS3GZ.js +0 -1
  405. package/dist/builderforce-onboarding-Dq6VUSKZ.js +0 -24
  406. package/dist/builderforce-onboarding-DuUfZ6oL.js +0 -24
  407. package/dist/configure-CWBBFk3F.js +0 -1
  408. package/dist/configure-fHVOAucW.js +0 -1
  409. package/dist/health-GLcAfqDz.js +0 -1
  410. package/dist/login-CPyEf5h6.js +0 -1
  411. package/dist/model-catalog-J7R-tJDu.js +0 -1
  412. package/dist/model-picker-D2bcWrtu.js +0 -1
  413. package/dist/model-picker-DO1HtEEm.js +0 -1
  414. package/dist/onboard-channels-CmqKsAoW.js +0 -1
  415. package/dist/onboard-channels-Db0P4iWl.js +0 -1
  416. package/dist/onboard-custom-BABqIYa4.js +0 -1
  417. package/dist/onboard-custom-VpW3UC8u.js +0 -1
  418. package/dist/plugin-registry-B-UOeWqM.js +0 -1
  419. package/dist/plugin-registry-BjMr3yXM.js +0 -1
  420. package/dist/plugin-sdk/web-CThgoHQp.js +0 -1
  421. package/dist/provider-dispatcher-C4nHaNqn.js +0 -1
  422. package/dist/register.configure-DAL38e7r.js +0 -1
  423. package/dist/register.configure-DZG7-WVi.js +0 -1
  424. package/dist/status-BTYqHVha.js +0 -1
  425. package/dist/web-P6QsgmSD.js +0 -1
  426. package/dist/workflow-telemetry-B8Im0mPk.js +0 -1
  427. package/dist/workflow-telemetry-DLEnm5TI.js +0 -2
  428. package/dist/workflow-telemetry-Dc_oseV7.js +0 -2
  429. package/dist/workflow-telemetry-Dkm3mofI.js +0 -1
  430. /package/dist/{devtools-CI7JyCXv.js → devtools-Cg4F-l9O.js} +0 -0
  431. /package/dist/{devtools-eMFaIsAT.js → devtools-Dl2DACSO.js} +0 -0
  432. /package/dist/{github-copilot-token-D3gHtNUu.js → github-copilot-token-BlyiXyTy.js} +0 -0
  433. /package/dist/{github-copilot-token-DHP2kAiN.js → github-copilot-token-D5sB2AUI.js} +0 -0
  434. /package/dist/{onboard-hooks-Cenav0eW.js → onboard-hooks-BaOSgxs9.js} +0 -0
  435. /package/dist/{onboard-hooks-Ce20rwpW.js → onboard-hooks-fO5eeDe_.js} +0 -0
  436. /package/dist/{qmd-manager-DVd_aWEV.js → qmd-manager-BgplOjHN.js} +0 -0
  437. /package/dist/{qmd-manager-keHvLmvP.js → qmd-manager-COUi_Fqb.js} +0 -0
@@ -1 +1 @@
1
- import{B as buildTogetherModelDefinition,C as XIAOMI_DEFAULT_MODEL_ID,F as VENICE_DEFAULT_MODEL_REF,H as SYNTHETIC_DEFAULT_MODEL_REF,I as VENICE_MODEL_CATALOG,It as CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF,L as buildVeniceModelDefinition,Lt as buildCloudflareAiGatewayModelDefinition,Mt as HUGGINGFACE_MODEL_CATALOG,Nt as buildHuggingfaceModelDefinition,P as VENICE_BASE_URL,R as TOGETHER_BASE_URL,Rt as resolveCloudflareAiGatewayBaseUrl,S as QIANFAN_DEFAULT_MODEL_ID,T as buildXiaomiProvider,U as SYNTHETIC_MODEL_CATALOG,V as SYNTHETIC_BASE_URL,W as buildSyntheticModelDefinition,jt as HUGGINGFACE_BASE_URL,u as normalizeProviderId,w as buildQianfanProvider,x as QIANFAN_BASE_URL,z as TOGETHER_MODEL_CATALOG}from"./model-selection-9bRFKBI_.js";import{A as MINIMAX_LM_STUDIO_COST,D as KIMI_CODING_MODEL_REF,F as QIANFAN_DEFAULT_MODEL_REF,G as buildMinimaxModelDefinition,H as ZAI_DEFAULT_MODEL_ID,I as XAI_BASE_URL,J as buildZaiModelDefinition,K as buildMoonshotModelDefinition,L as XAI_DEFAULT_MODEL_ID,M as MOONSHOT_CN_BASE_URL,N as MOONSHOT_DEFAULT_MODEL_ID,O as MINIMAX_API_BASE_URL,P as MOONSHOT_DEFAULT_MODEL_REF,R as XAI_DEFAULT_MODEL_REF,W as buildMinimaxApiModelDefinition,Y as resolveZaiBaseUrl,a as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF,i as TOGETHER_DEFAULT_MODEL_REF,j as MOONSHOT_BASE_URL,k as MINIMAX_CN_API_BASE_URL,n as LITELLM_DEFAULT_MODEL_REF,o as XIAOMI_DEFAULT_MODEL_REF,q as buildXaiModelDefinition,r as OPENROUTER_DEFAULT_MODEL_REF,s as ZAI_DEFAULT_MODEL_REF,t as HUGGINGFACE_DEFAULT_MODEL_REF}from"./onboard-auth.credentials-BuT-etnE.js";function extractAgentDefaultModelFallbacks(model){if(!model||typeof model!=`object`||!(`fallbacks`in model))return;let fallbacks=model.fallbacks;return Array.isArray(fallbacks)?fallbacks.map(v=>String(v)):void 0}function applyOnboardAuthAgentModelsAndProviders(cfg,params){return{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models:params.agentModels}},models:{mode:cfg.models?.mode??`merge`,providers:params.providers}}}function applyAgentDefaultModelPrimary(cfg,primary){let existingFallbacks=extractAgentDefaultModelFallbacks(cfg.agents?.defaults?.model);return{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,model:{...existingFallbacks?{fallbacks:existingFallbacks}:void 0,primary}}}}}function applyProviderConfigWithDefaultModels(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],defaultModels=params.defaultModels,defaultModelId=params.defaultModelId??defaultModels[0]?.id,hasDefaultModel=defaultModelId?existingModels.some(model=>model.id===defaultModelId):!0,mergedModels=existingModels.length>0?hasDefaultModel||defaultModels.length===0?existingModels:[...existingModels,...defaultModels]:defaultModels;return providers[params.providerId]=buildProviderConfig({existingProvider,api:params.api,baseUrl:params.baseUrl,mergedModels,fallbackModels:defaultModels}),applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:params.agentModels,providers})}function applyProviderConfigWithDefaultModel(cfg,params){return applyProviderConfigWithDefaultModels(cfg,{agentModels:params.agentModels,providerId:params.providerId,api:params.api,baseUrl:params.baseUrl,defaultModels:[params.defaultModel],defaultModelId:params.defaultModelId??params.defaultModel.id})}function applyProviderConfigWithModelCatalog(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],catalogModels=params.catalogModels,mergedModels=existingModels.length>0?[...existingModels,...catalogModels.filter(model=>!existingModels.some(existing=>existing.id===model.id))]:catalogModels;return providers[params.providerId]=buildProviderConfig({existingProvider,api:params.api,baseUrl:params.baseUrl,mergedModels,fallbackModels:catalogModels}),applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:params.agentModels,providers})}function buildProviderConfig(params){let{apiKey:existingApiKey,...existingProviderRest}=params.existingProvider??{},normalizedApiKey=typeof existingApiKey==`string`?existingApiKey.trim():void 0;return{...existingProviderRest,baseUrl:params.baseUrl,api:params.api,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:params.mergedModels.length>0?params.mergedModels:params.fallbackModels}}function applyVercelAiGatewayProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF]={...models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF],alias:models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF]?.alias??`Vercel AI Gateway`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyCloudflareAiGatewayProviderConfig(cfg,params){let models={...cfg.agents?.defaults?.models};models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF]={...models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF],alias:models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF]?.alias??`Cloudflare AI Gateway`};let defaultModel=buildCloudflareAiGatewayModelDefinition(),existingProvider=cfg.models?.providers?.[`cloudflare-ai-gateway`],baseUrl=params?.accountId&&params?.gatewayId?resolveCloudflareAiGatewayBaseUrl({accountId:params.accountId,gatewayId:params.gatewayId}):typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl:void 0;return baseUrl?applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`cloudflare-ai-gateway`,api:`anthropic-messages`,baseUrl,defaultModel}):{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyVercelAiGatewayConfig(cfg){return applyAgentDefaultModelPrimary(applyVercelAiGatewayProviderConfig(cfg),VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF)}function applyCloudflareAiGatewayConfig(cfg,params){return applyAgentDefaultModelPrimary(applyCloudflareAiGatewayProviderConfig(cfg,params),CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF)}const LITELLM_DEFAULT_MODEL_ID=`claude-opus-4-6`,LITELLM_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0};function buildLitellmModelDefinition(){return{id:LITELLM_DEFAULT_MODEL_ID,name:`Claude Opus 4.6`,reasoning:!0,input:[`text`,`image`],cost:LITELLM_DEFAULT_COST,contextWindow:128e3,maxTokens:8192}}function applyLitellmProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[LITELLM_DEFAULT_MODEL_REF]={...models[LITELLM_DEFAULT_MODEL_REF],alias:models[LITELLM_DEFAULT_MODEL_REF]?.alias??`LiteLLM`};let defaultModel=buildLitellmModelDefinition(),existingProvider=cfg.models?.providers?.litellm;return applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`litellm`,api:`openai-completions`,baseUrl:(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl.trim():``)||`http://localhost:4000`,defaultModel,defaultModelId:LITELLM_DEFAULT_MODEL_ID})}function applyLitellmConfig(cfg){return applyAgentDefaultModelPrimary(applyLitellmProviderConfig(cfg),LITELLM_DEFAULT_MODEL_REF)}function applyZaiProviderConfig(cfg,params){let modelRef=`zai/${params?.modelId?.trim()||ZAI_DEFAULT_MODEL_ID}`,models={...cfg.agents?.defaults?.models};models[modelRef]={...models[modelRef],alias:models[modelRef]?.alias??`GLM`};let providers={...cfg.models?.providers},existingProvider=providers.zai,existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],defaultModels=[buildZaiModelDefinition({id:`glm-5`}),buildZaiModelDefinition({id:`glm-4.7`}),buildZaiModelDefinition({id:`glm-4.7-flash`}),buildZaiModelDefinition({id:`glm-4.7-flashx`})],mergedModels=[...existingModels],seen=new Set(existingModels.map(m=>m.id));for(let model of defaultModels)seen.has(model.id)||(mergedModels.push(model),seen.add(model.id));let{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{},normalizedApiKey=(typeof existingApiKey==`string`?existingApiKey:void 0)?.trim(),baseUrl=params?.endpoint?resolveZaiBaseUrl(params.endpoint):(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl:``)||resolveZaiBaseUrl();return providers.zai={...existingProviderRest,baseUrl,api:`openai-completions`,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:defaultModels},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applyZaiConfig(cfg,params){let modelId=params?.modelId?.trim()||ZAI_DEFAULT_MODEL_ID,modelRef=modelId===ZAI_DEFAULT_MODEL_ID?ZAI_DEFAULT_MODEL_REF:`zai/${modelId}`;return applyAgentDefaultModelPrimary(applyZaiProviderConfig(cfg,params),modelRef)}function applyOpenrouterProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[OPENROUTER_DEFAULT_MODEL_REF]={...models[OPENROUTER_DEFAULT_MODEL_REF],alias:models[OPENROUTER_DEFAULT_MODEL_REF]?.alias??`OpenRouter`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyOpenrouterConfig(cfg){return applyAgentDefaultModelPrimary(applyOpenrouterProviderConfig(cfg),OPENROUTER_DEFAULT_MODEL_REF)}function applyMoonshotProviderConfig(cfg){return applyMoonshotProviderConfigWithBaseUrl(cfg,MOONSHOT_BASE_URL)}function applyMoonshotProviderConfigCn(cfg){return applyMoonshotProviderConfigWithBaseUrl(cfg,MOONSHOT_CN_BASE_URL)}function applyMoonshotProviderConfigWithBaseUrl(cfg,baseUrl){let models={...cfg.agents?.defaults?.models};return models[MOONSHOT_DEFAULT_MODEL_REF]={...models[MOONSHOT_DEFAULT_MODEL_REF],alias:models[MOONSHOT_DEFAULT_MODEL_REF]?.alias??`Kimi`},applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`moonshot`,api:`openai-completions`,baseUrl,defaultModel:buildMoonshotModelDefinition(),defaultModelId:MOONSHOT_DEFAULT_MODEL_ID})}function applyMoonshotConfig(cfg){return applyAgentDefaultModelPrimary(applyMoonshotProviderConfig(cfg),MOONSHOT_DEFAULT_MODEL_REF)}function applyMoonshotConfigCn(cfg){return applyAgentDefaultModelPrimary(applyMoonshotProviderConfigCn(cfg),MOONSHOT_DEFAULT_MODEL_REF)}function applyKimiCodeProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[KIMI_CODING_MODEL_REF]={...models[KIMI_CODING_MODEL_REF],alias:models[KIMI_CODING_MODEL_REF]?.alias??`Kimi K2.5`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyKimiCodeConfig(cfg){return applyAgentDefaultModelPrimary(applyKimiCodeProviderConfig(cfg),KIMI_CODING_MODEL_REF)}function applySyntheticProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[SYNTHETIC_DEFAULT_MODEL_REF]={...models[SYNTHETIC_DEFAULT_MODEL_REF],alias:models[SYNTHETIC_DEFAULT_MODEL_REF]?.alias??`MiniMax M2.1`};let providers={...cfg.models?.providers},existingProvider=providers.synthetic,existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],syntheticModels=SYNTHETIC_MODEL_CATALOG.map(buildSyntheticModelDefinition),mergedModels=[...existingModels,...syntheticModels.filter(model=>!existingModels.some(existing=>existing.id===model.id))],{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{},normalizedApiKey=(typeof existingApiKey==`string`?existingApiKey:void 0)?.trim();return providers.synthetic={...existingProviderRest,baseUrl:SYNTHETIC_BASE_URL,api:`anthropic-messages`,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:syntheticModels},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applySyntheticConfig(cfg){return applyAgentDefaultModelPrimary(applySyntheticProviderConfig(cfg),SYNTHETIC_DEFAULT_MODEL_REF)}function applyXiaomiProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[XIAOMI_DEFAULT_MODEL_REF]={...models[XIAOMI_DEFAULT_MODEL_REF],alias:models[XIAOMI_DEFAULT_MODEL_REF]?.alias??`Xiaomi`};let defaultProvider=buildXiaomiProvider();return applyProviderConfigWithDefaultModels(cfg,{agentModels:models,providerId:`xiaomi`,api:defaultProvider.api??`openai-completions`,baseUrl:defaultProvider.baseUrl,defaultModels:defaultProvider.models??[],defaultModelId:XIAOMI_DEFAULT_MODEL_ID})}function applyXiaomiConfig(cfg){return applyAgentDefaultModelPrimary(applyXiaomiProviderConfig(cfg),XIAOMI_DEFAULT_MODEL_REF)}function applyVeniceProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[VENICE_DEFAULT_MODEL_REF]={...models[VENICE_DEFAULT_MODEL_REF],alias:models[VENICE_DEFAULT_MODEL_REF]?.alias??`Llama 3.3 70B`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`venice`,api:`openai-completions`,baseUrl:VENICE_BASE_URL,catalogModels:VENICE_MODEL_CATALOG.map(buildVeniceModelDefinition)})}function applyVeniceConfig(cfg){return applyAgentDefaultModelPrimary(applyVeniceProviderConfig(cfg),VENICE_DEFAULT_MODEL_REF)}function applyTogetherProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[TOGETHER_DEFAULT_MODEL_REF]={...models[TOGETHER_DEFAULT_MODEL_REF],alias:models[TOGETHER_DEFAULT_MODEL_REF]?.alias??`Together AI`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`together`,api:`openai-completions`,baseUrl:TOGETHER_BASE_URL,catalogModels:TOGETHER_MODEL_CATALOG.map(buildTogetherModelDefinition)})}function applyTogetherConfig(cfg){return applyAgentDefaultModelPrimary(applyTogetherProviderConfig(cfg),TOGETHER_DEFAULT_MODEL_REF)}function applyHuggingfaceProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[HUGGINGFACE_DEFAULT_MODEL_REF]={...models[HUGGINGFACE_DEFAULT_MODEL_REF],alias:models[HUGGINGFACE_DEFAULT_MODEL_REF]?.alias??`Hugging Face`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`huggingface`,api:`openai-completions`,baseUrl:HUGGINGFACE_BASE_URL,catalogModels:HUGGINGFACE_MODEL_CATALOG.map(buildHuggingfaceModelDefinition)})}function applyHuggingfaceConfig(cfg){return applyAgentDefaultModelPrimary(applyHuggingfaceProviderConfig(cfg),HUGGINGFACE_DEFAULT_MODEL_REF)}function applyXaiProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[XAI_DEFAULT_MODEL_REF]={...models[XAI_DEFAULT_MODEL_REF],alias:models[XAI_DEFAULT_MODEL_REF]?.alias??`Grok`},applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`xai`,api:`openai-completions`,baseUrl:XAI_BASE_URL,defaultModel:buildXaiModelDefinition(),defaultModelId:XAI_DEFAULT_MODEL_ID})}function applyXaiConfig(cfg){return applyAgentDefaultModelPrimary(applyXaiProviderConfig(cfg),XAI_DEFAULT_MODEL_REF)}function applyAuthProfileConfig(cfg,params){let profiles={...cfg.auth?.profiles,[params.profileId]:{provider:params.provider,mode:params.mode,...params.email?{email:params.email}:{}}},existingProviderOrder=cfg.auth?.order?.[params.provider],preferProfileFirst=params.preferProfileFirst??!0,reorderedProviderOrder=existingProviderOrder&&preferProfileFirst?[params.profileId,...existingProviderOrder.filter(profileId=>profileId!==params.profileId)]:existingProviderOrder,order=existingProviderOrder===void 0?cfg.auth?.order:{...cfg.auth?.order,[params.provider]:reorderedProviderOrder?.includes(params.profileId)?reorderedProviderOrder:[...reorderedProviderOrder??[],params.profileId]};return{...cfg,auth:{...cfg.auth,profiles,...order?{order}:{}}}}function applyQianfanProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[QIANFAN_DEFAULT_MODEL_REF]={...models[QIANFAN_DEFAULT_MODEL_REF],alias:models[QIANFAN_DEFAULT_MODEL_REF]?.alias??`QIANFAN`};let defaultProvider=buildQianfanProvider(),existingProvider=cfg.models?.providers?.qianfan,resolvedBaseUrl=(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl.trim():``)||QIANFAN_BASE_URL;return applyProviderConfigWithDefaultModels(cfg,{agentModels:models,providerId:`qianfan`,api:typeof existingProvider?.api==`string`?existingProvider.api:`openai-completions`,baseUrl:resolvedBaseUrl,defaultModels:defaultProvider.models??[],defaultModelId:QIANFAN_DEFAULT_MODEL_ID})}function applyQianfanConfig(cfg){return applyAgentDefaultModelPrimary(applyQianfanProviderConfig(cfg),QIANFAN_DEFAULT_MODEL_REF)}function applyMinimaxProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[`anthropic/claude-opus-4-6`]={...models[`anthropic/claude-opus-4-6`],alias:models[`anthropic/claude-opus-4-6`]?.alias??`Opus`},models[`lmstudio/minimax-m2.1-gs32`]={...models[`lmstudio/minimax-m2.1-gs32`],alias:models[`lmstudio/minimax-m2.1-gs32`]?.alias??`Minimax`};let providers={...cfg.models?.providers};return providers.lmstudio||={baseUrl:`http://127.0.0.1:1234/v1`,apiKey:`lmstudio`,api:`openai-responses`,models:[buildMinimaxModelDefinition({id:`minimax-m2.1-gs32`,name:`MiniMax M2.1 GS32`,reasoning:!1,cost:MINIMAX_LM_STUDIO_COST,contextWindow:196608,maxTokens:8192})]},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applyMinimaxConfig(cfg){return applyAgentDefaultModelPrimary(applyMinimaxProviderConfig(cfg),`lmstudio/minimax-m2.1-gs32`)}function applyMinimaxApiProviderConfig(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiProviderConfigWithBaseUrl(cfg,{providerId:`minimax`,modelId,baseUrl:MINIMAX_API_BASE_URL})}function applyMinimaxApiConfig(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiConfigWithBaseUrl(cfg,{providerId:`minimax`,modelId,baseUrl:MINIMAX_API_BASE_URL})}function applyMinimaxApiProviderConfigCn(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiProviderConfigWithBaseUrl(cfg,{providerId:`minimax-cn`,modelId,baseUrl:MINIMAX_CN_API_BASE_URL})}function applyMinimaxApiConfigCn(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiConfigWithBaseUrl(cfg,{providerId:`minimax-cn`,modelId,baseUrl:MINIMAX_CN_API_BASE_URL})}function applyMinimaxApiProviderConfigWithBaseUrl(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=existingProvider?.models??[],apiModel=buildMinimaxApiModelDefinition(params.modelId),mergedModels=existingModels.some(model=>model.id===params.modelId)?existingModels:[...existingModels,apiModel],{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{baseUrl:params.baseUrl,models:[]},resolvedApiKey=typeof existingApiKey==`string`?existingApiKey:void 0,normalizedApiKey=resolvedApiKey?.trim()===`minimax`?``:resolvedApiKey;providers[params.providerId]={...existingProviderRest,baseUrl:params.baseUrl,api:`anthropic-messages`,...normalizedApiKey?.trim()?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:[apiModel]};let models={...cfg.agents?.defaults?.models},modelRef=`${params.providerId}/${params.modelId}`;return models[modelRef]={...models[modelRef],alias:`Minimax`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}},models:{mode:cfg.models?.mode??`merge`,providers}}}function applyMinimaxApiConfigWithBaseUrl(cfg,params){return applyAgentDefaultModelPrimary(applyMinimaxApiProviderConfigWithBaseUrl(cfg,params),`${params.providerId}/${params.modelId}`)}const OPENCODE_ZEN_DEFAULT_MODEL_REF=`opencode/claude-opus-4-6`;function applyOpencodeZenProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[OPENCODE_ZEN_DEFAULT_MODEL_REF]={...models[OPENCODE_ZEN_DEFAULT_MODEL_REF],alias:models[OPENCODE_ZEN_DEFAULT_MODEL_REF]?.alias??`Opus`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyOpencodeZenConfig(cfg){return applyAgentDefaultModelPrimary(applyOpencodeZenProviderConfig(cfg),OPENCODE_ZEN_DEFAULT_MODEL_REF)}const ANTHROPIC_SETUP_TOKEN_PREFIX=`sk-ant-oat01-`;function normalizeTokenProfileName(raw){let trimmed=raw.trim();return trimmed&&trimmed.toLowerCase().replace(/[^a-z0-9._-]+/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``)||`default`}function buildTokenProfileId(params){return`${normalizeProviderId(params.provider)}:${normalizeTokenProfileName(params.name)}`}function validateAnthropicSetupToken(raw){let trimmed=raw.trim();if(!trimmed)return`Required`;if(!trimmed.startsWith(ANTHROPIC_SETUP_TOKEN_PREFIX))return`Expected token starting with ${ANTHROPIC_SETUP_TOKEN_PREFIX}`;if(trimmed.length<80)return`Token looks too short; paste the full setup-token`}export{applyXaiConfig as A,applyVercelAiGatewayConfig as B,applyQianfanProviderConfig as C,applyTogetherProviderConfig as D,applyTogetherConfig as E,applyZaiProviderConfig as F,applyAgentDefaultModelPrimary as H,applyLitellmConfig as I,applyLitellmProviderConfig as L,applyXiaomiConfig as M,applyXiaomiProviderConfig as N,applyVeniceConfig as O,applyZaiConfig as P,applyCloudflareAiGatewayConfig as R,applyQianfanConfig as S,applySyntheticProviderConfig as T,applyVercelAiGatewayProviderConfig as V,applyMoonshotConfigCn as _,applyMinimaxApiConfig as a,applyOpenrouterConfig as b,applyMinimaxApiProviderConfigCn as c,applyAuthProfileConfig as d,applyHuggingfaceConfig as f,applyMoonshotConfig as g,applyKimiCodeProviderConfig as h,applyOpencodeZenProviderConfig as i,applyXaiProviderConfig as j,applyVeniceProviderConfig as k,applyMinimaxConfig as l,applyKimiCodeConfig as m,validateAnthropicSetupToken as n,applyMinimaxApiConfigCn as o,applyHuggingfaceProviderConfig as p,applyOpencodeZenConfig as r,applyMinimaxApiProviderConfig as s,buildTokenProfileId as t,applyMinimaxProviderConfig as u,applyMoonshotProviderConfig as v,applySyntheticConfig as w,applyOpenrouterProviderConfig as x,applyMoonshotProviderConfigCn as y,applyCloudflareAiGatewayProviderConfig as z};
1
+ import{B as buildTogetherModelDefinition,C as XIAOMI_DEFAULT_MODEL_ID,F as VENICE_DEFAULT_MODEL_REF,H as SYNTHETIC_DEFAULT_MODEL_REF,I as VENICE_MODEL_CATALOG,It as CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF,L as buildVeniceModelDefinition,Lt as buildCloudflareAiGatewayModelDefinition,Mt as HUGGINGFACE_MODEL_CATALOG,Nt as buildHuggingfaceModelDefinition,P as VENICE_BASE_URL,R as TOGETHER_BASE_URL,Rt as resolveCloudflareAiGatewayBaseUrl,S as QIANFAN_DEFAULT_MODEL_ID,T as buildXiaomiProvider,U as SYNTHETIC_MODEL_CATALOG,V as SYNTHETIC_BASE_URL,W as buildSyntheticModelDefinition,jt as HUGGINGFACE_BASE_URL,u as normalizeProviderId,w as buildQianfanProvider,x as QIANFAN_BASE_URL,z as TOGETHER_MODEL_CATALOG}from"./model-selection-DG9J_VTz.js";import{A as MINIMAX_LM_STUDIO_COST,D as KIMI_CODING_MODEL_REF,F as QIANFAN_DEFAULT_MODEL_REF,G as buildMinimaxModelDefinition,H as ZAI_DEFAULT_MODEL_ID,I as XAI_BASE_URL,J as buildZaiModelDefinition,K as buildMoonshotModelDefinition,L as XAI_DEFAULT_MODEL_ID,M as MOONSHOT_CN_BASE_URL,N as MOONSHOT_DEFAULT_MODEL_ID,O as MINIMAX_API_BASE_URL,P as MOONSHOT_DEFAULT_MODEL_REF,R as XAI_DEFAULT_MODEL_REF,W as buildMinimaxApiModelDefinition,Y as resolveZaiBaseUrl,a as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF,i as TOGETHER_DEFAULT_MODEL_REF,j as MOONSHOT_BASE_URL,k as MINIMAX_CN_API_BASE_URL,n as LITELLM_DEFAULT_MODEL_REF,o as XIAOMI_DEFAULT_MODEL_REF,q as buildXaiModelDefinition,r as OPENROUTER_DEFAULT_MODEL_REF,s as ZAI_DEFAULT_MODEL_REF,t as HUGGINGFACE_DEFAULT_MODEL_REF}from"./onboard-auth.credentials-DpitLlzw.js";function extractAgentDefaultModelFallbacks(model){if(!model||typeof model!=`object`||!(`fallbacks`in model))return;let fallbacks=model.fallbacks;return Array.isArray(fallbacks)?fallbacks.map(v=>String(v)):void 0}function applyOnboardAuthAgentModelsAndProviders(cfg,params){return{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models:params.agentModels}},models:{mode:cfg.models?.mode??`merge`,providers:params.providers}}}function applyAgentDefaultModelPrimary(cfg,primary){let existingFallbacks=extractAgentDefaultModelFallbacks(cfg.agents?.defaults?.model);return{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,model:{...existingFallbacks?{fallbacks:existingFallbacks}:void 0,primary}}}}}function applyProviderConfigWithDefaultModels(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],defaultModels=params.defaultModels,defaultModelId=params.defaultModelId??defaultModels[0]?.id,hasDefaultModel=defaultModelId?existingModels.some(model=>model.id===defaultModelId):!0,mergedModels=existingModels.length>0?hasDefaultModel||defaultModels.length===0?existingModels:[...existingModels,...defaultModels]:defaultModels;return providers[params.providerId]=buildProviderConfig({existingProvider,api:params.api,baseUrl:params.baseUrl,mergedModels,fallbackModels:defaultModels}),applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:params.agentModels,providers})}function applyProviderConfigWithDefaultModel(cfg,params){return applyProviderConfigWithDefaultModels(cfg,{agentModels:params.agentModels,providerId:params.providerId,api:params.api,baseUrl:params.baseUrl,defaultModels:[params.defaultModel],defaultModelId:params.defaultModelId??params.defaultModel.id})}function applyProviderConfigWithModelCatalog(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],catalogModels=params.catalogModels,mergedModels=existingModels.length>0?[...existingModels,...catalogModels.filter(model=>!existingModels.some(existing=>existing.id===model.id))]:catalogModels;return providers[params.providerId]=buildProviderConfig({existingProvider,api:params.api,baseUrl:params.baseUrl,mergedModels,fallbackModels:catalogModels}),applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:params.agentModels,providers})}function buildProviderConfig(params){let{apiKey:existingApiKey,...existingProviderRest}=params.existingProvider??{},normalizedApiKey=typeof existingApiKey==`string`?existingApiKey.trim():void 0;return{...existingProviderRest,baseUrl:params.baseUrl,api:params.api,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:params.mergedModels.length>0?params.mergedModels:params.fallbackModels}}function applyVercelAiGatewayProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF]={...models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF],alias:models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF]?.alias??`Vercel AI Gateway`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyCloudflareAiGatewayProviderConfig(cfg,params){let models={...cfg.agents?.defaults?.models};models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF]={...models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF],alias:models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF]?.alias??`Cloudflare AI Gateway`};let defaultModel=buildCloudflareAiGatewayModelDefinition(),existingProvider=cfg.models?.providers?.[`cloudflare-ai-gateway`],baseUrl=params?.accountId&&params?.gatewayId?resolveCloudflareAiGatewayBaseUrl({accountId:params.accountId,gatewayId:params.gatewayId}):typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl:void 0;return baseUrl?applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`cloudflare-ai-gateway`,api:`anthropic-messages`,baseUrl,defaultModel}):{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyVercelAiGatewayConfig(cfg){return applyAgentDefaultModelPrimary(applyVercelAiGatewayProviderConfig(cfg),VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF)}function applyCloudflareAiGatewayConfig(cfg,params){return applyAgentDefaultModelPrimary(applyCloudflareAiGatewayProviderConfig(cfg,params),CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF)}const LITELLM_DEFAULT_MODEL_ID=`claude-opus-4-6`,LITELLM_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0};function buildLitellmModelDefinition(){return{id:LITELLM_DEFAULT_MODEL_ID,name:`Claude Opus 4.6`,reasoning:!0,input:[`text`,`image`],cost:LITELLM_DEFAULT_COST,contextWindow:128e3,maxTokens:8192}}function applyLitellmProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[LITELLM_DEFAULT_MODEL_REF]={...models[LITELLM_DEFAULT_MODEL_REF],alias:models[LITELLM_DEFAULT_MODEL_REF]?.alias??`LiteLLM`};let defaultModel=buildLitellmModelDefinition(),existingProvider=cfg.models?.providers?.litellm;return applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`litellm`,api:`openai-completions`,baseUrl:(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl.trim():``)||`http://localhost:4000`,defaultModel,defaultModelId:LITELLM_DEFAULT_MODEL_ID})}function applyLitellmConfig(cfg){return applyAgentDefaultModelPrimary(applyLitellmProviderConfig(cfg),LITELLM_DEFAULT_MODEL_REF)}function applyZaiProviderConfig(cfg,params){let modelRef=`zai/${params?.modelId?.trim()||ZAI_DEFAULT_MODEL_ID}`,models={...cfg.agents?.defaults?.models};models[modelRef]={...models[modelRef],alias:models[modelRef]?.alias??`GLM`};let providers={...cfg.models?.providers},existingProvider=providers.zai,existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],defaultModels=[buildZaiModelDefinition({id:`glm-5`}),buildZaiModelDefinition({id:`glm-4.7`}),buildZaiModelDefinition({id:`glm-4.7-flash`}),buildZaiModelDefinition({id:`glm-4.7-flashx`})],mergedModels=[...existingModels],seen=new Set(existingModels.map(m=>m.id));for(let model of defaultModels)seen.has(model.id)||(mergedModels.push(model),seen.add(model.id));let{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{},normalizedApiKey=(typeof existingApiKey==`string`?existingApiKey:void 0)?.trim(),baseUrl=params?.endpoint?resolveZaiBaseUrl(params.endpoint):(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl:``)||resolveZaiBaseUrl();return providers.zai={...existingProviderRest,baseUrl,api:`openai-completions`,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:defaultModels},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applyZaiConfig(cfg,params){let modelId=params?.modelId?.trim()||ZAI_DEFAULT_MODEL_ID,modelRef=modelId===ZAI_DEFAULT_MODEL_ID?ZAI_DEFAULT_MODEL_REF:`zai/${modelId}`;return applyAgentDefaultModelPrimary(applyZaiProviderConfig(cfg,params),modelRef)}function applyOpenrouterProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[OPENROUTER_DEFAULT_MODEL_REF]={...models[OPENROUTER_DEFAULT_MODEL_REF],alias:models[OPENROUTER_DEFAULT_MODEL_REF]?.alias??`OpenRouter`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyOpenrouterConfig(cfg){return applyAgentDefaultModelPrimary(applyOpenrouterProviderConfig(cfg),OPENROUTER_DEFAULT_MODEL_REF)}function applyMoonshotProviderConfig(cfg){return applyMoonshotProviderConfigWithBaseUrl(cfg,MOONSHOT_BASE_URL)}function applyMoonshotProviderConfigCn(cfg){return applyMoonshotProviderConfigWithBaseUrl(cfg,MOONSHOT_CN_BASE_URL)}function applyMoonshotProviderConfigWithBaseUrl(cfg,baseUrl){let models={...cfg.agents?.defaults?.models};return models[MOONSHOT_DEFAULT_MODEL_REF]={...models[MOONSHOT_DEFAULT_MODEL_REF],alias:models[MOONSHOT_DEFAULT_MODEL_REF]?.alias??`Kimi`},applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`moonshot`,api:`openai-completions`,baseUrl,defaultModel:buildMoonshotModelDefinition(),defaultModelId:MOONSHOT_DEFAULT_MODEL_ID})}function applyMoonshotConfig(cfg){return applyAgentDefaultModelPrimary(applyMoonshotProviderConfig(cfg),MOONSHOT_DEFAULT_MODEL_REF)}function applyMoonshotConfigCn(cfg){return applyAgentDefaultModelPrimary(applyMoonshotProviderConfigCn(cfg),MOONSHOT_DEFAULT_MODEL_REF)}function applyKimiCodeProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[KIMI_CODING_MODEL_REF]={...models[KIMI_CODING_MODEL_REF],alias:models[KIMI_CODING_MODEL_REF]?.alias??`Kimi K2.5`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyKimiCodeConfig(cfg){return applyAgentDefaultModelPrimary(applyKimiCodeProviderConfig(cfg),KIMI_CODING_MODEL_REF)}function applySyntheticProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[SYNTHETIC_DEFAULT_MODEL_REF]={...models[SYNTHETIC_DEFAULT_MODEL_REF],alias:models[SYNTHETIC_DEFAULT_MODEL_REF]?.alias??`MiniMax M2.1`};let providers={...cfg.models?.providers},existingProvider=providers.synthetic,existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],syntheticModels=SYNTHETIC_MODEL_CATALOG.map(buildSyntheticModelDefinition),mergedModels=[...existingModels,...syntheticModels.filter(model=>!existingModels.some(existing=>existing.id===model.id))],{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{},normalizedApiKey=(typeof existingApiKey==`string`?existingApiKey:void 0)?.trim();return providers.synthetic={...existingProviderRest,baseUrl:SYNTHETIC_BASE_URL,api:`anthropic-messages`,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:syntheticModels},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applySyntheticConfig(cfg){return applyAgentDefaultModelPrimary(applySyntheticProviderConfig(cfg),SYNTHETIC_DEFAULT_MODEL_REF)}function applyXiaomiProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[XIAOMI_DEFAULT_MODEL_REF]={...models[XIAOMI_DEFAULT_MODEL_REF],alias:models[XIAOMI_DEFAULT_MODEL_REF]?.alias??`Xiaomi`};let defaultProvider=buildXiaomiProvider();return applyProviderConfigWithDefaultModels(cfg,{agentModels:models,providerId:`xiaomi`,api:defaultProvider.api??`openai-completions`,baseUrl:defaultProvider.baseUrl,defaultModels:defaultProvider.models??[],defaultModelId:XIAOMI_DEFAULT_MODEL_ID})}function applyXiaomiConfig(cfg){return applyAgentDefaultModelPrimary(applyXiaomiProviderConfig(cfg),XIAOMI_DEFAULT_MODEL_REF)}function applyVeniceProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[VENICE_DEFAULT_MODEL_REF]={...models[VENICE_DEFAULT_MODEL_REF],alias:models[VENICE_DEFAULT_MODEL_REF]?.alias??`Llama 3.3 70B`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`venice`,api:`openai-completions`,baseUrl:VENICE_BASE_URL,catalogModels:VENICE_MODEL_CATALOG.map(buildVeniceModelDefinition)})}function applyVeniceConfig(cfg){return applyAgentDefaultModelPrimary(applyVeniceProviderConfig(cfg),VENICE_DEFAULT_MODEL_REF)}function applyTogetherProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[TOGETHER_DEFAULT_MODEL_REF]={...models[TOGETHER_DEFAULT_MODEL_REF],alias:models[TOGETHER_DEFAULT_MODEL_REF]?.alias??`Together AI`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`together`,api:`openai-completions`,baseUrl:TOGETHER_BASE_URL,catalogModels:TOGETHER_MODEL_CATALOG.map(buildTogetherModelDefinition)})}function applyTogetherConfig(cfg){return applyAgentDefaultModelPrimary(applyTogetherProviderConfig(cfg),TOGETHER_DEFAULT_MODEL_REF)}function applyHuggingfaceProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[HUGGINGFACE_DEFAULT_MODEL_REF]={...models[HUGGINGFACE_DEFAULT_MODEL_REF],alias:models[HUGGINGFACE_DEFAULT_MODEL_REF]?.alias??`Hugging Face`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`huggingface`,api:`openai-completions`,baseUrl:HUGGINGFACE_BASE_URL,catalogModels:HUGGINGFACE_MODEL_CATALOG.map(buildHuggingfaceModelDefinition)})}function applyHuggingfaceConfig(cfg){return applyAgentDefaultModelPrimary(applyHuggingfaceProviderConfig(cfg),HUGGINGFACE_DEFAULT_MODEL_REF)}function applyXaiProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[XAI_DEFAULT_MODEL_REF]={...models[XAI_DEFAULT_MODEL_REF],alias:models[XAI_DEFAULT_MODEL_REF]?.alias??`Grok`},applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`xai`,api:`openai-completions`,baseUrl:XAI_BASE_URL,defaultModel:buildXaiModelDefinition(),defaultModelId:XAI_DEFAULT_MODEL_ID})}function applyXaiConfig(cfg){return applyAgentDefaultModelPrimary(applyXaiProviderConfig(cfg),XAI_DEFAULT_MODEL_REF)}function applyAuthProfileConfig(cfg,params){let profiles={...cfg.auth?.profiles,[params.profileId]:{provider:params.provider,mode:params.mode,...params.email?{email:params.email}:{}}},existingProviderOrder=cfg.auth?.order?.[params.provider],preferProfileFirst=params.preferProfileFirst??!0,reorderedProviderOrder=existingProviderOrder&&preferProfileFirst?[params.profileId,...existingProviderOrder.filter(profileId=>profileId!==params.profileId)]:existingProviderOrder,order=existingProviderOrder===void 0?cfg.auth?.order:{...cfg.auth?.order,[params.provider]:reorderedProviderOrder?.includes(params.profileId)?reorderedProviderOrder:[...reorderedProviderOrder??[],params.profileId]};return{...cfg,auth:{...cfg.auth,profiles,...order?{order}:{}}}}function applyQianfanProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[QIANFAN_DEFAULT_MODEL_REF]={...models[QIANFAN_DEFAULT_MODEL_REF],alias:models[QIANFAN_DEFAULT_MODEL_REF]?.alias??`QIANFAN`};let defaultProvider=buildQianfanProvider(),existingProvider=cfg.models?.providers?.qianfan,resolvedBaseUrl=(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl.trim():``)||QIANFAN_BASE_URL;return applyProviderConfigWithDefaultModels(cfg,{agentModels:models,providerId:`qianfan`,api:typeof existingProvider?.api==`string`?existingProvider.api:`openai-completions`,baseUrl:resolvedBaseUrl,defaultModels:defaultProvider.models??[],defaultModelId:QIANFAN_DEFAULT_MODEL_ID})}function applyQianfanConfig(cfg){return applyAgentDefaultModelPrimary(applyQianfanProviderConfig(cfg),QIANFAN_DEFAULT_MODEL_REF)}function applyMinimaxProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[`anthropic/claude-opus-4-6`]={...models[`anthropic/claude-opus-4-6`],alias:models[`anthropic/claude-opus-4-6`]?.alias??`Opus`},models[`lmstudio/minimax-m2.1-gs32`]={...models[`lmstudio/minimax-m2.1-gs32`],alias:models[`lmstudio/minimax-m2.1-gs32`]?.alias??`Minimax`};let providers={...cfg.models?.providers};return providers.lmstudio||={baseUrl:`http://127.0.0.1:1234/v1`,apiKey:`lmstudio`,api:`openai-responses`,models:[buildMinimaxModelDefinition({id:`minimax-m2.1-gs32`,name:`MiniMax M2.1 GS32`,reasoning:!1,cost:MINIMAX_LM_STUDIO_COST,contextWindow:196608,maxTokens:8192})]},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applyMinimaxConfig(cfg){return applyAgentDefaultModelPrimary(applyMinimaxProviderConfig(cfg),`lmstudio/minimax-m2.1-gs32`)}function applyMinimaxApiProviderConfig(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiProviderConfigWithBaseUrl(cfg,{providerId:`minimax`,modelId,baseUrl:MINIMAX_API_BASE_URL})}function applyMinimaxApiConfig(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiConfigWithBaseUrl(cfg,{providerId:`minimax`,modelId,baseUrl:MINIMAX_API_BASE_URL})}function applyMinimaxApiProviderConfigCn(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiProviderConfigWithBaseUrl(cfg,{providerId:`minimax-cn`,modelId,baseUrl:MINIMAX_CN_API_BASE_URL})}function applyMinimaxApiConfigCn(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiConfigWithBaseUrl(cfg,{providerId:`minimax-cn`,modelId,baseUrl:MINIMAX_CN_API_BASE_URL})}function applyMinimaxApiProviderConfigWithBaseUrl(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=existingProvider?.models??[],apiModel=buildMinimaxApiModelDefinition(params.modelId),mergedModels=existingModels.some(model=>model.id===params.modelId)?existingModels:[...existingModels,apiModel],{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{baseUrl:params.baseUrl,models:[]},resolvedApiKey=typeof existingApiKey==`string`?existingApiKey:void 0,normalizedApiKey=resolvedApiKey?.trim()===`minimax`?``:resolvedApiKey;providers[params.providerId]={...existingProviderRest,baseUrl:params.baseUrl,api:`anthropic-messages`,...normalizedApiKey?.trim()?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:[apiModel]};let models={...cfg.agents?.defaults?.models},modelRef=`${params.providerId}/${params.modelId}`;return models[modelRef]={...models[modelRef],alias:`Minimax`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}},models:{mode:cfg.models?.mode??`merge`,providers}}}function applyMinimaxApiConfigWithBaseUrl(cfg,params){return applyAgentDefaultModelPrimary(applyMinimaxApiProviderConfigWithBaseUrl(cfg,params),`${params.providerId}/${params.modelId}`)}const OPENCODE_ZEN_DEFAULT_MODEL_REF=`opencode/claude-opus-4-6`;function applyOpencodeZenProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[OPENCODE_ZEN_DEFAULT_MODEL_REF]={...models[OPENCODE_ZEN_DEFAULT_MODEL_REF],alias:models[OPENCODE_ZEN_DEFAULT_MODEL_REF]?.alias??`Opus`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyOpencodeZenConfig(cfg){return applyAgentDefaultModelPrimary(applyOpencodeZenProviderConfig(cfg),OPENCODE_ZEN_DEFAULT_MODEL_REF)}const ANTHROPIC_SETUP_TOKEN_PREFIX=`sk-ant-oat01-`;function normalizeTokenProfileName(raw){let trimmed=raw.trim();return trimmed&&trimmed.toLowerCase().replace(/[^a-z0-9._-]+/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``)||`default`}function buildTokenProfileId(params){return`${normalizeProviderId(params.provider)}:${normalizeTokenProfileName(params.name)}`}function validateAnthropicSetupToken(raw){let trimmed=raw.trim();if(!trimmed)return`Required`;if(!trimmed.startsWith(ANTHROPIC_SETUP_TOKEN_PREFIX))return`Expected token starting with ${ANTHROPIC_SETUP_TOKEN_PREFIX}`;if(trimmed.length<80)return`Token looks too short; paste the full setup-token`}export{applyXaiConfig as A,applyVercelAiGatewayConfig as B,applyQianfanProviderConfig as C,applyTogetherProviderConfig as D,applyTogetherConfig as E,applyZaiProviderConfig as F,applyAgentDefaultModelPrimary as H,applyLitellmConfig as I,applyLitellmProviderConfig as L,applyXiaomiConfig as M,applyXiaomiProviderConfig as N,applyVeniceConfig as O,applyZaiConfig as P,applyCloudflareAiGatewayConfig as R,applyQianfanConfig as S,applySyntheticProviderConfig as T,applyVercelAiGatewayProviderConfig as V,applyMoonshotConfigCn as _,applyMinimaxApiConfig as a,applyOpenrouterConfig as b,applyMinimaxApiProviderConfigCn as c,applyAuthProfileConfig as d,applyHuggingfaceConfig as f,applyMoonshotConfig as g,applyKimiCodeProviderConfig as h,applyOpencodeZenProviderConfig as i,applyXaiProviderConfig as j,applyVeniceProviderConfig as k,applyMinimaxConfig as l,applyKimiCodeConfig as m,validateAnthropicSetupToken as n,applyMinimaxApiConfigCn as o,applyHuggingfaceProviderConfig as p,applyOpencodeZenConfig as r,applyMinimaxApiProviderConfig as s,buildTokenProfileId as t,applyMinimaxProviderConfig as u,applyMoonshotProviderConfig as v,applySyntheticConfig as w,applyOpenrouterProviderConfig as x,applyMoonshotProviderConfigCn as y,applyCloudflareAiGatewayProviderConfig as z};
@@ -1 +1 @@
1
- import{$ as buildXiaomiProvider,Q as buildQianfanProvider,R as normalizeProviderId,X as QIANFAN_DEFAULT_MODEL_ID,Y as QIANFAN_BASE_URL,Z as XIAOMI_DEFAULT_MODEL_ID,_t as SYNTHETIC_MODEL_CATALOG,cn as HUGGINGFACE_MODEL_CATALOG,ct as VENICE_BASE_URL,dt as buildVeniceModelDefinition,fn as CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF,ft as TOGETHER_BASE_URL,gt as SYNTHETIC_DEFAULT_MODEL_REF,ht as SYNTHETIC_BASE_URL,ln as buildHuggingfaceModelDefinition,lt as VENICE_DEFAULT_MODEL_REF,mn as resolveCloudflareAiGatewayBaseUrl,mt as buildTogetherModelDefinition,pn as buildCloudflareAiGatewayModelDefinition,pt as TOGETHER_MODEL_CATALOG,sn as HUGGINGFACE_BASE_URL,ut as VENICE_MODEL_CATALOG,vt as buildSyntheticModelDefinition}from"./auth-profiles-C1VbcUOm.js";import{A as MINIMAX_LM_STUDIO_COST,D as KIMI_CODING_MODEL_REF,F as QIANFAN_DEFAULT_MODEL_REF,G as buildMinimaxModelDefinition,H as ZAI_DEFAULT_MODEL_ID,I as XAI_BASE_URL,J as buildZaiModelDefinition,K as buildMoonshotModelDefinition,L as XAI_DEFAULT_MODEL_ID,M as MOONSHOT_CN_BASE_URL,N as MOONSHOT_DEFAULT_MODEL_ID,O as MINIMAX_API_BASE_URL,P as MOONSHOT_DEFAULT_MODEL_REF,R as XAI_DEFAULT_MODEL_REF,W as buildMinimaxApiModelDefinition,Y as resolveZaiBaseUrl,a as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF,i as TOGETHER_DEFAULT_MODEL_REF,j as MOONSHOT_BASE_URL,k as MINIMAX_CN_API_BASE_URL,n as LITELLM_DEFAULT_MODEL_REF,o as XIAOMI_DEFAULT_MODEL_REF,q as buildXaiModelDefinition,r as OPENROUTER_DEFAULT_MODEL_REF,s as ZAI_DEFAULT_MODEL_REF,t as HUGGINGFACE_DEFAULT_MODEL_REF}from"./onboard-auth.credentials-yagR-VMG.js";function extractAgentDefaultModelFallbacks(model){if(!model||typeof model!=`object`||!(`fallbacks`in model))return;let fallbacks=model.fallbacks;return Array.isArray(fallbacks)?fallbacks.map(v=>String(v)):void 0}function applyOnboardAuthAgentModelsAndProviders(cfg,params){return{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models:params.agentModels}},models:{mode:cfg.models?.mode??`merge`,providers:params.providers}}}function applyAgentDefaultModelPrimary(cfg,primary){let existingFallbacks=extractAgentDefaultModelFallbacks(cfg.agents?.defaults?.model);return{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,model:{...existingFallbacks?{fallbacks:existingFallbacks}:void 0,primary}}}}}function applyProviderConfigWithDefaultModels(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],defaultModels=params.defaultModels,defaultModelId=params.defaultModelId??defaultModels[0]?.id,hasDefaultModel=defaultModelId?existingModels.some(model=>model.id===defaultModelId):!0,mergedModels=existingModels.length>0?hasDefaultModel||defaultModels.length===0?existingModels:[...existingModels,...defaultModels]:defaultModels;return providers[params.providerId]=buildProviderConfig({existingProvider,api:params.api,baseUrl:params.baseUrl,mergedModels,fallbackModels:defaultModels}),applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:params.agentModels,providers})}function applyProviderConfigWithDefaultModel(cfg,params){return applyProviderConfigWithDefaultModels(cfg,{agentModels:params.agentModels,providerId:params.providerId,api:params.api,baseUrl:params.baseUrl,defaultModels:[params.defaultModel],defaultModelId:params.defaultModelId??params.defaultModel.id})}function applyProviderConfigWithModelCatalog(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],catalogModels=params.catalogModels,mergedModels=existingModels.length>0?[...existingModels,...catalogModels.filter(model=>!existingModels.some(existing=>existing.id===model.id))]:catalogModels;return providers[params.providerId]=buildProviderConfig({existingProvider,api:params.api,baseUrl:params.baseUrl,mergedModels,fallbackModels:catalogModels}),applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:params.agentModels,providers})}function buildProviderConfig(params){let{apiKey:existingApiKey,...existingProviderRest}=params.existingProvider??{},normalizedApiKey=typeof existingApiKey==`string`?existingApiKey.trim():void 0;return{...existingProviderRest,baseUrl:params.baseUrl,api:params.api,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:params.mergedModels.length>0?params.mergedModels:params.fallbackModels}}function applyVercelAiGatewayProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF]={...models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF],alias:models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF]?.alias??`Vercel AI Gateway`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyCloudflareAiGatewayProviderConfig(cfg,params){let models={...cfg.agents?.defaults?.models};models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF]={...models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF],alias:models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF]?.alias??`Cloudflare AI Gateway`};let defaultModel=buildCloudflareAiGatewayModelDefinition(),existingProvider=cfg.models?.providers?.[`cloudflare-ai-gateway`],baseUrl=params?.accountId&&params?.gatewayId?resolveCloudflareAiGatewayBaseUrl({accountId:params.accountId,gatewayId:params.gatewayId}):typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl:void 0;return baseUrl?applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`cloudflare-ai-gateway`,api:`anthropic-messages`,baseUrl,defaultModel}):{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyVercelAiGatewayConfig(cfg){return applyAgentDefaultModelPrimary(applyVercelAiGatewayProviderConfig(cfg),VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF)}function applyCloudflareAiGatewayConfig(cfg,params){return applyAgentDefaultModelPrimary(applyCloudflareAiGatewayProviderConfig(cfg,params),CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF)}const LITELLM_DEFAULT_MODEL_ID=`claude-opus-4-6`,LITELLM_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0};function buildLitellmModelDefinition(){return{id:LITELLM_DEFAULT_MODEL_ID,name:`Claude Opus 4.6`,reasoning:!0,input:[`text`,`image`],cost:LITELLM_DEFAULT_COST,contextWindow:128e3,maxTokens:8192}}function applyLitellmProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[LITELLM_DEFAULT_MODEL_REF]={...models[LITELLM_DEFAULT_MODEL_REF],alias:models[LITELLM_DEFAULT_MODEL_REF]?.alias??`LiteLLM`};let defaultModel=buildLitellmModelDefinition(),existingProvider=cfg.models?.providers?.litellm;return applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`litellm`,api:`openai-completions`,baseUrl:(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl.trim():``)||`http://localhost:4000`,defaultModel,defaultModelId:LITELLM_DEFAULT_MODEL_ID})}function applyLitellmConfig(cfg){return applyAgentDefaultModelPrimary(applyLitellmProviderConfig(cfg),LITELLM_DEFAULT_MODEL_REF)}function applyZaiProviderConfig(cfg,params){let modelRef=`zai/${params?.modelId?.trim()||ZAI_DEFAULT_MODEL_ID}`,models={...cfg.agents?.defaults?.models};models[modelRef]={...models[modelRef],alias:models[modelRef]?.alias??`GLM`};let providers={...cfg.models?.providers},existingProvider=providers.zai,existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],defaultModels=[buildZaiModelDefinition({id:`glm-5`}),buildZaiModelDefinition({id:`glm-4.7`}),buildZaiModelDefinition({id:`glm-4.7-flash`}),buildZaiModelDefinition({id:`glm-4.7-flashx`})],mergedModels=[...existingModels],seen=new Set(existingModels.map(m=>m.id));for(let model of defaultModels)seen.has(model.id)||(mergedModels.push(model),seen.add(model.id));let{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{},normalizedApiKey=(typeof existingApiKey==`string`?existingApiKey:void 0)?.trim(),baseUrl=params?.endpoint?resolveZaiBaseUrl(params.endpoint):(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl:``)||resolveZaiBaseUrl();return providers.zai={...existingProviderRest,baseUrl,api:`openai-completions`,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:defaultModels},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applyZaiConfig(cfg,params){let modelId=params?.modelId?.trim()||ZAI_DEFAULT_MODEL_ID,modelRef=modelId===ZAI_DEFAULT_MODEL_ID?ZAI_DEFAULT_MODEL_REF:`zai/${modelId}`;return applyAgentDefaultModelPrimary(applyZaiProviderConfig(cfg,params),modelRef)}function applyOpenrouterProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[OPENROUTER_DEFAULT_MODEL_REF]={...models[OPENROUTER_DEFAULT_MODEL_REF],alias:models[OPENROUTER_DEFAULT_MODEL_REF]?.alias??`OpenRouter`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyOpenrouterConfig(cfg){return applyAgentDefaultModelPrimary(applyOpenrouterProviderConfig(cfg),OPENROUTER_DEFAULT_MODEL_REF)}function applyMoonshotProviderConfig(cfg){return applyMoonshotProviderConfigWithBaseUrl(cfg,MOONSHOT_BASE_URL)}function applyMoonshotProviderConfigCn(cfg){return applyMoonshotProviderConfigWithBaseUrl(cfg,MOONSHOT_CN_BASE_URL)}function applyMoonshotProviderConfigWithBaseUrl(cfg,baseUrl){let models={...cfg.agents?.defaults?.models};return models[MOONSHOT_DEFAULT_MODEL_REF]={...models[MOONSHOT_DEFAULT_MODEL_REF],alias:models[MOONSHOT_DEFAULT_MODEL_REF]?.alias??`Kimi`},applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`moonshot`,api:`openai-completions`,baseUrl,defaultModel:buildMoonshotModelDefinition(),defaultModelId:MOONSHOT_DEFAULT_MODEL_ID})}function applyMoonshotConfig(cfg){return applyAgentDefaultModelPrimary(applyMoonshotProviderConfig(cfg),MOONSHOT_DEFAULT_MODEL_REF)}function applyMoonshotConfigCn(cfg){return applyAgentDefaultModelPrimary(applyMoonshotProviderConfigCn(cfg),MOONSHOT_DEFAULT_MODEL_REF)}function applyKimiCodeProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[KIMI_CODING_MODEL_REF]={...models[KIMI_CODING_MODEL_REF],alias:models[KIMI_CODING_MODEL_REF]?.alias??`Kimi K2.5`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyKimiCodeConfig(cfg){return applyAgentDefaultModelPrimary(applyKimiCodeProviderConfig(cfg),KIMI_CODING_MODEL_REF)}function applySyntheticProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[SYNTHETIC_DEFAULT_MODEL_REF]={...models[SYNTHETIC_DEFAULT_MODEL_REF],alias:models[SYNTHETIC_DEFAULT_MODEL_REF]?.alias??`MiniMax M2.1`};let providers={...cfg.models?.providers},existingProvider=providers.synthetic,existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],syntheticModels=SYNTHETIC_MODEL_CATALOG.map(buildSyntheticModelDefinition),mergedModels=[...existingModels,...syntheticModels.filter(model=>!existingModels.some(existing=>existing.id===model.id))],{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{},normalizedApiKey=(typeof existingApiKey==`string`?existingApiKey:void 0)?.trim();return providers.synthetic={...existingProviderRest,baseUrl:SYNTHETIC_BASE_URL,api:`anthropic-messages`,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:syntheticModels},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applySyntheticConfig(cfg){return applyAgentDefaultModelPrimary(applySyntheticProviderConfig(cfg),SYNTHETIC_DEFAULT_MODEL_REF)}function applyXiaomiProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[XIAOMI_DEFAULT_MODEL_REF]={...models[XIAOMI_DEFAULT_MODEL_REF],alias:models[XIAOMI_DEFAULT_MODEL_REF]?.alias??`Xiaomi`};let defaultProvider=buildXiaomiProvider();return applyProviderConfigWithDefaultModels(cfg,{agentModels:models,providerId:`xiaomi`,api:defaultProvider.api??`openai-completions`,baseUrl:defaultProvider.baseUrl,defaultModels:defaultProvider.models??[],defaultModelId:XIAOMI_DEFAULT_MODEL_ID})}function applyXiaomiConfig(cfg){return applyAgentDefaultModelPrimary(applyXiaomiProviderConfig(cfg),XIAOMI_DEFAULT_MODEL_REF)}function applyVeniceProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[VENICE_DEFAULT_MODEL_REF]={...models[VENICE_DEFAULT_MODEL_REF],alias:models[VENICE_DEFAULT_MODEL_REF]?.alias??`Llama 3.3 70B`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`venice`,api:`openai-completions`,baseUrl:VENICE_BASE_URL,catalogModels:VENICE_MODEL_CATALOG.map(buildVeniceModelDefinition)})}function applyVeniceConfig(cfg){return applyAgentDefaultModelPrimary(applyVeniceProviderConfig(cfg),VENICE_DEFAULT_MODEL_REF)}function applyTogetherProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[TOGETHER_DEFAULT_MODEL_REF]={...models[TOGETHER_DEFAULT_MODEL_REF],alias:models[TOGETHER_DEFAULT_MODEL_REF]?.alias??`Together AI`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`together`,api:`openai-completions`,baseUrl:TOGETHER_BASE_URL,catalogModels:TOGETHER_MODEL_CATALOG.map(buildTogetherModelDefinition)})}function applyTogetherConfig(cfg){return applyAgentDefaultModelPrimary(applyTogetherProviderConfig(cfg),TOGETHER_DEFAULT_MODEL_REF)}function applyHuggingfaceProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[HUGGINGFACE_DEFAULT_MODEL_REF]={...models[HUGGINGFACE_DEFAULT_MODEL_REF],alias:models[HUGGINGFACE_DEFAULT_MODEL_REF]?.alias??`Hugging Face`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`huggingface`,api:`openai-completions`,baseUrl:HUGGINGFACE_BASE_URL,catalogModels:HUGGINGFACE_MODEL_CATALOG.map(buildHuggingfaceModelDefinition)})}function applyHuggingfaceConfig(cfg){return applyAgentDefaultModelPrimary(applyHuggingfaceProviderConfig(cfg),HUGGINGFACE_DEFAULT_MODEL_REF)}function applyXaiProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[XAI_DEFAULT_MODEL_REF]={...models[XAI_DEFAULT_MODEL_REF],alias:models[XAI_DEFAULT_MODEL_REF]?.alias??`Grok`},applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`xai`,api:`openai-completions`,baseUrl:XAI_BASE_URL,defaultModel:buildXaiModelDefinition(),defaultModelId:XAI_DEFAULT_MODEL_ID})}function applyXaiConfig(cfg){return applyAgentDefaultModelPrimary(applyXaiProviderConfig(cfg),XAI_DEFAULT_MODEL_REF)}function applyAuthProfileConfig(cfg,params){let profiles={...cfg.auth?.profiles,[params.profileId]:{provider:params.provider,mode:params.mode,...params.email?{email:params.email}:{}}},existingProviderOrder=cfg.auth?.order?.[params.provider],preferProfileFirst=params.preferProfileFirst??!0,reorderedProviderOrder=existingProviderOrder&&preferProfileFirst?[params.profileId,...existingProviderOrder.filter(profileId=>profileId!==params.profileId)]:existingProviderOrder,order=existingProviderOrder===void 0?cfg.auth?.order:{...cfg.auth?.order,[params.provider]:reorderedProviderOrder?.includes(params.profileId)?reorderedProviderOrder:[...reorderedProviderOrder??[],params.profileId]};return{...cfg,auth:{...cfg.auth,profiles,...order?{order}:{}}}}function applyQianfanProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[QIANFAN_DEFAULT_MODEL_REF]={...models[QIANFAN_DEFAULT_MODEL_REF],alias:models[QIANFAN_DEFAULT_MODEL_REF]?.alias??`QIANFAN`};let defaultProvider=buildQianfanProvider(),existingProvider=cfg.models?.providers?.qianfan,resolvedBaseUrl=(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl.trim():``)||QIANFAN_BASE_URL;return applyProviderConfigWithDefaultModels(cfg,{agentModels:models,providerId:`qianfan`,api:typeof existingProvider?.api==`string`?existingProvider.api:`openai-completions`,baseUrl:resolvedBaseUrl,defaultModels:defaultProvider.models??[],defaultModelId:QIANFAN_DEFAULT_MODEL_ID})}function applyQianfanConfig(cfg){return applyAgentDefaultModelPrimary(applyQianfanProviderConfig(cfg),QIANFAN_DEFAULT_MODEL_REF)}function applyMinimaxProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[`anthropic/claude-opus-4-6`]={...models[`anthropic/claude-opus-4-6`],alias:models[`anthropic/claude-opus-4-6`]?.alias??`Opus`},models[`lmstudio/minimax-m2.1-gs32`]={...models[`lmstudio/minimax-m2.1-gs32`],alias:models[`lmstudio/minimax-m2.1-gs32`]?.alias??`Minimax`};let providers={...cfg.models?.providers};return providers.lmstudio||={baseUrl:`http://127.0.0.1:1234/v1`,apiKey:`lmstudio`,api:`openai-responses`,models:[buildMinimaxModelDefinition({id:`minimax-m2.1-gs32`,name:`MiniMax M2.1 GS32`,reasoning:!1,cost:MINIMAX_LM_STUDIO_COST,contextWindow:196608,maxTokens:8192})]},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applyMinimaxConfig(cfg){return applyAgentDefaultModelPrimary(applyMinimaxProviderConfig(cfg),`lmstudio/minimax-m2.1-gs32`)}function applyMinimaxApiProviderConfig(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiProviderConfigWithBaseUrl(cfg,{providerId:`minimax`,modelId,baseUrl:MINIMAX_API_BASE_URL})}function applyMinimaxApiConfig(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiConfigWithBaseUrl(cfg,{providerId:`minimax`,modelId,baseUrl:MINIMAX_API_BASE_URL})}function applyMinimaxApiProviderConfigCn(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiProviderConfigWithBaseUrl(cfg,{providerId:`minimax-cn`,modelId,baseUrl:MINIMAX_CN_API_BASE_URL})}function applyMinimaxApiConfigCn(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiConfigWithBaseUrl(cfg,{providerId:`minimax-cn`,modelId,baseUrl:MINIMAX_CN_API_BASE_URL})}function applyMinimaxApiProviderConfigWithBaseUrl(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=existingProvider?.models??[],apiModel=buildMinimaxApiModelDefinition(params.modelId),mergedModels=existingModels.some(model=>model.id===params.modelId)?existingModels:[...existingModels,apiModel],{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{baseUrl:params.baseUrl,models:[]},resolvedApiKey=typeof existingApiKey==`string`?existingApiKey:void 0,normalizedApiKey=resolvedApiKey?.trim()===`minimax`?``:resolvedApiKey;providers[params.providerId]={...existingProviderRest,baseUrl:params.baseUrl,api:`anthropic-messages`,...normalizedApiKey?.trim()?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:[apiModel]};let models={...cfg.agents?.defaults?.models},modelRef=`${params.providerId}/${params.modelId}`;return models[modelRef]={...models[modelRef],alias:`Minimax`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}},models:{mode:cfg.models?.mode??`merge`,providers}}}function applyMinimaxApiConfigWithBaseUrl(cfg,params){return applyAgentDefaultModelPrimary(applyMinimaxApiProviderConfigWithBaseUrl(cfg,params),`${params.providerId}/${params.modelId}`)}const OPENCODE_ZEN_DEFAULT_MODEL_REF=`opencode/claude-opus-4-6`;function applyOpencodeZenProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[OPENCODE_ZEN_DEFAULT_MODEL_REF]={...models[OPENCODE_ZEN_DEFAULT_MODEL_REF],alias:models[OPENCODE_ZEN_DEFAULT_MODEL_REF]?.alias??`Opus`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyOpencodeZenConfig(cfg){return applyAgentDefaultModelPrimary(applyOpencodeZenProviderConfig(cfg),OPENCODE_ZEN_DEFAULT_MODEL_REF)}const ANTHROPIC_SETUP_TOKEN_PREFIX=`sk-ant-oat01-`;function normalizeTokenProfileName(raw){let trimmed=raw.trim();return trimmed&&trimmed.toLowerCase().replace(/[^a-z0-9._-]+/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``)||`default`}function buildTokenProfileId(params){return`${normalizeProviderId(params.provider)}:${normalizeTokenProfileName(params.name)}`}function validateAnthropicSetupToken(raw){let trimmed=raw.trim();if(!trimmed)return`Required`;if(!trimmed.startsWith(ANTHROPIC_SETUP_TOKEN_PREFIX))return`Expected token starting with ${ANTHROPIC_SETUP_TOKEN_PREFIX}`;if(trimmed.length<80)return`Token looks too short; paste the full setup-token`}export{applyXaiConfig as A,applyVercelAiGatewayConfig as B,applyQianfanProviderConfig as C,applyTogetherProviderConfig as D,applyTogetherConfig as E,applyZaiProviderConfig as F,applyAgentDefaultModelPrimary as H,applyLitellmConfig as I,applyLitellmProviderConfig as L,applyXiaomiConfig as M,applyXiaomiProviderConfig as N,applyVeniceConfig as O,applyZaiConfig as P,applyCloudflareAiGatewayConfig as R,applyQianfanConfig as S,applySyntheticProviderConfig as T,applyVercelAiGatewayProviderConfig as V,applyMoonshotConfigCn as _,applyMinimaxApiConfig as a,applyOpenrouterConfig as b,applyMinimaxApiProviderConfigCn as c,applyAuthProfileConfig as d,applyHuggingfaceConfig as f,applyMoonshotConfig as g,applyKimiCodeProviderConfig as h,applyOpencodeZenProviderConfig as i,applyXaiProviderConfig as j,applyVeniceProviderConfig as k,applyMinimaxConfig as l,applyKimiCodeConfig as m,validateAnthropicSetupToken as n,applyMinimaxApiConfigCn as o,applyHuggingfaceProviderConfig as p,applyOpencodeZenConfig as r,applyMinimaxApiProviderConfig as s,buildTokenProfileId as t,applyMinimaxProviderConfig as u,applyMoonshotProviderConfig as v,applySyntheticConfig as w,applyOpenrouterProviderConfig as x,applyMoonshotProviderConfigCn as y,applyCloudflareAiGatewayProviderConfig as z};
1
+ import{$ as buildXiaomiProvider,Q as buildQianfanProvider,R as normalizeProviderId,X as QIANFAN_DEFAULT_MODEL_ID,Y as QIANFAN_BASE_URL,Z as XIAOMI_DEFAULT_MODEL_ID,_t as SYNTHETIC_MODEL_CATALOG,cn as HUGGINGFACE_MODEL_CATALOG,ct as VENICE_BASE_URL,dt as buildVeniceModelDefinition,fn as CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF,ft as TOGETHER_BASE_URL,gt as SYNTHETIC_DEFAULT_MODEL_REF,ht as SYNTHETIC_BASE_URL,ln as buildHuggingfaceModelDefinition,lt as VENICE_DEFAULT_MODEL_REF,mn as resolveCloudflareAiGatewayBaseUrl,mt as buildTogetherModelDefinition,pn as buildCloudflareAiGatewayModelDefinition,pt as TOGETHER_MODEL_CATALOG,sn as HUGGINGFACE_BASE_URL,ut as VENICE_MODEL_CATALOG,vt as buildSyntheticModelDefinition}from"./auth-profiles-pt7Tr4HA.js";import{A as MINIMAX_LM_STUDIO_COST,D as KIMI_CODING_MODEL_REF,F as QIANFAN_DEFAULT_MODEL_REF,G as buildMinimaxModelDefinition,H as ZAI_DEFAULT_MODEL_ID,I as XAI_BASE_URL,J as buildZaiModelDefinition,K as buildMoonshotModelDefinition,L as XAI_DEFAULT_MODEL_ID,M as MOONSHOT_CN_BASE_URL,N as MOONSHOT_DEFAULT_MODEL_ID,O as MINIMAX_API_BASE_URL,P as MOONSHOT_DEFAULT_MODEL_REF,R as XAI_DEFAULT_MODEL_REF,W as buildMinimaxApiModelDefinition,Y as resolveZaiBaseUrl,a as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF,i as TOGETHER_DEFAULT_MODEL_REF,j as MOONSHOT_BASE_URL,k as MINIMAX_CN_API_BASE_URL,n as LITELLM_DEFAULT_MODEL_REF,o as XIAOMI_DEFAULT_MODEL_REF,q as buildXaiModelDefinition,r as OPENROUTER_DEFAULT_MODEL_REF,s as ZAI_DEFAULT_MODEL_REF,t as HUGGINGFACE_DEFAULT_MODEL_REF}from"./onboard-auth.credentials-DneFSdYg.js";function extractAgentDefaultModelFallbacks(model){if(!model||typeof model!=`object`||!(`fallbacks`in model))return;let fallbacks=model.fallbacks;return Array.isArray(fallbacks)?fallbacks.map(v=>String(v)):void 0}function applyOnboardAuthAgentModelsAndProviders(cfg,params){return{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models:params.agentModels}},models:{mode:cfg.models?.mode??`merge`,providers:params.providers}}}function applyAgentDefaultModelPrimary(cfg,primary){let existingFallbacks=extractAgentDefaultModelFallbacks(cfg.agents?.defaults?.model);return{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,model:{...existingFallbacks?{fallbacks:existingFallbacks}:void 0,primary}}}}}function applyProviderConfigWithDefaultModels(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],defaultModels=params.defaultModels,defaultModelId=params.defaultModelId??defaultModels[0]?.id,hasDefaultModel=defaultModelId?existingModels.some(model=>model.id===defaultModelId):!0,mergedModels=existingModels.length>0?hasDefaultModel||defaultModels.length===0?existingModels:[...existingModels,...defaultModels]:defaultModels;return providers[params.providerId]=buildProviderConfig({existingProvider,api:params.api,baseUrl:params.baseUrl,mergedModels,fallbackModels:defaultModels}),applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:params.agentModels,providers})}function applyProviderConfigWithDefaultModel(cfg,params){return applyProviderConfigWithDefaultModels(cfg,{agentModels:params.agentModels,providerId:params.providerId,api:params.api,baseUrl:params.baseUrl,defaultModels:[params.defaultModel],defaultModelId:params.defaultModelId??params.defaultModel.id})}function applyProviderConfigWithModelCatalog(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],catalogModels=params.catalogModels,mergedModels=existingModels.length>0?[...existingModels,...catalogModels.filter(model=>!existingModels.some(existing=>existing.id===model.id))]:catalogModels;return providers[params.providerId]=buildProviderConfig({existingProvider,api:params.api,baseUrl:params.baseUrl,mergedModels,fallbackModels:catalogModels}),applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:params.agentModels,providers})}function buildProviderConfig(params){let{apiKey:existingApiKey,...existingProviderRest}=params.existingProvider??{},normalizedApiKey=typeof existingApiKey==`string`?existingApiKey.trim():void 0;return{...existingProviderRest,baseUrl:params.baseUrl,api:params.api,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:params.mergedModels.length>0?params.mergedModels:params.fallbackModels}}function applyVercelAiGatewayProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF]={...models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF],alias:models[VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF]?.alias??`Vercel AI Gateway`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyCloudflareAiGatewayProviderConfig(cfg,params){let models={...cfg.agents?.defaults?.models};models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF]={...models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF],alias:models[CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF]?.alias??`Cloudflare AI Gateway`};let defaultModel=buildCloudflareAiGatewayModelDefinition(),existingProvider=cfg.models?.providers?.[`cloudflare-ai-gateway`],baseUrl=params?.accountId&&params?.gatewayId?resolveCloudflareAiGatewayBaseUrl({accountId:params.accountId,gatewayId:params.gatewayId}):typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl:void 0;return baseUrl?applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`cloudflare-ai-gateway`,api:`anthropic-messages`,baseUrl,defaultModel}):{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyVercelAiGatewayConfig(cfg){return applyAgentDefaultModelPrimary(applyVercelAiGatewayProviderConfig(cfg),VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF)}function applyCloudflareAiGatewayConfig(cfg,params){return applyAgentDefaultModelPrimary(applyCloudflareAiGatewayProviderConfig(cfg,params),CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF)}const LITELLM_DEFAULT_MODEL_ID=`claude-opus-4-6`,LITELLM_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0};function buildLitellmModelDefinition(){return{id:LITELLM_DEFAULT_MODEL_ID,name:`Claude Opus 4.6`,reasoning:!0,input:[`text`,`image`],cost:LITELLM_DEFAULT_COST,contextWindow:128e3,maxTokens:8192}}function applyLitellmProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[LITELLM_DEFAULT_MODEL_REF]={...models[LITELLM_DEFAULT_MODEL_REF],alias:models[LITELLM_DEFAULT_MODEL_REF]?.alias??`LiteLLM`};let defaultModel=buildLitellmModelDefinition(),existingProvider=cfg.models?.providers?.litellm;return applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`litellm`,api:`openai-completions`,baseUrl:(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl.trim():``)||`http://localhost:4000`,defaultModel,defaultModelId:LITELLM_DEFAULT_MODEL_ID})}function applyLitellmConfig(cfg){return applyAgentDefaultModelPrimary(applyLitellmProviderConfig(cfg),LITELLM_DEFAULT_MODEL_REF)}function applyZaiProviderConfig(cfg,params){let modelRef=`zai/${params?.modelId?.trim()||ZAI_DEFAULT_MODEL_ID}`,models={...cfg.agents?.defaults?.models};models[modelRef]={...models[modelRef],alias:models[modelRef]?.alias??`GLM`};let providers={...cfg.models?.providers},existingProvider=providers.zai,existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],defaultModels=[buildZaiModelDefinition({id:`glm-5`}),buildZaiModelDefinition({id:`glm-4.7`}),buildZaiModelDefinition({id:`glm-4.7-flash`}),buildZaiModelDefinition({id:`glm-4.7-flashx`})],mergedModels=[...existingModels],seen=new Set(existingModels.map(m=>m.id));for(let model of defaultModels)seen.has(model.id)||(mergedModels.push(model),seen.add(model.id));let{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{},normalizedApiKey=(typeof existingApiKey==`string`?existingApiKey:void 0)?.trim(),baseUrl=params?.endpoint?resolveZaiBaseUrl(params.endpoint):(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl:``)||resolveZaiBaseUrl();return providers.zai={...existingProviderRest,baseUrl,api:`openai-completions`,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:defaultModels},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applyZaiConfig(cfg,params){let modelId=params?.modelId?.trim()||ZAI_DEFAULT_MODEL_ID,modelRef=modelId===ZAI_DEFAULT_MODEL_ID?ZAI_DEFAULT_MODEL_REF:`zai/${modelId}`;return applyAgentDefaultModelPrimary(applyZaiProviderConfig(cfg,params),modelRef)}function applyOpenrouterProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[OPENROUTER_DEFAULT_MODEL_REF]={...models[OPENROUTER_DEFAULT_MODEL_REF],alias:models[OPENROUTER_DEFAULT_MODEL_REF]?.alias??`OpenRouter`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyOpenrouterConfig(cfg){return applyAgentDefaultModelPrimary(applyOpenrouterProviderConfig(cfg),OPENROUTER_DEFAULT_MODEL_REF)}function applyMoonshotProviderConfig(cfg){return applyMoonshotProviderConfigWithBaseUrl(cfg,MOONSHOT_BASE_URL)}function applyMoonshotProviderConfigCn(cfg){return applyMoonshotProviderConfigWithBaseUrl(cfg,MOONSHOT_CN_BASE_URL)}function applyMoonshotProviderConfigWithBaseUrl(cfg,baseUrl){let models={...cfg.agents?.defaults?.models};return models[MOONSHOT_DEFAULT_MODEL_REF]={...models[MOONSHOT_DEFAULT_MODEL_REF],alias:models[MOONSHOT_DEFAULT_MODEL_REF]?.alias??`Kimi`},applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`moonshot`,api:`openai-completions`,baseUrl,defaultModel:buildMoonshotModelDefinition(),defaultModelId:MOONSHOT_DEFAULT_MODEL_ID})}function applyMoonshotConfig(cfg){return applyAgentDefaultModelPrimary(applyMoonshotProviderConfig(cfg),MOONSHOT_DEFAULT_MODEL_REF)}function applyMoonshotConfigCn(cfg){return applyAgentDefaultModelPrimary(applyMoonshotProviderConfigCn(cfg),MOONSHOT_DEFAULT_MODEL_REF)}function applyKimiCodeProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[KIMI_CODING_MODEL_REF]={...models[KIMI_CODING_MODEL_REF],alias:models[KIMI_CODING_MODEL_REF]?.alias??`Kimi K2.5`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyKimiCodeConfig(cfg){return applyAgentDefaultModelPrimary(applyKimiCodeProviderConfig(cfg),KIMI_CODING_MODEL_REF)}function applySyntheticProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[SYNTHETIC_DEFAULT_MODEL_REF]={...models[SYNTHETIC_DEFAULT_MODEL_REF],alias:models[SYNTHETIC_DEFAULT_MODEL_REF]?.alias??`MiniMax M2.1`};let providers={...cfg.models?.providers},existingProvider=providers.synthetic,existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],syntheticModels=SYNTHETIC_MODEL_CATALOG.map(buildSyntheticModelDefinition),mergedModels=[...existingModels,...syntheticModels.filter(model=>!existingModels.some(existing=>existing.id===model.id))],{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{},normalizedApiKey=(typeof existingApiKey==`string`?existingApiKey:void 0)?.trim();return providers.synthetic={...existingProviderRest,baseUrl:SYNTHETIC_BASE_URL,api:`anthropic-messages`,...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:syntheticModels},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applySyntheticConfig(cfg){return applyAgentDefaultModelPrimary(applySyntheticProviderConfig(cfg),SYNTHETIC_DEFAULT_MODEL_REF)}function applyXiaomiProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[XIAOMI_DEFAULT_MODEL_REF]={...models[XIAOMI_DEFAULT_MODEL_REF],alias:models[XIAOMI_DEFAULT_MODEL_REF]?.alias??`Xiaomi`};let defaultProvider=buildXiaomiProvider();return applyProviderConfigWithDefaultModels(cfg,{agentModels:models,providerId:`xiaomi`,api:defaultProvider.api??`openai-completions`,baseUrl:defaultProvider.baseUrl,defaultModels:defaultProvider.models??[],defaultModelId:XIAOMI_DEFAULT_MODEL_ID})}function applyXiaomiConfig(cfg){return applyAgentDefaultModelPrimary(applyXiaomiProviderConfig(cfg),XIAOMI_DEFAULT_MODEL_REF)}function applyVeniceProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[VENICE_DEFAULT_MODEL_REF]={...models[VENICE_DEFAULT_MODEL_REF],alias:models[VENICE_DEFAULT_MODEL_REF]?.alias??`Llama 3.3 70B`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`venice`,api:`openai-completions`,baseUrl:VENICE_BASE_URL,catalogModels:VENICE_MODEL_CATALOG.map(buildVeniceModelDefinition)})}function applyVeniceConfig(cfg){return applyAgentDefaultModelPrimary(applyVeniceProviderConfig(cfg),VENICE_DEFAULT_MODEL_REF)}function applyTogetherProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[TOGETHER_DEFAULT_MODEL_REF]={...models[TOGETHER_DEFAULT_MODEL_REF],alias:models[TOGETHER_DEFAULT_MODEL_REF]?.alias??`Together AI`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`together`,api:`openai-completions`,baseUrl:TOGETHER_BASE_URL,catalogModels:TOGETHER_MODEL_CATALOG.map(buildTogetherModelDefinition)})}function applyTogetherConfig(cfg){return applyAgentDefaultModelPrimary(applyTogetherProviderConfig(cfg),TOGETHER_DEFAULT_MODEL_REF)}function applyHuggingfaceProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[HUGGINGFACE_DEFAULT_MODEL_REF]={...models[HUGGINGFACE_DEFAULT_MODEL_REF],alias:models[HUGGINGFACE_DEFAULT_MODEL_REF]?.alias??`Hugging Face`},applyProviderConfigWithModelCatalog(cfg,{agentModels:models,providerId:`huggingface`,api:`openai-completions`,baseUrl:HUGGINGFACE_BASE_URL,catalogModels:HUGGINGFACE_MODEL_CATALOG.map(buildHuggingfaceModelDefinition)})}function applyHuggingfaceConfig(cfg){return applyAgentDefaultModelPrimary(applyHuggingfaceProviderConfig(cfg),HUGGINGFACE_DEFAULT_MODEL_REF)}function applyXaiProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[XAI_DEFAULT_MODEL_REF]={...models[XAI_DEFAULT_MODEL_REF],alias:models[XAI_DEFAULT_MODEL_REF]?.alias??`Grok`},applyProviderConfigWithDefaultModel(cfg,{agentModels:models,providerId:`xai`,api:`openai-completions`,baseUrl:XAI_BASE_URL,defaultModel:buildXaiModelDefinition(),defaultModelId:XAI_DEFAULT_MODEL_ID})}function applyXaiConfig(cfg){return applyAgentDefaultModelPrimary(applyXaiProviderConfig(cfg),XAI_DEFAULT_MODEL_REF)}function applyAuthProfileConfig(cfg,params){let profiles={...cfg.auth?.profiles,[params.profileId]:{provider:params.provider,mode:params.mode,...params.email?{email:params.email}:{}}},existingProviderOrder=cfg.auth?.order?.[params.provider],preferProfileFirst=params.preferProfileFirst??!0,reorderedProviderOrder=existingProviderOrder&&preferProfileFirst?[params.profileId,...existingProviderOrder.filter(profileId=>profileId!==params.profileId)]:existingProviderOrder,order=existingProviderOrder===void 0?cfg.auth?.order:{...cfg.auth?.order,[params.provider]:reorderedProviderOrder?.includes(params.profileId)?reorderedProviderOrder:[...reorderedProviderOrder??[],params.profileId]};return{...cfg,auth:{...cfg.auth,profiles,...order?{order}:{}}}}function applyQianfanProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[QIANFAN_DEFAULT_MODEL_REF]={...models[QIANFAN_DEFAULT_MODEL_REF],alias:models[QIANFAN_DEFAULT_MODEL_REF]?.alias??`QIANFAN`};let defaultProvider=buildQianfanProvider(),existingProvider=cfg.models?.providers?.qianfan,resolvedBaseUrl=(typeof existingProvider?.baseUrl==`string`?existingProvider.baseUrl.trim():``)||QIANFAN_BASE_URL;return applyProviderConfigWithDefaultModels(cfg,{agentModels:models,providerId:`qianfan`,api:typeof existingProvider?.api==`string`?existingProvider.api:`openai-completions`,baseUrl:resolvedBaseUrl,defaultModels:defaultProvider.models??[],defaultModelId:QIANFAN_DEFAULT_MODEL_ID})}function applyQianfanConfig(cfg){return applyAgentDefaultModelPrimary(applyQianfanProviderConfig(cfg),QIANFAN_DEFAULT_MODEL_REF)}function applyMinimaxProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};models[`anthropic/claude-opus-4-6`]={...models[`anthropic/claude-opus-4-6`],alias:models[`anthropic/claude-opus-4-6`]?.alias??`Opus`},models[`lmstudio/minimax-m2.1-gs32`]={...models[`lmstudio/minimax-m2.1-gs32`],alias:models[`lmstudio/minimax-m2.1-gs32`]?.alias??`Minimax`};let providers={...cfg.models?.providers};return providers.lmstudio||={baseUrl:`http://127.0.0.1:1234/v1`,apiKey:`lmstudio`,api:`openai-responses`,models:[buildMinimaxModelDefinition({id:`minimax-m2.1-gs32`,name:`MiniMax M2.1 GS32`,reasoning:!1,cost:MINIMAX_LM_STUDIO_COST,contextWindow:196608,maxTokens:8192})]},applyOnboardAuthAgentModelsAndProviders(cfg,{agentModels:models,providers})}function applyMinimaxConfig(cfg){return applyAgentDefaultModelPrimary(applyMinimaxProviderConfig(cfg),`lmstudio/minimax-m2.1-gs32`)}function applyMinimaxApiProviderConfig(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiProviderConfigWithBaseUrl(cfg,{providerId:`minimax`,modelId,baseUrl:MINIMAX_API_BASE_URL})}function applyMinimaxApiConfig(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiConfigWithBaseUrl(cfg,{providerId:`minimax`,modelId,baseUrl:MINIMAX_API_BASE_URL})}function applyMinimaxApiProviderConfigCn(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiProviderConfigWithBaseUrl(cfg,{providerId:`minimax-cn`,modelId,baseUrl:MINIMAX_CN_API_BASE_URL})}function applyMinimaxApiConfigCn(cfg,modelId=`MiniMax-M2.5`){return applyMinimaxApiConfigWithBaseUrl(cfg,{providerId:`minimax-cn`,modelId,baseUrl:MINIMAX_CN_API_BASE_URL})}function applyMinimaxApiProviderConfigWithBaseUrl(cfg,params){let providers={...cfg.models?.providers},existingProvider=providers[params.providerId],existingModels=existingProvider?.models??[],apiModel=buildMinimaxApiModelDefinition(params.modelId),mergedModels=existingModels.some(model=>model.id===params.modelId)?existingModels:[...existingModels,apiModel],{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{baseUrl:params.baseUrl,models:[]},resolvedApiKey=typeof existingApiKey==`string`?existingApiKey:void 0,normalizedApiKey=resolvedApiKey?.trim()===`minimax`?``:resolvedApiKey;providers[params.providerId]={...existingProviderRest,baseUrl:params.baseUrl,api:`anthropic-messages`,...normalizedApiKey?.trim()?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:[apiModel]};let models={...cfg.agents?.defaults?.models},modelRef=`${params.providerId}/${params.modelId}`;return models[modelRef]={...models[modelRef],alias:`Minimax`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}},models:{mode:cfg.models?.mode??`merge`,providers}}}function applyMinimaxApiConfigWithBaseUrl(cfg,params){return applyAgentDefaultModelPrimary(applyMinimaxApiProviderConfigWithBaseUrl(cfg,params),`${params.providerId}/${params.modelId}`)}const OPENCODE_ZEN_DEFAULT_MODEL_REF=`opencode/claude-opus-4-6`;function applyOpencodeZenProviderConfig(cfg){let models={...cfg.agents?.defaults?.models};return models[OPENCODE_ZEN_DEFAULT_MODEL_REF]={...models[OPENCODE_ZEN_DEFAULT_MODEL_REF],alias:models[OPENCODE_ZEN_DEFAULT_MODEL_REF]?.alias??`Opus`},{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,models}}}}function applyOpencodeZenConfig(cfg){return applyAgentDefaultModelPrimary(applyOpencodeZenProviderConfig(cfg),OPENCODE_ZEN_DEFAULT_MODEL_REF)}const ANTHROPIC_SETUP_TOKEN_PREFIX=`sk-ant-oat01-`;function normalizeTokenProfileName(raw){let trimmed=raw.trim();return trimmed&&trimmed.toLowerCase().replace(/[^a-z0-9._-]+/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``)||`default`}function buildTokenProfileId(params){return`${normalizeProviderId(params.provider)}:${normalizeTokenProfileName(params.name)}`}function validateAnthropicSetupToken(raw){let trimmed=raw.trim();if(!trimmed)return`Required`;if(!trimmed.startsWith(ANTHROPIC_SETUP_TOKEN_PREFIX))return`Expected token starting with ${ANTHROPIC_SETUP_TOKEN_PREFIX}`;if(trimmed.length<80)return`Token looks too short; paste the full setup-token`}export{applyXaiConfig as A,applyVercelAiGatewayConfig as B,applyQianfanProviderConfig as C,applyTogetherProviderConfig as D,applyTogetherConfig as E,applyZaiProviderConfig as F,applyAgentDefaultModelPrimary as H,applyLitellmConfig as I,applyLitellmProviderConfig as L,applyXiaomiConfig as M,applyXiaomiProviderConfig as N,applyVeniceConfig as O,applyZaiConfig as P,applyCloudflareAiGatewayConfig as R,applyQianfanConfig as S,applySyntheticProviderConfig as T,applyVercelAiGatewayProviderConfig as V,applyMoonshotConfigCn as _,applyMinimaxApiConfig as a,applyOpenrouterConfig as b,applyMinimaxApiProviderConfigCn as c,applyAuthProfileConfig as d,applyHuggingfaceConfig as f,applyMoonshotConfig as g,applyKimiCodeProviderConfig as h,applyOpencodeZenProviderConfig as i,applyXaiProviderConfig as j,applyVeniceProviderConfig as k,applyMinimaxConfig as l,applyKimiCodeConfig as m,validateAnthropicSetupToken as n,applyMinimaxApiConfigCn as o,applyHuggingfaceProviderConfig as p,applyOpencodeZenConfig as r,applyMinimaxApiProviderConfig as s,buildTokenProfileId as t,applyMinimaxProviderConfig as u,applyMoonshotProviderConfig as v,applySyntheticConfig as w,applyOpenrouterProviderConfig as x,applyMoonshotProviderConfigCn as y,applyCloudflareAiGatewayProviderConfig as z};
@@ -1 +1 @@
1
- import{R as isRich,z as theme}from"./utils-BP60e80M.js";import{d as visibleWidth}from"./subsystem-C4b1Von0.js";import{rn as resolveCommitHash}from"./subagent-registry-CyGxu3kP.js";const DEFAULT_TAGLINE=`All your chats, one BuilderForceAgents.`,HOLIDAY_TAGLINES={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 agentNode-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.`},TAGLINES=[`Your terminal just grew agentNodes—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 agentNodes: 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.`,`AgentNodes out, commit in—let's ship something mildly responsible.`,`If it's repetitive, I'll automate it; if it's hard, I'll bring jokes and a rollback plan.`,`Because texting yourself reminders is so 2024.`,`Your inbox, your infra, your rules.`,`Turning "I'll reply later" into "my bot replied instantly".`,`Chat automation for people who peaked at IRC.`,`Because Siri wasn't answering at 3AM.`,`IPC, but it's your phone.`,`The UNIX philosophy meets your DMs.`,`curl for conversations.`,`Less middlemen, more messages.`,`Ship fast, log faster.`,`End-to-end encrypted, drama-to-drama excluded.`,`The only bot that stays out of your training set.`,`WhatsApp automation without the "please accept our new privacy policy".`,`Chat APIs that don't require a Senate hearing.`,`Meta wishes they shipped this fast.`,`Because the right answer is usually a script.`,`Your messages, your servers, your control.`,`OpenAI-compatible, not OpenAI-dependent.`,`iMessage green bubble energy, but for everyone.`,`Siri's competent cousin.`,`Works on Android. Crazy concept, we know.`,`No $999 stand required.`,`We ship features faster than Apple ships calculator updates.`,`Your AI assistant, now without the $3,499 headset.`,`Think different. Actually think.`,`Ah, the fruit tree company! 🍎`,`Greetings, Professor Falken`,HOLIDAY_TAGLINES.newYear,HOLIDAY_TAGLINES.lunarNewYear,HOLIDAY_TAGLINES.christmas,HOLIDAY_TAGLINES.eid,HOLIDAY_TAGLINES.diwali,HOLIDAY_TAGLINES.easter,HOLIDAY_TAGLINES.hanukkah,HOLIDAY_TAGLINES.halloween,HOLIDAY_TAGLINES.thanksgiving,HOLIDAY_TAGLINES.valentines],DAY_MS=1440*60*1e3;function utcParts(date){return{year:date.getUTCFullYear(),month:date.getUTCMonth(),day:date.getUTCDate()}}const onMonthDay=(month,day)=>date=>{let parts=utcParts(date);return parts.month===month&&parts.day===day},onSpecificDates=(dates,durationDays=1)=>date=>{let parts=utcParts(date);return dates.some(([year,month,day])=>{if(parts.year!==year)return!1;let start=Date.UTC(year,month,day),current=Date.UTC(parts.year,parts.month,parts.day);return current>=start&&current<start+durationDays*DAY_MS})},HOLIDAY_RULES=new Map([[HOLIDAY_TAGLINES.newYear,onMonthDay(0,1)],[HOLIDAY_TAGLINES.lunarNewYear,onSpecificDates([[2025,0,29],[2026,1,17],[2027,1,6]],1)],[HOLIDAY_TAGLINES.eid,onSpecificDates([[2025,2,30],[2025,2,31],[2026,2,20],[2027,2,10]],1)],[HOLIDAY_TAGLINES.diwali,onSpecificDates([[2025,9,20],[2026,10,8],[2027,9,28]],1)],[HOLIDAY_TAGLINES.easter,onSpecificDates([[2025,3,20],[2026,3,5],[2027,2,28]],1)],[HOLIDAY_TAGLINES.hanukkah,(windows=>date=>{let parts=utcParts(date),window=windows.find(entry=>entry.year===parts.year);if(!window)return!1;let start=Date.UTC(window.year,window.month,window.day),current=Date.UTC(parts.year,parts.month,parts.day);return current>=start&&current<start+window.duration*DAY_MS})([{year:2025,month:11,day:15,duration:8},{year:2026,month:11,day:5,duration:8},{year:2027,month:11,day:25,duration:8}])],[HOLIDAY_TAGLINES.halloween,onMonthDay(9,31)],[HOLIDAY_TAGLINES.thanksgiving,date=>{let parts=utcParts(date);if(parts.month!==10)return!1;let fourthThursday=1+(4-new Date(Date.UTC(parts.year,10,1)).getUTCDay()+7)%7+21;return parts.day===fourthThursday}],[HOLIDAY_TAGLINES.valentines,onMonthDay(1,14)],[HOLIDAY_TAGLINES.christmas,onMonthDay(11,25)]]);function isTaglineActive(tagline,date){let rule=HOLIDAY_RULES.get(tagline);return rule?rule(date):!0}function activeTaglines(options={}){if(TAGLINES.length===0)return[DEFAULT_TAGLINE];let today=options.now?options.now():new Date,filtered=TAGLINES.filter(tagline=>isTaglineActive(tagline,today));return filtered.length>0?filtered:TAGLINES}function pickTagline(options={}){let override=(options.env??process.env)?.BUILDERFORCE_AGENTS_TAGLINE_INDEX;if(override!==void 0){let parsed=Number.parseInt(override,10);if(!Number.isNaN(parsed)&&parsed>=0){let pool=TAGLINES.length>0?TAGLINES:[DEFAULT_TAGLINE];return pool[parsed%pool.length]}}let pool=activeTaglines(options),rand=options.random??Math.random;return pool[Math.floor(rand()*pool.length)%pool.length]}let bannerEmitted=!1;const hasJsonFlag=argv=>argv.some(arg=>arg===`--json`||arg.startsWith(`--json=`)),hasVersionFlag=argv=>argv.some(arg=>arg===`--version`||arg===`-V`||arg===`-v`);function formatCliBannerLine(version,options={}){let commitLabel=options.commit??resolveCommitHash({env:options.env})??`local`,tagline=pickTagline(options),rich=options.richTty??isRich(),title=`BuilderForceAgents`,columns=options.columns??process.stdout.columns??120,plainFullLine=`${title} ${version} (${commitLabel}) — ${tagline}`,fitsOnOneLine=visibleWidth(plainFullLine)<=columns;return rich?fitsOnOneLine?`${theme.brand(title)} ${theme.brand(version)} ${theme.muted(`(${commitLabel})`)} ${theme.muted(`—`)} ${theme.brand(tagline)}`:`${`${theme.brand(title)} ${theme.brand(version)} ${theme.muted(`(${commitLabel})`)}`}\n${`${` `.repeat(0)}${theme.brand(tagline)}`}`:fitsOnOneLine?plainFullLine:`${`${title} ${version} (${commitLabel})`}\n${`${` `.repeat(0)}${tagline}`}`}function emitCliBanner(version,options={}){if(bannerEmitted)return;let argv=options.argv??process.argv;if(!process.stdout.isTTY||hasJsonFlag(argv)||hasVersionFlag(argv))return;let line=formatCliBannerLine(version,options);process.stdout.write(`\n${line}\n\n`),bannerEmitted=!0}function hasEmittedCliBanner(){return bannerEmitted}export{formatCliBannerLine as n,hasEmittedCliBanner as r,emitCliBanner as t};
1
+ import{R as isRich,z as theme}from"./utils-BP60e80M.js";import{d as visibleWidth}from"./subsystem-C4b1Von0.js";import{rn as resolveCommitHash}from"./subagent-registry-DDEN4oJi.js";const DEFAULT_TAGLINE=`All your chats, one BuilderForceAgents.`,HOLIDAY_TAGLINES={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 agentNode-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.`},TAGLINES=[`Your terminal just grew agentNodes—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 agentNodes: 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.`,`AgentNodes out, commit in—let's ship something mildly responsible.`,`If it's repetitive, I'll automate it; if it's hard, I'll bring jokes and a rollback plan.`,`Because texting yourself reminders is so 2024.`,`Your inbox, your infra, your rules.`,`Turning "I'll reply later" into "my bot replied instantly".`,`Chat automation for people who peaked at IRC.`,`Because Siri wasn't answering at 3AM.`,`IPC, but it's your phone.`,`The UNIX philosophy meets your DMs.`,`curl for conversations.`,`Less middlemen, more messages.`,`Ship fast, log faster.`,`End-to-end encrypted, drama-to-drama excluded.`,`The only bot that stays out of your training set.`,`WhatsApp automation without the "please accept our new privacy policy".`,`Chat APIs that don't require a Senate hearing.`,`Meta wishes they shipped this fast.`,`Because the right answer is usually a script.`,`Your messages, your servers, your control.`,`OpenAI-compatible, not OpenAI-dependent.`,`iMessage green bubble energy, but for everyone.`,`Siri's competent cousin.`,`Works on Android. Crazy concept, we know.`,`No $999 stand required.`,`We ship features faster than Apple ships calculator updates.`,`Your AI assistant, now without the $3,499 headset.`,`Think different. Actually think.`,`Ah, the fruit tree company! 🍎`,`Greetings, Professor Falken`,HOLIDAY_TAGLINES.newYear,HOLIDAY_TAGLINES.lunarNewYear,HOLIDAY_TAGLINES.christmas,HOLIDAY_TAGLINES.eid,HOLIDAY_TAGLINES.diwali,HOLIDAY_TAGLINES.easter,HOLIDAY_TAGLINES.hanukkah,HOLIDAY_TAGLINES.halloween,HOLIDAY_TAGLINES.thanksgiving,HOLIDAY_TAGLINES.valentines],DAY_MS=1440*60*1e3;function utcParts(date){return{year:date.getUTCFullYear(),month:date.getUTCMonth(),day:date.getUTCDate()}}const onMonthDay=(month,day)=>date=>{let parts=utcParts(date);return parts.month===month&&parts.day===day},onSpecificDates=(dates,durationDays=1)=>date=>{let parts=utcParts(date);return dates.some(([year,month,day])=>{if(parts.year!==year)return!1;let start=Date.UTC(year,month,day),current=Date.UTC(parts.year,parts.month,parts.day);return current>=start&&current<start+durationDays*DAY_MS})},HOLIDAY_RULES=new Map([[HOLIDAY_TAGLINES.newYear,onMonthDay(0,1)],[HOLIDAY_TAGLINES.lunarNewYear,onSpecificDates([[2025,0,29],[2026,1,17],[2027,1,6]],1)],[HOLIDAY_TAGLINES.eid,onSpecificDates([[2025,2,30],[2025,2,31],[2026,2,20],[2027,2,10]],1)],[HOLIDAY_TAGLINES.diwali,onSpecificDates([[2025,9,20],[2026,10,8],[2027,9,28]],1)],[HOLIDAY_TAGLINES.easter,onSpecificDates([[2025,3,20],[2026,3,5],[2027,2,28]],1)],[HOLIDAY_TAGLINES.hanukkah,(windows=>date=>{let parts=utcParts(date),window=windows.find(entry=>entry.year===parts.year);if(!window)return!1;let start=Date.UTC(window.year,window.month,window.day),current=Date.UTC(parts.year,parts.month,parts.day);return current>=start&&current<start+window.duration*DAY_MS})([{year:2025,month:11,day:15,duration:8},{year:2026,month:11,day:5,duration:8},{year:2027,month:11,day:25,duration:8}])],[HOLIDAY_TAGLINES.halloween,onMonthDay(9,31)],[HOLIDAY_TAGLINES.thanksgiving,date=>{let parts=utcParts(date);if(parts.month!==10)return!1;let fourthThursday=1+(4-new Date(Date.UTC(parts.year,10,1)).getUTCDay()+7)%7+21;return parts.day===fourthThursday}],[HOLIDAY_TAGLINES.valentines,onMonthDay(1,14)],[HOLIDAY_TAGLINES.christmas,onMonthDay(11,25)]]);function isTaglineActive(tagline,date){let rule=HOLIDAY_RULES.get(tagline);return rule?rule(date):!0}function activeTaglines(options={}){if(TAGLINES.length===0)return[DEFAULT_TAGLINE];let today=options.now?options.now():new Date,filtered=TAGLINES.filter(tagline=>isTaglineActive(tagline,today));return filtered.length>0?filtered:TAGLINES}function pickTagline(options={}){let override=(options.env??process.env)?.BUILDERFORCE_AGENTS_TAGLINE_INDEX;if(override!==void 0){let parsed=Number.parseInt(override,10);if(!Number.isNaN(parsed)&&parsed>=0){let pool=TAGLINES.length>0?TAGLINES:[DEFAULT_TAGLINE];return pool[parsed%pool.length]}}let pool=activeTaglines(options),rand=options.random??Math.random;return pool[Math.floor(rand()*pool.length)%pool.length]}let bannerEmitted=!1;const hasJsonFlag=argv=>argv.some(arg=>arg===`--json`||arg.startsWith(`--json=`)),hasVersionFlag=argv=>argv.some(arg=>arg===`--version`||arg===`-V`||arg===`-v`);function formatCliBannerLine(version,options={}){let commitLabel=options.commit??resolveCommitHash({env:options.env})??`local`,tagline=pickTagline(options),rich=options.richTty??isRich(),title=`BuilderForceAgents`,columns=options.columns??process.stdout.columns??120,plainFullLine=`${title} ${version} (${commitLabel}) — ${tagline}`,fitsOnOneLine=visibleWidth(plainFullLine)<=columns;return rich?fitsOnOneLine?`${theme.brand(title)} ${theme.brand(version)} ${theme.muted(`(${commitLabel})`)} ${theme.muted(`—`)} ${theme.brand(tagline)}`:`${`${theme.brand(title)} ${theme.brand(version)} ${theme.muted(`(${commitLabel})`)}`}\n${`${` `.repeat(0)}${theme.brand(tagline)}`}`:fitsOnOneLine?plainFullLine:`${`${title} ${version} (${commitLabel})`}\n${`${` `.repeat(0)}${tagline}`}`}function emitCliBanner(version,options={}){if(bannerEmitted)return;let argv=options.argv??process.argv;if(!process.stdout.isTTY||hasJsonFlag(argv)||hasVersionFlag(argv))return;let line=formatCliBannerLine(version,options);process.stdout.write(`\n${line}\n\n`),bannerEmitted=!0}function hasEmittedCliBanner(){return bannerEmitted}export{formatCliBannerLine as n,hasEmittedCliBanner as r,emitCliBanner as t};
@@ -1,4 +1,4 @@
1
- import{g as resolveStateDir}from"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import{D as danger,O as info,S as shortenHomePath,z as theme}from"./utils-BP60e80M.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{t as parseBooleanValue}from"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./auth-profiles-C1VbcUOm.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import"./src-DvWaTze9.js";import"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-HrLX5bhG.js";import{r as loadConfig}from"./io-CohJffHG.js";import"./manifest-registry-009gLJ4l.js";import"./config-toczWD3q.js";import"./client-CGgp3zkQ.js";import"./call-DmAU4cRX.js";import"./message-channel-z5YRpR2d.js";import"./redact-CgO7wehS.js";import"./errors-tAt19c1E.js";import{a as resolvePathsWithinRoot,r as DEFAULT_UPLOAD_DIR}from"./paths-BnOjueoX.js";import{t as movePathToTrash}from"./trash-C3zmJ_O7.js";import{t as formatDocsLink}from"./links-BKzP7VVP.js";import{n as runCommandWithRuntime}from"./cli-utils-C9pW69LF.js";import{t as formatHelpExamples}from"./help-format-CfFf-w62.js";import"./progress-Cqb-jAjT.js";import{n as inheritOptionFromParent}from"./command-options-DbMbMxM2.js";import{n as callGatewayFromCli,t as addGatewayClientOptions}from"./gateway-rpc-ByUcnQ7W.js";import{t as copyToClipboard}from"./clipboard-BuWqKeWo.js";import path from"node:path";import fs from"node:fs";import{fileURLToPath}from"node:url";function normalizeQuery(query){if(!query)return;let out={};for(let[key,value]of Object.entries(query))value!==void 0&&(out[key]=String(value));return Object.keys(out).length?out:void 0}async function callBrowserRequest(opts,params,extra){let resolvedTimeoutMs=typeof extra?.timeoutMs==`number`&&Number.isFinite(extra.timeoutMs)?Math.max(1,Math.floor(extra.timeoutMs)):typeof opts.timeout==`string`?Number.parseInt(opts.timeout,10):void 0,resolvedTimeout=typeof resolvedTimeoutMs==`number`&&Number.isFinite(resolvedTimeoutMs)?resolvedTimeoutMs:void 0,timeout=typeof resolvedTimeout==`number`?String(resolvedTimeout):opts.timeout,payload=await callGatewayFromCli(`browser.request`,{...opts,timeout},{method:params.method,path:params.path,query:normalizeQuery(params.query),body:params.body,timeoutMs:resolvedTimeout},{progress:extra?.progress});if(payload===void 0)throw Error(`Unexpected browser.request response`);return payload}async function callBrowserResize(opts,params,extra){return callBrowserRequest(opts,{method:`POST`,path:`/act`,query:params.profile?{profile:params.profile}:void 0,body:{kind:`resize`,width:params.width,height:params.height,targetId:params.targetId?.trim()||void 0}},extra)}function resolveBrowserActionContext(cmd,parentOpts){let parent=parentOpts(cmd);return{parent,profile:parent?.browserProfile}}async function callBrowserAct(params){return await callBrowserRequest(params.parent,{method:`POST`,path:`/act`,query:params.profile?{profile:params.profile}:void 0,body:params.body},{timeoutMs:params.timeoutMs??2e4})}function requireRef(ref){return(typeof ref==`string`?ref.trim():``)||(defaultRuntime.error(danger(`ref is required`)),defaultRuntime.exit(1),null)}async function readFile(path){return await(await import(`node:fs/promises`)).readFile(path,`utf8`)}async function readFields(opts){let payload=opts.fieldsFile?await readFile(opts.fieldsFile):opts.fields??``;if(!payload.trim())throw Error(`fields are required`);let parsed=JSON.parse(payload);if(!Array.isArray(parsed))throw Error(`fields must be an array`);return parsed.map((entry,index)=>{if(!entry||typeof entry!=`object`)throw Error(`fields[${index}] must be an object`);let rec=entry,ref=typeof rec.ref==`string`?rec.ref.trim():``,type=typeof rec.type==`string`?rec.type.trim():``;if(!ref||!type)throw Error(`fields[${index}] must include ref and type`);if(typeof rec.value==`string`||typeof rec.value==`number`||typeof rec.value==`boolean`)return{ref,type,value:rec.value};if(rec.value===void 0||rec.value===null)return{ref,type};throw Error(`fields[${index}].value must be string, number, boolean, or null`)})}function registerBrowserElementCommands(browser,parentOpts){browser.command(`click`).description(`Click an element by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--double`,`Double click`,!1).option(`--button <left|right|middle>`,`Mouse button to use`).option(`--modifiers <list>`,`Comma-separated modifiers (Shift,Alt,Meta)`).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(!refValue)return;let modifiers=opts.modifiers?String(opts.modifiers).split(`,`).map(v=>v.trim()).filter(Boolean):void 0;try{let result=await callBrowserAct({parent,profile,body:{kind:`click`,ref:refValue,targetId:opts.targetId?.trim()||void 0,doubleClick:!!opts.double,button:opts.button?.trim()||void 0,modifiers}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}let suffix=result.url?` on ${result.url}`:``;defaultRuntime.log(`clicked ref ${refValue}${suffix}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`type`).description(`Type into an element by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).argument(`<text>`,`Text to type`).option(`--submit`,`Press Enter after typing`,!1).option(`--slowly`,`Type slowly (human-like)`,!1).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,text,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(refValue)try{let result=await callBrowserAct({parent,profile,body:{kind:`type`,ref:refValue,text,submit:!!opts.submit,slowly:!!opts.slowly,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`typed into ref ${refValue}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`press`).description(`Press a key`).argument(`<key>`,`Key to press (e.g. Enter)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(key,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`press`,key,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`pressed ${key}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`hover`).description(`Hover an element by ai ref`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`hover`,ref,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`hovered ref ${ref}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`scrollintoview`).description(`Scroll an element into view by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for scroll (default: 20000)`,v=>Number(v)).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(refValue)try{let result=await callBrowserAct({parent,profile,body:{kind:`scrollIntoView`,ref:refValue,targetId:opts.targetId?.trim()||void 0,timeoutMs:Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0},timeoutMs:Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`scrolled into view: ${refValue}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`drag`).description(`Drag from one ref to another`).argument(`<startRef>`,`Start ref id`).argument(`<endRef>`,`End ref id`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(startRef,endRef,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`drag`,startRef,endRef,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`dragged ${startRef} → ${endRef}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`select`).description(`Select option(s) in a select element`).argument(`<ref>`,`Ref id from snapshot`).argument(`<values...>`,`Option values to select`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,values,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`select`,ref,values,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`selected ${values.join(`, `)}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function normalizeUploadPaths(paths){let result=resolvePathsWithinRoot({rootDir:DEFAULT_UPLOAD_DIR,requestedPaths:paths,scopeLabel:`uploads directory (${DEFAULT_UPLOAD_DIR})`});if(!result.ok)throw Error(result.error);return result.paths}function registerBrowserFilesAndDownloadsCommands(browser,parentOpts){let resolveTimeoutAndTarget=opts=>({timeoutMs:Number.isFinite(opts.timeoutMs)?Number(opts.timeoutMs):void 0,targetId:typeof opts.targetId==`string`&&opts.targetId.trim()||void 0}),runDownloadCommand=async(cmd,opts,request)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:request.path,query:profile?{profile}:void 0,body:{...request.body,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`downloaded: ${shortenHomePath(result.download.path)}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}};browser.command(`upload`).description(`Arm file upload for the next file chooser`).argument(`<paths...>`,`File paths to upload (must be within BuilderForceAgents temp uploads dir, e.g. /tmp/builderforce/uploads/file.pdf)`).option(`--ref <ref>`,`Ref id from snapshot to click after arming`).option(`--input-ref <ref>`,`Ref id for <input type=file> to set directly`).option(`--element <selector>`,`CSS selector for <input type=file>`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next file chooser (default: 120000)`,v=>Number(v)).action(async(paths,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let normalizedPaths=normalizeUploadPaths(paths),{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:`/hooks/file-chooser`,query:profile?{profile}:void 0,body:{paths:normalizedPaths,ref:opts.ref?.trim()||void 0,inputRef:opts.inputRef?.trim()||void 0,element:opts.element?.trim()||void 0,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`upload armed for ${paths.length} file(s)`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`waitfordownload`).description(`Wait for the next download (and save it)`).argument(`[path]`,`Save path within builderforce temp downloads dir (default: /tmp/builderforce/downloads/...; fallback: os.tmpdir()/builderforce/downloads/...)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next download (default: 120000)`,v=>Number(v)).action(async(outPath,opts,cmd)=>{await runDownloadCommand(cmd,opts,{path:`/wait/download`,body:{path:outPath?.trim()||void 0}})}),browser.command(`download`).description(`Click a ref and save the resulting download`).argument(`<ref>`,`Ref id from snapshot to click`).argument(`<path>`,`Save path within builderforce temp downloads dir (e.g. report.pdf or /tmp/builderforce/downloads/report.pdf)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the download to start (default: 120000)`,v=>Number(v)).action(async(ref,outPath,opts,cmd)=>{await runDownloadCommand(cmd,opts,{path:`/download`,body:{ref,path:outPath}})}),browser.command(`dialog`).description(`Arm the next modal dialog (alert/confirm/prompt)`).option(`--accept`,`Accept the dialog`,!1).option(`--dismiss`,`Dismiss the dialog`,!1).option(`--prompt <text>`,`Prompt response text`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next dialog (default: 120000)`,v=>Number(v)).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),accept=opts.accept?!0:opts.dismiss?!1:void 0;if(accept===void 0){defaultRuntime.error(danger(`Specify --accept or --dismiss`)),defaultRuntime.exit(1);return}try{let{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:`/hooks/dialog`,query:profile?{profile}:void 0,body:{accept,promptText:opts.prompt?.trim()||void 0,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`dialog armed`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function registerBrowserFormWaitEvalCommands(browser,parentOpts){browser.command(`fill`).description(`Fill a form with JSON field descriptors`).option(`--fields <json>`,`JSON array of field objects`).option(`--fields-file <path>`,`Read JSON array from a file`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let fields=await readFields({fields:opts.fields,fieldsFile:opts.fieldsFile}),result=await callBrowserAct({parent,profile,body:{kind:`fill`,fields,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`filled ${fields.length} field(s)`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`wait`).description(`Wait for time, selector, URL, load state, or JS conditions`).argument(`[selector]`,`CSS selector to wait for (visible)`).option(`--time <ms>`,`Wait for N milliseconds`,v=>Number(v)).option(`--text <value>`,`Wait for text to appear`).option(`--text-gone <value>`,`Wait for text to disappear`).option(`--url <pattern>`,`Wait for URL (supports globs like **/dash)`).option(`--load <load|domcontentloaded|networkidle>`,`Wait for load state`).option(`--fn <js>`,`Wait for JS condition (passed to waitForFunction)`).option(`--timeout-ms <ms>`,`How long to wait for each condition (default: 20000)`,v=>Number(v)).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(selector,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let sel=selector?.trim()||void 0,load=opts.load===`load`||opts.load===`domcontentloaded`||opts.load===`networkidle`?opts.load:void 0,timeoutMs=Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0,result=await callBrowserAct({parent,profile,body:{kind:`wait`,timeMs:Number.isFinite(opts.time)?opts.time:void 0,text:opts.text?.trim()||void 0,textGone:opts.textGone?.trim()||void 0,selector:sel,url:opts.url?.trim()||void 0,loadState:load,fn:opts.fn?.trim()||void 0,targetId:opts.targetId?.trim()||void 0,timeoutMs},timeoutMs});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`wait complete`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`evaluate`).description(`Evaluate a function against the page or a ref`).option(`--fn <code>`,`Function source, e.g. (el) => el.textContent`).option(`--ref <id>`,`Ref from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);if(!opts.fn){defaultRuntime.error(danger(`Missing --fn`)),defaultRuntime.exit(1);return}try{let result=await callBrowserAct({parent,profile,body:{kind:`evaluate`,fn:opts.fn,ref:opts.ref?.trim()||void 0,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(JSON.stringify(result.result??null,null,2))}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}async function runBrowserResizeWithOutput(params){let{width,height}=params;if(!Number.isFinite(width)||!Number.isFinite(height)){defaultRuntime.error(danger(`width and height must be numbers`)),defaultRuntime.exit(1);return}let result=await callBrowserResize(params.parent,{profile:params.profile,width,height,targetId:params.targetId},{timeoutMs:params.timeoutMs??2e4});if(params.parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(params.successMessage)}function registerBrowserNavigationCommands(browser,parentOpts){browser.command(`navigate`).description(`Navigate the current tab to a URL`).argument(`<url>`,`URL to navigate to`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(url,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserRequest(parent,{method:`POST`,path:`/navigate`,query:profile?{profile}:void 0,body:{url,targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`navigated to ${result.url??url}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`resize`).description(`Resize the viewport`).argument(`<width>`,`Viewport width`,v=>Number(v)).argument(`<height>`,`Viewport height`,v=>Number(v)).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(width,height,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{await runBrowserResizeWithOutput({parent,profile,width,height,targetId:opts.targetId,timeoutMs:2e4,successMessage:`resized to ${width}x${height}`})}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function registerBrowserActionInputCommands(browser,parentOpts){registerBrowserNavigationCommands(browser,parentOpts),registerBrowserElementCommands(browser,parentOpts),registerBrowserFilesAndDownloadsCommands(browser,parentOpts),registerBrowserFormWaitEvalCommands(browser,parentOpts)}function runBrowserObserve(action){return runCommandWithRuntime(defaultRuntime,action,err=>{defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)})}function registerBrowserActionObserveCommands(browser,parentOpts){browser.command(`console`).description(`Get recent console messages`).option(`--level <level>`,`Filter by level (error, warn, info)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let result=await callBrowserRequest(parent,{method:`GET`,path:`/console`,query:{level:opts.level?.trim()||void 0,targetId:opts.targetId?.trim()||void 0,profile}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(JSON.stringify(result.messages,null,2))})}),browser.command(`pdf`).description(`Save page as PDF`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/pdf`,query:profile?{profile}:void 0,body:{targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`PDF: ${shortenHomePath(result.path)}`)})}),browser.command(`responsebody`).description(`Wait for a network response and return its body`).argument(`<url>`,`URL (exact, substring, or glob like **/api)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the response (default: 20000)`,v=>Number(v)).option(`--max-chars <n>`,`Max body chars to return (default: 200000)`,v=>Number(v)).action(async(url,opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let timeoutMs=Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0,maxChars=Number.isFinite(opts.maxChars)?opts.maxChars:void 0,result=await callBrowserRequest(parent,{method:`POST`,path:`/response/body`,query:profile?{profile}:void 0,body:{url,targetId:opts.targetId?.trim()||void 0,timeoutMs,maxChars}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(result.response.body)})})}function runBrowserDebug(action){return runCommandWithRuntime(defaultRuntime,action,err=>{defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)})}function resolveDebugQuery(params){return{targetId:typeof params.targetId==`string`&&params.targetId.trim()||void 0,filter:typeof params.filter==`string`&&params.filter.trim()||void 0,clear:!!params.clear,profile:params.profile}}function registerBrowserDebugCommands(browser,parentOpts){browser.command(`highlight`).description(`Highlight an element by ref`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/highlight`,query:profile?{profile}:void 0,body:{ref:ref.trim(),targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`highlighted ${ref.trim()}`)})}),browser.command(`errors`).description(`Get recent page errors`).option(`--clear`,`Clear stored errors after reading`,!1).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`GET`,path:`/errors`,query:resolveDebugQuery({targetId:opts.targetId,clear:opts.clear,profile})},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}if(!result.errors.length){defaultRuntime.log(`No page errors.`);return}defaultRuntime.log(result.errors.map(e=>`${e.timestamp} ${e.name?`${e.name}: `:``}${e.message}`).join(`
1
+ import{g as resolveStateDir}from"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import{D as danger,O as info,S as shortenHomePath,z as theme}from"./utils-BP60e80M.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{t as parseBooleanValue}from"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./auth-profiles-pt7Tr4HA.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import"./src-DvWaTze9.js";import"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-HrLX5bhG.js";import{r as loadConfig}from"./io-D9hC2aG0.js";import"./manifest-registry-009gLJ4l.js";import"./config-BpChMIJ6.js";import"./client-CGgp3zkQ.js";import"./call-Du2LiaX6.js";import"./message-channel-z5YRpR2d.js";import"./redact-CgO7wehS.js";import"./errors-tAt19c1E.js";import{a as resolvePathsWithinRoot,r as DEFAULT_UPLOAD_DIR}from"./paths-BnOjueoX.js";import{t as movePathToTrash}from"./trash-C3zmJ_O7.js";import{t as formatDocsLink}from"./links-BKzP7VVP.js";import{n as runCommandWithRuntime}from"./cli-utils-C9pW69LF.js";import{t as formatHelpExamples}from"./help-format-CfFf-w62.js";import"./progress-Cqb-jAjT.js";import{n as inheritOptionFromParent}from"./command-options-DbMbMxM2.js";import{n as callGatewayFromCli,t as addGatewayClientOptions}from"./gateway-rpc-ff1RVb0_.js";import{t as copyToClipboard}from"./clipboard-BuWqKeWo.js";import path from"node:path";import fs from"node:fs";import{fileURLToPath}from"node:url";function normalizeQuery(query){if(!query)return;let out={};for(let[key,value]of Object.entries(query))value!==void 0&&(out[key]=String(value));return Object.keys(out).length?out:void 0}async function callBrowserRequest(opts,params,extra){let resolvedTimeoutMs=typeof extra?.timeoutMs==`number`&&Number.isFinite(extra.timeoutMs)?Math.max(1,Math.floor(extra.timeoutMs)):typeof opts.timeout==`string`?Number.parseInt(opts.timeout,10):void 0,resolvedTimeout=typeof resolvedTimeoutMs==`number`&&Number.isFinite(resolvedTimeoutMs)?resolvedTimeoutMs:void 0,timeout=typeof resolvedTimeout==`number`?String(resolvedTimeout):opts.timeout,payload=await callGatewayFromCli(`browser.request`,{...opts,timeout},{method:params.method,path:params.path,query:normalizeQuery(params.query),body:params.body,timeoutMs:resolvedTimeout},{progress:extra?.progress});if(payload===void 0)throw Error(`Unexpected browser.request response`);return payload}async function callBrowserResize(opts,params,extra){return callBrowserRequest(opts,{method:`POST`,path:`/act`,query:params.profile?{profile:params.profile}:void 0,body:{kind:`resize`,width:params.width,height:params.height,targetId:params.targetId?.trim()||void 0}},extra)}function resolveBrowserActionContext(cmd,parentOpts){let parent=parentOpts(cmd);return{parent,profile:parent?.browserProfile}}async function callBrowserAct(params){return await callBrowserRequest(params.parent,{method:`POST`,path:`/act`,query:params.profile?{profile:params.profile}:void 0,body:params.body},{timeoutMs:params.timeoutMs??2e4})}function requireRef(ref){return(typeof ref==`string`?ref.trim():``)||(defaultRuntime.error(danger(`ref is required`)),defaultRuntime.exit(1),null)}async function readFile(path){return await(await import(`node:fs/promises`)).readFile(path,`utf8`)}async function readFields(opts){let payload=opts.fieldsFile?await readFile(opts.fieldsFile):opts.fields??``;if(!payload.trim())throw Error(`fields are required`);let parsed=JSON.parse(payload);if(!Array.isArray(parsed))throw Error(`fields must be an array`);return parsed.map((entry,index)=>{if(!entry||typeof entry!=`object`)throw Error(`fields[${index}] must be an object`);let rec=entry,ref=typeof rec.ref==`string`?rec.ref.trim():``,type=typeof rec.type==`string`?rec.type.trim():``;if(!ref||!type)throw Error(`fields[${index}] must include ref and type`);if(typeof rec.value==`string`||typeof rec.value==`number`||typeof rec.value==`boolean`)return{ref,type,value:rec.value};if(rec.value===void 0||rec.value===null)return{ref,type};throw Error(`fields[${index}].value must be string, number, boolean, or null`)})}function registerBrowserElementCommands(browser,parentOpts){browser.command(`click`).description(`Click an element by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--double`,`Double click`,!1).option(`--button <left|right|middle>`,`Mouse button to use`).option(`--modifiers <list>`,`Comma-separated modifiers (Shift,Alt,Meta)`).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(!refValue)return;let modifiers=opts.modifiers?String(opts.modifiers).split(`,`).map(v=>v.trim()).filter(Boolean):void 0;try{let result=await callBrowserAct({parent,profile,body:{kind:`click`,ref:refValue,targetId:opts.targetId?.trim()||void 0,doubleClick:!!opts.double,button:opts.button?.trim()||void 0,modifiers}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}let suffix=result.url?` on ${result.url}`:``;defaultRuntime.log(`clicked ref ${refValue}${suffix}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`type`).description(`Type into an element by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).argument(`<text>`,`Text to type`).option(`--submit`,`Press Enter after typing`,!1).option(`--slowly`,`Type slowly (human-like)`,!1).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,text,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(refValue)try{let result=await callBrowserAct({parent,profile,body:{kind:`type`,ref:refValue,text,submit:!!opts.submit,slowly:!!opts.slowly,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`typed into ref ${refValue}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`press`).description(`Press a key`).argument(`<key>`,`Key to press (e.g. Enter)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(key,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`press`,key,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`pressed ${key}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`hover`).description(`Hover an element by ai ref`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`hover`,ref,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`hovered ref ${ref}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`scrollintoview`).description(`Scroll an element into view by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for scroll (default: 20000)`,v=>Number(v)).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(refValue)try{let result=await callBrowserAct({parent,profile,body:{kind:`scrollIntoView`,ref:refValue,targetId:opts.targetId?.trim()||void 0,timeoutMs:Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0},timeoutMs:Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`scrolled into view: ${refValue}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`drag`).description(`Drag from one ref to another`).argument(`<startRef>`,`Start ref id`).argument(`<endRef>`,`End ref id`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(startRef,endRef,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`drag`,startRef,endRef,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`dragged ${startRef} → ${endRef}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`select`).description(`Select option(s) in a select element`).argument(`<ref>`,`Ref id from snapshot`).argument(`<values...>`,`Option values to select`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,values,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`select`,ref,values,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`selected ${values.join(`, `)}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function normalizeUploadPaths(paths){let result=resolvePathsWithinRoot({rootDir:DEFAULT_UPLOAD_DIR,requestedPaths:paths,scopeLabel:`uploads directory (${DEFAULT_UPLOAD_DIR})`});if(!result.ok)throw Error(result.error);return result.paths}function registerBrowserFilesAndDownloadsCommands(browser,parentOpts){let resolveTimeoutAndTarget=opts=>({timeoutMs:Number.isFinite(opts.timeoutMs)?Number(opts.timeoutMs):void 0,targetId:typeof opts.targetId==`string`&&opts.targetId.trim()||void 0}),runDownloadCommand=async(cmd,opts,request)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:request.path,query:profile?{profile}:void 0,body:{...request.body,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`downloaded: ${shortenHomePath(result.download.path)}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}};browser.command(`upload`).description(`Arm file upload for the next file chooser`).argument(`<paths...>`,`File paths to upload (must be within BuilderForceAgents temp uploads dir, e.g. /tmp/builderforce/uploads/file.pdf)`).option(`--ref <ref>`,`Ref id from snapshot to click after arming`).option(`--input-ref <ref>`,`Ref id for <input type=file> to set directly`).option(`--element <selector>`,`CSS selector for <input type=file>`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next file chooser (default: 120000)`,v=>Number(v)).action(async(paths,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let normalizedPaths=normalizeUploadPaths(paths),{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:`/hooks/file-chooser`,query:profile?{profile}:void 0,body:{paths:normalizedPaths,ref:opts.ref?.trim()||void 0,inputRef:opts.inputRef?.trim()||void 0,element:opts.element?.trim()||void 0,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`upload armed for ${paths.length} file(s)`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`waitfordownload`).description(`Wait for the next download (and save it)`).argument(`[path]`,`Save path within builderforce temp downloads dir (default: /tmp/builderforce/downloads/...; fallback: os.tmpdir()/builderforce/downloads/...)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next download (default: 120000)`,v=>Number(v)).action(async(outPath,opts,cmd)=>{await runDownloadCommand(cmd,opts,{path:`/wait/download`,body:{path:outPath?.trim()||void 0}})}),browser.command(`download`).description(`Click a ref and save the resulting download`).argument(`<ref>`,`Ref id from snapshot to click`).argument(`<path>`,`Save path within builderforce temp downloads dir (e.g. report.pdf or /tmp/builderforce/downloads/report.pdf)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the download to start (default: 120000)`,v=>Number(v)).action(async(ref,outPath,opts,cmd)=>{await runDownloadCommand(cmd,opts,{path:`/download`,body:{ref,path:outPath}})}),browser.command(`dialog`).description(`Arm the next modal dialog (alert/confirm/prompt)`).option(`--accept`,`Accept the dialog`,!1).option(`--dismiss`,`Dismiss the dialog`,!1).option(`--prompt <text>`,`Prompt response text`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next dialog (default: 120000)`,v=>Number(v)).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),accept=opts.accept?!0:opts.dismiss?!1:void 0;if(accept===void 0){defaultRuntime.error(danger(`Specify --accept or --dismiss`)),defaultRuntime.exit(1);return}try{let{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:`/hooks/dialog`,query:profile?{profile}:void 0,body:{accept,promptText:opts.prompt?.trim()||void 0,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`dialog armed`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function registerBrowserFormWaitEvalCommands(browser,parentOpts){browser.command(`fill`).description(`Fill a form with JSON field descriptors`).option(`--fields <json>`,`JSON array of field objects`).option(`--fields-file <path>`,`Read JSON array from a file`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let fields=await readFields({fields:opts.fields,fieldsFile:opts.fieldsFile}),result=await callBrowserAct({parent,profile,body:{kind:`fill`,fields,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`filled ${fields.length} field(s)`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`wait`).description(`Wait for time, selector, URL, load state, or JS conditions`).argument(`[selector]`,`CSS selector to wait for (visible)`).option(`--time <ms>`,`Wait for N milliseconds`,v=>Number(v)).option(`--text <value>`,`Wait for text to appear`).option(`--text-gone <value>`,`Wait for text to disappear`).option(`--url <pattern>`,`Wait for URL (supports globs like **/dash)`).option(`--load <load|domcontentloaded|networkidle>`,`Wait for load state`).option(`--fn <js>`,`Wait for JS condition (passed to waitForFunction)`).option(`--timeout-ms <ms>`,`How long to wait for each condition (default: 20000)`,v=>Number(v)).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(selector,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let sel=selector?.trim()||void 0,load=opts.load===`load`||opts.load===`domcontentloaded`||opts.load===`networkidle`?opts.load:void 0,timeoutMs=Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0,result=await callBrowserAct({parent,profile,body:{kind:`wait`,timeMs:Number.isFinite(opts.time)?opts.time:void 0,text:opts.text?.trim()||void 0,textGone:opts.textGone?.trim()||void 0,selector:sel,url:opts.url?.trim()||void 0,loadState:load,fn:opts.fn?.trim()||void 0,targetId:opts.targetId?.trim()||void 0,timeoutMs},timeoutMs});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`wait complete`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`evaluate`).description(`Evaluate a function against the page or a ref`).option(`--fn <code>`,`Function source, e.g. (el) => el.textContent`).option(`--ref <id>`,`Ref from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);if(!opts.fn){defaultRuntime.error(danger(`Missing --fn`)),defaultRuntime.exit(1);return}try{let result=await callBrowserAct({parent,profile,body:{kind:`evaluate`,fn:opts.fn,ref:opts.ref?.trim()||void 0,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(JSON.stringify(result.result??null,null,2))}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}async function runBrowserResizeWithOutput(params){let{width,height}=params;if(!Number.isFinite(width)||!Number.isFinite(height)){defaultRuntime.error(danger(`width and height must be numbers`)),defaultRuntime.exit(1);return}let result=await callBrowserResize(params.parent,{profile:params.profile,width,height,targetId:params.targetId},{timeoutMs:params.timeoutMs??2e4});if(params.parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(params.successMessage)}function registerBrowserNavigationCommands(browser,parentOpts){browser.command(`navigate`).description(`Navigate the current tab to a URL`).argument(`<url>`,`URL to navigate to`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(url,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserRequest(parent,{method:`POST`,path:`/navigate`,query:profile?{profile}:void 0,body:{url,targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`navigated to ${result.url??url}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`resize`).description(`Resize the viewport`).argument(`<width>`,`Viewport width`,v=>Number(v)).argument(`<height>`,`Viewport height`,v=>Number(v)).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(width,height,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{await runBrowserResizeWithOutput({parent,profile,width,height,targetId:opts.targetId,timeoutMs:2e4,successMessage:`resized to ${width}x${height}`})}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function registerBrowserActionInputCommands(browser,parentOpts){registerBrowserNavigationCommands(browser,parentOpts),registerBrowserElementCommands(browser,parentOpts),registerBrowserFilesAndDownloadsCommands(browser,parentOpts),registerBrowserFormWaitEvalCommands(browser,parentOpts)}function runBrowserObserve(action){return runCommandWithRuntime(defaultRuntime,action,err=>{defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)})}function registerBrowserActionObserveCommands(browser,parentOpts){browser.command(`console`).description(`Get recent console messages`).option(`--level <level>`,`Filter by level (error, warn, info)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let result=await callBrowserRequest(parent,{method:`GET`,path:`/console`,query:{level:opts.level?.trim()||void 0,targetId:opts.targetId?.trim()||void 0,profile}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(JSON.stringify(result.messages,null,2))})}),browser.command(`pdf`).description(`Save page as PDF`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/pdf`,query:profile?{profile}:void 0,body:{targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`PDF: ${shortenHomePath(result.path)}`)})}),browser.command(`responsebody`).description(`Wait for a network response and return its body`).argument(`<url>`,`URL (exact, substring, or glob like **/api)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the response (default: 20000)`,v=>Number(v)).option(`--max-chars <n>`,`Max body chars to return (default: 200000)`,v=>Number(v)).action(async(url,opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let timeoutMs=Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0,maxChars=Number.isFinite(opts.maxChars)?opts.maxChars:void 0,result=await callBrowserRequest(parent,{method:`POST`,path:`/response/body`,query:profile?{profile}:void 0,body:{url,targetId:opts.targetId?.trim()||void 0,timeoutMs,maxChars}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(result.response.body)})})}function runBrowserDebug(action){return runCommandWithRuntime(defaultRuntime,action,err=>{defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)})}function resolveDebugQuery(params){return{targetId:typeof params.targetId==`string`&&params.targetId.trim()||void 0,filter:typeof params.filter==`string`&&params.filter.trim()||void 0,clear:!!params.clear,profile:params.profile}}function registerBrowserDebugCommands(browser,parentOpts){browser.command(`highlight`).description(`Highlight an element by ref`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/highlight`,query:profile?{profile}:void 0,body:{ref:ref.trim(),targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`highlighted ${ref.trim()}`)})}),browser.command(`errors`).description(`Get recent page errors`).option(`--clear`,`Clear stored errors after reading`,!1).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`GET`,path:`/errors`,query:resolveDebugQuery({targetId:opts.targetId,clear:opts.clear,profile})},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}if(!result.errors.length){defaultRuntime.log(`No page errors.`);return}defaultRuntime.log(result.errors.map(e=>`${e.timestamp} ${e.name?`${e.name}: `:``}${e.message}`).join(`
2
2
  `))})}),browser.command(`requests`).description(`Get recent network requests (best-effort)`).option(`--filter <text>`,`Only show URLs that contain this substring`).option(`--clear`,`Clear stored requests after reading`,!1).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`GET`,path:`/requests`,query:resolveDebugQuery({targetId:opts.targetId,filter:opts.filter,clear:opts.clear,profile})},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}if(!result.requests.length){defaultRuntime.log(`No requests recorded.`);return}defaultRuntime.log(result.requests.map(r=>{let status=typeof r.status==`number`?` ${r.status}`:``,ok=r.ok===!0?` ok`:r.ok===!1?` fail`:``,fail=r.failureText?` (${r.failureText})`:``;return`${r.timestamp} ${r.method}${status}${ok} ${r.url}${fail}`}).join(`
3
3
  `))})});let trace=browser.command(`trace`).description(`Record a Playwright trace`);trace.command(`start`).description(`Start trace recording`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--no-screenshots`,`Disable screenshots`).option(`--no-snapshots`,`Disable snapshots`).option(`--sources`,`Include sources (bigger traces)`,!1).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/trace/start`,query:profile?{profile}:void 0,body:{targetId:opts.targetId?.trim()||void 0,screenshots:!!opts.screenshots,snapshots:!!opts.snapshots,sources:!!opts.sources}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`trace started`)})}),trace.command(`stop`).description(`Stop trace recording and write a .zip`).option(`--out <path>`,`Output path within builderforce temp dir (e.g. trace.zip or /tmp/builderforce/trace.zip)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/trace/stop`,query:profile?{profile}:void 0,body:{targetId:opts.targetId?.trim()||void 0,path:opts.out?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`TRACE:${shortenHomePath(result.path)}`)})})}const browserCoreExamples=[`builderforce browser status`,`builderforce browser start`,`builderforce browser stop`,`builderforce browser tabs`,`builderforce browser open https://example.com`,`builderforce browser focus abcd1234`,`builderforce browser close abcd1234`,`builderforce browser screenshot`,`builderforce browser screenshot --full-page`,`builderforce browser screenshot --ref 12`,`builderforce browser snapshot`,`builderforce browser snapshot --format aria --limit 200`,`builderforce browser snapshot --efficient`,`builderforce browser snapshot --labels`],browserActionExamples=[`builderforce browser navigate https://example.com`,`builderforce browser resize 1280 720`,`builderforce browser click 12 --double`,`builderforce browser type 23 "hello" --submit`,`builderforce browser press Enter`,`builderforce browser hover 44`,`builderforce browser drag 10 11`,`builderforce browser select 9 OptionA OptionB`,`builderforce browser upload /tmp/builderforce/uploads/file.pdf`,`builderforce browser fill --fields '[{"ref":"1","value":"Ada"}]'`,`builderforce browser dialog --accept`,`builderforce browser wait --text "Done"`,`builderforce browser evaluate --fn '(el) => el.textContent' --ref 7`,`builderforce browser console --level error`,`builderforce browser pdf`];function resolveBundledExtensionRootDir(here=path.dirname(fileURLToPath(import.meta.url))){let current=here;for(;;){let candidate=path.join(current,`assets`,`chrome-extension`);if(hasManifest(candidate))return candidate;let parent=path.dirname(current);if(parent===current)break;current=parent}return path.resolve(here,`../../assets/chrome-extension`)}function installedExtensionRootDir(){return path.join(resolveStateDir(),`browser`,`chrome-extension`)}function hasManifest(dir){return fs.existsSync(path.join(dir,`manifest.json`))}async function installChromeExtension(opts){let src=opts?.sourceDir??resolveBundledExtensionRootDir();if(!hasManifest(src))throw Error(`Bundled Chrome extension is missing. Reinstall BuilderForceAgents and try again.`);let stateDir=opts?.stateDir??resolveStateDir(),dest=path.join(stateDir,`browser`,`chrome-extension`);if(fs.mkdirSync(path.dirname(dest),{recursive:!0}),fs.existsSync(dest)&&await movePathToTrash(dest).catch(()=>{let backup=`${dest}.old-${Date.now()}`;fs.renameSync(dest,backup)}),await fs.promises.cp(src,dest,{recursive:!0}),!hasManifest(dest))throw Error(`Chrome extension install failed (manifest.json missing). Try again.`);return{path:dest}}function registerBrowserExtensionCommands(browser,parentOpts){let ext=browser.command(`extension`).description(`Chrome extension helpers`);ext.command(`install`).description(`Install the Chrome extension to a stable local path`).action(async(_opts,cmd)=>{let parent=parentOpts(cmd),installed;try{installed=await installChromeExtension()}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1);return}if(parent?.json){defaultRuntime.log(JSON.stringify({ok:!0,path:installed.path},null,2));return}let displayPath=shortenHomePath(installed.path);defaultRuntime.log(displayPath);let copied=await copyToClipboard(installed.path).catch(()=>!1);defaultRuntime.error(info([copied?`Copied to clipboard.`:`Copy to clipboard unavailable.`,`Next:`,`- Chrome → chrome://extensions → enable “Developer mode”`,`- “Load unpacked” → select: ${displayPath}`,`- Pin “BuilderForceAgents Browser Relay”, then click it on the tab (badge shows ON)`,``,`${theme.muted(`Docs:`)} ${formatDocsLink(`/tools/chrome-extension`,`docs.builderforce.ai/tools/chrome-extension`)}`].join(`
4
4
  `)))}),ext.command(`path`).description(`Print the path to the installed Chrome extension (load unpacked)`).action(async(_opts,cmd)=>{let parent=parentOpts(cmd),dir=installedExtensionRootDir();if(hasManifest(dir)||(defaultRuntime.error(danger([`Chrome extension is not installed. Run: "${formatCliCommand(`builderforce browser extension install`)}"`,`Docs: ${formatDocsLink(`/tools/chrome-extension`,`docs.builderforce.ai/tools/chrome-extension`)}`].join(`
@@ -1,4 +1,4 @@
1
- import{g as resolveStateDir}from"./paths-5FcIFMsj.js";import{B as theme,C as shortenHomePath,O as danger,k as info}from"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./logger-Bch0bx9c.js";import"./exec-DdcIjeyn.js";import"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import"./model-selection-9bRFKBI_.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import"./env-file-D1MDi-AM.js";import{t as parseBooleanValue}from"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import{r as loadConfig}from"./io-3R_ZyUxB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-_1Ca6jGb.js";import"./redact-BHdfp2MZ.js";import"./errors-B1MIg3g-.js";import{a as resolvePathsWithinRoot,r as DEFAULT_UPLOAD_DIR}from"./paths-cR8ct-Y3.js";import{t as movePathToTrash}from"./trash-DD2Hc5oq.js";import"./message-channel-D_jXxXQj.js";import"./client-xfoidwPI.js";import"./call-BbRf8gFM.js";import{t as formatDocsLink}from"./links-BgWWaaOT.js";import{n as runCommandWithRuntime}from"./cli-utils-LBYKdNFb.js";import{t as formatHelpExamples}from"./help-format-Qfk2vDNX.js";import"./progress-BfOtdN6b.js";import{n as inheritOptionFromParent}from"./command-options-DzGFCQYs.js";import{n as callGatewayFromCli,t as addGatewayClientOptions}from"./gateway-rpc-BXR_lVIx.js";import{t as copyToClipboard}from"./clipboard-CGHe68at.js";import{fileURLToPath}from"node:url";import fs from"node:fs";import path from"node:path";function normalizeQuery(query){if(!query)return;let out={};for(let[key,value]of Object.entries(query))value!==void 0&&(out[key]=String(value));return Object.keys(out).length?out:void 0}async function callBrowserRequest(opts,params,extra){let resolvedTimeoutMs=typeof extra?.timeoutMs==`number`&&Number.isFinite(extra.timeoutMs)?Math.max(1,Math.floor(extra.timeoutMs)):typeof opts.timeout==`string`?Number.parseInt(opts.timeout,10):void 0,resolvedTimeout=typeof resolvedTimeoutMs==`number`&&Number.isFinite(resolvedTimeoutMs)?resolvedTimeoutMs:void 0,timeout=typeof resolvedTimeout==`number`?String(resolvedTimeout):opts.timeout,payload=await callGatewayFromCli(`browser.request`,{...opts,timeout},{method:params.method,path:params.path,query:normalizeQuery(params.query),body:params.body,timeoutMs:resolvedTimeout},{progress:extra?.progress});if(payload===void 0)throw Error(`Unexpected browser.request response`);return payload}async function callBrowserResize(opts,params,extra){return callBrowserRequest(opts,{method:`POST`,path:`/act`,query:params.profile?{profile:params.profile}:void 0,body:{kind:`resize`,width:params.width,height:params.height,targetId:params.targetId?.trim()||void 0}},extra)}function resolveBrowserActionContext(cmd,parentOpts){let parent=parentOpts(cmd);return{parent,profile:parent?.browserProfile}}async function callBrowserAct(params){return await callBrowserRequest(params.parent,{method:`POST`,path:`/act`,query:params.profile?{profile:params.profile}:void 0,body:params.body},{timeoutMs:params.timeoutMs??2e4})}function requireRef(ref){return(typeof ref==`string`?ref.trim():``)||(defaultRuntime.error(danger(`ref is required`)),defaultRuntime.exit(1),null)}async function readFile(path){return await(await import(`node:fs/promises`)).readFile(path,`utf8`)}async function readFields(opts){let payload=opts.fieldsFile?await readFile(opts.fieldsFile):opts.fields??``;if(!payload.trim())throw Error(`fields are required`);let parsed=JSON.parse(payload);if(!Array.isArray(parsed))throw Error(`fields must be an array`);return parsed.map((entry,index)=>{if(!entry||typeof entry!=`object`)throw Error(`fields[${index}] must be an object`);let rec=entry,ref=typeof rec.ref==`string`?rec.ref.trim():``,type=typeof rec.type==`string`?rec.type.trim():``;if(!ref||!type)throw Error(`fields[${index}] must include ref and type`);if(typeof rec.value==`string`||typeof rec.value==`number`||typeof rec.value==`boolean`)return{ref,type,value:rec.value};if(rec.value===void 0||rec.value===null)return{ref,type};throw Error(`fields[${index}].value must be string, number, boolean, or null`)})}function registerBrowserElementCommands(browser,parentOpts){browser.command(`click`).description(`Click an element by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--double`,`Double click`,!1).option(`--button <left|right|middle>`,`Mouse button to use`).option(`--modifiers <list>`,`Comma-separated modifiers (Shift,Alt,Meta)`).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(!refValue)return;let modifiers=opts.modifiers?String(opts.modifiers).split(`,`).map(v=>v.trim()).filter(Boolean):void 0;try{let result=await callBrowserAct({parent,profile,body:{kind:`click`,ref:refValue,targetId:opts.targetId?.trim()||void 0,doubleClick:!!opts.double,button:opts.button?.trim()||void 0,modifiers}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}let suffix=result.url?` on ${result.url}`:``;defaultRuntime.log(`clicked ref ${refValue}${suffix}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`type`).description(`Type into an element by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).argument(`<text>`,`Text to type`).option(`--submit`,`Press Enter after typing`,!1).option(`--slowly`,`Type slowly (human-like)`,!1).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,text,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(refValue)try{let result=await callBrowserAct({parent,profile,body:{kind:`type`,ref:refValue,text,submit:!!opts.submit,slowly:!!opts.slowly,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`typed into ref ${refValue}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`press`).description(`Press a key`).argument(`<key>`,`Key to press (e.g. Enter)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(key,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`press`,key,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`pressed ${key}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`hover`).description(`Hover an element by ai ref`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`hover`,ref,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`hovered ref ${ref}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`scrollintoview`).description(`Scroll an element into view by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for scroll (default: 20000)`,v=>Number(v)).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(refValue)try{let result=await callBrowserAct({parent,profile,body:{kind:`scrollIntoView`,ref:refValue,targetId:opts.targetId?.trim()||void 0,timeoutMs:Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0},timeoutMs:Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`scrolled into view: ${refValue}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`drag`).description(`Drag from one ref to another`).argument(`<startRef>`,`Start ref id`).argument(`<endRef>`,`End ref id`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(startRef,endRef,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`drag`,startRef,endRef,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`dragged ${startRef} → ${endRef}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`select`).description(`Select option(s) in a select element`).argument(`<ref>`,`Ref id from snapshot`).argument(`<values...>`,`Option values to select`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,values,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`select`,ref,values,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`selected ${values.join(`, `)}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function normalizeUploadPaths(paths){let result=resolvePathsWithinRoot({rootDir:DEFAULT_UPLOAD_DIR,requestedPaths:paths,scopeLabel:`uploads directory (${DEFAULT_UPLOAD_DIR})`});if(!result.ok)throw Error(result.error);return result.paths}function registerBrowserFilesAndDownloadsCommands(browser,parentOpts){let resolveTimeoutAndTarget=opts=>({timeoutMs:Number.isFinite(opts.timeoutMs)?Number(opts.timeoutMs):void 0,targetId:typeof opts.targetId==`string`&&opts.targetId.trim()||void 0}),runDownloadCommand=async(cmd,opts,request)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:request.path,query:profile?{profile}:void 0,body:{...request.body,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`downloaded: ${shortenHomePath(result.download.path)}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}};browser.command(`upload`).description(`Arm file upload for the next file chooser`).argument(`<paths...>`,`File paths to upload (must be within BuilderForceAgents temp uploads dir, e.g. /tmp/builderforce/uploads/file.pdf)`).option(`--ref <ref>`,`Ref id from snapshot to click after arming`).option(`--input-ref <ref>`,`Ref id for <input type=file> to set directly`).option(`--element <selector>`,`CSS selector for <input type=file>`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next file chooser (default: 120000)`,v=>Number(v)).action(async(paths,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let normalizedPaths=normalizeUploadPaths(paths),{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:`/hooks/file-chooser`,query:profile?{profile}:void 0,body:{paths:normalizedPaths,ref:opts.ref?.trim()||void 0,inputRef:opts.inputRef?.trim()||void 0,element:opts.element?.trim()||void 0,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`upload armed for ${paths.length} file(s)`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`waitfordownload`).description(`Wait for the next download (and save it)`).argument(`[path]`,`Save path within builderforce temp downloads dir (default: /tmp/builderforce/downloads/...; fallback: os.tmpdir()/builderforce/downloads/...)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next download (default: 120000)`,v=>Number(v)).action(async(outPath,opts,cmd)=>{await runDownloadCommand(cmd,opts,{path:`/wait/download`,body:{path:outPath?.trim()||void 0}})}),browser.command(`download`).description(`Click a ref and save the resulting download`).argument(`<ref>`,`Ref id from snapshot to click`).argument(`<path>`,`Save path within builderforce temp downloads dir (e.g. report.pdf or /tmp/builderforce/downloads/report.pdf)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the download to start (default: 120000)`,v=>Number(v)).action(async(ref,outPath,opts,cmd)=>{await runDownloadCommand(cmd,opts,{path:`/download`,body:{ref,path:outPath}})}),browser.command(`dialog`).description(`Arm the next modal dialog (alert/confirm/prompt)`).option(`--accept`,`Accept the dialog`,!1).option(`--dismiss`,`Dismiss the dialog`,!1).option(`--prompt <text>`,`Prompt response text`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next dialog (default: 120000)`,v=>Number(v)).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),accept=opts.accept?!0:opts.dismiss?!1:void 0;if(accept===void 0){defaultRuntime.error(danger(`Specify --accept or --dismiss`)),defaultRuntime.exit(1);return}try{let{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:`/hooks/dialog`,query:profile?{profile}:void 0,body:{accept,promptText:opts.prompt?.trim()||void 0,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`dialog armed`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function registerBrowserFormWaitEvalCommands(browser,parentOpts){browser.command(`fill`).description(`Fill a form with JSON field descriptors`).option(`--fields <json>`,`JSON array of field objects`).option(`--fields-file <path>`,`Read JSON array from a file`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let fields=await readFields({fields:opts.fields,fieldsFile:opts.fieldsFile}),result=await callBrowserAct({parent,profile,body:{kind:`fill`,fields,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`filled ${fields.length} field(s)`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`wait`).description(`Wait for time, selector, URL, load state, or JS conditions`).argument(`[selector]`,`CSS selector to wait for (visible)`).option(`--time <ms>`,`Wait for N milliseconds`,v=>Number(v)).option(`--text <value>`,`Wait for text to appear`).option(`--text-gone <value>`,`Wait for text to disappear`).option(`--url <pattern>`,`Wait for URL (supports globs like **/dash)`).option(`--load <load|domcontentloaded|networkidle>`,`Wait for load state`).option(`--fn <js>`,`Wait for JS condition (passed to waitForFunction)`).option(`--timeout-ms <ms>`,`How long to wait for each condition (default: 20000)`,v=>Number(v)).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(selector,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let sel=selector?.trim()||void 0,load=opts.load===`load`||opts.load===`domcontentloaded`||opts.load===`networkidle`?opts.load:void 0,timeoutMs=Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0,result=await callBrowserAct({parent,profile,body:{kind:`wait`,timeMs:Number.isFinite(opts.time)?opts.time:void 0,text:opts.text?.trim()||void 0,textGone:opts.textGone?.trim()||void 0,selector:sel,url:opts.url?.trim()||void 0,loadState:load,fn:opts.fn?.trim()||void 0,targetId:opts.targetId?.trim()||void 0,timeoutMs},timeoutMs});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`wait complete`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`evaluate`).description(`Evaluate a function against the page or a ref`).option(`--fn <code>`,`Function source, e.g. (el) => el.textContent`).option(`--ref <id>`,`Ref from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);if(!opts.fn){defaultRuntime.error(danger(`Missing --fn`)),defaultRuntime.exit(1);return}try{let result=await callBrowserAct({parent,profile,body:{kind:`evaluate`,fn:opts.fn,ref:opts.ref?.trim()||void 0,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(JSON.stringify(result.result??null,null,2))}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}async function runBrowserResizeWithOutput(params){let{width,height}=params;if(!Number.isFinite(width)||!Number.isFinite(height)){defaultRuntime.error(danger(`width and height must be numbers`)),defaultRuntime.exit(1);return}let result=await callBrowserResize(params.parent,{profile:params.profile,width,height,targetId:params.targetId},{timeoutMs:params.timeoutMs??2e4});if(params.parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(params.successMessage)}function registerBrowserNavigationCommands(browser,parentOpts){browser.command(`navigate`).description(`Navigate the current tab to a URL`).argument(`<url>`,`URL to navigate to`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(url,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserRequest(parent,{method:`POST`,path:`/navigate`,query:profile?{profile}:void 0,body:{url,targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`navigated to ${result.url??url}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`resize`).description(`Resize the viewport`).argument(`<width>`,`Viewport width`,v=>Number(v)).argument(`<height>`,`Viewport height`,v=>Number(v)).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(width,height,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{await runBrowserResizeWithOutput({parent,profile,width,height,targetId:opts.targetId,timeoutMs:2e4,successMessage:`resized to ${width}x${height}`})}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function registerBrowserActionInputCommands(browser,parentOpts){registerBrowserNavigationCommands(browser,parentOpts),registerBrowserElementCommands(browser,parentOpts),registerBrowserFilesAndDownloadsCommands(browser,parentOpts),registerBrowserFormWaitEvalCommands(browser,parentOpts)}function runBrowserObserve(action){return runCommandWithRuntime(defaultRuntime,action,err=>{defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)})}function registerBrowserActionObserveCommands(browser,parentOpts){browser.command(`console`).description(`Get recent console messages`).option(`--level <level>`,`Filter by level (error, warn, info)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let result=await callBrowserRequest(parent,{method:`GET`,path:`/console`,query:{level:opts.level?.trim()||void 0,targetId:opts.targetId?.trim()||void 0,profile}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(JSON.stringify(result.messages,null,2))})}),browser.command(`pdf`).description(`Save page as PDF`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/pdf`,query:profile?{profile}:void 0,body:{targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`PDF: ${shortenHomePath(result.path)}`)})}),browser.command(`responsebody`).description(`Wait for a network response and return its body`).argument(`<url>`,`URL (exact, substring, or glob like **/api)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the response (default: 20000)`,v=>Number(v)).option(`--max-chars <n>`,`Max body chars to return (default: 200000)`,v=>Number(v)).action(async(url,opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let timeoutMs=Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0,maxChars=Number.isFinite(opts.maxChars)?opts.maxChars:void 0,result=await callBrowserRequest(parent,{method:`POST`,path:`/response/body`,query:profile?{profile}:void 0,body:{url,targetId:opts.targetId?.trim()||void 0,timeoutMs,maxChars}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(result.response.body)})})}function runBrowserDebug(action){return runCommandWithRuntime(defaultRuntime,action,err=>{defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)})}function resolveDebugQuery(params){return{targetId:typeof params.targetId==`string`&&params.targetId.trim()||void 0,filter:typeof params.filter==`string`&&params.filter.trim()||void 0,clear:!!params.clear,profile:params.profile}}function registerBrowserDebugCommands(browser,parentOpts){browser.command(`highlight`).description(`Highlight an element by ref`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/highlight`,query:profile?{profile}:void 0,body:{ref:ref.trim(),targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`highlighted ${ref.trim()}`)})}),browser.command(`errors`).description(`Get recent page errors`).option(`--clear`,`Clear stored errors after reading`,!1).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`GET`,path:`/errors`,query:resolveDebugQuery({targetId:opts.targetId,clear:opts.clear,profile})},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}if(!result.errors.length){defaultRuntime.log(`No page errors.`);return}defaultRuntime.log(result.errors.map(e=>`${e.timestamp} ${e.name?`${e.name}: `:``}${e.message}`).join(`
1
+ import{g as resolveStateDir}from"./paths-5FcIFMsj.js";import{B as theme,C as shortenHomePath,O as danger,k as info}from"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./logger-Bch0bx9c.js";import"./exec-DdcIjeyn.js";import"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import"./model-selection-DG9J_VTz.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import"./env-file-D1MDi-AM.js";import{t as parseBooleanValue}from"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import{r as loadConfig}from"./io-BLBq4T2o.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BgV_FYSq.js";import"./redact-BHdfp2MZ.js";import"./errors-B1MIg3g-.js";import{a as resolvePathsWithinRoot,r as DEFAULT_UPLOAD_DIR}from"./paths-cR8ct-Y3.js";import{t as movePathToTrash}from"./trash-DD2Hc5oq.js";import"./message-channel-D_jXxXQj.js";import"./client-xfoidwPI.js";import"./call-T8ciwMTA.js";import{t as formatDocsLink}from"./links-BgWWaaOT.js";import{n as runCommandWithRuntime}from"./cli-utils-LBYKdNFb.js";import{t as formatHelpExamples}from"./help-format-Qfk2vDNX.js";import"./progress-BfOtdN6b.js";import{n as inheritOptionFromParent}from"./command-options-DzGFCQYs.js";import{n as callGatewayFromCli,t as addGatewayClientOptions}from"./gateway-rpc-B02y0PnE.js";import{t as copyToClipboard}from"./clipboard-CGHe68at.js";import{fileURLToPath}from"node:url";import fs from"node:fs";import path from"node:path";function normalizeQuery(query){if(!query)return;let out={};for(let[key,value]of Object.entries(query))value!==void 0&&(out[key]=String(value));return Object.keys(out).length?out:void 0}async function callBrowserRequest(opts,params,extra){let resolvedTimeoutMs=typeof extra?.timeoutMs==`number`&&Number.isFinite(extra.timeoutMs)?Math.max(1,Math.floor(extra.timeoutMs)):typeof opts.timeout==`string`?Number.parseInt(opts.timeout,10):void 0,resolvedTimeout=typeof resolvedTimeoutMs==`number`&&Number.isFinite(resolvedTimeoutMs)?resolvedTimeoutMs:void 0,timeout=typeof resolvedTimeout==`number`?String(resolvedTimeout):opts.timeout,payload=await callGatewayFromCli(`browser.request`,{...opts,timeout},{method:params.method,path:params.path,query:normalizeQuery(params.query),body:params.body,timeoutMs:resolvedTimeout},{progress:extra?.progress});if(payload===void 0)throw Error(`Unexpected browser.request response`);return payload}async function callBrowserResize(opts,params,extra){return callBrowserRequest(opts,{method:`POST`,path:`/act`,query:params.profile?{profile:params.profile}:void 0,body:{kind:`resize`,width:params.width,height:params.height,targetId:params.targetId?.trim()||void 0}},extra)}function resolveBrowserActionContext(cmd,parentOpts){let parent=parentOpts(cmd);return{parent,profile:parent?.browserProfile}}async function callBrowserAct(params){return await callBrowserRequest(params.parent,{method:`POST`,path:`/act`,query:params.profile?{profile:params.profile}:void 0,body:params.body},{timeoutMs:params.timeoutMs??2e4})}function requireRef(ref){return(typeof ref==`string`?ref.trim():``)||(defaultRuntime.error(danger(`ref is required`)),defaultRuntime.exit(1),null)}async function readFile(path){return await(await import(`node:fs/promises`)).readFile(path,`utf8`)}async function readFields(opts){let payload=opts.fieldsFile?await readFile(opts.fieldsFile):opts.fields??``;if(!payload.trim())throw Error(`fields are required`);let parsed=JSON.parse(payload);if(!Array.isArray(parsed))throw Error(`fields must be an array`);return parsed.map((entry,index)=>{if(!entry||typeof entry!=`object`)throw Error(`fields[${index}] must be an object`);let rec=entry,ref=typeof rec.ref==`string`?rec.ref.trim():``,type=typeof rec.type==`string`?rec.type.trim():``;if(!ref||!type)throw Error(`fields[${index}] must include ref and type`);if(typeof rec.value==`string`||typeof rec.value==`number`||typeof rec.value==`boolean`)return{ref,type,value:rec.value};if(rec.value===void 0||rec.value===null)return{ref,type};throw Error(`fields[${index}].value must be string, number, boolean, or null`)})}function registerBrowserElementCommands(browser,parentOpts){browser.command(`click`).description(`Click an element by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--double`,`Double click`,!1).option(`--button <left|right|middle>`,`Mouse button to use`).option(`--modifiers <list>`,`Comma-separated modifiers (Shift,Alt,Meta)`).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(!refValue)return;let modifiers=opts.modifiers?String(opts.modifiers).split(`,`).map(v=>v.trim()).filter(Boolean):void 0;try{let result=await callBrowserAct({parent,profile,body:{kind:`click`,ref:refValue,targetId:opts.targetId?.trim()||void 0,doubleClick:!!opts.double,button:opts.button?.trim()||void 0,modifiers}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}let suffix=result.url?` on ${result.url}`:``;defaultRuntime.log(`clicked ref ${refValue}${suffix}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`type`).description(`Type into an element by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).argument(`<text>`,`Text to type`).option(`--submit`,`Press Enter after typing`,!1).option(`--slowly`,`Type slowly (human-like)`,!1).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,text,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(refValue)try{let result=await callBrowserAct({parent,profile,body:{kind:`type`,ref:refValue,text,submit:!!opts.submit,slowly:!!opts.slowly,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`typed into ref ${refValue}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`press`).description(`Press a key`).argument(`<key>`,`Key to press (e.g. Enter)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(key,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`press`,key,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`pressed ${key}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`hover`).description(`Hover an element by ai ref`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`hover`,ref,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`hovered ref ${ref}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`scrollintoview`).description(`Scroll an element into view by ref from snapshot`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for scroll (default: 20000)`,v=>Number(v)).action(async(ref,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),refValue=requireRef(ref);if(refValue)try{let result=await callBrowserAct({parent,profile,body:{kind:`scrollIntoView`,ref:refValue,targetId:opts.targetId?.trim()||void 0,timeoutMs:Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0},timeoutMs:Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`scrolled into view: ${refValue}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`drag`).description(`Drag from one ref to another`).argument(`<startRef>`,`Start ref id`).argument(`<endRef>`,`End ref id`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(startRef,endRef,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`drag`,startRef,endRef,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`dragged ${startRef} → ${endRef}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`select`).description(`Select option(s) in a select element`).argument(`<ref>`,`Ref id from snapshot`).argument(`<values...>`,`Option values to select`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,values,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserAct({parent,profile,body:{kind:`select`,ref,values,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`selected ${values.join(`, `)}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function normalizeUploadPaths(paths){let result=resolvePathsWithinRoot({rootDir:DEFAULT_UPLOAD_DIR,requestedPaths:paths,scopeLabel:`uploads directory (${DEFAULT_UPLOAD_DIR})`});if(!result.ok)throw Error(result.error);return result.paths}function registerBrowserFilesAndDownloadsCommands(browser,parentOpts){let resolveTimeoutAndTarget=opts=>({timeoutMs:Number.isFinite(opts.timeoutMs)?Number(opts.timeoutMs):void 0,targetId:typeof opts.targetId==`string`&&opts.targetId.trim()||void 0}),runDownloadCommand=async(cmd,opts,request)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:request.path,query:profile?{profile}:void 0,body:{...request.body,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`downloaded: ${shortenHomePath(result.download.path)}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}};browser.command(`upload`).description(`Arm file upload for the next file chooser`).argument(`<paths...>`,`File paths to upload (must be within BuilderForceAgents temp uploads dir, e.g. /tmp/builderforce/uploads/file.pdf)`).option(`--ref <ref>`,`Ref id from snapshot to click after arming`).option(`--input-ref <ref>`,`Ref id for <input type=file> to set directly`).option(`--element <selector>`,`CSS selector for <input type=file>`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next file chooser (default: 120000)`,v=>Number(v)).action(async(paths,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let normalizedPaths=normalizeUploadPaths(paths),{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:`/hooks/file-chooser`,query:profile?{profile}:void 0,body:{paths:normalizedPaths,ref:opts.ref?.trim()||void 0,inputRef:opts.inputRef?.trim()||void 0,element:opts.element?.trim()||void 0,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`upload armed for ${paths.length} file(s)`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`waitfordownload`).description(`Wait for the next download (and save it)`).argument(`[path]`,`Save path within builderforce temp downloads dir (default: /tmp/builderforce/downloads/...; fallback: os.tmpdir()/builderforce/downloads/...)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next download (default: 120000)`,v=>Number(v)).action(async(outPath,opts,cmd)=>{await runDownloadCommand(cmd,opts,{path:`/wait/download`,body:{path:outPath?.trim()||void 0}})}),browser.command(`download`).description(`Click a ref and save the resulting download`).argument(`<ref>`,`Ref id from snapshot to click`).argument(`<path>`,`Save path within builderforce temp downloads dir (e.g. report.pdf or /tmp/builderforce/downloads/report.pdf)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the download to start (default: 120000)`,v=>Number(v)).action(async(ref,outPath,opts,cmd)=>{await runDownloadCommand(cmd,opts,{path:`/download`,body:{ref,path:outPath}})}),browser.command(`dialog`).description(`Arm the next modal dialog (alert/confirm/prompt)`).option(`--accept`,`Accept the dialog`,!1).option(`--dismiss`,`Dismiss the dialog`,!1).option(`--prompt <text>`,`Prompt response text`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the next dialog (default: 120000)`,v=>Number(v)).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts),accept=opts.accept?!0:opts.dismiss?!1:void 0;if(accept===void 0){defaultRuntime.error(danger(`Specify --accept or --dismiss`)),defaultRuntime.exit(1);return}try{let{timeoutMs,targetId}=resolveTimeoutAndTarget(opts),result=await callBrowserRequest(parent,{method:`POST`,path:`/hooks/dialog`,query:profile?{profile}:void 0,body:{accept,promptText:opts.prompt?.trim()||void 0,targetId,timeoutMs}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`dialog armed`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function registerBrowserFormWaitEvalCommands(browser,parentOpts){browser.command(`fill`).description(`Fill a form with JSON field descriptors`).option(`--fields <json>`,`JSON array of field objects`).option(`--fields-file <path>`,`Read JSON array from a file`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let fields=await readFields({fields:opts.fields,fieldsFile:opts.fieldsFile}),result=await callBrowserAct({parent,profile,body:{kind:`fill`,fields,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`filled ${fields.length} field(s)`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`wait`).description(`Wait for time, selector, URL, load state, or JS conditions`).argument(`[selector]`,`CSS selector to wait for (visible)`).option(`--time <ms>`,`Wait for N milliseconds`,v=>Number(v)).option(`--text <value>`,`Wait for text to appear`).option(`--text-gone <value>`,`Wait for text to disappear`).option(`--url <pattern>`,`Wait for URL (supports globs like **/dash)`).option(`--load <load|domcontentloaded|networkidle>`,`Wait for load state`).option(`--fn <js>`,`Wait for JS condition (passed to waitForFunction)`).option(`--timeout-ms <ms>`,`How long to wait for each condition (default: 20000)`,v=>Number(v)).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(selector,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let sel=selector?.trim()||void 0,load=opts.load===`load`||opts.load===`domcontentloaded`||opts.load===`networkidle`?opts.load:void 0,timeoutMs=Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0,result=await callBrowserAct({parent,profile,body:{kind:`wait`,timeMs:Number.isFinite(opts.time)?opts.time:void 0,text:opts.text?.trim()||void 0,textGone:opts.textGone?.trim()||void 0,selector:sel,url:opts.url?.trim()||void 0,loadState:load,fn:opts.fn?.trim()||void 0,targetId:opts.targetId?.trim()||void 0,timeoutMs},timeoutMs});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`wait complete`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`evaluate`).description(`Evaluate a function against the page or a ref`).option(`--fn <code>`,`Function source, e.g. (el) => el.textContent`).option(`--ref <id>`,`Ref from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);if(!opts.fn){defaultRuntime.error(danger(`Missing --fn`)),defaultRuntime.exit(1);return}try{let result=await callBrowserAct({parent,profile,body:{kind:`evaluate`,fn:opts.fn,ref:opts.ref?.trim()||void 0,targetId:opts.targetId?.trim()||void 0}});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(JSON.stringify(result.result??null,null,2))}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}async function runBrowserResizeWithOutput(params){let{width,height}=params;if(!Number.isFinite(width)||!Number.isFinite(height)){defaultRuntime.error(danger(`width and height must be numbers`)),defaultRuntime.exit(1);return}let result=await callBrowserResize(params.parent,{profile:params.profile,width,height,targetId:params.targetId},{timeoutMs:params.timeoutMs??2e4});if(params.parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(params.successMessage)}function registerBrowserNavigationCommands(browser,parentOpts){browser.command(`navigate`).description(`Navigate the current tab to a URL`).argument(`<url>`,`URL to navigate to`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(url,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{let result=await callBrowserRequest(parent,{method:`POST`,path:`/navigate`,query:profile?{profile}:void 0,body:{url,targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`navigated to ${result.url??url}`)}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),browser.command(`resize`).description(`Resize the viewport`).argument(`<width>`,`Viewport width`,v=>Number(v)).argument(`<height>`,`Viewport height`,v=>Number(v)).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(width,height,opts,cmd)=>{let{parent,profile}=resolveBrowserActionContext(cmd,parentOpts);try{await runBrowserResizeWithOutput({parent,profile,width,height,targetId:opts.targetId,timeoutMs:2e4,successMessage:`resized to ${width}x${height}`})}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}})}function registerBrowserActionInputCommands(browser,parentOpts){registerBrowserNavigationCommands(browser,parentOpts),registerBrowserElementCommands(browser,parentOpts),registerBrowserFilesAndDownloadsCommands(browser,parentOpts),registerBrowserFormWaitEvalCommands(browser,parentOpts)}function runBrowserObserve(action){return runCommandWithRuntime(defaultRuntime,action,err=>{defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)})}function registerBrowserActionObserveCommands(browser,parentOpts){browser.command(`console`).description(`Get recent console messages`).option(`--level <level>`,`Filter by level (error, warn, info)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let result=await callBrowserRequest(parent,{method:`GET`,path:`/console`,query:{level:opts.level?.trim()||void 0,targetId:opts.targetId?.trim()||void 0,profile}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(JSON.stringify(result.messages,null,2))})}),browser.command(`pdf`).description(`Save page as PDF`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/pdf`,query:profile?{profile}:void 0,body:{targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`PDF: ${shortenHomePath(result.path)}`)})}),browser.command(`responsebody`).description(`Wait for a network response and return its body`).argument(`<url>`,`URL (exact, substring, or glob like **/api)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--timeout-ms <ms>`,`How long to wait for the response (default: 20000)`,v=>Number(v)).option(`--max-chars <n>`,`Max body chars to return (default: 200000)`,v=>Number(v)).action(async(url,opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserObserve(async()=>{let timeoutMs=Number.isFinite(opts.timeoutMs)?opts.timeoutMs:void 0,maxChars=Number.isFinite(opts.maxChars)?opts.maxChars:void 0,result=await callBrowserRequest(parent,{method:`POST`,path:`/response/body`,query:profile?{profile}:void 0,body:{url,targetId:opts.targetId?.trim()||void 0,timeoutMs,maxChars}},{timeoutMs:timeoutMs??2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(result.response.body)})})}function runBrowserDebug(action){return runCommandWithRuntime(defaultRuntime,action,err=>{defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)})}function resolveDebugQuery(params){return{targetId:typeof params.targetId==`string`&&params.targetId.trim()||void 0,filter:typeof params.filter==`string`&&params.filter.trim()||void 0,clear:!!params.clear,profile:params.profile}}function registerBrowserDebugCommands(browser,parentOpts){browser.command(`highlight`).description(`Highlight an element by ref`).argument(`<ref>`,`Ref id from snapshot`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(ref,opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/highlight`,query:profile?{profile}:void 0,body:{ref:ref.trim(),targetId:opts.targetId?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`highlighted ${ref.trim()}`)})}),browser.command(`errors`).description(`Get recent page errors`).option(`--clear`,`Clear stored errors after reading`,!1).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`GET`,path:`/errors`,query:resolveDebugQuery({targetId:opts.targetId,clear:opts.clear,profile})},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}if(!result.errors.length){defaultRuntime.log(`No page errors.`);return}defaultRuntime.log(result.errors.map(e=>`${e.timestamp} ${e.name?`${e.name}: `:``}${e.message}`).join(`
2
2
  `))})}),browser.command(`requests`).description(`Get recent network requests (best-effort)`).option(`--filter <text>`,`Only show URLs that contain this substring`).option(`--clear`,`Clear stored requests after reading`,!1).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`GET`,path:`/requests`,query:resolveDebugQuery({targetId:opts.targetId,filter:opts.filter,clear:opts.clear,profile})},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}if(!result.requests.length){defaultRuntime.log(`No requests recorded.`);return}defaultRuntime.log(result.requests.map(r=>{let status=typeof r.status==`number`?` ${r.status}`:``,ok=r.ok===!0?` ok`:r.ok===!1?` fail`:``,fail=r.failureText?` (${r.failureText})`:``;return`${r.timestamp} ${r.method}${status}${ok} ${r.url}${fail}`}).join(`
3
3
  `))})});let trace=browser.command(`trace`).description(`Record a Playwright trace`);trace.command(`start`).description(`Start trace recording`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).option(`--no-screenshots`,`Disable screenshots`).option(`--no-snapshots`,`Disable snapshots`).option(`--sources`,`Include sources (bigger traces)`,!1).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/trace/start`,query:profile?{profile}:void 0,body:{targetId:opts.targetId?.trim()||void 0,screenshots:!!opts.screenshots,snapshots:!!opts.snapshots,sources:!!opts.sources}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`trace started`)})}),trace.command(`stop`).description(`Stop trace recording and write a .zip`).option(`--out <path>`,`Output path within builderforce temp dir (e.g. trace.zip or /tmp/builderforce/trace.zip)`).option(`--target-id <id>`,`CDP target id (or unique prefix)`).action(async(opts,cmd)=>{let parent=parentOpts(cmd),profile=parent?.browserProfile;await runBrowserDebug(async()=>{let result=await callBrowserRequest(parent,{method:`POST`,path:`/trace/stop`,query:profile?{profile}:void 0,body:{targetId:opts.targetId?.trim()||void 0,path:opts.out?.trim()||void 0}},{timeoutMs:2e4});if(parent?.json){defaultRuntime.log(JSON.stringify(result,null,2));return}defaultRuntime.log(`TRACE:${shortenHomePath(result.path)}`)})})}const browserCoreExamples=[`builderforce browser status`,`builderforce browser start`,`builderforce browser stop`,`builderforce browser tabs`,`builderforce browser open https://example.com`,`builderforce browser focus abcd1234`,`builderforce browser close abcd1234`,`builderforce browser screenshot`,`builderforce browser screenshot --full-page`,`builderforce browser screenshot --ref 12`,`builderforce browser snapshot`,`builderforce browser snapshot --format aria --limit 200`,`builderforce browser snapshot --efficient`,`builderforce browser snapshot --labels`],browserActionExamples=[`builderforce browser navigate https://example.com`,`builderforce browser resize 1280 720`,`builderforce browser click 12 --double`,`builderforce browser type 23 "hello" --submit`,`builderforce browser press Enter`,`builderforce browser hover 44`,`builderforce browser drag 10 11`,`builderforce browser select 9 OptionA OptionB`,`builderforce browser upload /tmp/builderforce/uploads/file.pdf`,`builderforce browser fill --fields '[{"ref":"1","value":"Ada"}]'`,`builderforce browser dialog --accept`,`builderforce browser wait --text "Done"`,`builderforce browser evaluate --fn '(el) => el.textContent' --ref 7`,`builderforce browser console --level error`,`builderforce browser pdf`];function resolveBundledExtensionRootDir(here=path.dirname(fileURLToPath(import.meta.url))){let current=here;for(;;){let candidate=path.join(current,`assets`,`chrome-extension`);if(hasManifest(candidate))return candidate;let parent=path.dirname(current);if(parent===current)break;current=parent}return path.resolve(here,`../../assets/chrome-extension`)}function installedExtensionRootDir(){return path.join(resolveStateDir(),`browser`,`chrome-extension`)}function hasManifest(dir){return fs.existsSync(path.join(dir,`manifest.json`))}async function installChromeExtension(opts){let src=opts?.sourceDir??resolveBundledExtensionRootDir();if(!hasManifest(src))throw Error(`Bundled Chrome extension is missing. Reinstall BuilderForceAgents and try again.`);let stateDir=opts?.stateDir??resolveStateDir(),dest=path.join(stateDir,`browser`,`chrome-extension`);if(fs.mkdirSync(path.dirname(dest),{recursive:!0}),fs.existsSync(dest)&&await movePathToTrash(dest).catch(()=>{let backup=`${dest}.old-${Date.now()}`;fs.renameSync(dest,backup)}),await fs.promises.cp(src,dest,{recursive:!0}),!hasManifest(dest))throw Error(`Chrome extension install failed (manifest.json missing). Try again.`);return{path:dest}}function registerBrowserExtensionCommands(browser,parentOpts){let ext=browser.command(`extension`).description(`Chrome extension helpers`);ext.command(`install`).description(`Install the Chrome extension to a stable local path`).action(async(_opts,cmd)=>{let parent=parentOpts(cmd),installed;try{installed=await installChromeExtension()}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1);return}if(parent?.json){defaultRuntime.log(JSON.stringify({ok:!0,path:installed.path},null,2));return}let displayPath=shortenHomePath(installed.path);defaultRuntime.log(displayPath);let copied=await copyToClipboard(installed.path).catch(()=>!1);defaultRuntime.error(info([copied?`Copied to clipboard.`:`Copy to clipboard unavailable.`,`Next:`,`- Chrome → chrome://extensions → enable “Developer mode”`,`- “Load unpacked” → select: ${displayPath}`,`- Pin “BuilderForceAgents Browser Relay”, then click it on the tab (badge shows ON)`,``,`${theme.muted(`Docs:`)} ${formatDocsLink(`/tools/chrome-extension`,`docs.builderforce.ai/tools/chrome-extension`)}`].join(`
4
4
  `)))}),ext.command(`path`).description(`Print the path to the installed Chrome extension (load unpacked)`).action(async(_opts,cmd)=>{let parent=parentOpts(cmd),dir=installedExtensionRootDir();if(hasManifest(dir)||(defaultRuntime.error(danger([`Chrome extension is not installed. Run: "${formatCliCommand(`builderforce browser extension install`)}"`,`Docs: ${formatDocsLink(`/tools/chrome-extension`,`docs.builderforce.ai/tools/chrome-extension`)}`].join(`
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.10.9",
3
- "commit": "5724d76fb1f3cea007a0f671860cdd51da949ca3",
4
- "builtAt": "2026-10-17T23:44:48.741Z"
2
+ "version": "2026.10.11",
3
+ "commit": "72dbeadf51f006b7ce797bd0e4d3b7d85246d57c",
4
+ "builtAt": "2026-10-18T04:48:12.238Z"
5
5
  }