@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,170 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getModelStrings as getModelStringsState,
|
|
3
|
+
setModelStrings as setModelStringsState,
|
|
4
|
+
} from 'src/bootstrap/state.js'
|
|
5
|
+
import { logError } from '../log.js'
|
|
6
|
+
import { sequential } from '../sequential.js'
|
|
7
|
+
import { getInitialSettings } from '../settings/settings.js'
|
|
8
|
+
import { findFirstMatch, getBedrockInferenceProfiles } from './bedrock.js'
|
|
9
|
+
import {
|
|
10
|
+
ALL_MODEL_CONFIGS,
|
|
11
|
+
CANONICAL_ID_TO_KEY,
|
|
12
|
+
type CanonicalModelId,
|
|
13
|
+
type ModelKey,
|
|
14
|
+
} from './configs.js'
|
|
15
|
+
import { type APIProvider, getAPIProvider } from './providers.js'
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Maps each model version to its provider-specific model ID string.
|
|
19
|
+
* Derived from ALL_MODEL_CONFIGS — adding a model there extends this type.
|
|
20
|
+
*/
|
|
21
|
+
export type ModelStrings = Record<ModelKey, string>
|
|
22
|
+
|
|
23
|
+
const MODEL_KEYS = Object.keys(ALL_MODEL_CONFIGS) as ModelKey[]
|
|
24
|
+
|
|
25
|
+
function getBuiltinModelStrings(provider: APIProvider): ModelStrings {
|
|
26
|
+
const out = {} as ModelStrings
|
|
27
|
+
for (const key of MODEL_KEYS) {
|
|
28
|
+
const config = ALL_MODEL_CONFIGS[key]
|
|
29
|
+
// Handle all providers - use type assertion to access provider-specific keys
|
|
30
|
+
const providerKey = provider as keyof typeof config
|
|
31
|
+
const value = config[providerKey]
|
|
32
|
+
out[key] = (value as string | undefined) || config.firstParty
|
|
33
|
+
}
|
|
34
|
+
return out
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async function getBedrockModelStrings(): Promise<ModelStrings> {
|
|
38
|
+
const fallback = getBuiltinModelStrings('bedrock')
|
|
39
|
+
let profiles: string[] | undefined
|
|
40
|
+
try {
|
|
41
|
+
profiles = await getBedrockInferenceProfiles()
|
|
42
|
+
} catch (error) {
|
|
43
|
+
logError(error as Error)
|
|
44
|
+
return fallback
|
|
45
|
+
}
|
|
46
|
+
if (!profiles?.length) {
|
|
47
|
+
return fallback
|
|
48
|
+
}
|
|
49
|
+
// Each config's firstParty ID is the canonical substring we search for in the
|
|
50
|
+
// user's inference profile list (e.g. "claude-opus-4-6" matches
|
|
51
|
+
// "eu.anthropic.claude-opus-4-6-v1"). Fall back to the hardcoded bedrock ID
|
|
52
|
+
// when no matching profile is found.
|
|
53
|
+
const out = {} as ModelStrings
|
|
54
|
+
for (const key of MODEL_KEYS) {
|
|
55
|
+
const needle = ALL_MODEL_CONFIGS[key].firstParty
|
|
56
|
+
out[key] = findFirstMatch(profiles, needle) || fallback[key]
|
|
57
|
+
}
|
|
58
|
+
return out
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Layer user-configured modelOverrides (from settings.json) on top of the
|
|
63
|
+
* provider-derived model strings. Overrides are keyed by canonical first-party
|
|
64
|
+
* model ID (e.g. "claude-opus-4-6") and map to arbitrary provider-specific
|
|
65
|
+
* strings — typically Bedrock inference profile ARNs.
|
|
66
|
+
*/
|
|
67
|
+
function applyModelOverrides(ms: ModelStrings): ModelStrings {
|
|
68
|
+
const overrides = getInitialSettings().modelOverrides
|
|
69
|
+
if (!overrides) {
|
|
70
|
+
return ms
|
|
71
|
+
}
|
|
72
|
+
const out = { ...ms }
|
|
73
|
+
for (const [canonicalId, override] of Object.entries(overrides)) {
|
|
74
|
+
const key = CANONICAL_ID_TO_KEY[canonicalId as CanonicalModelId]
|
|
75
|
+
if (key && override) {
|
|
76
|
+
out[key] = override
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return out
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Resolve an overridden model ID (e.g. a Bedrock ARN) back to its canonical
|
|
84
|
+
* first-party model ID. If the input doesn't match any current override value,
|
|
85
|
+
* it is returned unchanged. Safe to call during module init (no-ops if settings
|
|
86
|
+
* aren't loaded yet).
|
|
87
|
+
*/
|
|
88
|
+
export function resolveOverriddenModel(modelId: string): string {
|
|
89
|
+
let overrides: Record<string, string> | undefined
|
|
90
|
+
try {
|
|
91
|
+
overrides = getInitialSettings().modelOverrides
|
|
92
|
+
} catch {
|
|
93
|
+
return modelId
|
|
94
|
+
}
|
|
95
|
+
if (!overrides) {
|
|
96
|
+
return modelId
|
|
97
|
+
}
|
|
98
|
+
for (const [canonicalId, override] of Object.entries(overrides)) {
|
|
99
|
+
if (override === modelId) {
|
|
100
|
+
return canonicalId
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return modelId
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const updateBedrockModelStrings = sequential(async () => {
|
|
107
|
+
if (getModelStringsState() !== null) {
|
|
108
|
+
// Already initialized. Doing the check here, combined with
|
|
109
|
+
// `sequential`, allows the test suite to reset the state
|
|
110
|
+
// between tests while still preventing multiple API calls
|
|
111
|
+
// in production.
|
|
112
|
+
return
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const ms = await getBedrockModelStrings()
|
|
116
|
+
setModelStringsState(ms)
|
|
117
|
+
} catch (error) {
|
|
118
|
+
logError(error as Error)
|
|
119
|
+
}
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
function initModelStrings(): void {
|
|
123
|
+
const ms = getModelStringsState()
|
|
124
|
+
if (ms !== null) {
|
|
125
|
+
// Already initialized
|
|
126
|
+
return
|
|
127
|
+
}
|
|
128
|
+
// Initial with default values for non-Bedrock providers
|
|
129
|
+
if (getAPIProvider() !== 'bedrock') {
|
|
130
|
+
setModelStringsState(getBuiltinModelStrings(getAPIProvider()))
|
|
131
|
+
return
|
|
132
|
+
}
|
|
133
|
+
// On Bedrock, update model strings in the background without blocking.
|
|
134
|
+
// Don't set the state in this case so that we can use `sequential` on
|
|
135
|
+
// `updateBedrockModelStrings` and check for existing state on multiple
|
|
136
|
+
// calls.
|
|
137
|
+
void updateBedrockModelStrings()
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export function getModelStrings(): ModelStrings {
|
|
141
|
+
const ms = getModelStringsState()
|
|
142
|
+
if (ms === null) {
|
|
143
|
+
initModelStrings()
|
|
144
|
+
// Bedrock path falls through here while the profile fetch runs in the
|
|
145
|
+
// background — still honor overrides on the interim defaults.
|
|
146
|
+
return applyModelOverrides(getBuiltinModelStrings(getAPIProvider()))
|
|
147
|
+
}
|
|
148
|
+
return applyModelOverrides(ms)
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Ensure model strings are fully initialized.
|
|
153
|
+
* For Bedrock users, this waits for the profile fetch to complete.
|
|
154
|
+
* Call this before generating model options to ensure correct region strings.
|
|
155
|
+
*/
|
|
156
|
+
export async function ensureModelStringsInitialized(): Promise<void> {
|
|
157
|
+
const ms = getModelStringsState()
|
|
158
|
+
if (ms !== null) {
|
|
159
|
+
return
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// For non-Bedrock, initialize synchronously
|
|
163
|
+
if (getAPIProvider() !== 'bedrock') {
|
|
164
|
+
setModelStringsState(getBuiltinModelStrings(getAPIProvider()))
|
|
165
|
+
return
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// For Bedrock, wait for the profile fetch
|
|
169
|
+
await updateBedrockModelStrings()
|
|
170
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import memoize from 'lodash-es/memoize.js'
|
|
2
|
+
import { getAPIProvider } from './providers.js'
|
|
3
|
+
|
|
4
|
+
export type ModelCapabilityOverride =
|
|
5
|
+
| 'effort'
|
|
6
|
+
| 'max_effort'
|
|
7
|
+
| 'thinking'
|
|
8
|
+
| 'adaptive_thinking'
|
|
9
|
+
| 'interleaved_thinking'
|
|
10
|
+
|
|
11
|
+
const TIERS = [
|
|
12
|
+
{
|
|
13
|
+
modelEnvVar: 'ANTHROPIC_DEFAULT_OPUS_MODEL',
|
|
14
|
+
capabilitiesEnvVar: 'ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
modelEnvVar: 'ANTHROPIC_DEFAULT_SONNET_MODEL',
|
|
18
|
+
capabilitiesEnvVar: 'ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
modelEnvVar: 'ANTHROPIC_DEFAULT_HAIKU_MODEL',
|
|
22
|
+
capabilitiesEnvVar: 'ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES',
|
|
23
|
+
},
|
|
24
|
+
] as const
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Check whether a 3p model capability override is set for a model that matches one of
|
|
28
|
+
* the pinned ANTHROPIC_DEFAULT_*_MODEL env vars.
|
|
29
|
+
*/
|
|
30
|
+
export const get3PModelCapabilityOverride = memoize(
|
|
31
|
+
(model: string, capability: ModelCapabilityOverride): boolean | undefined => {
|
|
32
|
+
if (getAPIProvider() === 'firstParty') {
|
|
33
|
+
return undefined
|
|
34
|
+
}
|
|
35
|
+
const m = model.toLowerCase()
|
|
36
|
+
for (const tier of TIERS) {
|
|
37
|
+
const pinned = process.env[tier.modelEnvVar]
|
|
38
|
+
const capabilities = process.env[tier.capabilitiesEnvVar]
|
|
39
|
+
if (!pinned || capabilities === undefined) continue
|
|
40
|
+
if (m !== pinned.toLowerCase()) continue
|
|
41
|
+
return capabilities
|
|
42
|
+
.toLowerCase()
|
|
43
|
+
.split(',')
|
|
44
|
+
.map(s => s.trim())
|
|
45
|
+
.includes(capability)
|
|
46
|
+
}
|
|
47
|
+
return undefined
|
|
48
|
+
},
|
|
49
|
+
(model, capability) => `${model.toLowerCase()}:${capability}`,
|
|
50
|
+
)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from '../../services/analytics/index.js'
|
|
2
|
+
import { isEnvTruthy } from '../envUtils.js'
|
|
3
|
+
|
|
4
|
+
export type APIProvider = 'firstParty' | 'bedrock' | 'vertex' | 'foundry' | 'openrouter'
|
|
5
|
+
|
|
6
|
+
export function getAPIProvider(): APIProvider {
|
|
7
|
+
return isEnvTruthy(process.env.CLAUDE_CODE_USE_OPENROUTER)
|
|
8
|
+
? 'openrouter'
|
|
9
|
+
: isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK)
|
|
10
|
+
? 'bedrock'
|
|
11
|
+
: isEnvTruthy(process.env.CLAUDE_CODE_USE_VERTEX)
|
|
12
|
+
? 'vertex'
|
|
13
|
+
: isEnvTruthy(process.env.CLAUDE_CODE_USE_FOUNDRY)
|
|
14
|
+
? 'foundry'
|
|
15
|
+
: 'firstParty'
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function getAPIProviderForStatsig(): AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS {
|
|
19
|
+
return getAPIProvider() as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Check if ANTHROPIC_BASE_URL is a first-party Anthropic API URL.
|
|
24
|
+
* Returns true if not set (default API) or points to api.anthropic.com
|
|
25
|
+
* (or api-staging.anthropic.com for ant users).
|
|
26
|
+
*/
|
|
27
|
+
export function isFirstPartyAnthropicBaseUrl(): boolean {
|
|
28
|
+
const baseUrl = process.env.ANTHROPIC_BASE_URL
|
|
29
|
+
if (!baseUrl) {
|
|
30
|
+
return true
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const host = new URL(baseUrl).host
|
|
34
|
+
const allowedHosts = ['api.anthropic.com']
|
|
35
|
+
if (process.env.USER_TYPE === 'ant') {
|
|
36
|
+
allowedHosts.push('api-staging.anthropic.com')
|
|
37
|
+
}
|
|
38
|
+
return allowedHosts.includes(host)
|
|
39
|
+
} catch {
|
|
40
|
+
return false
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
// biome-ignore-all assist/source/organizeImports: ANT-ONLY import markers must not be reordered
|
|
2
|
+
import { MODEL_ALIASES } from './aliases.js'
|
|
3
|
+
import { isModelAllowed } from './modelAllowlist.js'
|
|
4
|
+
import { getAPIProvider } from './providers.js'
|
|
5
|
+
import { sideQuery } from '../sideQuery.js'
|
|
6
|
+
import {
|
|
7
|
+
NotFoundError,
|
|
8
|
+
APIError,
|
|
9
|
+
APIConnectionError,
|
|
10
|
+
AuthenticationError,
|
|
11
|
+
} from '@anthropic-ai/sdk'
|
|
12
|
+
import { getModelStrings } from './modelStrings.js'
|
|
13
|
+
|
|
14
|
+
// Cache valid models to avoid repeated API calls
|
|
15
|
+
const validModelCache = new Map<string, boolean>()
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Validates a model by attempting an actual API call.
|
|
19
|
+
*/
|
|
20
|
+
export async function validateModel(
|
|
21
|
+
model: string,
|
|
22
|
+
): Promise<{ valid: boolean; error?: string }> {
|
|
23
|
+
const normalizedModel = model.trim()
|
|
24
|
+
|
|
25
|
+
// Empty model is invalid
|
|
26
|
+
if (!normalizedModel) {
|
|
27
|
+
return { valid: false, error: 'Model name cannot be empty' }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Check against availableModels allowlist before any API call
|
|
31
|
+
if (!isModelAllowed(normalizedModel)) {
|
|
32
|
+
return {
|
|
33
|
+
valid: false,
|
|
34
|
+
error: `Model '${normalizedModel}' is not in the list of available models`,
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Check if it's a known alias (these are always valid)
|
|
39
|
+
const lowerModel = normalizedModel.toLowerCase()
|
|
40
|
+
if ((MODEL_ALIASES as readonly string[]).includes(lowerModel)) {
|
|
41
|
+
return { valid: true }
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Check if it matches ANTHROPIC_CUSTOM_MODEL_OPTION (pre-validated by the user)
|
|
45
|
+
if (normalizedModel === process.env.ANTHROPIC_CUSTOM_MODEL_OPTION) {
|
|
46
|
+
return { valid: true }
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Check cache first
|
|
50
|
+
if (validModelCache.has(normalizedModel)) {
|
|
51
|
+
return { valid: true }
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
// Try to make an actual API call with minimal parameters
|
|
56
|
+
try {
|
|
57
|
+
await sideQuery({
|
|
58
|
+
model: normalizedModel,
|
|
59
|
+
max_tokens: 1,
|
|
60
|
+
maxRetries: 0,
|
|
61
|
+
querySource: 'model_validation',
|
|
62
|
+
messages: [
|
|
63
|
+
{
|
|
64
|
+
role: 'user',
|
|
65
|
+
content: [
|
|
66
|
+
{
|
|
67
|
+
type: 'text',
|
|
68
|
+
text: 'Hi',
|
|
69
|
+
cache_control: { type: 'ephemeral' },
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
// If we got here, the model is valid
|
|
77
|
+
validModelCache.set(normalizedModel, true)
|
|
78
|
+
return { valid: true }
|
|
79
|
+
} catch (error) {
|
|
80
|
+
return handleValidationError(error, normalizedModel)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function handleValidationError(
|
|
85
|
+
error: unknown,
|
|
86
|
+
modelName: string,
|
|
87
|
+
): { valid: boolean; error: string } {
|
|
88
|
+
// NotFoundError (404) means the model doesn't exist
|
|
89
|
+
if (error instanceof NotFoundError) {
|
|
90
|
+
const fallback = get3PFallbackSuggestion(modelName)
|
|
91
|
+
const suggestion = fallback ? `. Try '${fallback}' instead` : ''
|
|
92
|
+
return {
|
|
93
|
+
valid: false,
|
|
94
|
+
error: `Model '${modelName}' not found${suggestion}`,
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// For other API errors, provide context-specific messages
|
|
99
|
+
if (error instanceof APIError) {
|
|
100
|
+
if (error instanceof AuthenticationError) {
|
|
101
|
+
return {
|
|
102
|
+
valid: false,
|
|
103
|
+
error: 'Authentication failed. Please check your API credentials.',
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
if (error instanceof APIConnectionError) {
|
|
108
|
+
return {
|
|
109
|
+
valid: false,
|
|
110
|
+
error: 'Network error. Please check your internet connection.',
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Check error body for model-specific errors
|
|
115
|
+
const errorBody = error.error as unknown
|
|
116
|
+
if (
|
|
117
|
+
errorBody &&
|
|
118
|
+
typeof errorBody === 'object' &&
|
|
119
|
+
'type' in errorBody &&
|
|
120
|
+
errorBody.type === 'not_found_error' &&
|
|
121
|
+
'message' in errorBody &&
|
|
122
|
+
typeof errorBody.message === 'string' &&
|
|
123
|
+
errorBody.message.includes('model:')
|
|
124
|
+
) {
|
|
125
|
+
return { valid: false, error: `Model '${modelName}' not found` }
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Generic API error
|
|
129
|
+
return { valid: false, error: `API error: ${error.message}` }
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// For unknown errors, be safe and reject
|
|
133
|
+
const errorMessage = error instanceof Error ? error.message : String(error)
|
|
134
|
+
return {
|
|
135
|
+
valid: false,
|
|
136
|
+
error: `Unable to validate model: ${errorMessage}`,
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// @[MODEL LAUNCH]: Add a fallback suggestion chain for the new model → previous version
|
|
141
|
+
/**
|
|
142
|
+
* Suggest a fallback model for 3P users when the selected model is unavailable.
|
|
143
|
+
*/
|
|
144
|
+
function get3PFallbackSuggestion(model: string): string | undefined {
|
|
145
|
+
if (getAPIProvider() === 'firstParty') {
|
|
146
|
+
return undefined
|
|
147
|
+
}
|
|
148
|
+
const lowerModel = model.toLowerCase()
|
|
149
|
+
if (lowerModel.includes('opus-4-6') || lowerModel.includes('opus_4_6')) {
|
|
150
|
+
return getModelStrings().opus41
|
|
151
|
+
}
|
|
152
|
+
if (lowerModel.includes('sonnet-4-6') || lowerModel.includes('sonnet_4_6')) {
|
|
153
|
+
return getModelStrings().sonnet45
|
|
154
|
+
}
|
|
155
|
+
if (lowerModel.includes('sonnet-4-5') || lowerModel.includes('sonnet_4_5')) {
|
|
156
|
+
return getModelStrings().sonnet40
|
|
157
|
+
}
|
|
158
|
+
return undefined
|
|
159
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import type { BetaUsage as Usage } from '@anthropic-ai/sdk/resources/beta/messages/messages.mjs'
|
|
2
|
+
import type { AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS } from 'src/services/analytics/index.js'
|
|
3
|
+
import { logEvent } from 'src/services/analytics/index.js'
|
|
4
|
+
import { setHasUnknownModelCost } from '../bootstrap/state.js'
|
|
5
|
+
import { isFastModeEnabled } from './fastMode.js'
|
|
6
|
+
import {
|
|
7
|
+
CLAUDE_3_5_HAIKU_CONFIG,
|
|
8
|
+
CLAUDE_3_5_V2_SONNET_CONFIG,
|
|
9
|
+
CLAUDE_3_7_SONNET_CONFIG,
|
|
10
|
+
CLAUDE_HAIKU_4_5_CONFIG,
|
|
11
|
+
CLAUDE_OPUS_4_1_CONFIG,
|
|
12
|
+
CLAUDE_OPUS_4_5_CONFIG,
|
|
13
|
+
CLAUDE_OPUS_4_6_CONFIG,
|
|
14
|
+
CLAUDE_OPUS_4_CONFIG,
|
|
15
|
+
CLAUDE_SONNET_4_5_CONFIG,
|
|
16
|
+
CLAUDE_SONNET_4_6_CONFIG,
|
|
17
|
+
CLAUDE_SONNET_4_CONFIG,
|
|
18
|
+
} from './model/configs.js'
|
|
19
|
+
import {
|
|
20
|
+
firstPartyNameToCanonical,
|
|
21
|
+
getCanonicalName,
|
|
22
|
+
getDefaultMainLoopModelSetting,
|
|
23
|
+
type ModelShortName,
|
|
24
|
+
} from './model/model.js'
|
|
25
|
+
|
|
26
|
+
// @see https://platform.claude.com/docs/en/about-claude/pricing
|
|
27
|
+
export type ModelCosts = {
|
|
28
|
+
inputTokens: number
|
|
29
|
+
outputTokens: number
|
|
30
|
+
promptCacheWriteTokens: number
|
|
31
|
+
promptCacheReadTokens: number
|
|
32
|
+
webSearchRequests: number
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Standard pricing tier for Sonnet models: $3 input / $15 output per Mtok
|
|
36
|
+
export const COST_TIER_3_15 = {
|
|
37
|
+
inputTokens: 3,
|
|
38
|
+
outputTokens: 15,
|
|
39
|
+
promptCacheWriteTokens: 3.75,
|
|
40
|
+
promptCacheReadTokens: 0.3,
|
|
41
|
+
webSearchRequests: 0.01,
|
|
42
|
+
} as const satisfies ModelCosts
|
|
43
|
+
|
|
44
|
+
// Pricing tier for Opus 4/4.1: $15 input / $75 output per Mtok
|
|
45
|
+
export const COST_TIER_15_75 = {
|
|
46
|
+
inputTokens: 15,
|
|
47
|
+
outputTokens: 75,
|
|
48
|
+
promptCacheWriteTokens: 18.75,
|
|
49
|
+
promptCacheReadTokens: 1.5,
|
|
50
|
+
webSearchRequests: 0.01,
|
|
51
|
+
} as const satisfies ModelCosts
|
|
52
|
+
|
|
53
|
+
// Pricing tier for Opus 4.5: $5 input / $25 output per Mtok
|
|
54
|
+
export const COST_TIER_5_25 = {
|
|
55
|
+
inputTokens: 5,
|
|
56
|
+
outputTokens: 25,
|
|
57
|
+
promptCacheWriteTokens: 6.25,
|
|
58
|
+
promptCacheReadTokens: 0.5,
|
|
59
|
+
webSearchRequests: 0.01,
|
|
60
|
+
} as const satisfies ModelCosts
|
|
61
|
+
|
|
62
|
+
// Fast mode pricing for Opus 4.6: $30 input / $150 output per Mtok
|
|
63
|
+
export const COST_TIER_30_150 = {
|
|
64
|
+
inputTokens: 30,
|
|
65
|
+
outputTokens: 150,
|
|
66
|
+
promptCacheWriteTokens: 37.5,
|
|
67
|
+
promptCacheReadTokens: 3,
|
|
68
|
+
webSearchRequests: 0.01,
|
|
69
|
+
} as const satisfies ModelCosts
|
|
70
|
+
|
|
71
|
+
// Pricing for Haiku 3.5: $0.80 input / $4 output per Mtok
|
|
72
|
+
export const COST_HAIKU_35 = {
|
|
73
|
+
inputTokens: 0.8,
|
|
74
|
+
outputTokens: 4,
|
|
75
|
+
promptCacheWriteTokens: 1,
|
|
76
|
+
promptCacheReadTokens: 0.08,
|
|
77
|
+
webSearchRequests: 0.01,
|
|
78
|
+
} as const satisfies ModelCosts
|
|
79
|
+
|
|
80
|
+
// Pricing for Haiku 4.5: $1 input / $5 output per Mtok
|
|
81
|
+
export const COST_HAIKU_45 = {
|
|
82
|
+
inputTokens: 1,
|
|
83
|
+
outputTokens: 5,
|
|
84
|
+
promptCacheWriteTokens: 1.25,
|
|
85
|
+
promptCacheReadTokens: 0.1,
|
|
86
|
+
webSearchRequests: 0.01,
|
|
87
|
+
} as const satisfies ModelCosts
|
|
88
|
+
|
|
89
|
+
const DEFAULT_UNKNOWN_MODEL_COST = COST_TIER_5_25
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Get the cost tier for Opus 4.6 based on fast mode.
|
|
93
|
+
*/
|
|
94
|
+
export function getOpus46CostTier(fastMode: boolean): ModelCosts {
|
|
95
|
+
if (isFastModeEnabled() && fastMode) {
|
|
96
|
+
return COST_TIER_30_150
|
|
97
|
+
}
|
|
98
|
+
return COST_TIER_5_25
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// @[MODEL LAUNCH]: Add a pricing entry for the new model below.
|
|
102
|
+
// Costs from https://platform.claude.com/docs/en/about-claude/pricing
|
|
103
|
+
// Web search cost: $10 per 1000 requests = $0.01 per request
|
|
104
|
+
export const MODEL_COSTS: Record<ModelShortName, ModelCosts> = {
|
|
105
|
+
[firstPartyNameToCanonical(CLAUDE_3_5_HAIKU_CONFIG.firstParty)]:
|
|
106
|
+
COST_HAIKU_35,
|
|
107
|
+
[firstPartyNameToCanonical(CLAUDE_HAIKU_4_5_CONFIG.firstParty)]:
|
|
108
|
+
COST_HAIKU_45,
|
|
109
|
+
[firstPartyNameToCanonical(CLAUDE_3_5_V2_SONNET_CONFIG.firstParty)]:
|
|
110
|
+
COST_TIER_3_15,
|
|
111
|
+
[firstPartyNameToCanonical(CLAUDE_3_7_SONNET_CONFIG.firstParty)]:
|
|
112
|
+
COST_TIER_3_15,
|
|
113
|
+
[firstPartyNameToCanonical(CLAUDE_SONNET_4_CONFIG.firstParty)]:
|
|
114
|
+
COST_TIER_3_15,
|
|
115
|
+
[firstPartyNameToCanonical(CLAUDE_SONNET_4_5_CONFIG.firstParty)]:
|
|
116
|
+
COST_TIER_3_15,
|
|
117
|
+
[firstPartyNameToCanonical(CLAUDE_SONNET_4_6_CONFIG.firstParty)]:
|
|
118
|
+
COST_TIER_3_15,
|
|
119
|
+
[firstPartyNameToCanonical(CLAUDE_OPUS_4_CONFIG.firstParty)]: COST_TIER_15_75,
|
|
120
|
+
[firstPartyNameToCanonical(CLAUDE_OPUS_4_1_CONFIG.firstParty)]:
|
|
121
|
+
COST_TIER_15_75,
|
|
122
|
+
[firstPartyNameToCanonical(CLAUDE_OPUS_4_5_CONFIG.firstParty)]:
|
|
123
|
+
COST_TIER_5_25,
|
|
124
|
+
[firstPartyNameToCanonical(CLAUDE_OPUS_4_6_CONFIG.firstParty)]:
|
|
125
|
+
COST_TIER_5_25,
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Calculates the USD cost based on token usage and model cost configuration
|
|
130
|
+
*/
|
|
131
|
+
function tokensToUSDCost(modelCosts: ModelCosts, usage: Usage): number {
|
|
132
|
+
return (
|
|
133
|
+
(usage.input_tokens / 1_000_000) * modelCosts.inputTokens +
|
|
134
|
+
(usage.output_tokens / 1_000_000) * modelCosts.outputTokens +
|
|
135
|
+
((usage.cache_read_input_tokens ?? 0) / 1_000_000) *
|
|
136
|
+
modelCosts.promptCacheReadTokens +
|
|
137
|
+
((usage.cache_creation_input_tokens ?? 0) / 1_000_000) *
|
|
138
|
+
modelCosts.promptCacheWriteTokens +
|
|
139
|
+
(usage.server_tool_use?.web_search_requests ?? 0) *
|
|
140
|
+
modelCosts.webSearchRequests
|
|
141
|
+
)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export function getModelCosts(model: string, usage: Usage): ModelCosts {
|
|
145
|
+
const shortName = getCanonicalName(model)
|
|
146
|
+
|
|
147
|
+
// Check if this is an Opus 4.6 model with fast mode active.
|
|
148
|
+
if (
|
|
149
|
+
shortName === firstPartyNameToCanonical(CLAUDE_OPUS_4_6_CONFIG.firstParty)
|
|
150
|
+
) {
|
|
151
|
+
const isFastMode = usage.speed === 'fast'
|
|
152
|
+
return getOpus46CostTier(isFastMode)
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const costs = MODEL_COSTS[shortName]
|
|
156
|
+
if (!costs) {
|
|
157
|
+
trackUnknownModelCost(model, shortName)
|
|
158
|
+
return (
|
|
159
|
+
MODEL_COSTS[getCanonicalName(getDefaultMainLoopModelSetting())] ??
|
|
160
|
+
DEFAULT_UNKNOWN_MODEL_COST
|
|
161
|
+
)
|
|
162
|
+
}
|
|
163
|
+
return costs
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
function trackUnknownModelCost(model: string, shortName: ModelShortName): void {
|
|
167
|
+
logEvent('tengu_unknown_model_cost', {
|
|
168
|
+
model: model as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
169
|
+
shortName:
|
|
170
|
+
shortName as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
171
|
+
})
|
|
172
|
+
setHasUnknownModelCost()
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// Calculate the cost of a query in US dollars.
|
|
176
|
+
// If the model's costs are not found, use the default model's costs.
|
|
177
|
+
export function calculateUSDCost(resolvedModel: string, usage: Usage): number {
|
|
178
|
+
const modelCosts = getModelCosts(resolvedModel, usage)
|
|
179
|
+
return tokensToUSDCost(modelCosts, usage)
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Calculate cost from raw token counts without requiring a full BetaUsage object.
|
|
184
|
+
* Useful for side queries (e.g. classifier) that track token counts independently.
|
|
185
|
+
*/
|
|
186
|
+
export function calculateCostFromTokens(
|
|
187
|
+
model: string,
|
|
188
|
+
tokens: {
|
|
189
|
+
inputTokens: number
|
|
190
|
+
outputTokens: number
|
|
191
|
+
cacheReadInputTokens: number
|
|
192
|
+
cacheCreationInputTokens: number
|
|
193
|
+
},
|
|
194
|
+
): number {
|
|
195
|
+
const usage: Usage = {
|
|
196
|
+
input_tokens: tokens.inputTokens,
|
|
197
|
+
output_tokens: tokens.outputTokens,
|
|
198
|
+
cache_read_input_tokens: tokens.cacheReadInputTokens,
|
|
199
|
+
cache_creation_input_tokens: tokens.cacheCreationInputTokens,
|
|
200
|
+
} as Usage
|
|
201
|
+
return calculateUSDCost(model, usage)
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function formatPrice(price: number): string {
|
|
205
|
+
// Format price: integers without decimals, others with 2 decimal places
|
|
206
|
+
// e.g., 3 -> "$3", 0.8 -> "$0.80", 22.5 -> "$22.50"
|
|
207
|
+
if (Number.isInteger(price)) {
|
|
208
|
+
return `$${price}`
|
|
209
|
+
}
|
|
210
|
+
return `$${price.toFixed(2)}`
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Format model costs as a pricing string for display
|
|
215
|
+
* e.g., "$3/$15 per Mtok"
|
|
216
|
+
*/
|
|
217
|
+
export function formatModelPricing(costs: ModelCosts): string {
|
|
218
|
+
return `${formatPrice(costs.inputTokens)}/${formatPrice(costs.outputTokens)} per Mtok`
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Get formatted pricing string for a model
|
|
223
|
+
* Accepts either a short name or full model name
|
|
224
|
+
* Returns undefined if model is not found
|
|
225
|
+
*/
|
|
226
|
+
export function getModelPricingString(model: string): string | undefined {
|
|
227
|
+
const shortName = getCanonicalName(model)
|
|
228
|
+
const costs = MODEL_COSTS[shortName]
|
|
229
|
+
if (!costs) return undefined
|
|
230
|
+
return formatModelPricing(costs)
|
|
231
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export type ModifierKey = 'shift' | 'command' | 'control' | 'option'
|
|
2
|
+
|
|
3
|
+
let prewarmed = false
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Pre-warm the native module by loading it in advance.
|
|
7
|
+
* Call this early to avoid delay on first use.
|
|
8
|
+
*/
|
|
9
|
+
export function prewarmModifiers(): void {
|
|
10
|
+
if (prewarmed || process.platform !== 'darwin') {
|
|
11
|
+
return
|
|
12
|
+
}
|
|
13
|
+
prewarmed = true
|
|
14
|
+
// Load module in background
|
|
15
|
+
try {
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
17
|
+
const { prewarm } = require('modifiers-napi') as { prewarm: () => void }
|
|
18
|
+
prewarm()
|
|
19
|
+
} catch {
|
|
20
|
+
// Ignore errors during prewarm
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Check if a specific modifier key is currently pressed (synchronous).
|
|
26
|
+
*/
|
|
27
|
+
export function isModifierPressed(modifier: ModifierKey): boolean {
|
|
28
|
+
if (process.platform !== 'darwin') {
|
|
29
|
+
return false
|
|
30
|
+
}
|
|
31
|
+
// Dynamic import to avoid loading native module at top level
|
|
32
|
+
const { isModifierPressed: nativeIsModifierPressed } =
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
34
|
+
require('modifiers-napi') as { isModifierPressed: (m: string) => boolean }
|
|
35
|
+
return nativeIsModifierPressed(modifier)
|
|
36
|
+
}
|