@xortex/xcode 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +171 -0
- package/bin/xcode +127 -0
- package/bin/xcode-test +84 -0
- package/bin/xcode.cmd +31 -0
- package/constants/apiLimits.ts +94 -0
- package/constants/betas.ts +52 -0
- package/constants/common.ts +33 -0
- package/constants/cyberRiskInstruction.ts +24 -0
- package/constants/errorIds.ts +15 -0
- package/constants/figures.ts +45 -0
- package/constants/files.ts +156 -0
- package/constants/github-app.ts +144 -0
- package/constants/keys.ts +11 -0
- package/constants/messages.ts +1 -0
- package/constants/oauth.ts +234 -0
- package/constants/outputStyles.ts +216 -0
- package/constants/product.ts +76 -0
- package/constants/prompts.ts +939 -0
- package/constants/spinnerVerbs.ts +204 -0
- package/constants/system.ts +95 -0
- package/constants/systemPromptSections.ts +68 -0
- package/constants/toolLimits.ts +56 -0
- package/constants/tools.ts +112 -0
- package/constants/turnCompletionVerbs.ts +12 -0
- package/constants/xml.ts +86 -0
- package/entrypoints/agentSdkTypes.ts +443 -0
- package/entrypoints/cli.tsx +307 -0
- package/entrypoints/init.ts +340 -0
- package/entrypoints/mcp.ts +196 -0
- package/entrypoints/sandboxTypes.ts +156 -0
- package/entrypoints/sdk/controlSchemas.ts +663 -0
- package/entrypoints/sdk/coreSchemas.ts +1889 -0
- package/entrypoints/sdk/coreTypes.generated.ts +2 -0
- package/entrypoints/sdk/coreTypes.ts +62 -0
- package/entrypoints/sdk/runtimeTypes.ts +140 -0
- package/entrypoints/sdk/sdkUtilityTypes.ts +3 -0
- package/entrypoints/sdk/toolTypes.ts +90 -0
- package/main.tsx +4686 -0
- package/package.json +120 -0
- package/services/AgentSummary/agentSummary.ts +179 -0
- package/services/MagicDocs/magicDocs.ts +254 -0
- package/services/MagicDocs/prompts.ts +127 -0
- package/services/PromptSuggestion/promptSuggestion.ts +523 -0
- package/services/PromptSuggestion/speculation.ts +991 -0
- package/services/SessionMemory/prompts.ts +324 -0
- package/services/SessionMemory/sessionMemory.ts +495 -0
- package/services/SessionMemory/sessionMemoryUtils.ts +207 -0
- package/services/analytics/config.ts +38 -0
- package/services/analytics/datadog.ts +307 -0
- package/services/analytics/firstPartyEventLogger.ts +449 -0
- package/services/analytics/firstPartyEventLoggingExporter.ts +806 -0
- package/services/analytics/growthbook.ts +1155 -0
- package/services/analytics/index.ts +173 -0
- package/services/analytics/metadata.ts +973 -0
- package/services/analytics/sink.ts +114 -0
- package/services/analytics/sinkKillswitch.ts +25 -0
- package/services/api/adminRequests.ts +119 -0
- package/services/api/bootstrap.ts +141 -0
- package/services/api/claude.ts +3422 -0
- package/services/api/client.ts +406 -0
- package/services/api/dumpPrompts.ts +226 -0
- package/services/api/emptyUsage.ts +22 -0
- package/services/api/errorUtils.ts +260 -0
- package/services/api/errors.ts +1207 -0
- package/services/api/filesApi.ts +748 -0
- package/services/api/firstTokenDate.ts +60 -0
- package/services/api/gemini.ts +359 -0
- package/services/api/geminiAdapter.ts +123 -0
- package/services/api/geminiClient.ts +291 -0
- package/services/api/grove.ts +357 -0
- package/services/api/logging.ts +788 -0
- package/services/api/metricsOptOut.ts +159 -0
- package/services/api/openRouterClient.ts +453 -0
- package/services/api/overageCreditGrant.ts +137 -0
- package/services/api/promptCacheBreakDetection.ts +727 -0
- package/services/api/referral.ts +281 -0
- package/services/api/sessionIngress.ts +514 -0
- package/services/api/ultrareviewQuota.ts +38 -0
- package/services/api/usage.ts +63 -0
- package/services/api/withRetry.ts +822 -0
- package/services/autoDream/autoDream.ts +324 -0
- package/services/autoDream/config.ts +21 -0
- package/services/autoDream/consolidationLock.ts +140 -0
- package/services/autoDream/consolidationPrompt.ts +65 -0
- package/services/awaySummary.ts +74 -0
- package/services/claudeAiLimits.ts +515 -0
- package/services/claudeAiLimitsHook.ts +23 -0
- package/services/compact/apiMicrocompact.ts +153 -0
- package/services/compact/autoCompact.ts +351 -0
- package/services/compact/compact.ts +1705 -0
- package/services/compact/compactWarningHook.ts +16 -0
- package/services/compact/compactWarningState.ts +18 -0
- package/services/compact/grouping.ts +63 -0
- package/services/compact/microCompact.ts +530 -0
- package/services/compact/postCompactCleanup.ts +77 -0
- package/services/compact/prompt.ts +374 -0
- package/services/compact/sessionMemoryCompact.ts +630 -0
- package/services/compact/timeBasedMCConfig.ts +43 -0
- package/services/diagnosticTracking.ts +397 -0
- package/services/extractMemories/extractMemories.ts +517 -0
- package/services/extractMemories/prompts.ts +154 -0
- package/services/internalLogging.ts +90 -0
- package/services/lsp/LSPClient.ts +447 -0
- package/services/lsp/LSPDiagnosticRegistry.ts +386 -0
- package/services/lsp/LSPServerInstance.ts +511 -0
- package/services/lsp/LSPServerManager.ts +420 -0
- package/services/lsp/config.ts +79 -0
- package/services/lsp/manager.ts +289 -0
- package/services/lsp/passiveFeedback.ts +328 -0
- package/services/mcp/InProcessTransport.ts +63 -0
- package/services/mcp/MCPConnectionManager.tsx +73 -0
- package/services/mcp/SdkControlTransport.ts +136 -0
- package/services/mcp/auth.ts +2465 -0
- package/services/mcp/channelAllowlist.ts +76 -0
- package/services/mcp/channelNotification.ts +316 -0
- package/services/mcp/channelPermissions.ts +240 -0
- package/services/mcp/claudeai.ts +164 -0
- package/services/mcp/client.ts +3348 -0
- package/services/mcp/config.ts +1578 -0
- package/services/mcp/elicitationHandler.ts +313 -0
- package/services/mcp/envExpansion.ts +38 -0
- package/services/mcp/headersHelper.ts +138 -0
- package/services/mcp/mcpStringUtils.ts +106 -0
- package/services/mcp/normalization.ts +23 -0
- package/services/mcp/oauthPort.ts +78 -0
- package/services/mcp/officialRegistry.ts +72 -0
- package/services/mcp/types.ts +258 -0
- package/services/mcp/useManageMCPConnections.ts +1141 -0
- package/services/mcp/utils.ts +575 -0
- package/services/mcp/vscodeSdkMcp.ts +112 -0
- package/services/mcp/xaa.ts +511 -0
- package/services/mcp/xaaIdpLogin.ts +487 -0
- package/services/mcpServerApproval.tsx +41 -0
- package/services/mockRateLimits.ts +882 -0
- package/services/notifier.ts +156 -0
- package/services/oauth/auth-code-listener.ts +211 -0
- package/services/oauth/client.ts +566 -0
- package/services/oauth/crypto.ts +23 -0
- package/services/oauth/getOauthProfile.ts +53 -0
- package/services/oauth/index.ts +198 -0
- package/services/plugins/PluginInstallationManager.ts +184 -0
- package/services/plugins/pluginCliCommands.ts +344 -0
- package/services/plugins/pluginOperations.ts +1088 -0
- package/services/policyLimits/index.ts +663 -0
- package/services/policyLimits/types.ts +27 -0
- package/services/preventSleep.ts +165 -0
- package/services/rateLimitMessages.ts +344 -0
- package/services/rateLimitMocking.ts +144 -0
- package/services/remoteManagedSettings/index.ts +638 -0
- package/services/remoteManagedSettings/securityCheck.tsx +74 -0
- package/services/remoteManagedSettings/syncCache.ts +112 -0
- package/services/remoteManagedSettings/syncCacheState.ts +96 -0
- package/services/remoteManagedSettings/types.ts +31 -0
- package/services/settingsSync/index.ts +581 -0
- package/services/settingsSync/types.ts +67 -0
- package/services/teamMemorySync/index.ts +1256 -0
- package/services/teamMemorySync/secretScanner.ts +324 -0
- package/services/teamMemorySync/teamMemSecretGuard.ts +44 -0
- package/services/teamMemorySync/types.ts +156 -0
- package/services/teamMemorySync/watcher.ts +387 -0
- package/services/tips/tipHistory.ts +17 -0
- package/services/tips/tipRegistry.ts +686 -0
- package/services/tips/tipScheduler.ts +58 -0
- package/services/tokenEstimation.ts +495 -0
- package/services/toolUseSummary/toolUseSummaryGenerator.ts +112 -0
- package/services/tools/StreamingToolExecutor.ts +530 -0
- package/services/tools/toolExecution.ts +1745 -0
- package/services/tools/toolHooks.ts +650 -0
- package/services/tools/toolOrchestration.ts +188 -0
- package/services/vcr.ts +406 -0
- package/services/voice.ts +525 -0
- package/services/voiceKeyterms.ts +106 -0
- package/services/voiceStreamSTT.ts +544 -0
- package/tools/AgentTool/AgentTool.tsx +1398 -0
- package/tools/AgentTool/UI.tsx +872 -0
- package/tools/AgentTool/agentColorManager.ts +66 -0
- package/tools/AgentTool/agentDisplay.ts +104 -0
- package/tools/AgentTool/agentMemory.ts +177 -0
- package/tools/AgentTool/agentMemorySnapshot.ts +197 -0
- package/tools/AgentTool/agentToolUtils.ts +686 -0
- package/tools/AgentTool/built-in/claudeCodeGuideAgent.ts +205 -0
- package/tools/AgentTool/built-in/exploreAgent.ts +83 -0
- package/tools/AgentTool/built-in/generalPurposeAgent.ts +34 -0
- package/tools/AgentTool/built-in/planAgent.ts +92 -0
- package/tools/AgentTool/built-in/statuslineSetup.ts +144 -0
- package/tools/AgentTool/built-in/verificationAgent.ts +152 -0
- package/tools/AgentTool/builtInAgents.ts +72 -0
- package/tools/AgentTool/constants.ts +12 -0
- package/tools/AgentTool/forkSubagent.ts +210 -0
- package/tools/AgentTool/loadAgentsDir.ts +755 -0
- package/tools/AgentTool/prompt.ts +287 -0
- package/tools/AgentTool/resumeAgent.ts +265 -0
- package/tools/AgentTool/runAgent.ts +973 -0
- package/tools/AskUserQuestionTool/AskUserQuestionTool.tsx +266 -0
- package/tools/AskUserQuestionTool/prompt.ts +44 -0
- package/tools/BashTool/BashTool.tsx +1144 -0
- package/tools/BashTool/BashToolResultMessage.tsx +191 -0
- package/tools/BashTool/UI.tsx +185 -0
- package/tools/BashTool/bashCommandHelpers.ts +265 -0
- package/tools/BashTool/bashPermissions.ts +2621 -0
- package/tools/BashTool/bashSecurity.ts +2592 -0
- package/tools/BashTool/commandSemantics.ts +140 -0
- package/tools/BashTool/commentLabel.ts +13 -0
- package/tools/BashTool/destructiveCommandWarning.ts +102 -0
- package/tools/BashTool/modeValidation.ts +115 -0
- package/tools/BashTool/pathValidation.ts +1303 -0
- package/tools/BashTool/prompt.ts +369 -0
- package/tools/BashTool/readOnlyValidation.ts +1990 -0
- package/tools/BashTool/sedEditParser.ts +322 -0
- package/tools/BashTool/sedValidation.ts +684 -0
- package/tools/BashTool/shouldUseSandbox.ts +153 -0
- package/tools/BashTool/toolName.ts +2 -0
- package/tools/BashTool/utils.ts +223 -0
- package/tools/BriefTool/BriefTool.ts +204 -0
- package/tools/BriefTool/UI.tsx +101 -0
- package/tools/BriefTool/attachments.ts +110 -0
- package/tools/BriefTool/prompt.ts +22 -0
- package/tools/BriefTool/upload.ts +174 -0
- package/tools/ConfigTool/ConfigTool.ts +467 -0
- package/tools/ConfigTool/UI.tsx +38 -0
- package/tools/ConfigTool/constants.ts +1 -0
- package/tools/ConfigTool/prompt.ts +93 -0
- package/tools/ConfigTool/supportedSettings.ts +211 -0
- package/tools/EnterPlanModeTool/EnterPlanModeTool.ts +126 -0
- package/tools/EnterPlanModeTool/UI.tsx +33 -0
- package/tools/EnterPlanModeTool/constants.ts +1 -0
- package/tools/EnterPlanModeTool/prompt.ts +170 -0
- package/tools/EnterWorktreeTool/EnterWorktreeTool.ts +127 -0
- package/tools/EnterWorktreeTool/UI.tsx +20 -0
- package/tools/EnterWorktreeTool/constants.ts +1 -0
- package/tools/EnterWorktreeTool/prompt.ts +30 -0
- package/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts +493 -0
- package/tools/ExitPlanModeTool/UI.tsx +82 -0
- package/tools/ExitPlanModeTool/constants.ts +2 -0
- package/tools/ExitPlanModeTool/prompt.ts +29 -0
- package/tools/ExitWorktreeTool/ExitWorktreeTool.ts +329 -0
- package/tools/ExitWorktreeTool/UI.tsx +25 -0
- package/tools/ExitWorktreeTool/constants.ts +1 -0
- package/tools/ExitWorktreeTool/prompt.ts +32 -0
- package/tools/FileEditTool/FileEditTool.ts +625 -0
- package/tools/FileEditTool/UI.tsx +289 -0
- package/tools/FileEditTool/constants.ts +11 -0
- package/tools/FileEditTool/prompt.ts +28 -0
- package/tools/FileEditTool/types.ts +85 -0
- package/tools/FileEditTool/utils.ts +775 -0
- package/tools/FileReadTool/FileReadTool.ts +1183 -0
- package/tools/FileReadTool/UI.tsx +185 -0
- package/tools/FileReadTool/imageProcessor.ts +94 -0
- package/tools/FileReadTool/limits.ts +92 -0
- package/tools/FileReadTool/prompt.ts +49 -0
- package/tools/FileWriteTool/FileWriteTool.ts +434 -0
- package/tools/FileWriteTool/UI.tsx +405 -0
- package/tools/FileWriteTool/prompt.ts +18 -0
- package/tools/GlobTool/GlobTool.ts +198 -0
- package/tools/GlobTool/UI.tsx +63 -0
- package/tools/GlobTool/prompt.ts +7 -0
- package/tools/GrepTool/GrepTool.ts +577 -0
- package/tools/GrepTool/UI.tsx +201 -0
- package/tools/GrepTool/prompt.ts +18 -0
- package/tools/LSPTool/LSPTool.ts +860 -0
- package/tools/LSPTool/UI.tsx +228 -0
- package/tools/LSPTool/formatters.ts +592 -0
- package/tools/LSPTool/prompt.ts +21 -0
- package/tools/LSPTool/schemas.ts +215 -0
- package/tools/LSPTool/symbolContext.ts +90 -0
- package/tools/ListMcpResourcesTool/ListMcpResourcesTool.ts +123 -0
- package/tools/ListMcpResourcesTool/UI.tsx +29 -0
- package/tools/ListMcpResourcesTool/prompt.ts +20 -0
- package/tools/MCPTool/MCPTool.ts +77 -0
- package/tools/MCPTool/UI.tsx +403 -0
- package/tools/MCPTool/classifyForCollapse.ts +604 -0
- package/tools/MCPTool/prompt.ts +3 -0
- package/tools/McpAuthTool/McpAuthTool.ts +215 -0
- package/tools/NotebookEditTool/NotebookEditTool.ts +490 -0
- package/tools/NotebookEditTool/UI.tsx +93 -0
- package/tools/NotebookEditTool/constants.ts +2 -0
- package/tools/NotebookEditTool/prompt.ts +3 -0
- package/tools/PowerShellTool/PowerShellTool.tsx +1001 -0
- package/tools/PowerShellTool/UI.tsx +131 -0
- package/tools/PowerShellTool/clmTypes.ts +211 -0
- package/tools/PowerShellTool/commandSemantics.ts +142 -0
- package/tools/PowerShellTool/commonParameters.ts +30 -0
- package/tools/PowerShellTool/destructiveCommandWarning.ts +109 -0
- package/tools/PowerShellTool/gitSafety.ts +176 -0
- package/tools/PowerShellTool/modeValidation.ts +404 -0
- package/tools/PowerShellTool/pathValidation.ts +2049 -0
- package/tools/PowerShellTool/powershellPermissions.ts +1648 -0
- package/tools/PowerShellTool/powershellSecurity.ts +1090 -0
- package/tools/PowerShellTool/prompt.ts +145 -0
- package/tools/PowerShellTool/readOnlyValidation.ts +1823 -0
- package/tools/PowerShellTool/toolName.ts +2 -0
- package/tools/REPLTool/constants.ts +46 -0
- package/tools/REPLTool/primitiveTools.ts +39 -0
- package/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts +158 -0
- package/tools/ReadMcpResourceTool/UI.tsx +37 -0
- package/tools/ReadMcpResourceTool/prompt.ts +16 -0
- package/tools/RemoteTriggerTool/RemoteTriggerTool.ts +161 -0
- package/tools/RemoteTriggerTool/UI.tsx +17 -0
- package/tools/RemoteTriggerTool/prompt.ts +15 -0
- package/tools/ScheduleCronTool/CronCreateTool.ts +157 -0
- package/tools/ScheduleCronTool/CronDeleteTool.ts +95 -0
- package/tools/ScheduleCronTool/CronListTool.ts +97 -0
- package/tools/ScheduleCronTool/UI.tsx +60 -0
- package/tools/ScheduleCronTool/prompt.ts +135 -0
- package/tools/SendMessageTool/SendMessageTool.ts +917 -0
- package/tools/SendMessageTool/UI.tsx +31 -0
- package/tools/SendMessageTool/constants.ts +1 -0
- package/tools/SendMessageTool/prompt.ts +49 -0
- package/tools/SkillTool/SkillTool.ts +1108 -0
- package/tools/SkillTool/UI.tsx +128 -0
- package/tools/SkillTool/constants.ts +1 -0
- package/tools/SkillTool/prompt.ts +241 -0
- package/tools/SleepTool/prompt.ts +17 -0
- package/tools/SyntheticOutputTool/SyntheticOutputTool.ts +163 -0
- package/tools/TaskCreateTool/TaskCreateTool.ts +138 -0
- package/tools/TaskCreateTool/constants.ts +1 -0
- package/tools/TaskCreateTool/prompt.ts +56 -0
- package/tools/TaskGetTool/TaskGetTool.ts +128 -0
- package/tools/TaskGetTool/constants.ts +1 -0
- package/tools/TaskGetTool/prompt.ts +24 -0
- package/tools/TaskListTool/TaskListTool.ts +116 -0
- package/tools/TaskListTool/constants.ts +1 -0
- package/tools/TaskListTool/prompt.ts +49 -0
- package/tools/TaskOutputTool/TaskOutputTool.tsx +584 -0
- package/tools/TaskOutputTool/constants.ts +1 -0
- package/tools/TaskStopTool/TaskStopTool.ts +131 -0
- package/tools/TaskStopTool/UI.tsx +41 -0
- package/tools/TaskStopTool/prompt.ts +8 -0
- package/tools/TaskUpdateTool/TaskUpdateTool.ts +406 -0
- package/tools/TaskUpdateTool/constants.ts +1 -0
- package/tools/TaskUpdateTool/prompt.ts +77 -0
- package/tools/TeamCreateTool/TeamCreateTool.ts +240 -0
- package/tools/TeamCreateTool/UI.tsx +6 -0
- package/tools/TeamCreateTool/constants.ts +1 -0
- package/tools/TeamCreateTool/prompt.ts +113 -0
- package/tools/TeamDeleteTool/TeamDeleteTool.ts +139 -0
- package/tools/TeamDeleteTool/UI.tsx +20 -0
- package/tools/TeamDeleteTool/constants.ts +1 -0
- package/tools/TeamDeleteTool/prompt.ts +16 -0
- package/tools/TodoWriteTool/TodoWriteTool.ts +115 -0
- package/tools/TodoWriteTool/constants.ts +1 -0
- package/tools/TodoWriteTool/prompt.ts +184 -0
- package/tools/ToolSearchTool/ToolSearchTool.ts +471 -0
- package/tools/ToolSearchTool/constants.ts +1 -0
- package/tools/ToolSearchTool/prompt.ts +121 -0
- package/tools/TungstenTool/TungstenTool.ts +4 -0
- package/tools/WebFetchTool/UI.tsx +72 -0
- package/tools/WebFetchTool/WebFetchTool.ts +318 -0
- package/tools/WebFetchTool/preapproved.ts +166 -0
- package/tools/WebFetchTool/prompt.ts +46 -0
- package/tools/WebFetchTool/utils.ts +530 -0
- package/tools/WebSearchTool/UI.tsx +101 -0
- package/tools/WebSearchTool/WebSearchTool.ts +435 -0
- package/tools/WebSearchTool/prompt.ts +34 -0
- package/tools/WorkflowTool/constants.ts +2 -0
- package/tools/XMemIngestTool/XMemIngestTool.ts +140 -0
- package/tools/XMemIngestTool/prompt.ts +13 -0
- package/tools/XMemRetrieveTool/XMemRetrieveTool.ts +177 -0
- package/tools/XMemRetrieveTool/prompt.ts +16 -0
- package/tools/XMemSearchTool/XMemSearchTool.ts +172 -0
- package/tools/XMemSearchTool/prompt.ts +11 -0
- package/tools/shared/gitOperationTracking.ts +277 -0
- package/tools/shared/spawnMultiAgent.ts +1093 -0
- package/tools/testing/TestingPermissionTool.tsx +74 -0
- package/tools/utils.ts +40 -0
- package/utils/CircularBuffer.ts +84 -0
- package/utils/Cursor.ts +1530 -0
- package/utils/QueryGuard.ts +121 -0
- package/utils/Shell.ts +474 -0
- package/utils/ShellCommand.ts +465 -0
- package/utils/abortController.ts +99 -0
- package/utils/activityManager.ts +164 -0
- package/utils/advisor.ts +145 -0
- package/utils/agentContext.ts +178 -0
- package/utils/agentId.ts +99 -0
- package/utils/agentSwarmsEnabled.ts +44 -0
- package/utils/agenticSessionSearch.ts +307 -0
- package/utils/analyzeContext.ts +1382 -0
- package/utils/ansiToPng.ts +334 -0
- package/utils/ansiToSvg.ts +272 -0
- package/utils/api.ts +718 -0
- package/utils/apiPreconnect.ts +71 -0
- package/utils/appleTerminalBackup.ts +124 -0
- package/utils/argumentSubstitution.ts +145 -0
- package/utils/array.ts +13 -0
- package/utils/asciicast.ts +239 -0
- package/utils/attachments.ts +4091 -0
- package/utils/attribution.ts +393 -0
- package/utils/auth.ts +2002 -0
- package/utils/authFileDescriptor.ts +196 -0
- package/utils/authPortable.ts +19 -0
- package/utils/autoModeDenials.ts +26 -0
- package/utils/autoRunIssue.tsx +122 -0
- package/utils/autoUpdater.ts +561 -0
- package/utils/aws.ts +74 -0
- package/utils/awsAuthStatusManager.ts +81 -0
- package/utils/axios.ts +8 -0
- package/utils/background/remote/preconditions.ts +235 -0
- package/utils/background/remote/remoteSession.ts +98 -0
- package/utils/backgroundHousekeeping.ts +94 -0
- package/utils/bash/ParsedCommand.ts +318 -0
- package/utils/bash/ShellSnapshot.ts +582 -0
- package/utils/bash/ast.ts +2679 -0
- package/utils/bash/bashParser.ts +4436 -0
- package/utils/bash/bashPipeCommand.ts +294 -0
- package/utils/bash/commands.ts +1339 -0
- package/utils/bash/heredoc.ts +733 -0
- package/utils/bash/parser.ts +230 -0
- package/utils/bash/prefix.ts +204 -0
- package/utils/bash/registry.ts +53 -0
- package/utils/bash/shellCompletion.ts +259 -0
- package/utils/bash/shellPrefix.ts +28 -0
- package/utils/bash/shellQuote.ts +304 -0
- package/utils/bash/shellQuoting.ts +128 -0
- package/utils/bash/specs/alias.ts +14 -0
- package/utils/bash/specs/index.ts +18 -0
- package/utils/bash/specs/nohup.ts +13 -0
- package/utils/bash/specs/pyright.ts +91 -0
- package/utils/bash/specs/sleep.ts +13 -0
- package/utils/bash/specs/srun.ts +31 -0
- package/utils/bash/specs/time.ts +13 -0
- package/utils/bash/specs/timeout.ts +20 -0
- package/utils/bash/treeSitterAnalysis.ts +506 -0
- package/utils/betas.ts +434 -0
- package/utils/billing.ts +78 -0
- package/utils/binaryCheck.ts +53 -0
- package/utils/browser.ts +68 -0
- package/utils/bufferedWriter.ts +100 -0
- package/utils/bundledMode.ts +22 -0
- package/utils/caCerts.ts +115 -0
- package/utils/caCertsConfig.ts +88 -0
- package/utils/cachePaths.ts +38 -0
- package/utils/classifierApprovals.ts +88 -0
- package/utils/classifierApprovalsHook.ts +17 -0
- package/utils/claudeCodeHints.ts +193 -0
- package/utils/claudeDesktop.ts +152 -0
- package/utils/claudeInChrome/chromeNativeHost.ts +527 -0
- package/utils/claudeInChrome/common.ts +540 -0
- package/utils/claudeInChrome/mcpServer.ts +292 -0
- package/utils/claudeInChrome/prompt.ts +83 -0
- package/utils/claudeInChrome/setup.ts +400 -0
- package/utils/claudeInChrome/setupPortable.ts +233 -0
- package/utils/claudeInChrome/toolRendering.tsx +262 -0
- package/utils/claudemd.ts +1479 -0
- package/utils/cleanup.ts +602 -0
- package/utils/cleanupRegistry.ts +25 -0
- package/utils/cliArgs.ts +60 -0
- package/utils/cliHighlight.ts +54 -0
- package/utils/codeIndexing.ts +206 -0
- package/utils/collapseBackgroundBashNotifications.ts +84 -0
- package/utils/collapseHookSummaries.ts +59 -0
- package/utils/collapseReadSearch.ts +1109 -0
- package/utils/collapseTeammateShutdowns.ts +55 -0
- package/utils/color-diff-mock.ts +27 -0
- package/utils/combinedAbortSignal.ts +47 -0
- package/utils/commandLifecycle.ts +21 -0
- package/utils/commitAttribution.ts +961 -0
- package/utils/completionCache.ts +166 -0
- package/utils/computerUse/appNames.ts +196 -0
- package/utils/computerUse/cleanup.ts +86 -0
- package/utils/computerUse/common.ts +61 -0
- package/utils/computerUse/computerUseLock.ts +215 -0
- package/utils/computerUse/drainRunLoop.ts +79 -0
- package/utils/computerUse/escHotkey.ts +54 -0
- package/utils/computerUse/executor.ts +658 -0
- package/utils/computerUse/gates.ts +72 -0
- package/utils/computerUse/hostAdapter.ts +69 -0
- package/utils/computerUse/inputLoader.ts +30 -0
- package/utils/computerUse/mcpServer.ts +106 -0
- package/utils/computerUse/setup.ts +53 -0
- package/utils/computerUse/swiftLoader.ts +23 -0
- package/utils/computerUse/toolRendering.tsx +125 -0
- package/utils/computerUse/wrapper.tsx +336 -0
- package/utils/concurrentSessions.ts +204 -0
- package/utils/config.ts +1817 -0
- package/utils/configConstants.ts +21 -0
- package/utils/contentArray.ts +51 -0
- package/utils/context.ts +221 -0
- package/utils/contextAnalysis.ts +272 -0
- package/utils/contextSuggestions.ts +235 -0
- package/utils/controlMessageCompat.ts +32 -0
- package/utils/conversationRecovery.ts +597 -0
- package/utils/cron.ts +308 -0
- package/utils/cronJitterConfig.ts +75 -0
- package/utils/cronScheduler.ts +565 -0
- package/utils/cronTasks.ts +458 -0
- package/utils/cronTasksLock.ts +195 -0
- package/utils/crossProjectResume.ts +75 -0
- package/utils/crypto.ts +13 -0
- package/utils/cwd.ts +32 -0
- package/utils/debug.ts +268 -0
- package/utils/debugFilter.ts +157 -0
- package/utils/deepLink/banner.ts +123 -0
- package/utils/deepLink/parseDeepLink.ts +170 -0
- package/utils/deepLink/protocolHandler.ts +136 -0
- package/utils/deepLink/registerProtocol.ts +348 -0
- package/utils/deepLink/terminalLauncher.ts +557 -0
- package/utils/deepLink/terminalPreference.ts +54 -0
- package/utils/desktopDeepLink.ts +236 -0
- package/utils/detectRepository.ts +178 -0
- package/utils/diagLogs.ts +94 -0
- package/utils/diff.ts +177 -0
- package/utils/directMemberMessage.ts +69 -0
- package/utils/displayTags.ts +51 -0
- package/utils/doctorContextWarnings.ts +265 -0
- package/utils/doctorDiagnostic.ts +625 -0
- package/utils/dxt/helpers.ts +88 -0
- package/utils/dxt/zip.ts +226 -0
- package/utils/earlyInput.ts +191 -0
- package/utils/editor.ts +183 -0
- package/utils/effort.ts +329 -0
- package/utils/embeddedTools.ts +29 -0
- package/utils/env.ts +347 -0
- package/utils/envDynamic.ts +151 -0
- package/utils/envUtils.ts +183 -0
- package/utils/envValidation.ts +38 -0
- package/utils/errorLogSink.ts +235 -0
- package/utils/errors.ts +238 -0
- package/utils/exampleCommands.ts +184 -0
- package/utils/execFileNoThrow.ts +150 -0
- package/utils/execFileNoThrowPortable.ts +89 -0
- package/utils/execSyncWrapper.ts +38 -0
- package/utils/exportRenderer.tsx +98 -0
- package/utils/extraUsage.ts +23 -0
- package/utils/fastMode.ts +532 -0
- package/utils/file.ts +584 -0
- package/utils/fileHistory.ts +1115 -0
- package/utils/fileOperationAnalytics.ts +71 -0
- package/utils/filePersistence/filePersistence.ts +287 -0
- package/utils/filePersistence/outputsScanner.ts +126 -0
- package/utils/fileRead.ts +102 -0
- package/utils/fileReadCache.ts +96 -0
- package/utils/fileStateCache.ts +142 -0
- package/utils/findExecutable.ts +17 -0
- package/utils/fingerprint.ts +76 -0
- package/utils/forkedAgent.ts +689 -0
- package/utils/format.ts +308 -0
- package/utils/formatBriefTimestamp.ts +81 -0
- package/utils/fpsTracker.ts +47 -0
- package/utils/frontmatterParser.ts +370 -0
- package/utils/fsOperations.ts +770 -0
- package/utils/fullscreen.ts +202 -0
- package/utils/generatedFiles.ts +136 -0
- package/utils/generators.ts +88 -0
- package/utils/genericProcessUtils.ts +184 -0
- package/utils/getWorktreePaths.ts +70 -0
- package/utils/getWorktreePathsPortable.ts +27 -0
- package/utils/ghPrStatus.ts +106 -0
- package/utils/git/gitConfigParser.ts +277 -0
- package/utils/git/gitFilesystem.ts +699 -0
- package/utils/git/gitignore.ts +99 -0
- package/utils/git.ts +926 -0
- package/utils/gitDiff.ts +532 -0
- package/utils/gitSettings.ts +18 -0
- package/utils/github/ghAuthStatus.ts +29 -0
- package/utils/githubRepoPathMapping.ts +162 -0
- package/utils/glob.ts +130 -0
- package/utils/gracefulShutdown.ts +529 -0
- package/utils/groupToolUses.ts +182 -0
- package/utils/handlePromptSubmit.ts +610 -0
- package/utils/hash.ts +46 -0
- package/utils/headlessProfiler.ts +178 -0
- package/utils/heapDumpService.ts +303 -0
- package/utils/heatmap.ts +198 -0
- package/utils/highlightMatch.tsx +28 -0
- package/utils/hooks/AsyncHookRegistry.ts +309 -0
- package/utils/hooks/apiQueryHookHelper.ts +141 -0
- package/utils/hooks/execAgentHook.ts +339 -0
- package/utils/hooks/execHttpHook.ts +242 -0
- package/utils/hooks/execPromptHook.ts +211 -0
- package/utils/hooks/fileChangedWatcher.ts +191 -0
- package/utils/hooks/hookEvents.ts +192 -0
- package/utils/hooks/hookHelpers.ts +83 -0
- package/utils/hooks/hooksConfigManager.ts +400 -0
- package/utils/hooks/hooksConfigSnapshot.ts +133 -0
- package/utils/hooks/hooksSettings.ts +271 -0
- package/utils/hooks/postSamplingHooks.ts +70 -0
- package/utils/hooks/registerFrontmatterHooks.ts +67 -0
- package/utils/hooks/registerSkillHooks.ts +64 -0
- package/utils/hooks/sessionHooks.ts +447 -0
- package/utils/hooks/skillImprovement.ts +267 -0
- package/utils/hooks/ssrfGuard.ts +294 -0
- package/utils/hooks.ts +5022 -0
- package/utils/horizontalScroll.ts +137 -0
- package/utils/http.ts +136 -0
- package/utils/hyperlink.ts +39 -0
- package/utils/iTermBackup.ts +73 -0
- package/utils/ide.ts +1494 -0
- package/utils/idePathConversion.ts +90 -0
- package/utils/idleTimeout.ts +53 -0
- package/utils/imagePaste.ts +416 -0
- package/utils/imageResizer.ts +880 -0
- package/utils/imageStore.ts +167 -0
- package/utils/imageValidation.ts +104 -0
- package/utils/immediateCommand.ts +15 -0
- package/utils/inProcessTeammateHelpers.ts +102 -0
- package/utils/ink.ts +26 -0
- package/utils/intl.ts +94 -0
- package/utils/jetbrains.ts +191 -0
- package/utils/json.ts +277 -0
- package/utils/jsonRead.ts +16 -0
- package/utils/keyboardShortcuts.ts +14 -0
- package/utils/lazySchema.ts +8 -0
- package/utils/listSessionsImpl.ts +454 -0
- package/utils/localInstaller.ts +162 -0
- package/utils/lockfile.ts +43 -0
- package/utils/log.ts +362 -0
- package/utils/logoV2Utils.ts +347 -0
- package/utils/mailbox.ts +73 -0
- package/utils/managedEnv.ts +199 -0
- package/utils/managedEnvConstants.ts +191 -0
- package/utils/markdown.ts +381 -0
- package/utils/markdownConfigLoader.ts +600 -0
- package/utils/mcp/dateTimeParser.ts +121 -0
- package/utils/mcp/elicitationValidation.ts +336 -0
- package/utils/mcpInstructionsDelta.ts +130 -0
- package/utils/mcpOutputStorage.ts +189 -0
- package/utils/mcpValidation.ts +208 -0
- package/utils/mcpWebSocketTransport.ts +200 -0
- package/utils/memoize.ts +269 -0
- package/utils/memory/types.ts +12 -0
- package/utils/memory/versions.ts +8 -0
- package/utils/memoryFileDetection.ts +289 -0
- package/utils/messagePredicates.ts +8 -0
- package/utils/messageQueueManager.ts +547 -0
- package/utils/messages/mappers.ts +290 -0
- package/utils/messages/systemInit.ts +96 -0
- package/utils/messages.ts +5520 -0
- package/utils/model/agent.ts +157 -0
- package/utils/model/aliases.ts +35 -0
- package/utils/model/antModels.ts +64 -0
- package/utils/model/bedrock.ts +265 -0
- package/utils/model/check1mAccess.ts +72 -0
- package/utils/model/configs.ts +158 -0
- package/utils/model/contextWindowUpgradeCheck.ts +47 -0
- package/utils/model/deprecation.ts +101 -0
- package/utils/model/model.ts +654 -0
- package/utils/model/modelAllowlist.ts +170 -0
- package/utils/model/modelCapabilities.ts +118 -0
- package/utils/model/modelOptions.ts +589 -0
- package/utils/model/modelStrings.ts +170 -0
- package/utils/model/modelSupportOverrides.ts +50 -0
- package/utils/model/providers.ts +42 -0
- package/utils/model/validateModel.ts +159 -0
- package/utils/modelCost.ts +231 -0
- package/utils/modifiers.ts +36 -0
- package/utils/mtls.ts +179 -0
- package/utils/nativeInstaller/download.ts +523 -0
- package/utils/nativeInstaller/index.ts +18 -0
- package/utils/nativeInstaller/installer.ts +1708 -0
- package/utils/nativeInstaller/packageManagers.ts +336 -0
- package/utils/nativeInstaller/pidLock.ts +433 -0
- package/utils/notebook.ts +224 -0
- package/utils/objectGroupBy.ts +18 -0
- package/utils/pasteStore.ts +104 -0
- package/utils/path.ts +155 -0
- package/utils/pdf.ts +300 -0
- package/utils/pdfUtils.ts +70 -0
- package/utils/peerAddress.ts +21 -0
- package/utils/permissions/PermissionMode.ts +141 -0
- package/utils/permissions/PermissionPromptToolResultSchema.ts +127 -0
- package/utils/permissions/PermissionResult.ts +35 -0
- package/utils/permissions/PermissionRule.ts +40 -0
- package/utils/permissions/PermissionUpdate.ts +389 -0
- package/utils/permissions/PermissionUpdateSchema.ts +78 -0
- package/utils/permissions/autoModeState.ts +39 -0
- package/utils/permissions/bashClassifier.ts +61 -0
- package/utils/permissions/bypassPermissionsKillswitch.ts +155 -0
- package/utils/permissions/classifierDecision.ts +98 -0
- package/utils/permissions/classifierShared.ts +39 -0
- package/utils/permissions/dangerousPatterns.ts +80 -0
- package/utils/permissions/denialTracking.ts +45 -0
- package/utils/permissions/filesystem.ts +1777 -0
- package/utils/permissions/getNextPermissionMode.ts +101 -0
- package/utils/permissions/pathValidation.ts +485 -0
- package/utils/permissions/permissionExplainer.ts +250 -0
- package/utils/permissions/permissionRuleParser.ts +198 -0
- package/utils/permissions/permissionSetup.ts +1532 -0
- package/utils/permissions/permissions.ts +1486 -0
- package/utils/permissions/permissionsLoader.ts +296 -0
- package/utils/permissions/shadowedRuleDetection.ts +234 -0
- package/utils/permissions/shellRuleMatching.ts +228 -0
- package/utils/permissions/yoloClassifier.ts +1495 -0
- package/utils/planModeV2.ts +95 -0
- package/utils/plans.ts +397 -0
- package/utils/platform.ts +150 -0
- package/utils/plugins/addDirPluginSettings.ts +71 -0
- package/utils/plugins/cacheUtils.ts +196 -0
- package/utils/plugins/dependencyResolver.ts +305 -0
- package/utils/plugins/fetchTelemetry.ts +135 -0
- package/utils/plugins/gitAvailability.ts +69 -0
- package/utils/plugins/headlessPluginInstall.ts +174 -0
- package/utils/plugins/hintRecommendation.ts +164 -0
- package/utils/plugins/installCounts.ts +292 -0
- package/utils/plugins/installedPluginsManager.ts +1268 -0
- package/utils/plugins/loadPluginAgents.ts +348 -0
- package/utils/plugins/loadPluginCommands.ts +946 -0
- package/utils/plugins/loadPluginHooks.ts +287 -0
- package/utils/plugins/loadPluginOutputStyles.ts +178 -0
- package/utils/plugins/lspPluginIntegration.ts +387 -0
- package/utils/plugins/lspRecommendation.ts +374 -0
- package/utils/plugins/managedPlugins.ts +27 -0
- package/utils/plugins/marketplaceHelpers.ts +592 -0
- package/utils/plugins/marketplaceManager.ts +2643 -0
- package/utils/plugins/mcpPluginIntegration.ts +634 -0
- package/utils/plugins/mcpbHandler.ts +968 -0
- package/utils/plugins/officialMarketplace.ts +25 -0
- package/utils/plugins/officialMarketplaceGcs.ts +216 -0
- package/utils/plugins/officialMarketplaceStartupCheck.ts +439 -0
- package/utils/plugins/orphanedPluginFilter.ts +114 -0
- package/utils/plugins/parseMarketplaceInput.ts +162 -0
- package/utils/plugins/performStartupChecks.tsx +70 -0
- package/utils/plugins/pluginAutoupdate.ts +284 -0
- package/utils/plugins/pluginBlocklist.ts +127 -0
- package/utils/plugins/pluginDirectories.ts +178 -0
- package/utils/plugins/pluginFlagging.ts +208 -0
- package/utils/plugins/pluginIdentifier.ts +123 -0
- package/utils/plugins/pluginInstallationHelpers.ts +595 -0
- package/utils/plugins/pluginLoader.ts +3302 -0
- package/utils/plugins/pluginOptionsStorage.ts +400 -0
- package/utils/plugins/pluginPolicy.ts +20 -0
- package/utils/plugins/pluginStartupCheck.ts +341 -0
- package/utils/plugins/pluginVersioning.ts +157 -0
- package/utils/plugins/reconciler.ts +265 -0
- package/utils/plugins/refresh.ts +215 -0
- package/utils/plugins/schemas.ts +1681 -0
- package/utils/plugins/validatePlugin.ts +903 -0
- package/utils/plugins/walkPluginMarkdown.ts +69 -0
- package/utils/plugins/zipCache.ts +406 -0
- package/utils/plugins/zipCacheAdapters.ts +164 -0
- package/utils/powershell/dangerousCmdlets.ts +185 -0
- package/utils/powershell/parser.ts +1804 -0
- package/utils/powershell/staticPrefix.ts +316 -0
- package/utils/preflightChecks.tsx +151 -0
- package/utils/privacyLevel.ts +55 -0
- package/utils/process.ts +68 -0
- package/utils/processUserInput/processBashCommand.tsx +140 -0
- package/utils/processUserInput/processSlashCommand.tsx +922 -0
- package/utils/processUserInput/processTextPrompt.ts +100 -0
- package/utils/processUserInput/processUserInput.ts +605 -0
- package/utils/profilerBase.ts +46 -0
- package/utils/promptCategory.ts +49 -0
- package/utils/promptEditor.ts +188 -0
- package/utils/promptShellExecution.ts +183 -0
- package/utils/proxy.ts +426 -0
- package/utils/queryContext.ts +179 -0
- package/utils/queryHelpers.ts +552 -0
- package/utils/queryProfiler.ts +301 -0
- package/utils/queueProcessor.ts +95 -0
- package/utils/readEditContext.ts +227 -0
- package/utils/readFileInRange.ts +383 -0
- package/utils/releaseNotes.ts +360 -0
- package/utils/renderOptions.ts +113 -0
- package/utils/ripgrep.ts +679 -0
- package/utils/sandbox/sandbox-adapter.ts +985 -0
- package/utils/sandbox/sandbox-ui-utils.ts +12 -0
- package/utils/sanitization.ts +91 -0
- package/utils/screenshotClipboard.ts +121 -0
- package/utils/sdkEventQueue.ts +134 -0
- package/utils/secureStorage/fallbackStorage.ts +70 -0
- package/utils/secureStorage/index.ts +17 -0
- package/utils/secureStorage/keychainPrefetch.ts +116 -0
- package/utils/secureStorage/macOsKeychainHelpers.ts +111 -0
- package/utils/secureStorage/macOsKeychainStorage.ts +231 -0
- package/utils/secureStorage/plainTextStorage.ts +84 -0
- package/utils/semanticBoolean.ts +29 -0
- package/utils/semanticNumber.ts +36 -0
- package/utils/semver.ts +59 -0
- package/utils/sequential.ts +56 -0
- package/utils/sessionActivity.ts +133 -0
- package/utils/sessionEnvVars.ts +22 -0
- package/utils/sessionEnvironment.ts +166 -0
- package/utils/sessionFileAccessHooks.ts +250 -0
- package/utils/sessionIngressAuth.ts +140 -0
- package/utils/sessionRestore.ts +551 -0
- package/utils/sessionStart.ts +232 -0
- package/utils/sessionState.ts +150 -0
- package/utils/sessionStorage.ts +5105 -0
- package/utils/sessionStoragePortable.ts +793 -0
- package/utils/sessionTitle.ts +129 -0
- package/utils/sessionUrl.ts +64 -0
- package/utils/set.ts +53 -0
- package/utils/settings/allErrors.ts +32 -0
- package/utils/settings/applySettingsChange.ts +92 -0
- package/utils/settings/changeDetector.ts +488 -0
- package/utils/settings/constants.ts +202 -0
- package/utils/settings/internalWrites.ts +37 -0
- package/utils/settings/managedPath.ts +34 -0
- package/utils/settings/mdm/constants.ts +81 -0
- package/utils/settings/mdm/rawRead.ts +130 -0
- package/utils/settings/mdm/settings.ts +316 -0
- package/utils/settings/permissionValidation.ts +262 -0
- package/utils/settings/pluginOnlyPolicy.ts +60 -0
- package/utils/settings/schemaOutput.ts +8 -0
- package/utils/settings/settings.ts +1015 -0
- package/utils/settings/settingsCache.ts +80 -0
- package/utils/settings/toolValidationConfig.ts +103 -0
- package/utils/settings/types.ts +1149 -0
- package/utils/settings/validateEditTool.ts +45 -0
- package/utils/settings/validation.ts +265 -0
- package/utils/settings/validationTips.ts +164 -0
- package/utils/shell/bashProvider.ts +255 -0
- package/utils/shell/outputLimits.ts +14 -0
- package/utils/shell/powershellDetection.ts +107 -0
- package/utils/shell/powershellProvider.ts +123 -0
- package/utils/shell/prefix.ts +367 -0
- package/utils/shell/readOnlyCommandValidation.ts +1893 -0
- package/utils/shell/resolveDefaultShell.ts +14 -0
- package/utils/shell/shellProvider.ts +33 -0
- package/utils/shell/shellToolUtils.ts +22 -0
- package/utils/shell/specPrefix.ts +241 -0
- package/utils/shellConfig.ts +167 -0
- package/utils/sideQuery.ts +222 -0
- package/utils/sideQuestion.ts +155 -0
- package/utils/signal.ts +43 -0
- package/utils/sinks.ts +16 -0
- package/utils/skills/skillChangeDetector.ts +311 -0
- package/utils/slashCommandParsing.ts +60 -0
- package/utils/sleep.ts +84 -0
- package/utils/sliceAnsi.ts +91 -0
- package/utils/slowOperations.ts +286 -0
- package/utils/standaloneAgent.ts +23 -0
- package/utils/startupProfiler.ts +194 -0
- package/utils/staticRender.tsx +116 -0
- package/utils/stats.ts +1061 -0
- package/utils/statsCache.ts +434 -0
- package/utils/status.tsx +362 -0
- package/utils/statusNoticeDefinitions.tsx +198 -0
- package/utils/statusNoticeHelpers.ts +20 -0
- package/utils/stream.ts +76 -0
- package/utils/streamJsonStdoutGuard.ts +123 -0
- package/utils/streamlinedTransform.ts +201 -0
- package/utils/stringUtils.ts +235 -0
- package/utils/subprocessEnv.ts +99 -0
- package/utils/suggestions/commandSuggestions.ts +567 -0
- package/utils/suggestions/directoryCompletion.ts +263 -0
- package/utils/suggestions/shellHistoryCompletion.ts +119 -0
- package/utils/suggestions/skillUsageTracking.ts +55 -0
- package/utils/suggestions/slackChannelSuggestions.ts +209 -0
- package/utils/swarm/It2SetupPrompt.tsx +380 -0
- package/utils/swarm/backends/ITermBackend.ts +370 -0
- package/utils/swarm/backends/InProcessBackend.ts +339 -0
- package/utils/swarm/backends/PaneBackendExecutor.ts +354 -0
- package/utils/swarm/backends/TmuxBackend.ts +764 -0
- package/utils/swarm/backends/detection.ts +128 -0
- package/utils/swarm/backends/it2Setup.ts +245 -0
- package/utils/swarm/backends/registry.ts +464 -0
- package/utils/swarm/backends/teammateModeSnapshot.ts +87 -0
- package/utils/swarm/backends/types.ts +311 -0
- package/utils/swarm/constants.ts +33 -0
- package/utils/swarm/inProcessRunner.ts +1552 -0
- package/utils/swarm/leaderPermissionBridge.ts +54 -0
- package/utils/swarm/permissionSync.ts +928 -0
- package/utils/swarm/reconnection.ts +119 -0
- package/utils/swarm/spawnInProcess.ts +328 -0
- package/utils/swarm/spawnUtils.ts +146 -0
- package/utils/swarm/teamHelpers.ts +683 -0
- package/utils/swarm/teammateInit.ts +129 -0
- package/utils/swarm/teammateLayoutManager.ts +107 -0
- package/utils/swarm/teammateModel.ts +10 -0
- package/utils/swarm/teammatePromptAddendum.ts +18 -0
- package/utils/systemDirectories.ts +74 -0
- package/utils/systemPrompt.ts +123 -0
- package/utils/systemPromptType.ts +14 -0
- package/utils/systemTheme.ts +119 -0
- package/utils/taggedId.ts +54 -0
- package/utils/task/TaskOutput.ts +390 -0
- package/utils/task/diskOutput.ts +451 -0
- package/utils/task/framework.ts +308 -0
- package/utils/task/outputFormatting.ts +38 -0
- package/utils/task/sdkProgress.ts +36 -0
- package/utils/tasks.ts +862 -0
- package/utils/teamDiscovery.ts +81 -0
- package/utils/teamMemoryOps.ts +88 -0
- package/utils/teammate.ts +292 -0
- package/utils/teammateContext.ts +96 -0
- package/utils/teammateMailbox.ts +1183 -0
- package/utils/telemetry/betaSessionTracing.ts +491 -0
- package/utils/telemetry/bigqueryExporter.ts +252 -0
- package/utils/telemetry/events.ts +75 -0
- package/utils/telemetry/instrumentation.ts +825 -0
- package/utils/telemetry/logger.ts +26 -0
- package/utils/telemetry/perfettoTracing.ts +1120 -0
- package/utils/telemetry/pluginTelemetry.ts +289 -0
- package/utils/telemetry/sessionTracing.ts +927 -0
- package/utils/telemetry/skillLoadedEvent.ts +39 -0
- package/utils/telemetryAttributes.ts +71 -0
- package/utils/teleport/api.ts +466 -0
- package/utils/teleport/environmentSelection.ts +77 -0
- package/utils/teleport/environments.ts +120 -0
- package/utils/teleport/gitBundle.ts +292 -0
- package/utils/teleport.tsx +1226 -0
- package/utils/tempfile.ts +31 -0
- package/utils/terminal.ts +131 -0
- package/utils/terminalPanel.ts +191 -0
- package/utils/textHighlighting.ts +166 -0
- package/utils/theme.ts +639 -0
- package/utils/thinking.ts +162 -0
- package/utils/timeouts.ts +39 -0
- package/utils/tmuxSocket.ts +427 -0
- package/utils/todo/types.ts +18 -0
- package/utils/tokenBudget.ts +73 -0
- package/utils/tokens.ts +261 -0
- package/utils/toolErrors.ts +132 -0
- package/utils/toolPool.ts +79 -0
- package/utils/toolResultStorage.ts +1040 -0
- package/utils/toolSchemaCache.ts +26 -0
- package/utils/toolSearch.ts +756 -0
- package/utils/transcriptSearch.ts +202 -0
- package/utils/treeify.ts +170 -0
- package/utils/truncate.ts +179 -0
- package/utils/ultraplan/ccrSession.ts +349 -0
- package/utils/ultraplan/keyword.ts +127 -0
- package/utils/ultraplan/prompt.txt +1 -0
- package/utils/unaryLogging.ts +39 -0
- package/utils/undercover.ts +89 -0
- package/utils/user.ts +194 -0
- package/utils/userAgent.ts +10 -0
- package/utils/userPromptKeywords.ts +27 -0
- package/utils/uuid.ts +27 -0
- package/utils/warningHandler.ts +121 -0
- package/utils/which.ts +82 -0
- package/utils/windowsPaths.ts +173 -0
- package/utils/withResolvers.ts +13 -0
- package/utils/words.ts +800 -0
- package/utils/workloadContext.ts +57 -0
- package/utils/worktree.ts +1519 -0
- package/utils/worktreeModeEnabled.ts +11 -0
- package/utils/xdg.ts +65 -0
- package/utils/xmem.ts +6 -0
- package/utils/xml.ts +16 -0
- package/utils/yaml.ts +15 -0
- package/utils/zodToJsonSchema.ts +23 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { feature } from 'bun:bundle'
|
|
2
|
+
import { stat } from 'fs/promises'
|
|
3
|
+
import memoize from 'lodash-es/memoize.js'
|
|
4
|
+
import { env, JETBRAINS_IDES } from './env.js'
|
|
5
|
+
import { isEnvTruthy } from './envUtils.js'
|
|
6
|
+
import { execFileNoThrow } from './execFileNoThrow.js'
|
|
7
|
+
import { getAncestorCommandsAsync } from './genericProcessUtils.js'
|
|
8
|
+
|
|
9
|
+
// Functions that require execFileNoThrow and thus cannot be in env.ts
|
|
10
|
+
|
|
11
|
+
const getIsDocker = memoize(async (): Promise<boolean> => {
|
|
12
|
+
if (process.platform !== 'linux') return false
|
|
13
|
+
// Check for .dockerenv file
|
|
14
|
+
const { code } = await execFileNoThrow('test', ['-f', '/.dockerenv'])
|
|
15
|
+
return code === 0
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
function getIsBubblewrapSandbox(): boolean {
|
|
19
|
+
return (
|
|
20
|
+
process.platform === 'linux' &&
|
|
21
|
+
isEnvTruthy(process.env.CLAUDE_CODE_BUBBLEWRAP)
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Cache for the runtime musl detection fallback (node/unbundled only).
|
|
26
|
+
// In native linux builds, feature flags resolve this at compile time, so the
|
|
27
|
+
// cache is only consulted when both IS_LIBC_MUSL and IS_LIBC_GLIBC are false.
|
|
28
|
+
let muslRuntimeCache: boolean | null = null
|
|
29
|
+
|
|
30
|
+
// Fire-and-forget: populate the musl cache for the node fallback path.
|
|
31
|
+
// Native builds never reach this (feature flags short-circuit), so this only
|
|
32
|
+
// matters for unbundled node on Linux. Installer calls on native builds are
|
|
33
|
+
// unaffected since feature() resolves at compile time.
|
|
34
|
+
if (process.platform === 'linux') {
|
|
35
|
+
const muslArch = process.arch === 'x64' ? 'x86_64' : 'aarch64'
|
|
36
|
+
void stat(`/lib/libc.musl-${muslArch}.so.1`).then(
|
|
37
|
+
() => {
|
|
38
|
+
muslRuntimeCache = true
|
|
39
|
+
},
|
|
40
|
+
() => {
|
|
41
|
+
muslRuntimeCache = false
|
|
42
|
+
},
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Checks if the system is using MUSL libc instead of glibc.
|
|
48
|
+
* In native linux builds, this is statically known at compile time via IS_LIBC_MUSL/IS_LIBC_GLIBC flags.
|
|
49
|
+
* In node (unbundled), both flags are false and we fall back to a runtime async stat check
|
|
50
|
+
* whose result is cached at module load. If the cache isn't populated yet, returns false.
|
|
51
|
+
*/
|
|
52
|
+
function isMuslEnvironment(): boolean {
|
|
53
|
+
if (feature('IS_LIBC_MUSL')) return true
|
|
54
|
+
if (feature('IS_LIBC_GLIBC')) return false
|
|
55
|
+
|
|
56
|
+
// Fallback for node: runtime detection via pre-populated cache
|
|
57
|
+
if (process.platform !== 'linux') return false
|
|
58
|
+
return muslRuntimeCache ?? false
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Cache for async JetBrains detection
|
|
62
|
+
let jetBrainsIDECache: string | null | undefined
|
|
63
|
+
|
|
64
|
+
async function detectJetBrainsIDEFromParentProcessAsync(): Promise<
|
|
65
|
+
string | null
|
|
66
|
+
> {
|
|
67
|
+
if (jetBrainsIDECache !== undefined) {
|
|
68
|
+
return jetBrainsIDECache
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (process.platform === 'darwin') {
|
|
72
|
+
jetBrainsIDECache = null
|
|
73
|
+
return null // macOS uses bundle ID detection which is already handled
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
try {
|
|
77
|
+
// Get ancestor commands in a single call (avoids sync bash in loop)
|
|
78
|
+
const commands = await getAncestorCommandsAsync(process.pid, 10)
|
|
79
|
+
|
|
80
|
+
for (const command of commands) {
|
|
81
|
+
const lowerCommand = command.toLowerCase()
|
|
82
|
+
// Check for specific JetBrains IDEs in the command line
|
|
83
|
+
for (const ide of JETBRAINS_IDES) {
|
|
84
|
+
if (lowerCommand.includes(ide)) {
|
|
85
|
+
jetBrainsIDECache = ide
|
|
86
|
+
return ide
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
} catch {
|
|
91
|
+
// Silently fail - this is a best-effort detection
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
jetBrainsIDECache = null
|
|
95
|
+
return null
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export async function getTerminalWithJetBrainsDetectionAsync(): Promise<
|
|
99
|
+
string | null
|
|
100
|
+
> {
|
|
101
|
+
// Check for JetBrains terminal on Linux/Windows
|
|
102
|
+
if (process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm') {
|
|
103
|
+
// For macOS, bundle ID detection above already handles JetBrains IDEs
|
|
104
|
+
if (env.platform !== 'darwin') {
|
|
105
|
+
const specificIDE = await detectJetBrainsIDEFromParentProcessAsync()
|
|
106
|
+
return specificIDE || 'pycharm'
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return env.terminal
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Synchronous version that returns cached result or falls back to env.terminal
|
|
113
|
+
// Used for backward compatibility - callers should migrate to async version
|
|
114
|
+
export function getTerminalWithJetBrainsDetection(): string | null {
|
|
115
|
+
// Check for JetBrains terminal on Linux/Windows
|
|
116
|
+
if (process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm') {
|
|
117
|
+
// For macOS, bundle ID detection above already handles JetBrains IDEs
|
|
118
|
+
if (env.platform !== 'darwin') {
|
|
119
|
+
// Return cached value if available, otherwise fall back to generic detection
|
|
120
|
+
// The async version should be called early in app initialization to populate cache
|
|
121
|
+
if (jetBrainsIDECache !== undefined) {
|
|
122
|
+
return jetBrainsIDECache || 'pycharm'
|
|
123
|
+
}
|
|
124
|
+
// Fall back to generic 'pycharm' if cache not populated yet
|
|
125
|
+
return 'pycharm'
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return env.terminal
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Initialize JetBrains IDE detection asynchronously.
|
|
133
|
+
* Call this early in app initialization to populate the cache.
|
|
134
|
+
* After this resolves, getTerminalWithJetBrainsDetection() will return accurate results.
|
|
135
|
+
*/
|
|
136
|
+
export async function initJetBrainsDetection(): Promise<void> {
|
|
137
|
+
if (process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm') {
|
|
138
|
+
await detectJetBrainsIDEFromParentProcessAsync()
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Combined export that includes all env properties plus dynamic functions
|
|
143
|
+
export const envDynamic = {
|
|
144
|
+
...env, // Include all properties from env
|
|
145
|
+
terminal: getTerminalWithJetBrainsDetection(),
|
|
146
|
+
getIsDocker,
|
|
147
|
+
getIsBubblewrapSandbox,
|
|
148
|
+
isMuslEnvironment,
|
|
149
|
+
getTerminalWithJetBrainsDetectionAsync,
|
|
150
|
+
initJetBrainsDetection,
|
|
151
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import memoize from 'lodash-es/memoize.js'
|
|
2
|
+
import { homedir } from 'os'
|
|
3
|
+
import { join } from 'path'
|
|
4
|
+
|
|
5
|
+
// Memoized: 150+ callers, many on hot paths. Keyed off CLAUDE_CONFIG_DIR so
|
|
6
|
+
// tests that change the env var get a fresh value without explicit cache.clear.
|
|
7
|
+
export const getClaudeConfigHomeDir = memoize(
|
|
8
|
+
(): string => {
|
|
9
|
+
return (
|
|
10
|
+
process.env.CLAUDE_CONFIG_DIR ?? join(homedir(), '.claude')
|
|
11
|
+
).normalize('NFC')
|
|
12
|
+
},
|
|
13
|
+
() => process.env.CLAUDE_CONFIG_DIR,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
export function getTeamsDir(): string {
|
|
17
|
+
return join(getClaudeConfigHomeDir(), 'teams')
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Check if NODE_OPTIONS contains a specific flag.
|
|
22
|
+
* Splits on whitespace and checks for exact match to avoid false positives.
|
|
23
|
+
*/
|
|
24
|
+
export function hasNodeOption(flag: string): boolean {
|
|
25
|
+
const nodeOptions = process.env.NODE_OPTIONS
|
|
26
|
+
if (!nodeOptions) {
|
|
27
|
+
return false
|
|
28
|
+
}
|
|
29
|
+
return nodeOptions.split(/\s+/).includes(flag)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function isEnvTruthy(envVar: string | boolean | undefined): boolean {
|
|
33
|
+
if (!envVar) return false
|
|
34
|
+
if (typeof envVar === 'boolean') return envVar
|
|
35
|
+
const normalizedValue = envVar.toLowerCase().trim()
|
|
36
|
+
return ['1', 'true', 'yes', 'on'].includes(normalizedValue)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function isEnvDefinedFalsy(
|
|
40
|
+
envVar: string | boolean | undefined,
|
|
41
|
+
): boolean {
|
|
42
|
+
if (envVar === undefined) return false
|
|
43
|
+
if (typeof envVar === 'boolean') return !envVar
|
|
44
|
+
if (!envVar) return false
|
|
45
|
+
const normalizedValue = envVar.toLowerCase().trim()
|
|
46
|
+
return ['0', 'false', 'no', 'off'].includes(normalizedValue)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* --bare / CLAUDE_CODE_SIMPLE — skip hooks, LSP, plugin sync, skill dir-walk,
|
|
51
|
+
* attribution, background prefetches, and ALL keychain/credential reads.
|
|
52
|
+
* Auth is strictly ANTHROPIC_API_KEY env or apiKeyHelper from --settings.
|
|
53
|
+
* Explicit CLI flags (--plugin-dir, --add-dir, --mcp-config) still honored.
|
|
54
|
+
* ~30 gates across the codebase.
|
|
55
|
+
*
|
|
56
|
+
* Checks argv directly (in addition to the env var) because several gates
|
|
57
|
+
* run before main.tsx's action handler sets CLAUDE_CODE_SIMPLE=1 from --bare
|
|
58
|
+
* — notably startKeychainPrefetch() at main.tsx top-level.
|
|
59
|
+
*/
|
|
60
|
+
export function isBareMode(): boolean {
|
|
61
|
+
return (
|
|
62
|
+
isEnvTruthy(process.env.CLAUDE_CODE_SIMPLE) ||
|
|
63
|
+
process.argv.includes('--bare')
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Parses an array of environment variable strings into a key-value object
|
|
69
|
+
* @param envVars Array of strings in KEY=VALUE format
|
|
70
|
+
* @returns Object with key-value pairs
|
|
71
|
+
*/
|
|
72
|
+
export function parseEnvVars(
|
|
73
|
+
rawEnvArgs: string[] | undefined,
|
|
74
|
+
): Record<string, string> {
|
|
75
|
+
const parsedEnv: Record<string, string> = {}
|
|
76
|
+
|
|
77
|
+
// Parse individual env vars
|
|
78
|
+
if (rawEnvArgs) {
|
|
79
|
+
for (const envStr of rawEnvArgs) {
|
|
80
|
+
const [key, ...valueParts] = envStr.split('=')
|
|
81
|
+
if (!key || valueParts.length === 0) {
|
|
82
|
+
throw new Error(
|
|
83
|
+
`Invalid environment variable format: ${envStr}, environment variables should be added as: -e KEY1=value1 -e KEY2=value2`,
|
|
84
|
+
)
|
|
85
|
+
}
|
|
86
|
+
parsedEnv[key] = valueParts.join('=')
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return parsedEnv
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Get the AWS region with fallback to default
|
|
94
|
+
* Matches the Anthropic Bedrock SDK's region behavior
|
|
95
|
+
*/
|
|
96
|
+
export function getAWSRegion(): string {
|
|
97
|
+
return process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1'
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Get the default Vertex AI region
|
|
102
|
+
*/
|
|
103
|
+
export function getDefaultVertexRegion(): string {
|
|
104
|
+
return process.env.CLOUD_ML_REGION || 'us-east5'
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Check if bash commands should maintain project working directory (reset to original after each command)
|
|
109
|
+
* @returns true if CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR is set to a truthy value
|
|
110
|
+
*/
|
|
111
|
+
export function shouldMaintainProjectWorkingDir(): boolean {
|
|
112
|
+
return isEnvTruthy(process.env.CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Check if running on Homespace (ant-internal cloud environment)
|
|
117
|
+
*/
|
|
118
|
+
export function isRunningOnHomespace(): boolean {
|
|
119
|
+
return (
|
|
120
|
+
process.env.USER_TYPE === 'ant' &&
|
|
121
|
+
isEnvTruthy(process.env.COO_RUNNING_ON_HOMESPACE)
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Conservative check for whether Claude Code is running inside a protected
|
|
127
|
+
* (privileged or ASL3+) COO namespace or cluster.
|
|
128
|
+
*
|
|
129
|
+
* Conservative means: when signals are ambiguous, assume protected. We would
|
|
130
|
+
* rather over-report protected usage than miss it. Unprotected environments
|
|
131
|
+
* are homespace, namespaces on the open allowlist, and no k8s/COO signals
|
|
132
|
+
* at all (laptop/local dev).
|
|
133
|
+
*
|
|
134
|
+
* Used for telemetry to measure auto-mode usage in sensitive environments.
|
|
135
|
+
*/
|
|
136
|
+
export function isInProtectedNamespace(): boolean {
|
|
137
|
+
// USER_TYPE is build-time --define'd; in external builds this block is
|
|
138
|
+
// DCE'd so the require() and namespace allowlist never appear in the bundle.
|
|
139
|
+
if (process.env.USER_TYPE === 'ant') {
|
|
140
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
141
|
+
return (
|
|
142
|
+
require('./protectedNamespace.js') as typeof import('./protectedNamespace.js')
|
|
143
|
+
).checkProtectedNamespace()
|
|
144
|
+
/* eslint-enable @typescript-eslint/no-require-imports */
|
|
145
|
+
}
|
|
146
|
+
return false
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// @[MODEL LAUNCH]: Add a Vertex region override env var for the new model.
|
|
150
|
+
/**
|
|
151
|
+
* Model prefix → env var for Vertex region overrides.
|
|
152
|
+
* Order matters: more specific prefixes must come before less specific ones
|
|
153
|
+
* (e.g., 'claude-opus-4-1' before 'claude-opus-4').
|
|
154
|
+
*/
|
|
155
|
+
const VERTEX_REGION_OVERRIDES: ReadonlyArray<[string, string]> = [
|
|
156
|
+
['claude-haiku-4-5', 'VERTEX_REGION_CLAUDE_HAIKU_4_5'],
|
|
157
|
+
['claude-3-5-haiku', 'VERTEX_REGION_CLAUDE_3_5_HAIKU'],
|
|
158
|
+
['claude-3-5-sonnet', 'VERTEX_REGION_CLAUDE_3_5_SONNET'],
|
|
159
|
+
['claude-3-7-sonnet', 'VERTEX_REGION_CLAUDE_3_7_SONNET'],
|
|
160
|
+
['claude-opus-4-1', 'VERTEX_REGION_CLAUDE_4_1_OPUS'],
|
|
161
|
+
['claude-opus-4', 'VERTEX_REGION_CLAUDE_4_0_OPUS'],
|
|
162
|
+
['claude-sonnet-4-6', 'VERTEX_REGION_CLAUDE_4_6_SONNET'],
|
|
163
|
+
['claude-sonnet-4-5', 'VERTEX_REGION_CLAUDE_4_5_SONNET'],
|
|
164
|
+
['claude-sonnet-4', 'VERTEX_REGION_CLAUDE_4_0_SONNET'],
|
|
165
|
+
]
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Get the Vertex AI region for a specific model.
|
|
169
|
+
* Different models may be available in different regions.
|
|
170
|
+
*/
|
|
171
|
+
export function getVertexRegionForModel(
|
|
172
|
+
model: string | undefined,
|
|
173
|
+
): string | undefined {
|
|
174
|
+
if (model) {
|
|
175
|
+
const match = VERTEX_REGION_OVERRIDES.find(([prefix]) =>
|
|
176
|
+
model.startsWith(prefix),
|
|
177
|
+
)
|
|
178
|
+
if (match) {
|
|
179
|
+
return process.env[match[1]] || getDefaultVertexRegion()
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return getDefaultVertexRegion()
|
|
183
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { logForDebugging } from './debug.js'
|
|
2
|
+
|
|
3
|
+
export type EnvVarValidationResult = {
|
|
4
|
+
effective: number
|
|
5
|
+
status: 'valid' | 'capped' | 'invalid'
|
|
6
|
+
message?: string
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function validateBoundedIntEnvVar(
|
|
10
|
+
name: string,
|
|
11
|
+
value: string | undefined,
|
|
12
|
+
defaultValue: number,
|
|
13
|
+
upperLimit: number,
|
|
14
|
+
): EnvVarValidationResult {
|
|
15
|
+
if (!value) {
|
|
16
|
+
return { effective: defaultValue, status: 'valid' }
|
|
17
|
+
}
|
|
18
|
+
const parsed = parseInt(value, 10)
|
|
19
|
+
if (isNaN(parsed) || parsed <= 0) {
|
|
20
|
+
const result: EnvVarValidationResult = {
|
|
21
|
+
effective: defaultValue,
|
|
22
|
+
status: 'invalid',
|
|
23
|
+
message: `Invalid value "${value}" (using default: ${defaultValue})`,
|
|
24
|
+
}
|
|
25
|
+
logForDebugging(`${name} ${result.message}`)
|
|
26
|
+
return result
|
|
27
|
+
}
|
|
28
|
+
if (parsed > upperLimit) {
|
|
29
|
+
const result: EnvVarValidationResult = {
|
|
30
|
+
effective: upperLimit,
|
|
31
|
+
status: 'capped',
|
|
32
|
+
message: `Capped from ${parsed} to ${upperLimit}`,
|
|
33
|
+
}
|
|
34
|
+
logForDebugging(`${name} ${result.message}`)
|
|
35
|
+
return result
|
|
36
|
+
}
|
|
37
|
+
return { effective: parsed, status: 'valid' }
|
|
38
|
+
}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error log sink implementation
|
|
3
|
+
*
|
|
4
|
+
* This module contains the heavy implementation for error logging and should be
|
|
5
|
+
* initialized during app startup. It handles file-based error logging to disk.
|
|
6
|
+
*
|
|
7
|
+
* Usage: Call initializeErrorLogSink() during app startup to attach the sink.
|
|
8
|
+
*
|
|
9
|
+
* DESIGN: This module is separate from log.ts to avoid import cycles.
|
|
10
|
+
* log.ts has NO heavy dependencies - events are queued until this sink is attached.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import axios from 'src/utils/axios.js'
|
|
14
|
+
import { dirname, join } from 'path'
|
|
15
|
+
import { getSessionId } from '../bootstrap/state.js'
|
|
16
|
+
import { createBufferedWriter } from './bufferedWriter.js'
|
|
17
|
+
import { CACHE_PATHS } from './cachePaths.js'
|
|
18
|
+
import { registerCleanup } from './cleanupRegistry.js'
|
|
19
|
+
import { logForDebugging } from './debug.js'
|
|
20
|
+
import { getFsImplementation } from './fsOperations.js'
|
|
21
|
+
import { attachErrorLogSink, dateToFilename } from './log.js'
|
|
22
|
+
import { jsonStringify } from './slowOperations.js'
|
|
23
|
+
|
|
24
|
+
const DATE = dateToFilename(new Date())
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Gets the path to the errors log file.
|
|
28
|
+
*/
|
|
29
|
+
export function getErrorsPath(): string {
|
|
30
|
+
return join(CACHE_PATHS.errors(), DATE + '.jsonl')
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Gets the path to MCP logs for a server.
|
|
35
|
+
*/
|
|
36
|
+
export function getMCPLogsPath(serverName: string): string {
|
|
37
|
+
return join(CACHE_PATHS.mcpLogs(serverName), DATE + '.jsonl')
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
type JsonlWriter = {
|
|
41
|
+
write: (obj: object) => void
|
|
42
|
+
flush: () => void
|
|
43
|
+
dispose: () => void
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function createJsonlWriter(options: {
|
|
47
|
+
writeFn: (content: string) => void
|
|
48
|
+
flushIntervalMs?: number
|
|
49
|
+
maxBufferSize?: number
|
|
50
|
+
}): JsonlWriter {
|
|
51
|
+
const writer = createBufferedWriter(options)
|
|
52
|
+
return {
|
|
53
|
+
write(obj: object): void {
|
|
54
|
+
writer.write(jsonStringify(obj) + '\n')
|
|
55
|
+
},
|
|
56
|
+
flush: writer.flush,
|
|
57
|
+
dispose: writer.dispose,
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Buffered writers for JSONL log files, keyed by path
|
|
62
|
+
const logWriters = new Map<string, JsonlWriter>()
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Flush all buffered log writers. Used for testing.
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
export function _flushLogWritersForTesting(): void {
|
|
69
|
+
for (const writer of logWriters.values()) {
|
|
70
|
+
writer.flush()
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Clear all buffered log writers. Used for testing.
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
export function _clearLogWritersForTesting(): void {
|
|
79
|
+
for (const writer of logWriters.values()) {
|
|
80
|
+
writer.dispose()
|
|
81
|
+
}
|
|
82
|
+
logWriters.clear()
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function getLogWriter(path: string): JsonlWriter {
|
|
86
|
+
let writer = logWriters.get(path)
|
|
87
|
+
if (!writer) {
|
|
88
|
+
const dir = dirname(path)
|
|
89
|
+
writer = createJsonlWriter({
|
|
90
|
+
// sync IO: called from sync context
|
|
91
|
+
writeFn: (content: string) => {
|
|
92
|
+
try {
|
|
93
|
+
// Happy-path: directory already exists
|
|
94
|
+
getFsImplementation().appendFileSync(path, content)
|
|
95
|
+
} catch {
|
|
96
|
+
// If any error occurs, assume it was due to missing directory
|
|
97
|
+
getFsImplementation().mkdirSync(dir)
|
|
98
|
+
// Retry appending
|
|
99
|
+
getFsImplementation().appendFileSync(path, content)
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
flushIntervalMs: 1000,
|
|
103
|
+
maxBufferSize: 50,
|
|
104
|
+
})
|
|
105
|
+
logWriters.set(path, writer)
|
|
106
|
+
registerCleanup(async () => writer?.dispose())
|
|
107
|
+
}
|
|
108
|
+
return writer
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function appendToLog(path: string, message: object): void {
|
|
112
|
+
if (process.env.USER_TYPE !== 'ant') {
|
|
113
|
+
return
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const messageWithTimestamp = {
|
|
117
|
+
timestamp: new Date().toISOString(),
|
|
118
|
+
...message,
|
|
119
|
+
cwd: getFsImplementation().cwd(),
|
|
120
|
+
userType: process.env.USER_TYPE,
|
|
121
|
+
sessionId: getSessionId(),
|
|
122
|
+
version: MACRO.VERSION,
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
getLogWriter(path).write(messageWithTimestamp)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function extractServerMessage(data: unknown): string | undefined {
|
|
129
|
+
if (typeof data === 'string') {
|
|
130
|
+
return data
|
|
131
|
+
}
|
|
132
|
+
if (data && typeof data === 'object') {
|
|
133
|
+
const obj = data as Record<string, unknown>
|
|
134
|
+
if (typeof obj.message === 'string') {
|
|
135
|
+
return obj.message
|
|
136
|
+
}
|
|
137
|
+
if (
|
|
138
|
+
typeof obj.error === 'object' &&
|
|
139
|
+
obj.error &&
|
|
140
|
+
'message' in obj.error &&
|
|
141
|
+
typeof (obj.error as Record<string, unknown>).message === 'string'
|
|
142
|
+
) {
|
|
143
|
+
return (obj.error as Record<string, unknown>).message as string
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return undefined
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Implementation for logError - writes error to debug log and file.
|
|
151
|
+
*/
|
|
152
|
+
function logErrorImpl(error: Error): void {
|
|
153
|
+
const errorStr = error.stack || error.message
|
|
154
|
+
|
|
155
|
+
// Enrich axios errors with request URL, status, and server message for debugging
|
|
156
|
+
let context = ''
|
|
157
|
+
if (axios.isAxiosError(error) && error.config?.url) {
|
|
158
|
+
const parts = [`url=${error.config.url}`]
|
|
159
|
+
if (error.response?.status !== undefined) {
|
|
160
|
+
parts.push(`status=${error.response.status}`)
|
|
161
|
+
}
|
|
162
|
+
const serverMessage = extractServerMessage(error.response?.data)
|
|
163
|
+
if (serverMessage) {
|
|
164
|
+
parts.push(`body=${serverMessage}`)
|
|
165
|
+
}
|
|
166
|
+
context = `[${parts.join(',')}] `
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
logForDebugging(`${error.name}: ${context}${errorStr}`, { level: 'error' })
|
|
170
|
+
|
|
171
|
+
appendToLog(getErrorsPath(), {
|
|
172
|
+
error: `${context}${errorStr}`,
|
|
173
|
+
})
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Implementation for logMCPError - writes MCP error to debug log and file.
|
|
178
|
+
*/
|
|
179
|
+
function logMCPErrorImpl(serverName: string, error: unknown): void {
|
|
180
|
+
// Not themed, to avoid having to pipe theme all the way down
|
|
181
|
+
logForDebugging(`MCP server "${serverName}" ${error}`, { level: 'error' })
|
|
182
|
+
|
|
183
|
+
const logFile = getMCPLogsPath(serverName)
|
|
184
|
+
const errorStr =
|
|
185
|
+
error instanceof Error ? error.stack || error.message : String(error)
|
|
186
|
+
|
|
187
|
+
const errorInfo = {
|
|
188
|
+
error: errorStr,
|
|
189
|
+
timestamp: new Date().toISOString(),
|
|
190
|
+
sessionId: getSessionId(),
|
|
191
|
+
cwd: getFsImplementation().cwd(),
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
getLogWriter(logFile).write(errorInfo)
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Implementation for logMCPDebug - writes MCP debug message to log file.
|
|
199
|
+
*/
|
|
200
|
+
function logMCPDebugImpl(serverName: string, message: string): void {
|
|
201
|
+
logForDebugging(`MCP server "${serverName}": ${message}`)
|
|
202
|
+
|
|
203
|
+
const logFile = getMCPLogsPath(serverName)
|
|
204
|
+
|
|
205
|
+
const debugInfo = {
|
|
206
|
+
debug: message,
|
|
207
|
+
timestamp: new Date().toISOString(),
|
|
208
|
+
sessionId: getSessionId(),
|
|
209
|
+
cwd: getFsImplementation().cwd(),
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
getLogWriter(logFile).write(debugInfo)
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Initialize the error log sink.
|
|
217
|
+
*
|
|
218
|
+
* Call this during app startup to attach the error logging backend.
|
|
219
|
+
* Any errors logged before this is called will be queued and drained.
|
|
220
|
+
*
|
|
221
|
+
* Should be called BEFORE initializeAnalyticsSink() in the startup sequence.
|
|
222
|
+
*
|
|
223
|
+
* Idempotent: safe to call multiple times (subsequent calls are no-ops).
|
|
224
|
+
*/
|
|
225
|
+
export function initializeErrorLogSink(): void {
|
|
226
|
+
attachErrorLogSink({
|
|
227
|
+
logError: logErrorImpl,
|
|
228
|
+
logMCPError: logMCPErrorImpl,
|
|
229
|
+
logMCPDebug: logMCPDebugImpl,
|
|
230
|
+
getErrorsPath,
|
|
231
|
+
getMCPLogsPath,
|
|
232
|
+
})
|
|
233
|
+
|
|
234
|
+
logForDebugging('Error log sink initialized')
|
|
235
|
+
}
|