@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,340 @@
|
|
|
1
|
+
import { profileCheckpoint } from '../utils/startupProfiler.js'
|
|
2
|
+
import '../bootstrap/state.js'
|
|
3
|
+
import '../utils/config.js'
|
|
4
|
+
import type { Attributes, MetricOptions } from '@opentelemetry/api'
|
|
5
|
+
import memoize from 'lodash-es/memoize.js'
|
|
6
|
+
import { getIsNonInteractiveSession } from 'src/bootstrap/state.js'
|
|
7
|
+
import type { AttributedCounter } from '../bootstrap/state.js'
|
|
8
|
+
import { getSessionCounter, setMeter } from '../bootstrap/state.js'
|
|
9
|
+
import { shutdownLspServerManager } from '../services/lsp/manager.js'
|
|
10
|
+
import { populateOAuthAccountInfoIfNeeded } from '../services/oauth/client.js'
|
|
11
|
+
import {
|
|
12
|
+
initializePolicyLimitsLoadingPromise,
|
|
13
|
+
isPolicyLimitsEligible,
|
|
14
|
+
} from '../services/policyLimits/index.js'
|
|
15
|
+
import {
|
|
16
|
+
initializeRemoteManagedSettingsLoadingPromise,
|
|
17
|
+
isEligibleForRemoteManagedSettings,
|
|
18
|
+
waitForRemoteManagedSettingsToLoad,
|
|
19
|
+
} from '../services/remoteManagedSettings/index.js'
|
|
20
|
+
import { preconnectAnthropicApi } from '../utils/apiPreconnect.js'
|
|
21
|
+
import { applyExtraCACertsFromConfig } from '../utils/caCertsConfig.js'
|
|
22
|
+
import { registerCleanup } from '../utils/cleanupRegistry.js'
|
|
23
|
+
import { enableConfigs, recordFirstStartTime } from '../utils/config.js'
|
|
24
|
+
import { logForDebugging } from '../utils/debug.js'
|
|
25
|
+
import { detectCurrentRepository } from '../utils/detectRepository.js'
|
|
26
|
+
import { logForDiagnosticsNoPII } from '../utils/diagLogs.js'
|
|
27
|
+
import { initJetBrainsDetection } from '../utils/envDynamic.js'
|
|
28
|
+
import { isEnvTruthy } from '../utils/envUtils.js'
|
|
29
|
+
import { ConfigParseError, errorMessage } from '../utils/errors.js'
|
|
30
|
+
// showInvalidConfigDialog is dynamically imported in the error path to avoid loading React at init
|
|
31
|
+
import {
|
|
32
|
+
gracefulShutdownSync,
|
|
33
|
+
setupGracefulShutdown,
|
|
34
|
+
} from '../utils/gracefulShutdown.js'
|
|
35
|
+
import {
|
|
36
|
+
applyConfigEnvironmentVariables,
|
|
37
|
+
applySafeConfigEnvironmentVariables,
|
|
38
|
+
} from '../utils/managedEnv.js'
|
|
39
|
+
import { configureGlobalMTLS } from '../utils/mtls.js'
|
|
40
|
+
import {
|
|
41
|
+
ensureScratchpadDir,
|
|
42
|
+
isScratchpadEnabled,
|
|
43
|
+
} from '../utils/permissions/filesystem.js'
|
|
44
|
+
// initializeTelemetry is loaded lazily via import() in setMeterState() to defer
|
|
45
|
+
// ~400KB of OpenTelemetry + protobuf modules until telemetry is actually initialized.
|
|
46
|
+
// gRPC exporters (~700KB via @grpc/grpc-js) are further lazy-loaded within instrumentation.ts.
|
|
47
|
+
import { configureGlobalAgents } from '../utils/proxy.js'
|
|
48
|
+
import { isBetaTracingEnabled } from '../utils/telemetry/betaSessionTracing.js'
|
|
49
|
+
import { getTelemetryAttributes } from '../utils/telemetryAttributes.js'
|
|
50
|
+
import { setShellIfWindows } from '../utils/windowsPaths.js'
|
|
51
|
+
|
|
52
|
+
// initialize1PEventLogging is dynamically imported to defer OpenTelemetry sdk-logs/resources
|
|
53
|
+
|
|
54
|
+
// Track if telemetry has been initialized to prevent double initialization
|
|
55
|
+
let telemetryInitialized = false
|
|
56
|
+
|
|
57
|
+
export const init = memoize(async (): Promise<void> => {
|
|
58
|
+
const initStartTime = Date.now()
|
|
59
|
+
logForDiagnosticsNoPII('info', 'init_started')
|
|
60
|
+
profileCheckpoint('init_function_start')
|
|
61
|
+
|
|
62
|
+
// Validate configs are valid and enable configuration system
|
|
63
|
+
try {
|
|
64
|
+
const configsStart = Date.now()
|
|
65
|
+
enableConfigs()
|
|
66
|
+
logForDiagnosticsNoPII('info', 'init_configs_enabled', {
|
|
67
|
+
duration_ms: Date.now() - configsStart,
|
|
68
|
+
})
|
|
69
|
+
profileCheckpoint('init_configs_enabled')
|
|
70
|
+
|
|
71
|
+
// Apply only safe environment variables before trust dialog
|
|
72
|
+
// Full environment variables are applied after trust is established
|
|
73
|
+
const envVarsStart = Date.now()
|
|
74
|
+
applySafeConfigEnvironmentVariables()
|
|
75
|
+
|
|
76
|
+
// Apply NODE_EXTRA_CA_CERTS from settings.json to process.env early,
|
|
77
|
+
// before any TLS connections. Bun caches the TLS cert store at boot
|
|
78
|
+
// via BoringSSL, so this must happen before the first TLS handshake.
|
|
79
|
+
applyExtraCACertsFromConfig()
|
|
80
|
+
|
|
81
|
+
logForDiagnosticsNoPII('info', 'init_safe_env_vars_applied', {
|
|
82
|
+
duration_ms: Date.now() - envVarsStart,
|
|
83
|
+
})
|
|
84
|
+
profileCheckpoint('init_safe_env_vars_applied')
|
|
85
|
+
|
|
86
|
+
// Make sure things get flushed on exit
|
|
87
|
+
setupGracefulShutdown()
|
|
88
|
+
profileCheckpoint('init_after_graceful_shutdown')
|
|
89
|
+
|
|
90
|
+
// Initialize 1P event logging (no security concerns, but deferred to avoid
|
|
91
|
+
// loading OpenTelemetry sdk-logs at startup). growthbook.js is already in
|
|
92
|
+
// the module cache by this point (firstPartyEventLogger imports it), so the
|
|
93
|
+
// second dynamic import adds no load cost.
|
|
94
|
+
void Promise.all([
|
|
95
|
+
import('../services/analytics/firstPartyEventLogger.js'),
|
|
96
|
+
import('../services/analytics/growthbook.js'),
|
|
97
|
+
]).then(([fp, gb]) => {
|
|
98
|
+
fp.initialize1PEventLogging()
|
|
99
|
+
// Rebuild the logger provider if tengu_1p_event_batch_config changes
|
|
100
|
+
// mid-session. Change detection (isEqual) is inside the handler so
|
|
101
|
+
// unchanged refreshes are no-ops.
|
|
102
|
+
gb.onGrowthBookRefresh(() => {
|
|
103
|
+
void fp.reinitialize1PEventLoggingIfConfigChanged()
|
|
104
|
+
})
|
|
105
|
+
})
|
|
106
|
+
profileCheckpoint('init_after_1p_event_logging')
|
|
107
|
+
|
|
108
|
+
// Populate OAuth account info if it is not already cached in config. This is needed since the
|
|
109
|
+
// OAuth account info may not be populated when logging in through the VSCode extension.
|
|
110
|
+
void populateOAuthAccountInfoIfNeeded()
|
|
111
|
+
profileCheckpoint('init_after_oauth_populate')
|
|
112
|
+
|
|
113
|
+
// Initialize JetBrains IDE detection asynchronously (populates cache for later sync access)
|
|
114
|
+
void initJetBrainsDetection()
|
|
115
|
+
profileCheckpoint('init_after_jetbrains_detection')
|
|
116
|
+
|
|
117
|
+
// Detect GitHub repository asynchronously (populates cache for gitDiff PR linking)
|
|
118
|
+
void detectCurrentRepository()
|
|
119
|
+
|
|
120
|
+
// Initialize the loading promise early so that other systems (like plugin hooks)
|
|
121
|
+
// can await remote settings loading. The promise includes a timeout to prevent
|
|
122
|
+
// deadlocks if loadRemoteManagedSettings() is never called (e.g., Agent SDK tests).
|
|
123
|
+
if (isEligibleForRemoteManagedSettings()) {
|
|
124
|
+
initializeRemoteManagedSettingsLoadingPromise()
|
|
125
|
+
}
|
|
126
|
+
if (isPolicyLimitsEligible()) {
|
|
127
|
+
initializePolicyLimitsLoadingPromise()
|
|
128
|
+
}
|
|
129
|
+
profileCheckpoint('init_after_remote_settings_check')
|
|
130
|
+
|
|
131
|
+
// Record the first start time
|
|
132
|
+
recordFirstStartTime()
|
|
133
|
+
|
|
134
|
+
// Configure global mTLS settings
|
|
135
|
+
const mtlsStart = Date.now()
|
|
136
|
+
logForDebugging('[init] configureGlobalMTLS starting')
|
|
137
|
+
configureGlobalMTLS()
|
|
138
|
+
logForDiagnosticsNoPII('info', 'init_mtls_configured', {
|
|
139
|
+
duration_ms: Date.now() - mtlsStart,
|
|
140
|
+
})
|
|
141
|
+
logForDebugging('[init] configureGlobalMTLS complete')
|
|
142
|
+
|
|
143
|
+
// Configure global HTTP agents (proxy and/or mTLS)
|
|
144
|
+
const proxyStart = Date.now()
|
|
145
|
+
logForDebugging('[init] configureGlobalAgents starting')
|
|
146
|
+
configureGlobalAgents()
|
|
147
|
+
logForDiagnosticsNoPII('info', 'init_proxy_configured', {
|
|
148
|
+
duration_ms: Date.now() - proxyStart,
|
|
149
|
+
})
|
|
150
|
+
logForDebugging('[init] configureGlobalAgents complete')
|
|
151
|
+
profileCheckpoint('init_network_configured')
|
|
152
|
+
|
|
153
|
+
// Preconnect to the Anthropic API — overlap TCP+TLS handshake
|
|
154
|
+
// (~100-200ms) with the ~100ms of action-handler work before the API
|
|
155
|
+
// request. After CA certs + proxy agents are configured so the warmed
|
|
156
|
+
// connection uses the right transport. Fire-and-forget; skipped for
|
|
157
|
+
// proxy/mTLS/unix/cloud-provider where the SDK's dispatcher wouldn't
|
|
158
|
+
// reuse the global pool.
|
|
159
|
+
preconnectAnthropicApi()
|
|
160
|
+
|
|
161
|
+
// CCR upstreamproxy: start the local CONNECT relay so agent subprocesses
|
|
162
|
+
// can reach org-configured upstreams with credential injection. Gated on
|
|
163
|
+
// CLAUDE_CODE_REMOTE + GrowthBook; fail-open on any error. Lazy import so
|
|
164
|
+
// non-CCR startups don't pay the module load. The getUpstreamProxyEnv
|
|
165
|
+
// function is registered with subprocessEnv.ts so subprocess spawning can
|
|
166
|
+
// inject proxy vars without a static import of the upstreamproxy module.
|
|
167
|
+
if (isEnvTruthy(process.env.CLAUDE_CODE_REMOTE)) {
|
|
168
|
+
try {
|
|
169
|
+
const { initUpstreamProxy, getUpstreamProxyEnv } = await import(
|
|
170
|
+
'../upstreamproxy/upstreamproxy.js'
|
|
171
|
+
)
|
|
172
|
+
const { registerUpstreamProxyEnvFn } = await import(
|
|
173
|
+
'../utils/subprocessEnv.js'
|
|
174
|
+
)
|
|
175
|
+
registerUpstreamProxyEnvFn(getUpstreamProxyEnv)
|
|
176
|
+
await initUpstreamProxy()
|
|
177
|
+
} catch (err) {
|
|
178
|
+
logForDebugging(
|
|
179
|
+
`[init] upstreamproxy init failed: ${err instanceof Error ? err.message : String(err)}; continuing without proxy`,
|
|
180
|
+
{ level: 'warn' },
|
|
181
|
+
)
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Set up git-bash if relevant
|
|
186
|
+
setShellIfWindows()
|
|
187
|
+
|
|
188
|
+
// Register LSP manager cleanup (initialization happens in main.tsx after --plugin-dir is processed)
|
|
189
|
+
registerCleanup(shutdownLspServerManager)
|
|
190
|
+
|
|
191
|
+
// gh-32730: teams created by subagents (or main agent without
|
|
192
|
+
// explicit TeamDelete) were left on disk forever. Register cleanup
|
|
193
|
+
// for all teams created this session. Lazy import: swarm code is
|
|
194
|
+
// behind feature gate and most sessions never create teams.
|
|
195
|
+
registerCleanup(async () => {
|
|
196
|
+
const { cleanupSessionTeams } = await import(
|
|
197
|
+
'../utils/swarm/teamHelpers.js'
|
|
198
|
+
)
|
|
199
|
+
await cleanupSessionTeams()
|
|
200
|
+
})
|
|
201
|
+
|
|
202
|
+
// Initialize scratchpad directory if enabled
|
|
203
|
+
if (isScratchpadEnabled()) {
|
|
204
|
+
const scratchpadStart = Date.now()
|
|
205
|
+
await ensureScratchpadDir()
|
|
206
|
+
logForDiagnosticsNoPII('info', 'init_scratchpad_created', {
|
|
207
|
+
duration_ms: Date.now() - scratchpadStart,
|
|
208
|
+
})
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
logForDiagnosticsNoPII('info', 'init_completed', {
|
|
212
|
+
duration_ms: Date.now() - initStartTime,
|
|
213
|
+
})
|
|
214
|
+
profileCheckpoint('init_function_end')
|
|
215
|
+
} catch (error) {
|
|
216
|
+
if (error instanceof ConfigParseError) {
|
|
217
|
+
// Skip the interactive Ink dialog when we can't safely render it.
|
|
218
|
+
// The dialog breaks JSON consumers (e.g. desktop marketplace plugin
|
|
219
|
+
// manager running `plugin marketplace list --json` in a VM sandbox).
|
|
220
|
+
if (getIsNonInteractiveSession()) {
|
|
221
|
+
process.stderr.write(
|
|
222
|
+
`Configuration error in ${error.filePath}: ${error.message}\n`,
|
|
223
|
+
)
|
|
224
|
+
gracefulShutdownSync(1)
|
|
225
|
+
return
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Show the invalid config dialog with the error object and wait for it to complete
|
|
229
|
+
return import('../components/InvalidConfigDialog.js').then(m =>
|
|
230
|
+
m.showInvalidConfigDialog({ error }),
|
|
231
|
+
)
|
|
232
|
+
// Dialog itself handles process.exit, so we don't need additional cleanup here
|
|
233
|
+
} else {
|
|
234
|
+
// For non-config errors, rethrow them
|
|
235
|
+
throw error
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
})
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Initialize telemetry after trust has been granted.
|
|
242
|
+
* For remote-settings-eligible users, waits for settings to load (non-blocking),
|
|
243
|
+
* then re-applies env vars (to include remote settings) before initializing telemetry.
|
|
244
|
+
* For non-eligible users, initializes telemetry immediately.
|
|
245
|
+
* This should only be called once, after the trust dialog has been accepted.
|
|
246
|
+
*/
|
|
247
|
+
export function initializeTelemetryAfterTrust(): void {
|
|
248
|
+
if (isEligibleForRemoteManagedSettings()) {
|
|
249
|
+
// For SDK/headless mode with beta tracing, initialize eagerly first
|
|
250
|
+
// to ensure the tracer is ready before the first query runs.
|
|
251
|
+
// The async path below will still run but doInitializeTelemetry() guards against double init.
|
|
252
|
+
if (getIsNonInteractiveSession() && isBetaTracingEnabled()) {
|
|
253
|
+
void doInitializeTelemetry().catch(error => {
|
|
254
|
+
logForDebugging(
|
|
255
|
+
`[3P telemetry] Eager telemetry init failed (beta tracing): ${errorMessage(error)}`,
|
|
256
|
+
{ level: 'error' },
|
|
257
|
+
)
|
|
258
|
+
})
|
|
259
|
+
}
|
|
260
|
+
logForDebugging(
|
|
261
|
+
'[3P telemetry] Waiting for remote managed settings before telemetry init',
|
|
262
|
+
)
|
|
263
|
+
void waitForRemoteManagedSettingsToLoad()
|
|
264
|
+
.then(async () => {
|
|
265
|
+
logForDebugging(
|
|
266
|
+
'[3P telemetry] Remote managed settings loaded, initializing telemetry',
|
|
267
|
+
)
|
|
268
|
+
// Re-apply env vars to pick up remote settings before initializing telemetry.
|
|
269
|
+
applyConfigEnvironmentVariables()
|
|
270
|
+
await doInitializeTelemetry()
|
|
271
|
+
})
|
|
272
|
+
.catch(error => {
|
|
273
|
+
logForDebugging(
|
|
274
|
+
`[3P telemetry] Telemetry init failed (remote settings path): ${errorMessage(error)}`,
|
|
275
|
+
{ level: 'error' },
|
|
276
|
+
)
|
|
277
|
+
})
|
|
278
|
+
} else {
|
|
279
|
+
void doInitializeTelemetry().catch(error => {
|
|
280
|
+
logForDebugging(
|
|
281
|
+
`[3P telemetry] Telemetry init failed: ${errorMessage(error)}`,
|
|
282
|
+
{ level: 'error' },
|
|
283
|
+
)
|
|
284
|
+
})
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
async function doInitializeTelemetry(): Promise<void> {
|
|
289
|
+
if (telemetryInitialized) {
|
|
290
|
+
// Already initialized, nothing to do
|
|
291
|
+
return
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Set flag before init to prevent double initialization
|
|
295
|
+
telemetryInitialized = true
|
|
296
|
+
try {
|
|
297
|
+
await setMeterState()
|
|
298
|
+
} catch (error) {
|
|
299
|
+
// Reset flag on failure so subsequent calls can retry
|
|
300
|
+
telemetryInitialized = false
|
|
301
|
+
throw error
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
async function setMeterState(): Promise<void> {
|
|
306
|
+
// Lazy-load instrumentation to defer ~400KB of OpenTelemetry + protobuf
|
|
307
|
+
const { initializeTelemetry } = await import(
|
|
308
|
+
'../utils/telemetry/instrumentation.js'
|
|
309
|
+
)
|
|
310
|
+
// Initialize customer OTLP telemetry (metrics, logs, traces)
|
|
311
|
+
const meter = await initializeTelemetry()
|
|
312
|
+
if (meter) {
|
|
313
|
+
// Create factory function for attributed counters
|
|
314
|
+
const createAttributedCounter = (
|
|
315
|
+
name: string,
|
|
316
|
+
options: MetricOptions,
|
|
317
|
+
): AttributedCounter => {
|
|
318
|
+
const counter = meter?.createCounter(name, options)
|
|
319
|
+
|
|
320
|
+
return {
|
|
321
|
+
add(value: number, additionalAttributes: Attributes = {}) {
|
|
322
|
+
// Always fetch fresh telemetry attributes to ensure they're up to date
|
|
323
|
+
const currentAttributes = getTelemetryAttributes()
|
|
324
|
+
const mergedAttributes = {
|
|
325
|
+
...currentAttributes,
|
|
326
|
+
...additionalAttributes,
|
|
327
|
+
}
|
|
328
|
+
counter?.add(value, mergedAttributes)
|
|
329
|
+
},
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
setMeter(meter, createAttributedCounter)
|
|
334
|
+
|
|
335
|
+
// Increment session counter here because the startup telemetry path
|
|
336
|
+
// runs before this async initialization completes, so the counter
|
|
337
|
+
// would be null there.
|
|
338
|
+
getSessionCounter()?.add(1)
|
|
339
|
+
}
|
|
340
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js'
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
3
|
+
import {
|
|
4
|
+
CallToolRequestSchema,
|
|
5
|
+
type CallToolResult,
|
|
6
|
+
ListToolsRequestSchema,
|
|
7
|
+
type ListToolsResult,
|
|
8
|
+
type Tool,
|
|
9
|
+
} from '@modelcontextprotocol/sdk/types.js'
|
|
10
|
+
import { getDefaultAppState } from 'src/state/AppStateStore.js'
|
|
11
|
+
import review from '../commands/review.js'
|
|
12
|
+
import type { Command } from '../commands.js'
|
|
13
|
+
import {
|
|
14
|
+
findToolByName,
|
|
15
|
+
getEmptyToolPermissionContext,
|
|
16
|
+
type ToolUseContext,
|
|
17
|
+
} from '../Tool.js'
|
|
18
|
+
import { getTools } from '../tools.js'
|
|
19
|
+
import { createAbortController } from '../utils/abortController.js'
|
|
20
|
+
import { createFileStateCacheWithSizeLimit } from '../utils/fileStateCache.js'
|
|
21
|
+
import { logError } from '../utils/log.js'
|
|
22
|
+
import { createAssistantMessage } from '../utils/messages.js'
|
|
23
|
+
import { getMainLoopModel } from '../utils/model/model.js'
|
|
24
|
+
import { hasPermissionsToUseTool } from '../utils/permissions/permissions.js'
|
|
25
|
+
import { setCwd } from '../utils/Shell.js'
|
|
26
|
+
import { jsonStringify } from '../utils/slowOperations.js'
|
|
27
|
+
import { getErrorParts } from '../utils/toolErrors.js'
|
|
28
|
+
import { zodToJsonSchema } from '../utils/zodToJsonSchema.js'
|
|
29
|
+
|
|
30
|
+
type ToolInput = Tool['inputSchema']
|
|
31
|
+
type ToolOutput = Tool['outputSchema']
|
|
32
|
+
|
|
33
|
+
const MCP_COMMANDS: Command[] = [review]
|
|
34
|
+
|
|
35
|
+
export async function startMCPServer(
|
|
36
|
+
cwd: string,
|
|
37
|
+
debug: boolean,
|
|
38
|
+
verbose: boolean,
|
|
39
|
+
): Promise<void> {
|
|
40
|
+
// Use size-limited LRU cache for readFileState to prevent unbounded memory growth
|
|
41
|
+
// 100 files and 25MB limit should be sufficient for MCP server operations
|
|
42
|
+
const READ_FILE_STATE_CACHE_SIZE = 100
|
|
43
|
+
const readFileStateCache = createFileStateCacheWithSizeLimit(
|
|
44
|
+
READ_FILE_STATE_CACHE_SIZE,
|
|
45
|
+
)
|
|
46
|
+
setCwd(cwd)
|
|
47
|
+
const server = new Server(
|
|
48
|
+
{
|
|
49
|
+
name: 'claude/tengu',
|
|
50
|
+
version: MACRO.VERSION,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
capabilities: {
|
|
54
|
+
tools: {},
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
server.setRequestHandler(
|
|
60
|
+
ListToolsRequestSchema,
|
|
61
|
+
async (): Promise<ListToolsResult> => {
|
|
62
|
+
// TODO: Also re-expose any MCP tools
|
|
63
|
+
const toolPermissionContext = getEmptyToolPermissionContext()
|
|
64
|
+
const tools = getTools(toolPermissionContext)
|
|
65
|
+
return {
|
|
66
|
+
tools: await Promise.all(
|
|
67
|
+
tools.map(async tool => {
|
|
68
|
+
let outputSchema: ToolOutput | undefined
|
|
69
|
+
if (tool.outputSchema) {
|
|
70
|
+
const convertedSchema = zodToJsonSchema(tool.outputSchema)
|
|
71
|
+
// MCP SDK requires outputSchema to have type: "object" at root level
|
|
72
|
+
// Skip schemas with anyOf/oneOf at root (from z.union, z.discriminatedUnion, etc.)
|
|
73
|
+
// See: https://github.com/anthropics/claude-code/issues/8014
|
|
74
|
+
if (
|
|
75
|
+
typeof convertedSchema === 'object' &&
|
|
76
|
+
convertedSchema !== null &&
|
|
77
|
+
'type' in convertedSchema &&
|
|
78
|
+
convertedSchema.type === 'object'
|
|
79
|
+
) {
|
|
80
|
+
outputSchema = convertedSchema as ToolOutput
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
...tool,
|
|
85
|
+
description: await tool.prompt({
|
|
86
|
+
getToolPermissionContext: async () => toolPermissionContext,
|
|
87
|
+
tools,
|
|
88
|
+
agents: [],
|
|
89
|
+
}),
|
|
90
|
+
inputSchema: zodToJsonSchema(tool.inputSchema) as ToolInput,
|
|
91
|
+
outputSchema,
|
|
92
|
+
}
|
|
93
|
+
}),
|
|
94
|
+
),
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
server.setRequestHandler(
|
|
100
|
+
CallToolRequestSchema,
|
|
101
|
+
async ({ params: { name, arguments: args } }): Promise<CallToolResult> => {
|
|
102
|
+
const toolPermissionContext = getEmptyToolPermissionContext()
|
|
103
|
+
// TODO: Also re-expose any MCP tools
|
|
104
|
+
const tools = getTools(toolPermissionContext)
|
|
105
|
+
const tool = findToolByName(tools, name)
|
|
106
|
+
if (!tool) {
|
|
107
|
+
throw new Error(`Tool ${name} not found`)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Assume MCP servers do not read messages separately from the tool
|
|
111
|
+
// call arguments.
|
|
112
|
+
const toolUseContext: ToolUseContext = {
|
|
113
|
+
abortController: createAbortController(),
|
|
114
|
+
options: {
|
|
115
|
+
commands: MCP_COMMANDS,
|
|
116
|
+
tools,
|
|
117
|
+
mainLoopModel: getMainLoopModel(),
|
|
118
|
+
thinkingConfig: { type: 'disabled' },
|
|
119
|
+
mcpClients: [],
|
|
120
|
+
mcpResources: {},
|
|
121
|
+
isNonInteractiveSession: true,
|
|
122
|
+
debug,
|
|
123
|
+
verbose,
|
|
124
|
+
agentDefinitions: { activeAgents: [], allAgents: [] },
|
|
125
|
+
},
|
|
126
|
+
getAppState: () => getDefaultAppState(),
|
|
127
|
+
setAppState: () => {},
|
|
128
|
+
messages: [],
|
|
129
|
+
readFileState: readFileStateCache,
|
|
130
|
+
setInProgressToolUseIDs: () => {},
|
|
131
|
+
setResponseLength: () => {},
|
|
132
|
+
updateFileHistoryState: () => {},
|
|
133
|
+
updateAttributionState: () => {},
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// TODO: validate input types with zod
|
|
137
|
+
try {
|
|
138
|
+
if (!tool.isEnabled()) {
|
|
139
|
+
throw new Error(`Tool ${name} is not enabled`)
|
|
140
|
+
}
|
|
141
|
+
const validationResult = await tool.validateInput?.(
|
|
142
|
+
(args as never) ?? {},
|
|
143
|
+
toolUseContext,
|
|
144
|
+
)
|
|
145
|
+
if (validationResult && !validationResult.result) {
|
|
146
|
+
throw new Error(
|
|
147
|
+
`Tool ${name} input is invalid: ${validationResult.message}`,
|
|
148
|
+
)
|
|
149
|
+
}
|
|
150
|
+
const finalResult = await tool.call(
|
|
151
|
+
(args ?? {}) as never,
|
|
152
|
+
toolUseContext,
|
|
153
|
+
hasPermissionsToUseTool,
|
|
154
|
+
createAssistantMessage({
|
|
155
|
+
content: [],
|
|
156
|
+
}),
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
return {
|
|
160
|
+
content: [
|
|
161
|
+
{
|
|
162
|
+
type: 'text' as const,
|
|
163
|
+
text:
|
|
164
|
+
typeof finalResult === 'string'
|
|
165
|
+
? finalResult
|
|
166
|
+
: jsonStringify(finalResult.data),
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
}
|
|
170
|
+
} catch (error) {
|
|
171
|
+
logError(error)
|
|
172
|
+
|
|
173
|
+
const parts =
|
|
174
|
+
error instanceof Error ? getErrorParts(error) : [String(error)]
|
|
175
|
+
const errorText = parts.filter(Boolean).join('\n').trim() || 'Error'
|
|
176
|
+
|
|
177
|
+
return {
|
|
178
|
+
isError: true,
|
|
179
|
+
content: [
|
|
180
|
+
{
|
|
181
|
+
type: 'text',
|
|
182
|
+
text: errorText,
|
|
183
|
+
},
|
|
184
|
+
],
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
async function runServer() {
|
|
191
|
+
const transport = new StdioServerTransport()
|
|
192
|
+
await server.connect(transport)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return await runServer()
|
|
196
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sandbox types for the Claude Code Agent SDK
|
|
3
|
+
*
|
|
4
|
+
* This file is the single source of truth for sandbox configuration types.
|
|
5
|
+
* Both the SDK and the settings validation import from here.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { z } from 'zod/v4'
|
|
9
|
+
import { lazySchema } from '../utils/lazySchema.js'
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Network configuration schema for sandbox.
|
|
13
|
+
*/
|
|
14
|
+
export const SandboxNetworkConfigSchema = lazySchema(() =>
|
|
15
|
+
z
|
|
16
|
+
.object({
|
|
17
|
+
allowedDomains: z.array(z.string()).optional(),
|
|
18
|
+
allowManagedDomainsOnly: z
|
|
19
|
+
.boolean()
|
|
20
|
+
.optional()
|
|
21
|
+
.describe(
|
|
22
|
+
'When true (and set in managed settings), only allowedDomains and WebFetch(domain:...) allow rules from managed settings are respected. ' +
|
|
23
|
+
'User, project, local, and flag settings domains are ignored. Denied domains are still respected from all sources.',
|
|
24
|
+
),
|
|
25
|
+
allowUnixSockets: z
|
|
26
|
+
.array(z.string())
|
|
27
|
+
.optional()
|
|
28
|
+
.describe(
|
|
29
|
+
'macOS only: Unix socket paths to allow. Ignored on Linux (seccomp cannot filter by path).',
|
|
30
|
+
),
|
|
31
|
+
allowAllUnixSockets: z
|
|
32
|
+
.boolean()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe(
|
|
35
|
+
'If true, allow all Unix sockets (disables blocking on both platforms).',
|
|
36
|
+
),
|
|
37
|
+
allowLocalBinding: z.boolean().optional(),
|
|
38
|
+
httpProxyPort: z.number().optional(),
|
|
39
|
+
socksProxyPort: z.number().optional(),
|
|
40
|
+
})
|
|
41
|
+
.optional(),
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Filesystem configuration schema for sandbox.
|
|
46
|
+
*/
|
|
47
|
+
export const SandboxFilesystemConfigSchema = lazySchema(() =>
|
|
48
|
+
z
|
|
49
|
+
.object({
|
|
50
|
+
allowWrite: z
|
|
51
|
+
.array(z.string())
|
|
52
|
+
.optional()
|
|
53
|
+
.describe(
|
|
54
|
+
'Additional paths to allow writing within the sandbox. ' +
|
|
55
|
+
'Merged with paths from Edit(...) allow permission rules.',
|
|
56
|
+
),
|
|
57
|
+
denyWrite: z
|
|
58
|
+
.array(z.string())
|
|
59
|
+
.optional()
|
|
60
|
+
.describe(
|
|
61
|
+
'Additional paths to deny writing within the sandbox. ' +
|
|
62
|
+
'Merged with paths from Edit(...) deny permission rules.',
|
|
63
|
+
),
|
|
64
|
+
denyRead: z
|
|
65
|
+
.array(z.string())
|
|
66
|
+
.optional()
|
|
67
|
+
.describe(
|
|
68
|
+
'Additional paths to deny reading within the sandbox. ' +
|
|
69
|
+
'Merged with paths from Read(...) deny permission rules.',
|
|
70
|
+
),
|
|
71
|
+
allowRead: z
|
|
72
|
+
.array(z.string())
|
|
73
|
+
.optional()
|
|
74
|
+
.describe(
|
|
75
|
+
'Paths to re-allow reading within denyRead regions. ' +
|
|
76
|
+
'Takes precedence over denyRead for matching paths.',
|
|
77
|
+
),
|
|
78
|
+
allowManagedReadPathsOnly: z
|
|
79
|
+
.boolean()
|
|
80
|
+
.optional()
|
|
81
|
+
.describe(
|
|
82
|
+
'When true (set in managed settings), only allowRead paths from policySettings are used.',
|
|
83
|
+
),
|
|
84
|
+
})
|
|
85
|
+
.optional(),
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Sandbox settings schema.
|
|
90
|
+
*/
|
|
91
|
+
export const SandboxSettingsSchema = lazySchema(() =>
|
|
92
|
+
z
|
|
93
|
+
.object({
|
|
94
|
+
enabled: z.boolean().optional(),
|
|
95
|
+
failIfUnavailable: z
|
|
96
|
+
.boolean()
|
|
97
|
+
.optional()
|
|
98
|
+
.describe(
|
|
99
|
+
'Exit with an error at startup if sandbox.enabled is true but the sandbox cannot start ' +
|
|
100
|
+
'(missing dependencies, unsupported platform, or platform not in enabledPlatforms). ' +
|
|
101
|
+
'When false (default), a warning is shown and commands run unsandboxed. ' +
|
|
102
|
+
'Intended for managed-settings deployments that require sandboxing as a hard gate.',
|
|
103
|
+
),
|
|
104
|
+
// Note: enabledPlatforms is an undocumented setting read via .passthrough()
|
|
105
|
+
// It restricts sandboxing to specific platforms (e.g., ["macos"]).
|
|
106
|
+
//
|
|
107
|
+
// Added to unblock NVIDIA enterprise rollout: they want to enable
|
|
108
|
+
// autoAllowBashIfSandboxed but only on macOS initially, since Linux/WSL
|
|
109
|
+
// sandbox support is newer and less battle-tested. This allows them to
|
|
110
|
+
// set enabledPlatforms: ["macos"] to disable sandbox (and auto-allow)
|
|
111
|
+
// on other platforms until they're ready to expand.
|
|
112
|
+
autoAllowBashIfSandboxed: z.boolean().optional(),
|
|
113
|
+
allowUnsandboxedCommands: z
|
|
114
|
+
.boolean()
|
|
115
|
+
.optional()
|
|
116
|
+
.describe(
|
|
117
|
+
'Allow commands to run outside the sandbox via the dangerouslyDisableSandbox parameter. ' +
|
|
118
|
+
'When false, the dangerouslyDisableSandbox parameter is completely ignored and all commands must run sandboxed. ' +
|
|
119
|
+
'Default: true.',
|
|
120
|
+
),
|
|
121
|
+
network: SandboxNetworkConfigSchema(),
|
|
122
|
+
filesystem: SandboxFilesystemConfigSchema(),
|
|
123
|
+
ignoreViolations: z.record(z.string(), z.array(z.string())).optional(),
|
|
124
|
+
enableWeakerNestedSandbox: z.boolean().optional(),
|
|
125
|
+
enableWeakerNetworkIsolation: z
|
|
126
|
+
.boolean()
|
|
127
|
+
.optional()
|
|
128
|
+
.describe(
|
|
129
|
+
'macOS only: Allow access to com.apple.trustd.agent in the sandbox. ' +
|
|
130
|
+
'Needed for Go-based CLI tools (gh, gcloud, terraform, etc.) to verify TLS certificates ' +
|
|
131
|
+
'when using httpProxyPort with a MITM proxy and custom CA. ' +
|
|
132
|
+
'**Reduces security** — opens a potential data exfiltration vector through the trustd service. Default: false',
|
|
133
|
+
),
|
|
134
|
+
excludedCommands: z.array(z.string()).optional(),
|
|
135
|
+
ripgrep: z
|
|
136
|
+
.object({
|
|
137
|
+
command: z.string(),
|
|
138
|
+
args: z.array(z.string()).optional(),
|
|
139
|
+
})
|
|
140
|
+
.optional()
|
|
141
|
+
.describe('Custom ripgrep configuration for bundled ripgrep support'),
|
|
142
|
+
})
|
|
143
|
+
.passthrough(),
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
// Inferred types from schemas
|
|
147
|
+
export type SandboxSettings = z.infer<ReturnType<typeof SandboxSettingsSchema>>
|
|
148
|
+
export type SandboxNetworkConfig = NonNullable<
|
|
149
|
+
z.infer<ReturnType<typeof SandboxNetworkConfigSchema>>
|
|
150
|
+
>
|
|
151
|
+
export type SandboxFilesystemConfig = NonNullable<
|
|
152
|
+
z.infer<ReturnType<typeof SandboxFilesystemConfigSchema>>
|
|
153
|
+
>
|
|
154
|
+
export type SandboxIgnoreViolations = NonNullable<
|
|
155
|
+
SandboxSettings['ignoreViolations']
|
|
156
|
+
>
|