@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
package/utils/proxy.ts
ADDED
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
// @aws-sdk/credential-provider-node and @smithy/node-http-handler are imported
|
|
2
|
+
// dynamically in getAWSClientProxyConfig() to defer ~929KB of AWS SDK.
|
|
3
|
+
// undici is lazy-required inside getProxyAgent/configureGlobalAgents to defer
|
|
4
|
+
// ~1.5MB when no HTTPS_PROXY/mTLS env vars are set (the common case).
|
|
5
|
+
import axios, { type AxiosInstance } from 'src/utils/axios.js'
|
|
6
|
+
import type { LookupOptions } from 'dns'
|
|
7
|
+
import type { Agent } from 'http'
|
|
8
|
+
import { HttpsProxyAgent, type HttpsProxyAgentOptions } from 'https-proxy-agent'
|
|
9
|
+
import memoize from 'lodash-es/memoize.js'
|
|
10
|
+
import type * as undici from 'undici'
|
|
11
|
+
import { getCACertificates } from './caCerts.js'
|
|
12
|
+
import { logForDebugging } from './debug.js'
|
|
13
|
+
import { isEnvTruthy } from './envUtils.js'
|
|
14
|
+
import {
|
|
15
|
+
getMTLSAgent,
|
|
16
|
+
getMTLSConfig,
|
|
17
|
+
getTLSFetchOptions,
|
|
18
|
+
type TLSConfig,
|
|
19
|
+
} from './mtls.js'
|
|
20
|
+
|
|
21
|
+
// Disable fetch keep-alive after a stale-pool ECONNRESET so retries open a
|
|
22
|
+
// fresh TCP connection instead of reusing the dead pooled socket. Sticky for
|
|
23
|
+
// the process lifetime — once the pool is known-bad, don't trust it again.
|
|
24
|
+
// Works under Bun (native fetch respects keepalive:false for pooling).
|
|
25
|
+
// Under Node/undici, keepalive is a no-op for pooling, but undici
|
|
26
|
+
// naturally evicts dead sockets from the pool on ECONNRESET.
|
|
27
|
+
let keepAliveDisabled = false
|
|
28
|
+
|
|
29
|
+
export function disableKeepAlive(): void {
|
|
30
|
+
keepAliveDisabled = true
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function _resetKeepAliveForTesting(): void {
|
|
34
|
+
keepAliveDisabled = false
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Convert dns.LookupOptions.family to a numeric address family value
|
|
39
|
+
* Handles: 0 | 4 | 6 | 'IPv4' | 'IPv6' | undefined
|
|
40
|
+
*/
|
|
41
|
+
export function getAddressFamily(options: LookupOptions): 0 | 4 | 6 {
|
|
42
|
+
switch (options.family) {
|
|
43
|
+
case 0:
|
|
44
|
+
case 4:
|
|
45
|
+
case 6:
|
|
46
|
+
return options.family
|
|
47
|
+
case 'IPv6':
|
|
48
|
+
return 6
|
|
49
|
+
case 'IPv4':
|
|
50
|
+
case undefined:
|
|
51
|
+
return 4
|
|
52
|
+
default:
|
|
53
|
+
throw new Error(`Unsupported address family: ${options.family}`)
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
type EnvLike = Record<string, string | undefined>
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Get the active proxy URL if one is configured
|
|
61
|
+
* Prefers lowercase variants over uppercase (https_proxy > HTTPS_PROXY > http_proxy > HTTP_PROXY)
|
|
62
|
+
* @param env Environment variables to check (defaults to process.env for production use)
|
|
63
|
+
*/
|
|
64
|
+
export function getProxyUrl(env: EnvLike = process.env): string | undefined {
|
|
65
|
+
return env.https_proxy || env.HTTPS_PROXY || env.http_proxy || env.HTTP_PROXY
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Get the NO_PROXY environment variable value
|
|
70
|
+
* Prefers lowercase over uppercase (no_proxy > NO_PROXY)
|
|
71
|
+
* @param env Environment variables to check (defaults to process.env for production use)
|
|
72
|
+
*/
|
|
73
|
+
export function getNoProxy(env: EnvLike = process.env): string | undefined {
|
|
74
|
+
return env.no_proxy || env.NO_PROXY
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Check if a URL should bypass the proxy based on NO_PROXY environment variable
|
|
79
|
+
* Supports:
|
|
80
|
+
* - Exact hostname matches (e.g., "localhost")
|
|
81
|
+
* - Domain suffix matches with leading dot (e.g., ".example.com")
|
|
82
|
+
* - Wildcard "*" to bypass all
|
|
83
|
+
* - Port-specific matches (e.g., "example.com:8080")
|
|
84
|
+
* - IP addresses (e.g., "127.0.0.1")
|
|
85
|
+
* @param urlString URL to check
|
|
86
|
+
* @param noProxy NO_PROXY value (defaults to getNoProxy() for production use)
|
|
87
|
+
*/
|
|
88
|
+
export function shouldBypassProxy(
|
|
89
|
+
urlString: string,
|
|
90
|
+
noProxy: string | undefined = getNoProxy(),
|
|
91
|
+
): boolean {
|
|
92
|
+
if (!noProxy) return false
|
|
93
|
+
|
|
94
|
+
// Handle wildcard
|
|
95
|
+
if (noProxy === '*') return true
|
|
96
|
+
|
|
97
|
+
try {
|
|
98
|
+
const url = new URL(urlString)
|
|
99
|
+
const hostname = url.hostname.toLowerCase()
|
|
100
|
+
const port = url.port || (url.protocol === 'https:' ? '443' : '80')
|
|
101
|
+
const hostWithPort = `${hostname}:${port}`
|
|
102
|
+
|
|
103
|
+
// Split by comma or space and trim each entry
|
|
104
|
+
const noProxyList = noProxy.split(/[,\s]+/).filter(Boolean)
|
|
105
|
+
|
|
106
|
+
return noProxyList.some(pattern => {
|
|
107
|
+
pattern = pattern.toLowerCase().trim()
|
|
108
|
+
|
|
109
|
+
// Check for port-specific match
|
|
110
|
+
if (pattern.includes(':')) {
|
|
111
|
+
return hostWithPort === pattern
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Check for domain suffix match (with or without leading dot)
|
|
115
|
+
if (pattern.startsWith('.')) {
|
|
116
|
+
// Pattern ".example.com" should match "sub.example.com" and "example.com"
|
|
117
|
+
// but NOT "notexample.com"
|
|
118
|
+
const suffix = pattern
|
|
119
|
+
return hostname === pattern.substring(1) || hostname.endsWith(suffix)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Check for exact hostname match or IP address
|
|
123
|
+
return hostname === pattern
|
|
124
|
+
})
|
|
125
|
+
} catch {
|
|
126
|
+
// If URL parsing fails, don't bypass proxy
|
|
127
|
+
return false
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Create an HttpsProxyAgent with optional mTLS configuration
|
|
133
|
+
* Skips local DNS resolution to let the proxy handle it
|
|
134
|
+
*/
|
|
135
|
+
function createHttpsProxyAgent(
|
|
136
|
+
proxyUrl: string,
|
|
137
|
+
extra: HttpsProxyAgentOptions<string> = {},
|
|
138
|
+
): HttpsProxyAgent<string> {
|
|
139
|
+
const mtlsConfig = getMTLSConfig()
|
|
140
|
+
const caCerts = getCACertificates()
|
|
141
|
+
|
|
142
|
+
const agentOptions: HttpsProxyAgentOptions<string> = {
|
|
143
|
+
...(mtlsConfig && {
|
|
144
|
+
cert: mtlsConfig.cert,
|
|
145
|
+
key: mtlsConfig.key,
|
|
146
|
+
passphrase: mtlsConfig.passphrase,
|
|
147
|
+
}),
|
|
148
|
+
...(caCerts && { ca: caCerts }),
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (isEnvTruthy(process.env.CLAUDE_CODE_PROXY_RESOLVES_HOSTS)) {
|
|
152
|
+
// Skip local DNS resolution - let the proxy resolve hostnames
|
|
153
|
+
// This is needed for environments where DNS is not configured locally
|
|
154
|
+
// and instead handled by the proxy (as in sandboxes)
|
|
155
|
+
agentOptions.lookup = (hostname, options, callback) => {
|
|
156
|
+
callback(null, hostname, getAddressFamily(options))
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return new HttpsProxyAgent(proxyUrl, { ...agentOptions, ...extra })
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Axios instance with its own proxy agent. Same NO_PROXY/mTLS/CA
|
|
165
|
+
* resolution as the global interceptor, but agent options stay
|
|
166
|
+
* scoped to this instance.
|
|
167
|
+
*/
|
|
168
|
+
export function createAxiosInstance(
|
|
169
|
+
extra: HttpsProxyAgentOptions<string> = {},
|
|
170
|
+
): AxiosInstance {
|
|
171
|
+
const proxyUrl = getProxyUrl()
|
|
172
|
+
const mtlsAgent = getMTLSAgent()
|
|
173
|
+
const instance = axios.create({ proxy: false })
|
|
174
|
+
|
|
175
|
+
if (!proxyUrl) {
|
|
176
|
+
if (mtlsAgent) instance.defaults.httpsAgent = mtlsAgent
|
|
177
|
+
return instance
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const proxyAgent = createHttpsProxyAgent(proxyUrl, extra)
|
|
181
|
+
instance.interceptors.request.use(config => {
|
|
182
|
+
if (config.url && shouldBypassProxy(config.url)) {
|
|
183
|
+
config.httpsAgent = mtlsAgent
|
|
184
|
+
config.httpAgent = mtlsAgent
|
|
185
|
+
} else {
|
|
186
|
+
config.httpsAgent = proxyAgent
|
|
187
|
+
config.httpAgent = proxyAgent
|
|
188
|
+
}
|
|
189
|
+
return config
|
|
190
|
+
})
|
|
191
|
+
return instance
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Get or create a memoized proxy agent for the given URI
|
|
196
|
+
* Now respects NO_PROXY environment variable
|
|
197
|
+
*/
|
|
198
|
+
export const getProxyAgent = memoize((uri: string): undici.Dispatcher => {
|
|
199
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
200
|
+
const undiciMod = require('undici') as typeof undici
|
|
201
|
+
const mtlsConfig = getMTLSConfig()
|
|
202
|
+
const caCerts = getCACertificates()
|
|
203
|
+
|
|
204
|
+
// Use EnvHttpProxyAgent to respect NO_PROXY
|
|
205
|
+
// This agent automatically checks NO_PROXY for each request
|
|
206
|
+
const proxyOptions: undici.EnvHttpProxyAgent.Options & {
|
|
207
|
+
requestTls?: {
|
|
208
|
+
cert?: string | Buffer
|
|
209
|
+
key?: string | Buffer
|
|
210
|
+
passphrase?: string
|
|
211
|
+
ca?: string | string[] | Buffer
|
|
212
|
+
}
|
|
213
|
+
} = {
|
|
214
|
+
// Override both HTTP and HTTPS proxy with the provided URI
|
|
215
|
+
httpProxy: uri,
|
|
216
|
+
httpsProxy: uri,
|
|
217
|
+
noProxy: process.env.NO_PROXY || process.env.no_proxy,
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Set both connect and requestTls so TLS options apply to both paths:
|
|
221
|
+
// - requestTls: used by ProxyAgent for the TLS connection through CONNECT tunnels
|
|
222
|
+
// - connect: used by Agent for direct (no-proxy) connections
|
|
223
|
+
if (mtlsConfig || caCerts) {
|
|
224
|
+
const tlsOpts = {
|
|
225
|
+
...(mtlsConfig && {
|
|
226
|
+
cert: mtlsConfig.cert,
|
|
227
|
+
key: mtlsConfig.key,
|
|
228
|
+
passphrase: mtlsConfig.passphrase,
|
|
229
|
+
}),
|
|
230
|
+
...(caCerts && { ca: caCerts }),
|
|
231
|
+
}
|
|
232
|
+
proxyOptions.connect = tlsOpts
|
|
233
|
+
proxyOptions.requestTls = tlsOpts
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
return new undiciMod.EnvHttpProxyAgent(proxyOptions)
|
|
237
|
+
})
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Get an HTTP agent configured for WebSocket proxy support
|
|
241
|
+
* Returns undefined if no proxy is configured or URL should bypass proxy
|
|
242
|
+
*/
|
|
243
|
+
export function getWebSocketProxyAgent(url: string): Agent | undefined {
|
|
244
|
+
const proxyUrl = getProxyUrl()
|
|
245
|
+
|
|
246
|
+
if (!proxyUrl) {
|
|
247
|
+
return undefined
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Check if URL should bypass proxy
|
|
251
|
+
if (shouldBypassProxy(url)) {
|
|
252
|
+
return undefined
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
return createHttpsProxyAgent(proxyUrl)
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Get the proxy URL for WebSocket connections under Bun.
|
|
260
|
+
* Bun's native WebSocket supports a `proxy` string option instead of Node's `agent`.
|
|
261
|
+
* Returns undefined if no proxy is configured or URL should bypass proxy.
|
|
262
|
+
*/
|
|
263
|
+
export function getWebSocketProxyUrl(url: string): string | undefined {
|
|
264
|
+
const proxyUrl = getProxyUrl()
|
|
265
|
+
|
|
266
|
+
if (!proxyUrl) {
|
|
267
|
+
return undefined
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
if (shouldBypassProxy(url)) {
|
|
271
|
+
return undefined
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
return proxyUrl
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Get fetch options for the Anthropic SDK with proxy and mTLS configuration
|
|
279
|
+
* Returns fetch options with appropriate dispatcher for proxy and/or mTLS
|
|
280
|
+
*
|
|
281
|
+
* @param opts.forAnthropicAPI - Enables ANTHROPIC_UNIX_SOCKET tunneling. This
|
|
282
|
+
* env var is set by `claude ssh` on the remote CLI to route API calls through
|
|
283
|
+
* an ssh -R forwarded unix socket to a local auth proxy. It MUST NOT leak
|
|
284
|
+
* into non-Anthropic-API fetch paths (MCP HTTP/SSE transports, etc.) or those
|
|
285
|
+
* requests get misrouted to api.anthropic.com. Only the Anthropic SDK client
|
|
286
|
+
* should pass `true` here.
|
|
287
|
+
*/
|
|
288
|
+
export function getProxyFetchOptions(opts?: { forAnthropicAPI?: boolean }): {
|
|
289
|
+
tls?: TLSConfig
|
|
290
|
+
dispatcher?: undici.Dispatcher
|
|
291
|
+
proxy?: string
|
|
292
|
+
unix?: string
|
|
293
|
+
keepalive?: false
|
|
294
|
+
} {
|
|
295
|
+
const base = keepAliveDisabled ? ({ keepalive: false } as const) : {}
|
|
296
|
+
|
|
297
|
+
// ANTHROPIC_UNIX_SOCKET tunnels through the `claude ssh` auth proxy, which
|
|
298
|
+
// hardcodes the upstream to the Anthropic API. Scope to the Anthropic API
|
|
299
|
+
// client so MCP/SSE/other callers don't get their requests misrouted.
|
|
300
|
+
if (opts?.forAnthropicAPI) {
|
|
301
|
+
const unixSocket = process.env.ANTHROPIC_UNIX_SOCKET
|
|
302
|
+
if (unixSocket && typeof Bun !== 'undefined') {
|
|
303
|
+
return { ...base, unix: unixSocket }
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
const proxyUrl = getProxyUrl()
|
|
308
|
+
|
|
309
|
+
// If we have a proxy, use the proxy agent (which includes mTLS config)
|
|
310
|
+
if (proxyUrl) {
|
|
311
|
+
if (typeof Bun !== 'undefined') {
|
|
312
|
+
return { ...base, proxy: proxyUrl, ...getTLSFetchOptions() }
|
|
313
|
+
}
|
|
314
|
+
return { ...base, dispatcher: getProxyAgent(proxyUrl) }
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// Otherwise, use TLS options directly if available
|
|
318
|
+
return { ...base, ...getTLSFetchOptions() }
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Configure global HTTP agents for both axios and undici
|
|
323
|
+
* This ensures all HTTP requests use the proxy and/or mTLS if configured
|
|
324
|
+
*/
|
|
325
|
+
let proxyInterceptorId: number | undefined
|
|
326
|
+
|
|
327
|
+
export function configureGlobalAgents(): void {
|
|
328
|
+
const proxyUrl = getProxyUrl()
|
|
329
|
+
const mtlsAgent = getMTLSAgent()
|
|
330
|
+
|
|
331
|
+
// Eject previous interceptor to avoid stacking on repeated calls
|
|
332
|
+
if (proxyInterceptorId !== undefined) {
|
|
333
|
+
axios.interceptors.request.eject(proxyInterceptorId)
|
|
334
|
+
proxyInterceptorId = undefined
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// Reset proxy-related defaults so reconfiguration is clean
|
|
338
|
+
axios.defaults.proxy = undefined
|
|
339
|
+
axios.defaults.httpAgent = undefined
|
|
340
|
+
axios.defaults.httpsAgent = undefined
|
|
341
|
+
|
|
342
|
+
if (proxyUrl) {
|
|
343
|
+
// workaround for https://github.com/axios/axios/issues/4531
|
|
344
|
+
axios.defaults.proxy = false
|
|
345
|
+
|
|
346
|
+
// Create proxy agent with mTLS options if available
|
|
347
|
+
const proxyAgent = createHttpsProxyAgent(proxyUrl)
|
|
348
|
+
|
|
349
|
+
// Add axios request interceptor to handle NO_PROXY
|
|
350
|
+
proxyInterceptorId = axios.interceptors.request.use(config => {
|
|
351
|
+
// Check if URL should bypass proxy based on NO_PROXY
|
|
352
|
+
if (config.url && shouldBypassProxy(config.url)) {
|
|
353
|
+
// Bypass proxy - use mTLS agent if configured, otherwise undefined
|
|
354
|
+
if (mtlsAgent) {
|
|
355
|
+
config.httpsAgent = mtlsAgent
|
|
356
|
+
config.httpAgent = mtlsAgent
|
|
357
|
+
} else {
|
|
358
|
+
// Remove any proxy agents to use direct connection
|
|
359
|
+
delete config.httpsAgent
|
|
360
|
+
delete config.httpAgent
|
|
361
|
+
}
|
|
362
|
+
} else {
|
|
363
|
+
// Use proxy agent
|
|
364
|
+
config.httpsAgent = proxyAgent
|
|
365
|
+
config.httpAgent = proxyAgent
|
|
366
|
+
}
|
|
367
|
+
return config
|
|
368
|
+
})
|
|
369
|
+
|
|
370
|
+
// Set global dispatcher that now respects NO_PROXY via EnvHttpProxyAgent
|
|
371
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
372
|
+
;(require('undici') as typeof undici).setGlobalDispatcher(
|
|
373
|
+
getProxyAgent(proxyUrl),
|
|
374
|
+
)
|
|
375
|
+
} else if (mtlsAgent) {
|
|
376
|
+
// No proxy but mTLS is configured
|
|
377
|
+
axios.defaults.httpsAgent = mtlsAgent
|
|
378
|
+
|
|
379
|
+
// Set undici global dispatcher with mTLS
|
|
380
|
+
const mtlsOptions = getTLSFetchOptions()
|
|
381
|
+
if (mtlsOptions.dispatcher) {
|
|
382
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
383
|
+
;(require('undici') as typeof undici).setGlobalDispatcher(
|
|
384
|
+
mtlsOptions.dispatcher,
|
|
385
|
+
)
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Get AWS SDK client configuration with proxy support
|
|
392
|
+
* Returns configuration object that can be spread into AWS service client constructors
|
|
393
|
+
*/
|
|
394
|
+
export async function getAWSClientProxyConfig(): Promise<object> {
|
|
395
|
+
const proxyUrl = getProxyUrl()
|
|
396
|
+
|
|
397
|
+
if (!proxyUrl) {
|
|
398
|
+
return {}
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
const [{ NodeHttpHandler }, { defaultProvider }] = await Promise.all([
|
|
402
|
+
import('@smithy/node-http-handler'),
|
|
403
|
+
import('@aws-sdk/credential-provider-node'),
|
|
404
|
+
])
|
|
405
|
+
|
|
406
|
+
const agent = createHttpsProxyAgent(proxyUrl)
|
|
407
|
+
const requestHandler = new NodeHttpHandler({
|
|
408
|
+
httpAgent: agent,
|
|
409
|
+
httpsAgent: agent,
|
|
410
|
+
})
|
|
411
|
+
|
|
412
|
+
return {
|
|
413
|
+
requestHandler,
|
|
414
|
+
credentials: defaultProvider({
|
|
415
|
+
clientConfig: { requestHandler },
|
|
416
|
+
}),
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Clear proxy agent cache.
|
|
422
|
+
*/
|
|
423
|
+
export function clearProxyCache(): void {
|
|
424
|
+
getProxyAgent.cache.clear?.()
|
|
425
|
+
logForDebugging('Cleared proxy agent cache')
|
|
426
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helpers for building the API cache-key prefix (systemPrompt,
|
|
3
|
+
* userContext, systemContext) for query() calls.
|
|
4
|
+
*
|
|
5
|
+
* Lives in its own file because it imports from context.ts and
|
|
6
|
+
* constants/prompts.ts, which are high in the dependency graph. Putting
|
|
7
|
+
* these imports in systemPrompt.ts or sideQuestion.ts (both reachable
|
|
8
|
+
* from commands.ts) would create cycles. Only entrypoint-layer files
|
|
9
|
+
* import from here (QueryEngine.ts, cli/print.ts).
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { Command } from '../commands.js'
|
|
13
|
+
import { getSystemPrompt } from '../constants/prompts.js'
|
|
14
|
+
import { getSystemContext, getUserContext } from '../context.js'
|
|
15
|
+
import type { MCPServerConnection } from '../services/mcp/types.js'
|
|
16
|
+
import type { AppState } from '../state/AppStateStore.js'
|
|
17
|
+
import type { Tools, ToolUseContext } from '../Tool.js'
|
|
18
|
+
import type { AgentDefinition } from '../tools/AgentTool/loadAgentsDir.js'
|
|
19
|
+
import type { Message } from '../types/message.js'
|
|
20
|
+
import { createAbortController } from './abortController.js'
|
|
21
|
+
import type { FileStateCache } from './fileStateCache.js'
|
|
22
|
+
import type { CacheSafeParams } from './forkedAgent.js'
|
|
23
|
+
import { getMainLoopModel } from './model/model.js'
|
|
24
|
+
import { asSystemPrompt } from './systemPromptType.js'
|
|
25
|
+
import {
|
|
26
|
+
shouldEnableThinkingByDefault,
|
|
27
|
+
type ThinkingConfig,
|
|
28
|
+
} from './thinking.js'
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Fetch the three context pieces that form the API cache-key prefix:
|
|
32
|
+
* systemPrompt parts, userContext, systemContext.
|
|
33
|
+
*
|
|
34
|
+
* When customSystemPrompt is set, the default getSystemPrompt build and
|
|
35
|
+
* getSystemContext are skipped — the custom prompt replaces the default
|
|
36
|
+
* entirely, and systemContext would be appended to a default that isn't
|
|
37
|
+
* being used.
|
|
38
|
+
*
|
|
39
|
+
* Callers assemble the final systemPrompt from defaultSystemPrompt (or
|
|
40
|
+
* customSystemPrompt) + optional extras + appendSystemPrompt. QueryEngine
|
|
41
|
+
* injects coordinator userContext and memory-mechanics prompt on top;
|
|
42
|
+
* sideQuestion's fallback uses the base result directly.
|
|
43
|
+
*/
|
|
44
|
+
export async function fetchSystemPromptParts({
|
|
45
|
+
tools,
|
|
46
|
+
mainLoopModel,
|
|
47
|
+
additionalWorkingDirectories,
|
|
48
|
+
mcpClients,
|
|
49
|
+
customSystemPrompt,
|
|
50
|
+
}: {
|
|
51
|
+
tools: Tools
|
|
52
|
+
mainLoopModel: string
|
|
53
|
+
additionalWorkingDirectories: string[]
|
|
54
|
+
mcpClients: MCPServerConnection[]
|
|
55
|
+
customSystemPrompt: string | undefined
|
|
56
|
+
}): Promise<{
|
|
57
|
+
defaultSystemPrompt: string[]
|
|
58
|
+
userContext: { [k: string]: string }
|
|
59
|
+
systemContext: { [k: string]: string }
|
|
60
|
+
}> {
|
|
61
|
+
const [defaultSystemPrompt, userContext, systemContext] = await Promise.all([
|
|
62
|
+
customSystemPrompt !== undefined
|
|
63
|
+
? Promise.resolve([])
|
|
64
|
+
: getSystemPrompt(
|
|
65
|
+
tools,
|
|
66
|
+
mainLoopModel,
|
|
67
|
+
additionalWorkingDirectories,
|
|
68
|
+
mcpClients,
|
|
69
|
+
),
|
|
70
|
+
getUserContext(),
|
|
71
|
+
customSystemPrompt !== undefined ? Promise.resolve({}) : getSystemContext(),
|
|
72
|
+
])
|
|
73
|
+
return { defaultSystemPrompt, userContext, systemContext }
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Build CacheSafeParams from raw inputs when getLastCacheSafeParams() is null.
|
|
78
|
+
*
|
|
79
|
+
* Used by the SDK side_question handler (print.ts) on resume before a turn
|
|
80
|
+
* completes — there's no stopHooks snapshot yet. Mirrors the system prompt
|
|
81
|
+
* assembly in QueryEngine.ts:ask() so the rebuilt prefix matches what the
|
|
82
|
+
* main loop will send, preserving the cache hit in the common case.
|
|
83
|
+
*
|
|
84
|
+
* May still miss the cache if the main loop applies extras this path doesn't
|
|
85
|
+
* know about (coordinator mode, memory-mechanics prompt). That's acceptable —
|
|
86
|
+
* the alternative is returning null and failing the side question entirely.
|
|
87
|
+
*/
|
|
88
|
+
export async function buildSideQuestionFallbackParams({
|
|
89
|
+
tools,
|
|
90
|
+
commands,
|
|
91
|
+
mcpClients,
|
|
92
|
+
messages,
|
|
93
|
+
readFileState,
|
|
94
|
+
getAppState,
|
|
95
|
+
setAppState,
|
|
96
|
+
customSystemPrompt,
|
|
97
|
+
appendSystemPrompt,
|
|
98
|
+
thinkingConfig,
|
|
99
|
+
agents,
|
|
100
|
+
}: {
|
|
101
|
+
tools: Tools
|
|
102
|
+
commands: Command[]
|
|
103
|
+
mcpClients: MCPServerConnection[]
|
|
104
|
+
messages: Message[]
|
|
105
|
+
readFileState: FileStateCache
|
|
106
|
+
getAppState: () => AppState
|
|
107
|
+
setAppState: (f: (prev: AppState) => AppState) => void
|
|
108
|
+
customSystemPrompt: string | undefined
|
|
109
|
+
appendSystemPrompt: string | undefined
|
|
110
|
+
thinkingConfig: ThinkingConfig | undefined
|
|
111
|
+
agents: AgentDefinition[]
|
|
112
|
+
}): Promise<CacheSafeParams> {
|
|
113
|
+
const mainLoopModel = getMainLoopModel()
|
|
114
|
+
const appState = getAppState()
|
|
115
|
+
|
|
116
|
+
const { defaultSystemPrompt, userContext, systemContext } =
|
|
117
|
+
await fetchSystemPromptParts({
|
|
118
|
+
tools,
|
|
119
|
+
mainLoopModel,
|
|
120
|
+
additionalWorkingDirectories: Array.from(
|
|
121
|
+
appState.toolPermissionContext.additionalWorkingDirectories.keys(),
|
|
122
|
+
),
|
|
123
|
+
mcpClients,
|
|
124
|
+
customSystemPrompt,
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
const systemPrompt = asSystemPrompt([
|
|
128
|
+
...(customSystemPrompt !== undefined
|
|
129
|
+
? [customSystemPrompt]
|
|
130
|
+
: defaultSystemPrompt),
|
|
131
|
+
...(appendSystemPrompt ? [appendSystemPrompt] : []),
|
|
132
|
+
])
|
|
133
|
+
|
|
134
|
+
// Strip in-progress assistant message (stop_reason === null) — same guard
|
|
135
|
+
// as btw.tsx. The SDK can fire side_question mid-turn.
|
|
136
|
+
const last = messages.at(-1)
|
|
137
|
+
const forkContextMessages =
|
|
138
|
+
last?.type === 'assistant' && last.message.stop_reason === null
|
|
139
|
+
? messages.slice(0, -1)
|
|
140
|
+
: messages
|
|
141
|
+
|
|
142
|
+
const toolUseContext: ToolUseContext = {
|
|
143
|
+
options: {
|
|
144
|
+
commands,
|
|
145
|
+
debug: false,
|
|
146
|
+
mainLoopModel,
|
|
147
|
+
tools,
|
|
148
|
+
verbose: false,
|
|
149
|
+
thinkingConfig:
|
|
150
|
+
thinkingConfig ??
|
|
151
|
+
(shouldEnableThinkingByDefault() !== false
|
|
152
|
+
? { type: 'adaptive' }
|
|
153
|
+
: { type: 'disabled' }),
|
|
154
|
+
mcpClients,
|
|
155
|
+
mcpResources: {},
|
|
156
|
+
isNonInteractiveSession: true,
|
|
157
|
+
agentDefinitions: { activeAgents: agents, allAgents: [] },
|
|
158
|
+
customSystemPrompt,
|
|
159
|
+
appendSystemPrompt,
|
|
160
|
+
},
|
|
161
|
+
abortController: createAbortController(),
|
|
162
|
+
readFileState,
|
|
163
|
+
getAppState,
|
|
164
|
+
setAppState,
|
|
165
|
+
messages: forkContextMessages,
|
|
166
|
+
setInProgressToolUseIDs: () => {},
|
|
167
|
+
setResponseLength: () => {},
|
|
168
|
+
updateFileHistoryState: () => {},
|
|
169
|
+
updateAttributionState: () => {},
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return {
|
|
173
|
+
systemPrompt,
|
|
174
|
+
userContext,
|
|
175
|
+
systemContext,
|
|
176
|
+
toolUseContext,
|
|
177
|
+
forkContextMessages,
|
|
178
|
+
}
|
|
179
|
+
}
|