@xortex/xcode 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +171 -0
- package/bin/xcode +127 -0
- package/bin/xcode-test +84 -0
- package/bin/xcode.cmd +31 -0
- package/constants/apiLimits.ts +94 -0
- package/constants/betas.ts +52 -0
- package/constants/common.ts +33 -0
- package/constants/cyberRiskInstruction.ts +24 -0
- package/constants/errorIds.ts +15 -0
- package/constants/figures.ts +45 -0
- package/constants/files.ts +156 -0
- package/constants/github-app.ts +144 -0
- package/constants/keys.ts +11 -0
- package/constants/messages.ts +1 -0
- package/constants/oauth.ts +234 -0
- package/constants/outputStyles.ts +216 -0
- package/constants/product.ts +76 -0
- package/constants/prompts.ts +939 -0
- package/constants/spinnerVerbs.ts +204 -0
- package/constants/system.ts +95 -0
- package/constants/systemPromptSections.ts +68 -0
- package/constants/toolLimits.ts +56 -0
- package/constants/tools.ts +112 -0
- package/constants/turnCompletionVerbs.ts +12 -0
- package/constants/xml.ts +86 -0
- package/entrypoints/agentSdkTypes.ts +443 -0
- package/entrypoints/cli.tsx +307 -0
- package/entrypoints/init.ts +340 -0
- package/entrypoints/mcp.ts +196 -0
- package/entrypoints/sandboxTypes.ts +156 -0
- package/entrypoints/sdk/controlSchemas.ts +663 -0
- package/entrypoints/sdk/coreSchemas.ts +1889 -0
- package/entrypoints/sdk/coreTypes.generated.ts +2 -0
- package/entrypoints/sdk/coreTypes.ts +62 -0
- package/entrypoints/sdk/runtimeTypes.ts +140 -0
- package/entrypoints/sdk/sdkUtilityTypes.ts +3 -0
- package/entrypoints/sdk/toolTypes.ts +90 -0
- package/main.tsx +4686 -0
- package/package.json +120 -0
- package/services/AgentSummary/agentSummary.ts +179 -0
- package/services/MagicDocs/magicDocs.ts +254 -0
- package/services/MagicDocs/prompts.ts +127 -0
- package/services/PromptSuggestion/promptSuggestion.ts +523 -0
- package/services/PromptSuggestion/speculation.ts +991 -0
- package/services/SessionMemory/prompts.ts +324 -0
- package/services/SessionMemory/sessionMemory.ts +495 -0
- package/services/SessionMemory/sessionMemoryUtils.ts +207 -0
- package/services/analytics/config.ts +38 -0
- package/services/analytics/datadog.ts +307 -0
- package/services/analytics/firstPartyEventLogger.ts +449 -0
- package/services/analytics/firstPartyEventLoggingExporter.ts +806 -0
- package/services/analytics/growthbook.ts +1155 -0
- package/services/analytics/index.ts +173 -0
- package/services/analytics/metadata.ts +973 -0
- package/services/analytics/sink.ts +114 -0
- package/services/analytics/sinkKillswitch.ts +25 -0
- package/services/api/adminRequests.ts +119 -0
- package/services/api/bootstrap.ts +141 -0
- package/services/api/claude.ts +3422 -0
- package/services/api/client.ts +406 -0
- package/services/api/dumpPrompts.ts +226 -0
- package/services/api/emptyUsage.ts +22 -0
- package/services/api/errorUtils.ts +260 -0
- package/services/api/errors.ts +1207 -0
- package/services/api/filesApi.ts +748 -0
- package/services/api/firstTokenDate.ts +60 -0
- package/services/api/gemini.ts +359 -0
- package/services/api/geminiAdapter.ts +123 -0
- package/services/api/geminiClient.ts +291 -0
- package/services/api/grove.ts +357 -0
- package/services/api/logging.ts +788 -0
- package/services/api/metricsOptOut.ts +159 -0
- package/services/api/openRouterClient.ts +453 -0
- package/services/api/overageCreditGrant.ts +137 -0
- package/services/api/promptCacheBreakDetection.ts +727 -0
- package/services/api/referral.ts +281 -0
- package/services/api/sessionIngress.ts +514 -0
- package/services/api/ultrareviewQuota.ts +38 -0
- package/services/api/usage.ts +63 -0
- package/services/api/withRetry.ts +822 -0
- package/services/autoDream/autoDream.ts +324 -0
- package/services/autoDream/config.ts +21 -0
- package/services/autoDream/consolidationLock.ts +140 -0
- package/services/autoDream/consolidationPrompt.ts +65 -0
- package/services/awaySummary.ts +74 -0
- package/services/claudeAiLimits.ts +515 -0
- package/services/claudeAiLimitsHook.ts +23 -0
- package/services/compact/apiMicrocompact.ts +153 -0
- package/services/compact/autoCompact.ts +351 -0
- package/services/compact/compact.ts +1705 -0
- package/services/compact/compactWarningHook.ts +16 -0
- package/services/compact/compactWarningState.ts +18 -0
- package/services/compact/grouping.ts +63 -0
- package/services/compact/microCompact.ts +530 -0
- package/services/compact/postCompactCleanup.ts +77 -0
- package/services/compact/prompt.ts +374 -0
- package/services/compact/sessionMemoryCompact.ts +630 -0
- package/services/compact/timeBasedMCConfig.ts +43 -0
- package/services/diagnosticTracking.ts +397 -0
- package/services/extractMemories/extractMemories.ts +517 -0
- package/services/extractMemories/prompts.ts +154 -0
- package/services/internalLogging.ts +90 -0
- package/services/lsp/LSPClient.ts +447 -0
- package/services/lsp/LSPDiagnosticRegistry.ts +386 -0
- package/services/lsp/LSPServerInstance.ts +511 -0
- package/services/lsp/LSPServerManager.ts +420 -0
- package/services/lsp/config.ts +79 -0
- package/services/lsp/manager.ts +289 -0
- package/services/lsp/passiveFeedback.ts +328 -0
- package/services/mcp/InProcessTransport.ts +63 -0
- package/services/mcp/MCPConnectionManager.tsx +73 -0
- package/services/mcp/SdkControlTransport.ts +136 -0
- package/services/mcp/auth.ts +2465 -0
- package/services/mcp/channelAllowlist.ts +76 -0
- package/services/mcp/channelNotification.ts +316 -0
- package/services/mcp/channelPermissions.ts +240 -0
- package/services/mcp/claudeai.ts +164 -0
- package/services/mcp/client.ts +3348 -0
- package/services/mcp/config.ts +1578 -0
- package/services/mcp/elicitationHandler.ts +313 -0
- package/services/mcp/envExpansion.ts +38 -0
- package/services/mcp/headersHelper.ts +138 -0
- package/services/mcp/mcpStringUtils.ts +106 -0
- package/services/mcp/normalization.ts +23 -0
- package/services/mcp/oauthPort.ts +78 -0
- package/services/mcp/officialRegistry.ts +72 -0
- package/services/mcp/types.ts +258 -0
- package/services/mcp/useManageMCPConnections.ts +1141 -0
- package/services/mcp/utils.ts +575 -0
- package/services/mcp/vscodeSdkMcp.ts +112 -0
- package/services/mcp/xaa.ts +511 -0
- package/services/mcp/xaaIdpLogin.ts +487 -0
- package/services/mcpServerApproval.tsx +41 -0
- package/services/mockRateLimits.ts +882 -0
- package/services/notifier.ts +156 -0
- package/services/oauth/auth-code-listener.ts +211 -0
- package/services/oauth/client.ts +566 -0
- package/services/oauth/crypto.ts +23 -0
- package/services/oauth/getOauthProfile.ts +53 -0
- package/services/oauth/index.ts +198 -0
- package/services/plugins/PluginInstallationManager.ts +184 -0
- package/services/plugins/pluginCliCommands.ts +344 -0
- package/services/plugins/pluginOperations.ts +1088 -0
- package/services/policyLimits/index.ts +663 -0
- package/services/policyLimits/types.ts +27 -0
- package/services/preventSleep.ts +165 -0
- package/services/rateLimitMessages.ts +344 -0
- package/services/rateLimitMocking.ts +144 -0
- package/services/remoteManagedSettings/index.ts +638 -0
- package/services/remoteManagedSettings/securityCheck.tsx +74 -0
- package/services/remoteManagedSettings/syncCache.ts +112 -0
- package/services/remoteManagedSettings/syncCacheState.ts +96 -0
- package/services/remoteManagedSettings/types.ts +31 -0
- package/services/settingsSync/index.ts +581 -0
- package/services/settingsSync/types.ts +67 -0
- package/services/teamMemorySync/index.ts +1256 -0
- package/services/teamMemorySync/secretScanner.ts +324 -0
- package/services/teamMemorySync/teamMemSecretGuard.ts +44 -0
- package/services/teamMemorySync/types.ts +156 -0
- package/services/teamMemorySync/watcher.ts +387 -0
- package/services/tips/tipHistory.ts +17 -0
- package/services/tips/tipRegistry.ts +686 -0
- package/services/tips/tipScheduler.ts +58 -0
- package/services/tokenEstimation.ts +495 -0
- package/services/toolUseSummary/toolUseSummaryGenerator.ts +112 -0
- package/services/tools/StreamingToolExecutor.ts +530 -0
- package/services/tools/toolExecution.ts +1745 -0
- package/services/tools/toolHooks.ts +650 -0
- package/services/tools/toolOrchestration.ts +188 -0
- package/services/vcr.ts +406 -0
- package/services/voice.ts +525 -0
- package/services/voiceKeyterms.ts +106 -0
- package/services/voiceStreamSTT.ts +544 -0
- package/tools/AgentTool/AgentTool.tsx +1398 -0
- package/tools/AgentTool/UI.tsx +872 -0
- package/tools/AgentTool/agentColorManager.ts +66 -0
- package/tools/AgentTool/agentDisplay.ts +104 -0
- package/tools/AgentTool/agentMemory.ts +177 -0
- package/tools/AgentTool/agentMemorySnapshot.ts +197 -0
- package/tools/AgentTool/agentToolUtils.ts +686 -0
- package/tools/AgentTool/built-in/claudeCodeGuideAgent.ts +205 -0
- package/tools/AgentTool/built-in/exploreAgent.ts +83 -0
- package/tools/AgentTool/built-in/generalPurposeAgent.ts +34 -0
- package/tools/AgentTool/built-in/planAgent.ts +92 -0
- package/tools/AgentTool/built-in/statuslineSetup.ts +144 -0
- package/tools/AgentTool/built-in/verificationAgent.ts +152 -0
- package/tools/AgentTool/builtInAgents.ts +72 -0
- package/tools/AgentTool/constants.ts +12 -0
- package/tools/AgentTool/forkSubagent.ts +210 -0
- package/tools/AgentTool/loadAgentsDir.ts +755 -0
- package/tools/AgentTool/prompt.ts +287 -0
- package/tools/AgentTool/resumeAgent.ts +265 -0
- package/tools/AgentTool/runAgent.ts +973 -0
- package/tools/AskUserQuestionTool/AskUserQuestionTool.tsx +266 -0
- package/tools/AskUserQuestionTool/prompt.ts +44 -0
- package/tools/BashTool/BashTool.tsx +1144 -0
- package/tools/BashTool/BashToolResultMessage.tsx +191 -0
- package/tools/BashTool/UI.tsx +185 -0
- package/tools/BashTool/bashCommandHelpers.ts +265 -0
- package/tools/BashTool/bashPermissions.ts +2621 -0
- package/tools/BashTool/bashSecurity.ts +2592 -0
- package/tools/BashTool/commandSemantics.ts +140 -0
- package/tools/BashTool/commentLabel.ts +13 -0
- package/tools/BashTool/destructiveCommandWarning.ts +102 -0
- package/tools/BashTool/modeValidation.ts +115 -0
- package/tools/BashTool/pathValidation.ts +1303 -0
- package/tools/BashTool/prompt.ts +369 -0
- package/tools/BashTool/readOnlyValidation.ts +1990 -0
- package/tools/BashTool/sedEditParser.ts +322 -0
- package/tools/BashTool/sedValidation.ts +684 -0
- package/tools/BashTool/shouldUseSandbox.ts +153 -0
- package/tools/BashTool/toolName.ts +2 -0
- package/tools/BashTool/utils.ts +223 -0
- package/tools/BriefTool/BriefTool.ts +204 -0
- package/tools/BriefTool/UI.tsx +101 -0
- package/tools/BriefTool/attachments.ts +110 -0
- package/tools/BriefTool/prompt.ts +22 -0
- package/tools/BriefTool/upload.ts +174 -0
- package/tools/ConfigTool/ConfigTool.ts +467 -0
- package/tools/ConfigTool/UI.tsx +38 -0
- package/tools/ConfigTool/constants.ts +1 -0
- package/tools/ConfigTool/prompt.ts +93 -0
- package/tools/ConfigTool/supportedSettings.ts +211 -0
- package/tools/EnterPlanModeTool/EnterPlanModeTool.ts +126 -0
- package/tools/EnterPlanModeTool/UI.tsx +33 -0
- package/tools/EnterPlanModeTool/constants.ts +1 -0
- package/tools/EnterPlanModeTool/prompt.ts +170 -0
- package/tools/EnterWorktreeTool/EnterWorktreeTool.ts +127 -0
- package/tools/EnterWorktreeTool/UI.tsx +20 -0
- package/tools/EnterWorktreeTool/constants.ts +1 -0
- package/tools/EnterWorktreeTool/prompt.ts +30 -0
- package/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts +493 -0
- package/tools/ExitPlanModeTool/UI.tsx +82 -0
- package/tools/ExitPlanModeTool/constants.ts +2 -0
- package/tools/ExitPlanModeTool/prompt.ts +29 -0
- package/tools/ExitWorktreeTool/ExitWorktreeTool.ts +329 -0
- package/tools/ExitWorktreeTool/UI.tsx +25 -0
- package/tools/ExitWorktreeTool/constants.ts +1 -0
- package/tools/ExitWorktreeTool/prompt.ts +32 -0
- package/tools/FileEditTool/FileEditTool.ts +625 -0
- package/tools/FileEditTool/UI.tsx +289 -0
- package/tools/FileEditTool/constants.ts +11 -0
- package/tools/FileEditTool/prompt.ts +28 -0
- package/tools/FileEditTool/types.ts +85 -0
- package/tools/FileEditTool/utils.ts +775 -0
- package/tools/FileReadTool/FileReadTool.ts +1183 -0
- package/tools/FileReadTool/UI.tsx +185 -0
- package/tools/FileReadTool/imageProcessor.ts +94 -0
- package/tools/FileReadTool/limits.ts +92 -0
- package/tools/FileReadTool/prompt.ts +49 -0
- package/tools/FileWriteTool/FileWriteTool.ts +434 -0
- package/tools/FileWriteTool/UI.tsx +405 -0
- package/tools/FileWriteTool/prompt.ts +18 -0
- package/tools/GlobTool/GlobTool.ts +198 -0
- package/tools/GlobTool/UI.tsx +63 -0
- package/tools/GlobTool/prompt.ts +7 -0
- package/tools/GrepTool/GrepTool.ts +577 -0
- package/tools/GrepTool/UI.tsx +201 -0
- package/tools/GrepTool/prompt.ts +18 -0
- package/tools/LSPTool/LSPTool.ts +860 -0
- package/tools/LSPTool/UI.tsx +228 -0
- package/tools/LSPTool/formatters.ts +592 -0
- package/tools/LSPTool/prompt.ts +21 -0
- package/tools/LSPTool/schemas.ts +215 -0
- package/tools/LSPTool/symbolContext.ts +90 -0
- package/tools/ListMcpResourcesTool/ListMcpResourcesTool.ts +123 -0
- package/tools/ListMcpResourcesTool/UI.tsx +29 -0
- package/tools/ListMcpResourcesTool/prompt.ts +20 -0
- package/tools/MCPTool/MCPTool.ts +77 -0
- package/tools/MCPTool/UI.tsx +403 -0
- package/tools/MCPTool/classifyForCollapse.ts +604 -0
- package/tools/MCPTool/prompt.ts +3 -0
- package/tools/McpAuthTool/McpAuthTool.ts +215 -0
- package/tools/NotebookEditTool/NotebookEditTool.ts +490 -0
- package/tools/NotebookEditTool/UI.tsx +93 -0
- package/tools/NotebookEditTool/constants.ts +2 -0
- package/tools/NotebookEditTool/prompt.ts +3 -0
- package/tools/PowerShellTool/PowerShellTool.tsx +1001 -0
- package/tools/PowerShellTool/UI.tsx +131 -0
- package/tools/PowerShellTool/clmTypes.ts +211 -0
- package/tools/PowerShellTool/commandSemantics.ts +142 -0
- package/tools/PowerShellTool/commonParameters.ts +30 -0
- package/tools/PowerShellTool/destructiveCommandWarning.ts +109 -0
- package/tools/PowerShellTool/gitSafety.ts +176 -0
- package/tools/PowerShellTool/modeValidation.ts +404 -0
- package/tools/PowerShellTool/pathValidation.ts +2049 -0
- package/tools/PowerShellTool/powershellPermissions.ts +1648 -0
- package/tools/PowerShellTool/powershellSecurity.ts +1090 -0
- package/tools/PowerShellTool/prompt.ts +145 -0
- package/tools/PowerShellTool/readOnlyValidation.ts +1823 -0
- package/tools/PowerShellTool/toolName.ts +2 -0
- package/tools/REPLTool/constants.ts +46 -0
- package/tools/REPLTool/primitiveTools.ts +39 -0
- package/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts +158 -0
- package/tools/ReadMcpResourceTool/UI.tsx +37 -0
- package/tools/ReadMcpResourceTool/prompt.ts +16 -0
- package/tools/RemoteTriggerTool/RemoteTriggerTool.ts +161 -0
- package/tools/RemoteTriggerTool/UI.tsx +17 -0
- package/tools/RemoteTriggerTool/prompt.ts +15 -0
- package/tools/ScheduleCronTool/CronCreateTool.ts +157 -0
- package/tools/ScheduleCronTool/CronDeleteTool.ts +95 -0
- package/tools/ScheduleCronTool/CronListTool.ts +97 -0
- package/tools/ScheduleCronTool/UI.tsx +60 -0
- package/tools/ScheduleCronTool/prompt.ts +135 -0
- package/tools/SendMessageTool/SendMessageTool.ts +917 -0
- package/tools/SendMessageTool/UI.tsx +31 -0
- package/tools/SendMessageTool/constants.ts +1 -0
- package/tools/SendMessageTool/prompt.ts +49 -0
- package/tools/SkillTool/SkillTool.ts +1108 -0
- package/tools/SkillTool/UI.tsx +128 -0
- package/tools/SkillTool/constants.ts +1 -0
- package/tools/SkillTool/prompt.ts +241 -0
- package/tools/SleepTool/prompt.ts +17 -0
- package/tools/SyntheticOutputTool/SyntheticOutputTool.ts +163 -0
- package/tools/TaskCreateTool/TaskCreateTool.ts +138 -0
- package/tools/TaskCreateTool/constants.ts +1 -0
- package/tools/TaskCreateTool/prompt.ts +56 -0
- package/tools/TaskGetTool/TaskGetTool.ts +128 -0
- package/tools/TaskGetTool/constants.ts +1 -0
- package/tools/TaskGetTool/prompt.ts +24 -0
- package/tools/TaskListTool/TaskListTool.ts +116 -0
- package/tools/TaskListTool/constants.ts +1 -0
- package/tools/TaskListTool/prompt.ts +49 -0
- package/tools/TaskOutputTool/TaskOutputTool.tsx +584 -0
- package/tools/TaskOutputTool/constants.ts +1 -0
- package/tools/TaskStopTool/TaskStopTool.ts +131 -0
- package/tools/TaskStopTool/UI.tsx +41 -0
- package/tools/TaskStopTool/prompt.ts +8 -0
- package/tools/TaskUpdateTool/TaskUpdateTool.ts +406 -0
- package/tools/TaskUpdateTool/constants.ts +1 -0
- package/tools/TaskUpdateTool/prompt.ts +77 -0
- package/tools/TeamCreateTool/TeamCreateTool.ts +240 -0
- package/tools/TeamCreateTool/UI.tsx +6 -0
- package/tools/TeamCreateTool/constants.ts +1 -0
- package/tools/TeamCreateTool/prompt.ts +113 -0
- package/tools/TeamDeleteTool/TeamDeleteTool.ts +139 -0
- package/tools/TeamDeleteTool/UI.tsx +20 -0
- package/tools/TeamDeleteTool/constants.ts +1 -0
- package/tools/TeamDeleteTool/prompt.ts +16 -0
- package/tools/TodoWriteTool/TodoWriteTool.ts +115 -0
- package/tools/TodoWriteTool/constants.ts +1 -0
- package/tools/TodoWriteTool/prompt.ts +184 -0
- package/tools/ToolSearchTool/ToolSearchTool.ts +471 -0
- package/tools/ToolSearchTool/constants.ts +1 -0
- package/tools/ToolSearchTool/prompt.ts +121 -0
- package/tools/TungstenTool/TungstenTool.ts +4 -0
- package/tools/WebFetchTool/UI.tsx +72 -0
- package/tools/WebFetchTool/WebFetchTool.ts +318 -0
- package/tools/WebFetchTool/preapproved.ts +166 -0
- package/tools/WebFetchTool/prompt.ts +46 -0
- package/tools/WebFetchTool/utils.ts +530 -0
- package/tools/WebSearchTool/UI.tsx +101 -0
- package/tools/WebSearchTool/WebSearchTool.ts +435 -0
- package/tools/WebSearchTool/prompt.ts +34 -0
- package/tools/WorkflowTool/constants.ts +2 -0
- package/tools/XMemIngestTool/XMemIngestTool.ts +140 -0
- package/tools/XMemIngestTool/prompt.ts +13 -0
- package/tools/XMemRetrieveTool/XMemRetrieveTool.ts +177 -0
- package/tools/XMemRetrieveTool/prompt.ts +16 -0
- package/tools/XMemSearchTool/XMemSearchTool.ts +172 -0
- package/tools/XMemSearchTool/prompt.ts +11 -0
- package/tools/shared/gitOperationTracking.ts +277 -0
- package/tools/shared/spawnMultiAgent.ts +1093 -0
- package/tools/testing/TestingPermissionTool.tsx +74 -0
- package/tools/utils.ts +40 -0
- package/utils/CircularBuffer.ts +84 -0
- package/utils/Cursor.ts +1530 -0
- package/utils/QueryGuard.ts +121 -0
- package/utils/Shell.ts +474 -0
- package/utils/ShellCommand.ts +465 -0
- package/utils/abortController.ts +99 -0
- package/utils/activityManager.ts +164 -0
- package/utils/advisor.ts +145 -0
- package/utils/agentContext.ts +178 -0
- package/utils/agentId.ts +99 -0
- package/utils/agentSwarmsEnabled.ts +44 -0
- package/utils/agenticSessionSearch.ts +307 -0
- package/utils/analyzeContext.ts +1382 -0
- package/utils/ansiToPng.ts +334 -0
- package/utils/ansiToSvg.ts +272 -0
- package/utils/api.ts +718 -0
- package/utils/apiPreconnect.ts +71 -0
- package/utils/appleTerminalBackup.ts +124 -0
- package/utils/argumentSubstitution.ts +145 -0
- package/utils/array.ts +13 -0
- package/utils/asciicast.ts +239 -0
- package/utils/attachments.ts +4091 -0
- package/utils/attribution.ts +393 -0
- package/utils/auth.ts +2002 -0
- package/utils/authFileDescriptor.ts +196 -0
- package/utils/authPortable.ts +19 -0
- package/utils/autoModeDenials.ts +26 -0
- package/utils/autoRunIssue.tsx +122 -0
- package/utils/autoUpdater.ts +561 -0
- package/utils/aws.ts +74 -0
- package/utils/awsAuthStatusManager.ts +81 -0
- package/utils/axios.ts +8 -0
- package/utils/background/remote/preconditions.ts +235 -0
- package/utils/background/remote/remoteSession.ts +98 -0
- package/utils/backgroundHousekeeping.ts +94 -0
- package/utils/bash/ParsedCommand.ts +318 -0
- package/utils/bash/ShellSnapshot.ts +582 -0
- package/utils/bash/ast.ts +2679 -0
- package/utils/bash/bashParser.ts +4436 -0
- package/utils/bash/bashPipeCommand.ts +294 -0
- package/utils/bash/commands.ts +1339 -0
- package/utils/bash/heredoc.ts +733 -0
- package/utils/bash/parser.ts +230 -0
- package/utils/bash/prefix.ts +204 -0
- package/utils/bash/registry.ts +53 -0
- package/utils/bash/shellCompletion.ts +259 -0
- package/utils/bash/shellPrefix.ts +28 -0
- package/utils/bash/shellQuote.ts +304 -0
- package/utils/bash/shellQuoting.ts +128 -0
- package/utils/bash/specs/alias.ts +14 -0
- package/utils/bash/specs/index.ts +18 -0
- package/utils/bash/specs/nohup.ts +13 -0
- package/utils/bash/specs/pyright.ts +91 -0
- package/utils/bash/specs/sleep.ts +13 -0
- package/utils/bash/specs/srun.ts +31 -0
- package/utils/bash/specs/time.ts +13 -0
- package/utils/bash/specs/timeout.ts +20 -0
- package/utils/bash/treeSitterAnalysis.ts +506 -0
- package/utils/betas.ts +434 -0
- package/utils/billing.ts +78 -0
- package/utils/binaryCheck.ts +53 -0
- package/utils/browser.ts +68 -0
- package/utils/bufferedWriter.ts +100 -0
- package/utils/bundledMode.ts +22 -0
- package/utils/caCerts.ts +115 -0
- package/utils/caCertsConfig.ts +88 -0
- package/utils/cachePaths.ts +38 -0
- package/utils/classifierApprovals.ts +88 -0
- package/utils/classifierApprovalsHook.ts +17 -0
- package/utils/claudeCodeHints.ts +193 -0
- package/utils/claudeDesktop.ts +152 -0
- package/utils/claudeInChrome/chromeNativeHost.ts +527 -0
- package/utils/claudeInChrome/common.ts +540 -0
- package/utils/claudeInChrome/mcpServer.ts +292 -0
- package/utils/claudeInChrome/prompt.ts +83 -0
- package/utils/claudeInChrome/setup.ts +400 -0
- package/utils/claudeInChrome/setupPortable.ts +233 -0
- package/utils/claudeInChrome/toolRendering.tsx +262 -0
- package/utils/claudemd.ts +1479 -0
- package/utils/cleanup.ts +602 -0
- package/utils/cleanupRegistry.ts +25 -0
- package/utils/cliArgs.ts +60 -0
- package/utils/cliHighlight.ts +54 -0
- package/utils/codeIndexing.ts +206 -0
- package/utils/collapseBackgroundBashNotifications.ts +84 -0
- package/utils/collapseHookSummaries.ts +59 -0
- package/utils/collapseReadSearch.ts +1109 -0
- package/utils/collapseTeammateShutdowns.ts +55 -0
- package/utils/color-diff-mock.ts +27 -0
- package/utils/combinedAbortSignal.ts +47 -0
- package/utils/commandLifecycle.ts +21 -0
- package/utils/commitAttribution.ts +961 -0
- package/utils/completionCache.ts +166 -0
- package/utils/computerUse/appNames.ts +196 -0
- package/utils/computerUse/cleanup.ts +86 -0
- package/utils/computerUse/common.ts +61 -0
- package/utils/computerUse/computerUseLock.ts +215 -0
- package/utils/computerUse/drainRunLoop.ts +79 -0
- package/utils/computerUse/escHotkey.ts +54 -0
- package/utils/computerUse/executor.ts +658 -0
- package/utils/computerUse/gates.ts +72 -0
- package/utils/computerUse/hostAdapter.ts +69 -0
- package/utils/computerUse/inputLoader.ts +30 -0
- package/utils/computerUse/mcpServer.ts +106 -0
- package/utils/computerUse/setup.ts +53 -0
- package/utils/computerUse/swiftLoader.ts +23 -0
- package/utils/computerUse/toolRendering.tsx +125 -0
- package/utils/computerUse/wrapper.tsx +336 -0
- package/utils/concurrentSessions.ts +204 -0
- package/utils/config.ts +1817 -0
- package/utils/configConstants.ts +21 -0
- package/utils/contentArray.ts +51 -0
- package/utils/context.ts +221 -0
- package/utils/contextAnalysis.ts +272 -0
- package/utils/contextSuggestions.ts +235 -0
- package/utils/controlMessageCompat.ts +32 -0
- package/utils/conversationRecovery.ts +597 -0
- package/utils/cron.ts +308 -0
- package/utils/cronJitterConfig.ts +75 -0
- package/utils/cronScheduler.ts +565 -0
- package/utils/cronTasks.ts +458 -0
- package/utils/cronTasksLock.ts +195 -0
- package/utils/crossProjectResume.ts +75 -0
- package/utils/crypto.ts +13 -0
- package/utils/cwd.ts +32 -0
- package/utils/debug.ts +268 -0
- package/utils/debugFilter.ts +157 -0
- package/utils/deepLink/banner.ts +123 -0
- package/utils/deepLink/parseDeepLink.ts +170 -0
- package/utils/deepLink/protocolHandler.ts +136 -0
- package/utils/deepLink/registerProtocol.ts +348 -0
- package/utils/deepLink/terminalLauncher.ts +557 -0
- package/utils/deepLink/terminalPreference.ts +54 -0
- package/utils/desktopDeepLink.ts +236 -0
- package/utils/detectRepository.ts +178 -0
- package/utils/diagLogs.ts +94 -0
- package/utils/diff.ts +177 -0
- package/utils/directMemberMessage.ts +69 -0
- package/utils/displayTags.ts +51 -0
- package/utils/doctorContextWarnings.ts +265 -0
- package/utils/doctorDiagnostic.ts +625 -0
- package/utils/dxt/helpers.ts +88 -0
- package/utils/dxt/zip.ts +226 -0
- package/utils/earlyInput.ts +191 -0
- package/utils/editor.ts +183 -0
- package/utils/effort.ts +329 -0
- package/utils/embeddedTools.ts +29 -0
- package/utils/env.ts +347 -0
- package/utils/envDynamic.ts +151 -0
- package/utils/envUtils.ts +183 -0
- package/utils/envValidation.ts +38 -0
- package/utils/errorLogSink.ts +235 -0
- package/utils/errors.ts +238 -0
- package/utils/exampleCommands.ts +184 -0
- package/utils/execFileNoThrow.ts +150 -0
- package/utils/execFileNoThrowPortable.ts +89 -0
- package/utils/execSyncWrapper.ts +38 -0
- package/utils/exportRenderer.tsx +98 -0
- package/utils/extraUsage.ts +23 -0
- package/utils/fastMode.ts +532 -0
- package/utils/file.ts +584 -0
- package/utils/fileHistory.ts +1115 -0
- package/utils/fileOperationAnalytics.ts +71 -0
- package/utils/filePersistence/filePersistence.ts +287 -0
- package/utils/filePersistence/outputsScanner.ts +126 -0
- package/utils/fileRead.ts +102 -0
- package/utils/fileReadCache.ts +96 -0
- package/utils/fileStateCache.ts +142 -0
- package/utils/findExecutable.ts +17 -0
- package/utils/fingerprint.ts +76 -0
- package/utils/forkedAgent.ts +689 -0
- package/utils/format.ts +308 -0
- package/utils/formatBriefTimestamp.ts +81 -0
- package/utils/fpsTracker.ts +47 -0
- package/utils/frontmatterParser.ts +370 -0
- package/utils/fsOperations.ts +770 -0
- package/utils/fullscreen.ts +202 -0
- package/utils/generatedFiles.ts +136 -0
- package/utils/generators.ts +88 -0
- package/utils/genericProcessUtils.ts +184 -0
- package/utils/getWorktreePaths.ts +70 -0
- package/utils/getWorktreePathsPortable.ts +27 -0
- package/utils/ghPrStatus.ts +106 -0
- package/utils/git/gitConfigParser.ts +277 -0
- package/utils/git/gitFilesystem.ts +699 -0
- package/utils/git/gitignore.ts +99 -0
- package/utils/git.ts +926 -0
- package/utils/gitDiff.ts +532 -0
- package/utils/gitSettings.ts +18 -0
- package/utils/github/ghAuthStatus.ts +29 -0
- package/utils/githubRepoPathMapping.ts +162 -0
- package/utils/glob.ts +130 -0
- package/utils/gracefulShutdown.ts +529 -0
- package/utils/groupToolUses.ts +182 -0
- package/utils/handlePromptSubmit.ts +610 -0
- package/utils/hash.ts +46 -0
- package/utils/headlessProfiler.ts +178 -0
- package/utils/heapDumpService.ts +303 -0
- package/utils/heatmap.ts +198 -0
- package/utils/highlightMatch.tsx +28 -0
- package/utils/hooks/AsyncHookRegistry.ts +309 -0
- package/utils/hooks/apiQueryHookHelper.ts +141 -0
- package/utils/hooks/execAgentHook.ts +339 -0
- package/utils/hooks/execHttpHook.ts +242 -0
- package/utils/hooks/execPromptHook.ts +211 -0
- package/utils/hooks/fileChangedWatcher.ts +191 -0
- package/utils/hooks/hookEvents.ts +192 -0
- package/utils/hooks/hookHelpers.ts +83 -0
- package/utils/hooks/hooksConfigManager.ts +400 -0
- package/utils/hooks/hooksConfigSnapshot.ts +133 -0
- package/utils/hooks/hooksSettings.ts +271 -0
- package/utils/hooks/postSamplingHooks.ts +70 -0
- package/utils/hooks/registerFrontmatterHooks.ts +67 -0
- package/utils/hooks/registerSkillHooks.ts +64 -0
- package/utils/hooks/sessionHooks.ts +447 -0
- package/utils/hooks/skillImprovement.ts +267 -0
- package/utils/hooks/ssrfGuard.ts +294 -0
- package/utils/hooks.ts +5022 -0
- package/utils/horizontalScroll.ts +137 -0
- package/utils/http.ts +136 -0
- package/utils/hyperlink.ts +39 -0
- package/utils/iTermBackup.ts +73 -0
- package/utils/ide.ts +1494 -0
- package/utils/idePathConversion.ts +90 -0
- package/utils/idleTimeout.ts +53 -0
- package/utils/imagePaste.ts +416 -0
- package/utils/imageResizer.ts +880 -0
- package/utils/imageStore.ts +167 -0
- package/utils/imageValidation.ts +104 -0
- package/utils/immediateCommand.ts +15 -0
- package/utils/inProcessTeammateHelpers.ts +102 -0
- package/utils/ink.ts +26 -0
- package/utils/intl.ts +94 -0
- package/utils/jetbrains.ts +191 -0
- package/utils/json.ts +277 -0
- package/utils/jsonRead.ts +16 -0
- package/utils/keyboardShortcuts.ts +14 -0
- package/utils/lazySchema.ts +8 -0
- package/utils/listSessionsImpl.ts +454 -0
- package/utils/localInstaller.ts +162 -0
- package/utils/lockfile.ts +43 -0
- package/utils/log.ts +362 -0
- package/utils/logoV2Utils.ts +347 -0
- package/utils/mailbox.ts +73 -0
- package/utils/managedEnv.ts +199 -0
- package/utils/managedEnvConstants.ts +191 -0
- package/utils/markdown.ts +381 -0
- package/utils/markdownConfigLoader.ts +600 -0
- package/utils/mcp/dateTimeParser.ts +121 -0
- package/utils/mcp/elicitationValidation.ts +336 -0
- package/utils/mcpInstructionsDelta.ts +130 -0
- package/utils/mcpOutputStorage.ts +189 -0
- package/utils/mcpValidation.ts +208 -0
- package/utils/mcpWebSocketTransport.ts +200 -0
- package/utils/memoize.ts +269 -0
- package/utils/memory/types.ts +12 -0
- package/utils/memory/versions.ts +8 -0
- package/utils/memoryFileDetection.ts +289 -0
- package/utils/messagePredicates.ts +8 -0
- package/utils/messageQueueManager.ts +547 -0
- package/utils/messages/mappers.ts +290 -0
- package/utils/messages/systemInit.ts +96 -0
- package/utils/messages.ts +5520 -0
- package/utils/model/agent.ts +157 -0
- package/utils/model/aliases.ts +35 -0
- package/utils/model/antModels.ts +64 -0
- package/utils/model/bedrock.ts +265 -0
- package/utils/model/check1mAccess.ts +72 -0
- package/utils/model/configs.ts +158 -0
- package/utils/model/contextWindowUpgradeCheck.ts +47 -0
- package/utils/model/deprecation.ts +101 -0
- package/utils/model/model.ts +654 -0
- package/utils/model/modelAllowlist.ts +170 -0
- package/utils/model/modelCapabilities.ts +118 -0
- package/utils/model/modelOptions.ts +589 -0
- package/utils/model/modelStrings.ts +170 -0
- package/utils/model/modelSupportOverrides.ts +50 -0
- package/utils/model/providers.ts +42 -0
- package/utils/model/validateModel.ts +159 -0
- package/utils/modelCost.ts +231 -0
- package/utils/modifiers.ts +36 -0
- package/utils/mtls.ts +179 -0
- package/utils/nativeInstaller/download.ts +523 -0
- package/utils/nativeInstaller/index.ts +18 -0
- package/utils/nativeInstaller/installer.ts +1708 -0
- package/utils/nativeInstaller/packageManagers.ts +336 -0
- package/utils/nativeInstaller/pidLock.ts +433 -0
- package/utils/notebook.ts +224 -0
- package/utils/objectGroupBy.ts +18 -0
- package/utils/pasteStore.ts +104 -0
- package/utils/path.ts +155 -0
- package/utils/pdf.ts +300 -0
- package/utils/pdfUtils.ts +70 -0
- package/utils/peerAddress.ts +21 -0
- package/utils/permissions/PermissionMode.ts +141 -0
- package/utils/permissions/PermissionPromptToolResultSchema.ts +127 -0
- package/utils/permissions/PermissionResult.ts +35 -0
- package/utils/permissions/PermissionRule.ts +40 -0
- package/utils/permissions/PermissionUpdate.ts +389 -0
- package/utils/permissions/PermissionUpdateSchema.ts +78 -0
- package/utils/permissions/autoModeState.ts +39 -0
- package/utils/permissions/bashClassifier.ts +61 -0
- package/utils/permissions/bypassPermissionsKillswitch.ts +155 -0
- package/utils/permissions/classifierDecision.ts +98 -0
- package/utils/permissions/classifierShared.ts +39 -0
- package/utils/permissions/dangerousPatterns.ts +80 -0
- package/utils/permissions/denialTracking.ts +45 -0
- package/utils/permissions/filesystem.ts +1777 -0
- package/utils/permissions/getNextPermissionMode.ts +101 -0
- package/utils/permissions/pathValidation.ts +485 -0
- package/utils/permissions/permissionExplainer.ts +250 -0
- package/utils/permissions/permissionRuleParser.ts +198 -0
- package/utils/permissions/permissionSetup.ts +1532 -0
- package/utils/permissions/permissions.ts +1486 -0
- package/utils/permissions/permissionsLoader.ts +296 -0
- package/utils/permissions/shadowedRuleDetection.ts +234 -0
- package/utils/permissions/shellRuleMatching.ts +228 -0
- package/utils/permissions/yoloClassifier.ts +1495 -0
- package/utils/planModeV2.ts +95 -0
- package/utils/plans.ts +397 -0
- package/utils/platform.ts +150 -0
- package/utils/plugins/addDirPluginSettings.ts +71 -0
- package/utils/plugins/cacheUtils.ts +196 -0
- package/utils/plugins/dependencyResolver.ts +305 -0
- package/utils/plugins/fetchTelemetry.ts +135 -0
- package/utils/plugins/gitAvailability.ts +69 -0
- package/utils/plugins/headlessPluginInstall.ts +174 -0
- package/utils/plugins/hintRecommendation.ts +164 -0
- package/utils/plugins/installCounts.ts +292 -0
- package/utils/plugins/installedPluginsManager.ts +1268 -0
- package/utils/plugins/loadPluginAgents.ts +348 -0
- package/utils/plugins/loadPluginCommands.ts +946 -0
- package/utils/plugins/loadPluginHooks.ts +287 -0
- package/utils/plugins/loadPluginOutputStyles.ts +178 -0
- package/utils/plugins/lspPluginIntegration.ts +387 -0
- package/utils/plugins/lspRecommendation.ts +374 -0
- package/utils/plugins/managedPlugins.ts +27 -0
- package/utils/plugins/marketplaceHelpers.ts +592 -0
- package/utils/plugins/marketplaceManager.ts +2643 -0
- package/utils/plugins/mcpPluginIntegration.ts +634 -0
- package/utils/plugins/mcpbHandler.ts +968 -0
- package/utils/plugins/officialMarketplace.ts +25 -0
- package/utils/plugins/officialMarketplaceGcs.ts +216 -0
- package/utils/plugins/officialMarketplaceStartupCheck.ts +439 -0
- package/utils/plugins/orphanedPluginFilter.ts +114 -0
- package/utils/plugins/parseMarketplaceInput.ts +162 -0
- package/utils/plugins/performStartupChecks.tsx +70 -0
- package/utils/plugins/pluginAutoupdate.ts +284 -0
- package/utils/plugins/pluginBlocklist.ts +127 -0
- package/utils/plugins/pluginDirectories.ts +178 -0
- package/utils/plugins/pluginFlagging.ts +208 -0
- package/utils/plugins/pluginIdentifier.ts +123 -0
- package/utils/plugins/pluginInstallationHelpers.ts +595 -0
- package/utils/plugins/pluginLoader.ts +3302 -0
- package/utils/plugins/pluginOptionsStorage.ts +400 -0
- package/utils/plugins/pluginPolicy.ts +20 -0
- package/utils/plugins/pluginStartupCheck.ts +341 -0
- package/utils/plugins/pluginVersioning.ts +157 -0
- package/utils/plugins/reconciler.ts +265 -0
- package/utils/plugins/refresh.ts +215 -0
- package/utils/plugins/schemas.ts +1681 -0
- package/utils/plugins/validatePlugin.ts +903 -0
- package/utils/plugins/walkPluginMarkdown.ts +69 -0
- package/utils/plugins/zipCache.ts +406 -0
- package/utils/plugins/zipCacheAdapters.ts +164 -0
- package/utils/powershell/dangerousCmdlets.ts +185 -0
- package/utils/powershell/parser.ts +1804 -0
- package/utils/powershell/staticPrefix.ts +316 -0
- package/utils/preflightChecks.tsx +151 -0
- package/utils/privacyLevel.ts +55 -0
- package/utils/process.ts +68 -0
- package/utils/processUserInput/processBashCommand.tsx +140 -0
- package/utils/processUserInput/processSlashCommand.tsx +922 -0
- package/utils/processUserInput/processTextPrompt.ts +100 -0
- package/utils/processUserInput/processUserInput.ts +605 -0
- package/utils/profilerBase.ts +46 -0
- package/utils/promptCategory.ts +49 -0
- package/utils/promptEditor.ts +188 -0
- package/utils/promptShellExecution.ts +183 -0
- package/utils/proxy.ts +426 -0
- package/utils/queryContext.ts +179 -0
- package/utils/queryHelpers.ts +552 -0
- package/utils/queryProfiler.ts +301 -0
- package/utils/queueProcessor.ts +95 -0
- package/utils/readEditContext.ts +227 -0
- package/utils/readFileInRange.ts +383 -0
- package/utils/releaseNotes.ts +360 -0
- package/utils/renderOptions.ts +113 -0
- package/utils/ripgrep.ts +679 -0
- package/utils/sandbox/sandbox-adapter.ts +985 -0
- package/utils/sandbox/sandbox-ui-utils.ts +12 -0
- package/utils/sanitization.ts +91 -0
- package/utils/screenshotClipboard.ts +121 -0
- package/utils/sdkEventQueue.ts +134 -0
- package/utils/secureStorage/fallbackStorage.ts +70 -0
- package/utils/secureStorage/index.ts +17 -0
- package/utils/secureStorage/keychainPrefetch.ts +116 -0
- package/utils/secureStorage/macOsKeychainHelpers.ts +111 -0
- package/utils/secureStorage/macOsKeychainStorage.ts +231 -0
- package/utils/secureStorage/plainTextStorage.ts +84 -0
- package/utils/semanticBoolean.ts +29 -0
- package/utils/semanticNumber.ts +36 -0
- package/utils/semver.ts +59 -0
- package/utils/sequential.ts +56 -0
- package/utils/sessionActivity.ts +133 -0
- package/utils/sessionEnvVars.ts +22 -0
- package/utils/sessionEnvironment.ts +166 -0
- package/utils/sessionFileAccessHooks.ts +250 -0
- package/utils/sessionIngressAuth.ts +140 -0
- package/utils/sessionRestore.ts +551 -0
- package/utils/sessionStart.ts +232 -0
- package/utils/sessionState.ts +150 -0
- package/utils/sessionStorage.ts +5105 -0
- package/utils/sessionStoragePortable.ts +793 -0
- package/utils/sessionTitle.ts +129 -0
- package/utils/sessionUrl.ts +64 -0
- package/utils/set.ts +53 -0
- package/utils/settings/allErrors.ts +32 -0
- package/utils/settings/applySettingsChange.ts +92 -0
- package/utils/settings/changeDetector.ts +488 -0
- package/utils/settings/constants.ts +202 -0
- package/utils/settings/internalWrites.ts +37 -0
- package/utils/settings/managedPath.ts +34 -0
- package/utils/settings/mdm/constants.ts +81 -0
- package/utils/settings/mdm/rawRead.ts +130 -0
- package/utils/settings/mdm/settings.ts +316 -0
- package/utils/settings/permissionValidation.ts +262 -0
- package/utils/settings/pluginOnlyPolicy.ts +60 -0
- package/utils/settings/schemaOutput.ts +8 -0
- package/utils/settings/settings.ts +1015 -0
- package/utils/settings/settingsCache.ts +80 -0
- package/utils/settings/toolValidationConfig.ts +103 -0
- package/utils/settings/types.ts +1149 -0
- package/utils/settings/validateEditTool.ts +45 -0
- package/utils/settings/validation.ts +265 -0
- package/utils/settings/validationTips.ts +164 -0
- package/utils/shell/bashProvider.ts +255 -0
- package/utils/shell/outputLimits.ts +14 -0
- package/utils/shell/powershellDetection.ts +107 -0
- package/utils/shell/powershellProvider.ts +123 -0
- package/utils/shell/prefix.ts +367 -0
- package/utils/shell/readOnlyCommandValidation.ts +1893 -0
- package/utils/shell/resolveDefaultShell.ts +14 -0
- package/utils/shell/shellProvider.ts +33 -0
- package/utils/shell/shellToolUtils.ts +22 -0
- package/utils/shell/specPrefix.ts +241 -0
- package/utils/shellConfig.ts +167 -0
- package/utils/sideQuery.ts +222 -0
- package/utils/sideQuestion.ts +155 -0
- package/utils/signal.ts +43 -0
- package/utils/sinks.ts +16 -0
- package/utils/skills/skillChangeDetector.ts +311 -0
- package/utils/slashCommandParsing.ts +60 -0
- package/utils/sleep.ts +84 -0
- package/utils/sliceAnsi.ts +91 -0
- package/utils/slowOperations.ts +286 -0
- package/utils/standaloneAgent.ts +23 -0
- package/utils/startupProfiler.ts +194 -0
- package/utils/staticRender.tsx +116 -0
- package/utils/stats.ts +1061 -0
- package/utils/statsCache.ts +434 -0
- package/utils/status.tsx +362 -0
- package/utils/statusNoticeDefinitions.tsx +198 -0
- package/utils/statusNoticeHelpers.ts +20 -0
- package/utils/stream.ts +76 -0
- package/utils/streamJsonStdoutGuard.ts +123 -0
- package/utils/streamlinedTransform.ts +201 -0
- package/utils/stringUtils.ts +235 -0
- package/utils/subprocessEnv.ts +99 -0
- package/utils/suggestions/commandSuggestions.ts +567 -0
- package/utils/suggestions/directoryCompletion.ts +263 -0
- package/utils/suggestions/shellHistoryCompletion.ts +119 -0
- package/utils/suggestions/skillUsageTracking.ts +55 -0
- package/utils/suggestions/slackChannelSuggestions.ts +209 -0
- package/utils/swarm/It2SetupPrompt.tsx +380 -0
- package/utils/swarm/backends/ITermBackend.ts +370 -0
- package/utils/swarm/backends/InProcessBackend.ts +339 -0
- package/utils/swarm/backends/PaneBackendExecutor.ts +354 -0
- package/utils/swarm/backends/TmuxBackend.ts +764 -0
- package/utils/swarm/backends/detection.ts +128 -0
- package/utils/swarm/backends/it2Setup.ts +245 -0
- package/utils/swarm/backends/registry.ts +464 -0
- package/utils/swarm/backends/teammateModeSnapshot.ts +87 -0
- package/utils/swarm/backends/types.ts +311 -0
- package/utils/swarm/constants.ts +33 -0
- package/utils/swarm/inProcessRunner.ts +1552 -0
- package/utils/swarm/leaderPermissionBridge.ts +54 -0
- package/utils/swarm/permissionSync.ts +928 -0
- package/utils/swarm/reconnection.ts +119 -0
- package/utils/swarm/spawnInProcess.ts +328 -0
- package/utils/swarm/spawnUtils.ts +146 -0
- package/utils/swarm/teamHelpers.ts +683 -0
- package/utils/swarm/teammateInit.ts +129 -0
- package/utils/swarm/teammateLayoutManager.ts +107 -0
- package/utils/swarm/teammateModel.ts +10 -0
- package/utils/swarm/teammatePromptAddendum.ts +18 -0
- package/utils/systemDirectories.ts +74 -0
- package/utils/systemPrompt.ts +123 -0
- package/utils/systemPromptType.ts +14 -0
- package/utils/systemTheme.ts +119 -0
- package/utils/taggedId.ts +54 -0
- package/utils/task/TaskOutput.ts +390 -0
- package/utils/task/diskOutput.ts +451 -0
- package/utils/task/framework.ts +308 -0
- package/utils/task/outputFormatting.ts +38 -0
- package/utils/task/sdkProgress.ts +36 -0
- package/utils/tasks.ts +862 -0
- package/utils/teamDiscovery.ts +81 -0
- package/utils/teamMemoryOps.ts +88 -0
- package/utils/teammate.ts +292 -0
- package/utils/teammateContext.ts +96 -0
- package/utils/teammateMailbox.ts +1183 -0
- package/utils/telemetry/betaSessionTracing.ts +491 -0
- package/utils/telemetry/bigqueryExporter.ts +252 -0
- package/utils/telemetry/events.ts +75 -0
- package/utils/telemetry/instrumentation.ts +825 -0
- package/utils/telemetry/logger.ts +26 -0
- package/utils/telemetry/perfettoTracing.ts +1120 -0
- package/utils/telemetry/pluginTelemetry.ts +289 -0
- package/utils/telemetry/sessionTracing.ts +927 -0
- package/utils/telemetry/skillLoadedEvent.ts +39 -0
- package/utils/telemetryAttributes.ts +71 -0
- package/utils/teleport/api.ts +466 -0
- package/utils/teleport/environmentSelection.ts +77 -0
- package/utils/teleport/environments.ts +120 -0
- package/utils/teleport/gitBundle.ts +292 -0
- package/utils/teleport.tsx +1226 -0
- package/utils/tempfile.ts +31 -0
- package/utils/terminal.ts +131 -0
- package/utils/terminalPanel.ts +191 -0
- package/utils/textHighlighting.ts +166 -0
- package/utils/theme.ts +639 -0
- package/utils/thinking.ts +162 -0
- package/utils/timeouts.ts +39 -0
- package/utils/tmuxSocket.ts +427 -0
- package/utils/todo/types.ts +18 -0
- package/utils/tokenBudget.ts +73 -0
- package/utils/tokens.ts +261 -0
- package/utils/toolErrors.ts +132 -0
- package/utils/toolPool.ts +79 -0
- package/utils/toolResultStorage.ts +1040 -0
- package/utils/toolSchemaCache.ts +26 -0
- package/utils/toolSearch.ts +756 -0
- package/utils/transcriptSearch.ts +202 -0
- package/utils/treeify.ts +170 -0
- package/utils/truncate.ts +179 -0
- package/utils/ultraplan/ccrSession.ts +349 -0
- package/utils/ultraplan/keyword.ts +127 -0
- package/utils/ultraplan/prompt.txt +1 -0
- package/utils/unaryLogging.ts +39 -0
- package/utils/undercover.ts +89 -0
- package/utils/user.ts +194 -0
- package/utils/userAgent.ts +10 -0
- package/utils/userPromptKeywords.ts +27 -0
- package/utils/uuid.ts +27 -0
- package/utils/warningHandler.ts +121 -0
- package/utils/which.ts +82 -0
- package/utils/windowsPaths.ts +173 -0
- package/utils/withResolvers.ts +13 -0
- package/utils/words.ts +800 -0
- package/utils/workloadContext.ts +57 -0
- package/utils/worktree.ts +1519 -0
- package/utils/worktreeModeEnabled.ts +11 -0
- package/utils/xdg.ts +65 -0
- package/utils/xmem.ts +6 -0
- package/utils/xml.ts +16 -0
- package/utils/yaml.ts +15 -0
- package/utils/zodToJsonSchema.ts +23 -0
package/utils/memoize.ts
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { LRUCache } from 'lru-cache'
|
|
2
|
+
import { logError } from './log.js'
|
|
3
|
+
import { jsonStringify } from './slowOperations.js'
|
|
4
|
+
|
|
5
|
+
type CacheEntry<T> = {
|
|
6
|
+
value: T
|
|
7
|
+
timestamp: number
|
|
8
|
+
refreshing: boolean
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
type MemoizedFunction<Args extends unknown[], Result> = {
|
|
12
|
+
(...args: Args): Result
|
|
13
|
+
cache: {
|
|
14
|
+
clear: () => void
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
type LRUMemoizedFunction<Args extends unknown[], Result> = {
|
|
19
|
+
(...args: Args): Result
|
|
20
|
+
cache: {
|
|
21
|
+
clear: () => void
|
|
22
|
+
size: () => number
|
|
23
|
+
delete: (key: string) => boolean
|
|
24
|
+
get: (key: string) => Result | undefined
|
|
25
|
+
has: (key: string) => boolean
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Creates a memoized function that returns cached values while refreshing in parallel.
|
|
31
|
+
* This implements a write-through cache pattern:
|
|
32
|
+
* - If cache is fresh, return immediately
|
|
33
|
+
* - If cache is stale, return the stale value but refresh it in the background
|
|
34
|
+
* - If no cache exists, block and compute the value
|
|
35
|
+
*
|
|
36
|
+
* @param f The function to memoize
|
|
37
|
+
* @param cacheLifetimeMs The lifetime of cached values in milliseconds
|
|
38
|
+
* @returns A memoized version of the function
|
|
39
|
+
*/
|
|
40
|
+
export function memoizeWithTTL<Args extends unknown[], Result>(
|
|
41
|
+
f: (...args: Args) => Result,
|
|
42
|
+
cacheLifetimeMs: number = 5 * 60 * 1000, // Default 5 minutes
|
|
43
|
+
): MemoizedFunction<Args, Result> {
|
|
44
|
+
const cache = new Map<string, CacheEntry<Result>>()
|
|
45
|
+
|
|
46
|
+
const memoized = (...args: Args): Result => {
|
|
47
|
+
const key = jsonStringify(args)
|
|
48
|
+
const cached = cache.get(key)
|
|
49
|
+
const now = Date.now()
|
|
50
|
+
|
|
51
|
+
// Populate cache
|
|
52
|
+
if (!cached) {
|
|
53
|
+
const value = f(...args)
|
|
54
|
+
cache.set(key, {
|
|
55
|
+
value,
|
|
56
|
+
timestamp: now,
|
|
57
|
+
refreshing: false,
|
|
58
|
+
})
|
|
59
|
+
return value
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// If we have a stale cache entry and it's not already refreshing
|
|
63
|
+
if (
|
|
64
|
+
cached &&
|
|
65
|
+
now - cached.timestamp > cacheLifetimeMs &&
|
|
66
|
+
!cached.refreshing
|
|
67
|
+
) {
|
|
68
|
+
// Mark as refreshing to prevent multiple parallel refreshes
|
|
69
|
+
cached.refreshing = true
|
|
70
|
+
|
|
71
|
+
// Schedule async refresh (non-blocking). Both .then and .catch are
|
|
72
|
+
// identity-guarded: a concurrent cache.clear() + cold-miss stores a
|
|
73
|
+
// newer entry while this microtask is queued. .then overwriting with
|
|
74
|
+
// the stale refresh's result is worse than .catch deleting (persists
|
|
75
|
+
// wrong data for full TTL vs. self-correcting on next call).
|
|
76
|
+
Promise.resolve()
|
|
77
|
+
.then(() => {
|
|
78
|
+
const newValue = f(...args)
|
|
79
|
+
if (cache.get(key) === cached) {
|
|
80
|
+
cache.set(key, {
|
|
81
|
+
value: newValue,
|
|
82
|
+
timestamp: Date.now(),
|
|
83
|
+
refreshing: false,
|
|
84
|
+
})
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
.catch(e => {
|
|
88
|
+
logError(e)
|
|
89
|
+
if (cache.get(key) === cached) {
|
|
90
|
+
cache.delete(key)
|
|
91
|
+
}
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
// Return the stale value immediately
|
|
95
|
+
return cached.value
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return cache.get(key)!.value
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Add cache clear method
|
|
102
|
+
memoized.cache = {
|
|
103
|
+
clear: () => cache.clear(),
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return memoized
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Creates a memoized async function that returns cached values while refreshing in parallel.
|
|
111
|
+
* This implements a write-through cache pattern for async functions:
|
|
112
|
+
* - If cache is fresh, return immediately
|
|
113
|
+
* - If cache is stale, return the stale value but refresh it in the background
|
|
114
|
+
* - If no cache exists, block and compute the value
|
|
115
|
+
*
|
|
116
|
+
* @param f The async function to memoize
|
|
117
|
+
* @param cacheLifetimeMs The lifetime of cached values in milliseconds
|
|
118
|
+
* @returns A memoized version of the async function
|
|
119
|
+
*/
|
|
120
|
+
export function memoizeWithTTLAsync<Args extends unknown[], Result>(
|
|
121
|
+
f: (...args: Args) => Promise<Result>,
|
|
122
|
+
cacheLifetimeMs: number = 5 * 60 * 1000, // Default 5 minutes
|
|
123
|
+
): ((...args: Args) => Promise<Result>) & { cache: { clear: () => void } } {
|
|
124
|
+
const cache = new Map<string, CacheEntry<Result>>()
|
|
125
|
+
// In-flight cold-miss dedup. The old memoizeWithTTL (sync) accidentally
|
|
126
|
+
// provided this: it stored the Promise synchronously before the first
|
|
127
|
+
// await, so concurrent callers shared one f() invocation. This async
|
|
128
|
+
// variant awaits before cache.set, so concurrent cold-miss callers would
|
|
129
|
+
// each invoke f() independently without this map. For
|
|
130
|
+
// refreshAndGetAwsCredentials that means N concurrent `aws sso login`
|
|
131
|
+
// spawns. Same pattern as pending401Handlers in auth.ts:1171.
|
|
132
|
+
const inFlight = new Map<string, Promise<Result>>()
|
|
133
|
+
|
|
134
|
+
const memoized = async (...args: Args): Promise<Result> => {
|
|
135
|
+
const key = jsonStringify(args)
|
|
136
|
+
const cached = cache.get(key)
|
|
137
|
+
const now = Date.now()
|
|
138
|
+
|
|
139
|
+
// Populate cache - if this throws, nothing gets cached
|
|
140
|
+
if (!cached) {
|
|
141
|
+
const pending = inFlight.get(key)
|
|
142
|
+
if (pending) return pending
|
|
143
|
+
const promise = f(...args)
|
|
144
|
+
inFlight.set(key, promise)
|
|
145
|
+
try {
|
|
146
|
+
const result = await promise
|
|
147
|
+
// Identity-guard: cache.clear() during the await should discard this
|
|
148
|
+
// result (clear intent is to invalidate). If we're still in-flight,
|
|
149
|
+
// store it. clear() wipes inFlight too, so this check catches that.
|
|
150
|
+
if (inFlight.get(key) === promise) {
|
|
151
|
+
cache.set(key, {
|
|
152
|
+
value: result,
|
|
153
|
+
timestamp: now,
|
|
154
|
+
refreshing: false,
|
|
155
|
+
})
|
|
156
|
+
}
|
|
157
|
+
return result
|
|
158
|
+
} finally {
|
|
159
|
+
if (inFlight.get(key) === promise) {
|
|
160
|
+
inFlight.delete(key)
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// If we have a stale cache entry and it's not already refreshing
|
|
166
|
+
if (
|
|
167
|
+
cached &&
|
|
168
|
+
now - cached.timestamp > cacheLifetimeMs &&
|
|
169
|
+
!cached.refreshing
|
|
170
|
+
) {
|
|
171
|
+
// Mark as refreshing to prevent multiple parallel refreshes
|
|
172
|
+
cached.refreshing = true
|
|
173
|
+
|
|
174
|
+
// Schedule async refresh (non-blocking). Both .then and .catch are
|
|
175
|
+
// identity-guarded against a concurrent cache.clear() + cold-miss
|
|
176
|
+
// storing a newer entry while this refresh is in flight. .then
|
|
177
|
+
// overwriting with the stale refresh's result is worse than .catch
|
|
178
|
+
// deleting - wrong data persists for full TTL (e.g. credentials from
|
|
179
|
+
// the old awsAuthRefresh command after a settings change).
|
|
180
|
+
const staleEntry = cached
|
|
181
|
+
f(...args)
|
|
182
|
+
.then(newValue => {
|
|
183
|
+
if (cache.get(key) === staleEntry) {
|
|
184
|
+
cache.set(key, {
|
|
185
|
+
value: newValue,
|
|
186
|
+
timestamp: Date.now(),
|
|
187
|
+
refreshing: false,
|
|
188
|
+
})
|
|
189
|
+
}
|
|
190
|
+
})
|
|
191
|
+
.catch(e => {
|
|
192
|
+
logError(e)
|
|
193
|
+
if (cache.get(key) === staleEntry) {
|
|
194
|
+
cache.delete(key)
|
|
195
|
+
}
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
// Return the stale value immediately
|
|
199
|
+
return cached.value
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return cache.get(key)!.value
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Add cache clear method. Also clear inFlight: clear() during a cold-miss
|
|
206
|
+
// await should not let the stale in-flight promise be returned to the next
|
|
207
|
+
// caller (defeats the purpose of clear). The try/finally above
|
|
208
|
+
// identity-guards inFlight.delete so the stale promise doesn't delete a
|
|
209
|
+
// fresh one if clear+cold-miss happens before the finally fires.
|
|
210
|
+
memoized.cache = {
|
|
211
|
+
clear: () => {
|
|
212
|
+
cache.clear()
|
|
213
|
+
inFlight.clear()
|
|
214
|
+
},
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return memoized as ((...args: Args) => Promise<Result>) & {
|
|
218
|
+
cache: { clear: () => void }
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Creates a memoized function with LRU (Least Recently Used) eviction policy.
|
|
224
|
+
* This prevents unbounded memory growth by evicting the least recently used entries
|
|
225
|
+
* when the cache reaches its maximum size.
|
|
226
|
+
*
|
|
227
|
+
* Note: Cache size for memoized message processing functions
|
|
228
|
+
* Chosen to prevent unbounded memory growth (was 300MB+ with lodash memoize)
|
|
229
|
+
* while maintaining good cache hit rates for typical conversations.
|
|
230
|
+
*
|
|
231
|
+
* @param f The function to memoize
|
|
232
|
+
* @returns A memoized version of the function with cache management methods
|
|
233
|
+
*/
|
|
234
|
+
export function memoizeWithLRU<
|
|
235
|
+
Args extends unknown[],
|
|
236
|
+
Result extends NonNullable<unknown>,
|
|
237
|
+
>(
|
|
238
|
+
f: (...args: Args) => Result,
|
|
239
|
+
cacheFn: (...args: Args) => string,
|
|
240
|
+
maxCacheSize: number = 100,
|
|
241
|
+
): LRUMemoizedFunction<Args, Result> {
|
|
242
|
+
const cache = new LRUCache<string, Result>({
|
|
243
|
+
max: maxCacheSize,
|
|
244
|
+
})
|
|
245
|
+
|
|
246
|
+
const memoized = (...args: Args): Result => {
|
|
247
|
+
const key = cacheFn(...args)
|
|
248
|
+
const cached = cache.get(key)
|
|
249
|
+
if (cached !== undefined) {
|
|
250
|
+
return cached
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
const result = f(...args)
|
|
254
|
+
cache.set(key, result)
|
|
255
|
+
return result
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Add cache management methods
|
|
259
|
+
memoized.cache = {
|
|
260
|
+
clear: () => cache.clear(),
|
|
261
|
+
size: () => cache.size,
|
|
262
|
+
delete: (key: string) => cache.delete(key),
|
|
263
|
+
// peek() avoids updating recency — we only want to observe, not promote
|
|
264
|
+
get: (key: string) => cache.peek(key),
|
|
265
|
+
has: (key: string) => cache.has(key),
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return memoized
|
|
269
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { feature } from 'bun:bundle'
|
|
2
|
+
|
|
3
|
+
export const MEMORY_TYPE_VALUES = [
|
|
4
|
+
'User',
|
|
5
|
+
'Project',
|
|
6
|
+
'Local',
|
|
7
|
+
'Managed',
|
|
8
|
+
'AutoMem',
|
|
9
|
+
...(feature('TEAMMEM') ? (['TeamMem'] as const) : []),
|
|
10
|
+
] as const
|
|
11
|
+
|
|
12
|
+
export type MemoryType = (typeof MEMORY_TYPE_VALUES)[number]
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { findGitRoot } from '../git.js'
|
|
2
|
+
|
|
3
|
+
// Note: This is used to check git repo status synchronously
|
|
4
|
+
// Uses findGitRoot which walks the filesystem (no subprocess)
|
|
5
|
+
// Prefer `dirIsInGitRepo()` for async checks
|
|
6
|
+
export function projectIsInGitRepo(cwd: string): boolean {
|
|
7
|
+
return findGitRoot(cwd) !== null
|
|
8
|
+
}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { feature } from 'bun:bundle'
|
|
2
|
+
import { normalize, posix, win32 } from 'path'
|
|
3
|
+
import {
|
|
4
|
+
getAutoMemPath,
|
|
5
|
+
getMemoryBaseDir,
|
|
6
|
+
isAutoMemoryEnabled,
|
|
7
|
+
isAutoMemPath,
|
|
8
|
+
} from '../memdir/paths.js'
|
|
9
|
+
import { isAgentMemoryPath } from '../tools/AgentTool/agentMemory.js'
|
|
10
|
+
import { getClaudeConfigHomeDir } from './envUtils.js'
|
|
11
|
+
import {
|
|
12
|
+
posixPathToWindowsPath,
|
|
13
|
+
windowsPathToPosixPath,
|
|
14
|
+
} from './windowsPaths.js'
|
|
15
|
+
|
|
16
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
17
|
+
const teamMemPaths = feature('TEAMMEM')
|
|
18
|
+
? (require('../memdir/teamMemPaths.js') as typeof import('../memdir/teamMemPaths.js'))
|
|
19
|
+
: null
|
|
20
|
+
/* eslint-enable @typescript-eslint/no-require-imports */
|
|
21
|
+
|
|
22
|
+
const IS_WINDOWS = process.platform === 'win32'
|
|
23
|
+
|
|
24
|
+
// Normalize path separators to posix (/). Does NOT translate drive encoding.
|
|
25
|
+
function toPosix(p: string): string {
|
|
26
|
+
return p.split(win32.sep).join(posix.sep)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Convert a path to a stable string-comparable form: forward-slash separated,
|
|
30
|
+
// and on Windows, lowercased (Windows filesystems are case-insensitive).
|
|
31
|
+
function toComparable(p: string): string {
|
|
32
|
+
const posixForm = toPosix(p)
|
|
33
|
+
return IS_WINDOWS ? posixForm.toLowerCase() : posixForm
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Detects if a file path is a session-related file under ~/.claude.
|
|
38
|
+
* Returns the type of session file or null if not a session file.
|
|
39
|
+
*/
|
|
40
|
+
export function detectSessionFileType(
|
|
41
|
+
filePath: string,
|
|
42
|
+
): 'session_memory' | 'session_transcript' | null {
|
|
43
|
+
const configDir = getClaudeConfigHomeDir()
|
|
44
|
+
// Compare in forward-slash form; on Windows also case-fold. The caller
|
|
45
|
+
// (isShellCommandTargetingMemory) converts MinGW /c/... → native before
|
|
46
|
+
// reaching here, so we only need separator + case normalization.
|
|
47
|
+
const normalized = toComparable(filePath)
|
|
48
|
+
const configDirCmp = toComparable(configDir)
|
|
49
|
+
if (!normalized.startsWith(configDirCmp)) {
|
|
50
|
+
return null
|
|
51
|
+
}
|
|
52
|
+
if (normalized.includes('/session-memory/') && normalized.endsWith('.md')) {
|
|
53
|
+
return 'session_memory'
|
|
54
|
+
}
|
|
55
|
+
if (normalized.includes('/projects/') && normalized.endsWith('.jsonl')) {
|
|
56
|
+
return 'session_transcript'
|
|
57
|
+
}
|
|
58
|
+
return null
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Checks if a glob/pattern string indicates session file access intent.
|
|
63
|
+
* Used for Grep/Glob tools where we check patterns, not actual file paths.
|
|
64
|
+
*/
|
|
65
|
+
export function detectSessionPatternType(
|
|
66
|
+
pattern: string,
|
|
67
|
+
): 'session_memory' | 'session_transcript' | null {
|
|
68
|
+
const normalized = pattern.split(win32.sep).join(posix.sep)
|
|
69
|
+
if (
|
|
70
|
+
normalized.includes('session-memory') &&
|
|
71
|
+
(normalized.includes('.md') || normalized.endsWith('*'))
|
|
72
|
+
) {
|
|
73
|
+
return 'session_memory'
|
|
74
|
+
}
|
|
75
|
+
if (
|
|
76
|
+
normalized.includes('.jsonl') ||
|
|
77
|
+
(normalized.includes('projects') && normalized.includes('*.jsonl'))
|
|
78
|
+
) {
|
|
79
|
+
return 'session_transcript'
|
|
80
|
+
}
|
|
81
|
+
return null
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Check if a file path is within the memdir directory.
|
|
86
|
+
*/
|
|
87
|
+
export function isAutoMemFile(filePath: string): boolean {
|
|
88
|
+
if (isAutoMemoryEnabled()) {
|
|
89
|
+
return isAutoMemPath(filePath)
|
|
90
|
+
}
|
|
91
|
+
return false
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export type MemoryScope = 'personal' | 'team'
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Determine which memory store (if any) a path belongs to.
|
|
98
|
+
*
|
|
99
|
+
* Team dir is a subdirectory of memdir (getTeamMemPath = join(getAutoMemPath, 'team')),
|
|
100
|
+
* so a team path matches both isTeamMemFile and isAutoMemFile. Check team first.
|
|
101
|
+
*
|
|
102
|
+
* Use this for scope-keyed telemetry where a single event name distinguishes
|
|
103
|
+
* by scope field — the existing tengu_memdir_* / tengu_team_mem_* event-name
|
|
104
|
+
* hierarchy handles the overlap differently (team writes intentionally fire both).
|
|
105
|
+
*/
|
|
106
|
+
export function memoryScopeForPath(filePath: string): MemoryScope | null {
|
|
107
|
+
if (feature('TEAMMEM') && teamMemPaths!.isTeamMemFile(filePath)) {
|
|
108
|
+
return 'team'
|
|
109
|
+
}
|
|
110
|
+
if (isAutoMemFile(filePath)) {
|
|
111
|
+
return 'personal'
|
|
112
|
+
}
|
|
113
|
+
return null
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Check if a file path is within an agent memory directory.
|
|
118
|
+
*/
|
|
119
|
+
function isAgentMemFile(filePath: string): boolean {
|
|
120
|
+
if (isAutoMemoryEnabled()) {
|
|
121
|
+
return isAgentMemoryPath(filePath)
|
|
122
|
+
}
|
|
123
|
+
return false
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Check if a file is a Claude-managed memory file (NOT user-managed instruction files).
|
|
128
|
+
* Includes: auto-memory (memdir), agent memory, session memory/transcripts.
|
|
129
|
+
* Excludes: CLAUDE.md, CLAUDE.local.md, .claude/rules/*.md (user-managed).
|
|
130
|
+
*
|
|
131
|
+
* Use this for collapse/badge logic where user-managed files should show full diffs.
|
|
132
|
+
*/
|
|
133
|
+
export function isAutoManagedMemoryFile(filePath: string): boolean {
|
|
134
|
+
if (isAutoMemFile(filePath)) {
|
|
135
|
+
return true
|
|
136
|
+
}
|
|
137
|
+
if (feature('TEAMMEM') && teamMemPaths!.isTeamMemFile(filePath)) {
|
|
138
|
+
return true
|
|
139
|
+
}
|
|
140
|
+
if (detectSessionFileType(filePath) !== null) {
|
|
141
|
+
return true
|
|
142
|
+
}
|
|
143
|
+
if (isAgentMemFile(filePath)) {
|
|
144
|
+
return true
|
|
145
|
+
}
|
|
146
|
+
return false
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Check if a directory path is a memory-related directory.
|
|
150
|
+
// Used by Grep/Glob which take a directory `path` rather than a specific file.
|
|
151
|
+
// Checks both configDir and memoryBaseDir to handle custom memory dir paths.
|
|
152
|
+
export function isMemoryDirectory(dirPath: string): boolean {
|
|
153
|
+
// SECURITY: Normalize to prevent path traversal bypasses via .. segments.
|
|
154
|
+
// On Windows this produces backslashes; toComparable flips them back for
|
|
155
|
+
// string matching. MinGW /c/... paths are converted to native before
|
|
156
|
+
// reaching here (extraction-time in isShellCommandTargetingMemory), so
|
|
157
|
+
// normalize() never sees them.
|
|
158
|
+
const normalizedPath = normalize(dirPath)
|
|
159
|
+
const normalizedCmp = toComparable(normalizedPath)
|
|
160
|
+
// Agent memory directories can be under cwd (project scope), configDir, or memoryBaseDir
|
|
161
|
+
if (
|
|
162
|
+
isAutoMemoryEnabled() &&
|
|
163
|
+
(normalizedCmp.includes('/agent-memory/') ||
|
|
164
|
+
normalizedCmp.includes('/agent-memory-local/'))
|
|
165
|
+
) {
|
|
166
|
+
return true
|
|
167
|
+
}
|
|
168
|
+
// Team memory directories live under <autoMemPath>/team/
|
|
169
|
+
if (
|
|
170
|
+
feature('TEAMMEM') &&
|
|
171
|
+
teamMemPaths!.isTeamMemoryEnabled() &&
|
|
172
|
+
teamMemPaths!.isTeamMemPath(normalizedPath)
|
|
173
|
+
) {
|
|
174
|
+
return true
|
|
175
|
+
}
|
|
176
|
+
// Check the auto-memory path override (CLAUDE_COWORK_MEMORY_PATH_OVERRIDE)
|
|
177
|
+
if (isAutoMemoryEnabled()) {
|
|
178
|
+
const autoMemPath = getAutoMemPath()
|
|
179
|
+
const autoMemDirCmp = toComparable(autoMemPath.replace(/[/\\]+$/, ''))
|
|
180
|
+
const autoMemPathCmp = toComparable(autoMemPath)
|
|
181
|
+
if (
|
|
182
|
+
normalizedCmp === autoMemDirCmp ||
|
|
183
|
+
normalizedCmp.startsWith(autoMemPathCmp)
|
|
184
|
+
) {
|
|
185
|
+
return true
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const configDirCmp = toComparable(getClaudeConfigHomeDir())
|
|
190
|
+
const memoryBaseCmp = toComparable(getMemoryBaseDir())
|
|
191
|
+
const underConfig = normalizedCmp.startsWith(configDirCmp)
|
|
192
|
+
const underMemoryBase = normalizedCmp.startsWith(memoryBaseCmp)
|
|
193
|
+
|
|
194
|
+
if (!underConfig && !underMemoryBase) {
|
|
195
|
+
return false
|
|
196
|
+
}
|
|
197
|
+
if (normalizedCmp.includes('/session-memory/')) {
|
|
198
|
+
return true
|
|
199
|
+
}
|
|
200
|
+
if (underConfig && normalizedCmp.includes('/projects/')) {
|
|
201
|
+
return true
|
|
202
|
+
}
|
|
203
|
+
if (isAutoMemoryEnabled() && normalizedCmp.includes('/memory/')) {
|
|
204
|
+
return true
|
|
205
|
+
}
|
|
206
|
+
return false
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Check if a shell command string (Bash or PowerShell) targets memory files
|
|
211
|
+
* by extracting absolute path tokens and checking them against memory
|
|
212
|
+
* detection functions. Used for Bash/PowerShell grep/search commands in the
|
|
213
|
+
* collapse logic.
|
|
214
|
+
*/
|
|
215
|
+
export function isShellCommandTargetingMemory(command: string): boolean {
|
|
216
|
+
const configDir = getClaudeConfigHomeDir()
|
|
217
|
+
const memoryBase = getMemoryBaseDir()
|
|
218
|
+
const autoMemDir = isAutoMemoryEnabled()
|
|
219
|
+
? getAutoMemPath().replace(/[/\\]+$/, '')
|
|
220
|
+
: ''
|
|
221
|
+
|
|
222
|
+
// Quick check: does the command mention the config, memory base, or
|
|
223
|
+
// auto-mem directory? Compare in forward-slash form (PowerShell on Windows
|
|
224
|
+
// may use either separator while configDir uses the platform-native one).
|
|
225
|
+
// On Windows also check the MinGW form (/c/...) since BashTool runs under
|
|
226
|
+
// Git Bash which emits that encoding. On Linux/Mac, configDir is already
|
|
227
|
+
// posix so only one form to check — and crucially, windowsPathToPosixPath
|
|
228
|
+
// is NOT called, so Linux paths like /m/foo aren't misinterpreted as MinGW.
|
|
229
|
+
const commandCmp = toComparable(command)
|
|
230
|
+
const dirs = [configDir, memoryBase, autoMemDir].filter(Boolean)
|
|
231
|
+
const matchesAnyDir = dirs.some(d => {
|
|
232
|
+
if (commandCmp.includes(toComparable(d))) return true
|
|
233
|
+
if (IS_WINDOWS) {
|
|
234
|
+
// BashTool on Windows (Git Bash) emits /c/Users/... — check MinGW form too
|
|
235
|
+
return commandCmp.includes(windowsPathToPosixPath(d).toLowerCase())
|
|
236
|
+
}
|
|
237
|
+
return false
|
|
238
|
+
})
|
|
239
|
+
if (!matchesAnyDir) {
|
|
240
|
+
return false
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Extract absolute path-like tokens. Matches Unix absolute paths (/foo/bar),
|
|
244
|
+
// Windows drive-letter paths (C:\foo, C:/foo), and MinGW paths (/c/foo —
|
|
245
|
+
// they're /-prefixed so the regex already captures them). Bare backslash
|
|
246
|
+
// tokens (\foo) are intentionally excluded — they appear in regex/grep
|
|
247
|
+
// patterns and would cause false-positive memory classification after
|
|
248
|
+
// normalization flips backslashes to forward slashes.
|
|
249
|
+
const matches = command.match(/(?:[A-Za-z]:[/\\]|\/)[^\s'"]+/g)
|
|
250
|
+
if (!matches) {
|
|
251
|
+
return false
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
for (const match of matches) {
|
|
255
|
+
// Strip trailing shell metacharacters that could be adjacent to a path
|
|
256
|
+
const cleanPath = match.replace(/[,;|&>]+$/, '')
|
|
257
|
+
// On Windows, convert MinGW /c/... → native C:\... at this single
|
|
258
|
+
// point. Downstream predicates (isAutoManagedMemoryFile, isMemoryDirectory,
|
|
259
|
+
// isAutoMemPath, isAgentMemoryPath) then receive native paths and only
|
|
260
|
+
// need toComparable() for matching. On other platforms, paths are already
|
|
261
|
+
// native — no conversion, so /m/foo etc. pass through unmodified.
|
|
262
|
+
const nativePath = IS_WINDOWS
|
|
263
|
+
? posixPathToWindowsPath(cleanPath)
|
|
264
|
+
: cleanPath
|
|
265
|
+
if (isAutoManagedMemoryFile(nativePath) || isMemoryDirectory(nativePath)) {
|
|
266
|
+
return true
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return false
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// Check if a glob/pattern targets auto-managed memory files only.
|
|
274
|
+
// Excludes CLAUDE.md, CLAUDE.local.md, .claude/rules/ (user-managed).
|
|
275
|
+
// Used for collapse badge logic where user-managed files should not be
|
|
276
|
+
// counted as "memory" operations.
|
|
277
|
+
export function isAutoManagedMemoryPattern(pattern: string): boolean {
|
|
278
|
+
if (detectSessionPatternType(pattern) !== null) {
|
|
279
|
+
return true
|
|
280
|
+
}
|
|
281
|
+
if (
|
|
282
|
+
isAutoMemoryEnabled() &&
|
|
283
|
+
(pattern.replace(/\\/g, '/').includes('agent-memory/') ||
|
|
284
|
+
pattern.replace(/\\/g, '/').includes('agent-memory-local/'))
|
|
285
|
+
) {
|
|
286
|
+
return true
|
|
287
|
+
}
|
|
288
|
+
return false
|
|
289
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Message, UserMessage } from '../types/message.js'
|
|
2
|
+
|
|
3
|
+
// tool_result messages share type:'user' with human turns; the discriminant
|
|
4
|
+
// is the optional toolUseResult field. Four PRs (#23977, #24016, #24022,
|
|
5
|
+
// #24025) independently fixed miscounts from checking type==='user' alone.
|
|
6
|
+
export function isHumanTurn(m: Message): m is UserMessage {
|
|
7
|
+
return m.type === 'user' && !m.isMeta && m.toolUseResult === undefined
|
|
8
|
+
}
|