@seanhogg/builderforce-agents 2026.10.12 → 2026.10.13
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.
- package/dist/{agent-DvDtjczG.js → agent-CeWx2EpQ.js} +1 -1
- package/dist/{agent-DiLX8OzY.js → agent-DrcnpqOF.js} +1 -1
- package/dist/{agents-BawpdEjP.js → agents-CRJM6qhK.js} +1 -1
- package/dist/{agents-COWLUJqm.js → agents-hATFRfwk.js} +1 -1
- package/dist/{audio-preflight-CYQiI74L.js → audio-preflight-B9CfGDD2.js} +1 -1
- package/dist/{audio-preflight-BN1u9Tpc.js → audio-preflight-DHHeocUj.js} +1 -1
- package/dist/{auth-choice-D9VN-WjA.js → auth-choice-CWbPLRN0.js} +1 -1
- package/dist/{auth-choice-3cdcHeim.js → auth-choice-CzhKgWJy.js} +1 -1
- package/dist/{auth-choice.apply-Cd0RR0Z-.js → auth-choice.apply-C0RTYtRN.js} +1 -1
- package/dist/{auth-choice.apply-CMDgoDNN.js → auth-choice.apply-ChrTTHkK.js} +1 -1
- package/dist/{auth-choice.apply-BAeGyEKW.js → auth-choice.apply-D4LYzI8l.js} +1 -1
- package/dist/{auth-choice.apply-CSXvPCea.js → auth-choice.apply-Dy4rVG6K.js} +1 -1
- package/dist/{auth-choice.apply.transformers-DkX2-OZa.js → auth-choice.apply.transformers-9v6HFzNs.js} +1 -1
- package/dist/{auth-choice.apply.transformers-CEVxl3ul.js → auth-choice.apply.transformers-Be8599JD.js} +1 -1
- package/dist/{auth-choice.apply.transformers-B2Nr9M7m.js → auth-choice.apply.transformers-CgfGlqy1.js} +1 -1
- package/dist/{auth-choice.apply.transformers-Dpy9gODo.js → auth-choice.apply.transformers-D9a8-sLS.js} +1 -1
- package/dist/{banner-C93QSUTe.js → banner-8F7-gU1V.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/{builderforce-Dl4bZ63C.js → builderforce-CCfM1c79.js} +1 -1
- package/dist/{builderforce-C_tuO46t.js → builderforce-CImLd8Zo.js} +1 -1
- package/dist/bundled/boot-md/handler.js +1 -1
- package/dist/bundled/session-memory/handler.js +1 -1
- package/dist/{channel-options-CiYpNR-1.js → channel-options-CRng-5hZ.js} +1 -1
- package/dist/{channel-options-Cziy0WDc.js → channel-options-D5kOIN7b.js} +1 -1
- package/dist/{channel-web-Ae15MleJ.js → channel-web-B5HSpL4k.js} +1 -1
- package/dist/{channels-cli-CZM033Me.js → channels-cli-COl9TDHT.js} +1 -1
- package/dist/{channels-cli-yi1vxpvO.js → channels-cli-bR8QwOv3.js} +1 -1
- package/dist/chrome-ChzFLAeJ.js +4 -0
- package/dist/chrome-CrqJ4Ijz.js +4 -0
- package/dist/{cli-Bwv_-VuS.js → cli-BqJMHFNK.js} +1 -1
- package/dist/{cli-D8fndSEi.js → cli-DBn0qbHS.js} +1 -1
- package/dist/{command-registry-Cjom5ab0.js → command-registry-BqhtXJa7.js} +1 -1
- package/dist/{command-registry-8uEx2JjY.js → command-registry-DVH79C3B.js} +1 -1
- package/dist/{completion-cli-PTFpWp8Q.js → completion-cli-BFR0u1Uh.js} +1 -1
- package/dist/{completion-cli-LUuqgvVQ.js → completion-cli-BuUAEqQw.js} +1 -1
- package/dist/{completion-cli-DRsz70D2.js → completion-cli-CwaIh4zw.js} +1 -1
- package/dist/{completion-cli-BsXDz7T2.js → completion-cli-Da3-oE7r.js} +1 -1
- package/dist/{config-cli-BIx0enD5.js → config-cli-Bhrj7H1i.js} +1 -1
- package/dist/{config-cli-BFhOXrua.js → config-cli-DOHKZ1lO.js} +1 -1
- package/dist/{configure-D96xLIb6.js → configure-B-Yta1X3.js} +1 -1
- package/dist/{configure-S7YE6hn1.js → configure-BHVk4Ax9.js} +1 -1
- package/dist/{configure-dDKfCq_g.js → configure-D9YZEK_D.js} +1 -1
- package/dist/{configure-C7xdw9Kq.js → configure-DPE2hDzY.js} +1 -1
- package/dist/{deps-CGiO_NDu.js → deps-CrAVOWsA.js} +1 -1
- package/dist/{doctor-completion-ChhIrLd3.js → doctor-completion-CkjrUmbI.js} +1 -1
- package/dist/{doctor-completion-BUZwWoWB.js → doctor-completion-Dh9ah5lH.js} +1 -1
- package/dist/{embedded-DJYMy81Q.js → embedded-BrqzM5oT.js} +12 -12
- package/dist/{embedded-DjDnQMNx.js → embedded-wYxo-ADm.js} +12 -12
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +1 -1
- package/dist/{gateway-cli-CN114d5j.js → gateway-cli-C2nh9UyY.js} +2 -2
- package/dist/{gateway-cli-Dzl70YBF.js → gateway-cli-CGkTLhet.js} +2 -2
- package/dist/{health-Cf1YoTRN.js → health-CEz2-7et.js} +1 -1
- package/dist/{health-AlkF1nUa.js → health-CFVx21sO.js} +1 -1
- package/dist/{health-ySVOGGNu.js → health-aKuq4xwa.js} +1 -1
- package/dist/{hooks-cli-6jeFEGg3.js → hooks-cli-DPSrycwI.js} +1 -1
- package/dist/{hooks-cli-DVPMCXUq.js → hooks-cli-uPHs7qnC.js} +1 -1
- package/dist/index.js +2 -2
- package/dist/llm-slug-generator.js +1 -1
- package/dist/{models-CGUxphfN.js → models--TwKHn8b.js} +1 -1
- package/dist/{models-CIMM_Z3u.js → models-BXJebxTU.js} +1 -1
- package/dist/{models-cli-Cijh2uON.js → models-cli-O1zCgeoA.js} +1 -1
- package/dist/{models-cli-Oys3e_I3.js → models-cli-iKu1IVeH.js} +1 -1
- package/dist/{onboard-DAEXNhNd.js → onboard--0I8pdee.js} +1 -1
- package/dist/{onboard-b2fWbf0Q.js → onboard-C40OvMZO.js} +1 -1
- package/dist/{onboard-channels-elaccQRE.js → onboard-channels-BbpyejX4.js} +1 -1
- package/dist/{onboard-channels-Bsd11scA.js → onboard-channels-CoJnsCfd.js} +1 -1
- package/dist/{onboard-channels-C_Q7OUow.js → onboard-channels-ZI4QC9WU.js} +1 -1
- package/dist/{onboard-channels-Tl1X4Pl_.js → onboard-channels-uvIeLPXK.js} +1 -1
- package/dist/{onboard-interactive-DyGNiYRI.js → onboard-interactive-B3Z0XLT6.js} +1 -1
- package/dist/{onboard-interactive-C0qmgHsH.js → onboard-interactive-CJdxqQ1b.js} +1 -1
- package/dist/{onboard-interactive-86s992_v.js → onboard-interactive-COnCCTTW.js} +1 -1
- package/dist/{onboard-interactive-CvMSTjPK.js → onboard-interactive-jss8R9r9.js} +1 -1
- package/dist/{onboarding-DzvbhsaR.js → onboarding-B1BmYWrs.js} +2 -2
- package/dist/{onboarding-B0tbaqZ7.js → onboarding-CdRbvLgp.js} +2 -2
- package/dist/{onboarding.finalize-D-Pi9Blv.js → onboarding.finalize-B0AjF6qZ.js} +1 -1
- package/dist/{onboarding.finalize-CERLBlRF.js → onboarding.finalize-WsL-ijTc.js} +1 -1
- package/dist/{outbound-send-deps-CzhBrVa7.js → outbound-send-deps-DuML6h7r.js} +1 -1
- package/dist/{plugin-registry-DtrHn5NR.js → plugin-registry-BjWNyeVY.js} +1 -1
- package/dist/{plugin-registry-Avx51RIY.js → plugin-registry-Cf_sv-ny.js} +1 -1
- package/dist/{plugin-registry-CFkQDTOt.js → plugin-registry-DdFb5usc.js} +1 -1
- package/dist/{plugin-registry-BEmyRfmb.js → plugin-registry-DrEpL5ac.js} +1 -1
- package/dist/plugin-sdk/{accounts-BwreSNAR.js → accounts-Cy3WCbWg.js} +1 -1
- package/dist/plugin-sdk/{active-listener-DpQ7aGYd.js → active-listener-DVWVNlT9.js} +1 -1
- package/dist/plugin-sdk/agent-runtime/src/agents/tool-retry.d.ts +40 -32
- package/dist/plugin-sdk/agent-runtime/src/builderforce/model/agent-types.d.ts +6 -0
- package/dist/plugin-sdk/{agent-scope-BQByW0cD.js → agent-scope-DgKN27hJ.js} +1 -1
- package/dist/plugin-sdk/{api-key-rotation-yqTCeKjV.js → api-key-rotation-D37jV9ZW.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-B6uTvVfA.js → audio-preflight-D4xyO8Zq.js} +1 -1
- package/dist/plugin-sdk/{auth-json-Dw6ij9Pa.js → auth-json-nASe57Uw.js} +1 -1
- package/dist/plugin-sdk/{bindings-CDEzl4kl.js → bindings-CH-YLOLC.js} +1 -1
- package/dist/plugin-sdk/{channel-web-DKbpA9xC.js → channel-web-huZSNTX3.js} +1 -1
- package/dist/plugin-sdk/{chrome-DriEqJRH.js → chrome-CRUzg3kA.js} +1 -1
- package/dist/plugin-sdk/{chunk-cW0POl22.js → chunk-C94IAOuf.js} +1 -1
- package/dist/plugin-sdk/{command-format-CAX9XFjI.js → command-format-B3XMq_73.js} +1 -1
- package/dist/plugin-sdk/{common-BxEWhN2X.js → common-n0l_XN-S.js} +1 -1
- package/dist/plugin-sdk/{config-3vPn_hmp.js → config--Ci8Y91R.js} +2 -2
- package/dist/plugin-sdk/{fetch-DH0Y8iyO.js → fetch-B-GxSYRO.js} +1 -1
- package/dist/plugin-sdk/index.js +1 -1
- package/dist/plugin-sdk/{login-Dhdx0bVL.js → login-DZliYZg8.js} +1 -1
- package/dist/plugin-sdk/{login-qr-DAjOuijP.js → login-qr-DKcGvAjv.js} +1 -1
- package/dist/plugin-sdk/{manager-i8psl2Er.js → manager-DioOqJm_.js} +1 -1
- package/dist/plugin-sdk/{markdown-tables-Epim9b-0.js → markdown-tables-BUfhHgfs.js} +1 -1
- package/dist/plugin-sdk/{message-channel-sBPQc_-T.js → message-channel-CuZ2xOAM.js} +1 -1
- package/dist/plugin-sdk/{model-catalog-COVRezOQ.js → model-catalog-DIQ5a-o4.js} +1 -1
- package/dist/plugin-sdk/{model-selection-Crz-xYNU.js → model-selection-_H_U9jWH.js} +1 -1
- package/dist/plugin-sdk/{outbound-CPutSvae.js → outbound-Djibdmi7.js} +1 -1
- package/dist/plugin-sdk/{plugins-CaUOZBVb.js → plugins-BdkC9v5E.js} +1 -1
- package/dist/plugin-sdk/{pw-ai-jI9AWvKe.js → pw-ai-Bbi8Us-p.js} +1 -1
- package/dist/plugin-sdk/{qmd-manager-BRe5fGZw.js → qmd-manager-Dxn0jCpE.js} +1 -1
- package/dist/plugin-sdk/{registry-DJq2Cvo9.js → registry-CZHRcH-q.js} +1 -1
- package/dist/plugin-sdk/{render-BUCRXPIk.js → render-CuA_WRX5.js} +1 -1
- package/dist/plugin-sdk/{replies-CYjI7bye.js → replies-Cf69aZLA.js} +1 -1
- package/dist/plugin-sdk/{reply-B5o-SSYy.js → reply-BOVC-7UD.js} +13 -13
- package/dist/plugin-sdk/{reply-prefix-CCymsmsP.js → reply-prefix-w7kAvH11.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-DN1J7Wyc.js → resolve-route-0sbvl4ZN.js} +1 -1
- package/dist/plugin-sdk/{runner-C2pDJlRw.js → runner-DKoKK09-.js} +4 -4
- package/dist/plugin-sdk/{session-BnleckVX.js → session-DGLuyt10.js} +1 -1
- package/dist/plugin-sdk/{sqlite-BlMLqMl8.js → sqlite-JjFgDV-H.js} +1 -1
- package/dist/plugin-sdk/{subsystem-COTa5Ly_.js → subsystem-D0Ril4rt.js} +1 -1
- package/dist/plugin-sdk/{tool-images-DSpchb4x.js → tool-images-WRTP95FT.js} +1 -1
- package/dist/plugin-sdk/{tool-loop-detection-16p7mJ8N.js → tool-loop-detection-g8gPTCgJ.js} +1 -1
- package/dist/plugin-sdk/web-Cdu8TkUy.js +1 -0
- package/dist/plugin-sdk/{whatsapp-actions-C2B3iw8n.js → whatsapp-actions-CsSzy7G0.js} +1 -1
- package/dist/{plugins-DAlgx58e.js → plugins-Dr1wmnAf.js} +1 -1
- package/dist/{plugins-De7aK3yK.js → plugins-JhEblShx.js} +1 -1
- package/dist/{plugins-cli-CwdUVWjG.js → plugins-cli-DW4hoeeV.js} +1 -1
- package/dist/{plugins-cli-CfVCrrhx.js → plugins-cli-GewV3E8e.js} +1 -1
- package/dist/{program-CFL6mW3l.js → program-bggmBKuL.js} +2 -2
- package/dist/{program-context-DP4Xq9zC.js → program-context-BCTE8zEF.js} +1 -1
- package/dist/{prompt-select-styled-NxrGT7OR.js → prompt-select-styled-BtjhlTEH.js} +1 -1
- package/dist/{prompt-select-styled-Csz9HlSx.js → prompt-select-styled-CaNl41mG.js} +1 -1
- package/dist/{provider-auth-helpers-BMBw21Tn.js → provider-auth-helpers-CWUfg9zf.js} +1 -1
- package/dist/{provider-auth-helpers-VWPvSXPH.js → provider-auth-helpers-y1X8xKVE.js} +1 -1
- package/dist/{provider-dispatcher-CSOHd9zJ.js → provider-dispatcher-CRsPmKhJ.js} +1 -1
- package/dist/{provider-dispatcher-Bg9orQPy.js → provider-dispatcher-D9GbE_Ce.js} +1 -1
- package/dist/{push-apns-rMu8MKXi.js → push-apns-Cb1sQEEa.js} +1 -1
- package/dist/{push-apns-ep5WkyGz.js → push-apns-Cr-6aD3y.js} +1 -1
- package/dist/{pw-ai-UXo3gDGy.js → pw-ai-CG-kY5NP.js} +1 -1
- package/dist/{pw-ai-CIN6tj0G.js → pw-ai-DcZPg2vm.js} +1 -1
- package/dist/{register.agent-BynXVz7v.js → register.agent-B33EZBoL.js} +1 -1
- package/dist/{register.agent-RNVNKBP3.js → register.agent-DfYqZls1.js} +1 -1
- package/dist/{register.configure-BdqREs1-.js → register.configure-CREcJhKA.js} +1 -1
- package/dist/{register.configure-DDrvpBnA.js → register.configure-D8an7wc5.js} +1 -1
- package/dist/{register.maintenance-DT6t7mD_.js → register.maintenance-D84M5XLR.js} +1 -1
- package/dist/{register.maintenance-BSKHOCTV.js → register.maintenance-Dnp_Ii2x.js} +1 -1
- package/dist/{register.message-7KIfSUxS.js → register.message-B6E0uAEu.js} +1 -1
- package/dist/{register.message-DDhEvcaX.js → register.message-WOWC4tyf.js} +1 -1
- package/dist/{register.onboard-CKhooa7L.js → register.onboard-AgVEhehS.js} +1 -1
- package/dist/{register.onboard-CswvuzLx.js → register.onboard-Cwozk0Tx.js} +1 -1
- package/dist/{register.setup-1BmR-qlh.js → register.setup-BKyCvo9_.js} +1 -1
- package/dist/{register.setup-CivwfXf_.js → register.setup-C9IeGiAd.js} +1 -1
- package/dist/{register.status-health-sessions-CLdHZiJm.js → register.status-health-sessions-CYZctjpx.js} +1 -1
- package/dist/{register.status-health-sessions-BXpljfv3.js → register.status-health-sessions-CcL6srRC.js} +1 -1
- package/dist/{register.subclis-D_fHb-Aj.js → register.subclis-AFsfDByV.js} +1 -1
- package/dist/{register.subclis-CTTxdHaJ.js → register.subclis-C0DxtuRO.js} +1 -1
- package/dist/{reply-D9wUWhMx.js → reply-BuUSdq2L.js} +9 -9
- package/dist/{run-main-DNyQhVQT.js → run-main-CgJMiKPV.js} +1 -1
- package/dist/{runner-BNnckkaT.js → runner-C8oNv-9y.js} +3 -3
- package/dist/{runner-EHybuAt7.js → runner-nDoIXX7n.js} +3 -3
- package/dist/{server-node-events-BGrnw4ZT.js → server-node-events-BMsKmU5S.js} +1 -1
- package/dist/{server-node-events-D4WVcVHy.js → server-node-events-fS8TluXq.js} +1 -1
- package/dist/{session-dirs-eNN7E3kA.js → session-dirs-Bkfs-7vN.js} +1 -1
- package/dist/{session-dirs-C-pVBwSV.js → session-dirs-rYDCA_mQ.js} +1 -1
- package/dist/{status-Demw1HZ7.js → status-Ad1eFPKR.js} +1 -1
- package/dist/{status-CBieo24v.js → status-BMzVz5KY.js} +1 -1
- package/dist/{status-rkFgCaBM.js → status-CXRyaGws.js} +1 -1
- package/dist/{status-wTMmjZ7M.js → status-DpEUFAMk.js} +1 -1
- package/dist/{status-BhJw9Htq.js → status-oaiZkYBt.js} +1 -1
- package/dist/{subagent-registry-Bje3RAgk.js → subagent-registry-gVTWLPpL.js} +1 -1
- package/dist/{subagent-registry-B0kpBIxD.js → subagent-registry-hM0OCDzv.js} +1 -1
- package/dist/{subagent-registry-Cj5yC7B4.js → subagent-registry-m_x-JRkR.js} +9 -9
- package/dist/{tui-BCtecmPL.js → tui-HTtOgZ_X.js} +2 -2
- package/dist/{tui-BqHLI73U.js → tui-LemSel3H.js} +2 -2
- package/dist/{tui-cli-2R0xjpqW.js → tui-cli-BpzicV5H.js} +1 -1
- package/dist/{tui-cli-Dvd8BwzD.js → tui-cli-CruoIP1K.js} +1 -1
- package/dist/{update-cli-DUObGvw1.js → update-cli-Wa-nZ_Lq.js} +1 -1
- package/dist/{update-cli-Bt7Vfi7c.js → update-cli-zv67YxK1.js} +1 -1
- package/dist/{web--KblE8ax.js → web-BrsbhB1i.js} +1 -1
- package/dist/{web-C-yTnRvS.js → web-BzkO4Pbe.js} +1 -1
- package/dist/{web-0VRcRcFj.js → web-D_QYY7Gt.js} +1 -1
- package/dist/{web-BcUIWAAJ.js → web-jPbmSTQm.js} +1 -1
- package/package.json +1 -1
- package/dist/chrome-CmCESKt9.js +0 -4
- package/dist/chrome-D6qk0wxW.js +0 -4
- package/dist/plugin-sdk/web-CzJYJZZs.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as resolveGatewayPort}from"./paths-5FcIFMsj.js";import{C as shortenHomePath,b as resolveUserPath}from"./utils-DbaBVFaK.js";import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import{Gt as resolveApiKeyForProfile,in as ensureAuthProfileStore,mn as normalizeSecretInput,nn as upsertAuthProfile,pn as normalizeOptionalSecretInput,u as normalizeProviderId,xt as resolveEnvApiKey,zt as resolveAuthProfileOrder}from"./model-selection-Doyvd4lU.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{a as upsertSharedEnvVar}from"./env-file-D1MDi-AM.js";import{a as readConfigFileSnapshot,c as writeConfigFile,y as parseDurationMs}from"./io-BNtgT4VB.js";import{a as ensureWorkspaceAndSessions,b as waitForGatewayReachable,c as handleReset,g as resolveControlUiLinks,m as randomToken,n as applyWizardMetadata,t as DEFAULT_WORKSPACE}from"./onboard-helpers-BmYUjl4j.js";import{t as assertSupportedRuntime}from"./runtime-guard-DhksRHci.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,r as isGatewayDaemonRuntime,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-0CbmdgMr.js";import{r as isSystemdUserServiceAvailable}from"./systemd-BG3_QT6W.js";import{t as resolveGatewayService}from"./service-D-NLDyK3.js";import{r as healthCommand}from"./health-
|
|
1
|
+
import{u as resolveGatewayPort}from"./paths-5FcIFMsj.js";import{C as shortenHomePath,b as resolveUserPath}from"./utils-DbaBVFaK.js";import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import{Gt as resolveApiKeyForProfile,in as ensureAuthProfileStore,mn as normalizeSecretInput,nn as upsertAuthProfile,pn as normalizeOptionalSecretInput,u as normalizeProviderId,xt as resolveEnvApiKey,zt as resolveAuthProfileOrder}from"./model-selection-Doyvd4lU.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{a as upsertSharedEnvVar}from"./env-file-D1MDi-AM.js";import{a as readConfigFileSnapshot,c as writeConfigFile,y as parseDurationMs}from"./io-BNtgT4VB.js";import{a as ensureWorkspaceAndSessions,b as waitForGatewayReachable,c as handleReset,g as resolveControlUiLinks,m as randomToken,n as applyWizardMetadata,t as DEFAULT_WORKSPACE}from"./onboard-helpers-BmYUjl4j.js";import{t as assertSupportedRuntime}from"./runtime-guard-DhksRHci.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,r as isGatewayDaemonRuntime,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-0CbmdgMr.js";import{r as isSystemdUserServiceAvailable}from"./systemd-BG3_QT6W.js";import{t as resolveGatewayService}from"./service-D-NLDyK3.js";import{r as healthCommand}from"./health-CFVx21sO.js";import{C as setXaiApiKey,S as setVercelAiGatewayApiKey,T as setZaiApiKey,_ as setOpenrouterApiKey,b as setTogetherApiKey,c as setAnthropicApiKey,d as setHuggingfaceApiKey,f as setKimiCodingApiKey,g as setOpencodeZenApiKey,h as setMoonshotApiKey,l as setCloudflareAiGatewayConfig,m as setMinimaxApiKey,p as setLitellmApiKey,u as setGeminiApiKey,v as setQianfanApiKey,w as setXiaomiApiKey,x as setVeniceApiKey,y as setSyntheticApiKey}from"./onboard-auth.credentials-uekJMiYv.js";import{A as applyXaiConfig,B as applyVercelAiGatewayConfig,E as applyTogetherConfig,H as applyAgentDefaultModelPrimary,I as applyLitellmConfig,M as applyXiaomiConfig,O as applyVeniceConfig,P as applyZaiConfig,R as applyCloudflareAiGatewayConfig,S as applyQianfanConfig,_ as applyMoonshotConfigCn,a as applyMinimaxApiConfig,b as applyOpenrouterConfig,d as applyAuthProfileConfig,f as applyHuggingfaceConfig,g as applyMoonshotConfig,l as applyMinimaxConfig,m as applyKimiCodeConfig,n as validateAnthropicSetupToken,o as applyMinimaxApiConfigCn,r as applyOpencodeZenConfig,t as buildTokenProfileId,w as applySyntheticConfig}from"./auth-token-CPSeBkJC.js";import{n as logConfigUpdated}from"./logging-DHa3jQN3.js";import{n as isDeprecatedAuthChoice,r as normalizeLegacyOnboardAuthChoice}from"./auth-choice-legacy-CqbQRfmW.js";import{i as detectZaiEndpoint,n as applyOpenAIConfig,o as applyGoogleGeminiModelDefault}from"./openai-model-default-BirkY0mR.js";import{n as ensureSystemdUserLingerNonInteractive}from"./systemd-linger-CT-VHPB3.js";import{a as resolveCustomProviderId,n as applyCustomApiConfig,r as parseNonInteractiveCustomApiFlags,t as CustomApiError}from"./onboard-custom-B4dt-Qii.js";import{t as runInteractiveOnboarding}from"./onboard-interactive-jss8R9r9.js";import{t as applyOnboardingLocalWorkspaceConfig}from"./onboard-config-Kjacn8P6.js";const ONBOARD_PROVIDER_AUTH_FLAGS=[{optionKey:`anthropicApiKey`,authChoice:`apiKey`,cliFlag:`--anthropic-api-key`,cliOption:`--anthropic-api-key <key>`,description:`Anthropic API key`},{optionKey:`openaiApiKey`,authChoice:`openai-api-key`,cliFlag:`--openai-api-key`,cliOption:`--openai-api-key <key>`,description:`OpenAI API key`},{optionKey:`openrouterApiKey`,authChoice:`openrouter-api-key`,cliFlag:`--openrouter-api-key`,cliOption:`--openrouter-api-key <key>`,description:`OpenRouter API key`},{optionKey:`aiGatewayApiKey`,authChoice:`ai-gateway-api-key`,cliFlag:`--ai-gateway-api-key`,cliOption:`--ai-gateway-api-key <key>`,description:`Vercel AI Gateway API key`},{optionKey:`cloudflareAiGatewayApiKey`,authChoice:`cloudflare-ai-gateway-api-key`,cliFlag:`--cloudflare-ai-gateway-api-key`,cliOption:`--cloudflare-ai-gateway-api-key <key>`,description:`Cloudflare AI Gateway API key`},{optionKey:`moonshotApiKey`,authChoice:`moonshot-api-key`,cliFlag:`--moonshot-api-key`,cliOption:`--moonshot-api-key <key>`,description:`Moonshot API key`},{optionKey:`kimiCodeApiKey`,authChoice:`kimi-code-api-key`,cliFlag:`--kimi-code-api-key`,cliOption:`--kimi-code-api-key <key>`,description:`Kimi Coding API key`},{optionKey:`geminiApiKey`,authChoice:`gemini-api-key`,cliFlag:`--gemini-api-key`,cliOption:`--gemini-api-key <key>`,description:`Gemini API key`},{optionKey:`zaiApiKey`,authChoice:`zai-api-key`,cliFlag:`--zai-api-key`,cliOption:`--zai-api-key <key>`,description:`Z.AI API key`},{optionKey:`xiaomiApiKey`,authChoice:`xiaomi-api-key`,cliFlag:`--xiaomi-api-key`,cliOption:`--xiaomi-api-key <key>`,description:`Xiaomi API key`},{optionKey:`minimaxApiKey`,authChoice:`minimax-api`,cliFlag:`--minimax-api-key`,cliOption:`--minimax-api-key <key>`,description:`MiniMax API key`},{optionKey:`syntheticApiKey`,authChoice:`synthetic-api-key`,cliFlag:`--synthetic-api-key`,cliOption:`--synthetic-api-key <key>`,description:`Synthetic API key`},{optionKey:`veniceApiKey`,authChoice:`venice-api-key`,cliFlag:`--venice-api-key`,cliOption:`--venice-api-key <key>`,description:`Venice API key`},{optionKey:`togetherApiKey`,authChoice:`together-api-key`,cliFlag:`--together-api-key`,cliOption:`--together-api-key <key>`,description:`Together AI API key`},{optionKey:`huggingfaceApiKey`,authChoice:`huggingface-api-key`,cliFlag:`--huggingface-api-key`,cliOption:`--huggingface-api-key <key>`,description:`Hugging Face API key (HF token)`},{optionKey:`opencodeZenApiKey`,authChoice:`opencode-zen`,cliFlag:`--opencode-zen-api-key`,cliOption:`--opencode-zen-api-key <key>`,description:`OpenCode Zen API key`},{optionKey:`xaiApiKey`,authChoice:`xai-api-key`,cliFlag:`--xai-api-key`,cliOption:`--xai-api-key <key>`,description:`xAI API key`},{optionKey:`litellmApiKey`,authChoice:`litellm-api-key`,cliFlag:`--litellm-api-key`,cliOption:`--litellm-api-key <key>`,description:`LiteLLM API key`},{optionKey:`qianfanApiKey`,authChoice:`qianfan-api-key`,cliFlag:`--qianfan-api-key`,cliOption:`--qianfan-api-key <key>`,description:`QIANFAN API key`}];function hasStringValue(value){return typeof value==`string`?value.trim().length>0:!!value}function inferAuthChoiceFromFlags(opts){let matches=ONBOARD_PROVIDER_AUTH_FLAGS.filter(({optionKey})=>hasStringValue(opts[optionKey])).map(flag=>({optionKey:flag.optionKey,authChoice:flag.authChoice,label:flag.cliFlag}));return(hasStringValue(opts.customBaseUrl)||hasStringValue(opts.customModelId)||hasStringValue(opts.customApiKey))&&matches.push({optionKey:`customBaseUrl`,authChoice:`custom-api-key`,label:`--custom-base-url/--custom-model-id/--custom-api-key`}),{choice:matches[0]?.authChoice,matches}}async function resolveApiKeyFromProfiles(params){let store=await ensureAuthProfileStore(params.agentDir),order=resolveAuthProfileOrder({cfg:params.cfg,store,provider:params.provider});for(let profileId of order){if(store.profiles[profileId]?.type!==`api_key`)continue;let resolved=await resolveApiKeyForProfile({cfg:params.cfg,store,profileId,agentDir:params.agentDir});if(resolved?.apiKey)return resolved.apiKey}return null}async function resolveNonInteractiveApiKey(params){let flagKey=normalizeOptionalSecretInput(params.flagValue);if(flagKey)return{key:flagKey,source:`flag`};let envResolved=resolveEnvApiKey(params.provider);if(envResolved?.apiKey)return{key:envResolved.apiKey,source:`env`};let explicitEnvVar=params.envVarName?.trim();if(explicitEnvVar){let explicitEnvKey=normalizeOptionalSecretInput(process.env[explicitEnvVar]);if(explicitEnvKey)return{key:explicitEnvKey,source:`env`}}if(params.allowProfile??!0){let profileKey=await resolveApiKeyFromProfiles({provider:params.provider,cfg:params.cfg,agentDir:params.agentDir});if(profileKey)return{key:profileKey,source:`profile`}}if(params.required===!1)return null;let profileHint=params.allowProfile===!1?``:`, or existing ${params.provider} API-key profile`;return params.runtime.error(`Missing ${params.flagName} (or ${params.envVar} in env${profileHint}).`),params.runtime.exit(1),null}async function applyNonInteractiveAuthChoice(params){let{authChoice,opts,runtime,baseConfig}=params,nextConfig=params.nextConfig;if(authChoice===`claude-cli`||authChoice===`codex-cli`)return runtime.error([`Auth choice "${authChoice}" is deprecated.`,`Use "--auth-choice builderforcellm" (recommended default), "--auth-choice token" (Anthropic setup-token), or "--auth-choice openai-codex".`].join(`
|
|
2
2
|
`)),runtime.exit(1),null;if(authChoice===`setup-token`)return runtime.error([`Auth choice "setup-token" requires interactive mode.`,`Use "--auth-choice token" with --token and --token-provider anthropic.`].join(`
|
|
3
3
|
`)),runtime.exit(1),null;if(authChoice===`local`)return runtime.error([`Auth choice "local" requires interactive mode.`,`Use interactive onboard/configure for guided local Ollama or llama.cpp/vLLM setup.`].join(`
|
|
4
4
|
`)),runtime.exit(1),null;if(authChoice===`vllm`)return runtime.error([`Auth choice "vllm" requires interactive mode.`,`Use interactive onboard/configure to enter base URL, API key, and model ID.`].join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.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-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-
|
|
1
|
+
import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.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-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-m_x-JRkR.js";import"./sessions-CmJXMlLP.js";import"./project-context-store-BNXYrLJz.js";import"./tokens-CFKkpUIu.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./send-CGcNbbV7.js";import"./send-DPRTlcZh.js";import"./with-timeout-CBXVw0An.js";import"./deliver--eLCRJc2.js";import"./accounts-Cx82nj4E.js";import"./send-DfHAMPcD.js";import"./image-ops-CotJhwRR.js";import"./redact-CgO7wehS.js";import"./errors-tAt19c1E.js";import"./embedded-helpers-BZGiFZlP.js";import"./sandbox-C-Owvt1-.js";import"./chrome-BfwLDcFc.js";import"./tailscale-DV-yOmYe.js";import"./auth-ChecwOXS.js";import"./server-context-BjYYSEVE.js";import"./routes-Dnfsevhw.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-CiwWAhp5.js";import"./manager-Bjb9ptCz.js";import"./gemini-auth-KBXMhaRQ.js";import"./retry-B151Hej5.js";import"./common-BfwMxpLu.js";import"./runner-DwPaM8kz.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-tquUDu_7.js";import"./session-utils-D2_j4c6U.js";import"./coding-tools.policy-BwdtwuXY.js";import"./pairing-store-BCsvhT6-.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-DsI3qJRy.js";import"./send-BOSlm5fG.js";import"./outbound-attachment-BaTYE4qp.js";import"./delivery-queue-Cp3t4Upn.js";import"./project-context-BdK18hVI.js";import"./control-service-Ca0CBlhO.js";import"./stagger-CRe77dWL.js";import"./channel-selection-BLwXhb9t.js";import"./send-BOBan2eG.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-DATdLu15.js";import"./onboard-helpers-D2vxAtv8.js";import"./prompt-style-BMWmaqSC.js";import"./pairing-labels-BUXpRejW.js";import"./active-listener-Di9e1YAD.js";import"./mamba-state-engine-DJt_RpLC.js";import"./transformers-stream-Buj40qHl.js";import"./catalog-li4bSIE2.js";import"./helpers-DPPVplyk.js";import"./plugin-auto-enable-DT7HMdAA.js";import"./install-safe-path-ObPl6zIf.js";import"./npm-registry-spec-BV1VDmuN.js";import"./skill-scanner-C2gXLVti.js";import"./installs-C7X7CT9a.js";import{n as setupChannels}from"./onboard-channels-ZI4QC9WU.js";export{setupChannels};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./embedded-helpers-2fP2Yq8h.js";import"./reply-
|
|
1
|
+
import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./embedded-helpers-2fP2Yq8h.js";import"./reply-BuUSdq2L.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-Doyvd4lU.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-BifagO7i.js";import"./io-BNtgT4VB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BD801bpx.js";import"./runner-C3k1sKdu.js";import"./model-catalog-BoiWqBTw.js";import"./sandbox-1jtP0nhr.js";import"./chrome-Bfprrnm1.js";import"./tailscale-DLkpGquM.js";import"./auth-lebUHrkd.js";import"./server-context-DKdrUePN.js";import"./frontmatter-3D1EdC1L.js";import"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-CRrqIFJR.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-BPr0-lkT.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-l9WWK31e.js";import"./send-CVgJk5kN.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-Yn3MpU4F.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import"./tokens-CCU3zO-D.js";import"./project-context-store-Dbbjk8CQ.js";import"./with-timeout-CPd4-suw.js";import"./deliver-BiGCWHvZ.js";import"./send-CRSlal5z.js";import"./workspace-D4LK4thI.js";import"./reply-prefix-zIMgi6K6.js";import"./memory-cli-D-Khe5Ij.js";import"./manager-DNIg84rj.js";import"./retry-DlVhg5qu.js";import"./client-xfoidwPI.js";import"./call-CJq3iGqu.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-Cp4LMft_.js";import"./send-D_6wd5Y3.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-C8gtsUDG.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-DAwcEPGb.js";import"./refresh-TiC_kLgE.js";import"./coding-tools.policy-COe2xa9K.js";import"./send-BIMaIwQV.js";import"./onboard-helpers-BmYUjl4j.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-CD0lPAfY.js";import"./session-cost-usage-BjH7mxVj.js";import"./usage-format-DGf8ZWPH.js";import"./provider-usage-QGVVADJa.js";import"./active-listener-Dcg19lJG.js";import"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import"./project-context-BLpMH93w.js";import"./control-service-DKBAemtq.js";import"./stagger-8EkqkqJv.js";import"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-BQuRdgMU.js";import"./transformers-stream-D7nRu4Qu.js";import"./catalog-rgiY__UQ.js";import"./helpers-DTDCy17p.js";import"./plugin-auto-enable-zKMSAekH.js";import"./install-safe-path-DsLq2BUJ.js";import"./npm-registry-spec-DIW6RsGN.js";import"./skill-scanner-BUNvEK3Z.js";import"./installs-ZToTbCYE.js";import{n as setupChannels}from"./onboard-channels-uvIeLPXK.js";export{setupChannels};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as formatChannelSelectionLine,i as formatChannelPrimerLine,s as listChatChannels}from"./registry-Cv7CoWAs.js";import{t as createSubsystemLogger}from"./subsystem-C4b1Von0.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{n as DEFAULT_ACCOUNT_ID,u as normalizeAccountId}from"./session-key-CksCYipj.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-CufEmNj_.js";import{C as createPluginLoaderLogger,w as loadBuilderForceAgentsPlugins}from"./subagent-registry-
|
|
1
|
+
import{a as formatChannelSelectionLine,i as formatChannelPrimerLine,s as listChatChannels}from"./registry-Cv7CoWAs.js";import{t as createSubsystemLogger}from"./subsystem-C4b1Von0.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{n as DEFAULT_ACCOUNT_ID,u as normalizeAccountId}from"./session-key-CksCYipj.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-CufEmNj_.js";import{C as createPluginLoaderLogger,w as loadBuilderForceAgentsPlugins}from"./subagent-registry-m_x-JRkR.js";import{n as listChannelPlugins,t as getChannelPlugin}from"./plugins-1Mn6RiNf.js";import{t as formatDocsLink}from"./links-BKzP7VVP.js";import{r as listChannelPluginCatalogEntries}from"./catalog-li4bSIE2.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DPPVplyk.js";import{n as isChannelConfigured}from"./plugin-auto-enable-DT7HMdAA.js";import{t as enablePluginInConfig}from"./enable-vNR-vlAd.js";import{n as installPluginFromNpmSpec,t as recordPluginInstall}from"./installs-C7X7CT9a.js";import path from"node:path";import fs from"node:fs";function hasGitWorkspace(workspaceDir){let candidates=new Set;candidates.add(path.join(process.cwd(),`.git`)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.join(workspaceDir,`.git`));for(let candidate of candidates)if(fs.existsSync(candidate))return!0;return!1}function resolveLocalPath(entry,workspaceDir,allowLocal){if(!allowLocal)return null;let raw=entry.install.localPath?.trim();if(!raw)return null;let candidates=new Set;candidates.add(path.resolve(process.cwd(),raw)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.resolve(workspaceDir,raw));for(let candidate of candidates)if(fs.existsSync(candidate))return candidate;return null}function addPluginLoadPath(cfg,pluginPath){let existing=cfg.plugins?.load?.paths??[],merged=Array.from(new Set([...existing,pluginPath]));return{...cfg,plugins:{...cfg.plugins,load:{...cfg.plugins?.load,paths:merged}}}}async function promptInstallChoice(params){let{entry,localPath,prompter,defaultChoice}=params,localOptions=localPath?[{value:`local`,label:`Use local plugin path`,hint:localPath}]:[],options=[{value:`npm`,label:`Download from npm (${entry.install.npmSpec})`},...localOptions,{value:`skip`,label:`Skip for now`}],initialValue=defaultChoice===`local`&&!localPath?`npm`:defaultChoice;return await prompter.select({message:`Install ${entry.meta.label} plugin?`,options,initialValue})}function resolveInstallDefaultChoice(params){let{cfg,entry,localPath}=params,updateChannel=cfg.update?.channel;if(updateChannel===`dev`)return localPath?`local`:`npm`;if(updateChannel===`stable`||updateChannel===`beta`)return`npm`;let entryDefault=entry.install.defaultChoice;return entryDefault===`local`?localPath?`local`:`npm`:entryDefault===`npm`?`npm`:localPath?`local`:`npm`}async function ensureOnboardingPluginInstalled(params){let{entry,prompter,runtime,workspaceDir}=params,next=params.cfg,localPath=resolveLocalPath(entry,workspaceDir,hasGitWorkspace(workspaceDir)),choice=await promptInstallChoice({entry,localPath,defaultChoice:resolveInstallDefaultChoice({cfg:next,entry,localPath}),prompter});if(choice===`skip`)return{cfg:next,installed:!1};if(choice===`local`&&localPath)return next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0};let result=await installPluginFromNpmSpec({spec:entry.install.npmSpec,logger:{info:msg=>runtime.log?.(msg),warn:msg=>runtime.log?.(msg)}});return result.ok?(next=enablePluginInConfig(next,result.pluginId).config,next=recordPluginInstall(next,{pluginId:result.pluginId,source:`npm`,spec:entry.install.npmSpec,installPath:result.targetDir,version:result.version}),{cfg:next,installed:!0}):(await prompter.note(`Failed to install ${entry.install.npmSpec}: ${result.error}`,`Plugin install`),localPath&&await prompter.confirm({message:`Use local plugin path instead? (${localPath})`,initialValue:!0})?(next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0}):(runtime.error?.(`Plugin install failed: ${result.error}`),{cfg:next,installed:!1}))}function reloadOnboardingPluginRegistry(params){let workspaceDir=params.workspaceDir??resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg)),log=createSubsystemLogger(`plugins`);loadBuilderForceAgentsPlugins({config:params.cfg,workspaceDir,cache:!1,logger:createPluginLoaderLogger(log)})}const CHANNEL_ONBOARDING_ADAPTERS=()=>new Map(listChannelPlugins().map(plugin=>plugin.onboarding?[plugin.id,plugin.onboarding]:null).filter(entry=>!!entry));function getChannelOnboardingAdapter(channel){return CHANNEL_ONBOARDING_ADAPTERS().get(channel)}function listChannelOnboardingAdapters(){return Array.from(CHANNEL_ONBOARDING_ADAPTERS().values())}function formatAccountLabel(accountId){return accountId===DEFAULT_ACCOUNT_ID?`default (primary)`:accountId}async function promptConfiguredAction(params){let{prompter,label,supportsDisable,supportsDelete}=params,updateOption={value:`update`,label:`Modify settings`},disableOption={value:`disable`,label:`Disable (keeps config)`},deleteOption={value:`delete`,label:`Delete config`},skipOption={value:`skip`,label:`Skip (leave as-is)`},options=[updateOption,...supportsDisable?[disableOption]:[],...supportsDelete?[deleteOption]:[],skipOption];return await prompter.select({message:`${label} already configured. What do you want to do?`,options,initialValue:`update`})}async function promptRemovalAccountId(params){let{cfg,prompter,label,channel}=params,plugin=getChannelPlugin(channel);if(!plugin)return DEFAULT_ACCOUNT_ID;let accountIds=plugin.config.listAccountIds(cfg).filter(Boolean),defaultAccountId=resolveChannelDefaultAccountId({plugin,cfg,accountIds});return accountIds.length<=1?defaultAccountId:normalizeAccountId(await prompter.select({message:`${label} account`,options:accountIds.map(accountId=>({value:accountId,label:formatAccountLabel(accountId)})),initialValue:defaultAccountId}))??defaultAccountId}async function collectChannelStatus(params){let installedPlugins=listChannelPlugins(),installedIds=new Set(installedPlugins.map(plugin=>plugin.id)),catalogEntries=listChannelPluginCatalogEntries({workspaceDir:resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg))}).filter(entry=>!installedIds.has(entry.id)),statusEntries=await Promise.all(listChannelOnboardingAdapters().map(adapter=>adapter.getStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides}))),statusByChannel=new Map(statusEntries.map(entry=>[entry.channel,entry])),fallbackStatuses=listChatChannels().filter(meta=>!statusByChannel.has(meta.id)).map(meta=>{let configured=isChannelConfigured(params.cfg,meta.id),statusLabel=configured?`configured (plugin disabled)`:`not configured`;return{channel:meta.id,configured,statusLines:[`${meta.label}: ${statusLabel}`],selectionHint:configured?`configured · plugin disabled`:`not configured`,quickstartScore:0}}),catalogStatuses=catalogEntries.map(entry=>({channel:entry.id,configured:!1,statusLines:[`${entry.meta.label}: install plugin to enable`],selectionHint:`plugin · install`,quickstartScore:0})),combinedStatuses=[...statusEntries,...fallbackStatuses,...catalogStatuses];return{installedPlugins,catalogEntries,statusByChannel:new Map(combinedStatuses.map(entry=>[entry.channel,entry])),statusLines:combinedStatuses.flatMap(entry=>entry.statusLines)}}async function noteChannelStatus(params){let{statusLines}=await collectChannelStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides??{}});statusLines.length>0&&await params.prompter.note(statusLines.join(`
|
|
2
2
|
`),`Channel status`)}async function noteChannelPrimer(prompter,channels){let channelLines=channels.map(channel=>formatChannelPrimerLine({id:channel.id,label:channel.label,selectionLabel:channel.label,docsPath:`/`,blurb:channel.blurb}));await prompter.note([`DM security: default is pairing; unknown DMs get a pairing code.`,`Approve with: ${formatCliCommand(`builderforce pairing approve <channel> <code>`)}`,`Public DMs require dmPolicy="open" + allowFrom=["*"].`,`Multi-user DMs: run: `+formatCliCommand(`builderforce config set session.dmScope "per-channel-peer"`)+` (or "per-account-channel-peer" for multi-account channels) to isolate sessions.`,`Docs: ${formatDocsLink(`/start/pairing`,`start/pairing`)}`,``,...channelLines].join(`
|
|
3
3
|
`),`How channels work`)}function resolveQuickstartDefault(statusByChannel){let best=null;for(let[channel,status]of statusByChannel)status.quickstartScore!=null&&(!best||status.quickstartScore>best.score)&&(best={channel,score:status.quickstartScore});return best?.channel}async function maybeConfigureDmPolicies(params){let{selection,prompter,accountIdsByChannel}=params,dmPolicies=selection.map(channel=>getChannelOnboardingAdapter(channel)?.dmPolicy).filter(Boolean);if(dmPolicies.length===0||!await prompter.confirm({message:`Configure DM access policies now? (default: pairing)`,initialValue:!1}))return params.cfg;let cfg=params.cfg,selectPolicy=async policy=>(await prompter.note([`Default: pairing (unknown DMs get a pairing code).`,`Approve: ${formatCliCommand(`builderforce pairing approve ${policy.channel} <code>`)}`,`Allowlist DMs: ${policy.policyKey}="allowlist" + ${policy.allowFromKey} entries.`,`Public DMs: ${policy.policyKey}="open" + ${policy.allowFromKey} includes "*".`,`Multi-user DMs: run: `+formatCliCommand(`builderforce config set session.dmScope "per-channel-peer"`)+` (or "per-account-channel-peer" for multi-account channels) to isolate sessions.`,`Docs: ${formatDocsLink(`/start/pairing`,`start/pairing`)}`].join(`
|
|
4
4
|
`),`${policy.label} DM access`),await prompter.select({message:`${policy.label} DM policy`,options:[{value:`pairing`,label:`Pairing (recommended)`},{value:`allowlist`,label:`Allowlist (specific users only)`},{value:`open`,label:`Open (public inbound DMs)`},{value:`disabled`,label:`Disabled (ignore DMs)`}]}));for(let policy of dmPolicies){let current=policy.getCurrent(cfg),nextPolicy=await selectPolicy(policy);nextPolicy!==current&&(cfg=policy.setPolicy(cfg,nextPolicy)),nextPolicy===`allowlist`&&policy.promptAllowFrom&&(cfg=await policy.promptAllowFrom({cfg,prompter,accountId:accountIdsByChannel?.get(policy.channel)}))}return cfg}async function setupChannels(cfg,runtime,prompter,options){let next=cfg,forceAllowFromChannels=new Set(options?.forceAllowFromChannels??[]),accountOverrides={...options?.accountIds};options?.whatsappAccountId?.trim()&&(accountOverrides.whatsapp=options.whatsappAccountId.trim());let{installedPlugins,catalogEntries,statusByChannel,statusLines}=await collectChannelStatus({cfg:next,options,accountOverrides});if(!options?.skipStatusNote&&statusLines.length>0&&await prompter.note(statusLines.join(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Mt as loadBuilderForceAgentsPlugins,jt as createPluginLoaderLogger}from"./reply-
|
|
1
|
+
import{Mt as loadBuilderForceAgentsPlugins,jt as createPluginLoaderLogger}from"./reply-BuUSdq2L.js";import{n as DEFAULT_ACCOUNT_ID,u as normalizeAccountId}from"./session-key-EoB0qaG9.js";import{t as createSubsystemLogger}from"./subsystem-B3TqcCrZ.js";import{a as formatChannelSelectionLine,i as formatChannelPrimerLine,s as listChatChannels}from"./registry-TdK-aV05.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-DPtjOxzp.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{n as listChannelPlugins,t as getChannelPlugin}from"./plugins-D5zP6ENo.js";import{t as formatDocsLink}from"./links-BgWWaaOT.js";import{r as listChannelPluginCatalogEntries}from"./catalog-rgiY__UQ.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DTDCy17p.js";import{n as isChannelConfigured}from"./plugin-auto-enable-zKMSAekH.js";import{t as enablePluginInConfig}from"./enable-Dm2hiZTt.js";import{n as installPluginFromNpmSpec,t as recordPluginInstall}from"./installs-ZToTbCYE.js";import fs from"node:fs";import path from"node:path";function hasGitWorkspace(workspaceDir){let candidates=new Set;candidates.add(path.join(process.cwd(),`.git`)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.join(workspaceDir,`.git`));for(let candidate of candidates)if(fs.existsSync(candidate))return!0;return!1}function resolveLocalPath(entry,workspaceDir,allowLocal){if(!allowLocal)return null;let raw=entry.install.localPath?.trim();if(!raw)return null;let candidates=new Set;candidates.add(path.resolve(process.cwd(),raw)),workspaceDir&&workspaceDir!==process.cwd()&&candidates.add(path.resolve(workspaceDir,raw));for(let candidate of candidates)if(fs.existsSync(candidate))return candidate;return null}function addPluginLoadPath(cfg,pluginPath){let existing=cfg.plugins?.load?.paths??[],merged=Array.from(new Set([...existing,pluginPath]));return{...cfg,plugins:{...cfg.plugins,load:{...cfg.plugins?.load,paths:merged}}}}async function promptInstallChoice(params){let{entry,localPath,prompter,defaultChoice}=params,localOptions=localPath?[{value:`local`,label:`Use local plugin path`,hint:localPath}]:[],options=[{value:`npm`,label:`Download from npm (${entry.install.npmSpec})`},...localOptions,{value:`skip`,label:`Skip for now`}],initialValue=defaultChoice===`local`&&!localPath?`npm`:defaultChoice;return await prompter.select({message:`Install ${entry.meta.label} plugin?`,options,initialValue})}function resolveInstallDefaultChoice(params){let{cfg,entry,localPath}=params,updateChannel=cfg.update?.channel;if(updateChannel===`dev`)return localPath?`local`:`npm`;if(updateChannel===`stable`||updateChannel===`beta`)return`npm`;let entryDefault=entry.install.defaultChoice;return entryDefault===`local`?localPath?`local`:`npm`:entryDefault===`npm`?`npm`:localPath?`local`:`npm`}async function ensureOnboardingPluginInstalled(params){let{entry,prompter,runtime,workspaceDir}=params,next=params.cfg,localPath=resolveLocalPath(entry,workspaceDir,hasGitWorkspace(workspaceDir)),choice=await promptInstallChoice({entry,localPath,defaultChoice:resolveInstallDefaultChoice({cfg:next,entry,localPath}),prompter});if(choice===`skip`)return{cfg:next,installed:!1};if(choice===`local`&&localPath)return next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0};let result=await installPluginFromNpmSpec({spec:entry.install.npmSpec,logger:{info:msg=>runtime.log?.(msg),warn:msg=>runtime.log?.(msg)}});return result.ok?(next=enablePluginInConfig(next,result.pluginId).config,next=recordPluginInstall(next,{pluginId:result.pluginId,source:`npm`,spec:entry.install.npmSpec,installPath:result.targetDir,version:result.version}),{cfg:next,installed:!0}):(await prompter.note(`Failed to install ${entry.install.npmSpec}: ${result.error}`,`Plugin install`),localPath&&await prompter.confirm({message:`Use local plugin path instead? (${localPath})`,initialValue:!0})?(next=addPluginLoadPath(next,localPath),next=enablePluginInConfig(next,entry.id).config,{cfg:next,installed:!0}):(runtime.error?.(`Plugin install failed: ${result.error}`),{cfg:next,installed:!1}))}function reloadOnboardingPluginRegistry(params){let workspaceDir=params.workspaceDir??resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg)),log=createSubsystemLogger(`plugins`);loadBuilderForceAgentsPlugins({config:params.cfg,workspaceDir,cache:!1,logger:createPluginLoaderLogger(log)})}const CHANNEL_ONBOARDING_ADAPTERS=()=>new Map(listChannelPlugins().map(plugin=>plugin.onboarding?[plugin.id,plugin.onboarding]:null).filter(entry=>!!entry));function getChannelOnboardingAdapter(channel){return CHANNEL_ONBOARDING_ADAPTERS().get(channel)}function listChannelOnboardingAdapters(){return Array.from(CHANNEL_ONBOARDING_ADAPTERS().values())}function formatAccountLabel(accountId){return accountId===DEFAULT_ACCOUNT_ID?`default (primary)`:accountId}async function promptConfiguredAction(params){let{prompter,label,supportsDisable,supportsDelete}=params,updateOption={value:`update`,label:`Modify settings`},disableOption={value:`disable`,label:`Disable (keeps config)`},deleteOption={value:`delete`,label:`Delete config`},skipOption={value:`skip`,label:`Skip (leave as-is)`},options=[updateOption,...supportsDisable?[disableOption]:[],...supportsDelete?[deleteOption]:[],skipOption];return await prompter.select({message:`${label} already configured. What do you want to do?`,options,initialValue:`update`})}async function promptRemovalAccountId(params){let{cfg,prompter,label,channel}=params,plugin=getChannelPlugin(channel);if(!plugin)return DEFAULT_ACCOUNT_ID;let accountIds=plugin.config.listAccountIds(cfg).filter(Boolean),defaultAccountId=resolveChannelDefaultAccountId({plugin,cfg,accountIds});return accountIds.length<=1?defaultAccountId:normalizeAccountId(await prompter.select({message:`${label} account`,options:accountIds.map(accountId=>({value:accountId,label:formatAccountLabel(accountId)})),initialValue:defaultAccountId}))??defaultAccountId}async function collectChannelStatus(params){let installedPlugins=listChannelPlugins(),installedIds=new Set(installedPlugins.map(plugin=>plugin.id)),catalogEntries=listChannelPluginCatalogEntries({workspaceDir:resolveAgentWorkspaceDir(params.cfg,resolveDefaultAgentId(params.cfg))}).filter(entry=>!installedIds.has(entry.id)),statusEntries=await Promise.all(listChannelOnboardingAdapters().map(adapter=>adapter.getStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides}))),statusByChannel=new Map(statusEntries.map(entry=>[entry.channel,entry])),fallbackStatuses=listChatChannels().filter(meta=>!statusByChannel.has(meta.id)).map(meta=>{let configured=isChannelConfigured(params.cfg,meta.id),statusLabel=configured?`configured (plugin disabled)`:`not configured`;return{channel:meta.id,configured,statusLines:[`${meta.label}: ${statusLabel}`],selectionHint:configured?`configured · plugin disabled`:`not configured`,quickstartScore:0}}),catalogStatuses=catalogEntries.map(entry=>({channel:entry.id,configured:!1,statusLines:[`${entry.meta.label}: install plugin to enable`],selectionHint:`plugin · install`,quickstartScore:0})),combinedStatuses=[...statusEntries,...fallbackStatuses,...catalogStatuses];return{installedPlugins,catalogEntries,statusByChannel:new Map(combinedStatuses.map(entry=>[entry.channel,entry])),statusLines:combinedStatuses.flatMap(entry=>entry.statusLines)}}async function noteChannelStatus(params){let{statusLines}=await collectChannelStatus({cfg:params.cfg,options:params.options,accountOverrides:params.accountOverrides??{}});statusLines.length>0&&await params.prompter.note(statusLines.join(`
|
|
2
2
|
`),`Channel status`)}async function noteChannelPrimer(prompter,channels){let channelLines=channels.map(channel=>formatChannelPrimerLine({id:channel.id,label:channel.label,selectionLabel:channel.label,docsPath:`/`,blurb:channel.blurb}));await prompter.note([`DM security: default is pairing; unknown DMs get a pairing code.`,`Approve with: ${formatCliCommand(`builderforce pairing approve <channel> <code>`)}`,`Public DMs require dmPolicy="open" + allowFrom=["*"].`,`Multi-user DMs: run: `+formatCliCommand(`builderforce config set session.dmScope "per-channel-peer"`)+` (or "per-account-channel-peer" for multi-account channels) to isolate sessions.`,`Docs: ${formatDocsLink(`/start/pairing`,`start/pairing`)}`,``,...channelLines].join(`
|
|
3
3
|
`),`How channels work`)}function resolveQuickstartDefault(statusByChannel){let best=null;for(let[channel,status]of statusByChannel)status.quickstartScore!=null&&(!best||status.quickstartScore>best.score)&&(best={channel,score:status.quickstartScore});return best?.channel}async function maybeConfigureDmPolicies(params){let{selection,prompter,accountIdsByChannel}=params,dmPolicies=selection.map(channel=>getChannelOnboardingAdapter(channel)?.dmPolicy).filter(Boolean);if(dmPolicies.length===0||!await prompter.confirm({message:`Configure DM access policies now? (default: pairing)`,initialValue:!1}))return params.cfg;let cfg=params.cfg,selectPolicy=async policy=>(await prompter.note([`Default: pairing (unknown DMs get a pairing code).`,`Approve: ${formatCliCommand(`builderforce pairing approve ${policy.channel} <code>`)}`,`Allowlist DMs: ${policy.policyKey}="allowlist" + ${policy.allowFromKey} entries.`,`Public DMs: ${policy.policyKey}="open" + ${policy.allowFromKey} includes "*".`,`Multi-user DMs: run: `+formatCliCommand(`builderforce config set session.dmScope "per-channel-peer"`)+` (or "per-account-channel-peer" for multi-account channels) to isolate sessions.`,`Docs: ${formatDocsLink(`/start/pairing`,`start/pairing`)}`].join(`
|
|
4
4
|
`),`${policy.label} DM access`),await prompter.select({message:`${policy.label} DM policy`,options:[{value:`pairing`,label:`Pairing (recommended)`},{value:`allowlist`,label:`Allowlist (specific users only)`},{value:`open`,label:`Open (public inbound DMs)`},{value:`disabled`,label:`Disabled (ignore DMs)`}]}));for(let policy of dmPolicies){let current=policy.getCurrent(cfg),nextPolicy=await selectPolicy(policy);nextPolicy!==current&&(cfg=policy.setPolicy(cfg,nextPolicy)),nextPolicy===`allowlist`&&policy.promptAllowFrom&&(cfg=await policy.promptAllowFrom({cfg,prompter,accountId:accountIdsByChannel?.get(policy.channel)}))}return cfg}async function setupChannels(cfg,runtime,prompter,options){let next=cfg,forceAllowFromChannels=new Set(options?.forceAllowFromChannels??[]),accountOverrides={...options?.accountIds};options?.whatsappAccountId?.trim()&&(accountOverrides.whatsapp=options.whatsappAccountId.trim());let{installedPlugins,catalogEntries,statusByChannel,statusLines}=await collectChannelStatus({cfg:next,options,accountOverrides});if(!options?.skipStatusNote&&statusLines.length>0&&await prompter.note(statusLines.join(`
|
|
@@ -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-CuAFgjuQ.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-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./progress-Cqb-jAjT.js";import"./prompt-style-BMWmaqSC.js";import"./note-DgDXuE0F.js";import"./clack-prompter-B52CP7eY.js";import"./onboarding-
|
|
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-CuAFgjuQ.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-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./progress-Cqb-jAjT.js";import"./prompt-style-BMWmaqSC.js";import"./note-DgDXuE0F.js";import"./clack-prompter-B52CP7eY.js";import"./onboarding-CdRbvLgp.js";import{t as runInteractiveOnboarding}from"./onboard-interactive-CJdxqQ1b.js";export{runInteractiveOnboarding};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as restoreTerminalState}from"./restore-BdB4wlsZ.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{t as WizardCancelledError}from"./prompts-BP4e56X_.js";import{t as createClackPrompter}from"./clack-prompter-B52CP7eY.js";import{t as runOnboardingWizard}from"./onboarding-
|
|
1
|
+
import{t as restoreTerminalState}from"./restore-BdB4wlsZ.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{t as WizardCancelledError}from"./prompts-BP4e56X_.js";import{t as createClackPrompter}from"./clack-prompter-B52CP7eY.js";import{t as runOnboardingWizard}from"./onboarding-CdRbvLgp.js";async function runInteractiveOnboarding(opts,runtime=defaultRuntime){let prompter=createClackPrompter(),exitCode=null;try{await runOnboardingWizard(opts,runtime,prompter)}catch(err){if(err instanceof WizardCancelledError){exitCode=1;return}throw err}finally{restoreTerminalState(`onboarding finish`,{resumeStdinIfPaused:!1}),exitCode!==null&&runtime.exit(exitCode)}}export{runInteractiveOnboarding as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./logger-Bch0bx9c.js";import"./exec-DdcIjeyn.js";import"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import"./model-selection-Doyvd4lU.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-BifagO7i.js";import"./io-BNtgT4VB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BD801bpx.js";import"./progress-BfOtdN6b.js";import"./prompt-style-BpVK43GK.js";import"./note-B6NtFdXt.js";import"./clack-prompter-Dg23_riR.js";import"./onboarding-
|
|
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-Doyvd4lU.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-BifagO7i.js";import"./io-BNtgT4VB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BD801bpx.js";import"./progress-BfOtdN6b.js";import"./prompt-style-BpVK43GK.js";import"./note-B6NtFdXt.js";import"./clack-prompter-Dg23_riR.js";import"./onboarding-B1BmYWrs.js";import{t as runInteractiveOnboarding}from"./onboard-interactive-jss8R9r9.js";export{runInteractiveOnboarding};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import{t as restoreTerminalState}from"./restore-gPan2ZAn.js";import{t as WizardCancelledError}from"./prompts-Bchzq3K0.js";import{t as createClackPrompter}from"./clack-prompter-Dg23_riR.js";import{t as runOnboardingWizard}from"./onboarding-
|
|
1
|
+
import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import{t as restoreTerminalState}from"./restore-gPan2ZAn.js";import{t as WizardCancelledError}from"./prompts-Bchzq3K0.js";import{t as createClackPrompter}from"./clack-prompter-Dg23_riR.js";import{t as runOnboardingWizard}from"./onboarding-B1BmYWrs.js";async function runInteractiveOnboarding(opts,runtime=defaultRuntime){let prompter=createClackPrompter(),exitCode=null;try{await runOnboardingWizard(opts,runtime,prompter)}catch(err){if(err instanceof WizardCancelledError){exitCode=1;return}throw err}finally{restoreTerminalState(`onboarding finish`,{resumeStdinIfPaused:!1}),exitCode!==null&&runtime.exit(exitCode)}}export{runInteractiveOnboarding as t};
|
|
@@ -2,6 +2,6 @@ import{n as DEFAULT_GATEWAY_PORT,u as resolveGatewayPort}from"./paths-5FcIFMsj.j
|
|
|
2
2
|
`),`Security`),!await params.prompter.confirm({message:`I understand this is powerful and inherently risky. Continue?`,initialValue:!1})))throw new WizardCancelledError(`risk not accepted`)}function hasConfiguredModelOrAuth(config){let defaultsModel=config.agents?.defaults?.model,hasDefaultModel=typeof defaultsModel?.primary==`string`&&defaultsModel.primary.trim().length>0,hasModelCatalog=!!config.models&&Object.keys(config.models).length>0;return hasDefaultModel||hasModelCatalog}function hasConfiguredChannels(config){let channels=config.channels;return!channels||typeof channels!=`object`?!1:Object.values(channels).some(value=>value==null?!1:typeof value==`boolean`?value:typeof value==`string`?value.trim().length>0:typeof value==`number`?!0:Array.isArray(value)?value.length>0:typeof value==`object`?Object.keys(value).length>0:!1)}async function runOnboardingWizard(opts,runtime=defaultRuntime,prompter){let onboardHelpers=await import(`./onboard-helpers-CYi93iLE.js`);onboardHelpers.printWizardHeader(runtime),await prompter.intro(`BuilderForceAgents onboarding`),await requireRiskAcknowledgement({opts,prompter});let snapshot=await readConfigFileSnapshot(),baseConfig=snapshot.valid?snapshot.config:{},configHandlingAction=null;if(snapshot.exists&&!snapshot.valid){await prompter.note(onboardHelpers.summarizeExistingConfig(baseConfig),`Invalid config`),snapshot.issues.length>0&&await prompter.note([...snapshot.issues.map(iss=>`- ${iss.path}: ${iss.message}`),``,`Docs: https://docs.builderforce.ai/gateway/configuration`].join(`
|
|
3
3
|
`),`Config issues`),await prompter.outro(`Config invalid. Run \`${formatCliCommand(`builderforce doctor`)}\` to repair it, then re-run onboarding.`),runtime.exit(1);return}let quickstartHint=`Configure details later via ${formatCliCommand(`builderforce configure`)}.`,explicitFlowRaw=opts.flow?.trim(),normalizedExplicitFlow=explicitFlowRaw===`manual`?`advanced`:explicitFlowRaw;if(normalizedExplicitFlow&&normalizedExplicitFlow!==`quickstart`&&normalizedExplicitFlow!==`advanced`){runtime.error(`Invalid --flow (use quickstart, manual, or advanced).`),runtime.exit(1);return}let flow=(normalizedExplicitFlow===`quickstart`||normalizedExplicitFlow===`advanced`?normalizedExplicitFlow:void 0)??await prompter.select({message:`Onboarding mode`,options:[{value:`quickstart`,label:`QuickStart`,hint:quickstartHint},{value:`advanced`,label:`Manual`,hint:`Configure port, network, Tailscale, and auth options.`}],initialValue:`quickstart`});if(opts.mode===`remote`&&flow===`quickstart`&&(await prompter.note(`QuickStart only supports local gateways. Switching to Manual mode.`,`QuickStart`),flow=`advanced`),snapshot.exists){await prompter.note(onboardHelpers.summarizeExistingConfig(baseConfig),`Existing config detected`);let action=await prompter.select({message:`Config handling
|
|
4
4
|
(↑/↓ to select, Enter to confirm)`,options:[{value:`keep`,label:`Use existing values`},{value:`modify`,label:`Update values`},{value:`reset`,label:`Reset`}],initialValue:`keep`});if(configHandlingAction=action,action===`reset`){let workspaceDefault=baseConfig.agents?.defaults?.workspace??onboardHelpers.DEFAULT_WORKSPACE,resetScope=await prompter.select({message:`Reset scope`,options:[{value:`config`,label:`Config only`},{value:`config+creds+sessions`,label:`Config + creds + sessions`},{value:`full`,label:`Full reset (config + creds + sessions + workspace)`}]});await onboardHelpers.handleReset(resetScope,resolveUserPath(workspaceDefault),runtime),baseConfig={}}}let keepExistingValues=configHandlingAction===`keep`,quickstartGateway=(()=>{let hasExisting=typeof baseConfig.gateway?.port==`number`||baseConfig.gateway?.bind!==void 0||baseConfig.gateway?.auth?.mode!==void 0||baseConfig.gateway?.auth?.token!==void 0||baseConfig.gateway?.auth?.password!==void 0||baseConfig.gateway?.customBindHost!==void 0||baseConfig.gateway?.tailscale?.mode!==void 0,bindRaw=baseConfig.gateway?.bind,bind=bindRaw===`loopback`||bindRaw===`lan`||bindRaw===`auto`||bindRaw===`custom`||bindRaw===`tailnet`?bindRaw:`loopback`,authMode=`token`;baseConfig.gateway?.auth?.mode===`token`||baseConfig.gateway?.auth?.mode===`password`?authMode=baseConfig.gateway.auth.mode:baseConfig.gateway?.auth?.token?authMode=`token`:baseConfig.gateway?.auth?.password&&(authMode=`password`);let tailscaleRaw=baseConfig.gateway?.tailscale?.mode,tailscaleMode=tailscaleRaw===`off`||tailscaleRaw===`serve`||tailscaleRaw===`funnel`?tailscaleRaw:`off`;return{hasExisting,port:resolveGatewayPort(baseConfig),bind,authMode,tailscaleMode,token:baseConfig.gateway?.auth?.token,password:baseConfig.gateway?.auth?.password,customBindHost:baseConfig.gateway?.customBindHost,tailscaleResetOnExit:baseConfig.gateway?.tailscale?.resetOnExit??!1}})();if(flow===`quickstart`){let formatBind=value=>value===`loopback`?`Loopback (127.0.0.1)`:value===`lan`?`LAN`:value===`custom`?`Custom IP`:value===`tailnet`?`Tailnet (Tailscale IP)`:`Auto`,formatAuth=value=>value===`token`?`Token (default)`:`Password`,formatTailscale=value=>value===`off`?`Off`:value===`serve`?`Serve`:`Funnel`,quickstartLines=quickstartGateway.hasExisting?[`Keeping your current gateway settings:`,`Gateway port: ${quickstartGateway.port}`,`Gateway bind: ${formatBind(quickstartGateway.bind)}`,...quickstartGateway.bind===`custom`&&quickstartGateway.customBindHost?[`Gateway custom IP: ${quickstartGateway.customBindHost}`]:[],`Gateway auth: ${formatAuth(quickstartGateway.authMode)}`,`Tailscale exposure: ${formatTailscale(quickstartGateway.tailscaleMode)}`,`Direct to chat channels.`]:[`Gateway port: ${DEFAULT_GATEWAY_PORT}`,`Gateway bind: Loopback (127.0.0.1)`,`Gateway auth: Token (default)`,`Tailscale exposure: Off`,`Direct to chat channels.`];await prompter.note(quickstartLines.join(`
|
|
5
|
-
`),`QuickStart`)}let localPort=resolveGatewayPort(baseConfig),localUrl=`ws://127.0.0.1:${localPort}`,localProbe=await onboardHelpers.probeGatewayReachable({url:localUrl,token:baseConfig.gateway?.auth?.token??process.env.BUILDERFORCE_AGENTS_GATEWAY_TOKEN,password:baseConfig.gateway?.auth?.password??process.env.BUILDERFORCE_AGENTS_GATEWAY_PASSWORD}),remoteUrl=baseConfig.gateway?.remote?.url?.trim()??``,remoteProbe=remoteUrl?await onboardHelpers.probeGatewayReachable({url:remoteUrl,token:baseConfig.gateway?.remote?.token}):null,mode=opts.mode??(flow===`quickstart`?`local`:await prompter.select({message:`What do you want to set up?`,options:[{value:`local`,label:`Local gateway (this machine)`,hint:localProbe.ok?`Gateway reachable (${localUrl})`:`No gateway detected (${localUrl})`},{value:`remote`,label:`Remote gateway (info-only)`,hint:remoteUrl?remoteProbe?.ok?`Gateway reachable (${remoteUrl})`:`Configured but unreachable (${remoteUrl})`:`No remote URL configured yet`}]}));if(mode===`remote`){let{promptRemoteGatewayConfig}=await import(`./onboard-remote-CjMl-FSX.js`),{logConfigUpdated}=await import(`./logging-DuPWVnGa.js`),nextConfig=await promptRemoteGatewayConfig(baseConfig,prompter);nextConfig=onboardHelpers.applyWizardMetadata(nextConfig,{command:`onboard`,mode}),await writeConfigFile(nextConfig),logConfigUpdated(runtime),await prompter.outro(`Remote gateway configured.`);return}let existingWorkspace=baseConfig.agents?.defaults?.workspace??onboardHelpers.DEFAULT_WORKSPACE,workspaceDir=resolveUserPath((opts.workspace??(flow===`quickstart`||keepExistingValues?existingWorkspace:await prompter.text({message:`Workspace directory`,initialValue:existingWorkspace}))).trim()||onboardHelpers.DEFAULT_WORKSPACE),{applyOnboardingLocalWorkspaceConfig}=await import(`./onboard-config-CZqislkG.js`),nextConfig=applyOnboardingLocalWorkspaceConfig(baseConfig,workspaceDir),{promptAuthChoiceGrouped}=await import(`./auth-choice-prompt-CcV_XDx9.js`),{promptCustomApiConfig}=await import(`./onboard-custom-D19KFqsW.js`),{applyAuthChoice,resolvePreferredProviderForAuthChoice,warnIfModelConfigLooksOff}=await import(`./auth-choice-
|
|
5
|
+
`),`QuickStart`)}let localPort=resolveGatewayPort(baseConfig),localUrl=`ws://127.0.0.1:${localPort}`,localProbe=await onboardHelpers.probeGatewayReachable({url:localUrl,token:baseConfig.gateway?.auth?.token??process.env.BUILDERFORCE_AGENTS_GATEWAY_TOKEN,password:baseConfig.gateway?.auth?.password??process.env.BUILDERFORCE_AGENTS_GATEWAY_PASSWORD}),remoteUrl=baseConfig.gateway?.remote?.url?.trim()??``,remoteProbe=remoteUrl?await onboardHelpers.probeGatewayReachable({url:remoteUrl,token:baseConfig.gateway?.remote?.token}):null,mode=opts.mode??(flow===`quickstart`?`local`:await prompter.select({message:`What do you want to set up?`,options:[{value:`local`,label:`Local gateway (this machine)`,hint:localProbe.ok?`Gateway reachable (${localUrl})`:`No gateway detected (${localUrl})`},{value:`remote`,label:`Remote gateway (info-only)`,hint:remoteUrl?remoteProbe?.ok?`Gateway reachable (${remoteUrl})`:`Configured but unreachable (${remoteUrl})`:`No remote URL configured yet`}]}));if(mode===`remote`){let{promptRemoteGatewayConfig}=await import(`./onboard-remote-CjMl-FSX.js`),{logConfigUpdated}=await import(`./logging-DuPWVnGa.js`),nextConfig=await promptRemoteGatewayConfig(baseConfig,prompter);nextConfig=onboardHelpers.applyWizardMetadata(nextConfig,{command:`onboard`,mode}),await writeConfigFile(nextConfig),logConfigUpdated(runtime),await prompter.outro(`Remote gateway configured.`);return}let existingWorkspace=baseConfig.agents?.defaults?.workspace??onboardHelpers.DEFAULT_WORKSPACE,workspaceDir=resolveUserPath((opts.workspace??(flow===`quickstart`||keepExistingValues?existingWorkspace:await prompter.text({message:`Workspace directory`,initialValue:existingWorkspace}))).trim()||onboardHelpers.DEFAULT_WORKSPACE),{applyOnboardingLocalWorkspaceConfig}=await import(`./onboard-config-CZqislkG.js`),nextConfig=applyOnboardingLocalWorkspaceConfig(baseConfig,workspaceDir),{promptAuthChoiceGrouped}=await import(`./auth-choice-prompt-CcV_XDx9.js`),{promptCustomApiConfig}=await import(`./onboard-custom-D19KFqsW.js`),{applyAuthChoice,resolvePreferredProviderForAuthChoice,warnIfModelConfigLooksOff}=await import(`./auth-choice-CWbPLRN0.js`),{applyPrimaryModel,promptDefaultModel}=await import(`./model-picker-DKdDC89u.js`);if(keepExistingValues&&hasConfiguredModelOrAuth(nextConfig))await prompter.note(`Keeping existing model/auth configuration.`,`Model/auth provider`);else{let authStore=await ensureAuthProfileStore(void 0,{allowKeychainPrompt:!1}),authChoiceFromPrompt=opts.authChoice===void 0,authChoice=opts.authChoice??await promptAuthChoiceGrouped({prompter,store:authStore,includeSkip:!0});if(nextConfig=authChoice===`custom-api-key`?(await promptCustomApiConfig({prompter,runtime,config:nextConfig})).config:(await applyAuthChoice({authChoice,config:nextConfig,prompter,runtime,setDefaultModel:!0,opts:{tokenProvider:opts.tokenProvider,token:opts.authChoice===`apiKey`&&opts.token?opts.token:void 0}})).config,authChoiceFromPrompt&&authChoice!==`custom-api-key`&&authChoice!==`local`&&authChoice!==`builderforcellm`){let modelSelection=await promptDefaultModel({config:nextConfig,prompter,allowKeep:!0,ignoreAllowlist:!0,includeVllm:!0,preferredProvider:resolvePreferredProviderForAuthChoice(authChoice)});modelSelection.config&&(nextConfig=modelSelection.config),modelSelection.model&&(nextConfig=applyPrimaryModel(nextConfig,modelSelection.model))}let primaryModel=typeof nextConfig.agents?.defaults?.model?.primary==`string`?nextConfig.agents.defaults.model.primary.trim().toLowerCase():``;if((primaryModel===`builderforcellm`||primaryModel.startsWith(`builderforcellm/`))&&!(process.env.BUILDERFORCE_API_KEY?.trim()??readSharedEnvVar(`BUILDERFORCE_API_KEY`)?.trim())){await prompter.note([`BuilderForceAgentsLLM requires Builderforce registration.`,`Complete login/registration now so /model builderforcellm/auto works immediately.`,`You can skip this and connect later — use /setup or: builderforce init --reconnect`].join(`
|
|
6
6
|
`),`BuilderForceAgentsLLM`);let{promptBuilderforceOnboarding}=await import(`./builderforce-onboarding-DY2dUTEB.js`);await promptBuilderforceOnboarding({projectRoot:workspaceDir,defaultInstanceName:path.basename(workspaceDir)||`builderforce`,forcePrompt:!0}),(process.env.BUILDERFORCE_API_KEY?.trim()??readSharedEnvVar(`BUILDERFORCE_API_KEY`)?.trim())||await prompter.note([`BuilderForceAgentsLLM won't work until you connect to Builderforce.`,`You can still use BuilderForceAgents — switch models with /model or connect later.`].join(`
|
|
7
|
-
`),`Skipped`)}await warnIfModelConfigLooksOff(nextConfig,prompter)}let alreadyHasLocalBrain=nextConfig.models?.providers?.[`builderforcellm-local`]?.api===`transformers`;if(!opts.skipProviders&&(configHandlingAction!==`keep`||!alreadyHasLocalBrain))if(await prompter.select({message:`Enable local brain (amygdala + hippocampus)?`,options:[{value:`smart`,label:`Enable dual local brain`,hint:`Downloads amygdala (SmolLM2) + hippocampus (Qwen3-0.6B). ~3.5 GB disk.`},{value:`skip`,label:`Skip — use my cortex (configured LLM) only`,hint:`No extra download. Uses whatever model you configured above.`}],initialValue:`skip`})===`smart`){nextConfig={...nextConfig,localBrain:{enabled:!0}};let{downloadAndWireLocalBrain}=await import(`./auth-choice.apply.transformers-
|
|
7
|
+
`),`Skipped`)}await warnIfModelConfigLooksOff(nextConfig,prompter)}let alreadyHasLocalBrain=nextConfig.models?.providers?.[`builderforcellm-local`]?.api===`transformers`;if(!opts.skipProviders&&(configHandlingAction!==`keep`||!alreadyHasLocalBrain))if(await prompter.select({message:`Enable local brain (amygdala + hippocampus)?`,options:[{value:`smart`,label:`Enable dual local brain`,hint:`Downloads amygdala (SmolLM2) + hippocampus (Qwen3-0.6B). ~3.5 GB disk.`},{value:`skip`,label:`Skip — use my cortex (configured LLM) only`,hint:`No extra download. Uses whatever model you configured above.`}],initialValue:`skip`})===`smart`){nextConfig={...nextConfig,localBrain:{enabled:!0}};let{downloadAndWireLocalBrain}=await import(`./auth-choice.apply.transformers-D9a8-sLS.js`);nextConfig={...(await downloadAndWireLocalBrain({config:nextConfig,prompter})).config}}else nextConfig={...nextConfig,localBrain:{enabled:!1}};let settings;if(keepExistingValues&&quickstartGateway.hasExisting)settings={port:quickstartGateway.port,bind:quickstartGateway.bind,customBindHost:quickstartGateway.bind===`custom`?quickstartGateway.customBindHost:void 0,authMode:quickstartGateway.authMode,gatewayToken:quickstartGateway.authMode===`token`?quickstartGateway.token:void 0,tailscaleMode:quickstartGateway.tailscaleMode,tailscaleResetOnExit:quickstartGateway.tailscaleResetOnExit},await prompter.note(`Keeping existing gateway settings.`,`Gateway`);else{let{configureGatewayForOnboarding}=await import(`./onboarding.gateway-config-BK933eQ1.js`),gateway=await configureGatewayForOnboarding({flow,baseConfig,nextConfig,localPort,quickstartGateway,prompter,runtime});nextConfig=gateway.nextConfig,settings=gateway.settings}let skipChannelsForKeep=keepExistingValues&&hasConfiguredChannels(nextConfig);if(opts.skipChannels??opts.skipProviders??skipChannelsForKeep)await prompter.note(`Skipping channel setup.`,`Channels`);else{let{listChannelPlugins}=await import(`./plugins-Dr1wmnAf.js`),{setupChannels}=await import(`./onboard-channels-CoJnsCfd.js`),quickstartAllowFromChannels=flow===`quickstart`?listChannelPlugins().filter(plugin=>plugin.meta.quickstartAllowFrom).map(plugin=>plugin.id):[];nextConfig=await setupChannels(nextConfig,runtime,prompter,{allowSignalInstall:!0,forceAllowFromChannels:quickstartAllowFromChannels,skipDmPolicyPrompt:flow===`quickstart`,skipConfirm:flow===`quickstart`,quickstartDefaults:flow===`quickstart`})}await writeConfigFile(nextConfig);let{logConfigUpdated}=await import(`./logging-DuPWVnGa.js`);logConfigUpdated(runtime),await onboardHelpers.ensureWorkspaceAndSessions(workspaceDir,runtime,{skipBootstrap:!!nextConfig.agents?.defaults?.skipBootstrap});let{isBuilderForceAgentsProject,initializeBuilderForceAgentsProject}=await import(`./project-context-CFmrZIoC.js`);if(await isBuilderForceAgentsProject(workspaceDir)||(await initializeBuilderForceAgentsProject(workspaceDir),runtime.log(`Initialised .builderforce/ project directory`)),opts.skipSkills)await prompter.note(`Skipping skills setup.`,`Skills`);else{let{setupSkills}=await import(`./onboard-skills-IBAp8YBr.js`);nextConfig=await setupSkills(nextConfig,workspaceDir,runtime,prompter)}let{setupInternalHooks}=await import(`./onboard-hooks-fO5eeDe_.js`);nextConfig=await setupInternalHooks(nextConfig,runtime,prompter),nextConfig=onboardHelpers.applyWizardMetadata(nextConfig,{command:`onboard`,mode}),await writeConfigFile(nextConfig);let{finalizeOnboardingWizard}=await import(`./onboarding.finalize-WsL-ijTc.js`),{launchedTui}=await finalizeOnboardingWizard({flow,opts,baseConfig,nextConfig,workspaceDir,settings,prompter,runtime})}export{runOnboardingWizard as t};
|
|
@@ -2,6 +2,6 @@ import{n as DEFAULT_GATEWAY_PORT,u as resolveGatewayPort}from"./paths-BHg-VHB4.j
|
|
|
2
2
|
`),`Security`),!await params.prompter.confirm({message:`I understand this is powerful and inherently risky. Continue?`,initialValue:!1})))throw new WizardCancelledError(`risk not accepted`)}function hasConfiguredModelOrAuth(config){let defaultsModel=config.agents?.defaults?.model,hasDefaultModel=typeof defaultsModel?.primary==`string`&&defaultsModel.primary.trim().length>0,hasModelCatalog=!!config.models&&Object.keys(config.models).length>0;return hasDefaultModel||hasModelCatalog}function hasConfiguredChannels(config){let channels=config.channels;return!channels||typeof channels!=`object`?!1:Object.values(channels).some(value=>value==null?!1:typeof value==`boolean`?value:typeof value==`string`?value.trim().length>0:typeof value==`number`?!0:Array.isArray(value)?value.length>0:typeof value==`object`?Object.keys(value).length>0:!1)}async function runOnboardingWizard(opts,runtime=defaultRuntime,prompter){let onboardHelpers=await import(`./onboard-helpers-DxyCrPuQ.js`);onboardHelpers.printWizardHeader(runtime),await prompter.intro(`BuilderForceAgents onboarding`),await requireRiskAcknowledgement({opts,prompter});let snapshot=await readConfigFileSnapshot(),baseConfig=snapshot.valid?snapshot.config:{},configHandlingAction=null;if(snapshot.exists&&!snapshot.valid){await prompter.note(onboardHelpers.summarizeExistingConfig(baseConfig),`Invalid config`),snapshot.issues.length>0&&await prompter.note([...snapshot.issues.map(iss=>`- ${iss.path}: ${iss.message}`),``,`Docs: https://docs.builderforce.ai/gateway/configuration`].join(`
|
|
3
3
|
`),`Config issues`),await prompter.outro(`Config invalid. Run \`${formatCliCommand(`builderforce doctor`)}\` to repair it, then re-run onboarding.`),runtime.exit(1);return}let quickstartHint=`Configure details later via ${formatCliCommand(`builderforce configure`)}.`,explicitFlowRaw=opts.flow?.trim(),normalizedExplicitFlow=explicitFlowRaw===`manual`?`advanced`:explicitFlowRaw;if(normalizedExplicitFlow&&normalizedExplicitFlow!==`quickstart`&&normalizedExplicitFlow!==`advanced`){runtime.error(`Invalid --flow (use quickstart, manual, or advanced).`),runtime.exit(1);return}let flow=(normalizedExplicitFlow===`quickstart`||normalizedExplicitFlow===`advanced`?normalizedExplicitFlow:void 0)??await prompter.select({message:`Onboarding mode`,options:[{value:`quickstart`,label:`QuickStart`,hint:quickstartHint},{value:`advanced`,label:`Manual`,hint:`Configure port, network, Tailscale, and auth options.`}],initialValue:`quickstart`});if(opts.mode===`remote`&&flow===`quickstart`&&(await prompter.note(`QuickStart only supports local gateways. Switching to Manual mode.`,`QuickStart`),flow=`advanced`),snapshot.exists){await prompter.note(onboardHelpers.summarizeExistingConfig(baseConfig),`Existing config detected`);let action=await prompter.select({message:`Config handling
|
|
4
4
|
(↑/↓ to select, Enter to confirm)`,options:[{value:`keep`,label:`Use existing values`},{value:`modify`,label:`Update values`},{value:`reset`,label:`Reset`}],initialValue:`keep`});if(configHandlingAction=action,action===`reset`){let workspaceDefault=baseConfig.agents?.defaults?.workspace??onboardHelpers.DEFAULT_WORKSPACE,resetScope=await prompter.select({message:`Reset scope`,options:[{value:`config`,label:`Config only`},{value:`config+creds+sessions`,label:`Config + creds + sessions`},{value:`full`,label:`Full reset (config + creds + sessions + workspace)`}]});await onboardHelpers.handleReset(resetScope,resolveUserPath(workspaceDefault),runtime),baseConfig={}}}let keepExistingValues=configHandlingAction===`keep`,quickstartGateway=(()=>{let hasExisting=typeof baseConfig.gateway?.port==`number`||baseConfig.gateway?.bind!==void 0||baseConfig.gateway?.auth?.mode!==void 0||baseConfig.gateway?.auth?.token!==void 0||baseConfig.gateway?.auth?.password!==void 0||baseConfig.gateway?.customBindHost!==void 0||baseConfig.gateway?.tailscale?.mode!==void 0,bindRaw=baseConfig.gateway?.bind,bind=bindRaw===`loopback`||bindRaw===`lan`||bindRaw===`auto`||bindRaw===`custom`||bindRaw===`tailnet`?bindRaw:`loopback`,authMode=`token`;baseConfig.gateway?.auth?.mode===`token`||baseConfig.gateway?.auth?.mode===`password`?authMode=baseConfig.gateway.auth.mode:baseConfig.gateway?.auth?.token?authMode=`token`:baseConfig.gateway?.auth?.password&&(authMode=`password`);let tailscaleRaw=baseConfig.gateway?.tailscale?.mode,tailscaleMode=tailscaleRaw===`off`||tailscaleRaw===`serve`||tailscaleRaw===`funnel`?tailscaleRaw:`off`;return{hasExisting,port:resolveGatewayPort(baseConfig),bind,authMode,tailscaleMode,token:baseConfig.gateway?.auth?.token,password:baseConfig.gateway?.auth?.password,customBindHost:baseConfig.gateway?.customBindHost,tailscaleResetOnExit:baseConfig.gateway?.tailscale?.resetOnExit??!1}})();if(flow===`quickstart`){let formatBind=value=>value===`loopback`?`Loopback (127.0.0.1)`:value===`lan`?`LAN`:value===`custom`?`Custom IP`:value===`tailnet`?`Tailnet (Tailscale IP)`:`Auto`,formatAuth=value=>value===`token`?`Token (default)`:`Password`,formatTailscale=value=>value===`off`?`Off`:value===`serve`?`Serve`:`Funnel`,quickstartLines=quickstartGateway.hasExisting?[`Keeping your current gateway settings:`,`Gateway port: ${quickstartGateway.port}`,`Gateway bind: ${formatBind(quickstartGateway.bind)}`,...quickstartGateway.bind===`custom`&&quickstartGateway.customBindHost?[`Gateway custom IP: ${quickstartGateway.customBindHost}`]:[],`Gateway auth: ${formatAuth(quickstartGateway.authMode)}`,`Tailscale exposure: ${formatTailscale(quickstartGateway.tailscaleMode)}`,`Direct to chat channels.`]:[`Gateway port: ${DEFAULT_GATEWAY_PORT}`,`Gateway bind: Loopback (127.0.0.1)`,`Gateway auth: Token (default)`,`Tailscale exposure: Off`,`Direct to chat channels.`];await prompter.note(quickstartLines.join(`
|
|
5
|
-
`),`QuickStart`)}let localPort=resolveGatewayPort(baseConfig),localUrl=`ws://127.0.0.1:${localPort}`,localProbe=await onboardHelpers.probeGatewayReachable({url:localUrl,token:baseConfig.gateway?.auth?.token??process.env.BUILDERFORCE_AGENTS_GATEWAY_TOKEN,password:baseConfig.gateway?.auth?.password??process.env.BUILDERFORCE_AGENTS_GATEWAY_PASSWORD}),remoteUrl=baseConfig.gateway?.remote?.url?.trim()??``,remoteProbe=remoteUrl?await onboardHelpers.probeGatewayReachable({url:remoteUrl,token:baseConfig.gateway?.remote?.token}):null,mode=opts.mode??(flow===`quickstart`?`local`:await prompter.select({message:`What do you want to set up?`,options:[{value:`local`,label:`Local gateway (this machine)`,hint:localProbe.ok?`Gateway reachable (${localUrl})`:`No gateway detected (${localUrl})`},{value:`remote`,label:`Remote gateway (info-only)`,hint:remoteUrl?remoteProbe?.ok?`Gateway reachable (${remoteUrl})`:`Configured but unreachable (${remoteUrl})`:`No remote URL configured yet`}]}));if(mode===`remote`){let{promptRemoteGatewayConfig}=await import(`./onboard-remote-0WfZjDje.js`),{logConfigUpdated}=await import(`./logging-DSIJukIo.js`),nextConfig=await promptRemoteGatewayConfig(baseConfig,prompter);nextConfig=onboardHelpers.applyWizardMetadata(nextConfig,{command:`onboard`,mode}),await writeConfigFile(nextConfig),logConfigUpdated(runtime),await prompter.outro(`Remote gateway configured.`);return}let existingWorkspace=baseConfig.agents?.defaults?.workspace??onboardHelpers.DEFAULT_WORKSPACE,workspaceDir=resolveUserPath((opts.workspace??(flow===`quickstart`||keepExistingValues?existingWorkspace:await prompter.text({message:`Workspace directory`,initialValue:existingWorkspace}))).trim()||onboardHelpers.DEFAULT_WORKSPACE),{applyOnboardingLocalWorkspaceConfig}=await import(`./onboard-config-C-P0yFzv.js`),nextConfig=applyOnboardingLocalWorkspaceConfig(baseConfig,workspaceDir),{promptAuthChoiceGrouped}=await import(`./auth-choice-prompt-kN1uI85H.js`),{promptCustomApiConfig}=await import(`./onboard-custom-BrODsF6U.js`),{applyAuthChoice,resolvePreferredProviderForAuthChoice,warnIfModelConfigLooksOff}=await import(`./auth-choice-
|
|
5
|
+
`),`QuickStart`)}let localPort=resolveGatewayPort(baseConfig),localUrl=`ws://127.0.0.1:${localPort}`,localProbe=await onboardHelpers.probeGatewayReachable({url:localUrl,token:baseConfig.gateway?.auth?.token??process.env.BUILDERFORCE_AGENTS_GATEWAY_TOKEN,password:baseConfig.gateway?.auth?.password??process.env.BUILDERFORCE_AGENTS_GATEWAY_PASSWORD}),remoteUrl=baseConfig.gateway?.remote?.url?.trim()??``,remoteProbe=remoteUrl?await onboardHelpers.probeGatewayReachable({url:remoteUrl,token:baseConfig.gateway?.remote?.token}):null,mode=opts.mode??(flow===`quickstart`?`local`:await prompter.select({message:`What do you want to set up?`,options:[{value:`local`,label:`Local gateway (this machine)`,hint:localProbe.ok?`Gateway reachable (${localUrl})`:`No gateway detected (${localUrl})`},{value:`remote`,label:`Remote gateway (info-only)`,hint:remoteUrl?remoteProbe?.ok?`Gateway reachable (${remoteUrl})`:`Configured but unreachable (${remoteUrl})`:`No remote URL configured yet`}]}));if(mode===`remote`){let{promptRemoteGatewayConfig}=await import(`./onboard-remote-0WfZjDje.js`),{logConfigUpdated}=await import(`./logging-DSIJukIo.js`),nextConfig=await promptRemoteGatewayConfig(baseConfig,prompter);nextConfig=onboardHelpers.applyWizardMetadata(nextConfig,{command:`onboard`,mode}),await writeConfigFile(nextConfig),logConfigUpdated(runtime),await prompter.outro(`Remote gateway configured.`);return}let existingWorkspace=baseConfig.agents?.defaults?.workspace??onboardHelpers.DEFAULT_WORKSPACE,workspaceDir=resolveUserPath((opts.workspace??(flow===`quickstart`||keepExistingValues?existingWorkspace:await prompter.text({message:`Workspace directory`,initialValue:existingWorkspace}))).trim()||onboardHelpers.DEFAULT_WORKSPACE),{applyOnboardingLocalWorkspaceConfig}=await import(`./onboard-config-C-P0yFzv.js`),nextConfig=applyOnboardingLocalWorkspaceConfig(baseConfig,workspaceDir),{promptAuthChoiceGrouped}=await import(`./auth-choice-prompt-kN1uI85H.js`),{promptCustomApiConfig}=await import(`./onboard-custom-BrODsF6U.js`),{applyAuthChoice,resolvePreferredProviderForAuthChoice,warnIfModelConfigLooksOff}=await import(`./auth-choice-CzhKgWJy.js`),{applyPrimaryModel,promptDefaultModel}=await import(`./model-picker-DFvwh3TL.js`);if(keepExistingValues&&hasConfiguredModelOrAuth(nextConfig))await prompter.note(`Keeping existing model/auth configuration.`,`Model/auth provider`);else{let authStore=await ensureAuthProfileStore(void 0,{allowKeychainPrompt:!1}),authChoiceFromPrompt=opts.authChoice===void 0,authChoice=opts.authChoice??await promptAuthChoiceGrouped({prompter,store:authStore,includeSkip:!0});if(nextConfig=authChoice===`custom-api-key`?(await promptCustomApiConfig({prompter,runtime,config:nextConfig})).config:(await applyAuthChoice({authChoice,config:nextConfig,prompter,runtime,setDefaultModel:!0,opts:{tokenProvider:opts.tokenProvider,token:opts.authChoice===`apiKey`&&opts.token?opts.token:void 0}})).config,authChoiceFromPrompt&&authChoice!==`custom-api-key`&&authChoice!==`local`&&authChoice!==`builderforcellm`){let modelSelection=await promptDefaultModel({config:nextConfig,prompter,allowKeep:!0,ignoreAllowlist:!0,includeVllm:!0,preferredProvider:resolvePreferredProviderForAuthChoice(authChoice)});modelSelection.config&&(nextConfig=modelSelection.config),modelSelection.model&&(nextConfig=applyPrimaryModel(nextConfig,modelSelection.model))}let primaryModel=typeof nextConfig.agents?.defaults?.model?.primary==`string`?nextConfig.agents.defaults.model.primary.trim().toLowerCase():``;if((primaryModel===`builderforcellm`||primaryModel.startsWith(`builderforcellm/`))&&!(process.env.BUILDERFORCE_API_KEY?.trim()??readSharedEnvVar(`BUILDERFORCE_API_KEY`)?.trim())){await prompter.note([`BuilderForceAgentsLLM requires Builderforce registration.`,`Complete login/registration now so /model builderforcellm/auto works immediately.`,`You can skip this and connect later — use /setup or: builderforce init --reconnect`].join(`
|
|
6
6
|
`),`BuilderForceAgentsLLM`);let{promptBuilderforceOnboarding}=await import(`./builderforce-onboarding-DWAGLl12.js`);await promptBuilderforceOnboarding({projectRoot:workspaceDir,defaultInstanceName:path.basename(workspaceDir)||`builderforce`,forcePrompt:!0}),(process.env.BUILDERFORCE_API_KEY?.trim()??readSharedEnvVar(`BUILDERFORCE_API_KEY`)?.trim())||await prompter.note([`BuilderForceAgentsLLM won't work until you connect to Builderforce.`,`You can still use BuilderForceAgents — switch models with /model or connect later.`].join(`
|
|
7
|
-
`),`Skipped`)}await warnIfModelConfigLooksOff(nextConfig,prompter)}let alreadyHasLocalBrain=nextConfig.models?.providers?.[`builderforcellm-local`]?.api===`transformers`;if(!opts.skipProviders&&(configHandlingAction!==`keep`||!alreadyHasLocalBrain))if(await prompter.select({message:`Enable local brain (amygdala + hippocampus)?`,options:[{value:`smart`,label:`Enable dual local brain`,hint:`Downloads amygdala (SmolLM2) + hippocampus (Qwen3-0.6B). ~3.5 GB disk.`},{value:`skip`,label:`Skip — use my cortex (configured LLM) only`,hint:`No extra download. Uses whatever model you configured above.`}],initialValue:`skip`})===`smart`){nextConfig={...nextConfig,localBrain:{enabled:!0}};let{downloadAndWireLocalBrain}=await import(`./auth-choice.apply.transformers-
|
|
7
|
+
`),`Skipped`)}await warnIfModelConfigLooksOff(nextConfig,prompter)}let alreadyHasLocalBrain=nextConfig.models?.providers?.[`builderforcellm-local`]?.api===`transformers`;if(!opts.skipProviders&&(configHandlingAction!==`keep`||!alreadyHasLocalBrain))if(await prompter.select({message:`Enable local brain (amygdala + hippocampus)?`,options:[{value:`smart`,label:`Enable dual local brain`,hint:`Downloads amygdala (SmolLM2) + hippocampus (Qwen3-0.6B). ~3.5 GB disk.`},{value:`skip`,label:`Skip — use my cortex (configured LLM) only`,hint:`No extra download. Uses whatever model you configured above.`}],initialValue:`skip`})===`smart`){nextConfig={...nextConfig,localBrain:{enabled:!0}};let{downloadAndWireLocalBrain}=await import(`./auth-choice.apply.transformers-9v6HFzNs.js`);nextConfig={...(await downloadAndWireLocalBrain({config:nextConfig,prompter})).config}}else nextConfig={...nextConfig,localBrain:{enabled:!1}};let settings;if(keepExistingValues&&quickstartGateway.hasExisting)settings={port:quickstartGateway.port,bind:quickstartGateway.bind,customBindHost:quickstartGateway.bind===`custom`?quickstartGateway.customBindHost:void 0,authMode:quickstartGateway.authMode,gatewayToken:quickstartGateway.authMode===`token`?quickstartGateway.token:void 0,tailscaleMode:quickstartGateway.tailscaleMode,tailscaleResetOnExit:quickstartGateway.tailscaleResetOnExit},await prompter.note(`Keeping existing gateway settings.`,`Gateway`);else{let{configureGatewayForOnboarding}=await import(`./onboarding.gateway-config-Fo7yijia.js`),gateway=await configureGatewayForOnboarding({flow,baseConfig,nextConfig,localPort,quickstartGateway,prompter,runtime});nextConfig=gateway.nextConfig,settings=gateway.settings}let skipChannelsForKeep=keepExistingValues&&hasConfiguredChannels(nextConfig);if(opts.skipChannels??opts.skipProviders??skipChannelsForKeep)await prompter.note(`Skipping channel setup.`,`Channels`);else{let{listChannelPlugins}=await import(`./plugins-JhEblShx.js`),{setupChannels}=await import(`./onboard-channels-BbpyejX4.js`),quickstartAllowFromChannels=flow===`quickstart`?listChannelPlugins().filter(plugin=>plugin.meta.quickstartAllowFrom).map(plugin=>plugin.id):[];nextConfig=await setupChannels(nextConfig,runtime,prompter,{allowSignalInstall:!0,forceAllowFromChannels:quickstartAllowFromChannels,skipDmPolicyPrompt:flow===`quickstart`,skipConfirm:flow===`quickstart`,quickstartDefaults:flow===`quickstart`})}await writeConfigFile(nextConfig);let{logConfigUpdated}=await import(`./logging-DSIJukIo.js`);logConfigUpdated(runtime),await onboardHelpers.ensureWorkspaceAndSessions(workspaceDir,runtime,{skipBootstrap:!!nextConfig.agents?.defaults?.skipBootstrap});let{isBuilderForceAgentsProject,initializeBuilderForceAgentsProject}=await import(`./project-context-CIdYDQTb.js`);if(await isBuilderForceAgentsProject(workspaceDir)||(await initializeBuilderForceAgentsProject(workspaceDir),runtime.log(`Initialised .builderforce/ project directory`)),opts.skipSkills)await prompter.note(`Skipping skills setup.`,`Skills`);else{let{setupSkills}=await import(`./onboard-skills-CdRb49JU.js`);nextConfig=await setupSkills(nextConfig,workspaceDir,runtime,prompter)}let{setupInternalHooks}=await import(`./onboard-hooks-BaOSgxs9.js`);nextConfig=await setupInternalHooks(nextConfig,runtime,prompter),nextConfig=onboardHelpers.applyWizardMetadata(nextConfig,{command:`onboard`,mode}),await writeConfigFile(nextConfig);let{finalizeOnboardingWizard}=await import(`./onboarding.finalize-B0AjF6qZ.js`),{launchedTui}=await finalizeOnboardingWizard({flow,opts,baseConfig,nextConfig,workspaceDir,settings,prompter,runtime})}export{runOnboardingWizard as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import{W as getResolvedLoggerSettings,h as pathExists,y as resolveUserPath}from"./utils-BP60e80M.js";import{t as restoreTerminalState}from"./restore-BdB4wlsZ.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.js";import{r as resolveCliName,t as formatCliCommand}from"./command-format-DTMaGKs7.js";import"./src-DvWaTze9.js";import{i as logWarn}from"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import{A as resolveWorkspaceFilePath,h as DEFAULT_BOOTSTRAP_FILENAME}from"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-Cj5yC7B4.js";import"./sessions-CmJXMlLP.js";import"./project-context-store-BNXYrLJz.js";import"./tokens-CFKkpUIu.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./send-CGcNbbV7.js";import"./send-DPRTlcZh.js";import"./with-timeout-CBXVw0An.js";import"./deliver--eLCRJc2.js";import"./accounts-Cx82nj4E.js";import"./send-DfHAMPcD.js";import"./image-ops-CotJhwRR.js";import"./redact-CgO7wehS.js";import"./errors-tAt19c1E.js";import"./embedded-helpers-BZGiFZlP.js";import"./sandbox-C-Owvt1-.js";import"./chrome-BfwLDcFc.js";import"./tailscale-DV-yOmYe.js";import"./auth-ChecwOXS.js";import"./server-context-BjYYSEVE.js";import"./routes-Dnfsevhw.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-CiwWAhp5.js";import"./manager-Bjb9ptCz.js";import"./gemini-auth-KBXMhaRQ.js";import"./retry-B151Hej5.js";import"./common-BfwMxpLu.js";import"./runner-DwPaM8kz.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-tquUDu_7.js";import"./session-utils-D2_j4c6U.js";import"./coding-tools.policy-BwdtwuXY.js";import"./pairing-store-BCsvhT6-.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-DsI3qJRy.js";import"./send-BOSlm5fG.js";import"./outbound-attachment-BaTYE4qp.js";import"./delivery-queue-Cp3t4Upn.js";import"./project-context-BdK18hVI.js";import"./control-service-Ca0CBlhO.js";import"./stagger-CRe77dWL.js";import"./channel-selection-BLwXhb9t.js";import"./send-BOBan2eG.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-DATdLu15.js";import{b as waitForGatewayReachable,d as openUrl,g as resolveControlUiLinks,i as detectBrowserOpenSupport,o as formatControlUiSshHint,p as probeGatewayReachable}from"./onboard-helpers-D2vxAtv8.js";import"./prompt-style-BMWmaqSC.js";import"./pairing-labels-BUXpRejW.js";import"./active-listener-Di9e1YAD.js";import"./mamba-state-engine-DJt_RpLC.js";import"./transformers-stream-Buj40qHl.js";import"./note-DgDXuE0F.js";import"./helpers-DPPVplyk.js";import"./register.subclis-D_fHb-Aj.js";import"./command-registry-Cjom5ab0.js";import"./program-context-Wpc-6CdI.js";import{n as installCompletion}from"./completion-cli-PTFpWp8Q.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,n as GATEWAY_DAEMON_RUNTIME_OPTIONS,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-CnNjpvfd.js";import"./runtime-guard-Bi8k55v9.js";import{r as isSystemdUserServiceAvailable}from"./systemd-DdVd5Yet.js";import{t as resolveGatewayService}from"./service-EKJG69M3.js";import{r as healthCommand}from"./health-Cf1YoTRN.js";import{t as ensureControlUiAssetsBuilt}from"./control-ui-assets-BxgWcomx.js";import"./builderforce-directory-sync-gx_ESkap.js";import"./shared-DUsuqnhk.js";import"./model-picker-Do5aHFkC.js";import"./auth-choice.apply.transformers-CEVxl3ul.js";import{t as formatHealthCheckFailure}from"./health-format-D4MaIjaG.js";import{r as ensureCompletionCacheExists,t as checkShellCompletionStatus}from"./doctor-completion-ChhIrLd3.js";import{t as runTui}from"./tui-BqHLI73U.js";import"./tui-stream-assembler-DW908fGx.js";import os from"node:os";import path from"node:path";import fs from"node:fs/promises";async function resolveProfileHint(shell){let home=process.env.HOME||os.homedir();return shell===`zsh`?`~/.zshrc`:shell===`bash`?await pathExists(path.join(home,`.bashrc`))?`~/.bashrc`:`~/.bash_profile`:shell===`fish`?`~/.config/fish/config.fish`:`$PROFILE`}function formatReloadHint(shell,profileHint){return shell===`powershell`?`Restart your shell (or reload your PowerShell profile).`:`Restart your shell or run: source ${profileHint}`}async function setupOnboardingShellCompletion(params){let deps={resolveCliName,checkShellCompletionStatus,ensureCompletionCacheExists,installCompletion,...params.deps},cliName=deps.resolveCliName(),completionStatus=await deps.checkShellCompletionStatus(cliName);if(completionStatus.usesSlowPattern){await deps.ensureCompletionCacheExists(cliName)&&await deps.installCompletion(completionStatus.shell,!0,cliName);return}if(completionStatus.profileInstalled&&!completionStatus.cacheExists){await deps.ensureCompletionCacheExists(cliName);return}if(!completionStatus.profileInstalled){if(!(params.flow===`quickstart`||await params.prompter.confirm({message:`Enable ${completionStatus.shell} shell completion for ${cliName}?`,initialValue:!0})))return;if(!await deps.ensureCompletionCacheExists(cliName)){await params.prompter.note(`Failed to generate completion cache. Run \`${cliName} completion --install\` later.`,`Shell completion`);return}await deps.installCompletion(completionStatus.shell,!0,cliName);let profileHint=await resolveProfileHint(completionStatus.shell);await params.prompter.note(`Shell completion installed. ${formatReloadHint(completionStatus.shell,profileHint)}`,`Shell completion`)}}async function finalizeOnboardingWizard(options){let{flow,opts,baseConfig,nextConfig,settings,prompter,runtime}=options,withWizardProgress=async(label,options,work)=>{let progress=prompter.progress(label);try{return await work(progress)}finally{progress.stop(options.doneMessage)}},systemdAvailable=process.platform===`linux`?await isSystemdUserServiceAvailable():!0;if(process.platform===`linux`&&!systemdAvailable&&await prompter.note(`Systemd user services are unavailable. Skipping lingering checks and service install.`,`Systemd`),process.platform===`linux`&&systemdAvailable){let{ensureSystemdUserLingerInteractive}=await import(`./systemd-linger-Dgxo9kqA.js`);await ensureSystemdUserLingerInteractive({runtime,prompter:{confirm:prompter.confirm,note:prompter.note},reason:`Linux installs use a systemd user service by default. Without lingering, systemd stops the user session on logout/idle and kills the Gateway.`,requireConfirm:!1})}let explicitInstallDaemon=typeof opts.installDaemon==`boolean`?opts.installDaemon:void 0,installDaemon;if(installDaemon=explicitInstallDaemon===void 0?process.platform===`linux`&&!systemdAvailable?!1:flow===`quickstart`?!0:await prompter.confirm({message:`Install Gateway service (recommended)`,initialValue:!0}):explicitInstallDaemon,process.platform===`linux`&&!systemdAvailable&&installDaemon&&(await prompter.note("Systemd user services are unavailable; skipping service install. Use your container supervisor or `docker compose up -d`.",`Gateway service`),installDaemon=!1),installDaemon){let daemonRuntime=flow===`quickstart`?DEFAULT_GATEWAY_DAEMON_RUNTIME:await prompter.select({message:`Gateway service runtime`,options:GATEWAY_DAEMON_RUNTIME_OPTIONS,initialValue:opts.daemonRuntime??DEFAULT_GATEWAY_DAEMON_RUNTIME});flow===`quickstart`&&await prompter.note(`QuickStart uses Node for the Gateway service (stable + supported).`,`Gateway service runtime`);let service=resolveGatewayService(),loaded=await service.isLoaded({env:process.env});if(loaded){let action=await prompter.select({message:`Gateway service already installed`,options:[{value:`restart`,label:`Restart`},{value:`reinstall`,label:`Reinstall`},{value:`skip`,label:`Skip`}]});action===`restart`?await withWizardProgress(`Gateway service`,{doneMessage:`Gateway service restarted.`},async progress=>{progress.update(`Restarting Gateway service…`),await service.restart({env:process.env,stdout:process.stdout})}):action===`reinstall`&&await withWizardProgress(`Gateway service`,{doneMessage:`Gateway service uninstalled.`},async progress=>{progress.update(`Uninstalling Gateway service…`),await service.uninstall({env:process.env,stdout:process.stdout})})}if(!loaded||loaded&&!await service.isLoaded({env:process.env})){let progress=prompter.progress(`Gateway service`),installError=null;try{progress.update(`Preparing Gateway service…`);let{programArguments,workingDirectory,environment}=await buildGatewayInstallPlan({env:process.env,port:settings.port,token:settings.gatewayToken,runtime:daemonRuntime,warn:(message,title)=>prompter.note(message,title),config:nextConfig});progress.update(`Installing Gateway service…`),await service.install({env:process.env,stdout:process.stdout,programArguments,workingDirectory,environment})}catch(err){installError=err instanceof Error?err.message:String(err)}finally{progress.stop(installError?`Gateway service install failed.`:`Gateway service installed.`)}installError&&(await prompter.note(`Gateway service install failed: ${installError}`,`Gateway`),await prompter.note(gatewayInstallErrorHint(),`Gateway`))}}if(!opts.skipHealth){await waitForGatewayReachable({url:resolveControlUiLinks({bind:nextConfig.gateway?.bind??`loopback`,port:settings.port,customBindHost:nextConfig.gateway?.customBindHost,basePath:void 0}).wsUrl,token:settings.gatewayToken,deadlineMs:15e3});try{await healthCommand({json:!1,timeoutMs:1e4},runtime)}catch(err){let msg=formatHealthCheckFailure(err);runtime.error(msg),logWarn(`[onboarding] health check failed: ${String(err)}`);let logFile=getResolvedLoggerSettings().file;await prompter.note([`Logs:`,logFile,`View: ${formatCliCommand(`builderforce logs --follow`)}`,``,`Docs:`,`https://docs.builderforce.ai/gateway/health`,`https://docs.builderforce.ai/gateway/troubleshooting`].join(`
|
|
1
|
+
import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import{W as getResolvedLoggerSettings,h as pathExists,y as resolveUserPath}from"./utils-BP60e80M.js";import{t as restoreTerminalState}from"./restore-BdB4wlsZ.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.js";import{r as resolveCliName,t as formatCliCommand}from"./command-format-DTMaGKs7.js";import"./src-DvWaTze9.js";import{i as logWarn}from"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import{A as resolveWorkspaceFilePath,h as DEFAULT_BOOTSTRAP_FILENAME}from"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-m_x-JRkR.js";import"./sessions-CmJXMlLP.js";import"./project-context-store-BNXYrLJz.js";import"./tokens-CFKkpUIu.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./send-CGcNbbV7.js";import"./send-DPRTlcZh.js";import"./with-timeout-CBXVw0An.js";import"./deliver--eLCRJc2.js";import"./accounts-Cx82nj4E.js";import"./send-DfHAMPcD.js";import"./image-ops-CotJhwRR.js";import"./redact-CgO7wehS.js";import"./errors-tAt19c1E.js";import"./embedded-helpers-BZGiFZlP.js";import"./sandbox-C-Owvt1-.js";import"./chrome-BfwLDcFc.js";import"./tailscale-DV-yOmYe.js";import"./auth-ChecwOXS.js";import"./server-context-BjYYSEVE.js";import"./routes-Dnfsevhw.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-CiwWAhp5.js";import"./manager-Bjb9ptCz.js";import"./gemini-auth-KBXMhaRQ.js";import"./retry-B151Hej5.js";import"./common-BfwMxpLu.js";import"./runner-DwPaM8kz.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-tquUDu_7.js";import"./session-utils-D2_j4c6U.js";import"./coding-tools.policy-BwdtwuXY.js";import"./pairing-store-BCsvhT6-.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-DsI3qJRy.js";import"./send-BOSlm5fG.js";import"./outbound-attachment-BaTYE4qp.js";import"./delivery-queue-Cp3t4Upn.js";import"./project-context-BdK18hVI.js";import"./control-service-Ca0CBlhO.js";import"./stagger-CRe77dWL.js";import"./channel-selection-BLwXhb9t.js";import"./send-BOBan2eG.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-DATdLu15.js";import{b as waitForGatewayReachable,d as openUrl,g as resolveControlUiLinks,i as detectBrowserOpenSupport,o as formatControlUiSshHint,p as probeGatewayReachable}from"./onboard-helpers-D2vxAtv8.js";import"./prompt-style-BMWmaqSC.js";import"./pairing-labels-BUXpRejW.js";import"./active-listener-Di9e1YAD.js";import"./mamba-state-engine-DJt_RpLC.js";import"./transformers-stream-Buj40qHl.js";import"./note-DgDXuE0F.js";import"./helpers-DPPVplyk.js";import"./register.subclis-AFsfDByV.js";import"./command-registry-BqhtXJa7.js";import"./program-context-Wpc-6CdI.js";import{n as installCompletion}from"./completion-cli-BFR0u1Uh.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,n as GATEWAY_DAEMON_RUNTIME_OPTIONS,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-CnNjpvfd.js";import"./runtime-guard-Bi8k55v9.js";import{r as isSystemdUserServiceAvailable}from"./systemd-DdVd5Yet.js";import{t as resolveGatewayService}from"./service-EKJG69M3.js";import{r as healthCommand}from"./health-CEz2-7et.js";import{t as ensureControlUiAssetsBuilt}from"./control-ui-assets-BxgWcomx.js";import"./builderforce-directory-sync-gx_ESkap.js";import"./shared-DUsuqnhk.js";import"./model-picker-Do5aHFkC.js";import"./auth-choice.apply.transformers-Be8599JD.js";import{t as formatHealthCheckFailure}from"./health-format-D4MaIjaG.js";import{r as ensureCompletionCacheExists,t as checkShellCompletionStatus}from"./doctor-completion-CkjrUmbI.js";import{t as runTui}from"./tui-LemSel3H.js";import"./tui-stream-assembler-DW908fGx.js";import os from"node:os";import path from"node:path";import fs from"node:fs/promises";async function resolveProfileHint(shell){let home=process.env.HOME||os.homedir();return shell===`zsh`?`~/.zshrc`:shell===`bash`?await pathExists(path.join(home,`.bashrc`))?`~/.bashrc`:`~/.bash_profile`:shell===`fish`?`~/.config/fish/config.fish`:`$PROFILE`}function formatReloadHint(shell,profileHint){return shell===`powershell`?`Restart your shell (or reload your PowerShell profile).`:`Restart your shell or run: source ${profileHint}`}async function setupOnboardingShellCompletion(params){let deps={resolveCliName,checkShellCompletionStatus,ensureCompletionCacheExists,installCompletion,...params.deps},cliName=deps.resolveCliName(),completionStatus=await deps.checkShellCompletionStatus(cliName);if(completionStatus.usesSlowPattern){await deps.ensureCompletionCacheExists(cliName)&&await deps.installCompletion(completionStatus.shell,!0,cliName);return}if(completionStatus.profileInstalled&&!completionStatus.cacheExists){await deps.ensureCompletionCacheExists(cliName);return}if(!completionStatus.profileInstalled){if(!(params.flow===`quickstart`||await params.prompter.confirm({message:`Enable ${completionStatus.shell} shell completion for ${cliName}?`,initialValue:!0})))return;if(!await deps.ensureCompletionCacheExists(cliName)){await params.prompter.note(`Failed to generate completion cache. Run \`${cliName} completion --install\` later.`,`Shell completion`);return}await deps.installCompletion(completionStatus.shell,!0,cliName);let profileHint=await resolveProfileHint(completionStatus.shell);await params.prompter.note(`Shell completion installed. ${formatReloadHint(completionStatus.shell,profileHint)}`,`Shell completion`)}}async function finalizeOnboardingWizard(options){let{flow,opts,baseConfig,nextConfig,settings,prompter,runtime}=options,withWizardProgress=async(label,options,work)=>{let progress=prompter.progress(label);try{return await work(progress)}finally{progress.stop(options.doneMessage)}},systemdAvailable=process.platform===`linux`?await isSystemdUserServiceAvailable():!0;if(process.platform===`linux`&&!systemdAvailable&&await prompter.note(`Systemd user services are unavailable. Skipping lingering checks and service install.`,`Systemd`),process.platform===`linux`&&systemdAvailable){let{ensureSystemdUserLingerInteractive}=await import(`./systemd-linger-Dgxo9kqA.js`);await ensureSystemdUserLingerInteractive({runtime,prompter:{confirm:prompter.confirm,note:prompter.note},reason:`Linux installs use a systemd user service by default. Without lingering, systemd stops the user session on logout/idle and kills the Gateway.`,requireConfirm:!1})}let explicitInstallDaemon=typeof opts.installDaemon==`boolean`?opts.installDaemon:void 0,installDaemon;if(installDaemon=explicitInstallDaemon===void 0?process.platform===`linux`&&!systemdAvailable?!1:flow===`quickstart`?!0:await prompter.confirm({message:`Install Gateway service (recommended)`,initialValue:!0}):explicitInstallDaemon,process.platform===`linux`&&!systemdAvailable&&installDaemon&&(await prompter.note("Systemd user services are unavailable; skipping service install. Use your container supervisor or `docker compose up -d`.",`Gateway service`),installDaemon=!1),installDaemon){let daemonRuntime=flow===`quickstart`?DEFAULT_GATEWAY_DAEMON_RUNTIME:await prompter.select({message:`Gateway service runtime`,options:GATEWAY_DAEMON_RUNTIME_OPTIONS,initialValue:opts.daemonRuntime??DEFAULT_GATEWAY_DAEMON_RUNTIME});flow===`quickstart`&&await prompter.note(`QuickStart uses Node for the Gateway service (stable + supported).`,`Gateway service runtime`);let service=resolveGatewayService(),loaded=await service.isLoaded({env:process.env});if(loaded){let action=await prompter.select({message:`Gateway service already installed`,options:[{value:`restart`,label:`Restart`},{value:`reinstall`,label:`Reinstall`},{value:`skip`,label:`Skip`}]});action===`restart`?await withWizardProgress(`Gateway service`,{doneMessage:`Gateway service restarted.`},async progress=>{progress.update(`Restarting Gateway service…`),await service.restart({env:process.env,stdout:process.stdout})}):action===`reinstall`&&await withWizardProgress(`Gateway service`,{doneMessage:`Gateway service uninstalled.`},async progress=>{progress.update(`Uninstalling Gateway service…`),await service.uninstall({env:process.env,stdout:process.stdout})})}if(!loaded||loaded&&!await service.isLoaded({env:process.env})){let progress=prompter.progress(`Gateway service`),installError=null;try{progress.update(`Preparing Gateway service…`);let{programArguments,workingDirectory,environment}=await buildGatewayInstallPlan({env:process.env,port:settings.port,token:settings.gatewayToken,runtime:daemonRuntime,warn:(message,title)=>prompter.note(message,title),config:nextConfig});progress.update(`Installing Gateway service…`),await service.install({env:process.env,stdout:process.stdout,programArguments,workingDirectory,environment})}catch(err){installError=err instanceof Error?err.message:String(err)}finally{progress.stop(installError?`Gateway service install failed.`:`Gateway service installed.`)}installError&&(await prompter.note(`Gateway service install failed: ${installError}`,`Gateway`),await prompter.note(gatewayInstallErrorHint(),`Gateway`))}}if(!opts.skipHealth){await waitForGatewayReachable({url:resolveControlUiLinks({bind:nextConfig.gateway?.bind??`loopback`,port:settings.port,customBindHost:nextConfig.gateway?.customBindHost,basePath:void 0}).wsUrl,token:settings.gatewayToken,deadlineMs:15e3});try{await healthCommand({json:!1,timeoutMs:1e4},runtime)}catch(err){let msg=formatHealthCheckFailure(err);runtime.error(msg),logWarn(`[onboarding] health check failed: ${String(err)}`);let logFile=getResolvedLoggerSettings().file;await prompter.note([`Logs:`,logFile,`View: ${formatCliCommand(`builderforce logs --follow`)}`,``,`Docs:`,`https://docs.builderforce.ai/gateway/health`,`https://docs.builderforce.ai/gateway/troubleshooting`].join(`
|
|
2
2
|
`),`Health check help`)}}let controlUiEnabled=nextConfig.gateway?.controlUi?.enabled??baseConfig.gateway?.controlUi?.enabled??!0;if(!opts.skipUi&&controlUiEnabled){let controlUiAssets=await ensureControlUiAssetsBuilt(runtime);!controlUiAssets.ok&&controlUiAssets.message&&runtime.error(controlUiAssets.message)}await prompter.note([`Add nodes for extra features:`,`- macOS app (system + notifications)`,`- iOS app (camera/canvas)`,`- Android app (camera/canvas)`].join(`
|
|
3
3
|
`),`Optional apps`);let controlUiBasePath=nextConfig.gateway?.controlUi?.basePath??baseConfig.gateway?.controlUi?.basePath,links=resolveControlUiLinks({bind:settings.bind,port:settings.port,customBindHost:settings.customBindHost,basePath:controlUiBasePath}),authedUrl=settings.authMode===`token`&&settings.gatewayToken?`${links.httpUrl}#token=${encodeURIComponent(settings.gatewayToken)}`:links.httpUrl,gatewayProbe=await probeGatewayReachable({url:links.wsUrl,token:settings.authMode===`token`?settings.gatewayToken:void 0,password:settings.authMode===`password`?nextConfig.gateway?.auth?.password:``}),gatewayStatusLine=gatewayProbe.ok?`Gateway: reachable`:`Gateway: not detected${gatewayProbe.detail?` (${gatewayProbe.detail})`:``}`,bootstrapPath=resolveWorkspaceFilePath(resolveUserPath(options.workspaceDir),DEFAULT_BOOTSTRAP_FILENAME),hasBootstrap=await fs.access(bootstrapPath).then(()=>!0).catch(()=>!1);await prompter.note([`Web UI: ${links.httpUrl}`,settings.authMode===`token`&&settings.gatewayToken?`Web UI (with token): ${authedUrl}`:void 0,`Gateway WS: ${links.wsUrl}`,gatewayStatusLine,`Docs: https://docs.builderforce.ai/web/control-ui`].filter(Boolean).join(`
|
|
4
4
|
`),`Control UI`);let controlUiOpened=!1,controlUiOpenHint,hatchChoice=null,launchedTui=!1;!opts.skipUi&&gatewayProbe.ok?(hasBootstrap&&await prompter.note([`This is the defining action that makes your agent you.`,`Please take your time.`,`The more you tell it, the better the experience will be.`,`We will send: "Wake up, my friend!"`].join(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./paths-5FcIFMsj.js";import{G as getResolvedLoggerSettings,b as resolveUserPath,g as pathExists}from"./utils-DbaBVFaK.js";import"./embedded-helpers-2fP2Yq8h.js";import"./reply-D9wUWhMx.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import{t as restoreTerminalState}from"./restore-gPan2ZAn.js";import{i as logWarn}from"./logger-Bch0bx9c.js";import"./exec-DdcIjeyn.js";import{A as resolveWorkspaceFilePath,h as DEFAULT_BOOTSTRAP_FILENAME}from"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import"./model-selection-Doyvd4lU.js";import{r as resolveCliName,t as formatCliCommand}from"./command-format-D806O2pt.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-BifagO7i.js";import"./io-BNtgT4VB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BD801bpx.js";import"./runner-C3k1sKdu.js";import"./model-catalog-BoiWqBTw.js";import"./sandbox-1jtP0nhr.js";import"./chrome-Bfprrnm1.js";import"./tailscale-DLkpGquM.js";import"./auth-lebUHrkd.js";import"./server-context-DKdrUePN.js";import"./frontmatter-3D1EdC1L.js";import"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-CRrqIFJR.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-BPr0-lkT.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-l9WWK31e.js";import"./send-CVgJk5kN.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-Yn3MpU4F.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import"./tokens-CCU3zO-D.js";import"./project-context-store-Dbbjk8CQ.js";import"./with-timeout-CPd4-suw.js";import"./deliver-BiGCWHvZ.js";import"./send-CRSlal5z.js";import"./workspace-D4LK4thI.js";import"./reply-prefix-zIMgi6K6.js";import"./memory-cli-D-Khe5Ij.js";import"./manager-DNIg84rj.js";import"./retry-DlVhg5qu.js";import"./client-xfoidwPI.js";import"./call-CJq3iGqu.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-Cp4LMft_.js";import"./send-D_6wd5Y3.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-C8gtsUDG.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-DAwcEPGb.js";import"./refresh-TiC_kLgE.js";import"./coding-tools.policy-COe2xa9K.js";import"./send-BIMaIwQV.js";import{b as waitForGatewayReachable,d as openUrl,g as resolveControlUiLinks,i as detectBrowserOpenSupport,o as formatControlUiSshHint,p as probeGatewayReachable}from"./onboard-helpers-BmYUjl4j.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-CD0lPAfY.js";import"./session-cost-usage-BjH7mxVj.js";import"./usage-format-DGf8ZWPH.js";import"./provider-usage-QGVVADJa.js";import"./active-listener-Dcg19lJG.js";import"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import"./project-context-BLpMH93w.js";import"./control-service-DKBAemtq.js";import"./stagger-8EkqkqJv.js";import"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-BQuRdgMU.js";import"./transformers-stream-D7nRu4Qu.js";import"./runtime-guard-DhksRHci.js";import"./program-context-DP4Xq9zC.js";import"./note-B6NtFdXt.js";import"./helpers-DTDCy17p.js";import{n as installCompletion}from"./completion-cli-BsXDz7T2.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,n as GATEWAY_DAEMON_RUNTIME_OPTIONS,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-0CbmdgMr.js";import{r as isSystemdUserServiceAvailable}from"./systemd-BG3_QT6W.js";import{t as resolveGatewayService}from"./service-D-NLDyK3.js";import{r as healthCommand}from"./health-AlkF1nUa.js";import{t as ensureControlUiAssetsBuilt}from"./control-ui-assets-CWgH1Tda.js";import"./builderforce-directory-sync-DRmWhsXb.js";import"./shared-DXDwFhUI.js";import"./model-picker-CCvGdvzM.js";import"./auth-choice.apply.transformers-B2Nr9M7m.js";import{t as formatHealthCheckFailure}from"./health-format-iE_KYEwP.js";import{r as ensureCompletionCacheExists,t as checkShellCompletionStatus}from"./doctor-completion-BUZwWoWB.js";import{t as runTui}from"./tui-BCtecmPL.js";import"./tui-stream-assembler-4UmPxCWJ.js";import os from"node:os";import path from"node:path";import fs from"node:fs/promises";async function resolveProfileHint(shell){let home=process.env.HOME||os.homedir();return shell===`zsh`?`~/.zshrc`:shell===`bash`?await pathExists(path.join(home,`.bashrc`))?`~/.bashrc`:`~/.bash_profile`:shell===`fish`?`~/.config/fish/config.fish`:`$PROFILE`}function formatReloadHint(shell,profileHint){return shell===`powershell`?`Restart your shell (or reload your PowerShell profile).`:`Restart your shell or run: source ${profileHint}`}async function setupOnboardingShellCompletion(params){let deps={resolveCliName,checkShellCompletionStatus,ensureCompletionCacheExists,installCompletion,...params.deps},cliName=deps.resolveCliName(),completionStatus=await deps.checkShellCompletionStatus(cliName);if(completionStatus.usesSlowPattern){await deps.ensureCompletionCacheExists(cliName)&&await deps.installCompletion(completionStatus.shell,!0,cliName);return}if(completionStatus.profileInstalled&&!completionStatus.cacheExists){await deps.ensureCompletionCacheExists(cliName);return}if(!completionStatus.profileInstalled){if(!(params.flow===`quickstart`||await params.prompter.confirm({message:`Enable ${completionStatus.shell} shell completion for ${cliName}?`,initialValue:!0})))return;if(!await deps.ensureCompletionCacheExists(cliName)){await params.prompter.note(`Failed to generate completion cache. Run \`${cliName} completion --install\` later.`,`Shell completion`);return}await deps.installCompletion(completionStatus.shell,!0,cliName);let profileHint=await resolveProfileHint(completionStatus.shell);await params.prompter.note(`Shell completion installed. ${formatReloadHint(completionStatus.shell,profileHint)}`,`Shell completion`)}}async function finalizeOnboardingWizard(options){let{flow,opts,baseConfig,nextConfig,settings,prompter,runtime}=options,withWizardProgress=async(label,options,work)=>{let progress=prompter.progress(label);try{return await work(progress)}finally{progress.stop(options.doneMessage)}},systemdAvailable=process.platform===`linux`?await isSystemdUserServiceAvailable():!0;if(process.platform===`linux`&&!systemdAvailable&&await prompter.note(`Systemd user services are unavailable. Skipping lingering checks and service install.`,`Systemd`),process.platform===`linux`&&systemdAvailable){let{ensureSystemdUserLingerInteractive}=await import(`./systemd-linger-Defy1T1U.js`);await ensureSystemdUserLingerInteractive({runtime,prompter:{confirm:prompter.confirm,note:prompter.note},reason:`Linux installs use a systemd user service by default. Without lingering, systemd stops the user session on logout/idle and kills the Gateway.`,requireConfirm:!1})}let explicitInstallDaemon=typeof opts.installDaemon==`boolean`?opts.installDaemon:void 0,installDaemon;if(installDaemon=explicitInstallDaemon===void 0?process.platform===`linux`&&!systemdAvailable?!1:flow===`quickstart`?!0:await prompter.confirm({message:`Install Gateway service (recommended)`,initialValue:!0}):explicitInstallDaemon,process.platform===`linux`&&!systemdAvailable&&installDaemon&&(await prompter.note("Systemd user services are unavailable; skipping service install. Use your container supervisor or `docker compose up -d`.",`Gateway service`),installDaemon=!1),installDaemon){let daemonRuntime=flow===`quickstart`?DEFAULT_GATEWAY_DAEMON_RUNTIME:await prompter.select({message:`Gateway service runtime`,options:GATEWAY_DAEMON_RUNTIME_OPTIONS,initialValue:opts.daemonRuntime??DEFAULT_GATEWAY_DAEMON_RUNTIME});flow===`quickstart`&&await prompter.note(`QuickStart uses Node for the Gateway service (stable + supported).`,`Gateway service runtime`);let service=resolveGatewayService(),loaded=await service.isLoaded({env:process.env});if(loaded){let action=await prompter.select({message:`Gateway service already installed`,options:[{value:`restart`,label:`Restart`},{value:`reinstall`,label:`Reinstall`},{value:`skip`,label:`Skip`}]});action===`restart`?await withWizardProgress(`Gateway service`,{doneMessage:`Gateway service restarted.`},async progress=>{progress.update(`Restarting Gateway service…`),await service.restart({env:process.env,stdout:process.stdout})}):action===`reinstall`&&await withWizardProgress(`Gateway service`,{doneMessage:`Gateway service uninstalled.`},async progress=>{progress.update(`Uninstalling Gateway service…`),await service.uninstall({env:process.env,stdout:process.stdout})})}if(!loaded||loaded&&!await service.isLoaded({env:process.env})){let progress=prompter.progress(`Gateway service`),installError=null;try{progress.update(`Preparing Gateway service…`);let{programArguments,workingDirectory,environment}=await buildGatewayInstallPlan({env:process.env,port:settings.port,token:settings.gatewayToken,runtime:daemonRuntime,warn:(message,title)=>prompter.note(message,title),config:nextConfig});progress.update(`Installing Gateway service…`),await service.install({env:process.env,stdout:process.stdout,programArguments,workingDirectory,environment})}catch(err){installError=err instanceof Error?err.message:String(err)}finally{progress.stop(installError?`Gateway service install failed.`:`Gateway service installed.`)}installError&&(await prompter.note(`Gateway service install failed: ${installError}`,`Gateway`),await prompter.note(gatewayInstallErrorHint(),`Gateway`))}}if(!opts.skipHealth){await waitForGatewayReachable({url:resolveControlUiLinks({bind:nextConfig.gateway?.bind??`loopback`,port:settings.port,customBindHost:nextConfig.gateway?.customBindHost,basePath:void 0}).wsUrl,token:settings.gatewayToken,deadlineMs:15e3});try{await healthCommand({json:!1,timeoutMs:1e4},runtime)}catch(err){let msg=formatHealthCheckFailure(err);runtime.error(msg),logWarn(`[onboarding] health check failed: ${String(err)}`);let logFile=getResolvedLoggerSettings().file;await prompter.note([`Logs:`,logFile,`View: ${formatCliCommand(`builderforce logs --follow`)}`,``,`Docs:`,`https://docs.builderforce.ai/gateway/health`,`https://docs.builderforce.ai/gateway/troubleshooting`].join(`
|
|
1
|
+
import"./paths-5FcIFMsj.js";import{G as getResolvedLoggerSettings,b as resolveUserPath,g as pathExists}from"./utils-DbaBVFaK.js";import"./embedded-helpers-2fP2Yq8h.js";import"./reply-BuUSdq2L.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import{t as restoreTerminalState}from"./restore-gPan2ZAn.js";import{i as logWarn}from"./logger-Bch0bx9c.js";import"./exec-DdcIjeyn.js";import{A as resolveWorkspaceFilePath,h as DEFAULT_BOOTSTRAP_FILENAME}from"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import"./model-selection-Doyvd4lU.js";import{r as resolveCliName,t as formatCliCommand}from"./command-format-D806O2pt.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-BifagO7i.js";import"./io-BNtgT4VB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BD801bpx.js";import"./runner-C3k1sKdu.js";import"./model-catalog-BoiWqBTw.js";import"./sandbox-1jtP0nhr.js";import"./chrome-Bfprrnm1.js";import"./tailscale-DLkpGquM.js";import"./auth-lebUHrkd.js";import"./server-context-DKdrUePN.js";import"./frontmatter-3D1EdC1L.js";import"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-CRrqIFJR.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-BPr0-lkT.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-l9WWK31e.js";import"./send-CVgJk5kN.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-Yn3MpU4F.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import"./tokens-CCU3zO-D.js";import"./project-context-store-Dbbjk8CQ.js";import"./with-timeout-CPd4-suw.js";import"./deliver-BiGCWHvZ.js";import"./send-CRSlal5z.js";import"./workspace-D4LK4thI.js";import"./reply-prefix-zIMgi6K6.js";import"./memory-cli-D-Khe5Ij.js";import"./manager-DNIg84rj.js";import"./retry-DlVhg5qu.js";import"./client-xfoidwPI.js";import"./call-CJq3iGqu.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-Cp4LMft_.js";import"./send-D_6wd5Y3.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-C8gtsUDG.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-DAwcEPGb.js";import"./refresh-TiC_kLgE.js";import"./coding-tools.policy-COe2xa9K.js";import"./send-BIMaIwQV.js";import{b as waitForGatewayReachable,d as openUrl,g as resolveControlUiLinks,i as detectBrowserOpenSupport,o as formatControlUiSshHint,p as probeGatewayReachable}from"./onboard-helpers-BmYUjl4j.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-CD0lPAfY.js";import"./session-cost-usage-BjH7mxVj.js";import"./usage-format-DGf8ZWPH.js";import"./provider-usage-QGVVADJa.js";import"./active-listener-Dcg19lJG.js";import"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import"./project-context-BLpMH93w.js";import"./control-service-DKBAemtq.js";import"./stagger-8EkqkqJv.js";import"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-BQuRdgMU.js";import"./transformers-stream-D7nRu4Qu.js";import"./runtime-guard-DhksRHci.js";import"./program-context-BCTE8zEF.js";import"./note-B6NtFdXt.js";import"./helpers-DTDCy17p.js";import{n as installCompletion}from"./completion-cli-Da3-oE7r.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,n as GATEWAY_DAEMON_RUNTIME_OPTIONS,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-0CbmdgMr.js";import{r as isSystemdUserServiceAvailable}from"./systemd-BG3_QT6W.js";import{t as resolveGatewayService}from"./service-D-NLDyK3.js";import{r as healthCommand}from"./health-CFVx21sO.js";import{t as ensureControlUiAssetsBuilt}from"./control-ui-assets-CWgH1Tda.js";import"./builderforce-directory-sync-DRmWhsXb.js";import"./shared-DXDwFhUI.js";import"./model-picker-CCvGdvzM.js";import"./auth-choice.apply.transformers-CgfGlqy1.js";import{t as formatHealthCheckFailure}from"./health-format-iE_KYEwP.js";import{r as ensureCompletionCacheExists,t as checkShellCompletionStatus}from"./doctor-completion-Dh9ah5lH.js";import{t as runTui}from"./tui-HTtOgZ_X.js";import"./tui-stream-assembler-4UmPxCWJ.js";import os from"node:os";import path from"node:path";import fs from"node:fs/promises";async function resolveProfileHint(shell){let home=process.env.HOME||os.homedir();return shell===`zsh`?`~/.zshrc`:shell===`bash`?await pathExists(path.join(home,`.bashrc`))?`~/.bashrc`:`~/.bash_profile`:shell===`fish`?`~/.config/fish/config.fish`:`$PROFILE`}function formatReloadHint(shell,profileHint){return shell===`powershell`?`Restart your shell (or reload your PowerShell profile).`:`Restart your shell or run: source ${profileHint}`}async function setupOnboardingShellCompletion(params){let deps={resolveCliName,checkShellCompletionStatus,ensureCompletionCacheExists,installCompletion,...params.deps},cliName=deps.resolveCliName(),completionStatus=await deps.checkShellCompletionStatus(cliName);if(completionStatus.usesSlowPattern){await deps.ensureCompletionCacheExists(cliName)&&await deps.installCompletion(completionStatus.shell,!0,cliName);return}if(completionStatus.profileInstalled&&!completionStatus.cacheExists){await deps.ensureCompletionCacheExists(cliName);return}if(!completionStatus.profileInstalled){if(!(params.flow===`quickstart`||await params.prompter.confirm({message:`Enable ${completionStatus.shell} shell completion for ${cliName}?`,initialValue:!0})))return;if(!await deps.ensureCompletionCacheExists(cliName)){await params.prompter.note(`Failed to generate completion cache. Run \`${cliName} completion --install\` later.`,`Shell completion`);return}await deps.installCompletion(completionStatus.shell,!0,cliName);let profileHint=await resolveProfileHint(completionStatus.shell);await params.prompter.note(`Shell completion installed. ${formatReloadHint(completionStatus.shell,profileHint)}`,`Shell completion`)}}async function finalizeOnboardingWizard(options){let{flow,opts,baseConfig,nextConfig,settings,prompter,runtime}=options,withWizardProgress=async(label,options,work)=>{let progress=prompter.progress(label);try{return await work(progress)}finally{progress.stop(options.doneMessage)}},systemdAvailable=process.platform===`linux`?await isSystemdUserServiceAvailable():!0;if(process.platform===`linux`&&!systemdAvailable&&await prompter.note(`Systemd user services are unavailable. Skipping lingering checks and service install.`,`Systemd`),process.platform===`linux`&&systemdAvailable){let{ensureSystemdUserLingerInteractive}=await import(`./systemd-linger-Defy1T1U.js`);await ensureSystemdUserLingerInteractive({runtime,prompter:{confirm:prompter.confirm,note:prompter.note},reason:`Linux installs use a systemd user service by default. Without lingering, systemd stops the user session on logout/idle and kills the Gateway.`,requireConfirm:!1})}let explicitInstallDaemon=typeof opts.installDaemon==`boolean`?opts.installDaemon:void 0,installDaemon;if(installDaemon=explicitInstallDaemon===void 0?process.platform===`linux`&&!systemdAvailable?!1:flow===`quickstart`?!0:await prompter.confirm({message:`Install Gateway service (recommended)`,initialValue:!0}):explicitInstallDaemon,process.platform===`linux`&&!systemdAvailable&&installDaemon&&(await prompter.note("Systemd user services are unavailable; skipping service install. Use your container supervisor or `docker compose up -d`.",`Gateway service`),installDaemon=!1),installDaemon){let daemonRuntime=flow===`quickstart`?DEFAULT_GATEWAY_DAEMON_RUNTIME:await prompter.select({message:`Gateway service runtime`,options:GATEWAY_DAEMON_RUNTIME_OPTIONS,initialValue:opts.daemonRuntime??DEFAULT_GATEWAY_DAEMON_RUNTIME});flow===`quickstart`&&await prompter.note(`QuickStart uses Node for the Gateway service (stable + supported).`,`Gateway service runtime`);let service=resolveGatewayService(),loaded=await service.isLoaded({env:process.env});if(loaded){let action=await prompter.select({message:`Gateway service already installed`,options:[{value:`restart`,label:`Restart`},{value:`reinstall`,label:`Reinstall`},{value:`skip`,label:`Skip`}]});action===`restart`?await withWizardProgress(`Gateway service`,{doneMessage:`Gateway service restarted.`},async progress=>{progress.update(`Restarting Gateway service…`),await service.restart({env:process.env,stdout:process.stdout})}):action===`reinstall`&&await withWizardProgress(`Gateway service`,{doneMessage:`Gateway service uninstalled.`},async progress=>{progress.update(`Uninstalling Gateway service…`),await service.uninstall({env:process.env,stdout:process.stdout})})}if(!loaded||loaded&&!await service.isLoaded({env:process.env})){let progress=prompter.progress(`Gateway service`),installError=null;try{progress.update(`Preparing Gateway service…`);let{programArguments,workingDirectory,environment}=await buildGatewayInstallPlan({env:process.env,port:settings.port,token:settings.gatewayToken,runtime:daemonRuntime,warn:(message,title)=>prompter.note(message,title),config:nextConfig});progress.update(`Installing Gateway service…`),await service.install({env:process.env,stdout:process.stdout,programArguments,workingDirectory,environment})}catch(err){installError=err instanceof Error?err.message:String(err)}finally{progress.stop(installError?`Gateway service install failed.`:`Gateway service installed.`)}installError&&(await prompter.note(`Gateway service install failed: ${installError}`,`Gateway`),await prompter.note(gatewayInstallErrorHint(),`Gateway`))}}if(!opts.skipHealth){await waitForGatewayReachable({url:resolveControlUiLinks({bind:nextConfig.gateway?.bind??`loopback`,port:settings.port,customBindHost:nextConfig.gateway?.customBindHost,basePath:void 0}).wsUrl,token:settings.gatewayToken,deadlineMs:15e3});try{await healthCommand({json:!1,timeoutMs:1e4},runtime)}catch(err){let msg=formatHealthCheckFailure(err);runtime.error(msg),logWarn(`[onboarding] health check failed: ${String(err)}`);let logFile=getResolvedLoggerSettings().file;await prompter.note([`Logs:`,logFile,`View: ${formatCliCommand(`builderforce logs --follow`)}`,``,`Docs:`,`https://docs.builderforce.ai/gateway/health`,`https://docs.builderforce.ai/gateway/troubleshooting`].join(`
|
|
2
2
|
`),`Health check help`)}}let controlUiEnabled=nextConfig.gateway?.controlUi?.enabled??baseConfig.gateway?.controlUi?.enabled??!0;if(!opts.skipUi&&controlUiEnabled){let controlUiAssets=await ensureControlUiAssetsBuilt(runtime);!controlUiAssets.ok&&controlUiAssets.message&&runtime.error(controlUiAssets.message)}await prompter.note([`Add nodes for extra features:`,`- macOS app (system + notifications)`,`- iOS app (camera/canvas)`,`- Android app (camera/canvas)`].join(`
|
|
3
3
|
`),`Optional apps`);let controlUiBasePath=nextConfig.gateway?.controlUi?.basePath??baseConfig.gateway?.controlUi?.basePath,links=resolveControlUiLinks({bind:settings.bind,port:settings.port,customBindHost:settings.customBindHost,basePath:controlUiBasePath}),authedUrl=settings.authMode===`token`&&settings.gatewayToken?`${links.httpUrl}#token=${encodeURIComponent(settings.gatewayToken)}`:links.httpUrl,gatewayProbe=await probeGatewayReachable({url:links.wsUrl,token:settings.authMode===`token`?settings.gatewayToken:void 0,password:settings.authMode===`password`?nextConfig.gateway?.auth?.password:``}),gatewayStatusLine=gatewayProbe.ok?`Gateway: reachable`:`Gateway: not detected${gatewayProbe.detail?` (${gatewayProbe.detail})`:``}`,bootstrapPath=resolveWorkspaceFilePath(resolveUserPath(options.workspaceDir),DEFAULT_BOOTSTRAP_FILENAME),hasBootstrap=await fs.access(bootstrapPath).then(()=>!0).catch(()=>!1);await prompter.note([`Web UI: ${links.httpUrl}`,settings.authMode===`token`&&settings.gatewayToken?`Web UI (with token): ${authedUrl}`:void 0,`Gateway WS: ${links.wsUrl}`,gatewayStatusLine,`Docs: https://docs.builderforce.ai/web/control-ui`].filter(Boolean).join(`
|
|
4
4
|
`),`Control UI`);let controlUiOpened=!1,controlUiOpenHint,hatchChoice=null,launchedTui=!1;!opts.skipUi&&gatewayProbe.ok?(hasBootstrap&&await prompter.note([`This is the defining action that makes your agent you.`,`Please take your time.`,`The more you tell it, the better the experience will be.`,`We will send: "Wake up, my friend!"`].join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function createDefaultDeps(){return{sendMessageWhatsApp:async(...args)=>{let{sendMessageWhatsApp}=await import(`./web-
|
|
1
|
+
function createDefaultDeps(){return{sendMessageWhatsApp:async(...args)=>{let{sendMessageWhatsApp}=await import(`./web-BzkO4Pbe.js`);return await sendMessageWhatsApp(...args)},sendMessageTelegram:async(...args)=>{let{sendMessageTelegram}=await import(`./send-BFOagoTx.js`);return await sendMessageTelegram(...args)},sendMessageDiscord:async(...args)=>{let{sendMessageDiscord}=await import(`./send-BgRAFGzF.js`);return await sendMessageDiscord(...args)},sendMessageSlack:async(...args)=>{let{sendMessageSlack}=await import(`./send-DNhIoJrV.js`);return await sendMessageSlack(...args)},sendMessageSignal:async(...args)=>{let{sendMessageSignal}=await import(`./send-C789D17v.js`);return await sendMessageSignal(...args)},sendMessageIMessage:async(...args)=>{let{sendMessageIMessage}=await import(`./send-BK54kkCr.js`);return await sendMessageIMessage(...args)}}}function createOutboundSendDeps$1(deps){return{sendWhatsApp:deps.sendMessageWhatsApp,sendTelegram:deps.sendMessageTelegram,sendDiscord:deps.sendMessageDiscord,sendSlack:deps.sendMessageSlack,sendSignal:deps.sendMessageSignal,sendIMessage:deps.sendMessageIMessage}}function createOutboundSendDeps(deps){return{sendWhatsApp:deps.sendMessageWhatsApp,sendTelegram:deps.sendMessageTelegram,sendDiscord:deps.sendMessageDiscord,sendSlack:deps.sendMessageSlack,sendSignal:deps.sendMessageSignal,sendIMessage:deps.sendMessageIMessage}}export{createDefaultDeps as n,createOutboundSendDeps$1 as r,createOutboundSendDeps as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./embedded-helpers-2fP2Yq8h.js";import"./reply-
|
|
1
|
+
import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./embedded-helpers-2fP2Yq8h.js";import"./reply-BuUSdq2L.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-Doyvd4lU.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-BifagO7i.js";import"./io-BNtgT4VB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BD801bpx.js";import"./runner-C3k1sKdu.js";import"./model-catalog-BoiWqBTw.js";import"./sandbox-1jtP0nhr.js";import"./chrome-Bfprrnm1.js";import"./tailscale-DLkpGquM.js";import"./auth-lebUHrkd.js";import"./server-context-DKdrUePN.js";import"./frontmatter-3D1EdC1L.js";import"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-CRrqIFJR.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-BPr0-lkT.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-l9WWK31e.js";import"./send-CVgJk5kN.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-Yn3MpU4F.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import"./tokens-CCU3zO-D.js";import"./project-context-store-Dbbjk8CQ.js";import"./with-timeout-CPd4-suw.js";import"./deliver-BiGCWHvZ.js";import"./send-CRSlal5z.js";import"./workspace-D4LK4thI.js";import"./reply-prefix-zIMgi6K6.js";import"./memory-cli-D-Khe5Ij.js";import"./manager-DNIg84rj.js";import"./retry-DlVhg5qu.js";import"./client-xfoidwPI.js";import"./call-CJq3iGqu.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-Cp4LMft_.js";import"./send-D_6wd5Y3.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-C8gtsUDG.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-DAwcEPGb.js";import"./refresh-TiC_kLgE.js";import"./coding-tools.policy-COe2xa9K.js";import"./send-BIMaIwQV.js";import"./onboard-helpers-BmYUjl4j.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-CD0lPAfY.js";import"./session-cost-usage-BjH7mxVj.js";import"./usage-format-DGf8ZWPH.js";import"./provider-usage-QGVVADJa.js";import"./active-listener-Dcg19lJG.js";import"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import"./project-context-BLpMH93w.js";import"./control-service-DKBAemtq.js";import"./stagger-8EkqkqJv.js";import"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-BQuRdgMU.js";import"./transformers-stream-D7nRu4Qu.js";import{t as ensurePluginRegistryLoaded}from"./plugin-registry-DrEpL5ac.js";export{ensurePluginRegistryLoaded};
|
|
@@ -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"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.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-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-
|
|
1
|
+
import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.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-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-m_x-JRkR.js";import"./sessions-CmJXMlLP.js";import"./project-context-store-BNXYrLJz.js";import"./tokens-CFKkpUIu.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./send-CGcNbbV7.js";import"./send-DPRTlcZh.js";import"./with-timeout-CBXVw0An.js";import"./deliver--eLCRJc2.js";import"./accounts-Cx82nj4E.js";import"./send-DfHAMPcD.js";import"./image-ops-CotJhwRR.js";import"./redact-CgO7wehS.js";import"./errors-tAt19c1E.js";import"./embedded-helpers-BZGiFZlP.js";import"./sandbox-C-Owvt1-.js";import"./chrome-BfwLDcFc.js";import"./tailscale-DV-yOmYe.js";import"./auth-ChecwOXS.js";import"./server-context-BjYYSEVE.js";import"./routes-Dnfsevhw.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-CiwWAhp5.js";import"./manager-Bjb9ptCz.js";import"./gemini-auth-KBXMhaRQ.js";import"./retry-B151Hej5.js";import"./common-BfwMxpLu.js";import"./runner-DwPaM8kz.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-tquUDu_7.js";import"./session-utils-D2_j4c6U.js";import"./coding-tools.policy-BwdtwuXY.js";import"./pairing-store-BCsvhT6-.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-DsI3qJRy.js";import"./send-BOSlm5fG.js";import"./outbound-attachment-BaTYE4qp.js";import"./delivery-queue-Cp3t4Upn.js";import"./project-context-BdK18hVI.js";import"./control-service-Ca0CBlhO.js";import"./stagger-CRe77dWL.js";import"./channel-selection-BLwXhb9t.js";import"./send-BOBan2eG.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-DATdLu15.js";import"./onboard-helpers-D2vxAtv8.js";import"./prompt-style-BMWmaqSC.js";import"./pairing-labels-BUXpRejW.js";import"./active-listener-Di9e1YAD.js";import"./mamba-state-engine-DJt_RpLC.js";import"./transformers-stream-Buj40qHl.js";import{t as ensurePluginRegistryLoaded}from"./plugin-registry-DdFb5usc.js";export{ensurePluginRegistryLoaded};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as getActivePluginRegistry}from"./registry-Cv7CoWAs.js";import{t as createSubsystemLogger}from"./subsystem-C4b1Von0.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-CufEmNj_.js";import{r as loadConfig}from"./io-CsCa3_1Z.js";import{w as loadBuilderForceAgentsPlugins}from"./subagent-registry-
|
|
1
|
+
import{d as getActivePluginRegistry}from"./registry-Cv7CoWAs.js";import{t as createSubsystemLogger}from"./subsystem-C4b1Von0.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-CufEmNj_.js";import{r as loadConfig}from"./io-CsCa3_1Z.js";import{w as loadBuilderForceAgentsPlugins}from"./subagent-registry-m_x-JRkR.js";const log=createSubsystemLogger(`plugins`);let pluginRegistryLoaded=!1;function ensurePluginRegistryLoaded(){if(pluginRegistryLoaded)return;let active=getActivePluginRegistry();if(active&&(active.plugins.length>0||active.channels.length>0||active.tools.length>0)){pluginRegistryLoaded=!0;return}let config=loadConfig();loadBuilderForceAgentsPlugins({config,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)}}),pluginRegistryLoaded=!0}export{ensurePluginRegistryLoaded as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Mt as loadBuilderForceAgentsPlugins}from"./reply-
|
|
1
|
+
import{Mt as loadBuilderForceAgentsPlugins}from"./reply-BuUSdq2L.js";import{t as createSubsystemLogger}from"./subsystem-B3TqcCrZ.js";import{d as getActivePluginRegistry}from"./registry-TdK-aV05.js";import{c as resolveAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-DPtjOxzp.js";import{r as loadConfig}from"./io-BNtgT4VB.js";const log=createSubsystemLogger(`plugins`);let pluginRegistryLoaded=!1;function ensurePluginRegistryLoaded(){if(pluginRegistryLoaded)return;let active=getActivePluginRegistry();if(active&&(active.plugins.length>0||active.channels.length>0||active.tools.length>0)){pluginRegistryLoaded=!0;return}let config=loadConfig();loadBuilderForceAgentsPlugins({config,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)}}),pluginRegistryLoaded=!0}export{ensurePluginRegistryLoaded as t};
|