@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,825 @@
|
|
|
1
|
+
import { DiagLogLevel, diag, trace } from '@opentelemetry/api'
|
|
2
|
+
import { logs } from '@opentelemetry/api-logs'
|
|
3
|
+
// OTLP/Prometheus exporters are dynamically imported inside the protocol
|
|
4
|
+
// switch statements below. A process uses at most one protocol variant per
|
|
5
|
+
// signal, but static imports would load all 6 (~1.2MB) on every startup.
|
|
6
|
+
import {
|
|
7
|
+
envDetector,
|
|
8
|
+
hostDetector,
|
|
9
|
+
osDetector,
|
|
10
|
+
resourceFromAttributes,
|
|
11
|
+
} from '@opentelemetry/resources'
|
|
12
|
+
import {
|
|
13
|
+
BatchLogRecordProcessor,
|
|
14
|
+
ConsoleLogRecordExporter,
|
|
15
|
+
LoggerProvider,
|
|
16
|
+
} from '@opentelemetry/sdk-logs'
|
|
17
|
+
import {
|
|
18
|
+
ConsoleMetricExporter,
|
|
19
|
+
MeterProvider,
|
|
20
|
+
PeriodicExportingMetricReader,
|
|
21
|
+
} from '@opentelemetry/sdk-metrics'
|
|
22
|
+
import {
|
|
23
|
+
BasicTracerProvider,
|
|
24
|
+
BatchSpanProcessor,
|
|
25
|
+
ConsoleSpanExporter,
|
|
26
|
+
} from '@opentelemetry/sdk-trace-base'
|
|
27
|
+
import {
|
|
28
|
+
ATTR_SERVICE_NAME,
|
|
29
|
+
ATTR_SERVICE_VERSION,
|
|
30
|
+
SEMRESATTRS_HOST_ARCH,
|
|
31
|
+
} from '@opentelemetry/semantic-conventions'
|
|
32
|
+
import { HttpsProxyAgent } from 'https-proxy-agent'
|
|
33
|
+
import {
|
|
34
|
+
getLoggerProvider,
|
|
35
|
+
getMeterProvider,
|
|
36
|
+
getTracerProvider,
|
|
37
|
+
setEventLogger,
|
|
38
|
+
setLoggerProvider,
|
|
39
|
+
setMeterProvider,
|
|
40
|
+
setTracerProvider,
|
|
41
|
+
} from 'src/bootstrap/state.js'
|
|
42
|
+
import {
|
|
43
|
+
getOtelHeadersFromHelper,
|
|
44
|
+
getSubscriptionType,
|
|
45
|
+
is1PApiCustomer,
|
|
46
|
+
isClaudeAISubscriber,
|
|
47
|
+
} from 'src/utils/auth.js'
|
|
48
|
+
import { getPlatform, getWslVersion } from 'src/utils/platform.js'
|
|
49
|
+
|
|
50
|
+
import { getCACertificates } from '../caCerts.js'
|
|
51
|
+
import { registerCleanup } from '../cleanupRegistry.js'
|
|
52
|
+
import { getHasFormattedOutput, logForDebugging } from '../debug.js'
|
|
53
|
+
import { isEnvTruthy } from '../envUtils.js'
|
|
54
|
+
import { errorMessage } from '../errors.js'
|
|
55
|
+
import { getMTLSConfig } from '../mtls.js'
|
|
56
|
+
import { getProxyUrl, shouldBypassProxy } from '../proxy.js'
|
|
57
|
+
import { getSettings_DEPRECATED } from '../settings/settings.js'
|
|
58
|
+
import { jsonStringify } from '../slowOperations.js'
|
|
59
|
+
import { profileCheckpoint } from '../startupProfiler.js'
|
|
60
|
+
import { isBetaTracingEnabled } from './betaSessionTracing.js'
|
|
61
|
+
import { BigQueryMetricsExporter } from './bigqueryExporter.js'
|
|
62
|
+
import { ClaudeCodeDiagLogger } from './logger.js'
|
|
63
|
+
import { initializePerfettoTracing } from './perfettoTracing.js'
|
|
64
|
+
import {
|
|
65
|
+
endInteractionSpan,
|
|
66
|
+
isEnhancedTelemetryEnabled,
|
|
67
|
+
} from './sessionTracing.js'
|
|
68
|
+
|
|
69
|
+
const DEFAULT_METRICS_EXPORT_INTERVAL_MS = 60000
|
|
70
|
+
const DEFAULT_LOGS_EXPORT_INTERVAL_MS = 5000
|
|
71
|
+
const DEFAULT_TRACES_EXPORT_INTERVAL_MS = 5000
|
|
72
|
+
|
|
73
|
+
class TelemetryTimeoutError extends Error {}
|
|
74
|
+
|
|
75
|
+
function telemetryTimeout(ms: number, message: string): Promise<never> {
|
|
76
|
+
return new Promise((_, reject) => {
|
|
77
|
+
setTimeout(
|
|
78
|
+
(rej: (e: Error) => void, msg: string) =>
|
|
79
|
+
rej(new TelemetryTimeoutError(msg)),
|
|
80
|
+
ms,
|
|
81
|
+
reject,
|
|
82
|
+
message,
|
|
83
|
+
).unref()
|
|
84
|
+
})
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function bootstrapTelemetry() {
|
|
88
|
+
if (process.env.USER_TYPE === 'ant') {
|
|
89
|
+
// Read from ANT_ prefixed variables that are defined at build time
|
|
90
|
+
if (process.env.ANT_OTEL_METRICS_EXPORTER) {
|
|
91
|
+
process.env.OTEL_METRICS_EXPORTER = process.env.ANT_OTEL_METRICS_EXPORTER
|
|
92
|
+
}
|
|
93
|
+
if (process.env.ANT_OTEL_LOGS_EXPORTER) {
|
|
94
|
+
process.env.OTEL_LOGS_EXPORTER = process.env.ANT_OTEL_LOGS_EXPORTER
|
|
95
|
+
}
|
|
96
|
+
if (process.env.ANT_OTEL_TRACES_EXPORTER) {
|
|
97
|
+
process.env.OTEL_TRACES_EXPORTER = process.env.ANT_OTEL_TRACES_EXPORTER
|
|
98
|
+
}
|
|
99
|
+
if (process.env.ANT_OTEL_EXPORTER_OTLP_PROTOCOL) {
|
|
100
|
+
process.env.OTEL_EXPORTER_OTLP_PROTOCOL =
|
|
101
|
+
process.env.ANT_OTEL_EXPORTER_OTLP_PROTOCOL
|
|
102
|
+
}
|
|
103
|
+
if (process.env.ANT_OTEL_EXPORTER_OTLP_ENDPOINT) {
|
|
104
|
+
process.env.OTEL_EXPORTER_OTLP_ENDPOINT =
|
|
105
|
+
process.env.ANT_OTEL_EXPORTER_OTLP_ENDPOINT
|
|
106
|
+
}
|
|
107
|
+
if (process.env.ANT_OTEL_EXPORTER_OTLP_HEADERS) {
|
|
108
|
+
process.env.OTEL_EXPORTER_OTLP_HEADERS =
|
|
109
|
+
process.env.ANT_OTEL_EXPORTER_OTLP_HEADERS
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Set default tempoality to 'delta' because it's the more sane default
|
|
114
|
+
if (!process.env.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE) {
|
|
115
|
+
process.env.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE = 'delta'
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Per OTEL spec, "none" means "no automatically configured exporter for this signal".
|
|
120
|
+
// https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#exporter-selection
|
|
121
|
+
export function parseExporterTypes(value: string | undefined): string[] {
|
|
122
|
+
return (value || '')
|
|
123
|
+
.trim()
|
|
124
|
+
.split(',')
|
|
125
|
+
.filter(Boolean)
|
|
126
|
+
.map(t => t.trim())
|
|
127
|
+
.filter(t => t !== 'none')
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
async function getOtlpReaders() {
|
|
131
|
+
const exporterTypes = parseExporterTypes(process.env.OTEL_METRICS_EXPORTER)
|
|
132
|
+
const exportInterval = parseInt(
|
|
133
|
+
process.env.OTEL_METRIC_EXPORT_INTERVAL ||
|
|
134
|
+
DEFAULT_METRICS_EXPORT_INTERVAL_MS.toString(),
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
const exporters = []
|
|
138
|
+
for (const exporterType of exporterTypes) {
|
|
139
|
+
if (exporterType === 'console') {
|
|
140
|
+
// Custom console exporter that shows resource attributes
|
|
141
|
+
const consoleExporter = new ConsoleMetricExporter()
|
|
142
|
+
const originalExport = consoleExporter.export.bind(consoleExporter)
|
|
143
|
+
|
|
144
|
+
consoleExporter.export = (metrics, callback) => {
|
|
145
|
+
// Log resource attributes once at the start
|
|
146
|
+
if (metrics.resource && metrics.resource.attributes) {
|
|
147
|
+
// The console exporter is for debugging, so console output is intentional here
|
|
148
|
+
|
|
149
|
+
logForDebugging('\n=== Resource Attributes ===')
|
|
150
|
+
logForDebugging(jsonStringify(metrics.resource.attributes))
|
|
151
|
+
logForDebugging('===========================\n')
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return originalExport(metrics, callback)
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
exporters.push(consoleExporter)
|
|
158
|
+
} else if (exporterType === 'otlp') {
|
|
159
|
+
const protocol =
|
|
160
|
+
process.env.OTEL_EXPORTER_OTLP_METRICS_PROTOCOL?.trim() ||
|
|
161
|
+
process.env.OTEL_EXPORTER_OTLP_PROTOCOL?.trim()
|
|
162
|
+
|
|
163
|
+
const httpConfig = getOTLPExporterConfig()
|
|
164
|
+
|
|
165
|
+
switch (protocol) {
|
|
166
|
+
case 'grpc': {
|
|
167
|
+
// Lazy-import to keep @grpc/grpc-js (~700KB) out of the telemetry chunk
|
|
168
|
+
// when the protocol is http/protobuf (ant default) or http/json.
|
|
169
|
+
const { OTLPMetricExporter } = await import(
|
|
170
|
+
'@opentelemetry/exporter-metrics-otlp-grpc'
|
|
171
|
+
)
|
|
172
|
+
exporters.push(new OTLPMetricExporter())
|
|
173
|
+
break
|
|
174
|
+
}
|
|
175
|
+
case 'http/json': {
|
|
176
|
+
const { OTLPMetricExporter } = await import(
|
|
177
|
+
'@opentelemetry/exporter-metrics-otlp-http'
|
|
178
|
+
)
|
|
179
|
+
exporters.push(new OTLPMetricExporter(httpConfig))
|
|
180
|
+
break
|
|
181
|
+
}
|
|
182
|
+
case 'http/protobuf': {
|
|
183
|
+
const { OTLPMetricExporter } = await import(
|
|
184
|
+
'@opentelemetry/exporter-metrics-otlp-proto'
|
|
185
|
+
)
|
|
186
|
+
exporters.push(new OTLPMetricExporter(httpConfig))
|
|
187
|
+
break
|
|
188
|
+
}
|
|
189
|
+
default:
|
|
190
|
+
throw new Error(
|
|
191
|
+
`Unknown protocol set in OTEL_EXPORTER_OTLP_METRICS_PROTOCOL or OTEL_EXPORTER_OTLP_PROTOCOL env var: ${protocol}`,
|
|
192
|
+
)
|
|
193
|
+
}
|
|
194
|
+
} else if (exporterType === 'prometheus') {
|
|
195
|
+
const { PrometheusExporter } = await import(
|
|
196
|
+
'@opentelemetry/exporter-prometheus'
|
|
197
|
+
)
|
|
198
|
+
exporters.push(new PrometheusExporter())
|
|
199
|
+
} else {
|
|
200
|
+
throw new Error(
|
|
201
|
+
`Unknown exporter type set in OTEL_EXPORTER_OTLP_METRICS_PROTOCOL or OTEL_EXPORTER_OTLP_PROTOCOL env var: ${exporterType}`,
|
|
202
|
+
)
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return exporters.map(exporter => {
|
|
207
|
+
if ('export' in exporter) {
|
|
208
|
+
return new PeriodicExportingMetricReader({
|
|
209
|
+
exporter,
|
|
210
|
+
exportIntervalMillis: exportInterval,
|
|
211
|
+
})
|
|
212
|
+
}
|
|
213
|
+
return exporter
|
|
214
|
+
})
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
async function getOtlpLogExporters() {
|
|
218
|
+
const exporterTypes = parseExporterTypes(process.env.OTEL_LOGS_EXPORTER)
|
|
219
|
+
|
|
220
|
+
const protocol =
|
|
221
|
+
process.env.OTEL_EXPORTER_OTLP_LOGS_PROTOCOL?.trim() ||
|
|
222
|
+
process.env.OTEL_EXPORTER_OTLP_PROTOCOL?.trim()
|
|
223
|
+
const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT
|
|
224
|
+
|
|
225
|
+
logForDebugging(
|
|
226
|
+
`[3P telemetry] getOtlpLogExporters: types=${jsonStringify(exporterTypes)}, protocol=${protocol}, endpoint=${endpoint}`,
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
const exporters = []
|
|
230
|
+
for (const exporterType of exporterTypes) {
|
|
231
|
+
if (exporterType === 'console') {
|
|
232
|
+
exporters.push(new ConsoleLogRecordExporter())
|
|
233
|
+
} else if (exporterType === 'otlp') {
|
|
234
|
+
const httpConfig = getOTLPExporterConfig()
|
|
235
|
+
|
|
236
|
+
switch (protocol) {
|
|
237
|
+
case 'grpc': {
|
|
238
|
+
const { OTLPLogExporter } = await import(
|
|
239
|
+
'@opentelemetry/exporter-logs-otlp-grpc'
|
|
240
|
+
)
|
|
241
|
+
exporters.push(new OTLPLogExporter())
|
|
242
|
+
break
|
|
243
|
+
}
|
|
244
|
+
case 'http/json': {
|
|
245
|
+
const { OTLPLogExporter } = await import(
|
|
246
|
+
'@opentelemetry/exporter-logs-otlp-http'
|
|
247
|
+
)
|
|
248
|
+
exporters.push(new OTLPLogExporter(httpConfig))
|
|
249
|
+
break
|
|
250
|
+
}
|
|
251
|
+
case 'http/protobuf': {
|
|
252
|
+
const { OTLPLogExporter } = await import(
|
|
253
|
+
'@opentelemetry/exporter-logs-otlp-proto'
|
|
254
|
+
)
|
|
255
|
+
exporters.push(new OTLPLogExporter(httpConfig))
|
|
256
|
+
break
|
|
257
|
+
}
|
|
258
|
+
default:
|
|
259
|
+
throw new Error(
|
|
260
|
+
`Unknown protocol set in OTEL_EXPORTER_OTLP_LOGS_PROTOCOL or OTEL_EXPORTER_OTLP_PROTOCOL env var: ${protocol}`,
|
|
261
|
+
)
|
|
262
|
+
}
|
|
263
|
+
} else {
|
|
264
|
+
throw new Error(
|
|
265
|
+
`Unknown exporter type set in OTEL_LOGS_EXPORTER env var: ${exporterType}`,
|
|
266
|
+
)
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return exporters
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
async function getOtlpTraceExporters() {
|
|
274
|
+
const exporterTypes = parseExporterTypes(process.env.OTEL_TRACES_EXPORTER)
|
|
275
|
+
|
|
276
|
+
const exporters = []
|
|
277
|
+
for (const exporterType of exporterTypes) {
|
|
278
|
+
if (exporterType === 'console') {
|
|
279
|
+
exporters.push(new ConsoleSpanExporter())
|
|
280
|
+
} else if (exporterType === 'otlp') {
|
|
281
|
+
const protocol =
|
|
282
|
+
process.env.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL?.trim() ||
|
|
283
|
+
process.env.OTEL_EXPORTER_OTLP_PROTOCOL?.trim()
|
|
284
|
+
|
|
285
|
+
const httpConfig = getOTLPExporterConfig()
|
|
286
|
+
|
|
287
|
+
switch (protocol) {
|
|
288
|
+
case 'grpc': {
|
|
289
|
+
const { OTLPTraceExporter } = await import(
|
|
290
|
+
'@opentelemetry/exporter-trace-otlp-grpc'
|
|
291
|
+
)
|
|
292
|
+
exporters.push(new OTLPTraceExporter())
|
|
293
|
+
break
|
|
294
|
+
}
|
|
295
|
+
case 'http/json': {
|
|
296
|
+
const { OTLPTraceExporter } = await import(
|
|
297
|
+
'@opentelemetry/exporter-trace-otlp-http'
|
|
298
|
+
)
|
|
299
|
+
exporters.push(new OTLPTraceExporter(httpConfig))
|
|
300
|
+
break
|
|
301
|
+
}
|
|
302
|
+
case 'http/protobuf': {
|
|
303
|
+
const { OTLPTraceExporter } = await import(
|
|
304
|
+
'@opentelemetry/exporter-trace-otlp-proto'
|
|
305
|
+
)
|
|
306
|
+
exporters.push(new OTLPTraceExporter(httpConfig))
|
|
307
|
+
break
|
|
308
|
+
}
|
|
309
|
+
default:
|
|
310
|
+
throw new Error(
|
|
311
|
+
`Unknown protocol set in OTEL_EXPORTER_OTLP_TRACES_PROTOCOL or OTEL_EXPORTER_OTLP_PROTOCOL env var: ${protocol}`,
|
|
312
|
+
)
|
|
313
|
+
}
|
|
314
|
+
} else {
|
|
315
|
+
throw new Error(
|
|
316
|
+
`Unknown exporter type set in OTEL_TRACES_EXPORTER env var: ${exporterType}`,
|
|
317
|
+
)
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
return exporters
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export function isTelemetryEnabled() {
|
|
325
|
+
return isEnvTruthy(process.env.CLAUDE_CODE_ENABLE_TELEMETRY)
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
function getBigQueryExportingReader() {
|
|
329
|
+
const bigqueryExporter = new BigQueryMetricsExporter()
|
|
330
|
+
return new PeriodicExportingMetricReader({
|
|
331
|
+
exporter: bigqueryExporter,
|
|
332
|
+
exportIntervalMillis: 5 * 60 * 1000, // 5mins for BigQuery metrics exporter to reduce load
|
|
333
|
+
})
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
function isBigQueryMetricsEnabled() {
|
|
337
|
+
// BigQuery metrics are enabled for:
|
|
338
|
+
// 1. API customers (excluding Claude.ai subscribers and Bedrock/Vertex)
|
|
339
|
+
// 2. Claude for Enterprise (C4E) users
|
|
340
|
+
// 3. Claude for Teams users
|
|
341
|
+
const subscriptionType = getSubscriptionType()
|
|
342
|
+
const isC4EOrTeamUser =
|
|
343
|
+
isClaudeAISubscriber() &&
|
|
344
|
+
(subscriptionType === 'enterprise' || subscriptionType === 'team')
|
|
345
|
+
|
|
346
|
+
return is1PApiCustomer() || isC4EOrTeamUser
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* Initialize beta tracing - a separate code path for detailed debugging.
|
|
351
|
+
* Uses BETA_TRACING_ENDPOINT instead of OTEL_EXPORTER_OTLP_ENDPOINT.
|
|
352
|
+
*/
|
|
353
|
+
async function initializeBetaTracing(
|
|
354
|
+
resource: ReturnType<typeof resourceFromAttributes>,
|
|
355
|
+
): Promise<void> {
|
|
356
|
+
const endpoint = process.env.BETA_TRACING_ENDPOINT
|
|
357
|
+
if (!endpoint) {
|
|
358
|
+
return
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
const [{ OTLPTraceExporter }, { OTLPLogExporter }] = await Promise.all([
|
|
362
|
+
import('@opentelemetry/exporter-trace-otlp-http'),
|
|
363
|
+
import('@opentelemetry/exporter-logs-otlp-http'),
|
|
364
|
+
])
|
|
365
|
+
|
|
366
|
+
const httpConfig = {
|
|
367
|
+
url: `${endpoint}/v1/traces`,
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
const logHttpConfig = {
|
|
371
|
+
url: `${endpoint}/v1/logs`,
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// Initialize trace exporter
|
|
375
|
+
const traceExporter = new OTLPTraceExporter(httpConfig)
|
|
376
|
+
const spanProcessor = new BatchSpanProcessor(traceExporter, {
|
|
377
|
+
scheduledDelayMillis: DEFAULT_TRACES_EXPORT_INTERVAL_MS,
|
|
378
|
+
})
|
|
379
|
+
|
|
380
|
+
const tracerProvider = new BasicTracerProvider({
|
|
381
|
+
resource,
|
|
382
|
+
spanProcessors: [spanProcessor],
|
|
383
|
+
})
|
|
384
|
+
|
|
385
|
+
trace.setGlobalTracerProvider(tracerProvider)
|
|
386
|
+
setTracerProvider(tracerProvider)
|
|
387
|
+
|
|
388
|
+
// Initialize log exporter
|
|
389
|
+
const logExporter = new OTLPLogExporter(logHttpConfig)
|
|
390
|
+
const loggerProvider = new LoggerProvider({
|
|
391
|
+
resource,
|
|
392
|
+
processors: [
|
|
393
|
+
new BatchLogRecordProcessor(logExporter, {
|
|
394
|
+
scheduledDelayMillis: DEFAULT_LOGS_EXPORT_INTERVAL_MS,
|
|
395
|
+
}),
|
|
396
|
+
],
|
|
397
|
+
})
|
|
398
|
+
|
|
399
|
+
logs.setGlobalLoggerProvider(loggerProvider)
|
|
400
|
+
setLoggerProvider(loggerProvider)
|
|
401
|
+
|
|
402
|
+
// Initialize event logger
|
|
403
|
+
const eventLogger = logs.getLogger(
|
|
404
|
+
'com.anthropic.claude_code.events',
|
|
405
|
+
MACRO.VERSION,
|
|
406
|
+
)
|
|
407
|
+
setEventLogger(eventLogger)
|
|
408
|
+
|
|
409
|
+
// Setup flush handlers - flush both logs AND traces
|
|
410
|
+
process.on('beforeExit', async () => {
|
|
411
|
+
await loggerProvider?.forceFlush()
|
|
412
|
+
await tracerProvider?.forceFlush()
|
|
413
|
+
})
|
|
414
|
+
|
|
415
|
+
process.on('exit', () => {
|
|
416
|
+
void loggerProvider?.forceFlush()
|
|
417
|
+
void tracerProvider?.forceFlush()
|
|
418
|
+
})
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
export async function initializeTelemetry() {
|
|
422
|
+
profileCheckpoint('telemetry_init_start')
|
|
423
|
+
bootstrapTelemetry()
|
|
424
|
+
|
|
425
|
+
// Console exporters call console.dir on a timer (5s logs/traces, 60s
|
|
426
|
+
// metrics), writing pretty-printed objects to stdout. In stream-json
|
|
427
|
+
// mode stdout is the SDK message channel; the first line (`{`) breaks
|
|
428
|
+
// the SDK's line reader. Stripped here (not main.tsx) because init.ts
|
|
429
|
+
// re-runs applyConfigEnvironmentVariables() inside initializeTelemetry-
|
|
430
|
+
// AfterTrust for remote-managed-settings users, and bootstrapTelemetry
|
|
431
|
+
// above copies ANT_OTEL_* for ant users — both would undo an earlier strip.
|
|
432
|
+
if (getHasFormattedOutput()) {
|
|
433
|
+
for (const key of [
|
|
434
|
+
'OTEL_METRICS_EXPORTER',
|
|
435
|
+
'OTEL_LOGS_EXPORTER',
|
|
436
|
+
'OTEL_TRACES_EXPORTER',
|
|
437
|
+
] as const) {
|
|
438
|
+
const v = process.env[key]
|
|
439
|
+
if (v?.includes('console')) {
|
|
440
|
+
process.env[key] = v
|
|
441
|
+
.split(',')
|
|
442
|
+
.map(s => s.trim())
|
|
443
|
+
.filter(s => s !== 'console')
|
|
444
|
+
.join(',')
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
diag.setLogger(new ClaudeCodeDiagLogger(), DiagLogLevel.ERROR)
|
|
450
|
+
|
|
451
|
+
// Initialize Perfetto tracing (independent of OTEL)
|
|
452
|
+
// Enable via CLAUDE_CODE_PERFETTO_TRACE=1 or CLAUDE_CODE_PERFETTO_TRACE=<path>
|
|
453
|
+
initializePerfettoTracing()
|
|
454
|
+
|
|
455
|
+
const readers = []
|
|
456
|
+
|
|
457
|
+
// Add customer exporters (if enabled)
|
|
458
|
+
const telemetryEnabled = isTelemetryEnabled()
|
|
459
|
+
logForDebugging(
|
|
460
|
+
`[3P telemetry] isTelemetryEnabled=${telemetryEnabled} (CLAUDE_CODE_ENABLE_TELEMETRY=${process.env.CLAUDE_CODE_ENABLE_TELEMETRY})`,
|
|
461
|
+
)
|
|
462
|
+
if (telemetryEnabled) {
|
|
463
|
+
readers.push(...(await getOtlpReaders()))
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// Add BigQuery exporter (for API customers, C4E users, and internal users)
|
|
467
|
+
if (isBigQueryMetricsEnabled()) {
|
|
468
|
+
readers.push(getBigQueryExportingReader())
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
// Create base resource with service attributes
|
|
472
|
+
const platform = getPlatform()
|
|
473
|
+
const baseAttributes: Record<string, string> = {
|
|
474
|
+
[ATTR_SERVICE_NAME]: 'claude-code',
|
|
475
|
+
[ATTR_SERVICE_VERSION]: MACRO.VERSION,
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
// Add WSL-specific attributes if running on WSL
|
|
479
|
+
if (platform === 'wsl') {
|
|
480
|
+
const wslVersion = getWslVersion()
|
|
481
|
+
if (wslVersion) {
|
|
482
|
+
baseAttributes['wsl.version'] = wslVersion
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
const baseResource = resourceFromAttributes(baseAttributes)
|
|
487
|
+
|
|
488
|
+
// Use OpenTelemetry detectors
|
|
489
|
+
const osResource = resourceFromAttributes(
|
|
490
|
+
osDetector.detect().attributes || {},
|
|
491
|
+
)
|
|
492
|
+
|
|
493
|
+
// Extract only host.arch from hostDetector
|
|
494
|
+
const hostDetected = hostDetector.detect()
|
|
495
|
+
const hostArchAttributes = hostDetected.attributes?.[SEMRESATTRS_HOST_ARCH]
|
|
496
|
+
? {
|
|
497
|
+
[SEMRESATTRS_HOST_ARCH]: hostDetected.attributes[SEMRESATTRS_HOST_ARCH],
|
|
498
|
+
}
|
|
499
|
+
: {}
|
|
500
|
+
const hostArchResource = resourceFromAttributes(hostArchAttributes)
|
|
501
|
+
|
|
502
|
+
const envResource = resourceFromAttributes(
|
|
503
|
+
envDetector.detect().attributes || {},
|
|
504
|
+
)
|
|
505
|
+
|
|
506
|
+
// Merge resources - later resources take precedence
|
|
507
|
+
const resource = baseResource
|
|
508
|
+
.merge(osResource)
|
|
509
|
+
.merge(hostArchResource)
|
|
510
|
+
.merge(envResource)
|
|
511
|
+
|
|
512
|
+
// Check if beta tracing is enabled - this is a separate code path
|
|
513
|
+
// Available to all users who set ENABLE_BETA_TRACING_DETAILED=1 and BETA_TRACING_ENDPOINT
|
|
514
|
+
if (isBetaTracingEnabled()) {
|
|
515
|
+
void initializeBetaTracing(resource).catch(e =>
|
|
516
|
+
logForDebugging(`Beta tracing init failed: ${e}`, { level: 'error' }),
|
|
517
|
+
)
|
|
518
|
+
// Still set up meter provider for metrics (but skip regular logs/traces setup)
|
|
519
|
+
const meterProvider = new MeterProvider({
|
|
520
|
+
resource,
|
|
521
|
+
views: [],
|
|
522
|
+
readers,
|
|
523
|
+
})
|
|
524
|
+
setMeterProvider(meterProvider)
|
|
525
|
+
|
|
526
|
+
// Register shutdown for beta tracing
|
|
527
|
+
const shutdownTelemetry = async () => {
|
|
528
|
+
const timeoutMs = parseInt(
|
|
529
|
+
process.env.CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS || '2000',
|
|
530
|
+
)
|
|
531
|
+
try {
|
|
532
|
+
endInteractionSpan()
|
|
533
|
+
|
|
534
|
+
// Force flush + shutdown together inside the timeout. Previously forceFlush
|
|
535
|
+
// was awaited unbounded BEFORE the race, blocking exit on slow OTLP endpoints.
|
|
536
|
+
// Each provider's flush→shutdown is chained independently so a slow logger
|
|
537
|
+
// flush doesn't delay meterProvider/tracerProvider shutdown (no waterfall).
|
|
538
|
+
const loggerProvider = getLoggerProvider()
|
|
539
|
+
const tracerProvider = getTracerProvider()
|
|
540
|
+
|
|
541
|
+
const chains: Promise<void>[] = [meterProvider.shutdown()]
|
|
542
|
+
if (loggerProvider) {
|
|
543
|
+
chains.push(
|
|
544
|
+
loggerProvider.forceFlush().then(() => loggerProvider.shutdown()),
|
|
545
|
+
)
|
|
546
|
+
}
|
|
547
|
+
if (tracerProvider) {
|
|
548
|
+
chains.push(
|
|
549
|
+
tracerProvider.forceFlush().then(() => tracerProvider.shutdown()),
|
|
550
|
+
)
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
await Promise.race([
|
|
554
|
+
Promise.all(chains),
|
|
555
|
+
telemetryTimeout(timeoutMs, 'OpenTelemetry shutdown timeout'),
|
|
556
|
+
])
|
|
557
|
+
} catch {
|
|
558
|
+
// Ignore shutdown errors
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
registerCleanup(shutdownTelemetry)
|
|
562
|
+
|
|
563
|
+
return meterProvider.getMeter('com.anthropic.claude_code', MACRO.VERSION)
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
const meterProvider = new MeterProvider({
|
|
567
|
+
resource,
|
|
568
|
+
views: [],
|
|
569
|
+
readers,
|
|
570
|
+
})
|
|
571
|
+
|
|
572
|
+
// Store reference in state for flushing
|
|
573
|
+
setMeterProvider(meterProvider)
|
|
574
|
+
|
|
575
|
+
// Initialize logs if telemetry is enabled
|
|
576
|
+
if (telemetryEnabled) {
|
|
577
|
+
const logExporters = await getOtlpLogExporters()
|
|
578
|
+
logForDebugging(
|
|
579
|
+
`[3P telemetry] Created ${logExporters.length} log exporter(s)`,
|
|
580
|
+
)
|
|
581
|
+
|
|
582
|
+
if (logExporters.length > 0) {
|
|
583
|
+
const loggerProvider = new LoggerProvider({
|
|
584
|
+
resource,
|
|
585
|
+
// Add batch processors for each exporter
|
|
586
|
+
processors: logExporters.map(
|
|
587
|
+
exporter =>
|
|
588
|
+
new BatchLogRecordProcessor(exporter, {
|
|
589
|
+
scheduledDelayMillis: parseInt(
|
|
590
|
+
process.env.OTEL_LOGS_EXPORT_INTERVAL ||
|
|
591
|
+
DEFAULT_LOGS_EXPORT_INTERVAL_MS.toString(),
|
|
592
|
+
),
|
|
593
|
+
}),
|
|
594
|
+
),
|
|
595
|
+
})
|
|
596
|
+
|
|
597
|
+
// Register the logger provider globally
|
|
598
|
+
logs.setGlobalLoggerProvider(loggerProvider)
|
|
599
|
+
setLoggerProvider(loggerProvider)
|
|
600
|
+
|
|
601
|
+
// Initialize event logger
|
|
602
|
+
const eventLogger = logs.getLogger(
|
|
603
|
+
'com.anthropic.claude_code.events',
|
|
604
|
+
MACRO.VERSION,
|
|
605
|
+
)
|
|
606
|
+
setEventLogger(eventLogger)
|
|
607
|
+
logForDebugging('[3P telemetry] Event logger set successfully')
|
|
608
|
+
|
|
609
|
+
// 'beforeExit' is emitted when Node.js empties its event loop and has no additional work to schedule.
|
|
610
|
+
// Unlike 'exit', it allows us to perform async operations, so it works well for letting
|
|
611
|
+
// network requests complete before the process exits naturally.
|
|
612
|
+
process.on('beforeExit', async () => {
|
|
613
|
+
await loggerProvider?.forceFlush()
|
|
614
|
+
// Also flush traces - they use BatchSpanProcessor which needs explicit flush
|
|
615
|
+
const tracerProvider = getTracerProvider()
|
|
616
|
+
await tracerProvider?.forceFlush()
|
|
617
|
+
})
|
|
618
|
+
|
|
619
|
+
process.on('exit', () => {
|
|
620
|
+
// Final attempt to flush logs and traces
|
|
621
|
+
void loggerProvider?.forceFlush()
|
|
622
|
+
void getTracerProvider()?.forceFlush()
|
|
623
|
+
})
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
// Initialize tracing if enhanced telemetry is enabled (BETA)
|
|
628
|
+
if (telemetryEnabled && isEnhancedTelemetryEnabled()) {
|
|
629
|
+
const traceExporters = await getOtlpTraceExporters()
|
|
630
|
+
if (traceExporters.length > 0) {
|
|
631
|
+
// Create span processors for each exporter
|
|
632
|
+
const spanProcessors = traceExporters.map(
|
|
633
|
+
exporter =>
|
|
634
|
+
new BatchSpanProcessor(exporter, {
|
|
635
|
+
scheduledDelayMillis: parseInt(
|
|
636
|
+
process.env.OTEL_TRACES_EXPORT_INTERVAL ||
|
|
637
|
+
DEFAULT_TRACES_EXPORT_INTERVAL_MS.toString(),
|
|
638
|
+
),
|
|
639
|
+
}),
|
|
640
|
+
)
|
|
641
|
+
|
|
642
|
+
const tracerProvider = new BasicTracerProvider({
|
|
643
|
+
resource,
|
|
644
|
+
spanProcessors,
|
|
645
|
+
})
|
|
646
|
+
|
|
647
|
+
// Register the tracer provider globally
|
|
648
|
+
trace.setGlobalTracerProvider(tracerProvider)
|
|
649
|
+
setTracerProvider(tracerProvider)
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
// Shutdown metrics and logs on exit (flushes and closes exporters)
|
|
654
|
+
const shutdownTelemetry = async () => {
|
|
655
|
+
const timeoutMs = parseInt(
|
|
656
|
+
process.env.CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS || '2000',
|
|
657
|
+
)
|
|
658
|
+
|
|
659
|
+
try {
|
|
660
|
+
// End any active interaction span before shutdown
|
|
661
|
+
endInteractionSpan()
|
|
662
|
+
|
|
663
|
+
const shutdownPromises = [meterProvider.shutdown()]
|
|
664
|
+
const loggerProvider = getLoggerProvider()
|
|
665
|
+
if (loggerProvider) {
|
|
666
|
+
shutdownPromises.push(loggerProvider.shutdown())
|
|
667
|
+
}
|
|
668
|
+
const tracerProvider = getTracerProvider()
|
|
669
|
+
if (tracerProvider) {
|
|
670
|
+
shutdownPromises.push(tracerProvider.shutdown())
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
await Promise.race([
|
|
674
|
+
Promise.all(shutdownPromises),
|
|
675
|
+
telemetryTimeout(timeoutMs, 'OpenTelemetry shutdown timeout'),
|
|
676
|
+
])
|
|
677
|
+
} catch (error) {
|
|
678
|
+
if (error instanceof Error && error.message.includes('timeout')) {
|
|
679
|
+
logForDebugging(
|
|
680
|
+
`
|
|
681
|
+
OpenTelemetry telemetry flush timed out after ${timeoutMs}ms
|
|
682
|
+
|
|
683
|
+
To resolve this issue, you can:
|
|
684
|
+
1. Increase the timeout by setting CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS env var (e.g., 5000 for 5 seconds)
|
|
685
|
+
2. Check if your OpenTelemetry backend is experiencing scalability issues
|
|
686
|
+
3. Disable OpenTelemetry by unsetting CLAUDE_CODE_ENABLE_TELEMETRY env var
|
|
687
|
+
|
|
688
|
+
Current timeout: ${timeoutMs}ms
|
|
689
|
+
`,
|
|
690
|
+
{ level: 'error' },
|
|
691
|
+
)
|
|
692
|
+
}
|
|
693
|
+
throw error
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
// Always register shutdown (internal metrics are always enabled)
|
|
698
|
+
registerCleanup(shutdownTelemetry)
|
|
699
|
+
|
|
700
|
+
return meterProvider.getMeter('com.anthropic.claude_code', MACRO.VERSION)
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
/**
|
|
704
|
+
* Flush all pending telemetry data immediately.
|
|
705
|
+
* This should be called before logout or org switching to prevent data leakage.
|
|
706
|
+
*/
|
|
707
|
+
export async function flushTelemetry(): Promise<void> {
|
|
708
|
+
const meterProvider = getMeterProvider()
|
|
709
|
+
if (!meterProvider) {
|
|
710
|
+
return
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
const timeoutMs = parseInt(
|
|
714
|
+
process.env.CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS || '5000',
|
|
715
|
+
)
|
|
716
|
+
|
|
717
|
+
try {
|
|
718
|
+
const flushPromises = [meterProvider.forceFlush()]
|
|
719
|
+
const loggerProvider = getLoggerProvider()
|
|
720
|
+
if (loggerProvider) {
|
|
721
|
+
flushPromises.push(loggerProvider.forceFlush())
|
|
722
|
+
}
|
|
723
|
+
const tracerProvider = getTracerProvider()
|
|
724
|
+
if (tracerProvider) {
|
|
725
|
+
flushPromises.push(tracerProvider.forceFlush())
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
await Promise.race([
|
|
729
|
+
Promise.all(flushPromises),
|
|
730
|
+
telemetryTimeout(timeoutMs, 'OpenTelemetry flush timeout'),
|
|
731
|
+
])
|
|
732
|
+
|
|
733
|
+
logForDebugging('Telemetry flushed successfully')
|
|
734
|
+
} catch (error) {
|
|
735
|
+
if (error instanceof TelemetryTimeoutError) {
|
|
736
|
+
logForDebugging(
|
|
737
|
+
`Telemetry flush timed out after ${timeoutMs}ms. Some metrics may not be exported.`,
|
|
738
|
+
{ level: 'warn' },
|
|
739
|
+
)
|
|
740
|
+
} else {
|
|
741
|
+
logForDebugging(`Telemetry flush failed: ${errorMessage(error)}`, {
|
|
742
|
+
level: 'error',
|
|
743
|
+
})
|
|
744
|
+
}
|
|
745
|
+
// Don't throw - allow logout to continue even if flush fails
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
function parseOtelHeadersEnvVar(): Record<string, string> {
|
|
750
|
+
const headers: Record<string, string> = {}
|
|
751
|
+
const envHeaders = process.env.OTEL_EXPORTER_OTLP_HEADERS
|
|
752
|
+
if (envHeaders) {
|
|
753
|
+
for (const pair of envHeaders.split(',')) {
|
|
754
|
+
const [key, ...valueParts] = pair.split('=')
|
|
755
|
+
if (key && valueParts.length > 0) {
|
|
756
|
+
headers[key.trim()] = valueParts.join('=').trim()
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
return headers
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
/**
|
|
764
|
+
* Get configuration for OTLP exporters including:
|
|
765
|
+
* - HTTP agent options (proxy, mTLS)
|
|
766
|
+
* - Dynamic headers via otelHeadersHelper or static headers from env var
|
|
767
|
+
*/
|
|
768
|
+
function getOTLPExporterConfig() {
|
|
769
|
+
const proxyUrl = getProxyUrl()
|
|
770
|
+
const mtlsConfig = getMTLSConfig()
|
|
771
|
+
const settings = getSettings_DEPRECATED()
|
|
772
|
+
|
|
773
|
+
// Build base config
|
|
774
|
+
const config: Record<string, unknown> = {}
|
|
775
|
+
|
|
776
|
+
// Parse static headers from env var once (doesn't change at runtime)
|
|
777
|
+
const staticHeaders = parseOtelHeadersEnvVar()
|
|
778
|
+
|
|
779
|
+
// If otelHeadersHelper is configured, use async headers function for dynamic refresh
|
|
780
|
+
// Otherwise just return static headers if any exist
|
|
781
|
+
if (settings?.otelHeadersHelper) {
|
|
782
|
+
config.headers = async (): Promise<Record<string, string>> => {
|
|
783
|
+
const dynamicHeaders = getOtelHeadersFromHelper()
|
|
784
|
+
return { ...staticHeaders, ...dynamicHeaders }
|
|
785
|
+
}
|
|
786
|
+
} else if (Object.keys(staticHeaders).length > 0) {
|
|
787
|
+
config.headers = async (): Promise<Record<string, string>> => staticHeaders
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
// Check if we should bypass proxy for OTEL endpoint
|
|
791
|
+
const otelEndpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT
|
|
792
|
+
if (!proxyUrl || (otelEndpoint && shouldBypassProxy(otelEndpoint))) {
|
|
793
|
+
// No proxy configured or OTEL endpoint should bypass proxy
|
|
794
|
+
const caCerts = getCACertificates()
|
|
795
|
+
if (mtlsConfig || caCerts) {
|
|
796
|
+
config.httpAgentOptions = {
|
|
797
|
+
...mtlsConfig,
|
|
798
|
+
...(caCerts && { ca: caCerts }),
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
return config
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
// Return an HttpAgentFactory function that creates our proxy agent
|
|
805
|
+
const caCerts = getCACertificates()
|
|
806
|
+
const agentFactory = (_protocol: string) => {
|
|
807
|
+
// Create and return the proxy agent with mTLS and CA cert config
|
|
808
|
+
const proxyAgent =
|
|
809
|
+
mtlsConfig || caCerts
|
|
810
|
+
? new HttpsProxyAgent(proxyUrl, {
|
|
811
|
+
...(mtlsConfig && {
|
|
812
|
+
cert: mtlsConfig.cert,
|
|
813
|
+
key: mtlsConfig.key,
|
|
814
|
+
passphrase: mtlsConfig.passphrase,
|
|
815
|
+
}),
|
|
816
|
+
...(caCerts && { ca: caCerts }),
|
|
817
|
+
})
|
|
818
|
+
: new HttpsProxyAgent(proxyUrl)
|
|
819
|
+
|
|
820
|
+
return proxyAgent
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
config.httpAgentOptions = agentFactory
|
|
824
|
+
return config
|
|
825
|
+
}
|