@xortex/xcode 3.0.1 → 3.0.2
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/QueryEngine.ts +1331 -0
- package/Task.ts +125 -0
- package/Tool.ts +792 -0
- package/assistant/sessionHistory.ts +87 -0
- package/bin/xcode +57 -25
- package/bridge/bridgeApi.ts +539 -0
- package/bridge/bridgeConfig.ts +48 -0
- package/bridge/bridgeDebug.ts +135 -0
- package/bridge/bridgeEnabled.ts +202 -0
- package/bridge/bridgeMain.ts +2999 -0
- package/bridge/bridgeMessaging.ts +461 -0
- package/bridge/bridgePermissionCallbacks.ts +43 -0
- package/bridge/bridgePointer.ts +210 -0
- package/bridge/bridgeStatusUtil.ts +163 -0
- package/bridge/bridgeUI.ts +530 -0
- package/bridge/capacityWake.ts +56 -0
- package/bridge/codeSessionApi.ts +168 -0
- package/bridge/createSession.ts +384 -0
- package/bridge/debugUtils.ts +141 -0
- package/bridge/envLessBridgeConfig.ts +165 -0
- package/bridge/flushGate.ts +71 -0
- package/bridge/inboundAttachments.ts +175 -0
- package/bridge/inboundMessages.ts +80 -0
- package/bridge/initReplBridge.ts +569 -0
- package/bridge/jwtUtils.ts +256 -0
- package/bridge/pollConfig.ts +110 -0
- package/bridge/pollConfigDefaults.ts +82 -0
- package/bridge/remoteBridgeCore.ts +1008 -0
- package/bridge/replBridge.ts +2406 -0
- package/bridge/replBridgeHandle.ts +36 -0
- package/bridge/replBridgeTransport.ts +370 -0
- package/bridge/sessionIdCompat.ts +57 -0
- package/bridge/sessionRunner.ts +550 -0
- package/bridge/trustedDevice.ts +210 -0
- package/bridge/types.ts +262 -0
- package/bridge/workSecret.ts +127 -0
- package/buddy/CompanionSprite.tsx +371 -0
- package/buddy/companion.ts +133 -0
- package/buddy/prompt.ts +36 -0
- package/buddy/sprites.ts +514 -0
- package/buddy/types.ts +148 -0
- package/buddy/useBuddyNotification.tsx +98 -0
- package/cli/exit.ts +31 -0
- package/cli/handlers/agents.ts +70 -0
- package/cli/handlers/auth.ts +330 -0
- package/cli/handlers/autoMode.ts +170 -0
- package/cli/handlers/mcp.tsx +362 -0
- package/cli/handlers/plugins.ts +878 -0
- package/cli/handlers/util.tsx +110 -0
- package/cli/ndjsonSafeStringify.ts +32 -0
- package/cli/print.ts +5594 -0
- package/cli/remoteIO.ts +255 -0
- package/cli/structuredIO.ts +859 -0
- package/cli/transports/HybridTransport.ts +282 -0
- package/cli/transports/SSETransport.ts +711 -0
- package/cli/transports/SerialBatchEventUploader.ts +275 -0
- package/cli/transports/WebSocketTransport.ts +800 -0
- package/cli/transports/WorkerStateUploader.ts +131 -0
- package/cli/transports/ccrClient.ts +998 -0
- package/cli/transports/transportUtils.ts +45 -0
- package/cli/update.ts +422 -0
- package/commands/add-dir/add-dir.tsx +126 -0
- package/commands/add-dir/index.ts +11 -0
- package/commands/add-dir/validation.ts +110 -0
- package/commands/advisor.ts +109 -0
- package/commands/agents/agents.tsx +12 -0
- package/commands/agents/index.ts +10 -0
- package/commands/ant-trace/index.js +1 -0
- package/commands/autofix-pr/index.js +1 -0
- package/commands/backfill-sessions/index.js +1 -0
- package/commands/branch/branch.ts +296 -0
- package/commands/branch/index.ts +14 -0
- package/commands/break-cache/index.js +1 -0
- package/commands/bridge/bridge.tsx +509 -0
- package/commands/bridge/index.ts +26 -0
- package/commands/bridge-kick.ts +200 -0
- package/commands/brief.ts +130 -0
- package/commands/btw/btw.tsx +243 -0
- package/commands/btw/index.ts +13 -0
- package/commands/bughunter/index.js +1 -0
- package/commands/chrome/chrome.tsx +285 -0
- package/commands/chrome/index.ts +13 -0
- package/commands/clear/caches.ts +144 -0
- package/commands/clear/clear.ts +7 -0
- package/commands/clear/conversation.ts +251 -0
- package/commands/clear/index.ts +19 -0
- package/commands/color/color.ts +93 -0
- package/commands/color/index.ts +16 -0
- package/commands/commit-push-pr.ts +158 -0
- package/commands/commit.ts +92 -0
- package/commands/compact/compact.ts +287 -0
- package/commands/compact/index.ts +15 -0
- package/commands/config/config.tsx +7 -0
- package/commands/config/index.ts +11 -0
- package/commands/context/context-noninteractive.ts +325 -0
- package/commands/context/context.tsx +64 -0
- package/commands/context/index.ts +24 -0
- package/commands/copy/copy.tsx +371 -0
- package/commands/copy/index.ts +15 -0
- package/commands/cost/cost.ts +24 -0
- package/commands/cost/index.ts +23 -0
- package/commands/createMovedToPluginCommand.ts +65 -0
- package/commands/ctx_viz/index.js +1 -0
- package/commands/debug-tool-call/index.js +1 -0
- package/commands/desktop/desktop.tsx +9 -0
- package/commands/desktop/index.ts +26 -0
- package/commands/diff/diff.tsx +9 -0
- package/commands/diff/index.ts +8 -0
- package/commands/doctor/doctor.tsx +7 -0
- package/commands/doctor/index.ts +12 -0
- package/commands/effort/effort.tsx +183 -0
- package/commands/effort/index.ts +13 -0
- package/commands/env/index.js +1 -0
- package/commands/exit/exit.tsx +33 -0
- package/commands/exit/index.ts +12 -0
- package/commands/export/export.tsx +91 -0
- package/commands/export/index.ts +11 -0
- package/commands/extra-usage/extra-usage-core.ts +118 -0
- package/commands/extra-usage/extra-usage-noninteractive.ts +16 -0
- package/commands/extra-usage/extra-usage.tsx +17 -0
- package/commands/extra-usage/index.ts +31 -0
- package/commands/fast/fast.tsx +269 -0
- package/commands/fast/index.ts +26 -0
- package/commands/feedback/feedback.tsx +25 -0
- package/commands/feedback/index.ts +26 -0
- package/commands/files/files.ts +19 -0
- package/commands/files/index.ts +12 -0
- package/commands/good-claude/index.js +1 -0
- package/commands/heapdump/heapdump.ts +17 -0
- package/commands/heapdump/index.ts +12 -0
- package/commands/help/help.tsx +11 -0
- package/commands/help/index.ts +10 -0
- package/commands/hooks/hooks.tsx +13 -0
- package/commands/hooks/index.ts +11 -0
- package/commands/ide/ide.tsx +646 -0
- package/commands/ide/index.ts +11 -0
- package/commands/init-verifiers.ts +262 -0
- package/commands/init.ts +256 -0
- package/commands/insights.ts +3200 -0
- package/commands/install-github-app/ApiKeyStep.tsx +231 -0
- package/commands/install-github-app/CheckExistingSecretStep.tsx +190 -0
- package/commands/install-github-app/CheckGitHubStep.tsx +15 -0
- package/commands/install-github-app/ChooseRepoStep.tsx +211 -0
- package/commands/install-github-app/CreatingStep.tsx +65 -0
- package/commands/install-github-app/ErrorStep.tsx +85 -0
- package/commands/install-github-app/ExistingWorkflowStep.tsx +103 -0
- package/commands/install-github-app/InstallAppStep.tsx +94 -0
- package/commands/install-github-app/OAuthFlowStep.tsx +276 -0
- package/commands/install-github-app/SuccessStep.tsx +96 -0
- package/commands/install-github-app/WarningsStep.tsx +73 -0
- package/commands/install-github-app/index.ts +13 -0
- package/commands/install-github-app/install-github-app.tsx +587 -0
- package/commands/install-github-app/setupGitHubActions.ts +325 -0
- package/commands/install-slack-app/index.ts +12 -0
- package/commands/install-slack-app/install-slack-app.ts +30 -0
- package/commands/install.tsx +300 -0
- package/commands/issue/index.js +1 -0
- package/commands/keybindings/index.ts +13 -0
- package/commands/keybindings/keybindings.ts +53 -0
- package/commands/login/index.ts +14 -0
- package/commands/login/login.tsx +104 -0
- package/commands/logout/index.ts +10 -0
- package/commands/logout/logout.tsx +82 -0
- package/commands/mcp/addCommand.ts +280 -0
- package/commands/mcp/index.ts +12 -0
- package/commands/mcp/mcp.tsx +85 -0
- package/commands/mcp/xaaIdpCommand.ts +266 -0
- package/commands/memory/index.ts +10 -0
- package/commands/memory/memory.tsx +90 -0
- package/commands/mobile/index.ts +11 -0
- package/commands/mobile/mobile.tsx +274 -0
- package/commands/mock-limits/index.js +1 -0
- package/commands/model/index.ts +16 -0
- package/commands/model/model.tsx +297 -0
- package/commands/oauth-refresh/index.js +1 -0
- package/commands/onboarding/index.js +1 -0
- package/commands/output-style/index.ts +11 -0
- package/commands/output-style/output-style.tsx +7 -0
- package/commands/passes/index.ts +22 -0
- package/commands/passes/passes.tsx +24 -0
- package/commands/perf-issue/index.js +1 -0
- package/commands/permissions/index.ts +11 -0
- package/commands/permissions/permissions.tsx +10 -0
- package/commands/plan/index.ts +11 -0
- package/commands/plan/plan.tsx +122 -0
- package/commands/plugin/AddMarketplace.tsx +162 -0
- package/commands/plugin/BrowseMarketplace.tsx +802 -0
- package/commands/plugin/DiscoverPlugins.tsx +781 -0
- package/commands/plugin/ManageMarketplaces.tsx +838 -0
- package/commands/plugin/ManagePlugins.tsx +2215 -0
- package/commands/plugin/PluginErrors.tsx +124 -0
- package/commands/plugin/PluginOptionsDialog.tsx +357 -0
- package/commands/plugin/PluginOptionsFlow.tsx +135 -0
- package/commands/plugin/PluginSettings.tsx +1072 -0
- package/commands/plugin/PluginTrustWarning.tsx +32 -0
- package/commands/plugin/UnifiedInstalledCell.tsx +565 -0
- package/commands/plugin/ValidatePlugin.tsx +98 -0
- package/commands/plugin/index.tsx +11 -0
- package/commands/plugin/parseArgs.ts +103 -0
- package/commands/plugin/plugin.tsx +7 -0
- package/commands/plugin/pluginDetailsHelpers.tsx +117 -0
- package/commands/plugin/usePagination.ts +171 -0
- package/commands/pr_comments/index.ts +50 -0
- package/commands/privacy-settings/index.ts +14 -0
- package/commands/privacy-settings/privacy-settings.tsx +58 -0
- package/commands/rate-limit-options/index.ts +19 -0
- package/commands/rate-limit-options/rate-limit-options.tsx +210 -0
- package/commands/release-notes/index.ts +11 -0
- package/commands/release-notes/release-notes.ts +50 -0
- package/commands/reload-plugins/index.ts +18 -0
- package/commands/reload-plugins/reload-plugins.ts +61 -0
- package/commands/remote-env/index.ts +15 -0
- package/commands/remote-env/remote-env.tsx +7 -0
- package/commands/remote-setup/api.ts +182 -0
- package/commands/remote-setup/index.ts +20 -0
- package/commands/remote-setup/remote-setup.tsx +187 -0
- package/commands/rename/generateSessionName.ts +67 -0
- package/commands/rename/index.ts +12 -0
- package/commands/rename/rename.ts +87 -0
- package/commands/reset-limits/index.js +4 -0
- package/commands/resume/index.ts +12 -0
- package/commands/resume/resume.tsx +275 -0
- package/commands/review/UltrareviewOverageDialog.tsx +96 -0
- package/commands/review/reviewRemote.ts +316 -0
- package/commands/review/ultrareviewCommand.tsx +58 -0
- package/commands/review/ultrareviewEnabled.ts +14 -0
- package/commands/review.ts +57 -0
- package/commands/rewind/index.ts +13 -0
- package/commands/rewind/rewind.ts +13 -0
- package/commands/sandbox-toggle/index.ts +50 -0
- package/commands/sandbox-toggle/sandbox-toggle.tsx +83 -0
- package/commands/security-review.ts +243 -0
- package/commands/session/index.ts +16 -0
- package/commands/session/session.tsx +140 -0
- package/commands/share/index.js +1 -0
- package/commands/skills/index.ts +10 -0
- package/commands/skills/skills.tsx +8 -0
- package/commands/stats/index.ts +10 -0
- package/commands/stats/stats.tsx +7 -0
- package/commands/status/index.ts +12 -0
- package/commands/status/status.tsx +8 -0
- package/commands/statusline.tsx +24 -0
- package/commands/stickers/index.ts +11 -0
- package/commands/stickers/stickers.ts +16 -0
- package/commands/summary/index.js +1 -0
- package/commands/tag/index.ts +12 -0
- package/commands/tag/tag.tsx +215 -0
- package/commands/tasks/index.ts +11 -0
- package/commands/tasks/tasks.tsx +8 -0
- package/commands/teleport/index.js +1 -0
- package/commands/terminalSetup/index.ts +23 -0
- package/commands/terminalSetup/terminalSetup.tsx +531 -0
- package/commands/theme/index.ts +10 -0
- package/commands/theme/theme.tsx +57 -0
- package/commands/thinkback/index.ts +13 -0
- package/commands/thinkback/thinkback.tsx +554 -0
- package/commands/thinkback-play/index.ts +17 -0
- package/commands/thinkback-play/thinkback-play.ts +43 -0
- package/commands/ultraplan.tsx +471 -0
- package/commands/upgrade/index.ts +16 -0
- package/commands/upgrade/upgrade.tsx +38 -0
- package/commands/usage/index.ts +9 -0
- package/commands/usage/usage.tsx +7 -0
- package/commands/version.ts +22 -0
- package/commands/vim/index.ts +11 -0
- package/commands/vim/vim.ts +38 -0
- package/commands/voice/index.ts +20 -0
- package/commands/voice/voice.ts +150 -0
- package/commands/xingest/index.ts +11 -0
- package/commands/xingest/xingest.ts +90 -0
- package/commands/xsearch/index.ts +11 -0
- package/commands/xsearch/xsearch.ts +56 -0
- package/commands.ts +758 -0
- package/components/AgentProgressLine.tsx +136 -0
- package/components/App.tsx +56 -0
- package/components/ApproveApiKey.tsx +123 -0
- package/components/AutoModeOptInDialog.tsx +142 -0
- package/components/AutoUpdater.tsx +198 -0
- package/components/AutoUpdaterWrapper.tsx +91 -0
- package/components/AwsAuthStatusBox.tsx +82 -0
- package/components/BaseTextInput.tsx +136 -0
- package/components/BashModeProgress.tsx +56 -0
- package/components/BridgeDialog.tsx +401 -0
- package/components/BypassPermissionsModeDialog.tsx +87 -0
- package/components/ChannelDowngradeDialog.tsx +102 -0
- package/components/ClaudeCodeHint/PluginHintMenu.tsx +78 -0
- package/components/ClaudeInChromeOnboarding.tsx +121 -0
- package/components/ClaudeMdExternalIncludesDialog.tsx +137 -0
- package/components/ClickableImageRef.tsx +73 -0
- package/components/CompactSummary.tsx +118 -0
- package/components/ConfigurableShortcutHint.tsx +57 -0
- package/components/ConsoleOAuthFlow.tsx +631 -0
- package/components/ContextSuggestions.tsx +47 -0
- package/components/ContextVisualization.tsx +489 -0
- package/components/CoordinatorAgentStatus.tsx +273 -0
- package/components/CostThresholdDialog.tsx +50 -0
- package/components/CtrlOToExpand.tsx +51 -0
- package/components/CustomSelect/SelectMulti.tsx +213 -0
- package/components/CustomSelect/index.ts +3 -0
- package/components/CustomSelect/option-map.ts +50 -0
- package/components/CustomSelect/select-input-option.tsx +488 -0
- package/components/CustomSelect/select-option.tsx +68 -0
- package/components/CustomSelect/select.tsx +690 -0
- package/components/CustomSelect/use-multi-select-state.ts +414 -0
- package/components/CustomSelect/use-select-input.ts +287 -0
- package/components/CustomSelect/use-select-navigation.ts +653 -0
- package/components/CustomSelect/use-select-state.ts +157 -0
- package/components/DesktopHandoff.tsx +193 -0
- package/components/DesktopUpsell/DesktopUpsellStartup.tsx +171 -0
- package/components/DevBar.tsx +49 -0
- package/components/DevChannelsDialog.tsx +105 -0
- package/components/DiagnosticsDisplay.tsx +95 -0
- package/components/EffortCallout.tsx +265 -0
- package/components/EffortIndicator.ts +42 -0
- package/components/ExitFlow.tsx +48 -0
- package/components/ExportDialog.tsx +128 -0
- package/components/FallbackToolUseErrorMessage.tsx +116 -0
- package/components/FallbackToolUseRejectedMessage.tsx +16 -0
- package/components/FastIcon.tsx +46 -0
- package/components/Feedback.tsx +592 -0
- package/components/FeedbackSurvey/FeedbackSurvey.tsx +174 -0
- package/components/FeedbackSurvey/FeedbackSurveyView.tsx +108 -0
- package/components/FeedbackSurvey/TranscriptSharePrompt.tsx +88 -0
- package/components/FeedbackSurvey/submitTranscriptShare.ts +112 -0
- package/components/FeedbackSurvey/useDebouncedDigitInput.ts +82 -0
- package/components/FeedbackSurvey/useFeedbackSurvey.tsx +296 -0
- package/components/FeedbackSurvey/useMemorySurvey.tsx +213 -0
- package/components/FeedbackSurvey/usePostCompactSurvey.tsx +206 -0
- package/components/FeedbackSurvey/useSurveyState.tsx +100 -0
- package/components/FileEditToolDiff.tsx +181 -0
- package/components/FileEditToolUpdatedMessage.tsx +124 -0
- package/components/FileEditToolUseRejectedMessage.tsx +170 -0
- package/components/FilePathLink.tsx +43 -0
- package/components/FullscreenLayout.tsx +645 -0
- package/components/GlobalSearchDialog.tsx +343 -0
- package/components/HelpV2/Commands.tsx +82 -0
- package/components/HelpV2/General.tsx +23 -0
- package/components/HelpV2/HelpV2.tsx +184 -0
- package/components/HighlightedCode/Fallback.tsx +193 -0
- package/components/HighlightedCode.tsx +190 -0
- package/components/HistorySearchDialog.tsx +118 -0
- package/components/IdeAutoConnectDialog.tsx +154 -0
- package/components/IdeOnboardingDialog.tsx +167 -0
- package/components/IdeStatusIndicator.tsx +58 -0
- package/components/IdleReturnDialog.tsx +118 -0
- package/components/InterruptedByUser.tsx +15 -0
- package/components/InvalidConfigDialog.tsx +156 -0
- package/components/InvalidSettingsDialog.tsx +89 -0
- package/components/KeybindingWarnings.tsx +55 -0
- package/components/LanguagePicker.tsx +86 -0
- package/components/LogSelector.tsx +1575 -0
- package/components/LogoV2/AnimatedAsterisk.tsx +50 -0
- package/components/LogoV2/AnimatedClawd.tsx +124 -0
- package/components/LogoV2/ChannelsNotice.tsx +266 -0
- package/components/LogoV2/Clawd.tsx +14 -0
- package/components/LogoV2/CondensedLogo.tsx +161 -0
- package/components/LogoV2/EmergencyTip.tsx +58 -0
- package/components/LogoV2/Feed.tsx +112 -0
- package/components/LogoV2/FeedColumn.tsx +59 -0
- package/components/LogoV2/GuestPassesUpsell.tsx +70 -0
- package/components/LogoV2/LogoV2.tsx +543 -0
- package/components/LogoV2/Opus1mMergeNotice.tsx +55 -0
- package/components/LogoV2/OverageCreditUpsell.tsx +166 -0
- package/components/LogoV2/VoiceModeNotice.tsx +68 -0
- package/components/LogoV2/WelcomeV2.tsx +433 -0
- package/components/LogoV2/feedConfigs.tsx +92 -0
- package/components/LspRecommendation/LspRecommendationMenu.tsx +88 -0
- package/components/MCPServerApprovalDialog.tsx +115 -0
- package/components/MCPServerDesktopImportDialog.tsx +203 -0
- package/components/MCPServerDialogCopy.tsx +15 -0
- package/components/MCPServerMultiselectDialog.tsx +133 -0
- package/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.tsx +149 -0
- package/components/ManagedSettingsSecurityDialog/utils.ts +144 -0
- package/components/Markdown.tsx +236 -0
- package/components/MarkdownTable.tsx +322 -0
- package/components/MemoryUsageIndicator.tsx +37 -0
- package/components/Message.tsx +627 -0
- package/components/MessageModel.tsx +43 -0
- package/components/MessageResponse.tsx +78 -0
- package/components/MessageRow.tsx +383 -0
- package/components/MessageSelector.tsx +831 -0
- package/components/MessageTimestamp.tsx +63 -0
- package/components/Messages.tsx +834 -0
- package/components/ModelPicker.tsx +448 -0
- package/components/NativeAutoUpdater.tsx +193 -0
- package/components/NotebookEditToolUseRejectedMessage.tsx +92 -0
- package/components/OffscreenFreeze.tsx +44 -0
- package/components/Onboarding.tsx +244 -0
- package/components/OutputStylePicker.tsx +112 -0
- package/components/PackageManagerAutoUpdater.tsx +104 -0
- package/components/Passes/Passes.tsx +184 -0
- package/components/PrBadge.tsx +97 -0
- package/components/PressEnterToContinue.tsx +15 -0
- package/components/PromptInput/HistorySearchInput.tsx +51 -0
- package/components/PromptInput/IssueFlagBanner.tsx +12 -0
- package/components/PromptInput/Notifications.tsx +332 -0
- package/components/PromptInput/PromptInput.tsx +2350 -0
- package/components/PromptInput/PromptInputFooter.tsx +191 -0
- package/components/PromptInput/PromptInputFooterLeftSide.tsx +524 -0
- package/components/PromptInput/PromptInputFooterSuggestions.tsx +293 -0
- package/components/PromptInput/PromptInputHelpMenu.tsx +358 -0
- package/components/PromptInput/PromptInputModeIndicator.tsx +93 -0
- package/components/PromptInput/PromptInputQueuedCommands.tsx +117 -0
- package/components/PromptInput/PromptInputStashNotice.tsx +25 -0
- package/components/PromptInput/SandboxPromptFooterHint.tsx +64 -0
- package/components/PromptInput/ShimmeredInput.tsx +143 -0
- package/components/PromptInput/VoiceIndicator.tsx +137 -0
- package/components/PromptInput/inputModes.ts +33 -0
- package/components/PromptInput/inputPaste.ts +90 -0
- package/components/PromptInput/useMaybeTruncateInput.ts +58 -0
- package/components/PromptInput/usePromptInputPlaceholder.ts +78 -0
- package/components/PromptInput/useShowFastIconHint.ts +31 -0
- package/components/PromptInput/useSwarmBanner.ts +155 -0
- package/components/PromptInput/utils.ts +60 -0
- package/components/QuickOpenDialog.tsx +244 -0
- package/components/RemoteCallout.tsx +76 -0
- package/components/RemoteEnvironmentDialog.tsx +340 -0
- package/components/ResumeTask.tsx +268 -0
- package/components/SandboxViolationExpandedView.tsx +99 -0
- package/components/ScrollKeybindingHandler.tsx +1012 -0
- package/components/SearchBox.tsx +72 -0
- package/components/SentryErrorBoundary.ts +28 -0
- package/components/SessionBackgroundHint.tsx +108 -0
- package/components/SessionPreview.tsx +194 -0
- package/components/Settings/Config.tsx +1822 -0
- package/components/Settings/Settings.tsx +137 -0
- package/components/Settings/Status.tsx +241 -0
- package/components/Settings/Usage.tsx +377 -0
- package/components/ShowInIDEPrompt.tsx +170 -0
- package/components/SkillImprovementSurvey.tsx +152 -0
- package/components/Spinner/FlashingChar.tsx +61 -0
- package/components/Spinner/GlimmerMessage.tsx +328 -0
- package/components/Spinner/ShimmerChar.tsx +36 -0
- package/components/Spinner/SpinnerAnimationRow.tsx +265 -0
- package/components/Spinner/SpinnerGlyph.tsx +80 -0
- package/components/Spinner/TeammateSpinnerLine.tsx +233 -0
- package/components/Spinner/TeammateSpinnerTree.tsx +272 -0
- package/components/Spinner/index.ts +10 -0
- package/components/Spinner/teammateSelectHint.ts +1 -0
- package/components/Spinner/useShimmerAnimation.ts +31 -0
- package/components/Spinner/useStalledAnimation.ts +75 -0
- package/components/Spinner/utils.ts +84 -0
- package/components/Spinner.tsx +562 -0
- package/components/Stats.tsx +1228 -0
- package/components/StatusLine.tsx +324 -0
- package/components/StatusNotices.tsx +55 -0
- package/components/StructuredDiff/Fallback.tsx +487 -0
- package/components/StructuredDiff/colorDiff.ts +37 -0
- package/components/StructuredDiff.tsx +190 -0
- package/components/StructuredDiffList.tsx +30 -0
- package/components/TagTabs.tsx +139 -0
- package/components/TaskListV2.tsx +378 -0
- package/components/TeammateViewHeader.tsx +82 -0
- package/components/TeleportError.tsx +189 -0
- package/components/TeleportProgress.tsx +140 -0
- package/components/TeleportRepoMismatchDialog.tsx +104 -0
- package/components/TeleportResumeWrapper.tsx +167 -0
- package/components/TeleportStash.tsx +116 -0
- package/components/TextInput.tsx +124 -0
- package/components/ThemePicker.tsx +333 -0
- package/components/ThinkingToggle.tsx +153 -0
- package/components/TokenWarning.tsx +179 -0
- package/components/ToolUseLoader.tsx +42 -0
- package/components/TrustDialog/TrustDialog.tsx +290 -0
- package/components/TrustDialog/utils.ts +245 -0
- package/components/ValidationErrorsList.tsx +148 -0
- package/components/VimTextInput.tsx +140 -0
- package/components/VirtualMessageList.tsx +1082 -0
- package/components/WorkflowMultiselectDialog.tsx +128 -0
- package/components/WorktreeExitDialog.tsx +231 -0
- package/components/agents/AgentDetail.tsx +220 -0
- package/components/agents/AgentEditor.tsx +178 -0
- package/components/agents/AgentNavigationFooter.tsx +26 -0
- package/components/agents/AgentsList.tsx +440 -0
- package/components/agents/AgentsMenu.tsx +800 -0
- package/components/agents/ColorPicker.tsx +112 -0
- package/components/agents/ModelSelector.tsx +68 -0
- package/components/agents/ToolSelector.tsx +562 -0
- package/components/agents/agentFileUtils.ts +272 -0
- package/components/agents/generateAgent.ts +197 -0
- package/components/agents/new-agent-creation/CreateAgentWizard.tsx +97 -0
- package/components/agents/new-agent-creation/wizard-steps/ColorStep.tsx +84 -0
- package/components/agents/new-agent-creation/wizard-steps/ConfirmStep.tsx +378 -0
- package/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.tsx +74 -0
- package/components/agents/new-agent-creation/wizard-steps/DescriptionStep.tsx +123 -0
- package/components/agents/new-agent-creation/wizard-steps/GenerateStep.tsx +143 -0
- package/components/agents/new-agent-creation/wizard-steps/LocationStep.tsx +80 -0
- package/components/agents/new-agent-creation/wizard-steps/MemoryStep.tsx +113 -0
- package/components/agents/new-agent-creation/wizard-steps/MethodStep.tsx +80 -0
- package/components/agents/new-agent-creation/wizard-steps/ModelStep.tsx +52 -0
- package/components/agents/new-agent-creation/wizard-steps/PromptStep.tsx +128 -0
- package/components/agents/new-agent-creation/wizard-steps/ToolsStep.tsx +61 -0
- package/components/agents/new-agent-creation/wizard-steps/TypeStep.tsx +103 -0
- package/components/agents/types.ts +27 -0
- package/components/agents/utils.ts +18 -0
- package/components/agents/validateAgent.ts +109 -0
- package/components/design-system/Byline.tsx +77 -0
- package/components/design-system/Dialog.tsx +138 -0
- package/components/design-system/Divider.tsx +149 -0
- package/components/design-system/FuzzyPicker.tsx +312 -0
- package/components/design-system/KeyboardShortcutHint.tsx +81 -0
- package/components/design-system/ListItem.tsx +244 -0
- package/components/design-system/LoadingState.tsx +94 -0
- package/components/design-system/Pane.tsx +77 -0
- package/components/design-system/ProgressBar.tsx +86 -0
- package/components/design-system/Ratchet.tsx +80 -0
- package/components/design-system/StatusIcon.tsx +95 -0
- package/components/design-system/Tabs.tsx +340 -0
- package/components/design-system/ThemeProvider.tsx +170 -0
- package/components/design-system/ThemedBox.tsx +156 -0
- package/components/design-system/ThemedText.tsx +124 -0
- package/components/design-system/color.ts +30 -0
- package/components/diff/DiffDetailView.tsx +281 -0
- package/components/diff/DiffDialog.tsx +383 -0
- package/components/diff/DiffFileList.tsx +292 -0
- package/components/grove/Grove.tsx +463 -0
- package/components/hooks/HooksConfigMenu.tsx +578 -0
- package/components/hooks/PromptDialog.tsx +90 -0
- package/components/hooks/SelectEventMode.tsx +127 -0
- package/components/hooks/SelectHookMode.tsx +112 -0
- package/components/hooks/SelectMatcherMode.tsx +144 -0
- package/components/hooks/ViewHookMode.tsx +199 -0
- package/components/mcp/CapabilitiesSection.tsx +61 -0
- package/components/mcp/ElicitationDialog.tsx +1169 -0
- package/components/mcp/MCPAgentServerMenu.tsx +183 -0
- package/components/mcp/MCPListPanel.tsx +504 -0
- package/components/mcp/MCPReconnect.tsx +167 -0
- package/components/mcp/MCPRemoteServerMenu.tsx +649 -0
- package/components/mcp/MCPSettings.tsx +398 -0
- package/components/mcp/MCPStdioServerMenu.tsx +177 -0
- package/components/mcp/MCPToolDetailView.tsx +212 -0
- package/components/mcp/MCPToolListView.tsx +141 -0
- package/components/mcp/McpParsingWarnings.tsx +213 -0
- package/components/mcp/index.ts +9 -0
- package/components/mcp/utils/reconnectHelpers.tsx +49 -0
- package/components/memory/MemoryFileSelector.tsx +438 -0
- package/components/memory/MemoryUpdateNotification.tsx +45 -0
- package/components/messageActions.tsx +450 -0
- package/components/messages/AdvisorMessage.tsx +158 -0
- package/components/messages/AssistantRedactedThinkingMessage.tsx +31 -0
- package/components/messages/AssistantTextMessage.tsx +270 -0
- package/components/messages/AssistantThinkingMessage.tsx +86 -0
- package/components/messages/AssistantToolUseMessage.tsx +368 -0
- package/components/messages/AttachmentMessage.tsx +536 -0
- package/components/messages/CollapsedReadSearchContent.tsx +484 -0
- package/components/messages/CompactBoundaryMessage.tsx +18 -0
- package/components/messages/GroupedToolUseContent.tsx +58 -0
- package/components/messages/HighlightedThinkingText.tsx +162 -0
- package/components/messages/HookProgressMessage.tsx +116 -0
- package/components/messages/PlanApprovalMessage.tsx +222 -0
- package/components/messages/RateLimitMessage.tsx +161 -0
- package/components/messages/ShutdownMessage.tsx +132 -0
- package/components/messages/SystemAPIErrorMessage.tsx +141 -0
- package/components/messages/SystemTextMessage.tsx +827 -0
- package/components/messages/TaskAssignmentMessage.tsx +76 -0
- package/components/messages/UserAgentNotificationMessage.tsx +83 -0
- package/components/messages/UserBashInputMessage.tsx +58 -0
- package/components/messages/UserBashOutputMessage.tsx +54 -0
- package/components/messages/UserChannelMessage.tsx +137 -0
- package/components/messages/UserCommandMessage.tsx +108 -0
- package/components/messages/UserImageMessage.tsx +59 -0
- package/components/messages/UserLocalCommandOutputMessage.tsx +167 -0
- package/components/messages/UserMemoryInputMessage.tsx +75 -0
- package/components/messages/UserPlanMessage.tsx +42 -0
- package/components/messages/UserPromptMessage.tsx +80 -0
- package/components/messages/UserResourceUpdateMessage.tsx +121 -0
- package/components/messages/UserTeammateMessage.tsx +206 -0
- package/components/messages/UserTextMessage.tsx +275 -0
- package/components/messages/UserToolResultMessage/RejectedPlanMessage.tsx +31 -0
- package/components/messages/UserToolResultMessage/RejectedToolUseMessage.tsx +16 -0
- package/components/messages/UserToolResultMessage/UserToolCanceledMessage.tsx +16 -0
- package/components/messages/UserToolResultMessage/UserToolErrorMessage.tsx +103 -0
- package/components/messages/UserToolResultMessage/UserToolRejectMessage.tsx +95 -0
- package/components/messages/UserToolResultMessage/UserToolResultMessage.tsx +106 -0
- package/components/messages/UserToolResultMessage/UserToolSuccessMessage.tsx +104 -0
- package/components/messages/UserToolResultMessage/utils.tsx +44 -0
- package/components/messages/nullRenderingAttachments.ts +70 -0
- package/components/messages/teamMemCollapsed.tsx +140 -0
- package/components/messages/teamMemSaved.ts +19 -0
- package/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.tsx +645 -0
- package/components/permissions/AskUserQuestionPermissionRequest/PreviewBox.tsx +229 -0
- package/components/permissions/AskUserQuestionPermissionRequest/PreviewQuestionView.tsx +328 -0
- package/components/permissions/AskUserQuestionPermissionRequest/QuestionNavigationBar.tsx +178 -0
- package/components/permissions/AskUserQuestionPermissionRequest/QuestionView.tsx +465 -0
- package/components/permissions/AskUserQuestionPermissionRequest/SubmitQuestionsView.tsx +144 -0
- package/components/permissions/AskUserQuestionPermissionRequest/use-multiple-choice-state.ts +179 -0
- package/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx +482 -0
- package/components/permissions/BashPermissionRequest/bashToolUseOptions.tsx +147 -0
- package/components/permissions/ComputerUseApproval/ComputerUseApproval.tsx +441 -0
- package/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.tsx +122 -0
- package/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.tsx +768 -0
- package/components/permissions/FallbackPermissionRequest.tsx +333 -0
- package/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.tsx +182 -0
- package/components/permissions/FilePermissionDialog/FilePermissionDialog.tsx +204 -0
- package/components/permissions/FilePermissionDialog/ideDiffConfig.ts +42 -0
- package/components/permissions/FilePermissionDialog/permissionOptions.tsx +177 -0
- package/components/permissions/FilePermissionDialog/useFilePermissionDialog.ts +212 -0
- package/components/permissions/FilePermissionDialog/usePermissionHandler.ts +185 -0
- package/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.tsx +161 -0
- package/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.tsx +89 -0
- package/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.tsx +115 -0
- package/components/permissions/NotebookEditPermissionRequest/NotebookEditPermissionRequest.tsx +166 -0
- package/components/permissions/NotebookEditPermissionRequest/NotebookEditToolDiff.tsx +235 -0
- package/components/permissions/PermissionDecisionDebugInfo.tsx +460 -0
- package/components/permissions/PermissionDialog.tsx +72 -0
- package/components/permissions/PermissionExplanation.tsx +272 -0
- package/components/permissions/PermissionPrompt.tsx +336 -0
- package/components/permissions/PermissionRequest.tsx +217 -0
- package/components/permissions/PermissionRequestTitle.tsx +66 -0
- package/components/permissions/PermissionRuleExplanation.tsx +121 -0
- package/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.tsx +235 -0
- package/components/permissions/PowerShellPermissionRequest/powershellToolUseOptions.tsx +91 -0
- package/components/permissions/SandboxPermissionRequest.tsx +163 -0
- package/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.tsx +230 -0
- package/components/permissions/SkillPermissionRequest/SkillPermissionRequest.tsx +369 -0
- package/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.tsx +258 -0
- package/components/permissions/WorkerBadge.tsx +49 -0
- package/components/permissions/WorkerPendingPermission.tsx +105 -0
- package/components/permissions/hooks.ts +209 -0
- package/components/permissions/rules/AddPermissionRules.tsx +180 -0
- package/components/permissions/rules/AddWorkspaceDirectory.tsx +340 -0
- package/components/permissions/rules/PermissionRuleDescription.tsx +76 -0
- package/components/permissions/rules/PermissionRuleInput.tsx +138 -0
- package/components/permissions/rules/PermissionRuleList.tsx +1179 -0
- package/components/permissions/rules/RecentDenialsTab.tsx +207 -0
- package/components/permissions/rules/RemoveWorkspaceDirectory.tsx +110 -0
- package/components/permissions/rules/WorkspaceTab.tsx +150 -0
- package/components/permissions/shellPermissionHelpers.tsx +164 -0
- package/components/permissions/useShellPermissionFeedback.ts +148 -0
- package/components/permissions/utils.ts +25 -0
- package/components/sandbox/SandboxConfigTab.tsx +45 -0
- package/components/sandbox/SandboxDependenciesTab.tsx +120 -0
- package/components/sandbox/SandboxDoctorSection.tsx +46 -0
- package/components/sandbox/SandboxOverridesTab.tsx +193 -0
- package/components/sandbox/SandboxSettings.tsx +296 -0
- package/components/shell/ExpandShellOutputContext.tsx +36 -0
- package/components/shell/OutputLine.tsx +118 -0
- package/components/shell/ShellProgressMessage.tsx +150 -0
- package/components/shell/ShellTimeDisplay.tsx +74 -0
- package/components/skills/SkillsMenu.tsx +237 -0
- package/components/tasks/AsyncAgentDetailDialog.tsx +229 -0
- package/components/tasks/BackgroundTask.tsx +345 -0
- package/components/tasks/BackgroundTaskStatus.tsx +429 -0
- package/components/tasks/BackgroundTasksDialog.tsx +652 -0
- package/components/tasks/DreamDetailDialog.tsx +251 -0
- package/components/tasks/InProcessTeammateDetailDialog.tsx +266 -0
- package/components/tasks/RemoteSessionDetailDialog.tsx +904 -0
- package/components/tasks/RemoteSessionProgress.tsx +243 -0
- package/components/tasks/ShellDetailDialog.tsx +404 -0
- package/components/tasks/ShellProgress.tsx +87 -0
- package/components/tasks/renderToolActivity.tsx +33 -0
- package/components/tasks/taskStatusUtils.tsx +107 -0
- package/components/teams/TeamStatus.tsx +80 -0
- package/components/teams/TeamsDialog.tsx +715 -0
- package/components/ui/OrderedList.tsx +71 -0
- package/components/ui/OrderedListItem.tsx +45 -0
- package/components/ui/TreeSelect.tsx +397 -0
- package/components/wizard/WizardDialogLayout.tsx +65 -0
- package/components/wizard/WizardNavigationFooter.tsx +24 -0
- package/components/wizard/WizardProvider.tsx +213 -0
- package/components/wizard/index.ts +9 -0
- package/components/wizard/useWizard.ts +13 -0
- package/context.ts +189 -0
- package/cost-tracker.ts +323 -0
- package/history.ts +464 -0
- package/hooks/fileSuggestions.ts +811 -0
- package/hooks/notifs/useAutoModeUnavailableNotification.ts +56 -0
- package/hooks/notifs/useCanSwitchToExistingSubscription.tsx +60 -0
- package/hooks/notifs/useDeprecationWarningNotification.tsx +44 -0
- package/hooks/notifs/useFastModeNotification.tsx +162 -0
- package/hooks/notifs/useIDEStatusIndicator.tsx +186 -0
- package/hooks/notifs/useInstallMessages.tsx +26 -0
- package/hooks/notifs/useLspInitializationNotification.tsx +143 -0
- package/hooks/notifs/useMcpConnectivityStatus.tsx +88 -0
- package/hooks/notifs/useModelMigrationNotifications.tsx +52 -0
- package/hooks/notifs/useNpmDeprecationNotification.tsx +25 -0
- package/hooks/notifs/usePluginAutoupdateNotification.tsx +83 -0
- package/hooks/notifs/usePluginInstallationStatus.tsx +128 -0
- package/hooks/notifs/useRateLimitWarningNotification.tsx +114 -0
- package/hooks/notifs/useSettingsErrors.tsx +69 -0
- package/hooks/notifs/useStartupNotification.ts +41 -0
- package/hooks/notifs/useTeammateShutdownNotification.ts +78 -0
- package/hooks/renderPlaceholder.ts +51 -0
- package/hooks/toolPermission/PermissionContext.ts +388 -0
- package/hooks/toolPermission/handlers/coordinatorHandler.ts +65 -0
- package/hooks/toolPermission/handlers/interactiveHandler.ts +536 -0
- package/hooks/toolPermission/handlers/swarmWorkerHandler.ts +159 -0
- package/hooks/toolPermission/permissionLogging.ts +238 -0
- package/hooks/unifiedSuggestions.ts +202 -0
- package/hooks/useAfterFirstRender.ts +17 -0
- package/hooks/useApiKeyVerification.ts +84 -0
- package/hooks/useArrowKeyHistory.tsx +229 -0
- package/hooks/useAssistantHistory.ts +250 -0
- package/hooks/useAwaySummary.ts +125 -0
- package/hooks/useBackgroundTaskNavigation.ts +251 -0
- package/hooks/useBlink.ts +34 -0
- package/hooks/useCanUseTool.tsx +204 -0
- package/hooks/useCancelRequest.ts +276 -0
- package/hooks/useChromeExtensionNotification.tsx +50 -0
- package/hooks/useClaudeCodeHintRecommendation.tsx +129 -0
- package/hooks/useClipboardImageHint.ts +77 -0
- package/hooks/useCommandKeybindings.tsx +108 -0
- package/hooks/useCommandQueue.ts +15 -0
- package/hooks/useCopyOnSelect.ts +98 -0
- package/hooks/useDeferredHookMessages.ts +46 -0
- package/hooks/useDiffData.ts +110 -0
- package/hooks/useDiffInIDE.ts +379 -0
- package/hooks/useDirectConnect.ts +229 -0
- package/hooks/useDoublePress.ts +62 -0
- package/hooks/useDynamicConfig.ts +22 -0
- package/hooks/useElapsedTime.ts +37 -0
- package/hooks/useExitOnCtrlCD.ts +95 -0
- package/hooks/useExitOnCtrlCDWithKeybindings.ts +24 -0
- package/hooks/useFileHistorySnapshotInit.ts +25 -0
- package/hooks/useGlobalKeybindings.tsx +249 -0
- package/hooks/useHistorySearch.ts +303 -0
- package/hooks/useIDEIntegration.tsx +70 -0
- package/hooks/useIdeAtMentioned.ts +76 -0
- package/hooks/useIdeConnectionStatus.ts +33 -0
- package/hooks/useIdeLogging.ts +41 -0
- package/hooks/useIdeSelection.ts +150 -0
- package/hooks/useInboxPoller.ts +969 -0
- package/hooks/useInputBuffer.ts +132 -0
- package/hooks/useIssueFlagBanner.ts +133 -0
- package/hooks/useLogMessages.ts +119 -0
- package/hooks/useLspPluginRecommendation.tsx +194 -0
- package/hooks/useMailboxBridge.ts +21 -0
- package/hooks/useMainLoopModel.ts +34 -0
- package/hooks/useManagePlugins.ts +304 -0
- package/hooks/useMemoryUsage.ts +39 -0
- package/hooks/useMergedClients.ts +23 -0
- package/hooks/useMergedCommands.ts +15 -0
- package/hooks/useMergedTools.ts +44 -0
- package/hooks/useMinDisplayTime.ts +35 -0
- package/hooks/useNotifyAfterTimeout.ts +65 -0
- package/hooks/useOfficialMarketplaceNotification.tsx +48 -0
- package/hooks/usePasteHandler.ts +285 -0
- package/hooks/usePluginRecommendationBase.tsx +105 -0
- package/hooks/usePrStatus.ts +106 -0
- package/hooks/usePromptSuggestion.ts +177 -0
- package/hooks/usePromptsFromClaudeInChrome.tsx +71 -0
- package/hooks/useQueueProcessor.ts +68 -0
- package/hooks/useRemoteSession.ts +605 -0
- package/hooks/useReplBridge.tsx +723 -0
- package/hooks/useSSHSession.ts +241 -0
- package/hooks/useScheduledTasks.ts +139 -0
- package/hooks/useSearchInput.ts +364 -0
- package/hooks/useSessionBackgrounding.ts +158 -0
- package/hooks/useSettings.ts +17 -0
- package/hooks/useSettingsChange.ts +25 -0
- package/hooks/useSkillImprovementSurvey.ts +105 -0
- package/hooks/useSkillsChange.ts +62 -0
- package/hooks/useSwarmInitialization.ts +81 -0
- package/hooks/useSwarmPermissionPoller.ts +330 -0
- package/hooks/useTaskListWatcher.ts +221 -0
- package/hooks/useTasksV2.ts +250 -0
- package/hooks/useTeammateViewAutoExit.ts +63 -0
- package/hooks/useTeleportResume.tsx +85 -0
- package/hooks/useTerminalSize.ts +15 -0
- package/hooks/useTextInput.ts +529 -0
- package/hooks/useTimeout.ts +14 -0
- package/hooks/useTurnDiffs.ts +213 -0
- package/hooks/useTypeahead.tsx +1385 -0
- package/hooks/useUpdateNotification.ts +34 -0
- package/hooks/useVimInput.ts +316 -0
- package/hooks/useVirtualScroll.ts +721 -0
- package/hooks/useVoice.ts +1144 -0
- package/hooks/useVoiceEnabled.ts +25 -0
- package/hooks/useVoiceIntegration.tsx +677 -0
- package/ink/Ansi.tsx +292 -0
- package/ink/bidi.ts +139 -0
- package/ink/clearTerminal.ts +74 -0
- package/ink/colorize.ts +231 -0
- package/ink/components/AlternateScreen.tsx +80 -0
- package/ink/components/App.tsx +658 -0
- package/ink/components/AppContext.ts +21 -0
- package/ink/components/Box.tsx +214 -0
- package/ink/components/Button.tsx +192 -0
- package/ink/components/ClockContext.tsx +112 -0
- package/ink/components/CursorDeclarationContext.ts +32 -0
- package/ink/components/ErrorOverview.tsx +109 -0
- package/ink/components/Link.tsx +42 -0
- package/ink/components/Newline.tsx +39 -0
- package/ink/components/NoSelect.tsx +68 -0
- package/ink/components/RawAnsi.tsx +57 -0
- package/ink/components/ScrollBox.tsx +237 -0
- package/ink/components/Spacer.tsx +20 -0
- package/ink/components/StdinContext.ts +49 -0
- package/ink/components/TerminalFocusContext.tsx +52 -0
- package/ink/components/TerminalSizeContext.tsx +7 -0
- package/ink/components/Text.tsx +254 -0
- package/ink/constants.ts +2 -0
- package/ink/dom.ts +484 -0
- package/ink/events/click-event.ts +38 -0
- package/ink/events/dispatcher.ts +233 -0
- package/ink/events/emitter.ts +39 -0
- package/ink/events/event-handlers.ts +73 -0
- package/ink/events/event.ts +11 -0
- package/ink/events/focus-event.ts +21 -0
- package/ink/events/input-event.ts +205 -0
- package/ink/events/keyboard-event.ts +51 -0
- package/ink/events/terminal-event.ts +107 -0
- package/ink/events/terminal-focus-event.ts +19 -0
- package/ink/focus.ts +181 -0
- package/ink/frame.ts +124 -0
- package/ink/get-max-width.ts +27 -0
- package/ink/global.d.ts +26 -0
- package/ink/hit-test.ts +130 -0
- package/ink/hooks/use-animation-frame.ts +57 -0
- package/ink/hooks/use-app.ts +8 -0
- package/ink/hooks/use-declared-cursor.ts +73 -0
- package/ink/hooks/use-input.ts +92 -0
- package/ink/hooks/use-interval.ts +67 -0
- package/ink/hooks/use-search-highlight.ts +53 -0
- package/ink/hooks/use-selection.ts +104 -0
- package/ink/hooks/use-stdin.ts +8 -0
- package/ink/hooks/use-tab-status.ts +72 -0
- package/ink/hooks/use-terminal-focus.ts +16 -0
- package/ink/hooks/use-terminal-title.ts +31 -0
- package/ink/hooks/use-terminal-viewport.ts +96 -0
- package/ink/ink.tsx +1754 -0
- package/ink/instances.ts +10 -0
- package/ink/layout/engine.ts +6 -0
- package/ink/layout/geometry.ts +97 -0
- package/ink/layout/node.ts +152 -0
- package/ink/layout/yoga.ts +308 -0
- package/ink/line-width-cache.ts +24 -0
- package/ink/log-update.ts +773 -0
- package/ink/measure-element.ts +23 -0
- package/ink/measure-text.ts +47 -0
- package/ink/node-cache.ts +54 -0
- package/ink/optimizer.ts +93 -0
- package/ink/output.ts +797 -0
- package/ink/parse-keypress.ts +801 -0
- package/ink/reconciler.ts +512 -0
- package/ink/render-border.ts +231 -0
- package/ink/render-node-to-output.ts +1462 -0
- package/ink/render-to-screen.ts +231 -0
- package/ink/renderer.ts +178 -0
- package/ink/root.ts +184 -0
- package/ink/screen.ts +1486 -0
- package/ink/searchHighlight.ts +93 -0
- package/ink/selection.ts +917 -0
- package/ink/squash-text-nodes.ts +92 -0
- package/ink/stringWidth.ts +223 -0
- package/ink/styles.ts +771 -0
- package/ink/supports-hyperlinks.ts +57 -0
- package/ink/tabstops.ts +46 -0
- package/ink/terminal-focus-state.ts +47 -0
- package/ink/terminal-querier.ts +212 -0
- package/ink/terminal.ts +248 -0
- package/ink/termio/ansi.ts +75 -0
- package/ink/termio/csi.ts +319 -0
- package/ink/termio/dec.ts +60 -0
- package/ink/termio/esc.ts +67 -0
- package/ink/termio/osc.ts +493 -0
- package/ink/termio/parser.ts +394 -0
- package/ink/termio/sgr.ts +308 -0
- package/ink/termio/tokenize.ts +319 -0
- package/ink/termio/types.ts +236 -0
- package/ink/termio.ts +42 -0
- package/ink/useTerminalNotification.ts +126 -0
- package/ink/warn.ts +9 -0
- package/ink/widest-line.ts +19 -0
- package/ink/wrap-text.ts +74 -0
- package/ink/wrapAnsi.ts +20 -0
- package/inspect.js +7 -0
- package/keybindings/KeybindingContext.tsx +243 -0
- package/keybindings/KeybindingProviderSetup.tsx +308 -0
- package/keybindings/defaultBindings.ts +340 -0
- package/keybindings/loadUserBindings.ts +472 -0
- package/keybindings/match.ts +120 -0
- package/keybindings/parser.ts +203 -0
- package/keybindings/reservedShortcuts.ts +127 -0
- package/keybindings/resolver.ts +244 -0
- package/keybindings/schema.ts +236 -0
- package/keybindings/shortcutFormat.ts +63 -0
- package/keybindings/template.ts +52 -0
- package/keybindings/useKeybinding.ts +196 -0
- package/keybindings/useShortcutDisplay.ts +59 -0
- package/keybindings/validate.ts +498 -0
- package/macro.ts +24 -0
- package/migrations/migrateAutoUpdatesToSettings.ts +61 -0
- package/migrations/migrateBypassPermissionsAcceptedToSettings.ts +40 -0
- package/migrations/migrateEnableAllProjectMcpServersToSettings.ts +118 -0
- package/migrations/migrateFennecToOpus.ts +45 -0
- package/migrations/migrateLegacyOpusToCurrent.ts +57 -0
- package/migrations/migrateOpusToOpus1m.ts +43 -0
- package/migrations/migrateReplBridgeEnabledToRemoteControlAtStartup.ts +22 -0
- package/migrations/migrateSonnet1mToSonnet45.ts +48 -0
- package/migrations/migrateSonnet45ToSonnet46.ts +67 -0
- package/migrations/resetAutoModeOptInForDefaultOffer.ts +51 -0
- package/migrations/resetProToOpusDefault.ts +51 -0
- package/package.json +29 -3
- package/patch-box.js +54 -0
- package/patch-compact.js +13 -0
- package/patch-condensed-center.js +13 -0
- package/patch-condensed-row.js +13 -0
- package/patch-condensed.js +13 -0
- package/patch-final.js +58 -0
- package/patch-input-body.js +46 -0
- package/patch-input-body2.js +35 -0
- package/patch-input-style.js +13 -0
- package/patch-input-width.js +13 -0
- package/patch-layout.js +87 -0
- package/patch-logo-row.js +12 -0
- package/patch-width.js +13 -0
- package/patch-width2.js +13 -0
- package/patch2.js +74 -0
- package/patch3.js +13 -0
- package/query.ts +1750 -0
- package/remote/RemoteSessionManager.ts +343 -0
- package/remote/SessionsWebSocket.ts +404 -0
- package/remote/remotePermissionBridge.ts +78 -0
- package/remote/sdkMessageAdapter.ts +302 -0
- package/skills/bundled/batch.ts +124 -0
- package/skills/bundled/claudeApi.ts +196 -0
- package/skills/bundled/claudeApiContent.ts +75 -0
- package/skills/bundled/claudeInChrome.ts +34 -0
- package/skills/bundled/debug.ts +103 -0
- package/skills/bundled/index.ts +79 -0
- package/skills/bundled/keybindings.ts +339 -0
- package/skills/bundled/loop.ts +92 -0
- package/skills/bundled/loremIpsum.ts +282 -0
- package/skills/bundled/remember.ts +82 -0
- package/skills/bundled/scheduleRemoteAgents.ts +447 -0
- package/skills/bundled/simplify.ts +69 -0
- package/skills/bundled/skillify.ts +197 -0
- package/skills/bundled/stuck.ts +79 -0
- package/skills/bundled/updateConfig.ts +475 -0
- package/skills/bundled/verify/SKILL.md +3 -0
- package/skills/bundled/verify/examples/cli.md +3 -0
- package/skills/bundled/verify/examples/server.md +3 -0
- package/skills/bundled/verify.ts +30 -0
- package/skills/bundled/verifyContent.ts +13 -0
- package/skills/bundledSkills.ts +220 -0
- package/skills/loadSkillsDir.ts +1086 -0
- package/skills/mcpSkillBuilders.ts +44 -0
- package/state/AppState.tsx +200 -0
- package/state/AppStateStore.ts +569 -0
- package/state/onChangeAppState.ts +171 -0
- package/state/selectors.ts +76 -0
- package/state/store.ts +34 -0
- package/state/teammateViewHelpers.ts +141 -0
- package/tasks/DreamTask/DreamTask.ts +157 -0
- package/tasks/InProcessTeammateTask/InProcessTeammateTask.tsx +126 -0
- package/tasks/InProcessTeammateTask/types.ts +121 -0
- package/tasks/LocalAgentTask/LocalAgentTask.tsx +683 -0
- package/tasks/LocalMainSessionTask.ts +479 -0
- package/tasks/LocalShellTask/LocalShellTask.tsx +523 -0
- package/tasks/LocalShellTask/guards.ts +41 -0
- package/tasks/LocalShellTask/killShellTasks.ts +76 -0
- package/tasks/RemoteAgentTask/RemoteAgentTask.tsx +856 -0
- package/tasks/pillLabel.ts +82 -0
- package/tasks/stopTask.ts +100 -0
- package/tasks/types.ts +46 -0
- package/types/command.ts +216 -0
- package/types/connectorText.ts +13 -0
- package/types/generated/events_mono/claude_code/v1/claude_code_internal_event.ts +865 -0
- package/types/generated/events_mono/common/v1/auth.ts +100 -0
- package/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.ts +223 -0
- package/types/generated/google/protobuf/timestamp.ts +187 -0
- package/types/hooks.ts +290 -0
- package/types/ids.ts +44 -0
- package/types/logs.ts +330 -0
- package/types/permissions.ts +441 -0
- package/types/plugin.ts +363 -0
- package/types/textInputTypes.ts +387 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation clearing utility.
|
|
3
|
+
* This module has heavier dependencies and should be lazy-loaded when possible.
|
|
4
|
+
*/
|
|
5
|
+
import { feature } from 'bun:bundle'
|
|
6
|
+
import { randomUUID, type UUID } from 'crypto'
|
|
7
|
+
import {
|
|
8
|
+
getLastMainRequestId,
|
|
9
|
+
getOriginalCwd,
|
|
10
|
+
getSessionId,
|
|
11
|
+
regenerateSessionId,
|
|
12
|
+
} from '../../bootstrap/state.js'
|
|
13
|
+
import {
|
|
14
|
+
type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
15
|
+
logEvent,
|
|
16
|
+
} from '../../services/analytics/index.js'
|
|
17
|
+
import type { AppState } from '../../state/AppState.js'
|
|
18
|
+
import { isInProcessTeammateTask } from '../../tasks/InProcessTeammateTask/types.js'
|
|
19
|
+
import {
|
|
20
|
+
isLocalAgentTask,
|
|
21
|
+
type LocalAgentTaskState,
|
|
22
|
+
} from '../../tasks/LocalAgentTask/LocalAgentTask.js'
|
|
23
|
+
import { isLocalShellTask } from '../../tasks/LocalShellTask/guards.js'
|
|
24
|
+
import { asAgentId } from '../../types/ids.js'
|
|
25
|
+
import type { Message } from '../../types/message.js'
|
|
26
|
+
import { createEmptyAttributionState } from '../../utils/commitAttribution.js'
|
|
27
|
+
import type { FileStateCache } from '../../utils/fileStateCache.js'
|
|
28
|
+
import {
|
|
29
|
+
executeSessionEndHooks,
|
|
30
|
+
getSessionEndHookTimeoutMs,
|
|
31
|
+
} from '../../utils/hooks.js'
|
|
32
|
+
import { logError } from '../../utils/log.js'
|
|
33
|
+
import { clearAllPlanSlugs } from '../../utils/plans.js'
|
|
34
|
+
import { setCwd } from '../../utils/Shell.js'
|
|
35
|
+
import { processSessionStartHooks } from '../../utils/sessionStart.js'
|
|
36
|
+
import {
|
|
37
|
+
clearSessionMetadata,
|
|
38
|
+
getAgentTranscriptPath,
|
|
39
|
+
resetSessionFilePointer,
|
|
40
|
+
saveWorktreeState,
|
|
41
|
+
} from '../../utils/sessionStorage.js'
|
|
42
|
+
import {
|
|
43
|
+
evictTaskOutput,
|
|
44
|
+
initTaskOutputAsSymlink,
|
|
45
|
+
} from '../../utils/task/diskOutput.js'
|
|
46
|
+
import { getCurrentWorktreeSession } from '../../utils/worktree.js'
|
|
47
|
+
import { clearSessionCaches } from './caches.js'
|
|
48
|
+
|
|
49
|
+
export async function clearConversation({
|
|
50
|
+
setMessages,
|
|
51
|
+
readFileState,
|
|
52
|
+
discoveredSkillNames,
|
|
53
|
+
loadedNestedMemoryPaths,
|
|
54
|
+
getAppState,
|
|
55
|
+
setAppState,
|
|
56
|
+
setConversationId,
|
|
57
|
+
}: {
|
|
58
|
+
setMessages: (updater: (prev: Message[]) => Message[]) => void
|
|
59
|
+
readFileState: FileStateCache
|
|
60
|
+
discoveredSkillNames?: Set<string>
|
|
61
|
+
loadedNestedMemoryPaths?: Set<string>
|
|
62
|
+
getAppState?: () => AppState
|
|
63
|
+
setAppState?: (f: (prev: AppState) => AppState) => void
|
|
64
|
+
setConversationId?: (id: UUID) => void
|
|
65
|
+
}): Promise<void> {
|
|
66
|
+
// Execute SessionEnd hooks before clearing (bounded by
|
|
67
|
+
// CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS, default 1.5s)
|
|
68
|
+
const sessionEndTimeoutMs = getSessionEndHookTimeoutMs()
|
|
69
|
+
await executeSessionEndHooks('clear', {
|
|
70
|
+
getAppState,
|
|
71
|
+
setAppState,
|
|
72
|
+
signal: AbortSignal.timeout(sessionEndTimeoutMs),
|
|
73
|
+
timeoutMs: sessionEndTimeoutMs,
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
// Signal to inference that this conversation's cache can be evicted.
|
|
77
|
+
const lastRequestId = getLastMainRequestId()
|
|
78
|
+
if (lastRequestId) {
|
|
79
|
+
logEvent('tengu_cache_eviction_hint', {
|
|
80
|
+
scope:
|
|
81
|
+
'conversation_clear' as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
82
|
+
last_request_id:
|
|
83
|
+
lastRequestId as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
|
|
84
|
+
})
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Compute preserved tasks up front so their per-agent state survives the
|
|
88
|
+
// cache wipe below. A task is preserved unless it explicitly has
|
|
89
|
+
// isBackgrounded === false. Main-session tasks (Ctrl+B) are preserved —
|
|
90
|
+
// they write to an isolated per-task transcript and run under an agent
|
|
91
|
+
// context, so they're safe across session ID regeneration. See
|
|
92
|
+
// LocalMainSessionTask.ts startBackgroundSession.
|
|
93
|
+
const preservedAgentIds = new Set<string>()
|
|
94
|
+
const preservedLocalAgents: LocalAgentTaskState[] = []
|
|
95
|
+
const shouldKillTask = (task: AppState['tasks'][string]): boolean =>
|
|
96
|
+
'isBackgrounded' in task && task.isBackgrounded === false
|
|
97
|
+
if (getAppState) {
|
|
98
|
+
for (const task of Object.values(getAppState().tasks)) {
|
|
99
|
+
if (shouldKillTask(task)) continue
|
|
100
|
+
if (isLocalAgentTask(task)) {
|
|
101
|
+
preservedAgentIds.add(task.agentId)
|
|
102
|
+
preservedLocalAgents.push(task)
|
|
103
|
+
} else if (isInProcessTeammateTask(task)) {
|
|
104
|
+
preservedAgentIds.add(task.identity.agentId)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
setMessages(() => [])
|
|
110
|
+
|
|
111
|
+
// Clear context-blocked flag so proactive ticks resume after /clear
|
|
112
|
+
if (feature('PROACTIVE') || feature('KAIROS')) {
|
|
113
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
114
|
+
const { setContextBlocked } = require('../../proactive/index.js')
|
|
115
|
+
/* eslint-enable @typescript-eslint/no-require-imports */
|
|
116
|
+
setContextBlocked(false)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Force logo re-render by updating conversationId
|
|
120
|
+
if (setConversationId) {
|
|
121
|
+
setConversationId(randomUUID())
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Clear all session-related caches. Per-agent state for preserved background
|
|
125
|
+
// tasks (invoked skills, pending permission callbacks, dump state, cache-break
|
|
126
|
+
// tracking) is retained so those agents keep functioning.
|
|
127
|
+
clearSessionCaches(preservedAgentIds)
|
|
128
|
+
|
|
129
|
+
setCwd(getOriginalCwd())
|
|
130
|
+
readFileState.clear()
|
|
131
|
+
discoveredSkillNames?.clear()
|
|
132
|
+
loadedNestedMemoryPaths?.clear()
|
|
133
|
+
|
|
134
|
+
// Clean out necessary items from App State
|
|
135
|
+
if (setAppState) {
|
|
136
|
+
setAppState(prev => {
|
|
137
|
+
// Partition tasks using the same predicate computed above:
|
|
138
|
+
// kill+remove foreground tasks, preserve everything else.
|
|
139
|
+
const nextTasks: AppState['tasks'] = {}
|
|
140
|
+
for (const [taskId, task] of Object.entries(prev.tasks)) {
|
|
141
|
+
if (!shouldKillTask(task)) {
|
|
142
|
+
nextTasks[taskId] = task
|
|
143
|
+
continue
|
|
144
|
+
}
|
|
145
|
+
// Foreground task: kill it and drop from state
|
|
146
|
+
try {
|
|
147
|
+
if (task.status === 'running') {
|
|
148
|
+
if (isLocalShellTask(task)) {
|
|
149
|
+
task.shellCommand?.kill()
|
|
150
|
+
task.shellCommand?.cleanup()
|
|
151
|
+
if (task.cleanupTimeoutId) {
|
|
152
|
+
clearTimeout(task.cleanupTimeoutId)
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if ('abortController' in task) {
|
|
156
|
+
task.abortController?.abort()
|
|
157
|
+
}
|
|
158
|
+
if ('unregisterCleanup' in task) {
|
|
159
|
+
task.unregisterCleanup?.()
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
} catch (error) {
|
|
163
|
+
logError(error)
|
|
164
|
+
}
|
|
165
|
+
void evictTaskOutput(taskId)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return {
|
|
169
|
+
...prev,
|
|
170
|
+
tasks: nextTasks,
|
|
171
|
+
attribution: createEmptyAttributionState(),
|
|
172
|
+
// Clear standalone agent context (name/color set by /rename, /color)
|
|
173
|
+
// so the new session doesn't display the old session's identity badge
|
|
174
|
+
standaloneAgentContext: undefined,
|
|
175
|
+
fileHistory: {
|
|
176
|
+
snapshots: [],
|
|
177
|
+
trackedFiles: new Set(),
|
|
178
|
+
snapshotSequence: 0,
|
|
179
|
+
},
|
|
180
|
+
// Reset MCP state to default to trigger re-initialization.
|
|
181
|
+
// Preserve pluginReconnectKey so /clear doesn't cause a no-op
|
|
182
|
+
// (it's only bumped by /reload-plugins).
|
|
183
|
+
mcp: {
|
|
184
|
+
clients: [],
|
|
185
|
+
tools: [],
|
|
186
|
+
commands: [],
|
|
187
|
+
resources: {},
|
|
188
|
+
pluginReconnectKey: prev.mcp.pluginReconnectKey,
|
|
189
|
+
},
|
|
190
|
+
}
|
|
191
|
+
})
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Clear plan slug cache so a new plan file is used after /clear
|
|
195
|
+
clearAllPlanSlugs()
|
|
196
|
+
|
|
197
|
+
// Clear cached session metadata (title, tag, agent name/color)
|
|
198
|
+
// so the new session doesn't inherit the previous session's identity
|
|
199
|
+
clearSessionMetadata()
|
|
200
|
+
|
|
201
|
+
// Generate new session ID to provide fresh state
|
|
202
|
+
// Set the old session as parent for analytics lineage tracking
|
|
203
|
+
regenerateSessionId({ setCurrentAsParent: true })
|
|
204
|
+
// Update the environment variable so subprocesses use the new session ID
|
|
205
|
+
if (process.env.USER_TYPE === 'ant' && process.env.CLAUDE_CODE_SESSION_ID) {
|
|
206
|
+
process.env.CLAUDE_CODE_SESSION_ID = getSessionId()
|
|
207
|
+
}
|
|
208
|
+
await resetSessionFilePointer()
|
|
209
|
+
|
|
210
|
+
// Preserved local_agent tasks had their TaskOutput symlink baked against the
|
|
211
|
+
// old session ID at spawn time, but post-clear transcript writes land under
|
|
212
|
+
// the new session directory (appendEntry re-reads getSessionId()). Re-point
|
|
213
|
+
// the symlinks so TaskOutput reads the live file instead of a frozen pre-clear
|
|
214
|
+
// snapshot. Only re-point running tasks — finished tasks will never write
|
|
215
|
+
// again, so re-pointing would replace a valid symlink with a dangling one.
|
|
216
|
+
// Main-session tasks use the same per-agent path (they write via
|
|
217
|
+
// recordSidechainTranscript to getAgentTranscriptPath), so no special case.
|
|
218
|
+
for (const task of preservedLocalAgents) {
|
|
219
|
+
if (task.status !== 'running') continue
|
|
220
|
+
void initTaskOutputAsSymlink(
|
|
221
|
+
task.id,
|
|
222
|
+
getAgentTranscriptPath(asAgentId(task.agentId)),
|
|
223
|
+
)
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Re-persist mode and worktree state after the clear so future --resume
|
|
227
|
+
// knows what the new post-clear session was in. clearSessionMetadata
|
|
228
|
+
// wiped both from the cache, but the process is still in the same mode
|
|
229
|
+
// and (if applicable) the same worktree directory.
|
|
230
|
+
if (feature('COORDINATOR_MODE')) {
|
|
231
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
232
|
+
const { saveMode } = require('../../utils/sessionStorage.js')
|
|
233
|
+
const {
|
|
234
|
+
isCoordinatorMode,
|
|
235
|
+
} = require('../../coordinator/coordinatorMode.js')
|
|
236
|
+
/* eslint-enable @typescript-eslint/no-require-imports */
|
|
237
|
+
saveMode(isCoordinatorMode() ? 'coordinator' : 'normal')
|
|
238
|
+
}
|
|
239
|
+
const worktreeSession = getCurrentWorktreeSession()
|
|
240
|
+
if (worktreeSession) {
|
|
241
|
+
saveWorktreeState(worktreeSession)
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// Execute SessionStart hooks after clearing
|
|
245
|
+
const hookMessages = await processSessionStartHooks('clear')
|
|
246
|
+
|
|
247
|
+
// Update messages with hook results
|
|
248
|
+
if (hookMessages.length > 0) {
|
|
249
|
+
setMessages(() => hookMessages)
|
|
250
|
+
}
|
|
251
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clear command - minimal metadata only.
|
|
3
|
+
* Implementation is lazy-loaded from clear.ts to reduce startup time.
|
|
4
|
+
* Utility functions:
|
|
5
|
+
* - clearSessionCaches: import from './clear/caches.js'
|
|
6
|
+
* - clearConversation: import from './clear/conversation.js'
|
|
7
|
+
*/
|
|
8
|
+
import type { Command } from '../../commands.js'
|
|
9
|
+
|
|
10
|
+
const clear = {
|
|
11
|
+
type: 'local',
|
|
12
|
+
name: 'clear',
|
|
13
|
+
description: 'Clear conversation history and free up context',
|
|
14
|
+
aliases: ['reset', 'new'],
|
|
15
|
+
supportsNonInteractive: false, // Should just create a new session
|
|
16
|
+
load: () => import('./clear.js'),
|
|
17
|
+
} satisfies Command
|
|
18
|
+
|
|
19
|
+
export default clear
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { UUID } from 'crypto'
|
|
2
|
+
import { getSessionId } from '../../bootstrap/state.js'
|
|
3
|
+
import type { ToolUseContext } from '../../Tool.js'
|
|
4
|
+
import {
|
|
5
|
+
AGENT_COLORS,
|
|
6
|
+
type AgentColorName,
|
|
7
|
+
} from '../../tools/AgentTool/agentColorManager.js'
|
|
8
|
+
import type {
|
|
9
|
+
LocalJSXCommandContext,
|
|
10
|
+
LocalJSXCommandOnDone,
|
|
11
|
+
} from '../../types/command.js'
|
|
12
|
+
import {
|
|
13
|
+
getTranscriptPath,
|
|
14
|
+
saveAgentColor,
|
|
15
|
+
} from '../../utils/sessionStorage.js'
|
|
16
|
+
import { isTeammate } from '../../utils/teammate.js'
|
|
17
|
+
|
|
18
|
+
const RESET_ALIASES = ['default', 'reset', 'none', 'gray', 'grey'] as const
|
|
19
|
+
|
|
20
|
+
export async function call(
|
|
21
|
+
onDone: LocalJSXCommandOnDone,
|
|
22
|
+
context: ToolUseContext & LocalJSXCommandContext,
|
|
23
|
+
args: string,
|
|
24
|
+
): Promise<null> {
|
|
25
|
+
// Teammates cannot set their own color
|
|
26
|
+
if (isTeammate()) {
|
|
27
|
+
onDone(
|
|
28
|
+
'Cannot set color: This session is a swarm teammate. Teammate colors are assigned by the team leader.',
|
|
29
|
+
{ display: 'system' },
|
|
30
|
+
)
|
|
31
|
+
return null
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (!args || args.trim() === '') {
|
|
35
|
+
const colorList = AGENT_COLORS.join(', ')
|
|
36
|
+
onDone(`Please provide a color. Available colors: ${colorList}, default`, {
|
|
37
|
+
display: 'system',
|
|
38
|
+
})
|
|
39
|
+
return null
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const colorArg = args.trim().toLowerCase()
|
|
43
|
+
|
|
44
|
+
// Handle reset to default (gray)
|
|
45
|
+
if (RESET_ALIASES.includes(colorArg as (typeof RESET_ALIASES)[number])) {
|
|
46
|
+
const sessionId = getSessionId() as UUID
|
|
47
|
+
const fullPath = getTranscriptPath()
|
|
48
|
+
|
|
49
|
+
// Use "default" sentinel (not empty string) so truthiness guards
|
|
50
|
+
// in sessionStorage.ts persist the reset across session restarts
|
|
51
|
+
await saveAgentColor(sessionId, 'default', fullPath)
|
|
52
|
+
|
|
53
|
+
context.setAppState(prev => ({
|
|
54
|
+
...prev,
|
|
55
|
+
standaloneAgentContext: {
|
|
56
|
+
...prev.standaloneAgentContext,
|
|
57
|
+
name: prev.standaloneAgentContext?.name ?? '',
|
|
58
|
+
color: undefined,
|
|
59
|
+
},
|
|
60
|
+
}))
|
|
61
|
+
|
|
62
|
+
onDone('Session color reset to default', { display: 'system' })
|
|
63
|
+
return null
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (!AGENT_COLORS.includes(colorArg as AgentColorName)) {
|
|
67
|
+
const colorList = AGENT_COLORS.join(', ')
|
|
68
|
+
onDone(
|
|
69
|
+
`Invalid color "${colorArg}". Available colors: ${colorList}, default`,
|
|
70
|
+
{ display: 'system' },
|
|
71
|
+
)
|
|
72
|
+
return null
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const sessionId = getSessionId() as UUID
|
|
76
|
+
const fullPath = getTranscriptPath()
|
|
77
|
+
|
|
78
|
+
// Save to transcript for persistence across sessions
|
|
79
|
+
await saveAgentColor(sessionId, colorArg, fullPath)
|
|
80
|
+
|
|
81
|
+
// Update AppState for immediate effect
|
|
82
|
+
context.setAppState(prev => ({
|
|
83
|
+
...prev,
|
|
84
|
+
standaloneAgentContext: {
|
|
85
|
+
...prev.standaloneAgentContext,
|
|
86
|
+
name: prev.standaloneAgentContext?.name ?? '',
|
|
87
|
+
color: colorArg as AgentColorName,
|
|
88
|
+
},
|
|
89
|
+
}))
|
|
90
|
+
|
|
91
|
+
onDone(`Session color set to: ${colorArg}`, { display: 'system' })
|
|
92
|
+
return null
|
|
93
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Color command - minimal metadata only.
|
|
3
|
+
* Implementation is lazy-loaded from color.ts to reduce startup time.
|
|
4
|
+
*/
|
|
5
|
+
import type { Command } from '../../commands.js'
|
|
6
|
+
|
|
7
|
+
const color = {
|
|
8
|
+
type: 'local-jsx',
|
|
9
|
+
name: 'color',
|
|
10
|
+
description: 'Set the prompt bar color for this session',
|
|
11
|
+
immediate: true,
|
|
12
|
+
argumentHint: '<color|default>',
|
|
13
|
+
load: () => import('./color.js'),
|
|
14
|
+
} satisfies Command
|
|
15
|
+
|
|
16
|
+
export default color
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { Command } from '../commands.js'
|
|
2
|
+
import {
|
|
3
|
+
getAttributionTexts,
|
|
4
|
+
getEnhancedPRAttribution,
|
|
5
|
+
} from '../utils/attribution.js'
|
|
6
|
+
import { getDefaultBranch } from '../utils/git.js'
|
|
7
|
+
import { executeShellCommandsInPrompt } from '../utils/promptShellExecution.js'
|
|
8
|
+
import { getUndercoverInstructions, isUndercover } from '../utils/undercover.js'
|
|
9
|
+
|
|
10
|
+
const ALLOWED_TOOLS = [
|
|
11
|
+
'Bash(git checkout --branch:*)',
|
|
12
|
+
'Bash(git checkout -b:*)',
|
|
13
|
+
'Bash(git add:*)',
|
|
14
|
+
'Bash(git status:*)',
|
|
15
|
+
'Bash(git push:*)',
|
|
16
|
+
'Bash(git commit:*)',
|
|
17
|
+
'Bash(gh pr create:*)',
|
|
18
|
+
'Bash(gh pr edit:*)',
|
|
19
|
+
'Bash(gh pr view:*)',
|
|
20
|
+
'Bash(gh pr merge:*)',
|
|
21
|
+
'ToolSearch',
|
|
22
|
+
'mcp__slack__send_message',
|
|
23
|
+
'mcp__claude_ai_Slack__slack_send_message',
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
function getPromptContent(
|
|
27
|
+
defaultBranch: string,
|
|
28
|
+
prAttribution?: string,
|
|
29
|
+
): string {
|
|
30
|
+
const { commit: commitAttribution, pr: defaultPrAttribution } =
|
|
31
|
+
getAttributionTexts()
|
|
32
|
+
// Use provided PR attribution or fall back to default
|
|
33
|
+
const effectivePrAttribution = prAttribution ?? defaultPrAttribution
|
|
34
|
+
const safeUser = process.env.SAFEUSER || ''
|
|
35
|
+
const username = process.env.USER || ''
|
|
36
|
+
|
|
37
|
+
let prefix = ''
|
|
38
|
+
let reviewerArg = ' and `--reviewer anthropics/claude-code`'
|
|
39
|
+
let addReviewerArg = ' (and add `--add-reviewer anthropics/claude-code`)'
|
|
40
|
+
let changelogSection = `
|
|
41
|
+
|
|
42
|
+
## Changelog
|
|
43
|
+
<!-- CHANGELOG:START -->
|
|
44
|
+
[If this PR contains user-facing changes, add a changelog entry here. Otherwise, remove this section.]
|
|
45
|
+
<!-- CHANGELOG:END -->`
|
|
46
|
+
let slackStep = `
|
|
47
|
+
|
|
48
|
+
5. After creating/updating the PR, check if the user's CLAUDE.md mentions posting to Slack channels. If it does, use ToolSearch to search for "slack send message" tools. If ToolSearch finds a Slack tool, ask the user if they'd like you to post the PR URL to the relevant Slack channel. Only post if the user confirms. If ToolSearch returns no results or errors, skip this step silently—do not mention the failure, do not attempt workarounds, and do not try alternative approaches.`
|
|
49
|
+
if (process.env.USER_TYPE === 'ant' && isUndercover()) {
|
|
50
|
+
prefix = getUndercoverInstructions() + '\n'
|
|
51
|
+
reviewerArg = ''
|
|
52
|
+
addReviewerArg = ''
|
|
53
|
+
changelogSection = ''
|
|
54
|
+
slackStep = ''
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return `${prefix}## Context
|
|
58
|
+
|
|
59
|
+
- \`SAFEUSER\`: ${safeUser}
|
|
60
|
+
- \`whoami\`: ${username}
|
|
61
|
+
- \`git status\`: !\`git status\`
|
|
62
|
+
- \`git diff HEAD\`: !\`git diff HEAD\`
|
|
63
|
+
- \`git branch --show-current\`: !\`git branch --show-current\`
|
|
64
|
+
- \`git diff ${defaultBranch}...HEAD\`: !\`git diff ${defaultBranch}...HEAD\`
|
|
65
|
+
- \`gh pr view --json number 2>/dev/null || true\`: !\`gh pr view --json number 2>/dev/null || true\`
|
|
66
|
+
|
|
67
|
+
## Git Safety Protocol
|
|
68
|
+
|
|
69
|
+
- NEVER update the git config
|
|
70
|
+
- NEVER run destructive/irreversible git commands (like push --force, hard reset, etc) unless the user explicitly requests them
|
|
71
|
+
- NEVER skip hooks (--no-verify, --no-gpg-sign, etc) unless the user explicitly requests it
|
|
72
|
+
- NEVER run force push to main/master, warn the user if they request it
|
|
73
|
+
- Do not commit files that likely contain secrets (.env, credentials.json, etc)
|
|
74
|
+
- Never use git commands with the -i flag (like git rebase -i or git add -i) since they require interactive input which is not supported
|
|
75
|
+
|
|
76
|
+
## Your task
|
|
77
|
+
|
|
78
|
+
Analyze all changes that will be included in the pull request, making sure to look at all relevant commits (NOT just the latest commit, but ALL commits that will be included in the pull request from the git diff ${defaultBranch}...HEAD output above).
|
|
79
|
+
|
|
80
|
+
Based on the above changes:
|
|
81
|
+
1. Create a new branch if on ${defaultBranch} (use SAFEUSER from context above for the branch name prefix, falling back to whoami if SAFEUSER is empty, e.g., \`username/feature-name\`)
|
|
82
|
+
2. Create a single commit with an appropriate message using heredoc syntax${commitAttribution ? `, ending with the attribution text shown in the example below` : ''}:
|
|
83
|
+
\`\`\`
|
|
84
|
+
git commit -m "$(cat <<'EOF'
|
|
85
|
+
Commit message here.${commitAttribution ? `\n\n${commitAttribution}` : ''}
|
|
86
|
+
EOF
|
|
87
|
+
)"
|
|
88
|
+
\`\`\`
|
|
89
|
+
3. Push the branch to origin
|
|
90
|
+
4. If a PR already exists for this branch (check the gh pr view output above), update the PR title and body using \`gh pr edit\` to reflect the current diff${addReviewerArg}. Otherwise, create a pull request using \`gh pr create\` with heredoc syntax for the body${reviewerArg}.
|
|
91
|
+
- IMPORTANT: Keep PR titles short (under 70 characters). Use the body for details.
|
|
92
|
+
\`\`\`
|
|
93
|
+
gh pr create --title "Short, descriptive title" --body "$(cat <<'EOF'
|
|
94
|
+
## Summary
|
|
95
|
+
<1-3 bullet points>
|
|
96
|
+
|
|
97
|
+
## Test plan
|
|
98
|
+
[Bulleted markdown checklist of TODOs for testing the pull request...]${changelogSection}${effectivePrAttribution ? `\n\n${effectivePrAttribution}` : ''}
|
|
99
|
+
EOF
|
|
100
|
+
)"
|
|
101
|
+
\`\`\`
|
|
102
|
+
|
|
103
|
+
You have the capability to call multiple tools in a single response. You MUST do all of the above in a single message.${slackStep}
|
|
104
|
+
|
|
105
|
+
Return the PR URL when you're done, so the user can see it.`
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const command = {
|
|
109
|
+
type: 'prompt',
|
|
110
|
+
name: 'commit-push-pr',
|
|
111
|
+
description: 'Commit, push, and open a PR',
|
|
112
|
+
allowedTools: ALLOWED_TOOLS,
|
|
113
|
+
get contentLength() {
|
|
114
|
+
// Use 'main' as estimate for content length calculation
|
|
115
|
+
return getPromptContent('main').length
|
|
116
|
+
},
|
|
117
|
+
progressMessage: 'creating commit and PR',
|
|
118
|
+
source: 'builtin',
|
|
119
|
+
async getPromptForCommand(args, context) {
|
|
120
|
+
// Get default branch and enhanced PR attribution
|
|
121
|
+
const [defaultBranch, prAttribution] = await Promise.all([
|
|
122
|
+
getDefaultBranch(),
|
|
123
|
+
getEnhancedPRAttribution(context.getAppState),
|
|
124
|
+
])
|
|
125
|
+
let promptContent = getPromptContent(defaultBranch, prAttribution)
|
|
126
|
+
|
|
127
|
+
// Append user instructions if args provided
|
|
128
|
+
const trimmedArgs = args?.trim()
|
|
129
|
+
if (trimmedArgs) {
|
|
130
|
+
promptContent += `\n\n## Additional instructions from user\n\n${trimmedArgs}`
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const finalContent = await executeShellCommandsInPrompt(
|
|
134
|
+
promptContent,
|
|
135
|
+
{
|
|
136
|
+
...context,
|
|
137
|
+
getAppState() {
|
|
138
|
+
const appState = context.getAppState()
|
|
139
|
+
return {
|
|
140
|
+
...appState,
|
|
141
|
+
toolPermissionContext: {
|
|
142
|
+
...appState.toolPermissionContext,
|
|
143
|
+
alwaysAllowRules: {
|
|
144
|
+
...appState.toolPermissionContext.alwaysAllowRules,
|
|
145
|
+
command: ALLOWED_TOOLS,
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
'/commit-push-pr',
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
return [{ type: 'text', text: finalContent }]
|
|
155
|
+
},
|
|
156
|
+
} satisfies Command
|
|
157
|
+
|
|
158
|
+
export default command
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { Command } from '../commands.js'
|
|
2
|
+
import { getAttributionTexts } from '../utils/attribution.js'
|
|
3
|
+
import { executeShellCommandsInPrompt } from '../utils/promptShellExecution.js'
|
|
4
|
+
import { getUndercoverInstructions, isUndercover } from '../utils/undercover.js'
|
|
5
|
+
|
|
6
|
+
const ALLOWED_TOOLS = [
|
|
7
|
+
'Bash(git add:*)',
|
|
8
|
+
'Bash(git status:*)',
|
|
9
|
+
'Bash(git commit:*)',
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
function getPromptContent(): string {
|
|
13
|
+
const { commit: commitAttribution } = getAttributionTexts()
|
|
14
|
+
|
|
15
|
+
let prefix = ''
|
|
16
|
+
if (process.env.USER_TYPE === 'ant' && isUndercover()) {
|
|
17
|
+
prefix = getUndercoverInstructions() + '\n'
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return `${prefix}## Context
|
|
21
|
+
|
|
22
|
+
- Current git status: !\`git status\`
|
|
23
|
+
- Current git diff (staged and unstaged changes): !\`git diff HEAD\`
|
|
24
|
+
- Current branch: !\`git branch --show-current\`
|
|
25
|
+
- Recent commits: !\`git log --oneline -10\`
|
|
26
|
+
|
|
27
|
+
## Git Safety Protocol
|
|
28
|
+
|
|
29
|
+
- NEVER update the git config
|
|
30
|
+
- NEVER skip hooks (--no-verify, --no-gpg-sign, etc) unless the user explicitly requests it
|
|
31
|
+
- CRITICAL: ALWAYS create NEW commits. NEVER use git commit --amend, unless the user explicitly requests it
|
|
32
|
+
- Do not commit files that likely contain secrets (.env, credentials.json, etc). Warn the user if they specifically request to commit those files
|
|
33
|
+
- If there are no changes to commit (i.e., no untracked files and no modifications), do not create an empty commit
|
|
34
|
+
- Never use git commands with the -i flag (like git rebase -i or git add -i) since they require interactive input which is not supported
|
|
35
|
+
|
|
36
|
+
## Your task
|
|
37
|
+
|
|
38
|
+
Based on the above changes, create a single git commit:
|
|
39
|
+
|
|
40
|
+
1. Analyze all staged changes and draft a commit message:
|
|
41
|
+
- Look at the recent commits above to follow this repository's commit message style
|
|
42
|
+
- Summarize the nature of the changes (new feature, enhancement, bug fix, refactoring, test, docs, etc.)
|
|
43
|
+
- Ensure the message accurately reflects the changes and their purpose (i.e. "add" means a wholly new feature, "update" means an enhancement to an existing feature, "fix" means a bug fix, etc.)
|
|
44
|
+
- Draft a concise (1-2 sentences) commit message that focuses on the "why" rather than the "what"
|
|
45
|
+
|
|
46
|
+
2. Stage relevant files and create the commit using HEREDOC syntax:
|
|
47
|
+
\`\`\`
|
|
48
|
+
git commit -m "$(cat <<'EOF'
|
|
49
|
+
Commit message here.${commitAttribution ? `\n\n${commitAttribution}` : ''}
|
|
50
|
+
EOF
|
|
51
|
+
)"
|
|
52
|
+
\`\`\`
|
|
53
|
+
|
|
54
|
+
You have the capability to call multiple tools in a single response. Stage and create the commit using a single message. Do not use any other tools or do anything else. Do not send any other text or messages besides these tool calls.`
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const command = {
|
|
58
|
+
type: 'prompt',
|
|
59
|
+
name: 'commit',
|
|
60
|
+
description: 'Create a git commit',
|
|
61
|
+
allowedTools: ALLOWED_TOOLS,
|
|
62
|
+
contentLength: 0, // Dynamic content
|
|
63
|
+
progressMessage: 'creating commit',
|
|
64
|
+
source: 'builtin',
|
|
65
|
+
async getPromptForCommand(_args, context) {
|
|
66
|
+
const promptContent = getPromptContent()
|
|
67
|
+
const finalContent = await executeShellCommandsInPrompt(
|
|
68
|
+
promptContent,
|
|
69
|
+
{
|
|
70
|
+
...context,
|
|
71
|
+
getAppState() {
|
|
72
|
+
const appState = context.getAppState()
|
|
73
|
+
return {
|
|
74
|
+
...appState,
|
|
75
|
+
toolPermissionContext: {
|
|
76
|
+
...appState.toolPermissionContext,
|
|
77
|
+
alwaysAllowRules: {
|
|
78
|
+
...appState.toolPermissionContext.alwaysAllowRules,
|
|
79
|
+
command: ALLOWED_TOOLS,
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
'/commit',
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
return [{ type: 'text', text: finalContent }]
|
|
89
|
+
},
|
|
90
|
+
} satisfies Command
|
|
91
|
+
|
|
92
|
+
export default command
|