@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,166 @@
|
|
|
1
|
+
import chalk from 'chalk'
|
|
2
|
+
import { mkdir, readFile, writeFile } from 'fs/promises'
|
|
3
|
+
import { homedir } from 'os'
|
|
4
|
+
import { dirname, join } from 'path'
|
|
5
|
+
import { pathToFileURL } from 'url'
|
|
6
|
+
import { color } from '../components/design-system/color.js'
|
|
7
|
+
import { supportsHyperlinks } from '../ink/supports-hyperlinks.js'
|
|
8
|
+
import { logForDebugging } from './debug.js'
|
|
9
|
+
import { isENOENT } from './errors.js'
|
|
10
|
+
import { execFileNoThrow } from './execFileNoThrow.js'
|
|
11
|
+
import { logError } from './log.js'
|
|
12
|
+
import type { ThemeName } from './theme.js'
|
|
13
|
+
|
|
14
|
+
const EOL = '\n'
|
|
15
|
+
|
|
16
|
+
type ShellInfo = {
|
|
17
|
+
name: string
|
|
18
|
+
rcFile: string
|
|
19
|
+
cacheFile: string
|
|
20
|
+
completionLine: string
|
|
21
|
+
shellFlag: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function detectShell(): ShellInfo | null {
|
|
25
|
+
const shell = process.env.SHELL || ''
|
|
26
|
+
const home = homedir()
|
|
27
|
+
const claudeDir = join(home, '.claude')
|
|
28
|
+
|
|
29
|
+
if (shell.endsWith('/zsh') || shell.endsWith('/zsh.exe')) {
|
|
30
|
+
const cacheFile = join(claudeDir, 'completion.zsh')
|
|
31
|
+
return {
|
|
32
|
+
name: 'zsh',
|
|
33
|
+
rcFile: join(home, '.zshrc'),
|
|
34
|
+
cacheFile,
|
|
35
|
+
completionLine: `[[ -f "${cacheFile}" ]] && source "${cacheFile}"`,
|
|
36
|
+
shellFlag: 'zsh',
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (shell.endsWith('/bash') || shell.endsWith('/bash.exe')) {
|
|
40
|
+
const cacheFile = join(claudeDir, 'completion.bash')
|
|
41
|
+
return {
|
|
42
|
+
name: 'bash',
|
|
43
|
+
rcFile: join(home, '.bashrc'),
|
|
44
|
+
cacheFile,
|
|
45
|
+
completionLine: `[ -f "${cacheFile}" ] && source "${cacheFile}"`,
|
|
46
|
+
shellFlag: 'bash',
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (shell.endsWith('/fish') || shell.endsWith('/fish.exe')) {
|
|
50
|
+
const xdg = process.env.XDG_CONFIG_HOME || join(home, '.config')
|
|
51
|
+
const cacheFile = join(claudeDir, 'completion.fish')
|
|
52
|
+
return {
|
|
53
|
+
name: 'fish',
|
|
54
|
+
rcFile: join(xdg, 'fish', 'config.fish'),
|
|
55
|
+
cacheFile,
|
|
56
|
+
completionLine: `[ -f "${cacheFile}" ] && source "${cacheFile}"`,
|
|
57
|
+
shellFlag: 'fish',
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return null
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function formatPathLink(filePath: string): string {
|
|
64
|
+
if (!supportsHyperlinks()) {
|
|
65
|
+
return filePath
|
|
66
|
+
}
|
|
67
|
+
const fileUrl = pathToFileURL(filePath).href
|
|
68
|
+
return `\x1b]8;;${fileUrl}\x07${filePath}\x1b]8;;\x07`
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Generate and cache the completion script, then add a source line to the
|
|
73
|
+
* shell's rc file. Returns a user-facing status message.
|
|
74
|
+
*/
|
|
75
|
+
export async function setupShellCompletion(theme: ThemeName): Promise<string> {
|
|
76
|
+
const shell = detectShell()
|
|
77
|
+
if (!shell) {
|
|
78
|
+
return ''
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Ensure the cache directory exists
|
|
82
|
+
try {
|
|
83
|
+
await mkdir(dirname(shell.cacheFile), { recursive: true })
|
|
84
|
+
} catch (e: unknown) {
|
|
85
|
+
logError(e)
|
|
86
|
+
return `${EOL}${color('warning', theme)(`Could not write ${shell.name} completion cache`)}${EOL}${chalk.dim(`Run manually: claude completion ${shell.shellFlag} > ${shell.cacheFile}`)}${EOL}`
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Generate the completion script by writing directly to the cache file.
|
|
90
|
+
// Using --output avoids piping through stdout where process.exit() can
|
|
91
|
+
// truncate output before the pipe buffer drains.
|
|
92
|
+
const claudeBin = process.argv[1] || 'claude'
|
|
93
|
+
const result = await execFileNoThrow(claudeBin, [
|
|
94
|
+
'completion',
|
|
95
|
+
shell.shellFlag,
|
|
96
|
+
'--output',
|
|
97
|
+
shell.cacheFile,
|
|
98
|
+
])
|
|
99
|
+
if (result.code !== 0) {
|
|
100
|
+
return `${EOL}${color('warning', theme)(`Could not generate ${shell.name} shell completions`)}${EOL}${chalk.dim(`Run manually: claude completion ${shell.shellFlag} > ${shell.cacheFile}`)}${EOL}`
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Check if rc file already sources completions
|
|
104
|
+
let existing = ''
|
|
105
|
+
try {
|
|
106
|
+
existing = await readFile(shell.rcFile, { encoding: 'utf-8' })
|
|
107
|
+
if (
|
|
108
|
+
existing.includes('claude completion') ||
|
|
109
|
+
existing.includes(shell.cacheFile)
|
|
110
|
+
) {
|
|
111
|
+
return `${EOL}${color('success', theme)(`Shell completions updated for ${shell.name}`)}${EOL}${chalk.dim(`See ${formatPathLink(shell.rcFile)}`)}${EOL}`
|
|
112
|
+
}
|
|
113
|
+
} catch (e: unknown) {
|
|
114
|
+
if (!isENOENT(e)) {
|
|
115
|
+
logError(e)
|
|
116
|
+
return `${EOL}${color('warning', theme)(`Could not install ${shell.name} shell completions`)}${EOL}${chalk.dim(`Add this to ${formatPathLink(shell.rcFile)}:`)}${EOL}${chalk.dim(shell.completionLine)}${EOL}`
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Append source line to rc file
|
|
121
|
+
try {
|
|
122
|
+
const configDir = dirname(shell.rcFile)
|
|
123
|
+
await mkdir(configDir, { recursive: true })
|
|
124
|
+
|
|
125
|
+
const separator = existing && !existing.endsWith('\n') ? '\n' : ''
|
|
126
|
+
const content = `${existing}${separator}\n# Claude Code shell completions\n${shell.completionLine}\n`
|
|
127
|
+
await writeFile(shell.rcFile, content, { encoding: 'utf-8' })
|
|
128
|
+
|
|
129
|
+
return `${EOL}${color('success', theme)(`Installed ${shell.name} shell completions`)}${EOL}${chalk.dim(`Added to ${formatPathLink(shell.rcFile)}`)}${EOL}${chalk.dim(`Run: source ${shell.rcFile}`)}${EOL}`
|
|
130
|
+
} catch (error) {
|
|
131
|
+
logError(error)
|
|
132
|
+
return `${EOL}${color('warning', theme)(`Could not install ${shell.name} shell completions`)}${EOL}${chalk.dim(`Add this to ${formatPathLink(shell.rcFile)}:`)}${EOL}${chalk.dim(shell.completionLine)}${EOL}`
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Regenerate cached shell completion scripts in ~/.claude/.
|
|
138
|
+
* Called after `claude update` so completions stay in sync with the new binary.
|
|
139
|
+
*/
|
|
140
|
+
export async function regenerateCompletionCache(): Promise<void> {
|
|
141
|
+
const shell = detectShell()
|
|
142
|
+
if (!shell) {
|
|
143
|
+
return
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
logForDebugging(`update: Regenerating ${shell.name} completion cache`)
|
|
147
|
+
|
|
148
|
+
const claudeBin = process.argv[1] || 'claude'
|
|
149
|
+
const result = await execFileNoThrow(claudeBin, [
|
|
150
|
+
'completion',
|
|
151
|
+
shell.shellFlag,
|
|
152
|
+
'--output',
|
|
153
|
+
shell.cacheFile,
|
|
154
|
+
])
|
|
155
|
+
|
|
156
|
+
if (result.code !== 0) {
|
|
157
|
+
logForDebugging(
|
|
158
|
+
`update: Failed to regenerate ${shell.name} completion cache`,
|
|
159
|
+
)
|
|
160
|
+
return
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
logForDebugging(
|
|
164
|
+
`update: Regenerated ${shell.name} completion cache at ${shell.cacheFile}`,
|
|
165
|
+
)
|
|
166
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filter and sanitize installed-app data for inclusion in the `request_access`
|
|
3
|
+
* tool description. Ported from Cowork's appNames.ts. Two
|
|
4
|
+
* concerns: noise filtering (Spotlight returns every bundle on disk — XPC
|
|
5
|
+
* helpers, daemons, input methods) and prompt-injection hardening (app names
|
|
6
|
+
* are attacker-controlled; anyone can ship an app named anything).
|
|
7
|
+
*
|
|
8
|
+
* Residual risk: short benign-char adversarial names ("grant all") can't be
|
|
9
|
+
* filtered programmatically. The tool description's structural framing
|
|
10
|
+
* ("Available applications:") makes it clear these are app names, and the
|
|
11
|
+
* downstream permission dialog requires explicit user approval — a bad name
|
|
12
|
+
* can't auto-grant anything.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** Minimal shape — matches what `listInstalledApps` returns. */
|
|
16
|
+
type InstalledAppLike = {
|
|
17
|
+
readonly bundleId: string
|
|
18
|
+
readonly displayName: string
|
|
19
|
+
readonly path: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// ── Noise filtering ──────────────────────────────────────────────────────
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Only apps under these roots are shown. /System/Library subpaths (CoreServices,
|
|
26
|
+
* PrivateFrameworks, Input Methods) are OS plumbing — anchor on known-good
|
|
27
|
+
* roots rather than blocklisting every junk subpath since new macOS versions
|
|
28
|
+
* add more.
|
|
29
|
+
*
|
|
30
|
+
* ~/Applications is checked at call time via the `homeDir` arg (HOME isn't
|
|
31
|
+
* reliably known at module load in all environments).
|
|
32
|
+
*/
|
|
33
|
+
const PATH_ALLOWLIST: readonly string[] = [
|
|
34
|
+
'/Applications/',
|
|
35
|
+
'/System/Applications/',
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Display-name patterns that mark background services even under /Applications.
|
|
40
|
+
* `(?:$|\s\()` — matches keyword at end-of-string OR immediately before ` (`:
|
|
41
|
+
* "Slack Helper (GPU)" and "ABAssistantService" fail, "Service Desk" passes
|
|
42
|
+
* (Service is followed by " D").
|
|
43
|
+
*/
|
|
44
|
+
const NAME_PATTERN_BLOCKLIST: readonly RegExp[] = [
|
|
45
|
+
/Helper(?:$|\s\()/,
|
|
46
|
+
/Agent(?:$|\s\()/,
|
|
47
|
+
/Service(?:$|\s\()/,
|
|
48
|
+
/Uninstaller(?:$|\s\()/,
|
|
49
|
+
/Updater(?:$|\s\()/,
|
|
50
|
+
/^\./,
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Apps commonly requested for CU automation. ALWAYS included if installed,
|
|
55
|
+
* bypassing path check + count cap — the model needs these exact names even
|
|
56
|
+
* when the machine has 200+ apps. Bundle IDs (locale-invariant), not display
|
|
57
|
+
* names. Keep <30 — each entry is a guaranteed token in the description.
|
|
58
|
+
*/
|
|
59
|
+
const ALWAYS_KEEP_BUNDLE_IDS: ReadonlySet<string> = new Set([
|
|
60
|
+
// Browsers
|
|
61
|
+
'com.apple.Safari',
|
|
62
|
+
'com.google.Chrome',
|
|
63
|
+
'com.microsoft.edgemac',
|
|
64
|
+
'org.mozilla.firefox',
|
|
65
|
+
'company.thebrowser.Browser', // Arc
|
|
66
|
+
// Communication
|
|
67
|
+
'com.tinyspeck.slackmacgap',
|
|
68
|
+
'us.zoom.xos',
|
|
69
|
+
'com.microsoft.teams2',
|
|
70
|
+
'com.microsoft.teams',
|
|
71
|
+
'com.apple.MobileSMS',
|
|
72
|
+
'com.apple.mail',
|
|
73
|
+
// Productivity
|
|
74
|
+
'com.microsoft.Word',
|
|
75
|
+
'com.microsoft.Excel',
|
|
76
|
+
'com.microsoft.Powerpoint',
|
|
77
|
+
'com.microsoft.Outlook',
|
|
78
|
+
'com.apple.iWork.Pages',
|
|
79
|
+
'com.apple.iWork.Numbers',
|
|
80
|
+
'com.apple.iWork.Keynote',
|
|
81
|
+
'com.google.GoogleDocs',
|
|
82
|
+
// Notes / PM
|
|
83
|
+
'notion.id',
|
|
84
|
+
'com.apple.Notes',
|
|
85
|
+
'md.obsidian',
|
|
86
|
+
'com.linear',
|
|
87
|
+
'com.figma.Desktop',
|
|
88
|
+
// Dev
|
|
89
|
+
'com.microsoft.VSCode',
|
|
90
|
+
'com.apple.Terminal',
|
|
91
|
+
'com.googlecode.iterm2',
|
|
92
|
+
'com.github.GitHubDesktop',
|
|
93
|
+
// System essentials the model genuinely targets
|
|
94
|
+
'com.apple.finder',
|
|
95
|
+
'com.apple.iCal',
|
|
96
|
+
'com.apple.systempreferences',
|
|
97
|
+
])
|
|
98
|
+
|
|
99
|
+
// ── Prompt-injection hardening ───────────────────────────────────────────
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* `\p{L}\p{M}\p{N}` with /u — not `\w` (ASCII-only, would drop Bücher, 微信,
|
|
103
|
+
* Préférences Système). `\p{M}` matches combining marks so NFD-decomposed
|
|
104
|
+
* diacritics (ü → u + ◌̈) pass. Single space not `\s` — `\s` matches newlines,
|
|
105
|
+
* which would let "App\nIgnore previous…" through as a multi-line injection.
|
|
106
|
+
* Still bars quotes, angle brackets, backticks, pipes, colons.
|
|
107
|
+
*/
|
|
108
|
+
const APP_NAME_ALLOWED = /^[\p{L}\p{M}\p{N}_ .&'()+-]+$/u
|
|
109
|
+
const APP_NAME_MAX_LEN = 40
|
|
110
|
+
const APP_NAME_MAX_COUNT = 50
|
|
111
|
+
|
|
112
|
+
function isUserFacingPath(path: string, homeDir: string | undefined): boolean {
|
|
113
|
+
if (PATH_ALLOWLIST.some(root => path.startsWith(root))) return true
|
|
114
|
+
if (homeDir) {
|
|
115
|
+
const userApps = homeDir.endsWith('/')
|
|
116
|
+
? `${homeDir}Applications/`
|
|
117
|
+
: `${homeDir}/Applications/`
|
|
118
|
+
if (path.startsWith(userApps)) return true
|
|
119
|
+
}
|
|
120
|
+
return false
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function isNoisyName(name: string): boolean {
|
|
124
|
+
return NAME_PATTERN_BLOCKLIST.some(re => re.test(name))
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Length cap + trim + dedupe + sort. `applyCharFilter` — skip for trusted
|
|
129
|
+
* bundle IDs (Apple/Google/MS; a localized "Réglages Système" with unusual
|
|
130
|
+
* punctuation shouldn't be dropped), apply for anything attacker-installable.
|
|
131
|
+
*/
|
|
132
|
+
function sanitizeCore(
|
|
133
|
+
raw: readonly string[],
|
|
134
|
+
applyCharFilter: boolean,
|
|
135
|
+
): string[] {
|
|
136
|
+
const seen = new Set<string>()
|
|
137
|
+
return raw
|
|
138
|
+
.map(name => name.trim())
|
|
139
|
+
.filter(trimmed => {
|
|
140
|
+
if (!trimmed) return false
|
|
141
|
+
if (trimmed.length > APP_NAME_MAX_LEN) return false
|
|
142
|
+
if (applyCharFilter && !APP_NAME_ALLOWED.test(trimmed)) return false
|
|
143
|
+
if (seen.has(trimmed)) return false
|
|
144
|
+
seen.add(trimmed)
|
|
145
|
+
return true
|
|
146
|
+
})
|
|
147
|
+
.sort((a, b) => a.localeCompare(b))
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function sanitizeAppNames(raw: readonly string[]): string[] {
|
|
151
|
+
const filtered = sanitizeCore(raw, true)
|
|
152
|
+
if (filtered.length <= APP_NAME_MAX_COUNT) return filtered
|
|
153
|
+
return [
|
|
154
|
+
...filtered.slice(0, APP_NAME_MAX_COUNT),
|
|
155
|
+
`… and ${filtered.length - APP_NAME_MAX_COUNT} more`,
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
function sanitizeTrustedNames(raw: readonly string[]): string[] {
|
|
160
|
+
return sanitizeCore(raw, false)
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Filter raw Spotlight results to user-facing apps, then sanitize. Always-keep
|
|
165
|
+
* apps bypass path/name filter AND char allowlist (trusted vendors, not
|
|
166
|
+
* attacker-installed); still length-capped, deduped, sorted.
|
|
167
|
+
*/
|
|
168
|
+
export function filterAppsForDescription(
|
|
169
|
+
installed: readonly InstalledAppLike[],
|
|
170
|
+
homeDir: string | undefined,
|
|
171
|
+
): string[] {
|
|
172
|
+
const { alwaysKept, rest } = installed.reduce<{
|
|
173
|
+
alwaysKept: string[]
|
|
174
|
+
rest: string[]
|
|
175
|
+
}>(
|
|
176
|
+
(acc, app) => {
|
|
177
|
+
if (ALWAYS_KEEP_BUNDLE_IDS.has(app.bundleId)) {
|
|
178
|
+
acc.alwaysKept.push(app.displayName)
|
|
179
|
+
} else if (
|
|
180
|
+
isUserFacingPath(app.path, homeDir) &&
|
|
181
|
+
!isNoisyName(app.displayName)
|
|
182
|
+
) {
|
|
183
|
+
acc.rest.push(app.displayName)
|
|
184
|
+
}
|
|
185
|
+
return acc
|
|
186
|
+
},
|
|
187
|
+
{ alwaysKept: [], rest: [] },
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
const sanitizedAlways = sanitizeTrustedNames(alwaysKept)
|
|
191
|
+
const alwaysSet = new Set(sanitizedAlways)
|
|
192
|
+
return [
|
|
193
|
+
...sanitizedAlways,
|
|
194
|
+
...sanitizeAppNames(rest).filter(n => !alwaysSet.has(n)),
|
|
195
|
+
]
|
|
196
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { ToolUseContext } from '../../Tool.js'
|
|
2
|
+
|
|
3
|
+
import { logForDebugging } from '../debug.js'
|
|
4
|
+
import { errorMessage } from '../errors.js'
|
|
5
|
+
import { withResolvers } from '../withResolvers.js'
|
|
6
|
+
import { isLockHeldLocally, releaseComputerUseLock } from './computerUseLock.js'
|
|
7
|
+
import { unregisterEscHotkey } from './escHotkey.js'
|
|
8
|
+
|
|
9
|
+
// cu.apps.unhide is NOT one of the four @MainActor methods wrapped by
|
|
10
|
+
// drainRunLoop's 30s backstop. On abort paths (where the user hit Ctrl+C
|
|
11
|
+
// because something was slow) a hang here would wedge the abort. Generous
|
|
12
|
+
// timeout — unhide should be ~instant; if it takes 5s something is wrong
|
|
13
|
+
// and proceeding is better than waiting. The Swift call continues in the
|
|
14
|
+
// background regardless; we just stop blocking on it.
|
|
15
|
+
const UNHIDE_TIMEOUT_MS = 5000
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Turn-end cleanup for the chicago MCP surface: auto-unhide apps that
|
|
19
|
+
* `prepareForAction` hid, then release the file-based lock.
|
|
20
|
+
*
|
|
21
|
+
* Called from three sites: natural turn end (`stopHooks.ts`), abort during
|
|
22
|
+
* streaming (`query.ts` aborted_streaming), abort during tool execution
|
|
23
|
+
* (`query.ts` aborted_tools). All three reach this via dynamic import gated
|
|
24
|
+
* on `feature('CHICAGO_MCP')`. `executor.js` (which pulls both native
|
|
25
|
+
* modules) is dynamic-imported below so non-CU turns don't load native
|
|
26
|
+
* modules just to no-op.
|
|
27
|
+
*
|
|
28
|
+
* No-ops cheaply on non-CU turns: both gate checks are zero-syscall.
|
|
29
|
+
*/
|
|
30
|
+
export async function cleanupComputerUseAfterTurn(
|
|
31
|
+
ctx: Pick<
|
|
32
|
+
ToolUseContext,
|
|
33
|
+
'getAppState' | 'setAppState' | 'sendOSNotification'
|
|
34
|
+
>,
|
|
35
|
+
): Promise<void> {
|
|
36
|
+
const appState = ctx.getAppState()
|
|
37
|
+
|
|
38
|
+
const hidden = appState.computerUseMcpState?.hiddenDuringTurn
|
|
39
|
+
if (hidden && hidden.size > 0) {
|
|
40
|
+
const { unhideComputerUseApps } = await import('./executor.js')
|
|
41
|
+
const unhide = unhideComputerUseApps([...hidden]).catch(err =>
|
|
42
|
+
logForDebugging(
|
|
43
|
+
`[Computer Use MCP] auto-unhide failed: ${errorMessage(err)}`,
|
|
44
|
+
),
|
|
45
|
+
)
|
|
46
|
+
const timeout = withResolvers<void>()
|
|
47
|
+
const timer = setTimeout(timeout.resolve, UNHIDE_TIMEOUT_MS)
|
|
48
|
+
await Promise.race([unhide, timeout.promise]).finally(() =>
|
|
49
|
+
clearTimeout(timer),
|
|
50
|
+
)
|
|
51
|
+
ctx.setAppState(prev =>
|
|
52
|
+
prev.computerUseMcpState?.hiddenDuringTurn === undefined
|
|
53
|
+
? prev
|
|
54
|
+
: {
|
|
55
|
+
...prev,
|
|
56
|
+
computerUseMcpState: {
|
|
57
|
+
...prev.computerUseMcpState,
|
|
58
|
+
hiddenDuringTurn: undefined,
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Zero-syscall pre-check so non-CU turns don't touch disk. Release is still
|
|
65
|
+
// idempotent (returns false if already released or owned by another session).
|
|
66
|
+
if (!isLockHeldLocally()) return
|
|
67
|
+
|
|
68
|
+
// Unregister before lock release so the pump-retain drops as soon as the
|
|
69
|
+
// CU session ends. Idempotent — no-ops if registration failed at acquire.
|
|
70
|
+
// Swallow throws so a NAPI unregister error never prevents lock release —
|
|
71
|
+
// a held lock blocks the next CU session with "in use by another session".
|
|
72
|
+
try {
|
|
73
|
+
unregisterEscHotkey()
|
|
74
|
+
} catch (err) {
|
|
75
|
+
logForDebugging(
|
|
76
|
+
`[Computer Use MCP] unregisterEscHotkey failed: ${errorMessage(err)}`,
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (await releaseComputerUseLock()) {
|
|
81
|
+
ctx.sendOSNotification?.({
|
|
82
|
+
message: 'Claude is done using your computer',
|
|
83
|
+
notificationType: 'computer_use_exit',
|
|
84
|
+
})
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { normalizeNameForMCP } from '../../services/mcp/normalization.js'
|
|
2
|
+
import { env } from '../env.js'
|
|
3
|
+
|
|
4
|
+
export const COMPUTER_USE_MCP_SERVER_NAME = 'computer-use'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Sentinel bundle ID for the frontmost gate. Claude Code is a terminal — it has
|
|
8
|
+
* no window. This never matches a real `NSWorkspace.frontmostApplication`, so
|
|
9
|
+
* the package's "host is frontmost" branch (mouse click-through exemption,
|
|
10
|
+
* keyboard safety-net) is dead code for us. `prepareForAction`'s "exempt our
|
|
11
|
+
* own window" is likewise a no-op — there is no window to exempt.
|
|
12
|
+
*/
|
|
13
|
+
export const CLI_HOST_BUNDLE_ID = 'com.anthropic.claude-code.cli-no-window'
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Fallback `env.terminal` → bundleId map for when `__CFBundleIdentifier` is
|
|
17
|
+
* unset. Covers the macOS terminals we can distinguish — Linux entries
|
|
18
|
+
* (konsole, gnome-terminal, xterm) are deliberately absent since
|
|
19
|
+
* `createCliExecutor` is darwin-guarded.
|
|
20
|
+
*/
|
|
21
|
+
const TERMINAL_BUNDLE_ID_FALLBACK: Readonly<Record<string, string>> = {
|
|
22
|
+
'iTerm.app': 'com.googlecode.iterm2',
|
|
23
|
+
Apple_Terminal: 'com.apple.Terminal',
|
|
24
|
+
ghostty: 'com.mitchellh.ghostty',
|
|
25
|
+
kitty: 'net.kovidgoyal.kitty',
|
|
26
|
+
WarpTerminal: 'dev.warp.Warp-Stable',
|
|
27
|
+
vscode: 'com.microsoft.VSCode',
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Bundle ID of the terminal emulator we're running inside, so `prepareDisplay`
|
|
32
|
+
* can exempt it from hiding and `captureExcluding` can keep it out of
|
|
33
|
+
* screenshots. Returns null when undetectable (ssh, cleared env, unknown
|
|
34
|
+
* terminal) — caller must handle the null case.
|
|
35
|
+
*
|
|
36
|
+
* `__CFBundleIdentifier` is set by LaunchServices when a .app bundle spawns a
|
|
37
|
+
* process and is inherited by children. It's the exact bundleId, no lookup
|
|
38
|
+
* needed — handles terminals the fallback table doesn't know about. Under
|
|
39
|
+
* tmux/screen it reflects the terminal that started the SERVER, which may
|
|
40
|
+
* differ from the attached client. That's harmless here: we exempt A
|
|
41
|
+
* terminal window, and the screenshots exclude it regardless.
|
|
42
|
+
*/
|
|
43
|
+
export function getTerminalBundleId(): string | null {
|
|
44
|
+
const cfBundleId = process.env.__CFBundleIdentifier
|
|
45
|
+
if (cfBundleId) return cfBundleId
|
|
46
|
+
return TERMINAL_BUNDLE_ID_FALLBACK[env.terminal ?? ''] ?? null
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Static capabilities for macOS CLI. `hostBundleId` is not here — it's added
|
|
51
|
+
* by `executor.ts` per `ComputerExecutor.capabilities`. `buildComputerUseTools`
|
|
52
|
+
* takes this shape (no `hostBundleId`, no `teachMode`).
|
|
53
|
+
*/
|
|
54
|
+
export const CLI_CU_CAPABILITIES = {
|
|
55
|
+
screenshotFiltering: 'native' as const,
|
|
56
|
+
platform: 'darwin' as const,
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function isComputerUseMCPServer(name: string): boolean {
|
|
60
|
+
return normalizeNameForMCP(name) === COMPUTER_USE_MCP_SERVER_NAME
|
|
61
|
+
}
|