@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,4 +1,4 @@
1
- import{u as resolveGatewayPort}from"./paths-5FcIFMsj.js";import{C as shortenHomePath,b as resolveUserPath}from"./utils-DbaBVFaK.js";import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import{Gt as resolveApiKeyForProfile,in as ensureAuthProfileStore,mn as normalizeSecretInput,nn as upsertAuthProfile,pn as normalizeOptionalSecretInput,u as normalizeProviderId,xt as resolveEnvApiKey,zt as resolveAuthProfileOrder}from"./model-selection-9bRFKBI_.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{a as upsertSharedEnvVar}from"./env-file-D1MDi-AM.js";import{a as readConfigFileSnapshot,c as writeConfigFile,y as parseDurationMs}from"./io-3R_ZyUxB.js";import{a as ensureWorkspaceAndSessions,b as waitForGatewayReachable,c as handleReset,g as resolveControlUiLinks,m as randomToken,n as applyWizardMetadata,t as DEFAULT_WORKSPACE}from"./onboard-helpers-Cf5dNq7-.js";import{t as assertSupportedRuntime}from"./runtime-guard-DhksRHci.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,r as isGatewayDaemonRuntime,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-CtOr1ncS.js";import{r as isSystemdUserServiceAvailable}from"./systemd-BG3_QT6W.js";import{t as resolveGatewayService}from"./service-D-NLDyK3.js";import{r as healthCommand}from"./health-yS3NRKvY.js";import{C as setXaiApiKey,S as setVercelAiGatewayApiKey,T as setZaiApiKey,_ as setOpenrouterApiKey,b as setTogetherApiKey,c as setAnthropicApiKey,d as setHuggingfaceApiKey,f as setKimiCodingApiKey,g as setOpencodeZenApiKey,h as setMoonshotApiKey,l as setCloudflareAiGatewayConfig,m as setMinimaxApiKey,p as setLitellmApiKey,u as setGeminiApiKey,v as setQianfanApiKey,w as setXiaomiApiKey,x as setVeniceApiKey,y as setSyntheticApiKey}from"./onboard-auth.credentials-BuT-etnE.js";import{A as applyXaiConfig,B as applyVercelAiGatewayConfig,E as applyTogetherConfig,H as applyAgentDefaultModelPrimary,I as applyLitellmConfig,M as applyXiaomiConfig,O as applyVeniceConfig,P as applyZaiConfig,R as applyCloudflareAiGatewayConfig,S as applyQianfanConfig,_ as applyMoonshotConfigCn,a as applyMinimaxApiConfig,b as applyOpenrouterConfig,d as applyAuthProfileConfig,f as applyHuggingfaceConfig,g as applyMoonshotConfig,l as applyMinimaxConfig,m as applyKimiCodeConfig,n as validateAnthropicSetupToken,o as applyMinimaxApiConfigCn,r as applyOpencodeZenConfig,t as buildTokenProfileId,w as applySyntheticConfig}from"./auth-token-CyVfNEQb.js";import{n as logConfigUpdated}from"./logging-DHa3jQN3.js";import{n as isDeprecatedAuthChoice,r as normalizeLegacyOnboardAuthChoice}from"./auth-choice-legacy-CqbQRfmW.js";import{i as detectZaiEndpoint,n as applyOpenAIConfig,o as applyGoogleGeminiModelDefault}from"./openai-model-default-Cp3nf21W.js";import{n as ensureSystemdUserLingerNonInteractive}from"./systemd-linger-CT-VHPB3.js";import{a as resolveCustomProviderId,n as applyCustomApiConfig,r as parseNonInteractiveCustomApiFlags,t as CustomApiError}from"./onboard-custom-C_BI0ZXn.js";import{t as runInteractiveOnboarding}from"./onboard-interactive-zgjmwJz-.js";import{t as applyOnboardingLocalWorkspaceConfig}from"./onboard-config-Kjacn8P6.js";const ONBOARD_PROVIDER_AUTH_FLAGS=[{optionKey:`anthropicApiKey`,authChoice:`apiKey`,cliFlag:`--anthropic-api-key`,cliOption:`--anthropic-api-key <key>`,description:`Anthropic API key`},{optionKey:`openaiApiKey`,authChoice:`openai-api-key`,cliFlag:`--openai-api-key`,cliOption:`--openai-api-key <key>`,description:`OpenAI API key`},{optionKey:`openrouterApiKey`,authChoice:`openrouter-api-key`,cliFlag:`--openrouter-api-key`,cliOption:`--openrouter-api-key <key>`,description:`OpenRouter API key`},{optionKey:`aiGatewayApiKey`,authChoice:`ai-gateway-api-key`,cliFlag:`--ai-gateway-api-key`,cliOption:`--ai-gateway-api-key <key>`,description:`Vercel AI Gateway API key`},{optionKey:`cloudflareAiGatewayApiKey`,authChoice:`cloudflare-ai-gateway-api-key`,cliFlag:`--cloudflare-ai-gateway-api-key`,cliOption:`--cloudflare-ai-gateway-api-key <key>`,description:`Cloudflare AI Gateway API key`},{optionKey:`moonshotApiKey`,authChoice:`moonshot-api-key`,cliFlag:`--moonshot-api-key`,cliOption:`--moonshot-api-key <key>`,description:`Moonshot API key`},{optionKey:`kimiCodeApiKey`,authChoice:`kimi-code-api-key`,cliFlag:`--kimi-code-api-key`,cliOption:`--kimi-code-api-key <key>`,description:`Kimi Coding API key`},{optionKey:`geminiApiKey`,authChoice:`gemini-api-key`,cliFlag:`--gemini-api-key`,cliOption:`--gemini-api-key <key>`,description:`Gemini API key`},{optionKey:`zaiApiKey`,authChoice:`zai-api-key`,cliFlag:`--zai-api-key`,cliOption:`--zai-api-key <key>`,description:`Z.AI API key`},{optionKey:`xiaomiApiKey`,authChoice:`xiaomi-api-key`,cliFlag:`--xiaomi-api-key`,cliOption:`--xiaomi-api-key <key>`,description:`Xiaomi API key`},{optionKey:`minimaxApiKey`,authChoice:`minimax-api`,cliFlag:`--minimax-api-key`,cliOption:`--minimax-api-key <key>`,description:`MiniMax API key`},{optionKey:`syntheticApiKey`,authChoice:`synthetic-api-key`,cliFlag:`--synthetic-api-key`,cliOption:`--synthetic-api-key <key>`,description:`Synthetic API key`},{optionKey:`veniceApiKey`,authChoice:`venice-api-key`,cliFlag:`--venice-api-key`,cliOption:`--venice-api-key <key>`,description:`Venice API key`},{optionKey:`togetherApiKey`,authChoice:`together-api-key`,cliFlag:`--together-api-key`,cliOption:`--together-api-key <key>`,description:`Together AI API key`},{optionKey:`huggingfaceApiKey`,authChoice:`huggingface-api-key`,cliFlag:`--huggingface-api-key`,cliOption:`--huggingface-api-key <key>`,description:`Hugging Face API key (HF token)`},{optionKey:`opencodeZenApiKey`,authChoice:`opencode-zen`,cliFlag:`--opencode-zen-api-key`,cliOption:`--opencode-zen-api-key <key>`,description:`OpenCode Zen API key`},{optionKey:`xaiApiKey`,authChoice:`xai-api-key`,cliFlag:`--xai-api-key`,cliOption:`--xai-api-key <key>`,description:`xAI API key`},{optionKey:`litellmApiKey`,authChoice:`litellm-api-key`,cliFlag:`--litellm-api-key`,cliOption:`--litellm-api-key <key>`,description:`LiteLLM API key`},{optionKey:`qianfanApiKey`,authChoice:`qianfan-api-key`,cliFlag:`--qianfan-api-key`,cliOption:`--qianfan-api-key <key>`,description:`QIANFAN API key`}];function hasStringValue(value){return typeof value==`string`?value.trim().length>0:!!value}function inferAuthChoiceFromFlags(opts){let matches=ONBOARD_PROVIDER_AUTH_FLAGS.filter(({optionKey})=>hasStringValue(opts[optionKey])).map(flag=>({optionKey:flag.optionKey,authChoice:flag.authChoice,label:flag.cliFlag}));return(hasStringValue(opts.customBaseUrl)||hasStringValue(opts.customModelId)||hasStringValue(opts.customApiKey))&&matches.push({optionKey:`customBaseUrl`,authChoice:`custom-api-key`,label:`--custom-base-url/--custom-model-id/--custom-api-key`}),{choice:matches[0]?.authChoice,matches}}async function resolveApiKeyFromProfiles(params){let store=await ensureAuthProfileStore(params.agentDir),order=resolveAuthProfileOrder({cfg:params.cfg,store,provider:params.provider});for(let profileId of order){if(store.profiles[profileId]?.type!==`api_key`)continue;let resolved=await resolveApiKeyForProfile({cfg:params.cfg,store,profileId,agentDir:params.agentDir});if(resolved?.apiKey)return resolved.apiKey}return null}async function resolveNonInteractiveApiKey(params){let flagKey=normalizeOptionalSecretInput(params.flagValue);if(flagKey)return{key:flagKey,source:`flag`};let envResolved=resolveEnvApiKey(params.provider);if(envResolved?.apiKey)return{key:envResolved.apiKey,source:`env`};let explicitEnvVar=params.envVarName?.trim();if(explicitEnvVar){let explicitEnvKey=normalizeOptionalSecretInput(process.env[explicitEnvVar]);if(explicitEnvKey)return{key:explicitEnvKey,source:`env`}}if(params.allowProfile??!0){let profileKey=await resolveApiKeyFromProfiles({provider:params.provider,cfg:params.cfg,agentDir:params.agentDir});if(profileKey)return{key:profileKey,source:`profile`}}if(params.required===!1)return null;let profileHint=params.allowProfile===!1?``:`, or existing ${params.provider} API-key profile`;return params.runtime.error(`Missing ${params.flagName} (or ${params.envVar} in env${profileHint}).`),params.runtime.exit(1),null}async function applyNonInteractiveAuthChoice(params){let{authChoice,opts,runtime,baseConfig}=params,nextConfig=params.nextConfig;if(authChoice===`claude-cli`||authChoice===`codex-cli`)return runtime.error([`Auth choice "${authChoice}" is deprecated.`,`Use "--auth-choice builderforcellm" (recommended default), "--auth-choice token" (Anthropic setup-token), or "--auth-choice openai-codex".`].join(`
1
+ import{u as resolveGatewayPort}from"./paths-5FcIFMsj.js";import{C as shortenHomePath,b as resolveUserPath}from"./utils-DbaBVFaK.js";import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import{Gt as resolveApiKeyForProfile,in as ensureAuthProfileStore,mn as normalizeSecretInput,nn as upsertAuthProfile,pn as normalizeOptionalSecretInput,u as normalizeProviderId,xt as resolveEnvApiKey,zt as resolveAuthProfileOrder}from"./model-selection-DG9J_VTz.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{a as upsertSharedEnvVar}from"./env-file-D1MDi-AM.js";import{a as readConfigFileSnapshot,c as writeConfigFile,y as parseDurationMs}from"./io-BLBq4T2o.js";import{a as ensureWorkspaceAndSessions,b as waitForGatewayReachable,c as handleReset,g as resolveControlUiLinks,m as randomToken,n as applyWizardMetadata,t as DEFAULT_WORKSPACE}from"./onboard-helpers-CiHzTaFX.js";import{t as assertSupportedRuntime}from"./runtime-guard-DhksRHci.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,r as isGatewayDaemonRuntime,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-9XitJmIL.js";import{r as isSystemdUserServiceAvailable}from"./systemd-BG3_QT6W.js";import{t as resolveGatewayService}from"./service-D-NLDyK3.js";import{r as healthCommand}from"./health-FO8MG5Ur.js";import{C as setXaiApiKey,S as setVercelAiGatewayApiKey,T as setZaiApiKey,_ as setOpenrouterApiKey,b as setTogetherApiKey,c as setAnthropicApiKey,d as setHuggingfaceApiKey,f as setKimiCodingApiKey,g as setOpencodeZenApiKey,h as setMoonshotApiKey,l as setCloudflareAiGatewayConfig,m as setMinimaxApiKey,p as setLitellmApiKey,u as setGeminiApiKey,v as setQianfanApiKey,w as setXiaomiApiKey,x as setVeniceApiKey,y as setSyntheticApiKey}from"./onboard-auth.credentials-DpitLlzw.js";import{A as applyXaiConfig,B as applyVercelAiGatewayConfig,E as applyTogetherConfig,H as applyAgentDefaultModelPrimary,I as applyLitellmConfig,M as applyXiaomiConfig,O as applyVeniceConfig,P as applyZaiConfig,R as applyCloudflareAiGatewayConfig,S as applyQianfanConfig,_ as applyMoonshotConfigCn,a as applyMinimaxApiConfig,b as applyOpenrouterConfig,d as applyAuthProfileConfig,f as applyHuggingfaceConfig,g as applyMoonshotConfig,l as applyMinimaxConfig,m as applyKimiCodeConfig,n as validateAnthropicSetupToken,o as applyMinimaxApiConfigCn,r as applyOpencodeZenConfig,t as buildTokenProfileId,w as applySyntheticConfig}from"./auth-token-BE67qxLw.js";import{n as logConfigUpdated}from"./logging-DHa3jQN3.js";import{n as isDeprecatedAuthChoice,r as normalizeLegacyOnboardAuthChoice}from"./auth-choice-legacy-CqbQRfmW.js";import{i as detectZaiEndpoint,n as applyOpenAIConfig,o as applyGoogleGeminiModelDefault}from"./openai-model-default-CH2-2Hvk.js";import{n as ensureSystemdUserLingerNonInteractive}from"./systemd-linger-CT-VHPB3.js";import{a as resolveCustomProviderId,n as applyCustomApiConfig,r as parseNonInteractiveCustomApiFlags,t as CustomApiError}from"./onboard-custom-Ckf0xKXY.js";import{t as runInteractiveOnboarding}from"./onboard-interactive-JNux9zfA.js";import{t as applyOnboardingLocalWorkspaceConfig}from"./onboard-config-Kjacn8P6.js";const ONBOARD_PROVIDER_AUTH_FLAGS=[{optionKey:`anthropicApiKey`,authChoice:`apiKey`,cliFlag:`--anthropic-api-key`,cliOption:`--anthropic-api-key <key>`,description:`Anthropic API key`},{optionKey:`openaiApiKey`,authChoice:`openai-api-key`,cliFlag:`--openai-api-key`,cliOption:`--openai-api-key <key>`,description:`OpenAI API key`},{optionKey:`openrouterApiKey`,authChoice:`openrouter-api-key`,cliFlag:`--openrouter-api-key`,cliOption:`--openrouter-api-key <key>`,description:`OpenRouter API key`},{optionKey:`aiGatewayApiKey`,authChoice:`ai-gateway-api-key`,cliFlag:`--ai-gateway-api-key`,cliOption:`--ai-gateway-api-key <key>`,description:`Vercel AI Gateway API key`},{optionKey:`cloudflareAiGatewayApiKey`,authChoice:`cloudflare-ai-gateway-api-key`,cliFlag:`--cloudflare-ai-gateway-api-key`,cliOption:`--cloudflare-ai-gateway-api-key <key>`,description:`Cloudflare AI Gateway API key`},{optionKey:`moonshotApiKey`,authChoice:`moonshot-api-key`,cliFlag:`--moonshot-api-key`,cliOption:`--moonshot-api-key <key>`,description:`Moonshot API key`},{optionKey:`kimiCodeApiKey`,authChoice:`kimi-code-api-key`,cliFlag:`--kimi-code-api-key`,cliOption:`--kimi-code-api-key <key>`,description:`Kimi Coding API key`},{optionKey:`geminiApiKey`,authChoice:`gemini-api-key`,cliFlag:`--gemini-api-key`,cliOption:`--gemini-api-key <key>`,description:`Gemini API key`},{optionKey:`zaiApiKey`,authChoice:`zai-api-key`,cliFlag:`--zai-api-key`,cliOption:`--zai-api-key <key>`,description:`Z.AI API key`},{optionKey:`xiaomiApiKey`,authChoice:`xiaomi-api-key`,cliFlag:`--xiaomi-api-key`,cliOption:`--xiaomi-api-key <key>`,description:`Xiaomi API key`},{optionKey:`minimaxApiKey`,authChoice:`minimax-api`,cliFlag:`--minimax-api-key`,cliOption:`--minimax-api-key <key>`,description:`MiniMax API key`},{optionKey:`syntheticApiKey`,authChoice:`synthetic-api-key`,cliFlag:`--synthetic-api-key`,cliOption:`--synthetic-api-key <key>`,description:`Synthetic API key`},{optionKey:`veniceApiKey`,authChoice:`venice-api-key`,cliFlag:`--venice-api-key`,cliOption:`--venice-api-key <key>`,description:`Venice API key`},{optionKey:`togetherApiKey`,authChoice:`together-api-key`,cliFlag:`--together-api-key`,cliOption:`--together-api-key <key>`,description:`Together AI API key`},{optionKey:`huggingfaceApiKey`,authChoice:`huggingface-api-key`,cliFlag:`--huggingface-api-key`,cliOption:`--huggingface-api-key <key>`,description:`Hugging Face API key (HF token)`},{optionKey:`opencodeZenApiKey`,authChoice:`opencode-zen`,cliFlag:`--opencode-zen-api-key`,cliOption:`--opencode-zen-api-key <key>`,description:`OpenCode Zen API key`},{optionKey:`xaiApiKey`,authChoice:`xai-api-key`,cliFlag:`--xai-api-key`,cliOption:`--xai-api-key <key>`,description:`xAI API key`},{optionKey:`litellmApiKey`,authChoice:`litellm-api-key`,cliFlag:`--litellm-api-key`,cliOption:`--litellm-api-key <key>`,description:`LiteLLM API key`},{optionKey:`qianfanApiKey`,authChoice:`qianfan-api-key`,cliFlag:`--qianfan-api-key`,cliOption:`--qianfan-api-key <key>`,description:`QIANFAN API key`}];function hasStringValue(value){return typeof value==`string`?value.trim().length>0:!!value}function inferAuthChoiceFromFlags(opts){let matches=ONBOARD_PROVIDER_AUTH_FLAGS.filter(({optionKey})=>hasStringValue(opts[optionKey])).map(flag=>({optionKey:flag.optionKey,authChoice:flag.authChoice,label:flag.cliFlag}));return(hasStringValue(opts.customBaseUrl)||hasStringValue(opts.customModelId)||hasStringValue(opts.customApiKey))&&matches.push({optionKey:`customBaseUrl`,authChoice:`custom-api-key`,label:`--custom-base-url/--custom-model-id/--custom-api-key`}),{choice:matches[0]?.authChoice,matches}}async function resolveApiKeyFromProfiles(params){let store=await ensureAuthProfileStore(params.agentDir),order=resolveAuthProfileOrder({cfg:params.cfg,store,provider:params.provider});for(let profileId of order){if(store.profiles[profileId]?.type!==`api_key`)continue;let resolved=await resolveApiKeyForProfile({cfg:params.cfg,store,profileId,agentDir:params.agentDir});if(resolved?.apiKey)return resolved.apiKey}return null}async function resolveNonInteractiveApiKey(params){let flagKey=normalizeOptionalSecretInput(params.flagValue);if(flagKey)return{key:flagKey,source:`flag`};let envResolved=resolveEnvApiKey(params.provider);if(envResolved?.apiKey)return{key:envResolved.apiKey,source:`env`};let explicitEnvVar=params.envVarName?.trim();if(explicitEnvVar){let explicitEnvKey=normalizeOptionalSecretInput(process.env[explicitEnvVar]);if(explicitEnvKey)return{key:explicitEnvKey,source:`env`}}if(params.allowProfile??!0){let profileKey=await resolveApiKeyFromProfiles({provider:params.provider,cfg:params.cfg,agentDir:params.agentDir});if(profileKey)return{key:profileKey,source:`profile`}}if(params.required===!1)return null;let profileHint=params.allowProfile===!1?``:`, or existing ${params.provider} API-key profile`;return params.runtime.error(`Missing ${params.flagName} (or ${params.envVar} in env${profileHint}).`),params.runtime.exit(1),null}async function applyNonInteractiveAuthChoice(params){let{authChoice,opts,runtime,baseConfig}=params,nextConfig=params.nextConfig;if(authChoice===`claude-cli`||authChoice===`codex-cli`)return runtime.error([`Auth choice "${authChoice}" is deprecated.`,`Use "--auth-choice builderforcellm" (recommended default), "--auth-choice token" (Anthropic setup-token), or "--auth-choice openai-codex".`].join(`
2
2
  `)),runtime.exit(1),null;if(authChoice===`setup-token`)return runtime.error([`Auth choice "setup-token" requires interactive mode.`,`Use "--auth-choice token" with --token and --token-provider anthropic.`].join(`
3
3
  `)),runtime.exit(1),null;if(authChoice===`local`)return runtime.error([`Auth choice "local" requires interactive mode.`,`Use interactive onboard/configure for guided local Ollama or llama.cpp/vLLM setup.`].join(`
4
4
  `)),runtime.exit(1),null;if(authChoice===`vllm`)return runtime.error([`Auth choice "vllm" requires interactive mode.`,`Use interactive onboard/configure to enter base URL, API key, and model ID.`].join(`
@@ -1 +1 @@
1
- import{T as resolveBuilderForceAgentsAgentDir,X as QIANFAN_DEFAULT_MODEL_ID,v as upsertAuthProfile}from"./auth-profiles-C1VbcUOm.js";const MINIMAX_API_BASE_URL=`https://api.minimax.io/anthropic`,MINIMAX_CN_API_BASE_URL=`https://api.minimaxi.com/anthropic`,MOONSHOT_BASE_URL=`https://api.moonshot.ai/v1`,MOONSHOT_CN_BASE_URL=`https://api.moonshot.cn/v1`,MOONSHOT_DEFAULT_MODEL_ID=`kimi-k2.5`,MOONSHOT_DEFAULT_MODEL_REF=`moonshot/${MOONSHOT_DEFAULT_MODEL_ID}`,KIMI_CODING_MODEL_REF=`kimi-coding/k2p5`,QIANFAN_DEFAULT_MODEL_REF=`qianfan/${QIANFAN_DEFAULT_MODEL_ID}`,ZAI_CODING_GLOBAL_BASE_URL=`https://api.z.ai/api/coding/paas/v4`,ZAI_CODING_CN_BASE_URL=`https://open.bigmodel.cn/api/coding/paas/v4`,ZAI_GLOBAL_BASE_URL=`https://api.z.ai/api/paas/v4`,ZAI_CN_BASE_URL=`https://open.bigmodel.cn/api/paas/v4`,ZAI_DEFAULT_MODEL_ID=`glm-5`;function resolveZaiBaseUrl(endpoint){switch(endpoint){case`coding-cn`:return ZAI_CODING_CN_BASE_URL;case`global`:return ZAI_GLOBAL_BASE_URL;case`cn`:return ZAI_CN_BASE_URL;case`coding-global`:return ZAI_CODING_GLOBAL_BASE_URL;default:return ZAI_GLOBAL_BASE_URL}}const MINIMAX_API_COST={input:15,output:60,cacheRead:2,cacheWrite:10},MINIMAX_LM_STUDIO_COST={input:0,output:0,cacheRead:0,cacheWrite:0},MOONSHOT_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0},ZAI_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0},MINIMAX_MODEL_CATALOG={"MiniMax-M2.1":{name:`MiniMax M2.1`,reasoning:!1},"MiniMax-M2.1-lightning":{name:`MiniMax M2.1 Lightning`,reasoning:!1},"MiniMax-M2.5":{name:`MiniMax M2.5`,reasoning:!0},"MiniMax-M2.5-Lightning":{name:`MiniMax M2.5 Lightning`,reasoning:!0}},ZAI_MODEL_CATALOG={"glm-5":{name:`GLM-5`,reasoning:!0},"glm-4.7":{name:`GLM-4.7`,reasoning:!0},"glm-4.7-flash":{name:`GLM-4.7 Flash`,reasoning:!0},"glm-4.7-flashx":{name:`GLM-4.7 FlashX`,reasoning:!0}};function buildMinimaxModelDefinition(params){let catalog=MINIMAX_MODEL_CATALOG[params.id];return{id:params.id,name:params.name??catalog?.name??`MiniMax ${params.id}`,reasoning:params.reasoning??catalog?.reasoning??!1,input:[`text`],cost:params.cost,contextWindow:params.contextWindow,maxTokens:params.maxTokens}}function buildMinimaxApiModelDefinition(modelId){return buildMinimaxModelDefinition({id:modelId,cost:MINIMAX_API_COST,contextWindow:2e5,maxTokens:8192})}function buildMoonshotModelDefinition(){return{id:MOONSHOT_DEFAULT_MODEL_ID,name:`Kimi K2.5`,reasoning:!1,input:[`text`],cost:MOONSHOT_DEFAULT_COST,contextWindow:256e3,maxTokens:8192}}function buildZaiModelDefinition(params){let catalog=ZAI_MODEL_CATALOG[params.id];return{id:params.id,name:params.name??catalog?.name??`GLM ${params.id}`,reasoning:params.reasoning??catalog?.reasoning??!0,input:[`text`],cost:params.cost??ZAI_DEFAULT_COST,contextWindow:params.contextWindow??204800,maxTokens:params.maxTokens??131072}}const XAI_BASE_URL=`https://api.x.ai/v1`,XAI_DEFAULT_MODEL_ID=`grok-4`,XAI_DEFAULT_MODEL_REF=`xai/${XAI_DEFAULT_MODEL_ID}`,XAI_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0};function buildXaiModelDefinition(){return{id:XAI_DEFAULT_MODEL_ID,name:`Grok 4`,reasoning:!1,input:[`text`],cost:XAI_DEFAULT_COST,contextWindow:131072,maxTokens:8192}}const resolveAuthAgentDir=agentDir=>agentDir??resolveBuilderForceAgentsAgentDir();async function writeOAuthCredentials(provider,creds,agentDir){await upsertAuthProfile({profileId:`${provider}:${typeof creds.email==`string`&&creds.email.trim()?creds.email.trim():`default`}`,credential:{type:`oauth`,provider,...creds},agentDir:resolveAuthAgentDir(agentDir)})}async function setAnthropicApiKey(key,agentDir){await upsertAuthProfile({profileId:`anthropic:default`,credential:{type:`api_key`,provider:`anthropic`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setGeminiApiKey(key,agentDir){await upsertAuthProfile({profileId:`google:default`,credential:{type:`api_key`,provider:`google`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setMinimaxApiKey(key,agentDir,profileId=`minimax:default`){await upsertAuthProfile({profileId,credential:{type:`api_key`,provider:profileId.split(`:`)[0]??`minimax`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setMoonshotApiKey(key,agentDir){await upsertAuthProfile({profileId:`moonshot:default`,credential:{type:`api_key`,provider:`moonshot`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setKimiCodingApiKey(key,agentDir){await upsertAuthProfile({profileId:`kimi-coding:default`,credential:{type:`api_key`,provider:`kimi-coding`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setSyntheticApiKey(key,agentDir){await upsertAuthProfile({profileId:`synthetic:default`,credential:{type:`api_key`,provider:`synthetic`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setVeniceApiKey(key,agentDir){await upsertAuthProfile({profileId:`venice:default`,credential:{type:`api_key`,provider:`venice`,key},agentDir:resolveAuthAgentDir(agentDir)})}const ZAI_DEFAULT_MODEL_REF=`zai/glm-5`,XIAOMI_DEFAULT_MODEL_REF=`xiaomi/mimo-v2-flash`,OPENROUTER_DEFAULT_MODEL_REF=`openrouter/auto`,HUGGINGFACE_DEFAULT_MODEL_REF=`huggingface/deepseek-ai/DeepSeek-R1`,TOGETHER_DEFAULT_MODEL_REF=`together/moonshotai/Kimi-K2.5`,LITELLM_DEFAULT_MODEL_REF=`litellm/claude-opus-4-6`,VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF=`vercel-ai-gateway/anthropic/claude-opus-4.6`;async function setZaiApiKey(key,agentDir){await upsertAuthProfile({profileId:`zai:default`,credential:{type:`api_key`,provider:`zai`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setXiaomiApiKey(key,agentDir){await upsertAuthProfile({profileId:`xiaomi:default`,credential:{type:`api_key`,provider:`xiaomi`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setOpenrouterApiKey(key,agentDir){await upsertAuthProfile({profileId:`openrouter:default`,credential:{type:`api_key`,provider:`openrouter`,key:key===`undefined`?``:key},agentDir:resolveAuthAgentDir(agentDir)})}async function setCloudflareAiGatewayConfig(accountId,gatewayId,apiKey,agentDir){let normalizedAccountId=accountId.trim(),normalizedGatewayId=gatewayId.trim();await upsertAuthProfile({profileId:`cloudflare-ai-gateway:default`,credential:{type:`api_key`,provider:`cloudflare-ai-gateway`,key:apiKey.trim(),metadata:{accountId:normalizedAccountId,gatewayId:normalizedGatewayId}},agentDir:resolveAuthAgentDir(agentDir)})}async function setLitellmApiKey(key,agentDir){await upsertAuthProfile({profileId:`litellm:default`,credential:{type:`api_key`,provider:`litellm`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setVercelAiGatewayApiKey(key,agentDir){await upsertAuthProfile({profileId:`vercel-ai-gateway:default`,credential:{type:`api_key`,provider:`vercel-ai-gateway`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setOpencodeZenApiKey(key,agentDir){await upsertAuthProfile({profileId:`opencode:default`,credential:{type:`api_key`,provider:`opencode`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setTogetherApiKey(key,agentDir){await upsertAuthProfile({profileId:`together:default`,credential:{type:`api_key`,provider:`together`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setHuggingfaceApiKey(key,agentDir){await upsertAuthProfile({profileId:`huggingface:default`,credential:{type:`api_key`,provider:`huggingface`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setQianfanApiKey(key,agentDir){await upsertAuthProfile({profileId:`qianfan:default`,credential:{type:`api_key`,provider:`qianfan`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setXaiApiKey(key,agentDir){await upsertAuthProfile({profileId:`xai:default`,credential:{type:`api_key`,provider:`xai`,key},agentDir:resolveAuthAgentDir(agentDir)})}export{MINIMAX_LM_STUDIO_COST as A,ZAI_CODING_CN_BASE_URL as B,setXaiApiKey as C,KIMI_CODING_MODEL_REF as D,writeOAuthCredentials as E,QIANFAN_DEFAULT_MODEL_REF as F,buildMinimaxModelDefinition as G,ZAI_DEFAULT_MODEL_ID as H,XAI_BASE_URL as I,buildZaiModelDefinition as J,buildMoonshotModelDefinition as K,XAI_DEFAULT_MODEL_ID as L,MOONSHOT_CN_BASE_URL as M,MOONSHOT_DEFAULT_MODEL_ID as N,MINIMAX_API_BASE_URL as O,MOONSHOT_DEFAULT_MODEL_REF as P,XAI_DEFAULT_MODEL_REF as R,setVercelAiGatewayApiKey as S,setZaiApiKey as T,ZAI_GLOBAL_BASE_URL as U,ZAI_CODING_GLOBAL_BASE_URL as V,buildMinimaxApiModelDefinition as W,resolveZaiBaseUrl as Y,setOpenrouterApiKey as _,VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF as a,setTogetherApiKey as b,setAnthropicApiKey as c,setHuggingfaceApiKey as d,setKimiCodingApiKey as f,setOpencodeZenApiKey as g,setMoonshotApiKey as h,TOGETHER_DEFAULT_MODEL_REF as i,MOONSHOT_BASE_URL as j,MINIMAX_CN_API_BASE_URL as k,setCloudflareAiGatewayConfig as l,setMinimaxApiKey as m,LITELLM_DEFAULT_MODEL_REF as n,XIAOMI_DEFAULT_MODEL_REF as o,setLitellmApiKey as p,buildXaiModelDefinition as q,OPENROUTER_DEFAULT_MODEL_REF as r,ZAI_DEFAULT_MODEL_REF as s,HUGGINGFACE_DEFAULT_MODEL_REF as t,setGeminiApiKey as u,setQianfanApiKey as v,setXiaomiApiKey as w,setVeniceApiKey as x,setSyntheticApiKey as y,ZAI_CN_BASE_URL as z};
1
+ import{T as resolveBuilderForceAgentsAgentDir,X as QIANFAN_DEFAULT_MODEL_ID,v as upsertAuthProfile}from"./auth-profiles-pt7Tr4HA.js";const MINIMAX_API_BASE_URL=`https://api.minimax.io/anthropic`,MINIMAX_CN_API_BASE_URL=`https://api.minimaxi.com/anthropic`,MOONSHOT_BASE_URL=`https://api.moonshot.ai/v1`,MOONSHOT_CN_BASE_URL=`https://api.moonshot.cn/v1`,MOONSHOT_DEFAULT_MODEL_ID=`kimi-k2.5`,MOONSHOT_DEFAULT_MODEL_REF=`moonshot/${MOONSHOT_DEFAULT_MODEL_ID}`,KIMI_CODING_MODEL_REF=`kimi-coding/k2p5`,QIANFAN_DEFAULT_MODEL_REF=`qianfan/${QIANFAN_DEFAULT_MODEL_ID}`,ZAI_CODING_GLOBAL_BASE_URL=`https://api.z.ai/api/coding/paas/v4`,ZAI_CODING_CN_BASE_URL=`https://open.bigmodel.cn/api/coding/paas/v4`,ZAI_GLOBAL_BASE_URL=`https://api.z.ai/api/paas/v4`,ZAI_CN_BASE_URL=`https://open.bigmodel.cn/api/paas/v4`,ZAI_DEFAULT_MODEL_ID=`glm-5`;function resolveZaiBaseUrl(endpoint){switch(endpoint){case`coding-cn`:return ZAI_CODING_CN_BASE_URL;case`global`:return ZAI_GLOBAL_BASE_URL;case`cn`:return ZAI_CN_BASE_URL;case`coding-global`:return ZAI_CODING_GLOBAL_BASE_URL;default:return ZAI_GLOBAL_BASE_URL}}const MINIMAX_API_COST={input:15,output:60,cacheRead:2,cacheWrite:10},MINIMAX_LM_STUDIO_COST={input:0,output:0,cacheRead:0,cacheWrite:0},MOONSHOT_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0},ZAI_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0},MINIMAX_MODEL_CATALOG={"MiniMax-M2.1":{name:`MiniMax M2.1`,reasoning:!1},"MiniMax-M2.1-lightning":{name:`MiniMax M2.1 Lightning`,reasoning:!1},"MiniMax-M2.5":{name:`MiniMax M2.5`,reasoning:!0},"MiniMax-M2.5-Lightning":{name:`MiniMax M2.5 Lightning`,reasoning:!0}},ZAI_MODEL_CATALOG={"glm-5":{name:`GLM-5`,reasoning:!0},"glm-4.7":{name:`GLM-4.7`,reasoning:!0},"glm-4.7-flash":{name:`GLM-4.7 Flash`,reasoning:!0},"glm-4.7-flashx":{name:`GLM-4.7 FlashX`,reasoning:!0}};function buildMinimaxModelDefinition(params){let catalog=MINIMAX_MODEL_CATALOG[params.id];return{id:params.id,name:params.name??catalog?.name??`MiniMax ${params.id}`,reasoning:params.reasoning??catalog?.reasoning??!1,input:[`text`],cost:params.cost,contextWindow:params.contextWindow,maxTokens:params.maxTokens}}function buildMinimaxApiModelDefinition(modelId){return buildMinimaxModelDefinition({id:modelId,cost:MINIMAX_API_COST,contextWindow:2e5,maxTokens:8192})}function buildMoonshotModelDefinition(){return{id:MOONSHOT_DEFAULT_MODEL_ID,name:`Kimi K2.5`,reasoning:!1,input:[`text`],cost:MOONSHOT_DEFAULT_COST,contextWindow:256e3,maxTokens:8192}}function buildZaiModelDefinition(params){let catalog=ZAI_MODEL_CATALOG[params.id];return{id:params.id,name:params.name??catalog?.name??`GLM ${params.id}`,reasoning:params.reasoning??catalog?.reasoning??!0,input:[`text`],cost:params.cost??ZAI_DEFAULT_COST,contextWindow:params.contextWindow??204800,maxTokens:params.maxTokens??131072}}const XAI_BASE_URL=`https://api.x.ai/v1`,XAI_DEFAULT_MODEL_ID=`grok-4`,XAI_DEFAULT_MODEL_REF=`xai/${XAI_DEFAULT_MODEL_ID}`,XAI_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0};function buildXaiModelDefinition(){return{id:XAI_DEFAULT_MODEL_ID,name:`Grok 4`,reasoning:!1,input:[`text`],cost:XAI_DEFAULT_COST,contextWindow:131072,maxTokens:8192}}const resolveAuthAgentDir=agentDir=>agentDir??resolveBuilderForceAgentsAgentDir();async function writeOAuthCredentials(provider,creds,agentDir){await upsertAuthProfile({profileId:`${provider}:${typeof creds.email==`string`&&creds.email.trim()?creds.email.trim():`default`}`,credential:{type:`oauth`,provider,...creds},agentDir:resolveAuthAgentDir(agentDir)})}async function setAnthropicApiKey(key,agentDir){await upsertAuthProfile({profileId:`anthropic:default`,credential:{type:`api_key`,provider:`anthropic`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setGeminiApiKey(key,agentDir){await upsertAuthProfile({profileId:`google:default`,credential:{type:`api_key`,provider:`google`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setMinimaxApiKey(key,agentDir,profileId=`minimax:default`){await upsertAuthProfile({profileId,credential:{type:`api_key`,provider:profileId.split(`:`)[0]??`minimax`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setMoonshotApiKey(key,agentDir){await upsertAuthProfile({profileId:`moonshot:default`,credential:{type:`api_key`,provider:`moonshot`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setKimiCodingApiKey(key,agentDir){await upsertAuthProfile({profileId:`kimi-coding:default`,credential:{type:`api_key`,provider:`kimi-coding`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setSyntheticApiKey(key,agentDir){await upsertAuthProfile({profileId:`synthetic:default`,credential:{type:`api_key`,provider:`synthetic`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setVeniceApiKey(key,agentDir){await upsertAuthProfile({profileId:`venice:default`,credential:{type:`api_key`,provider:`venice`,key},agentDir:resolveAuthAgentDir(agentDir)})}const ZAI_DEFAULT_MODEL_REF=`zai/glm-5`,XIAOMI_DEFAULT_MODEL_REF=`xiaomi/mimo-v2-flash`,OPENROUTER_DEFAULT_MODEL_REF=`openrouter/auto`,HUGGINGFACE_DEFAULT_MODEL_REF=`huggingface/deepseek-ai/DeepSeek-R1`,TOGETHER_DEFAULT_MODEL_REF=`together/moonshotai/Kimi-K2.5`,LITELLM_DEFAULT_MODEL_REF=`litellm/claude-opus-4-6`,VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF=`vercel-ai-gateway/anthropic/claude-opus-4.6`;async function setZaiApiKey(key,agentDir){await upsertAuthProfile({profileId:`zai:default`,credential:{type:`api_key`,provider:`zai`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setXiaomiApiKey(key,agentDir){await upsertAuthProfile({profileId:`xiaomi:default`,credential:{type:`api_key`,provider:`xiaomi`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setOpenrouterApiKey(key,agentDir){await upsertAuthProfile({profileId:`openrouter:default`,credential:{type:`api_key`,provider:`openrouter`,key:key===`undefined`?``:key},agentDir:resolveAuthAgentDir(agentDir)})}async function setCloudflareAiGatewayConfig(accountId,gatewayId,apiKey,agentDir){let normalizedAccountId=accountId.trim(),normalizedGatewayId=gatewayId.trim();await upsertAuthProfile({profileId:`cloudflare-ai-gateway:default`,credential:{type:`api_key`,provider:`cloudflare-ai-gateway`,key:apiKey.trim(),metadata:{accountId:normalizedAccountId,gatewayId:normalizedGatewayId}},agentDir:resolveAuthAgentDir(agentDir)})}async function setLitellmApiKey(key,agentDir){await upsertAuthProfile({profileId:`litellm:default`,credential:{type:`api_key`,provider:`litellm`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setVercelAiGatewayApiKey(key,agentDir){await upsertAuthProfile({profileId:`vercel-ai-gateway:default`,credential:{type:`api_key`,provider:`vercel-ai-gateway`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setOpencodeZenApiKey(key,agentDir){await upsertAuthProfile({profileId:`opencode:default`,credential:{type:`api_key`,provider:`opencode`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setTogetherApiKey(key,agentDir){await upsertAuthProfile({profileId:`together:default`,credential:{type:`api_key`,provider:`together`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setHuggingfaceApiKey(key,agentDir){await upsertAuthProfile({profileId:`huggingface:default`,credential:{type:`api_key`,provider:`huggingface`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setQianfanApiKey(key,agentDir){await upsertAuthProfile({profileId:`qianfan:default`,credential:{type:`api_key`,provider:`qianfan`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setXaiApiKey(key,agentDir){await upsertAuthProfile({profileId:`xai:default`,credential:{type:`api_key`,provider:`xai`,key},agentDir:resolveAuthAgentDir(agentDir)})}export{MINIMAX_LM_STUDIO_COST as A,ZAI_CODING_CN_BASE_URL as B,setXaiApiKey as C,KIMI_CODING_MODEL_REF as D,writeOAuthCredentials as E,QIANFAN_DEFAULT_MODEL_REF as F,buildMinimaxModelDefinition as G,ZAI_DEFAULT_MODEL_ID as H,XAI_BASE_URL as I,buildZaiModelDefinition as J,buildMoonshotModelDefinition as K,XAI_DEFAULT_MODEL_ID as L,MOONSHOT_CN_BASE_URL as M,MOONSHOT_DEFAULT_MODEL_ID as N,MINIMAX_API_BASE_URL as O,MOONSHOT_DEFAULT_MODEL_REF as P,XAI_DEFAULT_MODEL_REF as R,setVercelAiGatewayApiKey as S,setZaiApiKey as T,ZAI_GLOBAL_BASE_URL as U,ZAI_CODING_GLOBAL_BASE_URL as V,buildMinimaxApiModelDefinition as W,resolveZaiBaseUrl as Y,setOpenrouterApiKey as _,VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF as a,setTogetherApiKey as b,setAnthropicApiKey as c,setHuggingfaceApiKey as d,setKimiCodingApiKey as f,setOpencodeZenApiKey as g,setMoonshotApiKey as h,TOGETHER_DEFAULT_MODEL_REF as i,MOONSHOT_BASE_URL as j,MINIMAX_CN_API_BASE_URL as k,setCloudflareAiGatewayConfig as l,setMinimaxApiKey as m,LITELLM_DEFAULT_MODEL_REF as n,XIAOMI_DEFAULT_MODEL_REF as o,setLitellmApiKey as p,buildXaiModelDefinition as q,OPENROUTER_DEFAULT_MODEL_REF as r,ZAI_DEFAULT_MODEL_REF as s,HUGGINGFACE_DEFAULT_MODEL_REF as t,setGeminiApiKey as u,setQianfanApiKey as v,setXiaomiApiKey as w,setVeniceApiKey as x,setSyntheticApiKey as y,ZAI_CN_BASE_URL as z};
@@ -1 +1 @@
1
- import{S as QIANFAN_DEFAULT_MODEL_ID,ln as resolveBuilderForceAgentsAgentDir,nn as upsertAuthProfile}from"./model-selection-9bRFKBI_.js";const MINIMAX_API_BASE_URL=`https://api.minimax.io/anthropic`,MINIMAX_CN_API_BASE_URL=`https://api.minimaxi.com/anthropic`,MOONSHOT_BASE_URL=`https://api.moonshot.ai/v1`,MOONSHOT_CN_BASE_URL=`https://api.moonshot.cn/v1`,MOONSHOT_DEFAULT_MODEL_ID=`kimi-k2.5`,MOONSHOT_DEFAULT_MODEL_REF=`moonshot/${MOONSHOT_DEFAULT_MODEL_ID}`,KIMI_CODING_MODEL_REF=`kimi-coding/k2p5`,QIANFAN_DEFAULT_MODEL_REF=`qianfan/${QIANFAN_DEFAULT_MODEL_ID}`,ZAI_CODING_GLOBAL_BASE_URL=`https://api.z.ai/api/coding/paas/v4`,ZAI_CODING_CN_BASE_URL=`https://open.bigmodel.cn/api/coding/paas/v4`,ZAI_GLOBAL_BASE_URL=`https://api.z.ai/api/paas/v4`,ZAI_CN_BASE_URL=`https://open.bigmodel.cn/api/paas/v4`,ZAI_DEFAULT_MODEL_ID=`glm-5`;function resolveZaiBaseUrl(endpoint){switch(endpoint){case`coding-cn`:return ZAI_CODING_CN_BASE_URL;case`global`:return ZAI_GLOBAL_BASE_URL;case`cn`:return ZAI_CN_BASE_URL;case`coding-global`:return ZAI_CODING_GLOBAL_BASE_URL;default:return ZAI_GLOBAL_BASE_URL}}const MINIMAX_API_COST={input:15,output:60,cacheRead:2,cacheWrite:10},MINIMAX_LM_STUDIO_COST={input:0,output:0,cacheRead:0,cacheWrite:0},MOONSHOT_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0},ZAI_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0},MINIMAX_MODEL_CATALOG={"MiniMax-M2.1":{name:`MiniMax M2.1`,reasoning:!1},"MiniMax-M2.1-lightning":{name:`MiniMax M2.1 Lightning`,reasoning:!1},"MiniMax-M2.5":{name:`MiniMax M2.5`,reasoning:!0},"MiniMax-M2.5-Lightning":{name:`MiniMax M2.5 Lightning`,reasoning:!0}},ZAI_MODEL_CATALOG={"glm-5":{name:`GLM-5`,reasoning:!0},"glm-4.7":{name:`GLM-4.7`,reasoning:!0},"glm-4.7-flash":{name:`GLM-4.7 Flash`,reasoning:!0},"glm-4.7-flashx":{name:`GLM-4.7 FlashX`,reasoning:!0}};function buildMinimaxModelDefinition(params){let catalog=MINIMAX_MODEL_CATALOG[params.id];return{id:params.id,name:params.name??catalog?.name??`MiniMax ${params.id}`,reasoning:params.reasoning??catalog?.reasoning??!1,input:[`text`],cost:params.cost,contextWindow:params.contextWindow,maxTokens:params.maxTokens}}function buildMinimaxApiModelDefinition(modelId){return buildMinimaxModelDefinition({id:modelId,cost:MINIMAX_API_COST,contextWindow:2e5,maxTokens:8192})}function buildMoonshotModelDefinition(){return{id:MOONSHOT_DEFAULT_MODEL_ID,name:`Kimi K2.5`,reasoning:!1,input:[`text`],cost:MOONSHOT_DEFAULT_COST,contextWindow:256e3,maxTokens:8192}}function buildZaiModelDefinition(params){let catalog=ZAI_MODEL_CATALOG[params.id];return{id:params.id,name:params.name??catalog?.name??`GLM ${params.id}`,reasoning:params.reasoning??catalog?.reasoning??!0,input:[`text`],cost:params.cost??ZAI_DEFAULT_COST,contextWindow:params.contextWindow??204800,maxTokens:params.maxTokens??131072}}const XAI_BASE_URL=`https://api.x.ai/v1`,XAI_DEFAULT_MODEL_ID=`grok-4`,XAI_DEFAULT_MODEL_REF=`xai/${XAI_DEFAULT_MODEL_ID}`,XAI_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0};function buildXaiModelDefinition(){return{id:XAI_DEFAULT_MODEL_ID,name:`Grok 4`,reasoning:!1,input:[`text`],cost:XAI_DEFAULT_COST,contextWindow:131072,maxTokens:8192}}const resolveAuthAgentDir=agentDir=>agentDir??resolveBuilderForceAgentsAgentDir();async function writeOAuthCredentials(provider,creds,agentDir){await upsertAuthProfile({profileId:`${provider}:${typeof creds.email==`string`&&creds.email.trim()?creds.email.trim():`default`}`,credential:{type:`oauth`,provider,...creds},agentDir:resolveAuthAgentDir(agentDir)})}async function setAnthropicApiKey(key,agentDir){await upsertAuthProfile({profileId:`anthropic:default`,credential:{type:`api_key`,provider:`anthropic`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setGeminiApiKey(key,agentDir){await upsertAuthProfile({profileId:`google:default`,credential:{type:`api_key`,provider:`google`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setMinimaxApiKey(key,agentDir,profileId=`minimax:default`){await upsertAuthProfile({profileId,credential:{type:`api_key`,provider:profileId.split(`:`)[0]??`minimax`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setMoonshotApiKey(key,agentDir){await upsertAuthProfile({profileId:`moonshot:default`,credential:{type:`api_key`,provider:`moonshot`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setKimiCodingApiKey(key,agentDir){await upsertAuthProfile({profileId:`kimi-coding:default`,credential:{type:`api_key`,provider:`kimi-coding`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setSyntheticApiKey(key,agentDir){await upsertAuthProfile({profileId:`synthetic:default`,credential:{type:`api_key`,provider:`synthetic`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setVeniceApiKey(key,agentDir){await upsertAuthProfile({profileId:`venice:default`,credential:{type:`api_key`,provider:`venice`,key},agentDir:resolveAuthAgentDir(agentDir)})}const ZAI_DEFAULT_MODEL_REF=`zai/glm-5`,XIAOMI_DEFAULT_MODEL_REF=`xiaomi/mimo-v2-flash`,OPENROUTER_DEFAULT_MODEL_REF=`openrouter/auto`,HUGGINGFACE_DEFAULT_MODEL_REF=`huggingface/deepseek-ai/DeepSeek-R1`,TOGETHER_DEFAULT_MODEL_REF=`together/moonshotai/Kimi-K2.5`,LITELLM_DEFAULT_MODEL_REF=`litellm/claude-opus-4-6`,VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF=`vercel-ai-gateway/anthropic/claude-opus-4.6`;async function setZaiApiKey(key,agentDir){await upsertAuthProfile({profileId:`zai:default`,credential:{type:`api_key`,provider:`zai`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setXiaomiApiKey(key,agentDir){await upsertAuthProfile({profileId:`xiaomi:default`,credential:{type:`api_key`,provider:`xiaomi`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setOpenrouterApiKey(key,agentDir){await upsertAuthProfile({profileId:`openrouter:default`,credential:{type:`api_key`,provider:`openrouter`,key:key===`undefined`?``:key},agentDir:resolveAuthAgentDir(agentDir)})}async function setCloudflareAiGatewayConfig(accountId,gatewayId,apiKey,agentDir){let normalizedAccountId=accountId.trim(),normalizedGatewayId=gatewayId.trim();await upsertAuthProfile({profileId:`cloudflare-ai-gateway:default`,credential:{type:`api_key`,provider:`cloudflare-ai-gateway`,key:apiKey.trim(),metadata:{accountId:normalizedAccountId,gatewayId:normalizedGatewayId}},agentDir:resolveAuthAgentDir(agentDir)})}async function setLitellmApiKey(key,agentDir){await upsertAuthProfile({profileId:`litellm:default`,credential:{type:`api_key`,provider:`litellm`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setVercelAiGatewayApiKey(key,agentDir){await upsertAuthProfile({profileId:`vercel-ai-gateway:default`,credential:{type:`api_key`,provider:`vercel-ai-gateway`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setOpencodeZenApiKey(key,agentDir){await upsertAuthProfile({profileId:`opencode:default`,credential:{type:`api_key`,provider:`opencode`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setTogetherApiKey(key,agentDir){await upsertAuthProfile({profileId:`together:default`,credential:{type:`api_key`,provider:`together`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setHuggingfaceApiKey(key,agentDir){await upsertAuthProfile({profileId:`huggingface:default`,credential:{type:`api_key`,provider:`huggingface`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setQianfanApiKey(key,agentDir){await upsertAuthProfile({profileId:`qianfan:default`,credential:{type:`api_key`,provider:`qianfan`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setXaiApiKey(key,agentDir){await upsertAuthProfile({profileId:`xai:default`,credential:{type:`api_key`,provider:`xai`,key},agentDir:resolveAuthAgentDir(agentDir)})}export{MINIMAX_LM_STUDIO_COST as A,ZAI_CODING_CN_BASE_URL as B,setXaiApiKey as C,KIMI_CODING_MODEL_REF as D,writeOAuthCredentials as E,QIANFAN_DEFAULT_MODEL_REF as F,buildMinimaxModelDefinition as G,ZAI_DEFAULT_MODEL_ID as H,XAI_BASE_URL as I,buildZaiModelDefinition as J,buildMoonshotModelDefinition as K,XAI_DEFAULT_MODEL_ID as L,MOONSHOT_CN_BASE_URL as M,MOONSHOT_DEFAULT_MODEL_ID as N,MINIMAX_API_BASE_URL as O,MOONSHOT_DEFAULT_MODEL_REF as P,XAI_DEFAULT_MODEL_REF as R,setVercelAiGatewayApiKey as S,setZaiApiKey as T,ZAI_GLOBAL_BASE_URL as U,ZAI_CODING_GLOBAL_BASE_URL as V,buildMinimaxApiModelDefinition as W,resolveZaiBaseUrl as Y,setOpenrouterApiKey as _,VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF as a,setTogetherApiKey as b,setAnthropicApiKey as c,setHuggingfaceApiKey as d,setKimiCodingApiKey as f,setOpencodeZenApiKey as g,setMoonshotApiKey as h,TOGETHER_DEFAULT_MODEL_REF as i,MOONSHOT_BASE_URL as j,MINIMAX_CN_API_BASE_URL as k,setCloudflareAiGatewayConfig as l,setMinimaxApiKey as m,LITELLM_DEFAULT_MODEL_REF as n,XIAOMI_DEFAULT_MODEL_REF as o,setLitellmApiKey as p,buildXaiModelDefinition as q,OPENROUTER_DEFAULT_MODEL_REF as r,ZAI_DEFAULT_MODEL_REF as s,HUGGINGFACE_DEFAULT_MODEL_REF as t,setGeminiApiKey as u,setQianfanApiKey as v,setXiaomiApiKey as w,setVeniceApiKey as x,setSyntheticApiKey as y,ZAI_CN_BASE_URL as z};
1
+ import{S as QIANFAN_DEFAULT_MODEL_ID,ln as resolveBuilderForceAgentsAgentDir,nn as upsertAuthProfile}from"./model-selection-DG9J_VTz.js";const MINIMAX_API_BASE_URL=`https://api.minimax.io/anthropic`,MINIMAX_CN_API_BASE_URL=`https://api.minimaxi.com/anthropic`,MOONSHOT_BASE_URL=`https://api.moonshot.ai/v1`,MOONSHOT_CN_BASE_URL=`https://api.moonshot.cn/v1`,MOONSHOT_DEFAULT_MODEL_ID=`kimi-k2.5`,MOONSHOT_DEFAULT_MODEL_REF=`moonshot/${MOONSHOT_DEFAULT_MODEL_ID}`,KIMI_CODING_MODEL_REF=`kimi-coding/k2p5`,QIANFAN_DEFAULT_MODEL_REF=`qianfan/${QIANFAN_DEFAULT_MODEL_ID}`,ZAI_CODING_GLOBAL_BASE_URL=`https://api.z.ai/api/coding/paas/v4`,ZAI_CODING_CN_BASE_URL=`https://open.bigmodel.cn/api/coding/paas/v4`,ZAI_GLOBAL_BASE_URL=`https://api.z.ai/api/paas/v4`,ZAI_CN_BASE_URL=`https://open.bigmodel.cn/api/paas/v4`,ZAI_DEFAULT_MODEL_ID=`glm-5`;function resolveZaiBaseUrl(endpoint){switch(endpoint){case`coding-cn`:return ZAI_CODING_CN_BASE_URL;case`global`:return ZAI_GLOBAL_BASE_URL;case`cn`:return ZAI_CN_BASE_URL;case`coding-global`:return ZAI_CODING_GLOBAL_BASE_URL;default:return ZAI_GLOBAL_BASE_URL}}const MINIMAX_API_COST={input:15,output:60,cacheRead:2,cacheWrite:10},MINIMAX_LM_STUDIO_COST={input:0,output:0,cacheRead:0,cacheWrite:0},MOONSHOT_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0},ZAI_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0},MINIMAX_MODEL_CATALOG={"MiniMax-M2.1":{name:`MiniMax M2.1`,reasoning:!1},"MiniMax-M2.1-lightning":{name:`MiniMax M2.1 Lightning`,reasoning:!1},"MiniMax-M2.5":{name:`MiniMax M2.5`,reasoning:!0},"MiniMax-M2.5-Lightning":{name:`MiniMax M2.5 Lightning`,reasoning:!0}},ZAI_MODEL_CATALOG={"glm-5":{name:`GLM-5`,reasoning:!0},"glm-4.7":{name:`GLM-4.7`,reasoning:!0},"glm-4.7-flash":{name:`GLM-4.7 Flash`,reasoning:!0},"glm-4.7-flashx":{name:`GLM-4.7 FlashX`,reasoning:!0}};function buildMinimaxModelDefinition(params){let catalog=MINIMAX_MODEL_CATALOG[params.id];return{id:params.id,name:params.name??catalog?.name??`MiniMax ${params.id}`,reasoning:params.reasoning??catalog?.reasoning??!1,input:[`text`],cost:params.cost,contextWindow:params.contextWindow,maxTokens:params.maxTokens}}function buildMinimaxApiModelDefinition(modelId){return buildMinimaxModelDefinition({id:modelId,cost:MINIMAX_API_COST,contextWindow:2e5,maxTokens:8192})}function buildMoonshotModelDefinition(){return{id:MOONSHOT_DEFAULT_MODEL_ID,name:`Kimi K2.5`,reasoning:!1,input:[`text`],cost:MOONSHOT_DEFAULT_COST,contextWindow:256e3,maxTokens:8192}}function buildZaiModelDefinition(params){let catalog=ZAI_MODEL_CATALOG[params.id];return{id:params.id,name:params.name??catalog?.name??`GLM ${params.id}`,reasoning:params.reasoning??catalog?.reasoning??!0,input:[`text`],cost:params.cost??ZAI_DEFAULT_COST,contextWindow:params.contextWindow??204800,maxTokens:params.maxTokens??131072}}const XAI_BASE_URL=`https://api.x.ai/v1`,XAI_DEFAULT_MODEL_ID=`grok-4`,XAI_DEFAULT_MODEL_REF=`xai/${XAI_DEFAULT_MODEL_ID}`,XAI_DEFAULT_COST={input:0,output:0,cacheRead:0,cacheWrite:0};function buildXaiModelDefinition(){return{id:XAI_DEFAULT_MODEL_ID,name:`Grok 4`,reasoning:!1,input:[`text`],cost:XAI_DEFAULT_COST,contextWindow:131072,maxTokens:8192}}const resolveAuthAgentDir=agentDir=>agentDir??resolveBuilderForceAgentsAgentDir();async function writeOAuthCredentials(provider,creds,agentDir){await upsertAuthProfile({profileId:`${provider}:${typeof creds.email==`string`&&creds.email.trim()?creds.email.trim():`default`}`,credential:{type:`oauth`,provider,...creds},agentDir:resolveAuthAgentDir(agentDir)})}async function setAnthropicApiKey(key,agentDir){await upsertAuthProfile({profileId:`anthropic:default`,credential:{type:`api_key`,provider:`anthropic`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setGeminiApiKey(key,agentDir){await upsertAuthProfile({profileId:`google:default`,credential:{type:`api_key`,provider:`google`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setMinimaxApiKey(key,agentDir,profileId=`minimax:default`){await upsertAuthProfile({profileId,credential:{type:`api_key`,provider:profileId.split(`:`)[0]??`minimax`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setMoonshotApiKey(key,agentDir){await upsertAuthProfile({profileId:`moonshot:default`,credential:{type:`api_key`,provider:`moonshot`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setKimiCodingApiKey(key,agentDir){await upsertAuthProfile({profileId:`kimi-coding:default`,credential:{type:`api_key`,provider:`kimi-coding`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setSyntheticApiKey(key,agentDir){await upsertAuthProfile({profileId:`synthetic:default`,credential:{type:`api_key`,provider:`synthetic`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setVeniceApiKey(key,agentDir){await upsertAuthProfile({profileId:`venice:default`,credential:{type:`api_key`,provider:`venice`,key},agentDir:resolveAuthAgentDir(agentDir)})}const ZAI_DEFAULT_MODEL_REF=`zai/glm-5`,XIAOMI_DEFAULT_MODEL_REF=`xiaomi/mimo-v2-flash`,OPENROUTER_DEFAULT_MODEL_REF=`openrouter/auto`,HUGGINGFACE_DEFAULT_MODEL_REF=`huggingface/deepseek-ai/DeepSeek-R1`,TOGETHER_DEFAULT_MODEL_REF=`together/moonshotai/Kimi-K2.5`,LITELLM_DEFAULT_MODEL_REF=`litellm/claude-opus-4-6`,VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF=`vercel-ai-gateway/anthropic/claude-opus-4.6`;async function setZaiApiKey(key,agentDir){await upsertAuthProfile({profileId:`zai:default`,credential:{type:`api_key`,provider:`zai`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setXiaomiApiKey(key,agentDir){await upsertAuthProfile({profileId:`xiaomi:default`,credential:{type:`api_key`,provider:`xiaomi`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setOpenrouterApiKey(key,agentDir){await upsertAuthProfile({profileId:`openrouter:default`,credential:{type:`api_key`,provider:`openrouter`,key:key===`undefined`?``:key},agentDir:resolveAuthAgentDir(agentDir)})}async function setCloudflareAiGatewayConfig(accountId,gatewayId,apiKey,agentDir){let normalizedAccountId=accountId.trim(),normalizedGatewayId=gatewayId.trim();await upsertAuthProfile({profileId:`cloudflare-ai-gateway:default`,credential:{type:`api_key`,provider:`cloudflare-ai-gateway`,key:apiKey.trim(),metadata:{accountId:normalizedAccountId,gatewayId:normalizedGatewayId}},agentDir:resolveAuthAgentDir(agentDir)})}async function setLitellmApiKey(key,agentDir){await upsertAuthProfile({profileId:`litellm:default`,credential:{type:`api_key`,provider:`litellm`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setVercelAiGatewayApiKey(key,agentDir){await upsertAuthProfile({profileId:`vercel-ai-gateway:default`,credential:{type:`api_key`,provider:`vercel-ai-gateway`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setOpencodeZenApiKey(key,agentDir){await upsertAuthProfile({profileId:`opencode:default`,credential:{type:`api_key`,provider:`opencode`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setTogetherApiKey(key,agentDir){await upsertAuthProfile({profileId:`together:default`,credential:{type:`api_key`,provider:`together`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setHuggingfaceApiKey(key,agentDir){await upsertAuthProfile({profileId:`huggingface:default`,credential:{type:`api_key`,provider:`huggingface`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setQianfanApiKey(key,agentDir){await upsertAuthProfile({profileId:`qianfan:default`,credential:{type:`api_key`,provider:`qianfan`,key},agentDir:resolveAuthAgentDir(agentDir)})}async function setXaiApiKey(key,agentDir){await upsertAuthProfile({profileId:`xai:default`,credential:{type:`api_key`,provider:`xai`,key},agentDir:resolveAuthAgentDir(agentDir)})}export{MINIMAX_LM_STUDIO_COST as A,ZAI_CODING_CN_BASE_URL as B,setXaiApiKey as C,KIMI_CODING_MODEL_REF as D,writeOAuthCredentials as E,QIANFAN_DEFAULT_MODEL_REF as F,buildMinimaxModelDefinition as G,ZAI_DEFAULT_MODEL_ID as H,XAI_BASE_URL as I,buildZaiModelDefinition as J,buildMoonshotModelDefinition as K,XAI_DEFAULT_MODEL_ID as L,MOONSHOT_CN_BASE_URL as M,MOONSHOT_DEFAULT_MODEL_ID as N,MINIMAX_API_BASE_URL as O,MOONSHOT_DEFAULT_MODEL_REF as P,XAI_DEFAULT_MODEL_REF as R,setVercelAiGatewayApiKey as S,setZaiApiKey as T,ZAI_GLOBAL_BASE_URL as U,ZAI_CODING_GLOBAL_BASE_URL as V,buildMinimaxApiModelDefinition as W,resolveZaiBaseUrl as Y,setOpenrouterApiKey as _,VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF as a,setTogetherApiKey as b,setAnthropicApiKey as c,setHuggingfaceApiKey as d,setKimiCodingApiKey as f,setOpencodeZenApiKey as g,setMoonshotApiKey as h,TOGETHER_DEFAULT_MODEL_REF as i,MOONSHOT_BASE_URL as j,MINIMAX_CN_API_BASE_URL as k,setCloudflareAiGatewayConfig as l,setMinimaxApiKey as m,LITELLM_DEFAULT_MODEL_REF as n,XIAOMI_DEFAULT_MODEL_REF as o,setLitellmApiKey as p,buildXaiModelDefinition as q,OPENROUTER_DEFAULT_MODEL_REF as r,ZAI_DEFAULT_MODEL_REF as s,HUGGINGFACE_DEFAULT_MODEL_REF as t,setGeminiApiKey as u,setQianfanApiKey as v,setXiaomiApiKey as w,setVeniceApiKey as x,setSyntheticApiKey as y,ZAI_CN_BASE_URL as z};
@@ -0,0 +1 @@
1
+ import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-pt7Tr4HA.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"./io-D9hC2aG0.js";import"./manifest-registry-009gLJ4l.js";import"./config-BpChMIJ6.js";import"./model-discovery-D0i1JpiL.js";import"./model-catalog-BeBXvbFm.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-Du2LiaX6.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-DDEN4oJi.js";import"./sessions-BA8Se_bT.js";import"./project-context-store-CIUcwUP_.js";import"./tokens-CFKkpUIu.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./send-B7H8Ae5j.js";import"./send-DqR7Rxzm.js";import"./with-timeout-B_p5pWDv.js";import"./deliver-CsG0cHbZ.js";import"./accounts-Cx82nj4E.js";import"./send-KgN1P41U.js";import"./image-ops-CotJhwRR.js";import"./redact-CgO7wehS.js";import"./errors-tAt19c1E.js";import"./embedded-helpers-DdU30lmt.js";import"./sandbox-DvKMuAXL.js";import"./chrome-CFmcixaE.js";import"./tailscale-DV-yOmYe.js";import"./auth-ChecwOXS.js";import"./server-context-CttALzrW.js";import"./routes-_iZdG1Fo.js";import"./paths-BnOjueoX.js";import"./ssrf-DJXLYZ0d.js";import"./store-DHD2IEgd.js";import"./ports-DTku9NSx.js";import"./trash-C3zmJ_O7.js";import"./accounts-DcoaLXKI.js";import"./paths-ClsbsPQP.js";import"./tool-images-CCpqFtrL.js";import"./workspace-waBqRxiy.js";import"./reply-prefix-Cg7AqaK0.js";import"./sqlite-CIGM1WKg.js";import"./memory-cli-CveeVOWH.js";import"./manager-BeohB4-8.js";import"./gemini-auth-DDR12zst.js";import"./retry-B151Hej5.js";import"./common-BfwMxpLu.js";import"./runner-Cu9NJouV.js";import"./tool-display-Cs4hDP1f.js";import"./chunk-Dly7lM4r.js";import"./markdown-tables-B1Rx8hv6.js";import"./fetch-guard-DnXqPKae.js";import"./fetch-Cn_THzz8.js";import"./ir-CSdQJPqu.js";import"./render-DlHYsbvQ.js";import"./builderforcellm-syscheck-9ksvqHYX.js";import"./session-utils-Dxou8SbO.js";import"./coding-tools.policy-D9Ba8eDh.js";import"./pairing-store-YRy7EBgI.js";import"./fetch-DnWD6ydH.js";import"./exec-approvals-D7ZPAZpt.js";import"./nodes-screen-D6GHv_S0.js";import"./session-cost-usage-S0nkbPoW.js";import"./usage-format-5sp5AMSu.js";import"./provider-usage-B8lFHp0K.js";import"./send-kkm_zrHQ.js";import"./outbound-attachment-BaTYE4qp.js";import"./delivery-queue-Cp3t4Upn.js";import"./project-context-D3Mx4maV.js";import"./control-service-2PkCt256.js";import"./stagger-CRe77dWL.js";import"./channel-selection-BLwXhb9t.js";import"./send-CYGOPcKq.js";import"./resolve-route-DEIW5uKy.js";import"./channel-activity-DX36RadH.js";import"./tables-CojSfTth.js";import"./links-BKzP7VVP.js";import"./cli-utils-C9pW69LF.js";import"./help-format-CfFf-w62.js";import"./progress-Cqb-jAjT.js";import"./replies-BOGMDhSN.js";import"./onboard-helpers-Ce_c4Raj.js";import"./prompt-style-BMWmaqSC.js";import"./pairing-labels-BJPrScRl.js";import"./active-listener-Di9e1YAD.js";import"./mamba-state-engine-CV4nDcCk.js";import"./transformers-stream-Buj40qHl.js";import"./catalog-li4bSIE2.js";import"./helpers-DPPVplyk.js";import"./plugin-auto-enable-Cupr4wbt.js";import"./install-safe-path-ObPl6zIf.js";import"./npm-registry-spec-BV1VDmuN.js";import"./skill-scanner-OTLeRZ_p.js";import"./installs-B_t2YXgq.js";import{n as setupChannels}from"./onboard-channels-Dn0u5C-C.js";export{setupChannels};
@@ -0,0 +1 @@
1
+ import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./embedded-helpers-C9jpiwlw.js";import"./reply-GY1C8tcv.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./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"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import"./io-BLBq4T2o.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BgV_FYSq.js";import"./runner-eTTUbLAK.js";import"./model-catalog-DjNiebr7.js";import"./sandbox-C4AKi2EX.js";import"./chrome-DXt86tmV.js";import"./tailscale-DLkpGquM.js";import"./auth-lebUHrkd.js";import"./server-context-CQ2v4BAx.js";import"./frontmatter-3D1EdC1L.js";import"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-DZntyPY6.js";import"./redact-BHdfp2MZ.js";import"./errors-B1MIg3g-.js";import"./paths-cR8ct-Y3.js";import"./ssrf-p9k-iapc.js";import"./image-ops-C8IUQKjn.js";import"./store-CmHBQ-yX.js";import"./ports-DgmEDNOm.js";import"./trash-DD2Hc5oq.js";import"./sessions-BuZVmOWt.js";import"./message-channel-D_jXxXQj.js";import"./plugins-D5zP6ENo.js";import"./accounts-o35LU_iy.js";import"./accounts-rmXEiebi.js";import"./accounts-BLueHgKj.js";import"./bindings-DR59065T.js";import"./send-Aw8wK3vK.js";import"./send-ChGpVO3O.js";import"./paths-DJ6rztqJ.js";import"./tool-images-B7b_OiMz.js";import"./tool-display-ByOZtWvA.js";import"./fetch-guard-8mwt3-hm.js";import"./api-key-rotation-CyCi-UqR.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import"./tokens-CCU3zO-D.js";import"./project-context-store-wcq7lXuI.js";import"./with-timeout-GDLpcjW7.js";import"./deliver--6OBF3LL.js";import"./send-BxoVLIy1.js";import"./workspace-D4LK4thI.js";import"./reply-prefix-zIMgi6K6.js";import"./memory-cli-CbkWGjRn.js";import"./manager-DSz61dXv.js";import"./retry-DlVhg5qu.js";import"./client-xfoidwPI.js";import"./call-T8ciwMTA.js";import"./common-BTbIhLyt.js";import"./chunk-FCBlVOyo.js";import"./markdown-tables-P6uoUSFa.js";import"./ir-5BNoIXZm.js";import"./render-D1dVTEB1.js";import"./builderforcellm-syscheck-F5JMAr3p.js";import"./send-BP5osGBo.js";import"./outbound-attachment-C7wByQO5.js";import"./fetch-DnVtDecb.js";import"./delivery-queue-CXKynF1P.js";import"./channel-activity-CCNDbdD3.js";import"./tables-ERcoWFDp.js";import"./pairing-store-ti3FEkmr.js";import"./links-BgWWaaOT.js";import"./cli-utils-LBYKdNFb.js";import"./help-format-Qfk2vDNX.js";import"./progress-BfOtdN6b.js";import"./resolve-route-D49haUnv.js";import"./replies-DokbEfJD.js";import"./refresh-TiC_kLgE.js";import"./coding-tools.policy-ZhOdlcEI.js";import"./send-l3ge4wkC.js";import"./onboard-helpers-CiHzTaFX.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-oA-nKTaW.js";import"./session-cost-usage-BjH7mxVj.js";import"./usage-format-DGf8ZWPH.js";import"./provider-usage-B-wPVN_j.js";import"./active-listener-Dcg19lJG.js";import"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import"./project-context-CJj0Inz-.js";import"./control-service-y3GYvIBg.js";import"./stagger-8EkqkqJv.js";import"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-CoGqoBTH.js";import"./transformers-stream-D7nRu4Qu.js";import"./catalog-rgiY__UQ.js";import"./helpers-DTDCy17p.js";import"./plugin-auto-enable-D8gKiE3F.js";import"./install-safe-path-DsLq2BUJ.js";import"./npm-registry-spec-DIW6RsGN.js";import"./skill-scanner-BEvov9QH.js";import"./installs-DFiF4lGy.js";import{n as setupChannels}from"./onboard-channels-vhtccaIV.js";export{setupChannels};
@@ -1,4 +1,4 @@
1
- import{a as formatChannelSelectionLine,i as formatChannelPrimerLine,s as listChatChannels}from"./registry-Cv7CoWAs.js";import{t as createSubsystemLogger}from"./subsystem-C4b1Von0.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{n as DEFAULT_ACCOUNT_ID,u as normalizeAccountId}from"./session-key-CksCYipj.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-CufEmNj_.js";import{C as createPluginLoaderLogger,w as loadBuilderForceAgentsPlugins}from"./subagent-registry-CyGxu3kP.js";import{n as listChannelPlugins,t as getChannelPlugin}from"./plugins-1Mn6RiNf.js";import{t as formatDocsLink}from"./links-BKzP7VVP.js";import{r as listChannelPluginCatalogEntries}from"./catalog-li4bSIE2.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DPPVplyk.js";import{n as isChannelConfigured}from"./plugin-auto-enable-BV9K9Vhr.js";import{t as enablePluginInConfig}from"./enable-vNR-vlAd.js";import{n as installPluginFromNpmSpec,t as recordPluginInstall}from"./installs-CWd54ARy.js";import path from"node:path";import fs from"node:fs";function hasGitWorkspace(workspaceDir){let candidates=new Set;candidates.add(path.join(process.cwd(),`.git`)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.join(workspaceDir,`.git`));for(let candidate of candidates)if(fs.existsSync(candidate))return!0;return!1}function resolveLocalPath(entry,workspaceDir,allowLocal){if(!allowLocal)return null;let raw=entry.install.localPath?.trim();if(!raw)return null;let candidates=new Set;candidates.add(path.resolve(process.cwd(),raw)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.resolve(workspaceDir,raw));for(let candidate of candidates)if(fs.existsSync(candidate))return candidate;return null}function addPluginLoadPath(cfg,pluginPath){let existing=cfg.plugins?.load?.paths??[],merged=Array.from(new Set([...existing,pluginPath]));return{...cfg,plugins:{...cfg.plugins,load:{...cfg.plugins?.load,paths:merged}}}}async function promptInstallChoice(params){let{entry,localPath,prompter,defaultChoice}=params,localOptions=localPath?[{value:`local`,label:`Use local plugin path`,hint:localPath}]:[],options=[{value:`npm`,label:`Download from npm (${entry.install.npmSpec})`},...localOptions,{value:`skip`,label:`Skip for now`}],initialValue=defaultChoice===`local`&&!localPath?`npm`:defaultChoice;return await prompter.select({message:`Install ${entry.meta.label} plugin?`,options,initialValue})}function resolveInstallDefaultChoice(params){let{cfg,entry,localPath}=params,updateChannel=cfg.update?.channel;if(updateChannel===`dev`)return localPath?`local`:`npm`;if(updateChannel===`stable`||updateChannel===`beta`)return`npm`;let entryDefault=entry.install.defaultChoice;return entryDefault===`local`?localPath?`local`:`npm`:entryDefault===`npm`?`npm`:localPath?`local`:`npm`}async function ensureOnboardingPluginInstalled(params){let{entry,prompter,runtime,workspaceDir}=params,next=params.cfg,localPath=resolveLocalPath(entry,workspaceDir,hasGitWorkspace(workspaceDir)),choice=await promptInstallChoice({entry,localPath,defaultChoice:resolveInstallDefaultChoice({cfg:next,entry,localPath}),prompter});if(choice===`skip`)return{cfg:next,installed:!1};if(choice===`local`&&localPath)return next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0};let result=await installPluginFromNpmSpec({spec:entry.install.npmSpec,logger:{info:msg=>runtime.log?.(msg),warn:msg=>runtime.log?.(msg)}});return result.ok?(next=enablePluginInConfig(next,result.pluginId).config,next=recordPluginInstall(next,{pluginId:result.pluginId,source:`npm`,spec:entry.install.npmSpec,installPath:result.targetDir,version:result.version}),{cfg:next,installed:!0}):(await prompter.note(`Failed to install ${entry.install.npmSpec}: ${result.error}`,`Plugin install`),localPath&&await prompter.confirm({message:`Use local plugin path instead? (${localPath})`,initialValue:!0})?(next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0}):(runtime.error?.(`Plugin install failed: ${result.error}`),{cfg:next,installed:!1}))}function reloadOnboardingPluginRegistry(params){let workspaceDir=params.workspaceDir??resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg)),log=createSubsystemLogger(`plugins`);loadBuilderForceAgentsPlugins({config:params.cfg,workspaceDir,cache:!1,logger:createPluginLoaderLogger(log)})}const CHANNEL_ONBOARDING_ADAPTERS=()=>new Map(listChannelPlugins().map(plugin=>plugin.onboarding?[plugin.id,plugin.onboarding]:null).filter(entry=>!!entry));function getChannelOnboardingAdapter(channel){return CHANNEL_ONBOARDING_ADAPTERS().get(channel)}function listChannelOnboardingAdapters(){return Array.from(CHANNEL_ONBOARDING_ADAPTERS().values())}function formatAccountLabel(accountId){return accountId===DEFAULT_ACCOUNT_ID?`default (primary)`:accountId}async function promptConfiguredAction(params){let{prompter,label,supportsDisable,supportsDelete}=params,updateOption={value:`update`,label:`Modify settings`},disableOption={value:`disable`,label:`Disable (keeps config)`},deleteOption={value:`delete`,label:`Delete config`},skipOption={value:`skip`,label:`Skip (leave as-is)`},options=[updateOption,...supportsDisable?[disableOption]:[],...supportsDelete?[deleteOption]:[],skipOption];return await prompter.select({message:`${label} already configured. What do you want to do?`,options,initialValue:`update`})}async function promptRemovalAccountId(params){let{cfg,prompter,label,channel}=params,plugin=getChannelPlugin(channel);if(!plugin)return DEFAULT_ACCOUNT_ID;let accountIds=plugin.config.listAccountIds(cfg).filter(Boolean),defaultAccountId=resolveChannelDefaultAccountId({plugin,cfg,accountIds});return accountIds.length<=1?defaultAccountId:normalizeAccountId(await prompter.select({message:`${label} account`,options:accountIds.map(accountId=>({value:accountId,label:formatAccountLabel(accountId)})),initialValue:defaultAccountId}))??defaultAccountId}async function collectChannelStatus(params){let installedPlugins=listChannelPlugins(),installedIds=new Set(installedPlugins.map(plugin=>plugin.id)),catalogEntries=listChannelPluginCatalogEntries({workspaceDir:resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg))}).filter(entry=>!installedIds.has(entry.id)),statusEntries=await Promise.all(listChannelOnboardingAdapters().map(adapter=>adapter.getStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides}))),statusByChannel=new Map(statusEntries.map(entry=>[entry.channel,entry])),fallbackStatuses=listChatChannels().filter(meta=>!statusByChannel.has(meta.id)).map(meta=>{let configured=isChannelConfigured(params.cfg,meta.id),statusLabel=configured?`configured (plugin disabled)`:`not configured`;return{channel:meta.id,configured,statusLines:[`${meta.label}: ${statusLabel}`],selectionHint:configured?`configured · plugin disabled`:`not configured`,quickstartScore:0}}),catalogStatuses=catalogEntries.map(entry=>({channel:entry.id,configured:!1,statusLines:[`${entry.meta.label}: install plugin to enable`],selectionHint:`plugin · install`,quickstartScore:0})),combinedStatuses=[...statusEntries,...fallbackStatuses,...catalogStatuses];return{installedPlugins,catalogEntries,statusByChannel:new Map(combinedStatuses.map(entry=>[entry.channel,entry])),statusLines:combinedStatuses.flatMap(entry=>entry.statusLines)}}async function noteChannelStatus(params){let{statusLines}=await collectChannelStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides??{}});statusLines.length>0&&await params.prompter.note(statusLines.join(`
1
+ import{a as formatChannelSelectionLine,i as formatChannelPrimerLine,s as listChatChannels}from"./registry-Cv7CoWAs.js";import{t as createSubsystemLogger}from"./subsystem-C4b1Von0.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{n as DEFAULT_ACCOUNT_ID,u as normalizeAccountId}from"./session-key-CksCYipj.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-CufEmNj_.js";import{C as createPluginLoaderLogger,w as loadBuilderForceAgentsPlugins}from"./subagent-registry-DDEN4oJi.js";import{n as listChannelPlugins,t as getChannelPlugin}from"./plugins-1Mn6RiNf.js";import{t as formatDocsLink}from"./links-BKzP7VVP.js";import{r as listChannelPluginCatalogEntries}from"./catalog-li4bSIE2.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DPPVplyk.js";import{n as isChannelConfigured}from"./plugin-auto-enable-Cupr4wbt.js";import{t as enablePluginInConfig}from"./enable-vNR-vlAd.js";import{n as installPluginFromNpmSpec,t as recordPluginInstall}from"./installs-B_t2YXgq.js";import path from"node:path";import fs from"node:fs";function hasGitWorkspace(workspaceDir){let candidates=new Set;candidates.add(path.join(process.cwd(),`.git`)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.join(workspaceDir,`.git`));for(let candidate of candidates)if(fs.existsSync(candidate))return!0;return!1}function resolveLocalPath(entry,workspaceDir,allowLocal){if(!allowLocal)return null;let raw=entry.install.localPath?.trim();if(!raw)return null;let candidates=new Set;candidates.add(path.resolve(process.cwd(),raw)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.resolve(workspaceDir,raw));for(let candidate of candidates)if(fs.existsSync(candidate))return candidate;return null}function addPluginLoadPath(cfg,pluginPath){let existing=cfg.plugins?.load?.paths??[],merged=Array.from(new Set([...existing,pluginPath]));return{...cfg,plugins:{...cfg.plugins,load:{...cfg.plugins?.load,paths:merged}}}}async function promptInstallChoice(params){let{entry,localPath,prompter,defaultChoice}=params,localOptions=localPath?[{value:`local`,label:`Use local plugin path`,hint:localPath}]:[],options=[{value:`npm`,label:`Download from npm (${entry.install.npmSpec})`},...localOptions,{value:`skip`,label:`Skip for now`}],initialValue=defaultChoice===`local`&&!localPath?`npm`:defaultChoice;return await prompter.select({message:`Install ${entry.meta.label} plugin?`,options,initialValue})}function resolveInstallDefaultChoice(params){let{cfg,entry,localPath}=params,updateChannel=cfg.update?.channel;if(updateChannel===`dev`)return localPath?`local`:`npm`;if(updateChannel===`stable`||updateChannel===`beta`)return`npm`;let entryDefault=entry.install.defaultChoice;return entryDefault===`local`?localPath?`local`:`npm`:entryDefault===`npm`?`npm`:localPath?`local`:`npm`}async function ensureOnboardingPluginInstalled(params){let{entry,prompter,runtime,workspaceDir}=params,next=params.cfg,localPath=resolveLocalPath(entry,workspaceDir,hasGitWorkspace(workspaceDir)),choice=await promptInstallChoice({entry,localPath,defaultChoice:resolveInstallDefaultChoice({cfg:next,entry,localPath}),prompter});if(choice===`skip`)return{cfg:next,installed:!1};if(choice===`local`&&localPath)return next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0};let result=await installPluginFromNpmSpec({spec:entry.install.npmSpec,logger:{info:msg=>runtime.log?.(msg),warn:msg=>runtime.log?.(msg)}});return result.ok?(next=enablePluginInConfig(next,result.pluginId).config,next=recordPluginInstall(next,{pluginId:result.pluginId,source:`npm`,spec:entry.install.npmSpec,installPath:result.targetDir,version:result.version}),{cfg:next,installed:!0}):(await prompter.note(`Failed to install ${entry.install.npmSpec}: ${result.error}`,`Plugin install`),localPath&&await prompter.confirm({message:`Use local plugin path instead? (${localPath})`,initialValue:!0})?(next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0}):(runtime.error?.(`Plugin install failed: ${result.error}`),{cfg:next,installed:!1}))}function reloadOnboardingPluginRegistry(params){let workspaceDir=params.workspaceDir??resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg)),log=createSubsystemLogger(`plugins`);loadBuilderForceAgentsPlugins({config:params.cfg,workspaceDir,cache:!1,logger:createPluginLoaderLogger(log)})}const CHANNEL_ONBOARDING_ADAPTERS=()=>new Map(listChannelPlugins().map(plugin=>plugin.onboarding?[plugin.id,plugin.onboarding]:null).filter(entry=>!!entry));function getChannelOnboardingAdapter(channel){return CHANNEL_ONBOARDING_ADAPTERS().get(channel)}function listChannelOnboardingAdapters(){return Array.from(CHANNEL_ONBOARDING_ADAPTERS().values())}function formatAccountLabel(accountId){return accountId===DEFAULT_ACCOUNT_ID?`default (primary)`:accountId}async function promptConfiguredAction(params){let{prompter,label,supportsDisable,supportsDelete}=params,updateOption={value:`update`,label:`Modify settings`},disableOption={value:`disable`,label:`Disable (keeps config)`},deleteOption={value:`delete`,label:`Delete config`},skipOption={value:`skip`,label:`Skip (leave as-is)`},options=[updateOption,...supportsDisable?[disableOption]:[],...supportsDelete?[deleteOption]:[],skipOption];return await prompter.select({message:`${label} already configured. What do you want to do?`,options,initialValue:`update`})}async function promptRemovalAccountId(params){let{cfg,prompter,label,channel}=params,plugin=getChannelPlugin(channel);if(!plugin)return DEFAULT_ACCOUNT_ID;let accountIds=plugin.config.listAccountIds(cfg).filter(Boolean),defaultAccountId=resolveChannelDefaultAccountId({plugin,cfg,accountIds});return accountIds.length<=1?defaultAccountId:normalizeAccountId(await prompter.select({message:`${label} account`,options:accountIds.map(accountId=>({value:accountId,label:formatAccountLabel(accountId)})),initialValue:defaultAccountId}))??defaultAccountId}async function collectChannelStatus(params){let installedPlugins=listChannelPlugins(),installedIds=new Set(installedPlugins.map(plugin=>plugin.id)),catalogEntries=listChannelPluginCatalogEntries({workspaceDir:resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg))}).filter(entry=>!installedIds.has(entry.id)),statusEntries=await Promise.all(listChannelOnboardingAdapters().map(adapter=>adapter.getStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides}))),statusByChannel=new Map(statusEntries.map(entry=>[entry.channel,entry])),fallbackStatuses=listChatChannels().filter(meta=>!statusByChannel.has(meta.id)).map(meta=>{let configured=isChannelConfigured(params.cfg,meta.id),statusLabel=configured?`configured (plugin disabled)`:`not configured`;return{channel:meta.id,configured,statusLines:[`${meta.label}: ${statusLabel}`],selectionHint:configured?`configured · plugin disabled`:`not configured`,quickstartScore:0}}),catalogStatuses=catalogEntries.map(entry=>({channel:entry.id,configured:!1,statusLines:[`${entry.meta.label}: install plugin to enable`],selectionHint:`plugin · install`,quickstartScore:0})),combinedStatuses=[...statusEntries,...fallbackStatuses,...catalogStatuses];return{installedPlugins,catalogEntries,statusByChannel:new Map(combinedStatuses.map(entry=>[entry.channel,entry])),statusLines:combinedStatuses.flatMap(entry=>entry.statusLines)}}async function noteChannelStatus(params){let{statusLines}=await collectChannelStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides??{}});statusLines.length>0&&await params.prompter.note(statusLines.join(`
2
2
  `),`Channel status`)}async function noteChannelPrimer(prompter,channels){let channelLines=channels.map(channel=>formatChannelPrimerLine({id:channel.id,label:channel.label,selectionLabel:channel.label,docsPath:`/`,blurb:channel.blurb}));await prompter.note([`DM security: default is pairing; unknown DMs get a pairing code.`,`Approve with: ${formatCliCommand(`builderforce pairing approve <channel> <code>`)}`,`Public DMs require dmPolicy="open" + allowFrom=["*"].`,`Multi-user DMs: run: `+formatCliCommand(`builderforce config set session.dmScope "per-channel-peer"`)+` (or "per-account-channel-peer" for multi-account channels) to isolate sessions.`,`Docs: ${formatDocsLink(`/start/pairing`,`start/pairing`)}`,``,...channelLines].join(`
3
3
  `),`How channels work`)}function resolveQuickstartDefault(statusByChannel){let best=null;for(let[channel,status]of statusByChannel)status.quickstartScore!=null&&(!best||status.quickstartScore>best.score)&&(best={channel,score:status.quickstartScore});return best?.channel}async function maybeConfigureDmPolicies(params){let{selection,prompter,accountIdsByChannel}=params,dmPolicies=selection.map(channel=>getChannelOnboardingAdapter(channel)?.dmPolicy).filter(Boolean);if(dmPolicies.length===0||!await prompter.confirm({message:`Configure DM access policies now? (default: pairing)`,initialValue:!1}))return params.cfg;let cfg=params.cfg,selectPolicy=async policy=>(await prompter.note([`Default: pairing (unknown DMs get a pairing code).`,`Approve: ${formatCliCommand(`builderforce pairing approve ${policy.channel} <code>`)}`,`Allowlist DMs: ${policy.policyKey}="allowlist" + ${policy.allowFromKey} entries.`,`Public DMs: ${policy.policyKey}="open" + ${policy.allowFromKey} includes "*".`,`Multi-user DMs: run: `+formatCliCommand(`builderforce config set session.dmScope "per-channel-peer"`)+` (or "per-account-channel-peer" for multi-account channels) to isolate sessions.`,`Docs: ${formatDocsLink(`/start/pairing`,`start/pairing`)}`].join(`
4
4
  `),`${policy.label} DM access`),await prompter.select({message:`${policy.label} DM policy`,options:[{value:`pairing`,label:`Pairing (recommended)`},{value:`allowlist`,label:`Allowlist (specific users only)`},{value:`open`,label:`Open (public inbound DMs)`},{value:`disabled`,label:`Disabled (ignore DMs)`}]}));for(let policy of dmPolicies){let current=policy.getCurrent(cfg),nextPolicy=await selectPolicy(policy);nextPolicy!==current&&(cfg=policy.setPolicy(cfg,nextPolicy)),nextPolicy===`allowlist`&&policy.promptAllowFrom&&(cfg=await policy.promptAllowFrom({cfg,prompter,accountId:accountIdsByChannel?.get(policy.channel)}))}return cfg}async function setupChannels(cfg,runtime,prompter,options){let next=cfg,forceAllowFromChannels=new Set(options?.forceAllowFromChannels??[]),accountOverrides={...options?.accountIds};options?.whatsappAccountId?.trim()&&(accountOverrides.whatsapp=options.whatsappAccountId.trim());let{installedPlugins,catalogEntries,statusByChannel,statusLines}=await collectChannelStatus({cfg:next,options,accountOverrides});if(!options?.skipStatusNote&&statusLines.length>0&&await prompter.note(statusLines.join(`
@@ -1,4 +1,4 @@
1
- import{Mt as loadBuilderForceAgentsPlugins,jt as createPluginLoaderLogger}from"./reply-Cd3vVnD7.js";import{n as DEFAULT_ACCOUNT_ID,u as normalizeAccountId}from"./session-key-EoB0qaG9.js";import{t as createSubsystemLogger}from"./subsystem-B3TqcCrZ.js";import{a as formatChannelSelectionLine,i as formatChannelPrimerLine,s as listChatChannels}from"./registry-TdK-aV05.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-DPtjOxzp.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{n as listChannelPlugins,t as getChannelPlugin}from"./plugins-D5zP6ENo.js";import{t as formatDocsLink}from"./links-BgWWaaOT.js";import{r as listChannelPluginCatalogEntries}from"./catalog-rgiY__UQ.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DTDCy17p.js";import{n as isChannelConfigured}from"./plugin-auto-enable-DDry2fA6.js";import{t as enablePluginInConfig}from"./enable-Dm2hiZTt.js";import{n as installPluginFromNpmSpec,t as recordPluginInstall}from"./installs-C9A8QFiF.js";import fs from"node:fs";import path from"node:path";function hasGitWorkspace(workspaceDir){let candidates=new Set;candidates.add(path.join(process.cwd(),`.git`)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.join(workspaceDir,`.git`));for(let candidate of candidates)if(fs.existsSync(candidate))return!0;return!1}function resolveLocalPath(entry,workspaceDir,allowLocal){if(!allowLocal)return null;let raw=entry.install.localPath?.trim();if(!raw)return null;let candidates=new Set;candidates.add(path.resolve(process.cwd(),raw)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.resolve(workspaceDir,raw));for(let candidate of candidates)if(fs.existsSync(candidate))return candidate;return null}function addPluginLoadPath(cfg,pluginPath){let existing=cfg.plugins?.load?.paths??[],merged=Array.from(new Set([...existing,pluginPath]));return{...cfg,plugins:{...cfg.plugins,load:{...cfg.plugins?.load,paths:merged}}}}async function promptInstallChoice(params){let{entry,localPath,prompter,defaultChoice}=params,localOptions=localPath?[{value:`local`,label:`Use local plugin path`,hint:localPath}]:[],options=[{value:`npm`,label:`Download from npm (${entry.install.npmSpec})`},...localOptions,{value:`skip`,label:`Skip for now`}],initialValue=defaultChoice===`local`&&!localPath?`npm`:defaultChoice;return await prompter.select({message:`Install ${entry.meta.label} plugin?`,options,initialValue})}function resolveInstallDefaultChoice(params){let{cfg,entry,localPath}=params,updateChannel=cfg.update?.channel;if(updateChannel===`dev`)return localPath?`local`:`npm`;if(updateChannel===`stable`||updateChannel===`beta`)return`npm`;let entryDefault=entry.install.defaultChoice;return entryDefault===`local`?localPath?`local`:`npm`:entryDefault===`npm`?`npm`:localPath?`local`:`npm`}async function ensureOnboardingPluginInstalled(params){let{entry,prompter,runtime,workspaceDir}=params,next=params.cfg,localPath=resolveLocalPath(entry,workspaceDir,hasGitWorkspace(workspaceDir)),choice=await promptInstallChoice({entry,localPath,defaultChoice:resolveInstallDefaultChoice({cfg:next,entry,localPath}),prompter});if(choice===`skip`)return{cfg:next,installed:!1};if(choice===`local`&&localPath)return next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0};let result=await installPluginFromNpmSpec({spec:entry.install.npmSpec,logger:{info:msg=>runtime.log?.(msg),warn:msg=>runtime.log?.(msg)}});return result.ok?(next=enablePluginInConfig(next,result.pluginId).config,next=recordPluginInstall(next,{pluginId:result.pluginId,source:`npm`,spec:entry.install.npmSpec,installPath:result.targetDir,version:result.version}),{cfg:next,installed:!0}):(await prompter.note(`Failed to install ${entry.install.npmSpec}: ${result.error}`,`Plugin install`),localPath&&await prompter.confirm({message:`Use local plugin path instead? (${localPath})`,initialValue:!0})?(next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0}):(runtime.error?.(`Plugin install failed: ${result.error}`),{cfg:next,installed:!1}))}function reloadOnboardingPluginRegistry(params){let workspaceDir=params.workspaceDir??resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg)),log=createSubsystemLogger(`plugins`);loadBuilderForceAgentsPlugins({config:params.cfg,workspaceDir,cache:!1,logger:createPluginLoaderLogger(log)})}const CHANNEL_ONBOARDING_ADAPTERS=()=>new Map(listChannelPlugins().map(plugin=>plugin.onboarding?[plugin.id,plugin.onboarding]:null).filter(entry=>!!entry));function getChannelOnboardingAdapter(channel){return CHANNEL_ONBOARDING_ADAPTERS().get(channel)}function listChannelOnboardingAdapters(){return Array.from(CHANNEL_ONBOARDING_ADAPTERS().values())}function formatAccountLabel(accountId){return accountId===DEFAULT_ACCOUNT_ID?`default (primary)`:accountId}async function promptConfiguredAction(params){let{prompter,label,supportsDisable,supportsDelete}=params,updateOption={value:`update`,label:`Modify settings`},disableOption={value:`disable`,label:`Disable (keeps config)`},deleteOption={value:`delete`,label:`Delete config`},skipOption={value:`skip`,label:`Skip (leave as-is)`},options=[updateOption,...supportsDisable?[disableOption]:[],...supportsDelete?[deleteOption]:[],skipOption];return await prompter.select({message:`${label} already configured. What do you want to do?`,options,initialValue:`update`})}async function promptRemovalAccountId(params){let{cfg,prompter,label,channel}=params,plugin=getChannelPlugin(channel);if(!plugin)return DEFAULT_ACCOUNT_ID;let accountIds=plugin.config.listAccountIds(cfg).filter(Boolean),defaultAccountId=resolveChannelDefaultAccountId({plugin,cfg,accountIds});return accountIds.length<=1?defaultAccountId:normalizeAccountId(await prompter.select({message:`${label} account`,options:accountIds.map(accountId=>({value:accountId,label:formatAccountLabel(accountId)})),initialValue:defaultAccountId}))??defaultAccountId}async function collectChannelStatus(params){let installedPlugins=listChannelPlugins(),installedIds=new Set(installedPlugins.map(plugin=>plugin.id)),catalogEntries=listChannelPluginCatalogEntries({workspaceDir:resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg))}).filter(entry=>!installedIds.has(entry.id)),statusEntries=await Promise.all(listChannelOnboardingAdapters().map(adapter=>adapter.getStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides}))),statusByChannel=new Map(statusEntries.map(entry=>[entry.channel,entry])),fallbackStatuses=listChatChannels().filter(meta=>!statusByChannel.has(meta.id)).map(meta=>{let configured=isChannelConfigured(params.cfg,meta.id),statusLabel=configured?`configured (plugin disabled)`:`not configured`;return{channel:meta.id,configured,statusLines:[`${meta.label}: ${statusLabel}`],selectionHint:configured?`configured · plugin disabled`:`not configured`,quickstartScore:0}}),catalogStatuses=catalogEntries.map(entry=>({channel:entry.id,configured:!1,statusLines:[`${entry.meta.label}: install plugin to enable`],selectionHint:`plugin · install`,quickstartScore:0})),combinedStatuses=[...statusEntries,...fallbackStatuses,...catalogStatuses];return{installedPlugins,catalogEntries,statusByChannel:new Map(combinedStatuses.map(entry=>[entry.channel,entry])),statusLines:combinedStatuses.flatMap(entry=>entry.statusLines)}}async function noteChannelStatus(params){let{statusLines}=await collectChannelStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides??{}});statusLines.length>0&&await params.prompter.note(statusLines.join(`
1
+ import{Mt as loadBuilderForceAgentsPlugins,jt as createPluginLoaderLogger}from"./reply-GY1C8tcv.js";import{n as DEFAULT_ACCOUNT_ID,u as normalizeAccountId}from"./session-key-EoB0qaG9.js";import{t as createSubsystemLogger}from"./subsystem-B3TqcCrZ.js";import{a as formatChannelSelectionLine,i as formatChannelPrimerLine,s as listChatChannels}from"./registry-TdK-aV05.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-DPtjOxzp.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{n as listChannelPlugins,t as getChannelPlugin}from"./plugins-D5zP6ENo.js";import{t as formatDocsLink}from"./links-BgWWaaOT.js";import{r as listChannelPluginCatalogEntries}from"./catalog-rgiY__UQ.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DTDCy17p.js";import{n as isChannelConfigured}from"./plugin-auto-enable-D8gKiE3F.js";import{t as enablePluginInConfig}from"./enable-Dm2hiZTt.js";import{n as installPluginFromNpmSpec,t as recordPluginInstall}from"./installs-DFiF4lGy.js";import fs from"node:fs";import path from"node:path";function hasGitWorkspace(workspaceDir){let candidates=new Set;candidates.add(path.join(process.cwd(),`.git`)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.join(workspaceDir,`.git`));for(let candidate of candidates)if(fs.existsSync(candidate))return!0;return!1}function resolveLocalPath(entry,workspaceDir,allowLocal){if(!allowLocal)return null;let raw=entry.install.localPath?.trim();if(!raw)return null;let candidates=new Set;candidates.add(path.resolve(process.cwd(),raw)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.resolve(workspaceDir,raw));for(let candidate of candidates)if(fs.existsSync(candidate))return candidate;return null}function addPluginLoadPath(cfg,pluginPath){let existing=cfg.plugins?.load?.paths??[],merged=Array.from(new Set([...existing,pluginPath]));return{...cfg,plugins:{...cfg.plugins,load:{...cfg.plugins?.load,paths:merged}}}}async function promptInstallChoice(params){let{entry,localPath,prompter,defaultChoice}=params,localOptions=localPath?[{value:`local`,label:`Use local plugin path`,hint:localPath}]:[],options=[{value:`npm`,label:`Download from npm (${entry.install.npmSpec})`},...localOptions,{value:`skip`,label:`Skip for now`}],initialValue=defaultChoice===`local`&&!localPath?`npm`:defaultChoice;return await prompter.select({message:`Install ${entry.meta.label} plugin?`,options,initialValue})}function resolveInstallDefaultChoice(params){let{cfg,entry,localPath}=params,updateChannel=cfg.update?.channel;if(updateChannel===`dev`)return localPath?`local`:`npm`;if(updateChannel===`stable`||updateChannel===`beta`)return`npm`;let entryDefault=entry.install.defaultChoice;return entryDefault===`local`?localPath?`local`:`npm`:entryDefault===`npm`?`npm`:localPath?`local`:`npm`}async function ensureOnboardingPluginInstalled(params){let{entry,prompter,runtime,workspaceDir}=params,next=params.cfg,localPath=resolveLocalPath(entry,workspaceDir,hasGitWorkspace(workspaceDir)),choice=await promptInstallChoice({entry,localPath,defaultChoice:resolveInstallDefaultChoice({cfg:next,entry,localPath}),prompter});if(choice===`skip`)return{cfg:next,installed:!1};if(choice===`local`&&localPath)return next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0};let result=await installPluginFromNpmSpec({spec:entry.install.npmSpec,logger:{info:msg=>runtime.log?.(msg),warn:msg=>runtime.log?.(msg)}});return result.ok?(next=enablePluginInConfig(next,result.pluginId).config,next=recordPluginInstall(next,{pluginId:result.pluginId,source:`npm`,spec:entry.install.npmSpec,installPath:result.targetDir,version:result.version}),{cfg:next,installed:!0}):(await prompter.note(`Failed to install ${entry.install.npmSpec}: ${result.error}`,`Plugin install`),localPath&&await prompter.confirm({message:`Use local plugin path instead? (${localPath})`,initialValue:!0})?(next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0}):(runtime.error?.(`Plugin install failed: ${result.error}`),{cfg:next,installed:!1}))}function reloadOnboardingPluginRegistry(params){let workspaceDir=params.workspaceDir??resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg)),log=createSubsystemLogger(`plugins`);loadBuilderForceAgentsPlugins({config:params.cfg,workspaceDir,cache:!1,logger:createPluginLoaderLogger(log)})}const CHANNEL_ONBOARDING_ADAPTERS=()=>new Map(listChannelPlugins().map(plugin=>plugin.onboarding?[plugin.id,plugin.onboarding]:null).filter(entry=>!!entry));function getChannelOnboardingAdapter(channel){return CHANNEL_ONBOARDING_ADAPTERS().get(channel)}function listChannelOnboardingAdapters(){return Array.from(CHANNEL_ONBOARDING_ADAPTERS().values())}function formatAccountLabel(accountId){return accountId===DEFAULT_ACCOUNT_ID?`default (primary)`:accountId}async function promptConfiguredAction(params){let{prompter,label,supportsDisable,supportsDelete}=params,updateOption={value:`update`,label:`Modify settings`},disableOption={value:`disable`,label:`Disable (keeps config)`},deleteOption={value:`delete`,label:`Delete config`},skipOption={value:`skip`,label:`Skip (leave as-is)`},options=[updateOption,...supportsDisable?[disableOption]:[],...supportsDelete?[deleteOption]:[],skipOption];return await prompter.select({message:`${label} already configured. What do you want to do?`,options,initialValue:`update`})}async function promptRemovalAccountId(params){let{cfg,prompter,label,channel}=params,plugin=getChannelPlugin(channel);if(!plugin)return DEFAULT_ACCOUNT_ID;let accountIds=plugin.config.listAccountIds(cfg).filter(Boolean),defaultAccountId=resolveChannelDefaultAccountId({plugin,cfg,accountIds});return accountIds.length<=1?defaultAccountId:normalizeAccountId(await prompter.select({message:`${label} account`,options:accountIds.map(accountId=>({value:accountId,label:formatAccountLabel(accountId)})),initialValue:defaultAccountId}))??defaultAccountId}async function collectChannelStatus(params){let installedPlugins=listChannelPlugins(),installedIds=new Set(installedPlugins.map(plugin=>plugin.id)),catalogEntries=listChannelPluginCatalogEntries({workspaceDir:resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg))}).filter(entry=>!installedIds.has(entry.id)),statusEntries=await Promise.all(listChannelOnboardingAdapters().map(adapter=>adapter.getStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides}))),statusByChannel=new Map(statusEntries.map(entry=>[entry.channel,entry])),fallbackStatuses=listChatChannels().filter(meta=>!statusByChannel.has(meta.id)).map(meta=>{let configured=isChannelConfigured(params.cfg,meta.id),statusLabel=configured?`configured (plugin disabled)`:`not configured`;return{channel:meta.id,configured,statusLines:[`${meta.label}: ${statusLabel}`],selectionHint:configured?`configured · plugin disabled`:`not configured`,quickstartScore:0}}),catalogStatuses=catalogEntries.map(entry=>({channel:entry.id,configured:!1,statusLines:[`${entry.meta.label}: install plugin to enable`],selectionHint:`plugin · install`,quickstartScore:0})),combinedStatuses=[...statusEntries,...fallbackStatuses,...catalogStatuses];return{installedPlugins,catalogEntries,statusByChannel:new Map(combinedStatuses.map(entry=>[entry.channel,entry])),statusLines:combinedStatuses.flatMap(entry=>entry.statusLines)}}async function noteChannelStatus(params){let{statusLines}=await collectChannelStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides??{}});statusLines.length>0&&await params.prompter.note(statusLines.join(`
2
2
  `),`Channel status`)}async function noteChannelPrimer(prompter,channels){let channelLines=channels.map(channel=>formatChannelPrimerLine({id:channel.id,label:channel.label,selectionLabel:channel.label,docsPath:`/`,blurb:channel.blurb}));await prompter.note([`DM security: default is pairing; unknown DMs get a pairing code.`,`Approve with: ${formatCliCommand(`builderforce pairing approve <channel> <code>`)}`,`Public DMs require dmPolicy="open" + allowFrom=["*"].`,`Multi-user DMs: run: `+formatCliCommand(`builderforce config set session.dmScope "per-channel-peer"`)+` (or "per-account-channel-peer" for multi-account channels) to isolate sessions.`,`Docs: ${formatDocsLink(`/start/pairing`,`start/pairing`)}`,``,...channelLines].join(`
3
3
  `),`How channels work`)}function resolveQuickstartDefault(statusByChannel){let best=null;for(let[channel,status]of statusByChannel)status.quickstartScore!=null&&(!best||status.quickstartScore>best.score)&&(best={channel,score:status.quickstartScore});return best?.channel}async function maybeConfigureDmPolicies(params){let{selection,prompter,accountIdsByChannel}=params,dmPolicies=selection.map(channel=>getChannelOnboardingAdapter(channel)?.dmPolicy).filter(Boolean);if(dmPolicies.length===0||!await prompter.confirm({message:`Configure DM access policies now? (default: pairing)`,initialValue:!1}))return params.cfg;let cfg=params.cfg,selectPolicy=async policy=>(await prompter.note([`Default: pairing (unknown DMs get a pairing code).`,`Approve: ${formatCliCommand(`builderforce pairing approve ${policy.channel} <code>`)}`,`Allowlist DMs: ${policy.policyKey}="allowlist" + ${policy.allowFromKey} entries.`,`Public DMs: ${policy.policyKey}="open" + ${policy.allowFromKey} includes "*".`,`Multi-user DMs: run: `+formatCliCommand(`builderforce config set session.dmScope "per-channel-peer"`)+` (or "per-account-channel-peer" for multi-account channels) to isolate sessions.`,`Docs: ${formatDocsLink(`/start/pairing`,`start/pairing`)}`].join(`
4
4
  `),`${policy.label} DM access`),await prompter.select({message:`${policy.label} DM policy`,options:[{value:`pairing`,label:`Pairing (recommended)`},{value:`allowlist`,label:`Allowlist (specific users only)`},{value:`open`,label:`Open (public inbound DMs)`},{value:`disabled`,label:`Disabled (ignore DMs)`}]}));for(let policy of dmPolicies){let current=policy.getCurrent(cfg),nextPolicy=await selectPolicy(policy);nextPolicy!==current&&(cfg=policy.setPolicy(cfg,nextPolicy)),nextPolicy===`allowlist`&&policy.promptAllowFrom&&(cfg=await policy.promptAllowFrom({cfg,prompter,accountId:accountIdsByChannel?.get(policy.channel)}))}return cfg}async function setupChannels(cfg,runtime,prompter,options){let next=cfg,forceAllowFromChannels=new Set(options?.forceAllowFromChannels??[]),accountOverrides={...options?.accountIds};options?.whatsappAccountId?.trim()&&(accountOverrides.whatsapp=options.whatsappAccountId.trim());let{installedPlugins,catalogEntries,statusByChannel,statusLines}=await collectChannelStatus({cfg:next,options,accountOverrides});if(!options?.skipStatusNote&&statusLines.length>0&&await prompter.note(statusLines.join(`
@@ -0,0 +1 @@
1
+ import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./auth-profiles-pt7Tr4HA.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"./io-D9hC2aG0.js";import"./manifest-registry-009gLJ4l.js";import"./config-BpChMIJ6.js";import"./model-discovery-D0i1JpiL.js";import"./model-catalog-BeBXvbFm.js";import"./shared-BBOiNdjf.js";import"./model-picker-CGDNPRPc.js";import{i as promptCustomApiConfig}from"./onboard-custom-BYIza2e7.js";export{promptCustomApiConfig};
@@ -1,2 +1,2 @@
1
- import{F as modelKey,_n as DEFAULT_PROVIDER,j as buildModelAliasIndex}from"./auth-profiles-C1VbcUOm.js";import{n as fetchWithTimeout}from"./fetch-timeout-Cb8Yj9Tw.js";import{c as normalizeAlias}from"./shared-xj-xaKFi.js";import{r as applyPrimaryModel}from"./model-picker-swoSwauV.js";function isAzureUrl(baseUrl){try{let host=new URL(baseUrl).hostname.toLowerCase();return host.endsWith(`.services.ai.azure.com`)||host.endsWith(`.openai.azure.com`)}catch{return!1}}function transformAzureUrl(baseUrl,modelId){let normalizedUrl=baseUrl.endsWith(`/`)?baseUrl.slice(0,-1):baseUrl;return normalizedUrl.includes(`/openai/deployments/`)?normalizedUrl:`${normalizedUrl}/openai/deployments/${modelId}`}var CustomApiError=class extends Error{constructor(code,message){super(message),this.name=`CustomApiError`,this.code=code}};const COMPATIBILITY_OPTIONS=[{value:`openai`,label:`OpenAI-compatible`,hint:`Uses /chat/completions`},{value:`anthropic`,label:`Anthropic-compatible`,hint:`Uses /messages`},{value:`unknown`,label:`Unknown (detect automatically)`,hint:`Probes OpenAI then Anthropic endpoints`}];function normalizeEndpointId(raw){let trimmed=raw.trim().toLowerCase();return trimmed?trimmed.replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``):``}function buildEndpointIdFromUrl(baseUrl){try{let url=new URL(baseUrl);return normalizeEndpointId(`custom-${url.hostname.replace(/[^a-z0-9]+/gi,`-`).toLowerCase()}${url.port?`-${url.port}`:``}`)||`custom`}catch{return`custom`}}function resolveUniqueEndpointId(params){let normalized=normalizeEndpointId(params.requestedId)||`custom`,existing=params.providers[normalized];if(!existing?.baseUrl||existing.baseUrl===params.baseUrl)return{providerId:normalized,renamed:!1};let suffix=2,candidate=`${normalized}-${suffix}`;for(;params.providers[candidate];)suffix+=1,candidate=`${normalized}-${suffix}`;return{providerId:candidate,renamed:!0}}function resolveAliasError(params){let trimmed=params.raw.trim();if(!trimmed)return;let normalized;try{normalized=normalizeAlias(trimmed)}catch(err){return err instanceof Error?err.message:`Alias is invalid.`}let aliasIndex=buildModelAliasIndex({cfg:params.cfg,defaultProvider:DEFAULT_PROVIDER}),aliasKey=normalized.toLowerCase(),existing=aliasIndex.byAlias.get(aliasKey);if(!existing)return;let existingKey=modelKey(existing.ref.provider,existing.ref.model);if(existingKey!==params.modelRef)return`Alias ${normalized} already points to ${existingKey}.`}function buildOpenAiHeaders(apiKey){let headers={};return apiKey&&(headers.Authorization=`Bearer ${apiKey}`),headers}function buildAnthropicHeaders(apiKey){let headers={"anthropic-version":`2023-06-01`};return apiKey&&(headers[`x-api-key`]=apiKey),headers}function formatVerificationError(error){if(!error)return`unknown error`;if(error instanceof Error)return error.message;if(typeof error==`string`)return error;try{return JSON.stringify(error)}catch{return`unknown error`}}function resolveVerificationEndpoint(params){let resolvedUrl=isAzureUrl(params.baseUrl)?transformAzureUrl(params.baseUrl,params.modelId):params.baseUrl,endpointUrl=new URL(params.endpointPath,resolvedUrl.endsWith(`/`)?resolvedUrl:`${resolvedUrl}/`);return isAzureUrl(params.baseUrl)&&endpointUrl.searchParams.set(`api-version`,`2024-10-21`),endpointUrl.href}async function requestVerification(params){try{let res=await fetchWithTimeout(params.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`,...params.headers},body:JSON.stringify(params.body)},1e4);return{ok:res.ok,status:res.status}}catch(error){return{ok:!1,error}}}async function requestOpenAiVerification(params){return await requestVerification({endpoint:resolveVerificationEndpoint({baseUrl:params.baseUrl,modelId:params.modelId,endpointPath:`chat/completions`}),headers:buildOpenAiHeaders(params.apiKey),body:{model:params.modelId,messages:[{role:`user`,content:`Hi`}],max_tokens:5}})}async function requestAnthropicVerification(params){return await requestVerification({endpoint:resolveVerificationEndpoint({baseUrl:params.baseUrl,modelId:params.modelId,endpointPath:`messages`}),headers:buildAnthropicHeaders(params.apiKey),body:{model:params.modelId,max_tokens:16,messages:[{role:`user`,content:`Hi`}]}})}async function promptBaseUrlAndKey(params){let baseUrlInput=await params.prompter.text({message:`API Base URL`,initialValue:params.initialBaseUrl??`http://127.0.0.1:11434/v1`,placeholder:`https://api.example.com/v1`,validate:val=>{try{new URL(val);return}catch{return`Please enter a valid URL (e.g. http://...)`}}}),apiKeyInput=await params.prompter.text({message:`API Key (leave blank if not required)`,placeholder:`sk-...`,initialValue:``});return{baseUrl:baseUrlInput.trim(),apiKey:apiKeyInput.trim()}}async function promptCustomApiRetryChoice(prompter){return await prompter.select({message:`What would you like to change?`,options:[{value:`baseUrl`,label:`Change base URL`},{value:`model`,label:`Change model`},{value:`both`,label:`Change base URL and model`}]})}async function promptCustomApiModelId(prompter){return(await prompter.text({message:`Model ID`,placeholder:`e.g. llama3, claude-3-7-sonnet`,validate:val=>val.trim()?void 0:`Model ID is required`})).trim()}function resolveProviderApi(compatibility){return compatibility===`anthropic`?`anthropic-messages`:`openai-completions`}function parseCustomApiCompatibility(raw){let compatibilityRaw=raw?.trim().toLowerCase();if(!compatibilityRaw)return`openai`;if(compatibilityRaw!==`openai`&&compatibilityRaw!==`anthropic`)throw new CustomApiError(`invalid_compatibility`,`Invalid --custom-compatibility (use "openai" or "anthropic").`);return compatibilityRaw}function resolveCustomProviderId(params){let providers=params.config.models?.providers??{},baseUrl=params.baseUrl.trim(),explicitProviderId=params.providerId?.trim();if(explicitProviderId&&!normalizeEndpointId(explicitProviderId))throw new CustomApiError(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);let requestedProviderId=explicitProviderId||buildEndpointIdFromUrl(baseUrl),providerIdResult=resolveUniqueEndpointId({requestedId:requestedProviderId,baseUrl,providers});return{providerId:providerIdResult.providerId,...providerIdResult.renamed?{providerIdRenamedFrom:normalizeEndpointId(requestedProviderId)||`custom`}:{}}}function parseNonInteractiveCustomApiFlags(params){let baseUrl=params.baseUrl?.trim()??``,modelId=params.modelId?.trim()??``;if(!baseUrl||!modelId)throw new CustomApiError(`missing_required`,[`Auth choice "custom-api-key" requires a base URL and model ID.`,`Use --custom-base-url and --custom-model-id.`].join(`
1
+ import{F as modelKey,_n as DEFAULT_PROVIDER,j as buildModelAliasIndex}from"./auth-profiles-pt7Tr4HA.js";import{n as fetchWithTimeout}from"./fetch-timeout-Cb8Yj9Tw.js";import{c as normalizeAlias}from"./shared-BBOiNdjf.js";import{r as applyPrimaryModel}from"./model-picker-CGDNPRPc.js";function isAzureUrl(baseUrl){try{let host=new URL(baseUrl).hostname.toLowerCase();return host.endsWith(`.services.ai.azure.com`)||host.endsWith(`.openai.azure.com`)}catch{return!1}}function transformAzureUrl(baseUrl,modelId){let normalizedUrl=baseUrl.endsWith(`/`)?baseUrl.slice(0,-1):baseUrl;return normalizedUrl.includes(`/openai/deployments/`)?normalizedUrl:`${normalizedUrl}/openai/deployments/${modelId}`}var CustomApiError=class extends Error{constructor(code,message){super(message),this.name=`CustomApiError`,this.code=code}};const COMPATIBILITY_OPTIONS=[{value:`openai`,label:`OpenAI-compatible`,hint:`Uses /chat/completions`},{value:`anthropic`,label:`Anthropic-compatible`,hint:`Uses /messages`},{value:`unknown`,label:`Unknown (detect automatically)`,hint:`Probes OpenAI then Anthropic endpoints`}];function normalizeEndpointId(raw){let trimmed=raw.trim().toLowerCase();return trimmed?trimmed.replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``):``}function buildEndpointIdFromUrl(baseUrl){try{let url=new URL(baseUrl);return normalizeEndpointId(`custom-${url.hostname.replace(/[^a-z0-9]+/gi,`-`).toLowerCase()}${url.port?`-${url.port}`:``}`)||`custom`}catch{return`custom`}}function resolveUniqueEndpointId(params){let normalized=normalizeEndpointId(params.requestedId)||`custom`,existing=params.providers[normalized];if(!existing?.baseUrl||existing.baseUrl===params.baseUrl)return{providerId:normalized,renamed:!1};let suffix=2,candidate=`${normalized}-${suffix}`;for(;params.providers[candidate];)suffix+=1,candidate=`${normalized}-${suffix}`;return{providerId:candidate,renamed:!0}}function resolveAliasError(params){let trimmed=params.raw.trim();if(!trimmed)return;let normalized;try{normalized=normalizeAlias(trimmed)}catch(err){return err instanceof Error?err.message:`Alias is invalid.`}let aliasIndex=buildModelAliasIndex({cfg:params.cfg,defaultProvider:DEFAULT_PROVIDER}),aliasKey=normalized.toLowerCase(),existing=aliasIndex.byAlias.get(aliasKey);if(!existing)return;let existingKey=modelKey(existing.ref.provider,existing.ref.model);if(existingKey!==params.modelRef)return`Alias ${normalized} already points to ${existingKey}.`}function buildOpenAiHeaders(apiKey){let headers={};return apiKey&&(headers.Authorization=`Bearer ${apiKey}`),headers}function buildAnthropicHeaders(apiKey){let headers={"anthropic-version":`2023-06-01`};return apiKey&&(headers[`x-api-key`]=apiKey),headers}function formatVerificationError(error){if(!error)return`unknown error`;if(error instanceof Error)return error.message;if(typeof error==`string`)return error;try{return JSON.stringify(error)}catch{return`unknown error`}}function resolveVerificationEndpoint(params){let resolvedUrl=isAzureUrl(params.baseUrl)?transformAzureUrl(params.baseUrl,params.modelId):params.baseUrl,endpointUrl=new URL(params.endpointPath,resolvedUrl.endsWith(`/`)?resolvedUrl:`${resolvedUrl}/`);return isAzureUrl(params.baseUrl)&&endpointUrl.searchParams.set(`api-version`,`2024-10-21`),endpointUrl.href}async function requestVerification(params){try{let res=await fetchWithTimeout(params.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`,...params.headers},body:JSON.stringify(params.body)},1e4);return{ok:res.ok,status:res.status}}catch(error){return{ok:!1,error}}}async function requestOpenAiVerification(params){return await requestVerification({endpoint:resolveVerificationEndpoint({baseUrl:params.baseUrl,modelId:params.modelId,endpointPath:`chat/completions`}),headers:buildOpenAiHeaders(params.apiKey),body:{model:params.modelId,messages:[{role:`user`,content:`Hi`}],max_tokens:5}})}async function requestAnthropicVerification(params){return await requestVerification({endpoint:resolveVerificationEndpoint({baseUrl:params.baseUrl,modelId:params.modelId,endpointPath:`messages`}),headers:buildAnthropicHeaders(params.apiKey),body:{model:params.modelId,max_tokens:16,messages:[{role:`user`,content:`Hi`}]}})}async function promptBaseUrlAndKey(params){let baseUrlInput=await params.prompter.text({message:`API Base URL`,initialValue:params.initialBaseUrl??`http://127.0.0.1:11434/v1`,placeholder:`https://api.example.com/v1`,validate:val=>{try{new URL(val);return}catch{return`Please enter a valid URL (e.g. http://...)`}}}),apiKeyInput=await params.prompter.text({message:`API Key (leave blank if not required)`,placeholder:`sk-...`,initialValue:``});return{baseUrl:baseUrlInput.trim(),apiKey:apiKeyInput.trim()}}async function promptCustomApiRetryChoice(prompter){return await prompter.select({message:`What would you like to change?`,options:[{value:`baseUrl`,label:`Change base URL`},{value:`model`,label:`Change model`},{value:`both`,label:`Change base URL and model`}]})}async function promptCustomApiModelId(prompter){return(await prompter.text({message:`Model ID`,placeholder:`e.g. llama3, claude-3-7-sonnet`,validate:val=>val.trim()?void 0:`Model ID is required`})).trim()}function resolveProviderApi(compatibility){return compatibility===`anthropic`?`anthropic-messages`:`openai-completions`}function parseCustomApiCompatibility(raw){let compatibilityRaw=raw?.trim().toLowerCase();if(!compatibilityRaw)return`openai`;if(compatibilityRaw!==`openai`&&compatibilityRaw!==`anthropic`)throw new CustomApiError(`invalid_compatibility`,`Invalid --custom-compatibility (use "openai" or "anthropic").`);return compatibilityRaw}function resolveCustomProviderId(params){let providers=params.config.models?.providers??{},baseUrl=params.baseUrl.trim(),explicitProviderId=params.providerId?.trim();if(explicitProviderId&&!normalizeEndpointId(explicitProviderId))throw new CustomApiError(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);let requestedProviderId=explicitProviderId||buildEndpointIdFromUrl(baseUrl),providerIdResult=resolveUniqueEndpointId({requestedId:requestedProviderId,baseUrl,providers});return{providerId:providerIdResult.providerId,...providerIdResult.renamed?{providerIdRenamedFrom:normalizeEndpointId(requestedProviderId)||`custom`}:{}}}function parseNonInteractiveCustomApiFlags(params){let baseUrl=params.baseUrl?.trim()??``,modelId=params.modelId?.trim()??``;if(!baseUrl||!modelId)throw new CustomApiError(`missing_required`,[`Auth choice "custom-api-key" requires a base URL and model ID.`,`Use --custom-base-url and --custom-model-id.`].join(`
2
2
  `));let apiKey=params.apiKey?.trim(),providerId=params.providerId?.trim();if(providerId&&!normalizeEndpointId(providerId))throw new CustomApiError(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);return{baseUrl,modelId,compatibility:parseCustomApiCompatibility(params.compatibility),...apiKey?{apiKey}:{},...providerId?{providerId}:{}}}function applyCustomApiConfig(params){let baseUrl=params.baseUrl.trim();try{new URL(baseUrl)}catch{throw new CustomApiError(`invalid_base_url`,`Custom provider base URL must be a valid URL.`)}if(params.compatibility!==`openai`&&params.compatibility!==`anthropic`)throw new CustomApiError(`invalid_compatibility`,`Custom provider compatibility must be "openai" or "anthropic".`);let modelId=params.modelId.trim();if(!modelId)throw new CustomApiError(`invalid_model_id`,`Custom provider model ID is required.`);let resolvedBaseUrl=isAzureUrl(baseUrl)?transformAzureUrl(baseUrl,modelId):baseUrl,providerIdResult=resolveCustomProviderId({config:params.config,baseUrl:resolvedBaseUrl,providerId:params.providerId}),providerId=providerIdResult.providerId,providers=params.config.models?.providers??{},modelRef=modelKey(providerId,modelId),alias=params.alias?.trim()??``,aliasError=resolveAliasError({raw:alias,cfg:params.config,modelRef});if(aliasError)throw new CustomApiError(`invalid_alias`,aliasError);let existingProvider=providers[providerId],existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],hasModel=existingModels.some(model=>model.id===modelId),nextModel={id:modelId,name:`${modelId} (Custom Provider)`,contextWindow:4096,maxTokens:4096,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!1},mergedModels=hasModel?existingModels:[...existingModels,nextModel],{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{},normalizedApiKey=params.apiKey?.trim()||(existingApiKey?existingApiKey.trim():void 0),config={...params.config,models:{...params.config.models,mode:params.config.models?.mode??`merge`,providers:{...providers,[providerId]:{...existingProviderRest,baseUrl:resolvedBaseUrl,api:resolveProviderApi(params.compatibility),...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:[nextModel]}}}};return config=applyPrimaryModel(config,modelRef),alias&&(config={...config,agents:{...config.agents,defaults:{...config.agents?.defaults,models:{...config.agents?.defaults?.models,[modelRef]:{...config.agents?.defaults?.models?.[modelRef],alias}}}}}),{config,providerId,modelId,...providerIdResult.providerIdRenamedFrom?{providerIdRenamedFrom:providerIdResult.providerIdRenamedFrom}:{}}}async function promptCustomApiConfig(params){let{prompter,runtime,config}=params,baseInput=await promptBaseUrlAndKey({prompter}),baseUrl=baseInput.baseUrl,apiKey=baseInput.apiKey,compatibilityChoice=await prompter.select({message:`Endpoint compatibility`,options:COMPATIBILITY_OPTIONS.map(option=>({value:option.value,label:option.label,hint:option.hint}))}),modelId=await promptCustomApiModelId(prompter),compatibility=compatibilityChoice===`unknown`?null:compatibilityChoice;for(;;){let verifiedFromProbe=!1;if(!compatibility){let probeSpinner=prompter.progress(`Detecting endpoint type...`);if((await requestOpenAiVerification({baseUrl,apiKey,modelId})).ok)probeSpinner.stop(`Detected OpenAI-compatible endpoint.`),compatibility=`openai`,verifiedFromProbe=!0;else if((await requestAnthropicVerification({baseUrl,apiKey,modelId})).ok)probeSpinner.stop(`Detected Anthropic-compatible endpoint.`),compatibility=`anthropic`,verifiedFromProbe=!0;else{probeSpinner.stop(`Could not detect endpoint type.`),await prompter.note(`This endpoint did not respond to OpenAI or Anthropic style requests.`,`Endpoint detection`);let retryChoice=await promptCustomApiRetryChoice(prompter);if(retryChoice===`baseUrl`||retryChoice===`both`){let retryInput=await promptBaseUrlAndKey({prompter,initialBaseUrl:baseUrl});baseUrl=retryInput.baseUrl,apiKey=retryInput.apiKey}(retryChoice===`model`||retryChoice===`both`)&&(modelId=await promptCustomApiModelId(prompter));continue}}if(verifiedFromProbe)break;let verifySpinner=prompter.progress(`Verifying...`),result=compatibility===`anthropic`?await requestAnthropicVerification({baseUrl,apiKey,modelId}):await requestOpenAiVerification({baseUrl,apiKey,modelId});if(result.ok){verifySpinner.stop(`Verification successful.`);break}result.status===void 0?verifySpinner.stop(`Verification failed: ${formatVerificationError(result.error)}`):verifySpinner.stop(`Verification failed: status ${result.status}`);let retryChoice=await promptCustomApiRetryChoice(prompter);if(retryChoice===`baseUrl`||retryChoice===`both`){let retryInput=await promptBaseUrlAndKey({prompter,initialBaseUrl:baseUrl});baseUrl=retryInput.baseUrl,apiKey=retryInput.apiKey}(retryChoice===`model`||retryChoice===`both`)&&(modelId=await promptCustomApiModelId(prompter)),compatibilityChoice===`unknown`&&(compatibility=null)}let providers=config.models?.providers??{},suggestedId=buildEndpointIdFromUrl(baseUrl),providerIdInput=await prompter.text({message:`Endpoint ID`,initialValue:suggestedId,placeholder:`custom`,validate:value=>{if(!normalizeEndpointId(value))return`Endpoint ID is required.`}}),aliasInput=await prompter.text({message:`Model alias (optional)`,placeholder:`e.g. local, ollama`,initialValue:``,validate:value=>resolveAliasError({raw:value,cfg:config,modelRef:modelKey(resolveUniqueEndpointId({requestedId:normalizeEndpointId(providerIdInput)||`custom`,baseUrl,providers}).providerId,modelId)})}),result=applyCustomApiConfig({config,baseUrl,modelId,compatibility:compatibility??`openai`,apiKey,providerId:providerIdInput,alias:aliasInput});return result.providerIdRenamedFrom&&result.providerId&&await prompter.note(`Endpoint ID "${result.providerIdRenamedFrom}" already exists for a different base URL. Using "${result.providerId}".`,`Endpoint ID`),runtime.log(`Configured custom provider: ${result.providerId}/${result.modelId}`),result}export{resolveCustomProviderId as a,promptCustomApiConfig as i,applyCustomApiConfig as n,parseNonInteractiveCustomApiFlags as r,CustomApiError as t};
@@ -0,0 +1 @@
1
+ import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./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"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import"./io-BLBq4T2o.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BgV_FYSq.js";import"./model-catalog-DjNiebr7.js";import"./shared-C2orjbTD.js";import"./model-picker-EIhpfOZa.js";import{i as promptCustomApiConfig}from"./onboard-custom-Ckf0xKXY.js";export{promptCustomApiConfig};
@@ -1,2 +1,2 @@
1
- import{bn as DEFAULT_PROVIDER,r as buildModelAliasIndex,s as modelKey}from"./model-selection-9bRFKBI_.js";import{n as fetchWithTimeout}from"./fetch-timeout-BIqoSVfA.js";import{c as normalizeAlias}from"./shared-BPN3qd7G.js";import{r as applyPrimaryModel}from"./model-picker-BUePD7Zg.js";function isAzureUrl(baseUrl){try{let host=new URL(baseUrl).hostname.toLowerCase();return host.endsWith(`.services.ai.azure.com`)||host.endsWith(`.openai.azure.com`)}catch{return!1}}function transformAzureUrl(baseUrl,modelId){let normalizedUrl=baseUrl.endsWith(`/`)?baseUrl.slice(0,-1):baseUrl;return normalizedUrl.includes(`/openai/deployments/`)?normalizedUrl:`${normalizedUrl}/openai/deployments/${modelId}`}var CustomApiError=class extends Error{constructor(code,message){super(message),this.name=`CustomApiError`,this.code=code}};const COMPATIBILITY_OPTIONS=[{value:`openai`,label:`OpenAI-compatible`,hint:`Uses /chat/completions`},{value:`anthropic`,label:`Anthropic-compatible`,hint:`Uses /messages`},{value:`unknown`,label:`Unknown (detect automatically)`,hint:`Probes OpenAI then Anthropic endpoints`}];function normalizeEndpointId(raw){let trimmed=raw.trim().toLowerCase();return trimmed?trimmed.replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``):``}function buildEndpointIdFromUrl(baseUrl){try{let url=new URL(baseUrl);return normalizeEndpointId(`custom-${url.hostname.replace(/[^a-z0-9]+/gi,`-`).toLowerCase()}${url.port?`-${url.port}`:``}`)||`custom`}catch{return`custom`}}function resolveUniqueEndpointId(params){let normalized=normalizeEndpointId(params.requestedId)||`custom`,existing=params.providers[normalized];if(!existing?.baseUrl||existing.baseUrl===params.baseUrl)return{providerId:normalized,renamed:!1};let suffix=2,candidate=`${normalized}-${suffix}`;for(;params.providers[candidate];)suffix+=1,candidate=`${normalized}-${suffix}`;return{providerId:candidate,renamed:!0}}function resolveAliasError(params){let trimmed=params.raw.trim();if(!trimmed)return;let normalized;try{normalized=normalizeAlias(trimmed)}catch(err){return err instanceof Error?err.message:`Alias is invalid.`}let aliasIndex=buildModelAliasIndex({cfg:params.cfg,defaultProvider:DEFAULT_PROVIDER}),aliasKey=normalized.toLowerCase(),existing=aliasIndex.byAlias.get(aliasKey);if(!existing)return;let existingKey=modelKey(existing.ref.provider,existing.ref.model);if(existingKey!==params.modelRef)return`Alias ${normalized} already points to ${existingKey}.`}function buildOpenAiHeaders(apiKey){let headers={};return apiKey&&(headers.Authorization=`Bearer ${apiKey}`),headers}function buildAnthropicHeaders(apiKey){let headers={"anthropic-version":`2023-06-01`};return apiKey&&(headers[`x-api-key`]=apiKey),headers}function formatVerificationError(error){if(!error)return`unknown error`;if(error instanceof Error)return error.message;if(typeof error==`string`)return error;try{return JSON.stringify(error)}catch{return`unknown error`}}function resolveVerificationEndpoint(params){let resolvedUrl=isAzureUrl(params.baseUrl)?transformAzureUrl(params.baseUrl,params.modelId):params.baseUrl,endpointUrl=new URL(params.endpointPath,resolvedUrl.endsWith(`/`)?resolvedUrl:`${resolvedUrl}/`);return isAzureUrl(params.baseUrl)&&endpointUrl.searchParams.set(`api-version`,`2024-10-21`),endpointUrl.href}async function requestVerification(params){try{let res=await fetchWithTimeout(params.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`,...params.headers},body:JSON.stringify(params.body)},1e4);return{ok:res.ok,status:res.status}}catch(error){return{ok:!1,error}}}async function requestOpenAiVerification(params){return await requestVerification({endpoint:resolveVerificationEndpoint({baseUrl:params.baseUrl,modelId:params.modelId,endpointPath:`chat/completions`}),headers:buildOpenAiHeaders(params.apiKey),body:{model:params.modelId,messages:[{role:`user`,content:`Hi`}],max_tokens:5}})}async function requestAnthropicVerification(params){return await requestVerification({endpoint:resolveVerificationEndpoint({baseUrl:params.baseUrl,modelId:params.modelId,endpointPath:`messages`}),headers:buildAnthropicHeaders(params.apiKey),body:{model:params.modelId,max_tokens:16,messages:[{role:`user`,content:`Hi`}]}})}async function promptBaseUrlAndKey(params){let baseUrlInput=await params.prompter.text({message:`API Base URL`,initialValue:params.initialBaseUrl??`http://127.0.0.1:11434/v1`,placeholder:`https://api.example.com/v1`,validate:val=>{try{new URL(val);return}catch{return`Please enter a valid URL (e.g. http://...)`}}}),apiKeyInput=await params.prompter.text({message:`API Key (leave blank if not required)`,placeholder:`sk-...`,initialValue:``});return{baseUrl:baseUrlInput.trim(),apiKey:apiKeyInput.trim()}}async function promptCustomApiRetryChoice(prompter){return await prompter.select({message:`What would you like to change?`,options:[{value:`baseUrl`,label:`Change base URL`},{value:`model`,label:`Change model`},{value:`both`,label:`Change base URL and model`}]})}async function promptCustomApiModelId(prompter){return(await prompter.text({message:`Model ID`,placeholder:`e.g. llama3, claude-3-7-sonnet`,validate:val=>val.trim()?void 0:`Model ID is required`})).trim()}function resolveProviderApi(compatibility){return compatibility===`anthropic`?`anthropic-messages`:`openai-completions`}function parseCustomApiCompatibility(raw){let compatibilityRaw=raw?.trim().toLowerCase();if(!compatibilityRaw)return`openai`;if(compatibilityRaw!==`openai`&&compatibilityRaw!==`anthropic`)throw new CustomApiError(`invalid_compatibility`,`Invalid --custom-compatibility (use "openai" or "anthropic").`);return compatibilityRaw}function resolveCustomProviderId(params){let providers=params.config.models?.providers??{},baseUrl=params.baseUrl.trim(),explicitProviderId=params.providerId?.trim();if(explicitProviderId&&!normalizeEndpointId(explicitProviderId))throw new CustomApiError(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);let requestedProviderId=explicitProviderId||buildEndpointIdFromUrl(baseUrl),providerIdResult=resolveUniqueEndpointId({requestedId:requestedProviderId,baseUrl,providers});return{providerId:providerIdResult.providerId,...providerIdResult.renamed?{providerIdRenamedFrom:normalizeEndpointId(requestedProviderId)||`custom`}:{}}}function parseNonInteractiveCustomApiFlags(params){let baseUrl=params.baseUrl?.trim()??``,modelId=params.modelId?.trim()??``;if(!baseUrl||!modelId)throw new CustomApiError(`missing_required`,[`Auth choice "custom-api-key" requires a base URL and model ID.`,`Use --custom-base-url and --custom-model-id.`].join(`
1
+ import{bn as DEFAULT_PROVIDER,r as buildModelAliasIndex,s as modelKey}from"./model-selection-DG9J_VTz.js";import{n as fetchWithTimeout}from"./fetch-timeout-BIqoSVfA.js";import{c as normalizeAlias}from"./shared-C2orjbTD.js";import{r as applyPrimaryModel}from"./model-picker-EIhpfOZa.js";function isAzureUrl(baseUrl){try{let host=new URL(baseUrl).hostname.toLowerCase();return host.endsWith(`.services.ai.azure.com`)||host.endsWith(`.openai.azure.com`)}catch{return!1}}function transformAzureUrl(baseUrl,modelId){let normalizedUrl=baseUrl.endsWith(`/`)?baseUrl.slice(0,-1):baseUrl;return normalizedUrl.includes(`/openai/deployments/`)?normalizedUrl:`${normalizedUrl}/openai/deployments/${modelId}`}var CustomApiError=class extends Error{constructor(code,message){super(message),this.name=`CustomApiError`,this.code=code}};const COMPATIBILITY_OPTIONS=[{value:`openai`,label:`OpenAI-compatible`,hint:`Uses /chat/completions`},{value:`anthropic`,label:`Anthropic-compatible`,hint:`Uses /messages`},{value:`unknown`,label:`Unknown (detect automatically)`,hint:`Probes OpenAI then Anthropic endpoints`}];function normalizeEndpointId(raw){let trimmed=raw.trim().toLowerCase();return trimmed?trimmed.replace(/[^a-z0-9-]+/g,`-`).replace(/^-+|-+$/g,``):``}function buildEndpointIdFromUrl(baseUrl){try{let url=new URL(baseUrl);return normalizeEndpointId(`custom-${url.hostname.replace(/[^a-z0-9]+/gi,`-`).toLowerCase()}${url.port?`-${url.port}`:``}`)||`custom`}catch{return`custom`}}function resolveUniqueEndpointId(params){let normalized=normalizeEndpointId(params.requestedId)||`custom`,existing=params.providers[normalized];if(!existing?.baseUrl||existing.baseUrl===params.baseUrl)return{providerId:normalized,renamed:!1};let suffix=2,candidate=`${normalized}-${suffix}`;for(;params.providers[candidate];)suffix+=1,candidate=`${normalized}-${suffix}`;return{providerId:candidate,renamed:!0}}function resolveAliasError(params){let trimmed=params.raw.trim();if(!trimmed)return;let normalized;try{normalized=normalizeAlias(trimmed)}catch(err){return err instanceof Error?err.message:`Alias is invalid.`}let aliasIndex=buildModelAliasIndex({cfg:params.cfg,defaultProvider:DEFAULT_PROVIDER}),aliasKey=normalized.toLowerCase(),existing=aliasIndex.byAlias.get(aliasKey);if(!existing)return;let existingKey=modelKey(existing.ref.provider,existing.ref.model);if(existingKey!==params.modelRef)return`Alias ${normalized} already points to ${existingKey}.`}function buildOpenAiHeaders(apiKey){let headers={};return apiKey&&(headers.Authorization=`Bearer ${apiKey}`),headers}function buildAnthropicHeaders(apiKey){let headers={"anthropic-version":`2023-06-01`};return apiKey&&(headers[`x-api-key`]=apiKey),headers}function formatVerificationError(error){if(!error)return`unknown error`;if(error instanceof Error)return error.message;if(typeof error==`string`)return error;try{return JSON.stringify(error)}catch{return`unknown error`}}function resolveVerificationEndpoint(params){let resolvedUrl=isAzureUrl(params.baseUrl)?transformAzureUrl(params.baseUrl,params.modelId):params.baseUrl,endpointUrl=new URL(params.endpointPath,resolvedUrl.endsWith(`/`)?resolvedUrl:`${resolvedUrl}/`);return isAzureUrl(params.baseUrl)&&endpointUrl.searchParams.set(`api-version`,`2024-10-21`),endpointUrl.href}async function requestVerification(params){try{let res=await fetchWithTimeout(params.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`,...params.headers},body:JSON.stringify(params.body)},1e4);return{ok:res.ok,status:res.status}}catch(error){return{ok:!1,error}}}async function requestOpenAiVerification(params){return await requestVerification({endpoint:resolveVerificationEndpoint({baseUrl:params.baseUrl,modelId:params.modelId,endpointPath:`chat/completions`}),headers:buildOpenAiHeaders(params.apiKey),body:{model:params.modelId,messages:[{role:`user`,content:`Hi`}],max_tokens:5}})}async function requestAnthropicVerification(params){return await requestVerification({endpoint:resolveVerificationEndpoint({baseUrl:params.baseUrl,modelId:params.modelId,endpointPath:`messages`}),headers:buildAnthropicHeaders(params.apiKey),body:{model:params.modelId,max_tokens:16,messages:[{role:`user`,content:`Hi`}]}})}async function promptBaseUrlAndKey(params){let baseUrlInput=await params.prompter.text({message:`API Base URL`,initialValue:params.initialBaseUrl??`http://127.0.0.1:11434/v1`,placeholder:`https://api.example.com/v1`,validate:val=>{try{new URL(val);return}catch{return`Please enter a valid URL (e.g. http://...)`}}}),apiKeyInput=await params.prompter.text({message:`API Key (leave blank if not required)`,placeholder:`sk-...`,initialValue:``});return{baseUrl:baseUrlInput.trim(),apiKey:apiKeyInput.trim()}}async function promptCustomApiRetryChoice(prompter){return await prompter.select({message:`What would you like to change?`,options:[{value:`baseUrl`,label:`Change base URL`},{value:`model`,label:`Change model`},{value:`both`,label:`Change base URL and model`}]})}async function promptCustomApiModelId(prompter){return(await prompter.text({message:`Model ID`,placeholder:`e.g. llama3, claude-3-7-sonnet`,validate:val=>val.trim()?void 0:`Model ID is required`})).trim()}function resolveProviderApi(compatibility){return compatibility===`anthropic`?`anthropic-messages`:`openai-completions`}function parseCustomApiCompatibility(raw){let compatibilityRaw=raw?.trim().toLowerCase();if(!compatibilityRaw)return`openai`;if(compatibilityRaw!==`openai`&&compatibilityRaw!==`anthropic`)throw new CustomApiError(`invalid_compatibility`,`Invalid --custom-compatibility (use "openai" or "anthropic").`);return compatibilityRaw}function resolveCustomProviderId(params){let providers=params.config.models?.providers??{},baseUrl=params.baseUrl.trim(),explicitProviderId=params.providerId?.trim();if(explicitProviderId&&!normalizeEndpointId(explicitProviderId))throw new CustomApiError(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);let requestedProviderId=explicitProviderId||buildEndpointIdFromUrl(baseUrl),providerIdResult=resolveUniqueEndpointId({requestedId:requestedProviderId,baseUrl,providers});return{providerId:providerIdResult.providerId,...providerIdResult.renamed?{providerIdRenamedFrom:normalizeEndpointId(requestedProviderId)||`custom`}:{}}}function parseNonInteractiveCustomApiFlags(params){let baseUrl=params.baseUrl?.trim()??``,modelId=params.modelId?.trim()??``;if(!baseUrl||!modelId)throw new CustomApiError(`missing_required`,[`Auth choice "custom-api-key" requires a base URL and model ID.`,`Use --custom-base-url and --custom-model-id.`].join(`
2
2
  `));let apiKey=params.apiKey?.trim(),providerId=params.providerId?.trim();if(providerId&&!normalizeEndpointId(providerId))throw new CustomApiError(`invalid_provider_id`,`Custom provider ID must include letters, numbers, or hyphens.`);return{baseUrl,modelId,compatibility:parseCustomApiCompatibility(params.compatibility),...apiKey?{apiKey}:{},...providerId?{providerId}:{}}}function applyCustomApiConfig(params){let baseUrl=params.baseUrl.trim();try{new URL(baseUrl)}catch{throw new CustomApiError(`invalid_base_url`,`Custom provider base URL must be a valid URL.`)}if(params.compatibility!==`openai`&&params.compatibility!==`anthropic`)throw new CustomApiError(`invalid_compatibility`,`Custom provider compatibility must be "openai" or "anthropic".`);let modelId=params.modelId.trim();if(!modelId)throw new CustomApiError(`invalid_model_id`,`Custom provider model ID is required.`);let resolvedBaseUrl=isAzureUrl(baseUrl)?transformAzureUrl(baseUrl,modelId):baseUrl,providerIdResult=resolveCustomProviderId({config:params.config,baseUrl:resolvedBaseUrl,providerId:params.providerId}),providerId=providerIdResult.providerId,providers=params.config.models?.providers??{},modelRef=modelKey(providerId,modelId),alias=params.alias?.trim()??``,aliasError=resolveAliasError({raw:alias,cfg:params.config,modelRef});if(aliasError)throw new CustomApiError(`invalid_alias`,aliasError);let existingProvider=providers[providerId],existingModels=Array.isArray(existingProvider?.models)?existingProvider.models:[],hasModel=existingModels.some(model=>model.id===modelId),nextModel={id:modelId,name:`${modelId} (Custom Provider)`,contextWindow:4096,maxTokens:4096,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!1},mergedModels=hasModel?existingModels:[...existingModels,nextModel],{apiKey:existingApiKey,...existingProviderRest}=existingProvider??{},normalizedApiKey=params.apiKey?.trim()||(existingApiKey?existingApiKey.trim():void 0),config={...params.config,models:{...params.config.models,mode:params.config.models?.mode??`merge`,providers:{...providers,[providerId]:{...existingProviderRest,baseUrl:resolvedBaseUrl,api:resolveProviderApi(params.compatibility),...normalizedApiKey?{apiKey:normalizedApiKey}:{},models:mergedModels.length>0?mergedModels:[nextModel]}}}};return config=applyPrimaryModel(config,modelRef),alias&&(config={...config,agents:{...config.agents,defaults:{...config.agents?.defaults,models:{...config.agents?.defaults?.models,[modelRef]:{...config.agents?.defaults?.models?.[modelRef],alias}}}}}),{config,providerId,modelId,...providerIdResult.providerIdRenamedFrom?{providerIdRenamedFrom:providerIdResult.providerIdRenamedFrom}:{}}}async function promptCustomApiConfig(params){let{prompter,runtime,config}=params,baseInput=await promptBaseUrlAndKey({prompter}),baseUrl=baseInput.baseUrl,apiKey=baseInput.apiKey,compatibilityChoice=await prompter.select({message:`Endpoint compatibility`,options:COMPATIBILITY_OPTIONS.map(option=>({value:option.value,label:option.label,hint:option.hint}))}),modelId=await promptCustomApiModelId(prompter),compatibility=compatibilityChoice===`unknown`?null:compatibilityChoice;for(;;){let verifiedFromProbe=!1;if(!compatibility){let probeSpinner=prompter.progress(`Detecting endpoint type...`);if((await requestOpenAiVerification({baseUrl,apiKey,modelId})).ok)probeSpinner.stop(`Detected OpenAI-compatible endpoint.`),compatibility=`openai`,verifiedFromProbe=!0;else if((await requestAnthropicVerification({baseUrl,apiKey,modelId})).ok)probeSpinner.stop(`Detected Anthropic-compatible endpoint.`),compatibility=`anthropic`,verifiedFromProbe=!0;else{probeSpinner.stop(`Could not detect endpoint type.`),await prompter.note(`This endpoint did not respond to OpenAI or Anthropic style requests.`,`Endpoint detection`);let retryChoice=await promptCustomApiRetryChoice(prompter);if(retryChoice===`baseUrl`||retryChoice===`both`){let retryInput=await promptBaseUrlAndKey({prompter,initialBaseUrl:baseUrl});baseUrl=retryInput.baseUrl,apiKey=retryInput.apiKey}(retryChoice===`model`||retryChoice===`both`)&&(modelId=await promptCustomApiModelId(prompter));continue}}if(verifiedFromProbe)break;let verifySpinner=prompter.progress(`Verifying...`),result=compatibility===`anthropic`?await requestAnthropicVerification({baseUrl,apiKey,modelId}):await requestOpenAiVerification({baseUrl,apiKey,modelId});if(result.ok){verifySpinner.stop(`Verification successful.`);break}result.status===void 0?verifySpinner.stop(`Verification failed: ${formatVerificationError(result.error)}`):verifySpinner.stop(`Verification failed: status ${result.status}`);let retryChoice=await promptCustomApiRetryChoice(prompter);if(retryChoice===`baseUrl`||retryChoice===`both`){let retryInput=await promptBaseUrlAndKey({prompter,initialBaseUrl:baseUrl});baseUrl=retryInput.baseUrl,apiKey=retryInput.apiKey}(retryChoice===`model`||retryChoice===`both`)&&(modelId=await promptCustomApiModelId(prompter)),compatibilityChoice===`unknown`&&(compatibility=null)}let providers=config.models?.providers??{},suggestedId=buildEndpointIdFromUrl(baseUrl),providerIdInput=await prompter.text({message:`Endpoint ID`,initialValue:suggestedId,placeholder:`custom`,validate:value=>{if(!normalizeEndpointId(value))return`Endpoint ID is required.`}}),aliasInput=await prompter.text({message:`Model alias (optional)`,placeholder:`e.g. local, ollama`,initialValue:``,validate:value=>resolveAliasError({raw:value,cfg:config,modelRef:modelKey(resolveUniqueEndpointId({requestedId:normalizeEndpointId(providerIdInput)||`custom`,baseUrl,providers}).providerId,modelId)})}),result=applyCustomApiConfig({config,baseUrl,modelId,compatibility:compatibility??`openai`,apiKey,providerId:providerIdInput,alias:aliasInput});return result.providerIdRenamedFrom&&result.providerId&&await prompter.note(`Endpoint ID "${result.providerIdRenamedFrom}" already exists for a different base URL. Using "${result.providerId}".`,`Endpoint ID`),runtime.log(`Configured custom provider: ${result.providerId}/${result.modelId}`),result}export{resolveCustomProviderId as a,promptCustomApiConfig as i,applyCustomApiConfig as n,parseNonInteractiveCustomApiFlags as r,CustomApiError as t};
@@ -1 +1 @@
1
- import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./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"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import"./io-3R_ZyUxB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-_1Ca6jGb.js";import"./sessions-CdanN_ZI.js";import"./message-channel-D_jXxXQj.js";import"./plugins-D5zP6ENo.js";import"./accounts-o35LU_iy.js";import"./accounts-rmXEiebi.js";import"./accounts-BLueHgKj.js";import"./bindings-DR59065T.js";import"./paths-DJ6rztqJ.js";import"./client-xfoidwPI.js";import"./call-BbRf8gFM.js";import{a as ensureWorkspaceAndSessions,b as waitForGatewayReachable,c as handleReset,f as printWizardHeader,n as applyWizardMetadata,p as probeGatewayReachable,t as DEFAULT_WORKSPACE,v as summarizeExistingConfig}from"./onboard-helpers-Cf5dNq7-.js";import"./prompt-style-BpVK43GK.js";export{DEFAULT_WORKSPACE,applyWizardMetadata,ensureWorkspaceAndSessions,handleReset,printWizardHeader,probeGatewayReachable,summarizeExistingConfig,waitForGatewayReachable};
1
+ import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./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"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import"./io-BLBq4T2o.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BgV_FYSq.js";import"./sessions-BuZVmOWt.js";import"./message-channel-D_jXxXQj.js";import"./plugins-D5zP6ENo.js";import"./accounts-o35LU_iy.js";import"./accounts-rmXEiebi.js";import"./accounts-BLueHgKj.js";import"./bindings-DR59065T.js";import"./paths-DJ6rztqJ.js";import"./client-xfoidwPI.js";import"./call-T8ciwMTA.js";import{a as ensureWorkspaceAndSessions,b as waitForGatewayReachable,c as handleReset,f as printWizardHeader,n as applyWizardMetadata,p as probeGatewayReachable,t as DEFAULT_WORKSPACE,v as summarizeExistingConfig}from"./onboard-helpers-CiHzTaFX.js";import"./prompt-style-BpVK43GK.js";export{DEFAULT_WORKSPACE,applyWizardMetadata,ensureWorkspaceAndSessions,handleReset,printWizardHeader,probeGatewayReachable,summarizeExistingConfig,waitForGatewayReachable};
@@ -1,4 +1,4 @@
1
- import{t as CONFIG_PATH}from"./paths-BHg-VHB4.js";import{C as sleep,S as shortenHomePath,t as CONFIG_DIR,x as shortenHomeInString,y as resolveUserPath}from"./utils-BP60e80M.js";import{t as runCommandWithTimeout}from"./exec-COgsU9ql.js";import{m as DEFAULT_AGENT_WORKSPACE_DIR,w as ensureAgentWorkspace}from"./agent-scope-CufEmNj_.js";import{M as isSafeExecutableValue,U as VERSION}from"./io-CohJffHG.js";import{n as pickPrimaryTailnetIPv4}from"./tailnet-B0Q5E6lZ.js";import{n as callGateway}from"./call-DmAU4cRX.js";import{h as GATEWAY_CLIENT_NAMES,m as GATEWAY_CLIENT_MODES}from"./message-channel-z5YRpR2d.js";import{a as isValidIPv4,c as pickPrimaryLanIPv4}from"./net-DtnXq2dW.js";import{s as resolveSessionTranscriptsDirForAgent}from"./paths-ClsbsPQP.js";import{t as isWSL}from"./wsl-BO1sLIB6.js";import{r as stylePromptTitle}from"./prompt-style-BMWmaqSC.js";import path from"node:path";import{inspect}from"node:util";import crypto from"node:crypto";import fs from"node:fs/promises";import{cancel,isCancel}from"@clack/prompts";const CONTROL_UI_AVATAR_PREFIX=`/avatar`;function normalizeControlUiBasePath(basePath){if(!basePath)return``;let normalized=basePath.trim();return!normalized||(normalized.startsWith(`/`)||(normalized=`/${normalized}`),normalized===`/`)?``:(normalized.endsWith(`/`)&&(normalized=normalized.slice(0,-1)),normalized)}function buildControlUiAvatarUrl(basePath,agentId){return basePath?`${basePath}${CONTROL_UI_AVATAR_PREFIX}/${agentId}`:`${CONTROL_UI_AVATAR_PREFIX}/${agentId}`}function looksLikeLocalAvatarPath(value){return/[\\/]/.test(value)?!0:/\.(png|jpe?g|gif|webp|svg|ico)$/i.test(value)}function resolveAssistantAvatarUrl(params){let avatar=params.avatar?.trim();if(!avatar)return;if(/^https?:\/\//i.test(avatar)||/^data:image\//i.test(avatar))return avatar;let basePath=normalizeControlUiBasePath(params.basePath),baseAvatarPrefix=basePath?`${basePath}${CONTROL_UI_AVATAR_PREFIX}/`:`${CONTROL_UI_AVATAR_PREFIX}/`;return basePath&&avatar.startsWith(`${CONTROL_UI_AVATAR_PREFIX}/`)?`${basePath}${avatar}`:avatar.startsWith(baseAvatarPrefix)||!params.agentId?avatar:looksLikeLocalAvatarPath(avatar)?buildControlUiAvatarUrl(basePath,params.agentId):avatar}function guardCancel(value,runtime){if(isCancel(value))throw cancel(stylePromptTitle(`Setup cancelled.`)??`Setup cancelled.`),runtime.exit(0),Error(`unreachable`);return value}function summarizeExistingConfig(config){let rows=[],defaults=config.agents?.defaults;if(defaults?.workspace&&rows.push(shortenHomeInString(`workspace: ${defaults.workspace}`)),defaults?.model){let model=typeof defaults.model==`string`?defaults.model:defaults.model.primary;model&&rows.push(shortenHomeInString(`model: ${model}`))}return config.gateway?.mode&&rows.push(shortenHomeInString(`gateway.mode: ${config.gateway.mode}`)),typeof config.gateway?.port==`number`&&rows.push(shortenHomeInString(`gateway.port: ${config.gateway.port}`)),config.gateway?.bind&&rows.push(shortenHomeInString(`gateway.bind: ${config.gateway.bind}`)),config.gateway?.remote?.url&&rows.push(shortenHomeInString(`gateway.remote.url: ${config.gateway.remote.url}`)),config.skills?.install?.nodeManager&&rows.push(shortenHomeInString(`skills.nodeManager: ${config.skills.install.nodeManager}`)),rows.length?rows.join(`
1
+ import{t as CONFIG_PATH}from"./paths-BHg-VHB4.js";import{C as sleep,S as shortenHomePath,t as CONFIG_DIR,x as shortenHomeInString,y as resolveUserPath}from"./utils-BP60e80M.js";import{t as runCommandWithTimeout}from"./exec-COgsU9ql.js";import{m as DEFAULT_AGENT_WORKSPACE_DIR,w as ensureAgentWorkspace}from"./agent-scope-CufEmNj_.js";import{M as isSafeExecutableValue,U as VERSION}from"./io-D9hC2aG0.js";import{n as pickPrimaryTailnetIPv4}from"./tailnet-B0Q5E6lZ.js";import{n as callGateway}from"./call-Du2LiaX6.js";import{h as GATEWAY_CLIENT_NAMES,m as GATEWAY_CLIENT_MODES}from"./message-channel-z5YRpR2d.js";import{a as isValidIPv4,c as pickPrimaryLanIPv4}from"./net-DtnXq2dW.js";import{s as resolveSessionTranscriptsDirForAgent}from"./paths-ClsbsPQP.js";import{t as isWSL}from"./wsl-BO1sLIB6.js";import{r as stylePromptTitle}from"./prompt-style-BMWmaqSC.js";import path from"node:path";import{inspect}from"node:util";import crypto from"node:crypto";import fs from"node:fs/promises";import{cancel,isCancel}from"@clack/prompts";const CONTROL_UI_AVATAR_PREFIX=`/avatar`;function normalizeControlUiBasePath(basePath){if(!basePath)return``;let normalized=basePath.trim();return!normalized||(normalized.startsWith(`/`)||(normalized=`/${normalized}`),normalized===`/`)?``:(normalized.endsWith(`/`)&&(normalized=normalized.slice(0,-1)),normalized)}function buildControlUiAvatarUrl(basePath,agentId){return basePath?`${basePath}${CONTROL_UI_AVATAR_PREFIX}/${agentId}`:`${CONTROL_UI_AVATAR_PREFIX}/${agentId}`}function looksLikeLocalAvatarPath(value){return/[\\/]/.test(value)?!0:/\.(png|jpe?g|gif|webp|svg|ico)$/i.test(value)}function resolveAssistantAvatarUrl(params){let avatar=params.avatar?.trim();if(!avatar)return;if(/^https?:\/\//i.test(avatar)||/^data:image\//i.test(avatar))return avatar;let basePath=normalizeControlUiBasePath(params.basePath),baseAvatarPrefix=basePath?`${basePath}${CONTROL_UI_AVATAR_PREFIX}/`:`${CONTROL_UI_AVATAR_PREFIX}/`;return basePath&&avatar.startsWith(`${CONTROL_UI_AVATAR_PREFIX}/`)?`${basePath}${avatar}`:avatar.startsWith(baseAvatarPrefix)||!params.agentId?avatar:looksLikeLocalAvatarPath(avatar)?buildControlUiAvatarUrl(basePath,params.agentId):avatar}function guardCancel(value,runtime){if(isCancel(value))throw cancel(stylePromptTitle(`Setup cancelled.`)??`Setup cancelled.`),runtime.exit(0),Error(`unreachable`);return value}function summarizeExistingConfig(config){let rows=[],defaults=config.agents?.defaults;if(defaults?.workspace&&rows.push(shortenHomeInString(`workspace: ${defaults.workspace}`)),defaults?.model){let model=typeof defaults.model==`string`?defaults.model:defaults.model.primary;model&&rows.push(shortenHomeInString(`model: ${model}`))}return config.gateway?.mode&&rows.push(shortenHomeInString(`gateway.mode: ${config.gateway.mode}`)),typeof config.gateway?.port==`number`&&rows.push(shortenHomeInString(`gateway.port: ${config.gateway.port}`)),config.gateway?.bind&&rows.push(shortenHomeInString(`gateway.bind: ${config.gateway.bind}`)),config.gateway?.remote?.url&&rows.push(shortenHomeInString(`gateway.remote.url: ${config.gateway.remote.url}`)),config.skills?.install?.nodeManager&&rows.push(shortenHomeInString(`skills.nodeManager: ${config.skills.install.nodeManager}`)),rows.length?rows.join(`
2
2
  `):`No key settings detected.`}function randomToken(){return crypto.randomBytes(24).toString(`hex`)}function normalizeGatewayTokenInput(value){if(typeof value!=`string`)return``;let trimmed=value.trim();return trimmed===`undefined`||trimmed===`null`?``:trimmed}function validateGatewayPasswordInput(value){if(typeof value!=`string`)return`Required`;let trimmed=value.trim();if(!trimmed)return`Required`;if(trimmed===`undefined`||trimmed===`null`)return`Cannot be the literal string "undefined" or "null"`}function printWizardHeader(runtime){let header=[` ██████╗ ██████╗ ██████╗ ███████╗██████╗ ██████╗██╗ █████╗ ██╗ ██╗`,`██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔══██╗██╔════╝██║ ██╔══██╗██║ ██║`,`██║ ██║ ██║██║ ██║█████╗ ██████╔╝██║ ██║ ███████║██║ █╗ ██║`,`██║ ██║ ██║██║ ██║██╔══╝ ██╔══██╗██║ ██║ ██╔══██║██║███╗██║`,`╚██████╗╚██████╔╝██████╔╝███████╗██║ ██║╚██████╗███████╗██║ ██║╚███╔███╔╝`,` ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝ `,` 🤖 BUILDERFORCE_AGENTS 🤖 `,` `].join(`
3
3
  `);runtime.log(header)}function applyWizardMetadata(cfg,params){let commit=process.env.GIT_COMMIT?.trim()||process.env.GIT_SHA?.trim()||void 0;return{...cfg,wizard:{...cfg.wizard,lastRunAt:new Date().toISOString(),lastRunVersion:VERSION,lastRunCommit:commit,lastRunCommand:params.command,lastRunMode:params.mode}}}async function resolveBrowserOpenCommand(){let platform=process.platform,hasDisplay=!!(process.env.DISPLAY||process.env.WAYLAND_DISPLAY);if((process.env.SSH_CLIENT||process.env.SSH_TTY||process.env.SSH_CONNECTION)&&!hasDisplay&&platform!==`win32`)return{argv:null,reason:`ssh-no-display`};if(platform===`win32`)return{argv:[`cmd`,`/c`,`start`,``],command:`cmd`,quoteUrl:!0};if(platform===`darwin`)return await detectBinary(`open`)?{argv:[`open`],command:`open`}:{argv:null,reason:`missing-open`};if(platform===`linux`){let wsl=await isWSL();if(!hasDisplay&&!wsl)return{argv:null,reason:`no-display`};if(wsl){if(await detectBinary(`wslview`))return{argv:[`wslview`],command:`wslview`};if(!hasDisplay)return{argv:null,reason:`wsl-no-wslview`}}return await detectBinary(`xdg-open`)?{argv:[`xdg-open`],command:`xdg-open`}:{argv:null,reason:`missing-xdg-open`}}return{argv:null,reason:`unsupported-platform`}}async function detectBrowserOpenSupport(){let resolved=await resolveBrowserOpenCommand();return resolved.argv?{ok:!0,command:resolved.command}:{ok:!1,reason:resolved.reason}}function formatControlUiSshHint(params){let basePath=normalizeControlUiBasePath(params.basePath),uiPath=basePath?`${basePath}/`:`/`,localUrl=`http://localhost:${params.port}${uiPath}`,authedUrl=params.token?`${localUrl}#token=${encodeURIComponent(params.token)}`:void 0,sshTarget=resolveSshTargetHint();return[`No GUI detected. Open from your computer:`,`ssh -N -L ${params.port}:127.0.0.1:${params.port} ${sshTarget}`,`Then open:`,localUrl,authedUrl,`Docs:`,`https://docs.builderforce.ai/gateway/remote`,`https://docs.builderforce.ai/web/control-ui`].filter(Boolean).join(`
4
4
  `)}function resolveSshTargetHint(){return`${process.env.USER||process.env.LOGNAME||`user`}@${process.env.SSH_CONNECTION?.trim().split(/\s+/)?.[2]??`<host>`}`}async function openUrl(url){if(shouldSkipBrowserOpenInTests())return!1;let resolved=await resolveBrowserOpenCommand();if(!resolved.argv)return!1;let quoteUrl=resolved.quoteUrl===!0,command=[...resolved.argv];quoteUrl?(command.at(-1)===``&&(command[command.length-1]=`""`),command.push(`"${url}"`)):command.push(url);try{return await runCommandWithTimeout(command,{timeoutMs:5e3,windowsVerbatimArguments:quoteUrl}),!0}catch{return!1}}async function ensureWorkspaceAndSessions(workspaceDir,runtime,options){let ws=await ensureAgentWorkspace({dir:workspaceDir,ensureBootstrapFiles:!options?.skipBootstrap});runtime.log(`Workspace OK: ${shortenHomePath(ws.dir)}`);let sessionsDir=resolveSessionTranscriptsDirForAgent(options?.agentId);await fs.mkdir(sessionsDir,{recursive:!0}),runtime.log(`Sessions OK: ${shortenHomePath(sessionsDir)}`)}function resolveNodeManagerOptions(){return[{value:`npm`,label:`npm`},{value:`pnpm`,label:`pnpm`},{value:`bun`,label:`bun`}]}async function moveToTrash(pathname,runtime){if(pathname){try{await fs.access(pathname)}catch{return}try{await runCommandWithTimeout([`trash`,pathname],{timeoutMs:5e3}),runtime.log(`Moved to Trash: ${shortenHomePath(pathname)}`)}catch{runtime.log(`Failed to move to Trash (manual delete): ${shortenHomePath(pathname)}`)}}}async function handleReset(scope,workspaceDir,runtime){await moveToTrash(CONFIG_PATH,runtime),scope!==`config`&&(await moveToTrash(path.join(CONFIG_DIR,`credentials`),runtime),await moveToTrash(resolveSessionTranscriptsDirForAgent(),runtime),scope===`full`&&await moveToTrash(workspaceDir,runtime))}async function detectBinary(name){if(!name?.trim()||!isSafeExecutableValue(name))return!1;let resolved=name.startsWith(`~`)?resolveUserPath(name):name;if(path.isAbsolute(resolved)||resolved.startsWith(`.`)||resolved.includes(`/`)||resolved.includes(`\\`))try{return await fs.access(resolved),!0}catch{return!1}let command=process.platform===`win32`?[`where`,name]:[`/usr/bin/env`,`which`,name];try{let result=await runCommandWithTimeout(command,{timeoutMs:2e3});return result.code===0&&result.stdout.trim().length>0}catch{return!1}}function shouldSkipBrowserOpenInTests(){return!!process.env.VITEST}async function probeGatewayReachable(params){let url=params.url.trim(),timeoutMs=params.timeoutMs??1500;try{return await callGateway({url,token:params.token,password:params.password,method:`health`,timeoutMs,clientName:GATEWAY_CLIENT_NAMES.PROBE,mode:GATEWAY_CLIENT_MODES.PROBE}),{ok:!0}}catch(err){return{ok:!1,detail:summarizeError(err)}}}async function waitForGatewayReachable(params){let deadlineMs=params.deadlineMs??15e3,pollMs=params.pollMs??400,probeTimeoutMs=params.probeTimeoutMs??1500,startedAt=Date.now(),lastDetail;for(;Date.now()-startedAt<deadlineMs;){let probe=await probeGatewayReachable({url:params.url,token:params.token,password:params.password,timeoutMs:probeTimeoutMs});if(probe.ok)return probe;lastDetail=probe.detail,await sleep(pollMs)}return{ok:!1,detail:lastDetail}}function summarizeError(err){let raw=`unknown error`;err instanceof Error?raw=err.message||raw:typeof err==`string`?raw=err||raw:err!==void 0&&(raw=inspect(err,{depth:2}));let line=raw.split(`
@@ -1,4 +1,4 @@
1
- import{t as CONFIG_PATH}from"./paths-5FcIFMsj.js";import{C as shortenHomePath,S as shortenHomeInString,b as resolveUserPath,t as CONFIG_DIR,w as sleep}from"./utils-DbaBVFaK.js";import{t as runCommandWithTimeout}from"./exec-DdcIjeyn.js";import{m as DEFAULT_AGENT_WORKSPACE_DIR,w as ensureAgentWorkspace}from"./agent-scope-DPtjOxzp.js";import{M as isSafeExecutableValue,U as VERSION}from"./io-3R_ZyUxB.js";import{n as pickPrimaryTailnetIPv4}from"./tailnet-CTj65CYb.js";import{l as pickPrimaryLanIPv4,o as isValidIPv4}from"./ws-Bbu03j3h.js";import{h as GATEWAY_CLIENT_NAMES,m as GATEWAY_CLIENT_MODES}from"./message-channel-D_jXxXQj.js";import{s as resolveSessionTranscriptsDirForAgent}from"./paths-DJ6rztqJ.js";import{n as callGateway}from"./call-BbRf8gFM.js";import{t as isWSL}from"./wsl-DkYsHmN5.js";import{r as stylePromptTitle}from"./prompt-style-BpVK43GK.js";import path from"node:path";import crypto from"node:crypto";import fs from"node:fs/promises";import{inspect}from"node:util";import{cancel,isCancel}from"@clack/prompts";const CONTROL_UI_AVATAR_PREFIX=`/avatar`;function normalizeControlUiBasePath(basePath){if(!basePath)return``;let normalized=basePath.trim();return!normalized||(normalized.startsWith(`/`)||(normalized=`/${normalized}`),normalized===`/`)?``:(normalized.endsWith(`/`)&&(normalized=normalized.slice(0,-1)),normalized)}function buildControlUiAvatarUrl(basePath,agentId){return basePath?`${basePath}${CONTROL_UI_AVATAR_PREFIX}/${agentId}`:`${CONTROL_UI_AVATAR_PREFIX}/${agentId}`}function looksLikeLocalAvatarPath(value){return/[\\/]/.test(value)?!0:/\.(png|jpe?g|gif|webp|svg|ico)$/i.test(value)}function resolveAssistantAvatarUrl(params){let avatar=params.avatar?.trim();if(!avatar)return;if(/^https?:\/\//i.test(avatar)||/^data:image\//i.test(avatar))return avatar;let basePath=normalizeControlUiBasePath(params.basePath),baseAvatarPrefix=basePath?`${basePath}${CONTROL_UI_AVATAR_PREFIX}/`:`${CONTROL_UI_AVATAR_PREFIX}/`;return basePath&&avatar.startsWith(`${CONTROL_UI_AVATAR_PREFIX}/`)?`${basePath}${avatar}`:avatar.startsWith(baseAvatarPrefix)||!params.agentId?avatar:looksLikeLocalAvatarPath(avatar)?buildControlUiAvatarUrl(basePath,params.agentId):avatar}function guardCancel(value,runtime){if(isCancel(value))throw cancel(stylePromptTitle(`Setup cancelled.`)??`Setup cancelled.`),runtime.exit(0),Error(`unreachable`);return value}function summarizeExistingConfig(config){let rows=[],defaults=config.agents?.defaults;if(defaults?.workspace&&rows.push(shortenHomeInString(`workspace: ${defaults.workspace}`)),defaults?.model){let model=typeof defaults.model==`string`?defaults.model:defaults.model.primary;model&&rows.push(shortenHomeInString(`model: ${model}`))}return config.gateway?.mode&&rows.push(shortenHomeInString(`gateway.mode: ${config.gateway.mode}`)),typeof config.gateway?.port==`number`&&rows.push(shortenHomeInString(`gateway.port: ${config.gateway.port}`)),config.gateway?.bind&&rows.push(shortenHomeInString(`gateway.bind: ${config.gateway.bind}`)),config.gateway?.remote?.url&&rows.push(shortenHomeInString(`gateway.remote.url: ${config.gateway.remote.url}`)),config.skills?.install?.nodeManager&&rows.push(shortenHomeInString(`skills.nodeManager: ${config.skills.install.nodeManager}`)),rows.length?rows.join(`
1
+ import{t as CONFIG_PATH}from"./paths-5FcIFMsj.js";import{C as shortenHomePath,S as shortenHomeInString,b as resolveUserPath,t as CONFIG_DIR,w as sleep}from"./utils-DbaBVFaK.js";import{t as runCommandWithTimeout}from"./exec-DdcIjeyn.js";import{m as DEFAULT_AGENT_WORKSPACE_DIR,w as ensureAgentWorkspace}from"./agent-scope-DPtjOxzp.js";import{M as isSafeExecutableValue,U as VERSION}from"./io-BLBq4T2o.js";import{n as pickPrimaryTailnetIPv4}from"./tailnet-CTj65CYb.js";import{l as pickPrimaryLanIPv4,o as isValidIPv4}from"./ws-Bbu03j3h.js";import{h as GATEWAY_CLIENT_NAMES,m as GATEWAY_CLIENT_MODES}from"./message-channel-D_jXxXQj.js";import{s as resolveSessionTranscriptsDirForAgent}from"./paths-DJ6rztqJ.js";import{n as callGateway}from"./call-T8ciwMTA.js";import{t as isWSL}from"./wsl-DkYsHmN5.js";import{r as stylePromptTitle}from"./prompt-style-BpVK43GK.js";import path from"node:path";import crypto from"node:crypto";import fs from"node:fs/promises";import{inspect}from"node:util";import{cancel,isCancel}from"@clack/prompts";const CONTROL_UI_AVATAR_PREFIX=`/avatar`;function normalizeControlUiBasePath(basePath){if(!basePath)return``;let normalized=basePath.trim();return!normalized||(normalized.startsWith(`/`)||(normalized=`/${normalized}`),normalized===`/`)?``:(normalized.endsWith(`/`)&&(normalized=normalized.slice(0,-1)),normalized)}function buildControlUiAvatarUrl(basePath,agentId){return basePath?`${basePath}${CONTROL_UI_AVATAR_PREFIX}/${agentId}`:`${CONTROL_UI_AVATAR_PREFIX}/${agentId}`}function looksLikeLocalAvatarPath(value){return/[\\/]/.test(value)?!0:/\.(png|jpe?g|gif|webp|svg|ico)$/i.test(value)}function resolveAssistantAvatarUrl(params){let avatar=params.avatar?.trim();if(!avatar)return;if(/^https?:\/\//i.test(avatar)||/^data:image\//i.test(avatar))return avatar;let basePath=normalizeControlUiBasePath(params.basePath),baseAvatarPrefix=basePath?`${basePath}${CONTROL_UI_AVATAR_PREFIX}/`:`${CONTROL_UI_AVATAR_PREFIX}/`;return basePath&&avatar.startsWith(`${CONTROL_UI_AVATAR_PREFIX}/`)?`${basePath}${avatar}`:avatar.startsWith(baseAvatarPrefix)||!params.agentId?avatar:looksLikeLocalAvatarPath(avatar)?buildControlUiAvatarUrl(basePath,params.agentId):avatar}function guardCancel(value,runtime){if(isCancel(value))throw cancel(stylePromptTitle(`Setup cancelled.`)??`Setup cancelled.`),runtime.exit(0),Error(`unreachable`);return value}function summarizeExistingConfig(config){let rows=[],defaults=config.agents?.defaults;if(defaults?.workspace&&rows.push(shortenHomeInString(`workspace: ${defaults.workspace}`)),defaults?.model){let model=typeof defaults.model==`string`?defaults.model:defaults.model.primary;model&&rows.push(shortenHomeInString(`model: ${model}`))}return config.gateway?.mode&&rows.push(shortenHomeInString(`gateway.mode: ${config.gateway.mode}`)),typeof config.gateway?.port==`number`&&rows.push(shortenHomeInString(`gateway.port: ${config.gateway.port}`)),config.gateway?.bind&&rows.push(shortenHomeInString(`gateway.bind: ${config.gateway.bind}`)),config.gateway?.remote?.url&&rows.push(shortenHomeInString(`gateway.remote.url: ${config.gateway.remote.url}`)),config.skills?.install?.nodeManager&&rows.push(shortenHomeInString(`skills.nodeManager: ${config.skills.install.nodeManager}`)),rows.length?rows.join(`
2
2
  `):`No key settings detected.`}function randomToken(){return crypto.randomBytes(24).toString(`hex`)}function normalizeGatewayTokenInput(value){if(typeof value!=`string`)return``;let trimmed=value.trim();return trimmed===`undefined`||trimmed===`null`?``:trimmed}function validateGatewayPasswordInput(value){if(typeof value!=`string`)return`Required`;let trimmed=value.trim();if(!trimmed)return`Required`;if(trimmed===`undefined`||trimmed===`null`)return`Cannot be the literal string "undefined" or "null"`}function printWizardHeader(runtime){let header=[` ██████╗ ██████╗ ██████╗ ███████╗██████╗ ██████╗██╗ █████╗ ██╗ ██╗`,`██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔══██╗██╔════╝██║ ██╔══██╗██║ ██║`,`██║ ██║ ██║██║ ██║█████╗ ██████╔╝██║ ██║ ███████║██║ █╗ ██║`,`██║ ██║ ██║██║ ██║██╔══╝ ██╔══██╗██║ ██║ ██╔══██║██║███╗██║`,`╚██████╗╚██████╔╝██████╔╝███████╗██║ ██║╚██████╗███████╗██║ ██║╚███╔███╔╝`,` ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝ `,` 🤖 BUILDERFORCE_AGENTS 🤖 `,` `].join(`
3
3
  `);runtime.log(header)}function applyWizardMetadata(cfg,params){let commit=process.env.GIT_COMMIT?.trim()||process.env.GIT_SHA?.trim()||void 0;return{...cfg,wizard:{...cfg.wizard,lastRunAt:new Date().toISOString(),lastRunVersion:VERSION,lastRunCommit:commit,lastRunCommand:params.command,lastRunMode:params.mode}}}async function resolveBrowserOpenCommand(){let platform=process.platform,hasDisplay=!!(process.env.DISPLAY||process.env.WAYLAND_DISPLAY);if((process.env.SSH_CLIENT||process.env.SSH_TTY||process.env.SSH_CONNECTION)&&!hasDisplay&&platform!==`win32`)return{argv:null,reason:`ssh-no-display`};if(platform===`win32`)return{argv:[`cmd`,`/c`,`start`,``],command:`cmd`,quoteUrl:!0};if(platform===`darwin`)return await detectBinary(`open`)?{argv:[`open`],command:`open`}:{argv:null,reason:`missing-open`};if(platform===`linux`){let wsl=await isWSL();if(!hasDisplay&&!wsl)return{argv:null,reason:`no-display`};if(wsl){if(await detectBinary(`wslview`))return{argv:[`wslview`],command:`wslview`};if(!hasDisplay)return{argv:null,reason:`wsl-no-wslview`}}return await detectBinary(`xdg-open`)?{argv:[`xdg-open`],command:`xdg-open`}:{argv:null,reason:`missing-xdg-open`}}return{argv:null,reason:`unsupported-platform`}}async function detectBrowserOpenSupport(){let resolved=await resolveBrowserOpenCommand();return resolved.argv?{ok:!0,command:resolved.command}:{ok:!1,reason:resolved.reason}}function formatControlUiSshHint(params){let basePath=normalizeControlUiBasePath(params.basePath),uiPath=basePath?`${basePath}/`:`/`,localUrl=`http://localhost:${params.port}${uiPath}`,authedUrl=params.token?`${localUrl}#token=${encodeURIComponent(params.token)}`:void 0,sshTarget=resolveSshTargetHint();return[`No GUI detected. Open from your computer:`,`ssh -N -L ${params.port}:127.0.0.1:${params.port} ${sshTarget}`,`Then open:`,localUrl,authedUrl,`Docs:`,`https://docs.builderforce.ai/gateway/remote`,`https://docs.builderforce.ai/web/control-ui`].filter(Boolean).join(`
4
4
  `)}function resolveSshTargetHint(){return`${process.env.USER||process.env.LOGNAME||`user`}@${process.env.SSH_CONNECTION?.trim().split(/\s+/)?.[2]??`<host>`}`}async function openUrl(url){if(shouldSkipBrowserOpenInTests())return!1;let resolved=await resolveBrowserOpenCommand();if(!resolved.argv)return!1;let quoteUrl=resolved.quoteUrl===!0,command=[...resolved.argv];quoteUrl?(command.at(-1)===``&&(command[command.length-1]=`""`),command.push(`"${url}"`)):command.push(url);try{return await runCommandWithTimeout(command,{timeoutMs:5e3,windowsVerbatimArguments:quoteUrl}),!0}catch{return!1}}async function ensureWorkspaceAndSessions(workspaceDir,runtime,options){let ws=await ensureAgentWorkspace({dir:workspaceDir,ensureBootstrapFiles:!options?.skipBootstrap});runtime.log(`Workspace OK: ${shortenHomePath(ws.dir)}`);let sessionsDir=resolveSessionTranscriptsDirForAgent(options?.agentId);await fs.mkdir(sessionsDir,{recursive:!0}),runtime.log(`Sessions OK: ${shortenHomePath(sessionsDir)}`)}function resolveNodeManagerOptions(){return[{value:`npm`,label:`npm`},{value:`pnpm`,label:`pnpm`},{value:`bun`,label:`bun`}]}async function moveToTrash(pathname,runtime){if(pathname){try{await fs.access(pathname)}catch{return}try{await runCommandWithTimeout([`trash`,pathname],{timeoutMs:5e3}),runtime.log(`Moved to Trash: ${shortenHomePath(pathname)}`)}catch{runtime.log(`Failed to move to Trash (manual delete): ${shortenHomePath(pathname)}`)}}}async function handleReset(scope,workspaceDir,runtime){await moveToTrash(CONFIG_PATH,runtime),scope!==`config`&&(await moveToTrash(path.join(CONFIG_DIR,`credentials`),runtime),await moveToTrash(resolveSessionTranscriptsDirForAgent(),runtime),scope===`full`&&await moveToTrash(workspaceDir,runtime))}async function detectBinary(name){if(!name?.trim()||!isSafeExecutableValue(name))return!1;let resolved=name.startsWith(`~`)?resolveUserPath(name):name;if(path.isAbsolute(resolved)||resolved.startsWith(`.`)||resolved.includes(`/`)||resolved.includes(`\\`))try{return await fs.access(resolved),!0}catch{return!1}let command=process.platform===`win32`?[`where`,name]:[`/usr/bin/env`,`which`,name];try{let result=await runCommandWithTimeout(command,{timeoutMs:2e3});return result.code===0&&result.stdout.trim().length>0}catch{return!1}}function shouldSkipBrowserOpenInTests(){return!!process.env.VITEST}async function probeGatewayReachable(params){let url=params.url.trim(),timeoutMs=params.timeoutMs??1500;try{return await callGateway({url,token:params.token,password:params.password,method:`health`,timeoutMs,clientName:GATEWAY_CLIENT_NAMES.PROBE,mode:GATEWAY_CLIENT_MODES.PROBE}),{ok:!0}}catch(err){return{ok:!1,detail:summarizeError(err)}}}async function waitForGatewayReachable(params){let deadlineMs=params.deadlineMs??15e3,pollMs=params.pollMs??400,probeTimeoutMs=params.probeTimeoutMs??1500,startedAt=Date.now(),lastDetail;for(;Date.now()-startedAt<deadlineMs;){let probe=await probeGatewayReachable({url:params.url,token:params.token,password:params.password,timeoutMs:probeTimeoutMs});if(probe.ok)return probe;lastDetail=probe.detail,await sleep(pollMs)}return{ok:!1,detail:lastDetail}}function summarizeError(err){let raw=`unknown error`;err instanceof Error?raw=err.message||raw:typeof err==`string`?raw=err||raw:err!==void 0&&(raw=inspect(err,{depth:2}));let line=raw.split(`
@@ -1 +1 @@
1
- import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./auth-profiles-C1VbcUOm.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"./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"./sessions-Bl1wwotX.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./accounts-Cx82nj4E.js";import"./accounts-DcoaLXKI.js";import"./paths-ClsbsPQP.js";import{a as ensureWorkspaceAndSessions,b as waitForGatewayReachable,c as handleReset,f as printWizardHeader,n as applyWizardMetadata,p as probeGatewayReachable,t as DEFAULT_WORKSPACE,v as summarizeExistingConfig}from"./onboard-helpers-CckrS8_K.js";import"./prompt-style-BMWmaqSC.js";export{DEFAULT_WORKSPACE,applyWizardMetadata,ensureWorkspaceAndSessions,handleReset,printWizardHeader,probeGatewayReachable,summarizeExistingConfig,waitForGatewayReachable};
1
+ import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./auth-profiles-pt7Tr4HA.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"./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"./sessions-BA8Se_bT.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./accounts-Cx82nj4E.js";import"./accounts-DcoaLXKI.js";import"./paths-ClsbsPQP.js";import{a as ensureWorkspaceAndSessions,b as waitForGatewayReachable,c as handleReset,f as printWizardHeader,n as applyWizardMetadata,p as probeGatewayReachable,t as DEFAULT_WORKSPACE,v as summarizeExistingConfig}from"./onboard-helpers-Ce_c4Raj.js";import"./prompt-style-BMWmaqSC.js";export{DEFAULT_WORKSPACE,applyWizardMetadata,ensureWorkspaceAndSessions,handleReset,printWizardHeader,probeGatewayReachable,summarizeExistingConfig,waitForGatewayReachable};
@@ -1 +1 @@
1
- import{t as restoreTerminalState}from"./restore-BdB4wlsZ.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{t as WizardCancelledError}from"./prompts-BP4e56X_.js";import{t as createClackPrompter}from"./clack-prompter-B52CP7eY.js";import{t as runOnboardingWizard}from"./onboarding-CP9rrz8y.js";async function runInteractiveOnboarding(opts,runtime=defaultRuntime){let prompter=createClackPrompter(),exitCode=null;try{await runOnboardingWizard(opts,runtime,prompter)}catch(err){if(err instanceof WizardCancelledError){exitCode=1;return}throw err}finally{restoreTerminalState(`onboarding finish`,{resumeStdinIfPaused:!1}),exitCode!==null&&runtime.exit(exitCode)}}export{runInteractiveOnboarding as t};
1
+ import{t as restoreTerminalState}from"./restore-BdB4wlsZ.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{t as WizardCancelledError}from"./prompts-BP4e56X_.js";import{t as createClackPrompter}from"./clack-prompter-B52CP7eY.js";import{t as runOnboardingWizard}from"./onboarding-CIaZLNc1.js";async function runInteractiveOnboarding(opts,runtime=defaultRuntime){let prompter=createClackPrompter(),exitCode=null;try{await runOnboardingWizard(opts,runtime,prompter)}catch(err){if(err instanceof WizardCancelledError){exitCode=1;return}throw err}finally{restoreTerminalState(`onboarding finish`,{resumeStdinIfPaused:!1}),exitCode!==null&&runtime.exit(exitCode)}}export{runInteractiveOnboarding as t};
@@ -1 +1 @@
1
- import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import{t as restoreTerminalState}from"./restore-gPan2ZAn.js";import{t as WizardCancelledError}from"./prompts-Bchzq3K0.js";import{t as createClackPrompter}from"./clack-prompter-Dg23_riR.js";import{t as runOnboardingWizard}from"./onboarding-D4-HDbmU.js";async function runInteractiveOnboarding(opts,runtime=defaultRuntime){let prompter=createClackPrompter(),exitCode=null;try{await runOnboardingWizard(opts,runtime,prompter)}catch(err){if(err instanceof WizardCancelledError){exitCode=1;return}throw err}finally{restoreTerminalState(`onboarding finish`,{resumeStdinIfPaused:!1}),exitCode!==null&&runtime.exit(exitCode)}}export{runInteractiveOnboarding as t};
1
+ import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import{t as restoreTerminalState}from"./restore-gPan2ZAn.js";import{t as WizardCancelledError}from"./prompts-Bchzq3K0.js";import{t as createClackPrompter}from"./clack-prompter-Dg23_riR.js";import{t as runOnboardingWizard}from"./onboarding-BSENgR9C.js";async function runInteractiveOnboarding(opts,runtime=defaultRuntime){let prompter=createClackPrompter(),exitCode=null;try{await runOnboardingWizard(opts,runtime,prompter)}catch(err){if(err instanceof WizardCancelledError){exitCode=1;return}throw err}finally{restoreTerminalState(`onboarding finish`,{resumeStdinIfPaused:!1}),exitCode!==null&&runtime.exit(exitCode)}}export{runInteractiveOnboarding as t};
@@ -1 +1 @@
1
- import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./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"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import"./io-3R_ZyUxB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-_1Ca6jGb.js";import"./progress-BfOtdN6b.js";import"./prompt-style-BpVK43GK.js";import"./note-B6NtFdXt.js";import"./clack-prompter-Dg23_riR.js";import"./onboarding-D4-HDbmU.js";import{t as runInteractiveOnboarding}from"./onboard-interactive-zgjmwJz-.js";export{runInteractiveOnboarding};
1
+ import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./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"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import"./io-BLBq4T2o.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BgV_FYSq.js";import"./progress-BfOtdN6b.js";import"./prompt-style-BpVK43GK.js";import"./note-B6NtFdXt.js";import"./clack-prompter-Dg23_riR.js";import"./onboarding-BSENgR9C.js";import{t as runInteractiveOnboarding}from"./onboard-interactive-JNux9zfA.js";export{runInteractiveOnboarding};
@@ -1 +1 @@
1
- import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./auth-profiles-C1VbcUOm.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"./io-CohJffHG.js";import"./manifest-registry-009gLJ4l.js";import"./config-toczWD3q.js";import"./progress-Cqb-jAjT.js";import"./prompt-style-BMWmaqSC.js";import"./note-DgDXuE0F.js";import"./clack-prompter-B52CP7eY.js";import"./onboarding-CP9rrz8y.js";import{t as runInteractiveOnboarding}from"./onboard-interactive-DYJttZ2w.js";export{runInteractiveOnboarding};
1
+ import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./auth-profiles-pt7Tr4HA.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"./io-D9hC2aG0.js";import"./manifest-registry-009gLJ4l.js";import"./config-BpChMIJ6.js";import"./progress-Cqb-jAjT.js";import"./prompt-style-BMWmaqSC.js";import"./note-DgDXuE0F.js";import"./clack-prompter-B52CP7eY.js";import"./onboarding-CIaZLNc1.js";import{t as runInteractiveOnboarding}from"./onboard-interactive-Cl2K3EYn.js";export{runInteractiveOnboarding};
@@ -1,3 +1,3 @@
1
- import{r as detectBinary}from"./onboard-helpers-CckrS8_K.js";import{n as resolveWideAreaDiscoveryDomain}from"./widearea-dns-DvQozd9v.js";import{t as discoverGatewayBeacons}from"./bonjour-discovery-CViQz7cm.js";const DEFAULT_GATEWAY_URL=`ws://127.0.0.1:18789`;function pickHost(beacon){return beacon.host||beacon.tailnetDns||beacon.lanHost}function buildLabel(beacon){let host=pickHost(beacon),port=beacon.port??beacon.gatewayPort??18789;return`${beacon.displayName??beacon.instanceName} (${host?`${host}:${port}`:`host unknown`})`}function ensureWsUrl(value){return value.trim()||DEFAULT_GATEWAY_URL}async function promptRemoteGatewayConfig(cfg,prompter){let selectedBeacon=null,suggestedUrl=cfg.gateway?.remote?.url??DEFAULT_GATEWAY_URL,hasBonjourTool=await detectBinary(`dns-sd`)||await detectBinary(`avahi-browse`),wantsDiscover=hasBonjourTool?await prompter.confirm({message:`Discover gateway on LAN (Bonjour)?`,initialValue:!0}):!1;if(hasBonjourTool||await prompter.note([`Bonjour discovery requires dns-sd (macOS) or avahi-browse (Linux).`,`Docs: https://docs.builderforce.ai/gateway/discovery`].join(`
1
+ import{r as detectBinary}from"./onboard-helpers-Ce_c4Raj.js";import{n as resolveWideAreaDiscoveryDomain}from"./widearea-dns-DvQozd9v.js";import{t as discoverGatewayBeacons}from"./bonjour-discovery-CViQz7cm.js";const DEFAULT_GATEWAY_URL=`ws://127.0.0.1:18789`;function pickHost(beacon){return beacon.host||beacon.tailnetDns||beacon.lanHost}function buildLabel(beacon){let host=pickHost(beacon),port=beacon.port??beacon.gatewayPort??18789;return`${beacon.displayName??beacon.instanceName} (${host?`${host}:${port}`:`host unknown`})`}function ensureWsUrl(value){return value.trim()||DEFAULT_GATEWAY_URL}async function promptRemoteGatewayConfig(cfg,prompter){let selectedBeacon=null,suggestedUrl=cfg.gateway?.remote?.url??DEFAULT_GATEWAY_URL,hasBonjourTool=await detectBinary(`dns-sd`)||await detectBinary(`avahi-browse`),wantsDiscover=hasBonjourTool?await prompter.confirm({message:`Discover gateway on LAN (Bonjour)?`,initialValue:!0}):!1;if(hasBonjourTool||await prompter.note([`Bonjour discovery requires dns-sd (macOS) or avahi-browse (Linux).`,`Docs: https://docs.builderforce.ai/gateway/discovery`].join(`
2
2
  `),`Discovery`),wantsDiscover){let wideAreaDomain=resolveWideAreaDiscoveryDomain({configDomain:cfg.discovery?.wideArea?.domain}),spin=prompter.progress(`Searching for gateways…`),beacons=await discoverGatewayBeacons({timeoutMs:2e3,wideAreaDomain});if(spin.stop(beacons.length>0?`Found ${beacons.length} gateway(s)`:`No gateways found`),beacons.length>0){let selection=await prompter.select({message:`Select gateway`,options:[...beacons.map((beacon,index)=>({value:String(index),label:buildLabel(beacon)})),{value:`manual`,label:`Enter URL manually`}]});if(selection!==`manual`){let idx=Number.parseInt(String(selection),10);selectedBeacon=Number.isFinite(idx)?beacons[idx]??null:null}}}if(selectedBeacon){let host=pickHost(selectedBeacon),port=selectedBeacon.port??selectedBeacon.gatewayPort??18789;host&&(await prompter.select({message:`Connection method`,options:[{value:`direct`,label:`Direct gateway WS (${host}:${port})`},{value:`ssh`,label:`SSH tunnel (loopback)`}]})===`direct`?suggestedUrl=`ws://${host}:${port}`:(suggestedUrl=DEFAULT_GATEWAY_URL,await prompter.note([`Start a tunnel before using the CLI:`,`ssh -N -L 18789:127.0.0.1:18789 <user>@${host}${selectedBeacon.sshPort?` -p ${selectedBeacon.sshPort}`:``}`,`Docs: https://docs.builderforce.ai/gateway/remote`].join(`
3
3
  `),`SSH tunnel`)))}let urlInput=await prompter.text({message:`Gateway WebSocket URL`,initialValue:suggestedUrl,validate:value=>String(value).trim().startsWith(`ws://`)||String(value).trim().startsWith(`wss://`)?void 0:`URL must start with ws:// or wss://`}),url=ensureWsUrl(String(urlInput)),authChoice=await prompter.select({message:`Gateway auth`,options:[{value:`token`,label:`Token (recommended)`},{value:`off`,label:`No auth`}]}),token=cfg.gateway?.remote?.token??``;return token=authChoice===`token`?String(await prompter.text({message:`Gateway token`,initialValue:token,validate:value=>value?.trim()?void 0:`Required`})).trim():``,{...cfg,gateway:{...cfg.gateway,mode:`remote`,remote:{url,token:token||void 0}}}}export{promptRemoteGatewayConfig as t};
@@ -1,3 +1,3 @@
1
- import{r as detectBinary}from"./onboard-helpers-Cf5dNq7-.js";import{n as resolveWideAreaDiscoveryDomain}from"./widearea-dns-CZR56vQb.js";import{t as discoverGatewayBeacons}from"./bonjour-discovery-Dq1G1iS-.js";const DEFAULT_GATEWAY_URL=`ws://127.0.0.1:18789`;function pickHost(beacon){return beacon.host||beacon.tailnetDns||beacon.lanHost}function buildLabel(beacon){let host=pickHost(beacon),port=beacon.port??beacon.gatewayPort??18789;return`${beacon.displayName??beacon.instanceName} (${host?`${host}:${port}`:`host unknown`})`}function ensureWsUrl(value){return value.trim()||DEFAULT_GATEWAY_URL}async function promptRemoteGatewayConfig(cfg,prompter){let selectedBeacon=null,suggestedUrl=cfg.gateway?.remote?.url??DEFAULT_GATEWAY_URL,hasBonjourTool=await detectBinary(`dns-sd`)||await detectBinary(`avahi-browse`),wantsDiscover=hasBonjourTool?await prompter.confirm({message:`Discover gateway on LAN (Bonjour)?`,initialValue:!0}):!1;if(hasBonjourTool||await prompter.note([`Bonjour discovery requires dns-sd (macOS) or avahi-browse (Linux).`,`Docs: https://docs.builderforce.ai/gateway/discovery`].join(`
1
+ import{r as detectBinary}from"./onboard-helpers-CiHzTaFX.js";import{n as resolveWideAreaDiscoveryDomain}from"./widearea-dns-CZR56vQb.js";import{t as discoverGatewayBeacons}from"./bonjour-discovery-Dq1G1iS-.js";const DEFAULT_GATEWAY_URL=`ws://127.0.0.1:18789`;function pickHost(beacon){return beacon.host||beacon.tailnetDns||beacon.lanHost}function buildLabel(beacon){let host=pickHost(beacon),port=beacon.port??beacon.gatewayPort??18789;return`${beacon.displayName??beacon.instanceName} (${host?`${host}:${port}`:`host unknown`})`}function ensureWsUrl(value){return value.trim()||DEFAULT_GATEWAY_URL}async function promptRemoteGatewayConfig(cfg,prompter){let selectedBeacon=null,suggestedUrl=cfg.gateway?.remote?.url??DEFAULT_GATEWAY_URL,hasBonjourTool=await detectBinary(`dns-sd`)||await detectBinary(`avahi-browse`),wantsDiscover=hasBonjourTool?await prompter.confirm({message:`Discover gateway on LAN (Bonjour)?`,initialValue:!0}):!1;if(hasBonjourTool||await prompter.note([`Bonjour discovery requires dns-sd (macOS) or avahi-browse (Linux).`,`Docs: https://docs.builderforce.ai/gateway/discovery`].join(`
2
2
  `),`Discovery`),wantsDiscover){let wideAreaDomain=resolveWideAreaDiscoveryDomain({configDomain:cfg.discovery?.wideArea?.domain}),spin=prompter.progress(`Searching for gateways…`),beacons=await discoverGatewayBeacons({timeoutMs:2e3,wideAreaDomain});if(spin.stop(beacons.length>0?`Found ${beacons.length} gateway(s)`:`No gateways found`),beacons.length>0){let selection=await prompter.select({message:`Select gateway`,options:[...beacons.map((beacon,index)=>({value:String(index),label:buildLabel(beacon)})),{value:`manual`,label:`Enter URL manually`}]});if(selection!==`manual`){let idx=Number.parseInt(String(selection),10);selectedBeacon=Number.isFinite(idx)?beacons[idx]??null:null}}}if(selectedBeacon){let host=pickHost(selectedBeacon),port=selectedBeacon.port??selectedBeacon.gatewayPort??18789;host&&(await prompter.select({message:`Connection method`,options:[{value:`direct`,label:`Direct gateway WS (${host}:${port})`},{value:`ssh`,label:`SSH tunnel (loopback)`}]})===`direct`?suggestedUrl=`ws://${host}:${port}`:(suggestedUrl=DEFAULT_GATEWAY_URL,await prompter.note([`Start a tunnel before using the CLI:`,`ssh -N -L 18789:127.0.0.1:18789 <user>@${host}${selectedBeacon.sshPort?` -p ${selectedBeacon.sshPort}`:``}`,`Docs: https://docs.builderforce.ai/gateway/remote`].join(`
3
3
  `),`SSH tunnel`)))}let urlInput=await prompter.text({message:`Gateway WebSocket URL`,initialValue:suggestedUrl,validate:value=>String(value).trim().startsWith(`ws://`)||String(value).trim().startsWith(`wss://`)?void 0:`URL must start with ws:// or wss://`}),url=ensureWsUrl(String(urlInput)),authChoice=await prompter.select({message:`Gateway auth`,options:[{value:`token`,label:`Token (recommended)`},{value:`off`,label:`No auth`}]}),token=cfg.gateway?.remote?.token??``;return token=authChoice===`token`?String(await prompter.text({message:`Gateway token`,initialValue:token,validate:value=>value?.trim()?void 0:`Required`})).trim():``,{...cfg,gateway:{...cfg.gateway,mode:`remote`,remote:{url,token:token||void 0}}}}export{promptRemoteGatewayConfig as t};
@@ -1 +1 @@
1
- import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./auth-profiles-C1VbcUOm.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"./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"./sessions-Bl1wwotX.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./accounts-Cx82nj4E.js";import"./accounts-DcoaLXKI.js";import"./paths-ClsbsPQP.js";import"./onboard-helpers-CckrS8_K.js";import"./prompt-style-BMWmaqSC.js";import"./widearea-dns-DvQozd9v.js";import"./bonjour-discovery-CViQz7cm.js";import{t as promptRemoteGatewayConfig}from"./onboard-remote-D5lR2lVm.js";export{promptRemoteGatewayConfig};
1
+ import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./auth-profiles-pt7Tr4HA.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"./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"./sessions-BA8Se_bT.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./accounts-Cx82nj4E.js";import"./accounts-DcoaLXKI.js";import"./paths-ClsbsPQP.js";import"./onboard-helpers-Ce_c4Raj.js";import"./prompt-style-BMWmaqSC.js";import"./widearea-dns-DvQozd9v.js";import"./bonjour-discovery-CViQz7cm.js";import{t as promptRemoteGatewayConfig}from"./onboard-remote-0-q7MG9t.js";export{promptRemoteGatewayConfig};
@@ -1 +1 @@
1
- import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./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"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import"./io-3R_ZyUxB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-_1Ca6jGb.js";import"./sessions-CdanN_ZI.js";import"./message-channel-D_jXxXQj.js";import"./plugins-D5zP6ENo.js";import"./accounts-o35LU_iy.js";import"./accounts-rmXEiebi.js";import"./accounts-BLueHgKj.js";import"./bindings-DR59065T.js";import"./paths-DJ6rztqJ.js";import"./client-xfoidwPI.js";import"./call-BbRf8gFM.js";import"./onboard-helpers-Cf5dNq7-.js";import"./prompt-style-BpVK43GK.js";import"./widearea-dns-CZR56vQb.js";import"./bonjour-discovery-Dq1G1iS-.js";import{t as promptRemoteGatewayConfig}from"./onboard-remote-BmSyHww1.js";export{promptRemoteGatewayConfig};
1
+ import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./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"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import"./io-BLBq4T2o.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BgV_FYSq.js";import"./sessions-BuZVmOWt.js";import"./message-channel-D_jXxXQj.js";import"./plugins-D5zP6ENo.js";import"./accounts-o35LU_iy.js";import"./accounts-rmXEiebi.js";import"./accounts-BLueHgKj.js";import"./bindings-DR59065T.js";import"./paths-DJ6rztqJ.js";import"./client-xfoidwPI.js";import"./call-T8ciwMTA.js";import"./onboard-helpers-CiHzTaFX.js";import"./prompt-style-BpVK43GK.js";import"./widearea-dns-CZR56vQb.js";import"./bonjour-discovery-Dq1G1iS-.js";import{t as promptRemoteGatewayConfig}from"./onboard-remote-CgAAEZpq.js";export{promptRemoteGatewayConfig};