@seanhogg/builderforce-agents 2026.10.9 → 2026.10.10
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/{audio-preflight-CvvHdoWy.js → audio-preflight-Dm9zyfJq.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/{builderforce-BmrsVdFw.js → builderforce-2EpP2M8q.js} +3 -3
- package/dist/{builderforce-Bwyw0GJ6.js → builderforce-Cyg20uU8.js} +3 -3
- package/dist/{builderforce-onboarding-DuUfZ6oL.js → builderforce-onboarding-C89jVb-9.js} +1 -1
- package/dist/{builderforce-onboarding-Dq6VUSKZ.js → builderforce-onboarding-D5A-wEs-.js} +1 -1
- package/dist/chrome-DUBgoZpO.js +4 -0
- package/dist/{command-registry-COUcUWby.js → command-registry-CDcuHGpx.js} +1 -1
- package/dist/{command-registry-4_K-lfW5.js → command-registry-hHegQvBn.js} +1 -1
- package/dist/{completion-cli-DlvHqL86.js → completion-cli-Bqr0W4L6.js} +1 -1
- package/dist/{completion-cli-B2qcVd6q.js → completion-cli-Ch9ozmkg.js} +1 -1
- package/dist/{completion-cli-SdcQ-kQj.js → completion-cli-Ck0FTqPT.js} +1 -1
- package/dist/{completion-cli-DpFvU4Qn.js → completion-cli-Do4vXo1k.js} +1 -1
- package/dist/{doctor-completion-BSotFS6p.js → doctor-completion-BjBTLcoC.js} +1 -1
- package/dist/{doctor-completion-DVxbs-74.js → doctor-completion-Ccs-JEvV.js} +1 -1
- package/dist/{embedded-D-citLF2.js → embedded-cvG_LpfQ.js} +6 -6
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +1 -1
- package/dist/{gateway-cli-D2Bg1Um6.js → gateway-cli-CiHNwzdS.js} +1 -1
- package/dist/{gateway-cli-DFEo8C0z.js → gateway-cli-z47dfosr.js} +1 -1
- package/dist/index.js +2 -2
- package/dist/{onboard-DfMVh1bM.js → onboard-D4uXN5Ec.js} +1 -1
- package/dist/{onboard-BVmZ4jMw.js → onboard-cB37uVxy.js} +1 -1
- package/dist/{onboard-interactive-B3-KBZbZ.js → onboard-interactive-CnXgQrpI.js} +1 -1
- package/dist/{onboard-interactive-Dc_7URYb.js → onboard-interactive-CoFFuSJT.js} +1 -1
- package/dist/{onboard-interactive-zgjmwJz-.js → onboard-interactive-gvfRcLOt.js} +1 -1
- package/dist/{onboard-interactive-DYJttZ2w.js → onboard-interactive-vwqLS6pe.js} +1 -1
- package/dist/{onboarding-CP9rrz8y.js → onboarding-B9GqKO5L.js} +2 -2
- package/dist/{onboarding-D4-HDbmU.js → onboarding-DdKW5K8Y.js} +2 -2
- package/dist/{onboarding.finalize-C2kZi7F0.js → onboarding.finalize-CcuO4Yxw.js} +1 -1
- package/dist/{onboarding.finalize-BfWXPgX7.js → onboarding.finalize-D3mTpOdc.js} +1 -1
- package/dist/plugin-sdk/{accounts-Cy3WCbWg.js → accounts-BwreSNAR.js} +1 -1
- package/dist/plugin-sdk/{active-listener-DVWVNlT9.js → active-listener-DpQ7aGYd.js} +1 -1
- package/dist/plugin-sdk/{agent-scope-DgKN27hJ.js → agent-scope-BQByW0cD.js} +1 -1
- package/dist/plugin-sdk/{api-key-rotation-ftXf7mBZ.js → api-key-rotation-7YdImWrh.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-CfTmmeS-.js → audio-preflight-EbkaATDO.js} +1 -1
- package/dist/plugin-sdk/{auth-json-BrNBg87n.js → auth-json-DK6qod1_.js} +1 -1
- package/dist/plugin-sdk/{bindings-CH-YLOLC.js → bindings-CDEzl4kl.js} +1 -1
- package/dist/plugin-sdk/{channel-web-B6rg0Rbf.js → channel-web-D2KuONp0.js} +1 -1
- package/dist/plugin-sdk/{chrome-CuXP-hes.js → chrome-SOXFIkUM.js} +1 -1
- package/dist/plugin-sdk/{chunk-C94IAOuf.js → chunk-cW0POl22.js} +1 -1
- package/dist/plugin-sdk/{command-format-B3XMq_73.js → command-format-CAX9XFjI.js} +1 -1
- package/dist/plugin-sdk/{common-n0l_XN-S.js → common-BxEWhN2X.js} +1 -1
- package/dist/plugin-sdk/{config-DsXZsCkJ.js → config-v1EU9Ll8.js} +2 -2
- package/dist/plugin-sdk/{fetch-B-GxSYRO.js → fetch-DH0Y8iyO.js} +1 -1
- package/dist/plugin-sdk/index.js +1 -1
- package/dist/plugin-sdk/{login-_my8QwPP.js → login-d1zBgykF.js} +1 -1
- package/dist/plugin-sdk/{login-qr-BaePtXuG.js → login-qr-B6exvQnN.js} +1 -1
- package/dist/plugin-sdk/{manager-BsC-4ymy.js → manager-BH_bmGds.js} +1 -1
- package/dist/plugin-sdk/{markdown-tables-BUfhHgfs.js → markdown-tables-Epim9b-0.js} +1 -1
- package/dist/plugin-sdk/{message-channel-CuZ2xOAM.js → message-channel-sBPQc_-T.js} +1 -1
- package/dist/plugin-sdk/{model-catalog-yuiXVcmw.js → model-catalog-cXsza5GU.js} +1 -1
- package/dist/plugin-sdk/{model-selection-BtgvnqB5.js → model-selection-K82MAGlL.js} +1 -1
- package/dist/plugin-sdk/{outbound-D_attiyO.js → outbound-Chn_H1O7.js} +1 -1
- package/dist/plugin-sdk/{plugins-BdkC9v5E.js → plugins-CaUOZBVb.js} +1 -1
- package/dist/plugin-sdk/{pw-ai-A7Rathx6.js → pw-ai-BIiJF7ZD.js} +1 -1
- package/dist/plugin-sdk/{qmd-manager-Dxn0jCpE.js → qmd-manager-BRe5fGZw.js} +1 -1
- package/dist/plugin-sdk/{registry-CZHRcH-q.js → registry-DJq2Cvo9.js} +1 -1
- package/dist/plugin-sdk/{render-CuA_WRX5.js → render-BUCRXPIk.js} +1 -1
- package/dist/plugin-sdk/{replies-DmLfO-pg.js → replies-Cz5OD3qN.js} +1 -1
- package/dist/plugin-sdk/{reply-3-ne-N_7.js → reply-D5Uk7pUv.js} +9 -9
- package/dist/plugin-sdk/{reply-prefix-w7kAvH11.js → reply-prefix-CCymsmsP.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-0sbvl4ZN.js → resolve-route-DN1J7Wyc.js} +1 -1
- package/dist/plugin-sdk/{runner-4UfrAQnx.js → runner-CYkuO7Fh.js} +4 -4
- package/dist/plugin-sdk/{session-BB-yfDWx.js → session-D5jHDo78.js} +1 -1
- package/dist/plugin-sdk/{sqlite-JjFgDV-H.js → sqlite-BlMLqMl8.js} +1 -1
- package/dist/plugin-sdk/{subsystem-D0Ril4rt.js → subsystem-COTa5Ly_.js} +1 -1
- package/dist/plugin-sdk/{tool-images-WRTP95FT.js → tool-images-DSpchb4x.js} +1 -1
- package/dist/plugin-sdk/{tool-loop-detection-sC_rhJfb.js → tool-loop-detection-BP6u-mbh.js} +1 -1
- package/dist/plugin-sdk/web-BbganhKi.js +1 -0
- package/dist/plugin-sdk/{whatsapp-actions-ThxQ5niy.js → whatsapp-actions-CZUqxmP1.js} +1 -1
- package/dist/{program-2w7Ue902.js → program-BgDciyOQ.js} +2 -2
- package/dist/{program-context-BCwL3wlM.js → program-context-CpxTJP1m.js} +1 -1
- package/dist/{prompt-select-styled-Dd5swW2b.js → prompt-select-styled-Bu7WPMzB.js} +1 -1
- package/dist/{prompt-select-styled-hB_nLOn1.js → prompt-select-styled-Qb0DubNy.js} +1 -1
- package/dist/{pw-ai-DaxMmaVL.js → pw-ai-D8HJAvv-.js} +1 -1
- package/dist/{register.maintenance-BELfCO_C.js → register.maintenance-CPnm6L-m.js} +1 -1
- package/dist/{register.maintenance-DukWFS_D.js → register.maintenance-D8WmeEaD.js} +1 -1
- package/dist/{register.onboard-Dt7rzAq-.js → register.onboard-BoUicPRh.js} +1 -1
- package/dist/{register.onboard-B9DMNfHE.js → register.onboard-DMfqe2nX.js} +1 -1
- package/dist/{register.setup-CSF-2ImP.js → register.setup-BK6OEvY3.js} +1 -1
- package/dist/{register.setup-BRRVPrx7.js → register.setup-CtcAR3JR.js} +1 -1
- package/dist/{register.subclis-4eDV9jKH.js → register.subclis-Dl6jPPsc.js} +1 -1
- package/dist/{register.subclis-Cr9DoYcv.js → register.subclis-EScCVgbV.js} +1 -1
- package/dist/{run-main-DLcDEJgv.js → run-main-C3lmcvyV.js} +1 -1
- package/dist/{runner-COldX-El.js → runner-CviGu3Nk.js} +3 -3
- package/dist/{tui-DylWbrDx.js → tui-D2sTsa4p.js} +1 -1
- package/dist/{tui-BwWMByVp.js → tui-DY2oYbxk.js} +1 -1
- package/dist/{tui-cli-C_TTgabr.js → tui-cli-GW-qybY6.js} +1 -1
- package/dist/{tui-cli-Bh1V8-w9.js → tui-cli-wn3DmvUG.js} +1 -1
- package/dist/{update-cli-CA3LuuJ7.js → update-cli-CN0oxZ_A.js} +1 -1
- package/dist/{update-cli-DUrUIrYQ.js → update-cli-K5dGZmg8.js} +1 -1
- package/dist/{web-BQPd6gQJ.js → web-DONGrYXq.js} +1 -1
- package/package.json +1 -1
- package/dist/chrome-Brg9KsB9.js +0 -4
- package/dist/plugin-sdk/web-CThgoHQp.js +0 -1
package/dist/entry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{y as resolveRequiredHomeDir}from"./paths-BHg-VHB4.js";import{t as isValidProfileName}from"./profile-utils-BKdObK6T.js";import{c as hasHelpOrVersion}from"./argv-BgQk38nl.js";import{t as normalizeWindowsArgv}from"./windows-argv-ClCYQujd.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import{r as normalizeEnv,t as isTruthyEnvValue}from"./env-BoE8QSib.js";import{t as installProcessWarningFilter}from"./warning-filter-nSTjpMIH.js";import{spawn}from"node:child_process";import process$1 from"node:process";import os from"node:os";import path from"node:path";function takeValue(raw,next){if(raw.includes(`=`)){let[,value]=raw.split(`=`,2);return{value:(value??``).trim()||null,consumedNext:!1}}return{value:(next??``).trim()||null,consumedNext:!!next}}function parseCliProfileArgs(argv){if(argv.length<2)return{ok:!0,profile:null,argv};let out=argv.slice(0,2),profile=null,sawDev=!1,sawCommand=!1,args=argv.slice(2);for(let i=0;i<args.length;i+=1){let arg=args[i];if(arg!==void 0){if(sawCommand){out.push(arg);continue}if(arg===`--dev`){if(profile&&profile!==`dev`)return{ok:!1,error:`Cannot combine --dev with --profile`};sawDev=!0,profile=`dev`;continue}if(arg===`--profile`||arg.startsWith(`--profile=`)){if(sawDev)return{ok:!1,error:`Cannot combine --dev with --profile`};let next=args[i+1],{value,consumedNext}=takeValue(arg,next);if(consumedNext&&(i+=1),!value)return{ok:!1,error:`--profile requires a value`};if(!isValidProfileName(value))return{ok:!1,error:`Invalid --profile (use letters, numbers, "_", "-" only)`};profile=value;continue}if(!arg.startsWith(`-`)){sawCommand=!0,out.push(arg);continue}out.push(arg)}}return{ok:!0,profile,argv:out}}function resolveProfileStateDir(profile,env,homedir){let suffix=profile.toLowerCase()===`default`?``:`-${profile}`;return path.join(resolveRequiredHomeDir(env,homedir),`.builderforce${suffix}`)}function applyCliProfileEnv(params){let env=params.env??process.env,homedir=params.homedir??os.homedir,profile=params.profile.trim();if(!profile)return;env.BUILDERFORCE_AGENTS_PROFILE=profile;let stateDir=env.BUILDERFORCE_AGENTS_STATE_DIR?.trim()||resolveProfileStateDir(profile,env,homedir);env.BUILDERFORCE_AGENTS_STATE_DIR?.trim()||(env.BUILDERFORCE_AGENTS_STATE_DIR=stateDir),env.BUILDERFORCE_AGENTS_CONFIG_PATH?.trim()||(env.BUILDERFORCE_AGENTS_CONFIG_PATH=path.join(stateDir,`builderforce.json`)),profile===`dev`&&!env.BUILDERFORCE_AGENTS_GATEWAY_PORT?.trim()&&(env.BUILDERFORCE_AGENTS_GATEWAY_PORT=`19001`)}function shouldSkipRespawnForArgv(argv){return hasHelpOrVersion(argv)}const defaultSignals=process$1.platform===`win32`?[`SIGTERM`,`SIGINT`,`SIGBREAK`]:[`SIGTERM`,`SIGINT`,`SIGHUP`,`SIGQUIT`];function attachChildProcessBridge(child,{signals=defaultSignals,onSignal}={}){let listeners=new Map;for(let signal of signals){let listener=()=>{onSignal?.(signal);try{child.kill(signal)}catch{}};try{process$1.on(signal,listener),listeners.set(signal,listener)}catch{}}let detach=()=>{for(let[signal,listener]of listeners)process$1.off(signal,listener);listeners.clear()};return child.once(`exit`,detach),child.once(`error`,detach),{detach}}process$1.title=`builderforce`,installProcessWarningFilter(),normalizeEnv(),process$1.argv.includes(`--no-color`)&&(process$1.env.NO_COLOR=`1`,process$1.env.FORCE_COLOR=`0`);const EXPERIMENTAL_WARNING_FLAG=`--disable-warning=ExperimentalWarning`;function hasExperimentalWarningSuppressed(){let nodeOptions=process$1.env.NODE_OPTIONS??``;if(nodeOptions.includes(EXPERIMENTAL_WARNING_FLAG)||nodeOptions.includes(`--no-warnings`))return!0;for(let arg of process$1.execArgv)if(arg===EXPERIMENTAL_WARNING_FLAG||arg===`--no-warnings`)return!0;return!1}function ensureExperimentalWarningSuppressed(){if(shouldSkipRespawnForArgv(process$1.argv)||isTruthyEnvValue(process$1.env.BUILDERFORCE_AGENTS_NO_RESPAWN)||isTruthyEnvValue(process$1.env.BUILDERFORCE_AGENTS_NODE_OPTIONS_READY)||hasExperimentalWarningSuppressed())return!1;process$1.env.BUILDERFORCE_AGENTS_NODE_OPTIONS_READY=`1`;let child=spawn(process$1.execPath,[EXPERIMENTAL_WARNING_FLAG,...process$1.execArgv,...process$1.argv.slice(1)],{stdio:`inherit`,env:process$1.env});return attachChildProcessBridge(child),child.once(`exit`,(code,signal)=>{if(signal){process$1.exitCode=1;return}process$1.exit(code??1)}),child.once(`error`,error=>{console.error(`[builderforce] Failed to respawn CLI:`,error instanceof Error?error.stack??error.message:error),process$1.exit(1)}),!0}if(process$1.argv=normalizeWindowsArgv(process$1.argv),!ensureExperimentalWarningSuppressed()){let parsed=parseCliProfileArgs(process$1.argv);parsed.ok||(console.error(`[builderforce] ${parsed.error}`),process$1.exit(2)),parsed.profile&&(applyCliProfileEnv({profile:parsed.profile}),process$1.argv=parsed.argv),import(`./run-main-
|
|
2
|
+
import{y as resolveRequiredHomeDir}from"./paths-BHg-VHB4.js";import{t as isValidProfileName}from"./profile-utils-BKdObK6T.js";import{c as hasHelpOrVersion}from"./argv-BgQk38nl.js";import{t as normalizeWindowsArgv}from"./windows-argv-ClCYQujd.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import{r as normalizeEnv,t as isTruthyEnvValue}from"./env-BoE8QSib.js";import{t as installProcessWarningFilter}from"./warning-filter-nSTjpMIH.js";import{spawn}from"node:child_process";import process$1 from"node:process";import os from"node:os";import path from"node:path";function takeValue(raw,next){if(raw.includes(`=`)){let[,value]=raw.split(`=`,2);return{value:(value??``).trim()||null,consumedNext:!1}}return{value:(next??``).trim()||null,consumedNext:!!next}}function parseCliProfileArgs(argv){if(argv.length<2)return{ok:!0,profile:null,argv};let out=argv.slice(0,2),profile=null,sawDev=!1,sawCommand=!1,args=argv.slice(2);for(let i=0;i<args.length;i+=1){let arg=args[i];if(arg!==void 0){if(sawCommand){out.push(arg);continue}if(arg===`--dev`){if(profile&&profile!==`dev`)return{ok:!1,error:`Cannot combine --dev with --profile`};sawDev=!0,profile=`dev`;continue}if(arg===`--profile`||arg.startsWith(`--profile=`)){if(sawDev)return{ok:!1,error:`Cannot combine --dev with --profile`};let next=args[i+1],{value,consumedNext}=takeValue(arg,next);if(consumedNext&&(i+=1),!value)return{ok:!1,error:`--profile requires a value`};if(!isValidProfileName(value))return{ok:!1,error:`Invalid --profile (use letters, numbers, "_", "-" only)`};profile=value;continue}if(!arg.startsWith(`-`)){sawCommand=!0,out.push(arg);continue}out.push(arg)}}return{ok:!0,profile,argv:out}}function resolveProfileStateDir(profile,env,homedir){let suffix=profile.toLowerCase()===`default`?``:`-${profile}`;return path.join(resolveRequiredHomeDir(env,homedir),`.builderforce${suffix}`)}function applyCliProfileEnv(params){let env=params.env??process.env,homedir=params.homedir??os.homedir,profile=params.profile.trim();if(!profile)return;env.BUILDERFORCE_AGENTS_PROFILE=profile;let stateDir=env.BUILDERFORCE_AGENTS_STATE_DIR?.trim()||resolveProfileStateDir(profile,env,homedir);env.BUILDERFORCE_AGENTS_STATE_DIR?.trim()||(env.BUILDERFORCE_AGENTS_STATE_DIR=stateDir),env.BUILDERFORCE_AGENTS_CONFIG_PATH?.trim()||(env.BUILDERFORCE_AGENTS_CONFIG_PATH=path.join(stateDir,`builderforce.json`)),profile===`dev`&&!env.BUILDERFORCE_AGENTS_GATEWAY_PORT?.trim()&&(env.BUILDERFORCE_AGENTS_GATEWAY_PORT=`19001`)}function shouldSkipRespawnForArgv(argv){return hasHelpOrVersion(argv)}const defaultSignals=process$1.platform===`win32`?[`SIGTERM`,`SIGINT`,`SIGBREAK`]:[`SIGTERM`,`SIGINT`,`SIGHUP`,`SIGQUIT`];function attachChildProcessBridge(child,{signals=defaultSignals,onSignal}={}){let listeners=new Map;for(let signal of signals){let listener=()=>{onSignal?.(signal);try{child.kill(signal)}catch{}};try{process$1.on(signal,listener),listeners.set(signal,listener)}catch{}}let detach=()=>{for(let[signal,listener]of listeners)process$1.off(signal,listener);listeners.clear()};return child.once(`exit`,detach),child.once(`error`,detach),{detach}}process$1.title=`builderforce`,installProcessWarningFilter(),normalizeEnv(),process$1.argv.includes(`--no-color`)&&(process$1.env.NO_COLOR=`1`,process$1.env.FORCE_COLOR=`0`);const EXPERIMENTAL_WARNING_FLAG=`--disable-warning=ExperimentalWarning`;function hasExperimentalWarningSuppressed(){let nodeOptions=process$1.env.NODE_OPTIONS??``;if(nodeOptions.includes(EXPERIMENTAL_WARNING_FLAG)||nodeOptions.includes(`--no-warnings`))return!0;for(let arg of process$1.execArgv)if(arg===EXPERIMENTAL_WARNING_FLAG||arg===`--no-warnings`)return!0;return!1}function ensureExperimentalWarningSuppressed(){if(shouldSkipRespawnForArgv(process$1.argv)||isTruthyEnvValue(process$1.env.BUILDERFORCE_AGENTS_NO_RESPAWN)||isTruthyEnvValue(process$1.env.BUILDERFORCE_AGENTS_NODE_OPTIONS_READY)||hasExperimentalWarningSuppressed())return!1;process$1.env.BUILDERFORCE_AGENTS_NODE_OPTIONS_READY=`1`;let child=spawn(process$1.execPath,[EXPERIMENTAL_WARNING_FLAG,...process$1.execArgv,...process$1.argv.slice(1)],{stdio:`inherit`,env:process$1.env});return attachChildProcessBridge(child),child.once(`exit`,(code,signal)=>{if(signal){process$1.exitCode=1;return}process$1.exit(code??1)}),child.once(`error`,error=>{console.error(`[builderforce] Failed to respawn CLI:`,error instanceof Error?error.stack??error.message:error),process$1.exit(1)}),!0}if(process$1.argv=normalizeWindowsArgv(process$1.argv),!ensureExperimentalWarningSuppressed()){let parsed=parseCliProfileArgs(process$1.argv);parsed.ok||(console.error(`[builderforce] ${parsed.error}`),process$1.exit(2)),parsed.profile&&(applyCliProfileEnv({profile:parsed.profile}),process$1.argv=parsed.argv),import(`./run-main-C3lmcvyV.js`).then(({runCli})=>runCli(process$1.argv)).catch(error=>{console.error(`[builderforce] Failed to start CLI:`,error instanceof Error?error.stack??error.message:error),process$1.exitCode=1})}export{};
|
package/dist/extensionAPI.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-CAQcjxp2.js";import"./session-key-CYpYHc1e.js";import"./registry-j1UKIotU.js";import{r as resolveAgentDir,s as resolveAgentWorkspaceDir,y as ensureAgentWorkspace}from"./agent-scope-C7zGN7Pz.js";import"./subsystem-ykSbyaud.js";import{Nt as DEFAULT_MODEL,Pt as DEFAULT_PROVIDER,g as resolveThinkingDefault}from"./model-selection-BGEkWWV7.js";import{a as resolveAgentIdentity}from"./reply-prefix-CWwv5MP-.js";import"./env-44XUbLhk.js";import"./src-izs0XSXm.js";import{M as resolveAgentTimeoutMs,t as runEmbeddedAgent}from"./embedded-
|
|
1
|
+
import"./paths-CAQcjxp2.js";import"./session-key-CYpYHc1e.js";import"./registry-j1UKIotU.js";import{r as resolveAgentDir,s as resolveAgentWorkspaceDir,y as ensureAgentWorkspace}from"./agent-scope-C7zGN7Pz.js";import"./subsystem-ykSbyaud.js";import{Nt as DEFAULT_MODEL,Pt as DEFAULT_PROVIDER,g as resolveThinkingDefault}from"./model-selection-BGEkWWV7.js";import{a as resolveAgentIdentity}from"./reply-prefix-CWwv5MP-.js";import"./env-44XUbLhk.js";import"./src-izs0XSXm.js";import{M as resolveAgentTimeoutMs,t as runEmbeddedAgent}from"./embedded-cvG_LpfQ.js";import"./replies-CllKyBdY.js";import"./plugins-CjU7Ut5E.js";import"./accounts-xbnfJmsd.js";import"./bindings-6UAwilZE.js";import{Mt as saveSessionStore,kt as loadSessionStore}from"./runner-CviGu3Nk.js";import"./fetch-D2i2BBd3.js";import"./model-catalog-BTMhKeCz.js";import"./redact-xFefzy4M.js";import"./errors-CguQr0Ja.js";import"./config-C7baFOp1.js";import"./chrome-DUBgoZpO.js";import"./message-channel-BKGbjp9g.js";import{n as resolveSessionFilePath,s as resolveStorePath}from"./paths-ZHayVsQS.js";import"./gemini-auth-eXEUozQC.js";import"./tool-images-B8YdlzZb.js";import"./sqlite-DDTPj41Y.js";import"./manager-C7WmOAX4.js";import"./common-CgaBYMHL.js";import"./chunk-BCl8axDo.js";import"./markdown-tables-C-Z5_lwN.js";import"./render-NRLMXKq3.js";import"./active-listener-FQKmkr1L.js";import"./resolve-route-D5Ptdm3e.js";export{DEFAULT_MODEL,DEFAULT_PROVIDER,ensureAgentWorkspace,loadSessionStore,resolveAgentDir,resolveAgentIdentity,resolveAgentTimeoutMs,resolveAgentWorkspaceDir,resolveSessionFilePath,resolveStorePath,resolveThinkingDefault,runEmbeddedAgent,saveSessionStore};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as expandHomePrefix,g as resolveStateDir,i as isNixMode,l as resolveGatewayLockDir,o as resolveConfigPath,r as STATE_DIR,t as CONFIG_PATH,u as resolveGatewayPort,y as resolveRequiredHomeDir}from"./paths-5FcIFMsj.js";import{B as theme,C as shortenHomePath,D as truncateUtf16Safe,G as getResolvedLoggerSettings,P as setVerbose,R as colorize,U as getChildLogger,W as getLogger,b as resolveUserPath,c as ensureDir,d as isPlainObject,r as clamp,t as CONFIG_DIR,z as isRich}from"./utils-DbaBVFaK.js";import{B as formatXHighModelHint,G as normalizeThinkLevel,K as normalizeUsageDisplay,U as normalizeElevatedLevel,W as normalizeReasoningLevel,Y as supportsXHighThinking,q as normalizeVerboseLevel,z as formatThinkingLevels}from"./embedded-helpers-CEsr3aQ0.js";import{$ as normalizeOptionalSessionKey,$n as markGatewaySigusr1RestartHandled,$t as requestNodePairing,Ar as resolveTtsProviderOrder,At as getPluginToolMeta,B as resolveOutboundSessionRoute,Bt as computeBackoff,C as spawnSubagentDirect,Cn as getTotalPendingReplies,Cr as getTtsProvider,Ct as findAgentRole,Dr as resolveTtsAutoMode,Dt as codebaseSearchTool,E as resolveAnnounceTargetFromKey,Er as resolveTtsApiKey,Et as projectKnowledgeTool,F as pruneLegacyStoreKeys,Fr as OPENAI_TTS_VOICES,Gr as setCommandLaneConcurrency,Gt as refreshRemoteBinsForConnectedNodes,Ht as getRemoteSkillEligibility,I as resolveGatewaySessionStoreTarget,J as normalizeHttpWebhookUrl,Jn as runSubagentAnnounceFlow,Jr as startDiagnosticHeartbeat,Jt as setSkillsRemoteRegistry,K as resetDirectoryCache,Kr as waitForActiveTasks,Kt as refreshRemoteNodeBins,L as resolveSessionModelRef,Ln as countActiveDescendantRuns,Lt as handleSlackHttpRequest,M as listSessionsFromStore,Mn as isAbortTrigger,Mr as setTtsProvider,Mt as loadBuilderForceAgentsPlugins,N as loadCombinedSessionStoreForGateway,Nn as stopSubagentsForRequester,Nr as textToSpeech,Or as resolveTtsConfig,Ot as requestHeartbeatNow,P as loadSessionEntry,Pr as OPENAI_TTS_MODELS,Pt as normalizeGroupActivation,Q as normalizeOptionalAgentId,Qn as isGatewaySigusr1RestartExternallyAllowed,Qt as renamePairedNode,Rt as readJsonBodyWithLimit,S as createBuilderForceAgentsTools,Si as resolveInputFileLimits,Sn as createReplyDispatcher,Sr as registerAgentRunContext,St as loadHiredAgentsCached,T as readLatestAssistantReply,Ti as resolveAgentTimeoutMs,Tr as isTtsProviderConfigured,Tt as registerPlatformPersonasAsRoles,U as resolveOutboundTarget,Ur as getTotalQueueSize,Ut as primeRemoteSkillsCache,Vn as listDescendantRunsForRequester,Vr as getActiveTaskCount,Vt as sleepWithAbort,W as resolveSessionDeliveryTarget,Wr as resetAllLanes,Wt as recordRemoteNodeInfo,X as normalizeCronJobPatch,Xn as deferGatewayRestartUntilIdle,Xr as isDiagnosticsEnabled,Xt as listNodePairing,Y as normalizeCronJobCreate,Yn as consumeGatewaySigusr1RestartAuthorization,Yr as stopDiagnosticHeartbeat,Yt as approveNodePairing,Z as inferLegacyName,Zn as emitGatewayRestart,Zr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS,Zt as rejectNodePairing,_ as waitForEmbeddedRunEnd,_i as DEFAULT_INPUT_MAX_REDIRECTS,_r as registerTeamMemoryContextBuilder,_t as globalOrchestrator,a as getCliSessionId,an as resolvePairingPaths,ar as formatRestartSentinelMessage,at as hasLegacyDeliveryHints,b as buildDefaultToolPolicyPipelineSteps,bi as extractImageContentFromSource,br as getAgentRunContext,bt as dispatchToRemoteAgentNode,ci as applyModelOverrideToSessionEntry,cn as writeJsonAtomic,d as normalizeSendPolicy,di as enqueueSystemEvent,dn as getHookType,dr as buildAssignedCapabilityAppend,dt as initApprovalGate,en as updatePairedNodeMetadata,er as scheduleGatewaySigusr1Restart,et as normalizeOptionalText,f as resolveSendPolicy,fi as isSystemEventContextChanged,fn as isExternalHookSession,fr as getLimbicSystemService,ft as resolveApproval,g as getActiveEmbeddedRunCount,gi as DEFAULT_INPUT_IMAGE_MIMES,gn as buildHistoryContextFromEntries,gr as registerKnowledgeLoop,gt as workflowStatusTool,h as abortEmbeddedRun,hi as DEFAULT_INPUT_IMAGE_MAX_BYTES,hr as initSsmMemoryService,ht as gitHistoryTool,i as resolveCronStyleNow,in as pruneExpiredPending,ir as formatDoctorNonInteractiveHint,it as buildDeliveryFromLegacyPayload,j as listAgentsForGateway,jr as setTtsEnabled,k as canonicalizeSpawnedByForAgent,kn as formatZonedTimestamp,kr as resolveTtsPrefsPath,li as applyVerboseOverride,ln as buildSafeExternalPrompt,lr as writeRestartSentinel,lt as applyBrowserProxyPaths,m as runEmbeddedAgent,mr as getSsmMemoryService,mt as agentFleetTool,n as BARE_SESSION_RESET_PROMPT,ni as lookupContextTokens,nn as generatePairingToken,nr as setPreRestartDeferralCheck,nt as normalizeRequiredName,o as setCliSessionId,on as createAsyncLock,ot as stripLegacyDeliveryFields,p as clearSessionQueues,pr as initLimbicSystemService,pt as semanticSearchTool,qr as CommandLane,qt as removeRemoteNodeInfo,rn as verifyPairingToken,rr as consumeRestartSentinel,rt as migrateLegacyCronPayload,s as runCliAgent,sn as readJsonFile,sr as summarizeRestartSentinel,ti as stripHeartbeatToken,tn as verifyNodeToken,tr as setGatewaySigusr1RestartPolicy,tt as normalizePayloadToSystemText,ui as parseVerboseOverride,un as detectSuspiciousPatterns,ur as resolveUserTimezone,ut as persistBrowserProxyFiles,vi as DEFAULT_INPUT_TIMEOUT_MS,vr as clearAgentRunContext,vt as dispatchChunkToRemoteAgentNode,w as resolveRelayTaskModel,wr as isTtsEnabled,wt as getBuiltInAgentRoles,xi as normalizeMimeList,xn as dispatchInboundMessage,xr as onAgentEvent,xt as fetchFleetEntries,y as applyToolPolicyPipeline,yi as extractFileContentFromSource,yr as emitAgentEvent,yt as dispatchResultToRemoteAgentNode,z as ensureOutboundSessionEntry,zn as initSubagentRegistry,zr as runWithModelFallback,zt as requestBodyErrorToText}from"./reply-Cd3vVnD7.js";import{C as parseAgentSessionKey,S as isSubagentSessionKey,_ as toAgentStoreSessionKey,a as buildAgentMainSessionKey,b as isCronRunSessionKey,c as classifySessionKeyShape,d as normalizeAgentId,f as normalizeMainKey,g as toAgentRequestSessionKey,l as isValidAgentId,n as DEFAULT_ACCOUNT_ID,p as resolveAgentIdFromSessionKey,r as DEFAULT_AGENT_ID,t as AGENT_ID_PATTERN}from"./session-key-EoB0qaG9.js";import{s as matchesSkillFilter,t as resolveBuilderForceAgentsPackageRoot}from"./builderforce-root-D64_sXEi.js";import{c as setConsoleTimestampPrefix,i as defaultRuntime,n as runtimeForLogger,s as setConsoleSubsystemFilter,t as createSubsystemLogger}from"./subsystem-B3TqcCrZ.js";import{C as createInternalHookEvent,S as clearInternalHooks,T as triggerInternalHook,d as getActivePluginRegistry,m as createEmptyPluginRegistry,r as DEFAULT_CHAT_CHANNEL,t as CHANNEL_IDS,w as registerInternalHook}from"./registry-TdK-aV05.js";import{i as logWarn,t as logDebug}from"./logger-Bch0bx9c.js";import{n as runExec,t as runCommandWithTimeout}from"./exec-DdcIjeyn.js";import{A as resolveWorkspaceFilePath,E as isWorkspaceOnboardingCompleted,O as resolveAgentRuntimeDir,S as DEFAULT_USER_FILENAME,_ as DEFAULT_IDENTITY_FILENAME,a as resolveAgentModelFallbacksOverride,b as DEFAULT_SOUL_FILENAME,c as resolveAgentWorkspaceDir,d as resolveSessionAgentId,g as DEFAULT_HEARTBEAT_FILENAME,h as DEFAULT_BOOTSTRAP_FILENAME,i as resolveAgentDir,j as resolveWorkspaceTemplateDir,k as resolveDefaultAgentWorkspaceDir,l as resolveDefaultAgentId,n as listAgentIds,p as DEFAULT_AGENTS_FILENAME,r as resolveAgentConfig,s as resolveAgentSkillsFilter,t as listAgentEntries,v as DEFAULT_MEMORY_ALT_FILENAME,w as ensureAgentWorkspace,x as DEFAULT_TOOLS_FILENAME,y as DEFAULT_MEMORY_FILENAME}from"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import{N as resolveOllamaApiBase,a as getModelRefStatus,b as resolveThinkingDefault,bn as DEFAULT_PROVIDER,ct as canUseToolDecision,dt as nativeComplete,f as resolveAllowedModelRef,fn as isPidAlive,g as resolveHooksGmailModel,h as resolveDefaultModelForAgent,ht as SessionManager,k as resolveFreetokenApiBase,m as resolveConfiguredModelRef,mn as normalizeSecretInput,mt as CURRENT_SESSION_VERSION,o as isCliProvider,t as buildAllowedModelSet,v as resolveSubagentConfiguredModelSelection,vn as DEFAULT_CONTEXT_TOKENS,yn as DEFAULT_MODEL}from"./model-selection-9bRFKBI_.js";import{t as normalizeBaseUrl}from"./normalize-base-url-DmugqkQ6.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{i as readSharedEnvVar,t as isOfflineMode}from"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import{n as logAcceptedEnvOption,t as isTruthyEnvValue}from"./env-BIdU5BAp.js";import{C as renderPolicyDirectives,E as resolveEngineById,T as CURRENT_ENGINE_ID,b as coercePolicyGates,i as deriveActivitySummary,n as KNOWLEDGE_DIRS,r as buildKnowledgeMemoryEntry$1}from"./src-DTFqOIQD.js";import{A as applyMergePatch,H as resolveSubagentMaxConcurrent,U as VERSION,V as resolveAgentMaxConcurrent,W as resolveRuntimeServiceVersion,a as readConfigFileSnapshot,c as writeConfigFile,f as validateConfigObjectWithPlugins,i as parseConfigJson5,j as applyLegacyMigrations,n as createConfigIO,o as readConfigFileSnapshotForWrite,p as BuilderForceAgentsSchema,r as loadConfig,s as resolveConfigSnapshotHash,v as sensitive,y as parseDurationMs}from"./io-3R_ZyUxB.js";import{s as isTestDefaultMemorySlotDisabled}from"./manifest-registry-BJCfNV1a.js";import{t as migrateLegacyConfig}from"./config-_1Ca6jGb.js";import{l as registerUnhandledRejectionHandler}from"./runner-SxCr9kXD.js";import{r as loadModelCatalog}from"./model-catalog-C6UrZ0uG.js";import{g as collectExplicitAllowlist,x as resolveToolProfilePolicy,y as mergeAlsoAllowPolicy}from"./sandbox-BZibn6PX.js";import"./chrome-a3X9_-nf.js";import{i as enableTailscaleServe,n as disableTailscaleServe,o as getTailnetHostname,r as enableTailscaleFunnel,t as disableTailscaleFunnel}from"./tailscale-DLkpGquM.js";import{a as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN,c as safeEqualSecret,i as resolveGatewayAuth,n as authorizeGatewayConnect,o as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET,r as isLocalDirectRequest,s as createAuthRateLimiter,t as assertGatewayAuthConfigured}from"./auth-lebUHrkd.js";import{n as pickPrimaryTailnetIPv4,r as pickPrimaryTailnetIPv6}from"./tailnet-CTj65CYb.js";import{a as isTrustedProxyAddress,d as resolveGatewayClientIp,f as resolveGatewayListenHosts,i as isPrivateOrLoopbackAddress,l as pickPrimaryLanIPv4,n as isLoopbackAddress,p as resolveHostName,r as isLoopbackHost,s as normalizeHostHeader,t as rawDataToString,u as resolveGatewayBindHost}from"./ws-Bbu03j3h.js";import"./server-context-DJZT7Upf.js";import{d as hasBinary}from"./frontmatter-3D1EdC1L.js";import{i as loadWorkspaceSkillEntries,r as buildWorkspaceSkillSnapshot}from"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-BzfLvF8W.js";import"./redact-BHdfp2MZ.js";import{a as isErrno,n as formatErrorMessage}from"./errors-B1MIg3g-.js";import"./paths-cR8ct-Y3.js";import{t as SsrFBlockedError}from"./ssrf-p9k-iapc.js";import{c as detectMime}from"./image-ops-C8IUQKjn.js";import"./store-CmHBQ-yX.js";import{a as inspectPortUsage,c as formatPortDiagnostics,r as ensurePortAvailable}from"./ports-DgmEDNOm.js";import{t as movePathToTrash}from"./trash-DD2Hc5oq.js";import{A as evaluateSessionFreshness,B as resolveMainSessionKey,C as readSessionMessages,D as stripEnvelopeFromMessages,E as resolveSessionTranscriptCandidates,L as canonicalizeMainSessionAlias,M as resolveSessionResetPolicy,R as resolveAgentMainSessionKey,S as capArrayByJsonBytes,U as snapshotSessionOrigin,V as resolveMainSessionKeyFromConfig,a as loadSessionStore,b as archiveFileOnDisk,g as mergeDeliveryContext,m as deliveryContextFromSession,n as parseSessionThreadInfo,rt as cleanStaleLockFiles,t as extractDeliveryInfo,u as updateSessionStore,v as normalizeSessionDeliveryFields,w as readSessionPreviewItemsFromTranscript,x as archiveSessionTranscripts,z as resolveExplicitAgentSessionKey}from"./sessions-CdanN_ZI.js";import{f as GATEWAY_CLIENT_CAPS,g as hasGatewayClientCap,h as GATEWAY_CLIENT_NAMES,i as isGatewayMessageChannel,l as normalizeMessageChannel,m as GATEWAY_CLIENT_MODES,n as isDeliverableMessageChannel,p as GATEWAY_CLIENT_IDS,r as isGatewayCliClient,s as isWebchatClient,t as INTERNAL_MESSAGE_CHANNEL}from"./message-channel-D_jXxXQj.js";import{n as listChannelPlugins,r as normalizeChannelId,t as getChannelPlugin}from"./plugins-D5zP6ENo.js";import"./accounts-o35LU_iy.js";import"./accounts-rmXEiebi.js";import"./accounts-BLueHgKj.js";import{t as buildChannelAccountBindings}from"./bindings-DR59065T.js";import"./send-DerUBvXW.js";import"./send-DyF1Xy9K.js";import{c as resolveStorePath,i as resolveSessionTranscriptPath,n as resolveSessionFilePath,r as resolveSessionFilePathOptions,s as resolveSessionTranscriptsDirForAgent}from"./paths-DJ6rztqJ.js";import{i as normalizeInputProvenance}from"./input-provenance-Ch8I_rOX.js";import"./tool-images-B7b_OiMz.js";import"./tool-display-ByOZtWvA.js";import{t as fetchWithSsrFGuard}from"./fetch-guard-8mwt3-hm.js";import"./api-key-rotation-CHBjUwUJ.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import{n as SILENT_REPLY_TOKEN,r as isSilentReplyText}from"./tokens-CCU3zO-D.js";import{S as globalPersonaRegistry,_ as isBuilderForceAgentsProject,b as USER_PERSONAS_DIR,n as loadProjectContext,o as updateProjectContextFields,v as resolveBuilderForceAgentsDir}from"./project-context-store-wcq7lXuI.js";import{n as createBrowserRouteDispatcher,r as getMachineDisplayName}from"./with-timeout-Bwq-GyUQ.js";import{C as getGlobalHookRunner,T as runGlobalGatewayStopSafely,a as normalizeReplyPayloadsForDelivery,t as deliverOutboundPayloads}from"./deliver-BpLm3ktn.js";import"./send-CBBziNqM.js";import{a as shouldIncludeHook,i as resolveHookConfig,n as loadWorkspaceHookEntries}from"./workspace-D4LK4thI.js";import{a as resolveAgentIdentity,n as createReplyPrefixOptions}from"./reply-prefix-zIMgi6K6.js";import{i as resolveMemoryBackendConfig,r as getMemorySearchManager}from"./memory-cli-DRz4wtHk.js";import"./manager-DwywI_5-.js";import"./retry-DlVhg5qu.js";import{$ as validateNodePairRejectParams,A as validateCronStatusParams,At as validateWizardStatusParams,B as validateExecApprovalsGetParams,C as validateConfigSetParams,Ct as validateUpdateRunParams,D as validateCronRemoveParams,Dt as validateWizardCancelParams,E as validateCronListParams,Et as validateWebLoginWaitParams,F as validateDevicePairRemoveParams,Ft as parseSessionLabel,G as validateModelsListParams,H as validateExecApprovalsNodeSetParams,Ht as verifyDeviceSignature,I as validateDeviceTokenRevokeParams,It as buildDeviceAuthPayload,J as validateNodeInvokeParams,K as validateNodeDescribeParams,L as validateDeviceTokenRotateParams,Lt as normalizeDeviceAuthScopes,M as validateDevicePairApproveParams,Mt as ErrorCodes,N as validateDevicePairListParams,Nt as errorShape,O as validateCronRunParams,Ot as validateWizardNextParams,P as validateDevicePairRejectParams,Q as validateNodePairListParams,R as validateExecApprovalRequestParams,S as validateConfigSchemaParams,St as validateTalkModeParams,T as validateCronAddParams,Tt as validateWebLoginStartParams,U as validateExecApprovalsSetParams,V as validateExecApprovalsNodeGetParams,Vt as normalizeDevicePublicKeyBase64Url,W as validateLogsTailParams,X as validateNodeListParams,Y as validateNodeInvokeResultParams,Z as validateNodePairApproveParams,_ as validateChatInjectParams,_t as validateSkillsBinsParams,a as validateAgentWaitParams,at as validateRequestFrame,b as validateConfigGetParams,bt as validateSkillsUpdateParams,c as validateAgentsFilesGetParams,ct as validateSessionsDeleteParams,d as validateAgentsListParams,dt as validateSessionsPatchParams,et as validateNodePairRequestParams,f as validateAgentsUpdateParams,ft as validateSessionsPreviewParams,g as validateChatHistoryParams,gt as validateSessionsUsageParams,h as validateChatAbortParams,ht as validateSessionsUndoParams,i as validateAgentParams,it as validatePushTestParams,j as validateCronUpdateParams,jt as PROTOCOL_VERSION,k as validateCronRunsParams,kt as validateWizardStartParams,l as validateAgentsFilesListParams,lt as validateSessionsForkParams,m as validateChannelsStatusParams,mt as validateSessionsResolveParams,n as formatValidationErrors,nt as validateNodeRenameParams,o as validateAgentsCreateParams,ot as validateSendParams,p as validateChannelsLogoutParams,pt as validateSessionsResetParams,q as validateNodeEventParams,r as validateAgentIdentityParams,rt as validatePollParams,s as validateAgentsDeleteParams,st as validateSessionsCompactParams,t as GatewayClient,tt as validateNodePairVerifyParams,u as validateAgentsFilesSetParams,ut as validateSessionsListParams,v as validateChatSendParams,vt as validateSkillsInstallParams,w as validateConnectParams,wt as validateWakeParams,x as validateConfigPatchParams,xt as validateTalkConfigParams,y as validateConfigApplyParams,yt as validateSkillsStatusParams,z as validateExecApprovalResolveParams,zt as deriveDeviceIdFromPublicKey}from"./client-xfoidwPI.js";import{n as callGateway,o as loadGatewayTlsRuntime$1}from"./call-BbRf8gFM.js";import{a as jsonResult,t as ToolInputError}from"./common-BTbIhLyt.js";import"./chunk-FCBlVOyo.js";import"./markdown-tables-P6uoUSFa.js";import"./ir-5BNoIXZm.js";import"./render-D1dVTEB1.js";import"./builderforcellm-syscheck-DrFJ638L.js";import"./send-4d9NswaD.js";import"./outbound-attachment-C7wByQO5.js";import"./fetch-DnVtDecb.js";import"./delivery-queue-CXKynF1P.js";import{n as normalizePollInput}from"./polls-IFZVG0cW.js";import{t as getChannelActivity}from"./channel-activity-CCNDbdD3.js";import"./tables-ERcoWFDp.js";import"./pairing-store-CbvMJhD3.js";import{t as formatDocsLink}from"./links-BgWWaaOT.js";import{n as runCommandWithRuntime}from"./cli-utils-LBYKdNFb.js";import{t as formatHelpExamples}from"./help-format-Qfk2vDNX.js";import{n as withProgress}from"./progress-BfOtdN6b.js";import"./resolve-route-D49haUnv.js";import"./replies-Bd2RPZwQ.js";import{a as registerSkillsChangeListener,i as getSkillsSnapshotVersion,n as bumpSkillsSnapshotVersion}from"./refresh-TiC_kLgE.js";import{a as resolveSubagentToolPolicy,i as resolveGroupToolPolicy,r as resolveEffectiveToolPolicy,u as listAgentWorkspaceDirs}from"./coding-tools.policy-6qh9acJy.js";import"./send-BJDzwYJN.js";import{C as normalizeControlUiBasePath,S as buildControlUiAvatarUrl,c as handleReset,w as resolveAssistantAvatarUrl,x as CONTROL_UI_AVATAR_PREFIX}from"./onboard-helpers-Cf5dNq7-.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-BW5jQZlr.js";import{a as loadSessionUsageTimeSeries,c as hasNonzeroUsage,n as loadCostUsageSummary,r as loadSessionCostSummary,s as deriveSessionTotalTokens,t as discoverAllSessions}from"./session-cost-usage-BjH7mxVj.js";import{n as formatTokenCount,r as formatUsd}from"./usage-format-DGf8ZWPH.js";import{t as loadProviderUsageSummary}from"./provider-usage-BdrU4cIE.js";import"./active-listener-Dcg19lJG.js";import{a as mergeExecApprovalsSocketDefaults,c as readExecApprovalsSnapshot,p as saveExecApprovals,r as ensureExecApprovals,s as normalizeExecApprovals,t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS}from"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import{d as savePersonaAssignment,f as initializeBuilderForceAgentsProject,t as appendKnowledgeMemory,u as loadPersonaAssignments}from"./project-context-CJj0Inz-.js";import{r as startBrowserControlServiceFromConfig,t as createBrowserControlContext}from"./control-service-BbsswoMy.js";import{i as parseAbsoluteTimeMs,n as resolveCronStaggerMs,r as resolveDefaultCronStaggerMs,t as normalizeCronStaggerMs}from"./stagger-8EkqkqJv.js";import{n as resolveMessageChannelSelection}from"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-CoGqoBTH.js";import"./transformers-stream-D7nRu4Qu.js";import{i as onHeartbeatEvent,r as getLastHeartbeatEvent,t as resolveHeartbeatVisibility}from"./heartbeat-visibility-D0RvrstE.js";import{n as createOutboundSendDeps,t as createDefaultDeps}from"./deps-CkJiJ6wc.js";import{t as ensureBuilderForceAgentsCliOnPath}from"./path-env-Cy9l1Ba9.js";import"./runtime-guard-DhksRHci.js";import{t as forceFreePortAndWait}from"./ports-ReH_tlKd.js";import{t as buildChannelUiCatalog}from"./catalog-rgiY__UQ.js";import{t as buildWorkspaceSkillStatus}from"./skills-status-vWC0PU8J.js";import{n as DEFAULT_GATEWAY_HTTP_TOOL_DENY}from"./dangerous-tools-DROxC992.js";import{n as inheritOptionFromParent}from"./command-options-DzGFCQYs.js";import{t as WizardCancelledError}from"./prompts-Bchzq3K0.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DTDCy17p.js";import{t as applyPluginAutoEnable}from"./plugin-auto-enable-DDry2fA6.js";import"./install-safe-path-DsLq2BUJ.js";import"./skill-scanner-U3AJgjqc.js";import{t as buildChannelAccountSnapshot}from"./status-PqZ4BoNw.js";import"./channels-status-issues-BlOu0Ul_.js";import"./daemon-runtime-CtOr1ncS.js";import"./systemd-BG3_QT6W.js";import"./service-D-NLDyK3.js";import"./lifecycle-core-Dwb4gHjZ.js";import"./diagnostics-DCjg0nBH.js";import{t as parsePort$1}from"./parse-port-nw1R44xn.js";import{n as addGatewayServiceCommands}from"./daemon-cli-DlwOVDbt.js";import"./table-BoCHYKoQ.js";import{n as resolveWideAreaDiscoveryDomain,r as writeWideAreaGatewayZone}from"./widearea-dns-CZR56vQb.js";import{i as toOptionString,n as extractGatewayMiskeys,r as maybeExplainGatewayServiceStop,t as describeUnknownError}from"./shared-XAatqRQ6.js";import{c as probeGateway,o as isNodeCommandAllowed,s as resolveNodeCommandAllowlist}from"./audit-DGnEhZYe.js";import{t as discoverGatewayBeacons}from"./bonjour-discovery-Dq1G1iS-.js";import{n as getStatusSummary,r as pickGatewaySelfPresence}from"./status-DouJcFzf.js";import{c as startHeartbeatRunner,i as styleHealthChannelLine,n as getHealthSnapshot,o as runHeartbeatOnce,s as setHeartbeatsEnabled,t as formatHealthChannelLines}from"./health-yS3NRKvY.js";import{a as resolveControlUiRootSync,i as resolveControlUiRootOverrideSync,t as ensureControlUiAssetsBuilt}from"./control-ui-assets-CWgH1Tda.js";import{h as normalizeUpdateChannel,l as DEFAULT_PACKAGE_CHANNEL,n as compareSemverStrings,o as resolveNpmChannelTag,t as checkUpdateStatus}from"./update-check-D6MvqVFE.js";import{t as runOnboardingWizard}from"./onboarding-D4-HDbmU.js";import{a as sendApnsAlert,c as parseMessageWithAttachments,d as shouldLogWs,f as summarizeAgentEventForWsLog,i as resolveApnsAuthConfigFromEnv,l as formatForLog,n as normalizeApnsEnvironment,o as sendApnsBackgroundWake,p as setGatewayWsLogStyle,s as normalizeRpcAttachmentsToChatAttachments,t as loadApnsRegistration,u as logWs}from"./push-apns-C4sJnHbO.js";import{T as resolveGmailHookRuntimeConfig,_ as buildGogWatchServeArgs,i as ensureTailscaleEndpoint,v as buildGogWatchStartArgs}from"./gmail-setup-utils-n7gVQG7k.js";import{t as createOutboundSendDeps$1}from"./outbound-send-deps-CmJnMKI7.js";import{a as pruneAgentConfig,i as loadAgentIdentity,r as findAgentEntryIndex,s as loadAgentIdentityFromWorkspace,t as applyAgentConfig}from"./agents.config-BllQ7zna.js";import{i as resolveAgentOutboundTarget,r as resolveAgentDeliveryPlan,t as agentCommand}from"./agent-cXF-aL0g.js";import"./dm-policy-shared-Dhw9_6mi.js";import"./node-service-DZg9i98f.js";import"./status.update-C9iy31xr.js";import{n as validateSystemRunCommandConsistency,t as formatExecCommand}from"./system-run-command-B2_VsnKm.js";import{t as installSkill}from"./skills-install-Btw_GHbI.js";import{n as runGatewayUpdate,t as resolveAgentSessionDirs}from"./session-dirs-D_ARkyw0.js";import{n as syncBuilderForceAgentsDirectoryOnStartup,t as syncBuilderForceAgentsDirectory}from"./builderforce-directory-sync-DAH62b3b.js";import{n as mergeBuilderforceContext,t as buildLocalMachineProfile}from"./builderforce-context-DEsrFVCz.js";import{a as emitWorkflowEnd,c as initTelemetry,i as emitTaskStart,l as setRelayHook,o as emitWorkflowStart,r as emitTaskEnd}from"./workflow-telemetry-Dc_oseV7.js";import{fileURLToPath,pathToFileURL}from"node:url";import*as fsSync from"node:fs";import fs,{constants}from"node:fs";import os from"node:os";import path,{dirname,join,relative,sep}from"node:path";import crypto,{createHash,randomUUID}from"node:crypto";import JSON5 from"json5";import chalk from"chalk";import fs$1,{mkdir,readFile,readdir,writeFile}from"node:fs/promises";import{execFile,spawn,spawnSync}from"node:child_process";import{promisify}from"node:util";import{z}from"zod";import net from"node:net";import{createServer}from"node:http";import{createServer as createServer$1}from"node:https";import{WebSocket as WebSocket$1,WebSocketServer}from"ws";import{Buffer as Buffer$1}from"node:buffer";import{neutralLimbicState}from"@seanhogg/builderforce-memory-engine/limbic";import{Type}from"@sinclair/typebox";import chokidar from"chokidar";import{EventEmitter}from"node:events";import{Cron}from"croner";import{query}from"@anthropic-ai/claude-agent-sdk";function parsePort(value){if(!value)return;let parsed=Number.parseInt(value,10);if(!(!Number.isFinite(parsed)||parsed<=0))return parsed}function parseSshConfigOutput(output){let result={identityFiles:[]},lines=output.split(`
|
|
1
|
+
import{_ as expandHomePrefix,g as resolveStateDir,i as isNixMode,l as resolveGatewayLockDir,o as resolveConfigPath,r as STATE_DIR,t as CONFIG_PATH,u as resolveGatewayPort,y as resolveRequiredHomeDir}from"./paths-5FcIFMsj.js";import{B as theme,C as shortenHomePath,D as truncateUtf16Safe,G as getResolvedLoggerSettings,P as setVerbose,R as colorize,U as getChildLogger,W as getLogger,b as resolveUserPath,c as ensureDir,d as isPlainObject,r as clamp,t as CONFIG_DIR,z as isRich}from"./utils-DbaBVFaK.js";import{B as formatXHighModelHint,G as normalizeThinkLevel,K as normalizeUsageDisplay,U as normalizeElevatedLevel,W as normalizeReasoningLevel,Y as supportsXHighThinking,q as normalizeVerboseLevel,z as formatThinkingLevels}from"./embedded-helpers-CEsr3aQ0.js";import{$ as normalizeOptionalSessionKey,$n as markGatewaySigusr1RestartHandled,$t as requestNodePairing,Ar as resolveTtsProviderOrder,At as getPluginToolMeta,B as resolveOutboundSessionRoute,Bt as computeBackoff,C as spawnSubagentDirect,Cn as getTotalPendingReplies,Cr as getTtsProvider,Ct as findAgentRole,Dr as resolveTtsAutoMode,Dt as codebaseSearchTool,E as resolveAnnounceTargetFromKey,Er as resolveTtsApiKey,Et as projectKnowledgeTool,F as pruneLegacyStoreKeys,Fr as OPENAI_TTS_VOICES,Gr as setCommandLaneConcurrency,Gt as refreshRemoteBinsForConnectedNodes,Ht as getRemoteSkillEligibility,I as resolveGatewaySessionStoreTarget,J as normalizeHttpWebhookUrl,Jn as runSubagentAnnounceFlow,Jr as startDiagnosticHeartbeat,Jt as setSkillsRemoteRegistry,K as resetDirectoryCache,Kr as waitForActiveTasks,Kt as refreshRemoteNodeBins,L as resolveSessionModelRef,Ln as countActiveDescendantRuns,Lt as handleSlackHttpRequest,M as listSessionsFromStore,Mn as isAbortTrigger,Mr as setTtsProvider,Mt as loadBuilderForceAgentsPlugins,N as loadCombinedSessionStoreForGateway,Nn as stopSubagentsForRequester,Nr as textToSpeech,Or as resolveTtsConfig,Ot as requestHeartbeatNow,P as loadSessionEntry,Pr as OPENAI_TTS_MODELS,Pt as normalizeGroupActivation,Q as normalizeOptionalAgentId,Qn as isGatewaySigusr1RestartExternallyAllowed,Qt as renamePairedNode,Rt as readJsonBodyWithLimit,S as createBuilderForceAgentsTools,Si as resolveInputFileLimits,Sn as createReplyDispatcher,Sr as registerAgentRunContext,St as loadHiredAgentsCached,T as readLatestAssistantReply,Ti as resolveAgentTimeoutMs,Tr as isTtsProviderConfigured,Tt as registerPlatformPersonasAsRoles,U as resolveOutboundTarget,Ur as getTotalQueueSize,Ut as primeRemoteSkillsCache,Vn as listDescendantRunsForRequester,Vr as getActiveTaskCount,Vt as sleepWithAbort,W as resolveSessionDeliveryTarget,Wr as resetAllLanes,Wt as recordRemoteNodeInfo,X as normalizeCronJobPatch,Xn as deferGatewayRestartUntilIdle,Xr as isDiagnosticsEnabled,Xt as listNodePairing,Y as normalizeCronJobCreate,Yn as consumeGatewaySigusr1RestartAuthorization,Yr as stopDiagnosticHeartbeat,Yt as approveNodePairing,Z as inferLegacyName,Zn as emitGatewayRestart,Zr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS,Zt as rejectNodePairing,_ as waitForEmbeddedRunEnd,_i as DEFAULT_INPUT_MAX_REDIRECTS,_r as registerTeamMemoryContextBuilder,_t as globalOrchestrator,a as getCliSessionId,an as resolvePairingPaths,ar as formatRestartSentinelMessage,at as hasLegacyDeliveryHints,b as buildDefaultToolPolicyPipelineSteps,bi as extractImageContentFromSource,br as getAgentRunContext,bt as dispatchToRemoteAgentNode,ci as applyModelOverrideToSessionEntry,cn as writeJsonAtomic,d as normalizeSendPolicy,di as enqueueSystemEvent,dn as getHookType,dr as buildAssignedCapabilityAppend,dt as initApprovalGate,en as updatePairedNodeMetadata,er as scheduleGatewaySigusr1Restart,et as normalizeOptionalText,f as resolveSendPolicy,fi as isSystemEventContextChanged,fn as isExternalHookSession,fr as getLimbicSystemService,ft as resolveApproval,g as getActiveEmbeddedRunCount,gi as DEFAULT_INPUT_IMAGE_MIMES,gn as buildHistoryContextFromEntries,gr as registerKnowledgeLoop,gt as workflowStatusTool,h as abortEmbeddedRun,hi as DEFAULT_INPUT_IMAGE_MAX_BYTES,hr as initSsmMemoryService,ht as gitHistoryTool,i as resolveCronStyleNow,in as pruneExpiredPending,ir as formatDoctorNonInteractiveHint,it as buildDeliveryFromLegacyPayload,j as listAgentsForGateway,jr as setTtsEnabled,k as canonicalizeSpawnedByForAgent,kn as formatZonedTimestamp,kr as resolveTtsPrefsPath,li as applyVerboseOverride,ln as buildSafeExternalPrompt,lr as writeRestartSentinel,lt as applyBrowserProxyPaths,m as runEmbeddedAgent,mr as getSsmMemoryService,mt as agentFleetTool,n as BARE_SESSION_RESET_PROMPT,ni as lookupContextTokens,nn as generatePairingToken,nr as setPreRestartDeferralCheck,nt as normalizeRequiredName,o as setCliSessionId,on as createAsyncLock,ot as stripLegacyDeliveryFields,p as clearSessionQueues,pr as initLimbicSystemService,pt as semanticSearchTool,qr as CommandLane,qt as removeRemoteNodeInfo,rn as verifyPairingToken,rr as consumeRestartSentinel,rt as migrateLegacyCronPayload,s as runCliAgent,sn as readJsonFile,sr as summarizeRestartSentinel,ti as stripHeartbeatToken,tn as verifyNodeToken,tr as setGatewaySigusr1RestartPolicy,tt as normalizePayloadToSystemText,ui as parseVerboseOverride,un as detectSuspiciousPatterns,ur as resolveUserTimezone,ut as persistBrowserProxyFiles,vi as DEFAULT_INPUT_TIMEOUT_MS,vr as clearAgentRunContext,vt as dispatchChunkToRemoteAgentNode,w as resolveRelayTaskModel,wr as isTtsEnabled,wt as getBuiltInAgentRoles,xi as normalizeMimeList,xn as dispatchInboundMessage,xr as onAgentEvent,xt as fetchFleetEntries,y as applyToolPolicyPipeline,yi as extractFileContentFromSource,yr as emitAgentEvent,yt as dispatchResultToRemoteAgentNode,z as ensureOutboundSessionEntry,zn as initSubagentRegistry,zr as runWithModelFallback,zt as requestBodyErrorToText}from"./reply-Cd3vVnD7.js";import{C as parseAgentSessionKey,S as isSubagentSessionKey,_ as toAgentStoreSessionKey,a as buildAgentMainSessionKey,b as isCronRunSessionKey,c as classifySessionKeyShape,d as normalizeAgentId,f as normalizeMainKey,g as toAgentRequestSessionKey,l as isValidAgentId,n as DEFAULT_ACCOUNT_ID,p as resolveAgentIdFromSessionKey,r as DEFAULT_AGENT_ID,t as AGENT_ID_PATTERN}from"./session-key-EoB0qaG9.js";import{s as matchesSkillFilter,t as resolveBuilderForceAgentsPackageRoot}from"./builderforce-root-D64_sXEi.js";import{c as setConsoleTimestampPrefix,i as defaultRuntime,n as runtimeForLogger,s as setConsoleSubsystemFilter,t as createSubsystemLogger}from"./subsystem-B3TqcCrZ.js";import{C as createInternalHookEvent,S as clearInternalHooks,T as triggerInternalHook,d as getActivePluginRegistry,m as createEmptyPluginRegistry,r as DEFAULT_CHAT_CHANNEL,t as CHANNEL_IDS,w as registerInternalHook}from"./registry-TdK-aV05.js";import{i as logWarn,t as logDebug}from"./logger-Bch0bx9c.js";import{n as runExec,t as runCommandWithTimeout}from"./exec-DdcIjeyn.js";import{A as resolveWorkspaceFilePath,E as isWorkspaceOnboardingCompleted,O as resolveAgentRuntimeDir,S as DEFAULT_USER_FILENAME,_ as DEFAULT_IDENTITY_FILENAME,a as resolveAgentModelFallbacksOverride,b as DEFAULT_SOUL_FILENAME,c as resolveAgentWorkspaceDir,d as resolveSessionAgentId,g as DEFAULT_HEARTBEAT_FILENAME,h as DEFAULT_BOOTSTRAP_FILENAME,i as resolveAgentDir,j as resolveWorkspaceTemplateDir,k as resolveDefaultAgentWorkspaceDir,l as resolveDefaultAgentId,n as listAgentIds,p as DEFAULT_AGENTS_FILENAME,r as resolveAgentConfig,s as resolveAgentSkillsFilter,t as listAgentEntries,v as DEFAULT_MEMORY_ALT_FILENAME,w as ensureAgentWorkspace,x as DEFAULT_TOOLS_FILENAME,y as DEFAULT_MEMORY_FILENAME}from"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import{N as resolveOllamaApiBase,a as getModelRefStatus,b as resolveThinkingDefault,bn as DEFAULT_PROVIDER,ct as canUseToolDecision,dt as nativeComplete,f as resolveAllowedModelRef,fn as isPidAlive,g as resolveHooksGmailModel,h as resolveDefaultModelForAgent,ht as SessionManager,k as resolveFreetokenApiBase,m as resolveConfiguredModelRef,mn as normalizeSecretInput,mt as CURRENT_SESSION_VERSION,o as isCliProvider,t as buildAllowedModelSet,v as resolveSubagentConfiguredModelSelection,vn as DEFAULT_CONTEXT_TOKENS,yn as DEFAULT_MODEL}from"./model-selection-9bRFKBI_.js";import{t as normalizeBaseUrl}from"./normalize-base-url-DmugqkQ6.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{i as readSharedEnvVar,t as isOfflineMode}from"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import{n as logAcceptedEnvOption,t as isTruthyEnvValue}from"./env-BIdU5BAp.js";import{C as renderPolicyDirectives,E as resolveEngineById,T as CURRENT_ENGINE_ID,b as coercePolicyGates,i as deriveActivitySummary,n as KNOWLEDGE_DIRS,r as buildKnowledgeMemoryEntry$1}from"./src-DTFqOIQD.js";import{A as applyMergePatch,H as resolveSubagentMaxConcurrent,U as VERSION,V as resolveAgentMaxConcurrent,W as resolveRuntimeServiceVersion,a as readConfigFileSnapshot,c as writeConfigFile,f as validateConfigObjectWithPlugins,i as parseConfigJson5,j as applyLegacyMigrations,n as createConfigIO,o as readConfigFileSnapshotForWrite,p as BuilderForceAgentsSchema,r as loadConfig,s as resolveConfigSnapshotHash,v as sensitive,y as parseDurationMs}from"./io-3R_ZyUxB.js";import{s as isTestDefaultMemorySlotDisabled}from"./manifest-registry-BJCfNV1a.js";import{t as migrateLegacyConfig}from"./config-_1Ca6jGb.js";import{l as registerUnhandledRejectionHandler}from"./runner-SxCr9kXD.js";import{r as loadModelCatalog}from"./model-catalog-C6UrZ0uG.js";import{g as collectExplicitAllowlist,x as resolveToolProfilePolicy,y as mergeAlsoAllowPolicy}from"./sandbox-BZibn6PX.js";import"./chrome-a3X9_-nf.js";import{i as enableTailscaleServe,n as disableTailscaleServe,o as getTailnetHostname,r as enableTailscaleFunnel,t as disableTailscaleFunnel}from"./tailscale-DLkpGquM.js";import{a as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN,c as safeEqualSecret,i as resolveGatewayAuth,n as authorizeGatewayConnect,o as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET,r as isLocalDirectRequest,s as createAuthRateLimiter,t as assertGatewayAuthConfigured}from"./auth-lebUHrkd.js";import{n as pickPrimaryTailnetIPv4,r as pickPrimaryTailnetIPv6}from"./tailnet-CTj65CYb.js";import{a as isTrustedProxyAddress,d as resolveGatewayClientIp,f as resolveGatewayListenHosts,i as isPrivateOrLoopbackAddress,l as pickPrimaryLanIPv4,n as isLoopbackAddress,p as resolveHostName,r as isLoopbackHost,s as normalizeHostHeader,t as rawDataToString,u as resolveGatewayBindHost}from"./ws-Bbu03j3h.js";import"./server-context-DJZT7Upf.js";import{d as hasBinary}from"./frontmatter-3D1EdC1L.js";import{i as loadWorkspaceSkillEntries,r as buildWorkspaceSkillSnapshot}from"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-BzfLvF8W.js";import"./redact-BHdfp2MZ.js";import{a as isErrno,n as formatErrorMessage}from"./errors-B1MIg3g-.js";import"./paths-cR8ct-Y3.js";import{t as SsrFBlockedError}from"./ssrf-p9k-iapc.js";import{c as detectMime}from"./image-ops-C8IUQKjn.js";import"./store-CmHBQ-yX.js";import{a as inspectPortUsage,c as formatPortDiagnostics,r as ensurePortAvailable}from"./ports-DgmEDNOm.js";import{t as movePathToTrash}from"./trash-DD2Hc5oq.js";import{A as evaluateSessionFreshness,B as resolveMainSessionKey,C as readSessionMessages,D as stripEnvelopeFromMessages,E as resolveSessionTranscriptCandidates,L as canonicalizeMainSessionAlias,M as resolveSessionResetPolicy,R as resolveAgentMainSessionKey,S as capArrayByJsonBytes,U as snapshotSessionOrigin,V as resolveMainSessionKeyFromConfig,a as loadSessionStore,b as archiveFileOnDisk,g as mergeDeliveryContext,m as deliveryContextFromSession,n as parseSessionThreadInfo,rt as cleanStaleLockFiles,t as extractDeliveryInfo,u as updateSessionStore,v as normalizeSessionDeliveryFields,w as readSessionPreviewItemsFromTranscript,x as archiveSessionTranscripts,z as resolveExplicitAgentSessionKey}from"./sessions-CdanN_ZI.js";import{f as GATEWAY_CLIENT_CAPS,g as hasGatewayClientCap,h as GATEWAY_CLIENT_NAMES,i as isGatewayMessageChannel,l as normalizeMessageChannel,m as GATEWAY_CLIENT_MODES,n as isDeliverableMessageChannel,p as GATEWAY_CLIENT_IDS,r as isGatewayCliClient,s as isWebchatClient,t as INTERNAL_MESSAGE_CHANNEL}from"./message-channel-D_jXxXQj.js";import{n as listChannelPlugins,r as normalizeChannelId,t as getChannelPlugin}from"./plugins-D5zP6ENo.js";import"./accounts-o35LU_iy.js";import"./accounts-rmXEiebi.js";import"./accounts-BLueHgKj.js";import{t as buildChannelAccountBindings}from"./bindings-DR59065T.js";import"./send-DerUBvXW.js";import"./send-DyF1Xy9K.js";import{c as resolveStorePath,i as resolveSessionTranscriptPath,n as resolveSessionFilePath,r as resolveSessionFilePathOptions,s as resolveSessionTranscriptsDirForAgent}from"./paths-DJ6rztqJ.js";import{i as normalizeInputProvenance}from"./input-provenance-Ch8I_rOX.js";import"./tool-images-B7b_OiMz.js";import"./tool-display-ByOZtWvA.js";import{t as fetchWithSsrFGuard}from"./fetch-guard-8mwt3-hm.js";import"./api-key-rotation-CHBjUwUJ.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import{n as SILENT_REPLY_TOKEN,r as isSilentReplyText}from"./tokens-CCU3zO-D.js";import{S as globalPersonaRegistry,_ as isBuilderForceAgentsProject,b as USER_PERSONAS_DIR,n as loadProjectContext,o as updateProjectContextFields,v as resolveBuilderForceAgentsDir}from"./project-context-store-wcq7lXuI.js";import{n as createBrowserRouteDispatcher,r as getMachineDisplayName}from"./with-timeout-Bwq-GyUQ.js";import{C as getGlobalHookRunner,T as runGlobalGatewayStopSafely,a as normalizeReplyPayloadsForDelivery,t as deliverOutboundPayloads}from"./deliver-BpLm3ktn.js";import"./send-CBBziNqM.js";import{a as shouldIncludeHook,i as resolveHookConfig,n as loadWorkspaceHookEntries}from"./workspace-D4LK4thI.js";import{a as resolveAgentIdentity,n as createReplyPrefixOptions}from"./reply-prefix-zIMgi6K6.js";import{i as resolveMemoryBackendConfig,r as getMemorySearchManager}from"./memory-cli-DRz4wtHk.js";import"./manager-DwywI_5-.js";import"./retry-DlVhg5qu.js";import{$ as validateNodePairRejectParams,A as validateCronStatusParams,At as validateWizardStatusParams,B as validateExecApprovalsGetParams,C as validateConfigSetParams,Ct as validateUpdateRunParams,D as validateCronRemoveParams,Dt as validateWizardCancelParams,E as validateCronListParams,Et as validateWebLoginWaitParams,F as validateDevicePairRemoveParams,Ft as parseSessionLabel,G as validateModelsListParams,H as validateExecApprovalsNodeSetParams,Ht as verifyDeviceSignature,I as validateDeviceTokenRevokeParams,It as buildDeviceAuthPayload,J as validateNodeInvokeParams,K as validateNodeDescribeParams,L as validateDeviceTokenRotateParams,Lt as normalizeDeviceAuthScopes,M as validateDevicePairApproveParams,Mt as ErrorCodes,N as validateDevicePairListParams,Nt as errorShape,O as validateCronRunParams,Ot as validateWizardNextParams,P as validateDevicePairRejectParams,Q as validateNodePairListParams,R as validateExecApprovalRequestParams,S as validateConfigSchemaParams,St as validateTalkModeParams,T as validateCronAddParams,Tt as validateWebLoginStartParams,U as validateExecApprovalsSetParams,V as validateExecApprovalsNodeGetParams,Vt as normalizeDevicePublicKeyBase64Url,W as validateLogsTailParams,X as validateNodeListParams,Y as validateNodeInvokeResultParams,Z as validateNodePairApproveParams,_ as validateChatInjectParams,_t as validateSkillsBinsParams,a as validateAgentWaitParams,at as validateRequestFrame,b as validateConfigGetParams,bt as validateSkillsUpdateParams,c as validateAgentsFilesGetParams,ct as validateSessionsDeleteParams,d as validateAgentsListParams,dt as validateSessionsPatchParams,et as validateNodePairRequestParams,f as validateAgentsUpdateParams,ft as validateSessionsPreviewParams,g as validateChatHistoryParams,gt as validateSessionsUsageParams,h as validateChatAbortParams,ht as validateSessionsUndoParams,i as validateAgentParams,it as validatePushTestParams,j as validateCronUpdateParams,jt as PROTOCOL_VERSION,k as validateCronRunsParams,kt as validateWizardStartParams,l as validateAgentsFilesListParams,lt as validateSessionsForkParams,m as validateChannelsStatusParams,mt as validateSessionsResolveParams,n as formatValidationErrors,nt as validateNodeRenameParams,o as validateAgentsCreateParams,ot as validateSendParams,p as validateChannelsLogoutParams,pt as validateSessionsResetParams,q as validateNodeEventParams,r as validateAgentIdentityParams,rt as validatePollParams,s as validateAgentsDeleteParams,st as validateSessionsCompactParams,t as GatewayClient,tt as validateNodePairVerifyParams,u as validateAgentsFilesSetParams,ut as validateSessionsListParams,v as validateChatSendParams,vt as validateSkillsInstallParams,w as validateConnectParams,wt as validateWakeParams,x as validateConfigPatchParams,xt as validateTalkConfigParams,y as validateConfigApplyParams,yt as validateSkillsStatusParams,z as validateExecApprovalResolveParams,zt as deriveDeviceIdFromPublicKey}from"./client-xfoidwPI.js";import{n as callGateway,o as loadGatewayTlsRuntime$1}from"./call-BbRf8gFM.js";import{a as jsonResult,t as ToolInputError}from"./common-BTbIhLyt.js";import"./chunk-FCBlVOyo.js";import"./markdown-tables-P6uoUSFa.js";import"./ir-5BNoIXZm.js";import"./render-D1dVTEB1.js";import"./builderforcellm-syscheck-DrFJ638L.js";import"./send-4d9NswaD.js";import"./outbound-attachment-C7wByQO5.js";import"./fetch-DnVtDecb.js";import"./delivery-queue-CXKynF1P.js";import{n as normalizePollInput}from"./polls-IFZVG0cW.js";import{t as getChannelActivity}from"./channel-activity-CCNDbdD3.js";import"./tables-ERcoWFDp.js";import"./pairing-store-CbvMJhD3.js";import{t as formatDocsLink}from"./links-BgWWaaOT.js";import{n as runCommandWithRuntime}from"./cli-utils-LBYKdNFb.js";import{t as formatHelpExamples}from"./help-format-Qfk2vDNX.js";import{n as withProgress}from"./progress-BfOtdN6b.js";import"./resolve-route-D49haUnv.js";import"./replies-Bd2RPZwQ.js";import{a as registerSkillsChangeListener,i as getSkillsSnapshotVersion,n as bumpSkillsSnapshotVersion}from"./refresh-TiC_kLgE.js";import{a as resolveSubagentToolPolicy,i as resolveGroupToolPolicy,r as resolveEffectiveToolPolicy,u as listAgentWorkspaceDirs}from"./coding-tools.policy-6qh9acJy.js";import"./send-BJDzwYJN.js";import{C as normalizeControlUiBasePath,S as buildControlUiAvatarUrl,c as handleReset,w as resolveAssistantAvatarUrl,x as CONTROL_UI_AVATAR_PREFIX}from"./onboard-helpers-Cf5dNq7-.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-BW5jQZlr.js";import{a as loadSessionUsageTimeSeries,c as hasNonzeroUsage,n as loadCostUsageSummary,r as loadSessionCostSummary,s as deriveSessionTotalTokens,t as discoverAllSessions}from"./session-cost-usage-BjH7mxVj.js";import{n as formatTokenCount,r as formatUsd}from"./usage-format-DGf8ZWPH.js";import{t as loadProviderUsageSummary}from"./provider-usage-BdrU4cIE.js";import"./active-listener-Dcg19lJG.js";import{a as mergeExecApprovalsSocketDefaults,c as readExecApprovalsSnapshot,p as saveExecApprovals,r as ensureExecApprovals,s as normalizeExecApprovals,t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS}from"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import{d as savePersonaAssignment,f as initializeBuilderForceAgentsProject,t as appendKnowledgeMemory,u as loadPersonaAssignments}from"./project-context-CJj0Inz-.js";import{r as startBrowserControlServiceFromConfig,t as createBrowserControlContext}from"./control-service-BbsswoMy.js";import{i as parseAbsoluteTimeMs,n as resolveCronStaggerMs,r as resolveDefaultCronStaggerMs,t as normalizeCronStaggerMs}from"./stagger-8EkqkqJv.js";import{n as resolveMessageChannelSelection}from"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-CoGqoBTH.js";import"./transformers-stream-D7nRu4Qu.js";import{i as onHeartbeatEvent,r as getLastHeartbeatEvent,t as resolveHeartbeatVisibility}from"./heartbeat-visibility-D0RvrstE.js";import{n as createOutboundSendDeps,t as createDefaultDeps}from"./deps-CkJiJ6wc.js";import{t as ensureBuilderForceAgentsCliOnPath}from"./path-env-Cy9l1Ba9.js";import"./runtime-guard-DhksRHci.js";import{t as forceFreePortAndWait}from"./ports-ReH_tlKd.js";import{t as buildChannelUiCatalog}from"./catalog-rgiY__UQ.js";import{t as buildWorkspaceSkillStatus}from"./skills-status-vWC0PU8J.js";import{n as DEFAULT_GATEWAY_HTTP_TOOL_DENY}from"./dangerous-tools-DROxC992.js";import{n as inheritOptionFromParent}from"./command-options-DzGFCQYs.js";import{t as WizardCancelledError}from"./prompts-Bchzq3K0.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DTDCy17p.js";import{t as applyPluginAutoEnable}from"./plugin-auto-enable-DDry2fA6.js";import"./install-safe-path-DsLq2BUJ.js";import"./skill-scanner-U3AJgjqc.js";import{t as buildChannelAccountSnapshot}from"./status-PqZ4BoNw.js";import"./channels-status-issues-BlOu0Ul_.js";import"./daemon-runtime-CtOr1ncS.js";import"./systemd-BG3_QT6W.js";import"./service-D-NLDyK3.js";import"./lifecycle-core-Dwb4gHjZ.js";import"./diagnostics-DCjg0nBH.js";import{t as parsePort$1}from"./parse-port-nw1R44xn.js";import{n as addGatewayServiceCommands}from"./daemon-cli-DlwOVDbt.js";import"./table-BoCHYKoQ.js";import{n as resolveWideAreaDiscoveryDomain,r as writeWideAreaGatewayZone}from"./widearea-dns-CZR56vQb.js";import{i as toOptionString,n as extractGatewayMiskeys,r as maybeExplainGatewayServiceStop,t as describeUnknownError}from"./shared-XAatqRQ6.js";import{c as probeGateway,o as isNodeCommandAllowed,s as resolveNodeCommandAllowlist}from"./audit-DGnEhZYe.js";import{t as discoverGatewayBeacons}from"./bonjour-discovery-Dq1G1iS-.js";import{n as getStatusSummary,r as pickGatewaySelfPresence}from"./status-DouJcFzf.js";import{c as startHeartbeatRunner,i as styleHealthChannelLine,n as getHealthSnapshot,o as runHeartbeatOnce,s as setHeartbeatsEnabled,t as formatHealthChannelLines}from"./health-yS3NRKvY.js";import{a as resolveControlUiRootSync,i as resolveControlUiRootOverrideSync,t as ensureControlUiAssetsBuilt}from"./control-ui-assets-CWgH1Tda.js";import{h as normalizeUpdateChannel,l as DEFAULT_PACKAGE_CHANNEL,n as compareSemverStrings,o as resolveNpmChannelTag,t as checkUpdateStatus}from"./update-check-D6MvqVFE.js";import{t as runOnboardingWizard}from"./onboarding-DdKW5K8Y.js";import{a as sendApnsAlert,c as parseMessageWithAttachments,d as shouldLogWs,f as summarizeAgentEventForWsLog,i as resolveApnsAuthConfigFromEnv,l as formatForLog,n as normalizeApnsEnvironment,o as sendApnsBackgroundWake,p as setGatewayWsLogStyle,s as normalizeRpcAttachmentsToChatAttachments,t as loadApnsRegistration,u as logWs}from"./push-apns-C4sJnHbO.js";import{T as resolveGmailHookRuntimeConfig,_ as buildGogWatchServeArgs,i as ensureTailscaleEndpoint,v as buildGogWatchStartArgs}from"./gmail-setup-utils-n7gVQG7k.js";import{t as createOutboundSendDeps$1}from"./outbound-send-deps-CmJnMKI7.js";import{a as pruneAgentConfig,i as loadAgentIdentity,r as findAgentEntryIndex,s as loadAgentIdentityFromWorkspace,t as applyAgentConfig}from"./agents.config-BllQ7zna.js";import{i as resolveAgentOutboundTarget,r as resolveAgentDeliveryPlan,t as agentCommand}from"./agent-cXF-aL0g.js";import"./dm-policy-shared-Dhw9_6mi.js";import"./node-service-DZg9i98f.js";import"./status.update-C9iy31xr.js";import{n as validateSystemRunCommandConsistency,t as formatExecCommand}from"./system-run-command-B2_VsnKm.js";import{t as installSkill}from"./skills-install-Btw_GHbI.js";import{n as runGatewayUpdate,t as resolveAgentSessionDirs}from"./session-dirs-D_ARkyw0.js";import{n as syncBuilderForceAgentsDirectoryOnStartup,t as syncBuilderForceAgentsDirectory}from"./builderforce-directory-sync-DAH62b3b.js";import{n as mergeBuilderforceContext,t as buildLocalMachineProfile}from"./builderforce-context-DEsrFVCz.js";import{a as emitWorkflowEnd,c as initTelemetry,i as emitTaskStart,l as setRelayHook,o as emitWorkflowStart,r as emitTaskEnd}from"./workflow-telemetry-Dc_oseV7.js";import{fileURLToPath,pathToFileURL}from"node:url";import*as fsSync from"node:fs";import fs,{constants}from"node:fs";import os from"node:os";import path,{dirname,join,relative,sep}from"node:path";import crypto,{createHash,randomUUID}from"node:crypto";import JSON5 from"json5";import chalk from"chalk";import fs$1,{mkdir,readFile,readdir,writeFile}from"node:fs/promises";import{execFile,spawn,spawnSync}from"node:child_process";import{promisify}from"node:util";import{z}from"zod";import net from"node:net";import{createServer}from"node:http";import{createServer as createServer$1}from"node:https";import{WebSocket as WebSocket$1,WebSocketServer}from"ws";import{Buffer as Buffer$1}from"node:buffer";import{neutralLimbicState}from"@seanhogg/builderforce-memory-engine/limbic";import{Type}from"@sinclair/typebox";import chokidar from"chokidar";import{EventEmitter}from"node:events";import{Cron}from"croner";import{query}from"@anthropic-ai/claude-agent-sdk";function parsePort(value){if(!value)return;let parsed=Number.parseInt(value,10);if(!(!Number.isFinite(parsed)||parsed<=0))return parsed}function parseSshConfigOutput(output){let result={identityFiles:[]},lines=output.split(`
|
|
2
2
|
`);for(let raw of lines){let line=raw.trim();if(!line)continue;let[key,...rest]=line.split(/\s+/),value=rest.join(` `).trim();if(!(!key||!value))switch(key){case`user`:result.user=value;break;case`hostname`:result.host=value;break;case`port`:result.port=parsePort(value);break;case`identityfile`:value!==`none`&&result.identityFiles.push(value);break;default:break}}return result}async function resolveSshConfig(target,opts={}){let args=[`-G`];target.port>0&&target.port!==22&&args.push(`-p`,String(target.port)),opts.identity?.trim()&&args.push(`-i`,opts.identity.trim());let userHost=target.user?`${target.user}@${target.host}`:target.host;return args.push(`--`,userHost),await new Promise(resolve=>{let child=spawn(`/usr/bin/ssh`,args,{stdio:[`ignore`,`pipe`,`ignore`]}),stdout=``;child.stdout?.setEncoding(`utf8`),child.stdout?.on(`data`,chunk=>{stdout+=String(chunk)});let timeoutMs=Math.max(200,opts.timeoutMs??800),timer=setTimeout(()=>{try{child.kill(`SIGKILL`)}finally{resolve(null)}},timeoutMs);child.once(`error`,()=>{clearTimeout(timer),resolve(null)}),child.once(`exit`,code=>{if(clearTimeout(timer),code!==0||!stdout.trim()){resolve(null);return}resolve(parseSshConfigOutput(stdout))})})}function parseSshTarget(raw){let trimmed=raw.trim().replace(/^ssh\s+/,``);if(!trimmed)return null;let[userPart,hostPart]=trimmed.includes(`@`)?(()=>{let idx=trimmed.indexOf(`@`),user=trimmed.slice(0,idx).trim(),host=trimmed.slice(idx+1).trim();return[user||void 0,host]})():[void 0,trimmed],colonIdx=hostPart.lastIndexOf(`:`);if(colonIdx>0&&colonIdx<hostPart.length-1){let host=hostPart.slice(0,colonIdx).trim(),portRaw=hostPart.slice(colonIdx+1).trim(),port=Number.parseInt(portRaw,10);return!host||!Number.isFinite(port)||port<=0||host.startsWith(`-`)?null:{user:userPart,host,port}}return!hostPart||hostPart.startsWith(`-`)?null:{user:userPart,host:hostPart,port:22}}async function pickEphemeralPort(){return await new Promise((resolve,reject)=>{let server=net.createServer();server.once(`error`,reject),server.listen(0,`127.0.0.1`,()=>{let addr=server.address();server.close(()=>{if(!addr||typeof addr==`string`){reject(Error(`failed to allocate a local port`));return}resolve(addr.port)})})})}async function canConnectLocal(port){return await new Promise(resolve=>{let socket=net.connect({host:`127.0.0.1`,port}),done=ok=>{socket.removeAllListeners(),socket.destroy(),resolve(ok)};socket.once(`connect`,()=>done(!0)),socket.once(`error`,()=>done(!1)),socket.setTimeout(250,()=>done(!1))})}async function waitForLocalListener(port,timeoutMs){let startedAt=Date.now();for(;Date.now()-startedAt<timeoutMs;){if(await canConnectLocal(port))return;await new Promise(r=>setTimeout(r,50))}throw Error(`ssh tunnel did not start listening on localhost:${port}`)}async function startSshPortForward(opts){let parsed=parseSshTarget(opts.target);if(!parsed)throw Error(`invalid SSH target: ${opts.target}`);let localPort=opts.localPortPreferred;try{await ensurePortAvailable(localPort)}catch(err){if(isErrno(err)&&err.code===`EADDRINUSE`)localPort=await pickEphemeralPort();else throw err}let userHost=parsed.user?`${parsed.user}@${parsed.host}`:parsed.host,args=[`-N`,`-L`,`${localPort}:127.0.0.1:${opts.remotePort}`,`-p`,String(parsed.port),`-o`,`ExitOnForwardFailure=yes`,`-o`,`BatchMode=yes`,`-o`,`StrictHostKeyChecking=accept-new`,`-o`,`UpdateHostKeys=yes`,`-o`,`ConnectTimeout=5`,`-o`,`ServerAliveInterval=15`,`-o`,`ServerAliveCountMax=3`];opts.identity?.trim()&&args.push(`-i`,opts.identity.trim()),args.push(`--`,userHost);let stderr=[],child=spawn(`/usr/bin/ssh`,args,{stdio:[`ignore`,`ignore`,`pipe`]});child.stderr?.setEncoding(`utf8`),child.stderr?.on(`data`,chunk=>{let lines=String(chunk).split(`
|
|
3
3
|
`).map(l=>l.trim()).filter(Boolean);stderr.push(...lines)});let stop=async()=>{child.killed||(child.kill(`SIGTERM`),await new Promise(resolve=>{let t=setTimeout(()=>{try{child.kill(`SIGKILL`)}finally{resolve()}},1500);child.once(`exit`,()=>{clearTimeout(t),resolve()})}))};try{await Promise.race([waitForLocalListener(localPort,Math.max(250,opts.timeoutMs)),new Promise((_,reject)=>{child.once(`exit`,(code,signal)=>{reject(Error(`ssh exited (${code??`null`}${signal?`/${signal}`:``})`))})})])}catch(err){await stop();let suffix=stderr.length>0?`\n${stderr.join(`
|
|
4
4
|
`)}`:``;throw Error(`${err instanceof Error?err.message:String(err)}${suffix}`,{cause:err})}return{parsedTarget:parsed,localPort,remotePort:opts.remotePort,pid:typeof child.pid==`number`?child.pid:null,stderr,stop}}function parseIntOrNull(value){let s=typeof value==`string`?value.trim():typeof value==`number`||typeof value==`bigint`?String(value):``;if(!s)return null;let n=Number.parseInt(s,10);return Number.isFinite(n)?n:null}function parseTimeoutMs(raw,fallbackMs){let value=typeof raw==`string`?raw.trim():typeof raw==`number`||typeof raw==`bigint`?String(raw):``;if(!value)return fallbackMs;let parsed=Number.parseInt(value,10);if(!Number.isFinite(parsed)||parsed<=0)throw Error(`invalid --timeout: ${value}`);return parsed}function normalizeWsUrl(value){let trimmed=value.trim();return!trimmed||!trimmed.startsWith(`ws://`)&&!trimmed.startsWith(`wss://`)?null:trimmed}function resolveTargets(cfg,explicitUrl){let targets=[],add=t=>{targets.some(x=>x.url===t.url)||targets.push(t)},explicit=typeof explicitUrl==`string`?normalizeWsUrl(explicitUrl):null;explicit&&add({id:`explicit`,kind:`explicit`,url:explicit,active:!0});let remoteUrl=typeof cfg.gateway?.remote?.url==`string`?normalizeWsUrl(cfg.gateway.remote.url):null;return remoteUrl&&add({id:`configRemote`,kind:`configRemote`,url:remoteUrl,active:cfg.gateway?.mode===`remote`}),add({id:`localLoopback`,kind:`localLoopback`,url:`ws://127.0.0.1:${resolveGatewayPort(cfg)}`,active:cfg.gateway?.mode!==`remote`}),targets}function resolveProbeBudgetMs(overallMs,kind){return kind===`localLoopback`?Math.min(800,overallMs):kind===`sshTunnel`?Math.min(2e3,overallMs):Math.min(1500,overallMs)}function sanitizeSshTarget(value){if(typeof value!=`string`)return null;let trimmed=value.trim();return trimmed?trimmed.replace(/^ssh\\s+/,``):null}function resolveAuthForTarget(cfg,target,overrides){let tokenOverride=overrides.token?.trim()?overrides.token.trim():void 0,passwordOverride=overrides.password?.trim()?overrides.password.trim():void 0;if(tokenOverride||passwordOverride)return{token:tokenOverride,password:passwordOverride};if(target.kind===`configRemote`||target.kind===`sshTunnel`){let token=typeof cfg.gateway?.remote?.token==`string`?cfg.gateway.remote.token.trim():``,remotePassword=cfg.gateway?.remote?.password,password=typeof remotePassword==`string`?remotePassword.trim():``;return{token:token.length>0?token:void 0,password:password.length>0?password:void 0}}let envToken=process.env.BUILDERFORCE_AGENTS_GATEWAY_TOKEN?.trim()||``,envPassword=process.env.BUILDERFORCE_AGENTS_GATEWAY_PASSWORD?.trim()||``,cfgToken=typeof cfg.gateway?.auth?.token==`string`?cfg.gateway.auth.token.trim():``,cfgPassword=typeof cfg.gateway?.auth?.password==`string`?cfg.gateway.auth.password.trim():``;return{token:envToken||cfgToken||void 0,password:envPassword||cfgPassword||void 0}}function extractConfigSummary(snapshotUnknown){let snap=snapshotUnknown,path=typeof snap?.path==`string`?snap.path:null,exists=!!snap?.exists,valid=!!snap?.valid,issuesRaw=Array.isArray(snap?.issues)?snap.issues:[],legacyRaw=Array.isArray(snap?.legacyIssues)?snap.legacyIssues:[],cfg=snap?.config??{},gateway=cfg.gateway??{},wideArea=(cfg.discovery??{}).wideArea??{},remote=gateway.remote??{},auth=gateway.auth??{},controlUi=gateway.controlUi??{},tailscale=gateway.tailscale??{},authMode=typeof auth.mode==`string`?auth.mode:null,authTokenConfigured=typeof auth.token==`string`?auth.token.trim().length>0:!1,authPasswordConfigured=typeof auth.password==`string`?auth.password.trim().length>0:!1,remoteUrl=typeof remote.url==`string`?normalizeWsUrl(remote.url):null,remoteTokenConfigured=typeof remote.token==`string`?remote.token.trim().length>0:!1,remotePasswordConfigured=typeof remote.password==`string`?String(remote.password).trim().length>0:!1,wideAreaEnabled=typeof wideArea.enabled==`boolean`?wideArea.enabled:null;return{path,exists,valid,issues:issuesRaw.filter(i=>!!(i&&typeof i.path==`string`&&typeof i.message==`string`)).map(i=>({path:i.path,message:i.message})),legacyIssues:legacyRaw.filter(i=>!!(i&&typeof i.path==`string`&&typeof i.message==`string`)).map(i=>({path:i.path,message:i.message})),gateway:{mode:typeof gateway.mode==`string`?gateway.mode:null,bind:typeof gateway.bind==`string`?gateway.bind:null,port:parseIntOrNull(gateway.port),controlUiEnabled:typeof controlUi.enabled==`boolean`?controlUi.enabled:null,controlUiBasePath:typeof controlUi.basePath==`string`?controlUi.basePath:null,authMode,authTokenConfigured,authPasswordConfigured,remoteUrl,remoteTokenConfigured,remotePasswordConfigured,tailscaleMode:typeof tailscale.mode==`string`?tailscale.mode:null},discovery:{wideAreaEnabled}}}function buildNetworkHints(cfg){let tailnetIPv4=pickPrimaryTailnetIPv4(),port=resolveGatewayPort(cfg);return{localLoopbackUrl:`ws://127.0.0.1:${port}`,localTailnetUrl:tailnetIPv4?`ws://${tailnetIPv4}:${port}`:null,tailnetIPv4:tailnetIPv4??null}}function renderTargetHeader(target,rich){let kindLabel=target.kind===`localLoopback`?`Local loopback`:target.kind===`sshTunnel`?`Remote over SSH`:target.kind===`configRemote`?target.active?`Remote (configured)`:`Remote (configured, inactive)`:`URL (explicit)`;return`${colorize(rich,theme.heading,kindLabel)} ${colorize(rich,theme.muted,target.url)}`}function renderProbeSummaryLine(probe,rich){if(probe.ok){let latency=typeof probe.connectLatencyMs==`number`?`${probe.connectLatencyMs}ms`:`unknown`;return`${colorize(rich,theme.success,`Connect: ok`)} (${latency}) · ${colorize(rich,theme.success,`RPC: ok`)}`}let detail=probe.error?` - ${probe.error}`:``;if(probe.connectLatencyMs!=null){let latency=typeof probe.connectLatencyMs==`number`?`${probe.connectLatencyMs}ms`:`unknown`;return`${colorize(rich,theme.success,`Connect: ok`)} (${latency}) · ${colorize(rich,theme.error,`RPC: failed`)}${detail}`}return`${colorize(rich,theme.error,`Connect: failed`)}${detail}`}async function gatewayStatusCommand(opts,runtime){let startedAt=Date.now(),cfg=loadConfig(),rich=isRich()&&opts.json!==!0,overallTimeoutMs=parseTimeoutMs(opts.timeout,3e3),wideAreaDomain=resolveWideAreaDiscoveryDomain({configDomain:cfg.discovery?.wideArea?.domain}),baseTargets=resolveTargets(cfg,opts.url),network=buildNetworkHints(cfg),discoveryTimeoutMs=Math.min(1200,overallTimeoutMs),discoveryPromise=discoverGatewayBeacons({timeoutMs:discoveryTimeoutMs,wideAreaDomain}),sshTarget=sanitizeSshTarget(opts.ssh)??sanitizeSshTarget(cfg.gateway?.remote?.sshTarget),sshIdentity=sanitizeSshTarget(opts.sshIdentity)??sanitizeSshTarget(cfg.gateway?.remote?.sshIdentity),remotePort=resolveGatewayPort(cfg),sshTunnelError=null,sshTunnelStarted=!1;if(sshTarget||=inferSshTargetFromRemoteUrl(cfg.gateway?.remote?.url),sshTarget){let resolved=await resolveSshTarget(sshTarget,sshIdentity,overallTimeoutMs);resolved&&(sshTarget=resolved.target,!sshIdentity&&resolved.identity&&(sshIdentity=resolved.identity))}let{discovery,probed}=await withProgress({label:`Inspecting gateways…`,indeterminate:!0,enabled:opts.json!==!0},async()=>{let tryStartTunnel=async()=>{if(!sshTarget)return null;try{let tunnel=await startSshPortForward({target:sshTarget,identity:sshIdentity??void 0,localPortPreferred:remotePort,remotePort,timeoutMs:Math.min(1500,overallTimeoutMs)});return sshTunnelStarted=!0,tunnel}catch(err){return sshTunnelError=err instanceof Error?err.message:String(err),null}},discoveryTask=discoveryPromise.catch(()=>[]),tunnelTask=sshTarget?tryStartTunnel():Promise.resolve(null),[discovery,tunnelFirst]=await Promise.all([discoveryTask,tunnelTask]);if(!sshTarget&&opts.sshAuto){let user=process.env.USER?.trim()||``,candidates=discovery.map(b=>{let host=b.tailnetDns||b.lanHost||b.host;if(!host?.trim())return null;let sshPort=typeof b.sshPort==`number`&&b.sshPort>0?b.sshPort:22,base=user?`${user}@${host.trim()}`:host.trim();return sshPort===22?base:`${base}:${sshPort}`}).filter(candidate=>!!(candidate&&parseSshTarget(candidate)));candidates.length>0&&(sshTarget=candidates[0]??null)}let tunnel=tunnelFirst||(sshTarget&&!sshTunnelStarted&&!sshTunnelError?await tryStartTunnel():null),tunnelTarget=tunnel?{id:`sshTunnel`,kind:`sshTunnel`,url:`ws://127.0.0.1:${tunnel.localPort}`,active:!0,tunnel:{kind:`ssh`,target:sshTarget??``,localPort:tunnel.localPort,remotePort,pid:tunnel.pid}}:null,targets=tunnelTarget?[tunnelTarget,...baseTargets.filter(t=>t.url!==tunnelTarget.url)]:baseTargets;try{return{discovery,probed:await Promise.all(targets.map(async target=>{let auth=resolveAuthForTarget(cfg,target,{token:typeof opts.token==`string`?opts.token:void 0,password:typeof opts.password==`string`?opts.password:void 0}),timeoutMs=resolveProbeBudgetMs(overallTimeoutMs,target.kind),probe=await probeGateway({url:target.url,auth,timeoutMs});return{target,probe,configSummary:probe.configSnapshot?extractConfigSummary(probe.configSnapshot):null,self:pickGatewaySelfPresence(probe.presence)}}))}}finally{if(tunnel)try{await tunnel.stop()}catch{}}}),reachable=probed.filter(p=>p.probe.ok),ok=reachable.length>0,multipleGateways=reachable.length>1,primary=reachable.find(p=>p.target.kind===`explicit`)??reachable.find(p=>p.target.kind===`sshTunnel`)??reachable.find(p=>p.target.kind===`configRemote`)??reachable.find(p=>p.target.kind===`localLoopback`)??null,warnings=[];if(sshTarget&&!sshTunnelStarted&&warnings.push({code:`ssh_tunnel_failed`,message:sshTunnelError?`SSH tunnel failed: ${String(sshTunnelError)}`:`SSH tunnel failed to start; falling back to direct probes.`}),multipleGateways&&warnings.push({code:`multiple_gateways`,message:`Unconventional setup: multiple reachable gateways detected. Usually one gateway per network is recommended unless you intentionally run isolated profiles, like a rescue bot (see docs: /gateway#multiple-gateways-same-host).`,targetIds:reachable.map(p=>p.target.id)}),opts.json){runtime.log(JSON.stringify({ok,ts:Date.now(),durationMs:Date.now()-startedAt,timeoutMs:overallTimeoutMs,primaryTargetId:primary?.target.id??null,warnings,network,discovery:{timeoutMs:discoveryTimeoutMs,count:discovery.length,beacons:discovery.map(b=>({instanceName:b.instanceName,displayName:b.displayName??null,domain:b.domain??null,host:b.host??null,lanHost:b.lanHost??null,tailnetDns:b.tailnetDns??null,gatewayPort:b.gatewayPort??null,sshPort:b.sshPort??null,wsUrl:(()=>{let host=b.tailnetDns||b.lanHost||b.host,port=b.gatewayPort??18789;return host?`ws://${host}:${port}`:null})()}))},targets:probed.map(p=>({id:p.target.id,kind:p.target.kind,url:p.target.url,active:p.target.active,tunnel:p.target.tunnel??null,connect:{ok:p.probe.ok,latencyMs:p.probe.connectLatencyMs,error:p.probe.error,close:p.probe.close},self:p.self,config:p.configSummary,health:p.probe.health,summary:p.probe.status,presence:p.probe.presence}))},null,2)),ok||runtime.exit(1);return}if(runtime.log(colorize(rich,theme.heading,`Gateway Status`)),runtime.log(ok?`${colorize(rich,theme.success,`Reachable`)}: yes`:`${colorize(rich,theme.error,`Reachable`)}: no`),runtime.log(colorize(rich,theme.muted,`Probe budget: ${overallTimeoutMs}ms`)),warnings.length>0){runtime.log(``),runtime.log(colorize(rich,theme.warn,`Warning:`));for(let w of warnings)runtime.log(`- ${w.message}`)}runtime.log(``),runtime.log(colorize(rich,theme.heading,`Discovery (this machine)`));let discoveryDomains=wideAreaDomain?`local. + ${wideAreaDomain}`:`local.`;runtime.log(discovery.length>0?`Found ${discovery.length} gateway(s) via Bonjour (${discoveryDomains})`:`Found 0 gateways via Bonjour (${discoveryDomains})`),discovery.length===0&&runtime.log(colorize(rich,theme.muted,`Tip: if the gateway is remote, mDNS won’t cross networks; use Wide-Area Bonjour (split DNS) or SSH tunnels.`)),runtime.log(``),runtime.log(colorize(rich,theme.heading,`Targets`));for(let p of probed){if(runtime.log(renderTargetHeader(p.target,rich)),runtime.log(` ${renderProbeSummaryLine(p.probe,rich)}`),p.target.tunnel?.kind===`ssh`&&runtime.log(` ${colorize(rich,theme.muted,`ssh`)}: ${colorize(rich,theme.command,p.target.tunnel.target)}`),p.probe.ok&&p.self){let host=p.self.host??`unknown`,ip=p.self.ip?` (${p.self.ip})`:``,platform=p.self.platform?` · ${p.self.platform}`:``,version=p.self.version?` · app ${p.self.version}`:``;runtime.log(` ${colorize(rich,theme.info,`Gateway`)}: ${host}${ip}${platform}${version}`)}if(p.configSummary){let c=p.configSummary,wideArea=c.discovery.wideAreaEnabled===!0?`enabled`:c.discovery.wideAreaEnabled===!1?`disabled`:`unknown`;runtime.log(` ${colorize(rich,theme.info,`Wide-area discovery`)}: ${wideArea}`)}runtime.log(``)}ok||runtime.exit(1)}function inferSshTargetFromRemoteUrl(rawUrl){if(typeof rawUrl!=`string`)return null;let trimmed=rawUrl.trim();if(!trimmed)return null;let host=null;try{host=new URL(trimmed).hostname||null}catch{return null}if(!host)return null;let user=process.env.USER?.trim()||``;return user?`${user}@${host}`:host}function buildSshTarget(input){let host=input.host?.trim()??``;if(!host)return null;let user=input.user?.trim()??``,base=user?`${user}@${host}`:host,port=input.port??22;return port&&port!==22?`${base}:${port}`:base}async function resolveSshTarget(rawTarget,identity,overallTimeoutMs){let parsed=parseSshTarget(rawTarget);if(!parsed)return null;let config=await resolveSshConfig(parsed,{identity:identity??void 0,timeoutMs:Math.min(800,overallTimeoutMs)});if(!config)return{target:rawTarget,identity:identity??void 0};let target=buildSshTarget({user:config.user??parsed.user,host:config.host??parsed.host,port:config.port??parsed.port});return target?{target,identity:identity??config.identityFiles.find(entry=>entry.trim().length>0)?.trim()??void 0}:{target:rawTarget,identity:identity??void 0}}const gatewayCallOpts=cmd=>cmd.option(`--url <url>`,`Gateway WebSocket URL (defaults to gateway.remote.url when configured)`).option(`--token <token>`,`Gateway token (if required)`).option(`--password <password>`,`Gateway password (password auth)`).option(`--timeout <ms>`,`Timeout in ms`,`10000`).option(`--expect-final`,`Wait for final response (agent)`,!1).option(`--json`,`Output JSON`,!1),callGatewayCli=async(method,opts,params)=>withProgress({label:`Gateway ${method}`,indeterminate:!0,enabled:opts.json!==!0},async()=>await callGateway({url:opts.url,token:opts.token,password:opts.password,method,params,expectFinal:!!opts.expectFinal,timeoutMs:Number(opts.timeout??1e4),clientName:GATEWAY_CLIENT_NAMES.CLI,mode:GATEWAY_CLIENT_MODES.CLI}));function parseDiscoverTimeoutMs(raw,fallbackMs){if(raw==null)return fallbackMs;let value=typeof raw==`string`?raw.trim():typeof raw==`number`||typeof raw==`bigint`?String(raw):null;if(value===null)throw Error(`invalid --timeout`);if(!value)return fallbackMs;let parsed=Number.parseInt(value,10);if(!Number.isFinite(parsed)||parsed<=0)throw Error(`invalid --timeout: ${value}`);return parsed}function pickBeaconHost(beacon){let host=beacon.host||beacon.tailnetDns||beacon.lanHost;return host?.trim()?host.trim():null}function pickGatewayPort(beacon){let port=beacon.port??beacon.gatewayPort??18789;return port>0?port:18789}function dedupeBeacons(beacons){let out=[],seen=new Set;for(let b of beacons){let host=pickBeaconHost(b)??``,key=[b.domain??``,b.instanceName??``,b.displayName??``,host,String(b.port??``),String(b.gatewayPort??``)].join(`|`);seen.has(key)||(seen.add(key),out.push(b))}return out}function renderBeaconLines(beacon,rich){let nameRaw=(beacon.displayName||beacon.instanceName||`Gateway`).trim(),domainRaw=(beacon.domain||`local.`).trim(),title=colorize(rich,theme.accentBright,nameRaw),domain=colorize(rich,theme.muted,domainRaw),host=pickBeaconHost(beacon),gatewayPort=pickGatewayPort(beacon),scheme=beacon.gatewayTls?`wss`:`ws`,wsUrl=host?`${scheme}://${host}:${gatewayPort}`:null,lines=[`- ${title} ${domain}`];if(beacon.tailnetDns&&lines.push(` ${colorize(rich,theme.info,`tailnet`)}: ${beacon.tailnetDns}`),beacon.lanHost&&lines.push(` ${colorize(rich,theme.info,`lan`)}: ${beacon.lanHost}`),beacon.host&&lines.push(` ${colorize(rich,theme.info,`host`)}: ${beacon.host}`),wsUrl&&lines.push(` ${colorize(rich,theme.muted,`ws`)}: ${colorize(rich,theme.command,wsUrl)}`),beacon.role&&lines.push(` ${colorize(rich,theme.muted,`role`)}: ${beacon.role}`),beacon.transport&&lines.push(` ${colorize(rich,theme.muted,`transport`)}: ${beacon.transport}`),beacon.gatewayTls){let fingerprint=beacon.gatewayTlsFingerprintSha256?`sha256 ${beacon.gatewayTlsFingerprintSha256}`:`enabled`;lines.push(` ${colorize(rich,theme.muted,`tls`)}: ${fingerprint}`)}if(typeof beacon.sshPort==`number`&&beacon.sshPort>0&&host){let ssh=`ssh -N -L 18789:127.0.0.1:18789 <user>@${host} -p ${beacon.sshPort}`;lines.push(` ${colorize(rich,theme.muted,`ssh`)}: ${colorize(rich,theme.command,ssh)}`)}return lines}function truncateCloseReason(reason,maxBytes=120){if(!reason)return`invalid handshake`;let buf=Buffer$1.from(reason);return buf.length<=maxBytes?reason:buf.subarray(0,maxBytes).toString()}const log$7=createSubsystemLogger(`gateway/exec-approvals`);function normalizeMode(mode){return mode??`session`}function matchSessionFilter(sessionKey,patterns){return patterns.some(pattern=>{try{return sessionKey.includes(pattern)||new RegExp(pattern).test(sessionKey)}catch{return sessionKey.includes(pattern)}})}function shouldForward(params){let config=params.config;if(!config?.enabled)return!1;if(config.agentFilter?.length){let agentId=params.request.request.agentId??parseAgentSessionKey(params.request.request.sessionKey)?.agentId;if(!agentId||!config.agentFilter.includes(agentId))return!1}if(config.sessionFilter?.length){let sessionKey=params.request.request.sessionKey;if(!sessionKey||!matchSessionFilter(sessionKey,config.sessionFilter))return!1}return!0}function buildTargetKey(target){let channel=normalizeMessageChannel(target.channel)??target.channel,accountId=target.accountId??``,threadId=target.threadId??``;return[channel,target.to,accountId,threadId].join(`:`)}function shouldSkipDiscordForwarding(target){return(normalizeMessageChannel(target.channel)??target.channel)===`discord`}function formatApprovalCommand(command){if(!command.includes(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as expandHomePrefix,g as resolveStateDir,i as isNixMode,l as resolveGatewayLockDir,o as resolveConfigPath,r as STATE_DIR,t as CONFIG_PATH,u as resolveGatewayPort,y as resolveRequiredHomeDir}from"./paths-BHg-VHB4.js";import{C as createInternalHookEvent,S as clearInternalHooks,T as triggerInternalHook,d as getActivePluginRegistry,m as createEmptyPluginRegistry,r as DEFAULT_CHAT_CHANNEL,t as CHANNEL_IDS,w as registerInternalHook}from"./registry-Cv7CoWAs.js";import{E as truncateUtf16Safe,H as getChildLogger,L as colorize,N as setVerbose,R as isRich,S as shortenHomePath,U as getLogger,W as getResolvedLoggerSettings,n as clamp,s as ensureDir,t as CONFIG_DIR,u as isPlainObject,y as resolveUserPath,z as theme}from"./utils-BP60e80M.js";import{a as setConsoleSubsystemFilter,n as runtimeForLogger,o as setConsoleTimestampPrefix,p as defaultRuntime,t as createSubsystemLogger}from"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import{n as logAcceptedEnvOption,t as isTruthyEnvValue}from"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import{B as resolveAllowedModelRef,H as resolveConfiguredModelRef,Ht as CURRENT_SESSION_VERSION,It as canUseToolDecision,J as resolveThinkingDefault,K as resolveSubagentConfiguredModelSelection,N as getModelRefStatus,O as isPidAlive,P as isCliProvider,Qt as normalizeSecretInput,U as resolveDefaultModelForAgent,Ut as SessionManager,W as resolveHooksGmailModel,_n as DEFAULT_PROVIDER,gn as DEFAULT_MODEL,hn as DEFAULT_CONTEXT_TOKENS,k as buildAllowedModelSet,rt as resolveFreetokenApiBase,st as resolveOllamaApiBase,zt as nativeComplete}from"./auth-profiles-C1VbcUOm.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import"./src-DvWaTze9.js";import{i as logWarn,t as logDebug}from"./logger-wuOr7HKl.js";import{C as parseAgentSessionKey,S as isSubagentSessionKey,_ as toAgentStoreSessionKey,a as buildAgentMainSessionKey,b as isCronRunSessionKey,c as classifySessionKeyShape,d as normalizeAgentId,f as normalizeMainKey,g as toAgentRequestSessionKey,l as isValidAgentId,n as DEFAULT_ACCOUNT_ID,p as resolveAgentIdFromSessionKey,r as DEFAULT_AGENT_ID,t as AGENT_ID_PATTERN}from"./session-key-CksCYipj.js";import{s as matchesSkillFilter,t as resolveBuilderForceAgentsPackageRoot}from"./builderforce-root-DY1qbWNX.js";import{n as runExec,t as runCommandWithTimeout}from"./exec-COgsU9ql.js";import{A as resolveWorkspaceFilePath,E as isWorkspaceOnboardingCompleted,O as resolveAgentRuntimeDir,S as DEFAULT_USER_FILENAME,_ as DEFAULT_IDENTITY_FILENAME,a as resolveAgentModelFallbacksOverride,b as DEFAULT_SOUL_FILENAME,c as resolveAgentWorkspaceDir,d as resolveSessionAgentId,g as DEFAULT_HEARTBEAT_FILENAME,h as DEFAULT_BOOTSTRAP_FILENAME,i as resolveAgentDir,j as resolveWorkspaceTemplateDir,k as resolveDefaultAgentWorkspaceDir,l as resolveDefaultAgentId,n as listAgentIds,p as DEFAULT_AGENTS_FILENAME,r as resolveAgentConfig,s as resolveAgentSkillsFilter,t as listAgentEntries,v as DEFAULT_MEMORY_ALT_FILENAME,w as ensureAgentWorkspace,x as DEFAULT_TOOLS_FILENAME,y as DEFAULT_MEMORY_FILENAME}from"./agent-scope-CufEmNj_.js";import{t as normalizeBaseUrl}from"./normalize-base-url-D_sv6Zgt.js";import{i as readSharedEnvVar,t as isOfflineMode}from"./env-file-DeS6x2OL.js";import{C as renderPolicyDirectives,E as resolveEngineById,T as CURRENT_ENGINE_ID,b as coercePolicyGates,i as deriveActivitySummary,n as KNOWLEDGE_DIRS,r as buildKnowledgeMemoryEntry$1}from"./src-HrLX5bhG.js";import{A as applyMergePatch,H as resolveSubagentMaxConcurrent,U as VERSION,V as resolveAgentMaxConcurrent,W as resolveRuntimeServiceVersion,a as readConfigFileSnapshot,c as writeConfigFile,f as validateConfigObjectWithPlugins,i as parseConfigJson5,j as applyLegacyMigrations,n as createConfigIO,o as readConfigFileSnapshotForWrite,p as BuilderForceAgentsSchema,r as loadConfig,s as resolveConfigSnapshotHash,v as sensitive,y as parseDurationMs}from"./io-CohJffHG.js";import{s as isTestDefaultMemorySlotDisabled}from"./manifest-registry-009gLJ4l.js";import{t as migrateLegacyConfig}from"./config-toczWD3q.js";import"./model-discovery-C9Xm95uL.js";import{r as loadModelCatalog}from"./model-catalog-CiiFJX77.js";import{d as hasBinary}from"./frontmatter-CaY7feZm.js";import{i as loadWorkspaceSkillEntries,r as buildWorkspaceSkillSnapshot}from"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import{t as buildWorkspaceSkillStatus}from"./skills-status-CGlKz1D1.js";import{a as registerSkillsChangeListener,i as getSkillsSnapshotVersion,n as bumpSkillsSnapshotVersion}from"./refresh-C4vwneXT.js";import{$ as validateNodePairRejectParams,A as validateCronStatusParams,At as validateWizardStatusParams,B as validateExecApprovalsGetParams,C as validateConfigSetParams,Ct as validateUpdateRunParams,D as validateCronRemoveParams,Dt as validateWizardCancelParams,E as validateCronListParams,Et as validateWebLoginWaitParams,F as validateDevicePairRemoveParams,Ft as parseSessionLabel,G as validateModelsListParams,H as validateExecApprovalsNodeSetParams,Ht as verifyDeviceSignature,I as validateDeviceTokenRevokeParams,It as buildDeviceAuthPayload,J as validateNodeInvokeParams,K as validateNodeDescribeParams,L as validateDeviceTokenRotateParams,Lt as normalizeDeviceAuthScopes,M as validateDevicePairApproveParams,Mt as ErrorCodes,N as validateDevicePairListParams,Nt as errorShape,O as validateCronRunParams,Ot as validateWizardNextParams,P as validateDevicePairRejectParams,Q as validateNodePairListParams,R as validateExecApprovalRequestParams,S as validateConfigSchemaParams,St as validateTalkModeParams,T as validateCronAddParams,Tt as validateWebLoginStartParams,U as validateExecApprovalsSetParams,V as validateExecApprovalsNodeGetParams,Vt as normalizeDevicePublicKeyBase64Url,W as validateLogsTailParams,X as validateNodeListParams,Y as validateNodeInvokeResultParams,Z as validateNodePairApproveParams,_ as validateChatInjectParams,_t as validateSkillsBinsParams,a as validateAgentWaitParams,at as validateRequestFrame,b as validateConfigGetParams,bt as validateSkillsUpdateParams,c as validateAgentsFilesGetParams,ct as validateSessionsDeleteParams,d as validateAgentsListParams,dt as validateSessionsPatchParams,et as validateNodePairRequestParams,f as validateAgentsUpdateParams,ft as validateSessionsPreviewParams,g as validateChatHistoryParams,gt as validateSessionsUsageParams,h as validateChatAbortParams,ht as validateSessionsUndoParams,i as validateAgentParams,it as validatePushTestParams,j as validateCronUpdateParams,jt as PROTOCOL_VERSION,k as validateCronRunsParams,kt as validateWizardStartParams,l as validateAgentsFilesListParams,lt as validateSessionsForkParams,m as validateChannelsStatusParams,mt as validateSessionsResolveParams,n as formatValidationErrors,nt as validateNodeRenameParams,o as validateAgentsCreateParams,ot as validateSendParams,p as validateChannelsLogoutParams,pt as validateSessionsResetParams,q as validateNodeEventParams,r as validateAgentIdentityParams,rt as validatePollParams,s as validateAgentsDeleteParams,st as validateSessionsCompactParams,t as GatewayClient,tt as validateNodePairVerifyParams,u as validateAgentsFilesSetParams,ut as validateSessionsListParams,v as validateChatSendParams,vt as validateSkillsInstallParams,w as validateConnectParams,wt as validateWakeParams,x as validateConfigPatchParams,xt as validateTalkConfigParams,y as validateConfigApplyParams,yt as validateSkillsStatusParams,z as validateExecApprovalResolveParams,zt as deriveDeviceIdFromPublicKey}from"./client-CGgp3zkQ.js";import{n as pickPrimaryTailnetIPv4,r as pickPrimaryTailnetIPv6}from"./tailnet-B0Q5E6lZ.js";import{n as callGateway,o as loadGatewayTlsRuntime$1}from"./call-DmAU4cRX.js";import{f as GATEWAY_CLIENT_CAPS,g as hasGatewayClientCap,h as GATEWAY_CLIENT_NAMES,i as isGatewayMessageChannel,l as normalizeMessageChannel,m as GATEWAY_CLIENT_MODES,n as isDeliverableMessageChannel,p as GATEWAY_CLIENT_IDS,r as isGatewayCliClient,s as isWebchatClient,t as INTERNAL_MESSAGE_CHANNEL}from"./message-channel-z5YRpR2d.js";import{c as pickPrimaryLanIPv4,d as resolveGatewayListenHosts,f as resolveHostName,i as isTrustedProxyAddress,l as resolveGatewayBindHost,n as isLoopbackHost,o as normalizeHostHeader,p as rawDataToString,r as isPrivateOrLoopbackAddress,t as isLoopbackAddress,u as resolveGatewayClientIp}from"./net-DtnXq2dW.js";import{i as normalizeInputProvenance}from"./input-provenance-Rnkkt19n.js";import{$ as resolveAnnounceTargetFromKey,$r as setCommandLaneConcurrency,A as sleepWithAbort,Ar as registerTeamMemoryContextBuilder,At as persistBrowserProxyFiles,B as createReplyDispatcher,Br as setTtsProvider,Bt as dispatchToRemoteAgentNode,Cn as verifyPairingToken,Cr as resolveUserTimezone,D as readJsonBodyWithLimit,Dn as readJsonFile,Dr as getSsmMemoryService,Dt as getHookType,E as handleSlackHttpRequest,En as createAsyncLock,Er as initLimbicSystemService,Et as detectSuspiciousPatterns,Fn as applyVerboseOverride,Fr as resolveTtsAutoMode,Ft as gitHistoryTool,Gn as extractFileContentFromSource,Gt as spawnSubagentDirect,Hn as DEFAULT_INPUT_IMAGE_MIMES,Hr as OPENAI_TTS_MODELS,Ht as loadHiredAgentsCached,In as parseVerboseOverride,Ir as resolveTtsConfig,It as workflowStatusTool,J as setCliSessionId,Jn as resolveInputFileLimits,Jt as getBuiltInAgentRoles,K as resolveCronStyleNow,Kn as extractImageContentFromSource,Kt as resolveRelayTaskModel,Ln as enqueueSystemEvent,Lr as resolveTtsPrefsPath,Lt as globalOrchestrator,Mr as isTtsEnabled,Mt as resolveApproval,Nr as isTtsProviderConfigured,Nt as semanticSearchTool,O as requestBodyErrorToText,On as writeJsonAtomic,Or as initSsmMemoryService,Ot as isExternalHookSession,P as buildHistoryContextFromEntries,Pn as applyModelOverrideToSessionEntry,Pr as resolveTtsApiKey,Pt as agentFleetTool,Q as readLatestAssistantReply,Qr as resetAllLanes,Qt as normalizeGroupActivation,Rn as isSystemEventContextChanged,Rr as resolveTtsProviderOrder,Rt as dispatchChunkToRemoteAgentNode,S as getPluginToolMeta,Sn as generatePairingToken,Sr as writeRestartSentinel,St as stripLegacyDeliveryFields,Tn as resolvePairingPaths,Tr as getLimbicSystemService,Tt as buildSafeExternalPrompt,Un as DEFAULT_INPUT_MAX_REDIRECTS,Ur as OPENAI_TTS_VOICES,Ut as projectKnowledgeTool,V as getTotalPendingReplies,Vn as DEFAULT_INPUT_IMAGE_MAX_BYTES,Vr as textToSpeech,Vt as fetchFleetEntries,W as BARE_SESSION_RESET_PROMPT,Wn as DEFAULT_INPUT_TIMEOUT_MS,Wt as codebaseSearchTool,Xn as resolveAgentTimeoutMs,Y as runCliAgent,Yr as getActiveTaskCount,Yt as registerPlatformPersonasAsRoles,Z as createBuilderForceAgentsTools,Zr as getTotalQueueSize,_ as getActiveEmbeddedRunCount,_n as rejectNodePairing,_r as formatDoctorNonInteractiveHint,_t as normalizePayloadToSystemText,ar as stopSubagentsForRequester,at as resolveOutboundTarget,b as buildDefaultToolPolicyPipelineSteps,bn as updatePairedNodeMetadata,br as summarizeRestartSentinel,bt as buildDeliveryFromLegacyPayload,cn as getRemoteSkillEligibility,cr as consumeGatewaySigusr1RestartAuthorization,ct as resetDirectoryCache,di as clearAgentRunContext,dn as refreshRemoteBinsForConnectedNodes,dr as isGatewaySigusr1RestartExternallyAllowed,dt as normalizeCronJobCreate,ei as waitForActiveTasks,fi as emitAgentEvent,fn as refreshRemoteNodeBins,fr as markGatewaySigusr1RestartHandled,ft as normalizeCronJobPatch,g as abortEmbeddedRun,gn as listNodePairing,gr as consumeRestartSentinel,gt as normalizeOptionalText,h as runEmbeddedAgent,hi as registerAgentRunContext,hn as approveNodePairing,hr as setPreRestartDeferralCheck,ht as normalizeOptionalSessionKey,i as initSubagentRegistry,ii as isDiagnosticsEnabled,in as requestHeartbeatNow,ir as isAbortTrigger,jr as getTtsProvider,jt as initApprovalGate,k as computeBackoff,kr as registerKnowledgeLoop,kt as applyBrowserProxyPaths,ln as primeRemoteSkillsCache,lr as deferGatewayRestartUntilIdle,m as clearSessionQueues,mi as onAgentEvent,mn as setSkillsRemoteRegistry,mr as setGatewaySigusr1RestartPolicy,mt as normalizeOptionalAgentId,n as countActiveDescendantRuns,ni as startDiagnosticHeartbeat,nt as resolveOutboundSessionRoute,o as listDescendantRunsForRequester,oi as DEFAULT_HEARTBEAT_ACK_MAX_CHARS,on as normalizeSendPolicy,ot as resolveSessionDeliveryTarget,p as runSubagentAnnounceFlow,pi as getAgentRunContext,pn as removeRemoteNodeInfo,pr as scheduleGatewaySigusr1Restart,pt as inferLegacyName,q as getCliSessionId,qn as normalizeMimeList,qr as runWithModelFallback,qt as findAgentRole,ri as stopDiagnosticHeartbeat,sn as resolveSendPolicy,ti as CommandLane,tr as formatZonedTimestamp,tt as ensureOutboundSessionEntry,ui as stripHeartbeatToken,un as recordRemoteNodeInfo,ur as emitGatewayRestart,ut as normalizeHttpWebhookUrl,v as waitForEmbeddedRunEnd,vn as renamePairedNode,vr as formatRestartSentinelMessage,vt as normalizeRequiredName,w as loadBuilderForceAgentsPlugins,wn as pruneExpiredPending,wr as buildAssignedCapabilityAppend,xn as verifyNodeToken,xt as hasLegacyDeliveryHints,y as applyToolPolicyPipeline,yn as requestNodePairing,yt as migrateLegacyCronPayload,z as dispatchInboundMessage,zr as setTtsEnabled,zt as dispatchResultToRemoteAgentNode}from"./subagent-registry-CyGxu3kP.js";import{A as canonicalizeMainSessionAlias,C as evaluateSessionFreshness,I as snapshotSessionOrigin,M as resolveExplicitAgentSessionKey,N as resolveMainSessionKey,P as resolveMainSessionKeyFromConfig,Q as deliveryContextFromSession,T as resolveSessionResetPolicy,X as cleanStaleLockFiles,_ as readSessionMessages,a as loadSessionStore,b as resolveSessionTranscriptCandidates,et as mergeDeliveryContext,g as capArrayByJsonBytes,h as archiveSessionTranscripts,j as resolveAgentMainSessionKey,m as archiveFileOnDisk,n as parseSessionThreadInfo,nt as normalizeSessionDeliveryFields,t as extractDeliveryInfo,u as updateSessionStore,v as readSessionPreviewItemsFromTranscript,x as stripEnvelopeFromMessages}from"./sessions-Bl1wwotX.js";import{S as globalPersonaRegistry,_ as isBuilderForceAgentsProject,b as USER_PERSONAS_DIR,n as loadProjectContext,o as updateProjectContextFields,v as resolveBuilderForceAgentsDir}from"./project-context-store-CIUcwUP_.js";import{n as SILENT_REPLY_TOKEN,r as isSilentReplyText}from"./tokens-CFKkpUIu.js";import{n as listChannelPlugins,r as normalizeChannelId,t as getChannelPlugin}from"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import{t as buildChannelAccountBindings}from"./bindings-CKSDlQ1i.js";import"./send-BvroeIQ6.js";import"./send-CceNWtYE.js";import{n as createBrowserRouteDispatcher,r as getMachineDisplayName}from"./with-timeout-T07SJo4N.js";import{C as getGlobalHookRunner,T as runGlobalGatewayStopSafely,a as normalizeReplyPayloadsForDelivery,t as deliverOutboundPayloads}from"./deliver-BuZu68tp.js";import"./accounts-Cx82nj4E.js";import"./send-ByCVQQVz.js";import{c as detectMime}from"./image-ops-CotJhwRR.js";import"./redact-CgO7wehS.js";import{a as isErrno,n as formatErrorMessage}from"./errors-tAt19c1E.js";import{a as formatXHighModelHint,c as normalizeElevatedLevel,d as normalizeUsageDisplay,f as normalizeVerboseLevel,i as formatThinkingLevels,l as normalizeReasoningLevel,m as supportsXHighThinking,u as normalizeThinkLevel}from"./embedded-helpers-DK8_apW0.js";import{g as collectExplicitAllowlist,x as resolveToolProfilePolicy,y as mergeAlsoAllowPolicy}from"./sandbox-z9t_PRf9.js";import"./chrome-BnEbJV3D.js";import{i as enableTailscaleServe,n as disableTailscaleServe,o as getTailnetHostname,r as enableTailscaleFunnel,t as disableTailscaleFunnel}from"./tailscale-DV-yOmYe.js";import{a as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN,c as safeEqualSecret,i as resolveGatewayAuth,n as authorizeGatewayConnect,o as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET,r as isLocalDirectRequest,s as createAuthRateLimiter,t as assertGatewayAuthConfigured}from"./auth-ChecwOXS.js";import"./server-context-owOmmyUM.js";import"./routes-lclJHOYY.js";import"./paths-BnOjueoX.js";import{t as SsrFBlockedError}from"./ssrf-DJXLYZ0d.js";import"./store-DHD2IEgd.js";import{a as formatPortDiagnostics,n as inspectPortUsage,t as ensurePortAvailable}from"./ports-DTku9NSx.js";import{t as movePathToTrash}from"./trash-C3zmJ_O7.js";import"./accounts-DcoaLXKI.js";import{c as resolveStorePath,i as resolveSessionTranscriptPath,n as resolveSessionFilePath,r as resolveSessionFilePathOptions,s as resolveSessionTranscriptsDirForAgent}from"./paths-ClsbsPQP.js";import"./tool-images-CCpqFtrL.js";import{a as shouldIncludeHook,i as resolveHookConfig,n as loadWorkspaceHookEntries}from"./workspace-waBqRxiy.js";import{a as resolveAgentIdentity,n as createReplyPrefixOptions}from"./reply-prefix-Cg7AqaK0.js";import"./sqlite-CIGM1WKg.js";import{i as resolveMemoryBackendConfig,r as getMemorySearchManager}from"./memory-cli-ivAs7q7v.js";import"./manager-CRba8roB.js";import"./gemini-auth-CkD5jCPh.js";import"./retry-B151Hej5.js";import{a as jsonResult,t as ToolInputError}from"./common-BfwMxpLu.js";import{l as registerUnhandledRejectionHandler}from"./runner-DwWmciCt.js";import"./tool-display-Cs4hDP1f.js";import"./chunk-Dly7lM4r.js";import"./markdown-tables-B1Rx8hv6.js";import{t as fetchWithSsrFGuard}from"./fetch-guard-DnXqPKae.js";import"./fetch-Cn_THzz8.js";import"./ir-CSdQJPqu.js";import"./render-DlHYsbvQ.js";import"./builderforcellm-syscheck-CprBhARf.js";import{a as loadCombinedSessionStoreForGateway,c as resolveGatewaySessionStoreTarget,i as listSessionsFromStore,l as resolveSessionModelRef,o as loadSessionEntry,r as listAgentsForGateway,s as pruneLegacyStoreKeys,t as canonicalizeSpawnedByForAgent,u as lookupContextTokens}from"./session-utils-GMvum00v.js";import{a as resolveSubagentToolPolicy,i as resolveGroupToolPolicy,r as resolveEffectiveToolPolicy,u as listAgentWorkspaceDirs}from"./coding-tools.policy-NEPm7Mz1.js";import"./pairing-store-QDb6lhIU.js";import"./fetch-DnWD6ydH.js";import{a as mergeExecApprovalsSocketDefaults,c as readExecApprovalsSnapshot,p as saveExecApprovals,r as ensureExecApprovals,s as normalizeExecApprovals,t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS}from"./exec-approvals-D7ZPAZpt.js";import"./nodes-screen-D6GHv_S0.js";import{a as loadSessionUsageTimeSeries,c as hasNonzeroUsage,n as loadCostUsageSummary,r as loadSessionCostSummary,s as deriveSessionTotalTokens,t as discoverAllSessions}from"./session-cost-usage-S0nkbPoW.js";import{n as formatTokenCount,r as formatUsd}from"./usage-format-5sp5AMSu.js";import{t as loadProviderUsageSummary}from"./provider-usage-Bn4ZrnU7.js";import"./send-B_1BtyfA.js";import"./outbound-attachment-BaTYE4qp.js";import"./delivery-queue-Cp3t4Upn.js";import{d as savePersonaAssignment,f as initializeBuilderForceAgentsProject,t as appendKnowledgeMemory,u as loadPersonaAssignments}from"./project-context-D3Mx4maV.js";import{r as startBrowserControlServiceFromConfig,t as createBrowserControlContext}from"./control-service-CJuuqNOE.js";import{i as parseAbsoluteTimeMs,n as resolveCronStaggerMs,r as resolveDefaultCronStaggerMs,t as normalizeCronStaggerMs}from"./stagger-CRe77dWL.js";import{n as resolveMessageChannelSelection}from"./channel-selection-BLwXhb9t.js";import{n as normalizePollInput}from"./polls-BdfE-6dQ.js";import"./send-UFtylOiq.js";import"./resolve-route-DEIW5uKy.js";import{t as getChannelActivity}from"./channel-activity-DX36RadH.js";import"./tables-CojSfTth.js";import{t as formatDocsLink}from"./links-BKzP7VVP.js";import{n as runCommandWithRuntime}from"./cli-utils-C9pW69LF.js";import{t as formatHelpExamples}from"./help-format-CfFf-w62.js";import{n as withProgress}from"./progress-Cqb-jAjT.js";import"./replies-DbkT_5BV.js";import{C as normalizeControlUiBasePath,S as buildControlUiAvatarUrl,c as handleReset,w as resolveAssistantAvatarUrl,x as CONTROL_UI_AVATAR_PREFIX}from"./onboard-helpers-CckrS8_K.js";import"./prompt-style-BMWmaqSC.js";import"./pairing-labels-3j_iRYOO.js";import"./active-listener-Di9e1YAD.js";import"./mamba-state-engine-CV4nDcCk.js";import"./transformers-stream-Buj40qHl.js";import{i as onHeartbeatEvent,r as getLastHeartbeatEvent,t as resolveHeartbeatVisibility}from"./heartbeat-visibility-XUrlH-iZ.js";import{t as ensureBuilderForceAgentsCliOnPath}from"./path-env-Gmzpaha-.js";import{n as DEFAULT_GATEWAY_HTTP_TOOL_DENY}from"./dangerous-tools-C0tOMmbD.js";import{n as inheritOptionFromParent}from"./command-options-DbMbMxM2.js";import{t as buildChannelUiCatalog}from"./catalog-li4bSIE2.js";import{t as WizardCancelledError}from"./prompts-BP4e56X_.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DPPVplyk.js";import{t as applyPluginAutoEnable}from"./plugin-auto-enable-BV9K9Vhr.js";import"./install-safe-path-ObPl6zIf.js";import"./skill-scanner-DEmbPsRh.js";import{t as buildChannelAccountSnapshot}from"./status-BXI_BTqV.js";import"./channels-status-issues-NLYb8w9i.js";import"./daemon-runtime-B4UjqdyJ.js";import"./runtime-guard-Bi8k55v9.js";import"./systemd-DdVd5Yet.js";import"./service-EKJG69M3.js";import"./lifecycle-core-BpMvDXy1.js";import"./diagnostics-DamNPi4e.js";import{t as parsePort$1}from"./parse-port-FgIKmqqb.js";import{n as addGatewayServiceCommands}from"./daemon-cli-DyVsMf8p.js";import"./table-BFCCZDsp.js";import{n as resolveWideAreaDiscoveryDomain,r as writeWideAreaGatewayZone}from"./widearea-dns-DvQozd9v.js";import{i as toOptionString,n as extractGatewayMiskeys,r as maybeExplainGatewayServiceStop,t as describeUnknownError}from"./shared-rsjJRWla.js";import{c as probeGateway,o as isNodeCommandAllowed,s as resolveNodeCommandAllowlist}from"./audit-DBjjjW93.js";import{t as discoverGatewayBeacons}from"./bonjour-discovery-CViQz7cm.js";import{n as getStatusSummary,r as pickGatewaySelfPresence}from"./status-BxeKmkVr.js";import{c as startHeartbeatRunner,i as styleHealthChannelLine,n as getHealthSnapshot,o as runHeartbeatOnce,s as setHeartbeatsEnabled,t as formatHealthChannelLines}from"./health-DVo8a9yg.js";import{n as createDefaultDeps,r as createOutboundSendDeps$1,t as createOutboundSendDeps}from"./outbound-send-deps-m6DqOma_.js";import{a as resolveControlUiRootSync,i as resolveControlUiRootOverrideSync,t as ensureControlUiAssetsBuilt}from"./control-ui-assets-BxgWcomx.js";import{h as normalizeUpdateChannel,l as DEFAULT_PACKAGE_CHANNEL,n as compareSemverStrings,o as resolveNpmChannelTag,t as checkUpdateStatus}from"./update-check-B0YqSZJr.js";import{t as runOnboardingWizard}from"./onboarding-CP9rrz8y.js";import{a as sendApnsAlert,c as parseMessageWithAttachments,d as shouldLogWs,f as summarizeAgentEventForWsLog,i as resolveApnsAuthConfigFromEnv,l as formatForLog,n as normalizeApnsEnvironment,o as sendApnsBackgroundWake,p as setGatewayWsLogStyle,s as normalizeRpcAttachmentsToChatAttachments,t as loadApnsRegistration,u as logWs}from"./push-apns-CiD3rrVv.js";import{T as resolveGmailHookRuntimeConfig,_ as buildGogWatchServeArgs,i as ensureTailscaleEndpoint,v as buildGogWatchStartArgs}from"./gmail-setup-utils-CVafFKTa.js";import{a as pruneAgentConfig,i as loadAgentIdentity,r as findAgentEntryIndex,s as loadAgentIdentityFromWorkspace,t as applyAgentConfig}from"./agents.config-D6Yhwmnh.js";import{i as resolveAgentOutboundTarget,r as resolveAgentDeliveryPlan,t as agentCommand}from"./agent-wJmvciTM.js";import"./dm-policy-shared-CRZpjRv0.js";import"./node-service-77UF0ACm.js";import"./status.update-KYyRSDZY.js";import{n as validateSystemRunCommandConsistency,t as formatExecCommand}from"./system-run-command-rlCfXRWt.js";import{t as installSkill}from"./skills-install-DMHQRpIl.js";import{n as runGatewayUpdate,t as resolveAgentSessionDirs}from"./session-dirs-OxQuIvJW.js";import{n as syncBuilderForceAgentsDirectoryOnStartup,t as syncBuilderForceAgentsDirectory}from"./builderforce-directory-sync-DQ6u60yX.js";import{n as mergeBuilderforceContext,t as buildLocalMachineProfile}from"./builderforce-context-CyUg2pSn.js";import{a as emitWorkflowEnd,c as initTelemetry,i as emitTaskStart,l as setRelayHook,o as emitWorkflowStart,r as emitTaskEnd}from"./workflow-telemetry-DLEnm5TI.js";import{n as forceFreePortAndWait}from"./ports-6RmfZEmk.js";import{execFile,spawn,spawnSync}from"node:child_process";import os from"node:os";import path,{dirname,join,relative,sep}from"node:path";import*as fsSync from"node:fs";import fs,{constants}from"node:fs";import{promisify}from"node:util";import chalk from"chalk";import crypto,{createHash,randomUUID}from"node:crypto";import{fileURLToPath,pathToFileURL}from"node:url";import JSON5 from"json5";import{z}from"zod";import fs$1,{mkdir,readFile,readdir,writeFile}from"node:fs/promises";import chokidar from"chokidar";import{WebSocket as WebSocket$1,WebSocketServer}from"ws";import{Buffer as Buffer$1}from"node:buffer";import{Type}from"@sinclair/typebox";import net from"node:net";import{createServer}from"node:http";import{createServer as createServer$1}from"node:https";import{neutralLimbicState}from"@seanhogg/builderforce-memory-engine/limbic";import{EventEmitter}from"node:events";import{Cron}from"croner";import{query}from"@anthropic-ai/claude-agent-sdk";function parsePort(value){if(!value)return;let parsed=Number.parseInt(value,10);if(!(!Number.isFinite(parsed)||parsed<=0))return parsed}function parseSshConfigOutput(output){let result={identityFiles:[]},lines=output.split(`
|
|
1
|
+
import{_ as expandHomePrefix,g as resolveStateDir,i as isNixMode,l as resolveGatewayLockDir,o as resolveConfigPath,r as STATE_DIR,t as CONFIG_PATH,u as resolveGatewayPort,y as resolveRequiredHomeDir}from"./paths-BHg-VHB4.js";import{C as createInternalHookEvent,S as clearInternalHooks,T as triggerInternalHook,d as getActivePluginRegistry,m as createEmptyPluginRegistry,r as DEFAULT_CHAT_CHANNEL,t as CHANNEL_IDS,w as registerInternalHook}from"./registry-Cv7CoWAs.js";import{E as truncateUtf16Safe,H as getChildLogger,L as colorize,N as setVerbose,R as isRich,S as shortenHomePath,U as getLogger,W as getResolvedLoggerSettings,n as clamp,s as ensureDir,t as CONFIG_DIR,u as isPlainObject,y as resolveUserPath,z as theme}from"./utils-BP60e80M.js";import{a as setConsoleSubsystemFilter,n as runtimeForLogger,o as setConsoleTimestampPrefix,p as defaultRuntime,t as createSubsystemLogger}from"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import{n as logAcceptedEnvOption,t as isTruthyEnvValue}from"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import{B as resolveAllowedModelRef,H as resolveConfiguredModelRef,Ht as CURRENT_SESSION_VERSION,It as canUseToolDecision,J as resolveThinkingDefault,K as resolveSubagentConfiguredModelSelection,N as getModelRefStatus,O as isPidAlive,P as isCliProvider,Qt as normalizeSecretInput,U as resolveDefaultModelForAgent,Ut as SessionManager,W as resolveHooksGmailModel,_n as DEFAULT_PROVIDER,gn as DEFAULT_MODEL,hn as DEFAULT_CONTEXT_TOKENS,k as buildAllowedModelSet,rt as resolveFreetokenApiBase,st as resolveOllamaApiBase,zt as nativeComplete}from"./auth-profiles-C1VbcUOm.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import"./src-DvWaTze9.js";import{i as logWarn,t as logDebug}from"./logger-wuOr7HKl.js";import{C as parseAgentSessionKey,S as isSubagentSessionKey,_ as toAgentStoreSessionKey,a as buildAgentMainSessionKey,b as isCronRunSessionKey,c as classifySessionKeyShape,d as normalizeAgentId,f as normalizeMainKey,g as toAgentRequestSessionKey,l as isValidAgentId,n as DEFAULT_ACCOUNT_ID,p as resolveAgentIdFromSessionKey,r as DEFAULT_AGENT_ID,t as AGENT_ID_PATTERN}from"./session-key-CksCYipj.js";import{s as matchesSkillFilter,t as resolveBuilderForceAgentsPackageRoot}from"./builderforce-root-DY1qbWNX.js";import{n as runExec,t as runCommandWithTimeout}from"./exec-COgsU9ql.js";import{A as resolveWorkspaceFilePath,E as isWorkspaceOnboardingCompleted,O as resolveAgentRuntimeDir,S as DEFAULT_USER_FILENAME,_ as DEFAULT_IDENTITY_FILENAME,a as resolveAgentModelFallbacksOverride,b as DEFAULT_SOUL_FILENAME,c as resolveAgentWorkspaceDir,d as resolveSessionAgentId,g as DEFAULT_HEARTBEAT_FILENAME,h as DEFAULT_BOOTSTRAP_FILENAME,i as resolveAgentDir,j as resolveWorkspaceTemplateDir,k as resolveDefaultAgentWorkspaceDir,l as resolveDefaultAgentId,n as listAgentIds,p as DEFAULT_AGENTS_FILENAME,r as resolveAgentConfig,s as resolveAgentSkillsFilter,t as listAgentEntries,v as DEFAULT_MEMORY_ALT_FILENAME,w as ensureAgentWorkspace,x as DEFAULT_TOOLS_FILENAME,y as DEFAULT_MEMORY_FILENAME}from"./agent-scope-CufEmNj_.js";import{t as normalizeBaseUrl}from"./normalize-base-url-D_sv6Zgt.js";import{i as readSharedEnvVar,t as isOfflineMode}from"./env-file-DeS6x2OL.js";import{C as renderPolicyDirectives,E as resolveEngineById,T as CURRENT_ENGINE_ID,b as coercePolicyGates,i as deriveActivitySummary,n as KNOWLEDGE_DIRS,r as buildKnowledgeMemoryEntry$1}from"./src-HrLX5bhG.js";import{A as applyMergePatch,H as resolveSubagentMaxConcurrent,U as VERSION,V as resolveAgentMaxConcurrent,W as resolveRuntimeServiceVersion,a as readConfigFileSnapshot,c as writeConfigFile,f as validateConfigObjectWithPlugins,i as parseConfigJson5,j as applyLegacyMigrations,n as createConfigIO,o as readConfigFileSnapshotForWrite,p as BuilderForceAgentsSchema,r as loadConfig,s as resolveConfigSnapshotHash,v as sensitive,y as parseDurationMs}from"./io-CohJffHG.js";import{s as isTestDefaultMemorySlotDisabled}from"./manifest-registry-009gLJ4l.js";import{t as migrateLegacyConfig}from"./config-toczWD3q.js";import"./model-discovery-C9Xm95uL.js";import{r as loadModelCatalog}from"./model-catalog-CiiFJX77.js";import{d as hasBinary}from"./frontmatter-CaY7feZm.js";import{i as loadWorkspaceSkillEntries,r as buildWorkspaceSkillSnapshot}from"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import{t as buildWorkspaceSkillStatus}from"./skills-status-CGlKz1D1.js";import{a as registerSkillsChangeListener,i as getSkillsSnapshotVersion,n as bumpSkillsSnapshotVersion}from"./refresh-C4vwneXT.js";import{$ as validateNodePairRejectParams,A as validateCronStatusParams,At as validateWizardStatusParams,B as validateExecApprovalsGetParams,C as validateConfigSetParams,Ct as validateUpdateRunParams,D as validateCronRemoveParams,Dt as validateWizardCancelParams,E as validateCronListParams,Et as validateWebLoginWaitParams,F as validateDevicePairRemoveParams,Ft as parseSessionLabel,G as validateModelsListParams,H as validateExecApprovalsNodeSetParams,Ht as verifyDeviceSignature,I as validateDeviceTokenRevokeParams,It as buildDeviceAuthPayload,J as validateNodeInvokeParams,K as validateNodeDescribeParams,L as validateDeviceTokenRotateParams,Lt as normalizeDeviceAuthScopes,M as validateDevicePairApproveParams,Mt as ErrorCodes,N as validateDevicePairListParams,Nt as errorShape,O as validateCronRunParams,Ot as validateWizardNextParams,P as validateDevicePairRejectParams,Q as validateNodePairListParams,R as validateExecApprovalRequestParams,S as validateConfigSchemaParams,St as validateTalkModeParams,T as validateCronAddParams,Tt as validateWebLoginStartParams,U as validateExecApprovalsSetParams,V as validateExecApprovalsNodeGetParams,Vt as normalizeDevicePublicKeyBase64Url,W as validateLogsTailParams,X as validateNodeListParams,Y as validateNodeInvokeResultParams,Z as validateNodePairApproveParams,_ as validateChatInjectParams,_t as validateSkillsBinsParams,a as validateAgentWaitParams,at as validateRequestFrame,b as validateConfigGetParams,bt as validateSkillsUpdateParams,c as validateAgentsFilesGetParams,ct as validateSessionsDeleteParams,d as validateAgentsListParams,dt as validateSessionsPatchParams,et as validateNodePairRequestParams,f as validateAgentsUpdateParams,ft as validateSessionsPreviewParams,g as validateChatHistoryParams,gt as validateSessionsUsageParams,h as validateChatAbortParams,ht as validateSessionsUndoParams,i as validateAgentParams,it as validatePushTestParams,j as validateCronUpdateParams,jt as PROTOCOL_VERSION,k as validateCronRunsParams,kt as validateWizardStartParams,l as validateAgentsFilesListParams,lt as validateSessionsForkParams,m as validateChannelsStatusParams,mt as validateSessionsResolveParams,n as formatValidationErrors,nt as validateNodeRenameParams,o as validateAgentsCreateParams,ot as validateSendParams,p as validateChannelsLogoutParams,pt as validateSessionsResetParams,q as validateNodeEventParams,r as validateAgentIdentityParams,rt as validatePollParams,s as validateAgentsDeleteParams,st as validateSessionsCompactParams,t as GatewayClient,tt as validateNodePairVerifyParams,u as validateAgentsFilesSetParams,ut as validateSessionsListParams,v as validateChatSendParams,vt as validateSkillsInstallParams,w as validateConnectParams,wt as validateWakeParams,x as validateConfigPatchParams,xt as validateTalkConfigParams,y as validateConfigApplyParams,yt as validateSkillsStatusParams,z as validateExecApprovalResolveParams,zt as deriveDeviceIdFromPublicKey}from"./client-CGgp3zkQ.js";import{n as pickPrimaryTailnetIPv4,r as pickPrimaryTailnetIPv6}from"./tailnet-B0Q5E6lZ.js";import{n as callGateway,o as loadGatewayTlsRuntime$1}from"./call-DmAU4cRX.js";import{f as GATEWAY_CLIENT_CAPS,g as hasGatewayClientCap,h as GATEWAY_CLIENT_NAMES,i as isGatewayMessageChannel,l as normalizeMessageChannel,m as GATEWAY_CLIENT_MODES,n as isDeliverableMessageChannel,p as GATEWAY_CLIENT_IDS,r as isGatewayCliClient,s as isWebchatClient,t as INTERNAL_MESSAGE_CHANNEL}from"./message-channel-z5YRpR2d.js";import{c as pickPrimaryLanIPv4,d as resolveGatewayListenHosts,f as resolveHostName,i as isTrustedProxyAddress,l as resolveGatewayBindHost,n as isLoopbackHost,o as normalizeHostHeader,p as rawDataToString,r as isPrivateOrLoopbackAddress,t as isLoopbackAddress,u as resolveGatewayClientIp}from"./net-DtnXq2dW.js";import{i as normalizeInputProvenance}from"./input-provenance-Rnkkt19n.js";import{$ as resolveAnnounceTargetFromKey,$r as setCommandLaneConcurrency,A as sleepWithAbort,Ar as registerTeamMemoryContextBuilder,At as persistBrowserProxyFiles,B as createReplyDispatcher,Br as setTtsProvider,Bt as dispatchToRemoteAgentNode,Cn as verifyPairingToken,Cr as resolveUserTimezone,D as readJsonBodyWithLimit,Dn as readJsonFile,Dr as getSsmMemoryService,Dt as getHookType,E as handleSlackHttpRequest,En as createAsyncLock,Er as initLimbicSystemService,Et as detectSuspiciousPatterns,Fn as applyVerboseOverride,Fr as resolveTtsAutoMode,Ft as gitHistoryTool,Gn as extractFileContentFromSource,Gt as spawnSubagentDirect,Hn as DEFAULT_INPUT_IMAGE_MIMES,Hr as OPENAI_TTS_MODELS,Ht as loadHiredAgentsCached,In as parseVerboseOverride,Ir as resolveTtsConfig,It as workflowStatusTool,J as setCliSessionId,Jn as resolveInputFileLimits,Jt as getBuiltInAgentRoles,K as resolveCronStyleNow,Kn as extractImageContentFromSource,Kt as resolveRelayTaskModel,Ln as enqueueSystemEvent,Lr as resolveTtsPrefsPath,Lt as globalOrchestrator,Mr as isTtsEnabled,Mt as resolveApproval,Nr as isTtsProviderConfigured,Nt as semanticSearchTool,O as requestBodyErrorToText,On as writeJsonAtomic,Or as initSsmMemoryService,Ot as isExternalHookSession,P as buildHistoryContextFromEntries,Pn as applyModelOverrideToSessionEntry,Pr as resolveTtsApiKey,Pt as agentFleetTool,Q as readLatestAssistantReply,Qr as resetAllLanes,Qt as normalizeGroupActivation,Rn as isSystemEventContextChanged,Rr as resolveTtsProviderOrder,Rt as dispatchChunkToRemoteAgentNode,S as getPluginToolMeta,Sn as generatePairingToken,Sr as writeRestartSentinel,St as stripLegacyDeliveryFields,Tn as resolvePairingPaths,Tr as getLimbicSystemService,Tt as buildSafeExternalPrompt,Un as DEFAULT_INPUT_MAX_REDIRECTS,Ur as OPENAI_TTS_VOICES,Ut as projectKnowledgeTool,V as getTotalPendingReplies,Vn as DEFAULT_INPUT_IMAGE_MAX_BYTES,Vr as textToSpeech,Vt as fetchFleetEntries,W as BARE_SESSION_RESET_PROMPT,Wn as DEFAULT_INPUT_TIMEOUT_MS,Wt as codebaseSearchTool,Xn as resolveAgentTimeoutMs,Y as runCliAgent,Yr as getActiveTaskCount,Yt as registerPlatformPersonasAsRoles,Z as createBuilderForceAgentsTools,Zr as getTotalQueueSize,_ as getActiveEmbeddedRunCount,_n as rejectNodePairing,_r as formatDoctorNonInteractiveHint,_t as normalizePayloadToSystemText,ar as stopSubagentsForRequester,at as resolveOutboundTarget,b as buildDefaultToolPolicyPipelineSteps,bn as updatePairedNodeMetadata,br as summarizeRestartSentinel,bt as buildDeliveryFromLegacyPayload,cn as getRemoteSkillEligibility,cr as consumeGatewaySigusr1RestartAuthorization,ct as resetDirectoryCache,di as clearAgentRunContext,dn as refreshRemoteBinsForConnectedNodes,dr as isGatewaySigusr1RestartExternallyAllowed,dt as normalizeCronJobCreate,ei as waitForActiveTasks,fi as emitAgentEvent,fn as refreshRemoteNodeBins,fr as markGatewaySigusr1RestartHandled,ft as normalizeCronJobPatch,g as abortEmbeddedRun,gn as listNodePairing,gr as consumeRestartSentinel,gt as normalizeOptionalText,h as runEmbeddedAgent,hi as registerAgentRunContext,hn as approveNodePairing,hr as setPreRestartDeferralCheck,ht as normalizeOptionalSessionKey,i as initSubagentRegistry,ii as isDiagnosticsEnabled,in as requestHeartbeatNow,ir as isAbortTrigger,jr as getTtsProvider,jt as initApprovalGate,k as computeBackoff,kr as registerKnowledgeLoop,kt as applyBrowserProxyPaths,ln as primeRemoteSkillsCache,lr as deferGatewayRestartUntilIdle,m as clearSessionQueues,mi as onAgentEvent,mn as setSkillsRemoteRegistry,mr as setGatewaySigusr1RestartPolicy,mt as normalizeOptionalAgentId,n as countActiveDescendantRuns,ni as startDiagnosticHeartbeat,nt as resolveOutboundSessionRoute,o as listDescendantRunsForRequester,oi as DEFAULT_HEARTBEAT_ACK_MAX_CHARS,on as normalizeSendPolicy,ot as resolveSessionDeliveryTarget,p as runSubagentAnnounceFlow,pi as getAgentRunContext,pn as removeRemoteNodeInfo,pr as scheduleGatewaySigusr1Restart,pt as inferLegacyName,q as getCliSessionId,qn as normalizeMimeList,qr as runWithModelFallback,qt as findAgentRole,ri as stopDiagnosticHeartbeat,sn as resolveSendPolicy,ti as CommandLane,tr as formatZonedTimestamp,tt as ensureOutboundSessionEntry,ui as stripHeartbeatToken,un as recordRemoteNodeInfo,ur as emitGatewayRestart,ut as normalizeHttpWebhookUrl,v as waitForEmbeddedRunEnd,vn as renamePairedNode,vr as formatRestartSentinelMessage,vt as normalizeRequiredName,w as loadBuilderForceAgentsPlugins,wn as pruneExpiredPending,wr as buildAssignedCapabilityAppend,xn as verifyNodeToken,xt as hasLegacyDeliveryHints,y as applyToolPolicyPipeline,yn as requestNodePairing,yt as migrateLegacyCronPayload,z as dispatchInboundMessage,zr as setTtsEnabled,zt as dispatchResultToRemoteAgentNode}from"./subagent-registry-CyGxu3kP.js";import{A as canonicalizeMainSessionAlias,C as evaluateSessionFreshness,I as snapshotSessionOrigin,M as resolveExplicitAgentSessionKey,N as resolveMainSessionKey,P as resolveMainSessionKeyFromConfig,Q as deliveryContextFromSession,T as resolveSessionResetPolicy,X as cleanStaleLockFiles,_ as readSessionMessages,a as loadSessionStore,b as resolveSessionTranscriptCandidates,et as mergeDeliveryContext,g as capArrayByJsonBytes,h as archiveSessionTranscripts,j as resolveAgentMainSessionKey,m as archiveFileOnDisk,n as parseSessionThreadInfo,nt as normalizeSessionDeliveryFields,t as extractDeliveryInfo,u as updateSessionStore,v as readSessionPreviewItemsFromTranscript,x as stripEnvelopeFromMessages}from"./sessions-Bl1wwotX.js";import{S as globalPersonaRegistry,_ as isBuilderForceAgentsProject,b as USER_PERSONAS_DIR,n as loadProjectContext,o as updateProjectContextFields,v as resolveBuilderForceAgentsDir}from"./project-context-store-CIUcwUP_.js";import{n as SILENT_REPLY_TOKEN,r as isSilentReplyText}from"./tokens-CFKkpUIu.js";import{n as listChannelPlugins,r as normalizeChannelId,t as getChannelPlugin}from"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import{t as buildChannelAccountBindings}from"./bindings-CKSDlQ1i.js";import"./send-BvroeIQ6.js";import"./send-CceNWtYE.js";import{n as createBrowserRouteDispatcher,r as getMachineDisplayName}from"./with-timeout-T07SJo4N.js";import{C as getGlobalHookRunner,T as runGlobalGatewayStopSafely,a as normalizeReplyPayloadsForDelivery,t as deliverOutboundPayloads}from"./deliver-BuZu68tp.js";import"./accounts-Cx82nj4E.js";import"./send-ByCVQQVz.js";import{c as detectMime}from"./image-ops-CotJhwRR.js";import"./redact-CgO7wehS.js";import{a as isErrno,n as formatErrorMessage}from"./errors-tAt19c1E.js";import{a as formatXHighModelHint,c as normalizeElevatedLevel,d as normalizeUsageDisplay,f as normalizeVerboseLevel,i as formatThinkingLevels,l as normalizeReasoningLevel,m as supportsXHighThinking,u as normalizeThinkLevel}from"./embedded-helpers-DK8_apW0.js";import{g as collectExplicitAllowlist,x as resolveToolProfilePolicy,y as mergeAlsoAllowPolicy}from"./sandbox-z9t_PRf9.js";import"./chrome-BnEbJV3D.js";import{i as enableTailscaleServe,n as disableTailscaleServe,o as getTailnetHostname,r as enableTailscaleFunnel,t as disableTailscaleFunnel}from"./tailscale-DV-yOmYe.js";import{a as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN,c as safeEqualSecret,i as resolveGatewayAuth,n as authorizeGatewayConnect,o as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET,r as isLocalDirectRequest,s as createAuthRateLimiter,t as assertGatewayAuthConfigured}from"./auth-ChecwOXS.js";import"./server-context-owOmmyUM.js";import"./routes-lclJHOYY.js";import"./paths-BnOjueoX.js";import{t as SsrFBlockedError}from"./ssrf-DJXLYZ0d.js";import"./store-DHD2IEgd.js";import{a as formatPortDiagnostics,n as inspectPortUsage,t as ensurePortAvailable}from"./ports-DTku9NSx.js";import{t as movePathToTrash}from"./trash-C3zmJ_O7.js";import"./accounts-DcoaLXKI.js";import{c as resolveStorePath,i as resolveSessionTranscriptPath,n as resolveSessionFilePath,r as resolveSessionFilePathOptions,s as resolveSessionTranscriptsDirForAgent}from"./paths-ClsbsPQP.js";import"./tool-images-CCpqFtrL.js";import{a as shouldIncludeHook,i as resolveHookConfig,n as loadWorkspaceHookEntries}from"./workspace-waBqRxiy.js";import{a as resolveAgentIdentity,n as createReplyPrefixOptions}from"./reply-prefix-Cg7AqaK0.js";import"./sqlite-CIGM1WKg.js";import{i as resolveMemoryBackendConfig,r as getMemorySearchManager}from"./memory-cli-ivAs7q7v.js";import"./manager-CRba8roB.js";import"./gemini-auth-CkD5jCPh.js";import"./retry-B151Hej5.js";import{a as jsonResult,t as ToolInputError}from"./common-BfwMxpLu.js";import{l as registerUnhandledRejectionHandler}from"./runner-DwWmciCt.js";import"./tool-display-Cs4hDP1f.js";import"./chunk-Dly7lM4r.js";import"./markdown-tables-B1Rx8hv6.js";import{t as fetchWithSsrFGuard}from"./fetch-guard-DnXqPKae.js";import"./fetch-Cn_THzz8.js";import"./ir-CSdQJPqu.js";import"./render-DlHYsbvQ.js";import"./builderforcellm-syscheck-CprBhARf.js";import{a as loadCombinedSessionStoreForGateway,c as resolveGatewaySessionStoreTarget,i as listSessionsFromStore,l as resolveSessionModelRef,o as loadSessionEntry,r as listAgentsForGateway,s as pruneLegacyStoreKeys,t as canonicalizeSpawnedByForAgent,u as lookupContextTokens}from"./session-utils-GMvum00v.js";import{a as resolveSubagentToolPolicy,i as resolveGroupToolPolicy,r as resolveEffectiveToolPolicy,u as listAgentWorkspaceDirs}from"./coding-tools.policy-NEPm7Mz1.js";import"./pairing-store-QDb6lhIU.js";import"./fetch-DnWD6ydH.js";import{a as mergeExecApprovalsSocketDefaults,c as readExecApprovalsSnapshot,p as saveExecApprovals,r as ensureExecApprovals,s as normalizeExecApprovals,t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS}from"./exec-approvals-D7ZPAZpt.js";import"./nodes-screen-D6GHv_S0.js";import{a as loadSessionUsageTimeSeries,c as hasNonzeroUsage,n as loadCostUsageSummary,r as loadSessionCostSummary,s as deriveSessionTotalTokens,t as discoverAllSessions}from"./session-cost-usage-S0nkbPoW.js";import{n as formatTokenCount,r as formatUsd}from"./usage-format-5sp5AMSu.js";import{t as loadProviderUsageSummary}from"./provider-usage-Bn4ZrnU7.js";import"./send-B_1BtyfA.js";import"./outbound-attachment-BaTYE4qp.js";import"./delivery-queue-Cp3t4Upn.js";import{d as savePersonaAssignment,f as initializeBuilderForceAgentsProject,t as appendKnowledgeMemory,u as loadPersonaAssignments}from"./project-context-D3Mx4maV.js";import{r as startBrowserControlServiceFromConfig,t as createBrowserControlContext}from"./control-service-CJuuqNOE.js";import{i as parseAbsoluteTimeMs,n as resolveCronStaggerMs,r as resolveDefaultCronStaggerMs,t as normalizeCronStaggerMs}from"./stagger-CRe77dWL.js";import{n as resolveMessageChannelSelection}from"./channel-selection-BLwXhb9t.js";import{n as normalizePollInput}from"./polls-BdfE-6dQ.js";import"./send-UFtylOiq.js";import"./resolve-route-DEIW5uKy.js";import{t as getChannelActivity}from"./channel-activity-DX36RadH.js";import"./tables-CojSfTth.js";import{t as formatDocsLink}from"./links-BKzP7VVP.js";import{n as runCommandWithRuntime}from"./cli-utils-C9pW69LF.js";import{t as formatHelpExamples}from"./help-format-CfFf-w62.js";import{n as withProgress}from"./progress-Cqb-jAjT.js";import"./replies-DbkT_5BV.js";import{C as normalizeControlUiBasePath,S as buildControlUiAvatarUrl,c as handleReset,w as resolveAssistantAvatarUrl,x as CONTROL_UI_AVATAR_PREFIX}from"./onboard-helpers-CckrS8_K.js";import"./prompt-style-BMWmaqSC.js";import"./pairing-labels-3j_iRYOO.js";import"./active-listener-Di9e1YAD.js";import"./mamba-state-engine-CV4nDcCk.js";import"./transformers-stream-Buj40qHl.js";import{i as onHeartbeatEvent,r as getLastHeartbeatEvent,t as resolveHeartbeatVisibility}from"./heartbeat-visibility-XUrlH-iZ.js";import{t as ensureBuilderForceAgentsCliOnPath}from"./path-env-Gmzpaha-.js";import{n as DEFAULT_GATEWAY_HTTP_TOOL_DENY}from"./dangerous-tools-C0tOMmbD.js";import{n as inheritOptionFromParent}from"./command-options-DbMbMxM2.js";import{t as buildChannelUiCatalog}from"./catalog-li4bSIE2.js";import{t as WizardCancelledError}from"./prompts-BP4e56X_.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DPPVplyk.js";import{t as applyPluginAutoEnable}from"./plugin-auto-enable-BV9K9Vhr.js";import"./install-safe-path-ObPl6zIf.js";import"./skill-scanner-DEmbPsRh.js";import{t as buildChannelAccountSnapshot}from"./status-BXI_BTqV.js";import"./channels-status-issues-NLYb8w9i.js";import"./daemon-runtime-B4UjqdyJ.js";import"./runtime-guard-Bi8k55v9.js";import"./systemd-DdVd5Yet.js";import"./service-EKJG69M3.js";import"./lifecycle-core-BpMvDXy1.js";import"./diagnostics-DamNPi4e.js";import{t as parsePort$1}from"./parse-port-FgIKmqqb.js";import{n as addGatewayServiceCommands}from"./daemon-cli-DyVsMf8p.js";import"./table-BFCCZDsp.js";import{n as resolveWideAreaDiscoveryDomain,r as writeWideAreaGatewayZone}from"./widearea-dns-DvQozd9v.js";import{i as toOptionString,n as extractGatewayMiskeys,r as maybeExplainGatewayServiceStop,t as describeUnknownError}from"./shared-rsjJRWla.js";import{c as probeGateway,o as isNodeCommandAllowed,s as resolveNodeCommandAllowlist}from"./audit-DBjjjW93.js";import{t as discoverGatewayBeacons}from"./bonjour-discovery-CViQz7cm.js";import{n as getStatusSummary,r as pickGatewaySelfPresence}from"./status-BxeKmkVr.js";import{c as startHeartbeatRunner,i as styleHealthChannelLine,n as getHealthSnapshot,o as runHeartbeatOnce,s as setHeartbeatsEnabled,t as formatHealthChannelLines}from"./health-DVo8a9yg.js";import{n as createDefaultDeps,r as createOutboundSendDeps$1,t as createOutboundSendDeps}from"./outbound-send-deps-m6DqOma_.js";import{a as resolveControlUiRootSync,i as resolveControlUiRootOverrideSync,t as ensureControlUiAssetsBuilt}from"./control-ui-assets-BxgWcomx.js";import{h as normalizeUpdateChannel,l as DEFAULT_PACKAGE_CHANNEL,n as compareSemverStrings,o as resolveNpmChannelTag,t as checkUpdateStatus}from"./update-check-B0YqSZJr.js";import{t as runOnboardingWizard}from"./onboarding-B9GqKO5L.js";import{a as sendApnsAlert,c as parseMessageWithAttachments,d as shouldLogWs,f as summarizeAgentEventForWsLog,i as resolveApnsAuthConfigFromEnv,l as formatForLog,n as normalizeApnsEnvironment,o as sendApnsBackgroundWake,p as setGatewayWsLogStyle,s as normalizeRpcAttachmentsToChatAttachments,t as loadApnsRegistration,u as logWs}from"./push-apns-CiD3rrVv.js";import{T as resolveGmailHookRuntimeConfig,_ as buildGogWatchServeArgs,i as ensureTailscaleEndpoint,v as buildGogWatchStartArgs}from"./gmail-setup-utils-CVafFKTa.js";import{a as pruneAgentConfig,i as loadAgentIdentity,r as findAgentEntryIndex,s as loadAgentIdentityFromWorkspace,t as applyAgentConfig}from"./agents.config-D6Yhwmnh.js";import{i as resolveAgentOutboundTarget,r as resolveAgentDeliveryPlan,t as agentCommand}from"./agent-wJmvciTM.js";import"./dm-policy-shared-CRZpjRv0.js";import"./node-service-77UF0ACm.js";import"./status.update-KYyRSDZY.js";import{n as validateSystemRunCommandConsistency,t as formatExecCommand}from"./system-run-command-rlCfXRWt.js";import{t as installSkill}from"./skills-install-DMHQRpIl.js";import{n as runGatewayUpdate,t as resolveAgentSessionDirs}from"./session-dirs-OxQuIvJW.js";import{n as syncBuilderForceAgentsDirectoryOnStartup,t as syncBuilderForceAgentsDirectory}from"./builderforce-directory-sync-DQ6u60yX.js";import{n as mergeBuilderforceContext,t as buildLocalMachineProfile}from"./builderforce-context-CyUg2pSn.js";import{a as emitWorkflowEnd,c as initTelemetry,i as emitTaskStart,l as setRelayHook,o as emitWorkflowStart,r as emitTaskEnd}from"./workflow-telemetry-DLEnm5TI.js";import{n as forceFreePortAndWait}from"./ports-6RmfZEmk.js";import{execFile,spawn,spawnSync}from"node:child_process";import os from"node:os";import path,{dirname,join,relative,sep}from"node:path";import*as fsSync from"node:fs";import fs,{constants}from"node:fs";import{promisify}from"node:util";import chalk from"chalk";import crypto,{createHash,randomUUID}from"node:crypto";import{fileURLToPath,pathToFileURL}from"node:url";import JSON5 from"json5";import{z}from"zod";import fs$1,{mkdir,readFile,readdir,writeFile}from"node:fs/promises";import chokidar from"chokidar";import{WebSocket as WebSocket$1,WebSocketServer}from"ws";import{Buffer as Buffer$1}from"node:buffer";import{Type}from"@sinclair/typebox";import net from"node:net";import{createServer}from"node:http";import{createServer as createServer$1}from"node:https";import{neutralLimbicState}from"@seanhogg/builderforce-memory-engine/limbic";import{EventEmitter}from"node:events";import{Cron}from"croner";import{query}from"@anthropic-ai/claude-agent-sdk";function parsePort(value){if(!value)return;let parsed=Number.parseInt(value,10);if(!(!Number.isFinite(parsed)||parsed<=0))return parsed}function parseSshConfigOutput(output){let result={identityFiles:[]},lines=output.split(`
|
|
2
2
|
`);for(let raw of lines){let line=raw.trim();if(!line)continue;let[key,...rest]=line.split(/\s+/),value=rest.join(` `).trim();if(!(!key||!value))switch(key){case`user`:result.user=value;break;case`hostname`:result.host=value;break;case`port`:result.port=parsePort(value);break;case`identityfile`:value!==`none`&&result.identityFiles.push(value);break;default:break}}return result}async function resolveSshConfig(target,opts={}){let args=[`-G`];target.port>0&&target.port!==22&&args.push(`-p`,String(target.port)),opts.identity?.trim()&&args.push(`-i`,opts.identity.trim());let userHost=target.user?`${target.user}@${target.host}`:target.host;return args.push(`--`,userHost),await new Promise(resolve=>{let child=spawn(`/usr/bin/ssh`,args,{stdio:[`ignore`,`pipe`,`ignore`]}),stdout=``;child.stdout?.setEncoding(`utf8`),child.stdout?.on(`data`,chunk=>{stdout+=String(chunk)});let timeoutMs=Math.max(200,opts.timeoutMs??800),timer=setTimeout(()=>{try{child.kill(`SIGKILL`)}finally{resolve(null)}},timeoutMs);child.once(`error`,()=>{clearTimeout(timer),resolve(null)}),child.once(`exit`,code=>{if(clearTimeout(timer),code!==0||!stdout.trim()){resolve(null);return}resolve(parseSshConfigOutput(stdout))})})}function parseSshTarget(raw){let trimmed=raw.trim().replace(/^ssh\s+/,``);if(!trimmed)return null;let[userPart,hostPart]=trimmed.includes(`@`)?(()=>{let idx=trimmed.indexOf(`@`),user=trimmed.slice(0,idx).trim(),host=trimmed.slice(idx+1).trim();return[user||void 0,host]})():[void 0,trimmed],colonIdx=hostPart.lastIndexOf(`:`);if(colonIdx>0&&colonIdx<hostPart.length-1){let host=hostPart.slice(0,colonIdx).trim(),portRaw=hostPart.slice(colonIdx+1).trim(),port=Number.parseInt(portRaw,10);return!host||!Number.isFinite(port)||port<=0||host.startsWith(`-`)?null:{user:userPart,host,port}}return!hostPart||hostPart.startsWith(`-`)?null:{user:userPart,host:hostPart,port:22}}async function pickEphemeralPort(){return await new Promise((resolve,reject)=>{let server=net.createServer();server.once(`error`,reject),server.listen(0,`127.0.0.1`,()=>{let addr=server.address();server.close(()=>{if(!addr||typeof addr==`string`){reject(Error(`failed to allocate a local port`));return}resolve(addr.port)})})})}async function canConnectLocal(port){return await new Promise(resolve=>{let socket=net.connect({host:`127.0.0.1`,port}),done=ok=>{socket.removeAllListeners(),socket.destroy(),resolve(ok)};socket.once(`connect`,()=>done(!0)),socket.once(`error`,()=>done(!1)),socket.setTimeout(250,()=>done(!1))})}async function waitForLocalListener(port,timeoutMs){let startedAt=Date.now();for(;Date.now()-startedAt<timeoutMs;){if(await canConnectLocal(port))return;await new Promise(r=>setTimeout(r,50))}throw Error(`ssh tunnel did not start listening on localhost:${port}`)}async function startSshPortForward(opts){let parsed=parseSshTarget(opts.target);if(!parsed)throw Error(`invalid SSH target: ${opts.target}`);let localPort=opts.localPortPreferred;try{await ensurePortAvailable(localPort)}catch(err){if(isErrno(err)&&err.code===`EADDRINUSE`)localPort=await pickEphemeralPort();else throw err}let userHost=parsed.user?`${parsed.user}@${parsed.host}`:parsed.host,args=[`-N`,`-L`,`${localPort}:127.0.0.1:${opts.remotePort}`,`-p`,String(parsed.port),`-o`,`ExitOnForwardFailure=yes`,`-o`,`BatchMode=yes`,`-o`,`StrictHostKeyChecking=accept-new`,`-o`,`UpdateHostKeys=yes`,`-o`,`ConnectTimeout=5`,`-o`,`ServerAliveInterval=15`,`-o`,`ServerAliveCountMax=3`];opts.identity?.trim()&&args.push(`-i`,opts.identity.trim()),args.push(`--`,userHost);let stderr=[],child=spawn(`/usr/bin/ssh`,args,{stdio:[`ignore`,`ignore`,`pipe`]});child.stderr?.setEncoding(`utf8`),child.stderr?.on(`data`,chunk=>{let lines=String(chunk).split(`
|
|
3
3
|
`).map(l=>l.trim()).filter(Boolean);stderr.push(...lines)});let stop=async()=>{child.killed||(child.kill(`SIGTERM`),await new Promise(resolve=>{let t=setTimeout(()=>{try{child.kill(`SIGKILL`)}finally{resolve()}},1500);child.once(`exit`,()=>{clearTimeout(t),resolve()})}))};try{await Promise.race([waitForLocalListener(localPort,Math.max(250,opts.timeoutMs)),new Promise((_,reject)=>{child.once(`exit`,(code,signal)=>{reject(Error(`ssh exited (${code??`null`}${signal?`/${signal}`:``})`))})})])}catch(err){await stop();let suffix=stderr.length>0?`\n${stderr.join(`
|
|
4
4
|
`)}`:``;throw Error(`${err instanceof Error?err.message:String(err)}${suffix}`,{cause:err})}return{parsedTarget:parsed,localPort,remotePort:opts.remotePort,pid:typeof child.pid==`number`?child.pid:null,stderr,stop}}function parseIntOrNull(value){let s=typeof value==`string`?value.trim():typeof value==`number`||typeof value==`bigint`?String(value):``;if(!s)return null;let n=Number.parseInt(s,10);return Number.isFinite(n)?n:null}function parseTimeoutMs(raw,fallbackMs){let value=typeof raw==`string`?raw.trim():typeof raw==`number`||typeof raw==`bigint`?String(raw):``;if(!value)return fallbackMs;let parsed=Number.parseInt(value,10);if(!Number.isFinite(parsed)||parsed<=0)throw Error(`invalid --timeout: ${value}`);return parsed}function normalizeWsUrl(value){let trimmed=value.trim();return!trimmed||!trimmed.startsWith(`ws://`)&&!trimmed.startsWith(`wss://`)?null:trimmed}function resolveTargets(cfg,explicitUrl){let targets=[],add=t=>{targets.some(x=>x.url===t.url)||targets.push(t)},explicit=typeof explicitUrl==`string`?normalizeWsUrl(explicitUrl):null;explicit&&add({id:`explicit`,kind:`explicit`,url:explicit,active:!0});let remoteUrl=typeof cfg.gateway?.remote?.url==`string`?normalizeWsUrl(cfg.gateway.remote.url):null;return remoteUrl&&add({id:`configRemote`,kind:`configRemote`,url:remoteUrl,active:cfg.gateway?.mode===`remote`}),add({id:`localLoopback`,kind:`localLoopback`,url:`ws://127.0.0.1:${resolveGatewayPort(cfg)}`,active:cfg.gateway?.mode!==`remote`}),targets}function resolveProbeBudgetMs(overallMs,kind){return kind===`localLoopback`?Math.min(800,overallMs):kind===`sshTunnel`?Math.min(2e3,overallMs):Math.min(1500,overallMs)}function sanitizeSshTarget(value){if(typeof value!=`string`)return null;let trimmed=value.trim();return trimmed?trimmed.replace(/^ssh\\s+/,``):null}function resolveAuthForTarget(cfg,target,overrides){let tokenOverride=overrides.token?.trim()?overrides.token.trim():void 0,passwordOverride=overrides.password?.trim()?overrides.password.trim():void 0;if(tokenOverride||passwordOverride)return{token:tokenOverride,password:passwordOverride};if(target.kind===`configRemote`||target.kind===`sshTunnel`){let token=typeof cfg.gateway?.remote?.token==`string`?cfg.gateway.remote.token.trim():``,remotePassword=cfg.gateway?.remote?.password,password=typeof remotePassword==`string`?remotePassword.trim():``;return{token:token.length>0?token:void 0,password:password.length>0?password:void 0}}let envToken=process.env.BUILDERFORCE_AGENTS_GATEWAY_TOKEN?.trim()||``,envPassword=process.env.BUILDERFORCE_AGENTS_GATEWAY_PASSWORD?.trim()||``,cfgToken=typeof cfg.gateway?.auth?.token==`string`?cfg.gateway.auth.token.trim():``,cfgPassword=typeof cfg.gateway?.auth?.password==`string`?cfg.gateway.auth.password.trim():``;return{token:envToken||cfgToken||void 0,password:envPassword||cfgPassword||void 0}}function extractConfigSummary(snapshotUnknown){let snap=snapshotUnknown,path=typeof snap?.path==`string`?snap.path:null,exists=!!snap?.exists,valid=!!snap?.valid,issuesRaw=Array.isArray(snap?.issues)?snap.issues:[],legacyRaw=Array.isArray(snap?.legacyIssues)?snap.legacyIssues:[],cfg=snap?.config??{},gateway=cfg.gateway??{},wideArea=(cfg.discovery??{}).wideArea??{},remote=gateway.remote??{},auth=gateway.auth??{},controlUi=gateway.controlUi??{},tailscale=gateway.tailscale??{},authMode=typeof auth.mode==`string`?auth.mode:null,authTokenConfigured=typeof auth.token==`string`?auth.token.trim().length>0:!1,authPasswordConfigured=typeof auth.password==`string`?auth.password.trim().length>0:!1,remoteUrl=typeof remote.url==`string`?normalizeWsUrl(remote.url):null,remoteTokenConfigured=typeof remote.token==`string`?remote.token.trim().length>0:!1,remotePasswordConfigured=typeof remote.password==`string`?String(remote.password).trim().length>0:!1,wideAreaEnabled=typeof wideArea.enabled==`boolean`?wideArea.enabled:null;return{path,exists,valid,issues:issuesRaw.filter(i=>!!(i&&typeof i.path==`string`&&typeof i.message==`string`)).map(i=>({path:i.path,message:i.message})),legacyIssues:legacyRaw.filter(i=>!!(i&&typeof i.path==`string`&&typeof i.message==`string`)).map(i=>({path:i.path,message:i.message})),gateway:{mode:typeof gateway.mode==`string`?gateway.mode:null,bind:typeof gateway.bind==`string`?gateway.bind:null,port:parseIntOrNull(gateway.port),controlUiEnabled:typeof controlUi.enabled==`boolean`?controlUi.enabled:null,controlUiBasePath:typeof controlUi.basePath==`string`?controlUi.basePath:null,authMode,authTokenConfigured,authPasswordConfigured,remoteUrl,remoteTokenConfigured,remotePasswordConfigured,tailscaleMode:typeof tailscale.mode==`string`?tailscale.mode:null},discovery:{wideAreaEnabled}}}function buildNetworkHints(cfg){let tailnetIPv4=pickPrimaryTailnetIPv4(),port=resolveGatewayPort(cfg);return{localLoopbackUrl:`ws://127.0.0.1:${port}`,localTailnetUrl:tailnetIPv4?`ws://${tailnetIPv4}:${port}`:null,tailnetIPv4:tailnetIPv4??null}}function renderTargetHeader(target,rich){let kindLabel=target.kind===`localLoopback`?`Local loopback`:target.kind===`sshTunnel`?`Remote over SSH`:target.kind===`configRemote`?target.active?`Remote (configured)`:`Remote (configured, inactive)`:`URL (explicit)`;return`${colorize(rich,theme.heading,kindLabel)} ${colorize(rich,theme.muted,target.url)}`}function renderProbeSummaryLine(probe,rich){if(probe.ok){let latency=typeof probe.connectLatencyMs==`number`?`${probe.connectLatencyMs}ms`:`unknown`;return`${colorize(rich,theme.success,`Connect: ok`)} (${latency}) · ${colorize(rich,theme.success,`RPC: ok`)}`}let detail=probe.error?` - ${probe.error}`:``;if(probe.connectLatencyMs!=null){let latency=typeof probe.connectLatencyMs==`number`?`${probe.connectLatencyMs}ms`:`unknown`;return`${colorize(rich,theme.success,`Connect: ok`)} (${latency}) · ${colorize(rich,theme.error,`RPC: failed`)}${detail}`}return`${colorize(rich,theme.error,`Connect: failed`)}${detail}`}async function gatewayStatusCommand(opts,runtime){let startedAt=Date.now(),cfg=loadConfig(),rich=isRich()&&opts.json!==!0,overallTimeoutMs=parseTimeoutMs(opts.timeout,3e3),wideAreaDomain=resolveWideAreaDiscoveryDomain({configDomain:cfg.discovery?.wideArea?.domain}),baseTargets=resolveTargets(cfg,opts.url),network=buildNetworkHints(cfg),discoveryTimeoutMs=Math.min(1200,overallTimeoutMs),discoveryPromise=discoverGatewayBeacons({timeoutMs:discoveryTimeoutMs,wideAreaDomain}),sshTarget=sanitizeSshTarget(opts.ssh)??sanitizeSshTarget(cfg.gateway?.remote?.sshTarget),sshIdentity=sanitizeSshTarget(opts.sshIdentity)??sanitizeSshTarget(cfg.gateway?.remote?.sshIdentity),remotePort=resolveGatewayPort(cfg),sshTunnelError=null,sshTunnelStarted=!1;if(sshTarget||=inferSshTargetFromRemoteUrl(cfg.gateway?.remote?.url),sshTarget){let resolved=await resolveSshTarget(sshTarget,sshIdentity,overallTimeoutMs);resolved&&(sshTarget=resolved.target,!sshIdentity&&resolved.identity&&(sshIdentity=resolved.identity))}let{discovery,probed}=await withProgress({label:`Inspecting gateways…`,indeterminate:!0,enabled:opts.json!==!0},async()=>{let tryStartTunnel=async()=>{if(!sshTarget)return null;try{let tunnel=await startSshPortForward({target:sshTarget,identity:sshIdentity??void 0,localPortPreferred:remotePort,remotePort,timeoutMs:Math.min(1500,overallTimeoutMs)});return sshTunnelStarted=!0,tunnel}catch(err){return sshTunnelError=err instanceof Error?err.message:String(err),null}},discoveryTask=discoveryPromise.catch(()=>[]),tunnelTask=sshTarget?tryStartTunnel():Promise.resolve(null),[discovery,tunnelFirst]=await Promise.all([discoveryTask,tunnelTask]);if(!sshTarget&&opts.sshAuto){let user=process.env.USER?.trim()||``,candidates=discovery.map(b=>{let host=b.tailnetDns||b.lanHost||b.host;if(!host?.trim())return null;let sshPort=typeof b.sshPort==`number`&&b.sshPort>0?b.sshPort:22,base=user?`${user}@${host.trim()}`:host.trim();return sshPort===22?base:`${base}:${sshPort}`}).filter(candidate=>!!(candidate&&parseSshTarget(candidate)));candidates.length>0&&(sshTarget=candidates[0]??null)}let tunnel=tunnelFirst||(sshTarget&&!sshTunnelStarted&&!sshTunnelError?await tryStartTunnel():null),tunnelTarget=tunnel?{id:`sshTunnel`,kind:`sshTunnel`,url:`ws://127.0.0.1:${tunnel.localPort}`,active:!0,tunnel:{kind:`ssh`,target:sshTarget??``,localPort:tunnel.localPort,remotePort,pid:tunnel.pid}}:null,targets=tunnelTarget?[tunnelTarget,...baseTargets.filter(t=>t.url!==tunnelTarget.url)]:baseTargets;try{return{discovery,probed:await Promise.all(targets.map(async target=>{let auth=resolveAuthForTarget(cfg,target,{token:typeof opts.token==`string`?opts.token:void 0,password:typeof opts.password==`string`?opts.password:void 0}),timeoutMs=resolveProbeBudgetMs(overallTimeoutMs,target.kind),probe=await probeGateway({url:target.url,auth,timeoutMs});return{target,probe,configSummary:probe.configSnapshot?extractConfigSummary(probe.configSnapshot):null,self:pickGatewaySelfPresence(probe.presence)}}))}}finally{if(tunnel)try{await tunnel.stop()}catch{}}}),reachable=probed.filter(p=>p.probe.ok),ok=reachable.length>0,multipleGateways=reachable.length>1,primary=reachable.find(p=>p.target.kind===`explicit`)??reachable.find(p=>p.target.kind===`sshTunnel`)??reachable.find(p=>p.target.kind===`configRemote`)??reachable.find(p=>p.target.kind===`localLoopback`)??null,warnings=[];if(sshTarget&&!sshTunnelStarted&&warnings.push({code:`ssh_tunnel_failed`,message:sshTunnelError?`SSH tunnel failed: ${String(sshTunnelError)}`:`SSH tunnel failed to start; falling back to direct probes.`}),multipleGateways&&warnings.push({code:`multiple_gateways`,message:`Unconventional setup: multiple reachable gateways detected. Usually one gateway per network is recommended unless you intentionally run isolated profiles, like a rescue bot (see docs: /gateway#multiple-gateways-same-host).`,targetIds:reachable.map(p=>p.target.id)}),opts.json){runtime.log(JSON.stringify({ok,ts:Date.now(),durationMs:Date.now()-startedAt,timeoutMs:overallTimeoutMs,primaryTargetId:primary?.target.id??null,warnings,network,discovery:{timeoutMs:discoveryTimeoutMs,count:discovery.length,beacons:discovery.map(b=>({instanceName:b.instanceName,displayName:b.displayName??null,domain:b.domain??null,host:b.host??null,lanHost:b.lanHost??null,tailnetDns:b.tailnetDns??null,gatewayPort:b.gatewayPort??null,sshPort:b.sshPort??null,wsUrl:(()=>{let host=b.tailnetDns||b.lanHost||b.host,port=b.gatewayPort??18789;return host?`ws://${host}:${port}`:null})()}))},targets:probed.map(p=>({id:p.target.id,kind:p.target.kind,url:p.target.url,active:p.target.active,tunnel:p.target.tunnel??null,connect:{ok:p.probe.ok,latencyMs:p.probe.connectLatencyMs,error:p.probe.error,close:p.probe.close},self:p.self,config:p.configSummary,health:p.probe.health,summary:p.probe.status,presence:p.probe.presence}))},null,2)),ok||runtime.exit(1);return}if(runtime.log(colorize(rich,theme.heading,`Gateway Status`)),runtime.log(ok?`${colorize(rich,theme.success,`Reachable`)}: yes`:`${colorize(rich,theme.error,`Reachable`)}: no`),runtime.log(colorize(rich,theme.muted,`Probe budget: ${overallTimeoutMs}ms`)),warnings.length>0){runtime.log(``),runtime.log(colorize(rich,theme.warn,`Warning:`));for(let w of warnings)runtime.log(`- ${w.message}`)}runtime.log(``),runtime.log(colorize(rich,theme.heading,`Discovery (this machine)`));let discoveryDomains=wideAreaDomain?`local. + ${wideAreaDomain}`:`local.`;runtime.log(discovery.length>0?`Found ${discovery.length} gateway(s) via Bonjour (${discoveryDomains})`:`Found 0 gateways via Bonjour (${discoveryDomains})`),discovery.length===0&&runtime.log(colorize(rich,theme.muted,`Tip: if the gateway is remote, mDNS won’t cross networks; use Wide-Area Bonjour (split DNS) or SSH tunnels.`)),runtime.log(``),runtime.log(colorize(rich,theme.heading,`Targets`));for(let p of probed){if(runtime.log(renderTargetHeader(p.target,rich)),runtime.log(` ${renderProbeSummaryLine(p.probe,rich)}`),p.target.tunnel?.kind===`ssh`&&runtime.log(` ${colorize(rich,theme.muted,`ssh`)}: ${colorize(rich,theme.command,p.target.tunnel.target)}`),p.probe.ok&&p.self){let host=p.self.host??`unknown`,ip=p.self.ip?` (${p.self.ip})`:``,platform=p.self.platform?` · ${p.self.platform}`:``,version=p.self.version?` · app ${p.self.version}`:``;runtime.log(` ${colorize(rich,theme.info,`Gateway`)}: ${host}${ip}${platform}${version}`)}if(p.configSummary){let c=p.configSummary,wideArea=c.discovery.wideAreaEnabled===!0?`enabled`:c.discovery.wideAreaEnabled===!1?`disabled`:`unknown`;runtime.log(` ${colorize(rich,theme.info,`Wide-area discovery`)}: ${wideArea}`)}runtime.log(``)}ok||runtime.exit(1)}function inferSshTargetFromRemoteUrl(rawUrl){if(typeof rawUrl!=`string`)return null;let trimmed=rawUrl.trim();if(!trimmed)return null;let host=null;try{host=new URL(trimmed).hostname||null}catch{return null}if(!host)return null;let user=process.env.USER?.trim()||``;return user?`${user}@${host}`:host}function buildSshTarget(input){let host=input.host?.trim()??``;if(!host)return null;let user=input.user?.trim()??``,base=user?`${user}@${host}`:host,port=input.port??22;return port&&port!==22?`${base}:${port}`:base}async function resolveSshTarget(rawTarget,identity,overallTimeoutMs){let parsed=parseSshTarget(rawTarget);if(!parsed)return null;let config=await resolveSshConfig(parsed,{identity:identity??void 0,timeoutMs:Math.min(800,overallTimeoutMs)});if(!config)return{target:rawTarget,identity:identity??void 0};let target=buildSshTarget({user:config.user??parsed.user,host:config.host??parsed.host,port:config.port??parsed.port});return target?{target,identity:identity??config.identityFiles.find(entry=>entry.trim().length>0)?.trim()??void 0}:{target:rawTarget,identity:identity??void 0}}const gatewayCallOpts=cmd=>cmd.option(`--url <url>`,`Gateway WebSocket URL (defaults to gateway.remote.url when configured)`).option(`--token <token>`,`Gateway token (if required)`).option(`--password <password>`,`Gateway password (password auth)`).option(`--timeout <ms>`,`Timeout in ms`,`10000`).option(`--expect-final`,`Wait for final response (agent)`,!1).option(`--json`,`Output JSON`,!1),callGatewayCli=async(method,opts,params)=>withProgress({label:`Gateway ${method}`,indeterminate:!0,enabled:opts.json!==!0},async()=>await callGateway({url:opts.url,token:opts.token,password:opts.password,method,params,expectFinal:!!opts.expectFinal,timeoutMs:Number(opts.timeout??1e4),clientName:GATEWAY_CLIENT_NAMES.CLI,mode:GATEWAY_CLIENT_MODES.CLI}));function parseDiscoverTimeoutMs(raw,fallbackMs){if(raw==null)return fallbackMs;let value=typeof raw==`string`?raw.trim():typeof raw==`number`||typeof raw==`bigint`?String(raw):null;if(value===null)throw Error(`invalid --timeout`);if(!value)return fallbackMs;let parsed=Number.parseInt(value,10);if(!Number.isFinite(parsed)||parsed<=0)throw Error(`invalid --timeout: ${value}`);return parsed}function pickBeaconHost(beacon){let host=beacon.host||beacon.tailnetDns||beacon.lanHost;return host?.trim()?host.trim():null}function pickGatewayPort(beacon){let port=beacon.port??beacon.gatewayPort??18789;return port>0?port:18789}function dedupeBeacons(beacons){let out=[],seen=new Set;for(let b of beacons){let host=pickBeaconHost(b)??``,key=[b.domain??``,b.instanceName??``,b.displayName??``,host,String(b.port??``),String(b.gatewayPort??``)].join(`|`);seen.has(key)||(seen.add(key),out.push(b))}return out}function renderBeaconLines(beacon,rich){let nameRaw=(beacon.displayName||beacon.instanceName||`Gateway`).trim(),domainRaw=(beacon.domain||`local.`).trim(),title=colorize(rich,theme.accentBright,nameRaw),domain=colorize(rich,theme.muted,domainRaw),host=pickBeaconHost(beacon),gatewayPort=pickGatewayPort(beacon),scheme=beacon.gatewayTls?`wss`:`ws`,wsUrl=host?`${scheme}://${host}:${gatewayPort}`:null,lines=[`- ${title} ${domain}`];if(beacon.tailnetDns&&lines.push(` ${colorize(rich,theme.info,`tailnet`)}: ${beacon.tailnetDns}`),beacon.lanHost&&lines.push(` ${colorize(rich,theme.info,`lan`)}: ${beacon.lanHost}`),beacon.host&&lines.push(` ${colorize(rich,theme.info,`host`)}: ${beacon.host}`),wsUrl&&lines.push(` ${colorize(rich,theme.muted,`ws`)}: ${colorize(rich,theme.command,wsUrl)}`),beacon.role&&lines.push(` ${colorize(rich,theme.muted,`role`)}: ${beacon.role}`),beacon.transport&&lines.push(` ${colorize(rich,theme.muted,`transport`)}: ${beacon.transport}`),beacon.gatewayTls){let fingerprint=beacon.gatewayTlsFingerprintSha256?`sha256 ${beacon.gatewayTlsFingerprintSha256}`:`enabled`;lines.push(` ${colorize(rich,theme.muted,`tls`)}: ${fingerprint}`)}if(typeof beacon.sshPort==`number`&&beacon.sshPort>0&&host){let ssh=`ssh -N -L 18789:127.0.0.1:18789 <user>@${host} -p ${beacon.sshPort}`;lines.push(` ${colorize(rich,theme.muted,`ssh`)}: ${colorize(rich,theme.command,ssh)}`)}return lines}function truncateCloseReason(reason,maxBytes=120){if(!reason)return`invalid handshake`;let buf=Buffer$1.from(reason);return buf.length<=maxBytes?reason:buf.subarray(0,maxBytes).toString()}const log$7=createSubsystemLogger(`gateway/exec-approvals`);function normalizeMode(mode){return mode??`session`}function matchSessionFilter(sessionKey,patterns){return patterns.some(pattern=>{try{return sessionKey.includes(pattern)||new RegExp(pattern).test(sessionKey)}catch{return sessionKey.includes(pattern)}})}function shouldForward(params){let config=params.config;if(!config?.enabled)return!1;if(config.agentFilter?.length){let agentId=params.request.request.agentId??parseAgentSessionKey(params.request.request.sessionKey)?.agentId;if(!agentId||!config.agentFilter.includes(agentId))return!1}if(config.sessionFilter?.length){let sessionKey=params.request.request.sessionKey;if(!sessionKey||!matchSessionFilter(sessionKey,config.sessionFilter))return!1}return!0}function buildTargetKey(target){let channel=normalizeMessageChannel(target.channel)??target.channel,accountId=target.accountId??``,threadId=target.threadId??``;return[channel,target.to,accountId,threadId].join(`:`)}function shouldSkipDiscordForwarding(target){return(normalizeMessageChannel(target.channel)??target.channel)===`discord`}function formatApprovalCommand(command){if(!command.includes(`
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import"./paths-5FcIFMsj.js";import{B as theme,E as toWhatsappJid,P as setVerbose,h as normalizeE164,l as escapeRegExp,n as assertWebChannel,z as isRich}from"./utils-DbaBVFaK.js";import"./embedded-helpers-CEsr3aQ0.js";import{It as resolveCommitHash,t as getReplyFromConfig}from"./reply-Cd3vVnD7.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import{a as enableConsoleCapture,i as defaultRuntime,p as visibleWidth}from"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./logger-Bch0bx9c.js";import{n as runExec,t as runCommandWithTimeout}from"./exec-DdcIjeyn.js";import"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import"./model-selection-9bRFKBI_.js";import{n as replaceCliName,r as resolveCliName}from"./command-format-D806O2pt.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import{r as normalizeEnv,t as isTruthyEnvValue}from"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import{G as loadDotEnv,U as VERSION,r as loadConfig}from"./io-3R_ZyUxB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-_1Ca6jGb.js";import{F as applyTemplate,c as installUnhandledRejectionHandler,d as reportAndExit,u as installUncaughtExceptionHandler}from"./runner-SxCr9kXD.js";import"./model-catalog-C6UrZ0uG.js";import"./sandbox-BZibn6PX.js";import"./chrome-a3X9_-nf.js";import{l as ensureBinary,u as promptYesNo}from"./tailscale-DLkpGquM.js";import"./auth-lebUHrkd.js";import"./server-context-DJZT7Upf.js";import"./frontmatter-3D1EdC1L.js";import"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-BzfLvF8W.js";import"./redact-BHdfp2MZ.js";import"./errors-B1MIg3g-.js";import"./paths-cR8ct-Y3.js";import"./ssrf-p9k-iapc.js";import"./image-ops-C8IUQKjn.js";import"./store-CmHBQ-yX.js";import{i as handlePortError,n as describePortOwner,r as ensurePortAvailable,t as PortInUseError}from"./ports-DgmEDNOm.js";import"./trash-DD2Hc5oq.js";import{O as deriveSessionKey,a as loadSessionStore,c as saveSessionStore,k as resolveSessionKey}from"./sessions-CdanN_ZI.js";import"./message-channel-D_jXxXQj.js";import"./plugins-D5zP6ENo.js";import"./accounts-o35LU_iy.js";import"./accounts-rmXEiebi.js";import"./accounts-BLueHgKj.js";import"./bindings-DR59065T.js";import"./send-DerUBvXW.js";import"./send-DyF1Xy9K.js";import{c as resolveStorePath}from"./paths-DJ6rztqJ.js";import"./tool-images-B7b_OiMz.js";import"./tool-display-ByOZtWvA.js";import"./fetch-guard-8mwt3-hm.js";import"./api-key-rotation-CHBjUwUJ.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import"./tokens-CCU3zO-D.js";import"./project-context-store-wcq7lXuI.js";import"./with-timeout-Bwq-GyUQ.js";import"./deliver-BpLm3ktn.js";import"./send-CBBziNqM.js";import"./workspace-D4LK4thI.js";import"./reply-prefix-zIMgi6K6.js";import"./memory-cli-DRz4wtHk.js";import"./manager-DwywI_5-.js";import"./retry-DlVhg5qu.js";import"./client-xfoidwPI.js";import"./call-BbRf8gFM.js";import"./common-BTbIhLyt.js";import"./chunk-FCBlVOyo.js";import"./markdown-tables-P6uoUSFa.js";import"./ir-5BNoIXZm.js";import"./render-D1dVTEB1.js";import"./builderforcellm-syscheck-DrFJ638L.js";import"./send-4d9NswaD.js";import"./outbound-attachment-C7wByQO5.js";import"./fetch-DnVtDecb.js";import"./delivery-queue-CXKynF1P.js";import"./channel-activity-CCNDbdD3.js";import"./tables-ERcoWFDp.js";import"./pairing-store-CbvMJhD3.js";import{t as formatDocsLink}from"./links-BgWWaaOT.js";import"./cli-utils-LBYKdNFb.js";import"./help-format-Qfk2vDNX.js";import"./progress-BfOtdN6b.js";import"./resolve-route-D49haUnv.js";import"./replies-Bd2RPZwQ.js";import"./refresh-TiC_kLgE.js";import"./coding-tools.policy-6qh9acJy.js";import"./send-BJDzwYJN.js";import"./onboard-helpers-Cf5dNq7-.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-BW5jQZlr.js";import"./session-cost-usage-BjH7mxVj.js";import"./usage-format-DGf8ZWPH.js";import"./provider-usage-BdrU4cIE.js";import"./active-listener-Dcg19lJG.js";import"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import"./project-context-CJj0Inz-.js";import"./control-service-BbsswoMy.js";import"./stagger-8EkqkqJv.js";import"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-CoGqoBTH.js";import"./transformers-stream-D7nRu4Qu.js";import{r as waitForever,t as monitorWebChannel}from"./channel-web-DJa8JC9W.js";import"./outbound-OI-t5zZ0.js";import"./session-BzQdcCqN.js";import"./login-DtDUyFO3.js";import{t as createDefaultDeps}from"./deps-CkJiJ6wc.js";import{t as isMainModule}from"./is-main-CC_O8ESS.js";import{t as ensureBuilderForceAgentsCliOnPath}from"./path-env-Cy9l1Ba9.js";import{t as assertSupportedRuntime}from"./runtime-guard-DhksRHci.js";import"./ports-ReH_tlKd.js";import{d as getVerboseFlag,f as hasHelpOrVersion,i as getCoreCliCommandsWithSubcommands,n as setProgramContext,o as registerProgramCommands,s as getSubCliCommandsWithSubcommands,u as getCommandPath}from"./program-context-BCwL3wlM.js";import"./catalog-rgiY__UQ.js";import"./plugin-registry-C-_GA65s.js";import{n as resolveCliChannelOptions}from"./channel-options-CDixz6dT.js";import process$1 from"node:process";import{fileURLToPath}from"node:url";import{Command}from"commander";function createProgramContext(){let channelOptions=resolveCliChannelOptions();return{programVersion:VERSION,channelOptions,messageChannelOptions:channelOptions.join(`|`),agentChannelOptions:[`last`,...channelOptions].join(`|`)}}const DEFAULT_TAGLINE=`All your chats, one BuilderForceAgents.`,HOLIDAY_TAGLINES={newYear:`New Year's Day: New year, new config—same old EADDRINUSE, but this time we resolve it like grown-ups.`,lunarNewYear:`Lunar New Year: May your builds be lucky, your branches prosperous, and your merge conflicts chased away with fireworks.`,christmas:`Christmas: Ho ho ho—Santa's little agentNode-sistant is here to ship joy, roll back chaos, and stash the keys safely.`,eid:`Eid al-Fitr: Celebration mode: queues cleared, tasks completed, and good vibes committed to main with clean history.`,diwali:`Diwali: Let the logs sparkle and the bugs flee—today we light up the terminal and ship with pride.`,easter:`Easter: I found your missing environment variable—consider it a tiny CLI egg hunt with fewer jellybeans.`,hanukkah:`Hanukkah: Eight nights, eight retries, zero shame—may your gateway stay lit and your deployments stay peaceful.`,halloween:`Halloween: Spooky season: beware haunted dependencies, cursed caches, and the ghost of node_modules past.`,thanksgiving:`Thanksgiving: Grateful for stable ports, working DNS, and a bot that reads the logs so nobody has to.`,valentines:`Valentine's Day: Roses are typed, violets are piped—I'll automate the chores so you can spend time with humans.`},TAGLINES=[`Your terminal just grew agentNodes—type something and let the bot pinch the busywork.`,`Welcome to the command line: where dreams compile and confidence segfaults.`,`I run on caffeine, JSON5, and the audacity of "it worked on my machine."`,`Gateway online—please keep hands, feet, and appendages inside the shell at all times.`,`I speak fluent bash, mild sarcasm, and aggressive tab-completion energy.`,`One CLI to rule them all, and one more restart because you changed the port.`,`If it works, it's automation; if it breaks, it's a "learning opportunity."`,`Pairing codes exist because even bots believe in consent—and good security hygiene.`,`Your .env is showing; don't worry, I'll pretend I didn't see it.`,`I'll do the boring stuff while you dramatically stare at the logs like it's cinema.`,`I'm not saying your workflow is chaotic... I'm just bringing a linter and a helmet.`,`Type the command with confidence—nature will provide the stack trace if needed.`,`I don't judge, but your missing API keys are absolutely judging you.`,`I can grep it, git blame it, and gently roast it—pick your coping mechanism.`,`Hot reload for config, cold sweat for deploys.`,`I'm the assistant your terminal demanded, not the one your sleep schedule requested.`,`I keep secrets like a vault... unless you print them in debug logs again.`,`Automation with agentNodes: minimal fuss, maximal pinch.`,`I'm basically a Swiss Army knife, but with more opinions and fewer sharp edges.`,`If you're lost, run doctor; if you're brave, run prod; if you're wise, run tests.`,`Your task has been queued; your dignity has been deprecated.`,`I can't fix your code taste, but I can fix your build and your backlog.`,`I'm not magic—I'm just extremely persistent with retries and coping strategies.`,`It's not "failing," it's "discovering new ways to configure the same thing wrong."`,`Give me a workspace and I'll give you fewer tabs, fewer toggles, and more oxygen.`,`I read logs so you can keep pretending you don't have to.`,`If something's on fire, I can't extinguish it—but I can write a beautiful postmortem.`,`I'll refactor your busywork like it owes me money.`,`Say "stop" and I'll stop—say "ship" and we'll both learn a lesson.`,`I'm the reason your shell history looks like a hacker-movie montage.`,`I'm like tmux: confusing at first, then suddenly you can't live without me.`,`I can run local, remote, or purely on vibes—results may vary with DNS.`,`If you can describe it, I can probably automate it—or at least make it funnier.`,`Your config is valid, your assumptions are not.`,`I don't just autocomplete—I auto-commit (emotionally), then ask you to review (logically).`,`Less clicking, more shipping, fewer "where did that file go" moments.`,`AgentNodes out, commit in—let's ship something mildly responsible.`,`If it's repetitive, I'll automate it; if it's hard, I'll bring jokes and a rollback plan.`,`Because texting yourself reminders is so 2024.`,`Your inbox, your infra, your rules.`,`Turning "I'll reply later" into "my bot replied instantly".`,`Chat automation for people who peaked at IRC.`,`Because Siri wasn't answering at 3AM.`,`IPC, but it's your phone.`,`The UNIX philosophy meets your DMs.`,`curl for conversations.`,`Less middlemen, more messages.`,`Ship fast, log faster.`,`End-to-end encrypted, drama-to-drama excluded.`,`The only bot that stays out of your training set.`,`WhatsApp automation without the "please accept our new privacy policy".`,`Chat APIs that don't require a Senate hearing.`,`Meta wishes they shipped this fast.`,`Because the right answer is usually a script.`,`Your messages, your servers, your control.`,`OpenAI-compatible, not OpenAI-dependent.`,`iMessage green bubble energy, but for everyone.`,`Siri's competent cousin.`,`Works on Android. Crazy concept, we know.`,`No $999 stand required.`,`We ship features faster than Apple ships calculator updates.`,`Your AI assistant, now without the $3,499 headset.`,`Think different. Actually think.`,`Ah, the fruit tree company! 🍎`,`Greetings, Professor Falken`,HOLIDAY_TAGLINES.newYear,HOLIDAY_TAGLINES.lunarNewYear,HOLIDAY_TAGLINES.christmas,HOLIDAY_TAGLINES.eid,HOLIDAY_TAGLINES.diwali,HOLIDAY_TAGLINES.easter,HOLIDAY_TAGLINES.hanukkah,HOLIDAY_TAGLINES.halloween,HOLIDAY_TAGLINES.thanksgiving,HOLIDAY_TAGLINES.valentines],DAY_MS=1440*60*1e3;function utcParts(date){return{year:date.getUTCFullYear(),month:date.getUTCMonth(),day:date.getUTCDate()}}const onMonthDay=(month,day)=>date=>{let parts=utcParts(date);return parts.month===month&&parts.day===day},onSpecificDates=(dates,durationDays=1)=>date=>{let parts=utcParts(date);return dates.some(([year,month,day])=>{if(parts.year!==year)return!1;let start=Date.UTC(year,month,day),current=Date.UTC(parts.year,parts.month,parts.day);return current>=start&¤t<start+durationDays*DAY_MS})},HOLIDAY_RULES=new Map([[HOLIDAY_TAGLINES.newYear,onMonthDay(0,1)],[HOLIDAY_TAGLINES.lunarNewYear,onSpecificDates([[2025,0,29],[2026,1,17],[2027,1,6]],1)],[HOLIDAY_TAGLINES.eid,onSpecificDates([[2025,2,30],[2025,2,31],[2026,2,20],[2027,2,10]],1)],[HOLIDAY_TAGLINES.diwali,onSpecificDates([[2025,9,20],[2026,10,8],[2027,9,28]],1)],[HOLIDAY_TAGLINES.easter,onSpecificDates([[2025,3,20],[2026,3,5],[2027,2,28]],1)],[HOLIDAY_TAGLINES.hanukkah,(windows=>date=>{let parts=utcParts(date),window=windows.find(entry=>entry.year===parts.year);if(!window)return!1;let start=Date.UTC(window.year,window.month,window.day),current=Date.UTC(parts.year,parts.month,parts.day);return current>=start&¤t<start+window.duration*DAY_MS})([{year:2025,month:11,day:15,duration:8},{year:2026,month:11,day:5,duration:8},{year:2027,month:11,day:25,duration:8}])],[HOLIDAY_TAGLINES.halloween,onMonthDay(9,31)],[HOLIDAY_TAGLINES.thanksgiving,date=>{let parts=utcParts(date);if(parts.month!==10)return!1;let fourthThursday=1+(4-new Date(Date.UTC(parts.year,10,1)).getUTCDay()+7)%7+21;return parts.day===fourthThursday}],[HOLIDAY_TAGLINES.valentines,onMonthDay(1,14)],[HOLIDAY_TAGLINES.christmas,onMonthDay(11,25)]]);function isTaglineActive(tagline,date){let rule=HOLIDAY_RULES.get(tagline);return rule?rule(date):!0}function activeTaglines(options={}){if(TAGLINES.length===0)return[DEFAULT_TAGLINE];let today=options.now?options.now():new Date,filtered=TAGLINES.filter(tagline=>isTaglineActive(tagline,today));return filtered.length>0?filtered:TAGLINES}function pickTagline(options={}){let override=(options.env??process.env)?.BUILDERFORCE_AGENTS_TAGLINE_INDEX;if(override!==void 0){let parsed=Number.parseInt(override,10);if(!Number.isNaN(parsed)&&parsed>=0){let pool=TAGLINES.length>0?TAGLINES:[DEFAULT_TAGLINE];return pool[parsed%pool.length]}}let pool=activeTaglines(options),rand=options.random??Math.random;return pool[Math.floor(rand()*pool.length)%pool.length]}let bannerEmitted=!1;const hasJsonFlag=argv=>argv.some(arg=>arg===`--json`||arg.startsWith(`--json=`)),hasVersionFlag=argv=>argv.some(arg=>arg===`--version`||arg===`-V`||arg===`-v`);function formatCliBannerLine(version,options={}){let commitLabel=options.commit??resolveCommitHash({env:options.env})??`local`,tagline=pickTagline(options),rich=options.richTty??isRich(),title=`BuilderForceAgents`,columns=options.columns??process.stdout.columns??120,plainFullLine=`${title} ${version} (${commitLabel}) — ${tagline}`,fitsOnOneLine=visibleWidth(plainFullLine)<=columns;return rich?fitsOnOneLine?`${theme.brand(title)} ${theme.brand(version)} ${theme.muted(`(${commitLabel})`)} ${theme.muted(`—`)} ${theme.brand(tagline)}`:`${`${theme.brand(title)} ${theme.brand(version)} ${theme.muted(`(${commitLabel})`)}`}\n${`${` `.repeat(0)}${theme.brand(tagline)}`}`:fitsOnOneLine?plainFullLine:`${`${title} ${version} (${commitLabel})`}\n${`${` `.repeat(0)}${tagline}`}`}function emitCliBanner(version,options={}){if(bannerEmitted)return;let argv=options.argv??process.argv;if(!process.stdout.isTTY||hasJsonFlag(argv)||hasVersionFlag(argv))return;let line=formatCliBannerLine(version,options);process.stdout.write(`\n${line}\n\n`),bannerEmitted=!0}function hasEmittedCliBanner(){return bannerEmitted}const CLI_NAME=resolveCliName(),CLI_NAME_PATTERN=escapeRegExp(CLI_NAME),ROOT_COMMANDS_WITH_SUBCOMMANDS=new Set([...getCoreCliCommandsWithSubcommands(),...getSubCliCommandsWithSubcommands()]),EXAMPLES=[[`builderforce models --help`,`Show detailed help for the models command.`],[`builderforce channels login --verbose`,`Link personal WhatsApp Web and show QR + connection logs.`],[`builderforce message send --target +15555550123 --message "Hi" --json`,`Send via your web session and print JSON result.`],[`builderforce gateway --port 18789`,`Run the WebSocket Gateway locally.`],[`builderforce --dev gateway`,`Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.`],[`builderforce gateway --force`,`Kill anything bound to the default gateway port, then start it.`],[`builderforce gateway ...`,`Gateway control via WebSocket.`],[`builderforce agent --to +15555550123 --message "Run summary" --deliver`,`Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.`],[`builderforce message send --channel telegram --target @mychat --message "Hi"`,`Send via your Telegram bot.`]];function configureProgramHelp(program,ctx){program.name(CLI_NAME).description(``).version(ctx.programVersion).option(`--dev`,`Dev profile: isolate state under ~/.builderforce-dev, default gateway port 19001, and shift derived ports (browser/canvas)`).option(`--profile <name>`,`Use a named profile (isolates BUILDERFORCE_AGENTS_STATE_DIR/BUILDERFORCE_AGENTS_CONFIG_PATH under ~/.builderforce-<name>)`),program.option(`--no-color`,`Disable ANSI colors`,!1),program.helpOption(`-h, --help`,`Display help for command`),program.helpCommand(`help [command]`,`Display help for command`),program.configureHelp({sortSubcommands:!0,sortOptions:!0,optionTerm:option=>theme.option(option.flags),subcommandTerm:cmd=>{let hasSubcommands=cmd.parent===program&&ROOT_COMMANDS_WITH_SUBCOMMANDS.has(cmd.name());return theme.command(hasSubcommands?`${cmd.name()} *`:cmd.name())}});let formatHelpOutput=str=>{let output=str;return RegExp(`^Usage:\\s+${CLI_NAME_PATTERN}\\s+\\[options\\]\\s+\\[command\\]\\s*$`,`m`).test(output)&&/^Commands:/m.test(output)&&(output=output.replace(/^Commands:/m,`Commands:\n ${theme.muted(`Hint: commands suffixed with * have subcommands. Run <command> --help for details.`)}`)),output.replace(/^Usage:/gm,theme.heading(`Usage:`)).replace(/^Options:/gm,theme.heading(`Options:`)).replace(/^Commands:/gm,theme.heading(`Commands:`))};program.configureOutput({writeOut:str=>{process.stdout.write(formatHelpOutput(str))},writeErr:str=>{process.stderr.write(formatHelpOutput(str))},outputError:(str,write)=>write(theme.error(str))}),(process.argv.includes(`-V`)||process.argv.includes(`--version`)||process.argv.includes(`-v`))&&(console.log(ctx.programVersion),process.exit(0)),program.addHelpText(`beforeAll`,()=>{if(hasEmittedCliBanner())return``;let rich=isRich();return`\n${formatCliBannerLine(ctx.programVersion,{richTty:rich})}\n`});let fmtExamples=EXAMPLES.map(([cmd,desc])=>` ${theme.command(replaceCliName(cmd,CLI_NAME))}\n ${theme.muted(desc)}`).join(`
|
|
3
|
-
`);program.addHelpText(`afterAll`,({command})=>{if(command!==program)return``;let docs=formatDocsLink(`/cli`,`docs.builderforce.ai/cli`);return`\n${theme.heading(`Examples:`)}\n${fmtExamples}\n\n${theme.muted(`Docs:`)} ${docs}\n`})}function setProcessTitleForCommand(actionCommand){let current=actionCommand;for(;current.parent&¤t.parent.parent;)current=current.parent;let name=current.name(),cliName=resolveCliName();!name||name===cliName||(process.title=`${cliName}-${name}`)}const PLUGIN_REQUIRED_COMMANDS=new Set([`message`,`channels`,`directory`]);function registerPreActionHooks(program,programVersion){program.hook(`preAction`,async(_thisCommand,actionCommand)=>{setProcessTitleForCommand(actionCommand);let argv=process.argv;if(hasHelpOrVersion(argv))return;let commandPath=getCommandPath(argv,2);isTruthyEnvValue(process.env.BUILDERFORCE_AGENTS_HIDE_BANNER)||commandPath[0]===`update`||commandPath[0]===`completion`||commandPath[0]===`plugins`&&commandPath[1]===`update`||emitCliBanner(programVersion);let verbose=getVerboseFlag(argv,{includeDebug:!0});if(setVerbose(verbose),verbose||(process.env.NODE_NO_WARNINGS??=`1`),commandPath[0]===`doctor`||commandPath[0]===`completion`)return;let{ensureConfigReady}=await import(`./config-guard-CD-Wq8kk.js`);if(await ensureConfigReady({runtime:defaultRuntime,commandPath}),PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])){let{ensurePluginRegistryLoaded}=await import(`./plugin-registry-BjMr3yXM.js`);ensurePluginRegistryLoaded()}})}function buildProgram(){let program=new Command,ctx=createProgramContext(),argv=process.argv;return setProgramContext(program,ctx),configureProgramHelp(program,ctx),registerPreActionHooks(program,ctx.programVersion),registerProgramCommands(program,ctx,argv),program.option(`-m, --message <text>`,`Start a session and send this as the first message`).action(async opts=>{let{runBuilderForceAgentsSession}=await import(`./builderforce-
|
|
2
|
+
import"./paths-5FcIFMsj.js";import{B as theme,E as toWhatsappJid,P as setVerbose,h as normalizeE164,l as escapeRegExp,n as assertWebChannel,z as isRich}from"./utils-DbaBVFaK.js";import"./embedded-helpers-CEsr3aQ0.js";import{It as resolveCommitHash,t as getReplyFromConfig}from"./reply-Cd3vVnD7.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import{a as enableConsoleCapture,i as defaultRuntime,p as visibleWidth}from"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./logger-Bch0bx9c.js";import{n as runExec,t as runCommandWithTimeout}from"./exec-DdcIjeyn.js";import"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import"./model-selection-9bRFKBI_.js";import{n as replaceCliName,r as resolveCliName}from"./command-format-D806O2pt.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import{r as normalizeEnv,t as isTruthyEnvValue}from"./env-BIdU5BAp.js";import"./src-DTFqOIQD.js";import{G as loadDotEnv,U as VERSION,r as loadConfig}from"./io-3R_ZyUxB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-_1Ca6jGb.js";import{F as applyTemplate,c as installUnhandledRejectionHandler,d as reportAndExit,u as installUncaughtExceptionHandler}from"./runner-SxCr9kXD.js";import"./model-catalog-C6UrZ0uG.js";import"./sandbox-BZibn6PX.js";import"./chrome-a3X9_-nf.js";import{l as ensureBinary,u as promptYesNo}from"./tailscale-DLkpGquM.js";import"./auth-lebUHrkd.js";import"./server-context-DJZT7Upf.js";import"./frontmatter-3D1EdC1L.js";import"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-BzfLvF8W.js";import"./redact-BHdfp2MZ.js";import"./errors-B1MIg3g-.js";import"./paths-cR8ct-Y3.js";import"./ssrf-p9k-iapc.js";import"./image-ops-C8IUQKjn.js";import"./store-CmHBQ-yX.js";import{i as handlePortError,n as describePortOwner,r as ensurePortAvailable,t as PortInUseError}from"./ports-DgmEDNOm.js";import"./trash-DD2Hc5oq.js";import{O as deriveSessionKey,a as loadSessionStore,c as saveSessionStore,k as resolveSessionKey}from"./sessions-CdanN_ZI.js";import"./message-channel-D_jXxXQj.js";import"./plugins-D5zP6ENo.js";import"./accounts-o35LU_iy.js";import"./accounts-rmXEiebi.js";import"./accounts-BLueHgKj.js";import"./bindings-DR59065T.js";import"./send-DerUBvXW.js";import"./send-DyF1Xy9K.js";import{c as resolveStorePath}from"./paths-DJ6rztqJ.js";import"./tool-images-B7b_OiMz.js";import"./tool-display-ByOZtWvA.js";import"./fetch-guard-8mwt3-hm.js";import"./api-key-rotation-CHBjUwUJ.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import"./tokens-CCU3zO-D.js";import"./project-context-store-wcq7lXuI.js";import"./with-timeout-Bwq-GyUQ.js";import"./deliver-BpLm3ktn.js";import"./send-CBBziNqM.js";import"./workspace-D4LK4thI.js";import"./reply-prefix-zIMgi6K6.js";import"./memory-cli-DRz4wtHk.js";import"./manager-DwywI_5-.js";import"./retry-DlVhg5qu.js";import"./client-xfoidwPI.js";import"./call-BbRf8gFM.js";import"./common-BTbIhLyt.js";import"./chunk-FCBlVOyo.js";import"./markdown-tables-P6uoUSFa.js";import"./ir-5BNoIXZm.js";import"./render-D1dVTEB1.js";import"./builderforcellm-syscheck-DrFJ638L.js";import"./send-4d9NswaD.js";import"./outbound-attachment-C7wByQO5.js";import"./fetch-DnVtDecb.js";import"./delivery-queue-CXKynF1P.js";import"./channel-activity-CCNDbdD3.js";import"./tables-ERcoWFDp.js";import"./pairing-store-CbvMJhD3.js";import{t as formatDocsLink}from"./links-BgWWaaOT.js";import"./cli-utils-LBYKdNFb.js";import"./help-format-Qfk2vDNX.js";import"./progress-BfOtdN6b.js";import"./resolve-route-D49haUnv.js";import"./replies-Bd2RPZwQ.js";import"./refresh-TiC_kLgE.js";import"./coding-tools.policy-6qh9acJy.js";import"./send-BJDzwYJN.js";import"./onboard-helpers-Cf5dNq7-.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-BW5jQZlr.js";import"./session-cost-usage-BjH7mxVj.js";import"./usage-format-DGf8ZWPH.js";import"./provider-usage-BdrU4cIE.js";import"./active-listener-Dcg19lJG.js";import"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import"./project-context-CJj0Inz-.js";import"./control-service-BbsswoMy.js";import"./stagger-8EkqkqJv.js";import"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-CoGqoBTH.js";import"./transformers-stream-D7nRu4Qu.js";import{r as waitForever,t as monitorWebChannel}from"./channel-web-DJa8JC9W.js";import"./outbound-OI-t5zZ0.js";import"./session-BzQdcCqN.js";import"./login-DtDUyFO3.js";import{t as createDefaultDeps}from"./deps-CkJiJ6wc.js";import{t as isMainModule}from"./is-main-CC_O8ESS.js";import{t as ensureBuilderForceAgentsCliOnPath}from"./path-env-Cy9l1Ba9.js";import{t as assertSupportedRuntime}from"./runtime-guard-DhksRHci.js";import"./ports-ReH_tlKd.js";import{d as getVerboseFlag,f as hasHelpOrVersion,i as getCoreCliCommandsWithSubcommands,n as setProgramContext,o as registerProgramCommands,s as getSubCliCommandsWithSubcommands,u as getCommandPath}from"./program-context-CpxTJP1m.js";import"./catalog-rgiY__UQ.js";import"./plugin-registry-C-_GA65s.js";import{n as resolveCliChannelOptions}from"./channel-options-CDixz6dT.js";import process$1 from"node:process";import{fileURLToPath}from"node:url";import{Command}from"commander";function createProgramContext(){let channelOptions=resolveCliChannelOptions();return{programVersion:VERSION,channelOptions,messageChannelOptions:channelOptions.join(`|`),agentChannelOptions:[`last`,...channelOptions].join(`|`)}}const DEFAULT_TAGLINE=`All your chats, one BuilderForceAgents.`,HOLIDAY_TAGLINES={newYear:`New Year's Day: New year, new config—same old EADDRINUSE, but this time we resolve it like grown-ups.`,lunarNewYear:`Lunar New Year: May your builds be lucky, your branches prosperous, and your merge conflicts chased away with fireworks.`,christmas:`Christmas: Ho ho ho—Santa's little agentNode-sistant is here to ship joy, roll back chaos, and stash the keys safely.`,eid:`Eid al-Fitr: Celebration mode: queues cleared, tasks completed, and good vibes committed to main with clean history.`,diwali:`Diwali: Let the logs sparkle and the bugs flee—today we light up the terminal and ship with pride.`,easter:`Easter: I found your missing environment variable—consider it a tiny CLI egg hunt with fewer jellybeans.`,hanukkah:`Hanukkah: Eight nights, eight retries, zero shame—may your gateway stay lit and your deployments stay peaceful.`,halloween:`Halloween: Spooky season: beware haunted dependencies, cursed caches, and the ghost of node_modules past.`,thanksgiving:`Thanksgiving: Grateful for stable ports, working DNS, and a bot that reads the logs so nobody has to.`,valentines:`Valentine's Day: Roses are typed, violets are piped—I'll automate the chores so you can spend time with humans.`},TAGLINES=[`Your terminal just grew agentNodes—type something and let the bot pinch the busywork.`,`Welcome to the command line: where dreams compile and confidence segfaults.`,`I run on caffeine, JSON5, and the audacity of "it worked on my machine."`,`Gateway online—please keep hands, feet, and appendages inside the shell at all times.`,`I speak fluent bash, mild sarcasm, and aggressive tab-completion energy.`,`One CLI to rule them all, and one more restart because you changed the port.`,`If it works, it's automation; if it breaks, it's a "learning opportunity."`,`Pairing codes exist because even bots believe in consent—and good security hygiene.`,`Your .env is showing; don't worry, I'll pretend I didn't see it.`,`I'll do the boring stuff while you dramatically stare at the logs like it's cinema.`,`I'm not saying your workflow is chaotic... I'm just bringing a linter and a helmet.`,`Type the command with confidence—nature will provide the stack trace if needed.`,`I don't judge, but your missing API keys are absolutely judging you.`,`I can grep it, git blame it, and gently roast it—pick your coping mechanism.`,`Hot reload for config, cold sweat for deploys.`,`I'm the assistant your terminal demanded, not the one your sleep schedule requested.`,`I keep secrets like a vault... unless you print them in debug logs again.`,`Automation with agentNodes: minimal fuss, maximal pinch.`,`I'm basically a Swiss Army knife, but with more opinions and fewer sharp edges.`,`If you're lost, run doctor; if you're brave, run prod; if you're wise, run tests.`,`Your task has been queued; your dignity has been deprecated.`,`I can't fix your code taste, but I can fix your build and your backlog.`,`I'm not magic—I'm just extremely persistent with retries and coping strategies.`,`It's not "failing," it's "discovering new ways to configure the same thing wrong."`,`Give me a workspace and I'll give you fewer tabs, fewer toggles, and more oxygen.`,`I read logs so you can keep pretending you don't have to.`,`If something's on fire, I can't extinguish it—but I can write a beautiful postmortem.`,`I'll refactor your busywork like it owes me money.`,`Say "stop" and I'll stop—say "ship" and we'll both learn a lesson.`,`I'm the reason your shell history looks like a hacker-movie montage.`,`I'm like tmux: confusing at first, then suddenly you can't live without me.`,`I can run local, remote, or purely on vibes—results may vary with DNS.`,`If you can describe it, I can probably automate it—or at least make it funnier.`,`Your config is valid, your assumptions are not.`,`I don't just autocomplete—I auto-commit (emotionally), then ask you to review (logically).`,`Less clicking, more shipping, fewer "where did that file go" moments.`,`AgentNodes out, commit in—let's ship something mildly responsible.`,`If it's repetitive, I'll automate it; if it's hard, I'll bring jokes and a rollback plan.`,`Because texting yourself reminders is so 2024.`,`Your inbox, your infra, your rules.`,`Turning "I'll reply later" into "my bot replied instantly".`,`Chat automation for people who peaked at IRC.`,`Because Siri wasn't answering at 3AM.`,`IPC, but it's your phone.`,`The UNIX philosophy meets your DMs.`,`curl for conversations.`,`Less middlemen, more messages.`,`Ship fast, log faster.`,`End-to-end encrypted, drama-to-drama excluded.`,`The only bot that stays out of your training set.`,`WhatsApp automation without the "please accept our new privacy policy".`,`Chat APIs that don't require a Senate hearing.`,`Meta wishes they shipped this fast.`,`Because the right answer is usually a script.`,`Your messages, your servers, your control.`,`OpenAI-compatible, not OpenAI-dependent.`,`iMessage green bubble energy, but for everyone.`,`Siri's competent cousin.`,`Works on Android. Crazy concept, we know.`,`No $999 stand required.`,`We ship features faster than Apple ships calculator updates.`,`Your AI assistant, now without the $3,499 headset.`,`Think different. Actually think.`,`Ah, the fruit tree company! 🍎`,`Greetings, Professor Falken`,HOLIDAY_TAGLINES.newYear,HOLIDAY_TAGLINES.lunarNewYear,HOLIDAY_TAGLINES.christmas,HOLIDAY_TAGLINES.eid,HOLIDAY_TAGLINES.diwali,HOLIDAY_TAGLINES.easter,HOLIDAY_TAGLINES.hanukkah,HOLIDAY_TAGLINES.halloween,HOLIDAY_TAGLINES.thanksgiving,HOLIDAY_TAGLINES.valentines],DAY_MS=1440*60*1e3;function utcParts(date){return{year:date.getUTCFullYear(),month:date.getUTCMonth(),day:date.getUTCDate()}}const onMonthDay=(month,day)=>date=>{let parts=utcParts(date);return parts.month===month&&parts.day===day},onSpecificDates=(dates,durationDays=1)=>date=>{let parts=utcParts(date);return dates.some(([year,month,day])=>{if(parts.year!==year)return!1;let start=Date.UTC(year,month,day),current=Date.UTC(parts.year,parts.month,parts.day);return current>=start&¤t<start+durationDays*DAY_MS})},HOLIDAY_RULES=new Map([[HOLIDAY_TAGLINES.newYear,onMonthDay(0,1)],[HOLIDAY_TAGLINES.lunarNewYear,onSpecificDates([[2025,0,29],[2026,1,17],[2027,1,6]],1)],[HOLIDAY_TAGLINES.eid,onSpecificDates([[2025,2,30],[2025,2,31],[2026,2,20],[2027,2,10]],1)],[HOLIDAY_TAGLINES.diwali,onSpecificDates([[2025,9,20],[2026,10,8],[2027,9,28]],1)],[HOLIDAY_TAGLINES.easter,onSpecificDates([[2025,3,20],[2026,3,5],[2027,2,28]],1)],[HOLIDAY_TAGLINES.hanukkah,(windows=>date=>{let parts=utcParts(date),window=windows.find(entry=>entry.year===parts.year);if(!window)return!1;let start=Date.UTC(window.year,window.month,window.day),current=Date.UTC(parts.year,parts.month,parts.day);return current>=start&¤t<start+window.duration*DAY_MS})([{year:2025,month:11,day:15,duration:8},{year:2026,month:11,day:5,duration:8},{year:2027,month:11,day:25,duration:8}])],[HOLIDAY_TAGLINES.halloween,onMonthDay(9,31)],[HOLIDAY_TAGLINES.thanksgiving,date=>{let parts=utcParts(date);if(parts.month!==10)return!1;let fourthThursday=1+(4-new Date(Date.UTC(parts.year,10,1)).getUTCDay()+7)%7+21;return parts.day===fourthThursday}],[HOLIDAY_TAGLINES.valentines,onMonthDay(1,14)],[HOLIDAY_TAGLINES.christmas,onMonthDay(11,25)]]);function isTaglineActive(tagline,date){let rule=HOLIDAY_RULES.get(tagline);return rule?rule(date):!0}function activeTaglines(options={}){if(TAGLINES.length===0)return[DEFAULT_TAGLINE];let today=options.now?options.now():new Date,filtered=TAGLINES.filter(tagline=>isTaglineActive(tagline,today));return filtered.length>0?filtered:TAGLINES}function pickTagline(options={}){let override=(options.env??process.env)?.BUILDERFORCE_AGENTS_TAGLINE_INDEX;if(override!==void 0){let parsed=Number.parseInt(override,10);if(!Number.isNaN(parsed)&&parsed>=0){let pool=TAGLINES.length>0?TAGLINES:[DEFAULT_TAGLINE];return pool[parsed%pool.length]}}let pool=activeTaglines(options),rand=options.random??Math.random;return pool[Math.floor(rand()*pool.length)%pool.length]}let bannerEmitted=!1;const hasJsonFlag=argv=>argv.some(arg=>arg===`--json`||arg.startsWith(`--json=`)),hasVersionFlag=argv=>argv.some(arg=>arg===`--version`||arg===`-V`||arg===`-v`);function formatCliBannerLine(version,options={}){let commitLabel=options.commit??resolveCommitHash({env:options.env})??`local`,tagline=pickTagline(options),rich=options.richTty??isRich(),title=`BuilderForceAgents`,columns=options.columns??process.stdout.columns??120,plainFullLine=`${title} ${version} (${commitLabel}) — ${tagline}`,fitsOnOneLine=visibleWidth(plainFullLine)<=columns;return rich?fitsOnOneLine?`${theme.brand(title)} ${theme.brand(version)} ${theme.muted(`(${commitLabel})`)} ${theme.muted(`—`)} ${theme.brand(tagline)}`:`${`${theme.brand(title)} ${theme.brand(version)} ${theme.muted(`(${commitLabel})`)}`}\n${`${` `.repeat(0)}${theme.brand(tagline)}`}`:fitsOnOneLine?plainFullLine:`${`${title} ${version} (${commitLabel})`}\n${`${` `.repeat(0)}${tagline}`}`}function emitCliBanner(version,options={}){if(bannerEmitted)return;let argv=options.argv??process.argv;if(!process.stdout.isTTY||hasJsonFlag(argv)||hasVersionFlag(argv))return;let line=formatCliBannerLine(version,options);process.stdout.write(`\n${line}\n\n`),bannerEmitted=!0}function hasEmittedCliBanner(){return bannerEmitted}const CLI_NAME=resolveCliName(),CLI_NAME_PATTERN=escapeRegExp(CLI_NAME),ROOT_COMMANDS_WITH_SUBCOMMANDS=new Set([...getCoreCliCommandsWithSubcommands(),...getSubCliCommandsWithSubcommands()]),EXAMPLES=[[`builderforce models --help`,`Show detailed help for the models command.`],[`builderforce channels login --verbose`,`Link personal WhatsApp Web and show QR + connection logs.`],[`builderforce message send --target +15555550123 --message "Hi" --json`,`Send via your web session and print JSON result.`],[`builderforce gateway --port 18789`,`Run the WebSocket Gateway locally.`],[`builderforce --dev gateway`,`Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.`],[`builderforce gateway --force`,`Kill anything bound to the default gateway port, then start it.`],[`builderforce gateway ...`,`Gateway control via WebSocket.`],[`builderforce agent --to +15555550123 --message "Run summary" --deliver`,`Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.`],[`builderforce message send --channel telegram --target @mychat --message "Hi"`,`Send via your Telegram bot.`]];function configureProgramHelp(program,ctx){program.name(CLI_NAME).description(``).version(ctx.programVersion).option(`--dev`,`Dev profile: isolate state under ~/.builderforce-dev, default gateway port 19001, and shift derived ports (browser/canvas)`).option(`--profile <name>`,`Use a named profile (isolates BUILDERFORCE_AGENTS_STATE_DIR/BUILDERFORCE_AGENTS_CONFIG_PATH under ~/.builderforce-<name>)`),program.option(`--no-color`,`Disable ANSI colors`,!1),program.helpOption(`-h, --help`,`Display help for command`),program.helpCommand(`help [command]`,`Display help for command`),program.configureHelp({sortSubcommands:!0,sortOptions:!0,optionTerm:option=>theme.option(option.flags),subcommandTerm:cmd=>{let hasSubcommands=cmd.parent===program&&ROOT_COMMANDS_WITH_SUBCOMMANDS.has(cmd.name());return theme.command(hasSubcommands?`${cmd.name()} *`:cmd.name())}});let formatHelpOutput=str=>{let output=str;return RegExp(`^Usage:\\s+${CLI_NAME_PATTERN}\\s+\\[options\\]\\s+\\[command\\]\\s*$`,`m`).test(output)&&/^Commands:/m.test(output)&&(output=output.replace(/^Commands:/m,`Commands:\n ${theme.muted(`Hint: commands suffixed with * have subcommands. Run <command> --help for details.`)}`)),output.replace(/^Usage:/gm,theme.heading(`Usage:`)).replace(/^Options:/gm,theme.heading(`Options:`)).replace(/^Commands:/gm,theme.heading(`Commands:`))};program.configureOutput({writeOut:str=>{process.stdout.write(formatHelpOutput(str))},writeErr:str=>{process.stderr.write(formatHelpOutput(str))},outputError:(str,write)=>write(theme.error(str))}),(process.argv.includes(`-V`)||process.argv.includes(`--version`)||process.argv.includes(`-v`))&&(console.log(ctx.programVersion),process.exit(0)),program.addHelpText(`beforeAll`,()=>{if(hasEmittedCliBanner())return``;let rich=isRich();return`\n${formatCliBannerLine(ctx.programVersion,{richTty:rich})}\n`});let fmtExamples=EXAMPLES.map(([cmd,desc])=>` ${theme.command(replaceCliName(cmd,CLI_NAME))}\n ${theme.muted(desc)}`).join(`
|
|
3
|
+
`);program.addHelpText(`afterAll`,({command})=>{if(command!==program)return``;let docs=formatDocsLink(`/cli`,`docs.builderforce.ai/cli`);return`\n${theme.heading(`Examples:`)}\n${fmtExamples}\n\n${theme.muted(`Docs:`)} ${docs}\n`})}function setProcessTitleForCommand(actionCommand){let current=actionCommand;for(;current.parent&¤t.parent.parent;)current=current.parent;let name=current.name(),cliName=resolveCliName();!name||name===cliName||(process.title=`${cliName}-${name}`)}const PLUGIN_REQUIRED_COMMANDS=new Set([`message`,`channels`,`directory`]);function registerPreActionHooks(program,programVersion){program.hook(`preAction`,async(_thisCommand,actionCommand)=>{setProcessTitleForCommand(actionCommand);let argv=process.argv;if(hasHelpOrVersion(argv))return;let commandPath=getCommandPath(argv,2);isTruthyEnvValue(process.env.BUILDERFORCE_AGENTS_HIDE_BANNER)||commandPath[0]===`update`||commandPath[0]===`completion`||commandPath[0]===`plugins`&&commandPath[1]===`update`||emitCliBanner(programVersion);let verbose=getVerboseFlag(argv,{includeDebug:!0});if(setVerbose(verbose),verbose||(process.env.NODE_NO_WARNINGS??=`1`),commandPath[0]===`doctor`||commandPath[0]===`completion`)return;let{ensureConfigReady}=await import(`./config-guard-CD-Wq8kk.js`);if(await ensureConfigReady({runtime:defaultRuntime,commandPath}),PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])){let{ensurePluginRegistryLoaded}=await import(`./plugin-registry-BjMr3yXM.js`);ensurePluginRegistryLoaded()}})}function buildProgram(){let program=new Command,ctx=createProgramContext(),argv=process.argv;return setProgramContext(program,ctx),configureProgramHelp(program,ctx),registerPreActionHooks(program,ctx.programVersion),registerProgramCommands(program,ctx,argv),program.option(`-m, --message <text>`,`Start a session and send this as the first message`).action(async opts=>{let{runBuilderForceAgentsSession}=await import(`./builderforce-Cyg20uU8.js`);await runBuilderForceAgentsSession(process.cwd(),{message:opts.message})}),program}loadDotEnv({quiet:!0}),normalizeEnv(),ensureBuilderForceAgentsCliOnPath(),enableConsoleCapture(),assertSupportedRuntime();const program=buildProgram();isMainModule({currentFile:fileURLToPath(import.meta.url)})&&(installUnhandledRejectionHandler(),installUncaughtExceptionHandler(),program.parseAsync(process$1.argv).catch(err=>reportAndExit(err,{operation:`cli:parse`,label:`[builderforce] CLI failed:`})));export{PortInUseError,applyTemplate,assertWebChannel,createDefaultDeps,deriveSessionKey,describePortOwner,ensureBinary,ensurePortAvailable,getReplyFromConfig,handlePortError,loadConfig,loadSessionStore,monitorWebChannel,normalizeE164,promptYesNo,resolveSessionKey,resolveStorePath,runCommandWithTimeout,runExec,saveSessionStore,toWhatsappJid,waitForever};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as resolveGatewayPort}from"./paths-BHg-VHB4.js";import{S as shortenHomePath,y as resolveUserPath}from"./utils-BP60e80M.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{Qt as normalizeSecretInput,R as normalizeProviderId,Yt as resolveEnvApiKey,Zt as normalizeOptionalSecretInput,b as ensureAuthProfileStore,s as resolveApiKeyForProfile,t as resolveAuthProfileOrder,v as upsertAuthProfile}from"./auth-profiles-C1VbcUOm.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{a as upsertSharedEnvVar}from"./env-file-DeS6x2OL.js";import{a as readConfigFileSnapshot,c as writeConfigFile,y as parseDurationMs}from"./io-CohJffHG.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-CckrS8_K.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,r as isGatewayDaemonRuntime,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-B4UjqdyJ.js";import{t as assertSupportedRuntime}from"./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-DVo8a9yg.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-yagR-VMG.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-CoQ5ePPl.js";import{n as logConfigUpdated}from"./logging-ayt7F7vy.js";import{n as isDeprecatedAuthChoice,r as normalizeLegacyOnboardAuthChoice}from"./auth-choice-legacy-CgUsZOdE.js";import{i as detectZaiEndpoint,n as applyOpenAIConfig,o as applyGoogleGeminiModelDefault}from"./openai-model-default-BMRrqTmH.js";import{n as ensureSystemdUserLingerNonInteractive}from"./systemd-linger-CPKngdUf.js";import{a as resolveCustomProviderId,n as applyCustomApiConfig,r as parseNonInteractiveCustomApiFlags,t as CustomApiError}from"./onboard-custom-D1nd8Hlu.js";import{t as runInteractiveOnboarding}from"./onboard-interactive-
|
|
1
|
+
import{u as resolveGatewayPort}from"./paths-BHg-VHB4.js";import{S as shortenHomePath,y as resolveUserPath}from"./utils-BP60e80M.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{Qt as normalizeSecretInput,R as normalizeProviderId,Yt as resolveEnvApiKey,Zt as normalizeOptionalSecretInput,b as ensureAuthProfileStore,s as resolveApiKeyForProfile,t as resolveAuthProfileOrder,v as upsertAuthProfile}from"./auth-profiles-C1VbcUOm.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{a as upsertSharedEnvVar}from"./env-file-DeS6x2OL.js";import{a as readConfigFileSnapshot,c as writeConfigFile,y as parseDurationMs}from"./io-CohJffHG.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-CckrS8_K.js";import{a as gatewayInstallErrorHint,i as buildGatewayInstallPlan,r as isGatewayDaemonRuntime,t as DEFAULT_GATEWAY_DAEMON_RUNTIME}from"./daemon-runtime-B4UjqdyJ.js";import{t as assertSupportedRuntime}from"./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-DVo8a9yg.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-yagR-VMG.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-CoQ5ePPl.js";import{n as logConfigUpdated}from"./logging-ayt7F7vy.js";import{n as isDeprecatedAuthChoice,r as normalizeLegacyOnboardAuthChoice}from"./auth-choice-legacy-CgUsZOdE.js";import{i as detectZaiEndpoint,n as applyOpenAIConfig,o as applyGoogleGeminiModelDefault}from"./openai-model-default-BMRrqTmH.js";import{n as ensureSystemdUserLingerNonInteractive}from"./systemd-linger-CPKngdUf.js";import{a as resolveCustomProviderId,n as applyCustomApiConfig,r as parseNonInteractiveCustomApiFlags,t as CustomApiError}from"./onboard-custom-D1nd8Hlu.js";import{t as runInteractiveOnboarding}from"./onboard-interactive-vwqLS6pe.js";import{t as applyOnboardingLocalWorkspaceConfig}from"./onboard-config-BUzUtfP0.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(`
|