@xortex/xcode 3.0.1 → 3.0.3
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/entrypoints/cli.tsx +1 -1
- 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
package/types/hooks.ts
ADDED
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
// biome-ignore-all assist/source/organizeImports: ANT-ONLY import markers must not be reordered
|
|
2
|
+
import { z } from 'zod/v4'
|
|
3
|
+
import { lazySchema } from '../utils/lazySchema.js'
|
|
4
|
+
import {
|
|
5
|
+
type HookEvent,
|
|
6
|
+
HOOK_EVENTS,
|
|
7
|
+
type HookInput,
|
|
8
|
+
type PermissionUpdate,
|
|
9
|
+
} from 'src/entrypoints/agentSdkTypes.js'
|
|
10
|
+
import type {
|
|
11
|
+
HookJSONOutput,
|
|
12
|
+
AsyncHookJSONOutput,
|
|
13
|
+
SyncHookJSONOutput,
|
|
14
|
+
} from 'src/entrypoints/agentSdkTypes.js'
|
|
15
|
+
import type { Message } from 'src/types/message.js'
|
|
16
|
+
import type { PermissionResult } from 'src/utils/permissions/PermissionResult.js'
|
|
17
|
+
import { permissionBehaviorSchema } from 'src/utils/permissions/PermissionRule.js'
|
|
18
|
+
import { permissionUpdateSchema } from 'src/utils/permissions/PermissionUpdateSchema.js'
|
|
19
|
+
import type { AppState } from '../state/AppState.js'
|
|
20
|
+
import type { AttributionState } from '../utils/commitAttribution.js'
|
|
21
|
+
|
|
22
|
+
export function isHookEvent(value: string): value is HookEvent {
|
|
23
|
+
return HOOK_EVENTS.includes(value as HookEvent)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Prompt elicitation protocol types. The `prompt` key acts as discriminator
|
|
27
|
+
// (mirroring the {async:true} pattern), with the id as its value.
|
|
28
|
+
export const promptRequestSchema = lazySchema(() =>
|
|
29
|
+
z.object({
|
|
30
|
+
prompt: z.string(), // request id
|
|
31
|
+
message: z.string(),
|
|
32
|
+
options: z.array(
|
|
33
|
+
z.object({
|
|
34
|
+
key: z.string(),
|
|
35
|
+
label: z.string(),
|
|
36
|
+
description: z.string().optional(),
|
|
37
|
+
}),
|
|
38
|
+
),
|
|
39
|
+
}),
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
export type PromptRequest = z.infer<ReturnType<typeof promptRequestSchema>>
|
|
43
|
+
|
|
44
|
+
export type PromptResponse = {
|
|
45
|
+
prompt_response: string // request id
|
|
46
|
+
selected: string
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Sync hook response schema
|
|
50
|
+
export const syncHookResponseSchema = lazySchema(() =>
|
|
51
|
+
z.object({
|
|
52
|
+
continue: z
|
|
53
|
+
.boolean()
|
|
54
|
+
.describe('Whether Claude should continue after hook (default: true)')
|
|
55
|
+
.optional(),
|
|
56
|
+
suppressOutput: z
|
|
57
|
+
.boolean()
|
|
58
|
+
.describe('Hide stdout from transcript (default: false)')
|
|
59
|
+
.optional(),
|
|
60
|
+
stopReason: z
|
|
61
|
+
.string()
|
|
62
|
+
.describe('Message shown when continue is false')
|
|
63
|
+
.optional(),
|
|
64
|
+
decision: z.enum(['approve', 'block']).optional(),
|
|
65
|
+
reason: z.string().describe('Explanation for the decision').optional(),
|
|
66
|
+
systemMessage: z
|
|
67
|
+
.string()
|
|
68
|
+
.describe('Warning message shown to the user')
|
|
69
|
+
.optional(),
|
|
70
|
+
hookSpecificOutput: z
|
|
71
|
+
.union([
|
|
72
|
+
z.object({
|
|
73
|
+
hookEventName: z.literal('PreToolUse'),
|
|
74
|
+
permissionDecision: permissionBehaviorSchema().optional(),
|
|
75
|
+
permissionDecisionReason: z.string().optional(),
|
|
76
|
+
updatedInput: z.record(z.string(), z.unknown()).optional(),
|
|
77
|
+
additionalContext: z.string().optional(),
|
|
78
|
+
}),
|
|
79
|
+
z.object({
|
|
80
|
+
hookEventName: z.literal('UserPromptSubmit'),
|
|
81
|
+
additionalContext: z.string().optional(),
|
|
82
|
+
}),
|
|
83
|
+
z.object({
|
|
84
|
+
hookEventName: z.literal('SessionStart'),
|
|
85
|
+
additionalContext: z.string().optional(),
|
|
86
|
+
initialUserMessage: z.string().optional(),
|
|
87
|
+
watchPaths: z
|
|
88
|
+
.array(z.string())
|
|
89
|
+
.describe('Absolute paths to watch for FileChanged hooks')
|
|
90
|
+
.optional(),
|
|
91
|
+
}),
|
|
92
|
+
z.object({
|
|
93
|
+
hookEventName: z.literal('Setup'),
|
|
94
|
+
additionalContext: z.string().optional(),
|
|
95
|
+
}),
|
|
96
|
+
z.object({
|
|
97
|
+
hookEventName: z.literal('SubagentStart'),
|
|
98
|
+
additionalContext: z.string().optional(),
|
|
99
|
+
}),
|
|
100
|
+
z.object({
|
|
101
|
+
hookEventName: z.literal('PostToolUse'),
|
|
102
|
+
additionalContext: z.string().optional(),
|
|
103
|
+
updatedMCPToolOutput: z
|
|
104
|
+
.unknown()
|
|
105
|
+
.describe('Updates the output for MCP tools')
|
|
106
|
+
.optional(),
|
|
107
|
+
}),
|
|
108
|
+
z.object({
|
|
109
|
+
hookEventName: z.literal('PostToolUseFailure'),
|
|
110
|
+
additionalContext: z.string().optional(),
|
|
111
|
+
}),
|
|
112
|
+
z.object({
|
|
113
|
+
hookEventName: z.literal('PermissionDenied'),
|
|
114
|
+
retry: z.boolean().optional(),
|
|
115
|
+
}),
|
|
116
|
+
z.object({
|
|
117
|
+
hookEventName: z.literal('Notification'),
|
|
118
|
+
additionalContext: z.string().optional(),
|
|
119
|
+
}),
|
|
120
|
+
z.object({
|
|
121
|
+
hookEventName: z.literal('PermissionRequest'),
|
|
122
|
+
decision: z.union([
|
|
123
|
+
z.object({
|
|
124
|
+
behavior: z.literal('allow'),
|
|
125
|
+
updatedInput: z.record(z.string(), z.unknown()).optional(),
|
|
126
|
+
updatedPermissions: z.array(permissionUpdateSchema()).optional(),
|
|
127
|
+
}),
|
|
128
|
+
z.object({
|
|
129
|
+
behavior: z.literal('deny'),
|
|
130
|
+
message: z.string().optional(),
|
|
131
|
+
interrupt: z.boolean().optional(),
|
|
132
|
+
}),
|
|
133
|
+
]),
|
|
134
|
+
}),
|
|
135
|
+
z.object({
|
|
136
|
+
hookEventName: z.literal('Elicitation'),
|
|
137
|
+
action: z.enum(['accept', 'decline', 'cancel']).optional(),
|
|
138
|
+
content: z.record(z.string(), z.unknown()).optional(),
|
|
139
|
+
}),
|
|
140
|
+
z.object({
|
|
141
|
+
hookEventName: z.literal('ElicitationResult'),
|
|
142
|
+
action: z.enum(['accept', 'decline', 'cancel']).optional(),
|
|
143
|
+
content: z.record(z.string(), z.unknown()).optional(),
|
|
144
|
+
}),
|
|
145
|
+
z.object({
|
|
146
|
+
hookEventName: z.literal('CwdChanged'),
|
|
147
|
+
watchPaths: z
|
|
148
|
+
.array(z.string())
|
|
149
|
+
.describe('Absolute paths to watch for FileChanged hooks')
|
|
150
|
+
.optional(),
|
|
151
|
+
}),
|
|
152
|
+
z.object({
|
|
153
|
+
hookEventName: z.literal('FileChanged'),
|
|
154
|
+
watchPaths: z
|
|
155
|
+
.array(z.string())
|
|
156
|
+
.describe('Absolute paths to watch for FileChanged hooks')
|
|
157
|
+
.optional(),
|
|
158
|
+
}),
|
|
159
|
+
z.object({
|
|
160
|
+
hookEventName: z.literal('WorktreeCreate'),
|
|
161
|
+
worktreePath: z.string(),
|
|
162
|
+
}),
|
|
163
|
+
])
|
|
164
|
+
.optional(),
|
|
165
|
+
}),
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
// Zod schema for hook JSON output validation
|
|
169
|
+
export const hookJSONOutputSchema = lazySchema(() => {
|
|
170
|
+
// Async hook response schema
|
|
171
|
+
const asyncHookResponseSchema = z.object({
|
|
172
|
+
async: z.literal(true),
|
|
173
|
+
asyncTimeout: z.number().optional(),
|
|
174
|
+
})
|
|
175
|
+
return z.union([asyncHookResponseSchema, syncHookResponseSchema()])
|
|
176
|
+
})
|
|
177
|
+
|
|
178
|
+
// Infer the TypeScript type from the schema
|
|
179
|
+
type SchemaHookJSONOutput = z.infer<ReturnType<typeof hookJSONOutputSchema>>
|
|
180
|
+
|
|
181
|
+
// Type guard function to check if response is sync
|
|
182
|
+
export function isSyncHookJSONOutput(
|
|
183
|
+
json: HookJSONOutput,
|
|
184
|
+
): json is SyncHookJSONOutput {
|
|
185
|
+
return !('async' in json && json.async === true)
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Type guard function to check if response is async
|
|
189
|
+
export function isAsyncHookJSONOutput(
|
|
190
|
+
json: HookJSONOutput,
|
|
191
|
+
): json is AsyncHookJSONOutput {
|
|
192
|
+
return 'async' in json && json.async === true
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Compile-time assertion that SDK and Zod types match
|
|
196
|
+
import type { IsEqual } from 'type-fest'
|
|
197
|
+
type Assert<T extends true> = T
|
|
198
|
+
type _assertSDKTypesMatch = Assert<
|
|
199
|
+
IsEqual<SchemaHookJSONOutput, HookJSONOutput>
|
|
200
|
+
>
|
|
201
|
+
|
|
202
|
+
/** Context passed to callback hooks for state access */
|
|
203
|
+
export type HookCallbackContext = {
|
|
204
|
+
getAppState: () => AppState
|
|
205
|
+
updateAttributionState: (
|
|
206
|
+
updater: (prev: AttributionState) => AttributionState,
|
|
207
|
+
) => void
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/** Hook that is a callback. */
|
|
211
|
+
export type HookCallback = {
|
|
212
|
+
type: 'callback'
|
|
213
|
+
callback: (
|
|
214
|
+
input: HookInput,
|
|
215
|
+
toolUseID: string | null,
|
|
216
|
+
abort: AbortSignal | undefined,
|
|
217
|
+
/** Hook index for SessionStart hooks to compute CLAUDE_ENV_FILE path */
|
|
218
|
+
hookIndex?: number,
|
|
219
|
+
/** Optional context for accessing app state */
|
|
220
|
+
context?: HookCallbackContext,
|
|
221
|
+
) => Promise<HookJSONOutput>
|
|
222
|
+
/** Timeout in seconds for this hook */
|
|
223
|
+
timeout?: number
|
|
224
|
+
/** Internal hooks (e.g. session file access analytics) are excluded from tengu_run_hook metrics */
|
|
225
|
+
internal?: boolean
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export type HookCallbackMatcher = {
|
|
229
|
+
matcher?: string
|
|
230
|
+
hooks: HookCallback[]
|
|
231
|
+
pluginName?: string
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
export type HookProgress = {
|
|
235
|
+
type: 'hook_progress'
|
|
236
|
+
hookEvent: HookEvent
|
|
237
|
+
hookName: string
|
|
238
|
+
command: string
|
|
239
|
+
promptText?: string
|
|
240
|
+
statusMessage?: string
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
export type HookBlockingError = {
|
|
244
|
+
blockingError: string
|
|
245
|
+
command: string
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export type PermissionRequestResult =
|
|
249
|
+
| {
|
|
250
|
+
behavior: 'allow'
|
|
251
|
+
updatedInput?: Record<string, unknown>
|
|
252
|
+
updatedPermissions?: PermissionUpdate[]
|
|
253
|
+
}
|
|
254
|
+
| {
|
|
255
|
+
behavior: 'deny'
|
|
256
|
+
message?: string
|
|
257
|
+
interrupt?: boolean
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
export type HookResult = {
|
|
261
|
+
message?: Message
|
|
262
|
+
systemMessage?: Message
|
|
263
|
+
blockingError?: HookBlockingError
|
|
264
|
+
outcome: 'success' | 'blocking' | 'non_blocking_error' | 'cancelled'
|
|
265
|
+
preventContinuation?: boolean
|
|
266
|
+
stopReason?: string
|
|
267
|
+
permissionBehavior?: 'ask' | 'deny' | 'allow' | 'passthrough'
|
|
268
|
+
hookPermissionDecisionReason?: string
|
|
269
|
+
additionalContext?: string
|
|
270
|
+
initialUserMessage?: string
|
|
271
|
+
updatedInput?: Record<string, unknown>
|
|
272
|
+
updatedMCPToolOutput?: unknown
|
|
273
|
+
permissionRequestResult?: PermissionRequestResult
|
|
274
|
+
retry?: boolean
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
export type AggregatedHookResult = {
|
|
278
|
+
message?: Message
|
|
279
|
+
blockingErrors?: HookBlockingError[]
|
|
280
|
+
preventContinuation?: boolean
|
|
281
|
+
stopReason?: string
|
|
282
|
+
hookPermissionDecisionReason?: string
|
|
283
|
+
permissionBehavior?: PermissionResult['behavior']
|
|
284
|
+
additionalContexts?: string[]
|
|
285
|
+
initialUserMessage?: string
|
|
286
|
+
updatedInput?: Record<string, unknown>
|
|
287
|
+
updatedMCPToolOutput?: unknown
|
|
288
|
+
permissionRequestResult?: PermissionRequestResult
|
|
289
|
+
retry?: boolean
|
|
290
|
+
}
|
package/types/ids.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded types for session and agent IDs.
|
|
3
|
+
* These prevent accidentally mixing up session IDs and agent IDs at compile time.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A session ID uniquely identifies a Claude Code session.
|
|
8
|
+
* Returned by getSessionId().
|
|
9
|
+
*/
|
|
10
|
+
export type SessionId = string & { readonly __brand: 'SessionId' }
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* An agent ID uniquely identifies a subagent within a session.
|
|
14
|
+
* Returned by createAgentId().
|
|
15
|
+
* When present, indicates the context is a subagent (not the main session).
|
|
16
|
+
*/
|
|
17
|
+
export type AgentId = string & { readonly __brand: 'AgentId' }
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Cast a raw string to SessionId.
|
|
21
|
+
* Use sparingly - prefer getSessionId() when possible.
|
|
22
|
+
*/
|
|
23
|
+
export function asSessionId(id: string): SessionId {
|
|
24
|
+
return id as SessionId
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Cast a raw string to AgentId.
|
|
29
|
+
* Use sparingly - prefer createAgentId() when possible.
|
|
30
|
+
*/
|
|
31
|
+
export function asAgentId(id: string): AgentId {
|
|
32
|
+
return id as AgentId
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const AGENT_ID_PATTERN = /^a(?:.+-)?[0-9a-f]{16}$/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Validate and brand a string as AgentId.
|
|
39
|
+
* Matches the format produced by createAgentId(): `a` + optional `<label>-` + 16 hex chars.
|
|
40
|
+
* Returns null if the string doesn't match (e.g. teammate names, team-addressing).
|
|
41
|
+
*/
|
|
42
|
+
export function toAgentId(s: string): AgentId | null {
|
|
43
|
+
return AGENT_ID_PATTERN.test(s) ? (s as AgentId) : null
|
|
44
|
+
}
|
package/types/logs.ts
ADDED
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import type { UUID } from 'crypto'
|
|
2
|
+
import type { FileHistorySnapshot } from 'src/utils/fileHistory.js'
|
|
3
|
+
import type { ContentReplacementRecord } from 'src/utils/toolResultStorage.js'
|
|
4
|
+
import type { AgentId } from './ids.js'
|
|
5
|
+
import type { Message } from './message.js'
|
|
6
|
+
import type { QueueOperationMessage } from './messageQueueTypes.js'
|
|
7
|
+
|
|
8
|
+
export type SerializedMessage = Message & {
|
|
9
|
+
cwd: string
|
|
10
|
+
userType: string
|
|
11
|
+
entrypoint?: string // CLAUDE_CODE_ENTRYPOINT — distinguishes cli/sdk-ts/sdk-py/etc.
|
|
12
|
+
sessionId: string
|
|
13
|
+
timestamp: string
|
|
14
|
+
version: string
|
|
15
|
+
gitBranch?: string
|
|
16
|
+
slug?: string // Session slug for files like plans (used for resume)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type LogOption = {
|
|
20
|
+
date: string
|
|
21
|
+
messages: SerializedMessage[]
|
|
22
|
+
fullPath?: string
|
|
23
|
+
value: number
|
|
24
|
+
created: Date
|
|
25
|
+
modified: Date
|
|
26
|
+
firstPrompt: string
|
|
27
|
+
messageCount: number
|
|
28
|
+
fileSize?: number // File size in bytes (for display)
|
|
29
|
+
isSidechain: boolean
|
|
30
|
+
isLite?: boolean // True for lite logs (messages not loaded)
|
|
31
|
+
sessionId?: string // Session ID for lite logs
|
|
32
|
+
teamName?: string // Team name if this is a spawned agent session
|
|
33
|
+
agentName?: string // Agent's custom name (from /rename or swarm)
|
|
34
|
+
agentColor?: string // Agent's color (from /rename or swarm)
|
|
35
|
+
agentSetting?: string // Agent definition used (from --agent flag or settings.agent)
|
|
36
|
+
isTeammate?: boolean // Whether this session was created by a swarm teammate
|
|
37
|
+
leafUuid?: UUID // If given, this uuid must appear in the DB
|
|
38
|
+
summary?: string // Optional conversation summary
|
|
39
|
+
customTitle?: string // Optional user-set custom title
|
|
40
|
+
tag?: string // Optional tag for the session (searchable in /resume)
|
|
41
|
+
fileHistorySnapshots?: FileHistorySnapshot[] // Optional file history snapshots
|
|
42
|
+
attributionSnapshots?: AttributionSnapshotMessage[] // Optional attribution snapshots
|
|
43
|
+
contextCollapseCommits?: ContextCollapseCommitEntry[] // Ordered — commit B may reference commit A's summary
|
|
44
|
+
contextCollapseSnapshot?: ContextCollapseSnapshotEntry // Last-wins — staged queue + spawn state
|
|
45
|
+
gitBranch?: string // Git branch at the end of the session
|
|
46
|
+
projectPath?: string // Original project directory path
|
|
47
|
+
prNumber?: number // GitHub PR number linked to this session
|
|
48
|
+
prUrl?: string // Full URL to the linked PR
|
|
49
|
+
prRepository?: string // Repository in "owner/repo" format
|
|
50
|
+
mode?: 'coordinator' | 'normal' // Session mode for coordinator/normal detection
|
|
51
|
+
worktreeSession?: PersistedWorktreeSession | null // Worktree state at session end (null = exited, undefined = never entered)
|
|
52
|
+
contentReplacements?: ContentReplacementRecord[] // Replacement decisions for resume reconstruction
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export type SummaryMessage = {
|
|
56
|
+
type: 'summary'
|
|
57
|
+
leafUuid: UUID
|
|
58
|
+
summary: string
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export type CustomTitleMessage = {
|
|
62
|
+
type: 'custom-title'
|
|
63
|
+
sessionId: UUID
|
|
64
|
+
customTitle: string
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* AI-generated session title. Distinct from CustomTitleMessage so that:
|
|
69
|
+
* - User renames (custom-title) always win over AI titles in read preference
|
|
70
|
+
* - reAppendSessionMetadata never re-appends AI titles (they're ephemeral/
|
|
71
|
+
* regeneratable; re-appending would clobber user renames on resume)
|
|
72
|
+
* - VS Code's onlyIfNoCustomTitle CAS check only matches user titles,
|
|
73
|
+
* allowing AI to overwrite its own previous AI title but not user titles
|
|
74
|
+
*/
|
|
75
|
+
export type AiTitleMessage = {
|
|
76
|
+
type: 'ai-title'
|
|
77
|
+
sessionId: UUID
|
|
78
|
+
aiTitle: string
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export type LastPromptMessage = {
|
|
82
|
+
type: 'last-prompt'
|
|
83
|
+
sessionId: UUID
|
|
84
|
+
lastPrompt: string
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Periodic fork-generated summary of what the agent is currently doing.
|
|
89
|
+
* Written every min(5 steps, 2min) by forking the main thread mid-turn so
|
|
90
|
+
* `claude ps` can show something more useful than the last user prompt
|
|
91
|
+
* (which is often "ok go" or "fix it").
|
|
92
|
+
*/
|
|
93
|
+
export type TaskSummaryMessage = {
|
|
94
|
+
type: 'task-summary'
|
|
95
|
+
sessionId: UUID
|
|
96
|
+
summary: string
|
|
97
|
+
timestamp: string
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export type TagMessage = {
|
|
101
|
+
type: 'tag'
|
|
102
|
+
sessionId: UUID
|
|
103
|
+
tag: string
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export type AgentNameMessage = {
|
|
107
|
+
type: 'agent-name'
|
|
108
|
+
sessionId: UUID
|
|
109
|
+
agentName: string
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export type AgentColorMessage = {
|
|
113
|
+
type: 'agent-color'
|
|
114
|
+
sessionId: UUID
|
|
115
|
+
agentColor: string
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export type AgentSettingMessage = {
|
|
119
|
+
type: 'agent-setting'
|
|
120
|
+
sessionId: UUID
|
|
121
|
+
agentSetting: string
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* PR link message stored in session transcript.
|
|
126
|
+
* Links a session to a GitHub pull request for tracking and navigation.
|
|
127
|
+
*/
|
|
128
|
+
export type PRLinkMessage = {
|
|
129
|
+
type: 'pr-link'
|
|
130
|
+
sessionId: UUID
|
|
131
|
+
prNumber: number
|
|
132
|
+
prUrl: string
|
|
133
|
+
prRepository: string // e.g., "owner/repo"
|
|
134
|
+
timestamp: string // ISO timestamp when linked
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export type ModeEntry = {
|
|
138
|
+
type: 'mode'
|
|
139
|
+
sessionId: UUID
|
|
140
|
+
mode: 'coordinator' | 'normal'
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Worktree session state persisted to the transcript for resume.
|
|
145
|
+
* Subset of WorktreeSession from utils/worktree.ts — excludes ephemeral
|
|
146
|
+
* fields (creationDurationMs, usedSparsePaths) that are only used for
|
|
147
|
+
* first-run analytics.
|
|
148
|
+
*/
|
|
149
|
+
export type PersistedWorktreeSession = {
|
|
150
|
+
originalCwd: string
|
|
151
|
+
worktreePath: string
|
|
152
|
+
worktreeName: string
|
|
153
|
+
worktreeBranch?: string
|
|
154
|
+
originalBranch?: string
|
|
155
|
+
originalHeadCommit?: string
|
|
156
|
+
sessionId: string
|
|
157
|
+
tmuxSessionName?: string
|
|
158
|
+
hookBased?: boolean
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Records whether the session is currently inside a worktree created by
|
|
163
|
+
* EnterWorktree or --worktree. Last-wins: an enter writes the session,
|
|
164
|
+
* an exit writes null. On --resume, restored only if the worktreePath
|
|
165
|
+
* still exists on disk (the /exit dialog may have removed it).
|
|
166
|
+
*/
|
|
167
|
+
export type WorktreeStateEntry = {
|
|
168
|
+
type: 'worktree-state'
|
|
169
|
+
sessionId: UUID
|
|
170
|
+
worktreeSession: PersistedWorktreeSession | null
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Records content blocks whose in-context representation was replaced with a
|
|
175
|
+
* smaller stub (the full content was persisted elsewhere). Replayed on resume
|
|
176
|
+
* for prompt cache stability. Written once per enforcement pass that replaces
|
|
177
|
+
* at least one block. When agentId is set, the record belongs to a subagent
|
|
178
|
+
* sidechain (AgentTool resume reads these); when absent, it's main-thread
|
|
179
|
+
* (/resume reads these).
|
|
180
|
+
*/
|
|
181
|
+
export type ContentReplacementEntry = {
|
|
182
|
+
type: 'content-replacement'
|
|
183
|
+
sessionId: UUID
|
|
184
|
+
agentId?: AgentId
|
|
185
|
+
replacements: ContentReplacementRecord[]
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export type FileHistorySnapshotMessage = {
|
|
189
|
+
type: 'file-history-snapshot'
|
|
190
|
+
messageId: UUID
|
|
191
|
+
snapshot: FileHistorySnapshot
|
|
192
|
+
isSnapshotUpdate: boolean
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Per-file attribution state tracking Claude's character contributions.
|
|
197
|
+
*/
|
|
198
|
+
export type FileAttributionState = {
|
|
199
|
+
contentHash: string // SHA-256 hash of file content
|
|
200
|
+
claudeContribution: number // Characters written by Claude
|
|
201
|
+
mtime: number // File modification time
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Attribution snapshot message stored in session transcript.
|
|
206
|
+
* Tracks character-level contributions by Claude for commit attribution.
|
|
207
|
+
*/
|
|
208
|
+
export type AttributionSnapshotMessage = {
|
|
209
|
+
type: 'attribution-snapshot'
|
|
210
|
+
messageId: UUID
|
|
211
|
+
surface: string // Client surface (cli, ide, web, api)
|
|
212
|
+
fileStates: Record<string, FileAttributionState>
|
|
213
|
+
promptCount?: number // Total prompts in session
|
|
214
|
+
promptCountAtLastCommit?: number // Prompts at last commit
|
|
215
|
+
permissionPromptCount?: number // Total permission prompts shown
|
|
216
|
+
permissionPromptCountAtLastCommit?: number // Permission prompts at last commit
|
|
217
|
+
escapeCount?: number // Total ESC presses (cancelled permission prompts)
|
|
218
|
+
escapeCountAtLastCommit?: number // ESC presses at last commit
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export type TranscriptMessage = SerializedMessage & {
|
|
222
|
+
parentUuid: UUID | null
|
|
223
|
+
logicalParentUuid?: UUID | null // Preserves logical parent when parentUuid is nullified for session breaks
|
|
224
|
+
isSidechain: boolean
|
|
225
|
+
gitBranch?: string
|
|
226
|
+
agentId?: string // Agent ID for sidechain transcripts to enable resuming agents
|
|
227
|
+
teamName?: string // Team name if this is a spawned agent session
|
|
228
|
+
agentName?: string // Agent's custom name (from /rename or swarm)
|
|
229
|
+
agentColor?: string // Agent's color (from /rename or swarm)
|
|
230
|
+
promptId?: string // Correlates with OTel prompt.id for user prompt messages
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export type SpeculationAcceptMessage = {
|
|
234
|
+
type: 'speculation-accept'
|
|
235
|
+
timestamp: string
|
|
236
|
+
timeSavedMs: number
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Persisted context-collapse commit. The archived messages themselves are
|
|
241
|
+
* NOT persisted — they're already in the transcript as ordinary user/
|
|
242
|
+
* assistant messages. We only persist enough to reconstruct the splice
|
|
243
|
+
* instruction (boundary uuids) and the summary placeholder (which is NOT
|
|
244
|
+
* in the transcript because it's never yielded to the REPL).
|
|
245
|
+
*
|
|
246
|
+
* On restore, the store reconstructs CommittedCollapse with archived=[];
|
|
247
|
+
* projectView lazily fills the archive the first time it finds the span.
|
|
248
|
+
*
|
|
249
|
+
* Discriminator is obfuscated to match the gate name. sessionStorage.ts
|
|
250
|
+
* isn't feature-gated (it's the generic transcript plumbing used by every
|
|
251
|
+
* entry type), so a descriptive string here would leak into external builds
|
|
252
|
+
* via the appendEntry dispatch / loadTranscriptFile parser even though
|
|
253
|
+
* nothing in an external build ever writes or reads this entry.
|
|
254
|
+
*/
|
|
255
|
+
export type ContextCollapseCommitEntry = {
|
|
256
|
+
type: 'marble-origami-commit'
|
|
257
|
+
sessionId: UUID
|
|
258
|
+
/** 16-digit collapse ID. Max across entries reseeds the ID counter. */
|
|
259
|
+
collapseId: string
|
|
260
|
+
/** The summary placeholder's uuid — registerSummary() needs it. */
|
|
261
|
+
summaryUuid: string
|
|
262
|
+
/** Full <collapsed id="...">text</collapsed> string for the placeholder. */
|
|
263
|
+
summaryContent: string
|
|
264
|
+
/** Plain summary text for ctx_inspect. */
|
|
265
|
+
summary: string
|
|
266
|
+
/** Span boundaries — projectView finds these in the resumed Message[]. */
|
|
267
|
+
firstArchivedUuid: string
|
|
268
|
+
lastArchivedUuid: string
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Snapshot of the staged queue and spawn trigger state. Unlike commits
|
|
273
|
+
* (append-only, replay-all), snapshots are last-wins — only the most
|
|
274
|
+
* recent snapshot entry is applied on restore. Written after every
|
|
275
|
+
* ctx-agent spawn resolves (when staged contents may have changed).
|
|
276
|
+
*
|
|
277
|
+
* Staged boundaries are UUIDs (session-stable), not collapse IDs (which
|
|
278
|
+
* reset with the uuidToId bimap). Restoring a staged span issues fresh
|
|
279
|
+
* collapse IDs for those messages on the next decorate/display, but the
|
|
280
|
+
* span itself resolves correctly.
|
|
281
|
+
*/
|
|
282
|
+
export type ContextCollapseSnapshotEntry = {
|
|
283
|
+
type: 'marble-origami-snapshot'
|
|
284
|
+
sessionId: UUID
|
|
285
|
+
staged: Array<{
|
|
286
|
+
startUuid: string
|
|
287
|
+
endUuid: string
|
|
288
|
+
summary: string
|
|
289
|
+
risk: number
|
|
290
|
+
stagedAt: number
|
|
291
|
+
}>
|
|
292
|
+
/** Spawn trigger state — so the +interval clock picks up where it left off. */
|
|
293
|
+
armed: boolean
|
|
294
|
+
lastSpawnTokens: number
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export type Entry =
|
|
298
|
+
| TranscriptMessage
|
|
299
|
+
| SummaryMessage
|
|
300
|
+
| CustomTitleMessage
|
|
301
|
+
| AiTitleMessage
|
|
302
|
+
| LastPromptMessage
|
|
303
|
+
| TaskSummaryMessage
|
|
304
|
+
| TagMessage
|
|
305
|
+
| AgentNameMessage
|
|
306
|
+
| AgentColorMessage
|
|
307
|
+
| AgentSettingMessage
|
|
308
|
+
| PRLinkMessage
|
|
309
|
+
| FileHistorySnapshotMessage
|
|
310
|
+
| AttributionSnapshotMessage
|
|
311
|
+
| QueueOperationMessage
|
|
312
|
+
| SpeculationAcceptMessage
|
|
313
|
+
| ModeEntry
|
|
314
|
+
| WorktreeStateEntry
|
|
315
|
+
| ContentReplacementEntry
|
|
316
|
+
| ContextCollapseCommitEntry
|
|
317
|
+
| ContextCollapseSnapshotEntry
|
|
318
|
+
|
|
319
|
+
export function sortLogs(logs: LogOption[]): LogOption[] {
|
|
320
|
+
return logs.sort((a, b) => {
|
|
321
|
+
// Sort by modified date (newest first)
|
|
322
|
+
const modifiedDiff = b.modified.getTime() - a.modified.getTime()
|
|
323
|
+
if (modifiedDiff !== 0) {
|
|
324
|
+
return modifiedDiff
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// If modified dates are equal, sort by created date (newest first)
|
|
328
|
+
return b.created.getTime() - a.created.getTime()
|
|
329
|
+
})
|
|
330
|
+
}
|