@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/effort.ts
ADDED
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
// biome-ignore-all assist/source/organizeImports: ANT-ONLY import markers must not be reordered
|
|
2
|
+
import { isUltrathinkEnabled } from './thinking.js'
|
|
3
|
+
import { getInitialSettings } from './settings/settings.js'
|
|
4
|
+
import { isProSubscriber, isMaxSubscriber, isTeamSubscriber } from './auth.js'
|
|
5
|
+
import { getFeatureValue_CACHED_MAY_BE_STALE } from 'src/services/analytics/growthbook.js'
|
|
6
|
+
import { getAPIProvider } from './model/providers.js'
|
|
7
|
+
import { get3PModelCapabilityOverride } from './model/modelSupportOverrides.js'
|
|
8
|
+
import { isEnvTruthy } from './envUtils.js'
|
|
9
|
+
import type { EffortLevel } from 'src/entrypoints/sdk/runtimeTypes.js'
|
|
10
|
+
|
|
11
|
+
export type { EffortLevel }
|
|
12
|
+
|
|
13
|
+
export const EFFORT_LEVELS = [
|
|
14
|
+
'low',
|
|
15
|
+
'medium',
|
|
16
|
+
'high',
|
|
17
|
+
'max',
|
|
18
|
+
] as const satisfies readonly EffortLevel[]
|
|
19
|
+
|
|
20
|
+
export type EffortValue = EffortLevel | number
|
|
21
|
+
|
|
22
|
+
// @[MODEL LAUNCH]: Add the new model to the allowlist if it supports the effort parameter.
|
|
23
|
+
export function modelSupportsEffort(model: string): boolean {
|
|
24
|
+
const m = model.toLowerCase()
|
|
25
|
+
if (isEnvTruthy(process.env.CLAUDE_CODE_ALWAYS_ENABLE_EFFORT)) {
|
|
26
|
+
return true
|
|
27
|
+
}
|
|
28
|
+
const supported3P = get3PModelCapabilityOverride(model, 'effort')
|
|
29
|
+
if (supported3P !== undefined) {
|
|
30
|
+
return supported3P
|
|
31
|
+
}
|
|
32
|
+
// Supported by a subset of Claude 4 models
|
|
33
|
+
if (m.includes('opus-4-6') || m.includes('sonnet-4-6')) {
|
|
34
|
+
return true
|
|
35
|
+
}
|
|
36
|
+
// Exclude any other known legacy models (haiku, older opus/sonnet variants)
|
|
37
|
+
if (m.includes('haiku') || m.includes('sonnet') || m.includes('opus')) {
|
|
38
|
+
return false
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// IMPORTANT: Do not change the default effort support without notifying
|
|
42
|
+
// the model launch DRI and research. This is a sensitive setting that can
|
|
43
|
+
// greatly affect model quality and bashing.
|
|
44
|
+
|
|
45
|
+
// Default to true for unknown model strings on 1P.
|
|
46
|
+
// Do not default to true for 3P as they have different formats for their
|
|
47
|
+
// model strings (ex. anthropics/claude-code#30795)
|
|
48
|
+
return getAPIProvider() === 'firstParty'
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// @[MODEL LAUNCH]: Add the new model to the allowlist if it supports 'max' effort.
|
|
52
|
+
// Per API docs, 'max' is Opus 4.6 only for public models — other models return an error.
|
|
53
|
+
export function modelSupportsMaxEffort(model: string): boolean {
|
|
54
|
+
const supported3P = get3PModelCapabilityOverride(model, 'max_effort')
|
|
55
|
+
if (supported3P !== undefined) {
|
|
56
|
+
return supported3P
|
|
57
|
+
}
|
|
58
|
+
if (model.toLowerCase().includes('opus-4-6')) {
|
|
59
|
+
return true
|
|
60
|
+
}
|
|
61
|
+
if (process.env.USER_TYPE === 'ant' && resolveAntModel(model)) {
|
|
62
|
+
return true
|
|
63
|
+
}
|
|
64
|
+
return false
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function isEffortLevel(value: string): value is EffortLevel {
|
|
68
|
+
return (EFFORT_LEVELS as readonly string[]).includes(value)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function parseEffortValue(value: unknown): EffortValue | undefined {
|
|
72
|
+
if (value === undefined || value === null || value === '') {
|
|
73
|
+
return undefined
|
|
74
|
+
}
|
|
75
|
+
if (typeof value === 'number' && isValidNumericEffort(value)) {
|
|
76
|
+
return value
|
|
77
|
+
}
|
|
78
|
+
const str = String(value).toLowerCase()
|
|
79
|
+
if (isEffortLevel(str)) {
|
|
80
|
+
return str
|
|
81
|
+
}
|
|
82
|
+
const numericValue = parseInt(str, 10)
|
|
83
|
+
if (!isNaN(numericValue) && isValidNumericEffort(numericValue)) {
|
|
84
|
+
return numericValue
|
|
85
|
+
}
|
|
86
|
+
return undefined
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Numeric values are model-default only and not persisted.
|
|
91
|
+
* 'max' is session-scoped for external users (ants can persist it).
|
|
92
|
+
* Write sites call this before saving to settings so the Zod schema
|
|
93
|
+
* (which only accepts string levels) never rejects a write.
|
|
94
|
+
*/
|
|
95
|
+
export function toPersistableEffort(
|
|
96
|
+
value: EffortValue | undefined,
|
|
97
|
+
): EffortLevel | undefined {
|
|
98
|
+
if (value === 'low' || value === 'medium' || value === 'high') {
|
|
99
|
+
return value
|
|
100
|
+
}
|
|
101
|
+
if (value === 'max' && process.env.USER_TYPE === 'ant') {
|
|
102
|
+
return value
|
|
103
|
+
}
|
|
104
|
+
return undefined
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function getInitialEffortSetting(): EffortLevel | undefined {
|
|
108
|
+
// toPersistableEffort filters 'max' for non-ants on read, so a manually
|
|
109
|
+
// edited settings.json doesn't leak session-scoped max into a fresh session.
|
|
110
|
+
return toPersistableEffort(getInitialSettings().effortLevel)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Decide what effort level (if any) to persist when the user selects a model
|
|
115
|
+
* in ModelPicker. Keeps an explicit prior /effort choice sticky even when it
|
|
116
|
+
* matches the picked model's default, while letting purely-default and
|
|
117
|
+
* session-ephemeral effort (CLI --effort, EffortCallout default) fall through
|
|
118
|
+
* to undefined so it follows future model-default changes.
|
|
119
|
+
*
|
|
120
|
+
* priorPersisted must come from userSettings on disk
|
|
121
|
+
* (getSettingsForSource('userSettings')?.effortLevel), NOT merged settings
|
|
122
|
+
* (project/policy layers would leak into the user's global settings.json)
|
|
123
|
+
* and NOT AppState.effortValue (includes session-scoped sources that
|
|
124
|
+
* deliberately do not write to settings.json).
|
|
125
|
+
*/
|
|
126
|
+
export function resolvePickerEffortPersistence(
|
|
127
|
+
picked: EffortLevel | undefined,
|
|
128
|
+
modelDefault: EffortLevel,
|
|
129
|
+
priorPersisted: EffortLevel | undefined,
|
|
130
|
+
toggledInPicker: boolean,
|
|
131
|
+
): EffortLevel | undefined {
|
|
132
|
+
const hadExplicit = priorPersisted !== undefined || toggledInPicker
|
|
133
|
+
return hadExplicit || picked !== modelDefault ? picked : undefined
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function getEffortEnvOverride(): EffortValue | null | undefined {
|
|
137
|
+
const envOverride = process.env.CLAUDE_CODE_EFFORT_LEVEL
|
|
138
|
+
return envOverride?.toLowerCase() === 'unset' ||
|
|
139
|
+
envOverride?.toLowerCase() === 'auto'
|
|
140
|
+
? null
|
|
141
|
+
: parseEffortValue(envOverride)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Resolve the effort value that will actually be sent to the API for a given
|
|
146
|
+
* model, following the full precedence chain:
|
|
147
|
+
* env CLAUDE_CODE_EFFORT_LEVEL → appState.effortValue → model default
|
|
148
|
+
*
|
|
149
|
+
* Returns undefined when no effort parameter should be sent (env set to
|
|
150
|
+
* 'unset', or no default exists for the model).
|
|
151
|
+
*/
|
|
152
|
+
export function resolveAppliedEffort(
|
|
153
|
+
model: string,
|
|
154
|
+
appStateEffortValue: EffortValue | undefined,
|
|
155
|
+
): EffortValue | undefined {
|
|
156
|
+
const envOverride = getEffortEnvOverride()
|
|
157
|
+
if (envOverride === null) {
|
|
158
|
+
return undefined
|
|
159
|
+
}
|
|
160
|
+
const resolved =
|
|
161
|
+
envOverride ?? appStateEffortValue ?? getDefaultEffortForModel(model)
|
|
162
|
+
// API rejects 'max' on non-Opus-4.6 models — downgrade to 'high'.
|
|
163
|
+
if (resolved === 'max' && !modelSupportsMaxEffort(model)) {
|
|
164
|
+
return 'high'
|
|
165
|
+
}
|
|
166
|
+
return resolved
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Resolve the effort level to show the user. Wraps resolveAppliedEffort
|
|
171
|
+
* with the 'high' fallback (what the API uses when no effort param is sent).
|
|
172
|
+
* Single source of truth for the status bar and /effort output (CC-1088).
|
|
173
|
+
*/
|
|
174
|
+
export function getDisplayedEffortLevel(
|
|
175
|
+
model: string,
|
|
176
|
+
appStateEffort: EffortValue | undefined,
|
|
177
|
+
): EffortLevel {
|
|
178
|
+
const resolved = resolveAppliedEffort(model, appStateEffort) ?? 'high'
|
|
179
|
+
return convertEffortValueToLevel(resolved)
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Build the ` with {level} effort` suffix shown in Logo/Spinner.
|
|
184
|
+
* Returns empty string if the user hasn't explicitly set an effort value.
|
|
185
|
+
* Delegates to resolveAppliedEffort() so the displayed level matches what
|
|
186
|
+
* the API actually receives (including max→high clamp for non-Opus models).
|
|
187
|
+
*/
|
|
188
|
+
export function getEffortSuffix(
|
|
189
|
+
model: string,
|
|
190
|
+
effortValue: EffortValue | undefined,
|
|
191
|
+
): string {
|
|
192
|
+
if (effortValue === undefined) return ''
|
|
193
|
+
const resolved = resolveAppliedEffort(model, effortValue)
|
|
194
|
+
if (resolved === undefined) return ''
|
|
195
|
+
return ` with ${convertEffortValueToLevel(resolved)} effort`
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export function isValidNumericEffort(value: number): boolean {
|
|
199
|
+
return Number.isInteger(value)
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export function convertEffortValueToLevel(value: EffortValue): EffortLevel {
|
|
203
|
+
if (typeof value === 'string') {
|
|
204
|
+
// Runtime guard: value may come from remote config (GrowthBook) where
|
|
205
|
+
// TypeScript types can't help us. Coerce unknown strings to 'high'
|
|
206
|
+
// rather than passing them through unchecked.
|
|
207
|
+
return isEffortLevel(value) ? value : 'high'
|
|
208
|
+
}
|
|
209
|
+
if (process.env.USER_TYPE === 'ant' && typeof value === 'number') {
|
|
210
|
+
if (value <= 50) return 'low'
|
|
211
|
+
if (value <= 85) return 'medium'
|
|
212
|
+
if (value <= 100) return 'high'
|
|
213
|
+
return 'max'
|
|
214
|
+
}
|
|
215
|
+
return 'high'
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Get user-facing description for effort levels
|
|
220
|
+
*
|
|
221
|
+
* @param level The effort level to describe
|
|
222
|
+
* @returns Human-readable description
|
|
223
|
+
*/
|
|
224
|
+
export function getEffortLevelDescription(level: EffortLevel): string {
|
|
225
|
+
switch (level) {
|
|
226
|
+
case 'low':
|
|
227
|
+
return 'Quick, straightforward implementation with minimal overhead'
|
|
228
|
+
case 'medium':
|
|
229
|
+
return 'Balanced approach with standard implementation and testing'
|
|
230
|
+
case 'high':
|
|
231
|
+
return 'Comprehensive implementation with extensive testing and documentation'
|
|
232
|
+
case 'max':
|
|
233
|
+
return 'Maximum capability with deepest reasoning (Opus 4.6 only)'
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Get user-facing description for effort values (both string and numeric)
|
|
239
|
+
*
|
|
240
|
+
* @param value The effort value to describe
|
|
241
|
+
* @returns Human-readable description
|
|
242
|
+
*/
|
|
243
|
+
export function getEffortValueDescription(value: EffortValue): string {
|
|
244
|
+
if (process.env.USER_TYPE === 'ant' && typeof value === 'number') {
|
|
245
|
+
return `[ANT-ONLY] Numeric effort value of ${value}`
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
if (typeof value === 'string') {
|
|
249
|
+
return getEffortLevelDescription(value)
|
|
250
|
+
}
|
|
251
|
+
return 'Balanced approach with standard implementation and testing'
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export type OpusDefaultEffortConfig = {
|
|
255
|
+
enabled: boolean
|
|
256
|
+
dialogTitle: string
|
|
257
|
+
dialogDescription: string
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
const OPUS_DEFAULT_EFFORT_CONFIG_DEFAULT: OpusDefaultEffortConfig = {
|
|
261
|
+
enabled: true,
|
|
262
|
+
dialogTitle: 'We recommend medium effort for Opus',
|
|
263
|
+
dialogDescription:
|
|
264
|
+
'Effort determines how long Claude thinks for when completing your task. We recommend medium effort for most tasks to balance speed and intelligence and maximize rate limits. Use ultrathink to trigger high effort when needed.',
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export function getOpusDefaultEffortConfig(): OpusDefaultEffortConfig {
|
|
268
|
+
const config = getFeatureValue_CACHED_MAY_BE_STALE(
|
|
269
|
+
'tengu_grey_step2',
|
|
270
|
+
OPUS_DEFAULT_EFFORT_CONFIG_DEFAULT,
|
|
271
|
+
)
|
|
272
|
+
return {
|
|
273
|
+
...OPUS_DEFAULT_EFFORT_CONFIG_DEFAULT,
|
|
274
|
+
...config,
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// @[MODEL LAUNCH]: Update the default effort levels for new models
|
|
279
|
+
export function getDefaultEffortForModel(
|
|
280
|
+
model: string,
|
|
281
|
+
): EffortValue | undefined {
|
|
282
|
+
if (process.env.USER_TYPE === 'ant') {
|
|
283
|
+
const config = getAntModelOverrideConfig()
|
|
284
|
+
const isDefaultModel =
|
|
285
|
+
config?.defaultModel !== undefined &&
|
|
286
|
+
model.toLowerCase() === config.defaultModel.toLowerCase()
|
|
287
|
+
if (isDefaultModel && config?.defaultModelEffortLevel) {
|
|
288
|
+
return config.defaultModelEffortLevel
|
|
289
|
+
}
|
|
290
|
+
const antModel = resolveAntModel(model)
|
|
291
|
+
if (antModel) {
|
|
292
|
+
if (antModel.defaultEffortLevel) {
|
|
293
|
+
return antModel.defaultEffortLevel
|
|
294
|
+
}
|
|
295
|
+
if (antModel.defaultEffortValue !== undefined) {
|
|
296
|
+
return antModel.defaultEffortValue
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
// Always default ants to undefined/high
|
|
300
|
+
return undefined
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// IMPORTANT: Do not change the default effort level without notifying
|
|
304
|
+
// the model launch DRI and research. Default effort is a sensitive setting
|
|
305
|
+
// that can greatly affect model quality and bashing.
|
|
306
|
+
|
|
307
|
+
// Default effort on Opus 4.6 to medium for Pro.
|
|
308
|
+
// Max/Team also get medium when the tengu_grey_step2 config is enabled.
|
|
309
|
+
if (model.toLowerCase().includes('opus-4-6')) {
|
|
310
|
+
if (isProSubscriber()) {
|
|
311
|
+
return 'medium'
|
|
312
|
+
}
|
|
313
|
+
if (
|
|
314
|
+
getOpusDefaultEffortConfig().enabled &&
|
|
315
|
+
(isMaxSubscriber() || isTeamSubscriber())
|
|
316
|
+
) {
|
|
317
|
+
return 'medium'
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// When ultrathink feature is on, default effort to medium (ultrathink bumps to high)
|
|
322
|
+
if (isUltrathinkEnabled() && modelSupportsEffort(model)) {
|
|
323
|
+
return 'medium'
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
// Fallback to undefined, which means we don't set an effort level. This
|
|
327
|
+
// should resolve to high effort level in the API.
|
|
328
|
+
return undefined
|
|
329
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { isEnvTruthy } from './envUtils.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Whether this build has bfs/ugrep embedded in the bun binary (ant-native only).
|
|
5
|
+
*
|
|
6
|
+
* When true:
|
|
7
|
+
* - `find` and `grep` in Claude's Bash shell are shadowed by shell functions
|
|
8
|
+
* that invoke the bun binary with argv0='bfs' / argv0='ugrep' (same trick
|
|
9
|
+
* as embedded ripgrep)
|
|
10
|
+
* - The dedicated Glob/Grep tools are removed from the tool registry
|
|
11
|
+
* - Prompt guidance steering Claude away from find/grep is omitted
|
|
12
|
+
*
|
|
13
|
+
* Set as a build-time define in scripts/build-with-plugins.ts for ant-native builds.
|
|
14
|
+
*/
|
|
15
|
+
export function hasEmbeddedSearchTools(): boolean {
|
|
16
|
+
if (!isEnvTruthy(process.env.EMBEDDED_SEARCH_TOOLS)) return false
|
|
17
|
+
const e = process.env.CLAUDE_CODE_ENTRYPOINT
|
|
18
|
+
return (
|
|
19
|
+
e !== 'sdk-ts' && e !== 'sdk-py' && e !== 'sdk-cli' && e !== 'local-agent'
|
|
20
|
+
)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Path to the bun binary that contains the embedded search tools.
|
|
25
|
+
* Only meaningful when hasEmbeddedSearchTools() is true.
|
|
26
|
+
*/
|
|
27
|
+
export function embeddedSearchToolsBinaryPath(): string {
|
|
28
|
+
return process.execPath
|
|
29
|
+
}
|
package/utils/env.ts
ADDED
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import memoize from 'lodash-es/memoize.js'
|
|
2
|
+
import { homedir } from 'os'
|
|
3
|
+
import { join } from 'path'
|
|
4
|
+
import { fileSuffixForOauthConfig } from '../constants/oauth.js'
|
|
5
|
+
import { isRunningWithBun } from './bundledMode.js'
|
|
6
|
+
import { getClaudeConfigHomeDir, isEnvTruthy } from './envUtils.js'
|
|
7
|
+
import { findExecutable } from './findExecutable.js'
|
|
8
|
+
import { getFsImplementation } from './fsOperations.js'
|
|
9
|
+
import { which } from './which.js'
|
|
10
|
+
|
|
11
|
+
type Platform = 'win32' | 'darwin' | 'linux'
|
|
12
|
+
|
|
13
|
+
// Config and data paths
|
|
14
|
+
export const getGlobalClaudeFile = memoize((): string => {
|
|
15
|
+
// Legacy fallback for backwards compatibility
|
|
16
|
+
if (
|
|
17
|
+
getFsImplementation().existsSync(
|
|
18
|
+
join(getClaudeConfigHomeDir(), '.config.json'),
|
|
19
|
+
)
|
|
20
|
+
) {
|
|
21
|
+
return join(getClaudeConfigHomeDir(), '.config.json')
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const filename = `.claude${fileSuffixForOauthConfig()}.json`
|
|
25
|
+
return join(process.env.CLAUDE_CONFIG_DIR || homedir(), filename)
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
const hasInternetAccess = memoize(async (): Promise<boolean> => {
|
|
29
|
+
try {
|
|
30
|
+
const { default: axiosClient } = await import('src/utils/axios.js')
|
|
31
|
+
await axiosClient.head('http://1.1.1.1', {
|
|
32
|
+
signal: AbortSignal.timeout(1000),
|
|
33
|
+
})
|
|
34
|
+
return true
|
|
35
|
+
} catch {
|
|
36
|
+
return false
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
async function isCommandAvailable(command: string): Promise<boolean> {
|
|
41
|
+
try {
|
|
42
|
+
// which does not execute the file.
|
|
43
|
+
return !!(await which(command))
|
|
44
|
+
} catch {
|
|
45
|
+
return false
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const detectPackageManagers = memoize(async (): Promise<string[]> => {
|
|
50
|
+
const packageManagers = []
|
|
51
|
+
|
|
52
|
+
if (await isCommandAvailable('npm')) packageManagers.push('npm')
|
|
53
|
+
if (await isCommandAvailable('yarn')) packageManagers.push('yarn')
|
|
54
|
+
if (await isCommandAvailable('pnpm')) packageManagers.push('pnpm')
|
|
55
|
+
|
|
56
|
+
return packageManagers
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
const detectRuntimes = memoize(async (): Promise<string[]> => {
|
|
60
|
+
const runtimes = []
|
|
61
|
+
|
|
62
|
+
if (await isCommandAvailable('bun')) runtimes.push('bun')
|
|
63
|
+
if (await isCommandAvailable('deno')) runtimes.push('deno')
|
|
64
|
+
if (await isCommandAvailable('node')) runtimes.push('node')
|
|
65
|
+
|
|
66
|
+
return runtimes
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Checks if we're running in a WSL environment
|
|
71
|
+
* @returns true if running in WSL, false otherwise
|
|
72
|
+
*/
|
|
73
|
+
const isWslEnvironment = memoize((): boolean => {
|
|
74
|
+
try {
|
|
75
|
+
// Check for WSLInterop file which is a reliable indicator of WSL
|
|
76
|
+
return getFsImplementation().existsSync(
|
|
77
|
+
'/proc/sys/fs/binfmt_misc/WSLInterop',
|
|
78
|
+
)
|
|
79
|
+
} catch (_error) {
|
|
80
|
+
// If there's an error checking, assume not WSL
|
|
81
|
+
return false
|
|
82
|
+
}
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Checks if the npm executable is located in the Windows filesystem within WSL
|
|
87
|
+
* @returns true if npm is from Windows (starts with /mnt/c/), false otherwise
|
|
88
|
+
*/
|
|
89
|
+
const isNpmFromWindowsPath = memoize((): boolean => {
|
|
90
|
+
try {
|
|
91
|
+
// Only relevant in WSL environment
|
|
92
|
+
if (!isWslEnvironment()) {
|
|
93
|
+
return false
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Find the actual npm executable path
|
|
97
|
+
const { cmd } = findExecutable('npm', [])
|
|
98
|
+
|
|
99
|
+
// If npm is in Windows path, it will start with /mnt/c/
|
|
100
|
+
return cmd.startsWith('/mnt/c/')
|
|
101
|
+
} catch (_error) {
|
|
102
|
+
// If there's an error, assume it's not from Windows
|
|
103
|
+
return false
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Checks if we're running via Conductor
|
|
109
|
+
* @returns true if running via Conductor, false otherwise
|
|
110
|
+
*/
|
|
111
|
+
function isConductor(): boolean {
|
|
112
|
+
return process.env.__CFBundleIdentifier === 'com.conductor.app'
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export const JETBRAINS_IDES = [
|
|
116
|
+
'pycharm',
|
|
117
|
+
'intellij',
|
|
118
|
+
'webstorm',
|
|
119
|
+
'phpstorm',
|
|
120
|
+
'rubymine',
|
|
121
|
+
'clion',
|
|
122
|
+
'goland',
|
|
123
|
+
'rider',
|
|
124
|
+
'datagrip',
|
|
125
|
+
'appcode',
|
|
126
|
+
'dataspell',
|
|
127
|
+
'aqua',
|
|
128
|
+
'gateway',
|
|
129
|
+
'fleet',
|
|
130
|
+
'jetbrains',
|
|
131
|
+
'androidstudio',
|
|
132
|
+
]
|
|
133
|
+
|
|
134
|
+
// Detect terminal type with fallbacks for all platforms
|
|
135
|
+
function detectTerminal(): string | null {
|
|
136
|
+
if (process.env.CURSOR_TRACE_ID) return 'cursor'
|
|
137
|
+
// Cursor and Windsurf under WSL have TERM_PROGRAM=vscode
|
|
138
|
+
if (process.env.VSCODE_GIT_ASKPASS_MAIN?.includes('cursor')) {
|
|
139
|
+
return 'cursor'
|
|
140
|
+
}
|
|
141
|
+
if (process.env.VSCODE_GIT_ASKPASS_MAIN?.includes('windsurf')) {
|
|
142
|
+
return 'windsurf'
|
|
143
|
+
}
|
|
144
|
+
if (process.env.VSCODE_GIT_ASKPASS_MAIN?.includes('antigravity')) {
|
|
145
|
+
return 'antigravity'
|
|
146
|
+
}
|
|
147
|
+
const bundleId = process.env.__CFBundleIdentifier?.toLowerCase()
|
|
148
|
+
if (bundleId?.includes('vscodium')) return 'codium'
|
|
149
|
+
if (bundleId?.includes('windsurf')) return 'windsurf'
|
|
150
|
+
if (bundleId?.includes('com.google.android.studio')) return 'androidstudio'
|
|
151
|
+
// Check for JetBrains IDEs in bundle ID
|
|
152
|
+
if (bundleId) {
|
|
153
|
+
for (const ide of JETBRAINS_IDES) {
|
|
154
|
+
if (bundleId.includes(ide)) return ide
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (process.env.VisualStudioVersion) {
|
|
159
|
+
// This is desktop Visual Studio, not VS Code
|
|
160
|
+
return 'visualstudio'
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Check for JetBrains terminal on Linux/Windows
|
|
164
|
+
if (process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm') {
|
|
165
|
+
// For macOS, bundle ID detection above already handles JetBrains IDEs
|
|
166
|
+
if (process.platform === 'darwin') return 'pycharm'
|
|
167
|
+
|
|
168
|
+
// For finegrained detection on Linux/Windows use envDynamic.getTerminalWithJetBrainsDetection()
|
|
169
|
+
return 'pycharm'
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Check for specific terminals by TERM before TERM_PROGRAM
|
|
173
|
+
// This handles cases where TERM and TERM_PROGRAM might be inconsistent
|
|
174
|
+
if (process.env.TERM === 'xterm-ghostty') {
|
|
175
|
+
return 'ghostty'
|
|
176
|
+
}
|
|
177
|
+
if (process.env.TERM?.includes('kitty')) {
|
|
178
|
+
return 'kitty'
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (process.env.TERM_PROGRAM) {
|
|
182
|
+
return process.env.TERM_PROGRAM
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (process.env.TMUX) return 'tmux'
|
|
186
|
+
if (process.env.STY) return 'screen'
|
|
187
|
+
|
|
188
|
+
// Check for terminal-specific environment variables (common on Linux)
|
|
189
|
+
if (process.env.KONSOLE_VERSION) return 'konsole'
|
|
190
|
+
if (process.env.GNOME_TERMINAL_SERVICE) return 'gnome-terminal'
|
|
191
|
+
if (process.env.XTERM_VERSION) return 'xterm'
|
|
192
|
+
if (process.env.VTE_VERSION) return 'vte-based'
|
|
193
|
+
if (process.env.TERMINATOR_UUID) return 'terminator'
|
|
194
|
+
if (process.env.KITTY_WINDOW_ID) {
|
|
195
|
+
return 'kitty'
|
|
196
|
+
}
|
|
197
|
+
if (process.env.ALACRITTY_LOG) return 'alacritty'
|
|
198
|
+
if (process.env.TILIX_ID) return 'tilix'
|
|
199
|
+
|
|
200
|
+
// Windows-specific detection
|
|
201
|
+
if (process.env.WT_SESSION) return 'windows-terminal'
|
|
202
|
+
if (process.env.SESSIONNAME && process.env.TERM === 'cygwin') return 'cygwin'
|
|
203
|
+
if (process.env.MSYSTEM) return process.env.MSYSTEM.toLowerCase() // MINGW64, MSYS2, etc.
|
|
204
|
+
if (
|
|
205
|
+
process.env.ConEmuANSI ||
|
|
206
|
+
process.env.ConEmuPID ||
|
|
207
|
+
process.env.ConEmuTask
|
|
208
|
+
) {
|
|
209
|
+
return 'conemu'
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// WSL detection
|
|
213
|
+
if (process.env.WSL_DISTRO_NAME) return `wsl-${process.env.WSL_DISTRO_NAME}`
|
|
214
|
+
|
|
215
|
+
// SSH session detection
|
|
216
|
+
if (isSSHSession()) {
|
|
217
|
+
return 'ssh-session'
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Fall back to TERM which is more universally available
|
|
221
|
+
// Special case for common terminal identifiers in TERM
|
|
222
|
+
if (process.env.TERM) {
|
|
223
|
+
const term = process.env.TERM
|
|
224
|
+
if (term.includes('alacritty')) return 'alacritty'
|
|
225
|
+
if (term.includes('rxvt')) return 'rxvt'
|
|
226
|
+
if (term.includes('termite')) return 'termite'
|
|
227
|
+
return process.env.TERM
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Detect non-interactive environment
|
|
231
|
+
if (!process.stdout.isTTY) return 'non-interactive'
|
|
232
|
+
|
|
233
|
+
return null
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Detects the deployment environment/platform based on environment variables
|
|
238
|
+
* @returns The deployment platform name, or 'unknown' if not detected
|
|
239
|
+
*/
|
|
240
|
+
export const detectDeploymentEnvironment = memoize((): string => {
|
|
241
|
+
// Cloud development environments
|
|
242
|
+
if (isEnvTruthy(process.env.CODESPACES)) return 'codespaces'
|
|
243
|
+
if (process.env.GITPOD_WORKSPACE_ID) return 'gitpod'
|
|
244
|
+
if (process.env.REPL_ID || process.env.REPL_SLUG) return 'replit'
|
|
245
|
+
if (process.env.PROJECT_DOMAIN) return 'glitch'
|
|
246
|
+
|
|
247
|
+
// Cloud platforms
|
|
248
|
+
if (isEnvTruthy(process.env.VERCEL)) return 'vercel'
|
|
249
|
+
if (
|
|
250
|
+
process.env.RAILWAY_ENVIRONMENT_NAME ||
|
|
251
|
+
process.env.RAILWAY_SERVICE_NAME
|
|
252
|
+
) {
|
|
253
|
+
return 'railway'
|
|
254
|
+
}
|
|
255
|
+
if (isEnvTruthy(process.env.RENDER)) return 'render'
|
|
256
|
+
if (isEnvTruthy(process.env.NETLIFY)) return 'netlify'
|
|
257
|
+
if (process.env.DYNO) return 'heroku'
|
|
258
|
+
if (process.env.FLY_APP_NAME || process.env.FLY_MACHINE_ID) return 'fly.io'
|
|
259
|
+
if (isEnvTruthy(process.env.CF_PAGES)) return 'cloudflare-pages'
|
|
260
|
+
if (process.env.DENO_DEPLOYMENT_ID) return 'deno-deploy'
|
|
261
|
+
if (process.env.AWS_LAMBDA_FUNCTION_NAME) return 'aws-lambda'
|
|
262
|
+
if (process.env.AWS_EXECUTION_ENV === 'AWS_ECS_FARGATE') return 'aws-fargate'
|
|
263
|
+
if (process.env.AWS_EXECUTION_ENV === 'AWS_ECS_EC2') return 'aws-ecs'
|
|
264
|
+
// Check for EC2 via hypervisor UUID
|
|
265
|
+
try {
|
|
266
|
+
const uuid = getFsImplementation()
|
|
267
|
+
.readFileSync('/sys/hypervisor/uuid', { encoding: 'utf8' })
|
|
268
|
+
.trim()
|
|
269
|
+
.toLowerCase()
|
|
270
|
+
if (uuid.startsWith('ec2')) return 'aws-ec2'
|
|
271
|
+
} catch {
|
|
272
|
+
// Ignore errors reading hypervisor UUID (ENOENT on non-EC2, etc.)
|
|
273
|
+
}
|
|
274
|
+
if (process.env.K_SERVICE) return 'gcp-cloud-run'
|
|
275
|
+
if (process.env.GOOGLE_CLOUD_PROJECT) return 'gcp'
|
|
276
|
+
if (process.env.WEBSITE_SITE_NAME || process.env.WEBSITE_SKU)
|
|
277
|
+
return 'azure-app-service'
|
|
278
|
+
if (process.env.AZURE_FUNCTIONS_ENVIRONMENT) return 'azure-functions'
|
|
279
|
+
if (process.env.APP_URL?.includes('ondigitalocean.app')) {
|
|
280
|
+
return 'digitalocean-app-platform'
|
|
281
|
+
}
|
|
282
|
+
if (process.env.SPACE_CREATOR_USER_ID) return 'huggingface-spaces'
|
|
283
|
+
|
|
284
|
+
// CI/CD platforms
|
|
285
|
+
if (isEnvTruthy(process.env.GITHUB_ACTIONS)) return 'github-actions'
|
|
286
|
+
if (isEnvTruthy(process.env.GITLAB_CI)) return 'gitlab-ci'
|
|
287
|
+
if (process.env.CIRCLECI) return 'circleci'
|
|
288
|
+
if (process.env.BUILDKITE) return 'buildkite'
|
|
289
|
+
if (isEnvTruthy(process.env.CI)) return 'ci'
|
|
290
|
+
|
|
291
|
+
// Container orchestration
|
|
292
|
+
if (process.env.KUBERNETES_SERVICE_HOST) return 'kubernetes'
|
|
293
|
+
try {
|
|
294
|
+
if (getFsImplementation().existsSync('/.dockerenv')) return 'docker'
|
|
295
|
+
} catch {
|
|
296
|
+
// Ignore errors checking for Docker
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// Platform-specific fallback for undetected environments
|
|
300
|
+
if (env.platform === 'darwin') return 'unknown-darwin'
|
|
301
|
+
if (env.platform === 'linux') return 'unknown-linux'
|
|
302
|
+
if (env.platform === 'win32') return 'unknown-win32'
|
|
303
|
+
|
|
304
|
+
return 'unknown'
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
// all of these should be immutable
|
|
308
|
+
function isSSHSession(): boolean {
|
|
309
|
+
return !!(
|
|
310
|
+
process.env.SSH_CONNECTION ||
|
|
311
|
+
process.env.SSH_CLIENT ||
|
|
312
|
+
process.env.SSH_TTY
|
|
313
|
+
)
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
export const env = {
|
|
317
|
+
hasInternetAccess,
|
|
318
|
+
isCI: isEnvTruthy(process.env.CI),
|
|
319
|
+
platform: (['win32', 'darwin'].includes(process.platform)
|
|
320
|
+
? process.platform
|
|
321
|
+
: 'linux') as Platform,
|
|
322
|
+
arch: process.arch,
|
|
323
|
+
nodeVersion: process.version,
|
|
324
|
+
terminal: detectTerminal(),
|
|
325
|
+
isSSH: isSSHSession,
|
|
326
|
+
getPackageManagers: detectPackageManagers,
|
|
327
|
+
getRuntimes: detectRuntimes,
|
|
328
|
+
isRunningWithBun: memoize(isRunningWithBun),
|
|
329
|
+
isWslEnvironment,
|
|
330
|
+
isNpmFromWindowsPath,
|
|
331
|
+
isConductor,
|
|
332
|
+
detectDeploymentEnvironment,
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Returns the host platform for analytics reporting.
|
|
337
|
+
* If CLAUDE_CODE_HOST_PLATFORM is set to a valid platform value, that overrides
|
|
338
|
+
* the detected platform. This is useful for container/remote environments where
|
|
339
|
+
* process.platform reports the container OS but the actual host platform differs.
|
|
340
|
+
*/
|
|
341
|
+
export function getHostPlatformForAnalytics(): Platform {
|
|
342
|
+
const override = process.env.CLAUDE_CODE_HOST_PLATFORM
|
|
343
|
+
if (override === 'win32' || override === 'darwin' || override === 'linux') {
|
|
344
|
+
return override
|
|
345
|
+
}
|
|
346
|
+
return env.platform
|
|
347
|
+
}
|