@xelauvas/xela-cli 0.1.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/README.md +200 -0
- package/bin/xela +100 -0
- package/package.json +88 -0
- package/src/QueryEngine.ts +1295 -0
- package/src/Task.ts +125 -0
- package/src/Tool.ts +792 -0
- package/src/_shims/_generated_stubs/_universal_stub.mjs +168 -0
- package/src/_shims/_generated_stubs/text_stub.mjs +1 -0
- package/src/_shims/bun_bundle.js +9 -0
- package/src/_shims/cjs_stub.cjs +23 -0
- package/src/_shims/empty_stub.js +33 -0
- package/src/_shims/loader.js +352 -0
- package/src/_shims/openai_adapter.ts +486 -0
- package/src/_shims/react_compiler_runtime.js +17 -0
- package/src/_shims/register.js +148 -0
- package/src/assistant/sessionHistory.ts +87 -0
- package/src/bootstrap/state.ts +1759 -0
- package/src/bridge/bridgeApi.ts +539 -0
- package/src/bridge/bridgeConfig.ts +48 -0
- package/src/bridge/bridgeDebug.ts +135 -0
- package/src/bridge/bridgeEnabled.ts +202 -0
- package/src/bridge/bridgeMain.ts +2999 -0
- package/src/bridge/bridgeMessaging.ts +461 -0
- package/src/bridge/bridgePermissionCallbacks.ts +43 -0
- package/src/bridge/bridgePointer.ts +210 -0
- package/src/bridge/bridgeStatusUtil.ts +163 -0
- package/src/bridge/bridgeUI.ts +530 -0
- package/src/bridge/capacityWake.ts +56 -0
- package/src/bridge/codeSessionApi.ts +168 -0
- package/src/bridge/createSession.ts +384 -0
- package/src/bridge/debugUtils.ts +141 -0
- package/src/bridge/envLessBridgeConfig.ts +165 -0
- package/src/bridge/flushGate.ts +71 -0
- package/src/bridge/inboundAttachments.ts +175 -0
- package/src/bridge/inboundMessages.ts +80 -0
- package/src/bridge/initReplBridge.ts +569 -0
- package/src/bridge/jwtUtils.ts +256 -0
- package/src/bridge/pollConfig.ts +110 -0
- package/src/bridge/pollConfigDefaults.ts +82 -0
- package/src/bridge/remoteBridgeCore.ts +1008 -0
- package/src/bridge/replBridge.ts +2406 -0
- package/src/bridge/replBridgeHandle.ts +36 -0
- package/src/bridge/replBridgeTransport.ts +370 -0
- package/src/bridge/sessionIdCompat.ts +57 -0
- package/src/bridge/sessionRunner.ts +550 -0
- package/src/bridge/trustedDevice.ts +210 -0
- package/src/bridge/types.ts +262 -0
- package/src/bridge/workSecret.ts +127 -0
- package/src/buddy/CompanionSprite.tsx +371 -0
- package/src/buddy/companion.ts +133 -0
- package/src/buddy/prompt.ts +36 -0
- package/src/buddy/sprites.ts +514 -0
- package/src/buddy/types.ts +148 -0
- package/src/buddy/useBuddyNotification.tsx +98 -0
- package/src/cli/exit.ts +31 -0
- package/src/cli/handlers/agents.ts +70 -0
- package/src/cli/handlers/auth.ts +330 -0
- package/src/cli/handlers/autoMode.ts +170 -0
- package/src/cli/handlers/mcp.tsx +362 -0
- package/src/cli/handlers/plugins.ts +878 -0
- package/src/cli/handlers/util.tsx +110 -0
- package/src/cli/ndjsonSafeStringify.ts +32 -0
- package/src/cli/print.ts +5594 -0
- package/src/cli/remoteIO.ts +255 -0
- package/src/cli/structuredIO.ts +859 -0
- package/src/cli/transports/HybridTransport.ts +282 -0
- package/src/cli/transports/SSETransport.ts +711 -0
- package/src/cli/transports/SerialBatchEventUploader.ts +275 -0
- package/src/cli/transports/WebSocketTransport.ts +800 -0
- package/src/cli/transports/WorkerStateUploader.ts +131 -0
- package/src/cli/transports/ccrClient.ts +998 -0
- package/src/cli/transports/transportUtils.ts +45 -0
- package/src/cli/update.ts +422 -0
- package/src/commands/add-dir/add-dir.tsx +126 -0
- package/src/commands/add-dir/index.ts +11 -0
- package/src/commands/add-dir/validation.ts +110 -0
- package/src/commands/advisor.ts +109 -0
- package/src/commands/agents/agents.tsx +12 -0
- package/src/commands/agents/index.ts +10 -0
- package/src/commands/ant-trace/index.js +1 -0
- package/src/commands/autofix-pr/index.js +1 -0
- package/src/commands/backfill-sessions/index.js +1 -0
- package/src/commands/branch/branch.ts +296 -0
- package/src/commands/branch/index.ts +14 -0
- package/src/commands/break-cache/index.js +1 -0
- package/src/commands/bridge/bridge.tsx +509 -0
- package/src/commands/bridge/index.ts +26 -0
- package/src/commands/bridge-kick.ts +200 -0
- package/src/commands/brief.ts +130 -0
- package/src/commands/btw/btw.tsx +243 -0
- package/src/commands/btw/index.ts +13 -0
- package/src/commands/bughunter/index.js +1 -0
- package/src/commands/chrome/chrome.tsx +285 -0
- package/src/commands/chrome/index.ts +13 -0
- package/src/commands/clear/caches.ts +144 -0
- package/src/commands/clear/clear.ts +7 -0
- package/src/commands/clear/conversation.ts +251 -0
- package/src/commands/clear/index.ts +19 -0
- package/src/commands/color/color.ts +93 -0
- package/src/commands/color/index.ts +16 -0
- package/src/commands/commit-push-pr.ts +158 -0
- package/src/commands/commit.ts +92 -0
- package/src/commands/compact/compact.ts +287 -0
- package/src/commands/compact/index.ts +15 -0
- package/src/commands/config/config.tsx +7 -0
- package/src/commands/config/index.ts +11 -0
- package/src/commands/context/context-noninteractive.ts +325 -0
- package/src/commands/context/context.tsx +64 -0
- package/src/commands/context/index.ts +24 -0
- package/src/commands/copy/copy.tsx +371 -0
- package/src/commands/copy/index.ts +15 -0
- package/src/commands/cost/cost.ts +24 -0
- package/src/commands/cost/index.ts +23 -0
- package/src/commands/createMovedToPluginCommand.ts +65 -0
- package/src/commands/ctx_viz/index.js +1 -0
- package/src/commands/debug-tool-call/index.js +1 -0
- package/src/commands/desktop/desktop.tsx +9 -0
- package/src/commands/desktop/index.ts +26 -0
- package/src/commands/diff/diff.tsx +9 -0
- package/src/commands/diff/index.ts +8 -0
- package/src/commands/doctor/doctor.tsx +7 -0
- package/src/commands/doctor/index.ts +12 -0
- package/src/commands/effort/effort.tsx +183 -0
- package/src/commands/effort/index.ts +13 -0
- package/src/commands/env/index.js +1 -0
- package/src/commands/exit/exit.tsx +33 -0
- package/src/commands/exit/index.ts +12 -0
- package/src/commands/export/export.tsx +91 -0
- package/src/commands/export/index.ts +11 -0
- package/src/commands/extra-usage/extra-usage-core.ts +118 -0
- package/src/commands/extra-usage/extra-usage-noninteractive.ts +16 -0
- package/src/commands/extra-usage/extra-usage.tsx +17 -0
- package/src/commands/extra-usage/index.ts +31 -0
- package/src/commands/fast/fast.tsx +269 -0
- package/src/commands/fast/index.ts +26 -0
- package/src/commands/feedback/feedback.tsx +25 -0
- package/src/commands/feedback/index.ts +26 -0
- package/src/commands/files/files.ts +19 -0
- package/src/commands/files/index.ts +12 -0
- package/src/commands/good-claude/index.js +1 -0
- package/src/commands/heapdump/heapdump.ts +17 -0
- package/src/commands/heapdump/index.ts +12 -0
- package/src/commands/help/help.tsx +11 -0
- package/src/commands/help/index.ts +10 -0
- package/src/commands/hooks/hooks.tsx +13 -0
- package/src/commands/hooks/index.ts +11 -0
- package/src/commands/ide/ide.tsx +646 -0
- package/src/commands/ide/index.ts +11 -0
- package/src/commands/init-verifiers.ts +262 -0
- package/src/commands/init.ts +256 -0
- package/src/commands/insights.ts +3200 -0
- package/src/commands/install-github-app/ApiKeyStep.tsx +231 -0
- package/src/commands/install-github-app/CheckExistingSecretStep.tsx +190 -0
- package/src/commands/install-github-app/CheckGitHubStep.tsx +15 -0
- package/src/commands/install-github-app/ChooseRepoStep.tsx +211 -0
- package/src/commands/install-github-app/CreatingStep.tsx +65 -0
- package/src/commands/install-github-app/ErrorStep.tsx +85 -0
- package/src/commands/install-github-app/ExistingWorkflowStep.tsx +103 -0
- package/src/commands/install-github-app/InstallAppStep.tsx +94 -0
- package/src/commands/install-github-app/OAuthFlowStep.tsx +276 -0
- package/src/commands/install-github-app/SuccessStep.tsx +96 -0
- package/src/commands/install-github-app/WarningsStep.tsx +73 -0
- package/src/commands/install-github-app/index.ts +13 -0
- package/src/commands/install-github-app/install-github-app.tsx +587 -0
- package/src/commands/install-github-app/setupGitHubActions.ts +325 -0
- package/src/commands/install-slack-app/index.ts +12 -0
- package/src/commands/install-slack-app/install-slack-app.ts +30 -0
- package/src/commands/install.tsx +300 -0
- package/src/commands/issue/index.js +1 -0
- package/src/commands/keybindings/index.ts +13 -0
- package/src/commands/keybindings/keybindings.ts +53 -0
- package/src/commands/login/index.ts +14 -0
- package/src/commands/login/login.tsx +104 -0
- package/src/commands/logout/index.ts +10 -0
- package/src/commands/logout/logout.tsx +82 -0
- package/src/commands/mcp/addCommand.ts +280 -0
- package/src/commands/mcp/index.ts +12 -0
- package/src/commands/mcp/mcp.tsx +85 -0
- package/src/commands/mcp/xaaIdpCommand.ts +266 -0
- package/src/commands/memory/index.ts +10 -0
- package/src/commands/memory/memory.tsx +90 -0
- package/src/commands/mobile/index.ts +11 -0
- package/src/commands/mobile/mobile.tsx +274 -0
- package/src/commands/mock-limits/index.js +1 -0
- package/src/commands/model/index.ts +16 -0
- package/src/commands/model/model.tsx +297 -0
- package/src/commands/oauth-refresh/index.js +1 -0
- package/src/commands/onboarding/index.js +1 -0
- package/src/commands/output-style/index.ts +11 -0
- package/src/commands/output-style/output-style.tsx +7 -0
- package/src/commands/passes/index.ts +22 -0
- package/src/commands/passes/passes.tsx +24 -0
- package/src/commands/perf-issue/index.js +1 -0
- package/src/commands/permissions/index.ts +11 -0
- package/src/commands/permissions/permissions.tsx +10 -0
- package/src/commands/plan/index.ts +11 -0
- package/src/commands/plan/plan.tsx +122 -0
- package/src/commands/plugin/AddMarketplace.tsx +162 -0
- package/src/commands/plugin/BrowseMarketplace.tsx +802 -0
- package/src/commands/plugin/DiscoverPlugins.tsx +781 -0
- package/src/commands/plugin/ManageMarketplaces.tsx +838 -0
- package/src/commands/plugin/ManagePlugins.tsx +2215 -0
- package/src/commands/plugin/PluginErrors.tsx +124 -0
- package/src/commands/plugin/PluginOptionsDialog.tsx +357 -0
- package/src/commands/plugin/PluginOptionsFlow.tsx +135 -0
- package/src/commands/plugin/PluginSettings.tsx +1072 -0
- package/src/commands/plugin/PluginTrustWarning.tsx +32 -0
- package/src/commands/plugin/UnifiedInstalledCell.tsx +565 -0
- package/src/commands/plugin/ValidatePlugin.tsx +98 -0
- package/src/commands/plugin/index.tsx +11 -0
- package/src/commands/plugin/parseArgs.ts +103 -0
- package/src/commands/plugin/plugin.tsx +7 -0
- package/src/commands/plugin/pluginDetailsHelpers.tsx +117 -0
- package/src/commands/plugin/usePagination.ts +171 -0
- package/src/commands/pr_comments/index.ts +50 -0
- package/src/commands/privacy-settings/index.ts +14 -0
- package/src/commands/privacy-settings/privacy-settings.tsx +58 -0
- package/src/commands/rate-limit-options/index.ts +19 -0
- package/src/commands/rate-limit-options/rate-limit-options.tsx +210 -0
- package/src/commands/release-notes/index.ts +11 -0
- package/src/commands/release-notes/release-notes.ts +50 -0
- package/src/commands/reload-plugins/index.ts +18 -0
- package/src/commands/reload-plugins/reload-plugins.ts +61 -0
- package/src/commands/remote-env/index.ts +15 -0
- package/src/commands/remote-env/remote-env.tsx +7 -0
- package/src/commands/remote-setup/api.ts +182 -0
- package/src/commands/remote-setup/index.ts +20 -0
- package/src/commands/remote-setup/remote-setup.tsx +187 -0
- package/src/commands/rename/generateSessionName.ts +67 -0
- package/src/commands/rename/index.ts +12 -0
- package/src/commands/rename/rename.ts +87 -0
- package/src/commands/reset-limits/index.js +4 -0
- package/src/commands/resume/index.ts +12 -0
- package/src/commands/resume/resume.tsx +275 -0
- package/src/commands/review/UltrareviewOverageDialog.tsx +96 -0
- package/src/commands/review/reviewRemote.ts +316 -0
- package/src/commands/review/ultrareviewCommand.tsx +58 -0
- package/src/commands/review/ultrareviewEnabled.ts +14 -0
- package/src/commands/review.ts +57 -0
- package/src/commands/rewind/index.ts +13 -0
- package/src/commands/rewind/rewind.ts +13 -0
- package/src/commands/sandbox-toggle/index.ts +50 -0
- package/src/commands/sandbox-toggle/sandbox-toggle.tsx +83 -0
- package/src/commands/security-review.ts +243 -0
- package/src/commands/session/index.ts +16 -0
- package/src/commands/session/session.tsx +140 -0
- package/src/commands/share/index.js +1 -0
- package/src/commands/skills/index.ts +10 -0
- package/src/commands/skills/skills.tsx +8 -0
- package/src/commands/stats/index.ts +10 -0
- package/src/commands/stats/stats.tsx +7 -0
- package/src/commands/status/index.ts +12 -0
- package/src/commands/status/status.tsx +8 -0
- package/src/commands/statusline.tsx +24 -0
- package/src/commands/stickers/index.ts +11 -0
- package/src/commands/stickers/stickers.ts +16 -0
- package/src/commands/summary/index.js +1 -0
- package/src/commands/tag/index.ts +12 -0
- package/src/commands/tag/tag.tsx +215 -0
- package/src/commands/tasks/index.ts +11 -0
- package/src/commands/tasks/tasks.tsx +8 -0
- package/src/commands/teleport/index.js +1 -0
- package/src/commands/terminalSetup/index.ts +23 -0
- package/src/commands/terminalSetup/terminalSetup.tsx +531 -0
- package/src/commands/theme/index.ts +10 -0
- package/src/commands/theme/theme.tsx +57 -0
- package/src/commands/thinkback/index.ts +13 -0
- package/src/commands/thinkback/thinkback.tsx +554 -0
- package/src/commands/thinkback-play/index.ts +17 -0
- package/src/commands/thinkback-play/thinkback-play.ts +43 -0
- package/src/commands/ultraplan.tsx +471 -0
- package/src/commands/upgrade/index.ts +16 -0
- package/src/commands/upgrade/upgrade.tsx +38 -0
- package/src/commands/usage/index.ts +9 -0
- package/src/commands/usage/usage.tsx +7 -0
- package/src/commands/version.ts +22 -0
- package/src/commands/vim/index.ts +11 -0
- package/src/commands/vim/vim.ts +38 -0
- package/src/commands/voice/index.ts +20 -0
- package/src/commands/voice/voice.ts +150 -0
- package/src/commands.ts +754 -0
- package/src/components/AgentProgressLine.tsx +136 -0
- package/src/components/App.tsx +56 -0
- package/src/components/ApproveApiKey.tsx +123 -0
- package/src/components/AutoModeOptInDialog.tsx +142 -0
- package/src/components/AutoUpdater.tsx +198 -0
- package/src/components/AutoUpdaterWrapper.tsx +91 -0
- package/src/components/AwsAuthStatusBox.tsx +82 -0
- package/src/components/BaseTextInput.tsx +136 -0
- package/src/components/BashModeProgress.tsx +56 -0
- package/src/components/BridgeDialog.tsx +401 -0
- package/src/components/BypassPermissionsModeDialog.tsx +87 -0
- package/src/components/ChannelDowngradeDialog.tsx +102 -0
- package/src/components/ClaudeCodeHint/PluginHintMenu.tsx +78 -0
- package/src/components/ClaudeInChromeOnboarding.tsx +121 -0
- package/src/components/ClaudeMdExternalIncludesDialog.tsx +137 -0
- package/src/components/ClickableImageRef.tsx +73 -0
- package/src/components/CompactSummary.tsx +118 -0
- package/src/components/ConfigurableShortcutHint.tsx +57 -0
- package/src/components/ConsoleOAuthFlow.tsx +631 -0
- package/src/components/ContextSuggestions.tsx +47 -0
- package/src/components/ContextVisualization.tsx +489 -0
- package/src/components/CoordinatorAgentStatus.tsx +273 -0
- package/src/components/CostThresholdDialog.tsx +50 -0
- package/src/components/CtrlOToExpand.tsx +51 -0
- package/src/components/CustomSelect/SelectMulti.tsx +213 -0
- package/src/components/CustomSelect/index.ts +3 -0
- package/src/components/CustomSelect/option-map.ts +50 -0
- package/src/components/CustomSelect/select-input-option.tsx +488 -0
- package/src/components/CustomSelect/select-option.tsx +68 -0
- package/src/components/CustomSelect/select.tsx +690 -0
- package/src/components/CustomSelect/use-multi-select-state.ts +414 -0
- package/src/components/CustomSelect/use-select-input.ts +287 -0
- package/src/components/CustomSelect/use-select-navigation.ts +653 -0
- package/src/components/CustomSelect/use-select-state.ts +157 -0
- package/src/components/DesktopHandoff.tsx +193 -0
- package/src/components/DesktopUpsell/DesktopUpsellStartup.tsx +171 -0
- package/src/components/DevBar.tsx +49 -0
- package/src/components/DevChannelsDialog.tsx +105 -0
- package/src/components/DiagnosticsDisplay.tsx +95 -0
- package/src/components/EffortCallout.tsx +265 -0
- package/src/components/EffortIndicator.ts +42 -0
- package/src/components/ExitFlow.tsx +48 -0
- package/src/components/ExportDialog.tsx +128 -0
- package/src/components/FallbackToolUseErrorMessage.tsx +116 -0
- package/src/components/FallbackToolUseRejectedMessage.tsx +16 -0
- package/src/components/FastIcon.tsx +46 -0
- package/src/components/Feedback.tsx +592 -0
- package/src/components/FeedbackSurvey/FeedbackSurvey.tsx +174 -0
- package/src/components/FeedbackSurvey/FeedbackSurveyView.tsx +108 -0
- package/src/components/FeedbackSurvey/TranscriptSharePrompt.tsx +88 -0
- package/src/components/FeedbackSurvey/submitTranscriptShare.ts +112 -0
- package/src/components/FeedbackSurvey/useDebouncedDigitInput.ts +82 -0
- package/src/components/FeedbackSurvey/useFeedbackSurvey.tsx +296 -0
- package/src/components/FeedbackSurvey/useMemorySurvey.tsx +213 -0
- package/src/components/FeedbackSurvey/usePostCompactSurvey.tsx +206 -0
- package/src/components/FeedbackSurvey/useSurveyState.tsx +100 -0
- package/src/components/FileEditToolDiff.tsx +181 -0
- package/src/components/FileEditToolUpdatedMessage.tsx +124 -0
- package/src/components/FileEditToolUseRejectedMessage.tsx +170 -0
- package/src/components/FilePathLink.tsx +43 -0
- package/src/components/FullscreenLayout.tsx +637 -0
- package/src/components/GlobalSearchDialog.tsx +343 -0
- package/src/components/HelpV2/Commands.tsx +82 -0
- package/src/components/HelpV2/General.tsx +23 -0
- package/src/components/HelpV2/HelpV2.tsx +184 -0
- package/src/components/HighlightedCode/Fallback.tsx +193 -0
- package/src/components/HighlightedCode.tsx +190 -0
- package/src/components/HistorySearchDialog.tsx +118 -0
- package/src/components/IdeAutoConnectDialog.tsx +154 -0
- package/src/components/IdeOnboardingDialog.tsx +167 -0
- package/src/components/IdeStatusIndicator.tsx +58 -0
- package/src/components/IdleReturnDialog.tsx +118 -0
- package/src/components/InterruptedByUser.tsx +15 -0
- package/src/components/InvalidConfigDialog.tsx +156 -0
- package/src/components/InvalidSettingsDialog.tsx +89 -0
- package/src/components/KeybindingWarnings.tsx +55 -0
- package/src/components/LanguagePicker.tsx +86 -0
- package/src/components/LogSelector.tsx +1575 -0
- package/src/components/LogoV2/AnimatedAsterisk.tsx +50 -0
- package/src/components/LogoV2/AnimatedClawd.tsx +124 -0
- package/src/components/LogoV2/ChannelsNotice.tsx +266 -0
- package/src/components/LogoV2/Clawd.tsx +240 -0
- package/src/components/LogoV2/CondensedLogo.tsx +161 -0
- package/src/components/LogoV2/EmergencyTip.tsx +58 -0
- package/src/components/LogoV2/Feed.tsx +112 -0
- package/src/components/LogoV2/FeedColumn.tsx +59 -0
- package/src/components/LogoV2/GuestPassesUpsell.tsx +70 -0
- package/src/components/LogoV2/LogoV2.tsx +543 -0
- package/src/components/LogoV2/Opus1mMergeNotice.tsx +55 -0
- package/src/components/LogoV2/OverageCreditUpsell.tsx +166 -0
- package/src/components/LogoV2/VoiceModeNotice.tsx +68 -0
- package/src/components/LogoV2/WelcomeV2.tsx +433 -0
- package/src/components/LogoV2/feedConfigs.tsx +92 -0
- package/src/components/LspRecommendation/LspRecommendationMenu.tsx +88 -0
- package/src/components/MCPServerApprovalDialog.tsx +115 -0
- package/src/components/MCPServerDesktopImportDialog.tsx +203 -0
- package/src/components/MCPServerDialogCopy.tsx +15 -0
- package/src/components/MCPServerMultiselectDialog.tsx +133 -0
- package/src/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.tsx +149 -0
- package/src/components/ManagedSettingsSecurityDialog/utils.ts +144 -0
- package/src/components/Markdown.tsx +236 -0
- package/src/components/MarkdownTable.tsx +322 -0
- package/src/components/MemoryUsageIndicator.tsx +37 -0
- package/src/components/Message.tsx +627 -0
- package/src/components/MessageModel.tsx +43 -0
- package/src/components/MessageResponse.tsx +78 -0
- package/src/components/MessageRow.tsx +383 -0
- package/src/components/MessageSelector.tsx +831 -0
- package/src/components/MessageTimestamp.tsx +63 -0
- package/src/components/Messages.tsx +834 -0
- package/src/components/ModelPicker.tsx +448 -0
- package/src/components/NativeAutoUpdater.tsx +193 -0
- package/src/components/NotebookEditToolUseRejectedMessage.tsx +92 -0
- package/src/components/OffscreenFreeze.tsx +44 -0
- package/src/components/Onboarding.tsx +244 -0
- package/src/components/OutputStylePicker.tsx +112 -0
- package/src/components/PackageManagerAutoUpdater.tsx +104 -0
- package/src/components/Passes/Passes.tsx +184 -0
- package/src/components/PrBadge.tsx +97 -0
- package/src/components/PressEnterToContinue.tsx +15 -0
- package/src/components/PromptInput/HistorySearchInput.tsx +51 -0
- package/src/components/PromptInput/IssueFlagBanner.tsx +12 -0
- package/src/components/PromptInput/Notifications.tsx +332 -0
- package/src/components/PromptInput/PromptInput.tsx +2339 -0
- package/src/components/PromptInput/PromptInputFooter.tsx +191 -0
- package/src/components/PromptInput/PromptInputFooterLeftSide.tsx +517 -0
- package/src/components/PromptInput/PromptInputFooterSuggestions.tsx +293 -0
- package/src/components/PromptInput/PromptInputHelpMenu.tsx +358 -0
- package/src/components/PromptInput/PromptInputModeIndicator.tsx +93 -0
- package/src/components/PromptInput/PromptInputQueuedCommands.tsx +117 -0
- package/src/components/PromptInput/PromptInputStashNotice.tsx +25 -0
- package/src/components/PromptInput/SandboxPromptFooterHint.tsx +64 -0
- package/src/components/PromptInput/ShimmeredInput.tsx +143 -0
- package/src/components/PromptInput/VoiceIndicator.tsx +137 -0
- package/src/components/PromptInput/inputModes.ts +33 -0
- package/src/components/PromptInput/inputPaste.ts +90 -0
- package/src/components/PromptInput/useMaybeTruncateInput.ts +58 -0
- package/src/components/PromptInput/usePromptInputPlaceholder.ts +76 -0
- package/src/components/PromptInput/useShowFastIconHint.ts +31 -0
- package/src/components/PromptInput/useSwarmBanner.ts +155 -0
- package/src/components/PromptInput/utils.ts +60 -0
- package/src/components/QuickOpenDialog.tsx +244 -0
- package/src/components/RemoteCallout.tsx +76 -0
- package/src/components/RemoteEnvironmentDialog.tsx +340 -0
- package/src/components/ResumeTask.tsx +268 -0
- package/src/components/SandboxViolationExpandedView.tsx +99 -0
- package/src/components/ScrollKeybindingHandler.tsx +1012 -0
- package/src/components/SearchBox.tsx +72 -0
- package/src/components/SentryErrorBoundary.ts +28 -0
- package/src/components/SessionBackgroundHint.tsx +108 -0
- package/src/components/SessionPreview.tsx +194 -0
- package/src/components/Settings/Config.tsx +1822 -0
- package/src/components/Settings/Settings.tsx +137 -0
- package/src/components/Settings/Status.tsx +241 -0
- package/src/components/Settings/Usage.tsx +377 -0
- package/src/components/ShowInIDEPrompt.tsx +170 -0
- package/src/components/SkillImprovementSurvey.tsx +152 -0
- package/src/components/Spinner/FlashingChar.tsx +61 -0
- package/src/components/Spinner/GlimmerMessage.tsx +328 -0
- package/src/components/Spinner/ShimmerChar.tsx +36 -0
- package/src/components/Spinner/SpinnerAnimationRow.tsx +265 -0
- package/src/components/Spinner/SpinnerGlyph.tsx +80 -0
- package/src/components/Spinner/TeammateSpinnerLine.tsx +233 -0
- package/src/components/Spinner/TeammateSpinnerTree.tsx +272 -0
- package/src/components/Spinner/index.ts +10 -0
- package/src/components/Spinner/teammateSelectHint.ts +1 -0
- package/src/components/Spinner/useShimmerAnimation.ts +31 -0
- package/src/components/Spinner/useStalledAnimation.ts +75 -0
- package/src/components/Spinner/utils.ts +84 -0
- package/src/components/Spinner.tsx +562 -0
- package/src/components/Stats.tsx +1228 -0
- package/src/components/StatusLine.tsx +324 -0
- package/src/components/StatusNotices.tsx +55 -0
- package/src/components/StructuredDiff/Fallback.tsx +487 -0
- package/src/components/StructuredDiff/colorDiff.ts +37 -0
- package/src/components/StructuredDiff.tsx +190 -0
- package/src/components/StructuredDiffList.tsx +30 -0
- package/src/components/TagTabs.tsx +139 -0
- package/src/components/TaskListV2.tsx +378 -0
- package/src/components/TeammateViewHeader.tsx +82 -0
- package/src/components/TeleportError.tsx +189 -0
- package/src/components/TeleportProgress.tsx +140 -0
- package/src/components/TeleportRepoMismatchDialog.tsx +104 -0
- package/src/components/TeleportResumeWrapper.tsx +167 -0
- package/src/components/TeleportStash.tsx +116 -0
- package/src/components/TextInput.tsx +124 -0
- package/src/components/ThemePicker.tsx +333 -0
- package/src/components/ThinkingToggle.tsx +153 -0
- package/src/components/TokenWarning.tsx +179 -0
- package/src/components/ToolUseLoader.tsx +42 -0
- package/src/components/TrustDialog/TrustDialog.tsx +290 -0
- package/src/components/TrustDialog/utils.ts +245 -0
- package/src/components/ValidationErrorsList.tsx +148 -0
- package/src/components/VimTextInput.tsx +140 -0
- package/src/components/VirtualMessageList.tsx +1082 -0
- package/src/components/WorkflowMultiselectDialog.tsx +128 -0
- package/src/components/WorktreeExitDialog.tsx +231 -0
- package/src/components/agents/AgentDetail.tsx +220 -0
- package/src/components/agents/AgentEditor.tsx +178 -0
- package/src/components/agents/AgentNavigationFooter.tsx +26 -0
- package/src/components/agents/AgentsList.tsx +440 -0
- package/src/components/agents/AgentsMenu.tsx +800 -0
- package/src/components/agents/ColorPicker.tsx +112 -0
- package/src/components/agents/ModelSelector.tsx +68 -0
- package/src/components/agents/ToolSelector.tsx +562 -0
- package/src/components/agents/agentFileUtils.ts +272 -0
- package/src/components/agents/generateAgent.ts +197 -0
- package/src/components/agents/new-agent-creation/CreateAgentWizard.tsx +97 -0
- package/src/components/agents/new-agent-creation/wizard-steps/ColorStep.tsx +84 -0
- package/src/components/agents/new-agent-creation/wizard-steps/ConfirmStep.tsx +378 -0
- package/src/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.tsx +74 -0
- package/src/components/agents/new-agent-creation/wizard-steps/DescriptionStep.tsx +123 -0
- package/src/components/agents/new-agent-creation/wizard-steps/GenerateStep.tsx +143 -0
- package/src/components/agents/new-agent-creation/wizard-steps/LocationStep.tsx +80 -0
- package/src/components/agents/new-agent-creation/wizard-steps/MemoryStep.tsx +113 -0
- package/src/components/agents/new-agent-creation/wizard-steps/MethodStep.tsx +80 -0
- package/src/components/agents/new-agent-creation/wizard-steps/ModelStep.tsx +52 -0
- package/src/components/agents/new-agent-creation/wizard-steps/PromptStep.tsx +128 -0
- package/src/components/agents/new-agent-creation/wizard-steps/ToolsStep.tsx +61 -0
- package/src/components/agents/new-agent-creation/wizard-steps/TypeStep.tsx +103 -0
- package/src/components/agents/types.ts +27 -0
- package/src/components/agents/utils.ts +18 -0
- package/src/components/agents/validateAgent.ts +109 -0
- package/src/components/design-system/Byline.tsx +77 -0
- package/src/components/design-system/Dialog.tsx +138 -0
- package/src/components/design-system/Divider.tsx +149 -0
- package/src/components/design-system/FuzzyPicker.tsx +312 -0
- package/src/components/design-system/KeyboardShortcutHint.tsx +81 -0
- package/src/components/design-system/ListItem.tsx +244 -0
- package/src/components/design-system/LoadingState.tsx +94 -0
- package/src/components/design-system/Pane.tsx +77 -0
- package/src/components/design-system/ProgressBar.tsx +86 -0
- package/src/components/design-system/Ratchet.tsx +80 -0
- package/src/components/design-system/StatusIcon.tsx +95 -0
- package/src/components/design-system/Tabs.tsx +340 -0
- package/src/components/design-system/ThemeProvider.tsx +174 -0
- package/src/components/design-system/ThemedBox.tsx +156 -0
- package/src/components/design-system/ThemedText.tsx +124 -0
- package/src/components/design-system/color.ts +30 -0
- package/src/components/diff/DiffDetailView.tsx +281 -0
- package/src/components/diff/DiffDialog.tsx +383 -0
- package/src/components/diff/DiffFileList.tsx +292 -0
- package/src/components/grove/Grove.tsx +463 -0
- package/src/components/hooks/HooksConfigMenu.tsx +578 -0
- package/src/components/hooks/PromptDialog.tsx +90 -0
- package/src/components/hooks/SelectEventMode.tsx +127 -0
- package/src/components/hooks/SelectHookMode.tsx +112 -0
- package/src/components/hooks/SelectMatcherMode.tsx +144 -0
- package/src/components/hooks/ViewHookMode.tsx +199 -0
- package/src/components/mcp/CapabilitiesSection.tsx +61 -0
- package/src/components/mcp/ElicitationDialog.tsx +1169 -0
- package/src/components/mcp/MCPAgentServerMenu.tsx +183 -0
- package/src/components/mcp/MCPListPanel.tsx +504 -0
- package/src/components/mcp/MCPReconnect.tsx +167 -0
- package/src/components/mcp/MCPRemoteServerMenu.tsx +649 -0
- package/src/components/mcp/MCPSettings.tsx +398 -0
- package/src/components/mcp/MCPStdioServerMenu.tsx +177 -0
- package/src/components/mcp/MCPToolDetailView.tsx +212 -0
- package/src/components/mcp/MCPToolListView.tsx +141 -0
- package/src/components/mcp/McpParsingWarnings.tsx +213 -0
- package/src/components/mcp/index.ts +9 -0
- package/src/components/mcp/utils/reconnectHelpers.tsx +49 -0
- package/src/components/memory/MemoryFileSelector.tsx +438 -0
- package/src/components/memory/MemoryUpdateNotification.tsx +45 -0
- package/src/components/messageActions.tsx +450 -0
- package/src/components/messages/AdvisorMessage.tsx +158 -0
- package/src/components/messages/AssistantRedactedThinkingMessage.tsx +31 -0
- package/src/components/messages/AssistantTextMessage.tsx +270 -0
- package/src/components/messages/AssistantThinkingMessage.tsx +86 -0
- package/src/components/messages/AssistantToolUseMessage.tsx +368 -0
- package/src/components/messages/AttachmentMessage.tsx +536 -0
- package/src/components/messages/CollapsedReadSearchContent.tsx +484 -0
- package/src/components/messages/CompactBoundaryMessage.tsx +18 -0
- package/src/components/messages/GroupedToolUseContent.tsx +58 -0
- package/src/components/messages/HighlightedThinkingText.tsx +162 -0
- package/src/components/messages/HookProgressMessage.tsx +116 -0
- package/src/components/messages/PlanApprovalMessage.tsx +222 -0
- package/src/components/messages/RateLimitMessage.tsx +161 -0
- package/src/components/messages/ShutdownMessage.tsx +132 -0
- package/src/components/messages/SystemAPIErrorMessage.tsx +141 -0
- package/src/components/messages/SystemTextMessage.tsx +827 -0
- package/src/components/messages/TaskAssignmentMessage.tsx +76 -0
- package/src/components/messages/UserAgentNotificationMessage.tsx +83 -0
- package/src/components/messages/UserBashInputMessage.tsx +58 -0
- package/src/components/messages/UserBashOutputMessage.tsx +54 -0
- package/src/components/messages/UserChannelMessage.tsx +137 -0
- package/src/components/messages/UserCommandMessage.tsx +108 -0
- package/src/components/messages/UserImageMessage.tsx +59 -0
- package/src/components/messages/UserLocalCommandOutputMessage.tsx +167 -0
- package/src/components/messages/UserMemoryInputMessage.tsx +75 -0
- package/src/components/messages/UserPlanMessage.tsx +42 -0
- package/src/components/messages/UserPromptMessage.tsx +80 -0
- package/src/components/messages/UserResourceUpdateMessage.tsx +121 -0
- package/src/components/messages/UserTeammateMessage.tsx +206 -0
- package/src/components/messages/UserTextMessage.tsx +275 -0
- package/src/components/messages/UserToolResultMessage/RejectedPlanMessage.tsx +31 -0
- package/src/components/messages/UserToolResultMessage/RejectedToolUseMessage.tsx +16 -0
- package/src/components/messages/UserToolResultMessage/UserToolCanceledMessage.tsx +16 -0
- package/src/components/messages/UserToolResultMessage/UserToolErrorMessage.tsx +103 -0
- package/src/components/messages/UserToolResultMessage/UserToolRejectMessage.tsx +95 -0
- package/src/components/messages/UserToolResultMessage/UserToolResultMessage.tsx +106 -0
- package/src/components/messages/UserToolResultMessage/UserToolSuccessMessage.tsx +104 -0
- package/src/components/messages/UserToolResultMessage/utils.tsx +44 -0
- package/src/components/messages/nullRenderingAttachments.ts +70 -0
- package/src/components/messages/teamMemCollapsed.tsx +140 -0
- package/src/components/messages/teamMemSaved.ts +19 -0
- package/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.tsx +645 -0
- package/src/components/permissions/AskUserQuestionPermissionRequest/PreviewBox.tsx +229 -0
- package/src/components/permissions/AskUserQuestionPermissionRequest/PreviewQuestionView.tsx +328 -0
- package/src/components/permissions/AskUserQuestionPermissionRequest/QuestionNavigationBar.tsx +178 -0
- package/src/components/permissions/AskUserQuestionPermissionRequest/QuestionView.tsx +465 -0
- package/src/components/permissions/AskUserQuestionPermissionRequest/SubmitQuestionsView.tsx +144 -0
- package/src/components/permissions/AskUserQuestionPermissionRequest/use-multiple-choice-state.ts +179 -0
- package/src/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx +482 -0
- package/src/components/permissions/BashPermissionRequest/bashToolUseOptions.tsx +147 -0
- package/src/components/permissions/ComputerUseApproval/ComputerUseApproval.tsx +441 -0
- package/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.tsx +122 -0
- package/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.tsx +768 -0
- package/src/components/permissions/FallbackPermissionRequest.tsx +333 -0
- package/src/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.tsx +182 -0
- package/src/components/permissions/FilePermissionDialog/FilePermissionDialog.tsx +204 -0
- package/src/components/permissions/FilePermissionDialog/ideDiffConfig.ts +42 -0
- package/src/components/permissions/FilePermissionDialog/permissionOptions.tsx +177 -0
- package/src/components/permissions/FilePermissionDialog/useFilePermissionDialog.ts +212 -0
- package/src/components/permissions/FilePermissionDialog/usePermissionHandler.ts +185 -0
- package/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.tsx +161 -0
- package/src/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.tsx +89 -0
- package/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.tsx +115 -0
- package/src/components/permissions/NotebookEditPermissionRequest/NotebookEditPermissionRequest.tsx +166 -0
- package/src/components/permissions/NotebookEditPermissionRequest/NotebookEditToolDiff.tsx +235 -0
- package/src/components/permissions/PermissionDecisionDebugInfo.tsx +460 -0
- package/src/components/permissions/PermissionDialog.tsx +72 -0
- package/src/components/permissions/PermissionExplanation.tsx +272 -0
- package/src/components/permissions/PermissionPrompt.tsx +336 -0
- package/src/components/permissions/PermissionRequest.tsx +217 -0
- package/src/components/permissions/PermissionRequestTitle.tsx +66 -0
- package/src/components/permissions/PermissionRuleExplanation.tsx +121 -0
- package/src/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.tsx +235 -0
- package/src/components/permissions/PowerShellPermissionRequest/powershellToolUseOptions.tsx +91 -0
- package/src/components/permissions/SandboxPermissionRequest.tsx +163 -0
- package/src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.tsx +230 -0
- package/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.tsx +369 -0
- package/src/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.tsx +258 -0
- package/src/components/permissions/WorkerBadge.tsx +49 -0
- package/src/components/permissions/WorkerPendingPermission.tsx +105 -0
- package/src/components/permissions/hooks.ts +209 -0
- package/src/components/permissions/rules/AddPermissionRules.tsx +180 -0
- package/src/components/permissions/rules/AddWorkspaceDirectory.tsx +340 -0
- package/src/components/permissions/rules/PermissionRuleDescription.tsx +76 -0
- package/src/components/permissions/rules/PermissionRuleInput.tsx +138 -0
- package/src/components/permissions/rules/PermissionRuleList.tsx +1179 -0
- package/src/components/permissions/rules/RecentDenialsTab.tsx +207 -0
- package/src/components/permissions/rules/RemoveWorkspaceDirectory.tsx +110 -0
- package/src/components/permissions/rules/WorkspaceTab.tsx +150 -0
- package/src/components/permissions/shellPermissionHelpers.tsx +164 -0
- package/src/components/permissions/useShellPermissionFeedback.ts +148 -0
- package/src/components/permissions/utils.ts +25 -0
- package/src/components/sandbox/SandboxConfigTab.tsx +45 -0
- package/src/components/sandbox/SandboxDependenciesTab.tsx +120 -0
- package/src/components/sandbox/SandboxDoctorSection.tsx +46 -0
- package/src/components/sandbox/SandboxOverridesTab.tsx +193 -0
- package/src/components/sandbox/SandboxSettings.tsx +296 -0
- package/src/components/shell/ExpandShellOutputContext.tsx +36 -0
- package/src/components/shell/OutputLine.tsx +118 -0
- package/src/components/shell/ShellProgressMessage.tsx +150 -0
- package/src/components/shell/ShellTimeDisplay.tsx +74 -0
- package/src/components/skills/SkillsMenu.tsx +237 -0
- package/src/components/tasks/AsyncAgentDetailDialog.tsx +229 -0
- package/src/components/tasks/BackgroundTask.tsx +345 -0
- package/src/components/tasks/BackgroundTaskStatus.tsx +429 -0
- package/src/components/tasks/BackgroundTasksDialog.tsx +652 -0
- package/src/components/tasks/DreamDetailDialog.tsx +251 -0
- package/src/components/tasks/InProcessTeammateDetailDialog.tsx +266 -0
- package/src/components/tasks/RemoteSessionDetailDialog.tsx +904 -0
- package/src/components/tasks/RemoteSessionProgress.tsx +243 -0
- package/src/components/tasks/ShellDetailDialog.tsx +404 -0
- package/src/components/tasks/ShellProgress.tsx +87 -0
- package/src/components/tasks/renderToolActivity.tsx +33 -0
- package/src/components/tasks/taskStatusUtils.tsx +107 -0
- package/src/components/teams/TeamStatus.tsx +80 -0
- package/src/components/teams/TeamsDialog.tsx +715 -0
- package/src/components/ui/OrderedList.tsx +71 -0
- package/src/components/ui/OrderedListItem.tsx +45 -0
- package/src/components/ui/TreeSelect.tsx +397 -0
- package/src/components/wizard/WizardDialogLayout.tsx +65 -0
- package/src/components/wizard/WizardNavigationFooter.tsx +24 -0
- package/src/components/wizard/WizardProvider.tsx +213 -0
- package/src/components/wizard/index.ts +9 -0
- package/src/components/wizard/useWizard.ts +13 -0
- package/src/constants/apiLimits.ts +94 -0
- package/src/constants/betas.ts +52 -0
- package/src/constants/common.ts +33 -0
- package/src/constants/cyberRiskInstruction.ts +24 -0
- package/src/constants/errorIds.ts +15 -0
- package/src/constants/figures.ts +45 -0
- package/src/constants/files.ts +156 -0
- package/src/constants/github-app.ts +144 -0
- package/src/constants/keys.ts +11 -0
- package/src/constants/messages.ts +1 -0
- package/src/constants/oauth.ts +234 -0
- package/src/constants/outputStyles.ts +216 -0
- package/src/constants/product.ts +76 -0
- package/src/constants/prompts.ts +914 -0
- package/src/constants/spinnerVerbs.ts +204 -0
- package/src/constants/system.ts +95 -0
- package/src/constants/systemPromptSections.ts +68 -0
- package/src/constants/toolLimits.ts +56 -0
- package/src/constants/tools.ts +112 -0
- package/src/constants/turnCompletionVerbs.ts +12 -0
- package/src/constants/xml.ts +86 -0
- package/src/context/QueuedMessageContext.tsx +63 -0
- package/src/context/fpsMetrics.tsx +30 -0
- package/src/context/mailbox.tsx +38 -0
- package/src/context/modalContext.tsx +58 -0
- package/src/context/notifications.tsx +240 -0
- package/src/context/overlayContext.tsx +151 -0
- package/src/context/promptOverlayContext.tsx +125 -0
- package/src/context/stats.tsx +220 -0
- package/src/context/voice.tsx +88 -0
- package/src/context.ts +189 -0
- package/src/coordinator/coordinatorMode.ts +369 -0
- package/src/cost-tracker.ts +323 -0
- package/src/costHook.ts +22 -0
- package/src/dialogLaunchers.tsx +133 -0
- package/src/entrypoints/agentSdkTypes.ts +443 -0
- package/src/entrypoints/cli.tsx +303 -0
- package/src/entrypoints/init.ts +340 -0
- package/src/entrypoints/mcp.ts +196 -0
- package/src/entrypoints/sandboxTypes.ts +156 -0
- package/src/entrypoints/sdk/controlSchemas.ts +663 -0
- package/src/entrypoints/sdk/coreSchemas.ts +1889 -0
- package/src/entrypoints/sdk/coreTypes.ts +62 -0
- package/src/history.ts +464 -0
- package/src/hooks/fileSuggestions.ts +811 -0
- package/src/hooks/notifs/useAutoModeUnavailableNotification.ts +56 -0
- package/src/hooks/notifs/useCanSwitchToExistingSubscription.tsx +60 -0
- package/src/hooks/notifs/useDeprecationWarningNotification.tsx +44 -0
- package/src/hooks/notifs/useFastModeNotification.tsx +162 -0
- package/src/hooks/notifs/useIDEStatusIndicator.tsx +186 -0
- package/src/hooks/notifs/useInstallMessages.tsx +26 -0
- package/src/hooks/notifs/useLspInitializationNotification.tsx +143 -0
- package/src/hooks/notifs/useMcpConnectivityStatus.tsx +88 -0
- package/src/hooks/notifs/useModelMigrationNotifications.tsx +52 -0
- package/src/hooks/notifs/useNpmDeprecationNotification.tsx +25 -0
- package/src/hooks/notifs/usePluginAutoupdateNotification.tsx +83 -0
- package/src/hooks/notifs/usePluginInstallationStatus.tsx +128 -0
- package/src/hooks/notifs/useRateLimitWarningNotification.tsx +114 -0
- package/src/hooks/notifs/useSettingsErrors.tsx +69 -0
- package/src/hooks/notifs/useStartupNotification.ts +41 -0
- package/src/hooks/notifs/useTeammateShutdownNotification.ts +78 -0
- package/src/hooks/renderPlaceholder.ts +51 -0
- package/src/hooks/toolPermission/PermissionContext.ts +388 -0
- package/src/hooks/toolPermission/handlers/coordinatorHandler.ts +65 -0
- package/src/hooks/toolPermission/handlers/interactiveHandler.ts +536 -0
- package/src/hooks/toolPermission/handlers/swarmWorkerHandler.ts +159 -0
- package/src/hooks/toolPermission/permissionLogging.ts +238 -0
- package/src/hooks/unifiedSuggestions.ts +202 -0
- package/src/hooks/useAfterFirstRender.ts +17 -0
- package/src/hooks/useApiKeyVerification.ts +84 -0
- package/src/hooks/useArrowKeyHistory.tsx +229 -0
- package/src/hooks/useAssistantHistory.ts +250 -0
- package/src/hooks/useAwaySummary.ts +125 -0
- package/src/hooks/useBackgroundTaskNavigation.ts +251 -0
- package/src/hooks/useBlink.ts +34 -0
- package/src/hooks/useCanUseTool.tsx +204 -0
- package/src/hooks/useCancelRequest.ts +276 -0
- package/src/hooks/useChromeExtensionNotification.tsx +50 -0
- package/src/hooks/useClaudeCodeHintRecommendation.tsx +129 -0
- package/src/hooks/useClipboardImageHint.ts +77 -0
- package/src/hooks/useCommandKeybindings.tsx +108 -0
- package/src/hooks/useCommandQueue.ts +15 -0
- package/src/hooks/useCopyOnSelect.ts +98 -0
- package/src/hooks/useDeferredHookMessages.ts +46 -0
- package/src/hooks/useDiffData.ts +110 -0
- package/src/hooks/useDiffInIDE.ts +379 -0
- package/src/hooks/useDirectConnect.ts +229 -0
- package/src/hooks/useDoublePress.ts +62 -0
- package/src/hooks/useDynamicConfig.ts +22 -0
- package/src/hooks/useElapsedTime.ts +37 -0
- package/src/hooks/useExitOnCtrlCD.ts +95 -0
- package/src/hooks/useExitOnCtrlCDWithKeybindings.ts +24 -0
- package/src/hooks/useFileHistorySnapshotInit.ts +25 -0
- package/src/hooks/useGlobalKeybindings.tsx +249 -0
- package/src/hooks/useHistorySearch.ts +303 -0
- package/src/hooks/useIDEIntegration.tsx +70 -0
- package/src/hooks/useIdeAtMentioned.ts +76 -0
- package/src/hooks/useIdeConnectionStatus.ts +33 -0
- package/src/hooks/useIdeLogging.ts +41 -0
- package/src/hooks/useIdeSelection.ts +150 -0
- package/src/hooks/useInboxPoller.ts +969 -0
- package/src/hooks/useInputBuffer.ts +132 -0
- package/src/hooks/useIssueFlagBanner.ts +133 -0
- package/src/hooks/useLogMessages.ts +119 -0
- package/src/hooks/useLspPluginRecommendation.tsx +194 -0
- package/src/hooks/useMailboxBridge.ts +21 -0
- package/src/hooks/useMainLoopModel.ts +34 -0
- package/src/hooks/useManagePlugins.ts +304 -0
- package/src/hooks/useMemoryUsage.ts +39 -0
- package/src/hooks/useMergedClients.ts +23 -0
- package/src/hooks/useMergedCommands.ts +15 -0
- package/src/hooks/useMergedTools.ts +44 -0
- package/src/hooks/useMinDisplayTime.ts +35 -0
- package/src/hooks/useNotifyAfterTimeout.ts +65 -0
- package/src/hooks/useOfficialMarketplaceNotification.tsx +48 -0
- package/src/hooks/usePasteHandler.ts +285 -0
- package/src/hooks/usePluginRecommendationBase.tsx +105 -0
- package/src/hooks/usePrStatus.ts +106 -0
- package/src/hooks/usePromptSuggestion.ts +177 -0
- package/src/hooks/usePromptsFromClaudeInChrome.tsx +71 -0
- package/src/hooks/useQueueProcessor.ts +68 -0
- package/src/hooks/useRemoteSession.ts +605 -0
- package/src/hooks/useReplBridge.tsx +723 -0
- package/src/hooks/useSSHSession.ts +241 -0
- package/src/hooks/useScheduledTasks.ts +139 -0
- package/src/hooks/useSearchInput.ts +364 -0
- package/src/hooks/useSessionBackgrounding.ts +158 -0
- package/src/hooks/useSettings.ts +17 -0
- package/src/hooks/useSettingsChange.ts +25 -0
- package/src/hooks/useSkillImprovementSurvey.ts +105 -0
- package/src/hooks/useSkillsChange.ts +62 -0
- package/src/hooks/useSwarmInitialization.ts +81 -0
- package/src/hooks/useSwarmPermissionPoller.ts +330 -0
- package/src/hooks/useTaskListWatcher.ts +221 -0
- package/src/hooks/useTasksV2.ts +250 -0
- package/src/hooks/useTeammateViewAutoExit.ts +63 -0
- package/src/hooks/useTeleportResume.tsx +85 -0
- package/src/hooks/useTerminalSize.ts +15 -0
- package/src/hooks/useTextInput.ts +529 -0
- package/src/hooks/useTimeout.ts +14 -0
- package/src/hooks/useTurnDiffs.ts +213 -0
- package/src/hooks/useTypeahead.tsx +1385 -0
- package/src/hooks/useUpdateNotification.ts +34 -0
- package/src/hooks/useVimInput.ts +316 -0
- package/src/hooks/useVirtualScroll.ts +721 -0
- package/src/hooks/useVoice.ts +1144 -0
- package/src/hooks/useVoiceEnabled.ts +25 -0
- package/src/hooks/useVoiceIntegration.tsx +677 -0
- package/src/ink/Ansi.tsx +292 -0
- package/src/ink/bidi.ts +139 -0
- package/src/ink/clearTerminal.ts +74 -0
- package/src/ink/colorize.ts +231 -0
- package/src/ink/components/AlternateScreen.tsx +80 -0
- package/src/ink/components/App.tsx +659 -0
- package/src/ink/components/AppContext.ts +21 -0
- package/src/ink/components/Box.tsx +214 -0
- package/src/ink/components/Button.tsx +192 -0
- package/src/ink/components/ClockContext.tsx +112 -0
- package/src/ink/components/CursorDeclarationContext.ts +32 -0
- package/src/ink/components/ErrorOverview.tsx +109 -0
- package/src/ink/components/Link.tsx +42 -0
- package/src/ink/components/Newline.tsx +39 -0
- package/src/ink/components/NoSelect.tsx +68 -0
- package/src/ink/components/RawAnsi.tsx +57 -0
- package/src/ink/components/ScrollBox.tsx +237 -0
- package/src/ink/components/Spacer.tsx +20 -0
- package/src/ink/components/StdinContext.ts +49 -0
- package/src/ink/components/TerminalFocusContext.tsx +52 -0
- package/src/ink/components/TerminalSizeContext.tsx +7 -0
- package/src/ink/components/Text.tsx +254 -0
- package/src/ink/constants.ts +2 -0
- package/src/ink/dom.ts +484 -0
- package/src/ink/events/click-event.ts +38 -0
- package/src/ink/events/dispatcher.ts +233 -0
- package/src/ink/events/emitter.ts +39 -0
- package/src/ink/events/event-handlers.ts +73 -0
- package/src/ink/events/event.ts +11 -0
- package/src/ink/events/focus-event.ts +21 -0
- package/src/ink/events/input-event.ts +205 -0
- package/src/ink/events/keyboard-event.ts +51 -0
- package/src/ink/events/terminal-event.ts +107 -0
- package/src/ink/events/terminal-focus-event.ts +19 -0
- package/src/ink/focus.ts +181 -0
- package/src/ink/frame.ts +124 -0
- package/src/ink/get-max-width.ts +27 -0
- package/src/ink/hit-test.ts +130 -0
- package/src/ink/hooks/use-animation-frame.ts +57 -0
- package/src/ink/hooks/use-app.ts +8 -0
- package/src/ink/hooks/use-declared-cursor.ts +73 -0
- package/src/ink/hooks/use-input.ts +92 -0
- package/src/ink/hooks/use-interval.ts +67 -0
- package/src/ink/hooks/use-search-highlight.ts +53 -0
- package/src/ink/hooks/use-selection.ts +104 -0
- package/src/ink/hooks/use-stdin.ts +8 -0
- package/src/ink/hooks/use-tab-status.ts +72 -0
- package/src/ink/hooks/use-terminal-focus.ts +16 -0
- package/src/ink/hooks/use-terminal-title.ts +31 -0
- package/src/ink/hooks/use-terminal-viewport.ts +96 -0
- package/src/ink/ink.tsx +1728 -0
- package/src/ink/instances.ts +10 -0
- package/src/ink/layout/engine.ts +6 -0
- package/src/ink/layout/geometry.ts +97 -0
- package/src/ink/layout/node.ts +152 -0
- package/src/ink/layout/yoga.ts +308 -0
- package/src/ink/line-width-cache.ts +24 -0
- package/src/ink/log-update.ts +773 -0
- package/src/ink/measure-element.ts +23 -0
- package/src/ink/measure-text.ts +47 -0
- package/src/ink/node-cache.ts +54 -0
- package/src/ink/optimizer.ts +93 -0
- package/src/ink/output.ts +797 -0
- package/src/ink/parse-keypress.ts +801 -0
- package/src/ink/reconciler.ts +512 -0
- package/src/ink/render-border.ts +231 -0
- package/src/ink/render-node-to-output.ts +1462 -0
- package/src/ink/render-to-screen.ts +231 -0
- package/src/ink/renderer.ts +178 -0
- package/src/ink/root.ts +184 -0
- package/src/ink/screen.ts +1486 -0
- package/src/ink/searchHighlight.ts +93 -0
- package/src/ink/selection.ts +917 -0
- package/src/ink/squash-text-nodes.ts +92 -0
- package/src/ink/stringWidth.ts +222 -0
- package/src/ink/styles.ts +771 -0
- package/src/ink/supports-hyperlinks.ts +57 -0
- package/src/ink/tabstops.ts +46 -0
- package/src/ink/terminal-focus-state.ts +47 -0
- package/src/ink/terminal-querier.ts +212 -0
- package/src/ink/terminal.ts +248 -0
- package/src/ink/termio/ansi.ts +75 -0
- package/src/ink/termio/csi.ts +319 -0
- package/src/ink/termio/dec.ts +60 -0
- package/src/ink/termio/esc.ts +67 -0
- package/src/ink/termio/osc.ts +493 -0
- package/src/ink/termio/parser.ts +394 -0
- package/src/ink/termio/sgr.ts +308 -0
- package/src/ink/termio/tokenize.ts +319 -0
- package/src/ink/termio/types.ts +236 -0
- package/src/ink/termio.ts +42 -0
- package/src/ink/useTerminalNotification.ts +126 -0
- package/src/ink/warn.ts +9 -0
- package/src/ink/widest-line.ts +19 -0
- package/src/ink/wrap-text.ts +74 -0
- package/src/ink/wrapAnsi.ts +20 -0
- package/src/ink.ts +85 -0
- package/src/interactiveHelpers.tsx +367 -0
- package/src/keybindings/KeybindingContext.tsx +243 -0
- package/src/keybindings/KeybindingProviderSetup.tsx +308 -0
- package/src/keybindings/defaultBindings.ts +340 -0
- package/src/keybindings/loadUserBindings.ts +472 -0
- package/src/keybindings/match.ts +120 -0
- package/src/keybindings/parser.ts +203 -0
- package/src/keybindings/reservedShortcuts.ts +127 -0
- package/src/keybindings/resolver.ts +244 -0
- package/src/keybindings/schema.ts +236 -0
- package/src/keybindings/shortcutFormat.ts +63 -0
- package/src/keybindings/template.ts +52 -0
- package/src/keybindings/useKeybinding.ts +196 -0
- package/src/keybindings/useShortcutDisplay.ts +59 -0
- package/src/keybindings/validate.ts +498 -0
- package/src/main.tsx +4684 -0
- package/src/memdir/findRelevantMemories.ts +141 -0
- package/src/memdir/memdir.ts +507 -0
- package/src/memdir/memoryAge.ts +53 -0
- package/src/memdir/memoryScan.ts +94 -0
- package/src/memdir/memoryTypes.ts +271 -0
- package/src/memdir/paths.ts +278 -0
- package/src/memdir/teamMemPaths.ts +292 -0
- package/src/memdir/teamMemPrompts.ts +100 -0
- package/src/migrations/migrateAutoUpdatesToSettings.ts +61 -0
- package/src/migrations/migrateBypassPermissionsAcceptedToSettings.ts +40 -0
- package/src/migrations/migrateEnableAllProjectMcpServersToSettings.ts +118 -0
- package/src/migrations/migrateFennecToOpus.ts +45 -0
- package/src/migrations/migrateLegacyOpusToCurrent.ts +57 -0
- package/src/migrations/migrateOpusToOpus1m.ts +43 -0
- package/src/migrations/migrateReplBridgeEnabledToRemoteControlAtStartup.ts +22 -0
- package/src/migrations/migrateSonnet1mToSonnet45.ts +48 -0
- package/src/migrations/migrateSonnet45ToSonnet46.ts +67 -0
- package/src/migrations/resetAutoModeOptInForDefaultOffer.ts +51 -0
- package/src/migrations/resetProToOpusDefault.ts +51 -0
- package/src/moreright/useMoreRight.tsx +26 -0
- package/src/native-ts/color-diff/index.ts +999 -0
- package/src/native-ts/file-index/index.ts +370 -0
- package/src/native-ts/yoga-layout/enums.ts +134 -0
- package/src/native-ts/yoga-layout/index.ts +2578 -0
- package/src/outputStyles/loadOutputStylesDir.ts +98 -0
- package/src/plugins/builtinPlugins.ts +159 -0
- package/src/plugins/bundled/index.ts +23 -0
- package/src/projectOnboardingState.ts +83 -0
- package/src/query/config.ts +46 -0
- package/src/query/deps.ts +40 -0
- package/src/query/stopHooks.ts +473 -0
- package/src/query/tokenBudget.ts +93 -0
- package/src/query.ts +1729 -0
- package/src/remote/RemoteSessionManager.ts +343 -0
- package/src/remote/SessionsWebSocket.ts +404 -0
- package/src/remote/remotePermissionBridge.ts +78 -0
- package/src/remote/sdkMessageAdapter.ts +302 -0
- package/src/replLauncher.tsx +23 -0
- package/src/schemas/hooks.ts +222 -0
- package/src/screens/Doctor.tsx +575 -0
- package/src/screens/REPL.tsx +5006 -0
- package/src/screens/ResumeConversation.tsx +399 -0
- package/src/server/createDirectConnectSession.ts +88 -0
- package/src/server/directConnectManager.ts +213 -0
- package/src/server/types.ts +57 -0
- package/src/services/AgentSummary/agentSummary.ts +179 -0
- package/src/services/MagicDocs/magicDocs.ts +254 -0
- package/src/services/MagicDocs/prompts.ts +127 -0
- package/src/services/PromptSuggestion/promptSuggestion.ts +523 -0
- package/src/services/PromptSuggestion/speculation.ts +991 -0
- package/src/services/SessionMemory/prompts.ts +324 -0
- package/src/services/SessionMemory/sessionMemory.ts +495 -0
- package/src/services/SessionMemory/sessionMemoryUtils.ts +207 -0
- package/src/services/analytics/config.ts +38 -0
- package/src/services/analytics/datadog.ts +307 -0
- package/src/services/analytics/firstPartyEventLogger.ts +449 -0
- package/src/services/analytics/firstPartyEventLoggingExporter.ts +806 -0
- package/src/services/analytics/growthbook.ts +1157 -0
- package/src/services/analytics/index.ts +173 -0
- package/src/services/analytics/metadata.ts +973 -0
- package/src/services/analytics/sink.ts +114 -0
- package/src/services/analytics/sinkKillswitch.ts +25 -0
- package/src/services/api/adminRequests.ts +119 -0
- package/src/services/api/bootstrap.ts +142 -0
- package/src/services/api/claude.ts +3433 -0
- package/src/services/api/client.ts +395 -0
- package/src/services/api/dumpPrompts.ts +226 -0
- package/src/services/api/emptyUsage.ts +22 -0
- package/src/services/api/errorUtils.ts +260 -0
- package/src/services/api/errors.ts +1207 -0
- package/src/services/api/filesApi.ts +748 -0
- package/src/services/api/firstTokenDate.ts +60 -0
- package/src/services/api/grove.ts +357 -0
- package/src/services/api/logging.ts +788 -0
- package/src/services/api/metricsOptOut.ts +159 -0
- package/src/services/api/overageCreditGrant.ts +137 -0
- package/src/services/api/promptCacheBreakDetection.ts +727 -0
- package/src/services/api/referral.ts +281 -0
- package/src/services/api/sessionIngress.ts +514 -0
- package/src/services/api/ultrareviewQuota.ts +38 -0
- package/src/services/api/usage.ts +63 -0
- package/src/services/api/withRetry.ts +826 -0
- package/src/services/autoDream/autoDream.ts +324 -0
- package/src/services/autoDream/config.ts +21 -0
- package/src/services/autoDream/consolidationLock.ts +140 -0
- package/src/services/autoDream/consolidationPrompt.ts +65 -0
- package/src/services/awaySummary.ts +74 -0
- package/src/services/claudeAiLimits.ts +515 -0
- package/src/services/claudeAiLimitsHook.ts +23 -0
- package/src/services/compact/apiMicrocompact.ts +153 -0
- package/src/services/compact/autoCompact.ts +351 -0
- package/src/services/compact/compact.ts +1705 -0
- package/src/services/compact/compactWarningHook.ts +16 -0
- package/src/services/compact/compactWarningState.ts +18 -0
- package/src/services/compact/grouping.ts +63 -0
- package/src/services/compact/microCompact.ts +530 -0
- package/src/services/compact/postCompactCleanup.ts +77 -0
- package/src/services/compact/prompt.ts +374 -0
- package/src/services/compact/sessionMemoryCompact.ts +630 -0
- package/src/services/compact/timeBasedMCConfig.ts +43 -0
- package/src/services/diagnosticTracking.ts +397 -0
- package/src/services/extractMemories/extractMemories.ts +615 -0
- package/src/services/extractMemories/prompts.ts +154 -0
- package/src/services/internalLogging.ts +90 -0
- package/src/services/lsp/LSPClient.ts +447 -0
- package/src/services/lsp/LSPDiagnosticRegistry.ts +386 -0
- package/src/services/lsp/LSPServerInstance.ts +511 -0
- package/src/services/lsp/LSPServerManager.ts +420 -0
- package/src/services/lsp/config.ts +79 -0
- package/src/services/lsp/manager.ts +289 -0
- package/src/services/lsp/passiveFeedback.ts +328 -0
- package/src/services/mcp/InProcessTransport.ts +63 -0
- package/src/services/mcp/MCPConnectionManager.tsx +73 -0
- package/src/services/mcp/SdkControlTransport.ts +136 -0
- package/src/services/mcp/auth.ts +2465 -0
- package/src/services/mcp/channelAllowlist.ts +76 -0
- package/src/services/mcp/channelNotification.ts +316 -0
- package/src/services/mcp/channelPermissions.ts +240 -0
- package/src/services/mcp/claudeai.ts +164 -0
- package/src/services/mcp/client.ts +3348 -0
- package/src/services/mcp/config.ts +1578 -0
- package/src/services/mcp/elicitationHandler.ts +313 -0
- package/src/services/mcp/envExpansion.ts +38 -0
- package/src/services/mcp/headersHelper.ts +138 -0
- package/src/services/mcp/mcpStringUtils.ts +106 -0
- package/src/services/mcp/normalization.ts +23 -0
- package/src/services/mcp/oauthPort.ts +78 -0
- package/src/services/mcp/officialRegistry.ts +72 -0
- package/src/services/mcp/types.ts +258 -0
- package/src/services/mcp/useManageMCPConnections.ts +1141 -0
- package/src/services/mcp/utils.ts +575 -0
- package/src/services/mcp/vscodeSdkMcp.ts +112 -0
- package/src/services/mcp/xaa.ts +511 -0
- package/src/services/mcp/xaaIdpLogin.ts +487 -0
- package/src/services/mcpServerApproval.tsx +41 -0
- package/src/services/mockRateLimits.ts +882 -0
- package/src/services/notifier.ts +156 -0
- package/src/services/oauth/auth-code-listener.ts +211 -0
- package/src/services/oauth/client.ts +566 -0
- package/src/services/oauth/crypto.ts +23 -0
- package/src/services/oauth/getOauthProfile.ts +53 -0
- package/src/services/oauth/index.ts +198 -0
- package/src/services/plugins/PluginInstallationManager.ts +184 -0
- package/src/services/plugins/pluginCliCommands.ts +344 -0
- package/src/services/plugins/pluginOperations.ts +1088 -0
- package/src/services/policyLimits/index.ts +664 -0
- package/src/services/policyLimits/types.ts +27 -0
- package/src/services/preventSleep.ts +165 -0
- package/src/services/rateLimitMessages.ts +344 -0
- package/src/services/rateLimitMocking.ts +144 -0
- package/src/services/remoteManagedSettings/index.ts +639 -0
- package/src/services/remoteManagedSettings/securityCheck.tsx +74 -0
- package/src/services/remoteManagedSettings/syncCache.ts +112 -0
- package/src/services/remoteManagedSettings/syncCacheState.ts +96 -0
- package/src/services/remoteManagedSettings/types.ts +31 -0
- package/src/services/settingsSync/index.ts +581 -0
- package/src/services/settingsSync/types.ts +67 -0
- package/src/services/teamMemorySync/index.ts +1256 -0
- package/src/services/teamMemorySync/secretScanner.ts +324 -0
- package/src/services/teamMemorySync/teamMemSecretGuard.ts +44 -0
- package/src/services/teamMemorySync/types.ts +156 -0
- package/src/services/teamMemorySync/watcher.ts +387 -0
- package/src/services/tips/tipHistory.ts +17 -0
- package/src/services/tips/tipRegistry.ts +686 -0
- package/src/services/tips/tipScheduler.ts +58 -0
- package/src/services/tokenEstimation.ts +495 -0
- package/src/services/toolUseSummary/toolUseSummaryGenerator.ts +112 -0
- package/src/services/tools/StreamingToolExecutor.ts +530 -0
- package/src/services/tools/toolExecution.ts +1745 -0
- package/src/services/tools/toolHooks.ts +650 -0
- package/src/services/tools/toolOrchestration.ts +188 -0
- package/src/services/vcr.ts +406 -0
- package/src/services/voice.ts +525 -0
- package/src/services/voiceKeyterms.ts +106 -0
- package/src/services/voiceStreamSTT.ts +544 -0
- package/src/setup.ts +477 -0
- package/src/skills/bundled/batch.ts +124 -0
- package/src/skills/bundled/claudeApi.ts +196 -0
- package/src/skills/bundled/claudeApiContent.ts +75 -0
- package/src/skills/bundled/claudeInChrome.ts +34 -0
- package/src/skills/bundled/debug.ts +103 -0
- package/src/skills/bundled/index.ts +79 -0
- package/src/skills/bundled/keybindings.ts +339 -0
- package/src/skills/bundled/loop.ts +92 -0
- package/src/skills/bundled/loremIpsum.ts +282 -0
- package/src/skills/bundled/remember.ts +82 -0
- package/src/skills/bundled/scheduleRemoteAgents.ts +447 -0
- package/src/skills/bundled/simplify.ts +69 -0
- package/src/skills/bundled/skillify.ts +197 -0
- package/src/skills/bundled/stuck.ts +79 -0
- package/src/skills/bundled/updateConfig.ts +475 -0
- package/src/skills/bundled/verify.ts +30 -0
- package/src/skills/bundled/verifyContent.ts +13 -0
- package/src/skills/bundledSkills.ts +220 -0
- package/src/skills/loadSkillsDir.ts +1086 -0
- package/src/skills/mcpSkillBuilders.ts +44 -0
- package/src/state/AppState.tsx +200 -0
- package/src/state/AppStateStore.ts +569 -0
- package/src/state/onChangeAppState.ts +171 -0
- package/src/state/selectors.ts +76 -0
- package/src/state/store.ts +34 -0
- package/src/state/teammateViewHelpers.ts +141 -0
- package/src/tasks/DreamTask/DreamTask.ts +157 -0
- package/src/tasks/InProcessTeammateTask/InProcessTeammateTask.tsx +126 -0
- package/src/tasks/InProcessTeammateTask/types.ts +121 -0
- package/src/tasks/LocalAgentTask/LocalAgentTask.tsx +683 -0
- package/src/tasks/LocalMainSessionTask.ts +479 -0
- package/src/tasks/LocalShellTask/LocalShellTask.tsx +523 -0
- package/src/tasks/LocalShellTask/guards.ts +41 -0
- package/src/tasks/LocalShellTask/killShellTasks.ts +76 -0
- package/src/tasks/RemoteAgentTask/RemoteAgentTask.tsx +856 -0
- package/src/tasks/pillLabel.ts +82 -0
- package/src/tasks/stopTask.ts +100 -0
- package/src/tasks/types.ts +46 -0
- package/src/tasks.ts +39 -0
- package/src/tools/AgentTool/AgentTool.tsx +1398 -0
- package/src/tools/AgentTool/UI.tsx +872 -0
- package/src/tools/AgentTool/agentColorManager.ts +66 -0
- package/src/tools/AgentTool/agentDisplay.ts +104 -0
- package/src/tools/AgentTool/agentMemory.ts +177 -0
- package/src/tools/AgentTool/agentMemorySnapshot.ts +197 -0
- package/src/tools/AgentTool/agentToolUtils.ts +686 -0
- package/src/tools/AgentTool/built-in/claudeCodeGuideAgent.ts +205 -0
- package/src/tools/AgentTool/built-in/exploreAgent.ts +83 -0
- package/src/tools/AgentTool/built-in/generalPurposeAgent.ts +34 -0
- package/src/tools/AgentTool/built-in/planAgent.ts +92 -0
- package/src/tools/AgentTool/built-in/statuslineSetup.ts +144 -0
- package/src/tools/AgentTool/built-in/verificationAgent.ts +152 -0
- package/src/tools/AgentTool/builtInAgents.ts +72 -0
- package/src/tools/AgentTool/constants.ts +12 -0
- package/src/tools/AgentTool/forkSubagent.ts +210 -0
- package/src/tools/AgentTool/loadAgentsDir.ts +755 -0
- package/src/tools/AgentTool/prompt.ts +287 -0
- package/src/tools/AgentTool/resumeAgent.ts +265 -0
- package/src/tools/AgentTool/runAgent.ts +973 -0
- package/src/tools/AskUserQuestionTool/AskUserQuestionTool.tsx +266 -0
- package/src/tools/AskUserQuestionTool/prompt.ts +44 -0
- package/src/tools/BashTool/BashTool.tsx +1144 -0
- package/src/tools/BashTool/BashToolResultMessage.tsx +191 -0
- package/src/tools/BashTool/UI.tsx +185 -0
- package/src/tools/BashTool/bashCommandHelpers.ts +265 -0
- package/src/tools/BashTool/bashPermissions.ts +2621 -0
- package/src/tools/BashTool/bashSecurity.ts +2592 -0
- package/src/tools/BashTool/commandSemantics.ts +140 -0
- package/src/tools/BashTool/commentLabel.ts +13 -0
- package/src/tools/BashTool/destructiveCommandWarning.ts +102 -0
- package/src/tools/BashTool/modeValidation.ts +115 -0
- package/src/tools/BashTool/pathValidation.ts +1303 -0
- package/src/tools/BashTool/prompt.ts +369 -0
- package/src/tools/BashTool/readOnlyValidation.ts +1990 -0
- package/src/tools/BashTool/sedEditParser.ts +322 -0
- package/src/tools/BashTool/sedValidation.ts +684 -0
- package/src/tools/BashTool/shouldUseSandbox.ts +153 -0
- package/src/tools/BashTool/toolName.ts +2 -0
- package/src/tools/BashTool/utils.ts +223 -0
- package/src/tools/BriefTool/BriefTool.ts +204 -0
- package/src/tools/BriefTool/UI.tsx +101 -0
- package/src/tools/BriefTool/attachments.ts +110 -0
- package/src/tools/BriefTool/prompt.ts +22 -0
- package/src/tools/BriefTool/upload.ts +174 -0
- package/src/tools/ConfigTool/ConfigTool.ts +467 -0
- package/src/tools/ConfigTool/UI.tsx +38 -0
- package/src/tools/ConfigTool/constants.ts +1 -0
- package/src/tools/ConfigTool/prompt.ts +93 -0
- package/src/tools/ConfigTool/supportedSettings.ts +211 -0
- package/src/tools/EnterPlanModeTool/EnterPlanModeTool.ts +126 -0
- package/src/tools/EnterPlanModeTool/UI.tsx +33 -0
- package/src/tools/EnterPlanModeTool/constants.ts +1 -0
- package/src/tools/EnterPlanModeTool/prompt.ts +170 -0
- package/src/tools/EnterWorktreeTool/EnterWorktreeTool.ts +127 -0
- package/src/tools/EnterWorktreeTool/UI.tsx +20 -0
- package/src/tools/EnterWorktreeTool/constants.ts +1 -0
- package/src/tools/EnterWorktreeTool/prompt.ts +30 -0
- package/src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts +493 -0
- package/src/tools/ExitPlanModeTool/UI.tsx +82 -0
- package/src/tools/ExitPlanModeTool/constants.ts +2 -0
- package/src/tools/ExitPlanModeTool/prompt.ts +29 -0
- package/src/tools/ExitWorktreeTool/ExitWorktreeTool.ts +329 -0
- package/src/tools/ExitWorktreeTool/UI.tsx +25 -0
- package/src/tools/ExitWorktreeTool/constants.ts +1 -0
- package/src/tools/ExitWorktreeTool/prompt.ts +32 -0
- package/src/tools/FileEditTool/FileEditTool.ts +625 -0
- package/src/tools/FileEditTool/UI.tsx +289 -0
- package/src/tools/FileEditTool/constants.ts +11 -0
- package/src/tools/FileEditTool/prompt.ts +28 -0
- package/src/tools/FileEditTool/types.ts +85 -0
- package/src/tools/FileEditTool/utils.ts +775 -0
- package/src/tools/FileReadTool/FileReadTool.ts +1183 -0
- package/src/tools/FileReadTool/UI.tsx +185 -0
- package/src/tools/FileReadTool/imageProcessor.ts +94 -0
- package/src/tools/FileReadTool/limits.ts +92 -0
- package/src/tools/FileReadTool/prompt.ts +49 -0
- package/src/tools/FileWriteTool/FileWriteTool.ts +434 -0
- package/src/tools/FileWriteTool/UI.tsx +405 -0
- package/src/tools/FileWriteTool/prompt.ts +18 -0
- package/src/tools/GlobTool/GlobTool.ts +198 -0
- package/src/tools/GlobTool/UI.tsx +63 -0
- package/src/tools/GlobTool/prompt.ts +7 -0
- package/src/tools/GrepTool/GrepTool.ts +577 -0
- package/src/tools/GrepTool/UI.tsx +201 -0
- package/src/tools/GrepTool/prompt.ts +18 -0
- package/src/tools/LSPTool/LSPTool.ts +860 -0
- package/src/tools/LSPTool/UI.tsx +228 -0
- package/src/tools/LSPTool/formatters.ts +592 -0
- package/src/tools/LSPTool/prompt.ts +21 -0
- package/src/tools/LSPTool/schemas.ts +215 -0
- package/src/tools/LSPTool/symbolContext.ts +90 -0
- package/src/tools/ListMcpResourcesTool/ListMcpResourcesTool.ts +123 -0
- package/src/tools/ListMcpResourcesTool/UI.tsx +29 -0
- package/src/tools/ListMcpResourcesTool/prompt.ts +20 -0
- package/src/tools/MCPTool/MCPTool.ts +77 -0
- package/src/tools/MCPTool/UI.tsx +403 -0
- package/src/tools/MCPTool/classifyForCollapse.ts +604 -0
- package/src/tools/MCPTool/prompt.ts +3 -0
- package/src/tools/McpAuthTool/McpAuthTool.ts +215 -0
- package/src/tools/NotebookEditTool/NotebookEditTool.ts +490 -0
- package/src/tools/NotebookEditTool/UI.tsx +93 -0
- package/src/tools/NotebookEditTool/constants.ts +2 -0
- package/src/tools/NotebookEditTool/prompt.ts +3 -0
- package/src/tools/PowerShellTool/PowerShellTool.tsx +1001 -0
- package/src/tools/PowerShellTool/UI.tsx +131 -0
- package/src/tools/PowerShellTool/clmTypes.ts +211 -0
- package/src/tools/PowerShellTool/commandSemantics.ts +142 -0
- package/src/tools/PowerShellTool/commonParameters.ts +30 -0
- package/src/tools/PowerShellTool/destructiveCommandWarning.ts +109 -0
- package/src/tools/PowerShellTool/gitSafety.ts +176 -0
- package/src/tools/PowerShellTool/modeValidation.ts +404 -0
- package/src/tools/PowerShellTool/pathValidation.ts +2049 -0
- package/src/tools/PowerShellTool/powershellPermissions.ts +1648 -0
- package/src/tools/PowerShellTool/powershellSecurity.ts +1090 -0
- package/src/tools/PowerShellTool/prompt.ts +145 -0
- package/src/tools/PowerShellTool/readOnlyValidation.ts +1823 -0
- package/src/tools/PowerShellTool/toolName.ts +2 -0
- package/src/tools/REPLTool/constants.ts +46 -0
- package/src/tools/REPLTool/primitiveTools.ts +39 -0
- package/src/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts +158 -0
- package/src/tools/ReadMcpResourceTool/UI.tsx +37 -0
- package/src/tools/ReadMcpResourceTool/prompt.ts +16 -0
- package/src/tools/RemoteTriggerTool/RemoteTriggerTool.ts +161 -0
- package/src/tools/RemoteTriggerTool/UI.tsx +17 -0
- package/src/tools/RemoteTriggerTool/prompt.ts +15 -0
- package/src/tools/ScheduleCronTool/CronCreateTool.ts +157 -0
- package/src/tools/ScheduleCronTool/CronDeleteTool.ts +95 -0
- package/src/tools/ScheduleCronTool/CronListTool.ts +97 -0
- package/src/tools/ScheduleCronTool/UI.tsx +60 -0
- package/src/tools/ScheduleCronTool/prompt.ts +135 -0
- package/src/tools/SendMessageTool/SendMessageTool.ts +917 -0
- package/src/tools/SendMessageTool/UI.tsx +31 -0
- package/src/tools/SendMessageTool/constants.ts +1 -0
- package/src/tools/SendMessageTool/prompt.ts +49 -0
- package/src/tools/SkillTool/SkillTool.ts +1108 -0
- package/src/tools/SkillTool/UI.tsx +128 -0
- package/src/tools/SkillTool/constants.ts +1 -0
- package/src/tools/SkillTool/prompt.ts +241 -0
- package/src/tools/SleepTool/prompt.ts +17 -0
- package/src/tools/SyntheticOutputTool/SyntheticOutputTool.ts +163 -0
- package/src/tools/TaskCreateTool/TaskCreateTool.ts +138 -0
- package/src/tools/TaskCreateTool/constants.ts +1 -0
- package/src/tools/TaskCreateTool/prompt.ts +56 -0
- package/src/tools/TaskGetTool/TaskGetTool.ts +128 -0
- package/src/tools/TaskGetTool/constants.ts +1 -0
- package/src/tools/TaskGetTool/prompt.ts +24 -0
- package/src/tools/TaskListTool/TaskListTool.ts +116 -0
- package/src/tools/TaskListTool/constants.ts +1 -0
- package/src/tools/TaskListTool/prompt.ts +49 -0
- package/src/tools/TaskOutputTool/TaskOutputTool.tsx +584 -0
- package/src/tools/TaskOutputTool/constants.ts +1 -0
- package/src/tools/TaskStopTool/TaskStopTool.ts +131 -0
- package/src/tools/TaskStopTool/UI.tsx +41 -0
- package/src/tools/TaskStopTool/prompt.ts +8 -0
- package/src/tools/TaskUpdateTool/TaskUpdateTool.ts +406 -0
- package/src/tools/TaskUpdateTool/constants.ts +1 -0
- package/src/tools/TaskUpdateTool/prompt.ts +77 -0
- package/src/tools/TeamCreateTool/TeamCreateTool.ts +240 -0
- package/src/tools/TeamCreateTool/UI.tsx +6 -0
- package/src/tools/TeamCreateTool/constants.ts +1 -0
- package/src/tools/TeamCreateTool/prompt.ts +113 -0
- package/src/tools/TeamDeleteTool/TeamDeleteTool.ts +139 -0
- package/src/tools/TeamDeleteTool/UI.tsx +20 -0
- package/src/tools/TeamDeleteTool/constants.ts +1 -0
- package/src/tools/TeamDeleteTool/prompt.ts +16 -0
- package/src/tools/TodoWriteTool/TodoWriteTool.ts +115 -0
- package/src/tools/TodoWriteTool/constants.ts +1 -0
- package/src/tools/TodoWriteTool/prompt.ts +184 -0
- package/src/tools/ToolSearchTool/ToolSearchTool.ts +471 -0
- package/src/tools/ToolSearchTool/constants.ts +1 -0
- package/src/tools/ToolSearchTool/prompt.ts +121 -0
- package/src/tools/TungstenTool/TungstenTool.js +2 -0
- package/src/tools/TungstenTool/TungstenTool.ts +1 -0
- package/src/tools/WebFetchTool/UI.tsx +72 -0
- package/src/tools/WebFetchTool/WebFetchTool.ts +318 -0
- package/src/tools/WebFetchTool/preapproved.ts +166 -0
- package/src/tools/WebFetchTool/prompt.ts +46 -0
- package/src/tools/WebFetchTool/utils.ts +530 -0
- package/src/tools/WebSearchTool/UI.tsx +101 -0
- package/src/tools/WebSearchTool/WebSearchTool.ts +435 -0
- package/src/tools/WebSearchTool/prompt.ts +34 -0
- package/src/tools/shared/gitOperationTracking.ts +277 -0
- package/src/tools/shared/spawnMultiAgent.ts +1093 -0
- package/src/tools/testing/TestingPermissionTool.tsx +74 -0
- package/src/tools/utils.ts +40 -0
- package/src/tools.ts +389 -0
- package/src/types/command.ts +216 -0
- package/src/types/connectorText.js +5 -0
- package/src/types/connectorText.ts +1 -0
- package/src/types/generated/events_mono/claude_code/v1/claude_code_internal_event.ts +865 -0
- package/src/types/generated/events_mono/common/v1/auth.ts +100 -0
- package/src/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.ts +223 -0
- package/src/types/generated/google/protobuf/timestamp.ts +187 -0
- package/src/types/hooks.ts +290 -0
- package/src/types/ids.ts +44 -0
- package/src/types/logs.ts +330 -0
- package/src/types/permissions.ts +441 -0
- package/src/types/plugin.ts +363 -0
- package/src/types/textInputTypes.ts +387 -0
- package/src/upstreamproxy/relay.ts +455 -0
- package/src/upstreamproxy/upstreamproxy.ts +285 -0
- package/src/utils/CircularBuffer.ts +84 -0
- package/src/utils/Cursor.ts +1530 -0
- package/src/utils/QueryGuard.ts +121 -0
- package/src/utils/Shell.ts +474 -0
- package/src/utils/ShellCommand.ts +465 -0
- package/src/utils/abortController.ts +99 -0
- package/src/utils/activityManager.ts +164 -0
- package/src/utils/advisor.ts +145 -0
- package/src/utils/agentContext.ts +178 -0
- package/src/utils/agentId.ts +99 -0
- package/src/utils/agentSwarmsEnabled.ts +44 -0
- package/src/utils/agenticSessionSearch.ts +307 -0
- package/src/utils/analyzeContext.ts +1382 -0
- package/src/utils/ansiToPng.ts +334 -0
- package/src/utils/ansiToSvg.ts +272 -0
- package/src/utils/api.ts +718 -0
- package/src/utils/apiPreconnect.ts +72 -0
- package/src/utils/appleTerminalBackup.ts +124 -0
- package/src/utils/argumentSubstitution.ts +145 -0
- package/src/utils/array.ts +13 -0
- package/src/utils/asciicast.ts +239 -0
- package/src/utils/attachments.ts +3997 -0
- package/src/utils/attribution.ts +393 -0
- package/src/utils/auth.ts +2007 -0
- package/src/utils/authFileDescriptor.ts +196 -0
- package/src/utils/authPortable.ts +19 -0
- package/src/utils/autoModeDenials.ts +26 -0
- package/src/utils/autoRunIssue.tsx +122 -0
- package/src/utils/autoUpdater.ts +562 -0
- package/src/utils/aws.ts +74 -0
- package/src/utils/awsAuthStatusManager.ts +81 -0
- package/src/utils/background/remote/preconditions.ts +235 -0
- package/src/utils/background/remote/remoteSession.ts +98 -0
- package/src/utils/backgroundHousekeeping.ts +94 -0
- package/src/utils/bash/ParsedCommand.ts +318 -0
- package/src/utils/bash/ShellSnapshot.ts +582 -0
- package/src/utils/bash/ast.ts +2679 -0
- package/src/utils/bash/bashParser.ts +4436 -0
- package/src/utils/bash/bashPipeCommand.ts +294 -0
- package/src/utils/bash/commands.ts +1339 -0
- package/src/utils/bash/heredoc.ts +733 -0
- package/src/utils/bash/parser.ts +230 -0
- package/src/utils/bash/prefix.ts +204 -0
- package/src/utils/bash/registry.ts +53 -0
- package/src/utils/bash/shellCompletion.ts +259 -0
- package/src/utils/bash/shellPrefix.ts +28 -0
- package/src/utils/bash/shellQuote.ts +304 -0
- package/src/utils/bash/shellQuoting.ts +128 -0
- package/src/utils/bash/specs/alias.ts +14 -0
- package/src/utils/bash/specs/index.ts +18 -0
- package/src/utils/bash/specs/nohup.ts +13 -0
- package/src/utils/bash/specs/pyright.ts +91 -0
- package/src/utils/bash/specs/sleep.ts +13 -0
- package/src/utils/bash/specs/srun.ts +31 -0
- package/src/utils/bash/specs/time.ts +13 -0
- package/src/utils/bash/specs/timeout.ts +20 -0
- package/src/utils/bash/treeSitterAnalysis.ts +506 -0
- package/src/utils/betas.ts +438 -0
- package/src/utils/billing.ts +78 -0
- package/src/utils/binaryCheck.ts +53 -0
- package/src/utils/browser.ts +68 -0
- package/src/utils/bufferedWriter.ts +100 -0
- package/src/utils/bundledMode.ts +22 -0
- package/src/utils/caCerts.ts +115 -0
- package/src/utils/caCertsConfig.ts +88 -0
- package/src/utils/cachePaths.ts +38 -0
- package/src/utils/classifierApprovals.ts +88 -0
- package/src/utils/classifierApprovalsHook.ts +17 -0
- package/src/utils/claudeCodeHints.ts +193 -0
- package/src/utils/claudeDesktop.ts +152 -0
- package/src/utils/claudeInChrome/chromeNativeHost.ts +527 -0
- package/src/utils/claudeInChrome/common.ts +540 -0
- package/src/utils/claudeInChrome/mcpServer.ts +293 -0
- package/src/utils/claudeInChrome/prompt.ts +83 -0
- package/src/utils/claudeInChrome/setup.ts +400 -0
- package/src/utils/claudeInChrome/setupPortable.ts +233 -0
- package/src/utils/claudeInChrome/toolRendering.tsx +262 -0
- package/src/utils/claudemd.ts +1479 -0
- package/src/utils/cleanup.ts +602 -0
- package/src/utils/cleanupRegistry.ts +25 -0
- package/src/utils/cliArgs.ts +60 -0
- package/src/utils/cliHighlight.ts +54 -0
- package/src/utils/codeIndexing.ts +206 -0
- package/src/utils/collapseBackgroundBashNotifications.ts +84 -0
- package/src/utils/collapseHookSummaries.ts +59 -0
- package/src/utils/collapseReadSearch.ts +1109 -0
- package/src/utils/collapseTeammateShutdowns.ts +55 -0
- package/src/utils/combinedAbortSignal.ts +47 -0
- package/src/utils/commandLifecycle.ts +21 -0
- package/src/utils/commitAttribution.ts +961 -0
- package/src/utils/completionCache.ts +166 -0
- package/src/utils/computerUse/appNames.ts +196 -0
- package/src/utils/computerUse/cleanup.ts +86 -0
- package/src/utils/computerUse/common.ts +61 -0
- package/src/utils/computerUse/computerUseLock.ts +215 -0
- package/src/utils/computerUse/drainRunLoop.ts +79 -0
- package/src/utils/computerUse/escHotkey.ts +54 -0
- package/src/utils/computerUse/executor.ts +658 -0
- package/src/utils/computerUse/gates.ts +72 -0
- package/src/utils/computerUse/hostAdapter.ts +69 -0
- package/src/utils/computerUse/inputLoader.ts +30 -0
- package/src/utils/computerUse/mcpServer.ts +106 -0
- package/src/utils/computerUse/setup.ts +53 -0
- package/src/utils/computerUse/swiftLoader.ts +23 -0
- package/src/utils/computerUse/toolRendering.tsx +125 -0
- package/src/utils/computerUse/wrapper.tsx +336 -0
- package/src/utils/concurrentSessions.ts +204 -0
- package/src/utils/config.ts +1817 -0
- package/src/utils/configConstants.ts +21 -0
- package/src/utils/contentArray.ts +51 -0
- package/src/utils/context.ts +221 -0
- package/src/utils/contextAnalysis.ts +272 -0
- package/src/utils/contextSuggestions.ts +235 -0
- package/src/utils/controlMessageCompat.ts +32 -0
- package/src/utils/conversationRecovery.ts +597 -0
- package/src/utils/cron.ts +308 -0
- package/src/utils/cronJitterConfig.ts +75 -0
- package/src/utils/cronScheduler.ts +565 -0
- package/src/utils/cronTasks.ts +458 -0
- package/src/utils/cronTasksLock.ts +195 -0
- package/src/utils/crossProjectResume.ts +75 -0
- package/src/utils/crypto.ts +13 -0
- package/src/utils/cwd.ts +32 -0
- package/src/utils/debug.ts +268 -0
- package/src/utils/debugFilter.ts +157 -0
- package/src/utils/deepLink/banner.ts +123 -0
- package/src/utils/deepLink/parseDeepLink.ts +170 -0
- package/src/utils/deepLink/protocolHandler.ts +136 -0
- package/src/utils/deepLink/registerProtocol.ts +348 -0
- package/src/utils/deepLink/terminalLauncher.ts +557 -0
- package/src/utils/deepLink/terminalPreference.ts +54 -0
- package/src/utils/desktopDeepLink.ts +236 -0
- package/src/utils/detectRepository.ts +178 -0
- package/src/utils/diagLogs.ts +94 -0
- package/src/utils/diff.ts +177 -0
- package/src/utils/directMemberMessage.ts +69 -0
- package/src/utils/displayTags.ts +51 -0
- package/src/utils/doctorContextWarnings.ts +265 -0
- package/src/utils/doctorDiagnostic.ts +625 -0
- package/src/utils/dxt/helpers.ts +88 -0
- package/src/utils/dxt/zip.ts +226 -0
- package/src/utils/earlyInput.ts +191 -0
- package/src/utils/editor.ts +183 -0
- package/src/utils/effort.ts +329 -0
- package/src/utils/embeddedTools.ts +29 -0
- package/src/utils/env.ts +347 -0
- package/src/utils/envDynamic.ts +151 -0
- package/src/utils/envUtils.ts +183 -0
- package/src/utils/envValidation.ts +38 -0
- package/src/utils/errorLogSink.ts +235 -0
- package/src/utils/errors.ts +238 -0
- package/src/utils/exampleCommands.ts +184 -0
- package/src/utils/execFileNoThrow.ts +150 -0
- package/src/utils/execFileNoThrowPortable.ts +89 -0
- package/src/utils/execSyncWrapper.ts +38 -0
- package/src/utils/exportRenderer.tsx +98 -0
- package/src/utils/extraUsage.ts +23 -0
- package/src/utils/fastMode.ts +532 -0
- package/src/utils/file.ts +584 -0
- package/src/utils/fileHistory.ts +1115 -0
- package/src/utils/fileOperationAnalytics.ts +71 -0
- package/src/utils/filePersistence/filePersistence.ts +287 -0
- package/src/utils/filePersistence/outputsScanner.ts +126 -0
- package/src/utils/fileRead.ts +102 -0
- package/src/utils/fileReadCache.ts +96 -0
- package/src/utils/fileStateCache.ts +142 -0
- package/src/utils/findExecutable.ts +17 -0
- package/src/utils/fingerprint.ts +76 -0
- package/src/utils/forkedAgent.ts +689 -0
- package/src/utils/format.ts +308 -0
- package/src/utils/formatBriefTimestamp.ts +81 -0
- package/src/utils/fpsTracker.ts +47 -0
- package/src/utils/frontmatterParser.ts +370 -0
- package/src/utils/fsOperations.ts +770 -0
- package/src/utils/fullscreen.ts +202 -0
- package/src/utils/generatedFiles.ts +136 -0
- package/src/utils/generators.ts +88 -0
- package/src/utils/genericProcessUtils.ts +184 -0
- package/src/utils/getWorktreePaths.ts +70 -0
- package/src/utils/getWorktreePathsPortable.ts +27 -0
- package/src/utils/ghPrStatus.ts +106 -0
- package/src/utils/git/gitConfigParser.ts +277 -0
- package/src/utils/git/gitFilesystem.ts +699 -0
- package/src/utils/git/gitignore.ts +99 -0
- package/src/utils/git.ts +926 -0
- package/src/utils/gitDiff.ts +532 -0
- package/src/utils/gitSettings.ts +18 -0
- package/src/utils/github/ghAuthStatus.ts +29 -0
- package/src/utils/githubRepoPathMapping.ts +162 -0
- package/src/utils/glob.ts +130 -0
- package/src/utils/gracefulShutdown.ts +529 -0
- package/src/utils/groupToolUses.ts +182 -0
- package/src/utils/handlePromptSubmit.ts +610 -0
- package/src/utils/hash.ts +46 -0
- package/src/utils/headlessProfiler.ts +178 -0
- package/src/utils/heapDumpService.ts +303 -0
- package/src/utils/heatmap.ts +198 -0
- package/src/utils/highlightMatch.tsx +28 -0
- package/src/utils/hooks/AsyncHookRegistry.ts +309 -0
- package/src/utils/hooks/apiQueryHookHelper.ts +141 -0
- package/src/utils/hooks/execAgentHook.ts +339 -0
- package/src/utils/hooks/execHttpHook.ts +242 -0
- package/src/utils/hooks/execPromptHook.ts +211 -0
- package/src/utils/hooks/fileChangedWatcher.ts +191 -0
- package/src/utils/hooks/hookEvents.ts +192 -0
- package/src/utils/hooks/hookHelpers.ts +83 -0
- package/src/utils/hooks/hooksConfigManager.ts +400 -0
- package/src/utils/hooks/hooksConfigSnapshot.ts +133 -0
- package/src/utils/hooks/hooksSettings.ts +271 -0
- package/src/utils/hooks/postSamplingHooks.ts +70 -0
- package/src/utils/hooks/registerFrontmatterHooks.ts +67 -0
- package/src/utils/hooks/registerSkillHooks.ts +64 -0
- package/src/utils/hooks/sessionHooks.ts +447 -0
- package/src/utils/hooks/skillImprovement.ts +267 -0
- package/src/utils/hooks/ssrfGuard.ts +294 -0
- package/src/utils/hooks.ts +5022 -0
- package/src/utils/horizontalScroll.ts +137 -0
- package/src/utils/http.ts +136 -0
- package/src/utils/hyperlink.ts +39 -0
- package/src/utils/iTermBackup.ts +73 -0
- package/src/utils/ide.ts +1494 -0
- package/src/utils/idePathConversion.ts +90 -0
- package/src/utils/idleTimeout.ts +53 -0
- package/src/utils/imagePaste.ts +416 -0
- package/src/utils/imageResizer.ts +880 -0
- package/src/utils/imageStore.ts +167 -0
- package/src/utils/imageValidation.ts +104 -0
- package/src/utils/immediateCommand.ts +15 -0
- package/src/utils/inProcessTeammateHelpers.ts +102 -0
- package/src/utils/ink.ts +26 -0
- package/src/utils/intl.ts +94 -0
- package/src/utils/jetbrains.ts +191 -0
- package/src/utils/json.ts +277 -0
- package/src/utils/jsonRead.ts +16 -0
- package/src/utils/keyboardShortcuts.ts +14 -0
- package/src/utils/lazySchema.ts +8 -0
- package/src/utils/listSessionsImpl.ts +454 -0
- package/src/utils/localInstaller.ts +162 -0
- package/src/utils/lockfile.ts +43 -0
- package/src/utils/log.ts +362 -0
- package/src/utils/logoV2Utils.ts +350 -0
- package/src/utils/mailbox.ts +73 -0
- package/src/utils/managedEnv.ts +199 -0
- package/src/utils/managedEnvConstants.ts +191 -0
- package/src/utils/markdown.ts +381 -0
- package/src/utils/markdownConfigLoader.ts +600 -0
- package/src/utils/mcp/dateTimeParser.ts +121 -0
- package/src/utils/mcp/elicitationValidation.ts +336 -0
- package/src/utils/mcpInstructionsDelta.ts +130 -0
- package/src/utils/mcpOutputStorage.ts +189 -0
- package/src/utils/mcpValidation.ts +208 -0
- package/src/utils/mcpWebSocketTransport.ts +200 -0
- package/src/utils/memoize.ts +269 -0
- package/src/utils/memory/types.ts +12 -0
- package/src/utils/memory/versions.ts +8 -0
- package/src/utils/memoryFileDetection.ts +289 -0
- package/src/utils/messagePredicates.ts +8 -0
- package/src/utils/messageQueueManager.ts +547 -0
- package/src/utils/messages/mappers.ts +290 -0
- package/src/utils/messages/systemInit.ts +96 -0
- package/src/utils/messages.ts +5512 -0
- package/src/utils/model/agent.ts +157 -0
- package/src/utils/model/aliases.ts +25 -0
- package/src/utils/model/antModels.ts +64 -0
- package/src/utils/model/bedrock.ts +265 -0
- package/src/utils/model/check1mAccess.ts +72 -0
- package/src/utils/model/configs.ts +118 -0
- package/src/utils/model/contextWindowUpgradeCheck.ts +47 -0
- package/src/utils/model/deprecation.ts +101 -0
- package/src/utils/model/model.ts +634 -0
- package/src/utils/model/modelAllowlist.ts +170 -0
- package/src/utils/model/modelCapabilities.ts +118 -0
- package/src/utils/model/modelOptions.ts +540 -0
- package/src/utils/model/modelStrings.ts +166 -0
- package/src/utils/model/modelSupportOverrides.ts +50 -0
- package/src/utils/model/providers.ts +46 -0
- package/src/utils/model/validateModel.ts +159 -0
- package/src/utils/modelCost.ts +235 -0
- package/src/utils/modifiers.ts +36 -0
- package/src/utils/mtls.ts +179 -0
- package/src/utils/nativeInstaller/download.ts +523 -0
- package/src/utils/nativeInstaller/index.ts +18 -0
- package/src/utils/nativeInstaller/installer.ts +1708 -0
- package/src/utils/nativeInstaller/packageManagers.ts +336 -0
- package/src/utils/nativeInstaller/pidLock.ts +433 -0
- package/src/utils/notebook.ts +224 -0
- package/src/utils/objectGroupBy.ts +18 -0
- package/src/utils/pasteStore.ts +104 -0
- package/src/utils/path.ts +155 -0
- package/src/utils/pdf.ts +300 -0
- package/src/utils/pdfUtils.ts +70 -0
- package/src/utils/peerAddress.ts +21 -0
- package/src/utils/permissions/PermissionMode.ts +141 -0
- package/src/utils/permissions/PermissionPromptToolResultSchema.ts +127 -0
- package/src/utils/permissions/PermissionResult.ts +35 -0
- package/src/utils/permissions/PermissionRule.ts +40 -0
- package/src/utils/permissions/PermissionUpdate.ts +389 -0
- package/src/utils/permissions/PermissionUpdateSchema.ts +78 -0
- package/src/utils/permissions/autoModeState.ts +39 -0
- package/src/utils/permissions/bashClassifier.ts +61 -0
- package/src/utils/permissions/bypassPermissionsKillswitch.ts +155 -0
- package/src/utils/permissions/classifierDecision.ts +98 -0
- package/src/utils/permissions/classifierShared.ts +39 -0
- package/src/utils/permissions/dangerousPatterns.ts +80 -0
- package/src/utils/permissions/denialTracking.ts +45 -0
- package/src/utils/permissions/filesystem.ts +1777 -0
- package/src/utils/permissions/getNextPermissionMode.ts +101 -0
- package/src/utils/permissions/pathValidation.ts +485 -0
- package/src/utils/permissions/permissionExplainer.ts +250 -0
- package/src/utils/permissions/permissionRuleParser.ts +198 -0
- package/src/utils/permissions/permissionSetup.ts +1532 -0
- package/src/utils/permissions/permissions.ts +1486 -0
- package/src/utils/permissions/permissionsLoader.ts +296 -0
- package/src/utils/permissions/shadowedRuleDetection.ts +234 -0
- package/src/utils/permissions/shellRuleMatching.ts +228 -0
- package/src/utils/permissions/yoloClassifier.ts +1495 -0
- package/src/utils/planModeV2.ts +95 -0
- package/src/utils/plans.ts +397 -0
- package/src/utils/platform.ts +150 -0
- package/src/utils/plugins/addDirPluginSettings.ts +71 -0
- package/src/utils/plugins/cacheUtils.ts +196 -0
- package/src/utils/plugins/dependencyResolver.ts +305 -0
- package/src/utils/plugins/fetchTelemetry.ts +135 -0
- package/src/utils/plugins/gitAvailability.ts +69 -0
- package/src/utils/plugins/headlessPluginInstall.ts +174 -0
- package/src/utils/plugins/hintRecommendation.ts +164 -0
- package/src/utils/plugins/installCounts.ts +292 -0
- package/src/utils/plugins/installedPluginsManager.ts +1268 -0
- package/src/utils/plugins/loadPluginAgents.ts +348 -0
- package/src/utils/plugins/loadPluginCommands.ts +946 -0
- package/src/utils/plugins/loadPluginHooks.ts +287 -0
- package/src/utils/plugins/loadPluginOutputStyles.ts +178 -0
- package/src/utils/plugins/lspPluginIntegration.ts +387 -0
- package/src/utils/plugins/lspRecommendation.ts +374 -0
- package/src/utils/plugins/managedPlugins.ts +27 -0
- package/src/utils/plugins/marketplaceHelpers.ts +592 -0
- package/src/utils/plugins/marketplaceManager.ts +2643 -0
- package/src/utils/plugins/mcpPluginIntegration.ts +634 -0
- package/src/utils/plugins/mcpbHandler.ts +968 -0
- package/src/utils/plugins/officialMarketplace.ts +25 -0
- package/src/utils/plugins/officialMarketplaceGcs.ts +216 -0
- package/src/utils/plugins/officialMarketplaceStartupCheck.ts +439 -0
- package/src/utils/plugins/orphanedPluginFilter.ts +114 -0
- package/src/utils/plugins/parseMarketplaceInput.ts +162 -0
- package/src/utils/plugins/performStartupChecks.tsx +70 -0
- package/src/utils/plugins/pluginAutoupdate.ts +284 -0
- package/src/utils/plugins/pluginBlocklist.ts +127 -0
- package/src/utils/plugins/pluginDirectories.ts +178 -0
- package/src/utils/plugins/pluginFlagging.ts +208 -0
- package/src/utils/plugins/pluginIdentifier.ts +123 -0
- package/src/utils/plugins/pluginInstallationHelpers.ts +595 -0
- package/src/utils/plugins/pluginLoader.ts +3302 -0
- package/src/utils/plugins/pluginOptionsStorage.ts +400 -0
- package/src/utils/plugins/pluginPolicy.ts +20 -0
- package/src/utils/plugins/pluginStartupCheck.ts +341 -0
- package/src/utils/plugins/pluginVersioning.ts +157 -0
- package/src/utils/plugins/reconciler.ts +265 -0
- package/src/utils/plugins/refresh.ts +215 -0
- package/src/utils/plugins/schemas.ts +1681 -0
- package/src/utils/plugins/validatePlugin.ts +903 -0
- package/src/utils/plugins/walkPluginMarkdown.ts +69 -0
- package/src/utils/plugins/zipCache.ts +406 -0
- package/src/utils/plugins/zipCacheAdapters.ts +164 -0
- package/src/utils/powershell/dangerousCmdlets.ts +185 -0
- package/src/utils/powershell/parser.ts +1804 -0
- package/src/utils/powershell/staticPrefix.ts +316 -0
- package/src/utils/preflightChecks.tsx +151 -0
- package/src/utils/privacyLevel.ts +55 -0
- package/src/utils/process.ts +68 -0
- package/src/utils/processUserInput/processBashCommand.tsx +140 -0
- package/src/utils/processUserInput/processSlashCommand.tsx +922 -0
- package/src/utils/processUserInput/processTextPrompt.ts +100 -0
- package/src/utils/processUserInput/processUserInput.ts +605 -0
- package/src/utils/profilerBase.ts +46 -0
- package/src/utils/promptCategory.ts +49 -0
- package/src/utils/promptEditor.ts +188 -0
- package/src/utils/promptShellExecution.ts +183 -0
- package/src/utils/proxy.ts +426 -0
- package/src/utils/queryContext.ts +179 -0
- package/src/utils/queryHelpers.ts +552 -0
- package/src/utils/queryProfiler.ts +301 -0
- package/src/utils/queueProcessor.ts +95 -0
- package/src/utils/readEditContext.ts +227 -0
- package/src/utils/readFileInRange.ts +383 -0
- package/src/utils/releaseNotes.ts +360 -0
- package/src/utils/renderOptions.ts +77 -0
- package/src/utils/ripgrep.ts +679 -0
- package/src/utils/sandbox/sandbox-adapter.ts +985 -0
- package/src/utils/sandbox/sandbox-ui-utils.ts +12 -0
- package/src/utils/sanitization.ts +91 -0
- package/src/utils/screenshotClipboard.ts +121 -0
- package/src/utils/sdkEventQueue.ts +134 -0
- package/src/utils/secureStorage/fallbackStorage.ts +70 -0
- package/src/utils/secureStorage/index.ts +17 -0
- package/src/utils/secureStorage/keychainPrefetch.ts +116 -0
- package/src/utils/secureStorage/macOsKeychainHelpers.ts +111 -0
- package/src/utils/secureStorage/macOsKeychainStorage.ts +231 -0
- package/src/utils/secureStorage/plainTextStorage.ts +84 -0
- package/src/utils/semanticBoolean.ts +29 -0
- package/src/utils/semanticNumber.ts +36 -0
- package/src/utils/semver.ts +59 -0
- package/src/utils/sequential.ts +56 -0
- package/src/utils/sessionActivity.ts +133 -0
- package/src/utils/sessionEnvVars.ts +22 -0
- package/src/utils/sessionEnvironment.ts +166 -0
- package/src/utils/sessionFileAccessHooks.ts +250 -0
- package/src/utils/sessionIngressAuth.ts +140 -0
- package/src/utils/sessionRestore.ts +551 -0
- package/src/utils/sessionStart.ts +232 -0
- package/src/utils/sessionState.ts +150 -0
- package/src/utils/sessionStorage.ts +5105 -0
- package/src/utils/sessionStoragePortable.ts +793 -0
- package/src/utils/sessionTitle.ts +129 -0
- package/src/utils/sessionUrl.ts +64 -0
- package/src/utils/set.ts +53 -0
- package/src/utils/settings/allErrors.ts +32 -0
- package/src/utils/settings/applySettingsChange.ts +92 -0
- package/src/utils/settings/changeDetector.ts +488 -0
- package/src/utils/settings/constants.ts +202 -0
- package/src/utils/settings/internalWrites.ts +37 -0
- package/src/utils/settings/managedPath.ts +34 -0
- package/src/utils/settings/mdm/constants.ts +81 -0
- package/src/utils/settings/mdm/rawRead.ts +130 -0
- package/src/utils/settings/mdm/settings.ts +316 -0
- package/src/utils/settings/permissionValidation.ts +262 -0
- package/src/utils/settings/pluginOnlyPolicy.ts +60 -0
- package/src/utils/settings/schemaOutput.ts +8 -0
- package/src/utils/settings/settings.ts +1015 -0
- package/src/utils/settings/settingsCache.ts +80 -0
- package/src/utils/settings/toolValidationConfig.ts +103 -0
- package/src/utils/settings/types.ts +1148 -0
- package/src/utils/settings/validateEditTool.ts +45 -0
- package/src/utils/settings/validation.ts +265 -0
- package/src/utils/settings/validationTips.ts +164 -0
- package/src/utils/shell/bashProvider.ts +255 -0
- package/src/utils/shell/outputLimits.ts +14 -0
- package/src/utils/shell/powershellDetection.ts +107 -0
- package/src/utils/shell/powershellProvider.ts +123 -0
- package/src/utils/shell/prefix.ts +367 -0
- package/src/utils/shell/readOnlyCommandValidation.ts +1893 -0
- package/src/utils/shell/resolveDefaultShell.ts +14 -0
- package/src/utils/shell/shellProvider.ts +33 -0
- package/src/utils/shell/shellToolUtils.ts +22 -0
- package/src/utils/shell/specPrefix.ts +241 -0
- package/src/utils/shellConfig.ts +167 -0
- package/src/utils/sideQuery.ts +222 -0
- package/src/utils/sideQuestion.ts +155 -0
- package/src/utils/signal.ts +43 -0
- package/src/utils/sinks.ts +16 -0
- package/src/utils/skills/skillChangeDetector.ts +311 -0
- package/src/utils/slashCommandParsing.ts +60 -0
- package/src/utils/sleep.ts +84 -0
- package/src/utils/sliceAnsi.ts +91 -0
- package/src/utils/slowOperations.ts +286 -0
- package/src/utils/standaloneAgent.ts +23 -0
- package/src/utils/startupProfiler.ts +194 -0
- package/src/utils/staticRender.tsx +116 -0
- package/src/utils/stats.ts +1061 -0
- package/src/utils/statsCache.ts +434 -0
- package/src/utils/status.tsx +362 -0
- package/src/utils/statusNoticeDefinitions.tsx +198 -0
- package/src/utils/statusNoticeHelpers.ts +20 -0
- package/src/utils/stream.ts +76 -0
- package/src/utils/streamJsonStdoutGuard.ts +123 -0
- package/src/utils/streamlinedTransform.ts +201 -0
- package/src/utils/stringUtils.ts +235 -0
- package/src/utils/subprocessEnv.ts +99 -0
- package/src/utils/suggestions/commandSuggestions.ts +567 -0
- package/src/utils/suggestions/directoryCompletion.ts +263 -0
- package/src/utils/suggestions/shellHistoryCompletion.ts +119 -0
- package/src/utils/suggestions/skillUsageTracking.ts +55 -0
- package/src/utils/suggestions/slackChannelSuggestions.ts +209 -0
- package/src/utils/swarm/It2SetupPrompt.tsx +380 -0
- package/src/utils/swarm/backends/ITermBackend.ts +370 -0
- package/src/utils/swarm/backends/InProcessBackend.ts +339 -0
- package/src/utils/swarm/backends/PaneBackendExecutor.ts +354 -0
- package/src/utils/swarm/backends/TmuxBackend.ts +764 -0
- package/src/utils/swarm/backends/detection.ts +128 -0
- package/src/utils/swarm/backends/it2Setup.ts +245 -0
- package/src/utils/swarm/backends/registry.ts +464 -0
- package/src/utils/swarm/backends/teammateModeSnapshot.ts +87 -0
- package/src/utils/swarm/backends/types.ts +311 -0
- package/src/utils/swarm/constants.ts +33 -0
- package/src/utils/swarm/inProcessRunner.ts +1552 -0
- package/src/utils/swarm/leaderPermissionBridge.ts +54 -0
- package/src/utils/swarm/permissionSync.ts +928 -0
- package/src/utils/swarm/reconnection.ts +119 -0
- package/src/utils/swarm/spawnInProcess.ts +328 -0
- package/src/utils/swarm/spawnUtils.ts +146 -0
- package/src/utils/swarm/teamHelpers.ts +683 -0
- package/src/utils/swarm/teammateInit.ts +129 -0
- package/src/utils/swarm/teammateLayoutManager.ts +107 -0
- package/src/utils/swarm/teammateModel.ts +10 -0
- package/src/utils/swarm/teammatePromptAddendum.ts +18 -0
- package/src/utils/systemDirectories.ts +74 -0
- package/src/utils/systemPrompt.ts +123 -0
- package/src/utils/systemPromptType.ts +14 -0
- package/src/utils/systemTheme.ts +119 -0
- package/src/utils/taggedId.ts +54 -0
- package/src/utils/task/TaskOutput.ts +390 -0
- package/src/utils/task/diskOutput.ts +451 -0
- package/src/utils/task/framework.ts +308 -0
- package/src/utils/task/outputFormatting.ts +38 -0
- package/src/utils/task/sdkProgress.ts +36 -0
- package/src/utils/tasks.ts +862 -0
- package/src/utils/teamDiscovery.ts +81 -0
- package/src/utils/teamMemoryOps.ts +88 -0
- package/src/utils/teammate.ts +292 -0
- package/src/utils/teammateContext.ts +96 -0
- package/src/utils/teammateMailbox.ts +1183 -0
- package/src/utils/telemetry/betaSessionTracing.ts +491 -0
- package/src/utils/telemetry/bigqueryExporter.ts +252 -0
- package/src/utils/telemetry/events.ts +75 -0
- package/src/utils/telemetry/instrumentation.ts +825 -0
- package/src/utils/telemetry/logger.ts +26 -0
- package/src/utils/telemetry/perfettoTracing.ts +1120 -0
- package/src/utils/telemetry/pluginTelemetry.ts +289 -0
- package/src/utils/telemetry/sessionTracing.ts +927 -0
- package/src/utils/telemetry/skillLoadedEvent.ts +39 -0
- package/src/utils/telemetryAttributes.ts +71 -0
- package/src/utils/teleport/api.ts +466 -0
- package/src/utils/teleport/environmentSelection.ts +77 -0
- package/src/utils/teleport/environments.ts +120 -0
- package/src/utils/teleport/gitBundle.ts +292 -0
- package/src/utils/teleport.tsx +1226 -0
- package/src/utils/tempfile.ts +31 -0
- package/src/utils/terminal.ts +131 -0
- package/src/utils/terminalPanel.ts +191 -0
- package/src/utils/textHighlighting.ts +166 -0
- package/src/utils/theme.ts +639 -0
- package/src/utils/thinking.ts +162 -0
- package/src/utils/timeouts.ts +39 -0
- package/src/utils/tmuxSocket.ts +427 -0
- package/src/utils/todo/types.ts +18 -0
- package/src/utils/tokenBudget.ts +73 -0
- package/src/utils/tokens.ts +261 -0
- package/src/utils/toolErrors.ts +132 -0
- package/src/utils/toolPool.ts +79 -0
- package/src/utils/toolResultStorage.ts +1040 -0
- package/src/utils/toolSchemaCache.ts +26 -0
- package/src/utils/toolSearch.ts +756 -0
- package/src/utils/transcriptSearch.ts +202 -0
- package/src/utils/treeify.ts +170 -0
- package/src/utils/truncate.ts +179 -0
- package/src/utils/ultraplan/ccrSession.ts +349 -0
- package/src/utils/ultraplan/keyword.ts +127 -0
- package/src/utils/ultraplan/prompt.txt +1 -0
- package/src/utils/unaryLogging.ts +39 -0
- package/src/utils/undercover.ts +89 -0
- package/src/utils/user.ts +194 -0
- package/src/utils/userAgent.ts +10 -0
- package/src/utils/userPromptKeywords.ts +27 -0
- package/src/utils/uuid.ts +27 -0
- package/src/utils/warningHandler.ts +121 -0
- package/src/utils/which.ts +82 -0
- package/src/utils/windowsPaths.ts +173 -0
- package/src/utils/withResolvers.ts +13 -0
- package/src/utils/words.ts +800 -0
- package/src/utils/workloadContext.ts +57 -0
- package/src/utils/worktree.ts +1519 -0
- package/src/utils/worktreeModeEnabled.ts +11 -0
- package/src/utils/xdg.ts +65 -0
- package/src/utils/xml.ts +16 -0
- package/src/utils/yaml.ts +15 -0
- package/src/utils/zodToJsonSchema.ts +23 -0
- package/src/vim/motions.ts +82 -0
- package/src/vim/operators.ts +556 -0
- package/src/vim/textObjects.ts +186 -0
- package/src/vim/transitions.ts +490 -0
- package/src/vim/types.ts +199 -0
- package/src/voice/voiceModeEnabled.ts +54 -0
- package/start.js +1 -0
|
@@ -0,0 +1,1207 @@
|
|
|
1
|
+
import {
|
|
2
|
+
APIConnectionError,
|
|
3
|
+
APIConnectionTimeoutError,
|
|
4
|
+
APIError,
|
|
5
|
+
} from '@anthropic-ai/sdk'
|
|
6
|
+
import type {
|
|
7
|
+
BetaMessage,
|
|
8
|
+
BetaStopReason,
|
|
9
|
+
} from '@anthropic-ai/sdk/resources/beta/messages/messages.mjs'
|
|
10
|
+
import { AFK_MODE_BETA_HEADER } from 'src/constants/betas.js'
|
|
11
|
+
import type { SDKAssistantMessageError } from 'src/entrypoints/agentSdkTypes.js'
|
|
12
|
+
import type {
|
|
13
|
+
AssistantMessage,
|
|
14
|
+
Message,
|
|
15
|
+
UserMessage,
|
|
16
|
+
} from 'src/types/message.js'
|
|
17
|
+
import {
|
|
18
|
+
getAnthropicApiKeyWithSource,
|
|
19
|
+
getClaudeAIOAuthTokens,
|
|
20
|
+
getOauthAccountInfo,
|
|
21
|
+
isClaudeAISubscriber,
|
|
22
|
+
} from 'src/utils/auth.js'
|
|
23
|
+
import {
|
|
24
|
+
createAssistantAPIErrorMessage,
|
|
25
|
+
NO_RESPONSE_REQUESTED,
|
|
26
|
+
} from 'src/utils/messages.js'
|
|
27
|
+
import {
|
|
28
|
+
getDefaultMainLoopModelSetting,
|
|
29
|
+
isNonCustomOpusModel,
|
|
30
|
+
} from 'src/utils/model/model.js'
|
|
31
|
+
import { getModelStrings } from 'src/utils/model/modelStrings.js'
|
|
32
|
+
import { getAPIProvider } from 'src/utils/model/providers.js'
|
|
33
|
+
import { getIsNonInteractiveSession } from '../../bootstrap/state.js'
|
|
34
|
+
import {
|
|
35
|
+
API_PDF_MAX_PAGES,
|
|
36
|
+
PDF_TARGET_RAW_SIZE,
|
|
37
|
+
} from '../../constants/apiLimits.js'
|
|
38
|
+
import { isEnvTruthy } from '../../utils/envUtils.js'
|
|
39
|
+
import { formatFileSize } from '../../utils/format.js'
|
|
40
|
+
import { ImageResizeError } from '../../utils/imageResizer.js'
|
|
41
|
+
import { ImageSizeError } from '../../utils/imageValidation.js'
|
|
42
|
+
import {
|
|
43
|
+
type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
44
|
+
logEvent,
|
|
45
|
+
} from '../analytics/index.js'
|
|
46
|
+
import {
|
|
47
|
+
type ClaudeAILimits,
|
|
48
|
+
getRateLimitErrorMessage,
|
|
49
|
+
type OverageDisabledReason,
|
|
50
|
+
} from '../claudeAiLimits.js'
|
|
51
|
+
import { shouldProcessRateLimits } from '../rateLimitMocking.js' // Used for /mock-limits command
|
|
52
|
+
import { extractConnectionErrorDetails, formatAPIError } from './errorUtils.js'
|
|
53
|
+
|
|
54
|
+
export const API_ERROR_MESSAGE_PREFIX = 'API Error'
|
|
55
|
+
|
|
56
|
+
export function startsWithApiErrorPrefix(text: string): boolean {
|
|
57
|
+
return (
|
|
58
|
+
text.startsWith(API_ERROR_MESSAGE_PREFIX) ||
|
|
59
|
+
text.startsWith(`Please run /login · ${API_ERROR_MESSAGE_PREFIX}`)
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
export const PROMPT_TOO_LONG_ERROR_MESSAGE = 'Prompt is too long'
|
|
63
|
+
|
|
64
|
+
export function isPromptTooLongMessage(msg: AssistantMessage): boolean {
|
|
65
|
+
if (!msg.isApiErrorMessage) {
|
|
66
|
+
return false
|
|
67
|
+
}
|
|
68
|
+
const content = msg.message.content
|
|
69
|
+
if (!Array.isArray(content)) {
|
|
70
|
+
return false
|
|
71
|
+
}
|
|
72
|
+
return content.some(
|
|
73
|
+
block =>
|
|
74
|
+
block.type === 'text' &&
|
|
75
|
+
block.text.startsWith(PROMPT_TOO_LONG_ERROR_MESSAGE),
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Parse actual/limit token counts from a raw prompt-too-long API error
|
|
81
|
+
* message like "prompt is too long: 137500 tokens > 135000 maximum".
|
|
82
|
+
* The raw string may be wrapped in SDK prefixes or JSON envelopes, or
|
|
83
|
+
* have different casing (Vertex), so this is intentionally lenient.
|
|
84
|
+
*/
|
|
85
|
+
export function parsePromptTooLongTokenCounts(rawMessage: string): {
|
|
86
|
+
actualTokens: number | undefined
|
|
87
|
+
limitTokens: number | undefined
|
|
88
|
+
} {
|
|
89
|
+
const match = rawMessage.match(
|
|
90
|
+
/prompt is too long[^0-9]*(\d+)\s*tokens?\s*>\s*(\d+)/i,
|
|
91
|
+
)
|
|
92
|
+
return {
|
|
93
|
+
actualTokens: match ? parseInt(match[1]!, 10) : undefined,
|
|
94
|
+
limitTokens: match ? parseInt(match[2]!, 10) : undefined,
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Returns how many tokens over the limit a prompt-too-long error reports,
|
|
100
|
+
* or undefined if the message isn't PTL or its errorDetails are unparseable.
|
|
101
|
+
* Reactive compact uses this gap to jump past multiple groups in one retry
|
|
102
|
+
* instead of peeling one-at-a-time.
|
|
103
|
+
*/
|
|
104
|
+
export function getPromptTooLongTokenGap(
|
|
105
|
+
msg: AssistantMessage,
|
|
106
|
+
): number | undefined {
|
|
107
|
+
if (!isPromptTooLongMessage(msg) || !msg.errorDetails) {
|
|
108
|
+
return undefined
|
|
109
|
+
}
|
|
110
|
+
const { actualTokens, limitTokens } = parsePromptTooLongTokenCounts(
|
|
111
|
+
msg.errorDetails,
|
|
112
|
+
)
|
|
113
|
+
if (actualTokens === undefined || limitTokens === undefined) {
|
|
114
|
+
return undefined
|
|
115
|
+
}
|
|
116
|
+
const gap = actualTokens - limitTokens
|
|
117
|
+
return gap > 0 ? gap : undefined
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Is this raw API error text a media-size rejection that stripImagesFromMessages
|
|
122
|
+
* can fix? Reactive compact's summarize retry uses this to decide whether to
|
|
123
|
+
* strip and retry (media error) or bail (anything else).
|
|
124
|
+
*
|
|
125
|
+
* Patterns MUST stay in sync with the getAssistantMessageFromError branches
|
|
126
|
+
* that populate errorDetails (~L523 PDF, ~L560 image, ~L573 many-image) and
|
|
127
|
+
* the classifyAPIError branches (~L929-946). The closed loop: errorDetails is
|
|
128
|
+
* only set after those branches already matched these same substrings, so
|
|
129
|
+
* isMediaSizeError(errorDetails) is tautologically true for that path. API
|
|
130
|
+
* wording drift causes graceful degradation (errorDetails stays undefined,
|
|
131
|
+
* caller short-circuits), not a false negative.
|
|
132
|
+
*/
|
|
133
|
+
export function isMediaSizeError(raw: string): boolean {
|
|
134
|
+
return (
|
|
135
|
+
(raw.includes('image exceeds') && raw.includes('maximum')) ||
|
|
136
|
+
(raw.includes('image dimensions exceed') && raw.includes('many-image')) ||
|
|
137
|
+
/maximum of \d+ PDF pages/.test(raw)
|
|
138
|
+
)
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Message-level predicate: is this assistant message a media-size rejection?
|
|
143
|
+
* Parallel to isPromptTooLongMessage. Checks errorDetails (the raw API error
|
|
144
|
+
* string populated by the getAssistantMessageFromError branches at ~L523/560/573)
|
|
145
|
+
* rather than content text, since media errors have per-variant content strings.
|
|
146
|
+
*/
|
|
147
|
+
export function isMediaSizeErrorMessage(msg: AssistantMessage): boolean {
|
|
148
|
+
return (
|
|
149
|
+
msg.isApiErrorMessage === true &&
|
|
150
|
+
msg.errorDetails !== undefined &&
|
|
151
|
+
isMediaSizeError(msg.errorDetails)
|
|
152
|
+
)
|
|
153
|
+
}
|
|
154
|
+
export const CREDIT_BALANCE_TOO_LOW_ERROR_MESSAGE = 'Credit balance is too low'
|
|
155
|
+
export const INVALID_API_KEY_ERROR_MESSAGE = 'Not logged in · Please run /login'
|
|
156
|
+
export const INVALID_API_KEY_ERROR_MESSAGE_EXTERNAL =
|
|
157
|
+
'Invalid API key · Fix external API key'
|
|
158
|
+
export const ORG_DISABLED_ERROR_MESSAGE_ENV_KEY_WITH_OAUTH =
|
|
159
|
+
'Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your subscription instead'
|
|
160
|
+
export const ORG_DISABLED_ERROR_MESSAGE_ENV_KEY =
|
|
161
|
+
'Your ANTHROPIC_API_KEY belongs to a disabled organization · Update or unset the environment variable'
|
|
162
|
+
export const TOKEN_REVOKED_ERROR_MESSAGE =
|
|
163
|
+
'OAuth token revoked · Please run /login'
|
|
164
|
+
export const CCR_AUTH_ERROR_MESSAGE =
|
|
165
|
+
'Authentication error · This may be a temporary network issue, please try again'
|
|
166
|
+
export const REPEATED_529_ERROR_MESSAGE = 'Repeated 529 Overloaded errors'
|
|
167
|
+
export const CUSTOM_OFF_SWITCH_MESSAGE =
|
|
168
|
+
'Opus is experiencing high load, please use /model to switch to Sonnet'
|
|
169
|
+
export const API_TIMEOUT_ERROR_MESSAGE = 'Request timed out'
|
|
170
|
+
export function getPdfTooLargeErrorMessage(): string {
|
|
171
|
+
const limits = `max ${API_PDF_MAX_PAGES} pages, ${formatFileSize(PDF_TARGET_RAW_SIZE)}`
|
|
172
|
+
return getIsNonInteractiveSession()
|
|
173
|
+
? `PDF too large (${limits}). Try reading the file a different way (e.g., extract text with pdftotext).`
|
|
174
|
+
: `PDF too large (${limits}). Double press esc to go back and try again, or use pdftotext to convert to text first.`
|
|
175
|
+
}
|
|
176
|
+
export function getPdfPasswordProtectedErrorMessage(): string {
|
|
177
|
+
return getIsNonInteractiveSession()
|
|
178
|
+
? 'PDF is password protected. Try using a CLI tool to extract or convert the PDF.'
|
|
179
|
+
: 'PDF is password protected. Please double press esc to edit your message and try again.'
|
|
180
|
+
}
|
|
181
|
+
export function getPdfInvalidErrorMessage(): string {
|
|
182
|
+
return getIsNonInteractiveSession()
|
|
183
|
+
? 'The PDF file was not valid. Try converting it to text first (e.g., pdftotext).'
|
|
184
|
+
: 'The PDF file was not valid. Double press esc to go back and try again with a different file.'
|
|
185
|
+
}
|
|
186
|
+
export function getImageTooLargeErrorMessage(): string {
|
|
187
|
+
return getIsNonInteractiveSession()
|
|
188
|
+
? 'Image was too large. Try resizing the image or using a different approach.'
|
|
189
|
+
: 'Image was too large. Double press esc to go back and try again with a smaller image.'
|
|
190
|
+
}
|
|
191
|
+
export function getRequestTooLargeErrorMessage(): string {
|
|
192
|
+
const limits = `max ${formatFileSize(PDF_TARGET_RAW_SIZE)}`
|
|
193
|
+
return getIsNonInteractiveSession()
|
|
194
|
+
? `Request too large (${limits}). Try with a smaller file.`
|
|
195
|
+
: `Request too large (${limits}). Double press esc to go back and try with a smaller file.`
|
|
196
|
+
}
|
|
197
|
+
export const OAUTH_ORG_NOT_ALLOWED_ERROR_MESSAGE =
|
|
198
|
+
'Your account does not have access to Claude Code. Please run /login.'
|
|
199
|
+
|
|
200
|
+
export function getTokenRevokedErrorMessage(): string {
|
|
201
|
+
return getIsNonInteractiveSession()
|
|
202
|
+
? 'Your account does not have access to Claude. Please login again or contact your administrator.'
|
|
203
|
+
: TOKEN_REVOKED_ERROR_MESSAGE
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export function getOauthOrgNotAllowedErrorMessage(): string {
|
|
207
|
+
return getIsNonInteractiveSession()
|
|
208
|
+
? 'Your organization does not have access to Claude. Please login again or contact your administrator.'
|
|
209
|
+
: OAUTH_ORG_NOT_ALLOWED_ERROR_MESSAGE
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Check if we're in CCR (Claude Code Remote) mode.
|
|
214
|
+
* In CCR mode, auth is handled via JWTs provided by the infrastructure,
|
|
215
|
+
* not via /login. Transient auth errors should suggest retrying, not logging in.
|
|
216
|
+
*/
|
|
217
|
+
function isCCRMode(): boolean {
|
|
218
|
+
return isEnvTruthy(process.env.CLAUDE_CODE_REMOTE)
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Temp helper to log tool_use/tool_result mismatch errors
|
|
222
|
+
function logToolUseToolResultMismatch(
|
|
223
|
+
toolUseId: string,
|
|
224
|
+
messages: Message[],
|
|
225
|
+
messagesForAPI: (UserMessage | AssistantMessage)[],
|
|
226
|
+
): void {
|
|
227
|
+
try {
|
|
228
|
+
// Find tool_use in normalized messages
|
|
229
|
+
let normalizedIndex = -1
|
|
230
|
+
for (let i = 0; i < messagesForAPI.length; i++) {
|
|
231
|
+
const msg = messagesForAPI[i]
|
|
232
|
+
if (!msg) continue
|
|
233
|
+
const content = msg.message.content
|
|
234
|
+
if (Array.isArray(content)) {
|
|
235
|
+
for (const block of content) {
|
|
236
|
+
if (
|
|
237
|
+
block.type === 'tool_use' &&
|
|
238
|
+
'id' in block &&
|
|
239
|
+
block.id === toolUseId
|
|
240
|
+
) {
|
|
241
|
+
normalizedIndex = i
|
|
242
|
+
break
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (normalizedIndex !== -1) break
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Find tool_use in original messages
|
|
250
|
+
let originalIndex = -1
|
|
251
|
+
for (let i = 0; i < messages.length; i++) {
|
|
252
|
+
const msg = messages[i]
|
|
253
|
+
if (!msg) continue
|
|
254
|
+
if (msg.type === 'assistant' && 'message' in msg) {
|
|
255
|
+
const content = msg.message.content
|
|
256
|
+
if (Array.isArray(content)) {
|
|
257
|
+
for (const block of content) {
|
|
258
|
+
if (
|
|
259
|
+
block.type === 'tool_use' &&
|
|
260
|
+
'id' in block &&
|
|
261
|
+
block.id === toolUseId
|
|
262
|
+
) {
|
|
263
|
+
originalIndex = i
|
|
264
|
+
break
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
if (originalIndex !== -1) break
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// Build normalized sequence
|
|
273
|
+
const normalizedSeq: string[] = []
|
|
274
|
+
for (let i = normalizedIndex + 1; i < messagesForAPI.length; i++) {
|
|
275
|
+
const msg = messagesForAPI[i]
|
|
276
|
+
if (!msg) continue
|
|
277
|
+
const content = msg.message.content
|
|
278
|
+
if (Array.isArray(content)) {
|
|
279
|
+
for (const block of content) {
|
|
280
|
+
const role = msg.message.role
|
|
281
|
+
if (block.type === 'tool_use' && 'id' in block) {
|
|
282
|
+
normalizedSeq.push(`${role}:tool_use:${block.id}`)
|
|
283
|
+
} else if (block.type === 'tool_result' && 'tool_use_id' in block) {
|
|
284
|
+
normalizedSeq.push(`${role}:tool_result:${block.tool_use_id}`)
|
|
285
|
+
} else if (block.type === 'text') {
|
|
286
|
+
normalizedSeq.push(`${role}:text`)
|
|
287
|
+
} else if (block.type === 'thinking') {
|
|
288
|
+
normalizedSeq.push(`${role}:thinking`)
|
|
289
|
+
} else if (block.type === 'image') {
|
|
290
|
+
normalizedSeq.push(`${role}:image`)
|
|
291
|
+
} else {
|
|
292
|
+
normalizedSeq.push(`${role}:${block.type}`)
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
} else if (typeof content === 'string') {
|
|
296
|
+
normalizedSeq.push(`${msg.message.role}:string_content`)
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// Build pre-normalized sequence
|
|
301
|
+
const preNormalizedSeq: string[] = []
|
|
302
|
+
for (let i = originalIndex + 1; i < messages.length; i++) {
|
|
303
|
+
const msg = messages[i]
|
|
304
|
+
if (!msg) continue
|
|
305
|
+
|
|
306
|
+
switch (msg.type) {
|
|
307
|
+
case 'user':
|
|
308
|
+
case 'assistant': {
|
|
309
|
+
if ('message' in msg) {
|
|
310
|
+
const content = msg.message.content
|
|
311
|
+
if (Array.isArray(content)) {
|
|
312
|
+
for (const block of content) {
|
|
313
|
+
const role = msg.message.role
|
|
314
|
+
if (block.type === 'tool_use' && 'id' in block) {
|
|
315
|
+
preNormalizedSeq.push(`${role}:tool_use:${block.id}`)
|
|
316
|
+
} else if (
|
|
317
|
+
block.type === 'tool_result' &&
|
|
318
|
+
'tool_use_id' in block
|
|
319
|
+
) {
|
|
320
|
+
preNormalizedSeq.push(
|
|
321
|
+
`${role}:tool_result:${block.tool_use_id}`,
|
|
322
|
+
)
|
|
323
|
+
} else if (block.type === 'text') {
|
|
324
|
+
preNormalizedSeq.push(`${role}:text`)
|
|
325
|
+
} else if (block.type === 'thinking') {
|
|
326
|
+
preNormalizedSeq.push(`${role}:thinking`)
|
|
327
|
+
} else if (block.type === 'image') {
|
|
328
|
+
preNormalizedSeq.push(`${role}:image`)
|
|
329
|
+
} else {
|
|
330
|
+
preNormalizedSeq.push(`${role}:${block.type}`)
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
} else if (typeof content === 'string') {
|
|
334
|
+
preNormalizedSeq.push(`${msg.message.role}:string_content`)
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
break
|
|
338
|
+
}
|
|
339
|
+
case 'attachment':
|
|
340
|
+
if ('attachment' in msg) {
|
|
341
|
+
preNormalizedSeq.push(`attachment:${msg.attachment.type}`)
|
|
342
|
+
}
|
|
343
|
+
break
|
|
344
|
+
case 'system':
|
|
345
|
+
if ('subtype' in msg) {
|
|
346
|
+
preNormalizedSeq.push(`system:${msg.subtype}`)
|
|
347
|
+
}
|
|
348
|
+
break
|
|
349
|
+
case 'progress':
|
|
350
|
+
if (
|
|
351
|
+
'progress' in msg &&
|
|
352
|
+
msg.progress &&
|
|
353
|
+
typeof msg.progress === 'object' &&
|
|
354
|
+
'type' in msg.progress
|
|
355
|
+
) {
|
|
356
|
+
preNormalizedSeq.push(`progress:${msg.progress.type ?? 'unknown'}`)
|
|
357
|
+
} else {
|
|
358
|
+
preNormalizedSeq.push('progress:unknown')
|
|
359
|
+
}
|
|
360
|
+
break
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// Log to Statsig
|
|
365
|
+
logEvent('tengu_tool_use_tool_result_mismatch_error', {
|
|
366
|
+
toolUseId:
|
|
367
|
+
toolUseId as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
368
|
+
normalizedSequence: normalizedSeq.join(
|
|
369
|
+
', ',
|
|
370
|
+
) as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
371
|
+
preNormalizedSequence: preNormalizedSeq.join(
|
|
372
|
+
', ',
|
|
373
|
+
) as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
374
|
+
normalizedMessageCount: messagesForAPI.length,
|
|
375
|
+
originalMessageCount: messages.length,
|
|
376
|
+
normalizedToolUseIndex: normalizedIndex,
|
|
377
|
+
originalToolUseIndex: originalIndex,
|
|
378
|
+
})
|
|
379
|
+
} catch (_) {
|
|
380
|
+
// Ignore errors in debug logging
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Type guard to check if a value is a valid Message response from the API
|
|
386
|
+
*/
|
|
387
|
+
export function isValidAPIMessage(value: unknown): value is BetaMessage {
|
|
388
|
+
return (
|
|
389
|
+
typeof value === 'object' &&
|
|
390
|
+
value !== null &&
|
|
391
|
+
'content' in value &&
|
|
392
|
+
'model' in value &&
|
|
393
|
+
'usage' in value &&
|
|
394
|
+
Array.isArray((value as BetaMessage).content) &&
|
|
395
|
+
typeof (value as BetaMessage).model === 'string' &&
|
|
396
|
+
typeof (value as BetaMessage).usage === 'object'
|
|
397
|
+
)
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/** Lower-level error that AWS can return. */
|
|
401
|
+
type AmazonError = {
|
|
402
|
+
Output?: {
|
|
403
|
+
__type?: string
|
|
404
|
+
}
|
|
405
|
+
Version?: string
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Given a response that doesn't look quite right, see if it contains any known error types we can extract.
|
|
410
|
+
*/
|
|
411
|
+
export function extractUnknownErrorFormat(value: unknown): string | undefined {
|
|
412
|
+
// Check if value is a valid object first
|
|
413
|
+
if (!value || typeof value !== 'object') {
|
|
414
|
+
return undefined
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
// Amazon Bedrock routing errors
|
|
418
|
+
if ((value as AmazonError).Output?.__type) {
|
|
419
|
+
return (value as AmazonError).Output!.__type
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
return undefined
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
export function getAssistantMessageFromError(
|
|
426
|
+
error: unknown,
|
|
427
|
+
model: string,
|
|
428
|
+
options?: {
|
|
429
|
+
messages?: Message[]
|
|
430
|
+
messagesForAPI?: (UserMessage | AssistantMessage)[]
|
|
431
|
+
},
|
|
432
|
+
): AssistantMessage {
|
|
433
|
+
// Check for SDK timeout errors
|
|
434
|
+
if (
|
|
435
|
+
error instanceof APIConnectionTimeoutError ||
|
|
436
|
+
(error instanceof APIConnectionError &&
|
|
437
|
+
error.message.toLowerCase().includes('timeout'))
|
|
438
|
+
) {
|
|
439
|
+
return createAssistantAPIErrorMessage({
|
|
440
|
+
content: API_TIMEOUT_ERROR_MESSAGE,
|
|
441
|
+
error: 'unknown',
|
|
442
|
+
})
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
// Check for image size/resize errors (thrown before API call during validation)
|
|
446
|
+
// Use getImageTooLargeErrorMessage() to show "esc esc" hint for CLI users
|
|
447
|
+
// but a generic message for SDK users (non-interactive mode)
|
|
448
|
+
if (error instanceof ImageSizeError || error instanceof ImageResizeError) {
|
|
449
|
+
return createAssistantAPIErrorMessage({
|
|
450
|
+
content: getImageTooLargeErrorMessage(),
|
|
451
|
+
})
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
// Check for emergency capacity off switch for Opus PAYG users
|
|
455
|
+
if (
|
|
456
|
+
error instanceof Error &&
|
|
457
|
+
error.message.includes(CUSTOM_OFF_SWITCH_MESSAGE)
|
|
458
|
+
) {
|
|
459
|
+
return createAssistantAPIErrorMessage({
|
|
460
|
+
content: CUSTOM_OFF_SWITCH_MESSAGE,
|
|
461
|
+
error: 'rate_limit',
|
|
462
|
+
})
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
if (
|
|
466
|
+
error instanceof APIError &&
|
|
467
|
+
error.status === 429 &&
|
|
468
|
+
shouldProcessRateLimits(isClaudeAISubscriber())
|
|
469
|
+
) {
|
|
470
|
+
// Check if this is the new API with multiple rate limit headers
|
|
471
|
+
const rateLimitType = error.headers?.get?.(
|
|
472
|
+
'anthropic-ratelimit-unified-representative-claim',
|
|
473
|
+
) as 'five_hour' | 'seven_day' | 'seven_day_opus' | null
|
|
474
|
+
|
|
475
|
+
const overageStatus = error.headers?.get?.(
|
|
476
|
+
'anthropic-ratelimit-unified-overage-status',
|
|
477
|
+
) as 'allowed' | 'allowed_warning' | 'rejected' | null
|
|
478
|
+
|
|
479
|
+
// If we have the new headers, use the new message generation
|
|
480
|
+
if (rateLimitType || overageStatus) {
|
|
481
|
+
// Build limits object from error headers to determine the appropriate message
|
|
482
|
+
const limits: ClaudeAILimits = {
|
|
483
|
+
status: 'rejected',
|
|
484
|
+
unifiedRateLimitFallbackAvailable: false,
|
|
485
|
+
isUsingOverage: false,
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
// Extract rate limit information from headers
|
|
489
|
+
const resetHeader = error.headers?.get?.(
|
|
490
|
+
'anthropic-ratelimit-unified-reset',
|
|
491
|
+
)
|
|
492
|
+
if (resetHeader) {
|
|
493
|
+
limits.resetsAt = Number(resetHeader)
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
if (rateLimitType) {
|
|
497
|
+
limits.rateLimitType = rateLimitType
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
if (overageStatus) {
|
|
501
|
+
limits.overageStatus = overageStatus
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
const overageResetHeader = error.headers?.get?.(
|
|
505
|
+
'anthropic-ratelimit-unified-overage-reset',
|
|
506
|
+
)
|
|
507
|
+
if (overageResetHeader) {
|
|
508
|
+
limits.overageResetsAt = Number(overageResetHeader)
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
const overageDisabledReason = error.headers?.get?.(
|
|
512
|
+
'anthropic-ratelimit-unified-overage-disabled-reason',
|
|
513
|
+
) as OverageDisabledReason | null
|
|
514
|
+
if (overageDisabledReason) {
|
|
515
|
+
limits.overageDisabledReason = overageDisabledReason
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
// Use the new message format for all new API rate limits
|
|
519
|
+
const specificErrorMessage = getRateLimitErrorMessage(limits, model)
|
|
520
|
+
if (specificErrorMessage) {
|
|
521
|
+
return createAssistantAPIErrorMessage({
|
|
522
|
+
content: specificErrorMessage,
|
|
523
|
+
error: 'rate_limit',
|
|
524
|
+
})
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
// If getRateLimitErrorMessage returned null, it means the fallback mechanism
|
|
528
|
+
// will handle this silently (e.g., Opus -> Sonnet fallback for eligible users).
|
|
529
|
+
// Return NO_RESPONSE_REQUESTED so no error is shown to the user, but the
|
|
530
|
+
// message is still recorded in conversation history for Claude to see.
|
|
531
|
+
return createAssistantAPIErrorMessage({
|
|
532
|
+
content: NO_RESPONSE_REQUESTED,
|
|
533
|
+
error: 'rate_limit',
|
|
534
|
+
})
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
// No quota headers — this is NOT a quota limit. Surface what the API actually
|
|
538
|
+
// said instead of a generic "Rate limit reached". Entitlement rejections
|
|
539
|
+
// (e.g. 1M context without Extra Usage) and infra capacity 429s land here.
|
|
540
|
+
if (error.message.includes('Extra usage is required for long context')) {
|
|
541
|
+
const hint = getIsNonInteractiveSession()
|
|
542
|
+
? 'enable extra usage at claude.ai/settings/usage, or use --model to switch to standard context'
|
|
543
|
+
: 'run /extra-usage to enable, or /model to switch to standard context'
|
|
544
|
+
return createAssistantAPIErrorMessage({
|
|
545
|
+
content: `${API_ERROR_MESSAGE_PREFIX}: Extra usage is required for 1M context · ${hint}`,
|
|
546
|
+
error: 'rate_limit',
|
|
547
|
+
})
|
|
548
|
+
}
|
|
549
|
+
// SDK's APIError.makeMessage prepends "429 " and JSON-stringifies the body
|
|
550
|
+
// when there's no top-level .message — extract the inner error.message.
|
|
551
|
+
const stripped = error.message.replace(/^429\s+/, '')
|
|
552
|
+
const innerMessage = stripped.match(/"message"\s*:\s*"([^"]*)"/)?.[1]
|
|
553
|
+
const detail = innerMessage || stripped
|
|
554
|
+
return createAssistantAPIErrorMessage({
|
|
555
|
+
content: `${API_ERROR_MESSAGE_PREFIX}: Request rejected (429) · ${detail || 'this may be a temporary capacity issue — check status.anthropic.com'}`,
|
|
556
|
+
error: 'rate_limit',
|
|
557
|
+
})
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
// Handle prompt too long errors (Vertex returns 413, direct API returns 400)
|
|
561
|
+
// Use case-insensitive check since Vertex returns "Prompt is too long" (capitalized)
|
|
562
|
+
if (
|
|
563
|
+
error instanceof Error &&
|
|
564
|
+
error.message.toLowerCase().includes('prompt is too long')
|
|
565
|
+
) {
|
|
566
|
+
// Content stays generic (UI matches on exact string). The raw error with
|
|
567
|
+
// token counts goes into errorDetails — reactive compact's retry loop
|
|
568
|
+
// parses the gap from there via getPromptTooLongTokenGap.
|
|
569
|
+
return createAssistantAPIErrorMessage({
|
|
570
|
+
content: PROMPT_TOO_LONG_ERROR_MESSAGE,
|
|
571
|
+
error: 'invalid_request',
|
|
572
|
+
errorDetails: error.message,
|
|
573
|
+
})
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
// Check for PDF page limit errors
|
|
577
|
+
if (
|
|
578
|
+
error instanceof Error &&
|
|
579
|
+
/maximum of \d+ PDF pages/.test(error.message)
|
|
580
|
+
) {
|
|
581
|
+
return createAssistantAPIErrorMessage({
|
|
582
|
+
content: getPdfTooLargeErrorMessage(),
|
|
583
|
+
error: 'invalid_request',
|
|
584
|
+
errorDetails: error.message,
|
|
585
|
+
})
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
// Check for password-protected PDF errors
|
|
589
|
+
if (
|
|
590
|
+
error instanceof Error &&
|
|
591
|
+
error.message.includes('The PDF specified is password protected')
|
|
592
|
+
) {
|
|
593
|
+
return createAssistantAPIErrorMessage({
|
|
594
|
+
content: getPdfPasswordProtectedErrorMessage(),
|
|
595
|
+
error: 'invalid_request',
|
|
596
|
+
})
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
// Check for invalid PDF errors (e.g., HTML file renamed to .pdf)
|
|
600
|
+
// Without this handler, invalid PDF document blocks persist in conversation
|
|
601
|
+
// context and cause every subsequent API call to fail with 400.
|
|
602
|
+
if (
|
|
603
|
+
error instanceof Error &&
|
|
604
|
+
error.message.includes('The PDF specified was not valid')
|
|
605
|
+
) {
|
|
606
|
+
return createAssistantAPIErrorMessage({
|
|
607
|
+
content: getPdfInvalidErrorMessage(),
|
|
608
|
+
error: 'invalid_request',
|
|
609
|
+
})
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
// Check for image size errors (e.g., "image exceeds 5 MB maximum: 5316852 bytes > 5242880 bytes")
|
|
613
|
+
if (
|
|
614
|
+
error instanceof APIError &&
|
|
615
|
+
error.status === 400 &&
|
|
616
|
+
error.message.includes('image exceeds') &&
|
|
617
|
+
error.message.includes('maximum')
|
|
618
|
+
) {
|
|
619
|
+
return createAssistantAPIErrorMessage({
|
|
620
|
+
content: getImageTooLargeErrorMessage(),
|
|
621
|
+
errorDetails: error.message,
|
|
622
|
+
})
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
// Check for many-image dimension errors (API enforces stricter 2000px limit for many-image requests)
|
|
626
|
+
if (
|
|
627
|
+
error instanceof APIError &&
|
|
628
|
+
error.status === 400 &&
|
|
629
|
+
error.message.includes('image dimensions exceed') &&
|
|
630
|
+
error.message.includes('many-image')
|
|
631
|
+
) {
|
|
632
|
+
return createAssistantAPIErrorMessage({
|
|
633
|
+
content: getIsNonInteractiveSession()
|
|
634
|
+
? 'An image in the conversation exceeds the dimension limit for many-image requests (2000px). Start a new session with fewer images.'
|
|
635
|
+
: 'An image in the conversation exceeds the dimension limit for many-image requests (2000px). Run /compact to remove old images from context, or start a new session.',
|
|
636
|
+
error: 'invalid_request',
|
|
637
|
+
errorDetails: error.message,
|
|
638
|
+
})
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
// Server rejected the afk-mode beta header (plan does not include auto
|
|
642
|
+
// mode). AFK_MODE_BETA_HEADER is '' in non-TRANSCRIPT_CLASSIFIER builds,
|
|
643
|
+
// so the truthy guard keeps this inert there.
|
|
644
|
+
if (
|
|
645
|
+
AFK_MODE_BETA_HEADER &&
|
|
646
|
+
error instanceof APIError &&
|
|
647
|
+
error.status === 400 &&
|
|
648
|
+
error.message.includes(AFK_MODE_BETA_HEADER) &&
|
|
649
|
+
error.message.includes('anthropic-beta')
|
|
650
|
+
) {
|
|
651
|
+
return createAssistantAPIErrorMessage({
|
|
652
|
+
content: 'Auto mode is unavailable for your plan',
|
|
653
|
+
error: 'invalid_request',
|
|
654
|
+
})
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
// Check for request too large errors (413 status)
|
|
658
|
+
// This typically happens when a large PDF + conversation context exceeds the 32MB API limit
|
|
659
|
+
if (error instanceof APIError && error.status === 413) {
|
|
660
|
+
return createAssistantAPIErrorMessage({
|
|
661
|
+
content: getRequestTooLargeErrorMessage(),
|
|
662
|
+
error: 'invalid_request',
|
|
663
|
+
})
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
// Check for tool_use/tool_result concurrency error
|
|
667
|
+
if (
|
|
668
|
+
error instanceof APIError &&
|
|
669
|
+
error.status === 400 &&
|
|
670
|
+
error.message.includes(
|
|
671
|
+
'`tool_use` ids were found without `tool_result` blocks immediately after',
|
|
672
|
+
)
|
|
673
|
+
) {
|
|
674
|
+
// Log to Statsig if we have the message context
|
|
675
|
+
if (options?.messages && options?.messagesForAPI) {
|
|
676
|
+
const toolUseIdMatch = error.message.match(/toolu_[a-zA-Z0-9]+/)
|
|
677
|
+
const toolUseId = toolUseIdMatch ? toolUseIdMatch[0] : null
|
|
678
|
+
if (toolUseId) {
|
|
679
|
+
logToolUseToolResultMismatch(
|
|
680
|
+
toolUseId,
|
|
681
|
+
options.messages,
|
|
682
|
+
options.messagesForAPI,
|
|
683
|
+
)
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
if (process.env.USER_TYPE === 'ant') {
|
|
688
|
+
const baseMessage = `API Error: 400 ${error.message}\n\nRun /share and post the JSON file to ${MACRO.FEEDBACK_CHANNEL}.`
|
|
689
|
+
const rewindInstruction = getIsNonInteractiveSession()
|
|
690
|
+
? ''
|
|
691
|
+
: ' Then, use /rewind to recover the conversation.'
|
|
692
|
+
return createAssistantAPIErrorMessage({
|
|
693
|
+
content: baseMessage + rewindInstruction,
|
|
694
|
+
error: 'invalid_request',
|
|
695
|
+
})
|
|
696
|
+
} else {
|
|
697
|
+
const baseMessage = 'API Error: 400 due to tool use concurrency issues.'
|
|
698
|
+
const rewindInstruction = getIsNonInteractiveSession()
|
|
699
|
+
? ''
|
|
700
|
+
: ' Run /rewind to recover the conversation.'
|
|
701
|
+
return createAssistantAPIErrorMessage({
|
|
702
|
+
content: baseMessage + rewindInstruction,
|
|
703
|
+
error: 'invalid_request',
|
|
704
|
+
})
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
if (
|
|
709
|
+
error instanceof APIError &&
|
|
710
|
+
error.status === 400 &&
|
|
711
|
+
error.message.includes('unexpected `tool_use_id` found in `tool_result`')
|
|
712
|
+
) {
|
|
713
|
+
logEvent('tengu_unexpected_tool_result', {})
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
// Duplicate tool_use IDs (CC-1212). ensureToolResultPairing strips these
|
|
717
|
+
// before send, so hitting this means a new corruption path slipped through.
|
|
718
|
+
// Log for root-causing, and give users a recovery path instead of deadlock.
|
|
719
|
+
if (
|
|
720
|
+
error instanceof APIError &&
|
|
721
|
+
error.status === 400 &&
|
|
722
|
+
error.message.includes('`tool_use` ids must be unique')
|
|
723
|
+
) {
|
|
724
|
+
logEvent('tengu_duplicate_tool_use_id', {})
|
|
725
|
+
const rewindInstruction = getIsNonInteractiveSession()
|
|
726
|
+
? ''
|
|
727
|
+
: ' Run /rewind to recover the conversation.'
|
|
728
|
+
return createAssistantAPIErrorMessage({
|
|
729
|
+
content: `API Error: 400 duplicate tool_use ID in conversation history.${rewindInstruction}`,
|
|
730
|
+
error: 'invalid_request',
|
|
731
|
+
errorDetails: error.message,
|
|
732
|
+
})
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
// Check for invalid model name error for subscription users trying to use Opus
|
|
736
|
+
if (
|
|
737
|
+
isClaudeAISubscriber() &&
|
|
738
|
+
error instanceof APIError &&
|
|
739
|
+
error.status === 400 &&
|
|
740
|
+
error.message.toLowerCase().includes('invalid model name') &&
|
|
741
|
+
(isNonCustomOpusModel(model) || model === 'opus')
|
|
742
|
+
) {
|
|
743
|
+
return createAssistantAPIErrorMessage({
|
|
744
|
+
content:
|
|
745
|
+
'Claude Opus is not available with the Claude Pro plan. If you have updated your subscription plan recently, run /logout and /login for the plan to take effect.',
|
|
746
|
+
error: 'invalid_request',
|
|
747
|
+
})
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
// Check for invalid model name error for Ant users. Claude Code may be
|
|
751
|
+
// defaulting to a custom internal-only model for Ants, and there might be
|
|
752
|
+
// Ants using new or unknown org IDs that haven't been gated in.
|
|
753
|
+
if (
|
|
754
|
+
process.env.USER_TYPE === 'ant' &&
|
|
755
|
+
!process.env.ANTHROPIC_MODEL &&
|
|
756
|
+
error instanceof Error &&
|
|
757
|
+
error.message.toLowerCase().includes('invalid model name')
|
|
758
|
+
) {
|
|
759
|
+
// Get organization ID from config - only use OAuth account data when actively using OAuth
|
|
760
|
+
const orgId = getOauthAccountInfo()?.organizationUuid
|
|
761
|
+
const baseMsg = `[ANT-ONLY] Your org isn't gated into the \`${model}\` model. Either run \`claude\` with \`ANTHROPIC_MODEL=${getDefaultMainLoopModelSetting()}\``
|
|
762
|
+
const msg = orgId
|
|
763
|
+
? `${baseMsg} or share your orgId (${orgId}) in ${MACRO.FEEDBACK_CHANNEL} for help getting access.`
|
|
764
|
+
: `${baseMsg} or reach out in ${MACRO.FEEDBACK_CHANNEL} for help getting access.`
|
|
765
|
+
|
|
766
|
+
return createAssistantAPIErrorMessage({
|
|
767
|
+
content: msg,
|
|
768
|
+
error: 'invalid_request',
|
|
769
|
+
})
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
if (
|
|
773
|
+
error instanceof Error &&
|
|
774
|
+
error.message.includes('Your credit balance is too low')
|
|
775
|
+
) {
|
|
776
|
+
return createAssistantAPIErrorMessage({
|
|
777
|
+
content: CREDIT_BALANCE_TOO_LOW_ERROR_MESSAGE,
|
|
778
|
+
error: 'billing_error',
|
|
779
|
+
})
|
|
780
|
+
}
|
|
781
|
+
// "Organization has been disabled" — commonly a stale ANTHROPIC_API_KEY
|
|
782
|
+
// from a previous employer/project overriding subscription auth. Only handle
|
|
783
|
+
// the env-var case; apiKeyHelper and /login-managed keys mean the active
|
|
784
|
+
// auth's org is genuinely disabled with no dormant fallback to point at.
|
|
785
|
+
if (
|
|
786
|
+
error instanceof APIError &&
|
|
787
|
+
error.status === 400 &&
|
|
788
|
+
error.message.toLowerCase().includes('organization has been disabled')
|
|
789
|
+
) {
|
|
790
|
+
const { source } = getAnthropicApiKeyWithSource()
|
|
791
|
+
// getAnthropicApiKeyWithSource conflates the env var with FD-passed keys
|
|
792
|
+
// under the same source value, and in CCR mode OAuth stays active despite
|
|
793
|
+
// the env var. The three guards ensure we only blame the env var when it's
|
|
794
|
+
// actually set and actually on the wire.
|
|
795
|
+
if (
|
|
796
|
+
source === 'ANTHROPIC_API_KEY' &&
|
|
797
|
+
process.env.ANTHROPIC_API_KEY &&
|
|
798
|
+
!isClaudeAISubscriber()
|
|
799
|
+
) {
|
|
800
|
+
const hasStoredOAuth = getClaudeAIOAuthTokens()?.accessToken != null
|
|
801
|
+
// Not 'authentication_failed' — that triggers VS Code's showLogin(), but
|
|
802
|
+
// login can't fix this (approved env var keeps overriding OAuth). The fix
|
|
803
|
+
// is configuration-based (unset the var), so invalid_request is correct.
|
|
804
|
+
return createAssistantAPIErrorMessage({
|
|
805
|
+
error: 'invalid_request',
|
|
806
|
+
content: hasStoredOAuth
|
|
807
|
+
? ORG_DISABLED_ERROR_MESSAGE_ENV_KEY_WITH_OAUTH
|
|
808
|
+
: ORG_DISABLED_ERROR_MESSAGE_ENV_KEY,
|
|
809
|
+
})
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
if (
|
|
814
|
+
error instanceof Error &&
|
|
815
|
+
error.message.toLowerCase().includes('x-api-key')
|
|
816
|
+
) {
|
|
817
|
+
// In CCR mode, auth is via JWTs - this is likely a transient network issue
|
|
818
|
+
if (isCCRMode()) {
|
|
819
|
+
return createAssistantAPIErrorMessage({
|
|
820
|
+
error: 'authentication_failed',
|
|
821
|
+
content: CCR_AUTH_ERROR_MESSAGE,
|
|
822
|
+
})
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
// Check if the API key is from an external source
|
|
826
|
+
const { source } = getAnthropicApiKeyWithSource()
|
|
827
|
+
const isExternalSource =
|
|
828
|
+
source === 'ANTHROPIC_API_KEY' || source === 'apiKeyHelper'
|
|
829
|
+
|
|
830
|
+
return createAssistantAPIErrorMessage({
|
|
831
|
+
error: 'authentication_failed',
|
|
832
|
+
content: isExternalSource
|
|
833
|
+
? INVALID_API_KEY_ERROR_MESSAGE_EXTERNAL
|
|
834
|
+
: INVALID_API_KEY_ERROR_MESSAGE,
|
|
835
|
+
})
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
// Check for OAuth token revocation error
|
|
839
|
+
if (
|
|
840
|
+
error instanceof APIError &&
|
|
841
|
+
error.status === 403 &&
|
|
842
|
+
error.message.includes('OAuth token has been revoked')
|
|
843
|
+
) {
|
|
844
|
+
return createAssistantAPIErrorMessage({
|
|
845
|
+
error: 'authentication_failed',
|
|
846
|
+
content: getTokenRevokedErrorMessage(),
|
|
847
|
+
})
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
// Check for OAuth organization not allowed error
|
|
851
|
+
if (
|
|
852
|
+
error instanceof APIError &&
|
|
853
|
+
(error.status === 401 || error.status === 403) &&
|
|
854
|
+
error.message.includes(
|
|
855
|
+
'OAuth authentication is currently not allowed for this organization',
|
|
856
|
+
)
|
|
857
|
+
) {
|
|
858
|
+
return createAssistantAPIErrorMessage({
|
|
859
|
+
error: 'authentication_failed',
|
|
860
|
+
content: getOauthOrgNotAllowedErrorMessage(),
|
|
861
|
+
})
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
// Generic handler for other 401/403 authentication errors
|
|
865
|
+
if (
|
|
866
|
+
error instanceof APIError &&
|
|
867
|
+
(error.status === 401 || error.status === 403)
|
|
868
|
+
) {
|
|
869
|
+
// In CCR mode, auth is via JWTs - this is likely a transient network issue
|
|
870
|
+
if (isCCRMode()) {
|
|
871
|
+
return createAssistantAPIErrorMessage({
|
|
872
|
+
error: 'authentication_failed',
|
|
873
|
+
content: CCR_AUTH_ERROR_MESSAGE,
|
|
874
|
+
})
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
return createAssistantAPIErrorMessage({
|
|
878
|
+
error: 'authentication_failed',
|
|
879
|
+
content: getIsNonInteractiveSession()
|
|
880
|
+
? `Failed to authenticate. ${API_ERROR_MESSAGE_PREFIX}: ${error.message}`
|
|
881
|
+
: `Please run /login · ${API_ERROR_MESSAGE_PREFIX}: ${error.message}`,
|
|
882
|
+
})
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
// Bedrock errors like "403 You don't have access to the model with the specified model ID."
|
|
886
|
+
// don't contain the actual model ID
|
|
887
|
+
if (
|
|
888
|
+
isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) &&
|
|
889
|
+
error instanceof Error &&
|
|
890
|
+
error.message.toLowerCase().includes('model id')
|
|
891
|
+
) {
|
|
892
|
+
const switchCmd = getIsNonInteractiveSession() ? '--model' : '/model'
|
|
893
|
+
const fallbackSuggestion = get3PModelFallbackSuggestion(model)
|
|
894
|
+
return createAssistantAPIErrorMessage({
|
|
895
|
+
content: fallbackSuggestion
|
|
896
|
+
? `${API_ERROR_MESSAGE_PREFIX} (${model}): ${error.message}. Try ${switchCmd} to switch to ${fallbackSuggestion}.`
|
|
897
|
+
: `${API_ERROR_MESSAGE_PREFIX} (${model}): ${error.message}. Run ${switchCmd} to pick a different model.`,
|
|
898
|
+
error: 'invalid_request',
|
|
899
|
+
})
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
// 404 Not Found — usually means the selected model doesn't exist or isn't
|
|
903
|
+
// available. Guide the user to /model so they can pick a valid one.
|
|
904
|
+
// For 3P users, suggest a specific fallback model they can try.
|
|
905
|
+
if (error instanceof APIError && error.status === 404) {
|
|
906
|
+
const switchCmd = getIsNonInteractiveSession() ? '--model' : '/model'
|
|
907
|
+
const fallbackSuggestion = get3PModelFallbackSuggestion(model)
|
|
908
|
+
return createAssistantAPIErrorMessage({
|
|
909
|
+
content: fallbackSuggestion
|
|
910
|
+
? `The model ${model} is not available on your ${getAPIProvider()} deployment. Try ${switchCmd} to switch to ${fallbackSuggestion}, or ask your admin to enable this model.`
|
|
911
|
+
: `There's an issue with the selected model (${model}). It may not exist or you may not have access to it. Run ${switchCmd} to pick a different model.`,
|
|
912
|
+
error: 'invalid_request',
|
|
913
|
+
})
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
// Connection errors (non-timeout) — use formatAPIError for detailed messages
|
|
917
|
+
if (error instanceof APIConnectionError) {
|
|
918
|
+
return createAssistantAPIErrorMessage({
|
|
919
|
+
content: `${API_ERROR_MESSAGE_PREFIX}: ${formatAPIError(error)}`,
|
|
920
|
+
error: 'unknown',
|
|
921
|
+
})
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
if (error instanceof Error) {
|
|
925
|
+
return createAssistantAPIErrorMessage({
|
|
926
|
+
content: `${API_ERROR_MESSAGE_PREFIX}: ${error.message}`,
|
|
927
|
+
error: 'unknown',
|
|
928
|
+
})
|
|
929
|
+
}
|
|
930
|
+
return createAssistantAPIErrorMessage({
|
|
931
|
+
content: API_ERROR_MESSAGE_PREFIX,
|
|
932
|
+
error: 'unknown',
|
|
933
|
+
})
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
/**
|
|
937
|
+
* For 3P users, suggest a fallback model when the selected model is unavailable.
|
|
938
|
+
* Returns a model name suggestion, or undefined if no suggestion is applicable.
|
|
939
|
+
*/
|
|
940
|
+
function get3PModelFallbackSuggestion(model: string): string | undefined {
|
|
941
|
+
if (getAPIProvider() === 'firstParty') {
|
|
942
|
+
return undefined
|
|
943
|
+
}
|
|
944
|
+
// @[MODEL LAUNCH]: Add a fallback suggestion chain for the new model → previous version for 3P
|
|
945
|
+
const m = model.toLowerCase()
|
|
946
|
+
// If the failing model looks like an Opus 4.6 variant, suggest the default Opus (4.1 for 3P)
|
|
947
|
+
if (m.includes('opus-4-6') || m.includes('opus_4_6')) {
|
|
948
|
+
return getModelStrings().opus41
|
|
949
|
+
}
|
|
950
|
+
// If the failing model looks like a Sonnet 4.6 variant, suggest Sonnet 4.5
|
|
951
|
+
if (m.includes('sonnet-4-6') || m.includes('sonnet_4_6')) {
|
|
952
|
+
return getModelStrings().sonnet45
|
|
953
|
+
}
|
|
954
|
+
// If the failing model looks like a Sonnet 4.5 variant, suggest Sonnet 4
|
|
955
|
+
if (m.includes('sonnet-4-5') || m.includes('sonnet_4_5')) {
|
|
956
|
+
return getModelStrings().sonnet40
|
|
957
|
+
}
|
|
958
|
+
return undefined
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
/**
|
|
962
|
+
* Classifies an API error into a specific error type for analytics tracking.
|
|
963
|
+
* Returns a standardized error type string suitable for Datadog tagging.
|
|
964
|
+
*/
|
|
965
|
+
export function classifyAPIError(error: unknown): string {
|
|
966
|
+
// Aborted requests
|
|
967
|
+
if (error instanceof Error && error.message === 'Request was aborted.') {
|
|
968
|
+
return 'aborted'
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
// Timeout errors
|
|
972
|
+
if (
|
|
973
|
+
error instanceof APIConnectionTimeoutError ||
|
|
974
|
+
(error instanceof APIConnectionError &&
|
|
975
|
+
error.message.toLowerCase().includes('timeout'))
|
|
976
|
+
) {
|
|
977
|
+
return 'api_timeout'
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
// Check for repeated 529 errors
|
|
981
|
+
if (
|
|
982
|
+
error instanceof Error &&
|
|
983
|
+
error.message.includes(REPEATED_529_ERROR_MESSAGE)
|
|
984
|
+
) {
|
|
985
|
+
return 'repeated_529'
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
// Check for emergency capacity off switch
|
|
989
|
+
if (
|
|
990
|
+
error instanceof Error &&
|
|
991
|
+
error.message.includes(CUSTOM_OFF_SWITCH_MESSAGE)
|
|
992
|
+
) {
|
|
993
|
+
return 'capacity_off_switch'
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
// Rate limiting
|
|
997
|
+
if (error instanceof APIError && error.status === 429) {
|
|
998
|
+
return 'rate_limit'
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
// Server overload (529)
|
|
1002
|
+
if (
|
|
1003
|
+
error instanceof APIError &&
|
|
1004
|
+
(error.status === 529 ||
|
|
1005
|
+
error.message?.includes('"type":"overloaded_error"'))
|
|
1006
|
+
) {
|
|
1007
|
+
return 'server_overload'
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
// Prompt/content size errors
|
|
1011
|
+
if (
|
|
1012
|
+
error instanceof Error &&
|
|
1013
|
+
error.message
|
|
1014
|
+
.toLowerCase()
|
|
1015
|
+
.includes(PROMPT_TOO_LONG_ERROR_MESSAGE.toLowerCase())
|
|
1016
|
+
) {
|
|
1017
|
+
return 'prompt_too_long'
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
// PDF errors
|
|
1021
|
+
if (
|
|
1022
|
+
error instanceof Error &&
|
|
1023
|
+
/maximum of \d+ PDF pages/.test(error.message)
|
|
1024
|
+
) {
|
|
1025
|
+
return 'pdf_too_large'
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
if (
|
|
1029
|
+
error instanceof Error &&
|
|
1030
|
+
error.message.includes('The PDF specified is password protected')
|
|
1031
|
+
) {
|
|
1032
|
+
return 'pdf_password_protected'
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
// Image size errors
|
|
1036
|
+
if (
|
|
1037
|
+
error instanceof APIError &&
|
|
1038
|
+
error.status === 400 &&
|
|
1039
|
+
error.message.includes('image exceeds') &&
|
|
1040
|
+
error.message.includes('maximum')
|
|
1041
|
+
) {
|
|
1042
|
+
return 'image_too_large'
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
// Many-image dimension errors
|
|
1046
|
+
if (
|
|
1047
|
+
error instanceof APIError &&
|
|
1048
|
+
error.status === 400 &&
|
|
1049
|
+
error.message.includes('image dimensions exceed') &&
|
|
1050
|
+
error.message.includes('many-image')
|
|
1051
|
+
) {
|
|
1052
|
+
return 'image_too_large'
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
// Tool use errors (400)
|
|
1056
|
+
if (
|
|
1057
|
+
error instanceof APIError &&
|
|
1058
|
+
error.status === 400 &&
|
|
1059
|
+
error.message.includes(
|
|
1060
|
+
'`tool_use` ids were found without `tool_result` blocks immediately after',
|
|
1061
|
+
)
|
|
1062
|
+
) {
|
|
1063
|
+
return 'tool_use_mismatch'
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1066
|
+
if (
|
|
1067
|
+
error instanceof APIError &&
|
|
1068
|
+
error.status === 400 &&
|
|
1069
|
+
error.message.includes('unexpected `tool_use_id` found in `tool_result`')
|
|
1070
|
+
) {
|
|
1071
|
+
return 'unexpected_tool_result'
|
|
1072
|
+
}
|
|
1073
|
+
|
|
1074
|
+
if (
|
|
1075
|
+
error instanceof APIError &&
|
|
1076
|
+
error.status === 400 &&
|
|
1077
|
+
error.message.includes('`tool_use` ids must be unique')
|
|
1078
|
+
) {
|
|
1079
|
+
return 'duplicate_tool_use_id'
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
// Invalid model errors (400)
|
|
1083
|
+
if (
|
|
1084
|
+
error instanceof APIError &&
|
|
1085
|
+
error.status === 400 &&
|
|
1086
|
+
error.message.toLowerCase().includes('invalid model name')
|
|
1087
|
+
) {
|
|
1088
|
+
return 'invalid_model'
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
// Credit/billing errors
|
|
1092
|
+
if (
|
|
1093
|
+
error instanceof Error &&
|
|
1094
|
+
error.message
|
|
1095
|
+
.toLowerCase()
|
|
1096
|
+
.includes(CREDIT_BALANCE_TOO_LOW_ERROR_MESSAGE.toLowerCase())
|
|
1097
|
+
) {
|
|
1098
|
+
return 'credit_balance_low'
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
// Authentication errors
|
|
1102
|
+
if (
|
|
1103
|
+
error instanceof Error &&
|
|
1104
|
+
error.message.toLowerCase().includes('x-api-key')
|
|
1105
|
+
) {
|
|
1106
|
+
return 'invalid_api_key'
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
if (
|
|
1110
|
+
error instanceof APIError &&
|
|
1111
|
+
error.status === 403 &&
|
|
1112
|
+
error.message.includes('OAuth token has been revoked')
|
|
1113
|
+
) {
|
|
1114
|
+
return 'token_revoked'
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1117
|
+
if (
|
|
1118
|
+
error instanceof APIError &&
|
|
1119
|
+
(error.status === 401 || error.status === 403) &&
|
|
1120
|
+
error.message.includes(
|
|
1121
|
+
'OAuth authentication is currently not allowed for this organization',
|
|
1122
|
+
)
|
|
1123
|
+
) {
|
|
1124
|
+
return 'oauth_org_not_allowed'
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
// Generic auth errors
|
|
1128
|
+
if (
|
|
1129
|
+
error instanceof APIError &&
|
|
1130
|
+
(error.status === 401 || error.status === 403)
|
|
1131
|
+
) {
|
|
1132
|
+
return 'auth_error'
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
// Bedrock-specific errors
|
|
1136
|
+
if (
|
|
1137
|
+
isEnvTruthy(process.env.CLAUDE_CODE_USE_BEDROCK) &&
|
|
1138
|
+
error instanceof Error &&
|
|
1139
|
+
error.message.toLowerCase().includes('model id')
|
|
1140
|
+
) {
|
|
1141
|
+
return 'bedrock_model_access'
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
// Status code based fallbacks
|
|
1145
|
+
if (error instanceof APIError) {
|
|
1146
|
+
const status = error.status
|
|
1147
|
+
if (status >= 500) return 'server_error'
|
|
1148
|
+
if (status >= 400) return 'client_error'
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
// Connection errors - check for SSL/TLS issues first
|
|
1152
|
+
if (error instanceof APIConnectionError) {
|
|
1153
|
+
const connectionDetails = extractConnectionErrorDetails(error)
|
|
1154
|
+
if (connectionDetails?.isSSLError) {
|
|
1155
|
+
return 'ssl_cert_error'
|
|
1156
|
+
}
|
|
1157
|
+
return 'connection_error'
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
return 'unknown'
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1163
|
+
export function categorizeRetryableAPIError(
|
|
1164
|
+
error: APIError,
|
|
1165
|
+
): SDKAssistantMessageError {
|
|
1166
|
+
if (
|
|
1167
|
+
error.status === 529 ||
|
|
1168
|
+
error.message?.includes('"type":"overloaded_error"')
|
|
1169
|
+
) {
|
|
1170
|
+
return 'rate_limit'
|
|
1171
|
+
}
|
|
1172
|
+
if (error.status === 429) {
|
|
1173
|
+
return 'rate_limit'
|
|
1174
|
+
}
|
|
1175
|
+
if (error.status === 401 || error.status === 403) {
|
|
1176
|
+
return 'authentication_failed'
|
|
1177
|
+
}
|
|
1178
|
+
if (error.status !== undefined && error.status >= 408) {
|
|
1179
|
+
return 'server_error'
|
|
1180
|
+
}
|
|
1181
|
+
return 'unknown'
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
export function getErrorMessageIfRefusal(
|
|
1185
|
+
stopReason: BetaStopReason | null,
|
|
1186
|
+
model: string,
|
|
1187
|
+
): AssistantMessage | undefined {
|
|
1188
|
+
if (stopReason !== 'refusal') {
|
|
1189
|
+
return
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
logEvent('tengu_refusal_api_response', {})
|
|
1193
|
+
|
|
1194
|
+
const baseMessage = getIsNonInteractiveSession()
|
|
1195
|
+
? `${API_ERROR_MESSAGE_PREFIX}: Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Try rephrasing the request or attempting a different approach.`
|
|
1196
|
+
: `${API_ERROR_MESSAGE_PREFIX}: Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Please double press esc to edit your last message or start a new session for Claude Code to assist with a different task.`
|
|
1197
|
+
|
|
1198
|
+
const modelSuggestion =
|
|
1199
|
+
model !== 'claude-sonnet-4-20250514'
|
|
1200
|
+
? ' If you are seeing this refusal repeatedly, try running /model claude-sonnet-4-20250514 to switch models.'
|
|
1201
|
+
: ''
|
|
1202
|
+
|
|
1203
|
+
return createAssistantAPIErrorMessage({
|
|
1204
|
+
content: baseMessage + modelSuggestion,
|
|
1205
|
+
error: 'invalid_request',
|
|
1206
|
+
})
|
|
1207
|
+
}
|