@xortex/xcode 3.0.0
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/LICENSE +21 -0
- package/README.md +171 -0
- package/bin/xcode +127 -0
- package/bin/xcode-test +84 -0
- package/bin/xcode.cmd +31 -0
- package/constants/apiLimits.ts +94 -0
- package/constants/betas.ts +52 -0
- package/constants/common.ts +33 -0
- package/constants/cyberRiskInstruction.ts +24 -0
- package/constants/errorIds.ts +15 -0
- package/constants/figures.ts +45 -0
- package/constants/files.ts +156 -0
- package/constants/github-app.ts +144 -0
- package/constants/keys.ts +11 -0
- package/constants/messages.ts +1 -0
- package/constants/oauth.ts +234 -0
- package/constants/outputStyles.ts +216 -0
- package/constants/product.ts +76 -0
- package/constants/prompts.ts +939 -0
- package/constants/spinnerVerbs.ts +204 -0
- package/constants/system.ts +95 -0
- package/constants/systemPromptSections.ts +68 -0
- package/constants/toolLimits.ts +56 -0
- package/constants/tools.ts +112 -0
- package/constants/turnCompletionVerbs.ts +12 -0
- package/constants/xml.ts +86 -0
- package/entrypoints/agentSdkTypes.ts +443 -0
- package/entrypoints/cli.tsx +307 -0
- package/entrypoints/init.ts +340 -0
- package/entrypoints/mcp.ts +196 -0
- package/entrypoints/sandboxTypes.ts +156 -0
- package/entrypoints/sdk/controlSchemas.ts +663 -0
- package/entrypoints/sdk/coreSchemas.ts +1889 -0
- package/entrypoints/sdk/coreTypes.generated.ts +2 -0
- package/entrypoints/sdk/coreTypes.ts +62 -0
- package/entrypoints/sdk/runtimeTypes.ts +140 -0
- package/entrypoints/sdk/sdkUtilityTypes.ts +3 -0
- package/entrypoints/sdk/toolTypes.ts +90 -0
- package/main.tsx +4686 -0
- package/package.json +120 -0
- package/services/AgentSummary/agentSummary.ts +179 -0
- package/services/MagicDocs/magicDocs.ts +254 -0
- package/services/MagicDocs/prompts.ts +127 -0
- package/services/PromptSuggestion/promptSuggestion.ts +523 -0
- package/services/PromptSuggestion/speculation.ts +991 -0
- package/services/SessionMemory/prompts.ts +324 -0
- package/services/SessionMemory/sessionMemory.ts +495 -0
- package/services/SessionMemory/sessionMemoryUtils.ts +207 -0
- package/services/analytics/config.ts +38 -0
- package/services/analytics/datadog.ts +307 -0
- package/services/analytics/firstPartyEventLogger.ts +449 -0
- package/services/analytics/firstPartyEventLoggingExporter.ts +806 -0
- package/services/analytics/growthbook.ts +1155 -0
- package/services/analytics/index.ts +173 -0
- package/services/analytics/metadata.ts +973 -0
- package/services/analytics/sink.ts +114 -0
- package/services/analytics/sinkKillswitch.ts +25 -0
- package/services/api/adminRequests.ts +119 -0
- package/services/api/bootstrap.ts +141 -0
- package/services/api/claude.ts +3422 -0
- package/services/api/client.ts +406 -0
- package/services/api/dumpPrompts.ts +226 -0
- package/services/api/emptyUsage.ts +22 -0
- package/services/api/errorUtils.ts +260 -0
- package/services/api/errors.ts +1207 -0
- package/services/api/filesApi.ts +748 -0
- package/services/api/firstTokenDate.ts +60 -0
- package/services/api/gemini.ts +359 -0
- package/services/api/geminiAdapter.ts +123 -0
- package/services/api/geminiClient.ts +291 -0
- package/services/api/grove.ts +357 -0
- package/services/api/logging.ts +788 -0
- package/services/api/metricsOptOut.ts +159 -0
- package/services/api/openRouterClient.ts +453 -0
- package/services/api/overageCreditGrant.ts +137 -0
- package/services/api/promptCacheBreakDetection.ts +727 -0
- package/services/api/referral.ts +281 -0
- package/services/api/sessionIngress.ts +514 -0
- package/services/api/ultrareviewQuota.ts +38 -0
- package/services/api/usage.ts +63 -0
- package/services/api/withRetry.ts +822 -0
- package/services/autoDream/autoDream.ts +324 -0
- package/services/autoDream/config.ts +21 -0
- package/services/autoDream/consolidationLock.ts +140 -0
- package/services/autoDream/consolidationPrompt.ts +65 -0
- package/services/awaySummary.ts +74 -0
- package/services/claudeAiLimits.ts +515 -0
- package/services/claudeAiLimitsHook.ts +23 -0
- package/services/compact/apiMicrocompact.ts +153 -0
- package/services/compact/autoCompact.ts +351 -0
- package/services/compact/compact.ts +1705 -0
- package/services/compact/compactWarningHook.ts +16 -0
- package/services/compact/compactWarningState.ts +18 -0
- package/services/compact/grouping.ts +63 -0
- package/services/compact/microCompact.ts +530 -0
- package/services/compact/postCompactCleanup.ts +77 -0
- package/services/compact/prompt.ts +374 -0
- package/services/compact/sessionMemoryCompact.ts +630 -0
- package/services/compact/timeBasedMCConfig.ts +43 -0
- package/services/diagnosticTracking.ts +397 -0
- package/services/extractMemories/extractMemories.ts +517 -0
- package/services/extractMemories/prompts.ts +154 -0
- package/services/internalLogging.ts +90 -0
- package/services/lsp/LSPClient.ts +447 -0
- package/services/lsp/LSPDiagnosticRegistry.ts +386 -0
- package/services/lsp/LSPServerInstance.ts +511 -0
- package/services/lsp/LSPServerManager.ts +420 -0
- package/services/lsp/config.ts +79 -0
- package/services/lsp/manager.ts +289 -0
- package/services/lsp/passiveFeedback.ts +328 -0
- package/services/mcp/InProcessTransport.ts +63 -0
- package/services/mcp/MCPConnectionManager.tsx +73 -0
- package/services/mcp/SdkControlTransport.ts +136 -0
- package/services/mcp/auth.ts +2465 -0
- package/services/mcp/channelAllowlist.ts +76 -0
- package/services/mcp/channelNotification.ts +316 -0
- package/services/mcp/channelPermissions.ts +240 -0
- package/services/mcp/claudeai.ts +164 -0
- package/services/mcp/client.ts +3348 -0
- package/services/mcp/config.ts +1578 -0
- package/services/mcp/elicitationHandler.ts +313 -0
- package/services/mcp/envExpansion.ts +38 -0
- package/services/mcp/headersHelper.ts +138 -0
- package/services/mcp/mcpStringUtils.ts +106 -0
- package/services/mcp/normalization.ts +23 -0
- package/services/mcp/oauthPort.ts +78 -0
- package/services/mcp/officialRegistry.ts +72 -0
- package/services/mcp/types.ts +258 -0
- package/services/mcp/useManageMCPConnections.ts +1141 -0
- package/services/mcp/utils.ts +575 -0
- package/services/mcp/vscodeSdkMcp.ts +112 -0
- package/services/mcp/xaa.ts +511 -0
- package/services/mcp/xaaIdpLogin.ts +487 -0
- package/services/mcpServerApproval.tsx +41 -0
- package/services/mockRateLimits.ts +882 -0
- package/services/notifier.ts +156 -0
- package/services/oauth/auth-code-listener.ts +211 -0
- package/services/oauth/client.ts +566 -0
- package/services/oauth/crypto.ts +23 -0
- package/services/oauth/getOauthProfile.ts +53 -0
- package/services/oauth/index.ts +198 -0
- package/services/plugins/PluginInstallationManager.ts +184 -0
- package/services/plugins/pluginCliCommands.ts +344 -0
- package/services/plugins/pluginOperations.ts +1088 -0
- package/services/policyLimits/index.ts +663 -0
- package/services/policyLimits/types.ts +27 -0
- package/services/preventSleep.ts +165 -0
- package/services/rateLimitMessages.ts +344 -0
- package/services/rateLimitMocking.ts +144 -0
- package/services/remoteManagedSettings/index.ts +638 -0
- package/services/remoteManagedSettings/securityCheck.tsx +74 -0
- package/services/remoteManagedSettings/syncCache.ts +112 -0
- package/services/remoteManagedSettings/syncCacheState.ts +96 -0
- package/services/remoteManagedSettings/types.ts +31 -0
- package/services/settingsSync/index.ts +581 -0
- package/services/settingsSync/types.ts +67 -0
- package/services/teamMemorySync/index.ts +1256 -0
- package/services/teamMemorySync/secretScanner.ts +324 -0
- package/services/teamMemorySync/teamMemSecretGuard.ts +44 -0
- package/services/teamMemorySync/types.ts +156 -0
- package/services/teamMemorySync/watcher.ts +387 -0
- package/services/tips/tipHistory.ts +17 -0
- package/services/tips/tipRegistry.ts +686 -0
- package/services/tips/tipScheduler.ts +58 -0
- package/services/tokenEstimation.ts +495 -0
- package/services/toolUseSummary/toolUseSummaryGenerator.ts +112 -0
- package/services/tools/StreamingToolExecutor.ts +530 -0
- package/services/tools/toolExecution.ts +1745 -0
- package/services/tools/toolHooks.ts +650 -0
- package/services/tools/toolOrchestration.ts +188 -0
- package/services/vcr.ts +406 -0
- package/services/voice.ts +525 -0
- package/services/voiceKeyterms.ts +106 -0
- package/services/voiceStreamSTT.ts +544 -0
- package/tools/AgentTool/AgentTool.tsx +1398 -0
- package/tools/AgentTool/UI.tsx +872 -0
- package/tools/AgentTool/agentColorManager.ts +66 -0
- package/tools/AgentTool/agentDisplay.ts +104 -0
- package/tools/AgentTool/agentMemory.ts +177 -0
- package/tools/AgentTool/agentMemorySnapshot.ts +197 -0
- package/tools/AgentTool/agentToolUtils.ts +686 -0
- package/tools/AgentTool/built-in/claudeCodeGuideAgent.ts +205 -0
- package/tools/AgentTool/built-in/exploreAgent.ts +83 -0
- package/tools/AgentTool/built-in/generalPurposeAgent.ts +34 -0
- package/tools/AgentTool/built-in/planAgent.ts +92 -0
- package/tools/AgentTool/built-in/statuslineSetup.ts +144 -0
- package/tools/AgentTool/built-in/verificationAgent.ts +152 -0
- package/tools/AgentTool/builtInAgents.ts +72 -0
- package/tools/AgentTool/constants.ts +12 -0
- package/tools/AgentTool/forkSubagent.ts +210 -0
- package/tools/AgentTool/loadAgentsDir.ts +755 -0
- package/tools/AgentTool/prompt.ts +287 -0
- package/tools/AgentTool/resumeAgent.ts +265 -0
- package/tools/AgentTool/runAgent.ts +973 -0
- package/tools/AskUserQuestionTool/AskUserQuestionTool.tsx +266 -0
- package/tools/AskUserQuestionTool/prompt.ts +44 -0
- package/tools/BashTool/BashTool.tsx +1144 -0
- package/tools/BashTool/BashToolResultMessage.tsx +191 -0
- package/tools/BashTool/UI.tsx +185 -0
- package/tools/BashTool/bashCommandHelpers.ts +265 -0
- package/tools/BashTool/bashPermissions.ts +2621 -0
- package/tools/BashTool/bashSecurity.ts +2592 -0
- package/tools/BashTool/commandSemantics.ts +140 -0
- package/tools/BashTool/commentLabel.ts +13 -0
- package/tools/BashTool/destructiveCommandWarning.ts +102 -0
- package/tools/BashTool/modeValidation.ts +115 -0
- package/tools/BashTool/pathValidation.ts +1303 -0
- package/tools/BashTool/prompt.ts +369 -0
- package/tools/BashTool/readOnlyValidation.ts +1990 -0
- package/tools/BashTool/sedEditParser.ts +322 -0
- package/tools/BashTool/sedValidation.ts +684 -0
- package/tools/BashTool/shouldUseSandbox.ts +153 -0
- package/tools/BashTool/toolName.ts +2 -0
- package/tools/BashTool/utils.ts +223 -0
- package/tools/BriefTool/BriefTool.ts +204 -0
- package/tools/BriefTool/UI.tsx +101 -0
- package/tools/BriefTool/attachments.ts +110 -0
- package/tools/BriefTool/prompt.ts +22 -0
- package/tools/BriefTool/upload.ts +174 -0
- package/tools/ConfigTool/ConfigTool.ts +467 -0
- package/tools/ConfigTool/UI.tsx +38 -0
- package/tools/ConfigTool/constants.ts +1 -0
- package/tools/ConfigTool/prompt.ts +93 -0
- package/tools/ConfigTool/supportedSettings.ts +211 -0
- package/tools/EnterPlanModeTool/EnterPlanModeTool.ts +126 -0
- package/tools/EnterPlanModeTool/UI.tsx +33 -0
- package/tools/EnterPlanModeTool/constants.ts +1 -0
- package/tools/EnterPlanModeTool/prompt.ts +170 -0
- package/tools/EnterWorktreeTool/EnterWorktreeTool.ts +127 -0
- package/tools/EnterWorktreeTool/UI.tsx +20 -0
- package/tools/EnterWorktreeTool/constants.ts +1 -0
- package/tools/EnterWorktreeTool/prompt.ts +30 -0
- package/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts +493 -0
- package/tools/ExitPlanModeTool/UI.tsx +82 -0
- package/tools/ExitPlanModeTool/constants.ts +2 -0
- package/tools/ExitPlanModeTool/prompt.ts +29 -0
- package/tools/ExitWorktreeTool/ExitWorktreeTool.ts +329 -0
- package/tools/ExitWorktreeTool/UI.tsx +25 -0
- package/tools/ExitWorktreeTool/constants.ts +1 -0
- package/tools/ExitWorktreeTool/prompt.ts +32 -0
- package/tools/FileEditTool/FileEditTool.ts +625 -0
- package/tools/FileEditTool/UI.tsx +289 -0
- package/tools/FileEditTool/constants.ts +11 -0
- package/tools/FileEditTool/prompt.ts +28 -0
- package/tools/FileEditTool/types.ts +85 -0
- package/tools/FileEditTool/utils.ts +775 -0
- package/tools/FileReadTool/FileReadTool.ts +1183 -0
- package/tools/FileReadTool/UI.tsx +185 -0
- package/tools/FileReadTool/imageProcessor.ts +94 -0
- package/tools/FileReadTool/limits.ts +92 -0
- package/tools/FileReadTool/prompt.ts +49 -0
- package/tools/FileWriteTool/FileWriteTool.ts +434 -0
- package/tools/FileWriteTool/UI.tsx +405 -0
- package/tools/FileWriteTool/prompt.ts +18 -0
- package/tools/GlobTool/GlobTool.ts +198 -0
- package/tools/GlobTool/UI.tsx +63 -0
- package/tools/GlobTool/prompt.ts +7 -0
- package/tools/GrepTool/GrepTool.ts +577 -0
- package/tools/GrepTool/UI.tsx +201 -0
- package/tools/GrepTool/prompt.ts +18 -0
- package/tools/LSPTool/LSPTool.ts +860 -0
- package/tools/LSPTool/UI.tsx +228 -0
- package/tools/LSPTool/formatters.ts +592 -0
- package/tools/LSPTool/prompt.ts +21 -0
- package/tools/LSPTool/schemas.ts +215 -0
- package/tools/LSPTool/symbolContext.ts +90 -0
- package/tools/ListMcpResourcesTool/ListMcpResourcesTool.ts +123 -0
- package/tools/ListMcpResourcesTool/UI.tsx +29 -0
- package/tools/ListMcpResourcesTool/prompt.ts +20 -0
- package/tools/MCPTool/MCPTool.ts +77 -0
- package/tools/MCPTool/UI.tsx +403 -0
- package/tools/MCPTool/classifyForCollapse.ts +604 -0
- package/tools/MCPTool/prompt.ts +3 -0
- package/tools/McpAuthTool/McpAuthTool.ts +215 -0
- package/tools/NotebookEditTool/NotebookEditTool.ts +490 -0
- package/tools/NotebookEditTool/UI.tsx +93 -0
- package/tools/NotebookEditTool/constants.ts +2 -0
- package/tools/NotebookEditTool/prompt.ts +3 -0
- package/tools/PowerShellTool/PowerShellTool.tsx +1001 -0
- package/tools/PowerShellTool/UI.tsx +131 -0
- package/tools/PowerShellTool/clmTypes.ts +211 -0
- package/tools/PowerShellTool/commandSemantics.ts +142 -0
- package/tools/PowerShellTool/commonParameters.ts +30 -0
- package/tools/PowerShellTool/destructiveCommandWarning.ts +109 -0
- package/tools/PowerShellTool/gitSafety.ts +176 -0
- package/tools/PowerShellTool/modeValidation.ts +404 -0
- package/tools/PowerShellTool/pathValidation.ts +2049 -0
- package/tools/PowerShellTool/powershellPermissions.ts +1648 -0
- package/tools/PowerShellTool/powershellSecurity.ts +1090 -0
- package/tools/PowerShellTool/prompt.ts +145 -0
- package/tools/PowerShellTool/readOnlyValidation.ts +1823 -0
- package/tools/PowerShellTool/toolName.ts +2 -0
- package/tools/REPLTool/constants.ts +46 -0
- package/tools/REPLTool/primitiveTools.ts +39 -0
- package/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts +158 -0
- package/tools/ReadMcpResourceTool/UI.tsx +37 -0
- package/tools/ReadMcpResourceTool/prompt.ts +16 -0
- package/tools/RemoteTriggerTool/RemoteTriggerTool.ts +161 -0
- package/tools/RemoteTriggerTool/UI.tsx +17 -0
- package/tools/RemoteTriggerTool/prompt.ts +15 -0
- package/tools/ScheduleCronTool/CronCreateTool.ts +157 -0
- package/tools/ScheduleCronTool/CronDeleteTool.ts +95 -0
- package/tools/ScheduleCronTool/CronListTool.ts +97 -0
- package/tools/ScheduleCronTool/UI.tsx +60 -0
- package/tools/ScheduleCronTool/prompt.ts +135 -0
- package/tools/SendMessageTool/SendMessageTool.ts +917 -0
- package/tools/SendMessageTool/UI.tsx +31 -0
- package/tools/SendMessageTool/constants.ts +1 -0
- package/tools/SendMessageTool/prompt.ts +49 -0
- package/tools/SkillTool/SkillTool.ts +1108 -0
- package/tools/SkillTool/UI.tsx +128 -0
- package/tools/SkillTool/constants.ts +1 -0
- package/tools/SkillTool/prompt.ts +241 -0
- package/tools/SleepTool/prompt.ts +17 -0
- package/tools/SyntheticOutputTool/SyntheticOutputTool.ts +163 -0
- package/tools/TaskCreateTool/TaskCreateTool.ts +138 -0
- package/tools/TaskCreateTool/constants.ts +1 -0
- package/tools/TaskCreateTool/prompt.ts +56 -0
- package/tools/TaskGetTool/TaskGetTool.ts +128 -0
- package/tools/TaskGetTool/constants.ts +1 -0
- package/tools/TaskGetTool/prompt.ts +24 -0
- package/tools/TaskListTool/TaskListTool.ts +116 -0
- package/tools/TaskListTool/constants.ts +1 -0
- package/tools/TaskListTool/prompt.ts +49 -0
- package/tools/TaskOutputTool/TaskOutputTool.tsx +584 -0
- package/tools/TaskOutputTool/constants.ts +1 -0
- package/tools/TaskStopTool/TaskStopTool.ts +131 -0
- package/tools/TaskStopTool/UI.tsx +41 -0
- package/tools/TaskStopTool/prompt.ts +8 -0
- package/tools/TaskUpdateTool/TaskUpdateTool.ts +406 -0
- package/tools/TaskUpdateTool/constants.ts +1 -0
- package/tools/TaskUpdateTool/prompt.ts +77 -0
- package/tools/TeamCreateTool/TeamCreateTool.ts +240 -0
- package/tools/TeamCreateTool/UI.tsx +6 -0
- package/tools/TeamCreateTool/constants.ts +1 -0
- package/tools/TeamCreateTool/prompt.ts +113 -0
- package/tools/TeamDeleteTool/TeamDeleteTool.ts +139 -0
- package/tools/TeamDeleteTool/UI.tsx +20 -0
- package/tools/TeamDeleteTool/constants.ts +1 -0
- package/tools/TeamDeleteTool/prompt.ts +16 -0
- package/tools/TodoWriteTool/TodoWriteTool.ts +115 -0
- package/tools/TodoWriteTool/constants.ts +1 -0
- package/tools/TodoWriteTool/prompt.ts +184 -0
- package/tools/ToolSearchTool/ToolSearchTool.ts +471 -0
- package/tools/ToolSearchTool/constants.ts +1 -0
- package/tools/ToolSearchTool/prompt.ts +121 -0
- package/tools/TungstenTool/TungstenTool.ts +4 -0
- package/tools/WebFetchTool/UI.tsx +72 -0
- package/tools/WebFetchTool/WebFetchTool.ts +318 -0
- package/tools/WebFetchTool/preapproved.ts +166 -0
- package/tools/WebFetchTool/prompt.ts +46 -0
- package/tools/WebFetchTool/utils.ts +530 -0
- package/tools/WebSearchTool/UI.tsx +101 -0
- package/tools/WebSearchTool/WebSearchTool.ts +435 -0
- package/tools/WebSearchTool/prompt.ts +34 -0
- package/tools/WorkflowTool/constants.ts +2 -0
- package/tools/XMemIngestTool/XMemIngestTool.ts +140 -0
- package/tools/XMemIngestTool/prompt.ts +13 -0
- package/tools/XMemRetrieveTool/XMemRetrieveTool.ts +177 -0
- package/tools/XMemRetrieveTool/prompt.ts +16 -0
- package/tools/XMemSearchTool/XMemSearchTool.ts +172 -0
- package/tools/XMemSearchTool/prompt.ts +11 -0
- package/tools/shared/gitOperationTracking.ts +277 -0
- package/tools/shared/spawnMultiAgent.ts +1093 -0
- package/tools/testing/TestingPermissionTool.tsx +74 -0
- package/tools/utils.ts +40 -0
- package/utils/CircularBuffer.ts +84 -0
- package/utils/Cursor.ts +1530 -0
- package/utils/QueryGuard.ts +121 -0
- package/utils/Shell.ts +474 -0
- package/utils/ShellCommand.ts +465 -0
- package/utils/abortController.ts +99 -0
- package/utils/activityManager.ts +164 -0
- package/utils/advisor.ts +145 -0
- package/utils/agentContext.ts +178 -0
- package/utils/agentId.ts +99 -0
- package/utils/agentSwarmsEnabled.ts +44 -0
- package/utils/agenticSessionSearch.ts +307 -0
- package/utils/analyzeContext.ts +1382 -0
- package/utils/ansiToPng.ts +334 -0
- package/utils/ansiToSvg.ts +272 -0
- package/utils/api.ts +718 -0
- package/utils/apiPreconnect.ts +71 -0
- package/utils/appleTerminalBackup.ts +124 -0
- package/utils/argumentSubstitution.ts +145 -0
- package/utils/array.ts +13 -0
- package/utils/asciicast.ts +239 -0
- package/utils/attachments.ts +4091 -0
- package/utils/attribution.ts +393 -0
- package/utils/auth.ts +2002 -0
- package/utils/authFileDescriptor.ts +196 -0
- package/utils/authPortable.ts +19 -0
- package/utils/autoModeDenials.ts +26 -0
- package/utils/autoRunIssue.tsx +122 -0
- package/utils/autoUpdater.ts +561 -0
- package/utils/aws.ts +74 -0
- package/utils/awsAuthStatusManager.ts +81 -0
- package/utils/axios.ts +8 -0
- package/utils/background/remote/preconditions.ts +235 -0
- package/utils/background/remote/remoteSession.ts +98 -0
- package/utils/backgroundHousekeeping.ts +94 -0
- package/utils/bash/ParsedCommand.ts +318 -0
- package/utils/bash/ShellSnapshot.ts +582 -0
- package/utils/bash/ast.ts +2679 -0
- package/utils/bash/bashParser.ts +4436 -0
- package/utils/bash/bashPipeCommand.ts +294 -0
- package/utils/bash/commands.ts +1339 -0
- package/utils/bash/heredoc.ts +733 -0
- package/utils/bash/parser.ts +230 -0
- package/utils/bash/prefix.ts +204 -0
- package/utils/bash/registry.ts +53 -0
- package/utils/bash/shellCompletion.ts +259 -0
- package/utils/bash/shellPrefix.ts +28 -0
- package/utils/bash/shellQuote.ts +304 -0
- package/utils/bash/shellQuoting.ts +128 -0
- package/utils/bash/specs/alias.ts +14 -0
- package/utils/bash/specs/index.ts +18 -0
- package/utils/bash/specs/nohup.ts +13 -0
- package/utils/bash/specs/pyright.ts +91 -0
- package/utils/bash/specs/sleep.ts +13 -0
- package/utils/bash/specs/srun.ts +31 -0
- package/utils/bash/specs/time.ts +13 -0
- package/utils/bash/specs/timeout.ts +20 -0
- package/utils/bash/treeSitterAnalysis.ts +506 -0
- package/utils/betas.ts +434 -0
- package/utils/billing.ts +78 -0
- package/utils/binaryCheck.ts +53 -0
- package/utils/browser.ts +68 -0
- package/utils/bufferedWriter.ts +100 -0
- package/utils/bundledMode.ts +22 -0
- package/utils/caCerts.ts +115 -0
- package/utils/caCertsConfig.ts +88 -0
- package/utils/cachePaths.ts +38 -0
- package/utils/classifierApprovals.ts +88 -0
- package/utils/classifierApprovalsHook.ts +17 -0
- package/utils/claudeCodeHints.ts +193 -0
- package/utils/claudeDesktop.ts +152 -0
- package/utils/claudeInChrome/chromeNativeHost.ts +527 -0
- package/utils/claudeInChrome/common.ts +540 -0
- package/utils/claudeInChrome/mcpServer.ts +292 -0
- package/utils/claudeInChrome/prompt.ts +83 -0
- package/utils/claudeInChrome/setup.ts +400 -0
- package/utils/claudeInChrome/setupPortable.ts +233 -0
- package/utils/claudeInChrome/toolRendering.tsx +262 -0
- package/utils/claudemd.ts +1479 -0
- package/utils/cleanup.ts +602 -0
- package/utils/cleanupRegistry.ts +25 -0
- package/utils/cliArgs.ts +60 -0
- package/utils/cliHighlight.ts +54 -0
- package/utils/codeIndexing.ts +206 -0
- package/utils/collapseBackgroundBashNotifications.ts +84 -0
- package/utils/collapseHookSummaries.ts +59 -0
- package/utils/collapseReadSearch.ts +1109 -0
- package/utils/collapseTeammateShutdowns.ts +55 -0
- package/utils/color-diff-mock.ts +27 -0
- package/utils/combinedAbortSignal.ts +47 -0
- package/utils/commandLifecycle.ts +21 -0
- package/utils/commitAttribution.ts +961 -0
- package/utils/completionCache.ts +166 -0
- package/utils/computerUse/appNames.ts +196 -0
- package/utils/computerUse/cleanup.ts +86 -0
- package/utils/computerUse/common.ts +61 -0
- package/utils/computerUse/computerUseLock.ts +215 -0
- package/utils/computerUse/drainRunLoop.ts +79 -0
- package/utils/computerUse/escHotkey.ts +54 -0
- package/utils/computerUse/executor.ts +658 -0
- package/utils/computerUse/gates.ts +72 -0
- package/utils/computerUse/hostAdapter.ts +69 -0
- package/utils/computerUse/inputLoader.ts +30 -0
- package/utils/computerUse/mcpServer.ts +106 -0
- package/utils/computerUse/setup.ts +53 -0
- package/utils/computerUse/swiftLoader.ts +23 -0
- package/utils/computerUse/toolRendering.tsx +125 -0
- package/utils/computerUse/wrapper.tsx +336 -0
- package/utils/concurrentSessions.ts +204 -0
- package/utils/config.ts +1817 -0
- package/utils/configConstants.ts +21 -0
- package/utils/contentArray.ts +51 -0
- package/utils/context.ts +221 -0
- package/utils/contextAnalysis.ts +272 -0
- package/utils/contextSuggestions.ts +235 -0
- package/utils/controlMessageCompat.ts +32 -0
- package/utils/conversationRecovery.ts +597 -0
- package/utils/cron.ts +308 -0
- package/utils/cronJitterConfig.ts +75 -0
- package/utils/cronScheduler.ts +565 -0
- package/utils/cronTasks.ts +458 -0
- package/utils/cronTasksLock.ts +195 -0
- package/utils/crossProjectResume.ts +75 -0
- package/utils/crypto.ts +13 -0
- package/utils/cwd.ts +32 -0
- package/utils/debug.ts +268 -0
- package/utils/debugFilter.ts +157 -0
- package/utils/deepLink/banner.ts +123 -0
- package/utils/deepLink/parseDeepLink.ts +170 -0
- package/utils/deepLink/protocolHandler.ts +136 -0
- package/utils/deepLink/registerProtocol.ts +348 -0
- package/utils/deepLink/terminalLauncher.ts +557 -0
- package/utils/deepLink/terminalPreference.ts +54 -0
- package/utils/desktopDeepLink.ts +236 -0
- package/utils/detectRepository.ts +178 -0
- package/utils/diagLogs.ts +94 -0
- package/utils/diff.ts +177 -0
- package/utils/directMemberMessage.ts +69 -0
- package/utils/displayTags.ts +51 -0
- package/utils/doctorContextWarnings.ts +265 -0
- package/utils/doctorDiagnostic.ts +625 -0
- package/utils/dxt/helpers.ts +88 -0
- package/utils/dxt/zip.ts +226 -0
- package/utils/earlyInput.ts +191 -0
- package/utils/editor.ts +183 -0
- package/utils/effort.ts +329 -0
- package/utils/embeddedTools.ts +29 -0
- package/utils/env.ts +347 -0
- package/utils/envDynamic.ts +151 -0
- package/utils/envUtils.ts +183 -0
- package/utils/envValidation.ts +38 -0
- package/utils/errorLogSink.ts +235 -0
- package/utils/errors.ts +238 -0
- package/utils/exampleCommands.ts +184 -0
- package/utils/execFileNoThrow.ts +150 -0
- package/utils/execFileNoThrowPortable.ts +89 -0
- package/utils/execSyncWrapper.ts +38 -0
- package/utils/exportRenderer.tsx +98 -0
- package/utils/extraUsage.ts +23 -0
- package/utils/fastMode.ts +532 -0
- package/utils/file.ts +584 -0
- package/utils/fileHistory.ts +1115 -0
- package/utils/fileOperationAnalytics.ts +71 -0
- package/utils/filePersistence/filePersistence.ts +287 -0
- package/utils/filePersistence/outputsScanner.ts +126 -0
- package/utils/fileRead.ts +102 -0
- package/utils/fileReadCache.ts +96 -0
- package/utils/fileStateCache.ts +142 -0
- package/utils/findExecutable.ts +17 -0
- package/utils/fingerprint.ts +76 -0
- package/utils/forkedAgent.ts +689 -0
- package/utils/format.ts +308 -0
- package/utils/formatBriefTimestamp.ts +81 -0
- package/utils/fpsTracker.ts +47 -0
- package/utils/frontmatterParser.ts +370 -0
- package/utils/fsOperations.ts +770 -0
- package/utils/fullscreen.ts +202 -0
- package/utils/generatedFiles.ts +136 -0
- package/utils/generators.ts +88 -0
- package/utils/genericProcessUtils.ts +184 -0
- package/utils/getWorktreePaths.ts +70 -0
- package/utils/getWorktreePathsPortable.ts +27 -0
- package/utils/ghPrStatus.ts +106 -0
- package/utils/git/gitConfigParser.ts +277 -0
- package/utils/git/gitFilesystem.ts +699 -0
- package/utils/git/gitignore.ts +99 -0
- package/utils/git.ts +926 -0
- package/utils/gitDiff.ts +532 -0
- package/utils/gitSettings.ts +18 -0
- package/utils/github/ghAuthStatus.ts +29 -0
- package/utils/githubRepoPathMapping.ts +162 -0
- package/utils/glob.ts +130 -0
- package/utils/gracefulShutdown.ts +529 -0
- package/utils/groupToolUses.ts +182 -0
- package/utils/handlePromptSubmit.ts +610 -0
- package/utils/hash.ts +46 -0
- package/utils/headlessProfiler.ts +178 -0
- package/utils/heapDumpService.ts +303 -0
- package/utils/heatmap.ts +198 -0
- package/utils/highlightMatch.tsx +28 -0
- package/utils/hooks/AsyncHookRegistry.ts +309 -0
- package/utils/hooks/apiQueryHookHelper.ts +141 -0
- package/utils/hooks/execAgentHook.ts +339 -0
- package/utils/hooks/execHttpHook.ts +242 -0
- package/utils/hooks/execPromptHook.ts +211 -0
- package/utils/hooks/fileChangedWatcher.ts +191 -0
- package/utils/hooks/hookEvents.ts +192 -0
- package/utils/hooks/hookHelpers.ts +83 -0
- package/utils/hooks/hooksConfigManager.ts +400 -0
- package/utils/hooks/hooksConfigSnapshot.ts +133 -0
- package/utils/hooks/hooksSettings.ts +271 -0
- package/utils/hooks/postSamplingHooks.ts +70 -0
- package/utils/hooks/registerFrontmatterHooks.ts +67 -0
- package/utils/hooks/registerSkillHooks.ts +64 -0
- package/utils/hooks/sessionHooks.ts +447 -0
- package/utils/hooks/skillImprovement.ts +267 -0
- package/utils/hooks/ssrfGuard.ts +294 -0
- package/utils/hooks.ts +5022 -0
- package/utils/horizontalScroll.ts +137 -0
- package/utils/http.ts +136 -0
- package/utils/hyperlink.ts +39 -0
- package/utils/iTermBackup.ts +73 -0
- package/utils/ide.ts +1494 -0
- package/utils/idePathConversion.ts +90 -0
- package/utils/idleTimeout.ts +53 -0
- package/utils/imagePaste.ts +416 -0
- package/utils/imageResizer.ts +880 -0
- package/utils/imageStore.ts +167 -0
- package/utils/imageValidation.ts +104 -0
- package/utils/immediateCommand.ts +15 -0
- package/utils/inProcessTeammateHelpers.ts +102 -0
- package/utils/ink.ts +26 -0
- package/utils/intl.ts +94 -0
- package/utils/jetbrains.ts +191 -0
- package/utils/json.ts +277 -0
- package/utils/jsonRead.ts +16 -0
- package/utils/keyboardShortcuts.ts +14 -0
- package/utils/lazySchema.ts +8 -0
- package/utils/listSessionsImpl.ts +454 -0
- package/utils/localInstaller.ts +162 -0
- package/utils/lockfile.ts +43 -0
- package/utils/log.ts +362 -0
- package/utils/logoV2Utils.ts +347 -0
- package/utils/mailbox.ts +73 -0
- package/utils/managedEnv.ts +199 -0
- package/utils/managedEnvConstants.ts +191 -0
- package/utils/markdown.ts +381 -0
- package/utils/markdownConfigLoader.ts +600 -0
- package/utils/mcp/dateTimeParser.ts +121 -0
- package/utils/mcp/elicitationValidation.ts +336 -0
- package/utils/mcpInstructionsDelta.ts +130 -0
- package/utils/mcpOutputStorage.ts +189 -0
- package/utils/mcpValidation.ts +208 -0
- package/utils/mcpWebSocketTransport.ts +200 -0
- package/utils/memoize.ts +269 -0
- package/utils/memory/types.ts +12 -0
- package/utils/memory/versions.ts +8 -0
- package/utils/memoryFileDetection.ts +289 -0
- package/utils/messagePredicates.ts +8 -0
- package/utils/messageQueueManager.ts +547 -0
- package/utils/messages/mappers.ts +290 -0
- package/utils/messages/systemInit.ts +96 -0
- package/utils/messages.ts +5520 -0
- package/utils/model/agent.ts +157 -0
- package/utils/model/aliases.ts +35 -0
- package/utils/model/antModels.ts +64 -0
- package/utils/model/bedrock.ts +265 -0
- package/utils/model/check1mAccess.ts +72 -0
- package/utils/model/configs.ts +158 -0
- package/utils/model/contextWindowUpgradeCheck.ts +47 -0
- package/utils/model/deprecation.ts +101 -0
- package/utils/model/model.ts +654 -0
- package/utils/model/modelAllowlist.ts +170 -0
- package/utils/model/modelCapabilities.ts +118 -0
- package/utils/model/modelOptions.ts +589 -0
- package/utils/model/modelStrings.ts +170 -0
- package/utils/model/modelSupportOverrides.ts +50 -0
- package/utils/model/providers.ts +42 -0
- package/utils/model/validateModel.ts +159 -0
- package/utils/modelCost.ts +231 -0
- package/utils/modifiers.ts +36 -0
- package/utils/mtls.ts +179 -0
- package/utils/nativeInstaller/download.ts +523 -0
- package/utils/nativeInstaller/index.ts +18 -0
- package/utils/nativeInstaller/installer.ts +1708 -0
- package/utils/nativeInstaller/packageManagers.ts +336 -0
- package/utils/nativeInstaller/pidLock.ts +433 -0
- package/utils/notebook.ts +224 -0
- package/utils/objectGroupBy.ts +18 -0
- package/utils/pasteStore.ts +104 -0
- package/utils/path.ts +155 -0
- package/utils/pdf.ts +300 -0
- package/utils/pdfUtils.ts +70 -0
- package/utils/peerAddress.ts +21 -0
- package/utils/permissions/PermissionMode.ts +141 -0
- package/utils/permissions/PermissionPromptToolResultSchema.ts +127 -0
- package/utils/permissions/PermissionResult.ts +35 -0
- package/utils/permissions/PermissionRule.ts +40 -0
- package/utils/permissions/PermissionUpdate.ts +389 -0
- package/utils/permissions/PermissionUpdateSchema.ts +78 -0
- package/utils/permissions/autoModeState.ts +39 -0
- package/utils/permissions/bashClassifier.ts +61 -0
- package/utils/permissions/bypassPermissionsKillswitch.ts +155 -0
- package/utils/permissions/classifierDecision.ts +98 -0
- package/utils/permissions/classifierShared.ts +39 -0
- package/utils/permissions/dangerousPatterns.ts +80 -0
- package/utils/permissions/denialTracking.ts +45 -0
- package/utils/permissions/filesystem.ts +1777 -0
- package/utils/permissions/getNextPermissionMode.ts +101 -0
- package/utils/permissions/pathValidation.ts +485 -0
- package/utils/permissions/permissionExplainer.ts +250 -0
- package/utils/permissions/permissionRuleParser.ts +198 -0
- package/utils/permissions/permissionSetup.ts +1532 -0
- package/utils/permissions/permissions.ts +1486 -0
- package/utils/permissions/permissionsLoader.ts +296 -0
- package/utils/permissions/shadowedRuleDetection.ts +234 -0
- package/utils/permissions/shellRuleMatching.ts +228 -0
- package/utils/permissions/yoloClassifier.ts +1495 -0
- package/utils/planModeV2.ts +95 -0
- package/utils/plans.ts +397 -0
- package/utils/platform.ts +150 -0
- package/utils/plugins/addDirPluginSettings.ts +71 -0
- package/utils/plugins/cacheUtils.ts +196 -0
- package/utils/plugins/dependencyResolver.ts +305 -0
- package/utils/plugins/fetchTelemetry.ts +135 -0
- package/utils/plugins/gitAvailability.ts +69 -0
- package/utils/plugins/headlessPluginInstall.ts +174 -0
- package/utils/plugins/hintRecommendation.ts +164 -0
- package/utils/plugins/installCounts.ts +292 -0
- package/utils/plugins/installedPluginsManager.ts +1268 -0
- package/utils/plugins/loadPluginAgents.ts +348 -0
- package/utils/plugins/loadPluginCommands.ts +946 -0
- package/utils/plugins/loadPluginHooks.ts +287 -0
- package/utils/plugins/loadPluginOutputStyles.ts +178 -0
- package/utils/plugins/lspPluginIntegration.ts +387 -0
- package/utils/plugins/lspRecommendation.ts +374 -0
- package/utils/plugins/managedPlugins.ts +27 -0
- package/utils/plugins/marketplaceHelpers.ts +592 -0
- package/utils/plugins/marketplaceManager.ts +2643 -0
- package/utils/plugins/mcpPluginIntegration.ts +634 -0
- package/utils/plugins/mcpbHandler.ts +968 -0
- package/utils/plugins/officialMarketplace.ts +25 -0
- package/utils/plugins/officialMarketplaceGcs.ts +216 -0
- package/utils/plugins/officialMarketplaceStartupCheck.ts +439 -0
- package/utils/plugins/orphanedPluginFilter.ts +114 -0
- package/utils/plugins/parseMarketplaceInput.ts +162 -0
- package/utils/plugins/performStartupChecks.tsx +70 -0
- package/utils/plugins/pluginAutoupdate.ts +284 -0
- package/utils/plugins/pluginBlocklist.ts +127 -0
- package/utils/plugins/pluginDirectories.ts +178 -0
- package/utils/plugins/pluginFlagging.ts +208 -0
- package/utils/plugins/pluginIdentifier.ts +123 -0
- package/utils/plugins/pluginInstallationHelpers.ts +595 -0
- package/utils/plugins/pluginLoader.ts +3302 -0
- package/utils/plugins/pluginOptionsStorage.ts +400 -0
- package/utils/plugins/pluginPolicy.ts +20 -0
- package/utils/plugins/pluginStartupCheck.ts +341 -0
- package/utils/plugins/pluginVersioning.ts +157 -0
- package/utils/plugins/reconciler.ts +265 -0
- package/utils/plugins/refresh.ts +215 -0
- package/utils/plugins/schemas.ts +1681 -0
- package/utils/plugins/validatePlugin.ts +903 -0
- package/utils/plugins/walkPluginMarkdown.ts +69 -0
- package/utils/plugins/zipCache.ts +406 -0
- package/utils/plugins/zipCacheAdapters.ts +164 -0
- package/utils/powershell/dangerousCmdlets.ts +185 -0
- package/utils/powershell/parser.ts +1804 -0
- package/utils/powershell/staticPrefix.ts +316 -0
- package/utils/preflightChecks.tsx +151 -0
- package/utils/privacyLevel.ts +55 -0
- package/utils/process.ts +68 -0
- package/utils/processUserInput/processBashCommand.tsx +140 -0
- package/utils/processUserInput/processSlashCommand.tsx +922 -0
- package/utils/processUserInput/processTextPrompt.ts +100 -0
- package/utils/processUserInput/processUserInput.ts +605 -0
- package/utils/profilerBase.ts +46 -0
- package/utils/promptCategory.ts +49 -0
- package/utils/promptEditor.ts +188 -0
- package/utils/promptShellExecution.ts +183 -0
- package/utils/proxy.ts +426 -0
- package/utils/queryContext.ts +179 -0
- package/utils/queryHelpers.ts +552 -0
- package/utils/queryProfiler.ts +301 -0
- package/utils/queueProcessor.ts +95 -0
- package/utils/readEditContext.ts +227 -0
- package/utils/readFileInRange.ts +383 -0
- package/utils/releaseNotes.ts +360 -0
- package/utils/renderOptions.ts +113 -0
- package/utils/ripgrep.ts +679 -0
- package/utils/sandbox/sandbox-adapter.ts +985 -0
- package/utils/sandbox/sandbox-ui-utils.ts +12 -0
- package/utils/sanitization.ts +91 -0
- package/utils/screenshotClipboard.ts +121 -0
- package/utils/sdkEventQueue.ts +134 -0
- package/utils/secureStorage/fallbackStorage.ts +70 -0
- package/utils/secureStorage/index.ts +17 -0
- package/utils/secureStorage/keychainPrefetch.ts +116 -0
- package/utils/secureStorage/macOsKeychainHelpers.ts +111 -0
- package/utils/secureStorage/macOsKeychainStorage.ts +231 -0
- package/utils/secureStorage/plainTextStorage.ts +84 -0
- package/utils/semanticBoolean.ts +29 -0
- package/utils/semanticNumber.ts +36 -0
- package/utils/semver.ts +59 -0
- package/utils/sequential.ts +56 -0
- package/utils/sessionActivity.ts +133 -0
- package/utils/sessionEnvVars.ts +22 -0
- package/utils/sessionEnvironment.ts +166 -0
- package/utils/sessionFileAccessHooks.ts +250 -0
- package/utils/sessionIngressAuth.ts +140 -0
- package/utils/sessionRestore.ts +551 -0
- package/utils/sessionStart.ts +232 -0
- package/utils/sessionState.ts +150 -0
- package/utils/sessionStorage.ts +5105 -0
- package/utils/sessionStoragePortable.ts +793 -0
- package/utils/sessionTitle.ts +129 -0
- package/utils/sessionUrl.ts +64 -0
- package/utils/set.ts +53 -0
- package/utils/settings/allErrors.ts +32 -0
- package/utils/settings/applySettingsChange.ts +92 -0
- package/utils/settings/changeDetector.ts +488 -0
- package/utils/settings/constants.ts +202 -0
- package/utils/settings/internalWrites.ts +37 -0
- package/utils/settings/managedPath.ts +34 -0
- package/utils/settings/mdm/constants.ts +81 -0
- package/utils/settings/mdm/rawRead.ts +130 -0
- package/utils/settings/mdm/settings.ts +316 -0
- package/utils/settings/permissionValidation.ts +262 -0
- package/utils/settings/pluginOnlyPolicy.ts +60 -0
- package/utils/settings/schemaOutput.ts +8 -0
- package/utils/settings/settings.ts +1015 -0
- package/utils/settings/settingsCache.ts +80 -0
- package/utils/settings/toolValidationConfig.ts +103 -0
- package/utils/settings/types.ts +1149 -0
- package/utils/settings/validateEditTool.ts +45 -0
- package/utils/settings/validation.ts +265 -0
- package/utils/settings/validationTips.ts +164 -0
- package/utils/shell/bashProvider.ts +255 -0
- package/utils/shell/outputLimits.ts +14 -0
- package/utils/shell/powershellDetection.ts +107 -0
- package/utils/shell/powershellProvider.ts +123 -0
- package/utils/shell/prefix.ts +367 -0
- package/utils/shell/readOnlyCommandValidation.ts +1893 -0
- package/utils/shell/resolveDefaultShell.ts +14 -0
- package/utils/shell/shellProvider.ts +33 -0
- package/utils/shell/shellToolUtils.ts +22 -0
- package/utils/shell/specPrefix.ts +241 -0
- package/utils/shellConfig.ts +167 -0
- package/utils/sideQuery.ts +222 -0
- package/utils/sideQuestion.ts +155 -0
- package/utils/signal.ts +43 -0
- package/utils/sinks.ts +16 -0
- package/utils/skills/skillChangeDetector.ts +311 -0
- package/utils/slashCommandParsing.ts +60 -0
- package/utils/sleep.ts +84 -0
- package/utils/sliceAnsi.ts +91 -0
- package/utils/slowOperations.ts +286 -0
- package/utils/standaloneAgent.ts +23 -0
- package/utils/startupProfiler.ts +194 -0
- package/utils/staticRender.tsx +116 -0
- package/utils/stats.ts +1061 -0
- package/utils/statsCache.ts +434 -0
- package/utils/status.tsx +362 -0
- package/utils/statusNoticeDefinitions.tsx +198 -0
- package/utils/statusNoticeHelpers.ts +20 -0
- package/utils/stream.ts +76 -0
- package/utils/streamJsonStdoutGuard.ts +123 -0
- package/utils/streamlinedTransform.ts +201 -0
- package/utils/stringUtils.ts +235 -0
- package/utils/subprocessEnv.ts +99 -0
- package/utils/suggestions/commandSuggestions.ts +567 -0
- package/utils/suggestions/directoryCompletion.ts +263 -0
- package/utils/suggestions/shellHistoryCompletion.ts +119 -0
- package/utils/suggestions/skillUsageTracking.ts +55 -0
- package/utils/suggestions/slackChannelSuggestions.ts +209 -0
- package/utils/swarm/It2SetupPrompt.tsx +380 -0
- package/utils/swarm/backends/ITermBackend.ts +370 -0
- package/utils/swarm/backends/InProcessBackend.ts +339 -0
- package/utils/swarm/backends/PaneBackendExecutor.ts +354 -0
- package/utils/swarm/backends/TmuxBackend.ts +764 -0
- package/utils/swarm/backends/detection.ts +128 -0
- package/utils/swarm/backends/it2Setup.ts +245 -0
- package/utils/swarm/backends/registry.ts +464 -0
- package/utils/swarm/backends/teammateModeSnapshot.ts +87 -0
- package/utils/swarm/backends/types.ts +311 -0
- package/utils/swarm/constants.ts +33 -0
- package/utils/swarm/inProcessRunner.ts +1552 -0
- package/utils/swarm/leaderPermissionBridge.ts +54 -0
- package/utils/swarm/permissionSync.ts +928 -0
- package/utils/swarm/reconnection.ts +119 -0
- package/utils/swarm/spawnInProcess.ts +328 -0
- package/utils/swarm/spawnUtils.ts +146 -0
- package/utils/swarm/teamHelpers.ts +683 -0
- package/utils/swarm/teammateInit.ts +129 -0
- package/utils/swarm/teammateLayoutManager.ts +107 -0
- package/utils/swarm/teammateModel.ts +10 -0
- package/utils/swarm/teammatePromptAddendum.ts +18 -0
- package/utils/systemDirectories.ts +74 -0
- package/utils/systemPrompt.ts +123 -0
- package/utils/systemPromptType.ts +14 -0
- package/utils/systemTheme.ts +119 -0
- package/utils/taggedId.ts +54 -0
- package/utils/task/TaskOutput.ts +390 -0
- package/utils/task/diskOutput.ts +451 -0
- package/utils/task/framework.ts +308 -0
- package/utils/task/outputFormatting.ts +38 -0
- package/utils/task/sdkProgress.ts +36 -0
- package/utils/tasks.ts +862 -0
- package/utils/teamDiscovery.ts +81 -0
- package/utils/teamMemoryOps.ts +88 -0
- package/utils/teammate.ts +292 -0
- package/utils/teammateContext.ts +96 -0
- package/utils/teammateMailbox.ts +1183 -0
- package/utils/telemetry/betaSessionTracing.ts +491 -0
- package/utils/telemetry/bigqueryExporter.ts +252 -0
- package/utils/telemetry/events.ts +75 -0
- package/utils/telemetry/instrumentation.ts +825 -0
- package/utils/telemetry/logger.ts +26 -0
- package/utils/telemetry/perfettoTracing.ts +1120 -0
- package/utils/telemetry/pluginTelemetry.ts +289 -0
- package/utils/telemetry/sessionTracing.ts +927 -0
- package/utils/telemetry/skillLoadedEvent.ts +39 -0
- package/utils/telemetryAttributes.ts +71 -0
- package/utils/teleport/api.ts +466 -0
- package/utils/teleport/environmentSelection.ts +77 -0
- package/utils/teleport/environments.ts +120 -0
- package/utils/teleport/gitBundle.ts +292 -0
- package/utils/teleport.tsx +1226 -0
- package/utils/tempfile.ts +31 -0
- package/utils/terminal.ts +131 -0
- package/utils/terminalPanel.ts +191 -0
- package/utils/textHighlighting.ts +166 -0
- package/utils/theme.ts +639 -0
- package/utils/thinking.ts +162 -0
- package/utils/timeouts.ts +39 -0
- package/utils/tmuxSocket.ts +427 -0
- package/utils/todo/types.ts +18 -0
- package/utils/tokenBudget.ts +73 -0
- package/utils/tokens.ts +261 -0
- package/utils/toolErrors.ts +132 -0
- package/utils/toolPool.ts +79 -0
- package/utils/toolResultStorage.ts +1040 -0
- package/utils/toolSchemaCache.ts +26 -0
- package/utils/toolSearch.ts +756 -0
- package/utils/transcriptSearch.ts +202 -0
- package/utils/treeify.ts +170 -0
- package/utils/truncate.ts +179 -0
- package/utils/ultraplan/ccrSession.ts +349 -0
- package/utils/ultraplan/keyword.ts +127 -0
- package/utils/ultraplan/prompt.txt +1 -0
- package/utils/unaryLogging.ts +39 -0
- package/utils/undercover.ts +89 -0
- package/utils/user.ts +194 -0
- package/utils/userAgent.ts +10 -0
- package/utils/userPromptKeywords.ts +27 -0
- package/utils/uuid.ts +27 -0
- package/utils/warningHandler.ts +121 -0
- package/utils/which.ts +82 -0
- package/utils/windowsPaths.ts +173 -0
- package/utils/withResolvers.ts +13 -0
- package/utils/words.ts +800 -0
- package/utils/workloadContext.ts +57 -0
- package/utils/worktree.ts +1519 -0
- package/utils/worktreeModeEnabled.ts +11 -0
- package/utils/xdg.ts +65 -0
- package/utils/xmem.ts +6 -0
- package/utils/xml.ts +16 -0
- package/utils/yaml.ts +15 -0
- package/utils/zodToJsonSchema.ts +23 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swarm Reconnection Module
|
|
3
|
+
*
|
|
4
|
+
* Handles initialization of swarm context for teammates.
|
|
5
|
+
* - Fresh spawns: Initialize from CLI args (set in main.tsx via dynamicTeamContext)
|
|
6
|
+
* - Resumed sessions: Initialize from teamName/agentName stored in the transcript
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { AppState } from '../../state/AppState.js'
|
|
10
|
+
import { logForDebugging } from '../debug.js'
|
|
11
|
+
import { logError } from '../log.js'
|
|
12
|
+
import { getDynamicTeamContext } from '../teammate.js'
|
|
13
|
+
import { getTeamFilePath, readTeamFile } from './teamHelpers.js'
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Computes the initial teamContext for AppState.
|
|
17
|
+
*
|
|
18
|
+
* This is called synchronously in main.tsx to compute the teamContext
|
|
19
|
+
* BEFORE the first render, eliminating the need for useEffect workarounds.
|
|
20
|
+
*
|
|
21
|
+
* @returns The teamContext object to include in initialState, or undefined if not a teammate
|
|
22
|
+
*/
|
|
23
|
+
export function computeInitialTeamContext():
|
|
24
|
+
| AppState['teamContext']
|
|
25
|
+
| undefined {
|
|
26
|
+
// dynamicTeamContext is set in main.tsx from CLI args
|
|
27
|
+
const context = getDynamicTeamContext()
|
|
28
|
+
|
|
29
|
+
if (!context?.teamName || !context?.agentName) {
|
|
30
|
+
logForDebugging(
|
|
31
|
+
'[Reconnection] computeInitialTeamContext: No teammate context set (not a teammate)',
|
|
32
|
+
)
|
|
33
|
+
return undefined
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const { teamName, agentId, agentName } = context
|
|
37
|
+
|
|
38
|
+
// Read team file to get lead agent ID
|
|
39
|
+
const teamFile = readTeamFile(teamName)
|
|
40
|
+
if (!teamFile) {
|
|
41
|
+
logError(
|
|
42
|
+
new Error(
|
|
43
|
+
`[computeInitialTeamContext] Could not read team file for ${teamName}`,
|
|
44
|
+
),
|
|
45
|
+
)
|
|
46
|
+
return undefined
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const teamFilePath = getTeamFilePath(teamName)
|
|
50
|
+
|
|
51
|
+
const isLeader = !agentId
|
|
52
|
+
|
|
53
|
+
logForDebugging(
|
|
54
|
+
`[Reconnection] Computed initial team context for ${isLeader ? 'leader' : `teammate ${agentName}`} in team ${teamName}`,
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
teamName,
|
|
59
|
+
teamFilePath,
|
|
60
|
+
leadAgentId: teamFile.leadAgentId,
|
|
61
|
+
selfAgentId: agentId,
|
|
62
|
+
selfAgentName: agentName,
|
|
63
|
+
isLeader,
|
|
64
|
+
teammates: {},
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Initialize teammate context from a resumed session.
|
|
70
|
+
*
|
|
71
|
+
* This is called when resuming a session that has teamName/agentName stored
|
|
72
|
+
* in the transcript. It sets up teamContext in AppState so that heartbeat
|
|
73
|
+
* and other swarm features work correctly.
|
|
74
|
+
*/
|
|
75
|
+
export function initializeTeammateContextFromSession(
|
|
76
|
+
setAppState: (updater: (prev: AppState) => AppState) => void,
|
|
77
|
+
teamName: string,
|
|
78
|
+
agentName: string,
|
|
79
|
+
): void {
|
|
80
|
+
// Read team file to get lead agent ID
|
|
81
|
+
const teamFile = readTeamFile(teamName)
|
|
82
|
+
if (!teamFile) {
|
|
83
|
+
logError(
|
|
84
|
+
new Error(
|
|
85
|
+
`[initializeTeammateContextFromSession] Could not read team file for ${teamName} (agent: ${agentName})`,
|
|
86
|
+
),
|
|
87
|
+
)
|
|
88
|
+
return
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Find the member in the team file to get their agentId
|
|
92
|
+
const member = teamFile.members.find(m => m.name === agentName)
|
|
93
|
+
if (!member) {
|
|
94
|
+
logForDebugging(
|
|
95
|
+
`[Reconnection] Member ${agentName} not found in team ${teamName} - may have been removed`,
|
|
96
|
+
)
|
|
97
|
+
}
|
|
98
|
+
const agentId = member?.agentId
|
|
99
|
+
|
|
100
|
+
const teamFilePath = getTeamFilePath(teamName)
|
|
101
|
+
|
|
102
|
+
// Set teamContext in AppState
|
|
103
|
+
setAppState(prev => ({
|
|
104
|
+
...prev,
|
|
105
|
+
teamContext: {
|
|
106
|
+
teamName,
|
|
107
|
+
teamFilePath,
|
|
108
|
+
leadAgentId: teamFile.leadAgentId,
|
|
109
|
+
selfAgentId: agentId,
|
|
110
|
+
selfAgentName: agentName,
|
|
111
|
+
isLeader: false,
|
|
112
|
+
teammates: {},
|
|
113
|
+
},
|
|
114
|
+
}))
|
|
115
|
+
|
|
116
|
+
logForDebugging(
|
|
117
|
+
`[Reconnection] Initialized agent context from session for ${agentName} in team ${teamName}`,
|
|
118
|
+
)
|
|
119
|
+
}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process teammate spawning
|
|
3
|
+
*
|
|
4
|
+
* Creates and registers an in-process teammate task. Unlike process-based
|
|
5
|
+
* teammates (tmux/iTerm2), in-process teammates run in the same Node.js
|
|
6
|
+
* process using AsyncLocalStorage for context isolation.
|
|
7
|
+
*
|
|
8
|
+
* The actual agent execution loop is handled by InProcessTeammateTask
|
|
9
|
+
* component (Task #14). This module handles:
|
|
10
|
+
* 1. Creating TeammateContext
|
|
11
|
+
* 2. Creating linked AbortController
|
|
12
|
+
* 3. Registering InProcessTeammateTaskState in AppState
|
|
13
|
+
* 4. Returning spawn result for backend
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import sample from 'lodash-es/sample.js'
|
|
17
|
+
import { getSessionId } from '../../bootstrap/state.js'
|
|
18
|
+
import { getSpinnerVerbs } from '../../constants/spinnerVerbs.js'
|
|
19
|
+
import { TURN_COMPLETION_VERBS } from '../../constants/turnCompletionVerbs.js'
|
|
20
|
+
import type { AppState } from '../../state/AppState.js'
|
|
21
|
+
import { createTaskStateBase, generateTaskId } from '../../Task.js'
|
|
22
|
+
import type {
|
|
23
|
+
InProcessTeammateTaskState,
|
|
24
|
+
TeammateIdentity,
|
|
25
|
+
} from '../../tasks/InProcessTeammateTask/types.js'
|
|
26
|
+
import { createAbortController } from '../abortController.js'
|
|
27
|
+
import { formatAgentId } from '../agentId.js'
|
|
28
|
+
import { registerCleanup } from '../cleanupRegistry.js'
|
|
29
|
+
import { logForDebugging } from '../debug.js'
|
|
30
|
+
import { emitTaskTerminatedSdk } from '../sdkEventQueue.js'
|
|
31
|
+
import { evictTaskOutput } from '../task/diskOutput.js'
|
|
32
|
+
import {
|
|
33
|
+
evictTerminalTask,
|
|
34
|
+
registerTask,
|
|
35
|
+
STOPPED_DISPLAY_MS,
|
|
36
|
+
} from '../task/framework.js'
|
|
37
|
+
import { createTeammateContext } from '../teammateContext.js'
|
|
38
|
+
import {
|
|
39
|
+
isPerfettoTracingEnabled,
|
|
40
|
+
registerAgent as registerPerfettoAgent,
|
|
41
|
+
unregisterAgent as unregisterPerfettoAgent,
|
|
42
|
+
} from '../telemetry/perfettoTracing.js'
|
|
43
|
+
import { removeMemberByAgentId } from './teamHelpers.js'
|
|
44
|
+
|
|
45
|
+
type SetAppStateFn = (updater: (prev: AppState) => AppState) => void
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Minimal context required for spawning an in-process teammate.
|
|
49
|
+
* This is a subset of ToolUseContext - only what spawnInProcessTeammate actually uses.
|
|
50
|
+
*/
|
|
51
|
+
export type SpawnContext = {
|
|
52
|
+
setAppState: SetAppStateFn
|
|
53
|
+
toolUseId?: string
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Configuration for spawning an in-process teammate.
|
|
58
|
+
*/
|
|
59
|
+
export type InProcessSpawnConfig = {
|
|
60
|
+
/** Display name for the teammate, e.g., "researcher" */
|
|
61
|
+
name: string
|
|
62
|
+
/** Team this teammate belongs to */
|
|
63
|
+
teamName: string
|
|
64
|
+
/** Initial prompt/task for the teammate */
|
|
65
|
+
prompt: string
|
|
66
|
+
/** Optional UI color for the teammate */
|
|
67
|
+
color?: string
|
|
68
|
+
/** Whether teammate must enter plan mode before implementing */
|
|
69
|
+
planModeRequired: boolean
|
|
70
|
+
/** Optional model override for this teammate */
|
|
71
|
+
model?: string
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Result from spawning an in-process teammate.
|
|
76
|
+
*/
|
|
77
|
+
export type InProcessSpawnOutput = {
|
|
78
|
+
/** Whether spawn was successful */
|
|
79
|
+
success: boolean
|
|
80
|
+
/** Full agent ID (format: "name@team") */
|
|
81
|
+
agentId: string
|
|
82
|
+
/** Task ID for tracking in AppState */
|
|
83
|
+
taskId?: string
|
|
84
|
+
/** AbortController for this teammate (linked to parent) */
|
|
85
|
+
abortController?: AbortController
|
|
86
|
+
/** Teammate context for AsyncLocalStorage */
|
|
87
|
+
teammateContext?: ReturnType<typeof createTeammateContext>
|
|
88
|
+
/** Error message if spawn failed */
|
|
89
|
+
error?: string
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Spawns an in-process teammate.
|
|
94
|
+
*
|
|
95
|
+
* Creates the teammate's context, registers the task in AppState, and returns
|
|
96
|
+
* the spawn result. The actual agent execution is driven by the
|
|
97
|
+
* InProcessTeammateTask component which uses runWithTeammateContext() to
|
|
98
|
+
* execute the agent loop with proper identity isolation.
|
|
99
|
+
*
|
|
100
|
+
* @param config - Spawn configuration
|
|
101
|
+
* @param context - Context with setAppState for registering task
|
|
102
|
+
* @returns Spawn result with teammate info
|
|
103
|
+
*/
|
|
104
|
+
export async function spawnInProcessTeammate(
|
|
105
|
+
config: InProcessSpawnConfig,
|
|
106
|
+
context: SpawnContext,
|
|
107
|
+
): Promise<InProcessSpawnOutput> {
|
|
108
|
+
const { name, teamName, prompt, color, planModeRequired, model } = config
|
|
109
|
+
const { setAppState } = context
|
|
110
|
+
|
|
111
|
+
// Generate deterministic agent ID
|
|
112
|
+
const agentId = formatAgentId(name, teamName)
|
|
113
|
+
const taskId = generateTaskId('in_process_teammate')
|
|
114
|
+
|
|
115
|
+
logForDebugging(
|
|
116
|
+
`[spawnInProcessTeammate] Spawning ${agentId} (taskId: ${taskId})`,
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
try {
|
|
120
|
+
// Create independent AbortController for this teammate
|
|
121
|
+
// Teammates should not be aborted when the leader's query is interrupted
|
|
122
|
+
const abortController = createAbortController()
|
|
123
|
+
|
|
124
|
+
// Get parent session ID for transcript correlation
|
|
125
|
+
const parentSessionId = getSessionId()
|
|
126
|
+
|
|
127
|
+
// Create teammate identity (stored as plain data in AppState)
|
|
128
|
+
const identity: TeammateIdentity = {
|
|
129
|
+
agentId,
|
|
130
|
+
agentName: name,
|
|
131
|
+
teamName,
|
|
132
|
+
color,
|
|
133
|
+
planModeRequired,
|
|
134
|
+
parentSessionId,
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Create teammate context for AsyncLocalStorage
|
|
138
|
+
// This will be used by runWithTeammateContext() during agent execution
|
|
139
|
+
const teammateContext = createTeammateContext({
|
|
140
|
+
agentId,
|
|
141
|
+
agentName: name,
|
|
142
|
+
teamName,
|
|
143
|
+
color,
|
|
144
|
+
planModeRequired,
|
|
145
|
+
parentSessionId,
|
|
146
|
+
abortController,
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
// Register agent in Perfetto trace for hierarchy visualization
|
|
150
|
+
if (isPerfettoTracingEnabled()) {
|
|
151
|
+
registerPerfettoAgent(agentId, name, parentSessionId)
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Create task state
|
|
155
|
+
const description = `${name}: ${prompt.substring(0, 50)}${prompt.length > 50 ? '...' : ''}`
|
|
156
|
+
|
|
157
|
+
const taskState: InProcessTeammateTaskState = {
|
|
158
|
+
...createTaskStateBase(
|
|
159
|
+
taskId,
|
|
160
|
+
'in_process_teammate',
|
|
161
|
+
description,
|
|
162
|
+
context.toolUseId,
|
|
163
|
+
),
|
|
164
|
+
type: 'in_process_teammate',
|
|
165
|
+
status: 'running',
|
|
166
|
+
identity,
|
|
167
|
+
prompt,
|
|
168
|
+
model,
|
|
169
|
+
abortController,
|
|
170
|
+
awaitingPlanApproval: false,
|
|
171
|
+
spinnerVerb: sample(getSpinnerVerbs()),
|
|
172
|
+
pastTenseVerb: sample(TURN_COMPLETION_VERBS),
|
|
173
|
+
permissionMode: planModeRequired ? 'plan' : 'default',
|
|
174
|
+
isIdle: false,
|
|
175
|
+
shutdownRequested: false,
|
|
176
|
+
lastReportedToolCount: 0,
|
|
177
|
+
lastReportedTokenCount: 0,
|
|
178
|
+
pendingUserMessages: [],
|
|
179
|
+
messages: [], // Initialize to empty array so getDisplayedMessages works immediately
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Register cleanup handler for graceful shutdown
|
|
183
|
+
const unregisterCleanup = registerCleanup(async () => {
|
|
184
|
+
logForDebugging(`[spawnInProcessTeammate] Cleanup called for ${agentId}`)
|
|
185
|
+
abortController.abort()
|
|
186
|
+
// Task state will be updated by the execution loop when it detects abort
|
|
187
|
+
})
|
|
188
|
+
taskState.unregisterCleanup = unregisterCleanup
|
|
189
|
+
|
|
190
|
+
// Register task in AppState
|
|
191
|
+
registerTask(taskState, setAppState)
|
|
192
|
+
|
|
193
|
+
logForDebugging(
|
|
194
|
+
`[spawnInProcessTeammate] Registered ${agentId} in AppState`,
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
return {
|
|
198
|
+
success: true,
|
|
199
|
+
agentId,
|
|
200
|
+
taskId,
|
|
201
|
+
abortController,
|
|
202
|
+
teammateContext,
|
|
203
|
+
}
|
|
204
|
+
} catch (error) {
|
|
205
|
+
const errorMessage =
|
|
206
|
+
error instanceof Error ? error.message : 'Unknown error during spawn'
|
|
207
|
+
logForDebugging(
|
|
208
|
+
`[spawnInProcessTeammate] Failed to spawn ${agentId}: ${errorMessage}`,
|
|
209
|
+
)
|
|
210
|
+
return {
|
|
211
|
+
success: false,
|
|
212
|
+
agentId,
|
|
213
|
+
error: errorMessage,
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Kills an in-process teammate by aborting its controller.
|
|
220
|
+
*
|
|
221
|
+
* Note: This is the implementation called by InProcessBackend.kill().
|
|
222
|
+
*
|
|
223
|
+
* @param taskId - Task ID of the teammate to kill
|
|
224
|
+
* @param setAppState - AppState setter
|
|
225
|
+
* @returns true if killed successfully
|
|
226
|
+
*/
|
|
227
|
+
export function killInProcessTeammate(
|
|
228
|
+
taskId: string,
|
|
229
|
+
setAppState: SetAppStateFn,
|
|
230
|
+
): boolean {
|
|
231
|
+
let killed = false
|
|
232
|
+
let teamName: string | null = null
|
|
233
|
+
let agentId: string | null = null
|
|
234
|
+
let toolUseId: string | undefined
|
|
235
|
+
let description: string | undefined
|
|
236
|
+
|
|
237
|
+
setAppState((prev: AppState) => {
|
|
238
|
+
const task = prev.tasks[taskId]
|
|
239
|
+
if (!task || task.type !== 'in_process_teammate') {
|
|
240
|
+
return prev
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
const teammateTask = task as InProcessTeammateTaskState
|
|
244
|
+
|
|
245
|
+
if (teammateTask.status !== 'running') {
|
|
246
|
+
return prev
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Capture identity for cleanup after state update
|
|
250
|
+
teamName = teammateTask.identity.teamName
|
|
251
|
+
agentId = teammateTask.identity.agentId
|
|
252
|
+
toolUseId = teammateTask.toolUseId
|
|
253
|
+
description = teammateTask.description
|
|
254
|
+
|
|
255
|
+
// Abort the controller to stop execution
|
|
256
|
+
teammateTask.abortController?.abort()
|
|
257
|
+
|
|
258
|
+
// Call cleanup handler
|
|
259
|
+
teammateTask.unregisterCleanup?.()
|
|
260
|
+
|
|
261
|
+
// Update task state and remove from teamContext.teammates
|
|
262
|
+
killed = true
|
|
263
|
+
|
|
264
|
+
// Call pending idle callbacks to unblock any waiters (e.g., engine.waitForIdle)
|
|
265
|
+
teammateTask.onIdleCallbacks?.forEach(cb => cb())
|
|
266
|
+
|
|
267
|
+
// Remove from teamContext.teammates using the agentId
|
|
268
|
+
let updatedTeamContext = prev.teamContext
|
|
269
|
+
if (prev.teamContext && prev.teamContext.teammates && agentId) {
|
|
270
|
+
const { [agentId]: _, ...remainingTeammates } = prev.teamContext.teammates
|
|
271
|
+
updatedTeamContext = {
|
|
272
|
+
...prev.teamContext,
|
|
273
|
+
teammates: remainingTeammates,
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
return {
|
|
278
|
+
...prev,
|
|
279
|
+
teamContext: updatedTeamContext,
|
|
280
|
+
tasks: {
|
|
281
|
+
...prev.tasks,
|
|
282
|
+
[taskId]: {
|
|
283
|
+
...teammateTask,
|
|
284
|
+
status: 'killed' as const,
|
|
285
|
+
notified: true,
|
|
286
|
+
endTime: Date.now(),
|
|
287
|
+
onIdleCallbacks: [], // Clear callbacks to prevent stale references
|
|
288
|
+
messages: teammateTask.messages?.length
|
|
289
|
+
? [teammateTask.messages[teammateTask.messages.length - 1]!]
|
|
290
|
+
: undefined,
|
|
291
|
+
pendingUserMessages: [],
|
|
292
|
+
inProgressToolUseIDs: undefined,
|
|
293
|
+
abortController: undefined,
|
|
294
|
+
unregisterCleanup: undefined,
|
|
295
|
+
currentWorkAbortController: undefined,
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
}
|
|
299
|
+
})
|
|
300
|
+
|
|
301
|
+
// Remove from team file (outside state updater to avoid file I/O in callback)
|
|
302
|
+
if (teamName && agentId) {
|
|
303
|
+
removeMemberByAgentId(teamName, agentId)
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
if (killed) {
|
|
307
|
+
void evictTaskOutput(taskId)
|
|
308
|
+
// notified:true was pre-set so no XML notification fires; close the SDK
|
|
309
|
+
// task_started bookend directly. The in-process runner's own
|
|
310
|
+
// completion/failure emit guards on status==='running' so it won't
|
|
311
|
+
// double-emit after seeing status:killed.
|
|
312
|
+
emitTaskTerminatedSdk(taskId, 'stopped', {
|
|
313
|
+
toolUseId,
|
|
314
|
+
summary: description,
|
|
315
|
+
})
|
|
316
|
+
setTimeout(
|
|
317
|
+
evictTerminalTask.bind(null, taskId, setAppState),
|
|
318
|
+
STOPPED_DISPLAY_MS,
|
|
319
|
+
)
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// Release perfetto agent registry entry
|
|
323
|
+
if (agentId) {
|
|
324
|
+
unregisterPerfettoAgent(agentId)
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
return killed
|
|
328
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for spawning teammates across different backends.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
getChromeFlagOverride,
|
|
7
|
+
getFlagSettingsPath,
|
|
8
|
+
getInlinePlugins,
|
|
9
|
+
getMainLoopModelOverride,
|
|
10
|
+
getSessionBypassPermissionsMode,
|
|
11
|
+
} from '../../bootstrap/state.js'
|
|
12
|
+
import { quote } from '../bash/shellQuote.js'
|
|
13
|
+
import { isInBundledMode } from '../bundledMode.js'
|
|
14
|
+
import type { PermissionMode } from '../permissions/PermissionMode.js'
|
|
15
|
+
import { getTeammateModeFromSnapshot } from './backends/teammateModeSnapshot.js'
|
|
16
|
+
import { TEAMMATE_COMMAND_ENV_VAR } from './constants.js'
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Gets the command to use for spawning teammate processes.
|
|
20
|
+
* Uses TEAMMATE_COMMAND_ENV_VAR if set, otherwise falls back to the
|
|
21
|
+
* current process executable path.
|
|
22
|
+
*/
|
|
23
|
+
export function getTeammateCommand(): string {
|
|
24
|
+
if (process.env[TEAMMATE_COMMAND_ENV_VAR]) {
|
|
25
|
+
return process.env[TEAMMATE_COMMAND_ENV_VAR]
|
|
26
|
+
}
|
|
27
|
+
return isInBundledMode() ? process.execPath : process.argv[1]!
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Builds CLI flags to propagate from the current session to spawned teammates.
|
|
32
|
+
* This ensures teammates inherit important settings like permission mode,
|
|
33
|
+
* model selection, and plugin configuration from their parent.
|
|
34
|
+
*
|
|
35
|
+
* @param options.planModeRequired - If true, don't inherit bypass permissions (plan mode takes precedence)
|
|
36
|
+
* @param options.permissionMode - Permission mode to propagate
|
|
37
|
+
*/
|
|
38
|
+
export function buildInheritedCliFlags(options?: {
|
|
39
|
+
planModeRequired?: boolean
|
|
40
|
+
permissionMode?: PermissionMode
|
|
41
|
+
}): string {
|
|
42
|
+
const flags: string[] = []
|
|
43
|
+
const { planModeRequired, permissionMode } = options || {}
|
|
44
|
+
|
|
45
|
+
// Propagate permission mode to teammates, but NOT if plan mode is required
|
|
46
|
+
// Plan mode takes precedence over bypass permissions for safety
|
|
47
|
+
if (planModeRequired) {
|
|
48
|
+
// Don't inherit bypass permissions when plan mode is required
|
|
49
|
+
} else if (
|
|
50
|
+
permissionMode === 'bypassPermissions' ||
|
|
51
|
+
getSessionBypassPermissionsMode()
|
|
52
|
+
) {
|
|
53
|
+
flags.push('--dangerously-skip-permissions')
|
|
54
|
+
} else if (permissionMode === 'acceptEdits') {
|
|
55
|
+
flags.push('--permission-mode acceptEdits')
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Propagate --model if explicitly set via CLI
|
|
59
|
+
const modelOverride = getMainLoopModelOverride()
|
|
60
|
+
if (modelOverride) {
|
|
61
|
+
flags.push(`--model ${quote([modelOverride])}`)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Propagate --settings if set via CLI
|
|
65
|
+
const settingsPath = getFlagSettingsPath()
|
|
66
|
+
if (settingsPath) {
|
|
67
|
+
flags.push(`--settings ${quote([settingsPath])}`)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Propagate --plugin-dir for each inline plugin
|
|
71
|
+
const inlinePlugins = getInlinePlugins()
|
|
72
|
+
for (const pluginDir of inlinePlugins) {
|
|
73
|
+
flags.push(`--plugin-dir ${quote([pluginDir])}`)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Propagate --teammate-mode so tmux teammates use the same mode as leader
|
|
77
|
+
const sessionMode = getTeammateModeFromSnapshot()
|
|
78
|
+
flags.push(`--teammate-mode ${sessionMode}`)
|
|
79
|
+
|
|
80
|
+
// Propagate --chrome / --no-chrome if explicitly set on the CLI
|
|
81
|
+
const chromeFlagOverride = getChromeFlagOverride()
|
|
82
|
+
if (chromeFlagOverride === true) {
|
|
83
|
+
flags.push('--chrome')
|
|
84
|
+
} else if (chromeFlagOverride === false) {
|
|
85
|
+
flags.push('--no-chrome')
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return flags.join(' ')
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Environment variables that must be explicitly forwarded to tmux-spawned
|
|
93
|
+
* teammates. Tmux may start a new login shell that doesn't inherit the
|
|
94
|
+
* parent's env, so we forward any that are set in the current process.
|
|
95
|
+
*/
|
|
96
|
+
const TEAMMATE_ENV_VARS = [
|
|
97
|
+
// API provider selection — without these, teammates default to firstParty
|
|
98
|
+
// and send requests to the wrong endpoint (GitHub issue #23561)
|
|
99
|
+
'CLAUDE_CODE_USE_BEDROCK',
|
|
100
|
+
'CLAUDE_CODE_USE_VERTEX',
|
|
101
|
+
'CLAUDE_CODE_USE_FOUNDRY',
|
|
102
|
+
// Custom API endpoint
|
|
103
|
+
'ANTHROPIC_BASE_URL',
|
|
104
|
+
// Config directory override
|
|
105
|
+
'CLAUDE_CONFIG_DIR',
|
|
106
|
+
// CCR marker — teammates need this for CCR-aware code paths. Auth finds
|
|
107
|
+
// its own way via /home/claude/.claude/remote/.oauth_token regardless;
|
|
108
|
+
// the FD env var wouldn't help (pipe FDs don't cross tmux).
|
|
109
|
+
'CLAUDE_CODE_REMOTE',
|
|
110
|
+
// Auto-memory gate (memdir/paths.ts) checks REMOTE && !MEMORY_DIR to
|
|
111
|
+
// disable memory on ephemeral CCR filesystems. Forwarding REMOTE alone
|
|
112
|
+
// would flip teammates to memory-off when the parent has it on.
|
|
113
|
+
'CLAUDE_CODE_REMOTE_MEMORY_DIR',
|
|
114
|
+
// Upstream proxy — the parent's MITM relay is reachable from teammates
|
|
115
|
+
// (same container network). Forward the proxy vars so teammates route
|
|
116
|
+
// customer-configured upstream traffic through the relay for credential
|
|
117
|
+
// injection. Without these, teammates bypass the proxy entirely.
|
|
118
|
+
'HTTPS_PROXY',
|
|
119
|
+
'https_proxy',
|
|
120
|
+
'HTTP_PROXY',
|
|
121
|
+
'http_proxy',
|
|
122
|
+
'NO_PROXY',
|
|
123
|
+
'no_proxy',
|
|
124
|
+
'SSL_CERT_FILE',
|
|
125
|
+
'NODE_EXTRA_CA_CERTS',
|
|
126
|
+
'REQUESTS_CA_BUNDLE',
|
|
127
|
+
'CURL_CA_BUNDLE',
|
|
128
|
+
] as const
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Builds the `env KEY=VALUE ...` string for teammate spawn commands.
|
|
132
|
+
* Always includes CLAUDECODE=1 and CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1,
|
|
133
|
+
* plus any provider/config env vars that are set in the current process.
|
|
134
|
+
*/
|
|
135
|
+
export function buildInheritedEnvVars(): string {
|
|
136
|
+
const envVars = ['CLAUDECODE=1', 'CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1']
|
|
137
|
+
|
|
138
|
+
for (const key of TEAMMATE_ENV_VARS) {
|
|
139
|
+
const value = process.env[key]
|
|
140
|
+
if (value !== undefined && value !== '') {
|
|
141
|
+
envVars.push(`${key}=${quote([value])}`)
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return envVars.join(' ')
|
|
146
|
+
}
|