@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,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Teammate Initialization Module
|
|
3
|
+
*
|
|
4
|
+
* Handles initialization for Claude Code instances running as teammates in a swarm.
|
|
5
|
+
* Registers a Stop hook to notify the team leader when the teammate becomes idle.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { AppState } from '../../state/AppState.js'
|
|
9
|
+
import { logForDebugging } from '../debug.js'
|
|
10
|
+
import { addFunctionHook } from '../hooks/sessionHooks.js'
|
|
11
|
+
import { applyPermissionUpdate } from '../permissions/PermissionUpdate.js'
|
|
12
|
+
import { jsonStringify } from '../slowOperations.js'
|
|
13
|
+
import { getTeammateColor } from '../teammate.js'
|
|
14
|
+
import {
|
|
15
|
+
createIdleNotification,
|
|
16
|
+
getLastPeerDmSummary,
|
|
17
|
+
writeToMailbox,
|
|
18
|
+
} from '../teammateMailbox.js'
|
|
19
|
+
import { readTeamFile, setMemberActive } from './teamHelpers.js'
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Initializes hooks for a teammate running in a swarm.
|
|
23
|
+
* Should be called early in session startup after AppState is available.
|
|
24
|
+
*
|
|
25
|
+
* Registers a Stop hook that sends an idle notification to the team leader
|
|
26
|
+
* when this teammate's session stops.
|
|
27
|
+
*/
|
|
28
|
+
export function initializeTeammateHooks(
|
|
29
|
+
setAppState: (updater: (prev: AppState) => AppState) => void,
|
|
30
|
+
sessionId: string,
|
|
31
|
+
teamInfo: { teamName: string; agentId: string; agentName: string },
|
|
32
|
+
): void {
|
|
33
|
+
const { teamName, agentId, agentName } = teamInfo
|
|
34
|
+
|
|
35
|
+
// Read team file to get leader ID
|
|
36
|
+
const teamFile = readTeamFile(teamName)
|
|
37
|
+
if (!teamFile) {
|
|
38
|
+
logForDebugging(`[TeammateInit] Team file not found for team: ${teamName}`)
|
|
39
|
+
return
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const leadAgentId = teamFile.leadAgentId
|
|
43
|
+
|
|
44
|
+
// Apply team-wide allowed paths if any exist
|
|
45
|
+
if (teamFile.teamAllowedPaths && teamFile.teamAllowedPaths.length > 0) {
|
|
46
|
+
logForDebugging(
|
|
47
|
+
`[TeammateInit] Found ${teamFile.teamAllowedPaths.length} team-wide allowed path(s)`,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
for (const allowedPath of teamFile.teamAllowedPaths) {
|
|
51
|
+
// For absolute paths (starting with /), prepend one / to create //path/** pattern
|
|
52
|
+
// For relative paths, just use path/**
|
|
53
|
+
const ruleContent = allowedPath.path.startsWith('/')
|
|
54
|
+
? `/${allowedPath.path}/**`
|
|
55
|
+
: `${allowedPath.path}/**`
|
|
56
|
+
|
|
57
|
+
logForDebugging(
|
|
58
|
+
`[TeammateInit] Applying team permission: ${allowedPath.toolName} allowed in ${allowedPath.path} (rule: ${ruleContent})`,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
setAppState(prev => ({
|
|
62
|
+
...prev,
|
|
63
|
+
toolPermissionContext: applyPermissionUpdate(
|
|
64
|
+
prev.toolPermissionContext,
|
|
65
|
+
{
|
|
66
|
+
type: 'addRules',
|
|
67
|
+
rules: [
|
|
68
|
+
{
|
|
69
|
+
toolName: allowedPath.toolName,
|
|
70
|
+
ruleContent,
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
behavior: 'allow',
|
|
74
|
+
destination: 'session',
|
|
75
|
+
},
|
|
76
|
+
),
|
|
77
|
+
}))
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Find the leader's name from the members array
|
|
82
|
+
const leadMember = teamFile.members.find(m => m.agentId === leadAgentId)
|
|
83
|
+
const leadAgentName = leadMember?.name || 'team-lead'
|
|
84
|
+
|
|
85
|
+
// Don't register hook if this agent is the leader
|
|
86
|
+
if (agentId === leadAgentId) {
|
|
87
|
+
logForDebugging(
|
|
88
|
+
'[TeammateInit] This agent is the team leader - skipping idle notification hook',
|
|
89
|
+
)
|
|
90
|
+
return
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
logForDebugging(
|
|
94
|
+
`[TeammateInit] Registering Stop hook for teammate ${agentName} to notify leader ${leadAgentName}`,
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
// Register Stop hook to notify leader when this teammate stops
|
|
98
|
+
addFunctionHook(
|
|
99
|
+
setAppState,
|
|
100
|
+
sessionId,
|
|
101
|
+
'Stop',
|
|
102
|
+
'', // No matcher - applies to all Stop events
|
|
103
|
+
async (messages, _signal) => {
|
|
104
|
+
// Mark this teammate as idle in the team config (fire and forget)
|
|
105
|
+
void setMemberActive(teamName, agentName, false)
|
|
106
|
+
|
|
107
|
+
// Send idle notification to the team leader using agent name (not UUID)
|
|
108
|
+
// Must await to ensure the write completes before process shutdown
|
|
109
|
+
const notification = createIdleNotification(agentName, {
|
|
110
|
+
idleReason: 'available',
|
|
111
|
+
summary: getLastPeerDmSummary(messages),
|
|
112
|
+
})
|
|
113
|
+
await writeToMailbox(leadAgentName, {
|
|
114
|
+
from: agentName,
|
|
115
|
+
text: jsonStringify(notification),
|
|
116
|
+
timestamp: new Date().toISOString(),
|
|
117
|
+
color: getTeammateColor(),
|
|
118
|
+
})
|
|
119
|
+
logForDebugging(
|
|
120
|
+
`[TeammateInit] Sent idle notification to leader ${leadAgentName}`,
|
|
121
|
+
)
|
|
122
|
+
return true // Don't block the Stop
|
|
123
|
+
},
|
|
124
|
+
'Failed to send idle notification to team leader',
|
|
125
|
+
{
|
|
126
|
+
timeout: 10000,
|
|
127
|
+
},
|
|
128
|
+
)
|
|
129
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type { AgentColorName } from '../../tools/AgentTool/agentColorManager.js'
|
|
2
|
+
import { AGENT_COLORS } from '../../tools/AgentTool/agentColorManager.js'
|
|
3
|
+
import { detectAndGetBackend } from './backends/registry.js'
|
|
4
|
+
import type { PaneBackend } from './backends/types.js'
|
|
5
|
+
|
|
6
|
+
// Track color assignments for teammates (persisted per session)
|
|
7
|
+
const teammateColorAssignments = new Map<string, AgentColorName>()
|
|
8
|
+
let colorIndex = 0
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Gets the appropriate backend for the current environment.
|
|
12
|
+
* detectAndGetBackend() caches internally — no need for a second cache here.
|
|
13
|
+
*/
|
|
14
|
+
async function getBackend(): Promise<PaneBackend> {
|
|
15
|
+
return (await detectAndGetBackend()).backend
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Assigns a unique color to a teammate from the available palette.
|
|
20
|
+
* Colors are assigned in round-robin order.
|
|
21
|
+
*/
|
|
22
|
+
export function assignTeammateColor(teammateId: string): AgentColorName {
|
|
23
|
+
const existing = teammateColorAssignments.get(teammateId)
|
|
24
|
+
if (existing) {
|
|
25
|
+
return existing
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const color = AGENT_COLORS[colorIndex % AGENT_COLORS.length]!
|
|
29
|
+
teammateColorAssignments.set(teammateId, color)
|
|
30
|
+
colorIndex++
|
|
31
|
+
|
|
32
|
+
return color
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Gets the assigned color for a teammate, if any.
|
|
37
|
+
*/
|
|
38
|
+
export function getTeammateColor(
|
|
39
|
+
teammateId: string,
|
|
40
|
+
): AgentColorName | undefined {
|
|
41
|
+
return teammateColorAssignments.get(teammateId)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Clears all teammate color assignments.
|
|
46
|
+
* Called during team cleanup to reset state for potential new teams.
|
|
47
|
+
*/
|
|
48
|
+
export function clearTeammateColors(): void {
|
|
49
|
+
teammateColorAssignments.clear()
|
|
50
|
+
colorIndex = 0
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Checks if we're currently running inside a tmux session.
|
|
55
|
+
* Uses the detection module directly for this check.
|
|
56
|
+
*/
|
|
57
|
+
export async function isInsideTmux(): Promise<boolean> {
|
|
58
|
+
const { isInsideTmux: checkTmux } = await import('./backends/detection.js')
|
|
59
|
+
return checkTmux()
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Creates a new teammate pane in the swarm view.
|
|
64
|
+
* Automatically selects the appropriate backend (tmux or iTerm2) based on environment.
|
|
65
|
+
*
|
|
66
|
+
* When running INSIDE tmux:
|
|
67
|
+
* - Uses TmuxBackend to split the current window
|
|
68
|
+
* - Leader stays on left (30%), teammates on right (70%)
|
|
69
|
+
*
|
|
70
|
+
* When running in iTerm2 (not in tmux) with it2 CLI:
|
|
71
|
+
* - Uses ITermBackend for native iTerm2 split panes
|
|
72
|
+
*
|
|
73
|
+
* When running OUTSIDE tmux/iTerm2:
|
|
74
|
+
* - Falls back to TmuxBackend with external claude-swarm session
|
|
75
|
+
*/
|
|
76
|
+
export async function createTeammatePaneInSwarmView(
|
|
77
|
+
teammateName: string,
|
|
78
|
+
teammateColor: AgentColorName,
|
|
79
|
+
): Promise<{ paneId: string; isFirstTeammate: boolean }> {
|
|
80
|
+
const backend = await getBackend()
|
|
81
|
+
return backend.createTeammatePaneInSwarmView(teammateName, teammateColor)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Enables pane border status for a window (shows pane titles).
|
|
86
|
+
* Delegates to the detected backend.
|
|
87
|
+
*/
|
|
88
|
+
export async function enablePaneBorderStatus(
|
|
89
|
+
windowTarget?: string,
|
|
90
|
+
useSwarmSocket = false,
|
|
91
|
+
): Promise<void> {
|
|
92
|
+
const backend = await getBackend()
|
|
93
|
+
return backend.enablePaneBorderStatus(windowTarget, useSwarmSocket)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Sends a command to a specific pane.
|
|
98
|
+
* Delegates to the detected backend.
|
|
99
|
+
*/
|
|
100
|
+
export async function sendCommandToPane(
|
|
101
|
+
paneId: string,
|
|
102
|
+
command: string,
|
|
103
|
+
useSwarmSocket = false,
|
|
104
|
+
): Promise<void> {
|
|
105
|
+
const backend = await getBackend()
|
|
106
|
+
return backend.sendCommandToPane(paneId, command, useSwarmSocket)
|
|
107
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CLAUDE_OPUS_4_6_CONFIG } from '../model/configs.js'
|
|
2
|
+
import { getAPIProvider } from '../model/providers.js'
|
|
3
|
+
|
|
4
|
+
// @[MODEL LAUNCH]: Update the fallback model below.
|
|
5
|
+
// When the user has never set teammateDefaultModel in /config, new teammates
|
|
6
|
+
// use Opus 4.6. Must be provider-aware so Bedrock/Vertex/Foundry customers get
|
|
7
|
+
// the correct model ID.
|
|
8
|
+
export function getHardcodedTeammateModelFallback(): string {
|
|
9
|
+
return CLAUDE_OPUS_4_6_CONFIG[getAPIProvider()]
|
|
10
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Teammate-specific system prompt addendum.
|
|
3
|
+
*
|
|
4
|
+
* This is appended to the full main agent system prompt for teammates.
|
|
5
|
+
* It explains visibility constraints and communication requirements.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const TEAMMATE_SYSTEM_PROMPT_ADDENDUM = `
|
|
9
|
+
# Agent Teammate Communication
|
|
10
|
+
|
|
11
|
+
IMPORTANT: You are running as an agent in a team. To communicate with anyone on your team:
|
|
12
|
+
- Use the SendMessage tool with \`to: "<name>"\` to send messages to specific teammates
|
|
13
|
+
- Use the SendMessage tool with \`to: "*"\` sparingly for team-wide broadcasts
|
|
14
|
+
|
|
15
|
+
Just writing a response in text is not visible to others on your team - you MUST use the SendMessage tool.
|
|
16
|
+
|
|
17
|
+
The user interacts primarily with the team lead. Your work is coordinated through the task system and teammate messaging.
|
|
18
|
+
`
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { homedir } from 'os'
|
|
2
|
+
import { join } from 'path'
|
|
3
|
+
import { logForDebugging } from './debug.js'
|
|
4
|
+
import { getPlatform, type Platform } from './platform.js'
|
|
5
|
+
|
|
6
|
+
export type SystemDirectories = {
|
|
7
|
+
HOME: string
|
|
8
|
+
DESKTOP: string
|
|
9
|
+
DOCUMENTS: string
|
|
10
|
+
DOWNLOADS: string
|
|
11
|
+
[key: string]: string // Index signature for compatibility with Record<string, string>
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
type EnvLike = Record<string, string | undefined>
|
|
15
|
+
|
|
16
|
+
type SystemDirectoriesOptions = {
|
|
17
|
+
env?: EnvLike
|
|
18
|
+
homedir?: string
|
|
19
|
+
platform?: Platform
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Get cross-platform system directories
|
|
24
|
+
* Handles differences between Windows, macOS, Linux, and WSL
|
|
25
|
+
* @param options Optional overrides for testing (env, homedir, platform)
|
|
26
|
+
*/
|
|
27
|
+
export function getSystemDirectories(
|
|
28
|
+
options?: SystemDirectoriesOptions,
|
|
29
|
+
): SystemDirectories {
|
|
30
|
+
const platform = options?.platform ?? getPlatform()
|
|
31
|
+
const homeDir = options?.homedir ?? homedir()
|
|
32
|
+
const env = options?.env ?? process.env
|
|
33
|
+
|
|
34
|
+
// Default paths used by most platforms
|
|
35
|
+
const defaults: SystemDirectories = {
|
|
36
|
+
HOME: homeDir,
|
|
37
|
+
DESKTOP: join(homeDir, 'Desktop'),
|
|
38
|
+
DOCUMENTS: join(homeDir, 'Documents'),
|
|
39
|
+
DOWNLOADS: join(homeDir, 'Downloads'),
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
switch (platform) {
|
|
43
|
+
case 'windows': {
|
|
44
|
+
// Windows: Use USERPROFILE if available (handles localized folder names)
|
|
45
|
+
const userProfile = env.USERPROFILE || homeDir
|
|
46
|
+
return {
|
|
47
|
+
HOME: homeDir,
|
|
48
|
+
DESKTOP: join(userProfile, 'Desktop'),
|
|
49
|
+
DOCUMENTS: join(userProfile, 'Documents'),
|
|
50
|
+
DOWNLOADS: join(userProfile, 'Downloads'),
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
case 'linux':
|
|
55
|
+
case 'wsl': {
|
|
56
|
+
// Linux/WSL: Check XDG Base Directory specification first
|
|
57
|
+
return {
|
|
58
|
+
HOME: homeDir,
|
|
59
|
+
DESKTOP: env.XDG_DESKTOP_DIR || defaults.DESKTOP,
|
|
60
|
+
DOCUMENTS: env.XDG_DOCUMENTS_DIR || defaults.DOCUMENTS,
|
|
61
|
+
DOWNLOADS: env.XDG_DOWNLOAD_DIR || defaults.DOWNLOADS,
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
case 'macos':
|
|
66
|
+
default: {
|
|
67
|
+
// macOS and unknown platforms use standard paths
|
|
68
|
+
if (platform === 'unknown') {
|
|
69
|
+
logForDebugging(`Unknown platform detected, using default paths`)
|
|
70
|
+
}
|
|
71
|
+
return defaults
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { feature } from 'bun:bundle'
|
|
2
|
+
import {
|
|
3
|
+
type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
4
|
+
logEvent,
|
|
5
|
+
} from '../services/analytics/index.js'
|
|
6
|
+
import type { ToolUseContext } from '../Tool.js'
|
|
7
|
+
import type { AgentDefinition } from '../tools/AgentTool/loadAgentsDir.js'
|
|
8
|
+
import { isBuiltInAgent } from '../tools/AgentTool/loadAgentsDir.js'
|
|
9
|
+
import { isEnvTruthy } from './envUtils.js'
|
|
10
|
+
import { asSystemPrompt, type SystemPrompt } from './systemPromptType.js'
|
|
11
|
+
|
|
12
|
+
export { asSystemPrompt, type SystemPrompt } from './systemPromptType.js'
|
|
13
|
+
|
|
14
|
+
// Dead code elimination: conditional import for proactive mode.
|
|
15
|
+
// Same pattern as prompts.ts — lazy require to avoid pulling the module
|
|
16
|
+
// into non-proactive builds.
|
|
17
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
18
|
+
const proactiveModule =
|
|
19
|
+
feature('PROACTIVE') || feature('KAIROS')
|
|
20
|
+
? (require('../proactive/index.js') as typeof import('../proactive/index.js'))
|
|
21
|
+
: null
|
|
22
|
+
/* eslint-enable @typescript-eslint/no-require-imports */
|
|
23
|
+
|
|
24
|
+
function isProactiveActive_SAFE_TO_CALL_ANYWHERE(): boolean {
|
|
25
|
+
return proactiveModule?.isProactiveActive() ?? false
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Builds the effective system prompt array based on priority:
|
|
30
|
+
* 0. Override system prompt (if set, e.g., via loop mode - REPLACES all other prompts)
|
|
31
|
+
* 1. Coordinator system prompt (if coordinator mode is active)
|
|
32
|
+
* 2. Agent system prompt (if mainThreadAgentDefinition is set)
|
|
33
|
+
* - In proactive mode: agent prompt is APPENDED to default (agent adds domain
|
|
34
|
+
* instructions on top of the autonomous agent prompt, like teammates do)
|
|
35
|
+
* - Otherwise: agent prompt REPLACES default
|
|
36
|
+
* 3. Custom system prompt (if specified via --system-prompt)
|
|
37
|
+
* 4. Default system prompt (the standard Claude Code prompt)
|
|
38
|
+
*
|
|
39
|
+
* Plus appendSystemPrompt is always added at the end if specified (except when override is set).
|
|
40
|
+
*/
|
|
41
|
+
export function buildEffectiveSystemPrompt({
|
|
42
|
+
mainThreadAgentDefinition,
|
|
43
|
+
toolUseContext,
|
|
44
|
+
customSystemPrompt,
|
|
45
|
+
defaultSystemPrompt,
|
|
46
|
+
appendSystemPrompt,
|
|
47
|
+
overrideSystemPrompt,
|
|
48
|
+
}: {
|
|
49
|
+
mainThreadAgentDefinition: AgentDefinition | undefined
|
|
50
|
+
toolUseContext: Pick<ToolUseContext, 'options'>
|
|
51
|
+
customSystemPrompt: string | undefined
|
|
52
|
+
defaultSystemPrompt: string[]
|
|
53
|
+
appendSystemPrompt: string | undefined
|
|
54
|
+
overrideSystemPrompt?: string | null
|
|
55
|
+
}): SystemPrompt {
|
|
56
|
+
if (overrideSystemPrompt) {
|
|
57
|
+
return asSystemPrompt([overrideSystemPrompt])
|
|
58
|
+
}
|
|
59
|
+
// Coordinator mode: use coordinator prompt instead of default
|
|
60
|
+
// Use inline env check instead of coordinatorModule to avoid circular
|
|
61
|
+
// dependency issues during test module loading.
|
|
62
|
+
if (
|
|
63
|
+
feature('COORDINATOR_MODE') &&
|
|
64
|
+
isEnvTruthy(process.env.CLAUDE_CODE_COORDINATOR_MODE) &&
|
|
65
|
+
!mainThreadAgentDefinition
|
|
66
|
+
) {
|
|
67
|
+
// Lazy require to avoid circular dependency at module load time
|
|
68
|
+
const { getCoordinatorSystemPrompt } =
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
70
|
+
require('../coordinator/coordinatorMode.js') as typeof import('../coordinator/coordinatorMode.js')
|
|
71
|
+
return asSystemPrompt([
|
|
72
|
+
getCoordinatorSystemPrompt(),
|
|
73
|
+
...(appendSystemPrompt ? [appendSystemPrompt] : []),
|
|
74
|
+
])
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const agentSystemPrompt = mainThreadAgentDefinition
|
|
78
|
+
? isBuiltInAgent(mainThreadAgentDefinition)
|
|
79
|
+
? mainThreadAgentDefinition.getSystemPrompt({
|
|
80
|
+
toolUseContext: { options: toolUseContext.options },
|
|
81
|
+
})
|
|
82
|
+
: mainThreadAgentDefinition.getSystemPrompt()
|
|
83
|
+
: undefined
|
|
84
|
+
|
|
85
|
+
// Log agent memory loaded event for main loop agents
|
|
86
|
+
if (mainThreadAgentDefinition?.memory) {
|
|
87
|
+
logEvent('tengu_agent_memory_loaded', {
|
|
88
|
+
...(process.env.USER_TYPE === 'ant' && {
|
|
89
|
+
agent_type:
|
|
90
|
+
mainThreadAgentDefinition.agentType as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
91
|
+
}),
|
|
92
|
+
scope:
|
|
93
|
+
mainThreadAgentDefinition.memory as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
94
|
+
source:
|
|
95
|
+
'main-thread' as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// In proactive mode, agent instructions are appended to the default prompt
|
|
100
|
+
// rather than replacing it. The proactive default prompt is already lean
|
|
101
|
+
// (autonomous agent identity + memory + env + proactive section), and agents
|
|
102
|
+
// add domain-specific behavior on top — same pattern as teammates.
|
|
103
|
+
if (
|
|
104
|
+
agentSystemPrompt &&
|
|
105
|
+
(feature('PROACTIVE') || feature('KAIROS')) &&
|
|
106
|
+
isProactiveActive_SAFE_TO_CALL_ANYWHERE()
|
|
107
|
+
) {
|
|
108
|
+
return asSystemPrompt([
|
|
109
|
+
...defaultSystemPrompt,
|
|
110
|
+
`\n# Custom Agent Instructions\n${agentSystemPrompt}`,
|
|
111
|
+
...(appendSystemPrompt ? [appendSystemPrompt] : []),
|
|
112
|
+
])
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return asSystemPrompt([
|
|
116
|
+
...(agentSystemPrompt
|
|
117
|
+
? [agentSystemPrompt]
|
|
118
|
+
: customSystemPrompt
|
|
119
|
+
? [customSystemPrompt]
|
|
120
|
+
: defaultSystemPrompt),
|
|
121
|
+
...(appendSystemPrompt ? [appendSystemPrompt] : []),
|
|
122
|
+
])
|
|
123
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded type for system prompt arrays.
|
|
3
|
+
*
|
|
4
|
+
* This module is intentionally dependency-free so it can be imported
|
|
5
|
+
* from anywhere without risking circular initialization issues.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export type SystemPrompt = readonly string[] & {
|
|
9
|
+
readonly __brand: 'SystemPrompt'
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function asSystemPrompt(value: readonly string[]): SystemPrompt {
|
|
13
|
+
return value as SystemPrompt
|
|
14
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal dark/light mode detection for the 'auto' theme setting.
|
|
3
|
+
*
|
|
4
|
+
* Detection is based on the terminal's actual background color (queried via
|
|
5
|
+
* OSC 11 by systemThemeWatcher.ts) rather than the OS appearance setting —
|
|
6
|
+
* a dark terminal on a light-mode OS should still resolve to 'dark'.
|
|
7
|
+
*
|
|
8
|
+
* The detected theme is cached module-level so callers can resolve 'auto'
|
|
9
|
+
* without awaiting the async OSC round-trip. The cache is seeded from
|
|
10
|
+
* $COLORFGBG (synchronous, set by some terminals at launch) and then
|
|
11
|
+
* updated by the watcher once the OSC 11 response arrives.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { ThemeName, ThemeSetting } from './theme.js'
|
|
15
|
+
|
|
16
|
+
export type SystemTheme = 'dark' | 'light'
|
|
17
|
+
|
|
18
|
+
let cachedSystemTheme: SystemTheme | undefined
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Get the current terminal theme. Cached after first detection; the watcher
|
|
22
|
+
* updates the cache on live changes.
|
|
23
|
+
*/
|
|
24
|
+
export function getSystemThemeName(): SystemTheme {
|
|
25
|
+
if (cachedSystemTheme === undefined) {
|
|
26
|
+
cachedSystemTheme = detectFromColorFgBg() ?? 'dark'
|
|
27
|
+
}
|
|
28
|
+
return cachedSystemTheme
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Update the cached terminal theme. Called by the watcher when the OSC 11
|
|
33
|
+
* query returns so non-React call sites stay in sync.
|
|
34
|
+
*/
|
|
35
|
+
export function setCachedSystemTheme(theme: SystemTheme): void {
|
|
36
|
+
cachedSystemTheme = theme
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Resolve a ThemeSetting (which may be 'auto') to a concrete ThemeName.
|
|
41
|
+
*/
|
|
42
|
+
export function resolveThemeSetting(setting: ThemeSetting): ThemeName {
|
|
43
|
+
if (setting === 'auto') {
|
|
44
|
+
return getSystemThemeName()
|
|
45
|
+
}
|
|
46
|
+
return setting
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Parse an OSC color response data string into a theme.
|
|
51
|
+
*
|
|
52
|
+
* Accepts XParseColor formats returned by OSC 10/11 queries:
|
|
53
|
+
* - `rgb:R/G/B` where each component is 1–4 hex digits (each scaled to
|
|
54
|
+
* [0, 16^n - 1] for n digits). This is what xterm, iTerm2, Terminal.app,
|
|
55
|
+
* Ghostty, kitty, Alacritty, etc. return.
|
|
56
|
+
* - `#RRGGBB` / `#RRRRGGGGBBBB` (rare, but cheap to accept).
|
|
57
|
+
*
|
|
58
|
+
* Returns undefined for unrecognized formats so callers can fall back.
|
|
59
|
+
*/
|
|
60
|
+
export function themeFromOscColor(data: string): SystemTheme | undefined {
|
|
61
|
+
const rgb = parseOscRgb(data)
|
|
62
|
+
if (!rgb) return undefined
|
|
63
|
+
// ITU-R BT.709 relative luminance. Midpoint split: > 0.5 is light.
|
|
64
|
+
const luminance = 0.2126 * rgb.r + 0.7152 * rgb.g + 0.0722 * rgb.b
|
|
65
|
+
return luminance > 0.5 ? 'light' : 'dark'
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
type Rgb = { r: number; g: number; b: number }
|
|
69
|
+
|
|
70
|
+
function parseOscRgb(data: string): Rgb | undefined {
|
|
71
|
+
// rgb:RRRR/GGGG/BBBB — each component is 1–4 hex digits.
|
|
72
|
+
// Some terminals append an alpha component (rgba:…/…/…/…); ignore it.
|
|
73
|
+
const rgbMatch =
|
|
74
|
+
/^rgba?:([0-9a-f]{1,4})\/([0-9a-f]{1,4})\/([0-9a-f]{1,4})/i.exec(data)
|
|
75
|
+
if (rgbMatch) {
|
|
76
|
+
return {
|
|
77
|
+
r: hexComponent(rgbMatch[1]!),
|
|
78
|
+
g: hexComponent(rgbMatch[2]!),
|
|
79
|
+
b: hexComponent(rgbMatch[3]!),
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// #RRGGBB or #RRRRGGGGBBBB — split into three equal hex runs.
|
|
83
|
+
const hashMatch = /^#([0-9a-f]+)$/i.exec(data)
|
|
84
|
+
if (hashMatch && hashMatch[1]!.length % 3 === 0) {
|
|
85
|
+
const hex = hashMatch[1]!
|
|
86
|
+
const n = hex.length / 3
|
|
87
|
+
return {
|
|
88
|
+
r: hexComponent(hex.slice(0, n)),
|
|
89
|
+
g: hexComponent(hex.slice(n, 2 * n)),
|
|
90
|
+
b: hexComponent(hex.slice(2 * n)),
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return undefined
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** Normalize a 1–4 digit hex component to [0, 1]. */
|
|
97
|
+
function hexComponent(hex: string): number {
|
|
98
|
+
const max = 16 ** hex.length - 1
|
|
99
|
+
return parseInt(hex, 16) / max
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Read $COLORFGBG for a synchronous initial guess before the OSC 11
|
|
104
|
+
* round-trip completes. Format is `fg;bg` (or `fg;other;bg`) where values
|
|
105
|
+
* are ANSI color indices. rxvt convention: bg 0–6 or 8 are dark; bg 7
|
|
106
|
+
* and 9–15 are light. Only set by some terminals (rxvt-family, Konsole,
|
|
107
|
+
* iTerm2 with the option enabled), so this is a best-effort hint.
|
|
108
|
+
*/
|
|
109
|
+
function detectFromColorFgBg(): SystemTheme | undefined {
|
|
110
|
+
const colorfgbg = process.env['COLORFGBG']
|
|
111
|
+
if (!colorfgbg) return undefined
|
|
112
|
+
const parts = colorfgbg.split(';')
|
|
113
|
+
const bg = parts[parts.length - 1]
|
|
114
|
+
if (bg === undefined || bg === '') return undefined
|
|
115
|
+
const bgNum = Number(bg)
|
|
116
|
+
if (!Number.isInteger(bgNum) || bgNum < 0 || bgNum > 15) return undefined
|
|
117
|
+
// 0–6 and 8 are dark ANSI colors; 7 (white) and 9–15 (bright) are light.
|
|
118
|
+
return bgNum <= 6 || bgNum === 8 ? 'dark' : 'light'
|
|
119
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tagged ID encoding compatible with the API's tagged_id.py format.
|
|
3
|
+
*
|
|
4
|
+
* Produces IDs like "user_01PaGUP2rbg1XDh7Z9W1CEpd" from a UUID string.
|
|
5
|
+
* The format is: {tag}_{version}{base58(uuid_as_128bit_int)}
|
|
6
|
+
*
|
|
7
|
+
* This must stay in sync with api/api/common/utils/tagged_id.py.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const BASE_58_CHARS =
|
|
11
|
+
'123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
|
|
12
|
+
const VERSION = '01'
|
|
13
|
+
// ceil(128 / log2(58)) = 22
|
|
14
|
+
const ENCODED_LENGTH = 22
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Encode a 128-bit unsigned integer as a fixed-length base58 string.
|
|
18
|
+
*/
|
|
19
|
+
function base58Encode(n: bigint): string {
|
|
20
|
+
const base = BigInt(BASE_58_CHARS.length)
|
|
21
|
+
const result = new Array<string>(ENCODED_LENGTH).fill(BASE_58_CHARS[0]!)
|
|
22
|
+
let i = ENCODED_LENGTH - 1
|
|
23
|
+
let value = n
|
|
24
|
+
while (value > 0n) {
|
|
25
|
+
const rem = Number(value % base)
|
|
26
|
+
result[i] = BASE_58_CHARS[rem]!
|
|
27
|
+
value = value / base
|
|
28
|
+
i--
|
|
29
|
+
}
|
|
30
|
+
return result.join('')
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Parse a UUID string (with or without hyphens) into a 128-bit bigint.
|
|
35
|
+
*/
|
|
36
|
+
function uuidToBigInt(uuid: string): bigint {
|
|
37
|
+
const hex = uuid.replace(/-/g, '')
|
|
38
|
+
if (hex.length !== 32) {
|
|
39
|
+
throw new Error(`Invalid UUID hex length: ${hex.length}`)
|
|
40
|
+
}
|
|
41
|
+
return BigInt('0x' + hex)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Convert an account UUID to a tagged ID in the API's format.
|
|
46
|
+
*
|
|
47
|
+
* @param tag - The tag prefix (e.g. "user", "org")
|
|
48
|
+
* @param uuid - A UUID string (with or without hyphens)
|
|
49
|
+
* @returns Tagged ID string like "user_01PaGUP2rbg1XDh7Z9W1CEpd"
|
|
50
|
+
*/
|
|
51
|
+
export function toTaggedId(tag: string, uuid: string): string {
|
|
52
|
+
const n = uuidToBigInt(uuid)
|
|
53
|
+
return `${tag}_${VERSION}${base58Encode(n)}`
|
|
54
|
+
}
|