@seanhogg/builderforce-agents 2026.10.12 → 2026.10.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{agent-DvDtjczG.js → agent-CeWx2EpQ.js} +1 -1
- package/dist/{agent-DiLX8OzY.js → agent-DrcnpqOF.js} +1 -1
- package/dist/{agents-BawpdEjP.js → agents-CRJM6qhK.js} +1 -1
- package/dist/{agents-COWLUJqm.js → agents-hATFRfwk.js} +1 -1
- package/dist/{audio-preflight-CYQiI74L.js → audio-preflight-B9CfGDD2.js} +1 -1
- package/dist/{audio-preflight-BN1u9Tpc.js → audio-preflight-DHHeocUj.js} +1 -1
- package/dist/{auth-choice-D9VN-WjA.js → auth-choice-CWbPLRN0.js} +1 -1
- package/dist/{auth-choice-3cdcHeim.js → auth-choice-CzhKgWJy.js} +1 -1
- package/dist/{auth-choice.apply-Cd0RR0Z-.js → auth-choice.apply-C0RTYtRN.js} +1 -1
- package/dist/{auth-choice.apply-CMDgoDNN.js → auth-choice.apply-ChrTTHkK.js} +1 -1
- package/dist/{auth-choice.apply-BAeGyEKW.js → auth-choice.apply-D4LYzI8l.js} +1 -1
- package/dist/{auth-choice.apply-CSXvPCea.js → auth-choice.apply-Dy4rVG6K.js} +1 -1
- package/dist/{auth-choice.apply.transformers-DkX2-OZa.js → auth-choice.apply.transformers-9v6HFzNs.js} +1 -1
- package/dist/{auth-choice.apply.transformers-CEVxl3ul.js → auth-choice.apply.transformers-Be8599JD.js} +1 -1
- package/dist/{auth-choice.apply.transformers-B2Nr9M7m.js → auth-choice.apply.transformers-CgfGlqy1.js} +1 -1
- package/dist/{auth-choice.apply.transformers-Dpy9gODo.js → auth-choice.apply.transformers-D9a8-sLS.js} +1 -1
- package/dist/{banner-C93QSUTe.js → banner-8F7-gU1V.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/{builderforce-Dl4bZ63C.js → builderforce-CCfM1c79.js} +1 -1
- package/dist/{builderforce-C_tuO46t.js → builderforce-CImLd8Zo.js} +1 -1
- package/dist/bundled/boot-md/handler.js +1 -1
- package/dist/bundled/session-memory/handler.js +1 -1
- package/dist/{channel-options-CiYpNR-1.js → channel-options-CRng-5hZ.js} +1 -1
- package/dist/{channel-options-Cziy0WDc.js → channel-options-D5kOIN7b.js} +1 -1
- package/dist/{channel-web-Ae15MleJ.js → channel-web-B5HSpL4k.js} +1 -1
- package/dist/{channels-cli-CZM033Me.js → channels-cli-COl9TDHT.js} +1 -1
- package/dist/{channels-cli-yi1vxpvO.js → channels-cli-bR8QwOv3.js} +1 -1
- package/dist/chrome-ChzFLAeJ.js +4 -0
- package/dist/chrome-CrqJ4Ijz.js +4 -0
- package/dist/{cli-Bwv_-VuS.js → cli-BqJMHFNK.js} +1 -1
- package/dist/{cli-D8fndSEi.js → cli-DBn0qbHS.js} +1 -1
- package/dist/{command-registry-Cjom5ab0.js → command-registry-BqhtXJa7.js} +1 -1
- package/dist/{command-registry-8uEx2JjY.js → command-registry-DVH79C3B.js} +1 -1
- package/dist/{completion-cli-PTFpWp8Q.js → completion-cli-BFR0u1Uh.js} +1 -1
- package/dist/{completion-cli-LUuqgvVQ.js → completion-cli-BuUAEqQw.js} +1 -1
- package/dist/{completion-cli-DRsz70D2.js → completion-cli-CwaIh4zw.js} +1 -1
- package/dist/{completion-cli-BsXDz7T2.js → completion-cli-Da3-oE7r.js} +1 -1
- package/dist/{config-cli-BIx0enD5.js → config-cli-Bhrj7H1i.js} +1 -1
- package/dist/{config-cli-BFhOXrua.js → config-cli-DOHKZ1lO.js} +1 -1
- package/dist/{configure-D96xLIb6.js → configure-B-Yta1X3.js} +1 -1
- package/dist/{configure-S7YE6hn1.js → configure-BHVk4Ax9.js} +1 -1
- package/dist/{configure-dDKfCq_g.js → configure-D9YZEK_D.js} +1 -1
- package/dist/{configure-C7xdw9Kq.js → configure-DPE2hDzY.js} +1 -1
- package/dist/{deps-CGiO_NDu.js → deps-CrAVOWsA.js} +1 -1
- package/dist/{doctor-completion-ChhIrLd3.js → doctor-completion-CkjrUmbI.js} +1 -1
- package/dist/{doctor-completion-BUZwWoWB.js → doctor-completion-Dh9ah5lH.js} +1 -1
- package/dist/{embedded-DJYMy81Q.js → embedded-BrqzM5oT.js} +12 -12
- package/dist/{embedded-DjDnQMNx.js → embedded-wYxo-ADm.js} +12 -12
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +1 -1
- package/dist/{gateway-cli-CN114d5j.js → gateway-cli-C2nh9UyY.js} +2 -2
- package/dist/{gateway-cli-Dzl70YBF.js → gateway-cli-CGkTLhet.js} +2 -2
- package/dist/{health-Cf1YoTRN.js → health-CEz2-7et.js} +1 -1
- package/dist/{health-AlkF1nUa.js → health-CFVx21sO.js} +1 -1
- package/dist/{health-ySVOGGNu.js → health-aKuq4xwa.js} +1 -1
- package/dist/{hooks-cli-6jeFEGg3.js → hooks-cli-DPSrycwI.js} +1 -1
- package/dist/{hooks-cli-DVPMCXUq.js → hooks-cli-uPHs7qnC.js} +1 -1
- package/dist/index.js +2 -2
- package/dist/llm-slug-generator.js +1 -1
- package/dist/{models-CGUxphfN.js → models--TwKHn8b.js} +1 -1
- package/dist/{models-CIMM_Z3u.js → models-BXJebxTU.js} +1 -1
- package/dist/{models-cli-Cijh2uON.js → models-cli-O1zCgeoA.js} +1 -1
- package/dist/{models-cli-Oys3e_I3.js → models-cli-iKu1IVeH.js} +1 -1
- package/dist/{onboard-DAEXNhNd.js → onboard--0I8pdee.js} +1 -1
- package/dist/{onboard-b2fWbf0Q.js → onboard-C40OvMZO.js} +1 -1
- package/dist/{onboard-channels-elaccQRE.js → onboard-channels-BbpyejX4.js} +1 -1
- package/dist/{onboard-channels-Bsd11scA.js → onboard-channels-CoJnsCfd.js} +1 -1
- package/dist/{onboard-channels-C_Q7OUow.js → onboard-channels-ZI4QC9WU.js} +1 -1
- package/dist/{onboard-channels-Tl1X4Pl_.js → onboard-channels-uvIeLPXK.js} +1 -1
- package/dist/{onboard-interactive-DyGNiYRI.js → onboard-interactive-B3Z0XLT6.js} +1 -1
- package/dist/{onboard-interactive-C0qmgHsH.js → onboard-interactive-CJdxqQ1b.js} +1 -1
- package/dist/{onboard-interactive-86s992_v.js → onboard-interactive-COnCCTTW.js} +1 -1
- package/dist/{onboard-interactive-CvMSTjPK.js → onboard-interactive-jss8R9r9.js} +1 -1
- package/dist/{onboarding-DzvbhsaR.js → onboarding-B1BmYWrs.js} +2 -2
- package/dist/{onboarding-B0tbaqZ7.js → onboarding-CdRbvLgp.js} +2 -2
- package/dist/{onboarding.finalize-D-Pi9Blv.js → onboarding.finalize-B0AjF6qZ.js} +1 -1
- package/dist/{onboarding.finalize-CERLBlRF.js → onboarding.finalize-WsL-ijTc.js} +1 -1
- package/dist/{outbound-send-deps-CzhBrVa7.js → outbound-send-deps-DuML6h7r.js} +1 -1
- package/dist/{plugin-registry-DtrHn5NR.js → plugin-registry-BjWNyeVY.js} +1 -1
- package/dist/{plugin-registry-Avx51RIY.js → plugin-registry-Cf_sv-ny.js} +1 -1
- package/dist/{plugin-registry-CFkQDTOt.js → plugin-registry-DdFb5usc.js} +1 -1
- package/dist/{plugin-registry-BEmyRfmb.js → plugin-registry-DrEpL5ac.js} +1 -1
- package/dist/plugin-sdk/{accounts-BwreSNAR.js → accounts-Cy3WCbWg.js} +1 -1
- package/dist/plugin-sdk/{active-listener-DpQ7aGYd.js → active-listener-DVWVNlT9.js} +1 -1
- package/dist/plugin-sdk/agent-runtime/src/agents/tool-retry.d.ts +40 -32
- package/dist/plugin-sdk/agent-runtime/src/builderforce/model/agent-types.d.ts +6 -0
- package/dist/plugin-sdk/{agent-scope-BQByW0cD.js → agent-scope-DgKN27hJ.js} +1 -1
- package/dist/plugin-sdk/{api-key-rotation-yqTCeKjV.js → api-key-rotation-D37jV9ZW.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-B6uTvVfA.js → audio-preflight-D4xyO8Zq.js} +1 -1
- package/dist/plugin-sdk/{auth-json-Dw6ij9Pa.js → auth-json-nASe57Uw.js} +1 -1
- package/dist/plugin-sdk/{bindings-CDEzl4kl.js → bindings-CH-YLOLC.js} +1 -1
- package/dist/plugin-sdk/{channel-web-DKbpA9xC.js → channel-web-huZSNTX3.js} +1 -1
- package/dist/plugin-sdk/{chrome-DriEqJRH.js → chrome-CRUzg3kA.js} +1 -1
- package/dist/plugin-sdk/{chunk-cW0POl22.js → chunk-C94IAOuf.js} +1 -1
- package/dist/plugin-sdk/{command-format-CAX9XFjI.js → command-format-B3XMq_73.js} +1 -1
- package/dist/plugin-sdk/{common-BxEWhN2X.js → common-n0l_XN-S.js} +1 -1
- package/dist/plugin-sdk/{config-3vPn_hmp.js → config--Ci8Y91R.js} +2 -2
- package/dist/plugin-sdk/{fetch-DH0Y8iyO.js → fetch-B-GxSYRO.js} +1 -1
- package/dist/plugin-sdk/index.js +1 -1
- package/dist/plugin-sdk/{login-Dhdx0bVL.js → login-DZliYZg8.js} +1 -1
- package/dist/plugin-sdk/{login-qr-DAjOuijP.js → login-qr-DKcGvAjv.js} +1 -1
- package/dist/plugin-sdk/{manager-i8psl2Er.js → manager-DioOqJm_.js} +1 -1
- package/dist/plugin-sdk/{markdown-tables-Epim9b-0.js → markdown-tables-BUfhHgfs.js} +1 -1
- package/dist/plugin-sdk/{message-channel-sBPQc_-T.js → message-channel-CuZ2xOAM.js} +1 -1
- package/dist/plugin-sdk/{model-catalog-COVRezOQ.js → model-catalog-DIQ5a-o4.js} +1 -1
- package/dist/plugin-sdk/{model-selection-Crz-xYNU.js → model-selection-_H_U9jWH.js} +1 -1
- package/dist/plugin-sdk/{outbound-CPutSvae.js → outbound-Djibdmi7.js} +1 -1
- package/dist/plugin-sdk/{plugins-CaUOZBVb.js → plugins-BdkC9v5E.js} +1 -1
- package/dist/plugin-sdk/{pw-ai-jI9AWvKe.js → pw-ai-Bbi8Us-p.js} +1 -1
- package/dist/plugin-sdk/{qmd-manager-BRe5fGZw.js → qmd-manager-Dxn0jCpE.js} +1 -1
- package/dist/plugin-sdk/{registry-DJq2Cvo9.js → registry-CZHRcH-q.js} +1 -1
- package/dist/plugin-sdk/{render-BUCRXPIk.js → render-CuA_WRX5.js} +1 -1
- package/dist/plugin-sdk/{replies-CYjI7bye.js → replies-Cf69aZLA.js} +1 -1
- package/dist/plugin-sdk/{reply-B5o-SSYy.js → reply-BOVC-7UD.js} +13 -13
- package/dist/plugin-sdk/{reply-prefix-CCymsmsP.js → reply-prefix-w7kAvH11.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-DN1J7Wyc.js → resolve-route-0sbvl4ZN.js} +1 -1
- package/dist/plugin-sdk/{runner-C2pDJlRw.js → runner-DKoKK09-.js} +4 -4
- package/dist/plugin-sdk/{session-BnleckVX.js → session-DGLuyt10.js} +1 -1
- package/dist/plugin-sdk/{sqlite-BlMLqMl8.js → sqlite-JjFgDV-H.js} +1 -1
- package/dist/plugin-sdk/{subsystem-COTa5Ly_.js → subsystem-D0Ril4rt.js} +1 -1
- package/dist/plugin-sdk/{tool-images-DSpchb4x.js → tool-images-WRTP95FT.js} +1 -1
- package/dist/plugin-sdk/{tool-loop-detection-16p7mJ8N.js → tool-loop-detection-g8gPTCgJ.js} +1 -1
- package/dist/plugin-sdk/web-Cdu8TkUy.js +1 -0
- package/dist/plugin-sdk/{whatsapp-actions-C2B3iw8n.js → whatsapp-actions-CsSzy7G0.js} +1 -1
- package/dist/{plugins-DAlgx58e.js → plugins-Dr1wmnAf.js} +1 -1
- package/dist/{plugins-De7aK3yK.js → plugins-JhEblShx.js} +1 -1
- package/dist/{plugins-cli-CwdUVWjG.js → plugins-cli-DW4hoeeV.js} +1 -1
- package/dist/{plugins-cli-CfVCrrhx.js → plugins-cli-GewV3E8e.js} +1 -1
- package/dist/{program-CFL6mW3l.js → program-bggmBKuL.js} +2 -2
- package/dist/{program-context-DP4Xq9zC.js → program-context-BCTE8zEF.js} +1 -1
- package/dist/{prompt-select-styled-NxrGT7OR.js → prompt-select-styled-BtjhlTEH.js} +1 -1
- package/dist/{prompt-select-styled-Csz9HlSx.js → prompt-select-styled-CaNl41mG.js} +1 -1
- package/dist/{provider-auth-helpers-BMBw21Tn.js → provider-auth-helpers-CWUfg9zf.js} +1 -1
- package/dist/{provider-auth-helpers-VWPvSXPH.js → provider-auth-helpers-y1X8xKVE.js} +1 -1
- package/dist/{provider-dispatcher-CSOHd9zJ.js → provider-dispatcher-CRsPmKhJ.js} +1 -1
- package/dist/{provider-dispatcher-Bg9orQPy.js → provider-dispatcher-D9GbE_Ce.js} +1 -1
- package/dist/{push-apns-rMu8MKXi.js → push-apns-Cb1sQEEa.js} +1 -1
- package/dist/{push-apns-ep5WkyGz.js → push-apns-Cr-6aD3y.js} +1 -1
- package/dist/{pw-ai-UXo3gDGy.js → pw-ai-CG-kY5NP.js} +1 -1
- package/dist/{pw-ai-CIN6tj0G.js → pw-ai-DcZPg2vm.js} +1 -1
- package/dist/{register.agent-BynXVz7v.js → register.agent-B33EZBoL.js} +1 -1
- package/dist/{register.agent-RNVNKBP3.js → register.agent-DfYqZls1.js} +1 -1
- package/dist/{register.configure-BdqREs1-.js → register.configure-CREcJhKA.js} +1 -1
- package/dist/{register.configure-DDrvpBnA.js → register.configure-D8an7wc5.js} +1 -1
- package/dist/{register.maintenance-DT6t7mD_.js → register.maintenance-D84M5XLR.js} +1 -1
- package/dist/{register.maintenance-BSKHOCTV.js → register.maintenance-Dnp_Ii2x.js} +1 -1
- package/dist/{register.message-7KIfSUxS.js → register.message-B6E0uAEu.js} +1 -1
- package/dist/{register.message-DDhEvcaX.js → register.message-WOWC4tyf.js} +1 -1
- package/dist/{register.onboard-CKhooa7L.js → register.onboard-AgVEhehS.js} +1 -1
- package/dist/{register.onboard-CswvuzLx.js → register.onboard-Cwozk0Tx.js} +1 -1
- package/dist/{register.setup-1BmR-qlh.js → register.setup-BKyCvo9_.js} +1 -1
- package/dist/{register.setup-CivwfXf_.js → register.setup-C9IeGiAd.js} +1 -1
- package/dist/{register.status-health-sessions-CLdHZiJm.js → register.status-health-sessions-CYZctjpx.js} +1 -1
- package/dist/{register.status-health-sessions-BXpljfv3.js → register.status-health-sessions-CcL6srRC.js} +1 -1
- package/dist/{register.subclis-D_fHb-Aj.js → register.subclis-AFsfDByV.js} +1 -1
- package/dist/{register.subclis-CTTxdHaJ.js → register.subclis-C0DxtuRO.js} +1 -1
- package/dist/{reply-D9wUWhMx.js → reply-BuUSdq2L.js} +9 -9
- package/dist/{run-main-DNyQhVQT.js → run-main-CgJMiKPV.js} +1 -1
- package/dist/{runner-BNnckkaT.js → runner-C8oNv-9y.js} +3 -3
- package/dist/{runner-EHybuAt7.js → runner-nDoIXX7n.js} +3 -3
- package/dist/{server-node-events-BGrnw4ZT.js → server-node-events-BMsKmU5S.js} +1 -1
- package/dist/{server-node-events-D4WVcVHy.js → server-node-events-fS8TluXq.js} +1 -1
- package/dist/{session-dirs-eNN7E3kA.js → session-dirs-Bkfs-7vN.js} +1 -1
- package/dist/{session-dirs-C-pVBwSV.js → session-dirs-rYDCA_mQ.js} +1 -1
- package/dist/{status-Demw1HZ7.js → status-Ad1eFPKR.js} +1 -1
- package/dist/{status-CBieo24v.js → status-BMzVz5KY.js} +1 -1
- package/dist/{status-rkFgCaBM.js → status-CXRyaGws.js} +1 -1
- package/dist/{status-wTMmjZ7M.js → status-DpEUFAMk.js} +1 -1
- package/dist/{status-BhJw9Htq.js → status-oaiZkYBt.js} +1 -1
- package/dist/{subagent-registry-Bje3RAgk.js → subagent-registry-gVTWLPpL.js} +1 -1
- package/dist/{subagent-registry-B0kpBIxD.js → subagent-registry-hM0OCDzv.js} +1 -1
- package/dist/{subagent-registry-Cj5yC7B4.js → subagent-registry-m_x-JRkR.js} +9 -9
- package/dist/{tui-BCtecmPL.js → tui-HTtOgZ_X.js} +2 -2
- package/dist/{tui-BqHLI73U.js → tui-LemSel3H.js} +2 -2
- package/dist/{tui-cli-2R0xjpqW.js → tui-cli-BpzicV5H.js} +1 -1
- package/dist/{tui-cli-Dvd8BwzD.js → tui-cli-CruoIP1K.js} +1 -1
- package/dist/{update-cli-DUObGvw1.js → update-cli-Wa-nZ_Lq.js} +1 -1
- package/dist/{update-cli-Bt7Vfi7c.js → update-cli-zv67YxK1.js} +1 -1
- package/dist/{web--KblE8ax.js → web-BrsbhB1i.js} +1 -1
- package/dist/{web-C-yTnRvS.js → web-BzkO4Pbe.js} +1 -1
- package/dist/{web-0VRcRcFj.js → web-D_QYY7Gt.js} +1 -1
- package/dist/{web-BcUIWAAJ.js → web-jPbmSTQm.js} +1 -1
- package/package.json +1 -1
- package/dist/chrome-CmCESKt9.js +0 -4
- package/dist/chrome-D6qk0wxW.js +0 -4
- package/dist/plugin-sdk/web-CzJYJZZs.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as DEFAULT_CHAT_CHANNEL}from"./registry-Cv7CoWAs.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{F as modelKey,H as resolveConfiguredModelRef,I as normalizeModelRef,J as resolveThinkingDefault,P as isCliProvider,_n as DEFAULT_PROVIDER,b as ensureAuthProfileStore,gn as DEFAULT_MODEL,hn as DEFAULT_CONTEXT_TOKENS,k as buildAllowedModelSet}from"./auth-profiles-CuAFgjuQ.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{d as normalizeAgentId,f as normalizeMainKey,p as resolveAgentIdFromSessionKey}from"./session-key-CksCYipj.js";import{c as resolveAgentWorkspaceDir,d as resolveSessionAgentId,i as resolveAgentDir,n as listAgentIds,o as resolveAgentModelPrimary,s as resolveAgentSkillsFilter,u as resolveEffectiveModelFallbacks,w as ensureAgentWorkspace}from"./agent-scope-CufEmNj_.js";import{r as loadConfig}from"./io-CsCa3_1Z.js";import{r as loadModelCatalog}from"./model-catalog-D8OQ7p7I.js";import{r as buildWorkspaceSkillSnapshot}from"./skills-D3MwwPOH.js";import{i as getSkillsSnapshotVersion}from"./refresh-C4vwneXT.js";import{a as isInternalMessageChannel,d as resolveMessageChannel,i as isGatewayMessageChannel,l as normalizeMessageChannel,n as isDeliverableMessageChannel,t as INTERNAL_MESSAGE_CHANNEL}from"./message-channel-z5YRpR2d.js";import{Fn as applyVerboseOverride,J as setCliSessionId,Pn as applyModelOverrideToSessionEntry,Xn as resolveAgentTimeoutMs,Xt as AGENT_LANE_NESTED,Y as runCliAgent,Zt as AGENT_LANE_SUBAGENT,at as resolveOutboundTarget,cn as getRemoteSkillEligibility,di as clearAgentRunContext,fi as emitAgentEvent,h as runEmbeddedAgent,hi as registerAgentRunContext,kn as clearSessionAuthProfileOverride,ot as resolveSessionDeliveryTarget,q as getCliSessionId,qr as runWithModelFallback,sn as resolveSendPolicy}from"./subagent-registry-Cj5yC7B4.js";import{C as evaluateSessionFreshness,E as resolveSessionResetType,M as resolveExplicitAgentSessionKey,S as resolveSessionKey,T as resolveSessionResetPolicy,a as loadSessionStore,rt as normalizeAccountId,u as updateSessionStore,w as resolveChannelResetConfig}from"./sessions-CmJXMlLP.js";import{r as normalizeChannelId,t as getChannelPlugin}from"./plugins-1Mn6RiNf.js";import{i as normalizeOutboundPayloadsForJson,n as formatOutboundPayloadLog,r as normalizeOutboundPayloads,t as deliverOutboundPayloads}from"./deliver--eLCRJc2.js";import{a as formatXHighModelHint,f as normalizeVerboseLevel,i as formatThinkingLevels,m as supportsXHighThinking,u as normalizeThinkLevel}from"./embedded-helpers-BZGiFZlP.js";import{c as resolveStorePath,n as resolveSessionFilePath}from"./paths-ClsbsPQP.js";import{u as lookupContextTokens}from"./session-utils-D2_j4c6U.js";import{c as hasNonzeroUsage,s as deriveSessionTotalTokens}from"./session-cost-usage-S0nkbPoW.js";import{n as createDefaultDeps,t as createOutboundSendDeps}from"./outbound-send-deps-CzhBrVa7.js";import crypto from"node:crypto";function resolveAgentDeliveryPlan(params){let requestedRaw=typeof params.requestedChannel==`string`?params.requestedChannel.trim():``,requestedChannel=(requestedRaw?normalizeMessageChannel(requestedRaw):void 0)||`last`,explicitTo=typeof params.explicitTo==`string`&¶ms.explicitTo.trim()?params.explicitTo.trim():void 0,baseDelivery=resolveSessionDeliveryTarget({entry:params.sessionEntry,requestedChannel:requestedChannel===INTERNAL_MESSAGE_CHANNEL?`last`:requestedChannel,explicitTo,explicitThreadId:params.explicitThreadId}),resolvedChannel=requestedChannel===INTERNAL_MESSAGE_CHANNEL?INTERNAL_MESSAGE_CHANNEL:requestedChannel===`last`?baseDelivery.channel&&baseDelivery.channel!==INTERNAL_MESSAGE_CHANNEL?baseDelivery.channel:params.wantsDelivery?DEFAULT_CHAT_CHANNEL:INTERNAL_MESSAGE_CHANNEL:isGatewayMessageChannel(requestedChannel)?requestedChannel:baseDelivery.channel&&baseDelivery.channel!==INTERNAL_MESSAGE_CHANNEL?baseDelivery.channel:params.wantsDelivery?DEFAULT_CHAT_CHANNEL:INTERNAL_MESSAGE_CHANNEL,deliveryTargetMode=explicitTo?`explicit`:isDeliverableMessageChannel(resolvedChannel)?`implicit`:void 0,resolvedAccountId=normalizeAccountId(params.accountId)??(deliveryTargetMode===`implicit`?baseDelivery.accountId:void 0),resolvedTo=explicitTo;return!resolvedTo&&isDeliverableMessageChannel(resolvedChannel)&&resolvedChannel===baseDelivery.lastChannel&&(resolvedTo=baseDelivery.lastTo),{baseDelivery,resolvedChannel,resolvedTo,resolvedAccountId,resolvedThreadId:baseDelivery.threadId,deliveryTargetMode}}function resolveAgentOutboundTarget(params){let targetMode=params.targetMode??params.plan.deliveryTargetMode??(params.plan.resolvedTo?`explicit`:`implicit`);if(!isDeliverableMessageChannel(params.plan.resolvedChannel)||params.validateExplicitTarget!==!0&¶ms.plan.resolvedTo)return{resolvedTarget:null,resolvedTo:params.plan.resolvedTo,targetMode};let resolvedTarget=resolveOutboundTarget({channel:params.plan.resolvedChannel,to:params.plan.resolvedTo,cfg:params.cfg,accountId:params.plan.resolvedAccountId,mode:targetMode});return{resolvedTarget,resolvedTo:resolvedTarget.ok?resolvedTarget.to:params.plan.resolvedTo,targetMode}}const isOutboundPayloadJson=payload=>`mediaUrl`in payload;function buildOutboundResultEnvelope(params){let hasPayloads=params.payloads!==void 0,payloads=params.payloads===void 0?void 0:params.payloads.length===0?[]:isOutboundPayloadJson(params.payloads[0])?params.payloads:normalizeOutboundPayloadsForJson(params.payloads);return params.flattenDelivery!==!1&¶ms.delivery&&!params.meta&&!hasPayloads?params.delivery:{...hasPayloads?{payloads}:{},...params.meta?{meta:params.meta}:{},...params.delivery?{delivery:params.delivery}:{}}}function formatNestedLogPrefix(opts){let parts=[`[agent:nested]`],session=opts.sessionKey??opts.sessionId;session&&parts.push(`session=${session}`),opts.runId&&parts.push(`run=${opts.runId}`);let channel=opts.messageChannel??opts.channel;return channel&&parts.push(`channel=${channel}`),opts.to&&parts.push(`to=${opts.to}`),opts.accountId&&parts.push(`account=${opts.accountId}`),parts.join(` `)}function logNestedOutput(runtime,opts,output){let prefix=formatNestedLogPrefix(opts);for(let line of output.split(/\r?\n/))line&&runtime.log(`${prefix} ${line}`)}async function deliverAgentCommandResult(params){let{cfg,deps,runtime,opts,sessionEntry,payloads,result}=params,deliver=opts.deliver===!0,bestEffortDeliver=opts.bestEffortDeliver===!0,deliveryPlan=resolveAgentDeliveryPlan({sessionEntry,requestedChannel:opts.replyChannel??opts.channel,explicitTo:opts.replyTo??opts.to,explicitThreadId:opts.threadId,accountId:opts.replyAccountId??opts.accountId,wantsDelivery:deliver}),deliveryChannel=deliveryPlan.resolvedChannel,deliveryPlugin=isInternalMessageChannel(deliveryChannel)?void 0:getChannelPlugin(normalizeChannelId(deliveryChannel)??deliveryChannel),isDeliveryChannelKnown=isInternalMessageChannel(deliveryChannel)||!!deliveryPlugin,targetMode=opts.deliveryTargetMode??deliveryPlan.deliveryTargetMode??(opts.to?`explicit`:`implicit`),resolvedAccountId=deliveryPlan.resolvedAccountId,resolved=deliver&&isDeliveryChannelKnown&&deliveryChannel?resolveAgentOutboundTarget({cfg,plan:deliveryPlan,targetMode,validateExplicitTarget:!0}):{resolvedTarget:null,resolvedTo:deliveryPlan.resolvedTo,targetMode},resolvedTarget=resolved.resolvedTarget,deliveryTarget=resolved.resolvedTo,resolvedThreadId=deliveryPlan.resolvedThreadId??opts.threadId,resolvedReplyToId=deliveryChannel===`slack`&&resolvedThreadId!=null?String(resolvedThreadId):void 0,resolvedThreadTarget=deliveryChannel===`slack`?void 0:resolvedThreadId,logDeliveryError=err=>{let message=`Delivery failed (${deliveryChannel}${deliveryTarget?` to ${deliveryTarget}`:``}): ${String(err)}`;runtime.error?.(message),runtime.error||runtime.log(message)};if(deliver){if(!isDeliveryChannelKnown){let err=Error(`Unknown channel: ${deliveryChannel}`);if(!bestEffortDeliver)throw err;logDeliveryError(err)}else if(resolvedTarget&&!resolvedTarget.ok){if(!bestEffortDeliver)throw resolvedTarget.error;logDeliveryError(resolvedTarget.error)}}let normalizedPayloads=normalizeOutboundPayloadsForJson(payloads??[]);if(opts.json&&(runtime.log(JSON.stringify(buildOutboundResultEnvelope({payloads:normalizedPayloads,meta:result.meta}),null,2)),!deliver))return{payloads:normalizedPayloads,meta:result.meta};if(!payloads||payloads.length===0)return runtime.log(`No reply from agent.`),{payloads:[],meta:result.meta};let deliveryPayloads=normalizeOutboundPayloads(payloads),logPayload=payload=>{if(opts.json)return;let output=formatOutboundPayloadLog(payload);if(output){if(opts.lane===AGENT_LANE_NESTED){logNestedOutput(runtime,opts,output);return}runtime.log(output)}};if(!deliver)for(let payload of deliveryPayloads)logPayload(payload);return deliver&&deliveryChannel&&!isInternalMessageChannel(deliveryChannel)&&deliveryTarget&&await deliverOutboundPayloads({cfg,channel:deliveryChannel,to:deliveryTarget,accountId:resolvedAccountId,payloads:deliveryPayloads,agentId:opts.agentId??(opts.sessionKey?resolveSessionAgentId({sessionKey:opts.sessionKey,config:cfg}):void 0),replyToId:resolvedReplyToId??null,threadId:resolvedThreadTarget??null,bestEffort:bestEffortDeliver,onError:err=>logDeliveryError(err),onPayload:logPayload,deps:createOutboundSendDeps(deps)}),{payloads:normalizedPayloads,meta:result.meta}}function resolveAgentRunContext(opts){let merged=opts.runContext?{...opts.runContext}:{},normalizedChannel=resolveMessageChannel(merged.messageChannel??opts.messageChannel,opts.replyChannel??opts.channel);normalizedChannel&&(merged.messageChannel=normalizedChannel);let normalizedAccountId=normalizeAccountId(merged.accountId??opts.accountId);normalizedAccountId&&(merged.accountId=normalizedAccountId);let groupId=(merged.groupId??opts.groupId)?.toString().trim();groupId&&(merged.groupId=groupId);let groupChannel=(merged.groupChannel??opts.groupChannel)?.toString().trim();groupChannel&&(merged.groupChannel=groupChannel);let groupSpace=(merged.groupSpace??opts.groupSpace)?.toString().trim();if(groupSpace&&(merged.groupSpace=groupSpace),merged.currentThreadTs==null&&opts.threadId!=null&&opts.threadId!==``&&opts.threadId!==null&&(merged.currentThreadTs=String(opts.threadId)),!merged.currentChannelId&&opts.to){let trimmedTo=opts.to.trim();trimmedTo&&(merged.currentChannelId=trimmedTo)}return merged}async function updateSessionStoreAfterAgentRun(params){let{cfg,sessionId,sessionKey,storePath,sessionStore,defaultProvider,defaultModel,fallbackProvider,fallbackModel,result}=params,usage=result.meta.agentMeta?.usage,promptTokens=result.meta.agentMeta?.promptTokens,compactionsThisRun=Math.max(0,result.meta.agentMeta?.compactionCount??0),modelUsed=result.meta.agentMeta?.model??fallbackModel??defaultModel,providerUsed=result.meta.agentMeta?.provider??fallbackProvider??defaultProvider,contextTokens=params.contextTokensOverride??lookupContextTokens(modelUsed)??DEFAULT_CONTEXT_TOKENS,entry=sessionStore[sessionKey]??{sessionId,updatedAt:Date.now()},next={...entry,sessionId,updatedAt:Date.now(),modelProvider:providerUsed,model:modelUsed,contextTokens};if(isCliProvider(providerUsed,cfg)){let cliSessionId=result.meta.agentMeta?.sessionId?.trim();cliSessionId&&setCliSessionId(next,providerUsed,cliSessionId)}if(next.abortedLastRun=result.meta.aborted??!1,hasNonzeroUsage(usage)){let input=usage.input??0,output=usage.output??0,totalTokens=deriveSessionTotalTokens({usage,contextTokens,promptTokens})??input;next.inputTokens=input,next.outputTokens=output,next.totalTokens=totalTokens,next.totalTokensFresh=!0}compactionsThisRun>0&&(next.compactionCount=(entry.compactionCount??0)+compactionsThisRun),sessionStore[sessionKey]=next,await updateSessionStore(storePath,store=>{store[sessionKey]=next})}function resolveSessionKeyForRequest(opts){let sessionCfg=opts.cfg.session,scope=sessionCfg?.scope??`per-sender`,mainKey=normalizeMainKey(sessionCfg?.mainKey),explicitSessionKey=opts.sessionKey?.trim()||resolveExplicitAgentSessionKey({cfg:opts.cfg,agentId:opts.agentId}),storeAgentId=resolveAgentIdFromSessionKey(explicitSessionKey),storePath=resolveStorePath(sessionCfg?.store,{agentId:storeAgentId}),sessionStore=loadSessionStore(storePath),ctx=opts.to?.trim()?{From:opts.to}:void 0,sessionKey=explicitSessionKey??(ctx?resolveSessionKey(scope,ctx,mainKey):void 0);if(!explicitSessionKey&&opts.sessionId&&(!sessionKey||sessionStore[sessionKey]?.sessionId!==opts.sessionId)){let foundKey=Object.keys(sessionStore).find(key=>sessionStore[key]?.sessionId===opts.sessionId);foundKey&&(sessionKey=foundKey)}if(opts.sessionId&&!explicitSessionKey&&(!sessionKey||sessionStore[sessionKey]?.sessionId!==opts.sessionId)){let allAgentIds=listAgentIds(opts.cfg);for(let agentId of allAgentIds){if(agentId===storeAgentId)continue;let altStorePath=resolveStorePath(sessionCfg?.store,{agentId}),altStore=loadSessionStore(altStorePath),foundKey=Object.keys(altStore).find(key=>altStore[key]?.sessionId===opts.sessionId);if(foundKey)return{sessionKey:foundKey,sessionStore:altStore,storePath:altStorePath}}}return{sessionKey,sessionStore,storePath}}function resolveSession(opts){let sessionCfg=opts.cfg.session,{sessionKey,sessionStore,storePath}=resolveSessionKeyForRequest({cfg:opts.cfg,to:opts.to,sessionId:opts.sessionId,sessionKey:opts.sessionKey,agentId:opts.agentId}),now=Date.now(),sessionEntry=sessionKey?sessionStore[sessionKey]:void 0,resetPolicy=resolveSessionResetPolicy({sessionCfg,resetType:resolveSessionResetType({sessionKey}),resetOverride:resolveChannelResetConfig({sessionCfg,channel:sessionEntry?.lastChannel??sessionEntry?.channel})}),fresh=sessionEntry?evaluateSessionFreshness({updatedAt:sessionEntry.updatedAt,now,policy:resetPolicy}).fresh:!1;return{sessionId:opts.sessionId?.trim()||(fresh?sessionEntry?.sessionId:void 0)||crypto.randomUUID(),sessionKey,sessionEntry,sessionStore,storePath,isNewSession:!fresh&&!opts.sessionId,persistedThinking:fresh&&sessionEntry?.thinkingLevel?normalizeThinkLevel(sessionEntry.thinkingLevel):void 0,persistedVerbose:fresh&&sessionEntry?.verboseLevel?normalizeVerboseLevel(sessionEntry.verboseLevel):void 0}}async function persistSessionEntry(params){params.sessionStore[params.sessionKey]=params.entry,await updateSessionStore(params.storePath,store=>{store[params.sessionKey]=params.entry})}function resolveFallbackRetryPrompt(params){return params.isFallbackRetry?`Continue where you left off. The previous model attempt failed or timed out.`:params.body}function runAgentAttempt(params){let effectivePrompt=resolveFallbackRetryPrompt({body:params.body,isFallbackRetry:params.isFallbackRetry});if(isCliProvider(params.providerOverride,params.cfg)){let cliSessionId=getCliSessionId(params.sessionEntry,params.providerOverride);return runCliAgent({sessionId:params.sessionId,sessionKey:params.sessionKey,agentId:params.sessionAgentId,sessionFile:params.sessionFile,workspaceDir:params.workspaceDir,config:params.cfg,prompt:effectivePrompt,provider:params.providerOverride,model:params.modelOverride,thinkLevel:params.resolvedThinkLevel,timeoutMs:params.timeoutMs,runId:params.runId,extraSystemPrompt:params.opts.extraSystemPrompt,cliSessionId,images:params.isFallbackRetry?void 0:params.opts.images,streamParams:params.opts.streamParams})}let authProfileId=params.providerOverride===params.primaryProvider?params.sessionEntry?.authProfileOverride:void 0;return runEmbeddedAgent({sessionId:params.sessionId,sessionKey:params.sessionKey,agentId:params.sessionAgentId,messageChannel:params.messageChannel,agentAccountId:params.runContext.accountId,messageTo:params.opts.replyTo??params.opts.to,messageThreadId:params.opts.threadId,groupId:params.runContext.groupId,groupChannel:params.runContext.groupChannel,groupSpace:params.runContext.groupSpace,spawnedBy:params.spawnedBy,currentChannelId:params.runContext.currentChannelId,currentThreadTs:params.runContext.currentThreadTs,replyToMode:params.runContext.replyToMode,hasRepliedRef:params.runContext.hasRepliedRef,senderIsOwner:!0,sessionFile:params.sessionFile,workspaceDir:params.workspaceDir,config:params.cfg,skillsSnapshot:params.skillsSnapshot,prompt:effectivePrompt,images:params.isFallbackRetry?void 0:params.opts.images,clientTools:params.opts.clientTools,provider:params.providerOverride,model:params.modelOverride,authProfileId,authProfileIdSource:authProfileId?params.sessionEntry?.authProfileOverrideSource:void 0,thinkLevel:params.resolvedThinkLevel,verboseLevel:params.resolvedVerboseLevel,timeoutMs:params.timeoutMs,runId:params.runId,lane:params.opts.lane,abortSignal:params.opts.abortSignal,extraSystemPrompt:params.opts.extraSystemPrompt,inputProvenance:params.opts.inputProvenance,streamParams:params.opts.streamParams,agentDir:params.agentDir,onAgentEvent:params.onAgentEvent})}async function agentCommand(opts,runtime=defaultRuntime,deps=createDefaultDeps()){let body=(opts.message??``).trim();if(!body)throw Error(`Message (--message) is required`);if(!opts.to&&!opts.sessionId&&!opts.sessionKey&&!opts.agentId)throw Error(`Pass --to <E.164>, --session-id, or --agent to choose a session`);let cfg=loadConfig(),agentIdOverrideRaw=opts.agentId?.trim(),agentIdOverride=agentIdOverrideRaw?normalizeAgentId(agentIdOverrideRaw):void 0;if(agentIdOverride&&!listAgentIds(cfg).includes(agentIdOverride))throw Error(`Unknown agent id "${agentIdOverrideRaw}". Use "${formatCliCommand(`builderforce agents list`)}" to see configured agents.`);if(agentIdOverride&&opts.sessionKey){let sessionAgentId=resolveAgentIdFromSessionKey(opts.sessionKey);if(sessionAgentId!==agentIdOverride)throw Error(`Agent id "${agentIdOverrideRaw}" does not match session key agent "${sessionAgentId}".`)}let agentCfg=cfg.agents?.defaults,sessionAgentId=agentIdOverride??resolveAgentIdFromSessionKey(opts.sessionKey?.trim()),workspaceDirRaw=resolveAgentWorkspaceDir(cfg,sessionAgentId),agentDir=resolveAgentDir(cfg,sessionAgentId),workspaceDir=(await ensureAgentWorkspace({dir:workspaceDirRaw,ensureBootstrapFiles:!agentCfg?.skipBootstrap})).dir,configuredModel=resolveConfiguredModelRef({cfg,defaultProvider:DEFAULT_PROVIDER,defaultModel:DEFAULT_MODEL}),thinkingLevelsHint=formatThinkingLevels(configuredModel.provider,configuredModel.model),thinkOverride=normalizeThinkLevel(opts.thinking),thinkOnce=normalizeThinkLevel(opts.thinkingOnce);if(opts.thinking&&!thinkOverride)throw Error(`Invalid thinking level. Use one of: ${thinkingLevelsHint}.`);if(opts.thinkingOnce&&!thinkOnce)throw Error(`Invalid one-shot thinking level. Use one of: ${thinkingLevelsHint}.`);let verboseOverride=normalizeVerboseLevel(opts.verbose);if(opts.verbose&&!verboseOverride)throw Error(`Invalid verbose level. Use "on", "full", or "off".`);let isSubagentLane=(typeof opts.lane==`string`?opts.lane.trim():``)===String(AGENT_LANE_SUBAGENT),timeoutSecondsRaw=opts.timeout===void 0?isSubagentLane?0:void 0:Number.parseInt(String(opts.timeout),10);if(timeoutSecondsRaw!==void 0&&(Number.isNaN(timeoutSecondsRaw)||timeoutSecondsRaw<0))throw Error(`--timeout must be a non-negative integer (seconds; 0 means no timeout)`);let timeoutMs=resolveAgentTimeoutMs({cfg,overrideSeconds:timeoutSecondsRaw}),{sessionId,sessionKey,sessionEntry:resolvedSessionEntry,sessionStore,storePath,isNewSession,persistedThinking,persistedVerbose}=resolveSession({cfg,to:opts.to,sessionId:opts.sessionId,sessionKey:opts.sessionKey,agentId:agentIdOverride}),sessionEntry=resolvedSessionEntry,runId=opts.runId?.trim()||sessionId;try{if(opts.deliver===!0&&resolveSendPolicy({cfg,entry:sessionEntry,sessionKey,channel:sessionEntry?.channel,chatType:sessionEntry?.chatType})===`deny`)throw Error(`send blocked by session policy`);let resolvedThinkLevel=thinkOnce??thinkOverride??persistedThinking??agentCfg?.thinkingDefault,resolvedVerboseLevel=verboseOverride??persistedVerbose??agentCfg?.verboseDefault??`on`;sessionKey&®isterAgentRunContext(runId,{sessionKey,verboseLevel:resolvedVerboseLevel});let needsSkillsSnapshot=isNewSession||!sessionEntry?.skillsSnapshot,skillsSnapshotVersion=getSkillsSnapshotVersion(workspaceDir),skillFilter=resolveAgentSkillsFilter(cfg,sessionAgentId),skillsSnapshot=needsSkillsSnapshot?buildWorkspaceSkillSnapshot(workspaceDir,{config:cfg,eligibility:{remote:getRemoteSkillEligibility()},snapshotVersion:skillsSnapshotVersion,skillFilter}):sessionEntry?.skillsSnapshot;if(skillsSnapshot&&sessionStore&&sessionKey&&needsSkillsSnapshot){let next={...sessionEntry??{sessionId,updatedAt:Date.now()},sessionId,updatedAt:Date.now(),skillsSnapshot};await persistSessionEntry({sessionStore,sessionKey,storePath,entry:next}),sessionEntry=next}if(sessionStore&&sessionKey){let next={...sessionStore[sessionKey]??sessionEntry??{sessionId,updatedAt:Date.now()},sessionId,updatedAt:Date.now()};thinkOverride&&(next.thinkingLevel=thinkOverride),applyVerboseOverride(next,verboseOverride),await persistSessionEntry({sessionStore,sessionKey,storePath,entry:next})}let agentModelPrimary=resolveAgentModelPrimary(cfg,sessionAgentId),configuredDefaultRef=resolveConfiguredModelRef({cfg:agentModelPrimary?{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,model:{...typeof cfg.agents?.defaults?.model==`object`?cfg.agents.defaults.model:void 0,primary:agentModelPrimary}}}}:cfg,defaultProvider:DEFAULT_PROVIDER,defaultModel:DEFAULT_MODEL}),{provider:defaultProvider,model:defaultModel}=normalizeModelRef(configuredDefaultRef.provider,configuredDefaultRef.model),provider=defaultProvider,model=defaultModel,hasAllowlist=agentCfg?.models&&Object.keys(agentCfg.models).length>0,hasStoredOverride=!!(sessionEntry?.modelOverride||sessionEntry?.providerOverride),needsModelCatalog=hasAllowlist||hasStoredOverride,allowedModelKeys=new Set,allowedModelCatalog=[],modelCatalog=null;if(needsModelCatalog){modelCatalog=await loadModelCatalog({config:cfg});let allowed=buildAllowedModelSet({cfg,catalog:modelCatalog,defaultProvider,defaultModel});allowedModelKeys=allowed.allowedKeys,allowedModelCatalog=allowed.allowedCatalog}if(sessionEntry&&sessionStore&&sessionKey&&hasStoredOverride){let entry=sessionEntry,overrideProvider=sessionEntry.providerOverride?.trim()||defaultProvider,overrideModel=sessionEntry.modelOverride?.trim();if(overrideModel){let normalizedOverride=normalizeModelRef(overrideProvider,overrideModel),key=modelKey(normalizedOverride.provider,normalizedOverride.model);if(!isCliProvider(normalizedOverride.provider,cfg)&&allowedModelKeys.size>0&&!allowedModelKeys.has(key)){let{updated}=applyModelOverrideToSessionEntry({entry,selection:{provider:defaultProvider,model:defaultModel,isDefault:!0}});updated&&await persistSessionEntry({sessionStore,sessionKey,storePath,entry})}}}let storedProviderOverride=sessionEntry?.providerOverride?.trim(),storedModelOverride=sessionEntry?.modelOverride?.trim();if(storedModelOverride){let normalizedStored=normalizeModelRef(storedProviderOverride||defaultProvider,storedModelOverride),key=modelKey(normalizedStored.provider,normalizedStored.model);(isCliProvider(normalizedStored.provider,cfg)||allowedModelKeys.size===0||allowedModelKeys.has(key))&&(provider=normalizedStored.provider,model=normalizedStored.model)}if(sessionEntry){let authProfileId=sessionEntry.authProfileOverride;if(authProfileId){let entry=sessionEntry,profile=(await ensureAuthProfileStore()).profiles[authProfileId];(!profile||profile.provider!==provider)&&sessionStore&&sessionKey&&await clearSessionAuthProfileOverride({sessionEntry:entry,sessionStore,sessionKey,storePath})}}if(!resolvedThinkLevel){let catalogForThinking=modelCatalog??allowedModelCatalog;(!catalogForThinking||catalogForThinking.length===0)&&(modelCatalog=await loadModelCatalog({config:cfg}),catalogForThinking=modelCatalog),resolvedThinkLevel=resolveThinkingDefault({cfg,provider,model,catalog:catalogForThinking})}if(resolvedThinkLevel===`xhigh`&&!supportsXHighThinking(provider,model)){if(thinkOnce||thinkOverride)throw Error(`Thinking level "xhigh" is only supported for ${formatXHighModelHint()}.`);if(resolvedThinkLevel=`high`,sessionEntry&&sessionStore&&sessionKey&&sessionEntry.thinkingLevel===`xhigh`){let entry=sessionEntry;entry.thinkingLevel=`high`,entry.updatedAt=Date.now(),await persistSessionEntry({sessionStore,sessionKey,storePath,entry})}}let sessionFile=resolveSessionFilePath(sessionId,sessionEntry,{agentId:sessionAgentId}),startedAt=Date.now(),lifecycleEnded=!1,result,fallbackProvider=provider,fallbackModel=model;try{let runContext=resolveAgentRunContext(opts),messageChannel=resolveMessageChannel(runContext.messageChannel,opts.replyChannel??opts.channel),spawnedBy=opts.spawnedBy??sessionEntry?.spawnedBy,effectiveFallbacksOverride=resolveEffectiveModelFallbacks({cfg,agentId:sessionAgentId,hasSessionModelOverride:!!storedModelOverride}),fallbackAttemptIndex=0,fallbackResult=await runWithModelFallback({cfg,provider,model,agentDir,fallbacksOverride:effectiveFallbacksOverride,run:(providerOverride,modelOverride)=>{let isFallbackRetry=fallbackAttemptIndex>0;return fallbackAttemptIndex+=1,runAgentAttempt({providerOverride,modelOverride,cfg,sessionEntry,sessionId,sessionKey,sessionAgentId,sessionFile,workspaceDir,body,isFallbackRetry,resolvedThinkLevel,timeoutMs,runId,opts,runContext,spawnedBy,messageChannel,skillsSnapshot,resolvedVerboseLevel,agentDir,primaryProvider:provider,onAgentEvent:evt=>{evt.stream===`lifecycle`&&typeof evt.data?.phase==`string`&&(evt.data.phase===`end`||evt.data.phase===`error`)&&(lifecycleEnded=!0)}})}});result=fallbackResult.result,fallbackProvider=fallbackResult.provider,fallbackModel=fallbackResult.model,lifecycleEnded||emitAgentEvent({runId,stream:`lifecycle`,data:{phase:`end`,startedAt,endedAt:Date.now(),aborted:result.meta.aborted??!1}})}catch(err){throw lifecycleEnded||emitAgentEvent({runId,stream:`lifecycle`,data:{phase:`error`,startedAt,endedAt:Date.now(),error:String(err)}}),err}sessionStore&&sessionKey&&await updateSessionStoreAfterAgentRun({cfg,contextTokensOverride:agentCfg?.contextTokens,sessionId,sessionKey,storePath,sessionStore,defaultProvider:provider,defaultModel:model,fallbackProvider,fallbackModel,result});let payloads=result.payloads??[];return await deliverAgentCommandResult({cfg,deps,runtime,opts,sessionEntry,result,payloads})}finally{clearAgentRunContext(runId)}}export{resolveAgentOutboundTarget as i,resolveSessionKeyForRequest as n,resolveAgentDeliveryPlan as r,agentCommand as t};
|
|
1
|
+
import{r as DEFAULT_CHAT_CHANNEL}from"./registry-Cv7CoWAs.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{F as modelKey,H as resolveConfiguredModelRef,I as normalizeModelRef,J as resolveThinkingDefault,P as isCliProvider,_n as DEFAULT_PROVIDER,b as ensureAuthProfileStore,gn as DEFAULT_MODEL,hn as DEFAULT_CONTEXT_TOKENS,k as buildAllowedModelSet}from"./auth-profiles-CuAFgjuQ.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{d as normalizeAgentId,f as normalizeMainKey,p as resolveAgentIdFromSessionKey}from"./session-key-CksCYipj.js";import{c as resolveAgentWorkspaceDir,d as resolveSessionAgentId,i as resolveAgentDir,n as listAgentIds,o as resolveAgentModelPrimary,s as resolveAgentSkillsFilter,u as resolveEffectiveModelFallbacks,w as ensureAgentWorkspace}from"./agent-scope-CufEmNj_.js";import{r as loadConfig}from"./io-CsCa3_1Z.js";import{r as loadModelCatalog}from"./model-catalog-D8OQ7p7I.js";import{r as buildWorkspaceSkillSnapshot}from"./skills-D3MwwPOH.js";import{i as getSkillsSnapshotVersion}from"./refresh-C4vwneXT.js";import{a as isInternalMessageChannel,d as resolveMessageChannel,i as isGatewayMessageChannel,l as normalizeMessageChannel,n as isDeliverableMessageChannel,t as INTERNAL_MESSAGE_CHANNEL}from"./message-channel-z5YRpR2d.js";import{Fn as applyVerboseOverride,J as setCliSessionId,Pn as applyModelOverrideToSessionEntry,Xn as resolveAgentTimeoutMs,Xt as AGENT_LANE_NESTED,Y as runCliAgent,Zt as AGENT_LANE_SUBAGENT,at as resolveOutboundTarget,cn as getRemoteSkillEligibility,di as clearAgentRunContext,fi as emitAgentEvent,h as runEmbeddedAgent,hi as registerAgentRunContext,kn as clearSessionAuthProfileOverride,ot as resolveSessionDeliveryTarget,q as getCliSessionId,qr as runWithModelFallback,sn as resolveSendPolicy}from"./subagent-registry-m_x-JRkR.js";import{C as evaluateSessionFreshness,E as resolveSessionResetType,M as resolveExplicitAgentSessionKey,S as resolveSessionKey,T as resolveSessionResetPolicy,a as loadSessionStore,rt as normalizeAccountId,u as updateSessionStore,w as resolveChannelResetConfig}from"./sessions-CmJXMlLP.js";import{r as normalizeChannelId,t as getChannelPlugin}from"./plugins-1Mn6RiNf.js";import{i as normalizeOutboundPayloadsForJson,n as formatOutboundPayloadLog,r as normalizeOutboundPayloads,t as deliverOutboundPayloads}from"./deliver--eLCRJc2.js";import{a as formatXHighModelHint,f as normalizeVerboseLevel,i as formatThinkingLevels,m as supportsXHighThinking,u as normalizeThinkLevel}from"./embedded-helpers-BZGiFZlP.js";import{c as resolveStorePath,n as resolveSessionFilePath}from"./paths-ClsbsPQP.js";import{u as lookupContextTokens}from"./session-utils-D2_j4c6U.js";import{c as hasNonzeroUsage,s as deriveSessionTotalTokens}from"./session-cost-usage-S0nkbPoW.js";import{n as createDefaultDeps,t as createOutboundSendDeps}from"./outbound-send-deps-DuML6h7r.js";import crypto from"node:crypto";function resolveAgentDeliveryPlan(params){let requestedRaw=typeof params.requestedChannel==`string`?params.requestedChannel.trim():``,requestedChannel=(requestedRaw?normalizeMessageChannel(requestedRaw):void 0)||`last`,explicitTo=typeof params.explicitTo==`string`&¶ms.explicitTo.trim()?params.explicitTo.trim():void 0,baseDelivery=resolveSessionDeliveryTarget({entry:params.sessionEntry,requestedChannel:requestedChannel===INTERNAL_MESSAGE_CHANNEL?`last`:requestedChannel,explicitTo,explicitThreadId:params.explicitThreadId}),resolvedChannel=requestedChannel===INTERNAL_MESSAGE_CHANNEL?INTERNAL_MESSAGE_CHANNEL:requestedChannel===`last`?baseDelivery.channel&&baseDelivery.channel!==INTERNAL_MESSAGE_CHANNEL?baseDelivery.channel:params.wantsDelivery?DEFAULT_CHAT_CHANNEL:INTERNAL_MESSAGE_CHANNEL:isGatewayMessageChannel(requestedChannel)?requestedChannel:baseDelivery.channel&&baseDelivery.channel!==INTERNAL_MESSAGE_CHANNEL?baseDelivery.channel:params.wantsDelivery?DEFAULT_CHAT_CHANNEL:INTERNAL_MESSAGE_CHANNEL,deliveryTargetMode=explicitTo?`explicit`:isDeliverableMessageChannel(resolvedChannel)?`implicit`:void 0,resolvedAccountId=normalizeAccountId(params.accountId)??(deliveryTargetMode===`implicit`?baseDelivery.accountId:void 0),resolvedTo=explicitTo;return!resolvedTo&&isDeliverableMessageChannel(resolvedChannel)&&resolvedChannel===baseDelivery.lastChannel&&(resolvedTo=baseDelivery.lastTo),{baseDelivery,resolvedChannel,resolvedTo,resolvedAccountId,resolvedThreadId:baseDelivery.threadId,deliveryTargetMode}}function resolveAgentOutboundTarget(params){let targetMode=params.targetMode??params.plan.deliveryTargetMode??(params.plan.resolvedTo?`explicit`:`implicit`);if(!isDeliverableMessageChannel(params.plan.resolvedChannel)||params.validateExplicitTarget!==!0&¶ms.plan.resolvedTo)return{resolvedTarget:null,resolvedTo:params.plan.resolvedTo,targetMode};let resolvedTarget=resolveOutboundTarget({channel:params.plan.resolvedChannel,to:params.plan.resolvedTo,cfg:params.cfg,accountId:params.plan.resolvedAccountId,mode:targetMode});return{resolvedTarget,resolvedTo:resolvedTarget.ok?resolvedTarget.to:params.plan.resolvedTo,targetMode}}const isOutboundPayloadJson=payload=>`mediaUrl`in payload;function buildOutboundResultEnvelope(params){let hasPayloads=params.payloads!==void 0,payloads=params.payloads===void 0?void 0:params.payloads.length===0?[]:isOutboundPayloadJson(params.payloads[0])?params.payloads:normalizeOutboundPayloadsForJson(params.payloads);return params.flattenDelivery!==!1&¶ms.delivery&&!params.meta&&!hasPayloads?params.delivery:{...hasPayloads?{payloads}:{},...params.meta?{meta:params.meta}:{},...params.delivery?{delivery:params.delivery}:{}}}function formatNestedLogPrefix(opts){let parts=[`[agent:nested]`],session=opts.sessionKey??opts.sessionId;session&&parts.push(`session=${session}`),opts.runId&&parts.push(`run=${opts.runId}`);let channel=opts.messageChannel??opts.channel;return channel&&parts.push(`channel=${channel}`),opts.to&&parts.push(`to=${opts.to}`),opts.accountId&&parts.push(`account=${opts.accountId}`),parts.join(` `)}function logNestedOutput(runtime,opts,output){let prefix=formatNestedLogPrefix(opts);for(let line of output.split(/\r?\n/))line&&runtime.log(`${prefix} ${line}`)}async function deliverAgentCommandResult(params){let{cfg,deps,runtime,opts,sessionEntry,payloads,result}=params,deliver=opts.deliver===!0,bestEffortDeliver=opts.bestEffortDeliver===!0,deliveryPlan=resolveAgentDeliveryPlan({sessionEntry,requestedChannel:opts.replyChannel??opts.channel,explicitTo:opts.replyTo??opts.to,explicitThreadId:opts.threadId,accountId:opts.replyAccountId??opts.accountId,wantsDelivery:deliver}),deliveryChannel=deliveryPlan.resolvedChannel,deliveryPlugin=isInternalMessageChannel(deliveryChannel)?void 0:getChannelPlugin(normalizeChannelId(deliveryChannel)??deliveryChannel),isDeliveryChannelKnown=isInternalMessageChannel(deliveryChannel)||!!deliveryPlugin,targetMode=opts.deliveryTargetMode??deliveryPlan.deliveryTargetMode??(opts.to?`explicit`:`implicit`),resolvedAccountId=deliveryPlan.resolvedAccountId,resolved=deliver&&isDeliveryChannelKnown&&deliveryChannel?resolveAgentOutboundTarget({cfg,plan:deliveryPlan,targetMode,validateExplicitTarget:!0}):{resolvedTarget:null,resolvedTo:deliveryPlan.resolvedTo,targetMode},resolvedTarget=resolved.resolvedTarget,deliveryTarget=resolved.resolvedTo,resolvedThreadId=deliveryPlan.resolvedThreadId??opts.threadId,resolvedReplyToId=deliveryChannel===`slack`&&resolvedThreadId!=null?String(resolvedThreadId):void 0,resolvedThreadTarget=deliveryChannel===`slack`?void 0:resolvedThreadId,logDeliveryError=err=>{let message=`Delivery failed (${deliveryChannel}${deliveryTarget?` to ${deliveryTarget}`:``}): ${String(err)}`;runtime.error?.(message),runtime.error||runtime.log(message)};if(deliver){if(!isDeliveryChannelKnown){let err=Error(`Unknown channel: ${deliveryChannel}`);if(!bestEffortDeliver)throw err;logDeliveryError(err)}else if(resolvedTarget&&!resolvedTarget.ok){if(!bestEffortDeliver)throw resolvedTarget.error;logDeliveryError(resolvedTarget.error)}}let normalizedPayloads=normalizeOutboundPayloadsForJson(payloads??[]);if(opts.json&&(runtime.log(JSON.stringify(buildOutboundResultEnvelope({payloads:normalizedPayloads,meta:result.meta}),null,2)),!deliver))return{payloads:normalizedPayloads,meta:result.meta};if(!payloads||payloads.length===0)return runtime.log(`No reply from agent.`),{payloads:[],meta:result.meta};let deliveryPayloads=normalizeOutboundPayloads(payloads),logPayload=payload=>{if(opts.json)return;let output=formatOutboundPayloadLog(payload);if(output){if(opts.lane===AGENT_LANE_NESTED){logNestedOutput(runtime,opts,output);return}runtime.log(output)}};if(!deliver)for(let payload of deliveryPayloads)logPayload(payload);return deliver&&deliveryChannel&&!isInternalMessageChannel(deliveryChannel)&&deliveryTarget&&await deliverOutboundPayloads({cfg,channel:deliveryChannel,to:deliveryTarget,accountId:resolvedAccountId,payloads:deliveryPayloads,agentId:opts.agentId??(opts.sessionKey?resolveSessionAgentId({sessionKey:opts.sessionKey,config:cfg}):void 0),replyToId:resolvedReplyToId??null,threadId:resolvedThreadTarget??null,bestEffort:bestEffortDeliver,onError:err=>logDeliveryError(err),onPayload:logPayload,deps:createOutboundSendDeps(deps)}),{payloads:normalizedPayloads,meta:result.meta}}function resolveAgentRunContext(opts){let merged=opts.runContext?{...opts.runContext}:{},normalizedChannel=resolveMessageChannel(merged.messageChannel??opts.messageChannel,opts.replyChannel??opts.channel);normalizedChannel&&(merged.messageChannel=normalizedChannel);let normalizedAccountId=normalizeAccountId(merged.accountId??opts.accountId);normalizedAccountId&&(merged.accountId=normalizedAccountId);let groupId=(merged.groupId??opts.groupId)?.toString().trim();groupId&&(merged.groupId=groupId);let groupChannel=(merged.groupChannel??opts.groupChannel)?.toString().trim();groupChannel&&(merged.groupChannel=groupChannel);let groupSpace=(merged.groupSpace??opts.groupSpace)?.toString().trim();if(groupSpace&&(merged.groupSpace=groupSpace),merged.currentThreadTs==null&&opts.threadId!=null&&opts.threadId!==``&&opts.threadId!==null&&(merged.currentThreadTs=String(opts.threadId)),!merged.currentChannelId&&opts.to){let trimmedTo=opts.to.trim();trimmedTo&&(merged.currentChannelId=trimmedTo)}return merged}async function updateSessionStoreAfterAgentRun(params){let{cfg,sessionId,sessionKey,storePath,sessionStore,defaultProvider,defaultModel,fallbackProvider,fallbackModel,result}=params,usage=result.meta.agentMeta?.usage,promptTokens=result.meta.agentMeta?.promptTokens,compactionsThisRun=Math.max(0,result.meta.agentMeta?.compactionCount??0),modelUsed=result.meta.agentMeta?.model??fallbackModel??defaultModel,providerUsed=result.meta.agentMeta?.provider??fallbackProvider??defaultProvider,contextTokens=params.contextTokensOverride??lookupContextTokens(modelUsed)??DEFAULT_CONTEXT_TOKENS,entry=sessionStore[sessionKey]??{sessionId,updatedAt:Date.now()},next={...entry,sessionId,updatedAt:Date.now(),modelProvider:providerUsed,model:modelUsed,contextTokens};if(isCliProvider(providerUsed,cfg)){let cliSessionId=result.meta.agentMeta?.sessionId?.trim();cliSessionId&&setCliSessionId(next,providerUsed,cliSessionId)}if(next.abortedLastRun=result.meta.aborted??!1,hasNonzeroUsage(usage)){let input=usage.input??0,output=usage.output??0,totalTokens=deriveSessionTotalTokens({usage,contextTokens,promptTokens})??input;next.inputTokens=input,next.outputTokens=output,next.totalTokens=totalTokens,next.totalTokensFresh=!0}compactionsThisRun>0&&(next.compactionCount=(entry.compactionCount??0)+compactionsThisRun),sessionStore[sessionKey]=next,await updateSessionStore(storePath,store=>{store[sessionKey]=next})}function resolveSessionKeyForRequest(opts){let sessionCfg=opts.cfg.session,scope=sessionCfg?.scope??`per-sender`,mainKey=normalizeMainKey(sessionCfg?.mainKey),explicitSessionKey=opts.sessionKey?.trim()||resolveExplicitAgentSessionKey({cfg:opts.cfg,agentId:opts.agentId}),storeAgentId=resolveAgentIdFromSessionKey(explicitSessionKey),storePath=resolveStorePath(sessionCfg?.store,{agentId:storeAgentId}),sessionStore=loadSessionStore(storePath),ctx=opts.to?.trim()?{From:opts.to}:void 0,sessionKey=explicitSessionKey??(ctx?resolveSessionKey(scope,ctx,mainKey):void 0);if(!explicitSessionKey&&opts.sessionId&&(!sessionKey||sessionStore[sessionKey]?.sessionId!==opts.sessionId)){let foundKey=Object.keys(sessionStore).find(key=>sessionStore[key]?.sessionId===opts.sessionId);foundKey&&(sessionKey=foundKey)}if(opts.sessionId&&!explicitSessionKey&&(!sessionKey||sessionStore[sessionKey]?.sessionId!==opts.sessionId)){let allAgentIds=listAgentIds(opts.cfg);for(let agentId of allAgentIds){if(agentId===storeAgentId)continue;let altStorePath=resolveStorePath(sessionCfg?.store,{agentId}),altStore=loadSessionStore(altStorePath),foundKey=Object.keys(altStore).find(key=>altStore[key]?.sessionId===opts.sessionId);if(foundKey)return{sessionKey:foundKey,sessionStore:altStore,storePath:altStorePath}}}return{sessionKey,sessionStore,storePath}}function resolveSession(opts){let sessionCfg=opts.cfg.session,{sessionKey,sessionStore,storePath}=resolveSessionKeyForRequest({cfg:opts.cfg,to:opts.to,sessionId:opts.sessionId,sessionKey:opts.sessionKey,agentId:opts.agentId}),now=Date.now(),sessionEntry=sessionKey?sessionStore[sessionKey]:void 0,resetPolicy=resolveSessionResetPolicy({sessionCfg,resetType:resolveSessionResetType({sessionKey}),resetOverride:resolveChannelResetConfig({sessionCfg,channel:sessionEntry?.lastChannel??sessionEntry?.channel})}),fresh=sessionEntry?evaluateSessionFreshness({updatedAt:sessionEntry.updatedAt,now,policy:resetPolicy}).fresh:!1;return{sessionId:opts.sessionId?.trim()||(fresh?sessionEntry?.sessionId:void 0)||crypto.randomUUID(),sessionKey,sessionEntry,sessionStore,storePath,isNewSession:!fresh&&!opts.sessionId,persistedThinking:fresh&&sessionEntry?.thinkingLevel?normalizeThinkLevel(sessionEntry.thinkingLevel):void 0,persistedVerbose:fresh&&sessionEntry?.verboseLevel?normalizeVerboseLevel(sessionEntry.verboseLevel):void 0}}async function persistSessionEntry(params){params.sessionStore[params.sessionKey]=params.entry,await updateSessionStore(params.storePath,store=>{store[params.sessionKey]=params.entry})}function resolveFallbackRetryPrompt(params){return params.isFallbackRetry?`Continue where you left off. The previous model attempt failed or timed out.`:params.body}function runAgentAttempt(params){let effectivePrompt=resolveFallbackRetryPrompt({body:params.body,isFallbackRetry:params.isFallbackRetry});if(isCliProvider(params.providerOverride,params.cfg)){let cliSessionId=getCliSessionId(params.sessionEntry,params.providerOverride);return runCliAgent({sessionId:params.sessionId,sessionKey:params.sessionKey,agentId:params.sessionAgentId,sessionFile:params.sessionFile,workspaceDir:params.workspaceDir,config:params.cfg,prompt:effectivePrompt,provider:params.providerOverride,model:params.modelOverride,thinkLevel:params.resolvedThinkLevel,timeoutMs:params.timeoutMs,runId:params.runId,extraSystemPrompt:params.opts.extraSystemPrompt,cliSessionId,images:params.isFallbackRetry?void 0:params.opts.images,streamParams:params.opts.streamParams})}let authProfileId=params.providerOverride===params.primaryProvider?params.sessionEntry?.authProfileOverride:void 0;return runEmbeddedAgent({sessionId:params.sessionId,sessionKey:params.sessionKey,agentId:params.sessionAgentId,messageChannel:params.messageChannel,agentAccountId:params.runContext.accountId,messageTo:params.opts.replyTo??params.opts.to,messageThreadId:params.opts.threadId,groupId:params.runContext.groupId,groupChannel:params.runContext.groupChannel,groupSpace:params.runContext.groupSpace,spawnedBy:params.spawnedBy,currentChannelId:params.runContext.currentChannelId,currentThreadTs:params.runContext.currentThreadTs,replyToMode:params.runContext.replyToMode,hasRepliedRef:params.runContext.hasRepliedRef,senderIsOwner:!0,sessionFile:params.sessionFile,workspaceDir:params.workspaceDir,config:params.cfg,skillsSnapshot:params.skillsSnapshot,prompt:effectivePrompt,images:params.isFallbackRetry?void 0:params.opts.images,clientTools:params.opts.clientTools,provider:params.providerOverride,model:params.modelOverride,authProfileId,authProfileIdSource:authProfileId?params.sessionEntry?.authProfileOverrideSource:void 0,thinkLevel:params.resolvedThinkLevel,verboseLevel:params.resolvedVerboseLevel,timeoutMs:params.timeoutMs,runId:params.runId,lane:params.opts.lane,abortSignal:params.opts.abortSignal,extraSystemPrompt:params.opts.extraSystemPrompt,inputProvenance:params.opts.inputProvenance,streamParams:params.opts.streamParams,agentDir:params.agentDir,onAgentEvent:params.onAgentEvent})}async function agentCommand(opts,runtime=defaultRuntime,deps=createDefaultDeps()){let body=(opts.message??``).trim();if(!body)throw Error(`Message (--message) is required`);if(!opts.to&&!opts.sessionId&&!opts.sessionKey&&!opts.agentId)throw Error(`Pass --to <E.164>, --session-id, or --agent to choose a session`);let cfg=loadConfig(),agentIdOverrideRaw=opts.agentId?.trim(),agentIdOverride=agentIdOverrideRaw?normalizeAgentId(agentIdOverrideRaw):void 0;if(agentIdOverride&&!listAgentIds(cfg).includes(agentIdOverride))throw Error(`Unknown agent id "${agentIdOverrideRaw}". Use "${formatCliCommand(`builderforce agents list`)}" to see configured agents.`);if(agentIdOverride&&opts.sessionKey){let sessionAgentId=resolveAgentIdFromSessionKey(opts.sessionKey);if(sessionAgentId!==agentIdOverride)throw Error(`Agent id "${agentIdOverrideRaw}" does not match session key agent "${sessionAgentId}".`)}let agentCfg=cfg.agents?.defaults,sessionAgentId=agentIdOverride??resolveAgentIdFromSessionKey(opts.sessionKey?.trim()),workspaceDirRaw=resolveAgentWorkspaceDir(cfg,sessionAgentId),agentDir=resolveAgentDir(cfg,sessionAgentId),workspaceDir=(await ensureAgentWorkspace({dir:workspaceDirRaw,ensureBootstrapFiles:!agentCfg?.skipBootstrap})).dir,configuredModel=resolveConfiguredModelRef({cfg,defaultProvider:DEFAULT_PROVIDER,defaultModel:DEFAULT_MODEL}),thinkingLevelsHint=formatThinkingLevels(configuredModel.provider,configuredModel.model),thinkOverride=normalizeThinkLevel(opts.thinking),thinkOnce=normalizeThinkLevel(opts.thinkingOnce);if(opts.thinking&&!thinkOverride)throw Error(`Invalid thinking level. Use one of: ${thinkingLevelsHint}.`);if(opts.thinkingOnce&&!thinkOnce)throw Error(`Invalid one-shot thinking level. Use one of: ${thinkingLevelsHint}.`);let verboseOverride=normalizeVerboseLevel(opts.verbose);if(opts.verbose&&!verboseOverride)throw Error(`Invalid verbose level. Use "on", "full", or "off".`);let isSubagentLane=(typeof opts.lane==`string`?opts.lane.trim():``)===String(AGENT_LANE_SUBAGENT),timeoutSecondsRaw=opts.timeout===void 0?isSubagentLane?0:void 0:Number.parseInt(String(opts.timeout),10);if(timeoutSecondsRaw!==void 0&&(Number.isNaN(timeoutSecondsRaw)||timeoutSecondsRaw<0))throw Error(`--timeout must be a non-negative integer (seconds; 0 means no timeout)`);let timeoutMs=resolveAgentTimeoutMs({cfg,overrideSeconds:timeoutSecondsRaw}),{sessionId,sessionKey,sessionEntry:resolvedSessionEntry,sessionStore,storePath,isNewSession,persistedThinking,persistedVerbose}=resolveSession({cfg,to:opts.to,sessionId:opts.sessionId,sessionKey:opts.sessionKey,agentId:agentIdOverride}),sessionEntry=resolvedSessionEntry,runId=opts.runId?.trim()||sessionId;try{if(opts.deliver===!0&&resolveSendPolicy({cfg,entry:sessionEntry,sessionKey,channel:sessionEntry?.channel,chatType:sessionEntry?.chatType})===`deny`)throw Error(`send blocked by session policy`);let resolvedThinkLevel=thinkOnce??thinkOverride??persistedThinking??agentCfg?.thinkingDefault,resolvedVerboseLevel=verboseOverride??persistedVerbose??agentCfg?.verboseDefault??`on`;sessionKey&®isterAgentRunContext(runId,{sessionKey,verboseLevel:resolvedVerboseLevel});let needsSkillsSnapshot=isNewSession||!sessionEntry?.skillsSnapshot,skillsSnapshotVersion=getSkillsSnapshotVersion(workspaceDir),skillFilter=resolveAgentSkillsFilter(cfg,sessionAgentId),skillsSnapshot=needsSkillsSnapshot?buildWorkspaceSkillSnapshot(workspaceDir,{config:cfg,eligibility:{remote:getRemoteSkillEligibility()},snapshotVersion:skillsSnapshotVersion,skillFilter}):sessionEntry?.skillsSnapshot;if(skillsSnapshot&&sessionStore&&sessionKey&&needsSkillsSnapshot){let next={...sessionEntry??{sessionId,updatedAt:Date.now()},sessionId,updatedAt:Date.now(),skillsSnapshot};await persistSessionEntry({sessionStore,sessionKey,storePath,entry:next}),sessionEntry=next}if(sessionStore&&sessionKey){let next={...sessionStore[sessionKey]??sessionEntry??{sessionId,updatedAt:Date.now()},sessionId,updatedAt:Date.now()};thinkOverride&&(next.thinkingLevel=thinkOverride),applyVerboseOverride(next,verboseOverride),await persistSessionEntry({sessionStore,sessionKey,storePath,entry:next})}let agentModelPrimary=resolveAgentModelPrimary(cfg,sessionAgentId),configuredDefaultRef=resolveConfiguredModelRef({cfg:agentModelPrimary?{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,model:{...typeof cfg.agents?.defaults?.model==`object`?cfg.agents.defaults.model:void 0,primary:agentModelPrimary}}}}:cfg,defaultProvider:DEFAULT_PROVIDER,defaultModel:DEFAULT_MODEL}),{provider:defaultProvider,model:defaultModel}=normalizeModelRef(configuredDefaultRef.provider,configuredDefaultRef.model),provider=defaultProvider,model=defaultModel,hasAllowlist=agentCfg?.models&&Object.keys(agentCfg.models).length>0,hasStoredOverride=!!(sessionEntry?.modelOverride||sessionEntry?.providerOverride),needsModelCatalog=hasAllowlist||hasStoredOverride,allowedModelKeys=new Set,allowedModelCatalog=[],modelCatalog=null;if(needsModelCatalog){modelCatalog=await loadModelCatalog({config:cfg});let allowed=buildAllowedModelSet({cfg,catalog:modelCatalog,defaultProvider,defaultModel});allowedModelKeys=allowed.allowedKeys,allowedModelCatalog=allowed.allowedCatalog}if(sessionEntry&&sessionStore&&sessionKey&&hasStoredOverride){let entry=sessionEntry,overrideProvider=sessionEntry.providerOverride?.trim()||defaultProvider,overrideModel=sessionEntry.modelOverride?.trim();if(overrideModel){let normalizedOverride=normalizeModelRef(overrideProvider,overrideModel),key=modelKey(normalizedOverride.provider,normalizedOverride.model);if(!isCliProvider(normalizedOverride.provider,cfg)&&allowedModelKeys.size>0&&!allowedModelKeys.has(key)){let{updated}=applyModelOverrideToSessionEntry({entry,selection:{provider:defaultProvider,model:defaultModel,isDefault:!0}});updated&&await persistSessionEntry({sessionStore,sessionKey,storePath,entry})}}}let storedProviderOverride=sessionEntry?.providerOverride?.trim(),storedModelOverride=sessionEntry?.modelOverride?.trim();if(storedModelOverride){let normalizedStored=normalizeModelRef(storedProviderOverride||defaultProvider,storedModelOverride),key=modelKey(normalizedStored.provider,normalizedStored.model);(isCliProvider(normalizedStored.provider,cfg)||allowedModelKeys.size===0||allowedModelKeys.has(key))&&(provider=normalizedStored.provider,model=normalizedStored.model)}if(sessionEntry){let authProfileId=sessionEntry.authProfileOverride;if(authProfileId){let entry=sessionEntry,profile=(await ensureAuthProfileStore()).profiles[authProfileId];(!profile||profile.provider!==provider)&&sessionStore&&sessionKey&&await clearSessionAuthProfileOverride({sessionEntry:entry,sessionStore,sessionKey,storePath})}}if(!resolvedThinkLevel){let catalogForThinking=modelCatalog??allowedModelCatalog;(!catalogForThinking||catalogForThinking.length===0)&&(modelCatalog=await loadModelCatalog({config:cfg}),catalogForThinking=modelCatalog),resolvedThinkLevel=resolveThinkingDefault({cfg,provider,model,catalog:catalogForThinking})}if(resolvedThinkLevel===`xhigh`&&!supportsXHighThinking(provider,model)){if(thinkOnce||thinkOverride)throw Error(`Thinking level "xhigh" is only supported for ${formatXHighModelHint()}.`);if(resolvedThinkLevel=`high`,sessionEntry&&sessionStore&&sessionKey&&sessionEntry.thinkingLevel===`xhigh`){let entry=sessionEntry;entry.thinkingLevel=`high`,entry.updatedAt=Date.now(),await persistSessionEntry({sessionStore,sessionKey,storePath,entry})}}let sessionFile=resolveSessionFilePath(sessionId,sessionEntry,{agentId:sessionAgentId}),startedAt=Date.now(),lifecycleEnded=!1,result,fallbackProvider=provider,fallbackModel=model;try{let runContext=resolveAgentRunContext(opts),messageChannel=resolveMessageChannel(runContext.messageChannel,opts.replyChannel??opts.channel),spawnedBy=opts.spawnedBy??sessionEntry?.spawnedBy,effectiveFallbacksOverride=resolveEffectiveModelFallbacks({cfg,agentId:sessionAgentId,hasSessionModelOverride:!!storedModelOverride}),fallbackAttemptIndex=0,fallbackResult=await runWithModelFallback({cfg,provider,model,agentDir,fallbacksOverride:effectiveFallbacksOverride,run:(providerOverride,modelOverride)=>{let isFallbackRetry=fallbackAttemptIndex>0;return fallbackAttemptIndex+=1,runAgentAttempt({providerOverride,modelOverride,cfg,sessionEntry,sessionId,sessionKey,sessionAgentId,sessionFile,workspaceDir,body,isFallbackRetry,resolvedThinkLevel,timeoutMs,runId,opts,runContext,spawnedBy,messageChannel,skillsSnapshot,resolvedVerboseLevel,agentDir,primaryProvider:provider,onAgentEvent:evt=>{evt.stream===`lifecycle`&&typeof evt.data?.phase==`string`&&(evt.data.phase===`end`||evt.data.phase===`error`)&&(lifecycleEnded=!0)}})}});result=fallbackResult.result,fallbackProvider=fallbackResult.provider,fallbackModel=fallbackResult.model,lifecycleEnded||emitAgentEvent({runId,stream:`lifecycle`,data:{phase:`end`,startedAt,endedAt:Date.now(),aborted:result.meta.aborted??!1}})}catch(err){throw lifecycleEnded||emitAgentEvent({runId,stream:`lifecycle`,data:{phase:`error`,startedAt,endedAt:Date.now(),error:String(err)}}),err}sessionStore&&sessionKey&&await updateSessionStoreAfterAgentRun({cfg,contextTokensOverride:agentCfg?.contextTokens,sessionId,sessionKey,storePath,sessionStore,defaultProvider:provider,defaultModel:model,fallbackProvider,fallbackModel,result});let payloads=result.payloads??[];return await deliverAgentCommandResult({cfg,deps,runtime,opts,sessionEntry,result,payloads})}finally{clearAgentRunContext(runId)}}export{resolveAgentOutboundTarget as i,resolveSessionKeyForRequest as n,resolveAgentDeliveryPlan as r,agentCommand as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{B as formatXHighModelHint,G as normalizeThinkLevel,Y as supportsXHighThinking,q as normalizeVerboseLevel,z as formatThinkingLevels}from"./embedded-helpers-2fP2Yq8h.js";import{D as AGENT_LANE_NESTED,Ht as getRemoteSkillEligibility,O as AGENT_LANE_SUBAGENT,Sr as registerAgentRunContext,Ti as resolveAgentTimeoutMs,U as resolveOutboundTarget,W as resolveSessionDeliveryTarget,a as getCliSessionId,ci as applyModelOverrideToSessionEntry,f as resolveSendPolicy,li as applyVerboseOverride,m as runEmbeddedAgent,ni as lookupContextTokens,o as setCliSessionId,ri as clearSessionAuthProfileOverride,s as runCliAgent,vr as clearAgentRunContext,yr as emitAgentEvent,zr as runWithModelFallback}from"./reply-D9wUWhMx.js";import{d as normalizeAgentId,f as normalizeMainKey,p as resolveAgentIdFromSessionKey}from"./session-key-EoB0qaG9.js";import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import{r as DEFAULT_CHAT_CHANNEL}from"./registry-TdK-aV05.js";import{c as resolveAgentWorkspaceDir,d as resolveSessionAgentId,i as resolveAgentDir,n as listAgentIds,o as resolveAgentModelPrimary,s as resolveAgentSkillsFilter,u as resolveEffectiveModelFallbacks,w as ensureAgentWorkspace}from"./agent-scope-DPtjOxzp.js";import{b as resolveThinkingDefault,bn as DEFAULT_PROVIDER,c as normalizeModelRef,in as ensureAuthProfileStore,m as resolveConfiguredModelRef,o as isCliProvider,s as modelKey,t as buildAllowedModelSet,vn as DEFAULT_CONTEXT_TOKENS,yn as DEFAULT_MODEL}from"./model-selection-Doyvd4lU.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{r as loadConfig}from"./io-BNtgT4VB.js";import{r as loadModelCatalog}from"./model-catalog-BoiWqBTw.js";import{r as buildWorkspaceSkillSnapshot}from"./skills-Ba4ftrB-.js";import{A as evaluateSessionFreshness,M as resolveSessionResetPolicy,N as resolveSessionResetType,a as loadSessionStore,j as resolveChannelResetConfig,k as resolveSessionKey,u as updateSessionStore,y as normalizeAccountId,z as resolveExplicitAgentSessionKey}from"./sessions-BPr0-lkT.js";import{a as isInternalMessageChannel,d as resolveMessageChannel,i as isGatewayMessageChannel,l as normalizeMessageChannel,n as isDeliverableMessageChannel,t as INTERNAL_MESSAGE_CHANNEL}from"./message-channel-D_jXxXQj.js";import{r as normalizeChannelId,t as getChannelPlugin}from"./plugins-D5zP6ENo.js";import{c as resolveStorePath,n as resolveSessionFilePath}from"./paths-DJ6rztqJ.js";import{i as normalizeOutboundPayloadsForJson,n as formatOutboundPayloadLog,r as normalizeOutboundPayloads,t as deliverOutboundPayloads}from"./deliver-BiGCWHvZ.js";import{i as getSkillsSnapshotVersion}from"./refresh-TiC_kLgE.js";import{c as hasNonzeroUsage,s as deriveSessionTotalTokens}from"./session-cost-usage-BjH7mxVj.js";import{t as createDefaultDeps}from"./deps-CGiO_NDu.js";import{t as createOutboundSendDeps}from"./outbound-send-deps-CmJnMKI7.js";import crypto from"node:crypto";function resolveAgentDeliveryPlan(params){let requestedRaw=typeof params.requestedChannel==`string`?params.requestedChannel.trim():``,requestedChannel=(requestedRaw?normalizeMessageChannel(requestedRaw):void 0)||`last`,explicitTo=typeof params.explicitTo==`string`&¶ms.explicitTo.trim()?params.explicitTo.trim():void 0,baseDelivery=resolveSessionDeliveryTarget({entry:params.sessionEntry,requestedChannel:requestedChannel===INTERNAL_MESSAGE_CHANNEL?`last`:requestedChannel,explicitTo,explicitThreadId:params.explicitThreadId}),resolvedChannel=requestedChannel===INTERNAL_MESSAGE_CHANNEL?INTERNAL_MESSAGE_CHANNEL:requestedChannel===`last`?baseDelivery.channel&&baseDelivery.channel!==INTERNAL_MESSAGE_CHANNEL?baseDelivery.channel:params.wantsDelivery?DEFAULT_CHAT_CHANNEL:INTERNAL_MESSAGE_CHANNEL:isGatewayMessageChannel(requestedChannel)?requestedChannel:baseDelivery.channel&&baseDelivery.channel!==INTERNAL_MESSAGE_CHANNEL?baseDelivery.channel:params.wantsDelivery?DEFAULT_CHAT_CHANNEL:INTERNAL_MESSAGE_CHANNEL,deliveryTargetMode=explicitTo?`explicit`:isDeliverableMessageChannel(resolvedChannel)?`implicit`:void 0,resolvedAccountId=normalizeAccountId(params.accountId)??(deliveryTargetMode===`implicit`?baseDelivery.accountId:void 0),resolvedTo=explicitTo;return!resolvedTo&&isDeliverableMessageChannel(resolvedChannel)&&resolvedChannel===baseDelivery.lastChannel&&(resolvedTo=baseDelivery.lastTo),{baseDelivery,resolvedChannel,resolvedTo,resolvedAccountId,resolvedThreadId:baseDelivery.threadId,deliveryTargetMode}}function resolveAgentOutboundTarget(params){let targetMode=params.targetMode??params.plan.deliveryTargetMode??(params.plan.resolvedTo?`explicit`:`implicit`);if(!isDeliverableMessageChannel(params.plan.resolvedChannel)||params.validateExplicitTarget!==!0&¶ms.plan.resolvedTo)return{resolvedTarget:null,resolvedTo:params.plan.resolvedTo,targetMode};let resolvedTarget=resolveOutboundTarget({channel:params.plan.resolvedChannel,to:params.plan.resolvedTo,cfg:params.cfg,accountId:params.plan.resolvedAccountId,mode:targetMode});return{resolvedTarget,resolvedTo:resolvedTarget.ok?resolvedTarget.to:params.plan.resolvedTo,targetMode}}const isOutboundPayloadJson=payload=>`mediaUrl`in payload;function buildOutboundResultEnvelope(params){let hasPayloads=params.payloads!==void 0,payloads=params.payloads===void 0?void 0:params.payloads.length===0?[]:isOutboundPayloadJson(params.payloads[0])?params.payloads:normalizeOutboundPayloadsForJson(params.payloads);return params.flattenDelivery!==!1&¶ms.delivery&&!params.meta&&!hasPayloads?params.delivery:{...hasPayloads?{payloads}:{},...params.meta?{meta:params.meta}:{},...params.delivery?{delivery:params.delivery}:{}}}function formatNestedLogPrefix(opts){let parts=[`[agent:nested]`],session=opts.sessionKey??opts.sessionId;session&&parts.push(`session=${session}`),opts.runId&&parts.push(`run=${opts.runId}`);let channel=opts.messageChannel??opts.channel;return channel&&parts.push(`channel=${channel}`),opts.to&&parts.push(`to=${opts.to}`),opts.accountId&&parts.push(`account=${opts.accountId}`),parts.join(` `)}function logNestedOutput(runtime,opts,output){let prefix=formatNestedLogPrefix(opts);for(let line of output.split(/\r?\n/))line&&runtime.log(`${prefix} ${line}`)}async function deliverAgentCommandResult(params){let{cfg,deps,runtime,opts,sessionEntry,payloads,result}=params,deliver=opts.deliver===!0,bestEffortDeliver=opts.bestEffortDeliver===!0,deliveryPlan=resolveAgentDeliveryPlan({sessionEntry,requestedChannel:opts.replyChannel??opts.channel,explicitTo:opts.replyTo??opts.to,explicitThreadId:opts.threadId,accountId:opts.replyAccountId??opts.accountId,wantsDelivery:deliver}),deliveryChannel=deliveryPlan.resolvedChannel,deliveryPlugin=isInternalMessageChannel(deliveryChannel)?void 0:getChannelPlugin(normalizeChannelId(deliveryChannel)??deliveryChannel),isDeliveryChannelKnown=isInternalMessageChannel(deliveryChannel)||!!deliveryPlugin,targetMode=opts.deliveryTargetMode??deliveryPlan.deliveryTargetMode??(opts.to?`explicit`:`implicit`),resolvedAccountId=deliveryPlan.resolvedAccountId,resolved=deliver&&isDeliveryChannelKnown&&deliveryChannel?resolveAgentOutboundTarget({cfg,plan:deliveryPlan,targetMode,validateExplicitTarget:!0}):{resolvedTarget:null,resolvedTo:deliveryPlan.resolvedTo,targetMode},resolvedTarget=resolved.resolvedTarget,deliveryTarget=resolved.resolvedTo,resolvedThreadId=deliveryPlan.resolvedThreadId??opts.threadId,resolvedReplyToId=deliveryChannel===`slack`&&resolvedThreadId!=null?String(resolvedThreadId):void 0,resolvedThreadTarget=deliveryChannel===`slack`?void 0:resolvedThreadId,logDeliveryError=err=>{let message=`Delivery failed (${deliveryChannel}${deliveryTarget?` to ${deliveryTarget}`:``}): ${String(err)}`;runtime.error?.(message),runtime.error||runtime.log(message)};if(deliver){if(!isDeliveryChannelKnown){let err=Error(`Unknown channel: ${deliveryChannel}`);if(!bestEffortDeliver)throw err;logDeliveryError(err)}else if(resolvedTarget&&!resolvedTarget.ok){if(!bestEffortDeliver)throw resolvedTarget.error;logDeliveryError(resolvedTarget.error)}}let normalizedPayloads=normalizeOutboundPayloadsForJson(payloads??[]);if(opts.json&&(runtime.log(JSON.stringify(buildOutboundResultEnvelope({payloads:normalizedPayloads,meta:result.meta}),null,2)),!deliver))return{payloads:normalizedPayloads,meta:result.meta};if(!payloads||payloads.length===0)return runtime.log(`No reply from agent.`),{payloads:[],meta:result.meta};let deliveryPayloads=normalizeOutboundPayloads(payloads),logPayload=payload=>{if(opts.json)return;let output=formatOutboundPayloadLog(payload);if(output){if(opts.lane===AGENT_LANE_NESTED){logNestedOutput(runtime,opts,output);return}runtime.log(output)}};if(!deliver)for(let payload of deliveryPayloads)logPayload(payload);return deliver&&deliveryChannel&&!isInternalMessageChannel(deliveryChannel)&&deliveryTarget&&await deliverOutboundPayloads({cfg,channel:deliveryChannel,to:deliveryTarget,accountId:resolvedAccountId,payloads:deliveryPayloads,agentId:opts.agentId??(opts.sessionKey?resolveSessionAgentId({sessionKey:opts.sessionKey,config:cfg}):void 0),replyToId:resolvedReplyToId??null,threadId:resolvedThreadTarget??null,bestEffort:bestEffortDeliver,onError:err=>logDeliveryError(err),onPayload:logPayload,deps:createOutboundSendDeps(deps)}),{payloads:normalizedPayloads,meta:result.meta}}function resolveAgentRunContext(opts){let merged=opts.runContext?{...opts.runContext}:{},normalizedChannel=resolveMessageChannel(merged.messageChannel??opts.messageChannel,opts.replyChannel??opts.channel);normalizedChannel&&(merged.messageChannel=normalizedChannel);let normalizedAccountId=normalizeAccountId(merged.accountId??opts.accountId);normalizedAccountId&&(merged.accountId=normalizedAccountId);let groupId=(merged.groupId??opts.groupId)?.toString().trim();groupId&&(merged.groupId=groupId);let groupChannel=(merged.groupChannel??opts.groupChannel)?.toString().trim();groupChannel&&(merged.groupChannel=groupChannel);let groupSpace=(merged.groupSpace??opts.groupSpace)?.toString().trim();if(groupSpace&&(merged.groupSpace=groupSpace),merged.currentThreadTs==null&&opts.threadId!=null&&opts.threadId!==``&&opts.threadId!==null&&(merged.currentThreadTs=String(opts.threadId)),!merged.currentChannelId&&opts.to){let trimmedTo=opts.to.trim();trimmedTo&&(merged.currentChannelId=trimmedTo)}return merged}async function updateSessionStoreAfterAgentRun(params){let{cfg,sessionId,sessionKey,storePath,sessionStore,defaultProvider,defaultModel,fallbackProvider,fallbackModel,result}=params,usage=result.meta.agentMeta?.usage,promptTokens=result.meta.agentMeta?.promptTokens,compactionsThisRun=Math.max(0,result.meta.agentMeta?.compactionCount??0),modelUsed=result.meta.agentMeta?.model??fallbackModel??defaultModel,providerUsed=result.meta.agentMeta?.provider??fallbackProvider??defaultProvider,contextTokens=params.contextTokensOverride??lookupContextTokens(modelUsed)??DEFAULT_CONTEXT_TOKENS,entry=sessionStore[sessionKey]??{sessionId,updatedAt:Date.now()},next={...entry,sessionId,updatedAt:Date.now(),modelProvider:providerUsed,model:modelUsed,contextTokens};if(isCliProvider(providerUsed,cfg)){let cliSessionId=result.meta.agentMeta?.sessionId?.trim();cliSessionId&&setCliSessionId(next,providerUsed,cliSessionId)}if(next.abortedLastRun=result.meta.aborted??!1,hasNonzeroUsage(usage)){let input=usage.input??0,output=usage.output??0,totalTokens=deriveSessionTotalTokens({usage,contextTokens,promptTokens})??input;next.inputTokens=input,next.outputTokens=output,next.totalTokens=totalTokens,next.totalTokensFresh=!0}compactionsThisRun>0&&(next.compactionCount=(entry.compactionCount??0)+compactionsThisRun),sessionStore[sessionKey]=next,await updateSessionStore(storePath,store=>{store[sessionKey]=next})}function resolveSessionKeyForRequest(opts){let sessionCfg=opts.cfg.session,scope=sessionCfg?.scope??`per-sender`,mainKey=normalizeMainKey(sessionCfg?.mainKey),explicitSessionKey=opts.sessionKey?.trim()||resolveExplicitAgentSessionKey({cfg:opts.cfg,agentId:opts.agentId}),storeAgentId=resolveAgentIdFromSessionKey(explicitSessionKey),storePath=resolveStorePath(sessionCfg?.store,{agentId:storeAgentId}),sessionStore=loadSessionStore(storePath),ctx=opts.to?.trim()?{From:opts.to}:void 0,sessionKey=explicitSessionKey??(ctx?resolveSessionKey(scope,ctx,mainKey):void 0);if(!explicitSessionKey&&opts.sessionId&&(!sessionKey||sessionStore[sessionKey]?.sessionId!==opts.sessionId)){let foundKey=Object.keys(sessionStore).find(key=>sessionStore[key]?.sessionId===opts.sessionId);foundKey&&(sessionKey=foundKey)}if(opts.sessionId&&!explicitSessionKey&&(!sessionKey||sessionStore[sessionKey]?.sessionId!==opts.sessionId)){let allAgentIds=listAgentIds(opts.cfg);for(let agentId of allAgentIds){if(agentId===storeAgentId)continue;let altStorePath=resolveStorePath(sessionCfg?.store,{agentId}),altStore=loadSessionStore(altStorePath),foundKey=Object.keys(altStore).find(key=>altStore[key]?.sessionId===opts.sessionId);if(foundKey)return{sessionKey:foundKey,sessionStore:altStore,storePath:altStorePath}}}return{sessionKey,sessionStore,storePath}}function resolveSession(opts){let sessionCfg=opts.cfg.session,{sessionKey,sessionStore,storePath}=resolveSessionKeyForRequest({cfg:opts.cfg,to:opts.to,sessionId:opts.sessionId,sessionKey:opts.sessionKey,agentId:opts.agentId}),now=Date.now(),sessionEntry=sessionKey?sessionStore[sessionKey]:void 0,resetPolicy=resolveSessionResetPolicy({sessionCfg,resetType:resolveSessionResetType({sessionKey}),resetOverride:resolveChannelResetConfig({sessionCfg,channel:sessionEntry?.lastChannel??sessionEntry?.channel})}),fresh=sessionEntry?evaluateSessionFreshness({updatedAt:sessionEntry.updatedAt,now,policy:resetPolicy}).fresh:!1;return{sessionId:opts.sessionId?.trim()||(fresh?sessionEntry?.sessionId:void 0)||crypto.randomUUID(),sessionKey,sessionEntry,sessionStore,storePath,isNewSession:!fresh&&!opts.sessionId,persistedThinking:fresh&&sessionEntry?.thinkingLevel?normalizeThinkLevel(sessionEntry.thinkingLevel):void 0,persistedVerbose:fresh&&sessionEntry?.verboseLevel?normalizeVerboseLevel(sessionEntry.verboseLevel):void 0}}async function persistSessionEntry(params){params.sessionStore[params.sessionKey]=params.entry,await updateSessionStore(params.storePath,store=>{store[params.sessionKey]=params.entry})}function resolveFallbackRetryPrompt(params){return params.isFallbackRetry?`Continue where you left off. The previous model attempt failed or timed out.`:params.body}function runAgentAttempt(params){let effectivePrompt=resolveFallbackRetryPrompt({body:params.body,isFallbackRetry:params.isFallbackRetry});if(isCliProvider(params.providerOverride,params.cfg)){let cliSessionId=getCliSessionId(params.sessionEntry,params.providerOverride);return runCliAgent({sessionId:params.sessionId,sessionKey:params.sessionKey,agentId:params.sessionAgentId,sessionFile:params.sessionFile,workspaceDir:params.workspaceDir,config:params.cfg,prompt:effectivePrompt,provider:params.providerOverride,model:params.modelOverride,thinkLevel:params.resolvedThinkLevel,timeoutMs:params.timeoutMs,runId:params.runId,extraSystemPrompt:params.opts.extraSystemPrompt,cliSessionId,images:params.isFallbackRetry?void 0:params.opts.images,streamParams:params.opts.streamParams})}let authProfileId=params.providerOverride===params.primaryProvider?params.sessionEntry?.authProfileOverride:void 0;return runEmbeddedAgent({sessionId:params.sessionId,sessionKey:params.sessionKey,agentId:params.sessionAgentId,messageChannel:params.messageChannel,agentAccountId:params.runContext.accountId,messageTo:params.opts.replyTo??params.opts.to,messageThreadId:params.opts.threadId,groupId:params.runContext.groupId,groupChannel:params.runContext.groupChannel,groupSpace:params.runContext.groupSpace,spawnedBy:params.spawnedBy,currentChannelId:params.runContext.currentChannelId,currentThreadTs:params.runContext.currentThreadTs,replyToMode:params.runContext.replyToMode,hasRepliedRef:params.runContext.hasRepliedRef,senderIsOwner:!0,sessionFile:params.sessionFile,workspaceDir:params.workspaceDir,config:params.cfg,skillsSnapshot:params.skillsSnapshot,prompt:effectivePrompt,images:params.isFallbackRetry?void 0:params.opts.images,clientTools:params.opts.clientTools,provider:params.providerOverride,model:params.modelOverride,authProfileId,authProfileIdSource:authProfileId?params.sessionEntry?.authProfileOverrideSource:void 0,thinkLevel:params.resolvedThinkLevel,verboseLevel:params.resolvedVerboseLevel,timeoutMs:params.timeoutMs,runId:params.runId,lane:params.opts.lane,abortSignal:params.opts.abortSignal,extraSystemPrompt:params.opts.extraSystemPrompt,inputProvenance:params.opts.inputProvenance,streamParams:params.opts.streamParams,agentDir:params.agentDir,onAgentEvent:params.onAgentEvent})}async function agentCommand(opts,runtime=defaultRuntime,deps=createDefaultDeps()){let body=(opts.message??``).trim();if(!body)throw Error(`Message (--message) is required`);if(!opts.to&&!opts.sessionId&&!opts.sessionKey&&!opts.agentId)throw Error(`Pass --to <E.164>, --session-id, or --agent to choose a session`);let cfg=loadConfig(),agentIdOverrideRaw=opts.agentId?.trim(),agentIdOverride=agentIdOverrideRaw?normalizeAgentId(agentIdOverrideRaw):void 0;if(agentIdOverride&&!listAgentIds(cfg).includes(agentIdOverride))throw Error(`Unknown agent id "${agentIdOverrideRaw}". Use "${formatCliCommand(`builderforce agents list`)}" to see configured agents.`);if(agentIdOverride&&opts.sessionKey){let sessionAgentId=resolveAgentIdFromSessionKey(opts.sessionKey);if(sessionAgentId!==agentIdOverride)throw Error(`Agent id "${agentIdOverrideRaw}" does not match session key agent "${sessionAgentId}".`)}let agentCfg=cfg.agents?.defaults,sessionAgentId=agentIdOverride??resolveAgentIdFromSessionKey(opts.sessionKey?.trim()),workspaceDirRaw=resolveAgentWorkspaceDir(cfg,sessionAgentId),agentDir=resolveAgentDir(cfg,sessionAgentId),workspaceDir=(await ensureAgentWorkspace({dir:workspaceDirRaw,ensureBootstrapFiles:!agentCfg?.skipBootstrap})).dir,configuredModel=resolveConfiguredModelRef({cfg,defaultProvider:DEFAULT_PROVIDER,defaultModel:DEFAULT_MODEL}),thinkingLevelsHint=formatThinkingLevels(configuredModel.provider,configuredModel.model),thinkOverride=normalizeThinkLevel(opts.thinking),thinkOnce=normalizeThinkLevel(opts.thinkingOnce);if(opts.thinking&&!thinkOverride)throw Error(`Invalid thinking level. Use one of: ${thinkingLevelsHint}.`);if(opts.thinkingOnce&&!thinkOnce)throw Error(`Invalid one-shot thinking level. Use one of: ${thinkingLevelsHint}.`);let verboseOverride=normalizeVerboseLevel(opts.verbose);if(opts.verbose&&!verboseOverride)throw Error(`Invalid verbose level. Use "on", "full", or "off".`);let isSubagentLane=(typeof opts.lane==`string`?opts.lane.trim():``)===String(AGENT_LANE_SUBAGENT),timeoutSecondsRaw=opts.timeout===void 0?isSubagentLane?0:void 0:Number.parseInt(String(opts.timeout),10);if(timeoutSecondsRaw!==void 0&&(Number.isNaN(timeoutSecondsRaw)||timeoutSecondsRaw<0))throw Error(`--timeout must be a non-negative integer (seconds; 0 means no timeout)`);let timeoutMs=resolveAgentTimeoutMs({cfg,overrideSeconds:timeoutSecondsRaw}),{sessionId,sessionKey,sessionEntry:resolvedSessionEntry,sessionStore,storePath,isNewSession,persistedThinking,persistedVerbose}=resolveSession({cfg,to:opts.to,sessionId:opts.sessionId,sessionKey:opts.sessionKey,agentId:agentIdOverride}),sessionEntry=resolvedSessionEntry,runId=opts.runId?.trim()||sessionId;try{if(opts.deliver===!0&&resolveSendPolicy({cfg,entry:sessionEntry,sessionKey,channel:sessionEntry?.channel,chatType:sessionEntry?.chatType})===`deny`)throw Error(`send blocked by session policy`);let resolvedThinkLevel=thinkOnce??thinkOverride??persistedThinking??agentCfg?.thinkingDefault,resolvedVerboseLevel=verboseOverride??persistedVerbose??agentCfg?.verboseDefault??`on`;sessionKey&®isterAgentRunContext(runId,{sessionKey,verboseLevel:resolvedVerboseLevel});let needsSkillsSnapshot=isNewSession||!sessionEntry?.skillsSnapshot,skillsSnapshotVersion=getSkillsSnapshotVersion(workspaceDir),skillFilter=resolveAgentSkillsFilter(cfg,sessionAgentId),skillsSnapshot=needsSkillsSnapshot?buildWorkspaceSkillSnapshot(workspaceDir,{config:cfg,eligibility:{remote:getRemoteSkillEligibility()},snapshotVersion:skillsSnapshotVersion,skillFilter}):sessionEntry?.skillsSnapshot;if(skillsSnapshot&&sessionStore&&sessionKey&&needsSkillsSnapshot){let next={...sessionEntry??{sessionId,updatedAt:Date.now()},sessionId,updatedAt:Date.now(),skillsSnapshot};await persistSessionEntry({sessionStore,sessionKey,storePath,entry:next}),sessionEntry=next}if(sessionStore&&sessionKey){let next={...sessionStore[sessionKey]??sessionEntry??{sessionId,updatedAt:Date.now()},sessionId,updatedAt:Date.now()};thinkOverride&&(next.thinkingLevel=thinkOverride),applyVerboseOverride(next,verboseOverride),await persistSessionEntry({sessionStore,sessionKey,storePath,entry:next})}let agentModelPrimary=resolveAgentModelPrimary(cfg,sessionAgentId),configuredDefaultRef=resolveConfiguredModelRef({cfg:agentModelPrimary?{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,model:{...typeof cfg.agents?.defaults?.model==`object`?cfg.agents.defaults.model:void 0,primary:agentModelPrimary}}}}:cfg,defaultProvider:DEFAULT_PROVIDER,defaultModel:DEFAULT_MODEL}),{provider:defaultProvider,model:defaultModel}=normalizeModelRef(configuredDefaultRef.provider,configuredDefaultRef.model),provider=defaultProvider,model=defaultModel,hasAllowlist=agentCfg?.models&&Object.keys(agentCfg.models).length>0,hasStoredOverride=!!(sessionEntry?.modelOverride||sessionEntry?.providerOverride),needsModelCatalog=hasAllowlist||hasStoredOverride,allowedModelKeys=new Set,allowedModelCatalog=[],modelCatalog=null;if(needsModelCatalog){modelCatalog=await loadModelCatalog({config:cfg});let allowed=buildAllowedModelSet({cfg,catalog:modelCatalog,defaultProvider,defaultModel});allowedModelKeys=allowed.allowedKeys,allowedModelCatalog=allowed.allowedCatalog}if(sessionEntry&&sessionStore&&sessionKey&&hasStoredOverride){let entry=sessionEntry,overrideProvider=sessionEntry.providerOverride?.trim()||defaultProvider,overrideModel=sessionEntry.modelOverride?.trim();if(overrideModel){let normalizedOverride=normalizeModelRef(overrideProvider,overrideModel),key=modelKey(normalizedOverride.provider,normalizedOverride.model);if(!isCliProvider(normalizedOverride.provider,cfg)&&allowedModelKeys.size>0&&!allowedModelKeys.has(key)){let{updated}=applyModelOverrideToSessionEntry({entry,selection:{provider:defaultProvider,model:defaultModel,isDefault:!0}});updated&&await persistSessionEntry({sessionStore,sessionKey,storePath,entry})}}}let storedProviderOverride=sessionEntry?.providerOverride?.trim(),storedModelOverride=sessionEntry?.modelOverride?.trim();if(storedModelOverride){let normalizedStored=normalizeModelRef(storedProviderOverride||defaultProvider,storedModelOverride),key=modelKey(normalizedStored.provider,normalizedStored.model);(isCliProvider(normalizedStored.provider,cfg)||allowedModelKeys.size===0||allowedModelKeys.has(key))&&(provider=normalizedStored.provider,model=normalizedStored.model)}if(sessionEntry){let authProfileId=sessionEntry.authProfileOverride;if(authProfileId){let entry=sessionEntry,profile=(await ensureAuthProfileStore()).profiles[authProfileId];(!profile||profile.provider!==provider)&&sessionStore&&sessionKey&&await clearSessionAuthProfileOverride({sessionEntry:entry,sessionStore,sessionKey,storePath})}}if(!resolvedThinkLevel){let catalogForThinking=modelCatalog??allowedModelCatalog;(!catalogForThinking||catalogForThinking.length===0)&&(modelCatalog=await loadModelCatalog({config:cfg}),catalogForThinking=modelCatalog),resolvedThinkLevel=resolveThinkingDefault({cfg,provider,model,catalog:catalogForThinking})}if(resolvedThinkLevel===`xhigh`&&!supportsXHighThinking(provider,model)){if(thinkOnce||thinkOverride)throw Error(`Thinking level "xhigh" is only supported for ${formatXHighModelHint()}.`);if(resolvedThinkLevel=`high`,sessionEntry&&sessionStore&&sessionKey&&sessionEntry.thinkingLevel===`xhigh`){let entry=sessionEntry;entry.thinkingLevel=`high`,entry.updatedAt=Date.now(),await persistSessionEntry({sessionStore,sessionKey,storePath,entry})}}let sessionFile=resolveSessionFilePath(sessionId,sessionEntry,{agentId:sessionAgentId}),startedAt=Date.now(),lifecycleEnded=!1,result,fallbackProvider=provider,fallbackModel=model;try{let runContext=resolveAgentRunContext(opts),messageChannel=resolveMessageChannel(runContext.messageChannel,opts.replyChannel??opts.channel),spawnedBy=opts.spawnedBy??sessionEntry?.spawnedBy,effectiveFallbacksOverride=resolveEffectiveModelFallbacks({cfg,agentId:sessionAgentId,hasSessionModelOverride:!!storedModelOverride}),fallbackAttemptIndex=0,fallbackResult=await runWithModelFallback({cfg,provider,model,agentDir,fallbacksOverride:effectiveFallbacksOverride,run:(providerOverride,modelOverride)=>{let isFallbackRetry=fallbackAttemptIndex>0;return fallbackAttemptIndex+=1,runAgentAttempt({providerOverride,modelOverride,cfg,sessionEntry,sessionId,sessionKey,sessionAgentId,sessionFile,workspaceDir,body,isFallbackRetry,resolvedThinkLevel,timeoutMs,runId,opts,runContext,spawnedBy,messageChannel,skillsSnapshot,resolvedVerboseLevel,agentDir,primaryProvider:provider,onAgentEvent:evt=>{evt.stream===`lifecycle`&&typeof evt.data?.phase==`string`&&(evt.data.phase===`end`||evt.data.phase===`error`)&&(lifecycleEnded=!0)}})}});result=fallbackResult.result,fallbackProvider=fallbackResult.provider,fallbackModel=fallbackResult.model,lifecycleEnded||emitAgentEvent({runId,stream:`lifecycle`,data:{phase:`end`,startedAt,endedAt:Date.now(),aborted:result.meta.aborted??!1}})}catch(err){throw lifecycleEnded||emitAgentEvent({runId,stream:`lifecycle`,data:{phase:`error`,startedAt,endedAt:Date.now(),error:String(err)}}),err}sessionStore&&sessionKey&&await updateSessionStoreAfterAgentRun({cfg,contextTokensOverride:agentCfg?.contextTokens,sessionId,sessionKey,storePath,sessionStore,defaultProvider:provider,defaultModel:model,fallbackProvider,fallbackModel,result});let payloads=result.payloads??[];return await deliverAgentCommandResult({cfg,deps,runtime,opts,sessionEntry,result,payloads})}finally{clearAgentRunContext(runId)}}export{resolveAgentOutboundTarget as i,resolveSessionKeyForRequest as n,resolveAgentDeliveryPlan as r,agentCommand as t};
|
|
1
|
+
import{B as formatXHighModelHint,G as normalizeThinkLevel,Y as supportsXHighThinking,q as normalizeVerboseLevel,z as formatThinkingLevels}from"./embedded-helpers-2fP2Yq8h.js";import{D as AGENT_LANE_NESTED,Ht as getRemoteSkillEligibility,O as AGENT_LANE_SUBAGENT,Sr as registerAgentRunContext,Ti as resolveAgentTimeoutMs,U as resolveOutboundTarget,W as resolveSessionDeliveryTarget,a as getCliSessionId,ci as applyModelOverrideToSessionEntry,f as resolveSendPolicy,li as applyVerboseOverride,m as runEmbeddedAgent,ni as lookupContextTokens,o as setCliSessionId,ri as clearSessionAuthProfileOverride,s as runCliAgent,vr as clearAgentRunContext,yr as emitAgentEvent,zr as runWithModelFallback}from"./reply-BuUSdq2L.js";import{d as normalizeAgentId,f as normalizeMainKey,p as resolveAgentIdFromSessionKey}from"./session-key-EoB0qaG9.js";import{i as defaultRuntime}from"./subsystem-B3TqcCrZ.js";import{r as DEFAULT_CHAT_CHANNEL}from"./registry-TdK-aV05.js";import{c as resolveAgentWorkspaceDir,d as resolveSessionAgentId,i as resolveAgentDir,n as listAgentIds,o as resolveAgentModelPrimary,s as resolveAgentSkillsFilter,u as resolveEffectiveModelFallbacks,w as ensureAgentWorkspace}from"./agent-scope-DPtjOxzp.js";import{b as resolveThinkingDefault,bn as DEFAULT_PROVIDER,c as normalizeModelRef,in as ensureAuthProfileStore,m as resolveConfiguredModelRef,o as isCliProvider,s as modelKey,t as buildAllowedModelSet,vn as DEFAULT_CONTEXT_TOKENS,yn as DEFAULT_MODEL}from"./model-selection-Doyvd4lU.js";import{t as formatCliCommand}from"./command-format-D806O2pt.js";import{r as loadConfig}from"./io-BNtgT4VB.js";import{r as loadModelCatalog}from"./model-catalog-BoiWqBTw.js";import{r as buildWorkspaceSkillSnapshot}from"./skills-Ba4ftrB-.js";import{A as evaluateSessionFreshness,M as resolveSessionResetPolicy,N as resolveSessionResetType,a as loadSessionStore,j as resolveChannelResetConfig,k as resolveSessionKey,u as updateSessionStore,y as normalizeAccountId,z as resolveExplicitAgentSessionKey}from"./sessions-BPr0-lkT.js";import{a as isInternalMessageChannel,d as resolveMessageChannel,i as isGatewayMessageChannel,l as normalizeMessageChannel,n as isDeliverableMessageChannel,t as INTERNAL_MESSAGE_CHANNEL}from"./message-channel-D_jXxXQj.js";import{r as normalizeChannelId,t as getChannelPlugin}from"./plugins-D5zP6ENo.js";import{c as resolveStorePath,n as resolveSessionFilePath}from"./paths-DJ6rztqJ.js";import{i as normalizeOutboundPayloadsForJson,n as formatOutboundPayloadLog,r as normalizeOutboundPayloads,t as deliverOutboundPayloads}from"./deliver-BiGCWHvZ.js";import{i as getSkillsSnapshotVersion}from"./refresh-TiC_kLgE.js";import{c as hasNonzeroUsage,s as deriveSessionTotalTokens}from"./session-cost-usage-BjH7mxVj.js";import{t as createDefaultDeps}from"./deps-CrAVOWsA.js";import{t as createOutboundSendDeps}from"./outbound-send-deps-CmJnMKI7.js";import crypto from"node:crypto";function resolveAgentDeliveryPlan(params){let requestedRaw=typeof params.requestedChannel==`string`?params.requestedChannel.trim():``,requestedChannel=(requestedRaw?normalizeMessageChannel(requestedRaw):void 0)||`last`,explicitTo=typeof params.explicitTo==`string`&¶ms.explicitTo.trim()?params.explicitTo.trim():void 0,baseDelivery=resolveSessionDeliveryTarget({entry:params.sessionEntry,requestedChannel:requestedChannel===INTERNAL_MESSAGE_CHANNEL?`last`:requestedChannel,explicitTo,explicitThreadId:params.explicitThreadId}),resolvedChannel=requestedChannel===INTERNAL_MESSAGE_CHANNEL?INTERNAL_MESSAGE_CHANNEL:requestedChannel===`last`?baseDelivery.channel&&baseDelivery.channel!==INTERNAL_MESSAGE_CHANNEL?baseDelivery.channel:params.wantsDelivery?DEFAULT_CHAT_CHANNEL:INTERNAL_MESSAGE_CHANNEL:isGatewayMessageChannel(requestedChannel)?requestedChannel:baseDelivery.channel&&baseDelivery.channel!==INTERNAL_MESSAGE_CHANNEL?baseDelivery.channel:params.wantsDelivery?DEFAULT_CHAT_CHANNEL:INTERNAL_MESSAGE_CHANNEL,deliveryTargetMode=explicitTo?`explicit`:isDeliverableMessageChannel(resolvedChannel)?`implicit`:void 0,resolvedAccountId=normalizeAccountId(params.accountId)??(deliveryTargetMode===`implicit`?baseDelivery.accountId:void 0),resolvedTo=explicitTo;return!resolvedTo&&isDeliverableMessageChannel(resolvedChannel)&&resolvedChannel===baseDelivery.lastChannel&&(resolvedTo=baseDelivery.lastTo),{baseDelivery,resolvedChannel,resolvedTo,resolvedAccountId,resolvedThreadId:baseDelivery.threadId,deliveryTargetMode}}function resolveAgentOutboundTarget(params){let targetMode=params.targetMode??params.plan.deliveryTargetMode??(params.plan.resolvedTo?`explicit`:`implicit`);if(!isDeliverableMessageChannel(params.plan.resolvedChannel)||params.validateExplicitTarget!==!0&¶ms.plan.resolvedTo)return{resolvedTarget:null,resolvedTo:params.plan.resolvedTo,targetMode};let resolvedTarget=resolveOutboundTarget({channel:params.plan.resolvedChannel,to:params.plan.resolvedTo,cfg:params.cfg,accountId:params.plan.resolvedAccountId,mode:targetMode});return{resolvedTarget,resolvedTo:resolvedTarget.ok?resolvedTarget.to:params.plan.resolvedTo,targetMode}}const isOutboundPayloadJson=payload=>`mediaUrl`in payload;function buildOutboundResultEnvelope(params){let hasPayloads=params.payloads!==void 0,payloads=params.payloads===void 0?void 0:params.payloads.length===0?[]:isOutboundPayloadJson(params.payloads[0])?params.payloads:normalizeOutboundPayloadsForJson(params.payloads);return params.flattenDelivery!==!1&¶ms.delivery&&!params.meta&&!hasPayloads?params.delivery:{...hasPayloads?{payloads}:{},...params.meta?{meta:params.meta}:{},...params.delivery?{delivery:params.delivery}:{}}}function formatNestedLogPrefix(opts){let parts=[`[agent:nested]`],session=opts.sessionKey??opts.sessionId;session&&parts.push(`session=${session}`),opts.runId&&parts.push(`run=${opts.runId}`);let channel=opts.messageChannel??opts.channel;return channel&&parts.push(`channel=${channel}`),opts.to&&parts.push(`to=${opts.to}`),opts.accountId&&parts.push(`account=${opts.accountId}`),parts.join(` `)}function logNestedOutput(runtime,opts,output){let prefix=formatNestedLogPrefix(opts);for(let line of output.split(/\r?\n/))line&&runtime.log(`${prefix} ${line}`)}async function deliverAgentCommandResult(params){let{cfg,deps,runtime,opts,sessionEntry,payloads,result}=params,deliver=opts.deliver===!0,bestEffortDeliver=opts.bestEffortDeliver===!0,deliveryPlan=resolveAgentDeliveryPlan({sessionEntry,requestedChannel:opts.replyChannel??opts.channel,explicitTo:opts.replyTo??opts.to,explicitThreadId:opts.threadId,accountId:opts.replyAccountId??opts.accountId,wantsDelivery:deliver}),deliveryChannel=deliveryPlan.resolvedChannel,deliveryPlugin=isInternalMessageChannel(deliveryChannel)?void 0:getChannelPlugin(normalizeChannelId(deliveryChannel)??deliveryChannel),isDeliveryChannelKnown=isInternalMessageChannel(deliveryChannel)||!!deliveryPlugin,targetMode=opts.deliveryTargetMode??deliveryPlan.deliveryTargetMode??(opts.to?`explicit`:`implicit`),resolvedAccountId=deliveryPlan.resolvedAccountId,resolved=deliver&&isDeliveryChannelKnown&&deliveryChannel?resolveAgentOutboundTarget({cfg,plan:deliveryPlan,targetMode,validateExplicitTarget:!0}):{resolvedTarget:null,resolvedTo:deliveryPlan.resolvedTo,targetMode},resolvedTarget=resolved.resolvedTarget,deliveryTarget=resolved.resolvedTo,resolvedThreadId=deliveryPlan.resolvedThreadId??opts.threadId,resolvedReplyToId=deliveryChannel===`slack`&&resolvedThreadId!=null?String(resolvedThreadId):void 0,resolvedThreadTarget=deliveryChannel===`slack`?void 0:resolvedThreadId,logDeliveryError=err=>{let message=`Delivery failed (${deliveryChannel}${deliveryTarget?` to ${deliveryTarget}`:``}): ${String(err)}`;runtime.error?.(message),runtime.error||runtime.log(message)};if(deliver){if(!isDeliveryChannelKnown){let err=Error(`Unknown channel: ${deliveryChannel}`);if(!bestEffortDeliver)throw err;logDeliveryError(err)}else if(resolvedTarget&&!resolvedTarget.ok){if(!bestEffortDeliver)throw resolvedTarget.error;logDeliveryError(resolvedTarget.error)}}let normalizedPayloads=normalizeOutboundPayloadsForJson(payloads??[]);if(opts.json&&(runtime.log(JSON.stringify(buildOutboundResultEnvelope({payloads:normalizedPayloads,meta:result.meta}),null,2)),!deliver))return{payloads:normalizedPayloads,meta:result.meta};if(!payloads||payloads.length===0)return runtime.log(`No reply from agent.`),{payloads:[],meta:result.meta};let deliveryPayloads=normalizeOutboundPayloads(payloads),logPayload=payload=>{if(opts.json)return;let output=formatOutboundPayloadLog(payload);if(output){if(opts.lane===AGENT_LANE_NESTED){logNestedOutput(runtime,opts,output);return}runtime.log(output)}};if(!deliver)for(let payload of deliveryPayloads)logPayload(payload);return deliver&&deliveryChannel&&!isInternalMessageChannel(deliveryChannel)&&deliveryTarget&&await deliverOutboundPayloads({cfg,channel:deliveryChannel,to:deliveryTarget,accountId:resolvedAccountId,payloads:deliveryPayloads,agentId:opts.agentId??(opts.sessionKey?resolveSessionAgentId({sessionKey:opts.sessionKey,config:cfg}):void 0),replyToId:resolvedReplyToId??null,threadId:resolvedThreadTarget??null,bestEffort:bestEffortDeliver,onError:err=>logDeliveryError(err),onPayload:logPayload,deps:createOutboundSendDeps(deps)}),{payloads:normalizedPayloads,meta:result.meta}}function resolveAgentRunContext(opts){let merged=opts.runContext?{...opts.runContext}:{},normalizedChannel=resolveMessageChannel(merged.messageChannel??opts.messageChannel,opts.replyChannel??opts.channel);normalizedChannel&&(merged.messageChannel=normalizedChannel);let normalizedAccountId=normalizeAccountId(merged.accountId??opts.accountId);normalizedAccountId&&(merged.accountId=normalizedAccountId);let groupId=(merged.groupId??opts.groupId)?.toString().trim();groupId&&(merged.groupId=groupId);let groupChannel=(merged.groupChannel??opts.groupChannel)?.toString().trim();groupChannel&&(merged.groupChannel=groupChannel);let groupSpace=(merged.groupSpace??opts.groupSpace)?.toString().trim();if(groupSpace&&(merged.groupSpace=groupSpace),merged.currentThreadTs==null&&opts.threadId!=null&&opts.threadId!==``&&opts.threadId!==null&&(merged.currentThreadTs=String(opts.threadId)),!merged.currentChannelId&&opts.to){let trimmedTo=opts.to.trim();trimmedTo&&(merged.currentChannelId=trimmedTo)}return merged}async function updateSessionStoreAfterAgentRun(params){let{cfg,sessionId,sessionKey,storePath,sessionStore,defaultProvider,defaultModel,fallbackProvider,fallbackModel,result}=params,usage=result.meta.agentMeta?.usage,promptTokens=result.meta.agentMeta?.promptTokens,compactionsThisRun=Math.max(0,result.meta.agentMeta?.compactionCount??0),modelUsed=result.meta.agentMeta?.model??fallbackModel??defaultModel,providerUsed=result.meta.agentMeta?.provider??fallbackProvider??defaultProvider,contextTokens=params.contextTokensOverride??lookupContextTokens(modelUsed)??DEFAULT_CONTEXT_TOKENS,entry=sessionStore[sessionKey]??{sessionId,updatedAt:Date.now()},next={...entry,sessionId,updatedAt:Date.now(),modelProvider:providerUsed,model:modelUsed,contextTokens};if(isCliProvider(providerUsed,cfg)){let cliSessionId=result.meta.agentMeta?.sessionId?.trim();cliSessionId&&setCliSessionId(next,providerUsed,cliSessionId)}if(next.abortedLastRun=result.meta.aborted??!1,hasNonzeroUsage(usage)){let input=usage.input??0,output=usage.output??0,totalTokens=deriveSessionTotalTokens({usage,contextTokens,promptTokens})??input;next.inputTokens=input,next.outputTokens=output,next.totalTokens=totalTokens,next.totalTokensFresh=!0}compactionsThisRun>0&&(next.compactionCount=(entry.compactionCount??0)+compactionsThisRun),sessionStore[sessionKey]=next,await updateSessionStore(storePath,store=>{store[sessionKey]=next})}function resolveSessionKeyForRequest(opts){let sessionCfg=opts.cfg.session,scope=sessionCfg?.scope??`per-sender`,mainKey=normalizeMainKey(sessionCfg?.mainKey),explicitSessionKey=opts.sessionKey?.trim()||resolveExplicitAgentSessionKey({cfg:opts.cfg,agentId:opts.agentId}),storeAgentId=resolveAgentIdFromSessionKey(explicitSessionKey),storePath=resolveStorePath(sessionCfg?.store,{agentId:storeAgentId}),sessionStore=loadSessionStore(storePath),ctx=opts.to?.trim()?{From:opts.to}:void 0,sessionKey=explicitSessionKey??(ctx?resolveSessionKey(scope,ctx,mainKey):void 0);if(!explicitSessionKey&&opts.sessionId&&(!sessionKey||sessionStore[sessionKey]?.sessionId!==opts.sessionId)){let foundKey=Object.keys(sessionStore).find(key=>sessionStore[key]?.sessionId===opts.sessionId);foundKey&&(sessionKey=foundKey)}if(opts.sessionId&&!explicitSessionKey&&(!sessionKey||sessionStore[sessionKey]?.sessionId!==opts.sessionId)){let allAgentIds=listAgentIds(opts.cfg);for(let agentId of allAgentIds){if(agentId===storeAgentId)continue;let altStorePath=resolveStorePath(sessionCfg?.store,{agentId}),altStore=loadSessionStore(altStorePath),foundKey=Object.keys(altStore).find(key=>altStore[key]?.sessionId===opts.sessionId);if(foundKey)return{sessionKey:foundKey,sessionStore:altStore,storePath:altStorePath}}}return{sessionKey,sessionStore,storePath}}function resolveSession(opts){let sessionCfg=opts.cfg.session,{sessionKey,sessionStore,storePath}=resolveSessionKeyForRequest({cfg:opts.cfg,to:opts.to,sessionId:opts.sessionId,sessionKey:opts.sessionKey,agentId:opts.agentId}),now=Date.now(),sessionEntry=sessionKey?sessionStore[sessionKey]:void 0,resetPolicy=resolveSessionResetPolicy({sessionCfg,resetType:resolveSessionResetType({sessionKey}),resetOverride:resolveChannelResetConfig({sessionCfg,channel:sessionEntry?.lastChannel??sessionEntry?.channel})}),fresh=sessionEntry?evaluateSessionFreshness({updatedAt:sessionEntry.updatedAt,now,policy:resetPolicy}).fresh:!1;return{sessionId:opts.sessionId?.trim()||(fresh?sessionEntry?.sessionId:void 0)||crypto.randomUUID(),sessionKey,sessionEntry,sessionStore,storePath,isNewSession:!fresh&&!opts.sessionId,persistedThinking:fresh&&sessionEntry?.thinkingLevel?normalizeThinkLevel(sessionEntry.thinkingLevel):void 0,persistedVerbose:fresh&&sessionEntry?.verboseLevel?normalizeVerboseLevel(sessionEntry.verboseLevel):void 0}}async function persistSessionEntry(params){params.sessionStore[params.sessionKey]=params.entry,await updateSessionStore(params.storePath,store=>{store[params.sessionKey]=params.entry})}function resolveFallbackRetryPrompt(params){return params.isFallbackRetry?`Continue where you left off. The previous model attempt failed or timed out.`:params.body}function runAgentAttempt(params){let effectivePrompt=resolveFallbackRetryPrompt({body:params.body,isFallbackRetry:params.isFallbackRetry});if(isCliProvider(params.providerOverride,params.cfg)){let cliSessionId=getCliSessionId(params.sessionEntry,params.providerOverride);return runCliAgent({sessionId:params.sessionId,sessionKey:params.sessionKey,agentId:params.sessionAgentId,sessionFile:params.sessionFile,workspaceDir:params.workspaceDir,config:params.cfg,prompt:effectivePrompt,provider:params.providerOverride,model:params.modelOverride,thinkLevel:params.resolvedThinkLevel,timeoutMs:params.timeoutMs,runId:params.runId,extraSystemPrompt:params.opts.extraSystemPrompt,cliSessionId,images:params.isFallbackRetry?void 0:params.opts.images,streamParams:params.opts.streamParams})}let authProfileId=params.providerOverride===params.primaryProvider?params.sessionEntry?.authProfileOverride:void 0;return runEmbeddedAgent({sessionId:params.sessionId,sessionKey:params.sessionKey,agentId:params.sessionAgentId,messageChannel:params.messageChannel,agentAccountId:params.runContext.accountId,messageTo:params.opts.replyTo??params.opts.to,messageThreadId:params.opts.threadId,groupId:params.runContext.groupId,groupChannel:params.runContext.groupChannel,groupSpace:params.runContext.groupSpace,spawnedBy:params.spawnedBy,currentChannelId:params.runContext.currentChannelId,currentThreadTs:params.runContext.currentThreadTs,replyToMode:params.runContext.replyToMode,hasRepliedRef:params.runContext.hasRepliedRef,senderIsOwner:!0,sessionFile:params.sessionFile,workspaceDir:params.workspaceDir,config:params.cfg,skillsSnapshot:params.skillsSnapshot,prompt:effectivePrompt,images:params.isFallbackRetry?void 0:params.opts.images,clientTools:params.opts.clientTools,provider:params.providerOverride,model:params.modelOverride,authProfileId,authProfileIdSource:authProfileId?params.sessionEntry?.authProfileOverrideSource:void 0,thinkLevel:params.resolvedThinkLevel,verboseLevel:params.resolvedVerboseLevel,timeoutMs:params.timeoutMs,runId:params.runId,lane:params.opts.lane,abortSignal:params.opts.abortSignal,extraSystemPrompt:params.opts.extraSystemPrompt,inputProvenance:params.opts.inputProvenance,streamParams:params.opts.streamParams,agentDir:params.agentDir,onAgentEvent:params.onAgentEvent})}async function agentCommand(opts,runtime=defaultRuntime,deps=createDefaultDeps()){let body=(opts.message??``).trim();if(!body)throw Error(`Message (--message) is required`);if(!opts.to&&!opts.sessionId&&!opts.sessionKey&&!opts.agentId)throw Error(`Pass --to <E.164>, --session-id, or --agent to choose a session`);let cfg=loadConfig(),agentIdOverrideRaw=opts.agentId?.trim(),agentIdOverride=agentIdOverrideRaw?normalizeAgentId(agentIdOverrideRaw):void 0;if(agentIdOverride&&!listAgentIds(cfg).includes(agentIdOverride))throw Error(`Unknown agent id "${agentIdOverrideRaw}". Use "${formatCliCommand(`builderforce agents list`)}" to see configured agents.`);if(agentIdOverride&&opts.sessionKey){let sessionAgentId=resolveAgentIdFromSessionKey(opts.sessionKey);if(sessionAgentId!==agentIdOverride)throw Error(`Agent id "${agentIdOverrideRaw}" does not match session key agent "${sessionAgentId}".`)}let agentCfg=cfg.agents?.defaults,sessionAgentId=agentIdOverride??resolveAgentIdFromSessionKey(opts.sessionKey?.trim()),workspaceDirRaw=resolveAgentWorkspaceDir(cfg,sessionAgentId),agentDir=resolveAgentDir(cfg,sessionAgentId),workspaceDir=(await ensureAgentWorkspace({dir:workspaceDirRaw,ensureBootstrapFiles:!agentCfg?.skipBootstrap})).dir,configuredModel=resolveConfiguredModelRef({cfg,defaultProvider:DEFAULT_PROVIDER,defaultModel:DEFAULT_MODEL}),thinkingLevelsHint=formatThinkingLevels(configuredModel.provider,configuredModel.model),thinkOverride=normalizeThinkLevel(opts.thinking),thinkOnce=normalizeThinkLevel(opts.thinkingOnce);if(opts.thinking&&!thinkOverride)throw Error(`Invalid thinking level. Use one of: ${thinkingLevelsHint}.`);if(opts.thinkingOnce&&!thinkOnce)throw Error(`Invalid one-shot thinking level. Use one of: ${thinkingLevelsHint}.`);let verboseOverride=normalizeVerboseLevel(opts.verbose);if(opts.verbose&&!verboseOverride)throw Error(`Invalid verbose level. Use "on", "full", or "off".`);let isSubagentLane=(typeof opts.lane==`string`?opts.lane.trim():``)===String(AGENT_LANE_SUBAGENT),timeoutSecondsRaw=opts.timeout===void 0?isSubagentLane?0:void 0:Number.parseInt(String(opts.timeout),10);if(timeoutSecondsRaw!==void 0&&(Number.isNaN(timeoutSecondsRaw)||timeoutSecondsRaw<0))throw Error(`--timeout must be a non-negative integer (seconds; 0 means no timeout)`);let timeoutMs=resolveAgentTimeoutMs({cfg,overrideSeconds:timeoutSecondsRaw}),{sessionId,sessionKey,sessionEntry:resolvedSessionEntry,sessionStore,storePath,isNewSession,persistedThinking,persistedVerbose}=resolveSession({cfg,to:opts.to,sessionId:opts.sessionId,sessionKey:opts.sessionKey,agentId:agentIdOverride}),sessionEntry=resolvedSessionEntry,runId=opts.runId?.trim()||sessionId;try{if(opts.deliver===!0&&resolveSendPolicy({cfg,entry:sessionEntry,sessionKey,channel:sessionEntry?.channel,chatType:sessionEntry?.chatType})===`deny`)throw Error(`send blocked by session policy`);let resolvedThinkLevel=thinkOnce??thinkOverride??persistedThinking??agentCfg?.thinkingDefault,resolvedVerboseLevel=verboseOverride??persistedVerbose??agentCfg?.verboseDefault??`on`;sessionKey&®isterAgentRunContext(runId,{sessionKey,verboseLevel:resolvedVerboseLevel});let needsSkillsSnapshot=isNewSession||!sessionEntry?.skillsSnapshot,skillsSnapshotVersion=getSkillsSnapshotVersion(workspaceDir),skillFilter=resolveAgentSkillsFilter(cfg,sessionAgentId),skillsSnapshot=needsSkillsSnapshot?buildWorkspaceSkillSnapshot(workspaceDir,{config:cfg,eligibility:{remote:getRemoteSkillEligibility()},snapshotVersion:skillsSnapshotVersion,skillFilter}):sessionEntry?.skillsSnapshot;if(skillsSnapshot&&sessionStore&&sessionKey&&needsSkillsSnapshot){let next={...sessionEntry??{sessionId,updatedAt:Date.now()},sessionId,updatedAt:Date.now(),skillsSnapshot};await persistSessionEntry({sessionStore,sessionKey,storePath,entry:next}),sessionEntry=next}if(sessionStore&&sessionKey){let next={...sessionStore[sessionKey]??sessionEntry??{sessionId,updatedAt:Date.now()},sessionId,updatedAt:Date.now()};thinkOverride&&(next.thinkingLevel=thinkOverride),applyVerboseOverride(next,verboseOverride),await persistSessionEntry({sessionStore,sessionKey,storePath,entry:next})}let agentModelPrimary=resolveAgentModelPrimary(cfg,sessionAgentId),configuredDefaultRef=resolveConfiguredModelRef({cfg:agentModelPrimary?{...cfg,agents:{...cfg.agents,defaults:{...cfg.agents?.defaults,model:{...typeof cfg.agents?.defaults?.model==`object`?cfg.agents.defaults.model:void 0,primary:agentModelPrimary}}}}:cfg,defaultProvider:DEFAULT_PROVIDER,defaultModel:DEFAULT_MODEL}),{provider:defaultProvider,model:defaultModel}=normalizeModelRef(configuredDefaultRef.provider,configuredDefaultRef.model),provider=defaultProvider,model=defaultModel,hasAllowlist=agentCfg?.models&&Object.keys(agentCfg.models).length>0,hasStoredOverride=!!(sessionEntry?.modelOverride||sessionEntry?.providerOverride),needsModelCatalog=hasAllowlist||hasStoredOverride,allowedModelKeys=new Set,allowedModelCatalog=[],modelCatalog=null;if(needsModelCatalog){modelCatalog=await loadModelCatalog({config:cfg});let allowed=buildAllowedModelSet({cfg,catalog:modelCatalog,defaultProvider,defaultModel});allowedModelKeys=allowed.allowedKeys,allowedModelCatalog=allowed.allowedCatalog}if(sessionEntry&&sessionStore&&sessionKey&&hasStoredOverride){let entry=sessionEntry,overrideProvider=sessionEntry.providerOverride?.trim()||defaultProvider,overrideModel=sessionEntry.modelOverride?.trim();if(overrideModel){let normalizedOverride=normalizeModelRef(overrideProvider,overrideModel),key=modelKey(normalizedOverride.provider,normalizedOverride.model);if(!isCliProvider(normalizedOverride.provider,cfg)&&allowedModelKeys.size>0&&!allowedModelKeys.has(key)){let{updated}=applyModelOverrideToSessionEntry({entry,selection:{provider:defaultProvider,model:defaultModel,isDefault:!0}});updated&&await persistSessionEntry({sessionStore,sessionKey,storePath,entry})}}}let storedProviderOverride=sessionEntry?.providerOverride?.trim(),storedModelOverride=sessionEntry?.modelOverride?.trim();if(storedModelOverride){let normalizedStored=normalizeModelRef(storedProviderOverride||defaultProvider,storedModelOverride),key=modelKey(normalizedStored.provider,normalizedStored.model);(isCliProvider(normalizedStored.provider,cfg)||allowedModelKeys.size===0||allowedModelKeys.has(key))&&(provider=normalizedStored.provider,model=normalizedStored.model)}if(sessionEntry){let authProfileId=sessionEntry.authProfileOverride;if(authProfileId){let entry=sessionEntry,profile=(await ensureAuthProfileStore()).profiles[authProfileId];(!profile||profile.provider!==provider)&&sessionStore&&sessionKey&&await clearSessionAuthProfileOverride({sessionEntry:entry,sessionStore,sessionKey,storePath})}}if(!resolvedThinkLevel){let catalogForThinking=modelCatalog??allowedModelCatalog;(!catalogForThinking||catalogForThinking.length===0)&&(modelCatalog=await loadModelCatalog({config:cfg}),catalogForThinking=modelCatalog),resolvedThinkLevel=resolveThinkingDefault({cfg,provider,model,catalog:catalogForThinking})}if(resolvedThinkLevel===`xhigh`&&!supportsXHighThinking(provider,model)){if(thinkOnce||thinkOverride)throw Error(`Thinking level "xhigh" is only supported for ${formatXHighModelHint()}.`);if(resolvedThinkLevel=`high`,sessionEntry&&sessionStore&&sessionKey&&sessionEntry.thinkingLevel===`xhigh`){let entry=sessionEntry;entry.thinkingLevel=`high`,entry.updatedAt=Date.now(),await persistSessionEntry({sessionStore,sessionKey,storePath,entry})}}let sessionFile=resolveSessionFilePath(sessionId,sessionEntry,{agentId:sessionAgentId}),startedAt=Date.now(),lifecycleEnded=!1,result,fallbackProvider=provider,fallbackModel=model;try{let runContext=resolveAgentRunContext(opts),messageChannel=resolveMessageChannel(runContext.messageChannel,opts.replyChannel??opts.channel),spawnedBy=opts.spawnedBy??sessionEntry?.spawnedBy,effectiveFallbacksOverride=resolveEffectiveModelFallbacks({cfg,agentId:sessionAgentId,hasSessionModelOverride:!!storedModelOverride}),fallbackAttemptIndex=0,fallbackResult=await runWithModelFallback({cfg,provider,model,agentDir,fallbacksOverride:effectiveFallbacksOverride,run:(providerOverride,modelOverride)=>{let isFallbackRetry=fallbackAttemptIndex>0;return fallbackAttemptIndex+=1,runAgentAttempt({providerOverride,modelOverride,cfg,sessionEntry,sessionId,sessionKey,sessionAgentId,sessionFile,workspaceDir,body,isFallbackRetry,resolvedThinkLevel,timeoutMs,runId,opts,runContext,spawnedBy,messageChannel,skillsSnapshot,resolvedVerboseLevel,agentDir,primaryProvider:provider,onAgentEvent:evt=>{evt.stream===`lifecycle`&&typeof evt.data?.phase==`string`&&(evt.data.phase===`end`||evt.data.phase===`error`)&&(lifecycleEnded=!0)}})}});result=fallbackResult.result,fallbackProvider=fallbackResult.provider,fallbackModel=fallbackResult.model,lifecycleEnded||emitAgentEvent({runId,stream:`lifecycle`,data:{phase:`end`,startedAt,endedAt:Date.now(),aborted:result.meta.aborted??!1}})}catch(err){throw lifecycleEnded||emitAgentEvent({runId,stream:`lifecycle`,data:{phase:`error`,startedAt,endedAt:Date.now(),error:String(err)}}),err}sessionStore&&sessionKey&&await updateSessionStoreAfterAgentRun({cfg,contextTokensOverride:agentCfg?.contextTokens,sessionId,sessionKey,storePath,sessionStore,defaultProvider:provider,defaultModel:model,fallbackProvider,fallbackModel,result});let payloads=result.payloads??[];return await deliverAgentCommandResult({cfg,deps,runtime,opts,sessionEntry,result,payloads})}finally{clearAgentRunContext(runId)}}export{resolveAgentOutboundTarget as i,resolveSessionKeyForRequest as n,resolveAgentDeliveryPlan as r,agentCommand as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{S as shortenHomePath,y as resolveUserPath}from"./utils-BP60e80M.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{C as resolveAuthStorePath,b as ensureAuthProfileStore}from"./auth-profiles-CuAFgjuQ.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{d as normalizeAgentId,n as DEFAULT_ACCOUNT_ID,r as DEFAULT_AGENT_ID}from"./session-key-CksCYipj.js";import{A as resolveWorkspaceFilePath,C as WORKSPACE_RUNTIME_DIRNAME,_ as DEFAULT_IDENTITY_FILENAME,c as resolveAgentWorkspaceDir,i as resolveAgentDir,l as resolveDefaultAgentId,t as listAgentEntries}from"./agent-scope-CufEmNj_.js";import{c as writeConfigFile}from"./io-CsCa3_1Z.js";import{n as listChannelPlugins,r as normalizeChannelId,t as getChannelPlugin}from"./plugins-1Mn6RiNf.js";import{s as resolveSessionTranscriptsDirForAgent}from"./paths-ClsbsPQP.js";import{a as ensureWorkspaceAndSessions,l as moveToTrash}from"./onboard-helpers-D2vxAtv8.js";import{t as WizardCancelledError}from"./prompts-BP4e56X_.js";import{t as createClackPrompter}from"./clack-prompter-B52CP7eY.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DPPVplyk.js";import{n as setupChannels}from"./onboard-channels-
|
|
1
|
+
import{S as shortenHomePath,y as resolveUserPath}from"./utils-BP60e80M.js";import{p as defaultRuntime}from"./subsystem-C4b1Von0.js";import{C as resolveAuthStorePath,b as ensureAuthProfileStore}from"./auth-profiles-CuAFgjuQ.js";import{t as formatCliCommand}from"./command-format-DTMaGKs7.js";import{d as normalizeAgentId,n as DEFAULT_ACCOUNT_ID,r as DEFAULT_AGENT_ID}from"./session-key-CksCYipj.js";import{A as resolveWorkspaceFilePath,C as WORKSPACE_RUNTIME_DIRNAME,_ as DEFAULT_IDENTITY_FILENAME,c as resolveAgentWorkspaceDir,i as resolveAgentDir,l as resolveDefaultAgentId,t as listAgentEntries}from"./agent-scope-CufEmNj_.js";import{c as writeConfigFile}from"./io-CsCa3_1Z.js";import{n as listChannelPlugins,r as normalizeChannelId,t as getChannelPlugin}from"./plugins-1Mn6RiNf.js";import{s as resolveSessionTranscriptsDirForAgent}from"./paths-ClsbsPQP.js";import{a as ensureWorkspaceAndSessions,l as moveToTrash}from"./onboard-helpers-D2vxAtv8.js";import{t as WizardCancelledError}from"./prompts-BP4e56X_.js";import{t as createClackPrompter}from"./clack-prompter-B52CP7eY.js";import{t as resolveChannelDefaultAccountId}from"./helpers-DPPVplyk.js";import{n as setupChannels}from"./onboard-channels-ZI4QC9WU.js";import{t as requireValidConfigSnapshot}from"./config-validation-DZ_PL8zv.js";import{a as pruneAgentConfig,c as parseIdentityMarkdown,i as loadAgentIdentity,n as buildAgentSummaries,o as identityHasValues,r as findAgentEntryIndex,t as applyAgentConfig}from"./agents.config-D6Yhwmnh.js";import{n as logConfigUpdated}from"./logging-ayt7F7vy.js";import{t as promptAuthChoiceGrouped}from"./auth-choice-prompt-_E1tVVLJ.js";import{t as applyAuthChoice}from"./auth-choice.apply-Dy4rVG6K.js";import{n as warnIfModelConfigLooksOff}from"./auth-choice-KcathmTY.js";import path from"node:path";import fs from"node:fs/promises";function bindingMatchKey(match){let accountId=match.accountId?.trim()||DEFAULT_ACCOUNT_ID;return[match.channel,accountId,match.peer?.kind??``,match.peer?.id??``,match.guildId??``,match.teamId??``].join(`|`)}function describeBinding(binding){let match=binding.match,parts=[match.channel];return match.accountId&&parts.push(`accountId=${match.accountId}`),match.peer&&parts.push(`peer=${match.peer.kind}:${match.peer.id}`),match.guildId&&parts.push(`guild=${match.guildId}`),match.teamId&&parts.push(`team=${match.teamId}`),parts.join(` `)}function applyAgentBindings(cfg,bindings){let existing=cfg.bindings??[],existingMatchMap=new Map;for(let binding of existing){let key=bindingMatchKey(binding.match);existingMatchMap.has(key)||existingMatchMap.set(key,normalizeAgentId(binding.agentId))}let added=[],skipped=[],conflicts=[];for(let binding of bindings){let agentId=normalizeAgentId(binding.agentId),key=bindingMatchKey(binding.match),existingAgentId=existingMatchMap.get(key);if(existingAgentId){existingAgentId===agentId?skipped.push(binding):conflicts.push({binding,existingAgentId});continue}existingMatchMap.set(key,agentId),added.push({...binding,agentId})}return added.length===0?{config:cfg,added,skipped,conflicts}:{config:{...cfg,bindings:[...existing,...added]},added,skipped,conflicts}}function resolveDefaultAccountId$1(cfg,provider){let plugin=getChannelPlugin(provider);return plugin?resolveChannelDefaultAccountId({plugin,cfg}):DEFAULT_ACCOUNT_ID}function buildChannelBindings(params){let bindings=[],agentId=normalizeAgentId(params.agentId);for(let channel of params.selection){let match={channel},accountId=params.accountIds?.[channel]?.trim();accountId?match.accountId=accountId:getChannelPlugin(channel)?.meta.forceAccountBinding&&(match.accountId=resolveDefaultAccountId$1(params.config,channel)),bindings.push({agentId,match})}return bindings}function parseBindingSpecs(params){let bindings=[],errors=[],specs=params.specs??[],agentId=normalizeAgentId(params.agentId);for(let raw of specs){let trimmed=raw?.trim();if(!trimmed)continue;let[channelRaw,accountRaw]=trimmed.split(`:`,2),channel=normalizeChannelId(channelRaw);if(!channel){errors.push(`Unknown channel "${channelRaw}".`);continue}let accountId=accountRaw?.trim();if(accountRaw!==void 0&&!accountId){errors.push(`Invalid binding "${trimmed}" (empty account id).`);continue}accountId||getChannelPlugin(channel)?.meta.forceAccountBinding&&(accountId=resolveDefaultAccountId$1(params.config,channel));let match={channel};accountId&&(match.accountId=accountId),bindings.push({agentId,match})}return{bindings,errors}}function createQuietRuntime(runtime){return{...runtime,log:()=>{}}}async function requireValidConfig(runtime){return await requireValidConfigSnapshot(runtime)}async function fileExists(pathname){try{return await fs.stat(pathname),!0}catch{return!1}}async function agentsAddCommand(opts,runtime=defaultRuntime,params){let cfg=await requireValidConfig(runtime);if(!cfg)return;let workspaceFlag=opts.workspace?.trim(),nameInput=opts.name?.trim(),hasFlags=params?.hasFlags===!0,nonInteractive=!!(opts.nonInteractive||hasFlags);if(nonInteractive&&!workspaceFlag){runtime.error(`Non-interactive mode requires --workspace. Re-run without flags to use the wizard.`),runtime.exit(1);return}if(nonInteractive){if(!nameInput){runtime.error(`Agent name is required in non-interactive mode.`),runtime.exit(1);return}if(!workspaceFlag){runtime.error(`Non-interactive mode requires --workspace. Re-run without flags to use the wizard.`),runtime.exit(1);return}let agentId=normalizeAgentId(nameInput);if(agentId===DEFAULT_AGENT_ID){runtime.error(`"${DEFAULT_AGENT_ID}" is reserved. Choose another name.`),runtime.exit(1);return}if(agentId!==nameInput&&runtime.log(`Normalized agent id to "${agentId}".`),findAgentEntryIndex(listAgentEntries(cfg),agentId)>=0){runtime.error(`Agent "${agentId}" already exists.`),runtime.exit(1);return}let workspaceDir=resolveUserPath(workspaceFlag),agentDir=opts.agentDir?.trim()?resolveUserPath(opts.agentDir.trim()):resolveAgentDir(cfg,agentId),model=opts.model?.trim(),nextConfig=applyAgentConfig(cfg,{agentId,name:nameInput,workspace:workspaceDir,agentDir,...model?{model}:{}}),bindingParse=parseBindingSpecs({agentId,specs:opts.bind,config:nextConfig});if(bindingParse.errors.length>0){runtime.error(bindingParse.errors.join(`
|
|
2
2
|
`)),runtime.exit(1);return}let bindingResult=bindingParse.bindings.length>0?applyAgentBindings(nextConfig,bindingParse.bindings):{config:nextConfig,added:[],skipped:[],conflicts:[]};await writeConfigFile(bindingResult.config),opts.json||logConfigUpdated(runtime),await ensureWorkspaceAndSessions(workspaceDir,opts.json?createQuietRuntime(runtime):runtime,{skipBootstrap:!!bindingResult.config.agents?.defaults?.skipBootstrap,agentId});let payload={agentId,name:nameInput,workspace:workspaceDir,agentDir,model,bindings:{added:bindingResult.added.map(describeBinding),skipped:bindingResult.skipped.map(describeBinding),conflicts:bindingResult.conflicts.map(conflict=>`${describeBinding(conflict.binding)} (agent=${conflict.existingAgentId})`)}};opts.json?runtime.log(JSON.stringify(payload,null,2)):(runtime.log(`Agent: ${agentId}`),runtime.log(`Workspace: ${shortenHomePath(workspaceDir)}`),runtime.log(`Agent dir: ${shortenHomePath(agentDir)}`),model&&runtime.log(`Model: ${model}`),bindingResult.conflicts.length>0&&runtime.error([`Skipped bindings already claimed by another agent:`,...bindingResult.conflicts.map(conflict=>`- ${describeBinding(conflict.binding)} (agent=${conflict.existingAgentId})`)].join(`
|
|
3
3
|
`)));return}let prompter=createClackPrompter();try{await prompter.intro(`Add BuilderForceAgents agent`);let name=nameInput??await prompter.text({message:`Agent name`,validate:value=>{if(!value?.trim())return`Required`;if(normalizeAgentId(value)===DEFAULT_AGENT_ID)return`"${DEFAULT_AGENT_ID}" is reserved. Choose another name.`}}),agentName=String(name??``).trim(),agentId=normalizeAgentId(agentName);if(agentName!==agentId&&await prompter.note(`Normalized id to "${agentId}".`,`Agent id`),listAgentEntries(cfg).find(agent=>normalizeAgentId(agent.id)===agentId)&&!await prompter.confirm({message:`Agent "${agentId}" already exists. Update it?`,initialValue:!1})){await prompter.outro(`No changes made.`);return}let workspaceDefault=resolveAgentWorkspaceDir(cfg,agentId),workspaceInput=await prompter.text({message:`Workspace directory`,initialValue:workspaceDefault,validate:value=>value?.trim()?void 0:`Required`}),workspaceDir=resolveUserPath(String(workspaceInput??``).trim()||workspaceDefault),agentDir=resolveAgentDir(cfg,agentId),nextConfig=applyAgentConfig(cfg,{agentId,name:agentName,workspace:workspaceDir,agentDir}),defaultAgentId=resolveDefaultAgentId(cfg);if(defaultAgentId!==agentId){let sourceAuthPath=resolveAuthStorePath(resolveAgentDir(cfg,defaultAgentId)),destAuthPath=resolveAuthStorePath(agentDir);path.resolve(sourceAuthPath).toLowerCase()!==path.resolve(destAuthPath).toLowerCase()&&await fileExists(sourceAuthPath)&&!await fileExists(destAuthPath)&&await prompter.confirm({message:`Copy auth profiles from "${defaultAgentId}"?`,initialValue:!1})&&(await fs.mkdir(path.dirname(destAuthPath),{recursive:!0}),await fs.copyFile(sourceAuthPath,destAuthPath),await prompter.note(`Copied auth profiles from "${defaultAgentId}".`,`Auth profiles`))}if(await prompter.confirm({message:`Configure model/auth for this agent now?`,initialValue:!1})){let authResult=await applyAuthChoice({authChoice:await promptAuthChoiceGrouped({prompter,store:await ensureAuthProfileStore(agentDir,{allowKeychainPrompt:!1}),includeSkip:!0}),config:nextConfig,prompter,runtime,agentDir,setDefaultModel:!1,agentId});nextConfig=authResult.config,authResult.agentModelOverride&&(nextConfig=applyAgentConfig(nextConfig,{agentId,model:authResult.agentModelOverride}))}await warnIfModelConfigLooksOff(nextConfig,prompter,{agentId,agentDir});let selection=[],channelAccountIds={};if(nextConfig=await setupChannels(nextConfig,runtime,prompter,{allowSignalInstall:!0,onSelection:value=>{selection=value},promptAccountIds:!0,onAccountId:(channel,accountId)=>{channelAccountIds[channel]=accountId}}),selection.length>0)if(await prompter.confirm({message:`Route selected channels to this agent now? (bindings)`,initialValue:!1})){let desiredBindings=buildChannelBindings({agentId,selection,config:nextConfig,accountIds:channelAccountIds}),result=applyAgentBindings(nextConfig,desiredBindings);nextConfig=result.config,result.conflicts.length>0&&await prompter.note([`Skipped bindings already claimed by another agent:`,...result.conflicts.map(conflict=>`- ${describeBinding(conflict.binding)} (agent=${conflict.existingAgentId})`)].join(`
|
|
4
4
|
`),`Routing bindings`)}else await prompter.note([`Routing unchanged. Add bindings when you're ready.`,`Docs: https://docs.builderforce.ai/concepts/multi-agent`].join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.js";import"./src-DvWaTze9.js";import"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-
|
|
1
|
+
import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.js";import"./src-DvWaTze9.js";import"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-m_x-JRkR.js";import"./sessions-CmJXMlLP.js";import"./project-context-store-BNXYrLJz.js";import"./tokens-CFKkpUIu.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./send-CGcNbbV7.js";import"./send-DPRTlcZh.js";import"./with-timeout-CBXVw0An.js";import"./deliver--eLCRJc2.js";import"./accounts-Cx82nj4E.js";import"./send-DfHAMPcD.js";import"./image-ops-CotJhwRR.js";import"./redact-CgO7wehS.js";import"./errors-tAt19c1E.js";import"./embedded-helpers-BZGiFZlP.js";import"./sandbox-C-Owvt1-.js";import"./chrome-BfwLDcFc.js";import"./tailscale-DV-yOmYe.js";import"./auth-ChecwOXS.js";import"./server-context-BjYYSEVE.js";import"./routes-Dnfsevhw.js";import"./paths-BnOjueoX.js";import"./ssrf-DJXLYZ0d.js";import"./store-DHD2IEgd.js";import"./ports-DTku9NSx.js";import"./trash-C3zmJ_O7.js";import"./accounts-DcoaLXKI.js";import"./paths-ClsbsPQP.js";import"./tool-images-CCpqFtrL.js";import"./workspace-waBqRxiy.js";import"./reply-prefix-Cg7AqaK0.js";import"./sqlite-CIGM1WKg.js";import"./memory-cli-CiwWAhp5.js";import"./manager-Bjb9ptCz.js";import"./gemini-auth-KBXMhaRQ.js";import"./retry-B151Hej5.js";import"./common-BfwMxpLu.js";import"./runner-DwPaM8kz.js";import"./tool-display-Cs4hDP1f.js";import"./chunk-Dly7lM4r.js";import"./markdown-tables-B1Rx8hv6.js";import"./fetch-guard-DnXqPKae.js";import"./fetch-Cn_THzz8.js";import"./ir-CSdQJPqu.js";import"./render-DlHYsbvQ.js";import"./builderforcellm-syscheck-tquUDu_7.js";import"./session-utils-D2_j4c6U.js";import"./coding-tools.policy-BwdtwuXY.js";import"./pairing-store-BCsvhT6-.js";import"./fetch-DnWD6ydH.js";import"./exec-approvals-D7ZPAZpt.js";import"./nodes-screen-D6GHv_S0.js";import"./session-cost-usage-S0nkbPoW.js";import"./usage-format-5sp5AMSu.js";import"./provider-usage-DsI3qJRy.js";import"./send-BOSlm5fG.js";import"./outbound-attachment-BaTYE4qp.js";import"./delivery-queue-Cp3t4Upn.js";import"./project-context-BdK18hVI.js";import"./control-service-Ca0CBlhO.js";import"./stagger-CRe77dWL.js";import"./channel-selection-BLwXhb9t.js";import"./send-BOBan2eG.js";import"./resolve-route-DEIW5uKy.js";import"./channel-activity-DX36RadH.js";import"./tables-CojSfTth.js";import"./links-BKzP7VVP.js";import"./cli-utils-C9pW69LF.js";import"./help-format-CfFf-w62.js";import"./progress-Cqb-jAjT.js";import"./replies-DATdLu15.js";import"./onboard-helpers-D2vxAtv8.js";import"./prompt-style-BMWmaqSC.js";import"./pairing-labels-BUXpRejW.js";import"./active-listener-Di9e1YAD.js";import"./mamba-state-engine-DJt_RpLC.js";import"./transformers-stream-Buj40qHl.js";import"./catalog-li4bSIE2.js";import"./note-DgDXuE0F.js";import"./clack-prompter-B52CP7eY.js";import"./helpers-DPPVplyk.js";import"./plugin-auto-enable-DT7HMdAA.js";import"./install-safe-path-ObPl6zIf.js";import"./npm-registry-spec-BV1VDmuN.js";import"./skill-scanner-C2gXLVti.js";import"./installs-C7X7CT9a.js";import"./onboard-channels-ZI4QC9WU.js";import"./config-validation-DZ_PL8zv.js";import"./agents.config-D6Yhwmnh.js";import"./shared-DUsuqnhk.js";import"./onboard-auth.credentials-CV8n9m_T.js";import"./auth-token-yWeJoLJ8.js";import"./logging-ayt7F7vy.js";import"./provider-auth-helpers-CWUfg9zf.js";import{t as agentsListCommand}from"./agents-CRJM6qhK.js";import"./auth-choice.apply-Dy4rVG6K.js";import"./openai-model-default-CzXGNcAh.js";import"./model-picker-Do5aHFkC.js";import"./auth-choice.apply.transformers-Be8599JD.js";import"./auth-choice-KcathmTY.js";export{agentsListCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-BVMSM1lQ.js";import"./session-key-CYpYHc1e.js";import{X as shouldLogVerbose,q as logVerbose}from"./registry-D_frpmHZ.js";import"./agent-scope-EkacNLg3.js";import"./subsystem-BakM_oqD.js";import"./workspace-BCjtHT4u.js";import"./model-selection-Cg2DOZgd.js";import"./env-BhRm7_r8.js";import"./boolean-ssGoaBPk.js";import"./src-CFZ3EtDR.js";import"./plugins-J28Y83f5.js";import"./accounts-193gfWbH.js";import"./bindings-BfB5A-by.js";import"./accounts-DHeA4T6C.js";import"./fetch-BklyLYYN.js";import"./model-catalog-IPEvGgYj.js";import"./redact-sNZY-pGx.js";import"./errors-BmztzL5I.js";import{a as runCapability,n as createMediaAttachmentCache,o as isAudioAttachment,r as normalizeMediaAttachments,t as buildProviderRegistry}from"./runner-
|
|
1
|
+
import"./paths-BVMSM1lQ.js";import"./session-key-CYpYHc1e.js";import{X as shouldLogVerbose,q as logVerbose}from"./registry-D_frpmHZ.js";import"./agent-scope-EkacNLg3.js";import"./subsystem-BakM_oqD.js";import"./workspace-BCjtHT4u.js";import"./model-selection-Cg2DOZgd.js";import"./env-BhRm7_r8.js";import"./boolean-ssGoaBPk.js";import"./src-CFZ3EtDR.js";import"./plugins-J28Y83f5.js";import"./accounts-193gfWbH.js";import"./bindings-BfB5A-by.js";import"./accounts-DHeA4T6C.js";import"./fetch-BklyLYYN.js";import"./model-catalog-IPEvGgYj.js";import"./redact-sNZY-pGx.js";import"./errors-BmztzL5I.js";import{a as runCapability,n as createMediaAttachmentCache,o as isAudioAttachment,r as normalizeMediaAttachments,t as buildProviderRegistry}from"./runner-C8oNv-9y.js";import"./config-CzogmWgi.js";import"./chrome-CrqJ4Ijz.js";import"./frontmatter-DBVosMFY.js";import"./store-DN9AcI73.js";import"./message-channel-tBuQgYSD.js";import"./accounts-C7FtIPYB.js";import"./paths-CzXKnIOb.js";import"./gemini-auth-B0Tpzvwg.js";import"./tool-images-mfC2sOfJ.js";async function transcribeFirstAudio(params){let{ctx,cfg}=params,audioConfig=cfg.tools?.media?.audio;if(!audioConfig||audioConfig.enabled===!1)return;let attachments=normalizeMediaAttachments(ctx);if(!attachments||attachments.length===0)return;let firstAudio=attachments.find(att=>att&&isAudioAttachment(att)&&!att.alreadyTranscribed);if(!firstAudio)return;shouldLogVerbose()&&logVerbose(`audio-preflight: transcribing attachment ${firstAudio.index} for mention check`);let providerRegistry=buildProviderRegistry(params.providers),cache=createMediaAttachmentCache(attachments);try{let result=await runCapability({capability:`audio`,cfg,ctx,attachments:cache,media:attachments,agentDir:params.agentDir,providerRegistry,config:audioConfig,activeModel:params.activeModel});if(!result||result.outputs.length===0)return;let audioOutput=result.outputs.find(output=>output.kind===`audio.transcription`);return!audioOutput||!audioOutput.text?void 0:(firstAudio.alreadyTranscribed=!0,shouldLogVerbose()&&logVerbose(`audio-preflight: transcribed ${audioOutput.text.length} chars from attachment ${firstAudio.index}`),audioOutput.text)}catch(err){shouldLogVerbose()&&logVerbose(`audio-preflight: transcription failed: ${String(err)}`);return}finally{await cache.cleanup()}}export{transcribeFirstAudio};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-CAQcjxp2.js";import"./session-key-CYpYHc1e.js";import{G as logVerbose,J as shouldLogVerbose}from"./registry-j1UKIotU.js";import"./agent-scope-C7zGN7Pz.js";import"./subsystem-ykSbyaud.js";import"./model-selection-wcUu73D6.js";import"./env-44XUbLhk.js";import"./src-FTj4uYDm.js";import"./plugins-CjU7Ut5E.js";import"./accounts-xbnfJmsd.js";import"./bindings-6UAwilZE.js";import{a as runCapability,n as createMediaAttachmentCache,o as isAudioAttachment,r as normalizeMediaAttachments,t as buildProviderRegistry}from"./runner-
|
|
1
|
+
import"./paths-CAQcjxp2.js";import"./session-key-CYpYHc1e.js";import{G as logVerbose,J as shouldLogVerbose}from"./registry-j1UKIotU.js";import"./agent-scope-C7zGN7Pz.js";import"./subsystem-ykSbyaud.js";import"./model-selection-wcUu73D6.js";import"./env-44XUbLhk.js";import"./src-FTj4uYDm.js";import"./plugins-CjU7Ut5E.js";import"./accounts-xbnfJmsd.js";import"./bindings-6UAwilZE.js";import{a as runCapability,n as createMediaAttachmentCache,o as isAudioAttachment,r as normalizeMediaAttachments,t as buildProviderRegistry}from"./runner-nDoIXX7n.js";import"./fetch-D2i2BBd3.js";import"./model-catalog-SHqdj01g.js";import"./redact-xFefzy4M.js";import"./errors-CguQr0Ja.js";import"./config-utlbrOec.js";import"./chrome-ChzFLAeJ.js";import"./message-channel-BKGbjp9g.js";import"./paths-ZHayVsQS.js";import"./gemini-auth-B-li5bah.js";import"./tool-images-B8YdlzZb.js";async function transcribeFirstAudio(params){let{ctx,cfg}=params,audioConfig=cfg.tools?.media?.audio;if(!audioConfig||audioConfig.enabled===!1)return;let attachments=normalizeMediaAttachments(ctx);if(!attachments||attachments.length===0)return;let firstAudio=attachments.find(att=>att&&isAudioAttachment(att)&&!att.alreadyTranscribed);if(!firstAudio)return;shouldLogVerbose()&&logVerbose(`audio-preflight: transcribing attachment ${firstAudio.index} for mention check`);let providerRegistry=buildProviderRegistry(params.providers),cache=createMediaAttachmentCache(attachments);try{let result=await runCapability({capability:`audio`,cfg,ctx,attachments:cache,media:attachments,agentDir:params.agentDir,providerRegistry,config:audioConfig,activeModel:params.activeModel});if(!result||result.outputs.length===0)return;let audioOutput=result.outputs.find(output=>output.kind===`audio.transcription`);return!audioOutput||!audioOutput.text?void 0:(firstAudio.alreadyTranscribed=!0,shouldLogVerbose()&&logVerbose(`audio-preflight: transcribed ${audioOutput.text.length} chars from attachment ${firstAudio.index}`),audioOutput.text)}catch(err){shouldLogVerbose()&&logVerbose(`audio-preflight: transcription failed: ${String(err)}`);return}finally{await cache.cleanup()}}export{transcribeFirstAudio};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./embedded-helpers-2fP2Yq8h.js";import"./reply-
|
|
1
|
+
import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./embedded-helpers-2fP2Yq8h.js";import"./reply-BuUSdq2L.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./logger-Bch0bx9c.js";import"./exec-DdcIjeyn.js";import"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import"./model-selection-Doyvd4lU.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-BifagO7i.js";import"./io-BNtgT4VB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BD801bpx.js";import"./runner-C3k1sKdu.js";import"./model-catalog-BoiWqBTw.js";import"./sandbox-1jtP0nhr.js";import"./chrome-Bfprrnm1.js";import"./tailscale-DLkpGquM.js";import"./auth-lebUHrkd.js";import"./server-context-DKdrUePN.js";import"./frontmatter-3D1EdC1L.js";import"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-CRrqIFJR.js";import"./redact-BHdfp2MZ.js";import"./errors-B1MIg3g-.js";import"./paths-cR8ct-Y3.js";import"./ssrf-p9k-iapc.js";import"./image-ops-C8IUQKjn.js";import"./store-CmHBQ-yX.js";import"./ports-DgmEDNOm.js";import"./trash-DD2Hc5oq.js";import"./sessions-BPr0-lkT.js";import"./message-channel-D_jXxXQj.js";import"./plugins-D5zP6ENo.js";import"./accounts-o35LU_iy.js";import"./accounts-rmXEiebi.js";import"./accounts-BLueHgKj.js";import"./bindings-DR59065T.js";import"./send-l9WWK31e.js";import"./send-CVgJk5kN.js";import"./paths-DJ6rztqJ.js";import"./tool-images-B7b_OiMz.js";import"./tool-display-ByOZtWvA.js";import"./fetch-guard-8mwt3-hm.js";import"./api-key-rotation-Yn3MpU4F.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import"./tokens-CCU3zO-D.js";import"./project-context-store-Dbbjk8CQ.js";import"./with-timeout-CPd4-suw.js";import"./deliver-BiGCWHvZ.js";import"./send-CRSlal5z.js";import"./workspace-D4LK4thI.js";import"./reply-prefix-zIMgi6K6.js";import"./memory-cli-D-Khe5Ij.js";import"./manager-DNIg84rj.js";import"./retry-DlVhg5qu.js";import"./client-xfoidwPI.js";import"./call-CJq3iGqu.js";import"./common-BTbIhLyt.js";import"./chunk-FCBlVOyo.js";import"./markdown-tables-P6uoUSFa.js";import"./ir-5BNoIXZm.js";import"./render-D1dVTEB1.js";import"./builderforcellm-syscheck-Cp4LMft_.js";import"./send-D_6wd5Y3.js";import"./outbound-attachment-C7wByQO5.js";import"./fetch-DnVtDecb.js";import"./delivery-queue-CXKynF1P.js";import"./channel-activity-CCNDbdD3.js";import"./tables-ERcoWFDp.js";import"./pairing-store-C8gtsUDG.js";import"./links-BgWWaaOT.js";import"./cli-utils-LBYKdNFb.js";import"./help-format-Qfk2vDNX.js";import"./progress-BfOtdN6b.js";import"./resolve-route-D49haUnv.js";import"./replies-DAwcEPGb.js";import"./refresh-TiC_kLgE.js";import"./coding-tools.policy-COe2xa9K.js";import"./send-BIMaIwQV.js";import"./onboard-helpers-BmYUjl4j.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-CD0lPAfY.js";import"./session-cost-usage-BjH7mxVj.js";import"./usage-format-DGf8ZWPH.js";import"./provider-usage-QGVVADJa.js";import"./active-listener-Dcg19lJG.js";import"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import"./project-context-BLpMH93w.js";import"./control-service-DKBAemtq.js";import"./stagger-8EkqkqJv.js";import"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-BQuRdgMU.js";import"./transformers-stream-D7nRu4Qu.js";import"./shared-DXDwFhUI.js";import"./onboard-auth.credentials-uekJMiYv.js";import"./auth-token-CPSeBkJC.js";import"./logging-DHa3jQN3.js";import"./provider-auth-helpers-y1X8xKVE.js";import{t as applyAuthChoice}from"./auth-choice.apply-ChrTTHkK.js";import"./openai-model-default-BirkY0mR.js";import"./model-picker-CCvGdvzM.js";import"./auth-choice.apply.transformers-CgfGlqy1.js";import{n as warnIfModelConfigLooksOff,t as resolvePreferredProviderForAuthChoice}from"./auth-choice-C8gCFmQ5.js";export{applyAuthChoice,resolvePreferredProviderForAuthChoice,warnIfModelConfigLooksOff};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.js";import"./src-DvWaTze9.js";import"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-
|
|
1
|
+
import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.js";import"./src-DvWaTze9.js";import"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-m_x-JRkR.js";import"./sessions-CmJXMlLP.js";import"./project-context-store-BNXYrLJz.js";import"./tokens-CFKkpUIu.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./send-CGcNbbV7.js";import"./send-DPRTlcZh.js";import"./with-timeout-CBXVw0An.js";import"./deliver--eLCRJc2.js";import"./accounts-Cx82nj4E.js";import"./send-DfHAMPcD.js";import"./image-ops-CotJhwRR.js";import"./redact-CgO7wehS.js";import"./errors-tAt19c1E.js";import"./embedded-helpers-BZGiFZlP.js";import"./sandbox-C-Owvt1-.js";import"./chrome-BfwLDcFc.js";import"./tailscale-DV-yOmYe.js";import"./auth-ChecwOXS.js";import"./server-context-BjYYSEVE.js";import"./routes-Dnfsevhw.js";import"./paths-BnOjueoX.js";import"./ssrf-DJXLYZ0d.js";import"./store-DHD2IEgd.js";import"./ports-DTku9NSx.js";import"./trash-C3zmJ_O7.js";import"./accounts-DcoaLXKI.js";import"./paths-ClsbsPQP.js";import"./tool-images-CCpqFtrL.js";import"./workspace-waBqRxiy.js";import"./reply-prefix-Cg7AqaK0.js";import"./sqlite-CIGM1WKg.js";import"./memory-cli-CiwWAhp5.js";import"./manager-Bjb9ptCz.js";import"./gemini-auth-KBXMhaRQ.js";import"./retry-B151Hej5.js";import"./common-BfwMxpLu.js";import"./runner-DwPaM8kz.js";import"./tool-display-Cs4hDP1f.js";import"./chunk-Dly7lM4r.js";import"./markdown-tables-B1Rx8hv6.js";import"./fetch-guard-DnXqPKae.js";import"./fetch-Cn_THzz8.js";import"./ir-CSdQJPqu.js";import"./render-DlHYsbvQ.js";import"./builderforcellm-syscheck-tquUDu_7.js";import"./session-utils-D2_j4c6U.js";import"./coding-tools.policy-BwdtwuXY.js";import"./pairing-store-BCsvhT6-.js";import"./fetch-DnWD6ydH.js";import"./exec-approvals-D7ZPAZpt.js";import"./nodes-screen-D6GHv_S0.js";import"./session-cost-usage-S0nkbPoW.js";import"./usage-format-5sp5AMSu.js";import"./provider-usage-DsI3qJRy.js";import"./send-BOSlm5fG.js";import"./outbound-attachment-BaTYE4qp.js";import"./delivery-queue-Cp3t4Upn.js";import"./project-context-BdK18hVI.js";import"./control-service-Ca0CBlhO.js";import"./stagger-CRe77dWL.js";import"./channel-selection-BLwXhb9t.js";import"./send-BOBan2eG.js";import"./resolve-route-DEIW5uKy.js";import"./channel-activity-DX36RadH.js";import"./tables-CojSfTth.js";import"./links-BKzP7VVP.js";import"./cli-utils-C9pW69LF.js";import"./help-format-CfFf-w62.js";import"./progress-Cqb-jAjT.js";import"./replies-DATdLu15.js";import"./onboard-helpers-D2vxAtv8.js";import"./prompt-style-BMWmaqSC.js";import"./pairing-labels-BUXpRejW.js";import"./active-listener-Di9e1YAD.js";import"./mamba-state-engine-DJt_RpLC.js";import"./transformers-stream-Buj40qHl.js";import"./shared-DUsuqnhk.js";import"./onboard-auth.credentials-CV8n9m_T.js";import"./auth-token-yWeJoLJ8.js";import"./logging-ayt7F7vy.js";import"./provider-auth-helpers-CWUfg9zf.js";import{t as applyAuthChoice}from"./auth-choice.apply-Dy4rVG6K.js";import"./openai-model-default-CzXGNcAh.js";import"./model-picker-Do5aHFkC.js";import"./auth-choice.apply.transformers-Be8599JD.js";import{n as warnIfModelConfigLooksOff,t as resolvePreferredProviderForAuthChoice}from"./auth-choice-KcathmTY.js";export{applyAuthChoice,resolvePreferredProviderForAuthChoice,warnIfModelConfigLooksOff};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./embedded-helpers-2fP2Yq8h.js";import"./reply-
|
|
1
|
+
import"./paths-5FcIFMsj.js";import"./utils-DbaBVFaK.js";import"./embedded-helpers-2fP2Yq8h.js";import"./reply-BuUSdq2L.js";import"./session-key-EoB0qaG9.js";import"./builderforce-root-D64_sXEi.js";import"./subsystem-B3TqcCrZ.js";import"./registry-TdK-aV05.js";import"./logger-Bch0bx9c.js";import"./exec-DdcIjeyn.js";import"./agent-scope-DPtjOxzp.js";import"./src-CA0fU67C.js";import"./model-selection-Doyvd4lU.js";import"./env-file-D1MDi-AM.js";import"./boolean-Cnh1KNl1.js";import"./env-BIdU5BAp.js";import"./src-BifagO7i.js";import"./io-BNtgT4VB.js";import"./manifest-registry-BJCfNV1a.js";import"./config-BD801bpx.js";import"./runner-C3k1sKdu.js";import"./model-catalog-BoiWqBTw.js";import"./sandbox-1jtP0nhr.js";import"./chrome-Bfprrnm1.js";import"./tailscale-DLkpGquM.js";import"./auth-lebUHrkd.js";import"./server-context-DKdrUePN.js";import"./frontmatter-3D1EdC1L.js";import"./skills-Ba4ftrB-.js";import"./plugin-skills-B11rggZh.js";import"./routes-CRrqIFJR.js";import"./redact-BHdfp2MZ.js";import"./errors-B1MIg3g-.js";import"./paths-cR8ct-Y3.js";import"./ssrf-p9k-iapc.js";import"./image-ops-C8IUQKjn.js";import"./store-CmHBQ-yX.js";import"./ports-DgmEDNOm.js";import"./trash-DD2Hc5oq.js";import"./sessions-BPr0-lkT.js";import"./message-channel-D_jXxXQj.js";import"./plugins-D5zP6ENo.js";import"./accounts-o35LU_iy.js";import"./accounts-rmXEiebi.js";import"./accounts-BLueHgKj.js";import"./bindings-DR59065T.js";import"./send-l9WWK31e.js";import"./send-CVgJk5kN.js";import"./paths-DJ6rztqJ.js";import"./tool-images-B7b_OiMz.js";import"./tool-display-ByOZtWvA.js";import"./fetch-guard-8mwt3-hm.js";import"./api-key-rotation-Yn3MpU4F.js";import"./fetch-BuOLY9KP.js";import"./sqlite-C39E12XS.js";import"./tokens-CCU3zO-D.js";import"./project-context-store-Dbbjk8CQ.js";import"./with-timeout-CPd4-suw.js";import"./deliver-BiGCWHvZ.js";import"./send-CRSlal5z.js";import"./workspace-D4LK4thI.js";import"./reply-prefix-zIMgi6K6.js";import"./memory-cli-D-Khe5Ij.js";import"./manager-DNIg84rj.js";import"./retry-DlVhg5qu.js";import"./client-xfoidwPI.js";import"./call-CJq3iGqu.js";import"./common-BTbIhLyt.js";import"./chunk-FCBlVOyo.js";import"./markdown-tables-P6uoUSFa.js";import"./ir-5BNoIXZm.js";import"./render-D1dVTEB1.js";import"./builderforcellm-syscheck-Cp4LMft_.js";import"./send-D_6wd5Y3.js";import"./outbound-attachment-C7wByQO5.js";import"./fetch-DnVtDecb.js";import"./delivery-queue-CXKynF1P.js";import"./channel-activity-CCNDbdD3.js";import"./tables-ERcoWFDp.js";import"./pairing-store-C8gtsUDG.js";import"./links-BgWWaaOT.js";import"./cli-utils-LBYKdNFb.js";import"./help-format-Qfk2vDNX.js";import"./progress-BfOtdN6b.js";import"./resolve-route-D49haUnv.js";import"./replies-DAwcEPGb.js";import"./refresh-TiC_kLgE.js";import"./coding-tools.policy-COe2xa9K.js";import"./send-BIMaIwQV.js";import"./onboard-helpers-BmYUjl4j.js";import"./prompt-style-BpVK43GK.js";import"./pairing-labels-CD0lPAfY.js";import"./session-cost-usage-BjH7mxVj.js";import"./usage-format-DGf8ZWPH.js";import"./provider-usage-QGVVADJa.js";import"./active-listener-Dcg19lJG.js";import"./exec-approvals-BpVPDVtV.js";import"./nodes-screen-C3TDIi8d.js";import"./project-context-BLpMH93w.js";import"./control-service-DKBAemtq.js";import"./stagger-8EkqkqJv.js";import"./channel-selection-DyAvzlY8.js";import"./mamba-state-engine-BQuRdgMU.js";import"./transformers-stream-D7nRu4Qu.js";import"./shared-DXDwFhUI.js";import"./onboard-auth.credentials-uekJMiYv.js";import"./auth-token-CPSeBkJC.js";import"./logging-DHa3jQN3.js";import"./provider-auth-helpers-y1X8xKVE.js";import{t as applyAuthChoice}from"./auth-choice.apply-ChrTTHkK.js";import"./openai-model-default-BirkY0mR.js";import"./model-picker-CCvGdvzM.js";import"./auth-choice.apply.transformers-CgfGlqy1.js";export{applyAuthChoice};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as resolveAgentWorkspaceDir,i as resolveAgentDir,k as resolveDefaultAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-DPtjOxzp.js";import{a as currentAnthropicModelId}from"./src-CA0fU67C.js";import{F as VENICE_DEFAULT_MODEL_REF,Ft as isHuggingfacePolicyLocked,H as SYNTHETIC_DEFAULT_MODEL_REF,It as CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF,Jt as generateChutesPkce,Kt as CHUTES_AUTHORIZE_ENDPOINT,N as resolveOllamaApiBase,Pt as discoverHuggingfaceModels,Xt as loginOpenAICodex,Yt as parseOAuthCallbackInput,in as ensureAuthProfileStore,ln as resolveBuilderForceAgentsAgentDir,nn as upsertAuthProfile,qt as exchangeChutesCodeForTokens,rn as upsertAuthProfileWithLock,xt as resolveEnvApiKey,zt as resolveAuthProfileOrder}from"./model-selection-Doyvd4lU.js";import{t as normalizeBaseUrl$1}from"./normalize-base-url-DmugqkQ6.js";import{a as upsertSharedEnvVar}from"./env-file-D1MDi-AM.js";import{r as isLoopbackHost}from"./ws-Bbu03j3h.js";import{d as openUrl}from"./onboard-helpers-BmYUjl4j.js";import{t as enablePluginInConfig}from"./enable-Dm2hiZTt.js";import{C as setXaiApiKey,D as KIMI_CODING_MODEL_REF,E as writeOAuthCredentials,F as MOONSHOT_DEFAULT_MODEL_REF,I as QIANFAN_DEFAULT_MODEL_REF,S as setVercelAiGatewayApiKey,T as setZaiApiKey,_ as setOpenrouterApiKey,a as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF,b as setTogetherApiKey,c as setAnthropicApiKey,d as setHuggingfaceApiKey,f as setKimiCodingApiKey,g as setOpencodeZenApiKey,h as setMoonshotApiKey,i as TOGETHER_DEFAULT_MODEL_REF,l as setCloudflareAiGatewayConfig,m as setMinimaxApiKey,n as LITELLM_DEFAULT_MODEL_REF,o as XIAOMI_DEFAULT_MODEL_REF,p as setLitellmApiKey,r as OPENROUTER_DEFAULT_MODEL_REF,s as ZAI_DEFAULT_MODEL_REF,t as HUGGINGFACE_DEFAULT_MODEL_REF,u as setGeminiApiKey,v as setQianfanApiKey,w as setXiaomiApiKey,x as setVeniceApiKey,y as setSyntheticApiKey,z as XAI_DEFAULT_MODEL_REF}from"./onboard-auth.credentials-uekJMiYv.js";import{A as applyXaiConfig,B as applyVercelAiGatewayConfig,C as applyQianfanProviderConfig,D as applyTogetherProviderConfig,E as applyTogetherConfig,F as applyZaiProviderConfig,H as applyAgentDefaultModelPrimary,I as applyLitellmConfig,L as applyLitellmProviderConfig,M as applyXiaomiConfig,N as applyXiaomiProviderConfig,O as applyVeniceConfig,P as applyZaiConfig,R as applyCloudflareAiGatewayConfig,S as applyQianfanConfig,T as applySyntheticProviderConfig,V as applyVercelAiGatewayProviderConfig,_ as applyMoonshotConfigCn,a as applyMinimaxApiConfig,b as applyOpenrouterConfig,c as applyMinimaxApiProviderConfigCn,d as applyAuthProfileConfig,g as applyMoonshotConfig,h as applyKimiCodeProviderConfig,i as applyOpencodeZenProviderConfig,j as applyXaiProviderConfig,k as applyVeniceProviderConfig,l as applyMinimaxConfig,m as applyKimiCodeConfig,n as validateAnthropicSetupToken,o as applyMinimaxApiConfigCn,p as applyHuggingfaceProviderConfig,r as applyOpencodeZenConfig,s as applyMinimaxApiProviderConfig,t as buildTokenProfileId,u as applyMinimaxProviderConfig,v as applyMoonshotProviderConfig,w as applySyntheticConfig,x as applyOpenrouterProviderConfig,y as applyMoonshotProviderConfigCn,z as applyCloudflareAiGatewayProviderConfig}from"./auth-token-CPSeBkJC.js";import{a as createVpsAwareOAuthHandlers,c as githubCopilotLoginCommand,i as resolveProviderMatch,n as mergeConfigPatch,o as isRemoteEnvironment,r as pickAuthMethod,s as resolvePluginProviders,t as applyDefaultModel}from"./provider-auth-helpers-
|
|
1
|
+
import{c as resolveAgentWorkspaceDir,i as resolveAgentDir,k as resolveDefaultAgentWorkspaceDir,l as resolveDefaultAgentId}from"./agent-scope-DPtjOxzp.js";import{a as currentAnthropicModelId}from"./src-CA0fU67C.js";import{F as VENICE_DEFAULT_MODEL_REF,Ft as isHuggingfacePolicyLocked,H as SYNTHETIC_DEFAULT_MODEL_REF,It as CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF,Jt as generateChutesPkce,Kt as CHUTES_AUTHORIZE_ENDPOINT,N as resolveOllamaApiBase,Pt as discoverHuggingfaceModels,Xt as loginOpenAICodex,Yt as parseOAuthCallbackInput,in as ensureAuthProfileStore,ln as resolveBuilderForceAgentsAgentDir,nn as upsertAuthProfile,qt as exchangeChutesCodeForTokens,rn as upsertAuthProfileWithLock,xt as resolveEnvApiKey,zt as resolveAuthProfileOrder}from"./model-selection-Doyvd4lU.js";import{t as normalizeBaseUrl$1}from"./normalize-base-url-DmugqkQ6.js";import{a as upsertSharedEnvVar}from"./env-file-D1MDi-AM.js";import{r as isLoopbackHost}from"./ws-Bbu03j3h.js";import{d as openUrl}from"./onboard-helpers-BmYUjl4j.js";import{t as enablePluginInConfig}from"./enable-Dm2hiZTt.js";import{C as setXaiApiKey,D as KIMI_CODING_MODEL_REF,E as writeOAuthCredentials,F as MOONSHOT_DEFAULT_MODEL_REF,I as QIANFAN_DEFAULT_MODEL_REF,S as setVercelAiGatewayApiKey,T as setZaiApiKey,_ as setOpenrouterApiKey,a as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF,b as setTogetherApiKey,c as setAnthropicApiKey,d as setHuggingfaceApiKey,f as setKimiCodingApiKey,g as setOpencodeZenApiKey,h as setMoonshotApiKey,i as TOGETHER_DEFAULT_MODEL_REF,l as setCloudflareAiGatewayConfig,m as setMinimaxApiKey,n as LITELLM_DEFAULT_MODEL_REF,o as XIAOMI_DEFAULT_MODEL_REF,p as setLitellmApiKey,r as OPENROUTER_DEFAULT_MODEL_REF,s as ZAI_DEFAULT_MODEL_REF,t as HUGGINGFACE_DEFAULT_MODEL_REF,u as setGeminiApiKey,v as setQianfanApiKey,w as setXiaomiApiKey,x as setVeniceApiKey,y as setSyntheticApiKey,z as XAI_DEFAULT_MODEL_REF}from"./onboard-auth.credentials-uekJMiYv.js";import{A as applyXaiConfig,B as applyVercelAiGatewayConfig,C as applyQianfanProviderConfig,D as applyTogetherProviderConfig,E as applyTogetherConfig,F as applyZaiProviderConfig,H as applyAgentDefaultModelPrimary,I as applyLitellmConfig,L as applyLitellmProviderConfig,M as applyXiaomiConfig,N as applyXiaomiProviderConfig,O as applyVeniceConfig,P as applyZaiConfig,R as applyCloudflareAiGatewayConfig,S as applyQianfanConfig,T as applySyntheticProviderConfig,V as applyVercelAiGatewayProviderConfig,_ as applyMoonshotConfigCn,a as applyMinimaxApiConfig,b as applyOpenrouterConfig,c as applyMinimaxApiProviderConfigCn,d as applyAuthProfileConfig,g as applyMoonshotConfig,h as applyKimiCodeProviderConfig,i as applyOpencodeZenProviderConfig,j as applyXaiProviderConfig,k as applyVeniceProviderConfig,l as applyMinimaxConfig,m as applyKimiCodeConfig,n as validateAnthropicSetupToken,o as applyMinimaxApiConfigCn,p as applyHuggingfaceProviderConfig,r as applyOpencodeZenConfig,s as applyMinimaxApiProviderConfig,t as buildTokenProfileId,u as applyMinimaxProviderConfig,v as applyMoonshotProviderConfig,w as applySyntheticConfig,x as applyOpenrouterProviderConfig,y as applyMoonshotProviderConfigCn,z as applyCloudflareAiGatewayProviderConfig}from"./auth-token-CPSeBkJC.js";import{a as createVpsAwareOAuthHandlers,c as githubCopilotLoginCommand,i as resolveProviderMatch,n as mergeConfigPatch,o as isRemoteEnvironment,r as pickAuthMethod,s as resolvePluginProviders,t as applyDefaultModel}from"./provider-auth-helpers-y1X8xKVE.js";import{a as GOOGLE_GEMINI_DEFAULT_MODEL,i as detectZaiEndpoint,n as applyOpenAIConfig,o as applyGoogleGeminiModelDefault,r as applyOpenAIProviderConfig,s as ensureModelAllowlistEntry,t as OPENAI_DEFAULT_MODEL}from"./openai-model-default-BirkY0mR.js";import{c as applyOpenAICodexModelDefault,o as promptAndConfigureVllm,r as applyPrimaryModel,s as OPENAI_CODEX_DEFAULT_MODEL}from"./model-picker-CCvGdvzM.js";import{s as applyAuthChoiceTransformers}from"./auth-choice.apply.transformers-CgfGlqy1.js";import{randomBytes}from"node:crypto";import{createServer}from"node:http";const DEFAULT_KEY_PREVIEW={head:4,tail:4};function normalizeApiKeyInput(raw){let trimmed=String(raw??``).trim();if(!trimmed)return``;let assignmentMatch=trimmed.match(/^(?:export\s+)?[A-Za-z_][A-Za-z0-9_]*\s*=\s*(.+)$/),valuePart=assignmentMatch?assignmentMatch[1].trim():trimmed,unquoted=valuePart.length>=2&&(valuePart.startsWith(`"`)&&valuePart.endsWith(`"`)||valuePart.startsWith(`'`)&&valuePart.endsWith(`'`)||valuePart.startsWith("`")&&valuePart.endsWith("`"))?valuePart.slice(1,-1):valuePart;return(unquoted.endsWith(`;`)?unquoted.slice(0,-1):unquoted).trim()}const validateApiKeyInput=value=>normalizeApiKeyInput(value).length>0?void 0:`Required`;function formatApiKeyPreview(raw,opts={}){let trimmed=raw.trim();if(!trimmed)return`…`;let head=opts.head??DEFAULT_KEY_PREVIEW.head,tail=opts.tail??DEFAULT_KEY_PREVIEW.tail;if(trimmed.length<=head+tail){let shortHead=Math.min(2,trimmed.length),shortTail=Math.min(2,trimmed.length-shortHead);return shortTail<=0?`${trimmed.slice(0,shortHead)}…`:`${trimmed.slice(0,shortHead)}…${trimmed.slice(-shortTail)}`}return`${trimmed.slice(0,head)}…${trimmed.slice(-tail)}`}const DEFAULT_ANTHROPIC_MODEL=`anthropic/${currentAnthropicModelId(`sonnet`)}`;async function applyAuthChoiceAnthropic(params){if(params.authChoice===`setup-token`||params.authChoice===`oauth`||params.authChoice===`token`){let nextConfig=params.config;await params.prompter.note(["Run `claude setup-token` in your terminal.",`Then paste the generated token below.`].join(`
|
|
2
2
|
`),`Anthropic setup-token`);let tokenRaw=await params.prompter.text({message:`Paste Anthropic setup-token`,validate:value=>validateAnthropicSetupToken(String(value??``))}),token=String(tokenRaw??``).trim(),profileNameRaw=await params.prompter.text({message:`Token name (blank = default)`,placeholder:`default`}),provider=`anthropic`,namedProfileId=buildTokenProfileId({provider,name:String(profileNameRaw??``)});return await upsertAuthProfile({profileId:namedProfileId,agentDir:params.agentDir,credential:{type:`token`,provider,token}}),nextConfig=applyAuthProfileConfig(nextConfig,{profileId:namedProfileId,provider,mode:`token`}),params.setDefaultModel&&(nextConfig=applyAgentDefaultModelPrimary(nextConfig,DEFAULT_ANTHROPIC_MODEL)),{config:nextConfig}}if(params.authChoice===`apiKey`){if(params.opts?.tokenProvider&¶ms.opts.tokenProvider!==`anthropic`)return null;let nextConfig=params.config,hasCredential=!1,envKey=process.env.ANTHROPIC_API_KEY?.trim();if(params.opts?.token&&(await setAnthropicApiKey(normalizeApiKeyInput(params.opts.token),params.agentDir),hasCredential=!0),!hasCredential&&envKey&&await params.prompter.confirm({message:`Use existing ANTHROPIC_API_KEY (env, ${formatApiKeyPreview(envKey)})?`,initialValue:!0})&&(await setAnthropicApiKey(envKey,params.agentDir),hasCredential=!0),!hasCredential){let key=await params.prompter.text({message:`Enter Anthropic API key`,validate:validateApiKeyInput});await setAnthropicApiKey(normalizeApiKeyInput(String(key??``)),params.agentDir)}return nextConfig=applyAuthProfileConfig(nextConfig,{profileId:`anthropic:default`,provider:`anthropic`,mode:`api_key`}),params.setDefaultModel&&(nextConfig=applyAgentDefaultModelPrimary(nextConfig,DEFAULT_ANTHROPIC_MODEL)),{config:nextConfig}}return null}function createAuthChoiceAgentModelNoter(params){return async model=>{params.agentId&&await params.prompter.note(`Default model set to ${model} for agent "${params.agentId}".`,`Model configured`)}}async function applyDefaultModelChoice(params){if(params.setDefaultModel){let next=params.applyDefaultConfig(params.config);return params.noteDefault&&await params.prompter.note(`Default model set to ${params.noteDefault}`,`Model configured`),{config:next}}let nextWithModel=ensureModelAllowlistEntry({cfg:params.applyProviderConfig(params.config),modelRef:params.defaultModel});return await params.noteAgentModel(params.defaultModel),{config:nextWithModel,agentModelOverride:params.defaultModel}}async function applyAuthChoiceHuggingface(params){if(params.authChoice!==`huggingface-api-key`)return null;let nextConfig=params.config,agentModelOverride,noteAgentModel=createAuthChoiceAgentModelNoter(params),hasCredential=!1,hfKey=``;if(!hasCredential&¶ms.opts?.token&¶ms.opts.tokenProvider===`huggingface`&&(hfKey=normalizeApiKeyInput(params.opts.token),await setHuggingfaceApiKey(hfKey,params.agentDir),hasCredential=!0),hasCredential||await params.prompter.note([`Hugging Face Inference Providers offer OpenAI-compatible chat completions.`,`Create a token at: https://huggingface.co/settings/tokens (fine-grained, 'Make calls to Inference Providers').`].join(`
|
|
3
3
|
`),`Hugging Face`),!hasCredential){let envKey=resolveEnvApiKey(`huggingface`);envKey&&await params.prompter.confirm({message:`Use existing Hugging Face token (${envKey.source}, ${formatApiKeyPreview(envKey.apiKey)})?`,initialValue:!0})&&(hfKey=envKey.apiKey,await setHuggingfaceApiKey(hfKey,params.agentDir),hasCredential=!0)}if(!hasCredential){let key=await params.prompter.text({message:`Enter Hugging Face API key (HF token)`,validate:validateApiKeyInput});hfKey=normalizeApiKeyInput(String(key??``)),await setHuggingfaceApiKey(hfKey,params.agentDir)}nextConfig=applyAuthProfileConfig(nextConfig,{profileId:`huggingface:default`,provider:`huggingface`,mode:`api_key`});let models=await discoverHuggingfaceModels(hfKey),options=[];for(let m of models){let baseRef=`huggingface/${m.id}`,label=m.name??m.id;options.push({value:baseRef,label}),options.push({value:`${baseRef}:cheapest`,label:`${label} (cheapest)`}),options.push({value:`${baseRef}:fastest`,label:`${label} (fastest)`})}let defaultRef=HUGGINGFACE_DEFAULT_MODEL_REF;options.sort((a,b)=>a.value===defaultRef?-1:b.value===defaultRef?1:a.label.localeCompare(b.label,void 0,{sensitivity:`base`}));let selectedModelRef=options.length===0?defaultRef:options.length===1?options[0].value:await params.prompter.select({message:`Default Hugging Face model`,options,initialValue:options.some(o=>o.value===defaultRef)?defaultRef:options[0].value});isHuggingfacePolicyLocked(selectedModelRef)&&await params.prompter.note(`Provider locked — router will choose backend by cost or speed.`,`Hugging Face`);let applied=await applyDefaultModelChoice({config:nextConfig,setDefaultModel:params.setDefaultModel,defaultModel:selectedModelRef,applyDefaultConfig:config=>{let withProvider=applyHuggingfaceProviderConfig(config),existingModel=withProvider.agents?.defaults?.model;return ensureModelAllowlistEntry({cfg:{...withProvider,agents:{...withProvider.agents,defaults:{...withProvider.agents?.defaults,model:{...existingModel&&typeof existingModel==`object`&&`fallbacks`in existingModel?{fallbacks:existingModel.fallbacks}:{},primary:selectedModelRef}}}},modelRef:selectedModelRef})},applyProviderConfig:applyHuggingfaceProviderConfig,noteDefault:selectedModelRef,noteAgentModel,prompter:params.prompter});return nextConfig=applied.config,agentModelOverride=applied.agentModelOverride??agentModelOverride,{config:nextConfig,agentModelOverride}}async function applyAuthChoiceOpenRouter(params){let nextConfig=params.config,agentModelOverride,noteAgentModel=createAuthChoiceAgentModelNoter(params),store=await ensureAuthProfileStore(params.agentDir,{allowKeychainPrompt:!1}),existingProfileId=resolveAuthProfileOrder({cfg:nextConfig,store,provider:`openrouter`}).find(profileId=>!!store.profiles[profileId]),existingCred=existingProfileId?store.profiles[existingProfileId]:void 0,profileId=`openrouter:default`,mode=`api_key`,hasCredential=!1;if(existingProfileId&&existingCred?.type&&(profileId=existingProfileId,mode=existingCred.type===`oauth`?`oauth`:existingCred.type===`token`?`token`:`api_key`,hasCredential=!0),!hasCredential&¶ms.opts?.token&¶ms.opts?.tokenProvider===`openrouter`&&(await setOpenrouterApiKey(normalizeApiKeyInput(params.opts.token),params.agentDir),hasCredential=!0),!hasCredential){let envKey=resolveEnvApiKey(`openrouter`);envKey&&await params.prompter.confirm({message:`Use existing OPENROUTER_API_KEY (${envKey.source}, ${formatApiKeyPreview(envKey.apiKey)})?`,initialValue:!0})&&(await setOpenrouterApiKey(envKey.apiKey,params.agentDir),hasCredential=!0)}if(!hasCredential){let key=await params.prompter.text({message:`Enter OpenRouter API key`,validate:validateApiKeyInput});await setOpenrouterApiKey(normalizeApiKeyInput(String(key??``)),params.agentDir),hasCredential=!0}hasCredential&&(nextConfig=applyAuthProfileConfig(nextConfig,{profileId,provider:`openrouter`,mode}));let applied=await applyDefaultModelChoice({config:nextConfig,setDefaultModel:params.setDefaultModel,defaultModel:OPENROUTER_DEFAULT_MODEL_REF,applyDefaultConfig:applyOpenrouterConfig,applyProviderConfig:applyOpenrouterProviderConfig,noteDefault:OPENROUTER_DEFAULT_MODEL_REF,noteAgentModel,prompter:params.prompter});return nextConfig=applied.config,agentModelOverride=applied.agentModelOverride??agentModelOverride,{config:nextConfig,agentModelOverride}}const OPENCODE_ZEN_DEFAULT_MODEL=`opencode/claude-opus-4-6`;async function applyAuthChoiceApiProviders(params){let nextConfig=params.config,agentModelOverride,noteAgentModel=createAuthChoiceAgentModelNoter(params),authChoice=params.authChoice;authChoice===`apiKey`&¶ms.opts?.tokenProvider&¶ms.opts.tokenProvider!==`anthropic`&¶ms.opts.tokenProvider!==`openai`&&(params.opts.tokenProvider===`openrouter`?authChoice=`openrouter-api-key`:params.opts.tokenProvider===`litellm`?authChoice=`litellm-api-key`:params.opts.tokenProvider===`vercel-ai-gateway`?authChoice=`ai-gateway-api-key`:params.opts.tokenProvider===`cloudflare-ai-gateway`?authChoice=`cloudflare-ai-gateway-api-key`:params.opts.tokenProvider===`moonshot`?authChoice=`moonshot-api-key`:params.opts.tokenProvider===`kimi-code`||params.opts.tokenProvider===`kimi-coding`?authChoice=`kimi-code-api-key`:params.opts.tokenProvider===`google`?authChoice=`gemini-api-key`:params.opts.tokenProvider===`zai`?authChoice=`zai-api-key`:params.opts.tokenProvider===`xiaomi`?authChoice=`xiaomi-api-key`:params.opts.tokenProvider===`synthetic`?authChoice=`synthetic-api-key`:params.opts.tokenProvider===`venice`?authChoice=`venice-api-key`:params.opts.tokenProvider===`together`?authChoice=`together-api-key`:params.opts.tokenProvider===`huggingface`?authChoice=`huggingface-api-key`:params.opts.tokenProvider===`opencode`?authChoice=`opencode-zen`:params.opts.tokenProvider===`qianfan`&&(authChoice=`qianfan-api-key`));async function ensureMoonshotApiKeyCredential(promptMessage){let hasCredential=!1;!hasCredential&¶ms.opts?.token&¶ms.opts?.tokenProvider===`moonshot`&&(await setMoonshotApiKey(normalizeApiKeyInput(params.opts.token),params.agentDir),hasCredential=!0);let envKey=resolveEnvApiKey(`moonshot`);if(envKey&&await params.prompter.confirm({message:`Use existing MOONSHOT_API_KEY (${envKey.source}, ${formatApiKeyPreview(envKey.apiKey)})?`,initialValue:!0})&&(await setMoonshotApiKey(envKey.apiKey,params.agentDir),hasCredential=!0),!hasCredential){let key=await params.prompter.text({message:promptMessage,validate:validateApiKeyInput});await setMoonshotApiKey(normalizeApiKeyInput(String(key??``)),params.agentDir)}}if(authChoice===`openrouter-api-key`)return applyAuthChoiceOpenRouter(params);if(authChoice===`builderforcellm`){await params.prompter.note(`Using BuilderForceAgentsLLM default proxy (no local API key required).`,`BuilderForceAgentsLLM`);let defaultModel=`builderforcellm/auto`,applied=await applyDefaultModelChoice({config:nextConfig,setDefaultModel:params.setDefaultModel,defaultModel,applyDefaultConfig:config=>applyAgentDefaultModelPrimary(config,defaultModel),applyProviderConfig:config=>config,noteDefault:defaultModel,noteAgentModel,prompter:params.prompter});return nextConfig=applied.config,agentModelOverride=applied.agentModelOverride??agentModelOverride,{config:nextConfig,agentModelOverride}}if(authChoice===`litellm-api-key`){let store=await ensureAuthProfileStore(params.agentDir,{allowKeychainPrompt:!1}),existingProfileId=resolveAuthProfileOrder({cfg:nextConfig,store,provider:`litellm`}).find(profileId=>!!store.profiles[profileId]),existingCred=existingProfileId?store.profiles[existingProfileId]:void 0,profileId=`litellm:default`,hasCredential=!1;if(existingProfileId&&existingCred?.type===`api_key`&&(profileId=existingProfileId,hasCredential=!0),!hasCredential&¶ms.opts?.token&¶ms.opts?.tokenProvider===`litellm`&&(await setLitellmApiKey(normalizeApiKeyInput(params.opts.token),params.agentDir),hasCredential=!0),!hasCredential){await params.prompter.note(`LiteLLM provides a unified API to 100+ LLM providers.
|
|
4
4
|
Get your API key from your LiteLLM proxy or https://litellm.ai
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.js";import"./src-DvWaTze9.js";import"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-
|
|
1
|
+
import"./paths-BHg-VHB4.js";import"./registry-Cv7CoWAs.js";import"./utils-BP60e80M.js";import"./subsystem-C4b1Von0.js";import"./boolean-ssGoaBPk.js";import"./env-BoE8QSib.js";import"./warning-filter-nSTjpMIH.js";import"./auth-profiles-CuAFgjuQ.js";import"./src-DvWaTze9.js";import"./logger-wuOr7HKl.js";import"./session-key-CksCYipj.js";import"./builderforce-root-DY1qbWNX.js";import"./exec-COgsU9ql.js";import"./agent-scope-CufEmNj_.js";import"./env-file-DeS6x2OL.js";import"./src-C8c9naq-.js";import"./io-CsCa3_1Z.js";import"./manifest-registry-009gLJ4l.js";import"./config-DmxNxDRW.js";import"./model-discovery-RTHjxEvZ.js";import"./model-catalog-D8OQ7p7I.js";import"./frontmatter-CaY7feZm.js";import"./skills-D3MwwPOH.js";import"./plugin-skills-pSFUbhg_.js";import"./refresh-C4vwneXT.js";import"./client-CGgp3zkQ.js";import"./call-O-iC_P5t.js";import"./message-channel-z5YRpR2d.js";import"./subagent-registry-m_x-JRkR.js";import"./sessions-CmJXMlLP.js";import"./project-context-store-BNXYrLJz.js";import"./tokens-CFKkpUIu.js";import"./plugins-1Mn6RiNf.js";import"./accounts-BkTLjSrD.js";import"./bindings-CKSDlQ1i.js";import"./send-CGcNbbV7.js";import"./send-DPRTlcZh.js";import"./with-timeout-CBXVw0An.js";import"./deliver--eLCRJc2.js";import"./accounts-Cx82nj4E.js";import"./send-DfHAMPcD.js";import"./image-ops-CotJhwRR.js";import"./redact-CgO7wehS.js";import"./errors-tAt19c1E.js";import"./embedded-helpers-BZGiFZlP.js";import"./sandbox-C-Owvt1-.js";import"./chrome-BfwLDcFc.js";import"./tailscale-DV-yOmYe.js";import"./auth-ChecwOXS.js";import"./server-context-BjYYSEVE.js";import"./routes-Dnfsevhw.js";import"./paths-BnOjueoX.js";import"./ssrf-DJXLYZ0d.js";import"./store-DHD2IEgd.js";import"./ports-DTku9NSx.js";import"./trash-C3zmJ_O7.js";import"./accounts-DcoaLXKI.js";import"./paths-ClsbsPQP.js";import"./tool-images-CCpqFtrL.js";import"./workspace-waBqRxiy.js";import"./reply-prefix-Cg7AqaK0.js";import"./sqlite-CIGM1WKg.js";import"./memory-cli-CiwWAhp5.js";import"./manager-Bjb9ptCz.js";import"./gemini-auth-KBXMhaRQ.js";import"./retry-B151Hej5.js";import"./common-BfwMxpLu.js";import"./runner-DwPaM8kz.js";import"./tool-display-Cs4hDP1f.js";import"./chunk-Dly7lM4r.js";import"./markdown-tables-B1Rx8hv6.js";import"./fetch-guard-DnXqPKae.js";import"./fetch-Cn_THzz8.js";import"./ir-CSdQJPqu.js";import"./render-DlHYsbvQ.js";import"./builderforcellm-syscheck-tquUDu_7.js";import"./session-utils-D2_j4c6U.js";import"./coding-tools.policy-BwdtwuXY.js";import"./pairing-store-BCsvhT6-.js";import"./fetch-DnWD6ydH.js";import"./exec-approvals-D7ZPAZpt.js";import"./nodes-screen-D6GHv_S0.js";import"./session-cost-usage-S0nkbPoW.js";import"./usage-format-5sp5AMSu.js";import"./provider-usage-DsI3qJRy.js";import"./send-BOSlm5fG.js";import"./outbound-attachment-BaTYE4qp.js";import"./delivery-queue-Cp3t4Upn.js";import"./project-context-BdK18hVI.js";import"./control-service-Ca0CBlhO.js";import"./stagger-CRe77dWL.js";import"./channel-selection-BLwXhb9t.js";import"./send-BOBan2eG.js";import"./resolve-route-DEIW5uKy.js";import"./channel-activity-DX36RadH.js";import"./tables-CojSfTth.js";import"./links-BKzP7VVP.js";import"./cli-utils-C9pW69LF.js";import"./help-format-CfFf-w62.js";import"./progress-Cqb-jAjT.js";import"./replies-DATdLu15.js";import"./onboard-helpers-D2vxAtv8.js";import"./prompt-style-BMWmaqSC.js";import"./pairing-labels-BUXpRejW.js";import"./active-listener-Di9e1YAD.js";import"./mamba-state-engine-DJt_RpLC.js";import"./transformers-stream-Buj40qHl.js";import"./shared-DUsuqnhk.js";import"./onboard-auth.credentials-CV8n9m_T.js";import"./auth-token-yWeJoLJ8.js";import"./logging-ayt7F7vy.js";import"./provider-auth-helpers-CWUfg9zf.js";import{t as applyAuthChoice}from"./auth-choice.apply-Dy4rVG6K.js";import"./openai-model-default-CzXGNcAh.js";import"./model-picker-Do5aHFkC.js";import"./auth-choice.apply.transformers-Be8599JD.js";export{applyAuthChoice};
|