@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,592 @@
|
|
|
1
|
+
import { relative } from 'path'
|
|
2
|
+
import type {
|
|
3
|
+
CallHierarchyIncomingCall,
|
|
4
|
+
CallHierarchyItem,
|
|
5
|
+
CallHierarchyOutgoingCall,
|
|
6
|
+
DocumentSymbol,
|
|
7
|
+
Hover,
|
|
8
|
+
Location,
|
|
9
|
+
LocationLink,
|
|
10
|
+
MarkedString,
|
|
11
|
+
MarkupContent,
|
|
12
|
+
SymbolInformation,
|
|
13
|
+
SymbolKind,
|
|
14
|
+
} from 'vscode-languageserver-types'
|
|
15
|
+
import { logForDebugging } from '../../utils/debug.js'
|
|
16
|
+
import { errorMessage } from '../../utils/errors.js'
|
|
17
|
+
import { plural } from '../../utils/stringUtils.js'
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Formats a URI by converting it to a relative path if possible.
|
|
21
|
+
* Handles URI decoding and gracefully falls back to un-decoded path if malformed.
|
|
22
|
+
* Only uses relative paths when shorter and not starting with ../../
|
|
23
|
+
*/
|
|
24
|
+
function formatUri(uri: string | undefined, cwd?: string): string {
|
|
25
|
+
// Handle undefined/null URIs - this indicates malformed LSP data
|
|
26
|
+
if (!uri) {
|
|
27
|
+
// NOTE: This should ideally be caught earlier with proper error logging
|
|
28
|
+
// This is a defensive backstop in the formatting layer
|
|
29
|
+
logForDebugging(
|
|
30
|
+
'formatUri called with undefined URI - indicates malformed LSP server response',
|
|
31
|
+
{ level: 'warn' },
|
|
32
|
+
)
|
|
33
|
+
return '<unknown location>'
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Remove file:// protocol if present
|
|
37
|
+
// On Windows, file:///C:/path becomes /C:/path after replacing file://
|
|
38
|
+
// We need to strip the leading slash for Windows drive-letter paths
|
|
39
|
+
let filePath = uri.replace(/^file:\/\//, '')
|
|
40
|
+
if (/^\/[A-Za-z]:/.test(filePath)) {
|
|
41
|
+
filePath = filePath.slice(1)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Decode URI encoding - handle malformed URIs gracefully
|
|
45
|
+
try {
|
|
46
|
+
filePath = decodeURIComponent(filePath)
|
|
47
|
+
} catch (error) {
|
|
48
|
+
// Log for debugging but continue with un-decoded path
|
|
49
|
+
const errorMsg = errorMessage(error)
|
|
50
|
+
logForDebugging(
|
|
51
|
+
`Failed to decode LSP URI '${uri}': ${errorMsg}. Using un-decoded path: ${filePath}`,
|
|
52
|
+
{ level: 'warn' },
|
|
53
|
+
)
|
|
54
|
+
// filePath already contains the un-decoded path, which is still usable
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Convert to relative path if cwd is provided
|
|
58
|
+
if (cwd) {
|
|
59
|
+
// Normalize separators to forward slashes for consistent display output
|
|
60
|
+
const relativePath = relative(cwd, filePath).replaceAll('\\', '/')
|
|
61
|
+
// Only use relative path if it's shorter and doesn't start with ../..
|
|
62
|
+
if (
|
|
63
|
+
relativePath.length < filePath.length &&
|
|
64
|
+
!relativePath.startsWith('../../')
|
|
65
|
+
) {
|
|
66
|
+
return relativePath
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Normalize separators to forward slashes for consistent display output
|
|
71
|
+
return filePath.replaceAll('\\', '/')
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Groups items by their file URI.
|
|
76
|
+
* Generic helper that works with both Location[] and SymbolInformation[]
|
|
77
|
+
*/
|
|
78
|
+
function groupByFile<T extends { uri: string } | { location: { uri: string } }>(
|
|
79
|
+
items: T[],
|
|
80
|
+
cwd?: string,
|
|
81
|
+
): Map<string, T[]> {
|
|
82
|
+
const byFile = new Map<string, T[]>()
|
|
83
|
+
for (const item of items) {
|
|
84
|
+
const uri = 'uri' in item ? item.uri : item.location.uri
|
|
85
|
+
const filePath = formatUri(uri, cwd)
|
|
86
|
+
const existingItems = byFile.get(filePath)
|
|
87
|
+
if (existingItems) {
|
|
88
|
+
existingItems.push(item)
|
|
89
|
+
} else {
|
|
90
|
+
byFile.set(filePath, [item])
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return byFile
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Formats a Location with file path and line/character position
|
|
98
|
+
*/
|
|
99
|
+
function formatLocation(location: Location, cwd?: string): string {
|
|
100
|
+
const filePath = formatUri(location.uri, cwd)
|
|
101
|
+
const line = location.range.start.line + 1 // Convert to 1-based
|
|
102
|
+
const character = location.range.start.character + 1 // Convert to 1-based
|
|
103
|
+
return `${filePath}:${line}:${character}`
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Converts LocationLink to Location format for consistent handling
|
|
108
|
+
*/
|
|
109
|
+
function locationLinkToLocation(link: LocationLink): Location {
|
|
110
|
+
return {
|
|
111
|
+
uri: link.targetUri,
|
|
112
|
+
range: link.targetSelectionRange || link.targetRange,
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Checks if an object is a LocationLink (has targetUri) vs Location (has uri)
|
|
118
|
+
*/
|
|
119
|
+
function isLocationLink(item: Location | LocationLink): item is LocationLink {
|
|
120
|
+
return 'targetUri' in item
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Formats goToDefinition result
|
|
125
|
+
* Can return Location, LocationLink, or arrays of either
|
|
126
|
+
*/
|
|
127
|
+
export function formatGoToDefinitionResult(
|
|
128
|
+
result: Location | Location[] | LocationLink | LocationLink[] | null,
|
|
129
|
+
cwd?: string,
|
|
130
|
+
): string {
|
|
131
|
+
if (!result) {
|
|
132
|
+
return 'No definition found. This may occur if the cursor is not on a symbol, or if the definition is in an external library not indexed by the LSP server.'
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (Array.isArray(result)) {
|
|
136
|
+
// Convert LocationLinks to Locations for uniform handling
|
|
137
|
+
const locations: Location[] = result.map(item =>
|
|
138
|
+
isLocationLink(item) ? locationLinkToLocation(item) : item,
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
// Log and filter out any locations with undefined uris
|
|
142
|
+
const invalidLocations = locations.filter(loc => !loc || !loc.uri)
|
|
143
|
+
if (invalidLocations.length > 0) {
|
|
144
|
+
logForDebugging(
|
|
145
|
+
`formatGoToDefinitionResult: Filtering out ${invalidLocations.length} invalid location(s) - this should have been caught earlier`,
|
|
146
|
+
{ level: 'warn' },
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const validLocations = locations.filter(loc => loc && loc.uri)
|
|
151
|
+
|
|
152
|
+
if (validLocations.length === 0) {
|
|
153
|
+
return 'No definition found. This may occur if the cursor is not on a symbol, or if the definition is in an external library not indexed by the LSP server.'
|
|
154
|
+
}
|
|
155
|
+
if (validLocations.length === 1) {
|
|
156
|
+
return `Defined in ${formatLocation(validLocations[0]!, cwd)}`
|
|
157
|
+
}
|
|
158
|
+
const locationList = validLocations
|
|
159
|
+
.map(loc => ` ${formatLocation(loc, cwd)}`)
|
|
160
|
+
.join('\n')
|
|
161
|
+
return `Found ${validLocations.length} definitions:\n${locationList}`
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Single result - convert LocationLink if needed
|
|
165
|
+
const location = isLocationLink(result)
|
|
166
|
+
? locationLinkToLocation(result)
|
|
167
|
+
: result
|
|
168
|
+
return `Defined in ${formatLocation(location, cwd)}`
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Formats findReferences result
|
|
173
|
+
*/
|
|
174
|
+
export function formatFindReferencesResult(
|
|
175
|
+
result: Location[] | null,
|
|
176
|
+
cwd?: string,
|
|
177
|
+
): string {
|
|
178
|
+
if (!result || result.length === 0) {
|
|
179
|
+
return 'No references found. This may occur if the symbol has no usages, or if the LSP server has not fully indexed the workspace.'
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Log and filter out any locations with undefined uris
|
|
183
|
+
const invalidLocations = result.filter(loc => !loc || !loc.uri)
|
|
184
|
+
if (invalidLocations.length > 0) {
|
|
185
|
+
logForDebugging(
|
|
186
|
+
`formatFindReferencesResult: Filtering out ${invalidLocations.length} invalid location(s) - this should have been caught earlier`,
|
|
187
|
+
{ level: 'warn' },
|
|
188
|
+
)
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const validLocations = result.filter(loc => loc && loc.uri)
|
|
192
|
+
|
|
193
|
+
if (validLocations.length === 0) {
|
|
194
|
+
return 'No references found. This may occur if the symbol has no usages, or if the LSP server has not fully indexed the workspace.'
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (validLocations.length === 1) {
|
|
198
|
+
return `Found 1 reference:\n ${formatLocation(validLocations[0]!, cwd)}`
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Group references by file
|
|
202
|
+
const byFile = groupByFile(validLocations, cwd)
|
|
203
|
+
|
|
204
|
+
const lines: string[] = [
|
|
205
|
+
`Found ${validLocations.length} references across ${byFile.size} files:`,
|
|
206
|
+
]
|
|
207
|
+
|
|
208
|
+
for (const [filePath, locations] of byFile) {
|
|
209
|
+
lines.push(`\n${filePath}:`)
|
|
210
|
+
for (const loc of locations) {
|
|
211
|
+
const line = loc.range.start.line + 1
|
|
212
|
+
const character = loc.range.start.character + 1
|
|
213
|
+
lines.push(` Line ${line}:${character}`)
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return lines.join('\n')
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Extracts text content from MarkupContent or MarkedString
|
|
222
|
+
*/
|
|
223
|
+
function extractMarkupText(
|
|
224
|
+
contents: MarkupContent | MarkedString | MarkedString[],
|
|
225
|
+
): string {
|
|
226
|
+
if (Array.isArray(contents)) {
|
|
227
|
+
return contents
|
|
228
|
+
.map(item => {
|
|
229
|
+
if (typeof item === 'string') {
|
|
230
|
+
return item
|
|
231
|
+
}
|
|
232
|
+
return item.value
|
|
233
|
+
})
|
|
234
|
+
.join('\n\n')
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
if (typeof contents === 'string') {
|
|
238
|
+
return contents
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
if ('kind' in contents) {
|
|
242
|
+
// MarkupContent
|
|
243
|
+
return contents.value
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// MarkedString object
|
|
247
|
+
return contents.value
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Formats hover result
|
|
252
|
+
*/
|
|
253
|
+
export function formatHoverResult(result: Hover | null, _cwd?: string): string {
|
|
254
|
+
if (!result) {
|
|
255
|
+
return 'No hover information available. This may occur if the cursor is not on a symbol, or if the LSP server has not fully indexed the file.'
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
const content = extractMarkupText(result.contents)
|
|
259
|
+
|
|
260
|
+
if (result.range) {
|
|
261
|
+
const line = result.range.start.line + 1
|
|
262
|
+
const character = result.range.start.character + 1
|
|
263
|
+
return `Hover info at ${line}:${character}:\n\n${content}`
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
return content
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Maps SymbolKind enum to readable string
|
|
271
|
+
*/
|
|
272
|
+
function symbolKindToString(kind: SymbolKind): string {
|
|
273
|
+
const kinds: Record<SymbolKind, string> = {
|
|
274
|
+
[1]: 'File',
|
|
275
|
+
[2]: 'Module',
|
|
276
|
+
[3]: 'Namespace',
|
|
277
|
+
[4]: 'Package',
|
|
278
|
+
[5]: 'Class',
|
|
279
|
+
[6]: 'Method',
|
|
280
|
+
[7]: 'Property',
|
|
281
|
+
[8]: 'Field',
|
|
282
|
+
[9]: 'Constructor',
|
|
283
|
+
[10]: 'Enum',
|
|
284
|
+
[11]: 'Interface',
|
|
285
|
+
[12]: 'Function',
|
|
286
|
+
[13]: 'Variable',
|
|
287
|
+
[14]: 'Constant',
|
|
288
|
+
[15]: 'String',
|
|
289
|
+
[16]: 'Number',
|
|
290
|
+
[17]: 'Boolean',
|
|
291
|
+
[18]: 'Array',
|
|
292
|
+
[19]: 'Object',
|
|
293
|
+
[20]: 'Key',
|
|
294
|
+
[21]: 'Null',
|
|
295
|
+
[22]: 'EnumMember',
|
|
296
|
+
[23]: 'Struct',
|
|
297
|
+
[24]: 'Event',
|
|
298
|
+
[25]: 'Operator',
|
|
299
|
+
[26]: 'TypeParameter',
|
|
300
|
+
}
|
|
301
|
+
return kinds[kind] || 'Unknown'
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Formats a single DocumentSymbol with indentation
|
|
306
|
+
*/
|
|
307
|
+
function formatDocumentSymbolNode(
|
|
308
|
+
symbol: DocumentSymbol,
|
|
309
|
+
indent: number = 0,
|
|
310
|
+
): string[] {
|
|
311
|
+
const lines: string[] = []
|
|
312
|
+
const prefix = ' '.repeat(indent)
|
|
313
|
+
const kind = symbolKindToString(symbol.kind)
|
|
314
|
+
|
|
315
|
+
let line = `${prefix}${symbol.name} (${kind})`
|
|
316
|
+
if (symbol.detail) {
|
|
317
|
+
line += ` ${symbol.detail}`
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
const symbolLine = symbol.range.start.line + 1
|
|
321
|
+
line += ` - Line ${symbolLine}`
|
|
322
|
+
|
|
323
|
+
lines.push(line)
|
|
324
|
+
|
|
325
|
+
// Recursively format children
|
|
326
|
+
if (symbol.children && symbol.children.length > 0) {
|
|
327
|
+
for (const child of symbol.children) {
|
|
328
|
+
lines.push(...formatDocumentSymbolNode(child, indent + 1))
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
return lines
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Formats documentSymbol result (hierarchical outline)
|
|
337
|
+
* Handles both DocumentSymbol[] (hierarchical, with range) and SymbolInformation[] (flat, with location.range)
|
|
338
|
+
* per LSP spec which allows textDocument/documentSymbol to return either format
|
|
339
|
+
*/
|
|
340
|
+
export function formatDocumentSymbolResult(
|
|
341
|
+
result: DocumentSymbol[] | SymbolInformation[] | null,
|
|
342
|
+
cwd?: string,
|
|
343
|
+
): string {
|
|
344
|
+
if (!result || result.length === 0) {
|
|
345
|
+
return 'No symbols found in document. This may occur if the file is empty, not supported by the LSP server, or if the server has not fully indexed the file.'
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// Detect format: DocumentSymbol has 'range' directly, SymbolInformation has 'location.range'
|
|
349
|
+
// Check the first valid element to determine format
|
|
350
|
+
const firstSymbol = result[0]
|
|
351
|
+
const isSymbolInformation = firstSymbol && 'location' in firstSymbol
|
|
352
|
+
|
|
353
|
+
if (isSymbolInformation) {
|
|
354
|
+
// Delegate to workspace symbol formatter which handles SymbolInformation[]
|
|
355
|
+
return formatWorkspaceSymbolResult(result as SymbolInformation[], cwd)
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// Handle DocumentSymbol[] format (hierarchical)
|
|
359
|
+
const lines: string[] = ['Document symbols:']
|
|
360
|
+
|
|
361
|
+
for (const symbol of result as DocumentSymbol[]) {
|
|
362
|
+
lines.push(...formatDocumentSymbolNode(symbol))
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
return lines.join('\n')
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* Formats workspaceSymbol result (flat list of symbols)
|
|
370
|
+
*/
|
|
371
|
+
export function formatWorkspaceSymbolResult(
|
|
372
|
+
result: SymbolInformation[] | null,
|
|
373
|
+
cwd?: string,
|
|
374
|
+
): string {
|
|
375
|
+
if (!result || result.length === 0) {
|
|
376
|
+
return 'No symbols found in workspace. This may occur if the workspace is empty, or if the LSP server has not finished indexing the project.'
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// Log and filter out any symbols with undefined location.uri
|
|
380
|
+
const invalidSymbols = result.filter(
|
|
381
|
+
sym => !sym || !sym.location || !sym.location.uri,
|
|
382
|
+
)
|
|
383
|
+
if (invalidSymbols.length > 0) {
|
|
384
|
+
logForDebugging(
|
|
385
|
+
`formatWorkspaceSymbolResult: Filtering out ${invalidSymbols.length} invalid symbol(s) - this should have been caught earlier`,
|
|
386
|
+
{ level: 'warn' },
|
|
387
|
+
)
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
const validSymbols = result.filter(
|
|
391
|
+
sym => sym && sym.location && sym.location.uri,
|
|
392
|
+
)
|
|
393
|
+
|
|
394
|
+
if (validSymbols.length === 0) {
|
|
395
|
+
return 'No symbols found in workspace. This may occur if the workspace is empty, or if the LSP server has not finished indexing the project.'
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
const lines: string[] = [
|
|
399
|
+
`Found ${validSymbols.length} ${plural(validSymbols.length, 'symbol')} in workspace:`,
|
|
400
|
+
]
|
|
401
|
+
|
|
402
|
+
// Group by file
|
|
403
|
+
const byFile = groupByFile(validSymbols, cwd)
|
|
404
|
+
|
|
405
|
+
for (const [filePath, symbols] of byFile) {
|
|
406
|
+
lines.push(`\n${filePath}:`)
|
|
407
|
+
for (const symbol of symbols) {
|
|
408
|
+
const kind = symbolKindToString(symbol.kind)
|
|
409
|
+
const line = symbol.location.range.start.line + 1
|
|
410
|
+
let symbolLine = ` ${symbol.name} (${kind}) - Line ${line}`
|
|
411
|
+
|
|
412
|
+
// Add container name if available
|
|
413
|
+
if (symbol.containerName) {
|
|
414
|
+
symbolLine += ` in ${symbol.containerName}`
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
lines.push(symbolLine)
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
return lines.join('\n')
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* Formats a CallHierarchyItem with its location
|
|
426
|
+
* Validates URI before formatting to handle malformed LSP data
|
|
427
|
+
*/
|
|
428
|
+
function formatCallHierarchyItem(
|
|
429
|
+
item: CallHierarchyItem,
|
|
430
|
+
cwd?: string,
|
|
431
|
+
): string {
|
|
432
|
+
// Validate URI - handle undefined/null gracefully
|
|
433
|
+
if (!item.uri) {
|
|
434
|
+
logForDebugging(
|
|
435
|
+
'formatCallHierarchyItem: CallHierarchyItem has undefined URI',
|
|
436
|
+
{ level: 'warn' },
|
|
437
|
+
)
|
|
438
|
+
return `${item.name} (${symbolKindToString(item.kind)}) - <unknown location>`
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
const filePath = formatUri(item.uri, cwd)
|
|
442
|
+
const line = item.range.start.line + 1
|
|
443
|
+
const kind = symbolKindToString(item.kind)
|
|
444
|
+
let result = `${item.name} (${kind}) - ${filePath}:${line}`
|
|
445
|
+
if (item.detail) {
|
|
446
|
+
result += ` [${item.detail}]`
|
|
447
|
+
}
|
|
448
|
+
return result
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Formats prepareCallHierarchy result
|
|
453
|
+
* Returns the call hierarchy item(s) at the given position
|
|
454
|
+
*/
|
|
455
|
+
export function formatPrepareCallHierarchyResult(
|
|
456
|
+
result: CallHierarchyItem[] | null,
|
|
457
|
+
cwd?: string,
|
|
458
|
+
): string {
|
|
459
|
+
if (!result || result.length === 0) {
|
|
460
|
+
return 'No call hierarchy item found at this position'
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
if (result.length === 1) {
|
|
464
|
+
return `Call hierarchy item: ${formatCallHierarchyItem(result[0]!, cwd)}`
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
const lines = [`Found ${result.length} call hierarchy items:`]
|
|
468
|
+
for (const item of result) {
|
|
469
|
+
lines.push(` ${formatCallHierarchyItem(item, cwd)}`)
|
|
470
|
+
}
|
|
471
|
+
return lines.join('\n')
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* Formats incomingCalls result
|
|
476
|
+
* Shows all functions/methods that call the target
|
|
477
|
+
*/
|
|
478
|
+
export function formatIncomingCallsResult(
|
|
479
|
+
result: CallHierarchyIncomingCall[] | null,
|
|
480
|
+
cwd?: string,
|
|
481
|
+
): string {
|
|
482
|
+
if (!result || result.length === 0) {
|
|
483
|
+
return 'No incoming calls found (nothing calls this function)'
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
const lines = [
|
|
487
|
+
`Found ${result.length} incoming ${plural(result.length, 'call')}:`,
|
|
488
|
+
]
|
|
489
|
+
|
|
490
|
+
// Group by file
|
|
491
|
+
const byFile = new Map<string, CallHierarchyIncomingCall[]>()
|
|
492
|
+
for (const call of result) {
|
|
493
|
+
if (!call.from) {
|
|
494
|
+
logForDebugging(
|
|
495
|
+
'formatIncomingCallsResult: CallHierarchyIncomingCall has undefined from field',
|
|
496
|
+
{ level: 'warn' },
|
|
497
|
+
)
|
|
498
|
+
continue
|
|
499
|
+
}
|
|
500
|
+
const filePath = formatUri(call.from.uri, cwd)
|
|
501
|
+
const existing = byFile.get(filePath)
|
|
502
|
+
if (existing) {
|
|
503
|
+
existing.push(call)
|
|
504
|
+
} else {
|
|
505
|
+
byFile.set(filePath, [call])
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
for (const [filePath, calls] of byFile) {
|
|
510
|
+
lines.push(`\n${filePath}:`)
|
|
511
|
+
for (const call of calls) {
|
|
512
|
+
if (!call.from) {
|
|
513
|
+
continue // Already logged above
|
|
514
|
+
}
|
|
515
|
+
const kind = symbolKindToString(call.from.kind)
|
|
516
|
+
const line = call.from.range.start.line + 1
|
|
517
|
+
let callLine = ` ${call.from.name} (${kind}) - Line ${line}`
|
|
518
|
+
|
|
519
|
+
// Show call sites within the caller
|
|
520
|
+
if (call.fromRanges && call.fromRanges.length > 0) {
|
|
521
|
+
const callSites = call.fromRanges
|
|
522
|
+
.map(r => `${r.start.line + 1}:${r.start.character + 1}`)
|
|
523
|
+
.join(', ')
|
|
524
|
+
callLine += ` [calls at: ${callSites}]`
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
lines.push(callLine)
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
return lines.join('\n')
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
/**
|
|
535
|
+
* Formats outgoingCalls result
|
|
536
|
+
* Shows all functions/methods called by the target
|
|
537
|
+
*/
|
|
538
|
+
export function formatOutgoingCallsResult(
|
|
539
|
+
result: CallHierarchyOutgoingCall[] | null,
|
|
540
|
+
cwd?: string,
|
|
541
|
+
): string {
|
|
542
|
+
if (!result || result.length === 0) {
|
|
543
|
+
return 'No outgoing calls found (this function calls nothing)'
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
const lines = [
|
|
547
|
+
`Found ${result.length} outgoing ${plural(result.length, 'call')}:`,
|
|
548
|
+
]
|
|
549
|
+
|
|
550
|
+
// Group by file
|
|
551
|
+
const byFile = new Map<string, CallHierarchyOutgoingCall[]>()
|
|
552
|
+
for (const call of result) {
|
|
553
|
+
if (!call.to) {
|
|
554
|
+
logForDebugging(
|
|
555
|
+
'formatOutgoingCallsResult: CallHierarchyOutgoingCall has undefined to field',
|
|
556
|
+
{ level: 'warn' },
|
|
557
|
+
)
|
|
558
|
+
continue
|
|
559
|
+
}
|
|
560
|
+
const filePath = formatUri(call.to.uri, cwd)
|
|
561
|
+
const existing = byFile.get(filePath)
|
|
562
|
+
if (existing) {
|
|
563
|
+
existing.push(call)
|
|
564
|
+
} else {
|
|
565
|
+
byFile.set(filePath, [call])
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
for (const [filePath, calls] of byFile) {
|
|
570
|
+
lines.push(`\n${filePath}:`)
|
|
571
|
+
for (const call of calls) {
|
|
572
|
+
if (!call.to) {
|
|
573
|
+
continue // Already logged above
|
|
574
|
+
}
|
|
575
|
+
const kind = symbolKindToString(call.to.kind)
|
|
576
|
+
const line = call.to.range.start.line + 1
|
|
577
|
+
let callLine = ` ${call.to.name} (${kind}) - Line ${line}`
|
|
578
|
+
|
|
579
|
+
// Show call sites within the current function
|
|
580
|
+
if (call.fromRanges && call.fromRanges.length > 0) {
|
|
581
|
+
const callSites = call.fromRanges
|
|
582
|
+
.map(r => `${r.start.line + 1}:${r.start.character + 1}`)
|
|
583
|
+
.join(', ')
|
|
584
|
+
callLine += ` [called from: ${callSites}]`
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
lines.push(callLine)
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
return lines.join('\n')
|
|
592
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const LSP_TOOL_NAME = 'LSP' as const
|
|
2
|
+
|
|
3
|
+
export const DESCRIPTION = `Interact with Language Server Protocol (LSP) servers to get code intelligence features.
|
|
4
|
+
|
|
5
|
+
Supported operations:
|
|
6
|
+
- goToDefinition: Find where a symbol is defined
|
|
7
|
+
- findReferences: Find all references to a symbol
|
|
8
|
+
- hover: Get hover information (documentation, type info) for a symbol
|
|
9
|
+
- documentSymbol: Get all symbols (functions, classes, variables) in a document
|
|
10
|
+
- workspaceSymbol: Search for symbols across the entire workspace
|
|
11
|
+
- goToImplementation: Find implementations of an interface or abstract method
|
|
12
|
+
- prepareCallHierarchy: Get call hierarchy item at a position (functions/methods)
|
|
13
|
+
- incomingCalls: Find all functions/methods that call the function at a position
|
|
14
|
+
- outgoingCalls: Find all functions/methods called by the function at a position
|
|
15
|
+
|
|
16
|
+
All operations require:
|
|
17
|
+
- filePath: The file to operate on
|
|
18
|
+
- line: The line number (1-based, as shown in editors)
|
|
19
|
+
- character: The character offset (1-based, as shown in editors)
|
|
20
|
+
|
|
21
|
+
Note: LSP servers must be configured for the file type. If no server is available, an error will be returned.`
|