@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{t as CONFIG_DIR}from"./utils-DbaBVFaK.js";import{t as createSubsystemLogger}from"./subsystem-B3TqcCrZ.js";import{r as loadConfig}from"./io-3R_ZyUxB.js";import{n as isLoopbackAddress,r as isLoopbackHost,t as rawDataToString}from"./ws-Bbu03j3h.js";import{r as ensurePortAvailable}from"./ports-DgmEDNOm.js";import fs from"node:fs";import os from"node:os";import path from"node:path";import{createHash,randomBytes}from"node:crypto";import{execFileSync,spawn}from"node:child_process";import{createServer}from"node:http";import WebSocket,{WebSocketServer}from"ws";const DEFAULT_BUILDERFORCE_AGENTS_BROWSER_ENABLED=!0,DEFAULT_BROWSER_EVALUATE_ENABLED=!0,DEFAULT_BUILDERFORCE_AGENTS_BROWSER_COLOR=`#FF4500`,DEFAULT_BUILDERFORCE_AGENTS_BROWSER_PROFILE_NAME=`builderforce`,DEFAULT_BROWSER_DEFAULT_PROFILE_NAME=`chrome`,DEFAULT_AI_SNAPSHOT_MAX_CHARS=8e4,DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS=1e4,DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH=6,RELAY_AUTH_HEADER=`x-builderforce-relay-token`;function headerValue(value){if(value)return Array.isArray(value)?value[0]:value}function getHeader(req,name){return headerValue(req.headers[name.toLowerCase()])}function parseBaseUrl(raw){let parsed=new URL(raw.trim().replace(/\/$/,``));if(parsed.protocol!==`http:`&&parsed.protocol!==`https:`)throw Error(`extension relay cdpUrl must be http(s), got ${parsed.protocol}`);let host=parsed.hostname,port=parsed.port?.trim()===``?parsed.protocol===`https:`?443:80:Number(parsed.port);if(!Number.isFinite(port)||port<=0||port>65535)throw Error(`extension relay cdpUrl has invalid port: ${parsed.port||`(empty)`}`);return{host,port,baseUrl:parsed.toString().replace(/\/$/,``)}}function text(res,status,bodyText){let body=Buffer.from(bodyText);res.write(`HTTP/1.1 ${status} ${status===200?`OK`:`ERR`}\r\nContent-Type: text/plain; charset=utf-8\r
1
+ import{t as CONFIG_DIR}from"./utils-DbaBVFaK.js";import{t as createSubsystemLogger}from"./subsystem-B3TqcCrZ.js";import{r as loadConfig}from"./io-BLBq4T2o.js";import{n as isLoopbackAddress,r as isLoopbackHost,t as rawDataToString}from"./ws-Bbu03j3h.js";import{r as ensurePortAvailable}from"./ports-DgmEDNOm.js";import fs from"node:fs";import os from"node:os";import path from"node:path";import{createHash,randomBytes}from"node:crypto";import{execFileSync,spawn}from"node:child_process";import{createServer}from"node:http";import WebSocket,{WebSocketServer}from"ws";const DEFAULT_BUILDERFORCE_AGENTS_BROWSER_ENABLED=!0,DEFAULT_BROWSER_EVALUATE_ENABLED=!0,DEFAULT_BUILDERFORCE_AGENTS_BROWSER_COLOR=`#FF4500`,DEFAULT_BUILDERFORCE_AGENTS_BROWSER_PROFILE_NAME=`builderforce`,DEFAULT_BROWSER_DEFAULT_PROFILE_NAME=`chrome`,DEFAULT_AI_SNAPSHOT_MAX_CHARS=8e4,DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS=1e4,DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH=6,RELAY_AUTH_HEADER=`x-builderforce-relay-token`;function headerValue(value){if(value)return Array.isArray(value)?value[0]:value}function getHeader(req,name){return headerValue(req.headers[name.toLowerCase()])}function parseBaseUrl(raw){let parsed=new URL(raw.trim().replace(/\/$/,``));if(parsed.protocol!==`http:`&&parsed.protocol!==`https:`)throw Error(`extension relay cdpUrl must be http(s), got ${parsed.protocol}`);let host=parsed.hostname,port=parsed.port?.trim()===``?parsed.protocol===`https:`?443:80:Number(parsed.port);if(!Number.isFinite(port)||port<=0||port>65535)throw Error(`extension relay cdpUrl has invalid port: ${parsed.port||`(empty)`}`);return{host,port,baseUrl:parsed.toString().replace(/\/$/,``)}}function text(res,status,bodyText){let body=Buffer.from(bodyText);res.write(`HTTP/1.1 ${status} ${status===200?`OK`:`ERR`}\r\nContent-Type: text/plain; charset=utf-8\r
2
2
  Content-Length: ${body.length}\r\nConnection: close\r
3
3
  \r
4
4
  `),res.write(body),res.end()}function rejectUpgrade(socket,status,bodyText){text(socket,status,bodyText);try{socket.destroy()}catch{}}const serversByPort=new Map,relayAuthByPort=new Map;function resolveGatewayAuthToken(){let envToken=process.env.BUILDERFORCE_AGENTS_GATEWAY_TOKEN?.trim()||process.env.BUILDERFORCE_AGENTS_GATEWAY_TOKEN?.trim();if(envToken)return envToken;try{let configToken=loadConfig().gateway?.auth?.token?.trim();if(configToken)return configToken}catch{}return null}function deriveDeterministicRelayAuthToken(port){let gatewayToken=resolveGatewayAuthToken();return gatewayToken?createHash(`sha256`).update(`builderforce-relay:${port}:`).update(gatewayToken).digest(`base64url`):null}function resolveRelayAuthToken(port){return deriveDeterministicRelayAuthToken(port)??randomBytes(32).toString(`base64url`)}function isAddrInUseError(err){return typeof err==`object`&&!!err&&`code`in err&&err.code===`EADDRINUSE`}async function looksLikeBuilderForceAgentsRelay(baseUrl){let ctrl=new AbortController,timer=setTimeout(()=>ctrl.abort(),500);try{let statusUrl=new URL(`/extension/status`,`${baseUrl}/`).toString(),res=await fetch(statusUrl,{signal:ctrl.signal});return res.ok?typeof(await res.json()).connected==`boolean`:!1}catch{return!1}finally{clearTimeout(timer)}}function relayAuthTokenForUrl(url){try{let parsed=new URL(url);if(!isLoopbackHost(parsed.hostname))return null;let port=parsed.port?.trim()===``?parsed.protocol===`https:`||parsed.protocol===`wss:`?443:80:Number(parsed.port);return Number.isFinite(port)?relayAuthByPort.get(port)??deriveDeterministicRelayAuthToken(port):null}catch{return null}}function getChromeExtensionRelayAuthHeaders(url){let token=relayAuthTokenForUrl(url);return token?{[RELAY_AUTH_HEADER]:token}:{}}async function ensureChromeExtensionRelayServer(opts){let info=parseBaseUrl(opts.cdpUrl);if(!isLoopbackHost(info.host))throw Error(`extension relay requires loopback cdpUrl host (got ${info.host})`);let existing=serversByPort.get(info.port);if(existing)return existing;let relayAuthToken=resolveRelayAuthToken(info.port),extensionWs=null,cdpClients=new Set,connectedTargets=new Map,pendingExtension=new Map,nextExtensionId=1,sendToExtension=async payload=>{let ws=extensionWs;if(!ws||ws.readyState!==WebSocket.OPEN)throw Error(`Chrome extension not connected`);return ws.send(JSON.stringify(payload)),await new Promise((resolve,reject)=>{let timer=setTimeout(()=>{pendingExtension.delete(payload.id),reject(Error(`extension request timeout: ${payload.params.method}`))},3e4);pendingExtension.set(payload.id,{resolve,reject,timer})})},broadcastToCdpClients=evt=>{let msg=JSON.stringify(evt);for(let ws of cdpClients)ws.readyState===WebSocket.OPEN&&ws.send(msg)},sendResponseToCdp=(ws,res)=>{ws.readyState===WebSocket.OPEN&&ws.send(JSON.stringify(res))},ensureTargetEventsForClient=(ws,mode)=>{for(let target of connectedTargets.values())mode===`autoAttach`?ws.send(JSON.stringify({method:`Target.attachedToTarget`,params:{sessionId:target.sessionId,targetInfo:{...target.targetInfo,attached:!0},waitingForDebugger:!1}})):ws.send(JSON.stringify({method:`Target.targetCreated`,params:{targetInfo:{...target.targetInfo,attached:!0}}}))},routeCdpCommand=async cmd=>{switch(cmd.method){case`Browser.getVersion`:return{protocolVersion:`1.3`,product:`Chrome/BuilderForceAgents-Extension-Relay`,revision:`0`,userAgent:`BuilderForceAgents-Extension-Relay`,jsVersion:`V8`};case`Browser.setDownloadBehavior`:return{};case`Target.setAutoAttach`:case`Target.setDiscoverTargets`:return{};case`Target.getTargets`:return{targetInfos:Array.from(connectedTargets.values()).map(t=>({...t.targetInfo,attached:!0}))};case`Target.getTargetInfo`:{let params=cmd.params??{},targetId=typeof params.targetId==`string`?params.targetId:void 0;if(targetId){for(let t of connectedTargets.values())if(t.targetId===targetId)return{targetInfo:t.targetInfo}}if(cmd.sessionId&&connectedTargets.has(cmd.sessionId)){let t=connectedTargets.get(cmd.sessionId);if(t)return{targetInfo:t.targetInfo}}return{targetInfo:Array.from(connectedTargets.values())[0]?.targetInfo}}case`Target.attachToTarget`:{let params=cmd.params??{},targetId=typeof params.targetId==`string`?params.targetId:void 0;if(!targetId)throw Error(`targetId required`);for(let t of connectedTargets.values())if(t.targetId===targetId)return{sessionId:t.sessionId};throw Error(`target not found`)}default:return await sendToExtension({id:nextExtensionId++,method:`forwardCDPCommand`,params:{method:cmd.method,sessionId:cmd.sessionId,params:cmd.params}})}},server=createServer((req,res)=>{let path=new URL(req.url??`/`,info.baseUrl).pathname;if(path.startsWith(`/json`)){let token=getHeader(req,RELAY_AUTH_HEADER);if(!token||token!==relayAuthToken){res.writeHead(401),res.end(`Unauthorized`);return}}if(req.method===`HEAD`&&path===`/`){res.writeHead(200),res.end();return}if(path===`/`){res.writeHead(200,{"Content-Type":`text/plain; charset=utf-8`}),res.end(`OK`);return}if(path===`/extension/status`){res.writeHead(200,{"Content-Type":`application/json`}),res.end(JSON.stringify({connected:!!extensionWs}));return}let cdpWsUrl=`${`ws://${req.headers.host?.trim()||`${info.host}:${info.port}`}`}/cdp`;if((path===`/json/version`||path===`/json/version/`)&&(req.method===`GET`||req.method===`PUT`)){let payload={Browser:`BuilderForceAgents/extension-relay`,"Protocol-Version":`1.3`};extensionWs&&(payload.webSocketDebuggerUrl=cdpWsUrl),res.writeHead(200,{"Content-Type":`application/json`}),res.end(JSON.stringify(payload));return}if(new Set([`/json`,`/json/`,`/json/list`,`/json/list/`]).has(path)&&(req.method===`GET`||req.method===`PUT`)){let list=Array.from(connectedTargets.values()).map(t=>({id:t.targetId,type:t.targetInfo.type??`page`,title:t.targetInfo.title??``,description:t.targetInfo.title??``,url:t.targetInfo.url??``,webSocketDebuggerUrl:cdpWsUrl,devtoolsFrontendUrl:`/devtools/inspector.html?ws=${cdpWsUrl.replace(`ws://`,``)}`}));res.writeHead(200,{"Content-Type":`application/json`}),res.end(JSON.stringify(list));return}let activateMatch=path.match(/^\/json\/activate\/(.+)$/);if(activateMatch&&(req.method===`GET`||req.method===`PUT`)){let targetId=decodeURIComponent(activateMatch[1]??``).trim();if(!targetId){res.writeHead(400),res.end(`targetId required`);return}(async()=>{try{await sendToExtension({id:nextExtensionId++,method:`forwardCDPCommand`,params:{method:`Target.activateTarget`,params:{targetId}}})}catch{}})(),res.writeHead(200),res.end(`OK`);return}let closeMatch=path.match(/^\/json\/close\/(.+)$/);if(closeMatch&&(req.method===`GET`||req.method===`PUT`)){let targetId=decodeURIComponent(closeMatch[1]??``).trim();if(!targetId){res.writeHead(400),res.end(`targetId required`);return}(async()=>{try{await sendToExtension({id:nextExtensionId++,method:`forwardCDPCommand`,params:{method:`Target.closeTarget`,params:{targetId}}})}catch{}})(),res.writeHead(200),res.end(`OK`);return}res.writeHead(404),res.end(`not found`)}),wssExtension=new WebSocketServer({noServer:!0}),wssCdp=new WebSocketServer({noServer:!0});server.on(`upgrade`,(req,socket,head)=>{let pathname=new URL(req.url??`/`,info.baseUrl).pathname,remote=req.socket.remoteAddress;if(!isLoopbackAddress(remote)){rejectUpgrade(socket,403,`Forbidden`);return}let origin=headerValue(req.headers.origin);if(origin&&!origin.startsWith(`chrome-extension://`)){rejectUpgrade(socket,403,`Forbidden: invalid origin`);return}if(pathname===`/extension`){if(extensionWs){rejectUpgrade(socket,409,`Extension already connected`);return}wssExtension.handleUpgrade(req,socket,head,ws=>{wssExtension.emit(`connection`,ws,req)});return}if(pathname===`/cdp`){let token=getHeader(req,RELAY_AUTH_HEADER);if(!token||token!==relayAuthToken){rejectUpgrade(socket,401,`Unauthorized`);return}if(!extensionWs){rejectUpgrade(socket,503,`Extension not connected`);return}wssCdp.handleUpgrade(req,socket,head,ws=>{wssCdp.emit(`connection`,ws,req)});return}rejectUpgrade(socket,404,`Not Found`)}),wssExtension.on(`connection`,ws=>{extensionWs=ws;let ping=setInterval(()=>{ws.readyState===WebSocket.OPEN&&ws.send(JSON.stringify({method:`ping`}))},5e3);ws.on(`message`,data=>{let parsed=null;try{parsed=JSON.parse(rawDataToString(data))}catch{return}if(parsed&&typeof parsed==`object`&&`id`in parsed&&typeof parsed.id==`number`){let pending=pendingExtension.get(parsed.id);if(!pending)return;pendingExtension.delete(parsed.id),clearTimeout(pending.timer),`error`in parsed&&typeof parsed.error==`string`&&parsed.error.trim()?pending.reject(Error(parsed.error)):pending.resolve(parsed.result);return}if(parsed&&typeof parsed==`object`&&`method`in parsed){if(parsed.method===`pong`||parsed.method!==`forwardCDPEvent`)return;let evt=parsed,method=evt.params?.method,params=evt.params?.params,sessionId=evt.params?.sessionId;if(!method||typeof method!=`string`)return;if(method===`Target.attachedToTarget`){let attached=params??{};if((attached?.targetInfo?.type??`page`)!==`page`)return;if(attached?.sessionId&&attached?.targetInfo?.targetId){let prev=connectedTargets.get(attached.sessionId),nextTargetId=attached.targetInfo.targetId,prevTargetId=prev?.targetId,changedTarget=!!(prev&&prevTargetId&&prevTargetId!==nextTargetId);connectedTargets.set(attached.sessionId,{sessionId:attached.sessionId,targetId:nextTargetId,targetInfo:attached.targetInfo}),changedTarget&&prevTargetId&&broadcastToCdpClients({method:`Target.detachedFromTarget`,params:{sessionId:attached.sessionId,targetId:prevTargetId},sessionId:attached.sessionId}),(!prev||changedTarget)&&broadcastToCdpClients({method,params,sessionId});return}}if(method===`Target.detachedFromTarget`){let detached=params??{};detached?.sessionId&&connectedTargets.delete(detached.sessionId),broadcastToCdpClients({method,params,sessionId});return}if(method===`Target.targetInfoChanged`){let targetInfo=(params??{})?.targetInfo,targetId=targetInfo?.targetId;if(targetId&&(targetInfo?.type??`page`)===`page`)for(let[sid,target]of connectedTargets)target.targetId===targetId&&connectedTargets.set(sid,{...target,targetInfo:{...target.targetInfo,...targetInfo}})}broadcastToCdpClients({method,params,sessionId})}}),ws.on(`close`,()=>{clearInterval(ping),extensionWs=null;for(let[,pending]of pendingExtension)clearTimeout(pending.timer),pending.reject(Error(`extension disconnected`));pendingExtension.clear(),connectedTargets.clear();for(let client of cdpClients)try{client.close(1011,`extension disconnected`)}catch{}cdpClients.clear()})}),wssCdp.on(`connection`,ws=>{cdpClients.add(ws),ws.on(`message`,async data=>{let cmd=null;try{cmd=JSON.parse(rawDataToString(data))}catch{return}if(!(!cmd||typeof cmd!=`object`)&&!(typeof cmd.id!=`number`||typeof cmd.method!=`string`)){if(!extensionWs){sendResponseToCdp(ws,{id:cmd.id,sessionId:cmd.sessionId,error:{message:`Extension not connected`}});return}try{let result=await routeCdpCommand(cmd);if(cmd.method===`Target.setAutoAttach`&&!cmd.sessionId&&ensureTargetEventsForClient(ws,`autoAttach`),cmd.method===`Target.setDiscoverTargets`&&(cmd.params??{}).discover===!0&&ensureTargetEventsForClient(ws,`discover`),cmd.method===`Target.attachToTarget`){let params=cmd.params??{},targetId=typeof params.targetId==`string`?params.targetId:void 0;if(targetId){let target=Array.from(connectedTargets.values()).find(t=>t.targetId===targetId);target&&ws.send(JSON.stringify({method:`Target.attachedToTarget`,params:{sessionId:target.sessionId,targetInfo:{...target.targetInfo,attached:!0},waitingForDebugger:!1}}))}}sendResponseToCdp(ws,{id:cmd.id,sessionId:cmd.sessionId,result})}catch(err){sendResponseToCdp(ws,{id:cmd.id,sessionId:cmd.sessionId,error:{message:err instanceof Error?err.message:String(err)}})}}}),ws.on(`close`,()=>{cdpClients.delete(ws)})});try{await new Promise((resolve,reject)=>{server.listen(info.port,info.host,()=>resolve()),server.once(`error`,reject)})}catch(err){if(isAddrInUseError(err)&&await looksLikeBuilderForceAgentsRelay(info.baseUrl)){let existingRelay={host:info.host,port:info.port,baseUrl:info.baseUrl,cdpWsUrl:`ws://${info.host}:${info.port}/cdp`,extensionConnected:()=>!1,stop:async()=>{serversByPort.delete(info.port),relayAuthByPort.delete(info.port)}};return relayAuthByPort.set(info.port,relayAuthToken),serversByPort.set(info.port,existingRelay),existingRelay}throw err}let port=server.address()?.port??info.port,host=info.host,relay={host,port,baseUrl:`${new URL(info.baseUrl).protocol}//${host}:${port}`,cdpWsUrl:`ws://${host}:${port}/cdp`,extensionConnected:()=>!!extensionWs,stop:async()=>{serversByPort.delete(port),relayAuthByPort.delete(port);try{extensionWs?.close(1001,`server stopping`)}catch{}for(let ws of cdpClients)try{ws.close(1001,`server stopping`)}catch{}await new Promise(resolve=>{server.close(()=>resolve())}),wssExtension.close(),wssCdp.close()}};return relayAuthByPort.set(port,relayAuthToken),serversByPort.set(port,relay),relay}async function stopChromeExtensionRelayServer(opts){let info=parseBaseUrl(opts.cdpUrl),existing=serversByPort.get(info.port);return existing?(await existing.stop(),relayAuthByPort.delete(info.port),!0):!1}function getHeadersWithAuth(url,headers={}){let mergedHeaders={...getChromeExtensionRelayAuthHeaders(url),...headers};try{let parsed=new URL(url);if(Object.keys(mergedHeaders).some(key=>key.toLowerCase()===`authorization`))return mergedHeaders;if(parsed.username||parsed.password){let auth=Buffer.from(`${parsed.username}:${parsed.password}`).toString(`base64`);return{...mergedHeaders,Authorization:`Basic ${auth}`}}}catch{}return mergedHeaders}function appendCdpPath(cdpUrl,path){let url=new URL(cdpUrl);return url.pathname=`${url.pathname.replace(/\/$/,``)}${path.startsWith(`/`)?path:`/${path}`}`,url.toString()}function createCdpSender(ws){let nextId=1,pending=new Map,send=(method,params,sessionId)=>{let id=nextId++,msg={id,method,params,sessionId};return ws.send(JSON.stringify(msg)),new Promise((resolve,reject)=>{pending.set(id,{resolve,reject})})},closeWithError=err=>{for(let[,p]of pending)p.reject(err);pending.clear();try{ws.close()}catch{}};return ws.on(`error`,err=>{closeWithError(err instanceof Error?err:Error(String(err)))}),ws.on(`message`,data=>{try{let parsed=JSON.parse(rawDataToString(data));if(typeof parsed.id!=`number`)return;let p=pending.get(parsed.id);if(!p)return;if(pending.delete(parsed.id),parsed.error?.message){p.reject(Error(parsed.error.message));return}p.resolve(parsed.result)}catch{}}),ws.on(`close`,()=>{closeWithError(Error(`CDP socket closed`))}),{send,closeWithError}}async function fetchJson(url,timeoutMs=1500,init){return await(await fetchChecked(url,timeoutMs,init)).json()}async function fetchChecked(url,timeoutMs=1500,init){let ctrl=new AbortController,t=setTimeout(ctrl.abort.bind(ctrl),timeoutMs);try{let headers=getHeadersWithAuth(url,init?.headers||{}),res=await fetch(url,{...init,headers,signal:ctrl.signal});if(!res.ok)throw Error(`HTTP ${res.status}`);return res}finally{clearTimeout(t)}}async function fetchOk(url,timeoutMs=1500,init){await fetchChecked(url,timeoutMs,init)}async function withCdpSocket(wsUrl,fn,opts){let headers=getHeadersWithAuth(wsUrl,opts?.headers??{}),ws=new WebSocket(wsUrl,{handshakeTimeout:typeof opts?.handshakeTimeoutMs==`number`&&Number.isFinite(opts.handshakeTimeoutMs)?Math.max(1,Math.floor(opts.handshakeTimeoutMs)):5e3,...Object.keys(headers).length?{headers}:{}}),{send,closeWithError}=createCdpSender(ws),openPromise=new Promise((resolve,reject)=>{ws.once(`open`,()=>resolve()),ws.once(`error`,err=>reject(err)),ws.once(`close`,()=>reject(Error(`CDP socket closed`)))});try{await openPromise}catch(err){throw closeWithError(err instanceof Error?err:Error(String(err))),err}try{return await fn(send)}catch(err){throw closeWithError(err instanceof Error?err:Error(String(err))),err}finally{try{ws.close()}catch{}}}function normalizeCdpWsUrl(wsUrl,cdpUrl){let ws=new URL(wsUrl),cdp=new URL(cdpUrl);if(isLoopbackHost(ws.hostname)&&!isLoopbackHost(cdp.hostname)){ws.hostname=cdp.hostname;let cdpPort=cdp.port||(cdp.protocol===`https:`?`443`:`80`);cdpPort&&(ws.port=cdpPort),ws.protocol=cdp.protocol===`https:`?`wss:`:`ws:`}cdp.protocol===`https:`&&ws.protocol===`ws:`&&(ws.protocol=`wss:`),!ws.username&&!ws.password&&(cdp.username||cdp.password)&&(ws.username=cdp.username,ws.password=cdp.password);for(let[key,value]of cdp.searchParams.entries())ws.searchParams.has(key)||ws.searchParams.append(key,value);return ws.toString()}async function captureScreenshot(opts){return await withCdpSocket(opts.wsUrl,async send=>{await send(`Page.enable`);let clip;if(opts.fullPage){let metrics=await send(`Page.getLayoutMetrics`),size=metrics?.cssContentSize??metrics?.contentSize,width=Number(size?.width??0),height=Number(size?.height??0);width>0&&height>0&&(clip={x:0,y:0,width,height,scale:1})}let format=opts.format??`png`,quality=format===`jpeg`?Math.max(0,Math.min(100,Math.round(opts.quality??85))):void 0,base64=(await send(`Page.captureScreenshot`,{format,...quality===void 0?{}:{quality},fromSurface:!0,captureBeyondViewport:!0,...clip?{clip}:{}}))?.data;if(!base64)throw Error(`Screenshot failed: missing data`);return Buffer.from(base64,`base64`)})}async function createTargetViaCdp(opts){let version=await fetchJson(appendCdpPath(opts.cdpUrl,`/json/version`),1500),wsUrlRaw=String(version?.webSocketDebuggerUrl??``).trim(),wsUrl=wsUrlRaw?normalizeCdpWsUrl(wsUrlRaw,opts.cdpUrl):``;if(!wsUrl)throw Error(`CDP /json/version missing webSocketDebuggerUrl`);return await withCdpSocket(wsUrl,async send=>{let created=await send(`Target.createTarget`,{url:opts.url}),targetId=String(created?.targetId??``).trim();if(!targetId)throw Error(`CDP Target.createTarget returned no targetId`);return{targetId}})}function axValue(v){if(!v||typeof v!=`object`)return``;let value=v.value;return typeof value==`string`?value:typeof value==`number`||typeof value==`boolean`?String(value):``}function formatAriaSnapshot(nodes,limit){let byId=new Map;for(let n of nodes)n.nodeId&&byId.set(n.nodeId,n);let referenced=new Set;for(let n of nodes)for(let c of n.childIds??[])referenced.add(c);let root=nodes.find(n=>n.nodeId&&!referenced.has(n.nodeId))??nodes[0];if(!root?.nodeId)return[];let out=[],stack=[{id:root.nodeId,depth:0}];for(;stack.length&&out.length<limit;){let popped=stack.pop();if(!popped)break;let{id,depth}=popped,n=byId.get(id);if(!n)continue;let role=axValue(n.role),name=axValue(n.name),value=axValue(n.value),description=axValue(n.description),ref=`ax${out.length+1}`;out.push({ref,role:role||`unknown`,name:name||``,...value?{value}:{},...description?{description}:{},...typeof n.backendDOMNodeId==`number`?{backendDOMNodeId:n.backendDOMNodeId}:{},depth});let children=(n.childIds??[]).filter(c=>byId.has(c));for(let i=children.length-1;i>=0;i--){let child=children[i];child&&stack.push({id:child,depth:depth+1})}}return out}async function snapshotAria(opts){let limit=Math.max(1,Math.min(2e3,Math.floor(opts.limit??500)));return await withCdpSocket(opts.wsUrl,async send=>{await send(`Accessibility.enable`).catch(()=>{});let res=await send(`Accessibility.getFullAXTree`);return{nodes:formatAriaSnapshot(Array.isArray(res?.nodes)?res.nodes:[],limit)}})}const CHROMIUM_BUNDLE_IDS=new Set([`com.google.Chrome`,`com.google.Chrome.beta`,`com.google.Chrome.canary`,`com.google.Chrome.dev`,`com.brave.Browser`,`com.brave.Browser.beta`,`com.brave.Browser.nightly`,`com.microsoft.Edge`,`com.microsoft.EdgeBeta`,`com.microsoft.EdgeDev`,`com.microsoft.EdgeCanary`,`org.chromium.Chromium`,`com.vivaldi.Vivaldi`,`com.operasoftware.Opera`,`com.operasoftware.OperaGX`,`com.yandex.desktop.yandex-browser`,`company.thebrowser.Browser`]),CHROMIUM_DESKTOP_IDS=new Set([`google-chrome.desktop`,`google-chrome-beta.desktop`,`google-chrome-unstable.desktop`,`brave-browser.desktop`,`microsoft-edge.desktop`,`microsoft-edge-beta.desktop`,`microsoft-edge-dev.desktop`,`microsoft-edge-canary.desktop`,`chromium.desktop`,`chromium-browser.desktop`,`vivaldi.desktop`,`vivaldi-stable.desktop`,`opera.desktop`,`opera-gx.desktop`,`yandex-browser.desktop`,`org.chromium.Chromium.desktop`]),CHROMIUM_EXE_NAMES=new Set(`chrome.exe,msedge.exe,brave.exe,brave-browser.exe,chromium.exe,vivaldi.exe,opera.exe,launcher.exe,yandex.exe,yandexbrowser.exe,google chrome,google chrome canary,brave browser,microsoft edge,chromium,chrome,brave,msedge,brave-browser,google-chrome,google-chrome-stable,google-chrome-beta,google-chrome-unstable,microsoft-edge,microsoft-edge-beta,microsoft-edge-dev,microsoft-edge-canary,chromium-browser,vivaldi,vivaldi-stable,opera,opera-stable,opera-gx,yandex-browser`.split(`,`));function exists$1(filePath){try{return fs.existsSync(filePath)}catch{return!1}}function execText(command,args,timeoutMs=1200,maxBuffer=1024*1024){try{let output=execFileSync(command,args,{timeout:timeoutMs,encoding:`utf8`,maxBuffer});return String(output??``).trim()||null}catch{return null}}function inferKindFromIdentifier(identifier){let id=identifier.toLowerCase();return id.includes(`brave`)?`brave`:id.includes(`edge`)?`edge`:id.includes(`chromium`)?`chromium`:id.includes(`canary`)?`canary`:id.includes(`opera`)||id.includes(`vivaldi`)||id.includes(`yandex`)||id.includes(`thebrowser`)?`chromium`:`chrome`}function inferKindFromExecutableName(name){let lower=name.toLowerCase();return lower.includes(`brave`)?`brave`:lower.includes(`edge`)||lower.includes(`msedge`)?`edge`:lower.includes(`chromium`)?`chromium`:lower.includes(`canary`)||lower.includes(`sxs`)?`canary`:lower.includes(`opera`)||lower.includes(`vivaldi`)||lower.includes(`yandex`)?`chromium`:`chrome`}function detectDefaultChromiumExecutable(platform){return platform===`darwin`?detectDefaultChromiumExecutableMac():platform===`linux`?detectDefaultChromiumExecutableLinux():platform===`win32`?detectDefaultChromiumExecutableWindows():null}function detectDefaultChromiumExecutableMac(){let bundleId=detectDefaultBrowserBundleIdMac();if(!bundleId||!CHROMIUM_BUNDLE_IDS.has(bundleId))return null;let appPathRaw=execText(`/usr/bin/osascript`,[`-e`,`POSIX path of (path to application id "${bundleId}")`]);if(!appPathRaw)return null;let appPath=appPathRaw.trim().replace(/\/$/,``),exeName=execText(`/usr/bin/defaults`,[`read`,path.join(appPath,`Contents`,`Info`),`CFBundleExecutable`]);if(!exeName)return null;let exePath=path.join(appPath,`Contents`,`MacOS`,exeName.trim());return exists$1(exePath)?{kind:inferKindFromIdentifier(bundleId),path:exePath}:null}function detectDefaultBrowserBundleIdMac(){let plistPath=path.join(os.homedir(),`Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist`);if(!exists$1(plistPath))return null;let handlersRaw=execText(`/usr/bin/plutil`,[`-extract`,`LSHandlers`,`json`,`-o`,`-`,`--`,plistPath],2e3,5*1024*1024);if(!handlersRaw)return null;let handlers;try{handlers=JSON.parse(handlersRaw)}catch{return null}if(!Array.isArray(handlers))return null;let resolveScheme=scheme=>{let candidate=null;for(let entry of handlers){if(!entry||typeof entry!=`object`)continue;let record=entry;if(record.LSHandlerURLScheme!==scheme)continue;let role=typeof record.LSHandlerRoleAll==`string`&&record.LSHandlerRoleAll||typeof record.LSHandlerRoleViewer==`string`&&record.LSHandlerRoleViewer||null;role&&(candidate=role)}return candidate};return resolveScheme(`http`)??resolveScheme(`https`)}function detectDefaultChromiumExecutableLinux(){let desktopId=execText(`xdg-settings`,[`get`,`default-web-browser`])||execText(`xdg-mime`,[`query`,`default`,`x-scheme-handler/http`]);if(!desktopId)return null;let trimmed=desktopId.trim();if(!CHROMIUM_DESKTOP_IDS.has(trimmed))return null;let desktopPath=findDesktopFilePath(trimmed);if(!desktopPath)return null;let execLine=readDesktopExecLine(desktopPath);if(!execLine)return null;let command=extractExecutableFromExecLine(execLine);if(!command)return null;let resolved=resolveLinuxExecutablePath(command);if(!resolved)return null;let exeName=path.posix.basename(resolved).toLowerCase();return CHROMIUM_EXE_NAMES.has(exeName)?{kind:inferKindFromExecutableName(exeName),path:resolved}:null}function detectDefaultChromiumExecutableWindows(){let progId=readWindowsProgId(),command=(progId?readWindowsCommandForProgId(progId):null)||readWindowsCommandForProgId(`http`);if(!command)return null;let exePath=extractWindowsExecutablePath(expandWindowsEnvVars(command));if(!exePath||!exists$1(exePath))return null;let exeName=path.win32.basename(exePath).toLowerCase();return CHROMIUM_EXE_NAMES.has(exeName)?{kind:inferKindFromExecutableName(exeName),path:exePath}:null}function findDesktopFilePath(desktopId){let candidates=[path.join(os.homedir(),`.local`,`share`,`applications`,desktopId),path.join(`/usr/local/share/applications`,desktopId),path.join(`/usr/share/applications`,desktopId),path.join(`/var/lib/snapd/desktop/applications`,desktopId)];for(let candidate of candidates)if(exists$1(candidate))return candidate;return null}function readDesktopExecLine(desktopPath){try{let lines=fs.readFileSync(desktopPath,`utf8`).split(/\r?\n/);for(let line of lines)if(line.startsWith(`Exec=`))return line.slice(5).trim()}catch{}return null}function extractExecutableFromExecLine(execLine){let tokens=splitExecLine(execLine);for(let token of tokens)if(token&&token!==`env`&&!(token.includes(`=`)&&!token.startsWith(`/`)&&!token.includes(`\\`)))return token.replace(/^["']|["']$/g,``);return null}function splitExecLine(line){let tokens=[],current=``,inQuotes=!1,quoteChar=``;for(let i=0;i<line.length;i+=1){let ch=line[i];if((ch===`"`||ch===`'`)&&(!inQuotes||ch===quoteChar)){inQuotes?(inQuotes=!1,quoteChar=``):(inQuotes=!0,quoteChar=ch);continue}if(!inQuotes&&/\s/.test(ch)){current&&=(tokens.push(current),``);continue}current+=ch}return current&&tokens.push(current),tokens}function resolveLinuxExecutablePath(command){let cleaned=command.trim().replace(/%[a-zA-Z]/g,``);if(!cleaned)return null;if(cleaned.startsWith(`/`))return cleaned;let resolved=execText(`which`,[cleaned],800);return resolved?resolved.trim():null}function readWindowsProgId(){let output=execText(`reg`,[`query`,`HKCU\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice`,`/v`,`ProgId`]);return output&&output.match(/ProgId\s+REG_\w+\s+(.+)$/im)?.[1]?.trim()||null}function readWindowsCommandForProgId(progId){let output=execText(`reg`,[`query`,progId===`http`?`HKCR\\http\\shell\\open\\command`:`HKCR\\${progId}\\shell\\open\\command`,`/ve`]);return output&&output.match(/REG_\w+\s+(.+)$/im)?.[1]?.trim()||null}function expandWindowsEnvVars(value){return value.replace(/%([^%]+)%/g,(_match,name)=>{let key=String(name??``).trim();return key?process.env[key]??`%${key}%`:_match})}function extractWindowsExecutablePath(command){let quoted=command.match(/"([^"]+\\.exe)"/i);if(quoted?.[1])return quoted[1];let unquoted=command.match(/([^\\s]+\\.exe)/i);return unquoted?.[1]?unquoted[1]:null}function findFirstExecutable(candidates){for(let candidate of candidates)if(exists$1(candidate.path))return candidate;return null}function findChromeExecutableMac(){return findFirstExecutable([{kind:`chrome`,path:`/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`},{kind:`chrome`,path:path.join(os.homedir(),`Applications/Google Chrome.app/Contents/MacOS/Google Chrome`)},{kind:`brave`,path:`/Applications/Brave Browser.app/Contents/MacOS/Brave Browser`},{kind:`brave`,path:path.join(os.homedir(),`Applications/Brave Browser.app/Contents/MacOS/Brave Browser`)},{kind:`edge`,path:`/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge`},{kind:`edge`,path:path.join(os.homedir(),`Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge`)},{kind:`chromium`,path:`/Applications/Chromium.app/Contents/MacOS/Chromium`},{kind:`chromium`,path:path.join(os.homedir(),`Applications/Chromium.app/Contents/MacOS/Chromium`)},{kind:`canary`,path:`/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary`},{kind:`canary`,path:path.join(os.homedir(),`Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary`)}])}function findChromeExecutableLinux(){return findFirstExecutable([{kind:`chrome`,path:`/usr/bin/google-chrome`},{kind:`chrome`,path:`/usr/bin/google-chrome-stable`},{kind:`chrome`,path:`/usr/bin/chrome`},{kind:`brave`,path:`/usr/bin/brave-browser`},{kind:`brave`,path:`/usr/bin/brave-browser-stable`},{kind:`brave`,path:`/usr/bin/brave`},{kind:`brave`,path:`/snap/bin/brave`},{kind:`edge`,path:`/usr/bin/microsoft-edge`},{kind:`edge`,path:`/usr/bin/microsoft-edge-stable`},{kind:`chromium`,path:`/usr/bin/chromium`},{kind:`chromium`,path:`/usr/bin/chromium-browser`},{kind:`chromium`,path:`/snap/bin/chromium`}])}function findChromeExecutableWindows(){let localAppData=process.env.LOCALAPPDATA??``,programFiles=process.env.ProgramFiles??`C:\\Program Files`,programFilesX86=process.env[`ProgramFiles(x86)`]??`C:\\Program Files (x86)`,joinWin=path.win32.join,candidates=[];return localAppData&&(candidates.push({kind:`chrome`,path:joinWin(localAppData,`Google`,`Chrome`,`Application`,`chrome.exe`)}),candidates.push({kind:`brave`,path:joinWin(localAppData,`BraveSoftware`,`Brave-Browser`,`Application`,`brave.exe`)}),candidates.push({kind:`edge`,path:joinWin(localAppData,`Microsoft`,`Edge`,`Application`,`msedge.exe`)}),candidates.push({kind:`chromium`,path:joinWin(localAppData,`Chromium`,`Application`,`chrome.exe`)}),candidates.push({kind:`canary`,path:joinWin(localAppData,`Google`,`Chrome SxS`,`Application`,`chrome.exe`)})),candidates.push({kind:`chrome`,path:joinWin(programFiles,`Google`,`Chrome`,`Application`,`chrome.exe`)}),candidates.push({kind:`chrome`,path:joinWin(programFilesX86,`Google`,`Chrome`,`Application`,`chrome.exe`)}),candidates.push({kind:`brave`,path:joinWin(programFiles,`BraveSoftware`,`Brave-Browser`,`Application`,`brave.exe`)}),candidates.push({kind:`brave`,path:joinWin(programFilesX86,`BraveSoftware`,`Brave-Browser`,`Application`,`brave.exe`)}),candidates.push({kind:`edge`,path:joinWin(programFiles,`Microsoft`,`Edge`,`Application`,`msedge.exe`)}),candidates.push({kind:`edge`,path:joinWin(programFilesX86,`Microsoft`,`Edge`,`Application`,`msedge.exe`)}),findFirstExecutable(candidates)}function resolveBrowserExecutableForPlatform(resolved,platform){if(resolved.executablePath){if(!exists$1(resolved.executablePath))throw Error(`browser.executablePath not found: ${resolved.executablePath}`);return{kind:`custom`,path:resolved.executablePath}}return detectDefaultChromiumExecutable(platform)||(platform===`darwin`?findChromeExecutableMac():platform===`linux`?findChromeExecutableLinux():platform===`win32`?findChromeExecutableWindows():null)}function decoratedMarkerPath(userDataDir){return path.join(userDataDir,`.builderforce-profile-decorated`)}function safeReadJson(filePath){try{if(!fs.existsSync(filePath))return null;let raw=fs.readFileSync(filePath,`utf-8`),parsed=JSON.parse(raw);return typeof parsed!=`object`||!parsed||Array.isArray(parsed)?null:parsed}catch{return null}}function safeWriteJson(filePath,data){fs.mkdirSync(path.dirname(filePath),{recursive:!0}),fs.writeFileSync(filePath,JSON.stringify(data,null,2))}function setDeep(obj,keys,value){let node=obj;for(let key of keys.slice(0,-1)){let next=node[key];(typeof next!=`object`||!next||Array.isArray(next))&&(node[key]={}),node=node[key]}node[keys[keys.length-1]??``]=value}function parseHexRgbToSignedArgbInt(hex){let cleaned=hex.trim().replace(/^#/,``);if(!/^[0-9a-fA-F]{6}$/.test(cleaned))return null;let argbUnsigned=255<<24|Number.parseInt(cleaned,16);return argbUnsigned>2147483647?argbUnsigned-4294967296:argbUnsigned}function isProfileDecorated(userDataDir,desiredName,desiredColorHex){let desiredColorInt=parseHexRgbToSignedArgbInt(desiredColorHex),localStatePath=path.join(userDataDir,`Local State`),preferencesPath=path.join(userDataDir,`Default`,`Preferences`),profile=safeReadJson(localStatePath)?.profile,infoCache=typeof profile==`object`&&profile&&!Array.isArray(profile)?profile.info_cache:null,info=typeof infoCache==`object`&&infoCache&&!Array.isArray(infoCache)&&typeof infoCache.Default==`object`&&infoCache.Default!==null&&!Array.isArray(infoCache.Default)?infoCache.Default:null,prefs=safeReadJson(preferencesPath),browserTheme=(()=>{let browser=prefs?.browser,theme=typeof browser==`object`&&browser&&!Array.isArray(browser)?browser.theme:null;return typeof theme==`object`&&theme&&!Array.isArray(theme)?theme:null})(),autogeneratedTheme=(()=>{let autogenerated=prefs?.autogenerated,theme=typeof autogenerated==`object`&&autogenerated&&!Array.isArray(autogenerated)?autogenerated.theme:null;return typeof theme==`object`&&theme&&!Array.isArray(theme)?theme:null})(),nameOk=typeof info?.name==`string`?info.name===desiredName:!0;if(desiredColorInt==null)return nameOk;let localSeedOk=typeof info?.profile_color_seed==`number`?info.profile_color_seed===desiredColorInt:!1,prefOk=typeof browserTheme?.user_color2==`number`&&browserTheme.user_color2===desiredColorInt||typeof autogeneratedTheme?.color==`number`&&autogeneratedTheme.color===desiredColorInt;return nameOk&&localSeedOk&&prefOk}function decorateBuilderForceAgentsProfile(userDataDir,opts){let desiredName=opts?.name??DEFAULT_BUILDERFORCE_AGENTS_BROWSER_PROFILE_NAME,desiredColor=(opts?.color??DEFAULT_BUILDERFORCE_AGENTS_BROWSER_COLOR).toUpperCase(),desiredColorInt=parseHexRgbToSignedArgbInt(desiredColor),localStatePath=path.join(userDataDir,`Local State`),preferencesPath=path.join(userDataDir,`Default`,`Preferences`),localState=safeReadJson(localStatePath)??{};setDeep(localState,[`profile`,`info_cache`,`Default`,`name`],desiredName),setDeep(localState,[`profile`,`info_cache`,`Default`,`shortcut_name`],desiredName),setDeep(localState,[`profile`,`info_cache`,`Default`,`user_name`],desiredName),setDeep(localState,[`profile`,`info_cache`,`Default`,`profile_color`],desiredColor),setDeep(localState,[`profile`,`info_cache`,`Default`,`user_color`],desiredColor),desiredColorInt!=null&&(setDeep(localState,[`profile`,`info_cache`,`Default`,`profile_color_seed`],desiredColorInt),setDeep(localState,[`profile`,`info_cache`,`Default`,`profile_highlight_color`],desiredColorInt),setDeep(localState,[`profile`,`info_cache`,`Default`,`default_avatar_fill_color`],desiredColorInt),setDeep(localState,[`profile`,`info_cache`,`Default`,`default_avatar_stroke_color`],desiredColorInt)),safeWriteJson(localStatePath,localState);let prefs=safeReadJson(preferencesPath)??{};setDeep(prefs,[`profile`,`name`],desiredName),setDeep(prefs,[`profile`,`profile_color`],desiredColor),setDeep(prefs,[`profile`,`user_color`],desiredColor),desiredColorInt!=null&&(setDeep(prefs,[`autogenerated`,`theme`,`color`],desiredColorInt),setDeep(prefs,[`browser`,`theme`,`user_color2`],desiredColorInt)),safeWriteJson(preferencesPath,prefs);try{fs.writeFileSync(decoratedMarkerPath(userDataDir),`${Date.now()}\n`,`utf-8`)}catch{}}function ensureProfileCleanExit(userDataDir){let preferencesPath=path.join(userDataDir,`Default`,`Preferences`),prefs=safeReadJson(preferencesPath)??{};setDeep(prefs,[`exit_type`],`Normal`),setDeep(prefs,[`exited_cleanly`],!0),safeWriteJson(preferencesPath,prefs)}const log=createSubsystemLogger(`browser`).child(`chrome`);function exists(filePath){try{return fs.existsSync(filePath)}catch{return!1}}function resolveBrowserExecutable(resolved){return resolveBrowserExecutableForPlatform(resolved,process.platform)}function resolveBuilderForceAgentsUserDataDir(profileName=DEFAULT_BUILDERFORCE_AGENTS_BROWSER_PROFILE_NAME){return path.join(CONFIG_DIR,`browser`,profileName,`user-data`)}function cdpUrlForPort(cdpPort){return`http://127.0.0.1:${cdpPort}`}async function isChromeReachable(cdpUrl,timeoutMs=500){return!!await fetchChromeVersion(cdpUrl,timeoutMs)}async function fetchChromeVersion(cdpUrl,timeoutMs=500){let ctrl=new AbortController,t=setTimeout(ctrl.abort.bind(ctrl),timeoutMs);try{let versionUrl=appendCdpPath(cdpUrl,`/json/version`),res=await fetch(versionUrl,{signal:ctrl.signal,headers:getHeadersWithAuth(versionUrl)});if(!res.ok)return null;let data=await res.json();return!data||typeof data!=`object`?null:data}catch{return null}finally{clearTimeout(t)}}async function getChromeWebSocketUrl(cdpUrl,timeoutMs=500){let version=await fetchChromeVersion(cdpUrl,timeoutMs),wsUrl=String(version?.webSocketDebuggerUrl??``).trim();return wsUrl?normalizeCdpWsUrl(wsUrl,cdpUrl):null}async function canOpenWebSocket(wsUrl,timeoutMs=800){return await new Promise(resolve=>{let headers=getHeadersWithAuth(wsUrl),ws=new WebSocket(wsUrl,{handshakeTimeout:timeoutMs,...Object.keys(headers).length?{headers}:{}}),timer=setTimeout(()=>{try{ws.terminate()}catch{}resolve(!1)},Math.max(50,timeoutMs+25));ws.once(`open`,()=>{clearTimeout(timer);try{ws.close()}catch{}resolve(!0)}),ws.once(`error`,()=>{clearTimeout(timer),resolve(!1)})})}async function isChromeCdpReady(cdpUrl,timeoutMs=500,handshakeTimeoutMs=800){let wsUrl=await getChromeWebSocketUrl(cdpUrl,timeoutMs);return wsUrl?await canOpenWebSocket(wsUrl,handshakeTimeoutMs):!1}async function launchBuilderForceAgentsChrome(resolved,profile){if(!profile.cdpIsLoopback)throw Error(`Profile "${profile.name}" is remote; cannot launch local Chrome.`);await ensurePortAvailable(profile.cdpPort);let exe=resolveBrowserExecutable(resolved);if(!exe)throw Error(`No supported browser found (Chrome/Brave/Edge/Chromium on macOS, Linux, or Windows).`);let userDataDir=resolveBuilderForceAgentsUserDataDir(profile.name);fs.mkdirSync(userDataDir,{recursive:!0});let needsDecorate=!isProfileDecorated(userDataDir,profile.name,(profile.color??DEFAULT_BUILDERFORCE_AGENTS_BROWSER_COLOR).toUpperCase()),spawnOnce=()=>{let args=[`--remote-debugging-port=${profile.cdpPort}`,`--user-data-dir=${userDataDir}`,`--no-first-run`,`--no-default-browser-check`,`--disable-sync`,`--disable-background-networking`,`--disable-component-update`,`--disable-features=Translate,MediaRouter`,`--disable-session-crashed-bubble`,`--hide-crash-restore-bubble`,`--password-store=basic`];return resolved.headless&&(args.push(`--headless=new`),args.push(`--disable-gpu`)),resolved.noSandbox&&(args.push(`--no-sandbox`),args.push(`--disable-setuid-sandbox`)),process.platform===`linux`&&args.push(`--disable-dev-shm-usage`),args.push(`--disable-blink-features=AutomationControlled`),resolved.extraArgs.length>0&&args.push(...resolved.extraArgs),args.push(`about:blank`),spawn(exe.path,args,{stdio:`pipe`,env:{...process.env,HOME:os.homedir()}})},startedAt=Date.now(),localStatePath=path.join(userDataDir,`Local State`),preferencesPath=path.join(userDataDir,`Default`,`Preferences`);if(!exists(localStatePath)||!exists(preferencesPath)){let bootstrap=spawnOnce(),deadline=Date.now()+1e4;for(;Date.now()<deadline&&!(exists(localStatePath)&&exists(preferencesPath));)await new Promise(r=>setTimeout(r,100));try{bootstrap.kill(`SIGTERM`)}catch{}let exitDeadline=Date.now()+5e3;for(;Date.now()<exitDeadline&&bootstrap.exitCode==null;)await new Promise(r=>setTimeout(r,50))}if(needsDecorate)try{decorateBuilderForceAgentsProfile(userDataDir,{name:profile.name,color:profile.color}),log.info(`🤖 builderforce browser profile decorated (${profile.color})`)}catch(err){log.warn(`builderforce browser profile decoration failed: ${String(err)}`)}try{ensureProfileCleanExit(userDataDir)}catch(err){log.warn(`builderforce browser clean-exit prefs failed: ${String(err)}`)}let proc=spawnOnce(),readyDeadline=Date.now()+15e3;for(;Date.now()<readyDeadline&&!await isChromeReachable(profile.cdpUrl,500);)await new Promise(r=>setTimeout(r,200));if(!await isChromeReachable(profile.cdpUrl,500)){try{proc.kill(`SIGKILL`)}catch{}throw Error(`Failed to start Chrome CDP on port ${profile.cdpPort} for profile "${profile.name}".`)}let pid=proc.pid??-1;return log.info(`🤖 builderforce browser started (${exe.kind}) profile "${profile.name}" on 127.0.0.1:${profile.cdpPort} (pid ${pid})`),{pid,exe,userDataDir,cdpPort:profile.cdpPort,startedAt,proc}}async function stopBuilderForceAgentsChrome(running,timeoutMs=2500){let proc=running.proc;if(proc.killed)return;try{proc.kill(`SIGTERM`)}catch{}let start=Date.now();for(;Date.now()-start<timeoutMs&&!(!proc.exitCode&&proc.killed);){if(!await isChromeReachable(cdpUrlForPort(running.cdpPort),200))return;await new Promise(r=>setTimeout(r,100))}try{proc.kill(`SIGKILL`)}catch{}}export{DEFAULT_BROWSER_DEFAULT_PROFILE_NAME as C,DEFAULT_BUILDERFORCE_AGENTS_BROWSER_PROFILE_NAME as D,DEFAULT_BUILDERFORCE_AGENTS_BROWSER_ENABLED as E,DEFAULT_AI_SNAPSHOT_MAX_CHARS as S,DEFAULT_BUILDERFORCE_AGENTS_BROWSER_COLOR as T,withCdpSocket as _,resolveBuilderForceAgentsUserDataDir as a,DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH as b,captureScreenshot as c,normalizeCdpWsUrl as d,snapshotAria as f,getHeadersWithAuth as g,fetchOk as h,launchBuilderForceAgentsChrome as i,createTargetViaCdp as l,fetchJson as m,isChromeCdpReady as n,stopBuilderForceAgentsChrome as o,appendCdpPath as p,isChromeReachable as r,resolveBrowserExecutableForPlatform as s,getChromeWebSocketUrl as t,formatAriaSnapshot as u,ensureChromeExtensionRelayServer as v,DEFAULT_BROWSER_EVALUATE_ENABLED as w,DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS as x,stopChromeExtensionRelayServer as y};
@@ -1,5 +1,5 @@
1
1
  // Legacy shim for pre-tsdown update-cli imports.
2
- import * as daemonCli from "../daemon-cli-DlwOVDbt.js";
2
+ import * as daemonCli from "../daemon-cli-BNzthScZ.js";
3
3
  export const registerDaemonCli = daemonCli.t;
4
4
  export const runDaemonInstall = daemonCli.u;
5
5
  export const runDaemonRestart = daemonCli.o;
@@ -1 +1 @@
1
- import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./embedded-helpers-CEsr3aQ0.js";import{Mt as loadBuilderForceAgentsPlugins}from"./reply-Cd3vVnD7.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import{t as createSubsystemLogger}from"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./logger-Bch0bx9c.js";import"./exec-DdcIjeyn.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./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{r as loadConfig}from"./io-3R_ZyUxB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-_1Ca6jGb.js";import"./runner-SxCr9kXD.js";import"./model-catalog-C6UrZ0uG.js";import"./sandbox-BZibn6PX.js";import"./chrome-a3X9_-nf.js";import"./tailscale-DLkpGquM.js";import"./auth-lebUHrkd.js";import"./server-context-DJZT7Upf.js";import"./frontmatter-3D1EdC1L.js";import"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-BzfLvF8W.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-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"./send-DerUBvXW.js";import"./send-DyF1Xy9K.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-CHBjUwUJ.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import"./tokens-CCU3zO-D.js";import"./project-context-store-wcq7lXuI.js";import"./with-timeout-Bwq-GyUQ.js";import"./deliver-BpLm3ktn.js";import"./send-CBBziNqM.js";import"./workspace-D4LK4thI.js";import"./reply-prefix-zIMgi6K6.js";import"./memory-cli-DRz4wtHk.js";import"./manager-DwywI_5-.js";import"./retry-DlVhg5qu.js";import"./client-xfoidwPI.js";import"./call-BbRf8gFM.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-DrFJ638L.js";import"./send-4d9NswaD.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-CbvMJhD3.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-Bd2RPZwQ.js";import"./refresh-TiC_kLgE.js";import"./coding-tools.policy-6qh9acJy.js";import"./send-BJDzwYJN.js";import"./onboard-helpers-Cf5dNq7-.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-BW5jQZlr.js";import"./session-cost-usage-BjH7mxVj.js";import"./usage-format-DGf8ZWPH.js";import"./provider-usage-BdrU4cIE.js";import"./active-listener-Dcg19lJG.js";import"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import"./project-context-CJj0Inz-.js";import"./control-service-BbsswoMy.js";import"./stagger-8EkqkqJv.js";import"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-CoGqoBTH.js";import"./transformers-stream-D7nRu4Qu.js";const log=createSubsystemLogger(`plugins`);function registerPluginCliCommands(program,cfg){let config=cfg??loadConfig(),workspaceDir=resolveAgentWorkspaceDir(config,resolveDefaultAgentId(config)),logger={info:msg=>log.info(msg),warn:msg=>log.warn(msg),error:msg=>log.error(msg),debug:msg=>log.debug(msg)},registry=loadBuilderForceAgentsPlugins({config,workspaceDir,logger}),existingCommands=new Set(program.commands.map(cmd=>cmd.name()));for(let entry of registry.cliRegistrars){if(entry.commands.length>0){let overlaps=entry.commands.filter(command=>existingCommands.has(command));if(overlaps.length>0){log.debug(`plugin CLI register skipped (${entry.pluginId}): command already registered (${overlaps.join(`, `)})`);continue}}try{let result=entry.register({program,config,workspaceDir,logger});result&&typeof result.then==`function`&&result.catch(err=>{log.warn(`plugin CLI register failed (${entry.pluginId}): ${String(err)}`)});for(let command of entry.commands)existingCommands.add(command)}catch(err){log.warn(`plugin CLI register failed (${entry.pluginId}): ${String(err)}`)}}}export{registerPluginCliCommands};
1
+ import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./embedded-helpers-C9jpiwlw.js";import{Mt as loadBuilderForceAgentsPlugins}from"./reply-GY1C8tcv.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import{t as createSubsystemLogger}from"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./logger-Bch0bx9c.js";import"./exec-DdcIjeyn.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./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{r as loadConfig}from"./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";const log=createSubsystemLogger(`plugins`);function registerPluginCliCommands(program,cfg){let config=cfg??loadConfig(),workspaceDir=resolveAgentWorkspaceDir(config,resolveDefaultAgentId(config)),logger={info:msg=>log.info(msg),warn:msg=>log.warn(msg),error:msg=>log.error(msg),debug:msg=>log.debug(msg)},registry=loadBuilderForceAgentsPlugins({config,workspaceDir,logger}),existingCommands=new Set(program.commands.map(cmd=>cmd.name()));for(let entry of registry.cliRegistrars){if(entry.commands.length>0){let overlaps=entry.commands.filter(command=>existingCommands.has(command));if(overlaps.length>0){log.debug(`plugin CLI register skipped (${entry.pluginId}): command already registered (${overlaps.join(`, `)})`);continue}}try{let result=entry.register({program,config,workspaceDir,logger});result&&typeof result.then==`function`&&result.catch(err=>{log.warn(`plugin CLI register failed (${entry.pluginId}): ${String(err)}`)});for(let command of entry.commands)existingCommands.add(command)}catch(err){log.warn(`plugin CLI register failed (${entry.pluginId}): ${String(err)}`)}}}export{registerPluginCliCommands};
@@ -1 +1 @@
1
- import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import{t as createSubsystemLogger}from"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.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{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-HrLX5bhG.js";import{r as loadConfig}from"./io-CohJffHG.js";import"./manifest-registry-009gLJ4l.js";import"./config-toczWD3q.js";import"./model-discovery-C9Xm95uL.js";import"./model-catalog-CiiFJX77.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-DmAU4cRX.js";import"./message-channel-z5YRpR2d.js";import{w as loadBuilderForceAgentsPlugins}from"./subagent-registry-CyGxu3kP.js";import"./sessions-Bl1wwotX.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-BvroeIQ6.js";import"./send-CceNWtYE.js";import"./with-timeout-T07SJo4N.js";import"./deliver-BuZu68tp.js";import"./accounts-Cx82nj4E.js";import"./send-ByCVQQVz.js";import"./image-ops-CotJhwRR.js";import"./redact-CgO7wehS.js";import"./errors-tAt19c1E.js";import"./embedded-helpers-DK8_apW0.js";import"./sandbox-z9t_PRf9.js";import"./chrome-BnEbJV3D.js";import"./tailscale-DV-yOmYe.js";import"./auth-ChecwOXS.js";import"./server-context-owOmmyUM.js";import"./routes-lclJHOYY.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-ivAs7q7v.js";import"./manager-CRba8roB.js";import"./gemini-auth-CkD5jCPh.js";import"./retry-B151Hej5.js";import"./common-BfwMxpLu.js";import"./runner-DwWmciCt.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-CprBhARf.js";import"./session-utils-GMvum00v.js";import"./coding-tools.policy-NEPm7Mz1.js";import"./pairing-store-QDb6lhIU.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-Bn4ZrnU7.js";import"./send-B_1BtyfA.js";import"./outbound-attachment-BaTYE4qp.js";import"./delivery-queue-Cp3t4Upn.js";import"./project-context-D3Mx4maV.js";import"./control-service-CJuuqNOE.js";import"./stagger-CRe77dWL.js";import"./channel-selection-BLwXhb9t.js";import"./send-UFtylOiq.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-DbkT_5BV.js";import"./onboard-helpers-CckrS8_K.js";import"./prompt-style-BMWmaqSC.js";import"./pairing-labels-3j_iRYOO.js";import"./active-listener-Di9e1YAD.js";import"./mamba-state-engine-CV4nDcCk.js";import"./transformers-stream-Buj40qHl.js";const log=createSubsystemLogger(`plugins`);function registerPluginCliCommands(program,cfg){let config=cfg??loadConfig(),workspaceDir=resolveAgentWorkspaceDir(config,resolveDefaultAgentId(config)),logger={info:msg=>log.info(msg),warn:msg=>log.warn(msg),error:msg=>log.error(msg),debug:msg=>log.debug(msg)},registry=loadBuilderForceAgentsPlugins({config,workspaceDir,logger}),existingCommands=new Set(program.commands.map(cmd=>cmd.name()));for(let entry of registry.cliRegistrars){if(entry.commands.length>0){let overlaps=entry.commands.filter(command=>existingCommands.has(command));if(overlaps.length>0){log.debug(`plugin CLI register skipped (${entry.pluginId}): command already registered (${overlaps.join(`, `)})`);continue}}try{let result=entry.register({program,config,workspaceDir,logger});result&&typeof result.then==`function`&&result.catch(err=>{log.warn(`plugin CLI register failed (${entry.pluginId}): ${String(err)}`)});for(let command of entry.commands)existingCommands.add(command)}catch(err){log.warn(`plugin CLI register failed (${entry.pluginId}): ${String(err)}`)}}}export{registerPluginCliCommands};
1
+ import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import{t as createSubsystemLogger}from"./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{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-HrLX5bhG.js";import{r as loadConfig}from"./io-D9hC2aG0.js";import"./manifest-registry-009gLJ4l.js";import"./config-BpChMIJ6.js";import"./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{w as loadBuilderForceAgentsPlugins}from"./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";const log=createSubsystemLogger(`plugins`);function registerPluginCliCommands(program,cfg){let config=cfg??loadConfig(),workspaceDir=resolveAgentWorkspaceDir(config,resolveDefaultAgentId(config)),logger={info:msg=>log.info(msg),warn:msg=>log.warn(msg),error:msg=>log.error(msg),debug:msg=>log.debug(msg)},registry=loadBuilderForceAgentsPlugins({config,workspaceDir,logger}),existingCommands=new Set(program.commands.map(cmd=>cmd.name()));for(let entry of registry.cliRegistrars){if(entry.commands.length>0){let overlaps=entry.commands.filter(command=>existingCommands.has(command));if(overlaps.length>0){log.debug(`plugin CLI register skipped (${entry.pluginId}): command already registered (${overlaps.join(`, `)})`);continue}}try{let result=entry.register({program,config,workspaceDir,logger});result&&typeof result.then==`function`&&result.catch(err=>{log.warn(`plugin CLI register failed (${entry.pluginId}): ${String(err)}`)});for(let command of entry.commands)existingCommands.add(command)}catch(err){log.warn(`plugin CLI register failed (${entry.pluginId}): ${String(err)}`)}}}export{registerPluginCliCommands};
@@ -1 +1 @@
1
- import{p as resolveAgentIdFromSessionKey,w as resolveThreadParentSessionKey}from"./session-key-CksCYipj.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId,r as resolveAgentConfig}from"./agent-scope-CufEmNj_.js";import{l as normalizeMessageChannel}from"./message-channel-z5YRpR2d.js";import{H as resolveChannelGroupToolsPolicy,L as getChannelDock}from"./sessions-Bl1wwotX.js";import{r as normalizeChannelId}from"./plugins-1Mn6RiNf.js";import{C as compileGlobPatterns,b as normalizeToolName,v as expandToolGroups,w as matchesAnyGlobPattern}from"./sandbox-z9t_PRf9.js";function listAgentWorkspaceDirs(cfg){let dirs=new Set,list=cfg.agents?.list;if(Array.isArray(list))for(let entry of list)entry&&typeof entry==`object`&&typeof entry.id==`string`&&dirs.add(resolveAgentWorkspaceDir(cfg,entry.id));return dirs.add(resolveAgentWorkspaceDir(cfg,resolveDefaultAgentId(cfg))),[...dirs]}function resolveAutoDefault(providerId){let id=normalizeChannelId(providerId);return id?id===`discord`||id===`telegram`:!1}function resolveNativeSkillsEnabled(params){return resolveNativeCommandSetting(params)}function resolveNativeCommandsEnabled(params){return resolveNativeCommandSetting(params)}function resolveNativeCommandSetting(params){let{providerId,providerSetting,globalSetting}=params,setting=providerSetting===void 0?globalSetting:providerSetting;return setting===!0?!0:setting===!1?!1:resolveAutoDefault(providerId)}function isNativeCommandsExplicitlyDisabled(params){let{providerSetting,globalSetting}=params;return providerSetting===!1?!0:providerSetting===void 0?globalSetting===!1:!1}function unionAllow(base,extra){return!Array.isArray(extra)||extra.length===0?base:!Array.isArray(base)||base.length===0?Array.from(new Set([`*`,...extra])):Array.from(new Set([...base,...extra]))}function pickSandboxToolPolicy(config){if(!config)return;let allow=Array.isArray(config.allow)?unionAllow(config.allow,config.alsoAllow):Array.isArray(config.alsoAllow)&&config.alsoAllow.length>0?unionAllow(void 0,config.alsoAllow):void 0,deny=Array.isArray(config.deny)?config.deny:void 0;if(!(!allow&&!deny))return{allow,deny}}function makeToolPolicyMatcher(policy){let deny=compileGlobPatterns({raw:expandToolGroups(policy.deny??[]),normalize:normalizeToolName}),allow=compileGlobPatterns({raw:expandToolGroups(policy.allow??[]),normalize:normalizeToolName});return name=>{let normalized=normalizeToolName(name);return matchesAnyGlobPattern(normalized,deny)?!1:!!(allow.length===0||matchesAnyGlobPattern(normalized,allow)||normalized===`apply_patch`&&matchesAnyGlobPattern(`exec`,allow))}}const SUBAGENT_TOOL_DENY_ALWAYS=[`gateway`,`agents_list`,`whatsapp_login`,`session_status`,`cron`,`memory_search`,`memory_get`,`sessions_send`],SUBAGENT_TOOL_DENY_LEAF=[`sessions_list`,`sessions_history`,`sessions_spawn`];function resolveSubagentDenyList(depth,maxSpawnDepth){return depth>=Math.max(1,Math.floor(maxSpawnDepth))?[...SUBAGENT_TOOL_DENY_ALWAYS,...SUBAGENT_TOOL_DENY_LEAF]:[...SUBAGENT_TOOL_DENY_ALWAYS]}function resolveSubagentToolPolicy(cfg,depth){let configured=cfg?.tools?.subagents?.tools,maxSpawnDepth=cfg?.agents?.defaults?.subagents?.maxSpawnDepth??1,deny=[...resolveSubagentDenyList(typeof depth==`number`&&depth>=0?depth:1,maxSpawnDepth),...Array.isArray(configured?.deny)?configured.deny:[]];return{allow:Array.isArray(configured?.allow)?configured.allow:void 0,deny}}function isToolAllowedByPolicyName(name,policy){return policy?makeToolPolicyMatcher(policy)(name):!0}function filterToolsByPolicy(tools,policy){if(!policy)return tools;let matcher=makeToolPolicyMatcher(policy);return tools.filter(tool=>matcher(tool.name))}function normalizeProviderKey(value){return value.trim().toLowerCase()}function resolveGroupContextFromSessionKey(sessionKey){let raw=(sessionKey??``).trim();if(!raw)return{};let parts=(resolveThreadParentSessionKey(raw)??raw).split(`:`).filter(Boolean),body=parts[0]===`agent`?parts.slice(2):parts;if(body[0]===`subagent`&&(body=body.slice(1)),body.length<3)return{};let[channel,kind,...rest]=body;if(kind!==`group`&&kind!==`channel`)return{};let groupId=rest.join(`:`).trim();return groupId?{channel:channel.trim().toLowerCase(),groupId}:{}}function resolveProviderToolPolicy(params){let provider=params.modelProvider?.trim();if(!provider||!params.byProvider)return;let entries=Object.entries(params.byProvider);if(entries.length===0)return;let lookup=new Map;for(let[key,value]of entries){let normalized=normalizeProviderKey(key);normalized&&lookup.set(normalized,value)}let normalizedProvider=normalizeProviderKey(provider),rawModelId=params.modelId?.trim().toLowerCase(),fullModelId=rawModelId&&!rawModelId.includes(`/`)?`${normalizedProvider}/${rawModelId}`:rawModelId,candidates=[...fullModelId?[fullModelId]:[],normalizedProvider];for(let key of candidates){let match=lookup.get(key);if(match)return match}}function resolveEffectiveToolPolicy(params){let agentId=params.sessionKey?resolveAgentIdFromSessionKey(params.sessionKey):void 0,agentTools=(params.config&&agentId?resolveAgentConfig(params.config,agentId):void 0)?.tools,globalTools=params.config?.tools,profile=agentTools?.profile??globalTools?.profile,providerPolicy=resolveProviderToolPolicy({byProvider:globalTools?.byProvider,modelProvider:params.modelProvider,modelId:params.modelId}),agentProviderPolicy=resolveProviderToolPolicy({byProvider:agentTools?.byProvider,modelProvider:params.modelProvider,modelId:params.modelId});return{agentId,globalPolicy:pickSandboxToolPolicy(globalTools),globalProviderPolicy:pickSandboxToolPolicy(providerPolicy),agentPolicy:pickSandboxToolPolicy(agentTools),agentProviderPolicy:pickSandboxToolPolicy(agentProviderPolicy),profile,providerProfile:agentProviderPolicy?.profile??providerPolicy?.profile,profileAlsoAllow:Array.isArray(agentTools?.alsoAllow)?agentTools?.alsoAllow:Array.isArray(globalTools?.alsoAllow)?globalTools?.alsoAllow:void 0,providerProfileAlsoAllow:Array.isArray(agentProviderPolicy?.alsoAllow)?agentProviderPolicy?.alsoAllow:Array.isArray(providerPolicy?.alsoAllow)?providerPolicy?.alsoAllow:void 0}}function resolveGroupToolPolicy(params){if(!params.config)return;let sessionContext=resolveGroupContextFromSessionKey(params.sessionKey),spawnedContext=resolveGroupContextFromSessionKey(params.spawnedBy),groupId=params.groupId??sessionContext.groupId??spawnedContext.groupId;if(!groupId)return;let channel=normalizeMessageChannel(params.messageProvider??sessionContext.channel??spawnedContext.channel);if(!channel)return;let dock;try{dock=getChannelDock(channel)}catch{dock=void 0}return pickSandboxToolPolicy(dock?.groups?.resolveToolPolicy?.({cfg:params.config,groupId,groupChannel:params.groupChannel,groupSpace:params.groupSpace,accountId:params.accountId,senderId:params.senderId,senderName:params.senderName,senderUsername:params.senderUsername,senderE164:params.senderE164})??resolveChannelGroupToolsPolicy({cfg:params.config,channel,groupId,accountId:params.accountId,senderId:params.senderId,senderName:params.senderName,senderUsername:params.senderUsername,senderE164:params.senderE164}))}function isToolAllowedByPolicies(name,policies){return policies.every(policy=>isToolAllowedByPolicyName(name,policy))}export{resolveSubagentToolPolicy as a,resolveNativeCommandsEnabled as c,resolveGroupToolPolicy as i,resolveNativeSkillsEnabled as l,isToolAllowedByPolicies as n,pickSandboxToolPolicy as o,resolveEffectiveToolPolicy as r,isNativeCommandsExplicitlyDisabled as s,filterToolsByPolicy as t,listAgentWorkspaceDirs as u};
1
+ import{p as resolveAgentIdFromSessionKey,w as resolveThreadParentSessionKey}from"./session-key-CksCYipj.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId,r as resolveAgentConfig}from"./agent-scope-CufEmNj_.js";import{l as normalizeMessageChannel}from"./message-channel-z5YRpR2d.js";import{H as resolveChannelGroupToolsPolicy,L as getChannelDock}from"./sessions-BA8Se_bT.js";import{r as normalizeChannelId}from"./plugins-1Mn6RiNf.js";import{C as compileGlobPatterns,b as normalizeToolName,v as expandToolGroups,w as matchesAnyGlobPattern}from"./sandbox-DvKMuAXL.js";function listAgentWorkspaceDirs(cfg){let dirs=new Set,list=cfg.agents?.list;if(Array.isArray(list))for(let entry of list)entry&&typeof entry==`object`&&typeof entry.id==`string`&&dirs.add(resolveAgentWorkspaceDir(cfg,entry.id));return dirs.add(resolveAgentWorkspaceDir(cfg,resolveDefaultAgentId(cfg))),[...dirs]}function resolveAutoDefault(providerId){let id=normalizeChannelId(providerId);return id?id===`discord`||id===`telegram`:!1}function resolveNativeSkillsEnabled(params){return resolveNativeCommandSetting(params)}function resolveNativeCommandsEnabled(params){return resolveNativeCommandSetting(params)}function resolveNativeCommandSetting(params){let{providerId,providerSetting,globalSetting}=params,setting=providerSetting===void 0?globalSetting:providerSetting;return setting===!0?!0:setting===!1?!1:resolveAutoDefault(providerId)}function isNativeCommandsExplicitlyDisabled(params){let{providerSetting,globalSetting}=params;return providerSetting===!1?!0:providerSetting===void 0?globalSetting===!1:!1}function unionAllow(base,extra){return!Array.isArray(extra)||extra.length===0?base:!Array.isArray(base)||base.length===0?Array.from(new Set([`*`,...extra])):Array.from(new Set([...base,...extra]))}function pickSandboxToolPolicy(config){if(!config)return;let allow=Array.isArray(config.allow)?unionAllow(config.allow,config.alsoAllow):Array.isArray(config.alsoAllow)&&config.alsoAllow.length>0?unionAllow(void 0,config.alsoAllow):void 0,deny=Array.isArray(config.deny)?config.deny:void 0;if(!(!allow&&!deny))return{allow,deny}}function makeToolPolicyMatcher(policy){let deny=compileGlobPatterns({raw:expandToolGroups(policy.deny??[]),normalize:normalizeToolName}),allow=compileGlobPatterns({raw:expandToolGroups(policy.allow??[]),normalize:normalizeToolName});return name=>{let normalized=normalizeToolName(name);return matchesAnyGlobPattern(normalized,deny)?!1:!!(allow.length===0||matchesAnyGlobPattern(normalized,allow)||normalized===`apply_patch`&&matchesAnyGlobPattern(`exec`,allow))}}const SUBAGENT_TOOL_DENY_ALWAYS=[`gateway`,`agents_list`,`whatsapp_login`,`session_status`,`cron`,`memory_search`,`memory_get`,`sessions_send`],SUBAGENT_TOOL_DENY_LEAF=[`sessions_list`,`sessions_history`,`sessions_spawn`];function resolveSubagentDenyList(depth,maxSpawnDepth){return depth>=Math.max(1,Math.floor(maxSpawnDepth))?[...SUBAGENT_TOOL_DENY_ALWAYS,...SUBAGENT_TOOL_DENY_LEAF]:[...SUBAGENT_TOOL_DENY_ALWAYS]}function resolveSubagentToolPolicy(cfg,depth){let configured=cfg?.tools?.subagents?.tools,maxSpawnDepth=cfg?.agents?.defaults?.subagents?.maxSpawnDepth??1,deny=[...resolveSubagentDenyList(typeof depth==`number`&&depth>=0?depth:1,maxSpawnDepth),...Array.isArray(configured?.deny)?configured.deny:[]];return{allow:Array.isArray(configured?.allow)?configured.allow:void 0,deny}}function isToolAllowedByPolicyName(name,policy){return policy?makeToolPolicyMatcher(policy)(name):!0}function filterToolsByPolicy(tools,policy){if(!policy)return tools;let matcher=makeToolPolicyMatcher(policy);return tools.filter(tool=>matcher(tool.name))}function normalizeProviderKey(value){return value.trim().toLowerCase()}function resolveGroupContextFromSessionKey(sessionKey){let raw=(sessionKey??``).trim();if(!raw)return{};let parts=(resolveThreadParentSessionKey(raw)??raw).split(`:`).filter(Boolean),body=parts[0]===`agent`?parts.slice(2):parts;if(body[0]===`subagent`&&(body=body.slice(1)),body.length<3)return{};let[channel,kind,...rest]=body;if(kind!==`group`&&kind!==`channel`)return{};let groupId=rest.join(`:`).trim();return groupId?{channel:channel.trim().toLowerCase(),groupId}:{}}function resolveProviderToolPolicy(params){let provider=params.modelProvider?.trim();if(!provider||!params.byProvider)return;let entries=Object.entries(params.byProvider);if(entries.length===0)return;let lookup=new Map;for(let[key,value]of entries){let normalized=normalizeProviderKey(key);normalized&&lookup.set(normalized,value)}let normalizedProvider=normalizeProviderKey(provider),rawModelId=params.modelId?.trim().toLowerCase(),fullModelId=rawModelId&&!rawModelId.includes(`/`)?`${normalizedProvider}/${rawModelId}`:rawModelId,candidates=[...fullModelId?[fullModelId]:[],normalizedProvider];for(let key of candidates){let match=lookup.get(key);if(match)return match}}function resolveEffectiveToolPolicy(params){let agentId=params.sessionKey?resolveAgentIdFromSessionKey(params.sessionKey):void 0,agentTools=(params.config&&agentId?resolveAgentConfig(params.config,agentId):void 0)?.tools,globalTools=params.config?.tools,profile=agentTools?.profile??globalTools?.profile,providerPolicy=resolveProviderToolPolicy({byProvider:globalTools?.byProvider,modelProvider:params.modelProvider,modelId:params.modelId}),agentProviderPolicy=resolveProviderToolPolicy({byProvider:agentTools?.byProvider,modelProvider:params.modelProvider,modelId:params.modelId});return{agentId,globalPolicy:pickSandboxToolPolicy(globalTools),globalProviderPolicy:pickSandboxToolPolicy(providerPolicy),agentPolicy:pickSandboxToolPolicy(agentTools),agentProviderPolicy:pickSandboxToolPolicy(agentProviderPolicy),profile,providerProfile:agentProviderPolicy?.profile??providerPolicy?.profile,profileAlsoAllow:Array.isArray(agentTools?.alsoAllow)?agentTools?.alsoAllow:Array.isArray(globalTools?.alsoAllow)?globalTools?.alsoAllow:void 0,providerProfileAlsoAllow:Array.isArray(agentProviderPolicy?.alsoAllow)?agentProviderPolicy?.alsoAllow:Array.isArray(providerPolicy?.alsoAllow)?providerPolicy?.alsoAllow:void 0}}function resolveGroupToolPolicy(params){if(!params.config)return;let sessionContext=resolveGroupContextFromSessionKey(params.sessionKey),spawnedContext=resolveGroupContextFromSessionKey(params.spawnedBy),groupId=params.groupId??sessionContext.groupId??spawnedContext.groupId;if(!groupId)return;let channel=normalizeMessageChannel(params.messageProvider??sessionContext.channel??spawnedContext.channel);if(!channel)return;let dock;try{dock=getChannelDock(channel)}catch{dock=void 0}return pickSandboxToolPolicy(dock?.groups?.resolveToolPolicy?.({cfg:params.config,groupId,groupChannel:params.groupChannel,groupSpace:params.groupSpace,accountId:params.accountId,senderId:params.senderId,senderName:params.senderName,senderUsername:params.senderUsername,senderE164:params.senderE164})??resolveChannelGroupToolsPolicy({cfg:params.config,channel,groupId,accountId:params.accountId,senderId:params.senderId,senderName:params.senderName,senderUsername:params.senderUsername,senderE164:params.senderE164}))}function isToolAllowedByPolicies(name,policies){return policies.every(policy=>isToolAllowedByPolicyName(name,policy))}export{resolveSubagentToolPolicy as a,resolveNativeCommandsEnabled as c,resolveGroupToolPolicy as i,resolveNativeSkillsEnabled as l,isToolAllowedByPolicies as n,pickSandboxToolPolicy as o,resolveEffectiveToolPolicy as r,isNativeCommandsExplicitlyDisabled as s,filterToolsByPolicy as t,listAgentWorkspaceDirs as u};
@@ -1 +1 @@
1
- import{p as resolveAgentIdFromSessionKey,w as resolveThreadParentSessionKey}from"./session-key-EoB0qaG9.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId,r as resolveAgentConfig}from"./agent-scope-DPtjOxzp.js";import{C as compileGlobPatterns,b as normalizeToolName,v as expandToolGroups,w as matchesAnyGlobPattern}from"./sandbox-BZibn6PX.js";import{W as getChannelDock,Y as resolveChannelGroupToolsPolicy}from"./sessions-CdanN_ZI.js";import{l as normalizeMessageChannel}from"./message-channel-D_jXxXQj.js";import{r as normalizeChannelId}from"./plugins-D5zP6ENo.js";function listAgentWorkspaceDirs(cfg){let dirs=new Set,list=cfg.agents?.list;if(Array.isArray(list))for(let entry of list)entry&&typeof entry==`object`&&typeof entry.id==`string`&&dirs.add(resolveAgentWorkspaceDir(cfg,entry.id));return dirs.add(resolveAgentWorkspaceDir(cfg,resolveDefaultAgentId(cfg))),[...dirs]}function resolveAutoDefault(providerId){let id=normalizeChannelId(providerId);return id?id===`discord`||id===`telegram`:!1}function resolveNativeSkillsEnabled(params){return resolveNativeCommandSetting(params)}function resolveNativeCommandsEnabled(params){return resolveNativeCommandSetting(params)}function resolveNativeCommandSetting(params){let{providerId,providerSetting,globalSetting}=params,setting=providerSetting===void 0?globalSetting:providerSetting;return setting===!0?!0:setting===!1?!1:resolveAutoDefault(providerId)}function isNativeCommandsExplicitlyDisabled(params){let{providerSetting,globalSetting}=params;return providerSetting===!1?!0:providerSetting===void 0?globalSetting===!1:!1}function unionAllow(base,extra){return!Array.isArray(extra)||extra.length===0?base:!Array.isArray(base)||base.length===0?Array.from(new Set([`*`,...extra])):Array.from(new Set([...base,...extra]))}function pickSandboxToolPolicy(config){if(!config)return;let allow=Array.isArray(config.allow)?unionAllow(config.allow,config.alsoAllow):Array.isArray(config.alsoAllow)&&config.alsoAllow.length>0?unionAllow(void 0,config.alsoAllow):void 0,deny=Array.isArray(config.deny)?config.deny:void 0;if(!(!allow&&!deny))return{allow,deny}}function makeToolPolicyMatcher(policy){let deny=compileGlobPatterns({raw:expandToolGroups(policy.deny??[]),normalize:normalizeToolName}),allow=compileGlobPatterns({raw:expandToolGroups(policy.allow??[]),normalize:normalizeToolName});return name=>{let normalized=normalizeToolName(name);return matchesAnyGlobPattern(normalized,deny)?!1:!!(allow.length===0||matchesAnyGlobPattern(normalized,allow)||normalized===`apply_patch`&&matchesAnyGlobPattern(`exec`,allow))}}const SUBAGENT_TOOL_DENY_ALWAYS=[`gateway`,`agents_list`,`whatsapp_login`,`session_status`,`cron`,`memory_search`,`memory_get`,`sessions_send`],SUBAGENT_TOOL_DENY_LEAF=[`sessions_list`,`sessions_history`,`sessions_spawn`];function resolveSubagentDenyList(depth,maxSpawnDepth){return depth>=Math.max(1,Math.floor(maxSpawnDepth))?[...SUBAGENT_TOOL_DENY_ALWAYS,...SUBAGENT_TOOL_DENY_LEAF]:[...SUBAGENT_TOOL_DENY_ALWAYS]}function resolveSubagentToolPolicy(cfg,depth){let configured=cfg?.tools?.subagents?.tools,maxSpawnDepth=cfg?.agents?.defaults?.subagents?.maxSpawnDepth??1,deny=[...resolveSubagentDenyList(typeof depth==`number`&&depth>=0?depth:1,maxSpawnDepth),...Array.isArray(configured?.deny)?configured.deny:[]];return{allow:Array.isArray(configured?.allow)?configured.allow:void 0,deny}}function isToolAllowedByPolicyName(name,policy){return policy?makeToolPolicyMatcher(policy)(name):!0}function filterToolsByPolicy(tools,policy){if(!policy)return tools;let matcher=makeToolPolicyMatcher(policy);return tools.filter(tool=>matcher(tool.name))}function normalizeProviderKey(value){return value.trim().toLowerCase()}function resolveGroupContextFromSessionKey(sessionKey){let raw=(sessionKey??``).trim();if(!raw)return{};let parts=(resolveThreadParentSessionKey(raw)??raw).split(`:`).filter(Boolean),body=parts[0]===`agent`?parts.slice(2):parts;if(body[0]===`subagent`&&(body=body.slice(1)),body.length<3)return{};let[channel,kind,...rest]=body;if(kind!==`group`&&kind!==`channel`)return{};let groupId=rest.join(`:`).trim();return groupId?{channel:channel.trim().toLowerCase(),groupId}:{}}function resolveProviderToolPolicy(params){let provider=params.modelProvider?.trim();if(!provider||!params.byProvider)return;let entries=Object.entries(params.byProvider);if(entries.length===0)return;let lookup=new Map;for(let[key,value]of entries){let normalized=normalizeProviderKey(key);normalized&&lookup.set(normalized,value)}let normalizedProvider=normalizeProviderKey(provider),rawModelId=params.modelId?.trim().toLowerCase(),fullModelId=rawModelId&&!rawModelId.includes(`/`)?`${normalizedProvider}/${rawModelId}`:rawModelId,candidates=[...fullModelId?[fullModelId]:[],normalizedProvider];for(let key of candidates){let match=lookup.get(key);if(match)return match}}function resolveEffectiveToolPolicy(params){let agentId=params.sessionKey?resolveAgentIdFromSessionKey(params.sessionKey):void 0,agentTools=(params.config&&agentId?resolveAgentConfig(params.config,agentId):void 0)?.tools,globalTools=params.config?.tools,profile=agentTools?.profile??globalTools?.profile,providerPolicy=resolveProviderToolPolicy({byProvider:globalTools?.byProvider,modelProvider:params.modelProvider,modelId:params.modelId}),agentProviderPolicy=resolveProviderToolPolicy({byProvider:agentTools?.byProvider,modelProvider:params.modelProvider,modelId:params.modelId});return{agentId,globalPolicy:pickSandboxToolPolicy(globalTools),globalProviderPolicy:pickSandboxToolPolicy(providerPolicy),agentPolicy:pickSandboxToolPolicy(agentTools),agentProviderPolicy:pickSandboxToolPolicy(agentProviderPolicy),profile,providerProfile:agentProviderPolicy?.profile??providerPolicy?.profile,profileAlsoAllow:Array.isArray(agentTools?.alsoAllow)?agentTools?.alsoAllow:Array.isArray(globalTools?.alsoAllow)?globalTools?.alsoAllow:void 0,providerProfileAlsoAllow:Array.isArray(agentProviderPolicy?.alsoAllow)?agentProviderPolicy?.alsoAllow:Array.isArray(providerPolicy?.alsoAllow)?providerPolicy?.alsoAllow:void 0}}function resolveGroupToolPolicy(params){if(!params.config)return;let sessionContext=resolveGroupContextFromSessionKey(params.sessionKey),spawnedContext=resolveGroupContextFromSessionKey(params.spawnedBy),groupId=params.groupId??sessionContext.groupId??spawnedContext.groupId;if(!groupId)return;let channel=normalizeMessageChannel(params.messageProvider??sessionContext.channel??spawnedContext.channel);if(!channel)return;let dock;try{dock=getChannelDock(channel)}catch{dock=void 0}return pickSandboxToolPolicy(dock?.groups?.resolveToolPolicy?.({cfg:params.config,groupId,groupChannel:params.groupChannel,groupSpace:params.groupSpace,accountId:params.accountId,senderId:params.senderId,senderName:params.senderName,senderUsername:params.senderUsername,senderE164:params.senderE164})??resolveChannelGroupToolsPolicy({cfg:params.config,channel,groupId,accountId:params.accountId,senderId:params.senderId,senderName:params.senderName,senderUsername:params.senderUsername,senderE164:params.senderE164}))}function isToolAllowedByPolicies(name,policies){return policies.every(policy=>isToolAllowedByPolicyName(name,policy))}export{resolveSubagentToolPolicy as a,resolveNativeCommandsEnabled as c,resolveGroupToolPolicy as i,resolveNativeSkillsEnabled as l,isToolAllowedByPolicies as n,pickSandboxToolPolicy as o,resolveEffectiveToolPolicy as r,isNativeCommandsExplicitlyDisabled as s,filterToolsByPolicy as t,listAgentWorkspaceDirs as u};
1
+ import{p as resolveAgentIdFromSessionKey,w as resolveThreadParentSessionKey}from"./session-key-EoB0qaG9.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId,r as resolveAgentConfig}from"./agent-scope-DPtjOxzp.js";import{C as compileGlobPatterns,b as normalizeToolName,v as expandToolGroups,w as matchesAnyGlobPattern}from"./sandbox-C4AKi2EX.js";import{W as getChannelDock,Y as resolveChannelGroupToolsPolicy}from"./sessions-BuZVmOWt.js";import{l as normalizeMessageChannel}from"./message-channel-D_jXxXQj.js";import{r as normalizeChannelId}from"./plugins-D5zP6ENo.js";function listAgentWorkspaceDirs(cfg){let dirs=new Set,list=cfg.agents?.list;if(Array.isArray(list))for(let entry of list)entry&&typeof entry==`object`&&typeof entry.id==`string`&&dirs.add(resolveAgentWorkspaceDir(cfg,entry.id));return dirs.add(resolveAgentWorkspaceDir(cfg,resolveDefaultAgentId(cfg))),[...dirs]}function resolveAutoDefault(providerId){let id=normalizeChannelId(providerId);return id?id===`discord`||id===`telegram`:!1}function resolveNativeSkillsEnabled(params){return resolveNativeCommandSetting(params)}function resolveNativeCommandsEnabled(params){return resolveNativeCommandSetting(params)}function resolveNativeCommandSetting(params){let{providerId,providerSetting,globalSetting}=params,setting=providerSetting===void 0?globalSetting:providerSetting;return setting===!0?!0:setting===!1?!1:resolveAutoDefault(providerId)}function isNativeCommandsExplicitlyDisabled(params){let{providerSetting,globalSetting}=params;return providerSetting===!1?!0:providerSetting===void 0?globalSetting===!1:!1}function unionAllow(base,extra){return!Array.isArray(extra)||extra.length===0?base:!Array.isArray(base)||base.length===0?Array.from(new Set([`*`,...extra])):Array.from(new Set([...base,...extra]))}function pickSandboxToolPolicy(config){if(!config)return;let allow=Array.isArray(config.allow)?unionAllow(config.allow,config.alsoAllow):Array.isArray(config.alsoAllow)&&config.alsoAllow.length>0?unionAllow(void 0,config.alsoAllow):void 0,deny=Array.isArray(config.deny)?config.deny:void 0;if(!(!allow&&!deny))return{allow,deny}}function makeToolPolicyMatcher(policy){let deny=compileGlobPatterns({raw:expandToolGroups(policy.deny??[]),normalize:normalizeToolName}),allow=compileGlobPatterns({raw:expandToolGroups(policy.allow??[]),normalize:normalizeToolName});return name=>{let normalized=normalizeToolName(name);return matchesAnyGlobPattern(normalized,deny)?!1:!!(allow.length===0||matchesAnyGlobPattern(normalized,allow)||normalized===`apply_patch`&&matchesAnyGlobPattern(`exec`,allow))}}const SUBAGENT_TOOL_DENY_ALWAYS=[`gateway`,`agents_list`,`whatsapp_login`,`session_status`,`cron`,`memory_search`,`memory_get`,`sessions_send`],SUBAGENT_TOOL_DENY_LEAF=[`sessions_list`,`sessions_history`,`sessions_spawn`];function resolveSubagentDenyList(depth,maxSpawnDepth){return depth>=Math.max(1,Math.floor(maxSpawnDepth))?[...SUBAGENT_TOOL_DENY_ALWAYS,...SUBAGENT_TOOL_DENY_LEAF]:[...SUBAGENT_TOOL_DENY_ALWAYS]}function resolveSubagentToolPolicy(cfg,depth){let configured=cfg?.tools?.subagents?.tools,maxSpawnDepth=cfg?.agents?.defaults?.subagents?.maxSpawnDepth??1,deny=[...resolveSubagentDenyList(typeof depth==`number`&&depth>=0?depth:1,maxSpawnDepth),...Array.isArray(configured?.deny)?configured.deny:[]];return{allow:Array.isArray(configured?.allow)?configured.allow:void 0,deny}}function isToolAllowedByPolicyName(name,policy){return policy?makeToolPolicyMatcher(policy)(name):!0}function filterToolsByPolicy(tools,policy){if(!policy)return tools;let matcher=makeToolPolicyMatcher(policy);return tools.filter(tool=>matcher(tool.name))}function normalizeProviderKey(value){return value.trim().toLowerCase()}function resolveGroupContextFromSessionKey(sessionKey){let raw=(sessionKey??``).trim();if(!raw)return{};let parts=(resolveThreadParentSessionKey(raw)??raw).split(`:`).filter(Boolean),body=parts[0]===`agent`?parts.slice(2):parts;if(body[0]===`subagent`&&(body=body.slice(1)),body.length<3)return{};let[channel,kind,...rest]=body;if(kind!==`group`&&kind!==`channel`)return{};let groupId=rest.join(`:`).trim();return groupId?{channel:channel.trim().toLowerCase(),groupId}:{}}function resolveProviderToolPolicy(params){let provider=params.modelProvider?.trim();if(!provider||!params.byProvider)return;let entries=Object.entries(params.byProvider);if(entries.length===0)return;let lookup=new Map;for(let[key,value]of entries){let normalized=normalizeProviderKey(key);normalized&&lookup.set(normalized,value)}let normalizedProvider=normalizeProviderKey(provider),rawModelId=params.modelId?.trim().toLowerCase(),fullModelId=rawModelId&&!rawModelId.includes(`/`)?`${normalizedProvider}/${rawModelId}`:rawModelId,candidates=[...fullModelId?[fullModelId]:[],normalizedProvider];for(let key of candidates){let match=lookup.get(key);if(match)return match}}function resolveEffectiveToolPolicy(params){let agentId=params.sessionKey?resolveAgentIdFromSessionKey(params.sessionKey):void 0,agentTools=(params.config&&agentId?resolveAgentConfig(params.config,agentId):void 0)?.tools,globalTools=params.config?.tools,profile=agentTools?.profile??globalTools?.profile,providerPolicy=resolveProviderToolPolicy({byProvider:globalTools?.byProvider,modelProvider:params.modelProvider,modelId:params.modelId}),agentProviderPolicy=resolveProviderToolPolicy({byProvider:agentTools?.byProvider,modelProvider:params.modelProvider,modelId:params.modelId});return{agentId,globalPolicy:pickSandboxToolPolicy(globalTools),globalProviderPolicy:pickSandboxToolPolicy(providerPolicy),agentPolicy:pickSandboxToolPolicy(agentTools),agentProviderPolicy:pickSandboxToolPolicy(agentProviderPolicy),profile,providerProfile:agentProviderPolicy?.profile??providerPolicy?.profile,profileAlsoAllow:Array.isArray(agentTools?.alsoAllow)?agentTools?.alsoAllow:Array.isArray(globalTools?.alsoAllow)?globalTools?.alsoAllow:void 0,providerProfileAlsoAllow:Array.isArray(agentProviderPolicy?.alsoAllow)?agentProviderPolicy?.alsoAllow:Array.isArray(providerPolicy?.alsoAllow)?providerPolicy?.alsoAllow:void 0}}function resolveGroupToolPolicy(params){if(!params.config)return;let sessionContext=resolveGroupContextFromSessionKey(params.sessionKey),spawnedContext=resolveGroupContextFromSessionKey(params.spawnedBy),groupId=params.groupId??sessionContext.groupId??spawnedContext.groupId;if(!groupId)return;let channel=normalizeMessageChannel(params.messageProvider??sessionContext.channel??spawnedContext.channel);if(!channel)return;let dock;try{dock=getChannelDock(channel)}catch{dock=void 0}return pickSandboxToolPolicy(dock?.groups?.resolveToolPolicy?.({cfg:params.config,groupId,groupChannel:params.groupChannel,groupSpace:params.groupSpace,accountId:params.accountId,senderId:params.senderId,senderName:params.senderName,senderUsername:params.senderUsername,senderE164:params.senderE164})??resolveChannelGroupToolsPolicy({cfg:params.config,channel,groupId,accountId:params.accountId,senderId:params.senderId,senderName:params.senderName,senderUsername:params.senderUsername,senderE164:params.senderE164}))}function isToolAllowedByPolicies(name,policies){return policies.every(policy=>isToolAllowedByPolicyName(name,policy))}export{resolveSubagentToolPolicy as a,resolveNativeCommandsEnabled as c,resolveGroupToolPolicy as i,resolveNativeSkillsEnabled as l,isToolAllowedByPolicies as n,pickSandboxToolPolicy as o,resolveEffectiveToolPolicy as r,isNativeCommandsExplicitlyDisabled as s,filterToolsByPolicy as t,listAgentWorkspaceDirs as u};
@@ -1 +1 @@
1
- import{a as getPrimaryCommand,c as hasHelpOrVersion}from"./argv-BgQk38nl.js";import{a as reparseProgramFromActionArgs,i as registerSubCliCommands}from"./register.subclis-Cr9DoYcv.js";const shouldRegisterCorePrimaryOnly=argv=>!hasHelpOrVersion(argv),coreEntries=[{commands:[{name:`setup`,description:`Initialize local config and agent workspace`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.setup-CSF-2ImP.js`)).registerSetupCommand(program)}},{commands:[{name:`onboard`,description:`Interactive onboarding wizard for gateway, workspace, and skills`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.onboard-B9DMNfHE.js`)).registerOnboardCommand(program)}},{commands:[{name:`connect`,description:`Register this machine as an agent host in a Builderforce workspace`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.connect-CAmn1QTl.js`)).registerConnectCommand(program)}},{commands:[{name:`configure`,description:`Interactive setup wizard for credentials, channels, gateway, and agent defaults`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.configure-DAL38e7r.js`)).registerConfigureCommand(program)}},{commands:[{name:`config`,description:`Non-interactive config helpers (get/set/unset). Default: starts setup wizard.`,hasSubcommands:!0}],register:async({program})=>{(await import(`./config-cli-CfczShaZ.js`)).registerConfigCli(program)}},{commands:[{name:`doctor`,description:`Health checks + quick fixes for the gateway and channels`,hasSubcommands:!1},{name:`dashboard`,description:`Open the Control UI with your current token`,hasSubcommands:!1},{name:`reset`,description:`Reset local config/state (keeps the CLI installed)`,hasSubcommands:!1},{name:`stop`,description:`Stop the running gateway service`,hasSubcommands:!1},{name:`uninstall`,description:`Uninstall the gateway service + local data (CLI remains)`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.maintenance-BELfCO_C.js`)).registerMaintenanceCommands(program)}},{commands:[{name:`message`,description:`Send, read, and manage messages`,hasSubcommands:!0}],register:async({program,ctx})=>{(await import(`./register.message-8iGDhO8h.js`)).registerMessageCommands(program,ctx)}},{commands:[{name:`memory`,description:`Search and reindex memory files`,hasSubcommands:!0}],register:async({program})=>{(await import(`./memory-cli-BlayFTAM.js`)).registerMemoryCli(program)}},{commands:[{name:`agent`,description:`Run one agent turn via the Gateway`,hasSubcommands:!1},{name:`agents`,description:`Manage isolated agents (workspaces, auth, routing)`,hasSubcommands:!0}],register:async({program,ctx})=>{(await import(`./register.agent-D2uCH8jZ.js`)).registerAgentCommands(program,{agentChannelOptions:ctx.agentChannelOptions})}},{commands:[{name:`status`,description:`Show channel health and recent session recipients`,hasSubcommands:!1},{name:`health`,description:`Fetch health from the running gateway`,hasSubcommands:!1},{name:`sessions`,description:`List stored conversation sessions`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.status-health-sessions-D6wdwPwV.js`)).registerStatusHealthSessionsCommands(program)}},{commands:[{name:`browser`,description:`Manage BuilderForceAgents's dedicated browser (Chrome/Chromium)`,hasSubcommands:!0}],register:async({program})=>{(await import(`./browser-cli-D2O94twn.js`)).registerBrowserCli(program)}},{commands:[{name:`init`,description:`Initialize a project with builderForceAgents`,hasSubcommands:!1},{name:`project`,description:`Manage builderForceAgents project context`,hasSubcommands:!0},{name:`workforce`,description:`Manage Builderforce Workforce agents (custom trained LLMs)`,hasSubcommands:!0}],register:async({program})=>{let mod=await import(`./builderforce-BmrsVdFw.js`);program.addCommand(mod.createInitCommand()),program.addCommand(mod.createBuilderForceAgentsCommand()),program.addCommand(mod.createAgentCommand())}}];function collectCoreCliCommandNames(predicate){let seen=new Set,names=[];for(let entry of coreEntries)for(let command of entry.commands)predicate&&!predicate(command)||seen.has(command.name)||(seen.add(command.name),names.push(command.name));return names}function getCoreCliCommandNames(){return collectCoreCliCommandNames()}function getCoreCliCommandsWithSubcommands(){return collectCoreCliCommandNames(command=>command.hasSubcommands)}function removeCommand(program,command){let commands=program.commands,index=commands.indexOf(command);index>=0&&commands.splice(index,1)}function removeEntryCommands(program,entry){for(let cmd of entry.commands){let existing=program.commands.find(c=>c.name()===cmd.name);existing&&removeCommand(program,existing)}}function registerLazyCoreCommand(program,ctx,entry,command){let placeholder=program.command(command.name).description(command.description);placeholder.allowUnknownOption(!0),placeholder.allowExcessArguments(!0),placeholder.action(async(...actionArgs)=>{removeEntryCommands(program,entry),await entry.register({program,ctx,argv:process.argv}),await reparseProgramFromActionArgs(program,actionArgs)})}async function registerCoreCliByName(program,ctx,name,argv=process.argv){let entry=coreEntries.find(candidate=>candidate.commands.some(cmd=>cmd.name===name));return entry?(removeEntryCommands(program,entry),await entry.register({program,ctx,argv}),!0):!1}function registerCoreCliCommands(program,ctx,argv){let primary=getPrimaryCommand(argv);if(primary&&shouldRegisterCorePrimaryOnly(argv)){let entry=coreEntries.find(candidate=>candidate.commands.some(cmd=>cmd.name===primary));if(entry){let cmd=entry.commands.find(c=>c.name===primary);cmd&&registerLazyCoreCommand(program,ctx,entry,cmd);return}}for(let entry of coreEntries)for(let cmd of entry.commands)registerLazyCoreCommand(program,ctx,entry,cmd)}function registerProgramCommands(program,ctx,argv=process.argv){registerCoreCliCommands(program,ctx,argv),registerSubCliCommands(program,argv)}export{registerProgramCommands as a,registerCoreCliCommands as i,getCoreCliCommandsWithSubcommands as n,registerCoreCliByName as r,getCoreCliCommandNames as t};
1
+ import{a as getPrimaryCommand,c as hasHelpOrVersion}from"./argv-BgQk38nl.js";import{a as reparseProgramFromActionArgs,i as registerSubCliCommands}from"./register.subclis-pWn9XObB.js";const shouldRegisterCorePrimaryOnly=argv=>!hasHelpOrVersion(argv),coreEntries=[{commands:[{name:`setup`,description:`Initialize local config and agent workspace`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.setup-CJPyAwCQ.js`)).registerSetupCommand(program)}},{commands:[{name:`onboard`,description:`Interactive onboarding wizard for gateway, workspace, and skills`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.onboard-B34211N6.js`)).registerOnboardCommand(program)}},{commands:[{name:`connect`,description:`Register this machine as an agent host in a Builderforce workspace`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.connect-CAmn1QTl.js`)).registerConnectCommand(program)}},{commands:[{name:`configure`,description:`Interactive setup wizard for credentials, channels, gateway, and agent defaults`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.configure-B0m0G3ot.js`)).registerConfigureCommand(program)}},{commands:[{name:`config`,description:`Non-interactive config helpers (get/set/unset). Default: starts setup wizard.`,hasSubcommands:!0}],register:async({program})=>{(await import(`./config-cli-CF31O_5s.js`)).registerConfigCli(program)}},{commands:[{name:`doctor`,description:`Health checks + quick fixes for the gateway and channels`,hasSubcommands:!1},{name:`dashboard`,description:`Open the Control UI with your current token`,hasSubcommands:!1},{name:`reset`,description:`Reset local config/state (keeps the CLI installed)`,hasSubcommands:!1},{name:`stop`,description:`Stop the running gateway service`,hasSubcommands:!1},{name:`uninstall`,description:`Uninstall the gateway service + local data (CLI remains)`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.maintenance-C6ocMld2.js`)).registerMaintenanceCommands(program)}},{commands:[{name:`message`,description:`Send, read, and manage messages`,hasSubcommands:!0}],register:async({program,ctx})=>{(await import(`./register.message-Tu1hlM0m.js`)).registerMessageCommands(program,ctx)}},{commands:[{name:`memory`,description:`Search and reindex memory files`,hasSubcommands:!0}],register:async({program})=>{(await import(`./memory-cli-BpAiRntI.js`)).registerMemoryCli(program)}},{commands:[{name:`agent`,description:`Run one agent turn via the Gateway`,hasSubcommands:!1},{name:`agents`,description:`Manage isolated agents (workspaces, auth, routing)`,hasSubcommands:!0}],register:async({program,ctx})=>{(await import(`./register.agent-Dhdo3_7k.js`)).registerAgentCommands(program,{agentChannelOptions:ctx.agentChannelOptions})}},{commands:[{name:`status`,description:`Show channel health and recent session recipients`,hasSubcommands:!1},{name:`health`,description:`Fetch health from the running gateway`,hasSubcommands:!1},{name:`sessions`,description:`List stored conversation sessions`,hasSubcommands:!1}],register:async({program})=>{(await import(`./register.status-health-sessions-BlgVxoZ4.js`)).registerStatusHealthSessionsCommands(program)}},{commands:[{name:`browser`,description:`Manage BuilderForceAgents's dedicated browser (Chrome/Chromium)`,hasSubcommands:!0}],register:async({program})=>{(await import(`./browser-cli-BZc64-Xx.js`)).registerBrowserCli(program)}},{commands:[{name:`init`,description:`Initialize a project with builderForceAgents`,hasSubcommands:!1},{name:`project`,description:`Manage builderForceAgents project context`,hasSubcommands:!0},{name:`workforce`,description:`Manage Builderforce Workforce agents (custom trained LLMs)`,hasSubcommands:!0}],register:async({program})=>{let mod=await import(`./builderforce-B9187Tm9.js`);program.addCommand(mod.createInitCommand()),program.addCommand(mod.createBuilderForceAgentsCommand()),program.addCommand(mod.createAgentCommand())}}];function collectCoreCliCommandNames(predicate){let seen=new Set,names=[];for(let entry of coreEntries)for(let command of entry.commands)predicate&&!predicate(command)||seen.has(command.name)||(seen.add(command.name),names.push(command.name));return names}function getCoreCliCommandNames(){return collectCoreCliCommandNames()}function getCoreCliCommandsWithSubcommands(){return collectCoreCliCommandNames(command=>command.hasSubcommands)}function removeCommand(program,command){let commands=program.commands,index=commands.indexOf(command);index>=0&&commands.splice(index,1)}function removeEntryCommands(program,entry){for(let cmd of entry.commands){let existing=program.commands.find(c=>c.name()===cmd.name);existing&&removeCommand(program,existing)}}function registerLazyCoreCommand(program,ctx,entry,command){let placeholder=program.command(command.name).description(command.description);placeholder.allowUnknownOption(!0),placeholder.allowExcessArguments(!0),placeholder.action(async(...actionArgs)=>{removeEntryCommands(program,entry),await entry.register({program,ctx,argv:process.argv}),await reparseProgramFromActionArgs(program,actionArgs)})}async function registerCoreCliByName(program,ctx,name,argv=process.argv){let entry=coreEntries.find(candidate=>candidate.commands.some(cmd=>cmd.name===name));return entry?(removeEntryCommands(program,entry),await entry.register({program,ctx,argv}),!0):!1}function registerCoreCliCommands(program,ctx,argv){let primary=getPrimaryCommand(argv);if(primary&&shouldRegisterCorePrimaryOnly(argv)){let entry=coreEntries.find(candidate=>candidate.commands.some(cmd=>cmd.name===primary));if(entry){let cmd=entry.commands.find(c=>c.name===primary);cmd&&registerLazyCoreCommand(program,ctx,entry,cmd);return}}for(let entry of coreEntries)for(let cmd of entry.commands)registerLazyCoreCommand(program,ctx,entry,cmd)}function registerProgramCommands(program,ctx,argv=process.argv){registerCoreCliCommands(program,ctx,argv),registerSubCliCommands(program,argv)}export{registerProgramCommands as a,registerCoreCliCommands as i,getCoreCliCommandsWithSubcommands as n,registerCoreCliByName as r,getCoreCliCommandNames 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"./register.subclis-Cr9DoYcv.js";import{r as registerCoreCliByName}from"./command-registry-COUcUWby.js";export{registerCoreCliByName};
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"./register.subclis-pWn9XObB.js";import{r as registerCoreCliByName}from"./command-registry-B7uAoROP.js";export{registerCoreCliByName};
@@ -1 +1 @@
1
- import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./program-context-BCwL3wlM.js";import{i as registerCompletionCli}from"./completion-cli-B2qcVd6q.js";export{registerCompletionCli};
1
+ import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./program-context-ClBa4lUj.js";import{i as registerCompletionCli}from"./completion-cli-gyvx5ZXu.js";export{registerCompletionCli};
@@ -1,4 +1,4 @@
1
- import{g as resolveStateDir}from"./paths-5FcIFMsj.js";import{g as pathExists}from"./utils-DbaBVFaK.js";import{o as routeLogsToStderr}from"./subsystem-B3TqcCrZ.js";import{a as registerCoreCliByName,c as getSubCliEntries,l as registerSubCliByName,r as getCoreCliCommandNames,t as getProgramContext}from"./program-context-BCwL3wlM.js";import os from"node:os";import path from"node:path";import fs from"node:fs/promises";import{Option}from"commander";const COMPLETION_SHELLS=[`zsh`,`bash`,`powershell`,`fish`];function isCompletionShell(value){return COMPLETION_SHELLS.includes(value)}function resolveShellFromEnv(env=process.env){let shellPath=env.SHELL?.trim()??``,shellName=shellPath?path.basename(shellPath).toLowerCase():``;return shellName===`zsh`?`zsh`:shellName===`bash`?`bash`:shellName===`fish`?`fish`:shellName===`pwsh`||shellName===`powershell`?`powershell`:`zsh`}function sanitizeCompletionBasename(value){let trimmed=value.trim();return trimmed?trimmed.replace(/[^a-zA-Z0-9._-]/g,`-`):`builderforce`}function resolveCompletionCacheDir(env=process.env){let stateDir=resolveStateDir(env,os.homedir);return path.join(stateDir,`completions`)}function resolveCompletionCachePath(shell,binName){let basename=sanitizeCompletionBasename(binName),extension=shell===`powershell`?`ps1`:shell===`fish`?`fish`:shell===`bash`?`bash`:`zsh`;return path.join(resolveCompletionCacheDir(),`${basename}.${extension}`)}async function completionCacheExists(shell,binName=`builderforce`){return pathExists(resolveCompletionCachePath(shell,binName))}function getCompletionScript(shell,program){return shell===`zsh`?generateZshCompletion(program):shell===`bash`?generateBashCompletion(program):shell===`powershell`?generatePowerShellCompletion(program):generateFishCompletion(program)}async function writeCompletionCache(params){let cacheDir=resolveCompletionCacheDir();await fs.mkdir(cacheDir,{recursive:!0});for(let shell of params.shells){let script=getCompletionScript(shell,params.program),targetPath=resolveCompletionCachePath(shell,params.binName);await fs.writeFile(targetPath,script,`utf-8`)}}function formatCompletionSourceLine(shell,binName,cachePath){return`source "${cachePath}"`}function isCompletionProfileHeader(line){return line.trim()===`# BuilderForceAgents Completion`}function isCompletionProfileLine(line,binName,cachePath){return!!(line.includes(`${binName} completion`)||cachePath&&line.includes(cachePath))}function isSlowDynamicCompletionLine(line,binName){return line.includes(`<(${binName} completion`)||line.includes(`${binName} completion`)&&line.includes(`| source`)}function updateCompletionProfile(content,binName,cachePath,sourceLine){let lines=content.split(`
1
+ import{g as resolveStateDir}from"./paths-5FcIFMsj.js";import{g as pathExists}from"./utils-DbaBVFaK.js";import{o as routeLogsToStderr}from"./subsystem-B3TqcCrZ.js";import{a as registerCoreCliByName,c as getSubCliEntries,l as registerSubCliByName,r as getCoreCliCommandNames,t as getProgramContext}from"./program-context-ClBa4lUj.js";import os from"node:os";import path from"node:path";import fs from"node:fs/promises";import{Option}from"commander";const COMPLETION_SHELLS=[`zsh`,`bash`,`powershell`,`fish`];function isCompletionShell(value){return COMPLETION_SHELLS.includes(value)}function resolveShellFromEnv(env=process.env){let shellPath=env.SHELL?.trim()??``,shellName=shellPath?path.basename(shellPath).toLowerCase():``;return shellName===`zsh`?`zsh`:shellName===`bash`?`bash`:shellName===`fish`?`fish`:shellName===`pwsh`||shellName===`powershell`?`powershell`:`zsh`}function sanitizeCompletionBasename(value){let trimmed=value.trim();return trimmed?trimmed.replace(/[^a-zA-Z0-9._-]/g,`-`):`builderforce`}function resolveCompletionCacheDir(env=process.env){let stateDir=resolveStateDir(env,os.homedir);return path.join(stateDir,`completions`)}function resolveCompletionCachePath(shell,binName){let basename=sanitizeCompletionBasename(binName),extension=shell===`powershell`?`ps1`:shell===`fish`?`fish`:shell===`bash`?`bash`:`zsh`;return path.join(resolveCompletionCacheDir(),`${basename}.${extension}`)}async function completionCacheExists(shell,binName=`builderforce`){return pathExists(resolveCompletionCachePath(shell,binName))}function getCompletionScript(shell,program){return shell===`zsh`?generateZshCompletion(program):shell===`bash`?generateBashCompletion(program):shell===`powershell`?generatePowerShellCompletion(program):generateFishCompletion(program)}async function writeCompletionCache(params){let cacheDir=resolveCompletionCacheDir();await fs.mkdir(cacheDir,{recursive:!0});for(let shell of params.shells){let script=getCompletionScript(shell,params.program),targetPath=resolveCompletionCachePath(shell,params.binName);await fs.writeFile(targetPath,script,`utf-8`)}}function formatCompletionSourceLine(shell,binName,cachePath){return`source "${cachePath}"`}function isCompletionProfileHeader(line){return line.trim()===`# BuilderForceAgents Completion`}function isCompletionProfileLine(line,binName,cachePath){return!!(line.includes(`${binName} completion`)||cachePath&&line.includes(cachePath))}function isSlowDynamicCompletionLine(line,binName){return line.includes(`<(${binName} completion`)||line.includes(`${binName} completion`)&&line.includes(`| source`)}function updateCompletionProfile(content,binName,cachePath,sourceLine){let lines=content.split(`
2
2
  `),filtered=[],hadExisting=!1;for(let i=0;i<lines.length;i+=1){let line=lines[i]??``;if(isCompletionProfileHeader(line)){hadExisting=!0,i+=1;continue}if(isCompletionProfileLine(line,binName,cachePath)){hadExisting=!0;continue}filtered.push(line)}let trimmed=filtered.join(`
3
3
  `).trimEnd(),block=`# BuilderForceAgents Completion\n${sourceLine}`,next=trimmed?`${trimmed}\n\n${block}\n`:`${block}\n`;return{next,changed:next!==content,hadExisting}}function getShellProfilePath(shell){let home=process.env.HOME||os.homedir();return shell===`zsh`?path.join(home,`.zshrc`):shell===`bash`?path.join(home,`.bashrc`):shell===`fish`?path.join(home,`.config`,`fish`,`config.fish`):process.platform===`win32`?path.join(process.env.USERPROFILE||home,`Documents`,`PowerShell`,`Microsoft.PowerShell_profile.ps1`):path.join(home,`.config`,`powershell`,`Microsoft.PowerShell_profile.ps1`)}async function isCompletionInstalled(shell,binName=`builderforce`){let profilePath=getShellProfilePath(shell);if(!await pathExists(profilePath))return!1;let cachePathCandidate=resolveCompletionCachePath(shell,binName),cachedPath=await pathExists(cachePathCandidate)?cachePathCandidate:null;return(await fs.readFile(profilePath,`utf-8`)).split(`
4
4
  `).some(line=>isCompletionProfileHeader(line)||isCompletionProfileLine(line,binName,cachedPath))}async function usesSlowDynamicCompletion(shell,binName=`builderforce`){let profilePath=getShellProfilePath(shell);if(!await pathExists(profilePath))return!1;let cachePath=resolveCompletionCachePath(shell,binName),lines=(await fs.readFile(profilePath,`utf-8`)).split(`
@@ -1,4 +1,4 @@
1
- import{g as resolveStateDir}from"./paths-BHg-VHB4.js";import{h as pathExists}from"./utils-BP60e80M.js";import{i as routeLogsToStderr}from"./subsystem-C4b1Von0.js";import{n as getSubCliEntries,r as registerSubCliByName}from"./register.subclis-Cr9DoYcv.js";import{r as registerCoreCliByName,t as getCoreCliCommandNames}from"./command-registry-COUcUWby.js";import{t as getProgramContext}from"./program-context-Wpc-6CdI.js";import os from"node:os";import path from"node:path";import fs from"node:fs/promises";import{Option}from"commander";const COMPLETION_SHELLS=[`zsh`,`bash`,`powershell`,`fish`];function isCompletionShell(value){return COMPLETION_SHELLS.includes(value)}function resolveShellFromEnv(env=process.env){let shellPath=env.SHELL?.trim()??``,shellName=shellPath?path.basename(shellPath).toLowerCase():``;return shellName===`zsh`?`zsh`:shellName===`bash`?`bash`:shellName===`fish`?`fish`:shellName===`pwsh`||shellName===`powershell`?`powershell`:`zsh`}function sanitizeCompletionBasename(value){let trimmed=value.trim();return trimmed?trimmed.replace(/[^a-zA-Z0-9._-]/g,`-`):`builderforce`}function resolveCompletionCacheDir(env=process.env){let stateDir=resolveStateDir(env,os.homedir);return path.join(stateDir,`completions`)}function resolveCompletionCachePath(shell,binName){let basename=sanitizeCompletionBasename(binName),extension=shell===`powershell`?`ps1`:shell===`fish`?`fish`:shell===`bash`?`bash`:`zsh`;return path.join(resolveCompletionCacheDir(),`${basename}.${extension}`)}async function completionCacheExists(shell,binName=`builderforce`){return pathExists(resolveCompletionCachePath(shell,binName))}function getCompletionScript(shell,program){return shell===`zsh`?generateZshCompletion(program):shell===`bash`?generateBashCompletion(program):shell===`powershell`?generatePowerShellCompletion(program):generateFishCompletion(program)}async function writeCompletionCache(params){let cacheDir=resolveCompletionCacheDir();await fs.mkdir(cacheDir,{recursive:!0});for(let shell of params.shells){let script=getCompletionScript(shell,params.program),targetPath=resolveCompletionCachePath(shell,params.binName);await fs.writeFile(targetPath,script,`utf-8`)}}function formatCompletionSourceLine(shell,binName,cachePath){return`source "${cachePath}"`}function isCompletionProfileHeader(line){return line.trim()===`# BuilderForceAgents Completion`}function isCompletionProfileLine(line,binName,cachePath){return!!(line.includes(`${binName} completion`)||cachePath&&line.includes(cachePath))}function isSlowDynamicCompletionLine(line,binName){return line.includes(`<(${binName} completion`)||line.includes(`${binName} completion`)&&line.includes(`| source`)}function updateCompletionProfile(content,binName,cachePath,sourceLine){let lines=content.split(`
1
+ import{g as resolveStateDir}from"./paths-BHg-VHB4.js";import{h as pathExists}from"./utils-BP60e80M.js";import{i as routeLogsToStderr}from"./subsystem-C4b1Von0.js";import{n as getSubCliEntries,r as registerSubCliByName}from"./register.subclis-pWn9XObB.js";import{r as registerCoreCliByName,t as getCoreCliCommandNames}from"./command-registry-B7uAoROP.js";import{t as getProgramContext}from"./program-context-Wpc-6CdI.js";import os from"node:os";import path from"node:path";import fs from"node:fs/promises";import{Option}from"commander";const COMPLETION_SHELLS=[`zsh`,`bash`,`powershell`,`fish`];function isCompletionShell(value){return COMPLETION_SHELLS.includes(value)}function resolveShellFromEnv(env=process.env){let shellPath=env.SHELL?.trim()??``,shellName=shellPath?path.basename(shellPath).toLowerCase():``;return shellName===`zsh`?`zsh`:shellName===`bash`?`bash`:shellName===`fish`?`fish`:shellName===`pwsh`||shellName===`powershell`?`powershell`:`zsh`}function sanitizeCompletionBasename(value){let trimmed=value.trim();return trimmed?trimmed.replace(/[^a-zA-Z0-9._-]/g,`-`):`builderforce`}function resolveCompletionCacheDir(env=process.env){let stateDir=resolveStateDir(env,os.homedir);return path.join(stateDir,`completions`)}function resolveCompletionCachePath(shell,binName){let basename=sanitizeCompletionBasename(binName),extension=shell===`powershell`?`ps1`:shell===`fish`?`fish`:shell===`bash`?`bash`:`zsh`;return path.join(resolveCompletionCacheDir(),`${basename}.${extension}`)}async function completionCacheExists(shell,binName=`builderforce`){return pathExists(resolveCompletionCachePath(shell,binName))}function getCompletionScript(shell,program){return shell===`zsh`?generateZshCompletion(program):shell===`bash`?generateBashCompletion(program):shell===`powershell`?generatePowerShellCompletion(program):generateFishCompletion(program)}async function writeCompletionCache(params){let cacheDir=resolveCompletionCacheDir();await fs.mkdir(cacheDir,{recursive:!0});for(let shell of params.shells){let script=getCompletionScript(shell,params.program),targetPath=resolveCompletionCachePath(shell,params.binName);await fs.writeFile(targetPath,script,`utf-8`)}}function formatCompletionSourceLine(shell,binName,cachePath){return`source "${cachePath}"`}function isCompletionProfileHeader(line){return line.trim()===`# BuilderForceAgents Completion`}function isCompletionProfileLine(line,binName,cachePath){return!!(line.includes(`${binName} completion`)||cachePath&&line.includes(cachePath))}function isSlowDynamicCompletionLine(line,binName){return line.includes(`<(${binName} completion`)||line.includes(`${binName} completion`)&&line.includes(`| source`)}function updateCompletionProfile(content,binName,cachePath,sourceLine){let lines=content.split(`
2
2
  `),filtered=[],hadExisting=!1;for(let i=0;i<lines.length;i+=1){let line=lines[i]??``;if(isCompletionProfileHeader(line)){hadExisting=!0,i+=1;continue}if(isCompletionProfileLine(line,binName,cachePath)){hadExisting=!0;continue}filtered.push(line)}let trimmed=filtered.join(`
3
3
  `).trimEnd(),block=`# BuilderForceAgents Completion\n${sourceLine}`,next=trimmed?`${trimmed}\n\n${block}\n`:`${block}\n`;return{next,changed:next!==content,hadExisting}}function getShellProfilePath(shell){let home=process.env.HOME||os.homedir();return shell===`zsh`?path.join(home,`.zshrc`):shell===`bash`?path.join(home,`.bashrc`):shell===`fish`?path.join(home,`.config`,`fish`,`config.fish`):process.platform===`win32`?path.join(process.env.USERPROFILE||home,`Documents`,`PowerShell`,`Microsoft.PowerShell_profile.ps1`):path.join(home,`.config`,`powershell`,`Microsoft.PowerShell_profile.ps1`)}async function isCompletionInstalled(shell,binName=`builderforce`){let profilePath=getShellProfilePath(shell);if(!await pathExists(profilePath))return!1;let cachePathCandidate=resolveCompletionCachePath(shell,binName),cachedPath=await pathExists(cachePathCandidate)?cachePathCandidate:null;return(await fs.readFile(profilePath,`utf-8`)).split(`
4
4
  `).some(line=>isCompletionProfileHeader(line)||isCompletionProfileLine(line,binName,cachedPath))}async function usesSlowDynamicCompletion(shell,binName=`builderforce`){let profilePath=getShellProfilePath(shell);if(!await pathExists(profilePath))return!1;let cachePath=resolveCompletionCachePath(shell,binName),lines=(await fs.readFile(profilePath,`utf-8`)).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"./register.subclis-Cr9DoYcv.js";import"./command-registry-COUcUWby.js";import"./program-context-Wpc-6CdI.js";import{i as registerCompletionCli}from"./completion-cli-DpFvU4Qn.js";export{registerCompletionCli};
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"./register.subclis-pWn9XObB.js";import"./command-registry-B7uAoROP.js";import"./program-context-Wpc-6CdI.js";import{i as registerCompletionCli}from"./completion-cli-n8UsdT91.js";export{registerCompletionCli};
@@ -1 +1 @@
1
- import{f as validateConfigObjectWithPlugins,j as applyLegacyMigrations}from"./io-3R_ZyUxB.js";function migrateLegacyConfig(raw){let{next,changes}=applyLegacyMigrations(raw);if(!next)return{config:null,changes:[]};let validated=validateConfigObjectWithPlugins(next);return validated.ok?{config:validated.config,changes}:(changes.push(`Migration applied, but config still invalid; fix remaining issues manually.`),{config:null,changes})}export{migrateLegacyConfig as t};
1
+ import{f as validateConfigObjectWithPlugins,j as applyLegacyMigrations}from"./io-BLBq4T2o.js";function migrateLegacyConfig(raw){let{next,changes}=applyLegacyMigrations(raw);if(!next)return{config:null,changes:[]};let validated=validateConfigObjectWithPlugins(next);return validated.ok?{config:validated.config,changes}:(changes.push(`Migration applied, but config still invalid; fix remaining issues manually.`),{config:null,changes})}export{migrateLegacyConfig as t};
@@ -1 +1 @@
1
- import{f as validateConfigObjectWithPlugins,j as applyLegacyMigrations}from"./io-CohJffHG.js";function migrateLegacyConfig(raw){let{next,changes}=applyLegacyMigrations(raw);if(!next)return{config:null,changes:[]};let validated=validateConfigObjectWithPlugins(next);return validated.ok?{config:validated.config,changes}:(changes.push(`Migration applied, but config still invalid; fix remaining issues manually.`),{config:null,changes})}export{migrateLegacyConfig as t};
1
+ import{f as validateConfigObjectWithPlugins,j as applyLegacyMigrations}from"./io-D9hC2aG0.js";function migrateLegacyConfig(raw){let{next,changes}=applyLegacyMigrations(raw);if(!next)return{config:null,changes:[]};let validated=validateConfigObjectWithPlugins(next);return validated.ok?{config:validated.config,changes}:(changes.push(`Migration applied, but config still invalid; fix remaining issues manually.`),{config:null,changes})}export{migrateLegacyConfig 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{r as loadConfig}from"./io-3R_ZyUxB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-_1Ca6jGb.js";export{loadConfig};
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{r as loadConfig}from"./io-BLBq4T2o.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BgV_FYSq.js";export{loadConfig};
@@ -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{r as loadConfig}from"./io-CohJffHG.js";import"./manifest-registry-009gLJ4l.js";import"./config-toczWD3q.js";export{loadConfig};
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{r as loadConfig}from"./io-D9hC2aG0.js";import"./manifest-registry-009gLJ4l.js";import"./config-BpChMIJ6.js";export{loadConfig};
@@ -1 +1 @@
1
- import"./paths-5FcIFMsj.js";import{B as theme,C as shortenHomePath,O as danger,k as info}from"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./logger-Bch0bx9c.js";import"./exec-DdcIjeyn.js";import"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import"./model-selection-9bRFKBI_.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import{a as readConfigFileSnapshot,c as writeConfigFile}from"./io-3R_ZyUxB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-_1Ca6jGb.js";import{t as formatDocsLink}from"./links-BgWWaaOT.js";import JSON5 from"json5";function isIndexSegment(raw){return/^[0-9]+$/.test(raw)}function parsePath(raw){let trimmed=raw.trim();if(!trimmed)return[];let parts=[],current=``,i=0;for(;i<trimmed.length;){let ch=trimmed[i];if(ch===`\\`){let next=trimmed[i+1];next&&(current+=next),i+=2;continue}if(ch===`.`){current&&parts.push(current),current=``,i+=1;continue}if(ch===`[`){current&&parts.push(current),current=``;let close=trimmed.indexOf(`]`,i);if(close===-1)throw Error(`Invalid path (missing "]"): ${raw}`);let inside=trimmed.slice(i+1,close).trim();if(!inside)throw Error(`Invalid path (empty "[]"): ${raw}`);parts.push(inside),i=close+1;continue}current+=ch,i+=1}return current&&parts.push(current),parts.map(part=>part.trim()).filter(Boolean)}function parseValue(raw,opts){let trimmed=raw.trim();if(opts.json)try{return JSON5.parse(trimmed)}catch(err){throw Error(`Failed to parse JSON5 value: ${String(err)}`,{cause:err})}try{return JSON5.parse(trimmed)}catch{return raw}}function getAtPath(root,path){let current=root;for(let segment of path){if(!current||typeof current!=`object`)return{found:!1};if(Array.isArray(current)){if(!isIndexSegment(segment))return{found:!1};let index=Number.parseInt(segment,10);if(!Number.isFinite(index)||index<0||index>=current.length)return{found:!1};current=current[index];continue}let record=current;if(!(segment in record))return{found:!1};current=record[segment]}return{found:!0,value:current}}function setAtPath(root,path,value){let current=root;for(let i=0;i<path.length-1;i+=1){let segment=path[i],next=path[i+1],nextIsIndex=!!(next&&isIndexSegment(next));if(Array.isArray(current)){if(!isIndexSegment(segment))throw Error(`Expected numeric index for array segment "${segment}"`);let index=Number.parseInt(segment,10),existing=current[index];(!existing||typeof existing!=`object`)&&(current[index]=nextIsIndex?[]:{}),current=current[index];continue}if(!current||typeof current!=`object`)throw Error(`Cannot traverse into "${segment}" (not an object)`);let record=current,existing=record[segment];(!existing||typeof existing!=`object`)&&(record[segment]=nextIsIndex?[]:{}),current=record[segment]}let last=path[path.length-1];if(Array.isArray(current)){if(!isIndexSegment(last))throw Error(`Expected numeric index for array segment "${last}"`);let index=Number.parseInt(last,10);current[index]=value;return}if(!current||typeof current!=`object`)throw Error(`Cannot set "${last}" (parent is not an object)`);current[last]=value}function unsetAtPath(root,path){let current=root;for(let i=0;i<path.length-1;i+=1){let segment=path[i];if(!current||typeof current!=`object`)return!1;if(Array.isArray(current)){if(!isIndexSegment(segment))return!1;let index=Number.parseInt(segment,10);if(!Number.isFinite(index)||index<0||index>=current.length)return!1;current=current[index];continue}let record=current;if(!(segment in record))return!1;current=record[segment]}let last=path[path.length-1];if(Array.isArray(current)){if(!isIndexSegment(last))return!1;let index=Number.parseInt(last,10);return!Number.isFinite(index)||index<0||index>=current.length?!1:(current.splice(index,1),!0)}if(!current||typeof current!=`object`)return!1;let record=current;return last in record?(delete record[last],!0):!1}async function loadValidConfig(runtime=defaultRuntime){let snapshot=await readConfigFileSnapshot();if(snapshot.valid)return snapshot;runtime.error(`Config invalid at ${shortenHomePath(snapshot.path)}.`);for(let issue of snapshot.issues)runtime.error(`- ${issue.path||`<root>`}: ${issue.message}`);return runtime.error(`Run \`${formatCliCommand(`builderforce doctor`)}\` to repair, then retry.`),runtime.exit(1),snapshot}function parseRequiredPath(path){let parsedPath=parsePath(path);if(parsedPath.length===0)throw Error(`Path is empty.`);return parsedPath}async function runConfigGet(opts){let runtime=opts.runtime??defaultRuntime;try{let parsedPath=parseRequiredPath(opts.path),res=getAtPath((await loadValidConfig(runtime)).config,parsedPath);if(!res.found){runtime.error(danger(`Config path not found: ${opts.path}`)),runtime.exit(1);return}if(opts.json){runtime.log(JSON.stringify(res.value??null,null,2));return}if(typeof res.value==`string`||typeof res.value==`number`||typeof res.value==`boolean`){runtime.log(String(res.value));return}runtime.log(JSON.stringify(res.value??null,null,2))}catch(err){runtime.error(danger(String(err))),runtime.exit(1)}}async function runConfigUnset(opts){let runtime=opts.runtime??defaultRuntime;try{let parsedPath=parseRequiredPath(opts.path),snapshot=await loadValidConfig(runtime),next=structuredClone(snapshot.resolved);if(!unsetAtPath(next,parsedPath)){runtime.error(danger(`Config path not found: ${opts.path}`)),runtime.exit(1);return}await writeConfigFile(next),runtime.log(info(`Removed ${opts.path}. Restart the gateway to apply.`))}catch(err){runtime.error(danger(String(err))),runtime.exit(1)}}function registerConfigCli(program){let cmd=program.command(`config`).description(`Non-interactive config helpers (get/set/unset). Run without subcommand for the setup wizard.`).addHelpText(`after`,()=>`\n${theme.muted(`Docs:`)} ${formatDocsLink(`/cli/config`,`docs.builderforce.ai/cli/config`)}\n`).option(`--section <section>`,`Configure wizard sections (repeatable). Use with no subcommand.`,(value,previous)=>[...previous,value],[]).action(async opts=>{let{configureCommandFromSectionsArg}=await import(`./configure-fHVOAucW.js`);await configureCommandFromSectionsArg(opts.section,defaultRuntime)});cmd.command(`get`).description(`Get a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).option(`--json`,`Output JSON`,!1).action(async(path,opts)=>{await runConfigGet({path,json:!!opts.json})}),cmd.command(`set`).description(`Set a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).argument(`<value>`,`Value (JSON5 or raw string)`).option(`--json`,`Parse value as JSON5 (required)`,!1).action(async(path,value,opts)=>{try{let parsedPath=parsePath(path);if(parsedPath.length===0)throw Error(`Path is empty.`);let parsedValue=parseValue(value,opts),snapshot=await loadValidConfig(),next=structuredClone(snapshot.resolved);setAtPath(next,parsedPath,parsedValue),await writeConfigFile(next),defaultRuntime.log(info(`Updated ${path}. Restart the gateway to apply.`))}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),cmd.command(`unset`).description(`Remove a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).action(async path=>{await runConfigUnset({path})})}export{registerConfigCli};
1
+ import"./paths-5FcIFMsj.js";import{B as theme,C as shortenHomePath,O as danger,k as info}from"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./logger-Bch0bx9c.js";import"./exec-DdcIjeyn.js";import"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import"./model-selection-DG9J_VTz.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import{a as readConfigFileSnapshot,c as writeConfigFile}from"./io-BLBq4T2o.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BgV_FYSq.js";import{t as formatDocsLink}from"./links-BgWWaaOT.js";import JSON5 from"json5";function isIndexSegment(raw){return/^[0-9]+$/.test(raw)}function parsePath(raw){let trimmed=raw.trim();if(!trimmed)return[];let parts=[],current=``,i=0;for(;i<trimmed.length;){let ch=trimmed[i];if(ch===`\\`){let next=trimmed[i+1];next&&(current+=next),i+=2;continue}if(ch===`.`){current&&parts.push(current),current=``,i+=1;continue}if(ch===`[`){current&&parts.push(current),current=``;let close=trimmed.indexOf(`]`,i);if(close===-1)throw Error(`Invalid path (missing "]"): ${raw}`);let inside=trimmed.slice(i+1,close).trim();if(!inside)throw Error(`Invalid path (empty "[]"): ${raw}`);parts.push(inside),i=close+1;continue}current+=ch,i+=1}return current&&parts.push(current),parts.map(part=>part.trim()).filter(Boolean)}function parseValue(raw,opts){let trimmed=raw.trim();if(opts.json)try{return JSON5.parse(trimmed)}catch(err){throw Error(`Failed to parse JSON5 value: ${String(err)}`,{cause:err})}try{return JSON5.parse(trimmed)}catch{return raw}}function getAtPath(root,path){let current=root;for(let segment of path){if(!current||typeof current!=`object`)return{found:!1};if(Array.isArray(current)){if(!isIndexSegment(segment))return{found:!1};let index=Number.parseInt(segment,10);if(!Number.isFinite(index)||index<0||index>=current.length)return{found:!1};current=current[index];continue}let record=current;if(!(segment in record))return{found:!1};current=record[segment]}return{found:!0,value:current}}function setAtPath(root,path,value){let current=root;for(let i=0;i<path.length-1;i+=1){let segment=path[i],next=path[i+1],nextIsIndex=!!(next&&isIndexSegment(next));if(Array.isArray(current)){if(!isIndexSegment(segment))throw Error(`Expected numeric index for array segment "${segment}"`);let index=Number.parseInt(segment,10),existing=current[index];(!existing||typeof existing!=`object`)&&(current[index]=nextIsIndex?[]:{}),current=current[index];continue}if(!current||typeof current!=`object`)throw Error(`Cannot traverse into "${segment}" (not an object)`);let record=current,existing=record[segment];(!existing||typeof existing!=`object`)&&(record[segment]=nextIsIndex?[]:{}),current=record[segment]}let last=path[path.length-1];if(Array.isArray(current)){if(!isIndexSegment(last))throw Error(`Expected numeric index for array segment "${last}"`);let index=Number.parseInt(last,10);current[index]=value;return}if(!current||typeof current!=`object`)throw Error(`Cannot set "${last}" (parent is not an object)`);current[last]=value}function unsetAtPath(root,path){let current=root;for(let i=0;i<path.length-1;i+=1){let segment=path[i];if(!current||typeof current!=`object`)return!1;if(Array.isArray(current)){if(!isIndexSegment(segment))return!1;let index=Number.parseInt(segment,10);if(!Number.isFinite(index)||index<0||index>=current.length)return!1;current=current[index];continue}let record=current;if(!(segment in record))return!1;current=record[segment]}let last=path[path.length-1];if(Array.isArray(current)){if(!isIndexSegment(last))return!1;let index=Number.parseInt(last,10);return!Number.isFinite(index)||index<0||index>=current.length?!1:(current.splice(index,1),!0)}if(!current||typeof current!=`object`)return!1;let record=current;return last in record?(delete record[last],!0):!1}async function loadValidConfig(runtime=defaultRuntime){let snapshot=await readConfigFileSnapshot();if(snapshot.valid)return snapshot;runtime.error(`Config invalid at ${shortenHomePath(snapshot.path)}.`);for(let issue of snapshot.issues)runtime.error(`- ${issue.path||`<root>`}: ${issue.message}`);return runtime.error(`Run \`${formatCliCommand(`builderforce doctor`)}\` to repair, then retry.`),runtime.exit(1),snapshot}function parseRequiredPath(path){let parsedPath=parsePath(path);if(parsedPath.length===0)throw Error(`Path is empty.`);return parsedPath}async function runConfigGet(opts){let runtime=opts.runtime??defaultRuntime;try{let parsedPath=parseRequiredPath(opts.path),res=getAtPath((await loadValidConfig(runtime)).config,parsedPath);if(!res.found){runtime.error(danger(`Config path not found: ${opts.path}`)),runtime.exit(1);return}if(opts.json){runtime.log(JSON.stringify(res.value??null,null,2));return}if(typeof res.value==`string`||typeof res.value==`number`||typeof res.value==`boolean`){runtime.log(String(res.value));return}runtime.log(JSON.stringify(res.value??null,null,2))}catch(err){runtime.error(danger(String(err))),runtime.exit(1)}}async function runConfigUnset(opts){let runtime=opts.runtime??defaultRuntime;try{let parsedPath=parseRequiredPath(opts.path),snapshot=await loadValidConfig(runtime),next=structuredClone(snapshot.resolved);if(!unsetAtPath(next,parsedPath)){runtime.error(danger(`Config path not found: ${opts.path}`)),runtime.exit(1);return}await writeConfigFile(next),runtime.log(info(`Removed ${opts.path}. Restart the gateway to apply.`))}catch(err){runtime.error(danger(String(err))),runtime.exit(1)}}function registerConfigCli(program){let cmd=program.command(`config`).description(`Non-interactive config helpers (get/set/unset). Run without subcommand for the setup wizard.`).addHelpText(`after`,()=>`\n${theme.muted(`Docs:`)} ${formatDocsLink(`/cli/config`,`docs.builderforce.ai/cli/config`)}\n`).option(`--section <section>`,`Configure wizard sections (repeatable). Use with no subcommand.`,(value,previous)=>[...previous,value],[]).action(async opts=>{let{configureCommandFromSectionsArg}=await import(`./configure-MXheujvX.js`);await configureCommandFromSectionsArg(opts.section,defaultRuntime)});cmd.command(`get`).description(`Get a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).option(`--json`,`Output JSON`,!1).action(async(path,opts)=>{await runConfigGet({path,json:!!opts.json})}),cmd.command(`set`).description(`Set a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).argument(`<value>`,`Value (JSON5 or raw string)`).option(`--json`,`Parse value as JSON5 (required)`,!1).action(async(path,value,opts)=>{try{let parsedPath=parsePath(path);if(parsedPath.length===0)throw Error(`Path is empty.`);let parsedValue=parseValue(value,opts),snapshot=await loadValidConfig(),next=structuredClone(snapshot.resolved);setAtPath(next,parsedPath,parsedValue),await writeConfigFile(next),defaultRuntime.log(info(`Updated ${path}. Restart the gateway to apply.`))}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),cmd.command(`unset`).description(`Remove a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).action(async path=>{await runConfigUnset({path})})}export{registerConfigCli};
@@ -1 +1 @@
1
- import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import{D as danger,O as info,S as shortenHomePath,z as theme}from"./utils-BP60e80M.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./auth-profiles-C1VbcUOm.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import"./src-DvWaTze9.js";import"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-HrLX5bhG.js";import{a as readConfigFileSnapshot,c as writeConfigFile}from"./io-CohJffHG.js";import"./manifest-registry-009gLJ4l.js";import"./config-toczWD3q.js";import{t as formatDocsLink}from"./links-BKzP7VVP.js";import JSON5 from"json5";function isIndexSegment(raw){return/^[0-9]+$/.test(raw)}function parsePath(raw){let trimmed=raw.trim();if(!trimmed)return[];let parts=[],current=``,i=0;for(;i<trimmed.length;){let ch=trimmed[i];if(ch===`\\`){let next=trimmed[i+1];next&&(current+=next),i+=2;continue}if(ch===`.`){current&&parts.push(current),current=``,i+=1;continue}if(ch===`[`){current&&parts.push(current),current=``;let close=trimmed.indexOf(`]`,i);if(close===-1)throw Error(`Invalid path (missing "]"): ${raw}`);let inside=trimmed.slice(i+1,close).trim();if(!inside)throw Error(`Invalid path (empty "[]"): ${raw}`);parts.push(inside),i=close+1;continue}current+=ch,i+=1}return current&&parts.push(current),parts.map(part=>part.trim()).filter(Boolean)}function parseValue(raw,opts){let trimmed=raw.trim();if(opts.json)try{return JSON5.parse(trimmed)}catch(err){throw Error(`Failed to parse JSON5 value: ${String(err)}`,{cause:err})}try{return JSON5.parse(trimmed)}catch{return raw}}function getAtPath(root,path){let current=root;for(let segment of path){if(!current||typeof current!=`object`)return{found:!1};if(Array.isArray(current)){if(!isIndexSegment(segment))return{found:!1};let index=Number.parseInt(segment,10);if(!Number.isFinite(index)||index<0||index>=current.length)return{found:!1};current=current[index];continue}let record=current;if(!(segment in record))return{found:!1};current=record[segment]}return{found:!0,value:current}}function setAtPath(root,path,value){let current=root;for(let i=0;i<path.length-1;i+=1){let segment=path[i],next=path[i+1],nextIsIndex=!!(next&&isIndexSegment(next));if(Array.isArray(current)){if(!isIndexSegment(segment))throw Error(`Expected numeric index for array segment "${segment}"`);let index=Number.parseInt(segment,10),existing=current[index];(!existing||typeof existing!=`object`)&&(current[index]=nextIsIndex?[]:{}),current=current[index];continue}if(!current||typeof current!=`object`)throw Error(`Cannot traverse into "${segment}" (not an object)`);let record=current,existing=record[segment];(!existing||typeof existing!=`object`)&&(record[segment]=nextIsIndex?[]:{}),current=record[segment]}let last=path[path.length-1];if(Array.isArray(current)){if(!isIndexSegment(last))throw Error(`Expected numeric index for array segment "${last}"`);let index=Number.parseInt(last,10);current[index]=value;return}if(!current||typeof current!=`object`)throw Error(`Cannot set "${last}" (parent is not an object)`);current[last]=value}function unsetAtPath(root,path){let current=root;for(let i=0;i<path.length-1;i+=1){let segment=path[i];if(!current||typeof current!=`object`)return!1;if(Array.isArray(current)){if(!isIndexSegment(segment))return!1;let index=Number.parseInt(segment,10);if(!Number.isFinite(index)||index<0||index>=current.length)return!1;current=current[index];continue}let record=current;if(!(segment in record))return!1;current=record[segment]}let last=path[path.length-1];if(Array.isArray(current)){if(!isIndexSegment(last))return!1;let index=Number.parseInt(last,10);return!Number.isFinite(index)||index<0||index>=current.length?!1:(current.splice(index,1),!0)}if(!current||typeof current!=`object`)return!1;let record=current;return last in record?(delete record[last],!0):!1}async function loadValidConfig(runtime=defaultRuntime){let snapshot=await readConfigFileSnapshot();if(snapshot.valid)return snapshot;runtime.error(`Config invalid at ${shortenHomePath(snapshot.path)}.`);for(let issue of snapshot.issues)runtime.error(`- ${issue.path||`<root>`}: ${issue.message}`);return runtime.error(`Run \`${formatCliCommand(`builderforce doctor`)}\` to repair, then retry.`),runtime.exit(1),snapshot}function parseRequiredPath(path){let parsedPath=parsePath(path);if(parsedPath.length===0)throw Error(`Path is empty.`);return parsedPath}async function runConfigGet(opts){let runtime=opts.runtime??defaultRuntime;try{let parsedPath=parseRequiredPath(opts.path),res=getAtPath((await loadValidConfig(runtime)).config,parsedPath);if(!res.found){runtime.error(danger(`Config path not found: ${opts.path}`)),runtime.exit(1);return}if(opts.json){runtime.log(JSON.stringify(res.value??null,null,2));return}if(typeof res.value==`string`||typeof res.value==`number`||typeof res.value==`boolean`){runtime.log(String(res.value));return}runtime.log(JSON.stringify(res.value??null,null,2))}catch(err){runtime.error(danger(String(err))),runtime.exit(1)}}async function runConfigUnset(opts){let runtime=opts.runtime??defaultRuntime;try{let parsedPath=parseRequiredPath(opts.path),snapshot=await loadValidConfig(runtime),next=structuredClone(snapshot.resolved);if(!unsetAtPath(next,parsedPath)){runtime.error(danger(`Config path not found: ${opts.path}`)),runtime.exit(1);return}await writeConfigFile(next),runtime.log(info(`Removed ${opts.path}. Restart the gateway to apply.`))}catch(err){runtime.error(danger(String(err))),runtime.exit(1)}}function registerConfigCli(program){let cmd=program.command(`config`).description(`Non-interactive config helpers (get/set/unset). Run without subcommand for the setup wizard.`).addHelpText(`after`,()=>`\n${theme.muted(`Docs:`)} ${formatDocsLink(`/cli/config`,`docs.builderforce.ai/cli/config`)}\n`).option(`--section <section>`,`Configure wizard sections (repeatable). Use with no subcommand.`,(value,previous)=>[...previous,value],[]).action(async opts=>{let{configureCommandFromSectionsArg}=await import(`./configure-CWBBFk3F.js`);await configureCommandFromSectionsArg(opts.section,defaultRuntime)});cmd.command(`get`).description(`Get a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).option(`--json`,`Output JSON`,!1).action(async(path,opts)=>{await runConfigGet({path,json:!!opts.json})}),cmd.command(`set`).description(`Set a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).argument(`<value>`,`Value (JSON5 or raw string)`).option(`--json`,`Parse value as JSON5 (required)`,!1).action(async(path,value,opts)=>{try{let parsedPath=parsePath(path);if(parsedPath.length===0)throw Error(`Path is empty.`);let parsedValue=parseValue(value,opts),snapshot=await loadValidConfig(),next=structuredClone(snapshot.resolved);setAtPath(next,parsedPath,parsedValue),await writeConfigFile(next),defaultRuntime.log(info(`Updated ${path}. Restart the gateway to apply.`))}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),cmd.command(`unset`).description(`Remove a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).action(async path=>{await runConfigUnset({path})})}export{registerConfigCli,runConfigGet,runConfigUnset};
1
+ import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import{D as danger,O as info,S as shortenHomePath,z as theme}from"./utils-BP60e80M.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./auth-profiles-pt7Tr4HA.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import"./src-DvWaTze9.js";import"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-HrLX5bhG.js";import{a as readConfigFileSnapshot,c as writeConfigFile}from"./io-D9hC2aG0.js";import"./manifest-registry-009gLJ4l.js";import"./config-BpChMIJ6.js";import{t as formatDocsLink}from"./links-BKzP7VVP.js";import JSON5 from"json5";function isIndexSegment(raw){return/^[0-9]+$/.test(raw)}function parsePath(raw){let trimmed=raw.trim();if(!trimmed)return[];let parts=[],current=``,i=0;for(;i<trimmed.length;){let ch=trimmed[i];if(ch===`\\`){let next=trimmed[i+1];next&&(current+=next),i+=2;continue}if(ch===`.`){current&&parts.push(current),current=``,i+=1;continue}if(ch===`[`){current&&parts.push(current),current=``;let close=trimmed.indexOf(`]`,i);if(close===-1)throw Error(`Invalid path (missing "]"): ${raw}`);let inside=trimmed.slice(i+1,close).trim();if(!inside)throw Error(`Invalid path (empty "[]"): ${raw}`);parts.push(inside),i=close+1;continue}current+=ch,i+=1}return current&&parts.push(current),parts.map(part=>part.trim()).filter(Boolean)}function parseValue(raw,opts){let trimmed=raw.trim();if(opts.json)try{return JSON5.parse(trimmed)}catch(err){throw Error(`Failed to parse JSON5 value: ${String(err)}`,{cause:err})}try{return JSON5.parse(trimmed)}catch{return raw}}function getAtPath(root,path){let current=root;for(let segment of path){if(!current||typeof current!=`object`)return{found:!1};if(Array.isArray(current)){if(!isIndexSegment(segment))return{found:!1};let index=Number.parseInt(segment,10);if(!Number.isFinite(index)||index<0||index>=current.length)return{found:!1};current=current[index];continue}let record=current;if(!(segment in record))return{found:!1};current=record[segment]}return{found:!0,value:current}}function setAtPath(root,path,value){let current=root;for(let i=0;i<path.length-1;i+=1){let segment=path[i],next=path[i+1],nextIsIndex=!!(next&&isIndexSegment(next));if(Array.isArray(current)){if(!isIndexSegment(segment))throw Error(`Expected numeric index for array segment "${segment}"`);let index=Number.parseInt(segment,10),existing=current[index];(!existing||typeof existing!=`object`)&&(current[index]=nextIsIndex?[]:{}),current=current[index];continue}if(!current||typeof current!=`object`)throw Error(`Cannot traverse into "${segment}" (not an object)`);let record=current,existing=record[segment];(!existing||typeof existing!=`object`)&&(record[segment]=nextIsIndex?[]:{}),current=record[segment]}let last=path[path.length-1];if(Array.isArray(current)){if(!isIndexSegment(last))throw Error(`Expected numeric index for array segment "${last}"`);let index=Number.parseInt(last,10);current[index]=value;return}if(!current||typeof current!=`object`)throw Error(`Cannot set "${last}" (parent is not an object)`);current[last]=value}function unsetAtPath(root,path){let current=root;for(let i=0;i<path.length-1;i+=1){let segment=path[i];if(!current||typeof current!=`object`)return!1;if(Array.isArray(current)){if(!isIndexSegment(segment))return!1;let index=Number.parseInt(segment,10);if(!Number.isFinite(index)||index<0||index>=current.length)return!1;current=current[index];continue}let record=current;if(!(segment in record))return!1;current=record[segment]}let last=path[path.length-1];if(Array.isArray(current)){if(!isIndexSegment(last))return!1;let index=Number.parseInt(last,10);return!Number.isFinite(index)||index<0||index>=current.length?!1:(current.splice(index,1),!0)}if(!current||typeof current!=`object`)return!1;let record=current;return last in record?(delete record[last],!0):!1}async function loadValidConfig(runtime=defaultRuntime){let snapshot=await readConfigFileSnapshot();if(snapshot.valid)return snapshot;runtime.error(`Config invalid at ${shortenHomePath(snapshot.path)}.`);for(let issue of snapshot.issues)runtime.error(`- ${issue.path||`<root>`}: ${issue.message}`);return runtime.error(`Run \`${formatCliCommand(`builderforce doctor`)}\` to repair, then retry.`),runtime.exit(1),snapshot}function parseRequiredPath(path){let parsedPath=parsePath(path);if(parsedPath.length===0)throw Error(`Path is empty.`);return parsedPath}async function runConfigGet(opts){let runtime=opts.runtime??defaultRuntime;try{let parsedPath=parseRequiredPath(opts.path),res=getAtPath((await loadValidConfig(runtime)).config,parsedPath);if(!res.found){runtime.error(danger(`Config path not found: ${opts.path}`)),runtime.exit(1);return}if(opts.json){runtime.log(JSON.stringify(res.value??null,null,2));return}if(typeof res.value==`string`||typeof res.value==`number`||typeof res.value==`boolean`){runtime.log(String(res.value));return}runtime.log(JSON.stringify(res.value??null,null,2))}catch(err){runtime.error(danger(String(err))),runtime.exit(1)}}async function runConfigUnset(opts){let runtime=opts.runtime??defaultRuntime;try{let parsedPath=parseRequiredPath(opts.path),snapshot=await loadValidConfig(runtime),next=structuredClone(snapshot.resolved);if(!unsetAtPath(next,parsedPath)){runtime.error(danger(`Config path not found: ${opts.path}`)),runtime.exit(1);return}await writeConfigFile(next),runtime.log(info(`Removed ${opts.path}. Restart the gateway to apply.`))}catch(err){runtime.error(danger(String(err))),runtime.exit(1)}}function registerConfigCli(program){let cmd=program.command(`config`).description(`Non-interactive config helpers (get/set/unset). Run without subcommand for the setup wizard.`).addHelpText(`after`,()=>`\n${theme.muted(`Docs:`)} ${formatDocsLink(`/cli/config`,`docs.builderforce.ai/cli/config`)}\n`).option(`--section <section>`,`Configure wizard sections (repeatable). Use with no subcommand.`,(value,previous)=>[...previous,value],[]).action(async opts=>{let{configureCommandFromSectionsArg}=await import(`./configure-DhazB2qh.js`);await configureCommandFromSectionsArg(opts.section,defaultRuntime)});cmd.command(`get`).description(`Get a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).option(`--json`,`Output JSON`,!1).action(async(path,opts)=>{await runConfigGet({path,json:!!opts.json})}),cmd.command(`set`).description(`Set a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).argument(`<value>`,`Value (JSON5 or raw string)`).option(`--json`,`Parse value as JSON5 (required)`,!1).action(async(path,value,opts)=>{try{let parsedPath=parsePath(path);if(parsedPath.length===0)throw Error(`Path is empty.`);let parsedValue=parseValue(value,opts),snapshot=await loadValidConfig(),next=structuredClone(snapshot.resolved);setAtPath(next,parsedPath,parsedValue),await writeConfigFile(next),defaultRuntime.log(info(`Updated ${path}. Restart the gateway to apply.`))}catch(err){defaultRuntime.error(danger(String(err))),defaultRuntime.exit(1)}}),cmd.command(`unset`).description(`Remove a config value by dot path`).argument(`<path>`,`Config path (dot or bracket notation)`).action(async path=>{await runConfigUnset({path})})}export{registerConfigCli,runConfigGet,runConfigUnset};
@@ -1,3 +1,3 @@
1
- import"./paths-5FcIFMsj.js";import{B as theme,C as shortenHomePath,R as colorize,z as isRich}from"./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{t as formatCliCommand}from"./command-format-D806O2pt.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import{a as readConfigFileSnapshot}from"./io-3R_ZyUxB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-_1Ca6jGb.js";const ALLOWED_INVALID_COMMANDS=new Set([`doctor`,`logs`,`health`,`help`,`status`,`stop`]),ALLOWED_INVALID_GATEWAY_SUBCOMMANDS=new Set([`status`,`probe`,`health`,`discover`,`call`,`install`,`uninstall`,`start`,`stop`,`restart`]);let configSnapshotPromise=null;function formatConfigIssues(issues){return issues.map(issue=>`- ${issue.path||`<root>`}: ${issue.message}`)}async function getConfigSnapshot(){return process.env.VITEST===`true`?readConfigFileSnapshot():(configSnapshotPromise??=readConfigFileSnapshot(),configSnapshotPromise)}async function ensureConfigReady(params){let commandPath=params.commandPath??[],snapshot=await getConfigSnapshot(),commandName=commandPath[0],subcommandName=commandPath[1],allowInvalid=commandName?ALLOWED_INVALID_COMMANDS.has(commandName)||commandName===`gateway`&&subcommandName&&ALLOWED_INVALID_GATEWAY_SUBCOMMANDS.has(subcommandName):!1,issues=snapshot.exists&&!snapshot.valid?formatConfigIssues(snapshot.issues):[],legacyIssues=snapshot.legacyIssues.length>0?snapshot.legacyIssues.map(issue=>`- ${issue.path}: ${issue.message}`):[];if(!(snapshot.exists&&!snapshot.valid))return;let rich=isRich(),muted=value=>colorize(rich,theme.muted,value),error=value=>colorize(rich,theme.error,value);params.runtime.error((value=>colorize(rich,theme.heading,value))(`Config invalid`)),params.runtime.error(`${muted(`File:`)} ${muted(shortenHomePath(snapshot.path))}`),issues.length>0&&(params.runtime.error(muted(`Problem:`)),params.runtime.error(issues.map(issue=>` ${error(issue)}`).join(`
1
+ import"./paths-5FcIFMsj.js";import{B as theme,C as shortenHomePath,R as colorize,z as isRich}from"./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{t as formatCliCommand}from"./command-format-D806O2pt.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import{a as readConfigFileSnapshot}from"./io-BLBq4T2o.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BgV_FYSq.js";const ALLOWED_INVALID_COMMANDS=new Set([`doctor`,`logs`,`health`,`help`,`status`,`stop`]),ALLOWED_INVALID_GATEWAY_SUBCOMMANDS=new Set([`status`,`probe`,`health`,`discover`,`call`,`install`,`uninstall`,`start`,`stop`,`restart`]);let configSnapshotPromise=null;function formatConfigIssues(issues){return issues.map(issue=>`- ${issue.path||`<root>`}: ${issue.message}`)}async function getConfigSnapshot(){return process.env.VITEST===`true`?readConfigFileSnapshot():(configSnapshotPromise??=readConfigFileSnapshot(),configSnapshotPromise)}async function ensureConfigReady(params){let commandPath=params.commandPath??[],snapshot=await getConfigSnapshot(),commandName=commandPath[0],subcommandName=commandPath[1],allowInvalid=commandName?ALLOWED_INVALID_COMMANDS.has(commandName)||commandName===`gateway`&&subcommandName&&ALLOWED_INVALID_GATEWAY_SUBCOMMANDS.has(subcommandName):!1,issues=snapshot.exists&&!snapshot.valid?formatConfigIssues(snapshot.issues):[],legacyIssues=snapshot.legacyIssues.length>0?snapshot.legacyIssues.map(issue=>`- ${issue.path}: ${issue.message}`):[];if(!(snapshot.exists&&!snapshot.valid))return;let rich=isRich(),muted=value=>colorize(rich,theme.muted,value),error=value=>colorize(rich,theme.error,value);params.runtime.error((value=>colorize(rich,theme.heading,value))(`Config invalid`)),params.runtime.error(`${muted(`File:`)} ${muted(shortenHomePath(snapshot.path))}`),issues.length>0&&(params.runtime.error(muted(`Problem:`)),params.runtime.error(issues.map(issue=>` ${error(issue)}`).join(`
2
2
  `))),legacyIssues.length>0&&(params.runtime.error(muted(`Legacy config keys detected:`)),params.runtime.error(legacyIssues.map(issue=>` ${error(issue)}`).join(`
3
3
  `))),params.runtime.error(``),params.runtime.error(`${muted(`Run:`)} ${(value=>colorize(rich,theme.command,value))(formatCliCommand(`builderforce doctor --fix`))}`),allowInvalid||params.runtime.exit(1)}export{ensureConfigReady};
@@ -1,3 +1,3 @@
1
- import{L as colorize,R as isRich,S as shortenHomePath,z as theme}from"./utils-BP60e80M.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{a as readConfigFileSnapshot}from"./io-CohJffHG.js";const ALLOWED_INVALID_COMMANDS=new Set([`doctor`,`logs`,`health`,`help`,`status`,`stop`]),ALLOWED_INVALID_GATEWAY_SUBCOMMANDS=new Set([`status`,`probe`,`health`,`discover`,`call`,`install`,`uninstall`,`start`,`stop`,`restart`]);let configSnapshotPromise=null;function formatConfigIssues(issues){return issues.map(issue=>`- ${issue.path||`<root>`}: ${issue.message}`)}async function getConfigSnapshot(){return process.env.VITEST===`true`?readConfigFileSnapshot():(configSnapshotPromise??=readConfigFileSnapshot(),configSnapshotPromise)}async function ensureConfigReady(params){let commandPath=params.commandPath??[],snapshot=await getConfigSnapshot(),commandName=commandPath[0],subcommandName=commandPath[1],allowInvalid=commandName?ALLOWED_INVALID_COMMANDS.has(commandName)||commandName===`gateway`&&subcommandName&&ALLOWED_INVALID_GATEWAY_SUBCOMMANDS.has(subcommandName):!1,issues=snapshot.exists&&!snapshot.valid?formatConfigIssues(snapshot.issues):[],legacyIssues=snapshot.legacyIssues.length>0?snapshot.legacyIssues.map(issue=>`- ${issue.path}: ${issue.message}`):[];if(!(snapshot.exists&&!snapshot.valid))return;let rich=isRich(),muted=value=>colorize(rich,theme.muted,value),error=value=>colorize(rich,theme.error,value);params.runtime.error((value=>colorize(rich,theme.heading,value))(`Config invalid`)),params.runtime.error(`${muted(`File:`)} ${muted(shortenHomePath(snapshot.path))}`),issues.length>0&&(params.runtime.error(muted(`Problem:`)),params.runtime.error(issues.map(issue=>` ${error(issue)}`).join(`
1
+ import{L as colorize,R as isRich,S as shortenHomePath,z as theme}from"./utils-BP60e80M.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{a as readConfigFileSnapshot}from"./io-D9hC2aG0.js";const ALLOWED_INVALID_COMMANDS=new Set([`doctor`,`logs`,`health`,`help`,`status`,`stop`]),ALLOWED_INVALID_GATEWAY_SUBCOMMANDS=new Set([`status`,`probe`,`health`,`discover`,`call`,`install`,`uninstall`,`start`,`stop`,`restart`]);let configSnapshotPromise=null;function formatConfigIssues(issues){return issues.map(issue=>`- ${issue.path||`<root>`}: ${issue.message}`)}async function getConfigSnapshot(){return process.env.VITEST===`true`?readConfigFileSnapshot():(configSnapshotPromise??=readConfigFileSnapshot(),configSnapshotPromise)}async function ensureConfigReady(params){let commandPath=params.commandPath??[],snapshot=await getConfigSnapshot(),commandName=commandPath[0],subcommandName=commandPath[1],allowInvalid=commandName?ALLOWED_INVALID_COMMANDS.has(commandName)||commandName===`gateway`&&subcommandName&&ALLOWED_INVALID_GATEWAY_SUBCOMMANDS.has(subcommandName):!1,issues=snapshot.exists&&!snapshot.valid?formatConfigIssues(snapshot.issues):[],legacyIssues=snapshot.legacyIssues.length>0?snapshot.legacyIssues.map(issue=>`- ${issue.path}: ${issue.message}`):[];if(!(snapshot.exists&&!snapshot.valid))return;let rich=isRich(),muted=value=>colorize(rich,theme.muted,value),error=value=>colorize(rich,theme.error,value);params.runtime.error((value=>colorize(rich,theme.heading,value))(`Config invalid`)),params.runtime.error(`${muted(`File:`)} ${muted(shortenHomePath(snapshot.path))}`),issues.length>0&&(params.runtime.error(muted(`Problem:`)),params.runtime.error(issues.map(issue=>` ${error(issue)}`).join(`
2
2
  `))),legacyIssues.length>0&&(params.runtime.error(muted(`Legacy config keys detected:`)),params.runtime.error(legacyIssues.map(issue=>` ${error(issue)}`).join(`
3
3
  `))),params.runtime.error(``),params.runtime.error(`${muted(`Run:`)} ${(value=>colorize(rich,theme.command,value))(formatCliCommand(`builderforce doctor --fix`))}`),allowInvalid||params.runtime.exit(1)}export{ensureConfigReady 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{t as ensureConfigReady}from"./config-guard-ClVl2FvD.js";export{ensureConfigReady};
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{t as ensureConfigReady}from"./config-guard-BUpQiSTW.js";export{ensureConfigReady};
@@ -1,2 +1,2 @@
1
- import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{a as readConfigFileSnapshot}from"./io-CohJffHG.js";async function requireValidConfigSnapshot(runtime){let snapshot=await readConfigFileSnapshot();if(snapshot.exists&&!snapshot.valid){let issues=snapshot.issues.length>0?snapshot.issues.map(issue=>`- ${issue.path}: ${issue.message}`).join(`
1
+ import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{a as readConfigFileSnapshot}from"./io-D9hC2aG0.js";async function requireValidConfigSnapshot(runtime){let snapshot=await readConfigFileSnapshot();if(snapshot.exists&&!snapshot.valid){let issues=snapshot.issues.length>0?snapshot.issues.map(issue=>`- ${issue.path}: ${issue.message}`).join(`
2
2
  `):`Unknown validation issue.`;return runtime.error(`Config invalid:\n${issues}`),runtime.error(`Fix the config or run ${formatCliCommand(`builderforce doctor`)}.`),runtime.exit(1),null}return snapshot.config}export{requireValidConfigSnapshot as t};
@@ -1,2 +1,2 @@
1
- import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{a as readConfigFileSnapshot}from"./io-3R_ZyUxB.js";async function requireValidConfigSnapshot(runtime){let snapshot=await readConfigFileSnapshot();if(snapshot.exists&&!snapshot.valid){let issues=snapshot.issues.length>0?snapshot.issues.map(issue=>`- ${issue.path}: ${issue.message}`).join(`
1
+ import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{a as readConfigFileSnapshot}from"./io-BLBq4T2o.js";async function requireValidConfigSnapshot(runtime){let snapshot=await readConfigFileSnapshot();if(snapshot.exists&&!snapshot.valid){let issues=snapshot.issues.length>0?snapshot.issues.map(issue=>`- ${issue.path}: ${issue.message}`).join(`
2
2
  `):`Unknown validation issue.`;return runtime.error(`Config invalid:\n${issues}`),runtime.error(`Fix the config or run ${formatCliCommand(`builderforce doctor`)}.`),runtime.exit(1),null}return snapshot.config}export{requireValidConfigSnapshot as t};
@@ -1,4 +1,4 @@
1
- import{t as CONFIG_PATH,u as resolveGatewayPort}from"./paths-BHg-VHB4.js";import{S as shortenHomePath,y as resolveUserPath}from"./utils-BP60e80M.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{b as ensureAuthProfileStore}from"./auth-profiles-C1VbcUOm.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{a as readConfigFileSnapshot,c as writeConfigFile,r as loadConfig}from"./io-CohJffHG.js";import{n as listChannelPlugins,t as getChannelPlugin}from"./plugins-1Mn6RiNf.js";import{a as findTailscaleBinary}from"./tailscale-DV-yOmYe.js";import{n as withProgress}from"./progress-Cqb-jAjT.js";import{a as ensureWorkspaceAndSessions,b as waitForGatewayReachable,f as printWizardHeader,g as resolveControlUiLinks,m as randomToken,n as applyWizardMetadata,p as probeGatewayReachable,s as guardCancel,t as DEFAULT_WORKSPACE,u as normalizeGatewayTokenInput,v as summarizeExistingConfig,y as validateGatewayPasswordInput}from"./onboard-helpers-CckrS8_K.js";import{n as stylePromptMessage,r as stylePromptTitle,t as stylePromptHint}from"./prompt-style-BMWmaqSC.js";import{t as note$1}from"./note-DgDXuE0F.js";import{t as WizardCancelledError}from"./prompts-BP4e56X_.js";import{t as createClackPrompter}from"./clack-prompter-B52CP7eY.js";import{n as setupChannels,t as noteChannelStatus}from"./onboard-channels-B6QDFkkK.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,n as GATEWAY_DAEMON_RUNTIME_OPTIONS,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-B4UjqdyJ.js";import{t as resolveGatewayService}from"./service-EKJG69M3.js";import{r as healthCommand}from"./health-DVo8a9yg.js";import{t as ensureControlUiAssetsBuilt}from"./control-ui-assets-BxgWcomx.js";import{n as logConfigUpdated}from"./logging-ayt7F7vy.js";import{t as promptAuthChoiceGrouped}from"./auth-choice-prompt-bUhkxDnM.js";import{t as applyAuthChoice}from"./auth-choice.apply-CcatXiNo.js";import{a as promptModelAllowlist,i as promptDefaultModel,n as applyModelFallbacksFromSelection,r as applyPrimaryModel,t as applyModelAllowlist}from"./model-picker-swoSwauV.js";import{t as resolvePreferredProviderForAuthChoice}from"./auth-choice-BoZFVmEa.js";import{t as ensureSystemdUserLingerInteractive}from"./systemd-linger-CPKngdUf.js";import{i as promptCustomApiConfig}from"./onboard-custom-D1nd8Hlu.js";import{i as TAILSCALE_MISSING_BIN_NOTE_LINES,n as TAILSCALE_DOCS_LINES,r as TAILSCALE_EXPOSURE_OPTIONS,t as validateIPv4AddressInput}from"./ipv4-DEWh6vFc.js";import{t as formatHealthCheckFailure}from"./health-format-D4MaIjaG.js";import{t as promptRemoteGatewayConfig}from"./onboard-remote-D5lR2lVm.js";import{t as setupSkills}from"./onboard-skills-BPlNN_-T.js";import{confirm,intro,outro,select,text}from"@clack/prompts";const CONFIGURE_WIZARD_SECTIONS=[`workspace`,`model`,`web`,`gateway`,`daemon`,`channels`,`skills`,`health`];function parseConfigureWizardSections(raw){let sectionsRaw=Array.isArray(raw)?raw.map(value=>typeof value==`string`?value.trim():``).filter(Boolean):[];if(sectionsRaw.length===0)return{sections:[],invalid:[]};let invalid=sectionsRaw.filter(s=>!CONFIGURE_WIZARD_SECTIONS.includes(s));return{sections:sectionsRaw.filter(s=>CONFIGURE_WIZARD_SECTIONS.includes(s)),invalid}}const CONFIGURE_SECTION_OPTIONS=[{value:`workspace`,label:`Workspace`,hint:`Set workspace + sessions`},{value:`model`,label:`Model`,hint:`Pick provider + credentials`},{value:`web`,label:`Web tools`,hint:`Configure Brave search + fetch`},{value:`gateway`,label:`Gateway`,hint:`Port, bind, auth, tailscale`},{value:`daemon`,label:`Daemon`,hint:`Install/manage the background service`},{value:`channels`,label:`Channels`,hint:`Link WhatsApp/Telegram/etc and defaults`},{value:`skills`,label:`Skills`,hint:`Install/enable workspace skills`},{value:`health`,label:`Health check`,hint:`Run gateway + channel checks`}],intro$1=message=>intro(stylePromptTitle(message)??message),outro$1=message=>outro(stylePromptTitle(message)??message),text$1=params=>text({...params,message:stylePromptMessage(params.message)}),confirm$1=params=>confirm({...params,message:stylePromptMessage(params.message)}),select$1=params=>select({...params,message:stylePromptMessage(params.message),options:params.options.map(opt=>opt.hint===void 0?opt:{...opt,hint:stylePromptHint(opt.hint)})});async function removeChannelConfigWizard(cfg,runtime){let next={...cfg},listConfiguredChannels=()=>listChannelPlugins().map(plugin=>plugin.meta).filter(meta=>next.channels?.[meta.id]!==void 0);for(;;){let configured=listConfiguredChannels();if(configured.length===0)return note$1([`No channel config found in builderforce.json.`,`Tip: \`${formatCliCommand(`builderforce channels status`)}\` shows what is configured and enabled.`].join(`
1
+ import{t as CONFIG_PATH,u as resolveGatewayPort}from"./paths-BHg-VHB4.js";import{S as shortenHomePath,y as resolveUserPath}from"./utils-BP60e80M.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{b as ensureAuthProfileStore}from"./auth-profiles-pt7Tr4HA.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{a as readConfigFileSnapshot,c as writeConfigFile,r as loadConfig}from"./io-D9hC2aG0.js";import{n as listChannelPlugins,t as getChannelPlugin}from"./plugins-1Mn6RiNf.js";import{a as findTailscaleBinary}from"./tailscale-DV-yOmYe.js";import{n as withProgress}from"./progress-Cqb-jAjT.js";import{a as ensureWorkspaceAndSessions,b as waitForGatewayReachable,f as printWizardHeader,g as resolveControlUiLinks,m as randomToken,n as applyWizardMetadata,p as probeGatewayReachable,s as guardCancel,t as DEFAULT_WORKSPACE,u as normalizeGatewayTokenInput,v as summarizeExistingConfig,y as validateGatewayPasswordInput}from"./onboard-helpers-Ce_c4Raj.js";import{n as stylePromptMessage,r as stylePromptTitle,t as stylePromptHint}from"./prompt-style-BMWmaqSC.js";import{t as note$1}from"./note-DgDXuE0F.js";import{t as WizardCancelledError}from"./prompts-BP4e56X_.js";import{t as createClackPrompter}from"./clack-prompter-B52CP7eY.js";import{n as setupChannels,t as noteChannelStatus}from"./onboard-channels-Dn0u5C-C.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,n as GATEWAY_DAEMON_RUNTIME_OPTIONS,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-Dx800VUt.js";import{t as resolveGatewayService}from"./service-EKJG69M3.js";import{r as healthCommand}from"./health-zrsgFZmR.js";import{t as ensureControlUiAssetsBuilt}from"./control-ui-assets-BxgWcomx.js";import{n as logConfigUpdated}from"./logging-ayt7F7vy.js";import{t as promptAuthChoiceGrouped}from"./auth-choice-prompt-bUhkxDnM.js";import{t as applyAuthChoice}from"./auth-choice.apply-BgOXoS8X.js";import{a as promptModelAllowlist,i as promptDefaultModel,n as applyModelFallbacksFromSelection,r as applyPrimaryModel,t as applyModelAllowlist}from"./model-picker-CGDNPRPc.js";import{t as resolvePreferredProviderForAuthChoice}from"./auth-choice-DzBqqq7i.js";import{t as ensureSystemdUserLingerInteractive}from"./systemd-linger-CPKngdUf.js";import{i as promptCustomApiConfig}from"./onboard-custom-BYIza2e7.js";import{i as TAILSCALE_MISSING_BIN_NOTE_LINES,n as TAILSCALE_DOCS_LINES,r as TAILSCALE_EXPOSURE_OPTIONS,t as validateIPv4AddressInput}from"./ipv4-DEWh6vFc.js";import{t as formatHealthCheckFailure}from"./health-format-D4MaIjaG.js";import{t as promptRemoteGatewayConfig}from"./onboard-remote-0-q7MG9t.js";import{t as setupSkills}from"./onboard-skills-9Um4TL2x.js";import{confirm,intro,outro,select,text}from"@clack/prompts";const CONFIGURE_WIZARD_SECTIONS=[`workspace`,`model`,`web`,`gateway`,`daemon`,`channels`,`skills`,`health`];function parseConfigureWizardSections(raw){let sectionsRaw=Array.isArray(raw)?raw.map(value=>typeof value==`string`?value.trim():``).filter(Boolean):[];if(sectionsRaw.length===0)return{sections:[],invalid:[]};let invalid=sectionsRaw.filter(s=>!CONFIGURE_WIZARD_SECTIONS.includes(s));return{sections:sectionsRaw.filter(s=>CONFIGURE_WIZARD_SECTIONS.includes(s)),invalid}}const CONFIGURE_SECTION_OPTIONS=[{value:`workspace`,label:`Workspace`,hint:`Set workspace + sessions`},{value:`model`,label:`Model`,hint:`Pick provider + credentials`},{value:`web`,label:`Web tools`,hint:`Configure Brave search + fetch`},{value:`gateway`,label:`Gateway`,hint:`Port, bind, auth, tailscale`},{value:`daemon`,label:`Daemon`,hint:`Install/manage the background service`},{value:`channels`,label:`Channels`,hint:`Link WhatsApp/Telegram/etc and defaults`},{value:`skills`,label:`Skills`,hint:`Install/enable workspace skills`},{value:`health`,label:`Health check`,hint:`Run gateway + channel checks`}],intro$1=message=>intro(stylePromptTitle(message)??message),outro$1=message=>outro(stylePromptTitle(message)??message),text$1=params=>text({...params,message:stylePromptMessage(params.message)}),confirm$1=params=>confirm({...params,message:stylePromptMessage(params.message)}),select$1=params=>select({...params,message:stylePromptMessage(params.message),options:params.options.map(opt=>opt.hint===void 0?opt:{...opt,hint:stylePromptHint(opt.hint)})});async function removeChannelConfigWizard(cfg,runtime){let next={...cfg},listConfiguredChannels=()=>listChannelPlugins().map(plugin=>plugin.meta).filter(meta=>next.channels?.[meta.id]!==void 0);for(;;){let configured=listConfiguredChannels();if(configured.length===0)return note$1([`No channel config found in builderforce.json.`,`Tip: \`${formatCliCommand(`builderforce channels status`)}\` shows what is configured and enabled.`].join(`
2
2
  `),`Remove channel`),next;let channel=guardCancel(await select$1({message:`Remove which channel config?`,options:[...configured.map(meta=>({value:meta.id,label:meta.label,hint:`Deletes tokens + settings from config (credentials stay on disk)`})),{value:`done`,label:`Done`}]}),runtime);if(channel===`done`)return next;let label=getChannelPlugin(channel)?.meta.label??channel;if(!guardCancel(await confirm$1({message:`Delete ${label} configuration from ${shortenHomePath(CONFIG_PATH)}?`,initialValue:!1}),runtime))continue;let nextChannels={...next.channels};delete nextChannels[channel],next={...next,channels:Object.keys(nextChannels).length?nextChannels:void 0},note$1([`${label} removed from config.`,`Note: credentials/sessions on disk are unchanged.`].join(`
3
3
  `),`Channel removed`)}}async function maybeInstallDaemon(params){let service=resolveGatewayService(),loaded=await service.isLoaded({env:process.env}),shouldCheckLinger=!1,shouldInstall=!0,daemonRuntime=params.daemonRuntime??DEFAULT_GATEWAY_DAEMON_RUNTIME;if(loaded){let action=guardCancel(await select$1({message:`Gateway service already installed`,options:[{value:`restart`,label:`Restart`},{value:`reinstall`,label:`Reinstall`},{value:`skip`,label:`Skip`}]}),params.runtime);if(action===`restart`&&(await withProgress({label:`Gateway service`,indeterminate:!0,delayMs:0},async progress=>{progress.setLabel(`Restarting Gateway service…`),await service.restart({env:process.env,stdout:process.stdout}),progress.setLabel(`Gateway service restarted.`)}),shouldCheckLinger=!0,shouldInstall=!1),action===`skip`)return;action===`reinstall`&&await withProgress({label:`Gateway service`,indeterminate:!0,delayMs:0},async progress=>{progress.setLabel(`Uninstalling Gateway service…`),await service.uninstall({env:process.env,stdout:process.stdout}),progress.setLabel(`Gateway service uninstalled.`)})}if(shouldInstall){let installError=null;if(params.daemonRuntime||(daemonRuntime=GATEWAY_DAEMON_RUNTIME_OPTIONS.length===1?GATEWAY_DAEMON_RUNTIME_OPTIONS[0]?.value??DEFAULT_GATEWAY_DAEMON_RUNTIME:guardCancel(await select$1({message:`Gateway service runtime`,options:GATEWAY_DAEMON_RUNTIME_OPTIONS,initialValue:DEFAULT_GATEWAY_DAEMON_RUNTIME}),params.runtime)),await withProgress({label:`Gateway service`,indeterminate:!0,delayMs:0},async progress=>{progress.setLabel(`Preparing Gateway service…`);let cfg=loadConfig(),{programArguments,workingDirectory,environment}=await buildGatewayInstallPlan({env:process.env,port:params.port,token:params.gatewayToken,runtime:daemonRuntime,warn:(message,title)=>note$1(message,title),config:cfg});progress.setLabel(`Installing Gateway service…`);try{await service.install({env:process.env,stdout:process.stdout,programArguments,workingDirectory,environment}),progress.setLabel(`Gateway service installed.`)}catch(err){installError=err instanceof Error?err.message:String(err),progress.setLabel(`Gateway service install failed.`)}}),installError){note$1(`Gateway service install failed: `+installError,`Gateway`),note$1(gatewayInstallErrorHint(),`Gateway`);return}shouldCheckLinger=!0}shouldCheckLinger&&await ensureSystemdUserLingerInteractive({runtime:params.runtime,prompter:{confirm:async p=>guardCancel(await confirm$1(p),params.runtime),note:note$1},reason:`Linux installs use a systemd user service. Without lingering, systemd stops the user session on logout/idle and kills the Gateway.`,requireConfirm:!0})}function sanitizeTokenValue(value){if(typeof value!=`string`)return;let trimmed=value.trim();if(!(!trimmed||trimmed===`undefined`||trimmed===`null`))return trimmed}const ANTHROPIC_OAUTH_MODEL_KEYS=[`anthropic/claude-sonnet-4-6`,`anthropic/claude-opus-4-6`,`anthropic/claude-opus-4-5`,`anthropic/claude-sonnet-4-5`,`anthropic/claude-haiku-4-5`];function buildGatewayAuthConfig(params){let allowTailscale=params.existing?.allowTailscale,base={};if(typeof allowTailscale==`boolean`&&(base.allowTailscale=allowTailscale),params.mode===`token`){let token=sanitizeTokenValue(params.token)??randomToken();return{...base,mode:`token`,token}}if(params.mode===`password`){let password=params.password?.trim();return{...base,mode:`password`,...password&&{password}}}if(params.mode===`trusted-proxy`){if(!params.trustedProxy)throw Error(`trustedProxy config is required when mode is trusted-proxy`);return{...base,mode:`trusted-proxy`,trustedProxy:params.trustedProxy}}return base}async function promptAuthConfig(cfg,runtime,prompter){let authChoice=await promptAuthChoiceGrouped({prompter,store:await ensureAuthProfileStore(void 0,{allowKeychainPrompt:!1}),includeSkip:!0}),next=cfg;if(authChoice===`custom-api-key`)next=(await promptCustomApiConfig({prompter,runtime,config:next})).config;else if(authChoice!==`skip`)next=(await applyAuthChoice({authChoice,config:next,prompter,runtime,setDefaultModel:!0})).config;else{let modelSelection=await promptDefaultModel({config:next,prompter,allowKeep:!0,ignoreAllowlist:!0,preferredProvider:resolvePreferredProviderForAuthChoice(authChoice)});modelSelection.config&&(next=modelSelection.config),modelSelection.model&&(next=applyPrimaryModel(next,modelSelection.model))}let anthropicOAuth=authChoice===`setup-token`||authChoice===`token`||authChoice===`oauth`;if(authChoice!==`custom-api-key`){let allowlistSelection=await promptModelAllowlist({config:next,prompter,allowedKeys:anthropicOAuth?ANTHROPIC_OAUTH_MODEL_KEYS:void 0,initialSelections:anthropicOAuth?[`anthropic/claude-sonnet-4-6`]:void 0,message:anthropicOAuth?`Anthropic OAuth models`:void 0});allowlistSelection.models&&(next=applyModelAllowlist(next,allowlistSelection.models),next=applyModelFallbacksFromSelection(next,allowlistSelection.models))}return next}async function promptGatewayConfig(cfg,runtime){let portRaw=guardCancel(await text$1({message:`Gateway port`,initialValue:String(resolveGatewayPort(cfg)),validate:value=>Number.isFinite(Number(value))?void 0:`Invalid port`}),runtime),port=Number.parseInt(String(portRaw),10),bind=guardCancel(await select$1({message:`Gateway bind mode`,options:[{value:`loopback`,label:`Loopback (Local only)`,hint:`Bind to 127.0.0.1 - secure, local-only access`},{value:`tailnet`,label:`Tailnet (Tailscale IP)`,hint:`Bind to your Tailscale IP only (100.x.x.x)`},{value:`auto`,label:`Auto (Loopback → LAN)`,hint:`Prefer loopback; fall back to all interfaces if unavailable`},{value:`lan`,label:`LAN (All interfaces)`,hint:`Bind to 0.0.0.0 - accessible from anywhere on your network`},{value:`custom`,label:`Custom IP`,hint:`Specify a specific IP address, with 0.0.0.0 fallback if unavailable`}]}),runtime),customBindHost;if(bind===`custom`){let input=guardCancel(await text$1({message:`Custom IP address`,placeholder:`192.168.1.100`,validate:validateIPv4AddressInput}),runtime);customBindHost=typeof input==`string`?input:void 0}let authMode=guardCancel(await select$1({message:`Gateway auth`,options:[{value:`token`,label:`Token`,hint:`Recommended default`},{value:`password`,label:`Password`},{value:`trusted-proxy`,label:`Trusted Proxy`,hint:`Behind reverse proxy (Pomerium, Caddy, Traefik, etc.)`}],initialValue:`token`}),runtime),tailscaleMode=guardCancel(await select$1({message:`Tailscale exposure`,options:[...TAILSCALE_EXPOSURE_OPTIONS]}),runtime);tailscaleMode!==`off`&&(await findTailscaleBinary()||note$1(TAILSCALE_MISSING_BIN_NOTE_LINES.join(`
4
4
  `),`Tailscale Warning`));let tailscaleResetOnExit=!1;tailscaleMode!==`off`&&(note$1(TAILSCALE_DOCS_LINES.join(`