@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,100 @@
|
|
|
1
|
+
type WriteFn = (content: string) => void
|
|
2
|
+
|
|
3
|
+
export type BufferedWriter = {
|
|
4
|
+
write: (content: string) => void
|
|
5
|
+
flush: () => void
|
|
6
|
+
dispose: () => void
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function createBufferedWriter({
|
|
10
|
+
writeFn,
|
|
11
|
+
flushIntervalMs = 1000,
|
|
12
|
+
maxBufferSize = 100,
|
|
13
|
+
maxBufferBytes = Infinity,
|
|
14
|
+
immediateMode = false,
|
|
15
|
+
}: {
|
|
16
|
+
writeFn: WriteFn
|
|
17
|
+
flushIntervalMs?: number
|
|
18
|
+
maxBufferSize?: number
|
|
19
|
+
maxBufferBytes?: number
|
|
20
|
+
immediateMode?: boolean
|
|
21
|
+
}): BufferedWriter {
|
|
22
|
+
let buffer: string[] = []
|
|
23
|
+
let bufferBytes = 0
|
|
24
|
+
let flushTimer: NodeJS.Timeout | null = null
|
|
25
|
+
// Batch detached by overflow that hasn't been written yet. Tracked so
|
|
26
|
+
// flush()/dispose() can drain it synchronously if the process exits
|
|
27
|
+
// before the setImmediate fires.
|
|
28
|
+
let pendingOverflow: string[] | null = null
|
|
29
|
+
|
|
30
|
+
function clearTimer(): void {
|
|
31
|
+
if (flushTimer) {
|
|
32
|
+
clearTimeout(flushTimer)
|
|
33
|
+
flushTimer = null
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function flush(): void {
|
|
38
|
+
if (pendingOverflow) {
|
|
39
|
+
writeFn(pendingOverflow.join(''))
|
|
40
|
+
pendingOverflow = null
|
|
41
|
+
}
|
|
42
|
+
if (buffer.length === 0) return
|
|
43
|
+
writeFn(buffer.join(''))
|
|
44
|
+
buffer = []
|
|
45
|
+
bufferBytes = 0
|
|
46
|
+
clearTimer()
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function scheduleFlush(): void {
|
|
50
|
+
if (!flushTimer) {
|
|
51
|
+
flushTimer = setTimeout(flush, flushIntervalMs)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Detach the buffer synchronously so the caller never waits on writeFn.
|
|
56
|
+
// writeFn may block (e.g. errorLogSink.ts appendFileSync) — if overflow fires
|
|
57
|
+
// mid-render or mid-keystroke, deferring the write keeps the current tick
|
|
58
|
+
// short. Timer-based flushes already run outside user code paths so they
|
|
59
|
+
// stay synchronous.
|
|
60
|
+
function flushDeferred(): void {
|
|
61
|
+
if (pendingOverflow) {
|
|
62
|
+
// A previous overflow write is still queued. Coalesce into it to
|
|
63
|
+
// preserve ordering — writes land in a single setImmediate-ordered batch.
|
|
64
|
+
pendingOverflow.push(...buffer)
|
|
65
|
+
buffer = []
|
|
66
|
+
bufferBytes = 0
|
|
67
|
+
clearTimer()
|
|
68
|
+
return
|
|
69
|
+
}
|
|
70
|
+
const detached = buffer
|
|
71
|
+
buffer = []
|
|
72
|
+
bufferBytes = 0
|
|
73
|
+
clearTimer()
|
|
74
|
+
pendingOverflow = detached
|
|
75
|
+
setImmediate(() => {
|
|
76
|
+
const toWrite = pendingOverflow
|
|
77
|
+
pendingOverflow = null
|
|
78
|
+
if (toWrite) writeFn(toWrite.join(''))
|
|
79
|
+
})
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return {
|
|
83
|
+
write(content: string): void {
|
|
84
|
+
if (immediateMode) {
|
|
85
|
+
writeFn(content)
|
|
86
|
+
return
|
|
87
|
+
}
|
|
88
|
+
buffer.push(content)
|
|
89
|
+
bufferBytes += content.length
|
|
90
|
+
scheduleFlush()
|
|
91
|
+
if (buffer.length >= maxBufferSize || bufferBytes >= maxBufferBytes) {
|
|
92
|
+
flushDeferred()
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
flush,
|
|
96
|
+
dispose(): void {
|
|
97
|
+
flush()
|
|
98
|
+
},
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects if the current runtime is Bun.
|
|
3
|
+
* Returns true when:
|
|
4
|
+
* - Running a JS file via the `bun` command
|
|
5
|
+
* - Running a Bun-compiled standalone executable
|
|
6
|
+
*/
|
|
7
|
+
export function isRunningWithBun(): boolean {
|
|
8
|
+
// https://bun.com/guides/util/detect-bun
|
|
9
|
+
return process.versions.bun !== undefined
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Detects if running as a Bun-compiled standalone executable.
|
|
14
|
+
* This checks for embedded files which are present in compiled binaries.
|
|
15
|
+
*/
|
|
16
|
+
export function isInBundledMode(): boolean {
|
|
17
|
+
return (
|
|
18
|
+
typeof Bun !== 'undefined' &&
|
|
19
|
+
Array.isArray(Bun.embeddedFiles) &&
|
|
20
|
+
Bun.embeddedFiles.length > 0
|
|
21
|
+
)
|
|
22
|
+
}
|
package/utils/caCerts.ts
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import memoize from 'lodash-es/memoize.js'
|
|
2
|
+
import { logForDebugging } from './debug.js'
|
|
3
|
+
import { hasNodeOption } from './envUtils.js'
|
|
4
|
+
import { getFsImplementation } from './fsOperations.js'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Load CA certificates for TLS connections.
|
|
8
|
+
*
|
|
9
|
+
* Since setting `ca` on an HTTPS agent replaces the default certificate store,
|
|
10
|
+
* we must always include base CAs (either system or bundled Mozilla) when returning.
|
|
11
|
+
*
|
|
12
|
+
* Returns undefined when no custom CA configuration is needed, allowing the
|
|
13
|
+
* runtime's default certificate handling to apply.
|
|
14
|
+
*
|
|
15
|
+
* Behavior:
|
|
16
|
+
* - Neither NODE_EXTRA_CA_CERTS nor --use-system-ca/--use-openssl-ca set: undefined (runtime defaults)
|
|
17
|
+
* - NODE_EXTRA_CA_CERTS only: bundled Mozilla CAs + extra cert file contents
|
|
18
|
+
* - --use-system-ca or --use-openssl-ca only: system CAs
|
|
19
|
+
* - --use-system-ca + NODE_EXTRA_CA_CERTS: system CAs + extra cert file contents
|
|
20
|
+
*
|
|
21
|
+
* Memoized for performance. Call clearCACertsCache() to invalidate after
|
|
22
|
+
* environment variable changes (e.g., after trust dialog applies settings.json).
|
|
23
|
+
*
|
|
24
|
+
* Reads ONLY `process.env.NODE_EXTRA_CA_CERTS`. `caCertsConfig.ts` populates
|
|
25
|
+
* that env var from settings.json at CLI init; this module stays config-free
|
|
26
|
+
* so `proxy.ts`/`mtls.ts` don't transitively pull in the command registry.
|
|
27
|
+
*/
|
|
28
|
+
export const getCACertificates = memoize((): string[] | undefined => {
|
|
29
|
+
const useSystemCA =
|
|
30
|
+
hasNodeOption('--use-system-ca') || hasNodeOption('--use-openssl-ca')
|
|
31
|
+
|
|
32
|
+
const extraCertsPath = process.env.NODE_EXTRA_CA_CERTS
|
|
33
|
+
|
|
34
|
+
logForDebugging(
|
|
35
|
+
`CA certs: useSystemCA=${useSystemCA}, extraCertsPath=${extraCertsPath}`,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
// If neither is set, return undefined (use runtime defaults, no override)
|
|
39
|
+
if (!useSystemCA && !extraCertsPath) {
|
|
40
|
+
return undefined
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Deferred load: Bun's node:tls module eagerly materializes ~150 Mozilla
|
|
44
|
+
// root certificates (~750KB heap) on import, even if tls.rootCertificates
|
|
45
|
+
// is never accessed. Most users hit the early return above, so we only
|
|
46
|
+
// pay this cost when custom CA handling is actually needed.
|
|
47
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
48
|
+
const tls = require('tls') as typeof import('tls')
|
|
49
|
+
/* eslint-enable @typescript-eslint/no-require-imports */
|
|
50
|
+
|
|
51
|
+
const certs: string[] = []
|
|
52
|
+
|
|
53
|
+
if (useSystemCA) {
|
|
54
|
+
// Load system CA store (Bun API)
|
|
55
|
+
const getCACerts = (
|
|
56
|
+
tls as typeof tls & { getCACertificates?: (type: string) => string[] }
|
|
57
|
+
).getCACertificates
|
|
58
|
+
const systemCAs = getCACerts?.('system')
|
|
59
|
+
if (systemCAs && systemCAs.length > 0) {
|
|
60
|
+
certs.push(...systemCAs)
|
|
61
|
+
logForDebugging(
|
|
62
|
+
`CA certs: Loaded ${certs.length} system CA certificates (--use-system-ca)`,
|
|
63
|
+
)
|
|
64
|
+
} else if (!getCACerts && !extraCertsPath) {
|
|
65
|
+
// Under Node.js where getCACertificates doesn't exist and no extra certs,
|
|
66
|
+
// return undefined to let Node.js handle --use-system-ca natively.
|
|
67
|
+
logForDebugging(
|
|
68
|
+
'CA certs: --use-system-ca set but system CA API unavailable, deferring to runtime',
|
|
69
|
+
)
|
|
70
|
+
return undefined
|
|
71
|
+
} else {
|
|
72
|
+
// System CA API returned empty or unavailable; fall back to bundled root certs
|
|
73
|
+
certs.push(...tls.rootCertificates)
|
|
74
|
+
logForDebugging(
|
|
75
|
+
`CA certs: Loaded ${certs.length} bundled root certificates as base (--use-system-ca fallback)`,
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
} else {
|
|
79
|
+
// Must include bundled Mozilla CAs as base since ca replaces defaults
|
|
80
|
+
certs.push(...tls.rootCertificates)
|
|
81
|
+
logForDebugging(
|
|
82
|
+
`CA certs: Loaded ${certs.length} bundled root certificates as base`,
|
|
83
|
+
)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Append extra certs from file
|
|
87
|
+
if (extraCertsPath) {
|
|
88
|
+
try {
|
|
89
|
+
const extraCert = getFsImplementation().readFileSync(extraCertsPath, {
|
|
90
|
+
encoding: 'utf8',
|
|
91
|
+
})
|
|
92
|
+
certs.push(extraCert)
|
|
93
|
+
logForDebugging(
|
|
94
|
+
`CA certs: Appended extra certificates from NODE_EXTRA_CA_CERTS (${extraCertsPath})`,
|
|
95
|
+
)
|
|
96
|
+
} catch (error) {
|
|
97
|
+
logForDebugging(
|
|
98
|
+
`CA certs: Failed to read NODE_EXTRA_CA_CERTS file (${extraCertsPath}): ${error}`,
|
|
99
|
+
{ level: 'error' },
|
|
100
|
+
)
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return certs.length > 0 ? certs : undefined
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Clear the CA certificates cache.
|
|
109
|
+
* Call this when environment variables that affect CA certs may have changed
|
|
110
|
+
* (e.g., NODE_EXTRA_CA_CERTS, NODE_OPTIONS).
|
|
111
|
+
*/
|
|
112
|
+
export function clearCACertsCache(): void {
|
|
113
|
+
getCACertificates.cache.clear?.()
|
|
114
|
+
logForDebugging('Cleared CA certificates cache')
|
|
115
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config/settings-backed NODE_EXTRA_CA_CERTS population for `caCerts.ts`.
|
|
3
|
+
*
|
|
4
|
+
* Split from `caCerts.ts` because `config.ts` → `file.ts` →
|
|
5
|
+
* `permissions/filesystem.ts` → `commands.ts` transitively pulls in ~5300
|
|
6
|
+
* modules (REPL, React, every slash command). `proxy.ts`/`mtls.ts` (and
|
|
7
|
+
* therefore anything using HTTPS through our proxy agent — WebSocketTransport,
|
|
8
|
+
* CCRClient, telemetry) must NOT depend on that graph, or the Agent SDK
|
|
9
|
+
* bundle (`connectRemoteControl` path) bloats from ~0.4 MB to ~10.8 MB.
|
|
10
|
+
*
|
|
11
|
+
* `getCACertificates()` only reads `process.env.NODE_EXTRA_CA_CERTS`. This
|
|
12
|
+
* module is the one place allowed to import `config.ts` to *populate* that
|
|
13
|
+
* env var at CLI startup. Only `init.ts` imports this file.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { getGlobalConfig } from './config.js'
|
|
17
|
+
import { logForDebugging } from './debug.js'
|
|
18
|
+
import { getSettingsForSource } from './settings/settings.js'
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Apply NODE_EXTRA_CA_CERTS from settings.json to process.env early in init,
|
|
22
|
+
* BEFORE any TLS connections are made.
|
|
23
|
+
*
|
|
24
|
+
* Bun caches the TLS certificate store at process boot via BoringSSL.
|
|
25
|
+
* If NODE_EXTRA_CA_CERTS isn't set in the environment at boot, Bun won't
|
|
26
|
+
* include the custom CA cert. By setting it on process.env before any
|
|
27
|
+
* TLS connections, we give Bun a chance to pick it up (if the cert store
|
|
28
|
+
* is lazy-initialized) and ensure Node.js compatibility.
|
|
29
|
+
*
|
|
30
|
+
* This is safe to call before the trust dialog because we only read from
|
|
31
|
+
* user-controlled files (~/.claude/settings.json and ~/.claude.json),
|
|
32
|
+
* not from project-level settings.
|
|
33
|
+
*/
|
|
34
|
+
export function applyExtraCACertsFromConfig(): void {
|
|
35
|
+
if (process.env.NODE_EXTRA_CA_CERTS) {
|
|
36
|
+
return // Already set in environment, nothing to do
|
|
37
|
+
}
|
|
38
|
+
const configPath = getExtraCertsPathFromConfig()
|
|
39
|
+
if (configPath) {
|
|
40
|
+
process.env.NODE_EXTRA_CA_CERTS = configPath
|
|
41
|
+
logForDebugging(
|
|
42
|
+
`CA certs: Applied NODE_EXTRA_CA_CERTS from config to process.env: ${configPath}`,
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Read NODE_EXTRA_CA_CERTS from settings/config as a fallback.
|
|
49
|
+
*
|
|
50
|
+
* NODE_EXTRA_CA_CERTS is categorized as a non-safe env var (it allows
|
|
51
|
+
* trusting attacker-controlled servers), so it's only applied to process.env
|
|
52
|
+
* after the trust dialog. But we need the CA cert early to establish the TLS
|
|
53
|
+
* connection to an HTTPS proxy during init().
|
|
54
|
+
*
|
|
55
|
+
* We read from global config (~/.claude.json) and user settings
|
|
56
|
+
* (~/.claude/settings.json). These are user-controlled files that don't
|
|
57
|
+
* require trust approval.
|
|
58
|
+
*/
|
|
59
|
+
function getExtraCertsPathFromConfig(): string | undefined {
|
|
60
|
+
try {
|
|
61
|
+
const globalConfig = getGlobalConfig()
|
|
62
|
+
const globalEnv = globalConfig?.env
|
|
63
|
+
// Only read from user-controlled settings (~/.claude/settings.json),
|
|
64
|
+
// not project-level settings, to prevent malicious projects from
|
|
65
|
+
// injecting CA certs before the trust dialog.
|
|
66
|
+
const settings = getSettingsForSource('userSettings')
|
|
67
|
+
const settingsEnv = settings?.env
|
|
68
|
+
|
|
69
|
+
logForDebugging(
|
|
70
|
+
`CA certs: Config fallback - globalEnv keys: ${globalEnv ? Object.keys(globalEnv).join(',') : 'none'}, settingsEnv keys: ${settingsEnv ? Object.keys(settingsEnv).join(',') : 'none'}`,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
// Settings override global config (same precedence as applyConfigEnvironmentVariables)
|
|
74
|
+
const path =
|
|
75
|
+
settingsEnv?.NODE_EXTRA_CA_CERTS || globalEnv?.NODE_EXTRA_CA_CERTS
|
|
76
|
+
if (path) {
|
|
77
|
+
logForDebugging(
|
|
78
|
+
`CA certs: Found NODE_EXTRA_CA_CERTS in config/settings: ${path}`,
|
|
79
|
+
)
|
|
80
|
+
}
|
|
81
|
+
return path
|
|
82
|
+
} catch (error) {
|
|
83
|
+
logForDebugging(`CA certs: Config fallback failed: ${error}`, {
|
|
84
|
+
level: 'error',
|
|
85
|
+
})
|
|
86
|
+
return undefined
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import envPaths from 'env-paths'
|
|
2
|
+
import { join } from 'path'
|
|
3
|
+
import { getFsImplementation } from './fsOperations.js'
|
|
4
|
+
import { djb2Hash } from './hash.js'
|
|
5
|
+
|
|
6
|
+
const paths = envPaths('claude-cli')
|
|
7
|
+
|
|
8
|
+
// Local sanitizePath using djb2Hash — NOT the shared version from
|
|
9
|
+
// sessionStoragePortable.ts which uses Bun.hash (wyhash) when available.
|
|
10
|
+
// Cache directory names must remain stable across upgrades so existing cache
|
|
11
|
+
// data (error logs, MCP logs) is not orphaned.
|
|
12
|
+
const MAX_SANITIZED_LENGTH = 200
|
|
13
|
+
function sanitizePath(name: string): string {
|
|
14
|
+
const sanitized = name.replace(/[^a-zA-Z0-9]/g, '-')
|
|
15
|
+
if (sanitized.length <= MAX_SANITIZED_LENGTH) {
|
|
16
|
+
return sanitized
|
|
17
|
+
}
|
|
18
|
+
return `${sanitized.slice(0, MAX_SANITIZED_LENGTH)}-${Math.abs(djb2Hash(name)).toString(36)}`
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function getProjectDir(cwd: string): string {
|
|
22
|
+
return sanitizePath(cwd)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const CACHE_PATHS = {
|
|
26
|
+
baseLogs: () => join(paths.cache, getProjectDir(getFsImplementation().cwd())),
|
|
27
|
+
errors: () =>
|
|
28
|
+
join(paths.cache, getProjectDir(getFsImplementation().cwd()), 'errors'),
|
|
29
|
+
messages: () =>
|
|
30
|
+
join(paths.cache, getProjectDir(getFsImplementation().cwd()), 'messages'),
|
|
31
|
+
mcpLogs: (serverName: string) =>
|
|
32
|
+
join(
|
|
33
|
+
paths.cache,
|
|
34
|
+
getProjectDir(getFsImplementation().cwd()),
|
|
35
|
+
// Sanitize server name for Windows compatibility (colons are reserved for drive letters)
|
|
36
|
+
`mcp-logs-${sanitizePath(serverName)}`,
|
|
37
|
+
),
|
|
38
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracks which tool uses were auto-approved by classifiers.
|
|
3
|
+
* Populated from useCanUseTool.ts and permissions.ts, read from UserToolSuccessMessage.tsx.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { feature } from 'bun:bundle'
|
|
7
|
+
import { createSignal } from './signal.js'
|
|
8
|
+
|
|
9
|
+
type ClassifierApproval = {
|
|
10
|
+
classifier: 'bash' | 'auto-mode'
|
|
11
|
+
matchedRule?: string
|
|
12
|
+
reason?: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const CLASSIFIER_APPROVALS = new Map<string, ClassifierApproval>()
|
|
16
|
+
const CLASSIFIER_CHECKING = new Set<string>()
|
|
17
|
+
const classifierChecking = createSignal()
|
|
18
|
+
|
|
19
|
+
export function setClassifierApproval(
|
|
20
|
+
toolUseID: string,
|
|
21
|
+
matchedRule: string,
|
|
22
|
+
): void {
|
|
23
|
+
if (!feature('BASH_CLASSIFIER')) {
|
|
24
|
+
return
|
|
25
|
+
}
|
|
26
|
+
CLASSIFIER_APPROVALS.set(toolUseID, {
|
|
27
|
+
classifier: 'bash',
|
|
28
|
+
matchedRule,
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function getClassifierApproval(toolUseID: string): string | undefined {
|
|
33
|
+
if (!feature('BASH_CLASSIFIER')) {
|
|
34
|
+
return undefined
|
|
35
|
+
}
|
|
36
|
+
const approval = CLASSIFIER_APPROVALS.get(toolUseID)
|
|
37
|
+
if (!approval || approval.classifier !== 'bash') return undefined
|
|
38
|
+
return approval.matchedRule
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function setYoloClassifierApproval(
|
|
42
|
+
toolUseID: string,
|
|
43
|
+
reason: string,
|
|
44
|
+
): void {
|
|
45
|
+
if (!feature('TRANSCRIPT_CLASSIFIER')) {
|
|
46
|
+
return
|
|
47
|
+
}
|
|
48
|
+
CLASSIFIER_APPROVALS.set(toolUseID, { classifier: 'auto-mode', reason })
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function getYoloClassifierApproval(
|
|
52
|
+
toolUseID: string,
|
|
53
|
+
): string | undefined {
|
|
54
|
+
if (!feature('TRANSCRIPT_CLASSIFIER')) {
|
|
55
|
+
return undefined
|
|
56
|
+
}
|
|
57
|
+
const approval = CLASSIFIER_APPROVALS.get(toolUseID)
|
|
58
|
+
if (!approval || approval.classifier !== 'auto-mode') return undefined
|
|
59
|
+
return approval.reason
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function setClassifierChecking(toolUseID: string): void {
|
|
63
|
+
if (!feature('BASH_CLASSIFIER') && !feature('TRANSCRIPT_CLASSIFIER')) return
|
|
64
|
+
CLASSIFIER_CHECKING.add(toolUseID)
|
|
65
|
+
classifierChecking.emit()
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function clearClassifierChecking(toolUseID: string): void {
|
|
69
|
+
if (!feature('BASH_CLASSIFIER') && !feature('TRANSCRIPT_CLASSIFIER')) return
|
|
70
|
+
CLASSIFIER_CHECKING.delete(toolUseID)
|
|
71
|
+
classifierChecking.emit()
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export const subscribeClassifierChecking = classifierChecking.subscribe
|
|
75
|
+
|
|
76
|
+
export function isClassifierChecking(toolUseID: string): boolean {
|
|
77
|
+
return CLASSIFIER_CHECKING.has(toolUseID)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function deleteClassifierApproval(toolUseID: string): void {
|
|
81
|
+
CLASSIFIER_APPROVALS.delete(toolUseID)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function clearClassifierApprovals(): void {
|
|
85
|
+
CLASSIFIER_APPROVALS.clear()
|
|
86
|
+
CLASSIFIER_CHECKING.clear()
|
|
87
|
+
classifierChecking.emit()
|
|
88
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hook for classifierApprovals store.
|
|
3
|
+
* Split from classifierApprovals.ts so pure-state importers (permissions.ts,
|
|
4
|
+
* toolExecution.ts, postCompactCleanup.ts) do not pull React into print.ts.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { useSyncExternalStore } from 'react'
|
|
8
|
+
import {
|
|
9
|
+
isClassifierChecking,
|
|
10
|
+
subscribeClassifierChecking,
|
|
11
|
+
} from './classifierApprovals.js'
|
|
12
|
+
|
|
13
|
+
export function useIsClassifierChecking(toolUseID: string): boolean {
|
|
14
|
+
return useSyncExternalStore(subscribeClassifierChecking, () =>
|
|
15
|
+
isClassifierChecking(toolUseID),
|
|
16
|
+
)
|
|
17
|
+
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code hints protocol.
|
|
3
|
+
*
|
|
4
|
+
* CLIs and SDKs running under Claude Code can emit a self-closing
|
|
5
|
+
* `<claude-code-hint />` tag to stderr (merged into stdout by the shell
|
|
6
|
+
* tools). The harness scans tool output for these tags, strips them before
|
|
7
|
+
* the output reaches the model, and surfaces an install prompt to the
|
|
8
|
+
* user — no inference, no proactive execution.
|
|
9
|
+
*
|
|
10
|
+
* This file provides both the parser and a small module-level store for
|
|
11
|
+
* the pending hint. The store is a single slot (not a queue) — we surface
|
|
12
|
+
* at most one prompt per session, so there's no reason to accumulate.
|
|
13
|
+
* React subscribes via useSyncExternalStore.
|
|
14
|
+
*
|
|
15
|
+
* See docs/claude-code-hints.md for the vendor-facing spec.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { logForDebugging } from './debug.js'
|
|
19
|
+
import { createSignal } from './signal.js'
|
|
20
|
+
|
|
21
|
+
export type ClaudeCodeHintType = 'plugin'
|
|
22
|
+
|
|
23
|
+
export type ClaudeCodeHint = {
|
|
24
|
+
/** Spec version declared by the emitter. Unknown versions are dropped. */
|
|
25
|
+
v: number
|
|
26
|
+
/** Hint discriminator. v1 defines only `plugin`. */
|
|
27
|
+
type: ClaudeCodeHintType
|
|
28
|
+
/**
|
|
29
|
+
* Hint payload. For `type: 'plugin'`: a `name@marketplace` slug
|
|
30
|
+
* matching the form accepted by `parsePluginIdentifier`.
|
|
31
|
+
*/
|
|
32
|
+
value: string
|
|
33
|
+
/**
|
|
34
|
+
* First token of the shell command that produced this hint. Shown in the
|
|
35
|
+
* install prompt so the user can spot a mismatch between the tool that
|
|
36
|
+
* emitted the hint and the plugin it recommends.
|
|
37
|
+
*/
|
|
38
|
+
sourceCommand: string
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Spec versions this harness understands. */
|
|
42
|
+
const SUPPORTED_VERSIONS = new Set([1])
|
|
43
|
+
|
|
44
|
+
/** Hint types this harness understands at the supported versions. */
|
|
45
|
+
const SUPPORTED_TYPES = new Set<string>(['plugin'])
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Outer tag match. Anchored to whole lines (multiline mode) so that a
|
|
49
|
+
* hint marker buried in a larger line — e.g. a log statement quoting the
|
|
50
|
+
* tag — is ignored. Leading and trailing whitespace on the line is
|
|
51
|
+
* tolerated since some SDKs pad stderr.
|
|
52
|
+
*/
|
|
53
|
+
const HINT_TAG_RE = /^[ \t]*<claude-code-hint\s+([^>]*?)\s*\/>[ \t]*$/gm
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Attribute matcher. Accepts `key="value"` and `key=value` (terminated by
|
|
57
|
+
* whitespace or `/>` closing sequence). Values containing whitespace or `"` must use the quoted
|
|
58
|
+
* form. The quoted form does not support escape sequences; raise the spec
|
|
59
|
+
* version if that becomes necessary.
|
|
60
|
+
*/
|
|
61
|
+
const ATTR_RE = /(\w+)=(?:"([^"]*)"|([^\s/>]+))/g
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Scan shell tool output for hint tags, returning the parsed hints and
|
|
65
|
+
* the output with hint lines removed. The stripped output is what the
|
|
66
|
+
* model sees — hints are a harness-only side channel.
|
|
67
|
+
*
|
|
68
|
+
* @param output - Raw command output (stdout with stderr interleaved).
|
|
69
|
+
* @param command - The command that produced the output; its first
|
|
70
|
+
* whitespace-separated token is recorded as `sourceCommand`.
|
|
71
|
+
*/
|
|
72
|
+
export function extractClaudeCodeHints(
|
|
73
|
+
output: string,
|
|
74
|
+
command: string,
|
|
75
|
+
): { hints: ClaudeCodeHint[]; stripped: string } {
|
|
76
|
+
// Fast path: no tag open sequence → no work, no allocation.
|
|
77
|
+
if (!output.includes('<claude-code-hint')) {
|
|
78
|
+
return { hints: [], stripped: output }
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const sourceCommand = firstCommandToken(command)
|
|
82
|
+
const hints: ClaudeCodeHint[] = []
|
|
83
|
+
|
|
84
|
+
const stripped = output.replace(HINT_TAG_RE, rawLine => {
|
|
85
|
+
const attrs = parseAttrs(rawLine)
|
|
86
|
+
const v = Number(attrs.v)
|
|
87
|
+
const type = attrs.type
|
|
88
|
+
const value = attrs.value
|
|
89
|
+
|
|
90
|
+
if (!SUPPORTED_VERSIONS.has(v)) {
|
|
91
|
+
logForDebugging(
|
|
92
|
+
`[claudeCodeHints] dropped hint with unsupported v=${attrs.v}`,
|
|
93
|
+
)
|
|
94
|
+
return ''
|
|
95
|
+
}
|
|
96
|
+
if (!type || !SUPPORTED_TYPES.has(type)) {
|
|
97
|
+
logForDebugging(
|
|
98
|
+
`[claudeCodeHints] dropped hint with unsupported type=${type}`,
|
|
99
|
+
)
|
|
100
|
+
return ''
|
|
101
|
+
}
|
|
102
|
+
if (!value) {
|
|
103
|
+
logForDebugging('[claudeCodeHints] dropped hint with empty value')
|
|
104
|
+
return ''
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
hints.push({ v, type: type as ClaudeCodeHintType, value, sourceCommand })
|
|
108
|
+
return ''
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
// Dropping a matched line leaves a blank line (the surrounding newlines
|
|
112
|
+
// remain). Collapse runs of blank lines introduced by the replace so the
|
|
113
|
+
// model-visible output doesn't grow vertical whitespace.
|
|
114
|
+
const collapsed =
|
|
115
|
+
hints.length > 0 || stripped !== output
|
|
116
|
+
? stripped.replace(/\n{3,}/g, '\n\n')
|
|
117
|
+
: stripped
|
|
118
|
+
|
|
119
|
+
return { hints, stripped: collapsed }
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function parseAttrs(tagBody: string): Record<string, string> {
|
|
123
|
+
const attrs: Record<string, string> = {}
|
|
124
|
+
for (const m of tagBody.matchAll(ATTR_RE)) {
|
|
125
|
+
attrs[m[1]!] = m[2] ?? m[3] ?? ''
|
|
126
|
+
}
|
|
127
|
+
return attrs
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function firstCommandToken(command: string): string {
|
|
131
|
+
const trimmed = command.trim()
|
|
132
|
+
const spaceIdx = trimmed.search(/\s/)
|
|
133
|
+
return spaceIdx === -1 ? trimmed : trimmed.slice(0, spaceIdx)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// ============================================================================
|
|
137
|
+
// Pending-hint store (useSyncExternalStore interface)
|
|
138
|
+
//
|
|
139
|
+
// Single-slot: write wins if the slot is already full (a CLI that emits on
|
|
140
|
+
// every invocation would otherwise pile up). The dialog is shown at most
|
|
141
|
+
// once per session; after that, setPendingHint becomes a no-op.
|
|
142
|
+
//
|
|
143
|
+
// Callers should gate before writing (installed? already shown? cap hit?) —
|
|
144
|
+
// see maybeRecordPluginHint in hintRecommendation.ts for the plugin-type
|
|
145
|
+
// gate. This module stays plugin-agnostic so future hint types can reuse
|
|
146
|
+
// the same store.
|
|
147
|
+
// ============================================================================
|
|
148
|
+
|
|
149
|
+
let pendingHint: ClaudeCodeHint | null = null
|
|
150
|
+
let shownThisSession = false
|
|
151
|
+
const pendingHintChanged = createSignal()
|
|
152
|
+
const notify = pendingHintChanged.emit
|
|
153
|
+
|
|
154
|
+
/** Raw store write. Callers should gate first (see module comment). */
|
|
155
|
+
export function setPendingHint(hint: ClaudeCodeHint): void {
|
|
156
|
+
if (shownThisSession) return
|
|
157
|
+
pendingHint = hint
|
|
158
|
+
notify()
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/** Clear the slot without flipping the session flag — for rejected hints. */
|
|
162
|
+
export function clearPendingHint(): void {
|
|
163
|
+
if (pendingHint !== null) {
|
|
164
|
+
pendingHint = null
|
|
165
|
+
notify()
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/** Flip the once-per-session flag. Call only when a dialog is actually shown. */
|
|
170
|
+
export function markShownThisSession(): void {
|
|
171
|
+
shownThisSession = true
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export const subscribeToPendingHint = pendingHintChanged.subscribe
|
|
175
|
+
|
|
176
|
+
export function getPendingHintSnapshot(): ClaudeCodeHint | null {
|
|
177
|
+
return pendingHint
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export function hasShownHintThisSession(): boolean {
|
|
181
|
+
return shownThisSession
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/** Test-only reset. */
|
|
185
|
+
export function _resetClaudeCodeHintStore(): void {
|
|
186
|
+
pendingHint = null
|
|
187
|
+
shownThisSession = false
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export const _test = {
|
|
191
|
+
parseAttrs,
|
|
192
|
+
firstCommandToken,
|
|
193
|
+
}
|