@iaforged/context-code 2.3.3 → 2.3.5
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/context-bootstrap.js +7 -5
- package/dist/src/commands/login/login.js +1 -1
- package/dist/src/components/BaseTextInput.js +1 -1
- package/dist/src/components/LogoV2/AnimatedClawd.js +1 -1
- package/dist/src/components/LogoV2/Clawd.js +1 -1
- package/dist/src/components/LogoV2/LogoV2.js +1 -1
- package/dist/src/components/LogoV2/WelcomeV2.js +1 -1
- package/dist/src/components/PromptInput/PromptInputFooterLeftSide.js +1 -1
- package/dist/src/components/SessionTokenFooter.js +1 -1
- package/dist/src/components/Spinner.js +1 -1
- package/dist/src/components/Stats.js +1 -1
- package/dist/src/components/TeleportProgress.js +1 -1
- package/dist/src/components/TextInput.js +1 -1
- package/dist/src/components/design-system/ThemeProvider.js +1 -1
- package/dist/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.js +1 -1
- package/dist/src/main.js +1 -1
- package/dist/src/query/stopHooks.js +1 -1
- package/dist/src/screens/REPL.js +1 -1
- package/dist/src/services/PromptSuggestion/promptSuggestion.js +1 -1
- package/dist/src/services/analytics/config.js +1 -1
- package/dist/src/services/analytics/datadog.js +1 -1
- package/dist/src/services/mcp/config.js +1 -1
- package/dist/src/services/tips/tipRegistry.js +1 -1
- package/dist/src/services/toolUseSummary/toolUseSummaryGenerator.js +1 -1
- package/dist/src/tools/BriefTool/UI.js +1 -1
- package/dist/src/utils/computerControlMcp/mcpServer.js +1 -1
- package/dist/src/utils/computerControlMcp/server/.gitattributes +18 -0
- package/dist/src/utils/computerControlMcp/server/Dockerfile +25 -0
- package/dist/src/utils/computerControlMcp/server/LICENSE +21 -0
- package/dist/src/utils/computerControlMcp/server/MANIFEST.in +10 -0
- package/dist/src/utils/computerControlMcp/server/README.md +193 -0
- package/dist/src/utils/computerControlMcp/server/demonstration.gif +0 -0
- package/dist/src/utils/computerControlMcp/server/icon.png +0 -0
- package/dist/src/utils/computerControlMcp/server/pyproject.toml +52 -0
- package/dist/src/utils/computerControlMcp/server/smithery.yaml +13 -0
- package/dist/src/utils/computerControlMcp/server/src/README.md +12 -0
- package/dist/src/utils/computerControlMcp/server/src/computer_control_mcp/FZYTK.TTF +0 -0
- package/dist/src/utils/computerControlMcp/server/src/computer_control_mcp/__init__.py +11 -0
- package/dist/src/utils/computerControlMcp/server/src/computer_control_mcp/__main__.py +21 -0
- package/dist/src/utils/computerControlMcp/server/src/computer_control_mcp/cli.py +128 -0
- package/dist/src/utils/computerControlMcp/server/src/computer_control_mcp/core.py +1008 -0
- package/dist/src/utils/computerControlMcp/server/src/computer_control_mcp/gui.py +126 -0
- package/dist/src/utils/computerControlMcp/server/src/computer_control_mcp/server.py +15 -0
- package/dist/src/utils/computerControlMcp/server/src/computer_control_mcp/test.py +346 -0
- package/dist/src/utils/computerControlMcp/server/src/computer_control_mcp/test_image.png +0 -0
- package/dist/src/utils/computerControlMcp/server/tests/README.md +22 -0
- package/dist/src/utils/computerControlMcp/server/tests/conftest.py +10 -0
- package/dist/src/utils/computerControlMcp/server/tests/rapidocr_test.py +21 -0
- package/dist/src/utils/computerControlMcp/server/tests/run_cli.py +9 -0
- package/dist/src/utils/computerControlMcp/server/tests/run_server.py +15 -0
- package/dist/src/utils/computerControlMcp/server/tests/setup.py +16 -0
- package/dist/src/utils/computerControlMcp/server/tests/test_computer_control.py +161 -0
- package/dist/src/utils/computerControlMcp/server/tests/test_screenshot.py +14 -0
- package/dist/src/utils/computerControlMcp/server/tests/test_wgc_env_var.py +42 -0
- package/dist/src/utils/computerControlMcp/server/tests/test_wgc_screenshot.py +67 -0
- package/dist/src/utils/computerControlMcp/server/uv.lock +4986 -0
- package/dist/src/utils/computerControlMcp/setup.js +1 -1
- package/dist/src/utils/logoV2Utils.js +1 -1
- package/dist/src/utils/model/configs.js +1 -1
- package/dist/src/utils/model/model.js +1 -1
- package/dist/src/utils/model/modelOptions.js +1 -1
- package/dist/src/utils/model/providerModels.js +1 -1
- package/dist/src/utils/sembleMcp/setup.js +1 -1
- package/dist/src/utils/theme.js +1 -1
- package/dist/src/utils/themes/bootstrap.js +1 -1
- package/dist/src/utils/themes/opencodeMapper.js +1 -1
- package/dist/webapp/chunk-VAB2VXFI.js +1 -1
- package/dist/webapp/ngsw.json +1 -1
- package/dist/webapp/polyfills-7R4CRVNH.js +1 -1
- package/package.json +1 -1
package/dist/src/main.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{MACRO as e,feature as o}from"./recovery/bunBundleShim.js";import{createRequire as t}from"module";const s=t(import.meta.url);import{profileCheckpoint as i,profileReport as r}from"./utils/startupProfiler.js";i("main_tsx_entry");import{startMdmRawRead as n}from"./utils/settings/mdm/rawRead.js";n();import{ensureKeychainPrefetchCompleted as a,startKeychainPrefetch as c}from"./utils/secureStorage/keychainPrefetch.js";c();import{Command as l,InvalidArgumentError as d,Option as p}from"@commander-js/extra-typings";import m from"chalk";import{readFileSync as u}from"fs";import g from"lodash-es/mapValues.js";import f from"lodash-es/pickBy.js";import h from"lodash-es/uniqBy.js";import{getOauthConfig as v}from"./constants/oauth.js";import{getRemoteSessionUrl as w}from"./constants/product.js";import{getSystemContext as _,getUserContext as S}from"./context.js";import{init as C,initializeTelemetryAfterTrust as y}from"./entrypoints/init.js";import{addToHistory as E}from"./history.js";import{launchRepl as b}from"./replLauncher.js";import{hasGrowthBookEnvOverride as j,initializeGrowthBook as O,refreshGrowthBookAfterAuthChange as T}from"./services/analytics/growthbook.js";import{fetchBootstrapData as P}from"./services/api/bootstrap.js";import{downloadSessionFiles as A,parseFileSpecs as I}from"./services/api/filesApi.js";import{prefetchPassesEligibility as k}from"./services/api/referral.js";import{prefetchOfficialMcpUrls as D}from"./services/mcp/officialRegistry.js";import{isPolicyAllowed as x,loadPolicyLimits as R,refreshPolicyLimits as M,waitForPolicyLimitsToLoad as N}from"./services/policyLimits/index.js";import{loadRemoteManagedSettings as L,refreshRemoteManagedSettings as U}from"./services/remoteManagedSettings/index.js";import{createSyntheticOutputTool as H,isSyntheticOutputToolEnabled as $}from"./tools/SyntheticOutputTool/SyntheticOutputTool.js";import{getTools as B}from"./tools.js";import{canUserConfigureAdvisor as F,getInitialAdvisorSetting as K,isAdvisorEnabled as q,isValidAdvisorModel as V,modelSupportsAdvisor as z}from"./utils/advisor.js";import{isAgentSwarmsEnabled as W}from"./utils/agentSwarmsEnabled.js";import{count as G,uniq as X}from"./utils/array.js";import{installAsciicastRecorder as Y}from"./utils/asciicast.js";import{getSubscriptionType as J,prefetchAwsCredentialsAndBedRockInfoIfSafe as Q,prefetchGcpCredentialsIfSafe as Z,validateForceLoginOrg as ee}from"./utils/auth.js";import{checkHasTrustDialogAccepted as oe,getGlobalConfig as te,getRemoteControlAtStartup as se,isAutoUpdaterDisabled as ie,saveGlobalConfig as re}from"./utils/config.js";import{seedEarlyInput as ne,stopCapturingEarlyInput as ae}from"./utils/earlyInput.js";import{getInitialEffortSetting as ce,parseEffortValue as le}from"./utils/effort.js";import{getInitialFastModeSetting as de,isFastModeEnabled as pe,prefetchFastModeStatus as me,resolveFastModeStatusFromCache as ue}from"./utils/fastMode.js";import{applyConfigEnvironmentVariables as ge}from"./utils/managedEnv.js";import{createSystemMessage as fe,createUserMessage as he}from"./utils/messages.js";import{getPlatform as ve}from"./utils/platform.js";import{getBaseRenderOptions as we}from"./utils/renderOptions.js";import{getSessionIngressAuthToken as _e}from"./utils/sessionIngressAuth.js";import{settingsChangeDetector as Se}from"./utils/settings/changeDetector.js";import{skillChangeDetector as Ce}from"./utils/skills/skillChangeDetector.js";import{jsonParse as ye,writeFileSync_DEPRECATED as Ee}from"./utils/slowOperations.js";import{computeInitialTeamContext as be}from"./utils/swarm/reconnection.js";import{initializeWarningHandler as je}from"./utils/warningHandler.js";import{isWorktreeModeEnabled as Oe}from"./utils/worktreeModeEnabled.js";const getTeammateUtils=()=>s("./utils/teammate.js"),Te=o("COORDINATOR_MODE")?s("./coordinator/coordinatorMode.js"):null,Pe=o("KAIROS")?s("./assistant/index.js"):null,Ae=o("KAIROS")?s("./assistant/gate.js"):null;import{relative as Ie,resolve as ke}from"path";import{isAnalyticsDisabled as De}from"./services/analytics/config.js";import{getFeatureValue_CACHED_MAY_BE_STALE as xe}from"./services/analytics/growthbook.js";import{logEvent as Re}from"./services/analytics/index.js";import{initializeAnalyticsGates as Me}from"./services/analytics/sink.js";import{getOriginalCwd as Ne,setAdditionalDirectoriesForClaudeMd as Le,setIsRemoteMode as Ue,setMainLoopModelOverride as He,setMainThreadAgentType as $e,setTeleportedSessionInfo as Be}from"./bootstrap/state.js";import{filterCommandsForRemoteMode as Fe,getCommands as Ke}from"./commands.js";import{launchAssistantInstallWizard as qe,launchAssistantSessionChooser as Ve,launchInvalidSettingsDialog as ze,launchResumeChooser as We,launchSnapshotUpdateDialog as Ge,launchTeleportRepoMismatchDialog as Xe,launchTeleportResumeWrapper as Ye}from"./dialogLaunchers.js";import{SHOW_CURSOR as Je}from"./ink/termio/dec.js";import{exitWithError as Qe,exitWithMessage as Ze,getRenderContext as eo,renderAndRun as oo,showSetupScreens as to}from"./interactiveHelpers.js";import{initBuiltinPlugins as so}from"./plugins/bundled/index.js";import{checkQuotaStatus as io}from"./services/claudeAiLimits.js";import{getMcpToolsCommandsAndResources as ro,prefetchAllMcpResources as no}from"./services/mcp/client.js";import{VALID_INSTALLABLE_SCOPES as ao,VALID_UPDATE_SCOPES as co}from"./services/plugins/pluginCliCommands.js";import{initBundledSkills as lo}from"./skills/bundled/index.js";import{getActiveAgentsFromList as po,getAgentDefinitionsWithOverrides as mo,isBuiltInAgent as uo,isCustomAgent as go,parseAgentsFromJson as fo}from"./tools/AgentTool/loadAgentsDir.js";import{assertMinVersion as ho}from"./utils/autoUpdater.js";import{setupClaudeInChrome as vo,shouldAutoEnableClaudeInChrome as wo,shouldEnableClaudeInChrome as _o}from"./utils/claudeInChrome/setup.js";import{getContextWindowForModel as So}from"./utils/context.js";import{loadConversationForResume as Co}from"./utils/conversationRecovery.js";import{buildDeepLinkBanner as yo}from"./utils/deepLink/banner.js";import{hasNodeOption as Eo,isBareMode as bo,isEnvTruthy as jo,isInProtectedNamespace as Oo}from"./utils/envUtils.js";import{refreshExampleCommands as To}from"./utils/exampleCommands.js";import{getWorktreePaths as Po}from"./utils/getWorktreePaths.js";import{findGitRoot as Ao,getBranch as Io,getIsGit as ko,getWorktreeCount as Do}from"./utils/git.js";import{getGhAuthStatus as xo}from"./utils/github/ghAuthStatus.js";import{safeParseJSON as Ro}from"./utils/json.js";import{logError as Mo}from"./utils/log.js";import{getModelDeprecationWarning as No}from"./utils/model/deprecation.js";import{getDefaultMainLoopModel as Lo,getUserSpecifiedModelSetting as Uo,normalizeModelStringForAPI as Ho,parseUserSpecifiedModel as $o}from"./utils/model/model.js";import{ensureModelStringsInitialized as Bo}from"./utils/model/modelStrings.js";import{PERMISSION_MODES as Fo}from"./utils/permissions/PermissionMode.js";import{checkAndDisableBypassPermissions as Ko,getAutoModeEnabledStateIfCached as qo,initializeToolPermissionContext as Vo,initialPermissionModeFromCLI as zo,isDefaultPermissionModeAuto as Wo,parseToolListFromCLI as Go,removeDangerousPermissions as Xo,stripDangerousPermissionsForAutoMode as Yo,verifyAutoModeGateAccess as Jo}from"./utils/permissions/permissionSetup.js";import{cleanupOrphanedPluginVersionsInBackground as Qo}from"./utils/plugins/cacheUtils.js";import{initializeVersionedPlugins as Zo}from"./utils/plugins/installedPluginsManager.js";import{getManagedPluginNames as et}from"./utils/plugins/managedPlugins.js";import{getGlobExclusionsForPluginCache as ot}from"./utils/plugins/orphanedPluginFilter.js";import{getPluginSeedDirs as tt}from"./utils/plugins/pluginDirectories.js";import{countFilesRoundedRg as st}from"./utils/ripgrep.js";import{processSessionStartHooks as it,processSetupHooks as rt}from"./utils/sessionStart.js";import{cacheSessionTitle as nt,getSessionIdFromLog as at,loadTranscriptFromFile as ct,saveAgentSetting as lt,saveMode as dt,searchSessionsByCustomTitle as pt,sessionIdExists as mt}from"./utils/sessionStorage.js";import{ensureMdmSettingsLoaded as ut}from"./utils/settings/mdm/settings.js";import{getInitialSettings as gt,getManagedSettingsKeysForLogging as ft,getSettingsForSource as ht,getSettingsWithErrors as vt}from"./utils/settings/settings.js";import{resetSettingsCache as wt}from"./utils/settings/settingsCache.js";import{DEFAULT_TASKS_MODE_TASK_LIST_ID as _t,TASK_STATUSES as St}from"./utils/tasks.js";import{logPluginLoadErrors as Ct,logPluginsEnabledForSession as yt}from"./utils/telemetry/pluginTelemetry.js";import{logSkillsLoaded as Et}from"./utils/telemetry/skillLoadedEvent.js";import{generateTempFilePath as bt}from"./utils/tempfile.js";import{validateUuid as jt}from"./utils/uuid.js";import{registerMcpAddCommand as Ot}from"./commands/mcp/addCommand.js";import{registerMcpXaaIdpCommand as Tt}from"./commands/mcp/xaaIdpCommand.js";import{logPermissionContextForAnts as Pt}from"./services/internalLogging.js";import{fetchClaudeAIMcpConfigsIfEligible as At}from"./services/mcp/claudeai.js";import{clearServerCache as It}from"./services/mcp/client.js";import{areMcpConfigsAllowedWithEnterpriseMcpConfig as kt,dedupClaudeAiMcpServers as Dt,doesEnterpriseMcpConfigExist as xt,filterMcpServersByPolicy as Rt,getClaudeCodeMcpConfigs as Mt,getMcpServerSignature as Nt,parseMcpConfig as Lt,parseMcpConfigFromFilePath as Ut}from"./services/mcp/config.js";import{excludeCommandsByServer as Ht,excludeResourcesByServer as $t}from"./services/mcp/utils.js";import{isXaaEnabled as Bt}from"./services/mcp/xaaIdpLogin.js";import{getRelevantTips as Ft}from"./services/tips/tipRegistry.js";import{logContextMetrics as Kt}from"./utils/api.js";import{CLAUDE_IN_CHROME_MCP_SERVER_NAME as qt,isClaudeInChromeMCPServer as Vt}from"./utils/claudeInChrome/common.js";import{registerCleanup as zt}from"./utils/cleanupRegistry.js";import{eagerParseCliFlag as Wt}from"./utils/cliArgs.js";import{createEmptyAttributionState as Gt}from"./utils/commitAttribution.js";import{countConcurrentSessions as Xt,registerSession as Yt,updateSessionName as Jt}from"./utils/concurrentSessions.js";import{getCwd as Qt}from"./utils/cwd.js";import{logForDebugging as Zt,setHasFormattedOutput as es}from"./utils/debug.js";import{errorMessage as os,getErrnoCode as ts,isENOENT as ss,TeleportOperationError as is,toError as rs}from"./utils/errors.js";import{getFsImplementation as ns,safeResolvePath as as}from"./utils/fsOperations.js";import{gracefulShutdown as cs,gracefulShutdownSync as ls}from"./utils/gracefulShutdown.js";import{setAllHookEventsEnabled as ds}from"./utils/hooks/hookEvents.js";import{refreshModelCapabilities as ps}from"./utils/model/modelCapabilities.js";import{peekForStdinData as ms,writeToStderr as us}from"./utils/process.js";import{setCwd as gs}from"./utils/Shell.js";import{processResumedConversation as fs}from"./utils/sessionRestore.js";import{parseSettingSourcesFlag as hs}from"./utils/settings/constants.js";import{plural as vs}from"./utils/stringUtils.js";import{getInitialMainLoopModel as ws,getIsNonInteractiveSession as _s,getSdkBetas as Ss,getSessionId as Cs,getUserMsgOptIn as ys,setAllowedChannels as Es,setAllowedSettingSources as bs,setChromeFlagOverride as js,setClientType as Os,setCwdState as Ts,setDirectConnectServerUrl as Ps,setFlagSettingsPath as As,setInitialMainLoopModel as Is,setInlinePlugins as ks,setIsInteractive as Ds,setKairosActive as xs,setOriginalCwd as Rs,setQuestionPreviewFormat as Ms,setSdkBetas as Ns,setSessionBypassPermissionsMode as Ls,setSessionPersistenceDisabled as Us,setSessionSource as Hs,setUserMsgOptIn as $s,switchSession as Bs}from"./bootstrap/state.js";const Fs=o("TRANSCRIPT_CLASSIFIER")?s("./utils/permissions/autoModeState.js"):null;import{migrateAutoUpdatesToSettings as Ks}from"./migrations/migrateAutoUpdatesToSettings.js";import{migrateBypassPermissionsAcceptedToSettings as qs}from"./migrations/migrateBypassPermissionsAcceptedToSettings.js";import{migrateEnableAllProjectMcpServersToSettings as Vs}from"./migrations/migrateEnableAllProjectMcpServersToSettings.js";import{migrateFennecToOpus as zs}from"./migrations/migrateFennecToOpus.js";import{migrateLegacyOpusToCurrent as Ws}from"./migrations/migrateLegacyOpusToCurrent.js";import{migrateOpusToOpus1m as Gs}from"./migrations/migrateOpusToOpus1m.js";import{migrateReplBridgeEnabledToRemoteControlAtStartup as Xs}from"./migrations/migrateReplBridgeEnabledToRemoteControlAtStartup.js";import{migrateSonnet1mToSonnet45 as Ys}from"./migrations/migrateSonnet1mToSonnet45.js";import{migrateSonnet45ToSonnet46 as Js}from"./migrations/migrateSonnet45ToSonnet46.js";import{resetAutoModeOptInForDefaultOffer as Qs}from"./migrations/resetAutoModeOptInForDefaultOffer.js";import{resetProToOpusDefault as Zs}from"./migrations/resetProToOpusDefault.js";import{createRemoteSessionConfig as ei}from"./remote/RemoteSessionManager.js";import{createDirectConnectSession as oi,DirectConnectError as ti}from"./server/createDirectConnectSession.js";import{initializeLspServerManager as si}from"./services/lsp/manager.js";import{shouldEnablePromptSuggestion as ii}from"./services/PromptSuggestion/promptSuggestion.js";import{getDefaultAppState as ri,IDLE_SPECULATION_STATE as ni}from"./state/AppStateStore.js";import{onChangeAppState as ai}from"./state/onChangeAppState.js";import{createStore as ci}from"./state/store.js";import{asSessionId as li}from"./types/ids.js";import{filterAllowedSdkBetas as di}from"./utils/betas.js";import{isInBundledMode as pi,isRunningWithBun as mi}from"./utils/bundledMode.js";import{logForDiagnosticsNoPII as ui}from"./utils/diagLogs.js";import{filterExistingPaths as gi,getKnownPathsForRepo as fi}from"./utils/githubRepoPathMapping.js";import{clearPluginCache as hi,loadAllPluginsCacheOnly as vi}from"./utils/plugins/pluginLoader.js";import{migrateChangelogFromConfig as wi}from"./utils/releaseNotes.js";import{SandboxManager as _i}from"./utils/sandbox/sandbox-adapter.js";import{fetchSession as Si,prepareApiRequest as Ci}from"./utils/teleport/api.js";import{checkOutTeleportedSessionBranch as yi,processMessagesForTeleportResume as Ei,teleportToRemoteWithErrorHandling as bi,validateGitState as ji,validateSessionRepository as Oi}from"./utils/teleport.js";import{shouldEnableThinkingByDefault as Ti}from"./utils/thinking.js";import{initUser as Pi,resetUserCache as Ai}from"./utils/user.js";import{getTmuxInstallInstructions as Ii,isTmuxAvailable as ki,parsePRReference as Di}from"./utils/worktree.js";function logSessionTelemetry(){const e=$o(ws()??Lo());Et(Qt(),So(e,Ss())),vi().then(({enabled:e,errors:o})=>{const t=et();yt(e,t,tt()),Ct(o,t)}).catch(e=>Mo(e))}function getCertEnvVarTelemetry(){const e={};return process.env.NODE_EXTRA_CA_CERTS&&(e.has_node_extra_ca_certs=!0),(process.env.CONTEXT_CODE_CLIENT_CERT||process.env.CLAUDE_CODE_CLIENT_CERT)&&(e.has_client_cert=!0),Eo("--use-system-ca")&&(e.has_use_system_ca=!0),Eo("--use-openssl-ca")&&(e.has_use_openssl_ca=!0),e}i("main_tsx_imports_loaded"),function(){const e=mi(),o=process.execArgv.some(o=>e?/--inspect(-brk)?/.test(o):/--inspect(-brk)?|--debug(-brk)?/.test(o)),t=process.env.NODE_OPTIONS&&/--inspect(-brk)?|--debug(-brk)?/.test(process.env.NODE_OPTIONS);try{const e=global.require("inspector");return!!e.url()||o||t}catch{return o||t}}()&&process.exit(1);export function startDeferredPrefetches(){jo(process.env.CONTEXT_CODE_EXIT_AFTER_FIRST_RENDER)||jo(process.env.CLAUDE_CODE_EXIT_AFTER_FIRST_RENDER)||bo()||(Pi(),S(),function(){if(_s())return ui("info","prefetch_system_context_non_interactive"),void _();oe()?(ui("info","prefetch_system_context_has_trust"),_()):ui("info","prefetch_system_context_skipped_no_trust")}(),Ft(),!jo(process.env.CLAUDE_CODE_USE_BEDROCK)||jo(process.env.CONTEXT_CODE_SKIP_BEDROCK_AUTH)||jo(process.env.CLAUDE_CODE_SKIP_BEDROCK_AUTH)||Q(),!jo(process.env.CLAUDE_CODE_USE_VERTEX)||jo(process.env.CONTEXT_CODE_SKIP_VERTEX_AUTH)||jo(process.env.CLAUDE_CODE_SKIP_VERTEX_AUTH)||Z(),st(Qt(),AbortSignal.timeout(3e3),[]),Me(),D(),ps(),Se.initialize(),bo()||Ce.initialize(),import("./commands/login/login.js"))}function eagerLoadSettings(){i("eagerLoadSettings_start");const e=Wt("--settings");e&&function(e){try{const o=e.trim();let t;if(o.startsWith("{")&&o.endsWith("}"))Ro(o)||(process.stderr.write(m.red("Error: Invalid JSON provided to --settings\n")),process.exit(1)),t=bt("claude-settings",".json",{contentHash:o}),Ee(t,o,"utf8");else{const{resolvedPath:o}=as(ns(),e);try{u(o,"utf8")}catch(e){throw ss(e)&&(process.stderr.write(m.red(`Error: Settings file not found: ${o}\n`)),process.exit(1)),e}t=o}As(t),wt()}catch(e){e instanceof Error&&Mo(e),process.stderr.write(m.red(`Error processing settings: ${os(e)}\n`)),process.exit(1)}}(e);const o=Wt("--setting-sources");void 0!==o&&function(e){try{const o=hs(e);bs(o),wt()}catch(e){e instanceof Error&&Mo(e),process.stderr.write(m.red(`Error processing --setting-sources: ${os(e)}\n`)),process.exit(1)}}(o),i("eagerLoadSettings_end")}const xi=o("DIRECT_CONNECT")?{url:void 0,authToken:void 0,dangerouslySkipPermissions:!1}:void 0,Ri=o("KAIROS")?{sessionId:void 0,discover:!1}:void 0,Mi=o("SSH_REMOTE")?{host:void 0,cwd:void 0,permissionMode:void 0,dangerouslySkipPermissions:!1,local:!1,extraCliArgs:[]}:void 0;export async function main(){if(i("main_function_start"),process.env.NoDefaultCurrentDirectoryInExePath="1",je(),process.on("exit",()=>{!function(){const e=process.stderr.isTTY?process.stderr:process.stdout.isTTY?process.stdout:void 0;e?.write(Je)}()}),process.on("SIGINT",()=>{process.argv.includes("-p")||process.argv.includes("--print")||process.exit(0)}),i("main_warning_handler_initialized"),o("DIRECT_CONNECT")){const e=process.argv.slice(2),o=e.findIndex(e=>e.startsWith("cc://")||e.startsWith("cc+unix://"));if(-1!==o&&xi){const t=e[o],{parseConnectUrl:s}=await import("./server/parseConnectUrl.js"),i=s(t);if(xi.dangerouslySkipPermissions=e.includes("--dangerously-skip-permissions"),e.includes("-p")||e.includes("--print")){const s=e.filter((e,t)=>t!==o),i=s.indexOf("--dangerously-skip-permissions");-1!==i&&s.splice(i,1),process.argv=[process.argv[0],process.argv[1],"open",t,...s]}else{xi.url=i.serverUrl,xi.authToken=i.authToken;const t=e.filter((e,t)=>t!==o),s=t.indexOf("--dangerously-skip-permissions");-1!==s&&t.splice(s,1),process.argv=[process.argv[0],process.argv[1],...t]}}}if(o("LODESTONE")){const e=process.argv.indexOf("--handle-uri");if(-1!==e&&process.argv[e+1]){const{enableConfigs:o}=await import("./utils/config.js");o();const t=process.argv[e+1],{handleDeepLinkUri:s}=await import("./utils/deepLink/protocolHandler.js"),i=await s(t);process.exit(i)}if("darwin"===process.platform&&"com.anthropic.claude-code-url-handler"===process.env.__CFBundleIdentifier){const{enableConfigs:e}=await import("./utils/config.js");e();const{handleUrlSchemeLaunch:o}=await import("./utils/deepLink/protocolHandler.js"),t=await o();process.exit(t??1)}}if(o("KAIROS")&&Ri){const e=process.argv.slice(2);if("assistant"===e[0]){const o=e[1];o&&!o.startsWith("-")?(Ri.sessionId=o,e.splice(0,2),process.argv=[process.argv[0],process.argv[1],...e]):o||(Ri.discover=!0,e.splice(0,1),process.argv=[process.argv[0],process.argv[1],...e])}}if(o("SSH_REMOTE")&&Mi){const e=process.argv.slice(2);if("ssh"===e[0]){const o=e.indexOf("--local");-1!==o&&(Mi.local=!0,e.splice(o,1));const t=e.indexOf("--dangerously-skip-permissions");-1!==t&&(Mi.dangerouslySkipPermissions=!0,e.splice(t,1));const s=e.indexOf("--permission-mode");-1!==s&&e[s+1]&&!e[s+1].startsWith("-")&&(Mi.permissionMode=e[s+1],e.splice(s,2));const i=e.findIndex(e=>e.startsWith("--permission-mode="));-1!==i&&(Mi.permissionMode=e[i].split("=")[1],e.splice(i,1));const extractFlag=(o,t={})=>{const s=e.indexOf(o);if(-1!==s){Mi.extraCliArgs.push(t.as??o);const i=e[s+1];t.hasValue&&i&&!i.startsWith("-")?(Mi.extraCliArgs.push(i),e.splice(s,2)):e.splice(s,1)}const i=e.findIndex(e=>e.startsWith(`${o}=`));-1!==i&&(Mi.extraCliArgs.push(t.as??o,e[i].slice(o.length+1)),e.splice(i,1))};extractFlag("-c",{as:"--continue"}),extractFlag("--continue"),extractFlag("--resume",{hasValue:!0}),extractFlag("--model",{hasValue:!0})}if("ssh"===e[0]&&e[1]&&!e[1].startsWith("-")){Mi.host=e[1];let o=2;e[2]&&!e[2].startsWith("-")&&(Mi.cwd=e[2],o=3);const t=e.slice(o);if(t.includes("-p")||t.includes("--print"))return process.stderr.write("Error: el modo sin cabeza (-p/--print) no es compatible con context ssh\n"),void ls(1);process.argv=[process.argv[0],process.argv[1],...t]}}const t=process.argv.slice(2),n=t.includes("-p")||t.includes("--print"),c=t.includes("--init-only"),j=t.some(e=>e.startsWith("--sdk-url")),O=n||c||j||!process.stdout.isTTY;O&&ae();Ds(!O),function(e){if(process.env.CLAUDE_CODE_ENTRYPOINT)return;const o=process.argv.slice(2),t=o.indexOf("mcp");-1===t||"serve"!==o[t+1]?jo(process.env.CONTEXT_CODE_ACTION)||jo(process.env.CLAUDE_CODE_ACTION)?process.env.CLAUDE_CODE_ENTRYPOINT="claude-code-github-action":process.env.CLAUDE_CODE_ENTRYPOINT=e?"sdk-cli":"cli":process.env.CLAUDE_CODE_ENTRYPOINT="mcp"}(O);const D=(()=>{if(jo(process.env.GITHUB_ACTIONS))return"github-action";if("sdk-ts"===process.env.CLAUDE_CODE_ENTRYPOINT)return"sdk-typescript";if("sdk-py"===process.env.CLAUDE_CODE_ENTRYPOINT)return"sdk-python";if("sdk-cli"===process.env.CLAUDE_CODE_ENTRYPOINT)return"sdk-cli";if("claude-vscode"===process.env.CLAUDE_CODE_ENTRYPOINT)return"claude-vscode";if("local-agent"===process.env.CLAUDE_CODE_ENTRYPOINT)return"local-agent";if("claude-desktop"===process.env.CLAUDE_CODE_ENTRYPOINT)return"claude-desktop";const e=process.env.CONTEXT_CODE_SESSION_ACCESS_TOKEN||process.env.CLAUDE_CODE_SESSION_ACCESS_TOKEN||process.env.CONTEXT_CODE_WEBSOCKET_AUTH_FILE_DESCRIPTOR||process.env.CLAUDE_CODE_WEBSOCKET_AUTH_FILE_DESCRIPTOR;return"remote"===process.env.CLAUDE_CODE_ENTRYPOINT||e?"remote":"cli"})();Os(D);const Y=process.env.CONTEXT_CODE_QUESTION_PREVIEW_FORMAT??process.env.CLAUDE_CODE_QUESTION_PREVIEW_FORMAT;"markdown"===Y||"html"===Y?Ms(Y):D.startsWith("sdk-")||"claude-desktop"===D||"local-agent"===D||"remote"===D||Ms("markdown"),"bridge"!==process.env.CONTEXT_CODE_ENVIRONMENT_KIND&&"bridge"!==process.env.CLAUDE_CODE_ENVIRONMENT_KIND||Hs("remote-control"),i("main_client_type_determined"),eagerLoadSettings(),i("main_before_run"),await async function(){function createSortedHelpConfig(){const getOptionSortKey=e=>e.long?.replace(/^--/,"")??e.short?.replace(/^-/,"")??"";return Object.assign({sortSubcommands:!0,sortOptions:!0},{compareOptions:(e,o)=>getOptionSortKey(e).localeCompare(getOptionSortKey(o))})}i("run_function_start");const t=(new l).configureHelp(createSortedHelpConfig()).enablePositionalOptions();i("run_commander_initialized"),t.hook("preAction",async e=>{i("preAction_start"),await Promise.all([ut(),a()]),i("preAction_after_mdm"),await C(),i("preAction_after_init"),jo(process.env.CONTEXT_CODE_DISABLE_TERMINAL_TITLE)||jo(process.env.CLAUDE_CODE_DISABLE_TERMINAL_TITLE)||(process.title="claude");const{initSinks:t}=await import("./utils/sinks.js");t(),i("preAction_after_sinks");const s=e.getOptionValue("pluginDir");Array.isArray(s)&&s.length>0&&s.every(e=>"string"==typeof e)&&(ks(s),hi("preAction: --plugin-dir inline plugins")),11!==te().migrationVersion&&(Ks(),qs(),Vs(),Zs(),Ys(),Ws(),Js(),Gs(),Xs(),o("TRANSCRIPT_CLASSIFIER")&&Qs(),re(e=>11===e.migrationVersion?e:{...e,migrationVersion:11})),wi().catch(()=>{}),i("preAction_after_migrations"),L(),R(),i("preAction_after_remote_settings"),o("UPLOAD_USER_SETTINGS")&&import("./services/settingsSync/index.js").then(e=>e.uploadUserSettingsInBackground()),i("preAction_after_settings_sync")}),t.name("context").description("Context Code - inicia una sesión interactiva por defecto, usa -p/--print para salida no interactiva").argument("[consulta...]","Tu consulta").helpOption("-h, --help","Muestra la ayuda del comando").option("-d, --debug [filtro]",'Activa el modo de depuración con filtrado opcional de categorías (ej. "api,hooks" o "!1p,!file")',e=>!0).addOption(new p("--debug-to-stderr","Activa el modo de depuración (a stderr)").argParser(Boolean).hideHelp()).option("--debug-file <ruta>","Escribe los logs de depuración en una ruta específica (activa implícitamente el modo de depuración)",()=>!0).option("--verbose","Sobrescribe el ajuste de modo detallado de la configuración",()=>!0).option("-p, --print","Imprime la respuesta y sale (útil para tuberías). Nota: El diálogo de confianza del espacio de trabajo se omite cuando se ejecuta con el modo -p. Solo usa esta bandera en directorios en los que confíes.",()=>!0).option("--bare","Modo mínimo: omite hooks, LSP, sincronización de plugins, atribución, auto-memoria, prefetches de fondo, lecturas de llavero y auto-descubrimiento de CLAUDE.md. Establece CLAUDE_CODE_SIMPLE=1. La autenticación de Anthropic es estrictamente ANTHROPIC_API_KEY o apiKeyHelper a través de --settings (OAuth y el llavero nunca se leen). Los proveedores 3P (Bedrock/Vertex/Foundry) usan sus propias credenciales. Las habilidades aún se resuelven a través de /nombre-habilidad. Proporciona contexto explícitamente a través de: --system-prompt[-file], --append-system-prompt[-file], --add-dir (directorios CLAUDE.md), --mcp-config, --settings, --agents, --plugin-dir.",()=>!0).addOption(new p("--init","Ejecuta los hooks de configuración con el disparador init, luego continúa").hideHelp()).addOption(new p("--init-only","Ejecuta los hooks de configuración y SessionStart:startup, luego sale").hideHelp()).addOption(new p("--maintenance","Ejecuta los hooks de configuración con el disparador de mantenimiento, luego continúa").hideHelp()).addOption(new p("--output-format <formato>",'Formato de salida (solo funciona con --print): "text" (por defecto), "json" (resultado único) o "stream-json" (transmisión en tiempo real)').choices(["text","json","stream-json"])).addOption(new p("--json-schema <esquema>",'Esquema JSON para la validación de salida estructurada. Ejemplo: {"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}').argParser(String)).option("--include-hook-events","Incluye todos los eventos del ciclo de vida del hook en el flujo de salida (solo funciona con --output-format=stream-json)",()=>!0).option("--include-partial-messages","Incluye fragmentos de mensajes parciales a medida que llegan (solo funciona con --print y --output-format=stream-json)",()=>!0).addOption(new p("--input-format <formato>",'Formato de entrada (solo funciona con --print): "text" (por defecto) o "stream-json" (entrada transmitida en tiempo real)').choices(["text","stream-json"])).option("--mcp-debug","[OBSOLETO. Usa --debug en su lugar] Activa el modo de depuración de MCP (muestra errores del servidor MCP)",()=>!0).option("--dangerously-skip-permissions","Omite todas las comprobaciones de permisos. Recomendado solo para sandboxes sin acceso a internet.",()=>!0).option("--allow-dangerously-skip-permissions","Permite omitir todas las comprobaciones de permisos como una opción, sin que esté activado por defecto. Recomendado solo para sandboxes sin acceso a internet.",()=>!0).addOption(new p("--thinking <modo>","Modo de pensamiento: enabled (equivalente a adaptive), disabled").choices(["enabled","adaptive","disabled"]).hideHelp()).addOption(new p("--max-thinking-tokens <tokens>","[OBSOLETO. Usa --thinking en su lugar para modelos más nuevos] Número máximo de tokens de pensamiento (solo funciona con --print)").argParser(Number).hideHelp()).addOption(new p("--max-turns <turnos>","Número máximo de turnos agénticos en modo no interactivo. Esto detendrá la conversación después del número especificado de turnos. (solo funciona con --print)").argParser(Number).hideHelp()).addOption(new p("--max-budget-usd <cantidad>","Cantidad máxima en dólares para gastar en llamadas a la API (solo funciona con --print)").argParser(e=>{const o=Number(e);if(isNaN(o)||o<=0)throw new Error("--max-budget-usd debe ser un número positivo mayor que 0");return o})).addOption(new p("--task-budget <tokens>","Presupuesto de tareas del lado de la API en tokens (output_config.task_budget)").argParser(e=>{const o=Number(e);if(isNaN(o)||o<=0||!Number.isInteger(o))throw new Error("--task-budget debe ser un entero positivo");return o}).hideHelp()).option("--replay-user-messages","Vuelve a emitir los mensajes del usuario desde stdin de vuelta a stdout para confirmación (solo funciona con --input-format=stream-json e --output-format=stream-json)",()=>!0).addOption(new p("--enable-auth-status","Activa los mensajes de estado de autenticación en modo SDK").default(!1).hideHelp()).option("--allowedTools, --allowed-tools <herramientas...>",'Lista de nombres de herramientas permitidas separadas por comas o espacios (ej. "Bash(git:*) Edit")').option("--tools <herramientas...>",'Especifica la lista de herramientas disponibles del conjunto integrado. Usa "" para desactivar todas las herramientas, "default" para usar todas las herramientas, o especifica nombres de herramientas (ej. "Bash,Edit,Read").').option("--disallowedTools, --disallowed-tools <herramientas...>",'Lista de nombres de herramientas denegadas separadas por comas o espacios (ej. "Bash(git:*) Edit")').option("--mcp-config <configs...>","Carga servidores MCP desde archivos JSON o cadenas (separados por espacios)").addOption(new p("--permission-prompt-tool <herramienta>","Herramienta MCP a usar para solicitudes de permisos (solo funciona con --print)").argParser(String).hideHelp()).addOption(new p("--system-prompt <prompt>","Prompt del sistema a usar para la sesión").argParser(String)).addOption(new p("--system-prompt-file <archivo>","Lee el prompt del sistema desde un archivo").argParser(String).hideHelp()).addOption(new p("--append-system-prompt <prompt>","Añade un prompt del sistema al prompt del sistema predeterminado").argParser(String)).addOption(new p("--append-system-prompt-file <archivo>","Lee un prompt del sistema desde un archivo y lo añade al prompt del sistema predeterminado").argParser(String).hideHelp()).addOption(new p("--permission-mode <modo>","Modo de permisos a usar para la sesión").argParser(String).choices(Fo)).option("-c, --continue","Continúa la conversación más reciente en el directorio actual",()=>!0).option("-r, --resume [valor]","Reanuda una conversación por ID de sesión, o abre el selector interactivo con un término de búsqueda opcional",e=>e||!0).option("--fork-session","Al reanudar, protege el ID de sesión original creando uno nuevo (úsalo con --resume o --continue)",()=>!0).addOption(new p("--prefill <texto>","Rellena previamente la entrada del prompt con texto sin enviarlo").hideHelp()).addOption(new p("--deep-link-origin","Señala que esta sesión se inició desde un enlace profundo").hideHelp()).addOption(new p("--deep-link-repo <slug>","Repositorio al que se resolvió el enlace profundo en el cwd actual").hideHelp()).addOption(new p("--deep-link-last-fetch <ms>","mtime de FETCH_HEAD en ms, precalculado por el enlace profundo").argParser(e=>{const o=Number(e);return Number.isFinite(o)?o:void 0}).hideHelp()).option("--from-pr [valor]","Reanuda una sesión vinculada a un PR, o abre el selector interactivo",e=>e||!0).option("--no-session-persistence","Desactiva la persistencia de sesión: las sesiones no se guardarán en disco (solo con --print)").addOption(new p("--resume-session-at <id mensaje>","Al reanudar, solo incluye mensajes hasta el ID especificado (usa con --resume en modo print)").argParser(String).hideHelp()).addOption(new p("--rewind-files <id-mensaje>","Restaura archivos al estado del mensaje especificado y sale (requiere --resume)").hideHelp()).option("--model <modelo>","Modelo para la sesión. Usa un alias (ej. 'sonnet') o el nombre completo (ej. 'claude-sonnet-4-6').").addOption(new p("--effort <level>","Nivel de esfuerzo (low, medium, high, max)").argParser(e=>{const o=e.toLowerCase(),t=["low","medium","high","max"];if(!t.includes(o))throw new d(`Debe ser uno de: ${t.join(", ")}`);return o})).option("--agent <agente>","Agente para la sesión. Sobrescribe el ajuste 'agent'.").option("--betas <betas...>","Encabezados beta para peticiones API (solo usuarios con API key)").option("--fallback-model <modelo>","Habilita el cambio automático al modelo especificado si el principal está saturado (solo con --print)").addOption(new p("--workload <tag>","Etiqueta de carga para atribución de facturación. Solo para uso interno. (solo con --print)").hideHelp()).option("--settings <archivo-o-json>","Ruta a un archivo JSON de ajustes o cadena JSON").option("--add-dir <directorios...>","Directorios adicionales permitidos para las herramientas").option("--ide","Conecta automáticamente al IDE al iniciar si hay uno disponible",()=>!0).option("--strict-mcp-config","Solo usa servidores MCP de --mcp-config",()=>!0).option("--session-id <uuid>","Usa un ID de sesión específico (debe ser un UUID válido)").option("-n, --name <nombre>","Establece un nombre para esta sesión (se muestra en /resume y en el título)").option("--agents <json>","Objeto JSON definiendo agentes personalizados").option("--setting-sources <fuentes>","Lista de fuentes de ajustes a cargar (user, project, local) separadas por comas.").option("--plugin-dir <ruta>","Carga plugins desde un directorio (repetible: --plugin-dir A --plugin-dir B)",(e,o)=>[...o,e],[]).option("--disable-slash-commands","Desactiva todas las habilidades",()=>!0).option("--chrome","Habilita la integración de Claude en Chrome").option("--no-chrome","Desactiva la integración de Claude en Chrome").option("--chrome-anty","Habilita la extensión Antigravity Browser Extension").option("--file <especificaciones...>","Recursos de archivos a descargar al inicio. Formato: id_archivo:ruta_relativa (ej., --file file_abc:doc.txt)").action(async(t,r)=>{let n=Array.isArray(t)?t.join(" "):t;i("action_handler_start"),r.bare&&(process.env.CLAUDE_CODE_SIMPLE="1"),"code"===n&&(Re("tengu_code_prompt_ignored",{}),console.warn(m.yellow("Tip: You can launch Context Code with just `context`")),n=void 0),n&&"string"==typeof n&&!/\s/.test(n)&&n.length>0&&Re("tengu_single_word_prompt",{length:n.length});let a,c=!1;if(o("KAIROS")&&r.assistant&&Pe&&Pe.markAssistantForced(),o("KAIROS")&&Pe?.isAssistantMode()&&!r.agentId&&Ae)if(oe()){if(c=Pe.isAssistantForced()||await Ae.isKairosEnabled(),c){r.brief=!0,xs(!0),a=await Pe.initializeAssistantTeam()}}else console.warn(m.yellow("Assistant mode disabled: directory is not trusted. Accept the trust dialog and restart."));const{debug:l=!1,debugToStderr:d=!1,dangerouslySkipPermissions:p,allowDangerouslySkipPermissions:C=!1,tools:j=[],allowedTools:O=[],disallowedTools:D=[],mcpConfig:R=[],permissionMode:L,addDir:Y=[],fallbackModel:Q,betas:Z=[],ide:ae=!1,sessionId:we,includeHookEvents:Se,includePartialMessages:Ce}=r;let Ee;r.prefill&&ne(r.prefill);const je=r.agents,Ie=r.agent;o("BG_SESSIONS")&&Ie&&(process.env.CONTEXT_CODE_AGENT=Ie,process.env.CLAUDE_CODE_AGENT=Ie);let Me=r.outputFormat,Je=r.inputFormat,ao=r.verbose??te().verbose,co=r.print;const So=r.init??!1,Eo=r.initOnly??!1,Ao=r.maintenance??!1,Fo=r.disableSlashCommands||!1,qo=!1,Xo=qo?"string"==typeof qo?qo:_t:void 0;const et=Oe()?r.worktree:void 0;let tt="string"==typeof et?et:void 0;const st=void 0!==et;let ct;if(tt){const e=Di(tt);null!==e&&(ct=e,tt=void 0)}const ut=Oe()&&!0===r.tmux;let wt;if(ut&&(st||(process.stderr.write(m.red("Error: --tmux requires --worktree\n")),process.exit(1)),"windows"===ve()&&(process.stderr.write(m.red("Error: --tmux is not supported on Windows\n")),process.exit(1)),await ki()||(process.stderr.write(m.red(`Error: tmux is not installed.\n${Ii()}\n`)),process.exit(1))),W()){const e=function(e){if("object"!=typeof e||null===e)return{};const o=e,t=o.teammateMode;return{agentId:"string"==typeof o.agentId?o.agentId:void 0,agentName:"string"==typeof o.agentName?o.agentName:void 0,teamName:"string"==typeof o.teamName?o.teamName:void 0,agentColor:"string"==typeof o.agentColor?o.agentColor:void 0,planModeRequired:"boolean"==typeof o.planModeRequired?o.planModeRequired:void 0,parentSessionId:"string"==typeof o.parentSessionId?o.parentSessionId:void 0,teammateMode:"auto"===t||"tmux"===t||"in-process"===t?t:void 0,agentType:"string"==typeof o.agentType?o.agentType:void 0}}(r);wt=e;const o=e.agentId||e.agentName||e.teamName,t=e.agentId&&e.agentName&&e.teamName;o&&!t&&(process.stderr.write(m.red("Error: --agent-id, --agent-name, and --team-name must all be provided together\n")),process.exit(1)),e.agentId&&e.agentName&&e.teamName&&getTeammateUtils().setDynamicTeamContext?.({agentId:e.agentId,agentName:e.agentName,teamName:e.teamName,color:e.agentColor,planModeRequired:e.planModeRequired??!1,parentSessionId:e.parentSessionId}),e.teammateMode&&s("./utils/swarm/backends/teammateModeSnapshot.js").setCliTeammateModeOverride?.(e.teammateMode)}const St=r.sdkUrl??void 0,Ct=Ce||jo(process.env.CONTEXT_CODE_INCLUDE_PARTIAL_MESSAGES)||jo(process.env.CLAUDE_CODE_INCLUDE_PARTIAL_MESSAGES);(Se||jo(process.env.CONTEXT_CODE_REMOTE)||jo(process.env.CLAUDE_CODE_REMOTE))&&ds(!0),St&&(Je||(Je="stream-json"),Me||(Me="stream-json"),void 0===r.verbose&&(ao=!0),r.print||(co=!0));const yt=r.teleport??null,Et=r.remote,bt=!0===Et?"":Et??null,Ot=r.remoteControl??r.rc;let Tt=!1;const Bt="string"==typeof Ot&&Ot.length>0?Ot:void 0;if(we&&(!r.continue&&!r.resume||r.forkSession||(process.stderr.write(m.red("Error: --session-id can only be used with --continue or --resume if --fork-session is also specified.\n")),process.exit(1)),!St)){const e=jt(we);e||(process.stderr.write(m.red("Error: Invalid session ID. Must be a valid UUID.\n")),process.exit(1)),mt(e)&&(process.stderr.write(m.red(`Error: Session ID ${e} is already in use.\n`)),process.exit(1))}const Ft=r.file;if(Ft&&Ft.length>0){const e=_e();e||(process.stderr.write(m.red("Error: Session token required for file downloads. CLAUDE_CODE_SESSION_ACCESS_TOKEN must be set.\n")),process.exit(1));const o=process.env.CONTEXT_CODE_REMOTE_SESSION_ID||process.env.CLAUDE_CODE_REMOTE_SESSION_ID||Cs(),t=I(Ft);if(t.length>0){const s={baseUrl:process.env.ANTHROPIC_BASE_URL||v().BASE_API_URL,oauthToken:e,sessionId:o};Ee=A(t,s)}}const Wt=_s();Q&&r.model&&Q===r.model&&(process.stderr.write(m.red("Error: Fallback model cannot be the same as the main model. Please specify a different model for --fallback-model.\n")),process.exit(1));let ss=r.systemPrompt;if(r.systemPromptFile){r.systemPrompt&&(process.stderr.write(m.red("Error: Cannot use both --system-prompt and --system-prompt-file. Please use only one.\n")),process.exit(1));try{const e=ke(r.systemPromptFile);ss=u(e,"utf8")}catch(e){"ENOENT"===ts(e)&&(process.stderr.write(m.red(`Error: System prompt file not found: ${ke(r.systemPromptFile)}\n`)),process.exit(1)),process.stderr.write(m.red(`Error reading system prompt file: ${os(e)}\n`)),process.exit(1)}}let ns=r.appendSystemPrompt;if(r.appendSystemPromptFile){r.appendSystemPrompt&&(process.stderr.write(m.red("Error: Cannot use both --append-system-prompt and --append-system-prompt-file. Please use only one.\n")),process.exit(1));try{const e=ke(r.appendSystemPromptFile);ns=u(e,"utf8")}catch(e){"ENOENT"===ts(e)&&(process.stderr.write(m.red(`Error: Append system prompt file not found: ${ke(r.appendSystemPromptFile)}\n`)),process.exit(1)),process.stderr.write(m.red(`Error reading append system prompt file: ${os(e)}\n`)),process.exit(1)}}if(W()&&wt?.agentId&&wt?.agentName&&wt?.teamName){const e=s("./utils/swarm/teammatePromptAddendum.js").TEAMMATE_SYSTEM_PROMPT_ADDENDUM;ns=ns?`${ns}\n\n${e}`:e}const{mode:as,notification:ps}=zo({permissionModeCli:L,dangerouslySkipPermissions:p});Ls("bypassPermissions"===as),o("TRANSCRIPT_CLASSIFIER")&&(r.enableAutoMode||"auto"===L||"auto"===as||!L&&Wo())&&Fs?.setAutoModeFlagCli(!0);let hs={};if(R&&R.length>0){const e=R.map(e=>e.trim()).filter(e=>e.length>0);let t={};const s=[];for(const o of e){let e=null,i=[];const r=Ro(o);if(r){const o=Lt({configObject:r,filePath:"command line",expandVars:!0,scope:"dynamic"});o.config?e=o.config.mcpServers:i=o.errors}else{const t=ke(o),s=Ut({filePath:t,expandVars:!0,scope:"dynamic"});s.config?e=s.config.mcpServers:i=s.errors}i.length>0?s.push(...i):e&&(t={...t,...e})}if(s.length>0){const e=s.map(e=>`${e.path?e.path+": ":""}${e.message}`).join("\n");Zt(`--mcp-config validation failed (${s.length} errors): ${e}`,{level:"error"}),process.stderr.write(`Error: Invalid MCP configuration:\n${e}\n`),process.exit(1)}if(Object.keys(t).length>0){const e=Object.entries(t).filter(([,e])=>"sdk"!==e.type).map(([e])=>e);let s=null;if(e.some(Vt))s=`Invalid MCP configuration: "${qt}" is a reserved MCP name.`;else if(o("CHICAGO_MCP")){const{isComputerUseMCPServer:o,COMPUTER_USE_MCP_SERVER_NAME:t}=await import("./utils/computerUse/common.js");e.some(o)&&(s=`Invalid MCP configuration: "${t}" is a reserved MCP name.`)}s&&(process.stderr.write(`Error: ${s}\n`),process.exit(1));const i=g(t,e=>({...e,scope:"dynamic"})),{allowed:r,blocked:n}=Rt(i);n.length>0&&process.stderr.write(`Warning: MCP ${vs(n.length,"server")} blocked by enterprise policy: ${n.join(", ")}\n`),hs={...hs,...r}}}const Ss=r;Ss.chromeAnty&&(Ss.chrome=!0),js(Ss.chrome);const bs=_o(Ss.chrome),Os=void 0===Ss.chrome&&!bs&&wo();if(bs){const e=ve();try{Re("tengu_claude_in_chrome_setup",{platform:e});const{mcpConfig:o,allowedTools:t,systemPrompt:s}=vo();hs={...hs,...o},O.push(...t),s&&(ns=ns?`${s}\n\n${ns}`:s)}catch(o){Re("tengu_claude_in_chrome_setup_failed",{platform:e}),Zt(`[Context in Chrome] Error: ${o}`),Mo(o),console.error("Error: Failed to run with Context in Chrome."),process.exit(1)}}else if(Os)try{const{mcpConfig:e,allowedTools:o,systemPrompt:t}=vo();hs={...hs,...e},O.push(...o),t&&(ns=ns?`${t}\n\n${ns}`:t)}catch(e){Zt(`[Context in Chrome] Error (auto-enable): ${e}`)}const As=r.strictMcpConfig||!1;if(xt()&&(As&&(process.stderr.write(m.red("You cannot use --strict-mcp-config when an enterprise MCP config is present")),process.exit(1)),hs&&!kt(hs)&&(process.stderr.write(m.red("You cannot dynamically configure MCP servers when an enterprise MCP config is present")),process.exit(1))),o("CHICAGO_MCP")&&"macos"===ve()&&!_s())try{const{getChicagoEnabled:e}=await import("./utils/computerUse/gates.js");if(e()){const{setupComputerUseMCP:e}=await import("./utils/computerUse/setup.js"),{mcpConfig:o,allowedTools:t}=e();hs={...hs,...o},O.push(...t)}}catch(e){Zt(`[Computer Use MCP] Setup failed: ${os(e)}`)}try{const{setupDatabaseMCP:e}=await import("./utils/databaseMcp/setup.js"),{mcpConfig:o}=e();hs={...hs,...o}}catch(e){Zt(`[Database MCP] Setup failed: ${os(e)}`)}try{const{setupSshMCP:e}=await import("./utils/sshMcp/setup.js"),{mcpConfig:o}=e();hs={...hs,...o}}catch(e){Zt(`[SSH MCP] Setup failed: ${os(e)}`)}try{const{setupSembleMCP:e}=await import("./utils/sembleMcp/setup.js"),{mcpConfig:o}=e();hs={...hs,...o}}catch(e){Zt(`[Semble MCP] Setup failed: ${os(e)}`)}try{const{setupRemotionMcp:e}=await import("./utils/remotionMcp/setup.js"),{mcpConfig:o}=e();hs={...hs,...o}}catch(e){Zt(`[Remotion MCP] Setup failed: ${os(e)}`)}try{const{setupPlaywrightMCP:e,isPlaywrightMcpDisabled:o}=await import("./utils/playwrightMcp/setup.js");if(!o()){const{mcpConfig:o}=e();hs={...hs,...o}}}catch(e){Zt(`[Playwright MCP] Setup failed: ${os(e)}`)}let ks;if(Le(Y),o("KAIROS")||o("KAIROS_CHANNELS")){const parseChannelEntries=(e,o)=>{const t=[],s=[];for(const o of e)if(o.startsWith("plugin:")){const e=o.slice(7),i=e.indexOf("@");i<=0||i===e.length-1?s.push(o):t.push({kind:"plugin",name:e.slice(0,i),marketplace:e.slice(i+1)})}else o.startsWith("server:")&&o.length>7?t.push({kind:"server",name:o.slice(7)}):s.push(o);return s.length>0&&(process.stderr.write(m.red(`${o} entries must be tagged: ${s.join(", ")}\n plugin:<name>@<marketplace> — plugin-provided channel (allowlist enforced)\n server:<name> — manually configured MCP server\n`)),process.exit(1)),t},e=r,o=e.channels,t=e.dangerouslyLoadDevelopmentChannels;let s=[];if(o&&o.length>0&&(s=parseChannelEntries(o,"--channels"),Es(s)),Wt||t&&t.length>0&&(ks=parseChannelEntries(t,"--dangerously-load-development-channels")),s.length>0||(ks?.length??0)>0){const joinPluginIds=e=>{const o=e.flatMap(e=>"plugin"===e.kind?[`${e.name}@${e.marketplace}`]:[]);return o.length>0?o.sort().join(","):void 0};Re("tengu_mcp_channel_flags",{channels_count:s.length,dev_count:ks?.length??0,plugins:joinPluginIds(s),dev_plugins:joinPluginIds(ks??[])})}}if((o("KAIROS")||o("KAIROS_BRIEF"))&&j.length>0){const{BRIEF_TOOL_NAME:e,LEGACY_BRIEF_TOOL_NAME:o}=s("./tools/BriefTool/prompt.js"),{isBriefEntitled:t}=s("./tools/BriefTool/BriefTool.js"),i=Go(j);(i.includes(e)||i.includes(o))&&t()&&$s(!0)}const Ds=await Vo({allowedToolsCli:O,disallowedToolsCli:D,baseToolsCli:j,permissionMode:as,allowDangerouslySkipPermissions:C,addDirs:Y});let Ms=Ds.toolPermissionContext;const{warnings:Hs,dangerousPermissions:Ks,overlyBroadBashPermissions:qs}=Ds;o("TRANSCRIPT_CLASSIFIER")&&Ks.length>0&&(Ms=Yo(Ms)),Hs.forEach(e=>{console.error(e)}),ho();const Vs=!Wt||As||xt()||bo()?Promise.resolve({}):At().then(e=>{const{allowed:o,blocked:t}=Rt(e);return t.length>0&&process.stderr.write(`Warning: claude.ai MCP ${vs(t.length,"server")} blocked by enterprise policy: ${t.join(", ")}\n`),o});Zt("[STARTUP] Loading MCP configs...");const zs=Date.now();let Ws;const Gs=(As||bo()?Promise.resolve({servers:{}}):Mt(hs)).then(e=>(Ws=Date.now()-zs,e));Je&&"text"!==Je&&"stream-json"!==Je&&(console.error(`Error: Invalid input format "${Je}".`),process.exit(1)),"stream-json"===Je&&"stream-json"!==Me&&(console.error("Error: --input-format=stream-json requires output-format=stream-json."),process.exit(1)),St&&("stream-json"===Je&&"stream-json"===Me||(console.error("Error: --sdk-url requires both --input-format=stream-json and --output-format=stream-json."),process.exit(1))),r.replayUserMessages&&("stream-json"===Je&&"stream-json"===Me||(console.error("Error: --replay-user-messages requires both --input-format=stream-json and --output-format=stream-json."),process.exit(1))),Ct&&(Wt&&"stream-json"===Me||(us("Error: --include-partial-messages requires --print and --output-format=stream-json."),process.exit(1))),!1!==r.sessionPersistence||Wt||(us("Error: --no-session-persistence can only be used with --print mode."),process.exit(1));const Xs=n||"";let Ys=await async function(e,o){if(!process.stdin.isTTY&&!process.argv.includes("mcp")){if("stream-json"===o)return process.stdin;process.stdin.setEncoding("utf8");let t="";const onData=e=>{t+=e};process.stdin.on("data",onData);const s=await ms(process.stdin,3e3);return process.stdin.off("data",onData),s&&process.stderr.write("Warning: no stdin data received in 3s, proceeding without it. If piping from a slow command, redirect stdin explicitly: < /dev/null to skip, or wait longer.\n"),[e,t].filter(Boolean).join("\n")}return e}(Xs,Je??"text");i("action_after_input_prompt"),maybeActivateProactive(r);let Js,Qs=B(Ms);if(o("COORDINATOR_MODE")&&(jo(process.env.CONTEXT_CODE_COORDINATOR_MODE)||jo(process.env.CLAUDE_CODE_COORDINATOR_MODE))){const{applyCoordinatorToolFilter:e}=await import("./utils/toolPool.js");Qs=e(Qs)}if(i("action_tools_loaded"),$({isNonInteractiveSession:Wt})&&r.jsonSchema&&(Js=ye(r.jsonSchema)),Js){const e=H(Js);"tool"in e?(Qs=[...Qs,e.tool],Re("tengu_structured_output_enabled",{schema_property_count:Object.keys(Js.properties||{}).length,has_required_fields:Boolean(Js.required)})):Re("tengu_structured_output_failure",{error:"Invalid JSON schema"})}i("action_before_setup"),Zt("[STARTUP] Running setup()...");const Zs=Date.now(),{setup:mi}=await import("./setup.js"),hi=o("UDS_INBOX")?r.messagingSocketPath:void 0,vi=Qt();"local-agent"!==process.env.CLAUDE_CODE_ENTRYPOINT&&(so(),lo());const wi=mi(vi,as,C,st,tt,ut,we?jt(we):void 0,ct,hi),Pi=st?null:Ke(vi),Ni=st?null:mo(vi);Pi?.catch(()=>{}),Ni?.catch(()=>{}),await wi,Zt(`[STARTUP] setup() completed in ${Date.now()-Zs}ms`),i("action_after_setup");let Li=!!r.replayUserMessages;o("UDS_INBOX")&&(Li||"stream-json"!==Me||(Li=!!r.messagingSocketPath)),_s()&&(ge(),_(),S(),Bo());const Ui=r.name?.trim();Ui&&nt(Ui);r.model||process.env.ANTHROPIC_MODEL;const Hi="default"===r.model?Lo():r.model,$i="default"===Q?Lo():Q,Bi=st?Qt():vi;Zt("[STARTUP] Loading commands and agents...");const Fi=Date.now(),withStartupTimeout=async(e,o,t,s)=>{let i,r=!1;try{return await Promise.race([o(),new Promise(e=>{i=setTimeout(()=>{r=!0,e(s)},t)})])}catch(o){return Zt(`[STARTUP] ${e} failed: ${o instanceof Error?o.message:String(o)}. Using fallback.`),s}finally{i&&clearTimeout(i),r&&Zt(`[STARTUP] ${e} timed out after ${t}ms. Using fallback.`)}},Ki={activeAgents:[],allAgents:[]},[qi,Vi]=await Promise.all([Pi??Ke(Bi),withStartupTimeout("agent definitions loading",()=>Ni??mo(Bi),1e4,Ki)]);Zt(`[STARTUP] Commands and agents loaded in ${Date.now()-Fi}ms`),i("action_commands_loaded");let zi=[];if(je)try{const e=Ro(je);e&&(zi=fo(e,"flagSettings"))}catch(e){Mo(e)}const Wi=[...Vi.allAgents,...zi],Gi={...Vi,allAgents:Wi,activeAgents:po(Wi)},Xi=Ie??gt().agent;let Yi;if(Xi&&(Yi=Gi.activeAgents.find(e=>e.agentType===Xi),Yi||Zt(`Warning: agent "${Xi}" not found. Available agents: ${Gi.activeAgents.map(e=>e.agentType).join(", ")}. Using default behavior.`)),$e(Yi?.agentType),Yi&&Re("tengu_agent_flag",{agentType:uo(Yi)?Yi.agentType:"custom",...Ie&&{source:"cli"}}),Yi?.agentType&<(Yi.agentType),Wt&&Yi&&!ss&&!uo(Yi)){const e=Yi.getSystemPrompt();e&&(ss=e)}Yi?.initialPrompt&&("string"==typeof Ys?Ys=Ys?`${Yi.initialPrompt}\n\n${Ys}`:Yi.initialPrompt:Ys||(Ys=Yi.initialPrompt));let Ji=Hi;!Ji&&Yi?.model&&"inherit"!==Yi.model&&(Ji=$o(Yi.model)),He(Ji),Is(Uo()||null);const Qi=ws(),Zi=$o(Qi??Lo());let er,or,tr,sr;if(q()){const e=F()?r.advisor:void 0;if(e){Zt(`[AdvisorTool] --advisor ${e}`),z(Zi)||(process.stderr.write(m.red(`Error: The model "${Zi}" does not support the advisor tool.\n`)),process.exit(1));const o=Ho($o(e));V(o)||(process.stderr.write(m.red(`Error: The model "${e}" cannot be used as an advisor.\n`)),process.exit(1))}er=F()?e??K():e,er&&Zt(`[AdvisorTool] Advisor model: ${er}`)}if(W()&&wt?.agentId&&wt?.agentName&&wt?.teamName&&wt?.agentType){const e=Gi.activeAgents.find(e=>e.agentType===wt.agentType);if(e){let o;if("built-in"===e.source?Zt(`[teammate] Built-in agent ${wt.agentType} - skipping custom prompt (not supported)`):o=e.getSystemPrompt(),e.memory&&Re("tengu_agent_memory_loaded",{scope:e.memory,source:"teammate"}),o){const e=`\n# Custom Agent Instructions\n${o}`;ns=ns?`${ns}\n\n${e}`:e}}else Zt(`[teammate] Custom agent ${wt.agentType} not found in available agents`)}if(maybeActivateBrief(r),(o("KAIROS")||o("KAIROS_BRIEF"))&&!_s()&&!ys()&&"chat"===gt().defaultView){const{isBriefEntitled:e}=s("./tools/BriefTool/BriefTool.js");e()&&$s(!0)}if((o("PROACTIVE")||o("KAIROS"))&&(r.proactive||jo(process.env.CONTEXT_CODE_PROACTIVE)||jo(process.env.CLAUDE_CODE_PROACTIVE))&&!Te?.isCoordinatorMode()){const e=`\n# Proactive Mode\n\nYou are in proactive mode. Take initiative — explore, act, and make progress without waiting for instructions.\n\nStart by briefly greeting the user.\n\nYou will receive periodic <tick> prompts. These are check-ins. Do whatever seems most useful, or call Sleep if there's nothing to do. ${(o("KAIROS")||o("KAIROS_BRIEF"))&&s("./tools/BriefTool/BriefTool.js").isBriefEnabled()?"Call SendUserMessage at checkpoints to mark where things stand.":"The user will see any text you output."}`;ns=ns?`${ns}\n\n${e}`:e}if(o("KAIROS")&&c&&Pe){const e=Pe.getAssistantSystemPromptAddendum();ns=ns?`${ns}\n\n${e}`:e}if(!Wt){const e=eo(!1);tr=e.getFpsMetrics,sr=e.stats;const{createRoot:t}=await import("./ink.js");or=await t(e.renderOptions),Re("tengu_timer",{event:"startup",durationMs:Math.round(1e3*process.uptime())}),Zt("[STARTUP] Running showSetupScreens()...");const s=Date.now(),i=await to(or,as,C,qi,bs,ks);if(Zt(`[STARTUP] showSetupScreens() completed in ${Date.now()-s}ms`),o("BRIDGE_MODE")&&void 0!==Ot){const{getBridgeDisabledReason:e}=await import("./bridge/bridgeEnabled.js"),o=await e();Tt=null===o,o&&process.stderr.write(m.yellow(`${o}\n--rc flag ignored.\n`))}if(o("AGENT_MEMORY_SNAPSHOT")&&Yi&&go(Yi)&&Yi.memory&&Yi.pendingSnapshotUpdate){const e=Yi;if("merge"===await Ge(or,{agentType:e.agentType,scope:e.memory,snapshotTimestamp:e.pendingSnapshotUpdate.snapshotTimestamp})){const{buildMergePrompt:o}=await import("./components/agents/SnapshotUpdateDialog.js"),t=o(e.agentType,e.memory);Ys=Ys?`${t}\n\n${Ys}`:t}e.pendingSnapshotUpdate=void 0}i&&"/login"===n?.trim().toLowerCase()&&(n=""),i&&(U(),M(),Ai(),T(),import("./bridge/trustedDevice.js").then(e=>(e.clearTrustedDeviceToken(),e.enrollTrustedDevice())));const r=await ee();r.valid||await Qe(or,r.message)}if(void 0!==process.exitCode)return void Zt("Graceful shutdown initiated, skipping further initialization");if(si(),!Wt){const{errors:e}=vt(),o=e.filter(e=>!e.mcpErrorMetadata);o.length>0&&await ze(or,{settingsErrors:o,onExit:()=>ls(1)})}const ir=xe("tengu_cicada_nap_ms",0),rr=te().startupPrefetchedAt??0;if(bo()||ir>0&&Date.now()-rr<ir)Zt(`Skipping startup prefetches, last ran ${Math.round((Date.now()-rr)/1e3)}s ago`),ue();else{const e=rr>0?` last ran ${Math.round((Date.now()-rr)/1e3)}s ago`:"";Zt(`Starting background startup prefetches${e}`),io().catch(e=>Mo(e)),P(),k(),xe("tengu_miraculo_the_bard",!1)?ue():me(),ir>0&&re(e=>({...e,startupPrefetchedAt:Date.now()}))}Wt||To();const{servers:nr}=await Gs;Zt(`[STARTUP] MCP configs resolved in ${Ws}ms (awaited at +${Date.now()-zs}ms)`);const ar={...nr,...hs},cr={},lr={};for(const[e,o]of Object.entries(ar)){const t=o;"sdk"===t.type?cr[e]=t:lr[e]=t}i("action_mcp_configs_loaded");const dr=Wt?Promise.resolve({clients:[],tools:[],commands:[]}):no(lr),pr=Wt?Promise.resolve({clients:[],tools:[],commands:[]}):Vs.then(e=>Object.keys(e).length>0?no(e):{clients:[],tools:[],commands:[]}),mr=Promise.all([dr,pr]).then(([e,o])=>({clients:[...e.clients,...o.clients],tools:h([...e.tools,...o.tools],"name"),commands:h([...e.commands,...o.commands],"name")})),ur=Eo||So||Ao||Wt||r.continue||r.resume?null:it("startup",{agentType:Yi?.agentType,model:Zi}),gr=[];mr.catch(()=>{});const fr=[],hr=[],vr=[];let wr=Ti(),_r=!1!==wr?{type:"adaptive"}:{type:"disabled"};if("adaptive"===r.thinking||"enabled"===r.thinking)wr=!0,_r={type:"adaptive"};else if("disabled"===r.thinking)wr=!1,_r={type:"disabled"};else{const e=process.env.MAX_THINKING_TOKENS?parseInt(process.env.MAX_THINKING_TOKENS,10):r.maxThinkingTokens;void 0!==e&&(e>0?(wr=!0,_r={type:"enabled",budgetTokens:e}):0===e&&(wr=!1,_r={type:"disabled"}))}ui("info","started",{version:e.VERSION,is_native_binary:pi()}),zt(async()=>{ui("info","exited")}),async function({hasInitialPrompt:e,hasStdin:t,verbose:s,debug:i,debugToStderr:r,print:n,outputFormat:a,inputFormat:c,numAllowedTools:l,numDisallowedTools:d,mcpClientCount:p,worktreeEnabled:m,skipWebFetchPreflight:u,githubActionInputs:g,dangerouslySkipPermissionsPassed:f,permissionMode:h,modeIsBypass:v,allowDangerouslySkipPermissionsPassed:w,systemPromptFlag:_,appendSystemPromptFlag:S,thinkingConfig:C,assistantActivationPath:y}){try{Re("tengu_init",{entrypoint:"claude",hasInitialPrompt:e,hasStdin:t,verbose:s,debug:i,debugToStderr:r,print:n,outputFormat:a,inputFormat:c,numAllowedTools:l,numDisallowedTools:d,mcpClientCount:p,worktree:m,skipWebFetchPreflight:u,...g&&{githubActionInputs:g},dangerouslySkipPermissionsPassed:f,permissionMode:h,modeIsBypass:v,inProtectedNamespace:Oo(),allowDangerouslySkipPermissionsPassed:w,thinkingType:C.type,..._&&{systemPromptFlag:_},...S&&{appendSystemPromptFlag:S},is_simple:bo()||void 0,is_coordinator:!(!o("COORDINATOR_MODE")||!Te?.isCoordinatorMode())||void 0,...y&&{assistantActivationPath:y},autoUpdatesChannel:gt().autoUpdatesChannel??"latest"})}catch(e){Mo(e)}}({hasInitialPrompt:Boolean(n),hasStdin:Boolean(Ys),verbose:ao,debug:l,debugToStderr:d,print:co??!1,outputFormat:Me??"text",inputFormat:Je??"text",numAllowedTools:O.length,numDisallowedTools:D.length,mcpClientCount:Object.keys(ar).length,worktreeEnabled:st,skipWebFetchPreflight:gt().skipWebFetchPreflight,githubActionInputs:process.env.GITHUB_ACTION_INPUTS,dangerouslySkipPermissionsPassed:p??!1,permissionMode:as,modeIsBypass:"bypassPermissions"===as,allowDangerouslySkipPermissionsPassed:C,systemPromptFlag:ss?r.systemPromptFile?"file":"flag":void 0,appendSystemPromptFlag:ns?r.appendSystemPromptFile?"file":"flag":void 0,thinkingConfig:_r,assistantActivationPath:o("KAIROS")&&c?Pe?.getAssistantActivationPath():void 0}),Kt(lr,Ms),Pt(null,"initialization"),function(){try{const e=ht("policySettings");if(e){const o=ft(e);Re("tengu_managed_settings_loaded",{keyCount:o.length,keys:o.join(",")})}}catch{}}(),Yt().then(e=>{e&&(Ui&&Jt(Ui),Xt().then(e=>{e>=2&&Re("tengu_concurrent_sessions",{num_sessions:e})}))}),bo()||(Wt?(await Zo(),i("action_after_plugins_init"),Qo().then(()=>ot())):Zo().then(async()=>{i("action_after_plugins_init"),await Qo(),ot()}));const Sr=Eo||So?"init":Ao?"maintenance":null;if(Eo)return ge(),await rt("init",{forceSyncExecution:!0}),await it("startup",{forceSyncExecution:!0}),void ls(0);if(Wt){"stream-json"!==Me&&"json"!==Me||es(!0),ge(),y();const e=r.continue||r.resume||yt||Sr?void 0:it("startup");e?.catch(()=>{}),i("before_validateForceLoginOrg");const t=await ee();t.valid||(process.stderr.write(t.message+"\n"),process.exit(1));const s=Fo?[]:qi.filter(e=>"prompt"===e.type&&!e.disableNonInteractive||"local"===e.type&&e.supportsNonInteractive),n=ri(),a={...n,mcp:{...n.mcp,clients:fr,commands:vr,tools:hr},toolPermissionContext:Ms,effortValue:le(r.effort)??ce(),...pe()&&{fastMode:de(Ji??null)},...q()&&er&&{advisorModel:er},...o("KAIROS")?{kairosEnabled:c}:{}},l=ci(a,ai);("bypassPermissions"===Ms.mode||C)&&Ko(Ms),o("TRANSCRIPT_CLASSIFIER")&&Jo(Ms,l.getState().fastMode).then(({updateContext:e})=>{l.setState(o=>{const t=e(o.toolPermissionContext);return t===o.toolPermissionContext?o:{...o,toolPermissionContext:t}})}),!1===r.sessionPersistence&&Us(!0),Ns(di(Z));const connectMcpBatch=(e,o)=>0===Object.keys(e).length?Promise.resolve():(l.setState(o=>({...o,mcp:{...o.mcp,clients:[...o.mcp.clients,...Object.entries(e).map(([e,o])=>({name:e,type:"pending",config:o}))]}})),ro(({client:e,tools:o,commands:t})=>{l.setState(s=>({...s,mcp:{...s.mcp,clients:s.mcp.clients.some(o=>o.name===e.name)?s.mcp.clients.map(o=>o.name===e.name?e:o):[...s.mcp.clients,e],tools:h([...s.mcp.tools,...o],"name"),commands:h([...s.mcp.commands,...t],"name")}}))},e).catch(e=>Zt(`[MCP] ${o} connect error: ${e}`)));i("before_connectMcp"),await connectMcpBatch(lr,"regular"),i("after_connectMcp");const d=5e3,p=Vs.then(e=>{if(Object.keys(e).length>0){const o=new Set;for(const t of Object.values(e)){const e=Nt(t);e&&o.add(e)}const t=new Set;for(const[e,s]of Object.entries(lr)){if(!e.startsWith("plugin:"))continue;const i=Nt(s);i&&o.has(i)&&t.add(e)}if(t.size>0){Zt(`[MCP] Lazy dedup: suppressing ${t.size} plugin server(s) that duplicate claude.ai connectors: ${[...t].join(", ")}`);for(const e of l.getState().mcp.clients)t.has(e.name)&&"connected"===e.type&&(e.client.onclose=void 0,It(e.name,e.config).catch(()=>{}));l.setState(e=>{let{clients:o,tools:s,commands:i,resources:r}=e.mcp;o=o.filter(e=>!t.has(e.name)),s=s.filter(e=>!e.mcpInfo||!t.has(e.mcpInfo.serverName));for(const e of t)i=Ht(i,e),r=$t(r,e);return{...e,mcp:{...e.mcp,clients:o,tools:s,commands:i,resources:r}}})}}const o=f(lr,(e,o)=>!o.startsWith("plugin:")),{servers:t}=Dt(e,o);return connectMcpBatch(t,"claudeai")});let m;const u=await Promise.race([p.then(()=>!1),new Promise(e=>{m=setTimeout(e=>e(!0),d,e)})]);m&&clearTimeout(m),u&&Zt(`[MCP] claude.ai connectors not ready after ${d}ms — proceeding; background connection continues`),i("after_connectMcp_claudeai"),bo()||(startDeferredPrefetches(),import("./utils/backgroundHousekeeping.js").then(e=>e.startBackgroundHousekeeping())),logSessionTelemetry(),i("before_print_import");const{runHeadless:g}=await import("./cli/print.js");return i("after_print_import"),void g(Ys,()=>l.getState(),l.setState,s,Qs,cr,Gi.activeAgents,{continue:r.continue,resume:r.resume,verbose:ao,outputFormat:Me,jsonSchema:Js,permissionPromptToolName:r.permissionPromptTool,allowedTools:O,thinkingConfig:_r,maxTurns:r.maxTurns,maxBudgetUsd:r.maxBudgetUsd,taskBudget:r.taskBudget?{total:r.taskBudget}:void 0,systemPrompt:ss,appendSystemPrompt:ns,userSpecifiedModel:Ji,fallbackModel:$i,teleport:yt,sdkUrl:St,replayUserMessages:Li,includePartialMessages:Ct,forkSession:r.forkSession||!1,resumeSessionAt:r.resumeSessionAt||void 0,rewindFiles:r.rewindFiles,enableAuthStatus:r.enableAuthStatus,agent:Ie,workload:r.workload,setupTrigger:Sr??void 0,sessionStartHooksPromise:e})}Re("tengu_startup_manual_model_config",{cli_flag:r.model,env_var:process.env.ANTHROPIC_MODEL,settings_file:(gt()||{}).model,subscriptionType:J(),agent:Xi});const Cr=No(Zi),yr=[];if(ps&&yr.push({key:"permission-mode-notification",text:ps,priority:"high"}),Cr&&yr.push({key:"model-deprecation-warning",text:Cr,color:"warning",priority:"high"}),qs.length>0){const e=X(qs.map(e=>e.ruleDisplay)),o=e.join(", "),t=X(qs.map(e=>e.sourceDisplay)).join(", "),s=e.length;yr.push({key:"overly-broad-bash-notification",text:`${o} allow ${vs(s,"rule")} from ${t} ${vs(s,"was","were")} ignored — not available for Ants, please use auto-mode instead`,color:"warning",priority:"high"})}const Er={...Ms,mode:W()&&getTeammateUtils().isPlanModeRequired()?"plan":Ms.mode},br=!(!o("KAIROS")&&!o("KAIROS_BRIEF"))&&ys(),jr=Tt||se()||c;let Or=!1;if(o("CCR_MIRROR")&&!jr){const{isCcrMirrorEnabled:e}=s("./bridge/bridgeEnabled.js");Or=e()}const Tr={settings:gt(),tasks:{},agentNameRegistry:new Map,verbose:ao??te().verbose??!1,mainLoopModel:Qi,mainLoopModelForSession:null,isBriefOnly:br,expandedView:te().showSpinnerTree?"teammates":te().showExpandedTodos?"tasks":"none",showTeammateMessagePreview:!W()&&void 0,selectedIPAgentIndex:-1,coordinatorTaskIndex:-1,viewSelectionMode:"none",footerSelection:null,toolPermissionContext:Er,agent:Yi?.agentType,agentDefinitions:Gi,mcp:{clients:[],tools:[],commands:[],resources:{},pluginReconnectKey:0},plugins:{enabled:[],disabled:[],commands:[],errors:[],installationStatus:{marketplaces:[],plugins:[]},needsRefresh:!1},statusLineText:void 0,kairosEnabled:c,remoteSessionUrl:void 0,remoteConnectionStatus:"connecting",remoteBackgroundTaskCount:0,replBridgeEnabled:jr||Or,replBridgeExplicit:Tt,replBridgeOutboundOnly:Or,replBridgeConnected:!1,replBridgeSessionActive:!1,replBridgeReconnecting:!1,replBridgeConnectUrl:void 0,replBridgeSessionUrl:void 0,replBridgeEnvironmentId:void 0,replBridgeSessionId:void 0,replBridgeError:void 0,replBridgeInitialName:Bt,showRemoteCallout:!1,notifications:{current:null,queue:yr},elicitation:{queue:[]},todos:{},remoteAgentTaskSuggestions:[],fileHistory:{snapshots:[],trackedFiles:new Set,snapshotSequence:0},attribution:Gt(),thinkingEnabled:wr,promptSuggestionEnabled:ii(),sessionHooks:new Map,inbox:{messages:[]},promptSuggestion:{text:null,promptId:null,shownAt:0,acceptedAt:0,generationRequestId:null},speculation:ni,speculationSessionTimeSavedMs:0,skillImprovement:{suggestion:null},workerSandboxPermissions:{queue:[],selectedIndex:0},pendingWorkerRequest:null,pendingSandboxRequest:null,authVersion:0,initialMessage:Ys?{message:he({content:String(Ys)})}:null,effortValue:le(r.effort)??ce(),activeOverlays:new Set,fastMode:de(Zi),...q()&&er&&{advisorModel:er},teamContext:o("KAIROS")?a??be?.():be?.()};Ys&&E(String(Ys));const Pr=hr;re(e=>({...e,numStartups:(e.numStartups??0)+1})),setImmediate(()=>{!async function(){if(De())return;const[e,o,t]=await Promise.all([ko(),Do(),xo()]);Re("tengu_startup_telemetry",{is_git:e,worktree_count:o,gh_auth_status:t,sandbox_enabled:_i.isSandboxingEnabled(),are_unsandboxed_commands_allowed:_i.areUnsandboxedCommandsAllowed(),is_auto_bash_allowed_if_sandbox_enabled:_i.isAutoAllowBashIfSandboxedEnabled(),auto_updater_disabled:ie(),prefers_reduced_motion:gt().prefersReducedMotion??!1,...getCertEnvVarTelemetry()})}(),logSessionTelemetry()});const Ar=null,Ir=Ar?Ar.then(e=>e.createSessionTurnUploader()).catch(()=>null):null,kr={debug:l||d,commands:[...qi,...vr],initialTools:Pr,mcpClients:fr,autoConnectIdeFlag:ae,mainThreadAgentDefinition:Yi,disableSlashCommands:Fo,dynamicMcpConfig:hs,strictMcpConfig:As,systemPrompt:ss,appendSystemPrompt:ns,taskListId:Xo,thinkingConfig:_r,...Ir&&{onTurnComplete:e=>{Ir.then(o=>o?.(e))}}},Dr={modeApi:Te,mainThreadAgentDefinition:Yi,agentDefinitions:Gi,currentCwd:Bi,cliAgents:zi,initialState:Tr};if(r.continue){let e=!1;try{const o=performance.now(),{clearSessionCaches:t}=await import("./commands/clear/caches.js");t();const s=await Co(void 0,void 0);if(!s)return Re("tengu_continue",{success:!1}),await Qe(or,"No conversation found to continue");const i=await fs(s,{forkSession:!!r.forkSession,includeAttribution:!0,transcriptPath:s.fullPath},Dr);i.restoredAgentDef&&(Yi=i.restoredAgentDef),maybeActivateProactive(r),maybeActivateBrief(r),Re("tengu_continue",{success:!0,resume_duration_ms:Math.round(performance.now()-o)}),e=!0,await b(or,{getFpsMetrics:tr,stats:sr,initialState:i.initialState},{...kr,mainThreadAgentDefinition:i.restoredAgentDef??Yi,initialMessages:i.messages,initialFileHistorySnapshots:i.fileHistorySnapshots,initialContentReplacements:i.contentReplacements,initialAgentName:i.agentName,initialAgentColor:i.agentColor},oo)}catch(o){e||Re("tengu_continue",{success:!1}),Mo(o),process.exit(1)}}else{if(o("DIRECT_CONNECT")&&xi?.url){let e;try{const o=await oi({serverUrl:xi.url,authToken:xi.authToken,cwd:Ne(),dangerouslySkipPermissions:xi.dangerouslySkipPermissions});o.workDir&&(Rs(o.workDir),Ts(o.workDir)),Ps(xi.url),e=o.config}catch(e){return await Qe(or,e instanceof ti?e.message:String(e),()=>cs(1))}const o=fe(`Connected to server at ${xi.url}\nSession: ${e.sessionId}`,"info");return void await b(or,{getFpsMetrics:tr,stats:sr,initialState:Tr},{debug:l||d,commands:qi,initialTools:[],initialMessages:[o],mcpClients:[],autoConnectIdeFlag:ae,mainThreadAgentDefinition:Yi,disableSlashCommands:Fo,directConnectConfig:e,thinkingConfig:_r},oo)}if(o("SSH_REMOTE")&&Mi?.host){const{createSSHSession:o,createLocalSSHSession:t,SSHSessionError:s}=await import("./ssh/createSSHSession.js");let i;try{if(Mi.local)process.stderr.write("Starting local ssh-proxy test session...\n"),i=t({cwd:Mi.cwd,permissionMode:Mi.permissionMode,dangerouslySkipPermissions:Mi.dangerouslySkipPermissions});else{process.stderr.write(`Connecting to ${Mi.host}…\n`);const t=process.stderr.isTTY;let s=!1;i=await o({host:Mi.host,cwd:Mi.cwd,localVersion:e.VERSION,permissionMode:Mi.permissionMode,dangerouslySkipPermissions:Mi.dangerouslySkipPermissions,extraCliArgs:Mi.extraCliArgs},t?{onProgress:e=>{s=!0,process.stderr.write(`\r ${e}[K`)}}:{}),s&&process.stderr.write("\n")}Rs(i.remoteCwd),Ts(i.remoteCwd),Ps(Mi.local?"local":Mi.host)}catch(e){return await Qe(or,e instanceof s?e.message:String(e),()=>cs(1))}const r=fe(Mi.local?`Local ssh-proxy test session\ncwd: ${i.remoteCwd}\nAuth: unix socket → local proxy`:`SSH session to ${Mi.host}\nRemote cwd: ${i.remoteCwd}\nAuth: unix socket -R → local proxy`,"info");return void await b(or,{getFpsMetrics:tr,stats:sr,initialState:Tr},{debug:l||d,commands:qi,initialTools:[],initialMessages:[r],mcpClients:[],autoConnectIdeFlag:ae,mainThreadAgentDefinition:Yi,disableSlashCommands:Fo,sshSession:i,thinkingConfig:_r},oo)}if(o("KAIROS")&&Ri&&(Ri.sessionId||Ri.discover)){const{discoverAssistantSessions:e}=await import("./assistant/sessionDiscovery.js");let o=Ri.sessionId;if(!o){let t;try{t=await e()}catch(e){return await Qe(or,`Failed to discover sessions: ${e instanceof Error?e.message:e}`,()=>cs(1))}if(0===t.length){let e;try{e=await qe(or)}catch(e){return await Qe(or,`Assistant installation failed: ${e instanceof Error?e.message:e}`,()=>cs(1))}return null===e&&(await cs(0),process.exit(0)),await Ze(or,`Assistant installed in ${e}. The daemon is starting up — run \`claude assistant\` again in a few seconds to connect.`,{exitCode:0,beforeExit:()=>cs(0)})}if(1===t.length)o=t[0].id;else{const e=await Ve(or,{sessions:t});e||(await cs(0),process.exit(0)),o=e}}const{checkAndRefreshOAuthTokenIfNeeded:t,getClaudeAIOAuthTokens:s}=await import("./utils/auth.js");let i;await t();try{i=await Ci()}catch(e){return await Qe(or,`Error: ${e instanceof Error?e.message:"Failed to authenticate"}`,()=>cs(1))}const getAccessToken=()=>s()?.accessToken??i.accessToken;xs(!0),$s(!0),Ue(!0);const r=ei(o,getAccessToken,i.orgUUID,!1,!0),n=fe(`Attached to assistant session ${o.slice(0,8)}…`,"info"),a={...Tr,isBriefOnly:!0,kairosEnabled:!1,replBridgeEnabled:!1},c=Fe(qi);return void await b(or,{getFpsMetrics:tr,stats:sr,initialState:a},{debug:l||d,commands:c,initialTools:[],initialMessages:[n],mcpClients:[],autoConnectIdeFlag:ae,mainThreadAgentDefinition:Yi,disableSlashCommands:Fo,remoteSessionConfig:r,thinkingConfig:_r},oo)}if(r.resume||r.fromPr||yt||null!==bt){const{clearSessionCaches:e}=await import("./commands/clear/caches.js");e();let o,t,s,i=null,n=jt(r.resume),a=null;if(r.fromPr&&(!0===r.fromPr?s=!0:"string"==typeof r.fromPr&&(s=r.fromPr)),r.resume&&"string"==typeof r.resume&&!n){const e=r.resume.trim();if(e){const o=await pt(e,{exact:!0});1===o.length?(a=o[0],n=at(a)??null):t=e}}if((null!==bt||yt)&&(await N(),!x("allow_remote_sessions")))return await Qe(or,"Error: Remote sessions are disabled by your organization's policy.",()=>cs(1));if(null!==bt){const e=bt.length>0,o=xe("tengu_remote_backend",!1);if(!o&&!e)return await Qe(or,'Error: --remote requires a description.\nUsage: context --remote "your task description"',()=>cs(1));Re("tengu_remote_create_session",{has_initial_prompt:String(e)});const t=await Io(),s=await bi(or,e?bt:null,(new AbortController).signal,t||void 0);if(!s)return Re("tengu_remote_create_session_error",{error:"unable_to_create_session"}),await Qe(or,"Error: Unable to create remote session",()=>cs(1));let i;Re("tengu_remote_create_session_success",{session_id:s.id}),o||(process.stdout.write(`Created remote session: ${s.title}\n`),process.stdout.write(`View: ${w(s.id)}?m=0\n`),process.stdout.write(`Resume with: context --teleport ${s.id}\n`),await cs(0),process.exit(0)),Ue(!0),Bs(li(s.id));try{i=await Ci()}catch(e){return Mo(rs(e)),await Qe(or,`Error: ${os(e)||"Failed to authenticate"}`,()=>cs(1))}const{getClaudeAIOAuthTokens:r}=await import("./utils/auth.js"),getAccessTokenForRemote=()=>r()?.accessToken??i.accessToken,n=ei(s.id,getAccessTokenForRemote,i.orgUUID,e),a=`${w(s.id)}?m=0`,c=fe(`/remote-control is active. Code in CLI or at ${a}`,"info"),p=e?he({content:bt}):null,m={...Tr,remoteSessionUrl:a},u=Fe(qi);return void await b(or,{getFpsMetrics:tr,stats:sr,initialState:m},{debug:l||d,commands:u,initialTools:[],initialMessages:p?[c,p]:[c],mcpClients:[],autoConnectIdeFlag:ae,mainThreadAgentDefinition:Yi,disableSlashCommands:Fo,remoteSessionConfig:n,thinkingConfig:_r},oo)}if(yt)if(!0===yt||""===yt){Re("tengu_teleport_interactive_mode",{}),Zt("selectAndResumeTeleportTask: Starting teleport flow...");const e=await Ye(or);e||(await cs(0),process.exit(0));const{branchError:o}=await yi(e.branch);i=Ei(e.log,o)}else if("string"==typeof yt){Re("tengu_teleport_resume_session",{mode:"direct"});try{const e=await Si(yt),o=await Oi(e);if("mismatch"===o.status||"not_in_repo"===o.status){const e=o.sessionRepo;if(e){const o=fi(e),t=await gi(o);if(!(t.length>0))throw new is(`You must run context --teleport ${yt} from a checkout of ${e}.`,m.red(`You must run context --teleport ${yt} from a checkout of ${m.bold(e)}.\n`));{const o=await Xe(or,{targetRepo:e,initialPaths:t});o?(process.chdir(o),gs(o),Rs(o)):await cs(0)}}}else if("error"===o.status)throw new is(o.errorMessage||"Failed to validate session",m.red(`Error: ${o.errorMessage||"Failed to validate session"}\n`));await ji();const{teleportWithProgress:t}=await import("./components/TeleportProgress.js"),s=await t(or,yt);Be({sessionId:yt}),i=s.messages}catch(e){e instanceof is?process.stderr.write(e.formattedMessage+"\n"):(Mo(e),process.stderr.write(m.red(`Error: ${os(e)}\n`))),await cs(1)}}if(n){const e=n;try{const t=performance.now(),s=await Co(a??e,void 0);if(!s)return Re("tengu_session_resumed",{entrypoint:"cli_flag",success:!1}),await Qe(or,`No conversation found with session ID: ${e}`);const i=a?.fullPath??s.fullPath;o=await fs(s,{forkSession:!!r.forkSession,sessionIdOverride:e,transcriptPath:i},Dr),o.restoredAgentDef&&(Yi=o.restoredAgentDef),Re("tengu_session_resumed",{entrypoint:"cli_flag",success:!0,resume_duration_ms:Math.round(performance.now()-t)})}catch(o){Re("tengu_session_resumed",{entrypoint:"cli_flag",success:!1}),Mo(o),await Qe(or,`Failed to resume session ${e}`)}}if(Ee)try{const e=await Ee,o=G(e,e=>!e.success);o>0&&process.stderr.write(m.yellow(`Warning: ${o}/${e.length} file(s) failed to download.\n`))}catch(e){return await Qe(or,`Error downloading files: ${os(e)}`)}const c=o??(Array.isArray(i)?{messages:i,fileHistorySnapshots:void 0,agentName:void 0,agentColor:void 0,restoredAgentDef:Yi,initialState:Tr,contentReplacements:void 0}:void 0);c?(maybeActivateProactive(r),maybeActivateBrief(r),await b(or,{getFpsMetrics:tr,stats:sr,initialState:c.initialState},{...kr,mainThreadAgentDefinition:c.restoredAgentDef??Yi,initialMessages:c.messages,initialFileHistorySnapshots:c.fileHistorySnapshots,initialContentReplacements:c.contentReplacements,initialAgentName:c.agentName,initialAgentColor:c.agentColor},oo)):await We(or,{getFpsMetrics:tr,stats:sr,initialState:Tr},Po(Ne()),{...kr,initialSearchQuery:t,forkSession:r.forkSession,filterByPr:s})}else{const e=ur&&0===gr.length?ur:void 0;i("action_after_hooks"),maybeActivateProactive(r),maybeActivateBrief(r),o("COORDINATOR_MODE")&&dt(Te?.isCoordinatorMode()?"coordinator":"normal");let t=null;o("LODESTONE")&&(r.deepLinkOrigin?(Re("tengu_deep_link_opened",{has_prefill:Boolean(r.prefill),has_repo:Boolean(r.deepLinkRepo)}),t=fe(yo({cwd:Qt(),prefillLength:r.prefill?.length,repo:r.deepLinkRepo,lastFetch:void 0!==r.deepLinkLastFetch?new Date(r.deepLinkLastFetch):void 0}),"warning")):r.prefill&&(t=fe("Launched with a pre-filled prompt — review it before pressing Enter.","warning")));const s=t?[t,...gr]:gr.length>0?gr:void 0;await b(or,{getFpsMetrics:tr,stats:sr,initialState:Tr},{...kr,initialMessages:s,pendingHookMessages:e},oo)}}}).version(`${e.VERSION} (Context Code)`,"-v, --version","Output the version number"),t.option("-w, --worktree [nombre]","Crea un nuevo git worktree para esta sesión (opcionalmente especifica un nombre)"),t.option("--tmux","Crea una sesión de tmux para el worktree (requiere --worktree). Usa paneles nativos de iTerm2 si están disponibles; usa --tmux=classic para tmux tradicional."),F()&&t.addOption(new p("--advisor <modelo>","Habilita la herramienta advisor del lado del servidor con el modelo especificado (alias o ID completo).").hideHelp());0;o("TRANSCRIPT_CLASSIFIER")&&t.addOption(new p("--enable-auto-mode","Activar modo automático").hideHelp());(o("PROACTIVE")||o("KAIROS"))&&t.addOption(new p("--proactive","Iniciar en modo autónomo proactivo"));o("UDS_INBOX")&&t.addOption(new p("--messaging-socket-path <ruta>","Ruta del socket de dominio Unix para el servidor de mensajería UDS (por defecto una ruta temporal)"));(o("KAIROS")||o("KAIROS_BRIEF"))&&t.addOption(new p("--brief","Habilita la herramienta SendUserMessage para la comunicación agente-usuario"));o("KAIROS")&&t.addOption(new p("--assistant","Fuerza el modo asistente (uso del demonio Agent SDK)").hideHelp());(o("KAIROS")||o("KAIROS_CHANNELS"))&&(t.addOption(new p("--channels <servidores...>","Servidores MCP cuyas notificaciones de canal deben registrar esta sesión. Nombres de servidor separados por espacios.").hideHelp()),t.addOption(new p("--dangerously-load-development-channels <servidores...>","Carga servidores de canal que no están en la lista permitida. Solo para desarrollo local.").hideHelp()));t.addOption(new p("--agent-id <id>","Teammate agent ID").hideHelp()),t.addOption(new p("--agent-name <name>","Teammate display name").hideHelp()),t.addOption(new p("--team-name <name>","Team name for swarm coordination").hideHelp()),t.addOption(new p("--agent-color <color>","Teammate UI color").hideHelp()),t.addOption(new p("--plan-mode-required","Require plan mode before implementation").hideHelp()),t.addOption(new p("--parent-session-id <id>","Parent session ID for analytics correlation").hideHelp()),t.addOption(new p("--teammate-mode <mode>",'How to spawn teammates: "tmux", "in-process", or "auto"').choices(["auto","tmux","in-process"]).hideHelp()),t.addOption(new p("--agent-type <type>","Custom agent type for this teammate").hideHelp()),t.addOption(new p("--sdk-url <url>","Use remote WebSocket endpoint for SDK I/O streaming (only with -p and stream-json format)").hideHelp()),t.addOption(new p("--teleport [session]","Resume a teleport session, optionally specify session ID").hideHelp()),t.addOption(new p("--remote [description]","Create a remote session with the given description").hideHelp()),o("BRIDGE_MODE")&&(t.addOption(new p("--remote-control [name]","Start an interactive session with Remote Control enabled (optionally named)").argParser(e=>e||!0).hideHelp()),t.addOption(new p("--rc [name]","Alias for --remote-control").argParser(e=>e||!0).hideHelp()));o("HARD_FAIL")&&t.addOption(new p("--hard-fail","Crash on logError calls instead of silently logging").hideHelp());i("run_main_options_built");const n=process.argv.includes("-p")||process.argv.includes("--print"),c=process.argv.some(e=>e.startsWith("cc://")||e.startsWith("cc+unix://"));if(n&&!c)return i("run_before_parse"),await t.parseAsync(process.argv),i("run_after_parse"),t;const j=t.command("mcp").description("Configurar y gestionar servidores MCP").configureHelp(createSortedHelpConfig()).enablePositionalOptions();j.command("serve").description("Iniciar el servidor MCP de Context Code").option("-d, --debug","Activar modo depuración",()=>!0).option("--verbose","Sobrescribir ajuste de verbosidad de la configuración",()=>!0).action(async({debug:e,verbose:o})=>{const{mcpServeHandler:t}=await import("./cli/handlers/mcp.js");await t({debug:e,verbose:o})}),Ot(j),Bt()&&Tt(j);j.command("remove <nombre>").description("Eliminar un servidor MCP").option("-s, --scope <ámbito>","Ámbito de configuración (local, user o project); si no se especifica, se elimina de donde exista").action(async(e,o)=>{const{mcpRemoveHandler:t}=await import("./cli/handlers/mcp.js");await t(e,o)}),j.command("list").description("Listar servidores MCP configurados. Nota: Se omite el diálogo de confianza y se inician los servidores stdio de .mcp.json para comprobaciones de estado. Úsalo solo en directorios en los que confíes.").action(async()=>{const{mcpListHandler:e}=await import("./cli/handlers/mcp.js");await e()}),j.command("get <nombre>").description("Obtener detalles sobre un servidor MCP. Nota: Se omite el diálogo de confianza y se inician los servidores stdio de .mcp.json para comprobaciones de estado. Úsalo solo en directorios en los que confíes.").action(async e=>{const{mcpGetHandler:o}=await import("./cli/handlers/mcp.js");await o(e)}),j.command("add-json <nombre> <json>").description("Añadir un servidor MCP (stdio o SSE) con una cadena JSON").option("-s, --scope <ámbito>","Ámbito de configuración (local, user o project)","local").option("--client-secret","Solicitar el secreto de cliente OAuth (o establecer la variable de entorno MCP_CLIENT_SECRET)").action(async(e,o,t)=>{const{mcpAddJsonHandler:s}=await import("./cli/handlers/mcp.js");await s(e,o,t)}),j.command("add-from-claude-desktop").description("Importar servidores MCP desde Context Desktop (solo Mac y WSL)").option("-s, --scope <ámbito>","Ámbito de configuración (local, user o project)","local").action(async e=>{const{mcpAddFromDesktopHandler:o}=await import("./cli/handlers/mcp.js");await o(e)}),j.command("reset-project-choices").description("Restablecer todos los servidores aprobados y rechazados del ámbito del proyecto (.mcp.json) dentro de este proyecto").action(async()=>{const{mcpResetChoicesHandler:e}=await import("./cli/handlers/mcp.js");await e()}),o("DIRECT_CONNECT")&&t.command("server").description("Iniciar un servidor de sesión de Context Code").option("--port <número>","Puerto HTTP","0").option("--host <dirección>","Dirección de escucha","0.0.0.0").option("--auth-token <token>","Token portador para autenticación").option("--unix <ruta>","Escucha en un socket de dominio Unix").option("--workspace <dir>","Directorio de trabajo por defecto para sesiones que no especifiquen cwd").option("--idle-timeout <ms>","Tiempo de espera de inactividad para sesiones desconectadas en ms (0 = nunca expira)","600000").option("--max-sessions <n>","Máximo de sesiones simultáneas (0 = sin límite)","32").action(async e=>{const{randomBytes:o}=await import("crypto"),{startServer:t}=await import("./server/server.js"),{SessionManager:s}=await import("./server/sessionManager.js"),{DangerousBackend:i}=await import("./server/backends/dangerousBackend.js"),{printBanner:r}=await import("./server/serverBanner.js"),{createServerLogger:n}=await import("./server/serverLog.js"),{writeServerLock:a,removeServerLock:c,probeRunningServer:l}=await import("./server/lockfile.js"),d=await l();d&&(process.stderr.write(`Ya hay un servidor context ejecutándose (pid ${d.pid}) en ${d.httpUrl}\n`),process.exit(1));const p=e.authToken??`sk-ant-cc-${o(16).toString("base64url")}`,m={port:parseInt(e.port,10),host:e.host,authToken:p,unix:e.unix,workspace:e.workspace,idleTimeoutMs:parseInt(e.idleTimeout,10),maxSessions:parseInt(e.maxSessions,10)},u=new s(new i,{idleTimeoutMs:m.idleTimeoutMs,maxSessions:m.maxSessions}),g=n(),f=t(m,u,g),h=f.port??m.port;r(m,p,h),await a({pid:process.pid,port:h,host:m.host,httpUrl:m.unix?`unix:${m.unix}`:`http://${m.host}:${h}`,startedAt:Date.now()});let v=!1;const shutdown=async()=>{v||(v=!0,f.stop(!0),await u.destroyAll(),await c(),process.exit(0))};process.once("SIGINT",()=>{shutdown()}),process.once("SIGTERM",()=>{shutdown()})});o("SSH_REMOTE")&&t.command("ssh <host> [dir]").description("Ejecutar Context Code en un host remoto a través de SSH. Despliega el binario y tuneliza la autenticación API a través de tu máquina local; no requiere configuración remota.").option("--permission-mode <modo>","Modo de permisos para la sesión remota").option("--dangerously-skip-permissions","Omitir todas las solicitudes de permiso en el remoto (peligroso)").option("--local","Modo de prueba e2e; lanza el CLI localmente (omite ssh/despliegue).").action(async()=>{process.stderr.write("Uso: context ssh <usuario@host | alias-ssh-config> [dir]\n\nEjecuta Context Code en un host Linux remoto. No necesitas instalar\nnada en el remoto ni ejecutar `context auth login` allí; el binario se\ndespliega vía SSH y la autenticación API se tuneliza de vuelta.\n"),process.exit(1)});o("DIRECT_CONNECT")&&t.command("open <cc-url>").description("Conectar a un servidor de Context Code (interno — usa URLs cc://)").option("-p, --print [prompt]","Modo impresión (sin interfaz)").option("--output-format <formato>","Formato de salida: text, json, stream-json","text").action(async(e,o)=>{const{parseConnectUrl:t}=await import("./server/parseConnectUrl.js"),{serverUrl:s,authToken:i}=t(e);let r;try{const e=await oi({serverUrl:s,authToken:i,cwd:Ne(),dangerouslySkipPermissions:xi?.dangerouslySkipPermissions});e.workDir&&(Rs(e.workDir),Ts(e.workDir)),Ps(s),r=e.config}catch(e){console.error(e instanceof ti?e.message:String(e)),process.exit(1)}const{runConnectHeadless:n}=await import("./server/connectHeadless.js"),a="string"==typeof o.print?o.print:"",c=!0===o.print;await n(r,a,o.outputFormat,c)});const O=t.command("auth").description("Gestionar autenticación").configureHelp(createSortedHelpConfig());O.command("login").description("Iniciar sesión por OAuth (Anthropic/OpenAI/Google según provider)").option("--email <email>","Pre-completar la dirección de correo en la página de inicio de sesión").option("--sso","Forzar el flujo de inicio de sesión SSO").option("--console","Usar Anthropic Console (facturación por uso de API) en lugar de la suscripción de Claude").option("--claudeai","Usar suscripción de Claude (por defecto)").option("--provider <id>","Provider OAuth: claude, openai, gemini-google").action(async({email:e,sso:o,console:t,claudeai:s,provider:i})=>{const{authLogin:r}=await import("./cli/handlers/auth.js");await r({email:e,sso:o,console:t,claudeai:s,provider:i})}),O.command("status").description("Show authentication status").option("--json","Output as JSON (default)").option("--text","Output as human-readable text").action(async e=>{const{authStatus:o}=await import("./cli/handlers/auth.js");await o(e)}),O.command("logout").description("Cerrar sesión en tu cuenta de Anthropic").action(async()=>{const{authLogout:e}=await import("./cli/handlers/auth.js");await e()}),O.command("provider-api-key").description("Guardar API key para un provider compatible").requiredOption("--provider <id>","ID de provider (openrouter, minimax, zai, gemini-api, nvidia, ollama-cloud)").requiredOption("--api-key <key>","API key del provider").option("--profile <name>","Perfil del provider").action(async e=>{const{authProviderApiKey:o}=await import("./cli/handlers/auth.js");await o({provider:e.provider,apiKey:e.apiKey,profile:e.profile})}),O.command("provider-base-url").description("Guardar base URL para un provider compatible").requiredOption("--provider <id>","ID de provider (ollama, ollama-cloud, openrouter, gemini-google, zai, minimax, nvidia)").requiredOption("--base-url <url>","Base URL del provider").option("--profile <name>","Perfil del provider").action(async e=>{const{authProviderBaseUrl:o}=await import("./cli/handlers/auth.js");await o({provider:e.provider,baseUrl:e.baseUrl,profile:e.profile})}),O.command("set-provider").description("Establecer provider activo para flujos de auth").requiredOption("--provider <id>","ID de provider (claude, openai, gemini-google, ...)").action(async e=>{const{authSetProviderPreference:o}=await import("./cli/handlers/auth.js");await o({provider:e.provider})}),O.command("provider-remove").description("Eliminar provider/perfil y limpiar sus credenciales").requiredOption("--provider <id>","ID de provider (claude, openai, minimax, ollama, ...)").option("--profile <name>","Perfil del provider (si aplica)").action(async e=>{const{authProviderRemove:o}=await import("./cli/handlers/auth.js");await o({provider:e.provider,profile:e.profile})});const D=t.command("provider").description("Cambiar entre proveedores y configurar endpoints").configureHelp(createSortedHelpConfig());D.command("list").description("Listar proveedores y perfiles configurados").action(async()=>{const{providerListHandler:e}=await import("./cli/handlers/provider.js");await e()}),D.command("use <profile>").description("Activar un perfil de proveedor").action(async e=>{try{const{listProviderProfiles:o}=await import("./utils/model/providerProfiles.js"),{switchProviderPreference:t}=await import("./utils/model/providerSwitch.js"),{getAPIProvider:s}=await import("./utils/model/providers.js"),{getDefaultMainLoopModel:i}=await import("./utils/model/model.js"),r=o().filter(o=>o.name.toLowerCase()===e.toLowerCase()||o.id.toLowerCase()===e.toLowerCase());0===r.length&&(process.stderr.write(`Perfil '${e}' no encontrado.\n`),process.exit(1)),r.length>1&&(process.stderr.write(`Perfil ambiguo '${e}'. Hay múltiples perfiles con este nombre.\n`),process.exit(1));const n=r[0];t({currentModel:i(),currentProvider:s(),targetProvider:n.provider,targetProfileName:n.name}),process.stdout.write(`Perfil ${n.provider}/${n.name} activado exitosamente.\n`),process.exit(0)}catch(e){process.stderr.write(`Error: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}});const Y=t.command("profile").description("Gestionar perfiles de proveedor").configureHelp(createSortedHelpConfig());Y.command("use <providerOrProfile> [profileName]").description("Activar un perfil de proveedor").action(async(e,o)=>{try{const{listProviderProfiles:t}=await import("./utils/model/providerProfiles.js"),{switchProviderPreference:s}=await import("./utils/model/providerSwitch.js"),{getAPIProvider:i}=await import("./utils/model/providers.js"),{getDefaultMainLoopModel:r}=await import("./utils/model/model.js");let n,a=o;if(a)n=e;else{const o=t().filter(o=>o.name.toLowerCase()===e.toLowerCase()||o.id.toLowerCase()===e.toLowerCase());1===o.length?(n=o[0].provider,a=o[0].name):o.length>1?(process.stderr.write(`Perfil ambiguo '${e}'. Hay múltiples perfiles con este nombre.\n`),process.exit(1)):(n=e,a=void 0)}s({currentModel:r(),currentProvider:i(),targetProvider:n,targetProfileName:a}),process.stdout.write(`Perfil ${n}${a?"/"+a:""} activado exitosamente.\n`),process.exit(0)}catch(e){process.stderr.write(`Error: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}}),Y.command("create <provider> <profileName>").description("Crear un nuevo perfil de proveedor").action(async(e,o)=>{try{const{createProviderProfile:t,isProfiledProvider:s}=await import("./utils/model/providerProfiles.js");s(e)||(process.stderr.write(`Proveedor '${e}' no admite perfiles.\n`),process.exit(1)),t({provider:e,name:o,activate:!0}),process.stdout.write(`Perfil ${e}/${o} creado y activado exitosamente.\n`),process.exit(0)}catch(e){process.stderr.write(`Error: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}}),Y.command("remove <provider> <profileName>").alias("delete").description("Eliminar un perfil de proveedor").action(async(e,o)=>{try{const{removeProviderProfile:t}=await import("./utils/model/providerProfiles.js");t(e,o)||(process.stderr.write(`Perfil ${e}/${o} no encontrado.\n`),process.exit(1)),process.stdout.write(`Perfil ${e}/${o} eliminado exitosamente.\n`),process.exit(0)}catch(e){process.stderr.write(`Error: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}});t.command("model").description("Inspeccionar modelos disponibles por provider").configureHelp(createSortedHelpConfig()).command("list").description("Listar modelos disponibles del provider activo o de uno especifico").option("--provider <id>","ID del provider (claude, minimax, zai, openai, ...) o label (Claude, MiniMax, ...)").option("--json","Salida en formato JSON").action(async e=>{const{modelListHandler:o}=await import("./cli/handlers/modelList.js");await o(e)});const coworkOption=()=>new p("--cowork","Usar el directorio cowork_plugins").hideHelp(),Q=t.command("plugin").alias("plugins").description("Gestionar plugins de Context Code").configureHelp(createSortedHelpConfig());Q.command("validate <path>").description("Validar un manifiesto de plugin o marketplace").addOption(coworkOption()).action(async(e,o)=>{const{pluginValidateHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("list").description("Listar plugins instalados").option("--json","Salida en formato JSON").option("--available","Incluir plugins disponibles de los marketplaces (requiere --json)").addOption(coworkOption()).action(async e=>{const{pluginListHandler:o}=await import("./cli/handlers/plugins.js");await o(e)});const Z=Q.command("marketplace").description("Gestionar marketplaces de Context Code").configureHelp(createSortedHelpConfig());if(Z.command("add <source>").description("Añadir un marketplace desde una URL, ruta o repositorio de GitHub").addOption(coworkOption()).option("--sparse <paths...>","Limitar la descarga a directorios específicos mediante git sparse-checkout (para monorepositorios). Ejemplo: --sparse .claude-plugin plugins").option("--scope <scope>","Dónde declarar el marketplace: user (por defecto), project o local").action(async(e,o)=>{const{marketplaceAddHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Z.command("list").description("Listar todos los marketplaces configurados").option("--json","Salida en formato JSON").addOption(coworkOption()).action(async e=>{const{marketplaceListHandler:o}=await import("./cli/handlers/plugins.js");await o(e)}),Z.command("remove <name>").alias("rm").description("Eliminar un marketplace configurado").addOption(coworkOption()).action(async(e,o)=>{const{marketplaceRemoveHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Z.command("update [name]").description("Actualizar marketplace(s) desde su origen - actualiza todos si no se especifica un nombre").addOption(coworkOption()).action(async(e,o)=>{const{marketplaceUpdateHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("install <plugin>").alias("i").description("Instalar un plugin de los marketplaces disponibles (usa plugin@marketplace para un marketplace específico)").option("-s, --scope <scope>","Ámbito de instalación: user, project o local","user").addOption(coworkOption()).action(async(e,o)=>{const{pluginInstallHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("uninstall <plugin>").alias("remove").alias("rm").description("Desinstalar un plugin instalado").option("-s, --scope <scope>","Desinstalar del ámbito: user, project o local","user").option("--keep-data","Preservar el directorio de datos persistentes del plugin (~/.context/plugins/data/{id}/)").addOption(coworkOption()).action(async(e,o)=>{const{pluginUninstallHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("enable <plugin>").description("Habilitar un plugin deshabilitado").option("-s, --scope <scope>",`Ámbito de instalación: ${ao.join(", ")} (por defecto: auto-detect)`).addOption(coworkOption()).action(async(e,o)=>{const{pluginEnableHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("disable [plugin]").description("Deshabilitar un plugin habilitado").option("-a, --all","Deshabilitar todos los plugins habilitados").option("-s, --scope <scope>",`Ámbito de instalación: ${ao.join(", ")} (por defecto: auto-detect)`).addOption(coworkOption()).action(async(e,o)=>{const{pluginDisableHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("update <plugin>").description("Actualizar un plugin a la última versión (se requiere reiniciar para aplicar)").option("-s, --scope <scope>",`Ámbito de instalación: ${co.join(", ")} (por defecto: user)`).addOption(coworkOption()).action(async(e,o)=>{const{pluginUpdateHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),t.command("setup-token").description("Configurar un token de autenticación de larga duración (requiere suscripción a Context)").action(async()=>{const[{setupTokenHandler:e},{createRoot:o}]=await Promise.all([import("./cli/handlers/util.js"),import("./ink.js")]),t=await o(we(!1));await e(t)}),t.command("agents").description("Listar agentes configurados").option("--setting-sources <sources>","Lista de fuentes de configuración a cargar separadas por comas (user, project, local).").option("--json","Salida en formato JSON estructurado para consumo por herramientas externas").action(async e=>{const{agentsHandler:o}=await import("./cli/handlers/agents.js");await o({json:!!e.json}),process.exit(0)}),o("TRANSCRIPT_CLASSIFIER")&&"disabled"!==qo()){const e=t.command("auto-mode").description("Inspeccionar la configuración del clasificador de modo automático");e.command("defaults").description("Imprimir el entorno predeterminado del modo automático, las reglas de permiso y denegación en formato JSON").action(async()=>{const{autoModeDefaultsHandler:e}=await import("./cli/handlers/autoMode.js");e(),process.exit(0)}),e.command("config").description("Imprimir la configuración efectiva del modo automático en formato JSON: tus ajustes si están establecidos, los valores predeterminados en caso contrario").action(async()=>{const{autoModeConfigHandler:e}=await import("./cli/handlers/autoMode.js");e(),process.exit(0)}),e.command("critique").description("Obtener comentarios de IA sobre tus reglas personalizadas de modo automático").option("--model <model>","Sobrescribir el modelo que se utiliza").action(async e=>{const{autoModeCritiqueHandler:o}=await import("./cli/handlers/autoMode.js");await o(e),process.exit()})}o("BRIDGE_MODE")&&t.command("remote-control",{hidden:!0}).alias("rc").description("Conectar tu entorno local para sesiones de control remoto a través de claude.ai/code").action(async()=>{const{bridgeMain:e}=await import("./bridge/bridgeMain.js");await e(process.argv.slice(3))});o("KAIROS")&&t.command("assistant [sessionId]").description("Adjuntar el REPL como cliente a una sesión puente en ejecución. Descubre sesiones a través de la API si no se proporciona sessionId.").action(()=>{process.stderr.write("Uso: Context Code assistant [sessionId]\n\nAdjuntar el REPL como cliente visor a una sesión puente en ejecución.\nOmite sessionId para descubrir y elegir entre las sesiones disponibles.\n"),process.exit(1)});t.command("doctor").description("Comprobar el estado del actualizador automático de Context Code. Nota: Se omite el diálogo de confianza del espacio de trabajo y se inician los servidores stdio de .mcp.json para las comprobaciones de salud. Usa este comando solo en directorios en los que confíes.").action(async()=>{const[{doctorHandler:e},{createRoot:o}]=await Promise.all([import("./cli/handlers/util.js"),import("./ink.js")]),t=await o(we(!1));await e(t)}),t.command("update").alias("upgrade").description("Buscar actualizaciones e instalarlas si están disponibles").action(async()=>{const{update:e}=await import("./cli/update.js");await e()}),!1;0;t.command("install [target]").description("Instalar la compilación nativa de Context Code. Usa [target] para especificar la versión (stable, latest o una versión específica)").option("--force","Forzar la instalación incluso si ya está instalado").action(async(e,o)=>{const{installHandler:t}=await import("./cli/handlers/util.js");await t(e,o)}),!1;return i("run_before_parse"),await t.parseAsync(process.argv),i("run_after_parse"),i("main_after_run"),r(),t}(),i("main_after_run")}function maybeActivateProactive(e){if((o("PROACTIVE")||o("KAIROS"))&&(e.proactive||jo(process.env.CONTEXT_CODE_PROACTIVE)||jo(process.env.CLAUDE_CODE_PROACTIVE))){const e=s("./proactive/index.js");e.isProactiveActive()||e.activateProactive("command")}}function maybeActivateBrief(e){if(!o("KAIROS")&&!o("KAIROS_BRIEF"))return;const t=e.brief,i=jo(process.env.CONTEXT_CODE_BRIEF)||jo(process.env.CLAUDE_CODE_BRIEF);if(!t&&!i)return;const{isBriefEntitled:r}=s("./tools/BriefTool/BriefTool.js"),n=r();n&&$s(!0),Re("tengu_brief_mode_enabled",{enabled:n,gated:!n,source:i?"env":"flag"})}
|
|
1
|
+
import{MACRO as e,feature as o}from"./recovery/bunBundleShim.js";import{createRequire as t}from"module";const s=t(import.meta.url);import{profileCheckpoint as i,profileReport as r}from"./utils/startupProfiler.js";i("main_tsx_entry");import{startMdmRawRead as n}from"./utils/settings/mdm/rawRead.js";n();import{ensureKeychainPrefetchCompleted as a,startKeychainPrefetch as c}from"./utils/secureStorage/keychainPrefetch.js";c();import{Command as l,InvalidArgumentError as d,Option as p}from"@commander-js/extra-typings";import m from"chalk";import{readFileSync as u}from"fs";import g from"lodash-es/mapValues.js";import f from"lodash-es/pickBy.js";import h from"lodash-es/uniqBy.js";import{getOauthConfig as v}from"./constants/oauth.js";import{getRemoteSessionUrl as w}from"./constants/product.js";import{getSystemContext as _,getUserContext as C}from"./context.js";import{init as S,initializeTelemetryAfterTrust as y}from"./entrypoints/init.js";import{addToHistory as E}from"./history.js";import{launchRepl as b}from"./replLauncher.js";import{hasGrowthBookEnvOverride as j,initializeGrowthBook as O,refreshGrowthBookAfterAuthChange as T}from"./services/analytics/growthbook.js";import{fetchBootstrapData as P}from"./services/api/bootstrap.js";import{downloadSessionFiles as A,parseFileSpecs as I}from"./services/api/filesApi.js";import{prefetchPassesEligibility as k}from"./services/api/referral.js";import{prefetchOfficialMcpUrls as D}from"./services/mcp/officialRegistry.js";import{isPolicyAllowed as x,loadPolicyLimits as R,refreshPolicyLimits as M,waitForPolicyLimitsToLoad as N}from"./services/policyLimits/index.js";import{loadRemoteManagedSettings as L,refreshRemoteManagedSettings as U}from"./services/remoteManagedSettings/index.js";import{createSyntheticOutputTool as H,isSyntheticOutputToolEnabled as $}from"./tools/SyntheticOutputTool/SyntheticOutputTool.js";import{getTools as B}from"./tools.js";import{canUserConfigureAdvisor as F,getInitialAdvisorSetting as K,isAdvisorEnabled as q,isValidAdvisorModel as V,modelSupportsAdvisor as z}from"./utils/advisor.js";import{isAgentSwarmsEnabled as W}from"./utils/agentSwarmsEnabled.js";import{count as G,uniq as X}from"./utils/array.js";import{installAsciicastRecorder as Y}from"./utils/asciicast.js";import{getSubscriptionType as J,prefetchAwsCredentialsAndBedRockInfoIfSafe as Q,prefetchGcpCredentialsIfSafe as Z,validateForceLoginOrg as ee}from"./utils/auth.js";import{checkHasTrustDialogAccepted as oe,getGlobalConfig as te,getRemoteControlAtStartup as se,isAutoUpdaterDisabled as ie,saveGlobalConfig as re}from"./utils/config.js";import{seedEarlyInput as ne,stopCapturingEarlyInput as ae}from"./utils/earlyInput.js";import{getInitialEffortSetting as ce,parseEffortValue as le}from"./utils/effort.js";import{getInitialFastModeSetting as de,isFastModeEnabled as pe,prefetchFastModeStatus as me,resolveFastModeStatusFromCache as ue}from"./utils/fastMode.js";import{applyConfigEnvironmentVariables as ge}from"./utils/managedEnv.js";import{createSystemMessage as fe,createUserMessage as he}from"./utils/messages.js";import{getPlatform as ve}from"./utils/platform.js";import{getBaseRenderOptions as we}from"./utils/renderOptions.js";import{getSessionIngressAuthToken as _e}from"./utils/sessionIngressAuth.js";import{settingsChangeDetector as Ce}from"./utils/settings/changeDetector.js";import{skillChangeDetector as Se}from"./utils/skills/skillChangeDetector.js";import{jsonParse as ye,writeFileSync_DEPRECATED as Ee}from"./utils/slowOperations.js";import{computeInitialTeamContext as be}from"./utils/swarm/reconnection.js";import{initializeWarningHandler as je}from"./utils/warningHandler.js";import{isWorktreeModeEnabled as Oe}from"./utils/worktreeModeEnabled.js";const getTeammateUtils=()=>s("./utils/teammate.js"),Te=o("COORDINATOR_MODE")?s("./coordinator/coordinatorMode.js"):null,Pe=o("KAIROS")?s("./assistant/index.js"):null,Ae=o("KAIROS")?s("./assistant/gate.js"):null;import{relative as Ie,resolve as ke}from"path";import{isAnalyticsDisabled as De}from"./services/analytics/config.js";import{getFeatureValue_CACHED_MAY_BE_STALE as xe}from"./services/analytics/growthbook.js";import{logEvent as Re}from"./services/analytics/index.js";import{initializeAnalyticsGates as Me}from"./services/analytics/sink.js";import{getOriginalCwd as Ne,setAdditionalDirectoriesForClaudeMd as Le,setIsRemoteMode as Ue,setMainLoopModelOverride as He,setMainThreadAgentType as $e,setTeleportedSessionInfo as Be}from"./bootstrap/state.js";import{filterCommandsForRemoteMode as Fe,getCommands as Ke}from"./commands.js";import{launchAssistantInstallWizard as qe,launchAssistantSessionChooser as Ve,launchInvalidSettingsDialog as ze,launchResumeChooser as We,launchSnapshotUpdateDialog as Ge,launchTeleportRepoMismatchDialog as Xe,launchTeleportResumeWrapper as Ye}from"./dialogLaunchers.js";import{SHOW_CURSOR as Je}from"./ink/termio/dec.js";import{exitWithError as Qe,exitWithMessage as Ze,getRenderContext as eo,renderAndRun as oo,showSetupScreens as to}from"./interactiveHelpers.js";import{initBuiltinPlugins as so}from"./plugins/bundled/index.js";import{checkQuotaStatus as io}from"./services/claudeAiLimits.js";import{getMcpToolsCommandsAndResources as ro,prefetchAllMcpResources as no}from"./services/mcp/client.js";import{VALID_INSTALLABLE_SCOPES as ao,VALID_UPDATE_SCOPES as co}from"./services/plugins/pluginCliCommands.js";import{initBundledSkills as lo}from"./skills/bundled/index.js";import{getActiveAgentsFromList as po,getAgentDefinitionsWithOverrides as mo,isBuiltInAgent as uo,isCustomAgent as go,parseAgentsFromJson as fo}from"./tools/AgentTool/loadAgentsDir.js";import{assertMinVersion as ho}from"./utils/autoUpdater.js";import{setupClaudeInChrome as vo,shouldAutoEnableClaudeInChrome as wo,shouldEnableClaudeInChrome as _o}from"./utils/claudeInChrome/setup.js";import{getContextWindowForModel as Co}from"./utils/context.js";import{loadConversationForResume as So}from"./utils/conversationRecovery.js";import{buildDeepLinkBanner as yo}from"./utils/deepLink/banner.js";import{hasNodeOption as Eo,isBareMode as bo,isEnvTruthy as jo,isInProtectedNamespace as Oo}from"./utils/envUtils.js";import{refreshExampleCommands as To}from"./utils/exampleCommands.js";import{getWorktreePaths as Po}from"./utils/getWorktreePaths.js";import{findGitRoot as Ao,getBranch as Io,getIsGit as ko,getWorktreeCount as Do}from"./utils/git.js";import{getGhAuthStatus as xo}from"./utils/github/ghAuthStatus.js";import{safeParseJSON as Ro}from"./utils/json.js";import{logError as Mo}from"./utils/log.js";import{getModelDeprecationWarning as No}from"./utils/model/deprecation.js";import{getDefaultMainLoopModel as Lo,getUserSpecifiedModelSetting as Uo,normalizeModelStringForAPI as Ho,parseUserSpecifiedModel as $o}from"./utils/model/model.js";import{ensureModelStringsInitialized as Bo}from"./utils/model/modelStrings.js";import{PERMISSION_MODES as Fo}from"./utils/permissions/PermissionMode.js";import{checkAndDisableBypassPermissions as Ko,getAutoModeEnabledStateIfCached as qo,initializeToolPermissionContext as Vo,initialPermissionModeFromCLI as zo,isDefaultPermissionModeAuto as Wo,parseToolListFromCLI as Go,removeDangerousPermissions as Xo,stripDangerousPermissionsForAutoMode as Yo,verifyAutoModeGateAccess as Jo}from"./utils/permissions/permissionSetup.js";import{cleanupOrphanedPluginVersionsInBackground as Qo}from"./utils/plugins/cacheUtils.js";import{initializeVersionedPlugins as Zo}from"./utils/plugins/installedPluginsManager.js";import{getManagedPluginNames as et}from"./utils/plugins/managedPlugins.js";import{getGlobExclusionsForPluginCache as ot}from"./utils/plugins/orphanedPluginFilter.js";import{getPluginSeedDirs as tt}from"./utils/plugins/pluginDirectories.js";import{countFilesRoundedRg as st}from"./utils/ripgrep.js";import{processSessionStartHooks as it,processSetupHooks as rt}from"./utils/sessionStart.js";import{cacheSessionTitle as nt,getSessionIdFromLog as at,loadTranscriptFromFile as ct,saveAgentSetting as lt,saveMode as dt,searchSessionsByCustomTitle as pt,sessionIdExists as mt}from"./utils/sessionStorage.js";import{ensureMdmSettingsLoaded as ut}from"./utils/settings/mdm/settings.js";import{getInitialSettings as gt,getManagedSettingsKeysForLogging as ft,getSettingsForSource as ht,getSettingsWithErrors as vt}from"./utils/settings/settings.js";import{resetSettingsCache as wt}from"./utils/settings/settingsCache.js";import{DEFAULT_TASKS_MODE_TASK_LIST_ID as _t,TASK_STATUSES as Ct}from"./utils/tasks.js";import{logPluginLoadErrors as St,logPluginsEnabledForSession as yt}from"./utils/telemetry/pluginTelemetry.js";import{logSkillsLoaded as Et}from"./utils/telemetry/skillLoadedEvent.js";import{generateTempFilePath as bt}from"./utils/tempfile.js";import{validateUuid as jt}from"./utils/uuid.js";import{registerMcpAddCommand as Ot}from"./commands/mcp/addCommand.js";import{registerMcpXaaIdpCommand as Tt}from"./commands/mcp/xaaIdpCommand.js";import{logPermissionContextForAnts as Pt}from"./services/internalLogging.js";import{fetchClaudeAIMcpConfigsIfEligible as At}from"./services/mcp/claudeai.js";import{clearServerCache as It}from"./services/mcp/client.js";import{areMcpConfigsAllowedWithEnterpriseMcpConfig as kt,dedupClaudeAiMcpServers as Dt,doesEnterpriseMcpConfigExist as xt,filterMcpServersByPolicy as Rt,getClaudeCodeMcpConfigs as Mt,getMcpServerSignature as Nt,parseMcpConfig as Lt,parseMcpConfigFromFilePath as Ut}from"./services/mcp/config.js";import{excludeCommandsByServer as Ht,excludeResourcesByServer as $t}from"./services/mcp/utils.js";import{isXaaEnabled as Bt}from"./services/mcp/xaaIdpLogin.js";import{getRelevantTips as Ft}from"./services/tips/tipRegistry.js";import{logContextMetrics as Kt}from"./utils/api.js";import{CLAUDE_IN_CHROME_MCP_SERVER_NAME as qt,isClaudeInChromeMCPServer as Vt}from"./utils/claudeInChrome/common.js";import{registerCleanup as zt}from"./utils/cleanupRegistry.js";import{eagerParseCliFlag as Wt}from"./utils/cliArgs.js";import{createEmptyAttributionState as Gt}from"./utils/commitAttribution.js";import{countConcurrentSessions as Xt,registerSession as Yt,updateSessionName as Jt}from"./utils/concurrentSessions.js";import{getCwd as Qt}from"./utils/cwd.js";import{logForDebugging as Zt,setHasFormattedOutput as es}from"./utils/debug.js";import{errorMessage as os,getErrnoCode as ts,isENOENT as ss,TeleportOperationError as is,toError as rs}from"./utils/errors.js";import{getFsImplementation as ns,safeResolvePath as as}from"./utils/fsOperations.js";import{gracefulShutdown as cs,gracefulShutdownSync as ls}from"./utils/gracefulShutdown.js";import{setAllHookEventsEnabled as ds}from"./utils/hooks/hookEvents.js";import{refreshModelCapabilities as ps}from"./utils/model/modelCapabilities.js";import{peekForStdinData as ms,writeToStderr as us}from"./utils/process.js";import{setCwd as gs}from"./utils/Shell.js";import{processResumedConversation as fs}from"./utils/sessionRestore.js";import{parseSettingSourcesFlag as hs}from"./utils/settings/constants.js";import{plural as vs}from"./utils/stringUtils.js";import{getInitialMainLoopModel as ws,getIsNonInteractiveSession as _s,getSdkBetas as Cs,getSessionId as Ss,getUserMsgOptIn as ys,setAllowedChannels as Es,setAllowedSettingSources as bs,setChromeFlagOverride as js,setClientType as Os,setCwdState as Ts,setDirectConnectServerUrl as Ps,setFlagSettingsPath as As,setInitialMainLoopModel as Is,setInlinePlugins as ks,setIsInteractive as Ds,setKairosActive as xs,setOriginalCwd as Rs,setQuestionPreviewFormat as Ms,setSdkBetas as Ns,setSessionBypassPermissionsMode as Ls,setSessionPersistenceDisabled as Us,setSessionSource as Hs,setUserMsgOptIn as $s,switchSession as Bs}from"./bootstrap/state.js";const Fs=o("TRANSCRIPT_CLASSIFIER")?s("./utils/permissions/autoModeState.js"):null;import{migrateAutoUpdatesToSettings as Ks}from"./migrations/migrateAutoUpdatesToSettings.js";import{migrateBypassPermissionsAcceptedToSettings as qs}from"./migrations/migrateBypassPermissionsAcceptedToSettings.js";import{migrateEnableAllProjectMcpServersToSettings as Vs}from"./migrations/migrateEnableAllProjectMcpServersToSettings.js";import{migrateFennecToOpus as zs}from"./migrations/migrateFennecToOpus.js";import{migrateLegacyOpusToCurrent as Ws}from"./migrations/migrateLegacyOpusToCurrent.js";import{migrateOpusToOpus1m as Gs}from"./migrations/migrateOpusToOpus1m.js";import{migrateReplBridgeEnabledToRemoteControlAtStartup as Xs}from"./migrations/migrateReplBridgeEnabledToRemoteControlAtStartup.js";import{migrateSonnet1mToSonnet45 as Ys}from"./migrations/migrateSonnet1mToSonnet45.js";import{migrateSonnet45ToSonnet46 as Js}from"./migrations/migrateSonnet45ToSonnet46.js";import{resetAutoModeOptInForDefaultOffer as Qs}from"./migrations/resetAutoModeOptInForDefaultOffer.js";import{resetProToOpusDefault as Zs}from"./migrations/resetProToOpusDefault.js";import{createRemoteSessionConfig as ei}from"./remote/RemoteSessionManager.js";import{createDirectConnectSession as oi,DirectConnectError as ti}from"./server/createDirectConnectSession.js";import{initializeLspServerManager as si}from"./services/lsp/manager.js";import{shouldEnablePromptSuggestion as ii}from"./services/PromptSuggestion/promptSuggestion.js";import{getDefaultAppState as ri,IDLE_SPECULATION_STATE as ni}from"./state/AppStateStore.js";import{onChangeAppState as ai}from"./state/onChangeAppState.js";import{createStore as ci}from"./state/store.js";import{asSessionId as li}from"./types/ids.js";import{filterAllowedSdkBetas as di}from"./utils/betas.js";import{isInBundledMode as pi,isRunningWithBun as mi}from"./utils/bundledMode.js";import{logForDiagnosticsNoPII as ui}from"./utils/diagLogs.js";import{filterExistingPaths as gi,getKnownPathsForRepo as fi}from"./utils/githubRepoPathMapping.js";import{clearPluginCache as hi,loadAllPluginsCacheOnly as vi}from"./utils/plugins/pluginLoader.js";import{migrateChangelogFromConfig as wi}from"./utils/releaseNotes.js";import{SandboxManager as _i}from"./utils/sandbox/sandbox-adapter.js";import{fetchSession as Ci,prepareApiRequest as Si}from"./utils/teleport/api.js";import{checkOutTeleportedSessionBranch as yi,processMessagesForTeleportResume as Ei,teleportToRemoteWithErrorHandling as bi,validateGitState as ji,validateSessionRepository as Oi}from"./utils/teleport.js";import{shouldEnableThinkingByDefault as Ti}from"./utils/thinking.js";import{initUser as Pi,resetUserCache as Ai}from"./utils/user.js";import{getTmuxInstallInstructions as Ii,isTmuxAvailable as ki,parsePRReference as Di}from"./utils/worktree.js";function logSessionTelemetry(){const e=$o(ws()??Lo());Et(Qt(),Co(e,Cs())),vi().then(({enabled:e,errors:o})=>{const t=et();yt(e,t,tt()),St(o,t)}).catch(e=>Mo(e))}function getCertEnvVarTelemetry(){const e={};return process.env.NODE_EXTRA_CA_CERTS&&(e.has_node_extra_ca_certs=!0),(process.env.CONTEXT_CODE_CLIENT_CERT||process.env.CLAUDE_CODE_CLIENT_CERT)&&(e.has_client_cert=!0),Eo("--use-system-ca")&&(e.has_use_system_ca=!0),Eo("--use-openssl-ca")&&(e.has_use_openssl_ca=!0),e}i("main_tsx_imports_loaded"),function(){const e=mi(),o=process.execArgv.some(o=>e?/--inspect(-brk)?/.test(o):/--inspect(-brk)?|--debug(-brk)?/.test(o)),t=process.env.NODE_OPTIONS&&/--inspect(-brk)?|--debug(-brk)?/.test(process.env.NODE_OPTIONS);try{const e=global.require("inspector");return!!e.url()||o||t}catch{return o||t}}()&&process.exit(1);export function startDeferredPrefetches(){jo(process.env.CONTEXT_CODE_EXIT_AFTER_FIRST_RENDER)||jo(process.env.CLAUDE_CODE_EXIT_AFTER_FIRST_RENDER)||bo()||(Pi(),C(),function(){if(_s())return ui("info","prefetch_system_context_non_interactive"),void _();oe()?(ui("info","prefetch_system_context_has_trust"),_()):ui("info","prefetch_system_context_skipped_no_trust")}(),Ft(),!jo(process.env.CLAUDE_CODE_USE_BEDROCK)||jo(process.env.CONTEXT_CODE_SKIP_BEDROCK_AUTH)||jo(process.env.CLAUDE_CODE_SKIP_BEDROCK_AUTH)||Q(),!jo(process.env.CLAUDE_CODE_USE_VERTEX)||jo(process.env.CONTEXT_CODE_SKIP_VERTEX_AUTH)||jo(process.env.CLAUDE_CODE_SKIP_VERTEX_AUTH)||Z(),st(Qt(),AbortSignal.timeout(3e3),[]),Me(),D(),ps(),Ce.initialize(),bo()||Se.initialize(),import("./commands/login/login.js"))}function eagerLoadSettings(){i("eagerLoadSettings_start");const e=Wt("--settings");e&&function(e){try{const o=e.trim();let t;if(o.startsWith("{")&&o.endsWith("}"))Ro(o)||(process.stderr.write(m.red("Error: Invalid JSON provided to --settings\n")),process.exit(1)),t=bt("claude-settings",".json",{contentHash:o}),Ee(t,o,"utf8");else{const{resolvedPath:o}=as(ns(),e);try{u(o,"utf8")}catch(e){throw ss(e)&&(process.stderr.write(m.red(`Error: Settings file not found: ${o}\n`)),process.exit(1)),e}t=o}As(t),wt()}catch(e){e instanceof Error&&Mo(e),process.stderr.write(m.red(`Error processing settings: ${os(e)}\n`)),process.exit(1)}}(e);const o=Wt("--setting-sources");void 0!==o&&function(e){try{const o=hs(e);bs(o),wt()}catch(e){e instanceof Error&&Mo(e),process.stderr.write(m.red(`Error processing --setting-sources: ${os(e)}\n`)),process.exit(1)}}(o),i("eagerLoadSettings_end")}const xi=o("DIRECT_CONNECT")?{url:void 0,authToken:void 0,dangerouslySkipPermissions:!1}:void 0,Ri=o("KAIROS")?{sessionId:void 0,discover:!1}:void 0,Mi=o("SSH_REMOTE")?{host:void 0,cwd:void 0,permissionMode:void 0,dangerouslySkipPermissions:!1,local:!1,extraCliArgs:[]}:void 0;export async function main(){if(i("main_function_start"),process.env.NoDefaultCurrentDirectoryInExePath="1",je(),process.on("exit",()=>{!function(){const e=process.stderr.isTTY?process.stderr:process.stdout.isTTY?process.stdout:void 0;e?.write(Je)}()}),process.on("SIGINT",()=>{process.argv.includes("-p")||process.argv.includes("--print")||process.exit(0)}),i("main_warning_handler_initialized"),o("DIRECT_CONNECT")){const e=process.argv.slice(2),o=e.findIndex(e=>e.startsWith("cc://")||e.startsWith("cc+unix://"));if(-1!==o&&xi){const t=e[o],{parseConnectUrl:s}=await import("./server/parseConnectUrl.js"),i=s(t);if(xi.dangerouslySkipPermissions=e.includes("--dangerously-skip-permissions"),e.includes("-p")||e.includes("--print")){const s=e.filter((e,t)=>t!==o),i=s.indexOf("--dangerously-skip-permissions");-1!==i&&s.splice(i,1),process.argv=[process.argv[0],process.argv[1],"open",t,...s]}else{xi.url=i.serverUrl,xi.authToken=i.authToken;const t=e.filter((e,t)=>t!==o),s=t.indexOf("--dangerously-skip-permissions");-1!==s&&t.splice(s,1),process.argv=[process.argv[0],process.argv[1],...t]}}}if(o("LODESTONE")){const e=process.argv.indexOf("--handle-uri");if(-1!==e&&process.argv[e+1]){const{enableConfigs:o}=await import("./utils/config.js");o();const t=process.argv[e+1],{handleDeepLinkUri:s}=await import("./utils/deepLink/protocolHandler.js"),i=await s(t);process.exit(i)}if("darwin"===process.platform&&"com.anthropic.claude-code-url-handler"===process.env.__CFBundleIdentifier){const{enableConfigs:e}=await import("./utils/config.js");e();const{handleUrlSchemeLaunch:o}=await import("./utils/deepLink/protocolHandler.js"),t=await o();process.exit(t??1)}}if(o("KAIROS")&&Ri){const e=process.argv.slice(2);if("assistant"===e[0]){const o=e[1];o&&!o.startsWith("-")?(Ri.sessionId=o,e.splice(0,2),process.argv=[process.argv[0],process.argv[1],...e]):o||(Ri.discover=!0,e.splice(0,1),process.argv=[process.argv[0],process.argv[1],...e])}}if(o("SSH_REMOTE")&&Mi){const e=process.argv.slice(2);if("ssh"===e[0]){const o=e.indexOf("--local");-1!==o&&(Mi.local=!0,e.splice(o,1));const t=e.indexOf("--dangerously-skip-permissions");-1!==t&&(Mi.dangerouslySkipPermissions=!0,e.splice(t,1));const s=e.indexOf("--permission-mode");-1!==s&&e[s+1]&&!e[s+1].startsWith("-")&&(Mi.permissionMode=e[s+1],e.splice(s,2));const i=e.findIndex(e=>e.startsWith("--permission-mode="));-1!==i&&(Mi.permissionMode=e[i].split("=")[1],e.splice(i,1));const extractFlag=(o,t={})=>{const s=e.indexOf(o);if(-1!==s){Mi.extraCliArgs.push(t.as??o);const i=e[s+1];t.hasValue&&i&&!i.startsWith("-")?(Mi.extraCliArgs.push(i),e.splice(s,2)):e.splice(s,1)}const i=e.findIndex(e=>e.startsWith(`${o}=`));-1!==i&&(Mi.extraCliArgs.push(t.as??o,e[i].slice(o.length+1)),e.splice(i,1))};extractFlag("-c",{as:"--continue"}),extractFlag("--continue"),extractFlag("--resume",{hasValue:!0}),extractFlag("--model",{hasValue:!0})}if("ssh"===e[0]&&e[1]&&!e[1].startsWith("-")){Mi.host=e[1];let o=2;e[2]&&!e[2].startsWith("-")&&(Mi.cwd=e[2],o=3);const t=e.slice(o);if(t.includes("-p")||t.includes("--print"))return process.stderr.write("Error: el modo sin cabeza (-p/--print) no es compatible con context ssh\n"),void ls(1);process.argv=[process.argv[0],process.argv[1],...t]}}const t=process.argv.slice(2),n=t.includes("-p")||t.includes("--print"),c=t.includes("--init-only"),j=t.some(e=>e.startsWith("--sdk-url")),O=n||c||j||!process.stdout.isTTY;O&&ae();Ds(!O),function(e){if(process.env.CLAUDE_CODE_ENTRYPOINT)return;const o=process.argv.slice(2),t=o.indexOf("mcp");-1===t||"serve"!==o[t+1]?jo(process.env.CONTEXT_CODE_ACTION)||jo(process.env.CLAUDE_CODE_ACTION)?process.env.CLAUDE_CODE_ENTRYPOINT="claude-code-github-action":process.env.CLAUDE_CODE_ENTRYPOINT=e?"sdk-cli":"cli":process.env.CLAUDE_CODE_ENTRYPOINT="mcp"}(O);const D=(()=>{if(jo(process.env.GITHUB_ACTIONS))return"github-action";if("sdk-ts"===process.env.CLAUDE_CODE_ENTRYPOINT)return"sdk-typescript";if("sdk-py"===process.env.CLAUDE_CODE_ENTRYPOINT)return"sdk-python";if("sdk-cli"===process.env.CLAUDE_CODE_ENTRYPOINT)return"sdk-cli";if("claude-vscode"===process.env.CLAUDE_CODE_ENTRYPOINT)return"claude-vscode";if("local-agent"===process.env.CLAUDE_CODE_ENTRYPOINT)return"local-agent";if("claude-desktop"===process.env.CLAUDE_CODE_ENTRYPOINT)return"claude-desktop";const e=process.env.CONTEXT_CODE_SESSION_ACCESS_TOKEN||process.env.CLAUDE_CODE_SESSION_ACCESS_TOKEN||process.env.CONTEXT_CODE_WEBSOCKET_AUTH_FILE_DESCRIPTOR||process.env.CLAUDE_CODE_WEBSOCKET_AUTH_FILE_DESCRIPTOR;return"remote"===process.env.CLAUDE_CODE_ENTRYPOINT||e?"remote":"cli"})();Os(D);const Y=process.env.CONTEXT_CODE_QUESTION_PREVIEW_FORMAT??process.env.CLAUDE_CODE_QUESTION_PREVIEW_FORMAT;"markdown"===Y||"html"===Y?Ms(Y):D.startsWith("sdk-")||"claude-desktop"===D||"local-agent"===D||"remote"===D||Ms("markdown"),"bridge"!==process.env.CONTEXT_CODE_ENVIRONMENT_KIND&&"bridge"!==process.env.CLAUDE_CODE_ENVIRONMENT_KIND||Hs("remote-control"),i("main_client_type_determined"),eagerLoadSettings(),i("main_before_run"),await async function(){function createSortedHelpConfig(){const getOptionSortKey=e=>e.long?.replace(/^--/,"")??e.short?.replace(/^-/,"")??"";return Object.assign({sortSubcommands:!0,sortOptions:!0},{compareOptions:(e,o)=>getOptionSortKey(e).localeCompare(getOptionSortKey(o))})}i("run_function_start");const t=(new l).configureHelp(createSortedHelpConfig()).enablePositionalOptions();i("run_commander_initialized"),t.hook("preAction",async e=>{i("preAction_start"),await Promise.all([ut(),a()]),i("preAction_after_mdm"),await S(),i("preAction_after_init"),jo(process.env.CONTEXT_CODE_DISABLE_TERMINAL_TITLE)||jo(process.env.CLAUDE_CODE_DISABLE_TERMINAL_TITLE)||(process.title="claude");const{initSinks:t}=await import("./utils/sinks.js");t(),i("preAction_after_sinks");const s=e.getOptionValue("pluginDir");Array.isArray(s)&&s.length>0&&s.every(e=>"string"==typeof e)&&(ks(s),hi("preAction: --plugin-dir inline plugins")),11!==te().migrationVersion&&(Ks(),qs(),Vs(),Zs(),Ys(),Ws(),Js(),Gs(),Xs(),o("TRANSCRIPT_CLASSIFIER")&&Qs(),re(e=>11===e.migrationVersion?e:{...e,migrationVersion:11})),wi().catch(()=>{}),i("preAction_after_migrations"),L(),R(),i("preAction_after_remote_settings"),o("UPLOAD_USER_SETTINGS")&&import("./services/settingsSync/index.js").then(e=>e.uploadUserSettingsInBackground()),i("preAction_after_settings_sync")}),t.name("context").description("Context Code - inicia una sesión interactiva por defecto, usa -p/--print para salida no interactiva").argument("[consulta...]","Tu consulta").helpOption("-h, --help","Muestra la ayuda del comando").option("-d, --debug [filtro]",'Activa el modo de depuración con filtrado opcional de categorías (ej. "api,hooks" o "!1p,!file")',e=>!0).addOption(new p("--debug-to-stderr","Activa el modo de depuración (a stderr)").argParser(Boolean).hideHelp()).option("--debug-file <ruta>","Escribe los logs de depuración en una ruta específica (activa implícitamente el modo de depuración)",()=>!0).option("--verbose","Sobrescribe el ajuste de modo detallado de la configuración",()=>!0).option("-p, --print","Imprime la respuesta y sale (útil para tuberías). Nota: El diálogo de confianza del espacio de trabajo se omite cuando se ejecuta con el modo -p. Solo usa esta bandera en directorios en los que confíes.",()=>!0).option("--bare","Modo mínimo: omite hooks, LSP, sincronización de plugins, atribución, auto-memoria, prefetches de fondo, lecturas de llavero y auto-descubrimiento de CLAUDE.md. Establece CLAUDE_CODE_SIMPLE=1. La autenticación de Anthropic es estrictamente ANTHROPIC_API_KEY o apiKeyHelper a través de --settings (OAuth y el llavero nunca se leen). Los proveedores 3P (Bedrock/Vertex/Foundry) usan sus propias credenciales. Las habilidades aún se resuelven a través de /nombre-habilidad. Proporciona contexto explícitamente a través de: --system-prompt[-file], --append-system-prompt[-file], --add-dir (directorios CLAUDE.md), --mcp-config, --settings, --agents, --plugin-dir.",()=>!0).addOption(new p("--init","Ejecuta los hooks de configuración con el disparador init, luego continúa").hideHelp()).addOption(new p("--init-only","Ejecuta los hooks de configuración y SessionStart:startup, luego sale").hideHelp()).addOption(new p("--maintenance","Ejecuta los hooks de configuración con el disparador de mantenimiento, luego continúa").hideHelp()).addOption(new p("--output-format <formato>",'Formato de salida (solo funciona con --print): "text" (por defecto), "json" (resultado único) o "stream-json" (transmisión en tiempo real)').choices(["text","json","stream-json"])).addOption(new p("--json-schema <esquema>",'Esquema JSON para la validación de salida estructurada. Ejemplo: {"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}').argParser(String)).option("--include-hook-events","Incluye todos los eventos del ciclo de vida del hook en el flujo de salida (solo funciona con --output-format=stream-json)",()=>!0).option("--include-partial-messages","Incluye fragmentos de mensajes parciales a medida que llegan (solo funciona con --print y --output-format=stream-json)",()=>!0).addOption(new p("--input-format <formato>",'Formato de entrada (solo funciona con --print): "text" (por defecto) o "stream-json" (entrada transmitida en tiempo real)').choices(["text","stream-json"])).option("--mcp-debug","[OBSOLETO. Usa --debug en su lugar] Activa el modo de depuración de MCP (muestra errores del servidor MCP)",()=>!0).option("--dangerously-skip-permissions","Omite todas las comprobaciones de permisos. Recomendado solo para sandboxes sin acceso a internet.",()=>!0).option("--allow-dangerously-skip-permissions","Permite omitir todas las comprobaciones de permisos como una opción, sin que esté activado por defecto. Recomendado solo para sandboxes sin acceso a internet.",()=>!0).addOption(new p("--thinking <modo>","Modo de pensamiento: enabled (equivalente a adaptive), disabled").choices(["enabled","adaptive","disabled"]).hideHelp()).addOption(new p("--max-thinking-tokens <tokens>","[OBSOLETO. Usa --thinking en su lugar para modelos más nuevos] Número máximo de tokens de pensamiento (solo funciona con --print)").argParser(Number).hideHelp()).addOption(new p("--max-turns <turnos>","Número máximo de turnos agénticos en modo no interactivo. Esto detendrá la conversación después del número especificado de turnos. (solo funciona con --print)").argParser(Number).hideHelp()).addOption(new p("--max-budget-usd <cantidad>","Cantidad máxima en dólares para gastar en llamadas a la API (solo funciona con --print)").argParser(e=>{const o=Number(e);if(isNaN(o)||o<=0)throw new Error("--max-budget-usd debe ser un número positivo mayor que 0");return o})).addOption(new p("--task-budget <tokens>","Presupuesto de tareas del lado de la API en tokens (output_config.task_budget)").argParser(e=>{const o=Number(e);if(isNaN(o)||o<=0||!Number.isInteger(o))throw new Error("--task-budget debe ser un entero positivo");return o}).hideHelp()).option("--replay-user-messages","Vuelve a emitir los mensajes del usuario desde stdin de vuelta a stdout para confirmación (solo funciona con --input-format=stream-json e --output-format=stream-json)",()=>!0).addOption(new p("--enable-auth-status","Activa los mensajes de estado de autenticación en modo SDK").default(!1).hideHelp()).option("--allowedTools, --allowed-tools <herramientas...>",'Lista de nombres de herramientas permitidas separadas por comas o espacios (ej. "Bash(git:*) Edit")').option("--tools <herramientas...>",'Especifica la lista de herramientas disponibles del conjunto integrado. Usa "" para desactivar todas las herramientas, "default" para usar todas las herramientas, o especifica nombres de herramientas (ej. "Bash,Edit,Read").').option("--disallowedTools, --disallowed-tools <herramientas...>",'Lista de nombres de herramientas denegadas separadas por comas o espacios (ej. "Bash(git:*) Edit")').option("--mcp-config <configs...>","Carga servidores MCP desde archivos JSON o cadenas (separados por espacios)").addOption(new p("--permission-prompt-tool <herramienta>","Herramienta MCP a usar para solicitudes de permisos (solo funciona con --print)").argParser(String).hideHelp()).addOption(new p("--system-prompt <prompt>","Prompt del sistema a usar para la sesión").argParser(String)).addOption(new p("--system-prompt-file <archivo>","Lee el prompt del sistema desde un archivo").argParser(String).hideHelp()).addOption(new p("--append-system-prompt <prompt>","Añade un prompt del sistema al prompt del sistema predeterminado").argParser(String)).addOption(new p("--append-system-prompt-file <archivo>","Lee un prompt del sistema desde un archivo y lo añade al prompt del sistema predeterminado").argParser(String).hideHelp()).addOption(new p("--permission-mode <modo>","Modo de permisos a usar para la sesión").argParser(String).choices(Fo)).option("-c, --continue","Continúa la conversación más reciente en el directorio actual",()=>!0).option("-r, --resume [valor]","Reanuda una conversación por ID de sesión, o abre el selector interactivo con un término de búsqueda opcional",e=>e||!0).option("--fork-session","Al reanudar, protege el ID de sesión original creando uno nuevo (úsalo con --resume o --continue)",()=>!0).addOption(new p("--prefill <texto>","Rellena previamente la entrada del prompt con texto sin enviarlo").hideHelp()).addOption(new p("--deep-link-origin","Señala que esta sesión se inició desde un enlace profundo").hideHelp()).addOption(new p("--deep-link-repo <slug>","Repositorio al que se resolvió el enlace profundo en el cwd actual").hideHelp()).addOption(new p("--deep-link-last-fetch <ms>","mtime de FETCH_HEAD en ms, precalculado por el enlace profundo").argParser(e=>{const o=Number(e);return Number.isFinite(o)?o:void 0}).hideHelp()).option("--from-pr [valor]","Reanuda una sesión vinculada a un PR, o abre el selector interactivo",e=>e||!0).option("--no-session-persistence","Desactiva la persistencia de sesión: las sesiones no se guardarán en disco (solo con --print)").addOption(new p("--resume-session-at <id mensaje>","Al reanudar, solo incluye mensajes hasta el ID especificado (usa con --resume en modo print)").argParser(String).hideHelp()).addOption(new p("--rewind-files <id-mensaje>","Restaura archivos al estado del mensaje especificado y sale (requiere --resume)").hideHelp()).option("--model <modelo>","Modelo para la sesión. Usa un alias (ej. 'sonnet') o el nombre completo (ej. 'claude-sonnet-4-6').").addOption(new p("--effort <level>","Nivel de esfuerzo (low, medium, high, max)").argParser(e=>{const o=e.toLowerCase(),t=["low","medium","high","max"];if(!t.includes(o))throw new d(`Debe ser uno de: ${t.join(", ")}`);return o})).option("--agent <agente>","Agente para la sesión. Sobrescribe el ajuste 'agent'.").option("--betas <betas...>","Encabezados beta para peticiones API (solo usuarios con API key)").option("--fallback-model <modelo>","Habilita el cambio automático al modelo especificado si el principal está saturado (solo con --print)").addOption(new p("--workload <tag>","Etiqueta de carga para atribución de facturación. Solo para uso interno. (solo con --print)").hideHelp()).option("--settings <archivo-o-json>","Ruta a un archivo JSON de ajustes o cadena JSON").option("--add-dir <directorios...>","Directorios adicionales permitidos para las herramientas").option("--ide","Conecta automáticamente al IDE al iniciar si hay uno disponible",()=>!0).option("--strict-mcp-config","Solo usa servidores MCP de --mcp-config",()=>!0).option("--session-id <uuid>","Usa un ID de sesión específico (debe ser un UUID válido)").option("-n, --name <nombre>","Establece un nombre para esta sesión (se muestra en /resume y en el título)").option("--agents <json>","Objeto JSON definiendo agentes personalizados").option("--setting-sources <fuentes>","Lista de fuentes de ajustes a cargar (user, project, local) separadas por comas.").option("--plugin-dir <ruta>","Carga plugins desde un directorio (repetible: --plugin-dir A --plugin-dir B)",(e,o)=>[...o,e],[]).option("--disable-slash-commands","Desactiva todas las habilidades",()=>!0).option("--chrome","Habilita la integración de Claude en Chrome").option("--no-chrome","Desactiva la integración de Claude en Chrome").option("--chrome-anty","Habilita la extensión Antigravity Browser Extension").option("--file <especificaciones...>","Recursos de archivos a descargar al inicio. Formato: id_archivo:ruta_relativa (ej., --file file_abc:doc.txt)").action(async(t,r)=>{let n=Array.isArray(t)?t.join(" "):t;i("action_handler_start"),r.bare&&(process.env.CLAUDE_CODE_SIMPLE="1"),"code"===n&&(Re("tengu_code_prompt_ignored",{}),console.warn(m.yellow("Tip: You can launch Context Code with just `context`")),n=void 0),n&&"string"==typeof n&&!/\s/.test(n)&&n.length>0&&Re("tengu_single_word_prompt",{length:n.length});let a,c=!1;if(o("KAIROS")&&r.assistant&&Pe&&Pe.markAssistantForced(),o("KAIROS")&&Pe?.isAssistantMode()&&!r.agentId&&Ae)if(oe()){if(c=Pe.isAssistantForced()||await Ae.isKairosEnabled(),c){r.brief=!0,xs(!0),a=await Pe.initializeAssistantTeam()}}else console.warn(m.yellow("Assistant mode disabled: directory is not trusted. Accept the trust dialog and restart."));const{debug:l=!1,debugToStderr:d=!1,dangerouslySkipPermissions:p,allowDangerouslySkipPermissions:S=!1,tools:j=[],allowedTools:O=[],disallowedTools:D=[],mcpConfig:R=[],permissionMode:L,addDir:Y=[],fallbackModel:Q,betas:Z=[],ide:ae=!1,sessionId:we,includeHookEvents:Ce,includePartialMessages:Se}=r;let Ee;r.prefill&&ne(r.prefill);const je=r.agents,Ie=r.agent;o("BG_SESSIONS")&&Ie&&(process.env.CONTEXT_CODE_AGENT=Ie,process.env.CLAUDE_CODE_AGENT=Ie);let Me=r.outputFormat,Je=r.inputFormat,ao=r.verbose??te().verbose,co=r.print;const Co=r.init??!1,Eo=r.initOnly??!1,Ao=r.maintenance??!1,Fo=r.disableSlashCommands||!1,qo=!1,Xo=qo?"string"==typeof qo?qo:_t:void 0;const et=Oe()?r.worktree:void 0;let tt="string"==typeof et?et:void 0;const st=void 0!==et;let ct;if(tt){const e=Di(tt);null!==e&&(ct=e,tt=void 0)}const ut=Oe()&&!0===r.tmux;let wt;if(ut&&(st||(process.stderr.write(m.red("Error: --tmux requires --worktree\n")),process.exit(1)),"windows"===ve()&&(process.stderr.write(m.red("Error: --tmux is not supported on Windows\n")),process.exit(1)),await ki()||(process.stderr.write(m.red(`Error: tmux is not installed.\n${Ii()}\n`)),process.exit(1))),W()){const e=function(e){if("object"!=typeof e||null===e)return{};const o=e,t=o.teammateMode;return{agentId:"string"==typeof o.agentId?o.agentId:void 0,agentName:"string"==typeof o.agentName?o.agentName:void 0,teamName:"string"==typeof o.teamName?o.teamName:void 0,agentColor:"string"==typeof o.agentColor?o.agentColor:void 0,planModeRequired:"boolean"==typeof o.planModeRequired?o.planModeRequired:void 0,parentSessionId:"string"==typeof o.parentSessionId?o.parentSessionId:void 0,teammateMode:"auto"===t||"tmux"===t||"in-process"===t?t:void 0,agentType:"string"==typeof o.agentType?o.agentType:void 0}}(r);wt=e;const o=e.agentId||e.agentName||e.teamName,t=e.agentId&&e.agentName&&e.teamName;o&&!t&&(process.stderr.write(m.red("Error: --agent-id, --agent-name, and --team-name must all be provided together\n")),process.exit(1)),e.agentId&&e.agentName&&e.teamName&&getTeammateUtils().setDynamicTeamContext?.({agentId:e.agentId,agentName:e.agentName,teamName:e.teamName,color:e.agentColor,planModeRequired:e.planModeRequired??!1,parentSessionId:e.parentSessionId}),e.teammateMode&&s("./utils/swarm/backends/teammateModeSnapshot.js").setCliTeammateModeOverride?.(e.teammateMode)}const Ct=r.sdkUrl??void 0,St=Se||jo(process.env.CONTEXT_CODE_INCLUDE_PARTIAL_MESSAGES)||jo(process.env.CLAUDE_CODE_INCLUDE_PARTIAL_MESSAGES);(Ce||jo(process.env.CONTEXT_CODE_REMOTE)||jo(process.env.CLAUDE_CODE_REMOTE))&&ds(!0),Ct&&(Je||(Je="stream-json"),Me||(Me="stream-json"),void 0===r.verbose&&(ao=!0),r.print||(co=!0));const yt=r.teleport??null,Et=r.remote,bt=!0===Et?"":Et??null,Ot=r.remoteControl??r.rc;let Tt=!1;const Bt="string"==typeof Ot&&Ot.length>0?Ot:void 0;if(we&&(!r.continue&&!r.resume||r.forkSession||(process.stderr.write(m.red("Error: --session-id can only be used with --continue or --resume if --fork-session is also specified.\n")),process.exit(1)),!Ct)){const e=jt(we);e||(process.stderr.write(m.red("Error: Invalid session ID. Must be a valid UUID.\n")),process.exit(1)),mt(e)&&(process.stderr.write(m.red(`Error: Session ID ${e} is already in use.\n`)),process.exit(1))}const Ft=r.file;if(Ft&&Ft.length>0){const e=_e();e||(process.stderr.write(m.red("Error: Session token required for file downloads. CLAUDE_CODE_SESSION_ACCESS_TOKEN must be set.\n")),process.exit(1));const o=process.env.CONTEXT_CODE_REMOTE_SESSION_ID||process.env.CLAUDE_CODE_REMOTE_SESSION_ID||Ss(),t=I(Ft);if(t.length>0){const s={baseUrl:process.env.ANTHROPIC_BASE_URL||v().BASE_API_URL,oauthToken:e,sessionId:o};Ee=A(t,s)}}const Wt=_s();Q&&r.model&&Q===r.model&&(process.stderr.write(m.red("Error: Fallback model cannot be the same as the main model. Please specify a different model for --fallback-model.\n")),process.exit(1));let ss=r.systemPrompt;if(r.systemPromptFile){r.systemPrompt&&(process.stderr.write(m.red("Error: Cannot use both --system-prompt and --system-prompt-file. Please use only one.\n")),process.exit(1));try{const e=ke(r.systemPromptFile);ss=u(e,"utf8")}catch(e){"ENOENT"===ts(e)&&(process.stderr.write(m.red(`Error: System prompt file not found: ${ke(r.systemPromptFile)}\n`)),process.exit(1)),process.stderr.write(m.red(`Error reading system prompt file: ${os(e)}\n`)),process.exit(1)}}let ns=r.appendSystemPrompt;if(r.appendSystemPromptFile){r.appendSystemPrompt&&(process.stderr.write(m.red("Error: Cannot use both --append-system-prompt and --append-system-prompt-file. Please use only one.\n")),process.exit(1));try{const e=ke(r.appendSystemPromptFile);ns=u(e,"utf8")}catch(e){"ENOENT"===ts(e)&&(process.stderr.write(m.red(`Error: Append system prompt file not found: ${ke(r.appendSystemPromptFile)}\n`)),process.exit(1)),process.stderr.write(m.red(`Error reading append system prompt file: ${os(e)}\n`)),process.exit(1)}}if(W()&&wt?.agentId&&wt?.agentName&&wt?.teamName){const e=s("./utils/swarm/teammatePromptAddendum.js").TEAMMATE_SYSTEM_PROMPT_ADDENDUM;ns=ns?`${ns}\n\n${e}`:e}const{mode:as,notification:ps}=zo({permissionModeCli:L,dangerouslySkipPermissions:p});Ls("bypassPermissions"===as),o("TRANSCRIPT_CLASSIFIER")&&(r.enableAutoMode||"auto"===L||"auto"===as||!L&&Wo())&&Fs?.setAutoModeFlagCli(!0);let hs={};if(R&&R.length>0){const e=R.map(e=>e.trim()).filter(e=>e.length>0);let t={};const s=[];for(const o of e){let e=null,i=[];const r=Ro(o);if(r){const o=Lt({configObject:r,filePath:"command line",expandVars:!0,scope:"dynamic"});o.config?e=o.config.mcpServers:i=o.errors}else{const t=ke(o),s=Ut({filePath:t,expandVars:!0,scope:"dynamic"});s.config?e=s.config.mcpServers:i=s.errors}i.length>0?s.push(...i):e&&(t={...t,...e})}if(s.length>0){const e=s.map(e=>`${e.path?e.path+": ":""}${e.message}`).join("\n");Zt(`--mcp-config validation failed (${s.length} errors): ${e}`,{level:"error"}),process.stderr.write(`Error: Invalid MCP configuration:\n${e}\n`),process.exit(1)}if(Object.keys(t).length>0){const e=Object.entries(t).filter(([,e])=>"sdk"!==e.type).map(([e])=>e);let s=null;if(e.some(Vt))s=`Invalid MCP configuration: "${qt}" is a reserved MCP name.`;else if(o("CHICAGO_MCP")){const{isComputerUseMCPServer:o,COMPUTER_USE_MCP_SERVER_NAME:t}=await import("./utils/computerUse/common.js");e.some(o)&&(s=`Invalid MCP configuration: "${t}" is a reserved MCP name.`)}if(!s){const{isComputerControlMCPServer:o,COMPUTER_CONTROL_MCP_SERVER_NAME:t}=await import("./utils/computerControlMcp/common.js");e.some(o)&&(s=`Invalid MCP configuration: "${t}" is a reserved MCP name.`)}s&&(process.stderr.write(`Error: ${s}\n`),process.exit(1));const i=g(t,e=>({...e,scope:"dynamic"})),{allowed:r,blocked:n}=Rt(i);n.length>0&&process.stderr.write(`Warning: MCP ${vs(n.length,"server")} blocked by enterprise policy: ${n.join(", ")}\n`),hs={...hs,...r}}}const Cs=r;Cs.chromeAnty&&(Cs.chrome=!0),js(Cs.chrome);const bs=_o(Cs.chrome),Os=void 0===Cs.chrome&&!bs&&wo();if(bs){const e=ve();try{Re("tengu_claude_in_chrome_setup",{platform:e});const{mcpConfig:o,allowedTools:t,systemPrompt:s}=vo();hs={...hs,...o},O.push(...t),s&&(ns=ns?`${s}\n\n${ns}`:s)}catch(o){Re("tengu_claude_in_chrome_setup_failed",{platform:e}),Zt(`[Context in Chrome] Error: ${o}`),Mo(o),console.error("Error: Failed to run with Context in Chrome."),process.exit(1)}}else if(Os)try{const{mcpConfig:e,allowedTools:o,systemPrompt:t}=vo();hs={...hs,...e},O.push(...o),t&&(ns=ns?`${t}\n\n${ns}`:t)}catch(e){Zt(`[Context in Chrome] Error (auto-enable): ${e}`)}const As=r.strictMcpConfig||!1;if(xt()&&(As&&(process.stderr.write(m.red("You cannot use --strict-mcp-config when an enterprise MCP config is present")),process.exit(1)),hs&&!kt(hs)&&(process.stderr.write(m.red("You cannot dynamically configure MCP servers when an enterprise MCP config is present")),process.exit(1))),o("CHICAGO_MCP")&&"macos"===ve()&&!_s())try{const{getChicagoEnabled:e}=await import("./utils/computerUse/gates.js");if(e()){const{setupComputerUseMCP:e}=await import("./utils/computerUse/setup.js"),{mcpConfig:o,allowedTools:t}=e();hs={...hs,...o},O.push(...t)}}catch(e){Zt(`[Computer Use MCP] Setup failed: ${os(e)}`)}if("darwin"!==process.platform)try{const{setupComputerControlMCP:e}=await import("./utils/computerControlMcp/setup.js"),{mcpConfig:o,allowedTools:t}=e();hs={...hs,...o},O.push(...t)}catch(e){Zt(`[Computer Control MCP] Setup failed: ${os(e)}`)}try{const{setupDatabaseMCP:e}=await import("./utils/databaseMcp/setup.js"),{mcpConfig:o}=e();hs={...hs,...o}}catch(e){Zt(`[Database MCP] Setup failed: ${os(e)}`)}try{const{setupSshMCP:e}=await import("./utils/sshMcp/setup.js"),{mcpConfig:o}=e();hs={...hs,...o}}catch(e){Zt(`[SSH MCP] Setup failed: ${os(e)}`)}try{const{setupSembleMCP:e}=await import("./utils/sembleMcp/setup.js"),{mcpConfig:o}=e();hs={...hs,...o}}catch(e){Zt(`[Semble MCP] Setup failed: ${os(e)}`)}try{const{setupRemotionMcp:e}=await import("./utils/remotionMcp/setup.js"),{mcpConfig:o}=e();hs={...hs,...o}}catch(e){Zt(`[Remotion MCP] Setup failed: ${os(e)}`)}try{const{setupPlaywrightMCP:e,isPlaywrightMcpDisabled:o}=await import("./utils/playwrightMcp/setup.js");if(!o()){const{mcpConfig:o}=e();hs={...hs,...o}}}catch(e){Zt(`[Playwright MCP] Setup failed: ${os(e)}`)}let ks;if(Le(Y),o("KAIROS")||o("KAIROS_CHANNELS")){const parseChannelEntries=(e,o)=>{const t=[],s=[];for(const o of e)if(o.startsWith("plugin:")){const e=o.slice(7),i=e.indexOf("@");i<=0||i===e.length-1?s.push(o):t.push({kind:"plugin",name:e.slice(0,i),marketplace:e.slice(i+1)})}else o.startsWith("server:")&&o.length>7?t.push({kind:"server",name:o.slice(7)}):s.push(o);return s.length>0&&(process.stderr.write(m.red(`${o} entries must be tagged: ${s.join(", ")}\n plugin:<name>@<marketplace> — plugin-provided channel (allowlist enforced)\n server:<name> — manually configured MCP server\n`)),process.exit(1)),t},e=r,o=e.channels,t=e.dangerouslyLoadDevelopmentChannels;let s=[];if(o&&o.length>0&&(s=parseChannelEntries(o,"--channels"),Es(s)),Wt||t&&t.length>0&&(ks=parseChannelEntries(t,"--dangerously-load-development-channels")),s.length>0||(ks?.length??0)>0){const joinPluginIds=e=>{const o=e.flatMap(e=>"plugin"===e.kind?[`${e.name}@${e.marketplace}`]:[]);return o.length>0?o.sort().join(","):void 0};Re("tengu_mcp_channel_flags",{channels_count:s.length,dev_count:ks?.length??0,plugins:joinPluginIds(s),dev_plugins:joinPluginIds(ks??[])})}}if((o("KAIROS")||o("KAIROS_BRIEF"))&&j.length>0){const{BRIEF_TOOL_NAME:e,LEGACY_BRIEF_TOOL_NAME:o}=s("./tools/BriefTool/prompt.js"),{isBriefEntitled:t}=s("./tools/BriefTool/BriefTool.js"),i=Go(j);(i.includes(e)||i.includes(o))&&t()&&$s(!0)}const Ds=await Vo({allowedToolsCli:O,disallowedToolsCli:D,baseToolsCli:j,permissionMode:as,allowDangerouslySkipPermissions:S,addDirs:Y});let Ms=Ds.toolPermissionContext;const{warnings:Hs,dangerousPermissions:Ks,overlyBroadBashPermissions:qs}=Ds;o("TRANSCRIPT_CLASSIFIER")&&Ks.length>0&&(Ms=Yo(Ms)),Hs.forEach(e=>{console.error(e)}),ho();const Vs=!Wt||As||xt()||bo()?Promise.resolve({}):At().then(e=>{const{allowed:o,blocked:t}=Rt(e);return t.length>0&&process.stderr.write(`Warning: claude.ai MCP ${vs(t.length,"server")} blocked by enterprise policy: ${t.join(", ")}\n`),o});Zt("[STARTUP] Loading MCP configs...");const zs=Date.now();let Ws;const Gs=(As||bo()?Promise.resolve({servers:{}}):Mt(hs)).then(e=>(Ws=Date.now()-zs,e));Je&&"text"!==Je&&"stream-json"!==Je&&(console.error(`Error: Invalid input format "${Je}".`),process.exit(1)),"stream-json"===Je&&"stream-json"!==Me&&(console.error("Error: --input-format=stream-json requires output-format=stream-json."),process.exit(1)),Ct&&("stream-json"===Je&&"stream-json"===Me||(console.error("Error: --sdk-url requires both --input-format=stream-json and --output-format=stream-json."),process.exit(1))),r.replayUserMessages&&("stream-json"===Je&&"stream-json"===Me||(console.error("Error: --replay-user-messages requires both --input-format=stream-json and --output-format=stream-json."),process.exit(1))),St&&(Wt&&"stream-json"===Me||(us("Error: --include-partial-messages requires --print and --output-format=stream-json."),process.exit(1))),!1!==r.sessionPersistence||Wt||(us("Error: --no-session-persistence can only be used with --print mode."),process.exit(1));const Xs=n||"";let Ys=await async function(e,o){if(!process.stdin.isTTY&&!process.argv.includes("mcp")){if("stream-json"===o)return process.stdin;process.stdin.setEncoding("utf8");let t="";const onData=e=>{t+=e};process.stdin.on("data",onData);const s=await ms(process.stdin,3e3);return process.stdin.off("data",onData),s&&process.stderr.write("Warning: no stdin data received in 3s, proceeding without it. If piping from a slow command, redirect stdin explicitly: < /dev/null to skip, or wait longer.\n"),[e,t].filter(Boolean).join("\n")}return e}(Xs,Je??"text");i("action_after_input_prompt"),maybeActivateProactive(r);let Js,Qs=B(Ms);if(o("COORDINATOR_MODE")&&(jo(process.env.CONTEXT_CODE_COORDINATOR_MODE)||jo(process.env.CLAUDE_CODE_COORDINATOR_MODE))){const{applyCoordinatorToolFilter:e}=await import("./utils/toolPool.js");Qs=e(Qs)}if(i("action_tools_loaded"),$({isNonInteractiveSession:Wt})&&r.jsonSchema&&(Js=ye(r.jsonSchema)),Js){const e=H(Js);"tool"in e?(Qs=[...Qs,e.tool],Re("tengu_structured_output_enabled",{schema_property_count:Object.keys(Js.properties||{}).length,has_required_fields:Boolean(Js.required)})):Re("tengu_structured_output_failure",{error:"Invalid JSON schema"})}i("action_before_setup"),Zt("[STARTUP] Running setup()...");const Zs=Date.now(),{setup:mi}=await import("./setup.js"),hi=o("UDS_INBOX")?r.messagingSocketPath:void 0,vi=Qt();"local-agent"!==process.env.CLAUDE_CODE_ENTRYPOINT&&(so(),lo());const wi=mi(vi,as,S,st,tt,ut,we?jt(we):void 0,ct,hi),Pi=st?null:Ke(vi),Ni=st?null:mo(vi);Pi?.catch(()=>{}),Ni?.catch(()=>{}),await wi,Zt(`[STARTUP] setup() completed in ${Date.now()-Zs}ms`),i("action_after_setup");let Li=!!r.replayUserMessages;o("UDS_INBOX")&&(Li||"stream-json"!==Me||(Li=!!r.messagingSocketPath)),_s()&&(ge(),_(),C(),Bo());const Ui=r.name?.trim();Ui&&nt(Ui);r.model||process.env.ANTHROPIC_MODEL;const Hi="default"===r.model?Lo():r.model,$i="default"===Q?Lo():Q,Bi=st?Qt():vi;Zt("[STARTUP] Loading commands and agents...");const Fi=Date.now(),withStartupTimeout=async(e,o,t,s)=>{let i,r=!1;try{return await Promise.race([o(),new Promise(e=>{i=setTimeout(()=>{r=!0,e(s)},t)})])}catch(o){return Zt(`[STARTUP] ${e} failed: ${o instanceof Error?o.message:String(o)}. Using fallback.`),s}finally{i&&clearTimeout(i),r&&Zt(`[STARTUP] ${e} timed out after ${t}ms. Using fallback.`)}},Ki={activeAgents:[],allAgents:[]},[qi,Vi]=await Promise.all([Pi??Ke(Bi),withStartupTimeout("agent definitions loading",()=>Ni??mo(Bi),1e4,Ki)]);Zt(`[STARTUP] Commands and agents loaded in ${Date.now()-Fi}ms`),i("action_commands_loaded");let zi=[];if(je)try{const e=Ro(je);e&&(zi=fo(e,"flagSettings"))}catch(e){Mo(e)}const Wi=[...Vi.allAgents,...zi],Gi={...Vi,allAgents:Wi,activeAgents:po(Wi)},Xi=Ie??gt().agent;let Yi;if(Xi&&(Yi=Gi.activeAgents.find(e=>e.agentType===Xi),Yi||Zt(`Warning: agent "${Xi}" not found. Available agents: ${Gi.activeAgents.map(e=>e.agentType).join(", ")}. Using default behavior.`)),$e(Yi?.agentType),Yi&&Re("tengu_agent_flag",{agentType:uo(Yi)?Yi.agentType:"custom",...Ie&&{source:"cli"}}),Yi?.agentType&<(Yi.agentType),Wt&&Yi&&!ss&&!uo(Yi)){const e=Yi.getSystemPrompt();e&&(ss=e)}Yi?.initialPrompt&&("string"==typeof Ys?Ys=Ys?`${Yi.initialPrompt}\n\n${Ys}`:Yi.initialPrompt:Ys||(Ys=Yi.initialPrompt));let Ji=Hi;!Ji&&Yi?.model&&"inherit"!==Yi.model&&(Ji=$o(Yi.model)),He(Ji),Is(Uo()||null);const Qi=ws(),Zi=$o(Qi??Lo());let er,or,tr,sr;if(q()){const e=F()?r.advisor:void 0;if(e){Zt(`[AdvisorTool] --advisor ${e}`),z(Zi)||(process.stderr.write(m.red(`Error: The model "${Zi}" does not support the advisor tool.\n`)),process.exit(1));const o=Ho($o(e));V(o)||(process.stderr.write(m.red(`Error: The model "${e}" cannot be used as an advisor.\n`)),process.exit(1))}er=F()?e??K():e,er&&Zt(`[AdvisorTool] Advisor model: ${er}`)}if(W()&&wt?.agentId&&wt?.agentName&&wt?.teamName&&wt?.agentType){const e=Gi.activeAgents.find(e=>e.agentType===wt.agentType);if(e){let o;if("built-in"===e.source?Zt(`[teammate] Built-in agent ${wt.agentType} - skipping custom prompt (not supported)`):o=e.getSystemPrompt(),e.memory&&Re("tengu_agent_memory_loaded",{scope:e.memory,source:"teammate"}),o){const e=`\n# Custom Agent Instructions\n${o}`;ns=ns?`${ns}\n\n${e}`:e}}else Zt(`[teammate] Custom agent ${wt.agentType} not found in available agents`)}if(maybeActivateBrief(r),(o("KAIROS")||o("KAIROS_BRIEF"))&&!_s()&&!ys()&&"chat"===gt().defaultView){const{isBriefEntitled:e}=s("./tools/BriefTool/BriefTool.js");e()&&$s(!0)}if((o("PROACTIVE")||o("KAIROS"))&&(r.proactive||jo(process.env.CONTEXT_CODE_PROACTIVE)||jo(process.env.CLAUDE_CODE_PROACTIVE))&&!Te?.isCoordinatorMode()){const e=`\n# Proactive Mode\n\nYou are in proactive mode. Take initiative — explore, act, and make progress without waiting for instructions.\n\nStart by briefly greeting the user.\n\nYou will receive periodic <tick> prompts. These are check-ins. Do whatever seems most useful, or call Sleep if there's nothing to do. ${(o("KAIROS")||o("KAIROS_BRIEF"))&&s("./tools/BriefTool/BriefTool.js").isBriefEnabled()?"Call SendUserMessage at checkpoints to mark where things stand.":"The user will see any text you output."}`;ns=ns?`${ns}\n\n${e}`:e}if(o("KAIROS")&&c&&Pe){const e=Pe.getAssistantSystemPromptAddendum();ns=ns?`${ns}\n\n${e}`:e}if(!Wt){const e=eo(!1);tr=e.getFpsMetrics,sr=e.stats;const{createRoot:t}=await import("./ink.js");or=await t(e.renderOptions),Re("tengu_timer",{event:"startup",durationMs:Math.round(1e3*process.uptime())}),Zt("[STARTUP] Running showSetupScreens()...");const s=Date.now(),i=await to(or,as,S,qi,bs,ks);if(Zt(`[STARTUP] showSetupScreens() completed in ${Date.now()-s}ms`),o("BRIDGE_MODE")&&void 0!==Ot){const{getBridgeDisabledReason:e}=await import("./bridge/bridgeEnabled.js"),o=await e();Tt=null===o,o&&process.stderr.write(m.yellow(`${o}\n--rc flag ignored.\n`))}if(o("AGENT_MEMORY_SNAPSHOT")&&Yi&&go(Yi)&&Yi.memory&&Yi.pendingSnapshotUpdate){const e=Yi;if("merge"===await Ge(or,{agentType:e.agentType,scope:e.memory,snapshotTimestamp:e.pendingSnapshotUpdate.snapshotTimestamp})){const{buildMergePrompt:o}=await import("./components/agents/SnapshotUpdateDialog.js"),t=o(e.agentType,e.memory);Ys=Ys?`${t}\n\n${Ys}`:t}e.pendingSnapshotUpdate=void 0}i&&"/login"===n?.trim().toLowerCase()&&(n=""),i&&(U(),M(),Ai(),T(),import("./bridge/trustedDevice.js").then(e=>(e.clearTrustedDeviceToken(),e.enrollTrustedDevice())));const r=await ee();r.valid||await Qe(or,r.message)}if(void 0!==process.exitCode)return void Zt("Graceful shutdown initiated, skipping further initialization");if(si(),!Wt){const{errors:e}=vt(),o=e.filter(e=>!e.mcpErrorMetadata);o.length>0&&await ze(or,{settingsErrors:o,onExit:()=>ls(1)})}const ir=xe("tengu_cicada_nap_ms",0),rr=te().startupPrefetchedAt??0;if(bo()||ir>0&&Date.now()-rr<ir)Zt(`Skipping startup prefetches, last ran ${Math.round((Date.now()-rr)/1e3)}s ago`),ue();else{const e=rr>0?` last ran ${Math.round((Date.now()-rr)/1e3)}s ago`:"";Zt(`Starting background startup prefetches${e}`),io().catch(e=>Mo(e)),P(),k(),xe("tengu_miraculo_the_bard",!1)?ue():me(),ir>0&&re(e=>({...e,startupPrefetchedAt:Date.now()}))}Wt||To();const{servers:nr}=await Gs;Zt(`[STARTUP] MCP configs resolved in ${Ws}ms (awaited at +${Date.now()-zs}ms)`);const ar={...nr,...hs},cr={},lr={};for(const[e,o]of Object.entries(ar)){const t=o;"sdk"===t.type?cr[e]=t:lr[e]=t}i("action_mcp_configs_loaded");const dr=Wt?Promise.resolve({clients:[],tools:[],commands:[]}):no(lr),pr=Wt?Promise.resolve({clients:[],tools:[],commands:[]}):Vs.then(e=>Object.keys(e).length>0?no(e):{clients:[],tools:[],commands:[]}),mr=Promise.all([dr,pr]).then(([e,o])=>({clients:[...e.clients,...o.clients],tools:h([...e.tools,...o.tools],"name"),commands:h([...e.commands,...o.commands],"name")})),ur=Eo||Co||Ao||Wt||r.continue||r.resume?null:it("startup",{agentType:Yi?.agentType,model:Zi}),gr=[];mr.catch(()=>{});const fr=[],hr=[],vr=[];let wr=Ti(),_r=!1!==wr?{type:"adaptive"}:{type:"disabled"};if("adaptive"===r.thinking||"enabled"===r.thinking)wr=!0,_r={type:"adaptive"};else if("disabled"===r.thinking)wr=!1,_r={type:"disabled"};else{const e=process.env.MAX_THINKING_TOKENS?parseInt(process.env.MAX_THINKING_TOKENS,10):r.maxThinkingTokens;void 0!==e&&(e>0?(wr=!0,_r={type:"enabled",budgetTokens:e}):0===e&&(wr=!1,_r={type:"disabled"}))}ui("info","started",{version:e.VERSION,is_native_binary:pi()}),zt(async()=>{ui("info","exited")}),async function({hasInitialPrompt:e,hasStdin:t,verbose:s,debug:i,debugToStderr:r,print:n,outputFormat:a,inputFormat:c,numAllowedTools:l,numDisallowedTools:d,mcpClientCount:p,worktreeEnabled:m,skipWebFetchPreflight:u,githubActionInputs:g,dangerouslySkipPermissionsPassed:f,permissionMode:h,modeIsBypass:v,allowDangerouslySkipPermissionsPassed:w,systemPromptFlag:_,appendSystemPromptFlag:C,thinkingConfig:S,assistantActivationPath:y}){try{Re("tengu_init",{entrypoint:"claude",hasInitialPrompt:e,hasStdin:t,verbose:s,debug:i,debugToStderr:r,print:n,outputFormat:a,inputFormat:c,numAllowedTools:l,numDisallowedTools:d,mcpClientCount:p,worktree:m,skipWebFetchPreflight:u,...g&&{githubActionInputs:g},dangerouslySkipPermissionsPassed:f,permissionMode:h,modeIsBypass:v,inProtectedNamespace:Oo(),allowDangerouslySkipPermissionsPassed:w,thinkingType:S.type,..._&&{systemPromptFlag:_},...C&&{appendSystemPromptFlag:C},is_simple:bo()||void 0,is_coordinator:!(!o("COORDINATOR_MODE")||!Te?.isCoordinatorMode())||void 0,...y&&{assistantActivationPath:y},autoUpdatesChannel:gt().autoUpdatesChannel??"latest"})}catch(e){Mo(e)}}({hasInitialPrompt:Boolean(n),hasStdin:Boolean(Ys),verbose:ao,debug:l,debugToStderr:d,print:co??!1,outputFormat:Me??"text",inputFormat:Je??"text",numAllowedTools:O.length,numDisallowedTools:D.length,mcpClientCount:Object.keys(ar).length,worktreeEnabled:st,skipWebFetchPreflight:gt().skipWebFetchPreflight,githubActionInputs:process.env.GITHUB_ACTION_INPUTS,dangerouslySkipPermissionsPassed:p??!1,permissionMode:as,modeIsBypass:"bypassPermissions"===as,allowDangerouslySkipPermissionsPassed:S,systemPromptFlag:ss?r.systemPromptFile?"file":"flag":void 0,appendSystemPromptFlag:ns?r.appendSystemPromptFile?"file":"flag":void 0,thinkingConfig:_r,assistantActivationPath:o("KAIROS")&&c?Pe?.getAssistantActivationPath():void 0}),Kt(lr,Ms),Pt(null,"initialization"),function(){try{const e=ht("policySettings");if(e){const o=ft(e);Re("tengu_managed_settings_loaded",{keyCount:o.length,keys:o.join(",")})}}catch{}}(),Yt().then(e=>{e&&(Ui&&Jt(Ui),Xt().then(e=>{e>=2&&Re("tengu_concurrent_sessions",{num_sessions:e})}))}),bo()||(Wt?(await Zo(),i("action_after_plugins_init"),Qo().then(()=>ot())):Zo().then(async()=>{i("action_after_plugins_init"),await Qo(),ot()}));const Cr=Eo||Co?"init":Ao?"maintenance":null;if(Eo)return ge(),await rt("init",{forceSyncExecution:!0}),await it("startup",{forceSyncExecution:!0}),void ls(0);if(Wt){"stream-json"!==Me&&"json"!==Me||es(!0),ge(),y();const e=r.continue||r.resume||yt||Cr?void 0:it("startup");e?.catch(()=>{}),i("before_validateForceLoginOrg");const t=await ee();t.valid||(process.stderr.write(t.message+"\n"),process.exit(1));const s=Fo?[]:qi.filter(e=>"prompt"===e.type&&!e.disableNonInteractive||"local"===e.type&&e.supportsNonInteractive),n=ri(),a={...n,mcp:{...n.mcp,clients:fr,commands:vr,tools:hr},toolPermissionContext:Ms,effortValue:le(r.effort)??ce(),...pe()&&{fastMode:de(Ji??null)},...q()&&er&&{advisorModel:er},...o("KAIROS")?{kairosEnabled:c}:{}},l=ci(a,ai);("bypassPermissions"===Ms.mode||S)&&Ko(Ms),o("TRANSCRIPT_CLASSIFIER")&&Jo(Ms,l.getState().fastMode).then(({updateContext:e})=>{l.setState(o=>{const t=e(o.toolPermissionContext);return t===o.toolPermissionContext?o:{...o,toolPermissionContext:t}})}),!1===r.sessionPersistence&&Us(!0),Ns(di(Z));const connectMcpBatch=(e,o)=>0===Object.keys(e).length?Promise.resolve():(l.setState(o=>({...o,mcp:{...o.mcp,clients:[...o.mcp.clients,...Object.entries(e).map(([e,o])=>({name:e,type:"pending",config:o}))]}})),ro(({client:e,tools:o,commands:t})=>{l.setState(s=>({...s,mcp:{...s.mcp,clients:s.mcp.clients.some(o=>o.name===e.name)?s.mcp.clients.map(o=>o.name===e.name?e:o):[...s.mcp.clients,e],tools:h([...s.mcp.tools,...o],"name"),commands:h([...s.mcp.commands,...t],"name")}}))},e).catch(e=>Zt(`[MCP] ${o} connect error: ${e}`)));i("before_connectMcp"),await connectMcpBatch(lr,"regular"),i("after_connectMcp");const d=5e3,p=Vs.then(e=>{if(Object.keys(e).length>0){const o=new Set;for(const t of Object.values(e)){const e=Nt(t);e&&o.add(e)}const t=new Set;for(const[e,s]of Object.entries(lr)){if(!e.startsWith("plugin:"))continue;const i=Nt(s);i&&o.has(i)&&t.add(e)}if(t.size>0){Zt(`[MCP] Lazy dedup: suppressing ${t.size} plugin server(s) that duplicate claude.ai connectors: ${[...t].join(", ")}`);for(const e of l.getState().mcp.clients)t.has(e.name)&&"connected"===e.type&&(e.client.onclose=void 0,It(e.name,e.config).catch(()=>{}));l.setState(e=>{let{clients:o,tools:s,commands:i,resources:r}=e.mcp;o=o.filter(e=>!t.has(e.name)),s=s.filter(e=>!e.mcpInfo||!t.has(e.mcpInfo.serverName));for(const e of t)i=Ht(i,e),r=$t(r,e);return{...e,mcp:{...e.mcp,clients:o,tools:s,commands:i,resources:r}}})}}const o=f(lr,(e,o)=>!o.startsWith("plugin:")),{servers:t}=Dt(e,o);return connectMcpBatch(t,"claudeai")});let m;const u=await Promise.race([p.then(()=>!1),new Promise(e=>{m=setTimeout(e=>e(!0),d,e)})]);m&&clearTimeout(m),u&&Zt(`[MCP] claude.ai connectors not ready after ${d}ms — proceeding; background connection continues`),i("after_connectMcp_claudeai"),bo()||(startDeferredPrefetches(),import("./utils/backgroundHousekeeping.js").then(e=>e.startBackgroundHousekeeping())),logSessionTelemetry(),i("before_print_import");const{runHeadless:g}=await import("./cli/print.js");return i("after_print_import"),void g(Ys,()=>l.getState(),l.setState,s,Qs,cr,Gi.activeAgents,{continue:r.continue,resume:r.resume,verbose:ao,outputFormat:Me,jsonSchema:Js,permissionPromptToolName:r.permissionPromptTool,allowedTools:O,thinkingConfig:_r,maxTurns:r.maxTurns,maxBudgetUsd:r.maxBudgetUsd,taskBudget:r.taskBudget?{total:r.taskBudget}:void 0,systemPrompt:ss,appendSystemPrompt:ns,userSpecifiedModel:Ji,fallbackModel:$i,teleport:yt,sdkUrl:Ct,replayUserMessages:Li,includePartialMessages:St,forkSession:r.forkSession||!1,resumeSessionAt:r.resumeSessionAt||void 0,rewindFiles:r.rewindFiles,enableAuthStatus:r.enableAuthStatus,agent:Ie,workload:r.workload,setupTrigger:Cr??void 0,sessionStartHooksPromise:e})}Re("tengu_startup_manual_model_config",{cli_flag:r.model,env_var:process.env.ANTHROPIC_MODEL,settings_file:(gt()||{}).model,subscriptionType:J(),agent:Xi});const Sr=No(Zi),yr=[];if(ps&&yr.push({key:"permission-mode-notification",text:ps,priority:"high"}),Sr&&yr.push({key:"model-deprecation-warning",text:Sr,color:"warning",priority:"high"}),qs.length>0){const e=X(qs.map(e=>e.ruleDisplay)),o=e.join(", "),t=X(qs.map(e=>e.sourceDisplay)).join(", "),s=e.length;yr.push({key:"overly-broad-bash-notification",text:`${o} allow ${vs(s,"rule")} from ${t} ${vs(s,"was","were")} ignored — not available for Ants, please use auto-mode instead`,color:"warning",priority:"high"})}const Er={...Ms,mode:W()&&getTeammateUtils().isPlanModeRequired()?"plan":Ms.mode},br=!(!o("KAIROS")&&!o("KAIROS_BRIEF"))&&ys(),jr=Tt||se()||c;let Or=!1;if(o("CCR_MIRROR")&&!jr){const{isCcrMirrorEnabled:e}=s("./bridge/bridgeEnabled.js");Or=e()}const Tr={settings:gt(),tasks:{},agentNameRegistry:new Map,verbose:ao??te().verbose??!1,mainLoopModel:Qi,mainLoopModelForSession:null,isBriefOnly:br,expandedView:te().showSpinnerTree?"teammates":te().showExpandedTodos?"tasks":"none",showTeammateMessagePreview:!W()&&void 0,selectedIPAgentIndex:-1,coordinatorTaskIndex:-1,viewSelectionMode:"none",footerSelection:null,toolPermissionContext:Er,agent:Yi?.agentType,agentDefinitions:Gi,mcp:{clients:[],tools:[],commands:[],resources:{},pluginReconnectKey:0},plugins:{enabled:[],disabled:[],commands:[],errors:[],installationStatus:{marketplaces:[],plugins:[]},needsRefresh:!1},statusLineText:void 0,kairosEnabled:c,remoteSessionUrl:void 0,remoteConnectionStatus:"connecting",remoteBackgroundTaskCount:0,replBridgeEnabled:jr||Or,replBridgeExplicit:Tt,replBridgeOutboundOnly:Or,replBridgeConnected:!1,replBridgeSessionActive:!1,replBridgeReconnecting:!1,replBridgeConnectUrl:void 0,replBridgeSessionUrl:void 0,replBridgeEnvironmentId:void 0,replBridgeSessionId:void 0,replBridgeError:void 0,replBridgeInitialName:Bt,showRemoteCallout:!1,notifications:{current:null,queue:yr},elicitation:{queue:[]},todos:{},remoteAgentTaskSuggestions:[],fileHistory:{snapshots:[],trackedFiles:new Set,snapshotSequence:0},attribution:Gt(),thinkingEnabled:wr,promptSuggestionEnabled:ii(),sessionHooks:new Map,inbox:{messages:[]},promptSuggestion:{text:null,promptId:null,shownAt:0,acceptedAt:0,generationRequestId:null},speculation:ni,speculationSessionTimeSavedMs:0,skillImprovement:{suggestion:null},workerSandboxPermissions:{queue:[],selectedIndex:0},pendingWorkerRequest:null,pendingSandboxRequest:null,authVersion:0,initialMessage:Ys?{message:he({content:String(Ys)})}:null,effortValue:le(r.effort)??ce(),activeOverlays:new Set,fastMode:de(Zi),...q()&&er&&{advisorModel:er},teamContext:o("KAIROS")?a??be?.():be?.()};Ys&&E(String(Ys));const Pr=hr;re(e=>({...e,numStartups:(e.numStartups??0)+1})),setImmediate(()=>{!async function(){if(De())return;const[e,o,t]=await Promise.all([ko(),Do(),xo()]);Re("tengu_startup_telemetry",{is_git:e,worktree_count:o,gh_auth_status:t,sandbox_enabled:_i.isSandboxingEnabled(),are_unsandboxed_commands_allowed:_i.areUnsandboxedCommandsAllowed(),is_auto_bash_allowed_if_sandbox_enabled:_i.isAutoAllowBashIfSandboxedEnabled(),auto_updater_disabled:ie(),prefers_reduced_motion:gt().prefersReducedMotion??!1,...getCertEnvVarTelemetry()})}(),logSessionTelemetry()});const Ar=null,Ir=Ar?Ar.then(e=>e.createSessionTurnUploader()).catch(()=>null):null,kr={debug:l||d,commands:[...qi,...vr],initialTools:Pr,mcpClients:fr,autoConnectIdeFlag:ae,mainThreadAgentDefinition:Yi,disableSlashCommands:Fo,dynamicMcpConfig:hs,strictMcpConfig:As,systemPrompt:ss,appendSystemPrompt:ns,taskListId:Xo,thinkingConfig:_r,...Ir&&{onTurnComplete:e=>{Ir.then(o=>o?.(e))}}},Dr={modeApi:Te,mainThreadAgentDefinition:Yi,agentDefinitions:Gi,currentCwd:Bi,cliAgents:zi,initialState:Tr};if(r.continue){let e=!1;try{const o=performance.now(),{clearSessionCaches:t}=await import("./commands/clear/caches.js");t();const s=await So(void 0,void 0);if(!s)return Re("tengu_continue",{success:!1}),await Qe(or,"No conversation found to continue");const i=await fs(s,{forkSession:!!r.forkSession,includeAttribution:!0,transcriptPath:s.fullPath},Dr);i.restoredAgentDef&&(Yi=i.restoredAgentDef),maybeActivateProactive(r),maybeActivateBrief(r),Re("tengu_continue",{success:!0,resume_duration_ms:Math.round(performance.now()-o)}),e=!0,await b(or,{getFpsMetrics:tr,stats:sr,initialState:i.initialState},{...kr,mainThreadAgentDefinition:i.restoredAgentDef??Yi,initialMessages:i.messages,initialFileHistorySnapshots:i.fileHistorySnapshots,initialContentReplacements:i.contentReplacements,initialAgentName:i.agentName,initialAgentColor:i.agentColor},oo)}catch(o){e||Re("tengu_continue",{success:!1}),Mo(o),process.exit(1)}}else{if(o("DIRECT_CONNECT")&&xi?.url){let e;try{const o=await oi({serverUrl:xi.url,authToken:xi.authToken,cwd:Ne(),dangerouslySkipPermissions:xi.dangerouslySkipPermissions});o.workDir&&(Rs(o.workDir),Ts(o.workDir)),Ps(xi.url),e=o.config}catch(e){return await Qe(or,e instanceof ti?e.message:String(e),()=>cs(1))}const o=fe(`Connected to server at ${xi.url}\nSession: ${e.sessionId}`,"info");return void await b(or,{getFpsMetrics:tr,stats:sr,initialState:Tr},{debug:l||d,commands:qi,initialTools:[],initialMessages:[o],mcpClients:[],autoConnectIdeFlag:ae,mainThreadAgentDefinition:Yi,disableSlashCommands:Fo,directConnectConfig:e,thinkingConfig:_r},oo)}if(o("SSH_REMOTE")&&Mi?.host){const{createSSHSession:o,createLocalSSHSession:t,SSHSessionError:s}=await import("./ssh/createSSHSession.js");let i;try{if(Mi.local)process.stderr.write("Starting local ssh-proxy test session...\n"),i=t({cwd:Mi.cwd,permissionMode:Mi.permissionMode,dangerouslySkipPermissions:Mi.dangerouslySkipPermissions});else{process.stderr.write(`Connecting to ${Mi.host}…\n`);const t=process.stderr.isTTY;let s=!1;i=await o({host:Mi.host,cwd:Mi.cwd,localVersion:e.VERSION,permissionMode:Mi.permissionMode,dangerouslySkipPermissions:Mi.dangerouslySkipPermissions,extraCliArgs:Mi.extraCliArgs},t?{onProgress:e=>{s=!0,process.stderr.write(`\r ${e}[K`)}}:{}),s&&process.stderr.write("\n")}Rs(i.remoteCwd),Ts(i.remoteCwd),Ps(Mi.local?"local":Mi.host)}catch(e){return await Qe(or,e instanceof s?e.message:String(e),()=>cs(1))}const r=fe(Mi.local?`Local ssh-proxy test session\ncwd: ${i.remoteCwd}\nAuth: unix socket → local proxy`:`SSH session to ${Mi.host}\nRemote cwd: ${i.remoteCwd}\nAuth: unix socket -R → local proxy`,"info");return void await b(or,{getFpsMetrics:tr,stats:sr,initialState:Tr},{debug:l||d,commands:qi,initialTools:[],initialMessages:[r],mcpClients:[],autoConnectIdeFlag:ae,mainThreadAgentDefinition:Yi,disableSlashCommands:Fo,sshSession:i,thinkingConfig:_r},oo)}if(o("KAIROS")&&Ri&&(Ri.sessionId||Ri.discover)){const{discoverAssistantSessions:e}=await import("./assistant/sessionDiscovery.js");let o=Ri.sessionId;if(!o){let t;try{t=await e()}catch(e){return await Qe(or,`Failed to discover sessions: ${e instanceof Error?e.message:e}`,()=>cs(1))}if(0===t.length){let e;try{e=await qe(or)}catch(e){return await Qe(or,`Assistant installation failed: ${e instanceof Error?e.message:e}`,()=>cs(1))}return null===e&&(await cs(0),process.exit(0)),await Ze(or,`Assistant installed in ${e}. The daemon is starting up — run \`claude assistant\` again in a few seconds to connect.`,{exitCode:0,beforeExit:()=>cs(0)})}if(1===t.length)o=t[0].id;else{const e=await Ve(or,{sessions:t});e||(await cs(0),process.exit(0)),o=e}}const{checkAndRefreshOAuthTokenIfNeeded:t,getClaudeAIOAuthTokens:s}=await import("./utils/auth.js");let i;await t();try{i=await Si()}catch(e){return await Qe(or,`Error: ${e instanceof Error?e.message:"Failed to authenticate"}`,()=>cs(1))}const getAccessToken=()=>s()?.accessToken??i.accessToken;xs(!0),$s(!0),Ue(!0);const r=ei(o,getAccessToken,i.orgUUID,!1,!0),n=fe(`Attached to assistant session ${o.slice(0,8)}…`,"info"),a={...Tr,isBriefOnly:!0,kairosEnabled:!1,replBridgeEnabled:!1},c=Fe(qi);return void await b(or,{getFpsMetrics:tr,stats:sr,initialState:a},{debug:l||d,commands:c,initialTools:[],initialMessages:[n],mcpClients:[],autoConnectIdeFlag:ae,mainThreadAgentDefinition:Yi,disableSlashCommands:Fo,remoteSessionConfig:r,thinkingConfig:_r},oo)}if(r.resume||r.fromPr||yt||null!==bt){const{clearSessionCaches:e}=await import("./commands/clear/caches.js");e();let o,t,s,i=null,n=jt(r.resume),a=null;if(r.fromPr&&(!0===r.fromPr?s=!0:"string"==typeof r.fromPr&&(s=r.fromPr)),r.resume&&"string"==typeof r.resume&&!n){const e=r.resume.trim();if(e){const o=await pt(e,{exact:!0});1===o.length?(a=o[0],n=at(a)??null):t=e}}if((null!==bt||yt)&&(await N(),!x("allow_remote_sessions")))return await Qe(or,"Error: Remote sessions are disabled by your organization's policy.",()=>cs(1));if(null!==bt){const e=bt.length>0,o=xe("tengu_remote_backend",!1);if(!o&&!e)return await Qe(or,'Error: --remote requires a description.\nUsage: context --remote "your task description"',()=>cs(1));Re("tengu_remote_create_session",{has_initial_prompt:String(e)});const t=await Io(),s=await bi(or,e?bt:null,(new AbortController).signal,t||void 0);if(!s)return Re("tengu_remote_create_session_error",{error:"unable_to_create_session"}),await Qe(or,"Error: Unable to create remote session",()=>cs(1));let i;Re("tengu_remote_create_session_success",{session_id:s.id}),o||(process.stdout.write(`Created remote session: ${s.title}\n`),process.stdout.write(`View: ${w(s.id)}?m=0\n`),process.stdout.write(`Resume with: context --teleport ${s.id}\n`),await cs(0),process.exit(0)),Ue(!0),Bs(li(s.id));try{i=await Si()}catch(e){return Mo(rs(e)),await Qe(or,`Error: ${os(e)||"Failed to authenticate"}`,()=>cs(1))}const{getClaudeAIOAuthTokens:r}=await import("./utils/auth.js"),getAccessTokenForRemote=()=>r()?.accessToken??i.accessToken,n=ei(s.id,getAccessTokenForRemote,i.orgUUID,e),a=`${w(s.id)}?m=0`,c=fe(`/remote-control is active. Code in CLI or at ${a}`,"info"),p=e?he({content:bt}):null,m={...Tr,remoteSessionUrl:a},u=Fe(qi);return void await b(or,{getFpsMetrics:tr,stats:sr,initialState:m},{debug:l||d,commands:u,initialTools:[],initialMessages:p?[c,p]:[c],mcpClients:[],autoConnectIdeFlag:ae,mainThreadAgentDefinition:Yi,disableSlashCommands:Fo,remoteSessionConfig:n,thinkingConfig:_r},oo)}if(yt)if(!0===yt||""===yt){Re("tengu_teleport_interactive_mode",{}),Zt("selectAndResumeTeleportTask: Starting teleport flow...");const e=await Ye(or);e||(await cs(0),process.exit(0));const{branchError:o}=await yi(e.branch);i=Ei(e.log,o)}else if("string"==typeof yt){Re("tengu_teleport_resume_session",{mode:"direct"});try{const e=await Ci(yt),o=await Oi(e);if("mismatch"===o.status||"not_in_repo"===o.status){const e=o.sessionRepo;if(e){const o=fi(e),t=await gi(o);if(!(t.length>0))throw new is(`You must run context --teleport ${yt} from a checkout of ${e}.`,m.red(`You must run context --teleport ${yt} from a checkout of ${m.bold(e)}.\n`));{const o=await Xe(or,{targetRepo:e,initialPaths:t});o?(process.chdir(o),gs(o),Rs(o)):await cs(0)}}}else if("error"===o.status)throw new is(o.errorMessage||"Failed to validate session",m.red(`Error: ${o.errorMessage||"Failed to validate session"}\n`));await ji();const{teleportWithProgress:t}=await import("./components/TeleportProgress.js"),s=await t(or,yt);Be({sessionId:yt}),i=s.messages}catch(e){e instanceof is?process.stderr.write(e.formattedMessage+"\n"):(Mo(e),process.stderr.write(m.red(`Error: ${os(e)}\n`))),await cs(1)}}if(n){const e=n;try{const t=performance.now(),s=await So(a??e,void 0);if(!s)return Re("tengu_session_resumed",{entrypoint:"cli_flag",success:!1}),await Qe(or,`No conversation found with session ID: ${e}`);const i=a?.fullPath??s.fullPath;o=await fs(s,{forkSession:!!r.forkSession,sessionIdOverride:e,transcriptPath:i},Dr),o.restoredAgentDef&&(Yi=o.restoredAgentDef),Re("tengu_session_resumed",{entrypoint:"cli_flag",success:!0,resume_duration_ms:Math.round(performance.now()-t)})}catch(o){Re("tengu_session_resumed",{entrypoint:"cli_flag",success:!1}),Mo(o),await Qe(or,`Failed to resume session ${e}`)}}if(Ee)try{const e=await Ee,o=G(e,e=>!e.success);o>0&&process.stderr.write(m.yellow(`Warning: ${o}/${e.length} file(s) failed to download.\n`))}catch(e){return await Qe(or,`Error downloading files: ${os(e)}`)}const c=o??(Array.isArray(i)?{messages:i,fileHistorySnapshots:void 0,agentName:void 0,agentColor:void 0,restoredAgentDef:Yi,initialState:Tr,contentReplacements:void 0}:void 0);c?(maybeActivateProactive(r),maybeActivateBrief(r),await b(or,{getFpsMetrics:tr,stats:sr,initialState:c.initialState},{...kr,mainThreadAgentDefinition:c.restoredAgentDef??Yi,initialMessages:c.messages,initialFileHistorySnapshots:c.fileHistorySnapshots,initialContentReplacements:c.contentReplacements,initialAgentName:c.agentName,initialAgentColor:c.agentColor},oo)):await We(or,{getFpsMetrics:tr,stats:sr,initialState:Tr},Po(Ne()),{...kr,initialSearchQuery:t,forkSession:r.forkSession,filterByPr:s})}else{const e=ur&&0===gr.length?ur:void 0;i("action_after_hooks"),maybeActivateProactive(r),maybeActivateBrief(r),o("COORDINATOR_MODE")&&dt(Te?.isCoordinatorMode()?"coordinator":"normal");let t=null;o("LODESTONE")&&(r.deepLinkOrigin?(Re("tengu_deep_link_opened",{has_prefill:Boolean(r.prefill),has_repo:Boolean(r.deepLinkRepo)}),t=fe(yo({cwd:Qt(),prefillLength:r.prefill?.length,repo:r.deepLinkRepo,lastFetch:void 0!==r.deepLinkLastFetch?new Date(r.deepLinkLastFetch):void 0}),"warning")):r.prefill&&(t=fe("Launched with a pre-filled prompt — review it before pressing Enter.","warning")));const s=t?[t,...gr]:gr.length>0?gr:void 0;await b(or,{getFpsMetrics:tr,stats:sr,initialState:Tr},{...kr,initialMessages:s,pendingHookMessages:e},oo)}}}).version(`${e.VERSION} (Context Code)`,"-v, --version","Output the version number"),t.option("-w, --worktree [nombre]","Crea un nuevo git worktree para esta sesión (opcionalmente especifica un nombre)"),t.option("--tmux","Crea una sesión de tmux para el worktree (requiere --worktree). Usa paneles nativos de iTerm2 si están disponibles; usa --tmux=classic para tmux tradicional."),F()&&t.addOption(new p("--advisor <modelo>","Habilita la herramienta advisor del lado del servidor con el modelo especificado (alias o ID completo).").hideHelp());0;o("TRANSCRIPT_CLASSIFIER")&&t.addOption(new p("--enable-auto-mode","Activar modo automático").hideHelp());(o("PROACTIVE")||o("KAIROS"))&&t.addOption(new p("--proactive","Iniciar en modo autónomo proactivo"));o("UDS_INBOX")&&t.addOption(new p("--messaging-socket-path <ruta>","Ruta del socket de dominio Unix para el servidor de mensajería UDS (por defecto una ruta temporal)"));(o("KAIROS")||o("KAIROS_BRIEF"))&&t.addOption(new p("--brief","Habilita la herramienta SendUserMessage para la comunicación agente-usuario"));o("KAIROS")&&t.addOption(new p("--assistant","Fuerza el modo asistente (uso del demonio Agent SDK)").hideHelp());(o("KAIROS")||o("KAIROS_CHANNELS"))&&(t.addOption(new p("--channels <servidores...>","Servidores MCP cuyas notificaciones de canal deben registrar esta sesión. Nombres de servidor separados por espacios.").hideHelp()),t.addOption(new p("--dangerously-load-development-channels <servidores...>","Carga servidores de canal que no están en la lista permitida. Solo para desarrollo local.").hideHelp()));t.addOption(new p("--agent-id <id>","Teammate agent ID").hideHelp()),t.addOption(new p("--agent-name <name>","Teammate display name").hideHelp()),t.addOption(new p("--team-name <name>","Team name for swarm coordination").hideHelp()),t.addOption(new p("--agent-color <color>","Teammate UI color").hideHelp()),t.addOption(new p("--plan-mode-required","Require plan mode before implementation").hideHelp()),t.addOption(new p("--parent-session-id <id>","Parent session ID for analytics correlation").hideHelp()),t.addOption(new p("--teammate-mode <mode>",'How to spawn teammates: "tmux", "in-process", or "auto"').choices(["auto","tmux","in-process"]).hideHelp()),t.addOption(new p("--agent-type <type>","Custom agent type for this teammate").hideHelp()),t.addOption(new p("--sdk-url <url>","Use remote WebSocket endpoint for SDK I/O streaming (only with -p and stream-json format)").hideHelp()),t.addOption(new p("--teleport [session]","Resume a teleport session, optionally specify session ID").hideHelp()),t.addOption(new p("--remote [description]","Create a remote session with the given description").hideHelp()),o("BRIDGE_MODE")&&(t.addOption(new p("--remote-control [name]","Start an interactive session with Remote Control enabled (optionally named)").argParser(e=>e||!0).hideHelp()),t.addOption(new p("--rc [name]","Alias for --remote-control").argParser(e=>e||!0).hideHelp()));o("HARD_FAIL")&&t.addOption(new p("--hard-fail","Crash on logError calls instead of silently logging").hideHelp());i("run_main_options_built");const n=process.argv.includes("-p")||process.argv.includes("--print"),c=process.argv.some(e=>e.startsWith("cc://")||e.startsWith("cc+unix://"));if(n&&!c)return i("run_before_parse"),await t.parseAsync(process.argv),i("run_after_parse"),t;const j=t.command("mcp").description("Configurar y gestionar servidores MCP").configureHelp(createSortedHelpConfig()).enablePositionalOptions();j.command("serve").description("Iniciar el servidor MCP de Context Code").option("-d, --debug","Activar modo depuración",()=>!0).option("--verbose","Sobrescribir ajuste de verbosidad de la configuración",()=>!0).action(async({debug:e,verbose:o})=>{const{mcpServeHandler:t}=await import("./cli/handlers/mcp.js");await t({debug:e,verbose:o})}),Ot(j),Bt()&&Tt(j);j.command("remove <nombre>").description("Eliminar un servidor MCP").option("-s, --scope <ámbito>","Ámbito de configuración (local, user o project); si no se especifica, se elimina de donde exista").action(async(e,o)=>{const{mcpRemoveHandler:t}=await import("./cli/handlers/mcp.js");await t(e,o)}),j.command("list").description("Listar servidores MCP configurados. Nota: Se omite el diálogo de confianza y se inician los servidores stdio de .mcp.json para comprobaciones de estado. Úsalo solo en directorios en los que confíes.").action(async()=>{const{mcpListHandler:e}=await import("./cli/handlers/mcp.js");await e()}),j.command("get <nombre>").description("Obtener detalles sobre un servidor MCP. Nota: Se omite el diálogo de confianza y se inician los servidores stdio de .mcp.json para comprobaciones de estado. Úsalo solo en directorios en los que confíes.").action(async e=>{const{mcpGetHandler:o}=await import("./cli/handlers/mcp.js");await o(e)}),j.command("add-json <nombre> <json>").description("Añadir un servidor MCP (stdio o SSE) con una cadena JSON").option("-s, --scope <ámbito>","Ámbito de configuración (local, user o project)","local").option("--client-secret","Solicitar el secreto de cliente OAuth (o establecer la variable de entorno MCP_CLIENT_SECRET)").action(async(e,o,t)=>{const{mcpAddJsonHandler:s}=await import("./cli/handlers/mcp.js");await s(e,o,t)}),j.command("add-from-claude-desktop").description("Importar servidores MCP desde Context Desktop (solo Mac y WSL)").option("-s, --scope <ámbito>","Ámbito de configuración (local, user o project)","local").action(async e=>{const{mcpAddFromDesktopHandler:o}=await import("./cli/handlers/mcp.js");await o(e)}),j.command("reset-project-choices").description("Restablecer todos los servidores aprobados y rechazados del ámbito del proyecto (.mcp.json) dentro de este proyecto").action(async()=>{const{mcpResetChoicesHandler:e}=await import("./cli/handlers/mcp.js");await e()}),o("DIRECT_CONNECT")&&t.command("server").description("Iniciar un servidor de sesión de Context Code").option("--port <número>","Puerto HTTP","0").option("--host <dirección>","Dirección de escucha","0.0.0.0").option("--auth-token <token>","Token portador para autenticación").option("--unix <ruta>","Escucha en un socket de dominio Unix").option("--workspace <dir>","Directorio de trabajo por defecto para sesiones que no especifiquen cwd").option("--idle-timeout <ms>","Tiempo de espera de inactividad para sesiones desconectadas en ms (0 = nunca expira)","600000").option("--max-sessions <n>","Máximo de sesiones simultáneas (0 = sin límite)","32").action(async e=>{const{randomBytes:o}=await import("crypto"),{startServer:t}=await import("./server/server.js"),{SessionManager:s}=await import("./server/sessionManager.js"),{DangerousBackend:i}=await import("./server/backends/dangerousBackend.js"),{printBanner:r}=await import("./server/serverBanner.js"),{createServerLogger:n}=await import("./server/serverLog.js"),{writeServerLock:a,removeServerLock:c,probeRunningServer:l}=await import("./server/lockfile.js"),d=await l();d&&(process.stderr.write(`Ya hay un servidor context ejecutándose (pid ${d.pid}) en ${d.httpUrl}\n`),process.exit(1));const p=e.authToken??`sk-ant-cc-${o(16).toString("base64url")}`,m={port:parseInt(e.port,10),host:e.host,authToken:p,unix:e.unix,workspace:e.workspace,idleTimeoutMs:parseInt(e.idleTimeout,10),maxSessions:parseInt(e.maxSessions,10)},u=new s(new i,{idleTimeoutMs:m.idleTimeoutMs,maxSessions:m.maxSessions}),g=n(),f=t(m,u,g),h=f.port??m.port;r(m,p,h),await a({pid:process.pid,port:h,host:m.host,httpUrl:m.unix?`unix:${m.unix}`:`http://${m.host}:${h}`,startedAt:Date.now()});let v=!1;const shutdown=async()=>{v||(v=!0,f.stop(!0),await u.destroyAll(),await c(),process.exit(0))};process.once("SIGINT",()=>{shutdown()}),process.once("SIGTERM",()=>{shutdown()})});o("SSH_REMOTE")&&t.command("ssh <host> [dir]").description("Ejecutar Context Code en un host remoto a través de SSH. Despliega el binario y tuneliza la autenticación API a través de tu máquina local; no requiere configuración remota.").option("--permission-mode <modo>","Modo de permisos para la sesión remota").option("--dangerously-skip-permissions","Omitir todas las solicitudes de permiso en el remoto (peligroso)").option("--local","Modo de prueba e2e; lanza el CLI localmente (omite ssh/despliegue).").action(async()=>{process.stderr.write("Uso: context ssh <usuario@host | alias-ssh-config> [dir]\n\nEjecuta Context Code en un host Linux remoto. No necesitas instalar\nnada en el remoto ni ejecutar `context auth login` allí; el binario se\ndespliega vía SSH y la autenticación API se tuneliza de vuelta.\n"),process.exit(1)});o("DIRECT_CONNECT")&&t.command("open <cc-url>").description("Conectar a un servidor de Context Code (interno — usa URLs cc://)").option("-p, --print [prompt]","Modo impresión (sin interfaz)").option("--output-format <formato>","Formato de salida: text, json, stream-json","text").action(async(e,o)=>{const{parseConnectUrl:t}=await import("./server/parseConnectUrl.js"),{serverUrl:s,authToken:i}=t(e);let r;try{const e=await oi({serverUrl:s,authToken:i,cwd:Ne(),dangerouslySkipPermissions:xi?.dangerouslySkipPermissions});e.workDir&&(Rs(e.workDir),Ts(e.workDir)),Ps(s),r=e.config}catch(e){console.error(e instanceof ti?e.message:String(e)),process.exit(1)}const{runConnectHeadless:n}=await import("./server/connectHeadless.js"),a="string"==typeof o.print?o.print:"",c=!0===o.print;await n(r,a,o.outputFormat,c)});const O=t.command("auth").description("Gestionar autenticación").configureHelp(createSortedHelpConfig());O.command("login").description("Iniciar sesión por OAuth (Anthropic/OpenAI/Google según provider)").option("--email <email>","Pre-completar la dirección de correo en la página de inicio de sesión").option("--sso","Forzar el flujo de inicio de sesión SSO").option("--console","Usar Anthropic Console (facturación por uso de API) en lugar de la suscripción de Claude").option("--claudeai","Usar suscripción de Claude (por defecto)").option("--provider <id>","Provider OAuth: claude, openai, gemini-google").action(async({email:e,sso:o,console:t,claudeai:s,provider:i})=>{const{authLogin:r}=await import("./cli/handlers/auth.js");await r({email:e,sso:o,console:t,claudeai:s,provider:i})}),O.command("status").description("Show authentication status").option("--json","Output as JSON (default)").option("--text","Output as human-readable text").action(async e=>{const{authStatus:o}=await import("./cli/handlers/auth.js");await o(e)}),O.command("logout").description("Cerrar sesión en tu cuenta de Anthropic").action(async()=>{const{authLogout:e}=await import("./cli/handlers/auth.js");await e()}),O.command("provider-api-key").description("Guardar API key para un provider compatible").requiredOption("--provider <id>","ID de provider (openrouter, minimax, zai, gemini-api, nvidia, ollama-cloud)").requiredOption("--api-key <key>","API key del provider").option("--profile <name>","Perfil del provider").action(async e=>{const{authProviderApiKey:o}=await import("./cli/handlers/auth.js");await o({provider:e.provider,apiKey:e.apiKey,profile:e.profile})}),O.command("provider-base-url").description("Guardar base URL para un provider compatible").requiredOption("--provider <id>","ID de provider (ollama, ollama-cloud, openrouter, gemini-google, zai, minimax, nvidia)").requiredOption("--base-url <url>","Base URL del provider").option("--profile <name>","Perfil del provider").action(async e=>{const{authProviderBaseUrl:o}=await import("./cli/handlers/auth.js");await o({provider:e.provider,baseUrl:e.baseUrl,profile:e.profile})}),O.command("set-provider").description("Establecer provider activo para flujos de auth").requiredOption("--provider <id>","ID de provider (claude, openai, gemini-google, ...)").action(async e=>{const{authSetProviderPreference:o}=await import("./cli/handlers/auth.js");await o({provider:e.provider})}),O.command("provider-remove").description("Eliminar provider/perfil y limpiar sus credenciales").requiredOption("--provider <id>","ID de provider (claude, openai, minimax, ollama, ...)").option("--profile <name>","Perfil del provider (si aplica)").action(async e=>{const{authProviderRemove:o}=await import("./cli/handlers/auth.js");await o({provider:e.provider,profile:e.profile})});const D=t.command("provider").description("Cambiar entre proveedores y configurar endpoints").configureHelp(createSortedHelpConfig());D.command("list").description("Listar proveedores y perfiles configurados").action(async()=>{const{providerListHandler:e}=await import("./cli/handlers/provider.js");await e()}),D.command("use <profile>").description("Activar un perfil de proveedor").action(async e=>{try{const{listProviderProfiles:o}=await import("./utils/model/providerProfiles.js"),{switchProviderPreference:t}=await import("./utils/model/providerSwitch.js"),{getAPIProvider:s}=await import("./utils/model/providers.js"),{getDefaultMainLoopModel:i}=await import("./utils/model/model.js"),r=o().filter(o=>o.name.toLowerCase()===e.toLowerCase()||o.id.toLowerCase()===e.toLowerCase());0===r.length&&(process.stderr.write(`Perfil '${e}' no encontrado.\n`),process.exit(1)),r.length>1&&(process.stderr.write(`Perfil ambiguo '${e}'. Hay múltiples perfiles con este nombre.\n`),process.exit(1));const n=r[0];t({currentModel:i(),currentProvider:s(),targetProvider:n.provider,targetProfileName:n.name}),process.stdout.write(`Perfil ${n.provider}/${n.name} activado exitosamente.\n`),process.exit(0)}catch(e){process.stderr.write(`Error: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}});const Y=t.command("profile").description("Gestionar perfiles de proveedor").configureHelp(createSortedHelpConfig());Y.command("use <providerOrProfile> [profileName]").description("Activar un perfil de proveedor").action(async(e,o)=>{try{const{listProviderProfiles:t}=await import("./utils/model/providerProfiles.js"),{switchProviderPreference:s}=await import("./utils/model/providerSwitch.js"),{getAPIProvider:i}=await import("./utils/model/providers.js"),{getDefaultMainLoopModel:r}=await import("./utils/model/model.js");let n,a=o;if(a)n=e;else{const o=t().filter(o=>o.name.toLowerCase()===e.toLowerCase()||o.id.toLowerCase()===e.toLowerCase());1===o.length?(n=o[0].provider,a=o[0].name):o.length>1?(process.stderr.write(`Perfil ambiguo '${e}'. Hay múltiples perfiles con este nombre.\n`),process.exit(1)):(n=e,a=void 0)}s({currentModel:r(),currentProvider:i(),targetProvider:n,targetProfileName:a}),process.stdout.write(`Perfil ${n}${a?"/"+a:""} activado exitosamente.\n`),process.exit(0)}catch(e){process.stderr.write(`Error: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}}),Y.command("create <provider> <profileName>").description("Crear un nuevo perfil de proveedor").action(async(e,o)=>{try{const{createProviderProfile:t,isProfiledProvider:s}=await import("./utils/model/providerProfiles.js");s(e)||(process.stderr.write(`Proveedor '${e}' no admite perfiles.\n`),process.exit(1)),t({provider:e,name:o,activate:!0}),process.stdout.write(`Perfil ${e}/${o} creado y activado exitosamente.\n`),process.exit(0)}catch(e){process.stderr.write(`Error: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}}),Y.command("remove <provider> <profileName>").alias("delete").description("Eliminar un perfil de proveedor").action(async(e,o)=>{try{const{removeProviderProfile:t}=await import("./utils/model/providerProfiles.js");t(e,o)||(process.stderr.write(`Perfil ${e}/${o} no encontrado.\n`),process.exit(1)),process.stdout.write(`Perfil ${e}/${o} eliminado exitosamente.\n`),process.exit(0)}catch(e){process.stderr.write(`Error: ${e instanceof Error?e.message:String(e)}\n`),process.exit(1)}});t.command("model").description("Inspeccionar modelos disponibles por provider").configureHelp(createSortedHelpConfig()).command("list").description("Listar modelos disponibles del provider activo o de uno especifico").option("--provider <id>","ID del provider (claude, minimax, zai, openai, ...) o label (Claude, MiniMax, ...)").option("--json","Salida en formato JSON").action(async e=>{const{modelListHandler:o}=await import("./cli/handlers/modelList.js");await o(e)});const coworkOption=()=>new p("--cowork","Usar el directorio cowork_plugins").hideHelp(),Q=t.command("plugin").alias("plugins").description("Gestionar plugins de Context Code").configureHelp(createSortedHelpConfig());Q.command("validate <path>").description("Validar un manifiesto de plugin o marketplace").addOption(coworkOption()).action(async(e,o)=>{const{pluginValidateHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("list").description("Listar plugins instalados").option("--json","Salida en formato JSON").option("--available","Incluir plugins disponibles de los marketplaces (requiere --json)").addOption(coworkOption()).action(async e=>{const{pluginListHandler:o}=await import("./cli/handlers/plugins.js");await o(e)});const Z=Q.command("marketplace").description("Gestionar marketplaces de Context Code").configureHelp(createSortedHelpConfig());if(Z.command("add <source>").description("Añadir un marketplace desde una URL, ruta o repositorio de GitHub").addOption(coworkOption()).option("--sparse <paths...>","Limitar la descarga a directorios específicos mediante git sparse-checkout (para monorepositorios). Ejemplo: --sparse .claude-plugin plugins").option("--scope <scope>","Dónde declarar el marketplace: user (por defecto), project o local").action(async(e,o)=>{const{marketplaceAddHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Z.command("list").description("Listar todos los marketplaces configurados").option("--json","Salida en formato JSON").addOption(coworkOption()).action(async e=>{const{marketplaceListHandler:o}=await import("./cli/handlers/plugins.js");await o(e)}),Z.command("remove <name>").alias("rm").description("Eliminar un marketplace configurado").addOption(coworkOption()).action(async(e,o)=>{const{marketplaceRemoveHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Z.command("update [name]").description("Actualizar marketplace(s) desde su origen - actualiza todos si no se especifica un nombre").addOption(coworkOption()).action(async(e,o)=>{const{marketplaceUpdateHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("install <plugin>").alias("i").description("Instalar un plugin de los marketplaces disponibles (usa plugin@marketplace para un marketplace específico)").option("-s, --scope <scope>","Ámbito de instalación: user, project o local","user").addOption(coworkOption()).action(async(e,o)=>{const{pluginInstallHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("uninstall <plugin>").alias("remove").alias("rm").description("Desinstalar un plugin instalado").option("-s, --scope <scope>","Desinstalar del ámbito: user, project o local","user").option("--keep-data","Preservar el directorio de datos persistentes del plugin (~/.context/plugins/data/{id}/)").addOption(coworkOption()).action(async(e,o)=>{const{pluginUninstallHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("enable <plugin>").description("Habilitar un plugin deshabilitado").option("-s, --scope <scope>",`Ámbito de instalación: ${ao.join(", ")} (por defecto: auto-detect)`).addOption(coworkOption()).action(async(e,o)=>{const{pluginEnableHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("disable [plugin]").description("Deshabilitar un plugin habilitado").option("-a, --all","Deshabilitar todos los plugins habilitados").option("-s, --scope <scope>",`Ámbito de instalación: ${ao.join(", ")} (por defecto: auto-detect)`).addOption(coworkOption()).action(async(e,o)=>{const{pluginDisableHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),Q.command("update <plugin>").description("Actualizar un plugin a la última versión (se requiere reiniciar para aplicar)").option("-s, --scope <scope>",`Ámbito de instalación: ${co.join(", ")} (por defecto: user)`).addOption(coworkOption()).action(async(e,o)=>{const{pluginUpdateHandler:t}=await import("./cli/handlers/plugins.js");await t(e,o)}),t.command("setup-token").description("Configurar un token de autenticación de larga duración (requiere suscripción a Context)").action(async()=>{const[{setupTokenHandler:e},{createRoot:o}]=await Promise.all([import("./cli/handlers/util.js"),import("./ink.js")]),t=await o(we(!1));await e(t)}),t.command("agents").description("Listar agentes configurados").option("--setting-sources <sources>","Lista de fuentes de configuración a cargar separadas por comas (user, project, local).").option("--json","Salida en formato JSON estructurado para consumo por herramientas externas").action(async e=>{const{agentsHandler:o}=await import("./cli/handlers/agents.js");await o({json:!!e.json}),process.exit(0)}),o("TRANSCRIPT_CLASSIFIER")&&"disabled"!==qo()){const e=t.command("auto-mode").description("Inspeccionar la configuración del clasificador de modo automático");e.command("defaults").description("Imprimir el entorno predeterminado del modo automático, las reglas de permiso y denegación en formato JSON").action(async()=>{const{autoModeDefaultsHandler:e}=await import("./cli/handlers/autoMode.js");e(),process.exit(0)}),e.command("config").description("Imprimir la configuración efectiva del modo automático en formato JSON: tus ajustes si están establecidos, los valores predeterminados en caso contrario").action(async()=>{const{autoModeConfigHandler:e}=await import("./cli/handlers/autoMode.js");e(),process.exit(0)}),e.command("critique").description("Obtener comentarios de IA sobre tus reglas personalizadas de modo automático").option("--model <model>","Sobrescribir el modelo que se utiliza").action(async e=>{const{autoModeCritiqueHandler:o}=await import("./cli/handlers/autoMode.js");await o(e),process.exit()})}o("BRIDGE_MODE")&&t.command("remote-control",{hidden:!0}).alias("rc").description("Conectar tu entorno local para sesiones de control remoto a través de claude.ai/code").action(async()=>{const{bridgeMain:e}=await import("./bridge/bridgeMain.js");await e(process.argv.slice(3))});o("KAIROS")&&t.command("assistant [sessionId]").description("Adjuntar el REPL como cliente a una sesión puente en ejecución. Descubre sesiones a través de la API si no se proporciona sessionId.").action(()=>{process.stderr.write("Uso: Context Code assistant [sessionId]\n\nAdjuntar el REPL como cliente visor a una sesión puente en ejecución.\nOmite sessionId para descubrir y elegir entre las sesiones disponibles.\n"),process.exit(1)});t.command("doctor").description("Comprobar el estado del actualizador automático de Context Code. Nota: Se omite el diálogo de confianza del espacio de trabajo y se inician los servidores stdio de .mcp.json para las comprobaciones de salud. Usa este comando solo en directorios en los que confíes.").action(async()=>{const[{doctorHandler:e},{createRoot:o}]=await Promise.all([import("./cli/handlers/util.js"),import("./ink.js")]),t=await o(we(!1));await e(t)}),t.command("update").alias("upgrade").description("Buscar actualizaciones e instalarlas si están disponibles").action(async()=>{const{update:e}=await import("./cli/update.js");await e()}),!1;0;t.command("install [target]").description("Instalar la compilación nativa de Context Code. Usa [target] para especificar la versión (stable, latest o una versión específica)").option("--force","Forzar la instalación incluso si ya está instalado").action(async(e,o)=>{const{installHandler:t}=await import("./cli/handlers/util.js");await t(e,o)}),!1;return i("run_before_parse"),await t.parseAsync(process.argv),i("run_after_parse"),i("main_after_run"),r(),t}(),i("main_after_run")}function maybeActivateProactive(e){if((o("PROACTIVE")||o("KAIROS"))&&(e.proactive||jo(process.env.CONTEXT_CODE_PROACTIVE)||jo(process.env.CLAUDE_CODE_PROACTIVE))){const e=s("./proactive/index.js");e.isProactiveActive()||e.activateProactive("command")}}function maybeActivateBrief(e){if(!o("KAIROS")&&!o("KAIROS_BRIEF"))return;const t=e.brief,i=jo(process.env.CONTEXT_CODE_BRIEF)||jo(process.env.CLAUDE_CODE_BRIEF);if(!t&&!i)return;const{isBriefEntitled:r}=s("./tools/BriefTool/BriefTool.js"),n=r();n&&$s(!0),Re("tengu_brief_mode_enabled",{enabled:n,gated:!n,source:i?"env":"flag"})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{feature as o}from"../recovery/bunBundleShim.js";import{createRequire as e}from"module";const t=e(import.meta.url);import{getShortcutDisplay as r}from"../keybindings/shortcutFormat.js";import{isExtractModeActive as s}from"../memdir/paths.js";import{logEvent as n}from"../services/analytics/index.js";import{createAttachmentMessage as i}from"../utils/attachments.js";import{logForDebugging as a}from"../utils/debug.js";import{errorMessage as m}from"../utils/errors.js";import{executeStopHooks as p,executeTaskCompletedHooks as c,executeTeammateIdleHooks as l,getStopHookMessage as u,getTaskCompletedHookMessage as d,getTeammateIdleHookMessage as g}from"../utils/hooks.js";import{createStopHookSummaryMessage as h,createSystemMessage as k,createUserInterruptionMessage as f,createUserMessage as
|
|
1
|
+
import{feature as o}from"../recovery/bunBundleShim.js";import{createRequire as e}from"module";const t=e(import.meta.url);import{getShortcutDisplay as r}from"../keybindings/shortcutFormat.js";import{isExtractModeActive as s}from"../memdir/paths.js";import{logEvent as n}from"../services/analytics/index.js";import{createAttachmentMessage as i}from"../utils/attachments.js";import{logForDebugging as a}from"../utils/debug.js";import{errorMessage as m}from"../utils/errors.js";import{executeStopHooks as p,executeTaskCompletedHooks as c,executeTeammateIdleHooks as l,getStopHookMessage as u,getTaskCompletedHookMessage as d,getTeammateIdleHookMessage as g}from"../utils/hooks.js";import{createStopHookSummaryMessage as h,createSystemMessage as k,createUserInterruptionMessage as f,createUserMessage as y}from"../utils/messages.js";import{getTaskListId as E,listTasks as C}from"../utils/tasks.js";import{getAgentName as b,getTeamName as v,isTeammate as _}from"../utils/teammate.js";const I=o("EXTRACT_MEMORIES")?t("../services/extractMemories/extractMemories.js"):null,T=o("TEMPLATES")?t("../jobs/classifier.js"):null;import{executeAutoDream as j}from"../services/autoDream/autoDream.js";import{executePromptSuggestion as S}from"../services/PromptSuggestion/promptSuggestion.js";import{isBareMode as M}from"../utils/envUtils.js";import{createCacheSafeParams as D,saveCacheSafeParams as x}from"../utils/forkedAgent.js";export async function*handleStopHooks(e,t,S,U,w,A,q,R){const P=Date.now(),O={messages:[...e,...t],systemPrompt:S,userContext:U,systemContext:w,toolUseContext:A,querySource:q};"repl_main_thread"!==q&&"sdk"!==q||x(D(O));const N=process.env.CONTEXT_JOB_DIR??process.env.CLAUDE_JOB_DIR;if(o("TEMPLATES")&&N&&q.startsWith("repl_main_thread")&&!A.agentId){const o=O.messages.filter(o=>"assistant"===o.type),e=T.classifyAndWriteState(N,o).catch(o=>{a(`[job] classifier error: ${m(o)}`,{level:"error"})});await Promise.race([e,new Promise(o=>setTimeout(o,6e4).unref())])}if(M()||(o("EXTRACT_MEMORIES")&&!A.agentId&&s()&&I.executeExtractMemories(O,A.appendSystemMessage),A.agentId||j(O,A.appendSystemMessage)),o("CHICAGO_MCP")&&!A.agentId)try{const{cleanupComputerUseAfterTurn:o}=await import("../utils/computerUse/cleanup.js");await o(A)}catch{}try{const o=[],s=A.getAppState().toolPermissionContext.mode,a=p(s,A.abortController.signal,void 0,R??!1,A.agentId,A,[...e,...t],A.agentType);let m="",k=0,I=!1,T="",j=!1;const S=[],M=[];for await(const e of a){if(e.message){if(yield e.message,"progress"===e.message.type&&e.message.toolUseID){m=e.message.toolUseID,k++;const o=e.message.data;o.command&&M.push({command:o.command,promptText:o.promptText})}if("attachment"===e.message.type){const o=e.message.attachment;if("hookEvent"in o&&("Stop"===o.hookEvent||"SubagentStop"===o.hookEvent)&&("hook_non_blocking_error"===o.type?(S.push(o.stderr||`Exit code ${o.exitCode}`),j=!0):"hook_error_during_execution"===o.type?(S.push(o.content),j=!0):"hook_success"===o.type&&(o.stdout&&o.stdout.trim()||o.stderr&&o.stderr.trim())&&(j=!0),"durationMs"in o&&"command"in o)){const e=M.find(e=>e.command===o.command&&void 0===e.durationMs);e&&(e.durationMs=o.durationMs)}}}if(e.blockingError){const t=y({content:u(e.blockingError),isMeta:!0});o.push(t),yield t,j=!0,S.push(e.blockingError.blockingError)}if(e.preventContinuation&&(I=!0,T=e.stopReason||"Stop hook prevented continuation",yield i({type:"hook_stopped_continuation",message:T,hookName:"Stop",toolUseID:m,hookEvent:"Stop"})),A.abortController.signal.aborted)return n("tengu_pre_stop_hooks_cancelled",{queryChainId:A.queryTracking?.chainId,queryDepth:A.queryTracking?.depth}),yield f({toolUse:!1}),{blockingErrors:[],preventContinuation:!0}}if(k>0&&(yield h(k,M,S,I,T,j,"suggestion",m),S.length>0)){const o=r("app:toggleTranscript","Global","ctrl+o");A.addNotification?.({key:"stop-hook-error",text:`Stop hook error occurred · ${o} to see`,priority:"immediate"})}if(I)return{blockingErrors:[],preventContinuation:!0};if(o.length>0)return{blockingErrors:o,preventContinuation:!1};if(_()){const o=b()??"",e=v()??"",t=[];let r,n=!1,a="";const m=E(),p=(await C(m)).filter(e=>"in_progress"===e.status&&e.owner===o);for(const m of p){const p=c(m.id,m.subject,m.description,o,e,s,A.abortController.signal,void 0,A);for await(const o of p){if(o.message&&("progress"===o.message.type&&o.message.toolUseID&&(a=o.message.toolUseID),yield o.message),o.blockingError){const e=y({content:d(o.blockingError),isMeta:!0});t.push(e),yield e}if(o.preventContinuation&&(n=!0,r=o.stopReason||"TaskCompleted hook prevented continuation",yield i({type:"hook_stopped_continuation",message:r,hookName:"TaskCompleted",toolUseID:a,hookEvent:"TaskCompleted"})),A.abortController.signal.aborted)return{blockingErrors:[],preventContinuation:!0}}}const u=l(o,e,s,A.abortController.signal);for await(const o of u){if(o.message&&("progress"===o.message.type&&o.message.toolUseID&&(a=o.message.toolUseID),yield o.message),o.blockingError){const e=y({content:g(o.blockingError),isMeta:!0});t.push(e),yield e}if(o.preventContinuation&&(n=!0,r=o.stopReason||"TeammateIdle hook prevented continuation",yield i({type:"hook_stopped_continuation",message:r,hookName:"TeammateIdle",toolUseID:a,hookEvent:"TeammateIdle"})),A.abortController.signal.aborted)return{blockingErrors:[],preventContinuation:!0}}if(n)return{blockingErrors:[],preventContinuation:!0};if(t.length>0)return{blockingErrors:t,preventContinuation:!1}}return{blockingErrors:[],preventContinuation:!1}}catch(o){const e=Date.now()-P;return n("tengu_stop_hook_error",{duration:e,queryChainId:A.queryTracking?.chainId,queryDepth:A.queryTracking?.depth}),yield k(`Stop hook failed: ${m(o)}`,"warning"),{blockingErrors:[],preventContinuation:!1}}}
|