@blackbox_ai/blackbox-cli 0.0.7 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -183
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json +13 -3
- package/dist/src/built-in-extensions/conductor/README.md +242 -0
- package/dist/src/built-in-extensions/conductor/blackbox-extension.json +5 -0
- package/dist/src/built-in-extensions/conductor/commands/conductor/implement.toml +170 -0
- package/dist/src/built-in-extensions/conductor/commands/conductor/newTrack.toml +142 -0
- package/dist/src/built-in-extensions/conductor/commands/conductor/revert.toml +122 -0
- package/dist/src/built-in-extensions/conductor/commands/conductor/setup.toml +424 -0
- package/dist/src/built-in-extensions/conductor/commands/conductor/status.toml +57 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/general.md +23 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/go.md +48 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/html-css.md +49 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/javascript.md +51 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/python.md +37 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/typescript.md +43 -0
- package/dist/src/built-in-extensions/conductor/templates/workflow.md +333 -0
- package/dist/src/built-in-extensions-data.d.ts +15 -0
- package/dist/src/built-in-extensions-data.js +61 -0
- package/dist/src/built-in-extensions-data.js.map +1 -0
- package/dist/src/commands/configure/ConfigureUI.d.ts +14 -0
- package/dist/src/commands/configure/ConfigureUI.js +556 -0
- package/dist/src/commands/configure/ConfigureUI.js.map +1 -0
- package/dist/src/commands/configure/index.d.ts +7 -0
- package/dist/src/commands/configure/index.js +62 -0
- package/dist/src/commands/configure/index.js.map +1 -0
- package/dist/src/commands/configure.d.ts +7 -0
- package/dist/src/commands/configure.js +276 -0
- package/dist/src/commands/configure.js.map +1 -0
- package/dist/src/commands/configure.test.d.ts +6 -0
- package/dist/src/commands/configure.test.js +32 -0
- package/dist/src/commands/configure.test.js.map +1 -0
- package/dist/src/commands/extensions/enable.js +1 -1
- package/dist/src/commands/extensions/enable.js.map +1 -1
- package/dist/src/commands/extensions/examples/context/CONTEXT.md +16 -0
- package/dist/src/commands/extensions/examples/context/blackbox-extension.json +5 -0
- package/dist/src/commands/extensions/examples/custom-commands/blackbox-extension.json +4 -0
- package/dist/src/commands/extensions/examples/custom-commands/commands/deploy.toml +12 -0
- package/dist/src/commands/extensions/examples/exclude-tools/README.md +28 -0
- package/dist/src/commands/extensions/examples/exclude-tools/blackbox-extension.json +5 -0
- package/dist/src/commands/extensions/install.d.ts +6 -2
- package/dist/src/commands/extensions/install.js +109 -15
- package/dist/src/commands/extensions/install.js.map +1 -1
- package/dist/src/commands/extensions/link.d.ts +12 -0
- package/dist/src/commands/extensions/link.js +53 -0
- package/dist/src/commands/extensions/link.js.map +1 -0
- package/dist/src/commands/extensions/list.js +2 -2
- package/dist/src/commands/extensions/list.js.map +1 -1
- package/dist/src/commands/extensions/new.d.ts +13 -0
- package/dist/src/commands/extensions/new.js +145 -0
- package/dist/src/commands/extensions/new.js.map +1 -0
- package/dist/src/commands/extensions/settings.d.ts +18 -0
- package/dist/src/commands/extensions/settings.js +98 -0
- package/dist/src/commands/extensions/settings.js.map +1 -0
- package/dist/src/commands/extensions/update.d.ts +2 -1
- package/dist/src/commands/extensions/update.js +59 -10
- package/dist/src/commands/extensions/update.js.map +1 -1
- package/dist/src/commands/extensions/validate.d.ts +12 -0
- package/dist/src/commands/extensions/validate.js +72 -0
- package/dist/src/commands/extensions/validate.js.map +1 -0
- package/dist/src/commands/extensions.js +10 -1
- package/dist/src/commands/extensions.js.map +1 -1
- package/dist/src/commands/mcp/add.d.ts +11 -0
- package/dist/src/commands/mcp/add.js +61 -7
- package/dist/src/commands/mcp/add.js.map +1 -1
- package/dist/src/commands/update.d.ts +7 -0
- package/dist/src/commands/update.js +103 -0
- package/dist/src/commands/update.js.map +1 -0
- package/dist/src/commands/voice.d.ts +7 -0
- package/dist/src/commands/voice.js +510 -0
- package/dist/src/commands/voice.js.map +1 -0
- package/dist/src/config/auth.d.ts +32 -1
- package/dist/src/config/auth.js +317 -2
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/config.d.ts +7 -1
- package/dist/src/config/config.js +71 -10
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +6 -1
- package/dist/src/config/extension.js +137 -11
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/extensions/github.d.ts +48 -0
- package/dist/src/config/extensions/github.js +308 -0
- package/dist/src/config/extensions/github.js.map +1 -0
- package/dist/src/config/keyBindings.d.ts +1 -0
- package/dist/src/config/keyBindings.js +3 -0
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/modelFetcher.d.ts +21 -0
- package/dist/src/config/modelFetcher.js +226 -0
- package/dist/src/config/modelFetcher.js.map +1 -0
- package/dist/src/config/settings.js +101 -0
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +626 -0
- package/dist/src/config/settingsSchema.js +626 -0
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/voice.d.ts +31 -0
- package/dist/src/config/voice.js +82 -0
- package/dist/src/config/voice.js.map +1 -0
- package/dist/src/encrypt/attestation.d.ts +5 -0
- package/dist/src/encrypt/attestation.js +100 -0
- package/dist/src/encrypt/attestation.js.map +1 -0
- package/dist/src/encrypt/bridge.d.ts +30 -0
- package/dist/src/encrypt/bridge.js +32 -0
- package/dist/src/encrypt/bridge.js.map +1 -0
- package/dist/src/encrypt/client.d.ts +14 -0
- package/dist/src/encrypt/client.js +133 -0
- package/dist/src/encrypt/client.js.map +1 -0
- package/dist/src/encrypt/config.d.ts +26 -0
- package/dist/src/encrypt/config.js +51 -0
- package/dist/src/encrypt/config.js.map +1 -0
- package/dist/src/encrypt/crypto-utils.d.ts +57 -0
- package/dist/src/encrypt/crypto-utils.js +257 -0
- package/dist/src/encrypt/crypto-utils.js.map +1 -0
- package/dist/src/encrypt/index.d.ts +12 -0
- package/dist/src/encrypt/index.js +13 -0
- package/dist/src/encrypt/index.js.map +1 -0
- package/dist/src/encrypt/retry-utils.d.ts +20 -0
- package/dist/src/encrypt/retry-utils.js +60 -0
- package/dist/src/encrypt/retry-utils.js.map +1 -0
- package/dist/src/encrypt/sessions.d.ts +17 -0
- package/dist/src/encrypt/sessions.js +221 -0
- package/dist/src/encrypt/sessions.js.map +1 -0
- package/dist/src/encrypt/streaming-client.d.ts +29 -0
- package/dist/src/encrypt/streaming-client.js +226 -0
- package/dist/src/encrypt/streaming-client.js.map +1 -0
- package/dist/src/encrypt/types.d.ts +81 -0
- package/dist/src/encrypt/types.js +2 -0
- package/dist/src/encrypt/types.js.map +1 -0
- package/dist/src/gemini.d.ts +1 -1
- package/dist/src/gemini.js +61 -28
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +3 -3
- package/dist/src/generated/git-commit.js +3 -3
- package/dist/src/nonInteractiveCli.d.ts +4 -0
- package/dist/src/nonInteractiveCli.js +563 -6
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/on-demand-extensions/README.md +266 -0
- package/dist/src/on-demand-extensions/git-helper/README.md +16 -0
- package/dist/src/on-demand-extensions/git-helper/blackbox-extension.json +5 -0
- package/dist/src/on-demand-extensions/git-helper/commands/git/branch-cleanup.toml +18 -0
- package/dist/src/on-demand-extensions/git-helper/commands/git/smart-commit.toml +22 -0
- package/dist/src/on-demand-extensions/greet/README.md +76 -0
- package/dist/src/on-demand-extensions/greet/blackbox-extension.json +5 -0
- package/dist/src/on-demand-extensions/greet/commands/greet/hello.toml +9 -0
- package/dist/src/on-demand-extensions/registry.json +251 -0
- package/dist/src/services/BuiltinCommandLoader.js +20 -2
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/EncryptedContentGenerator.d.ts +63 -0
- package/dist/src/services/EncryptedContentGenerator.js +426 -0
- package/dist/src/services/EncryptedContentGenerator.js.map +1 -0
- package/dist/src/services/McpCommandLoader.d.ts +24 -0
- package/dist/src/services/McpCommandLoader.js +50 -0
- package/dist/src/services/McpCommandLoader.js.map +1 -0
- package/dist/src/services/McpPromptLoader.js +17 -2
- package/dist/src/services/McpPromptLoader.js.map +1 -1
- package/dist/src/services/ReleaseNotesCache.d.ts +57 -0
- package/dist/src/services/ReleaseNotesCache.js +186 -0
- package/dist/src/services/ReleaseNotesCache.js.map +1 -0
- package/dist/src/services/elevenLabsErrors.d.ts +65 -0
- package/dist/src/services/elevenLabsErrors.js +233 -0
- package/dist/src/services/elevenLabsErrors.js.map +1 -0
- package/dist/src/services/elevenLabsService.d.ts +62 -0
- package/dist/src/services/elevenLabsService.js +186 -0
- package/dist/src/services/elevenLabsService.js.map +1 -0
- package/dist/src/services/elevenLabsStreamingService.d.ts +59 -0
- package/dist/src/services/elevenLabsStreamingService.js +202 -0
- package/dist/src/services/elevenLabsStreamingService.js.map +1 -0
- package/dist/src/services/elevenLabsTokenService.d.ts +21 -0
- package/dist/src/services/elevenLabsTokenService.js +42 -0
- package/dist/src/services/elevenLabsTokenService.js.map +1 -0
- package/dist/src/services/voiceInputHandler.d.ts +26 -0
- package/dist/src/services/voiceInputHandler.js +209 -0
- package/dist/src/services/voiceInputHandler.js.map +1 -0
- package/dist/src/services/voiceRecordingService.d.ts +69 -0
- package/dist/src/services/voiceRecordingService.js +397 -0
- package/dist/src/services/voiceRecordingService.js.map +1 -0
- package/dist/src/ui/App.d.ts +1 -0
- package/dist/src/ui/App.js +412 -63
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/commands/browseExtensionsCommand.d.ts +7 -0
- package/dist/src/ui/commands/browseExtensionsCommand.js +16 -0
- package/dist/src/ui/commands/browseExtensionsCommand.js.map +1 -0
- package/dist/src/ui/commands/chatCommand.js +356 -16
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/dbCommand.d.ts +7 -0
- package/dist/src/ui/commands/dbCommand.js +37 -0
- package/dist/src/ui/commands/dbCommand.js.map +1 -0
- package/dist/src/ui/commands/docsCommand.js +1 -1
- package/dist/src/ui/commands/docsCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +3 -2
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpInvokeCommand.d.ts +16 -0
- package/dist/src/ui/commands/mcpInvokeCommand.js +263 -0
- package/dist/src/ui/commands/mcpInvokeCommand.js.map +1 -0
- package/dist/src/ui/commands/modelCommand.js +79 -5
- package/dist/src/ui/commands/modelCommand.js.map +1 -1
- package/dist/src/ui/commands/multiAgentCommand.d.ts +7 -0
- package/dist/src/ui/commands/multiAgentCommand.js +833 -0
- package/dist/src/ui/commands/multiAgentCommand.js.map +1 -0
- package/dist/src/ui/commands/multiAgentConfigureCommand.d.ts +7 -0
- package/dist/src/ui/commands/multiAgentConfigureCommand.js +17 -0
- package/dist/src/ui/commands/multiAgentConfigureCommand.js.map +1 -0
- package/dist/src/ui/commands/quitCommand.js +71 -2
- package/dist/src/ui/commands/quitCommand.js.map +1 -1
- package/dist/src/ui/commands/releasesCommand.d.ts +7 -0
- package/dist/src/ui/commands/releasesCommand.js +16 -0
- package/dist/src/ui/commands/releasesCommand.js.map +1 -0
- package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
- package/dist/src/ui/commands/shellPermissionsCommand.d.ts +7 -0
- package/dist/src/ui/commands/shellPermissionsCommand.js +109 -0
- package/dist/src/ui/commands/shellPermissionsCommand.js.map +1 -0
- package/dist/src/ui/commands/skillCommand.d.ts +7 -0
- package/dist/src/ui/commands/skillCommand.js +240 -0
- package/dist/src/ui/commands/skillCommand.js.map +1 -0
- package/dist/src/ui/commands/statsCommand.js +243 -1
- package/dist/src/ui/commands/statsCommand.js.map +1 -1
- package/dist/src/ui/commands/tasksCommand.d.ts +7 -0
- package/dist/src/ui/commands/tasksCommand.js +535 -0
- package/dist/src/ui/commands/tasksCommand.js.map +1 -0
- package/dist/src/ui/commands/toolPermissionsCommand.d.ts +7 -0
- package/dist/src/ui/commands/toolPermissionsCommand.js +408 -0
- package/dist/src/ui/commands/toolPermissionsCommand.js.map +1 -0
- package/dist/src/ui/commands/types.d.ts +10 -2
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/commands/voiceCommand.d.ts +7 -0
- package/dist/src/ui/commands/voiceCommand.js +525 -0
- package/dist/src/ui/commands/voiceCommand.js.map +1 -0
- package/dist/src/ui/components/AuthDialog.d.ts +4 -2
- package/dist/src/ui/components/AuthDialog.js +349 -64
- package/dist/src/ui/components/AuthDialog.js.map +1 -1
- package/dist/src/ui/components/AuthInProgress.js +3 -1
- package/dist/src/ui/components/AuthInProgress.js.map +1 -1
- package/dist/src/ui/components/ExtensionsDialog.d.ts +11 -0
- package/dist/src/ui/components/ExtensionsDialog.js +303 -0
- package/dist/src/ui/components/ExtensionsDialog.js.map +1 -0
- package/dist/src/ui/components/GenericProviderKeyPrompt.d.ts +24 -0
- package/dist/src/ui/components/GenericProviderKeyPrompt.js +99 -0
- package/dist/src/ui/components/GenericProviderKeyPrompt.js.map +1 -0
- package/dist/src/ui/components/Header.js +10 -1
- package/dist/src/ui/components/Header.js.map +1 -1
- package/dist/src/ui/components/HistoryBrowserDialog.d.ts +15 -0
- package/dist/src/ui/components/HistoryBrowserDialog.js +166 -0
- package/dist/src/ui/components/HistoryBrowserDialog.js.map +1 -0
- package/dist/src/ui/components/HistoryItemDisplay.js +13 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +22 -8
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.d.ts +4 -0
- package/dist/src/ui/components/LoadingIndicator.js +16 -4
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.test.js +108 -16
- package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/components/ModelSelectionDialog.d.ts +2 -0
- package/dist/src/ui/components/ModelSelectionDialog.js +33 -4
- package/dist/src/ui/components/ModelSelectionDialog.js.map +1 -1
- package/dist/src/ui/components/ModelSelectionDialog.test.js +41 -4
- package/dist/src/ui/components/ModelSelectionDialog.test.js.map +1 -1
- package/dist/src/ui/components/ReleaseNotesDialog.d.ts +23 -0
- package/dist/src/ui/components/ReleaseNotesDialog.js +150 -0
- package/dist/src/ui/components/ReleaseNotesDialog.js.map +1 -0
- package/dist/src/ui/components/ReleaseNotesDisplay.d.ts +18 -0
- package/dist/src/ui/components/ReleaseNotesDisplay.js +14 -0
- package/dist/src/ui/components/ReleaseNotesDisplay.js.map +1 -0
- package/dist/src/ui/components/SessionSummaryDisplay.d.ts +2 -0
- package/dist/src/ui/components/SessionSummaryDisplay.js +1 -1
- package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +3 -1
- package/dist/src/ui/components/SettingsDialog.js +17 -7
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/ShellConfirmationDialog.d.ts +2 -0
- package/dist/src/ui/components/ShellConfirmationDialog.js +7 -3
- package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.d.ts +2 -0
- package/dist/src/ui/components/StatsDisplay.js +92 -7
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.js +6 -1
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.d.ts +3 -1
- package/dist/src/ui/components/ThemeDialog.js +5 -2
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/Tips.js +1 -4
- package/dist/src/ui/components/Tips.js.map +1 -1
- package/dist/src/ui/components/TodoListDialog.d.ts +13 -0
- package/dist/src/ui/components/TodoListDialog.js +29 -0
- package/dist/src/ui/components/TodoListDialog.js.map +1 -0
- package/dist/src/ui/components/TodoListDialog.test.d.ts +6 -0
- package/dist/src/ui/components/TodoListDialog.test.js +60 -0
- package/dist/src/ui/components/TodoListDialog.test.js.map +1 -0
- package/dist/src/ui/components/VoiceConfigDialog.d.ts +17 -0
- package/dist/src/ui/components/VoiceConfigDialog.js +47 -0
- package/dist/src/ui/components/VoiceConfigDialog.js.map +1 -0
- package/dist/src/ui/components/messages/GeminiMessage.js +4 -0
- package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
- package/dist/src/ui/components/messages/GeminiMessageContent.js +4 -0
- package/dist/src/ui/components/messages/GeminiMessageContent.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +2 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +96 -9
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js +3 -3
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.js +1 -1
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js +9 -12
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
- package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.d.ts +25 -0
- package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.js +179 -0
- package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.js.map +1 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +3 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.js +57 -18
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/TextInput.d.ts +2 -1
- package/dist/src/ui/components/shared/TextInput.js +5 -2
- package/dist/src/ui/components/shared/TextInput.js.map +1 -1
- package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js +3 -3
- package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js.map +1 -1
- package/dist/src/ui/constants.d.ts +3 -3
- package/dist/src/ui/constants.js +3 -3
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/contexts/SessionContext.d.ts +6 -0
- package/dist/src/ui/contexts/SessionContext.js +24 -2
- package/dist/src/ui/contexts/SessionContext.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.js +139 -57
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +189 -17
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAdaptiveStream.d.ts +42 -0
- package/dist/src/ui/hooks/useAdaptiveStream.js +31 -0
- package/dist/src/ui/hooks/useAdaptiveStream.js.map +1 -0
- package/dist/src/ui/hooks/useAtCompletion.js +20 -4
- package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useAuthCommand.d.ts +2 -2
- package/dist/src/ui/hooks/useAuthCommand.js +99 -5
- package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
- package/dist/src/ui/hooks/useCommandCompletion.js +14 -10
- package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useDialogClose.d.ts +10 -0
- package/dist/src/ui/hooks/useDialogClose.js +25 -0
- package/dist/src/ui/hooks/useDialogClose.js.map +1 -1
- package/dist/src/ui/hooks/useDialogCloseAnimation.d.ts +22 -0
- package/dist/src/ui/hooks/useDialogCloseAnimation.js +68 -0
- package/dist/src/ui/hooks/useDialogCloseAnimation.js.map +1 -0
- package/dist/src/ui/hooks/useEncryptedStream.d.ts +22 -0
- package/dist/src/ui/hooks/useEncryptedStream.js +378 -0
- package/dist/src/ui/hooks/useEncryptedStream.js.map +1 -0
- package/dist/src/ui/hooks/useExtensionsDialog.d.ts +10 -0
- package/dist/src/ui/hooks/useExtensionsDialog.js +21 -0
- package/dist/src/ui/hooks/useExtensionsDialog.js.map +1 -0
- package/dist/src/ui/hooks/useGeminiStream.js +6 -2
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.js +3 -2
- package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.test.js +27 -5
- package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/useMultiAgentConfigCommand.d.ts +10 -0
- package/dist/src/ui/hooks/useMultiAgentConfigCommand.js +21 -0
- package/dist/src/ui/hooks/useMultiAgentConfigCommand.js.map +1 -0
- package/dist/src/ui/hooks/useReleasesDialog.d.ts +20 -0
- package/dist/src/ui/hooks/useReleasesDialog.js +214 -0
- package/dist/src/ui/hooks/useReleasesDialog.js.map +1 -0
- package/dist/src/ui/hooks/useSlashCompletion.js +10 -8
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useTodoList.d.ts +17 -0
- package/dist/src/ui/hooks/useTodoList.js +51 -0
- package/dist/src/ui/hooks/useTodoList.js.map +1 -0
- package/dist/src/ui/keyMatchers.test.js +6 -0
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/themes/blackbox-dark.js +1 -1
- package/dist/src/ui/themes/blackbox-dark.js.map +1 -1
- package/dist/src/ui/themes/blackbox-light.js +1 -1
- package/dist/src/ui/themes/blackbox-light.js.map +1 -1
- package/dist/src/ui/types.d.ts +15 -2
- package/dist/src/ui/types.js +1 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/computeStats.d.ts +25 -1
- package/dist/src/ui/utils/computeStats.js +58 -1
- package/dist/src/ui/utils/computeStats.js.map +1 -1
- package/dist/src/ui/utils/updateCheck.js +37 -54
- package/dist/src/ui/utils/updateCheck.js.map +1 -1
- package/dist/src/utils/backgroundUpdateCheck.d.ts +15 -0
- package/dist/src/utils/backgroundUpdateCheck.js +48 -0
- package/dist/src/utils/backgroundUpdateCheck.js.map +1 -0
- package/dist/src/utils/gitAutoDetect.d.ts +16 -0
- package/dist/src/utils/gitAutoDetect.js +45 -0
- package/dist/src/utils/gitAutoDetect.js.map +1 -0
- package/dist/src/utils/installationInfo.d.ts +1 -0
- package/dist/src/utils/installationInfo.js +24 -4
- package/dist/src/utils/installationInfo.js.map +1 -1
- package/dist/src/utils/preLaunchUpdateCheck.d.ts +17 -0
- package/dist/src/utils/preLaunchUpdateCheck.js +75 -0
- package/dist/src/utils/preLaunchUpdateCheck.js.map +1 -0
- package/dist/src/utils/version.js +12 -1
- package/dist/src/utils/version.js.map +1 -1
- package/dist/src/utils/versionStorage.d.ts +50 -0
- package/dist/src/utils/versionStorage.js +224 -0
- package/dist/src/utils/versionStorage.js.map +1 -0
- package/dist/src/validateNonInterActiveAuth.js +10 -3
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/src/virtual-extensions.d.ts +14 -0
- package/dist/src/virtual-extensions.js +56 -0
- package/dist/src/virtual-extensions.js.map +1 -0
- package/dist/src/zed-integration/fileSystemService.d.ts +3 -3
- package/dist/src/zed-integration/fileSystemService.js +5 -7
- package/dist/src/zed-integration/fileSystemService.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.js +62 -17
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -3
- package/dist/src/utils/handleAutoUpdate.d.ts +0 -11
- package/dist/src/utils/handleAutoUpdate.js +0 -102
- package/dist/src/utils/handleAutoUpdate.js.map +0 -1
- package/dist/src/utils/updateEventEmitter.d.ts +0 -11
- package/dist/src/utils/updateEventEmitter.js +0 -12
- package/dist/src/utils/updateEventEmitter.js.map +0 -1
- package/dist/src/zed-integration/acp.d.ts +0 -63
- package/dist/src/zed-integration/acp.js +0 -226
- package/dist/src/zed-integration/acp.js.map +0 -1
- package/dist/src/zed-integration/schema.d.ts +0 -11782
- package/dist/src/zed-integration/schema.js +0 -311
- package/dist/src/zed-integration/schema.js.map +0 -1
|
@@ -3,28 +3,109 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { useState, useCallback, useEffect } from 'react';
|
|
6
|
+
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
7
7
|
import { AuthType } from '@blackbox_ai/blackbox-cli-core';
|
|
8
|
-
import { clearCachedCredentialFile
|
|
8
|
+
import { clearCachedCredentialFile } from '@blackbox_ai/blackbox-cli-core';
|
|
9
9
|
import { runExitCleanup } from '../../utils/cleanup.js';
|
|
10
|
-
export const useAuthCommand = (settings, setAuthError, config) => {
|
|
10
|
+
export const useAuthCommand = (settings, setAuthError, config, reloadCommands) => {
|
|
11
11
|
const [isAuthDialogOpen, setIsAuthDialogOpen] = useState(settings.merged.security?.auth?.selectedType === undefined);
|
|
12
12
|
const openAuthDialog = useCallback(() => {
|
|
13
13
|
setIsAuthDialogOpen(true);
|
|
14
|
+
// Reset the ref when opening auth dialog to allow re-authentication
|
|
15
|
+
hasRefreshedAuthRef.current = null;
|
|
14
16
|
}, []);
|
|
15
17
|
const [isAuthenticating, setIsAuthenticating] = useState(false);
|
|
18
|
+
const hasRefreshedAuthRef = useRef(null);
|
|
16
19
|
useEffect(() => {
|
|
17
20
|
const authFlow = async () => {
|
|
18
21
|
const authType = settings.merged.security?.auth?.selectedType;
|
|
22
|
+
const providerName = settings.merged.security?.auth?.selectedProvider;
|
|
19
23
|
if (isAuthDialogOpen || !authType) {
|
|
20
24
|
return;
|
|
21
25
|
}
|
|
26
|
+
// Run blocking auth for BLACKBOX_OAUTH and USE_BLACKBOX_API
|
|
27
|
+
// USE_BLACKBOX_API needs refreshAuth after API key is set to ensure correct model
|
|
28
|
+
const needsBlockingAuth = authType === AuthType.BLACKBOX_OAUTH ||
|
|
29
|
+
authType === AuthType.USE_BLACKBOX_API;
|
|
30
|
+
if (!needsBlockingAuth) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Check if we've already refreshed auth for this auth type
|
|
34
|
+
// This prevents infinite loops when settings change
|
|
35
|
+
const authKey = `${authType}-${providerName || ''}`;
|
|
36
|
+
if (hasRefreshedAuthRef.current === authKey) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// For USE_BLACKBOX_API, check if API key is available before refreshing
|
|
40
|
+
if (authType === AuthType.USE_BLACKBOX_API) {
|
|
41
|
+
const blackboxApiKey = process.env['BLACKBOX_API_KEY'];
|
|
42
|
+
const blackboxEncryptionBaseUrl = process.env['BLACKBOX_ENCRYPTION_BASE_URL'];
|
|
43
|
+
// Skip if no API key and not using encrypted provider
|
|
44
|
+
if (!blackboxApiKey && !blackboxEncryptionBaseUrl) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Check if client is already initialized with the correct auth type
|
|
48
|
+
// This prevents unnecessary refreshAuth calls
|
|
49
|
+
const currentAuthType = config.getAuthType();
|
|
50
|
+
if (currentAuthType === authType && config.getGeminiClient()?.isInitialized()) {
|
|
51
|
+
hasRefreshedAuthRef.current = authKey;
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
22
55
|
try {
|
|
23
56
|
setIsAuthenticating(true);
|
|
24
57
|
await config.refreshAuth(authType);
|
|
58
|
+
hasRefreshedAuthRef.current = authKey;
|
|
25
59
|
console.log(`Authenticated via "${authType}".`);
|
|
60
|
+
// After successful authentication, set up remote-code MCP server if blackbox provider
|
|
61
|
+
// This is optional and failures are non-critical (OAuth may be required)
|
|
62
|
+
if (providerName === 'blackbox') {
|
|
63
|
+
const blackboxApiKey = process.env['BLACKBOX_API_KEY'];
|
|
64
|
+
if (blackboxApiKey) {
|
|
65
|
+
// Set up remote-code MCP server in background (non-blocking)
|
|
66
|
+
// Failures are expected if OAuth is required, so we catch and ignore them
|
|
67
|
+
void (async () => {
|
|
68
|
+
try {
|
|
69
|
+
// Check if remote-code server already exists
|
|
70
|
+
const mcpServers = config.getMcpServers() || {};
|
|
71
|
+
if (!mcpServers['remote-code']) {
|
|
72
|
+
const { addMcpServer } = await import('../../commands/mcp/add.js');
|
|
73
|
+
const { loadSettings } = await import('../../config/settings.js');
|
|
74
|
+
await addMcpServer('remote-code', '__preset__', undefined, {
|
|
75
|
+
scope: 'project',
|
|
76
|
+
transport: 'http',
|
|
77
|
+
env: undefined,
|
|
78
|
+
header: undefined,
|
|
79
|
+
timeout: undefined,
|
|
80
|
+
trust: undefined,
|
|
81
|
+
description: undefined,
|
|
82
|
+
includeTools: undefined,
|
|
83
|
+
excludeTools: undefined,
|
|
84
|
+
});
|
|
85
|
+
// Reload settings to get the updated MCP servers configuration
|
|
86
|
+
const updatedSettings = loadSettings(config.getTargetDir());
|
|
87
|
+
const updatedMcpServers = updatedSettings.merged.mcpServers;
|
|
88
|
+
// Update Config's mcpServers property directly
|
|
89
|
+
if (updatedMcpServers) {
|
|
90
|
+
config.mcpServers = updatedMcpServers;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Skip tool discovery for remote-code server since it requires OAuth
|
|
94
|
+
// The server is configured, but tools won't be discovered until user authenticates
|
|
95
|
+
// Users can manually authenticate with /mcp auth remote-code and then tools will be available
|
|
96
|
+
// This prevents OAuth error messages from appearing during initial setup
|
|
97
|
+
}
|
|
98
|
+
catch (_error) {
|
|
99
|
+
// Silently ignore MCP server setup errors - they're non-critical
|
|
100
|
+
// OAuth authentication can be done manually if needed
|
|
101
|
+
console.debug('Remote Code MCP server setup skipped (OAuth may be required). Use /mcp auth remote-code to authenticate.');
|
|
102
|
+
}
|
|
103
|
+
})();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
26
106
|
}
|
|
27
107
|
catch (e) {
|
|
108
|
+
const { getErrorMessage } = await import('@blackbox_ai/blackbox-cli-core');
|
|
28
109
|
setAuthError(`Failed to login. Message: ${getErrorMessage(e)}`);
|
|
29
110
|
openAuthDialog();
|
|
30
111
|
}
|
|
@@ -33,11 +114,15 @@ export const useAuthCommand = (settings, setAuthError, config) => {
|
|
|
33
114
|
}
|
|
34
115
|
};
|
|
35
116
|
void authFlow();
|
|
36
|
-
}, [isAuthDialogOpen, settings, config, setAuthError, openAuthDialog]);
|
|
37
|
-
const handleAuthSelect = useCallback(async (authType, scope) => {
|
|
117
|
+
}, [isAuthDialogOpen, settings, config, setAuthError, openAuthDialog, reloadCommands]);
|
|
118
|
+
const handleAuthSelect = useCallback(async (authType, scope, providerName) => {
|
|
38
119
|
if (authType) {
|
|
39
120
|
await clearCachedCredentialFile();
|
|
40
121
|
settings.setValue(scope, 'security.auth.selectedType', authType);
|
|
122
|
+
// Save provider name if provided
|
|
123
|
+
if (providerName) {
|
|
124
|
+
settings.setValue(scope, 'security.auth.selectedProvider', providerName);
|
|
125
|
+
}
|
|
41
126
|
if (authType === AuthType.LOGIN_WITH_GOOGLE &&
|
|
42
127
|
config.isBrowserLaunchSuppressed()) {
|
|
43
128
|
runExitCleanup();
|
|
@@ -48,6 +133,15 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
48
133
|
`);
|
|
49
134
|
process.exit(0);
|
|
50
135
|
}
|
|
136
|
+
// Initialize the geminiClient for all auth types
|
|
137
|
+
// This is critical for first-time setup when the client doesn't exist yet
|
|
138
|
+
try {
|
|
139
|
+
await config.refreshAuth(authType);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
console.error('Failed to initialize auth:', error);
|
|
143
|
+
setAuthError(`Failed to initialize authentication: ${error}`);
|
|
144
|
+
}
|
|
51
145
|
}
|
|
52
146
|
setIsAuthDialogOpen(false);
|
|
53
147
|
setAuthError(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthCommand.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useAuthCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useAuthCommand.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useAuthCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,14 +24,7 @@ export function useCommandCompletion(buffer, dirs, cwd, slashCommands, commandCo
|
|
|
24
24
|
const cursorCol = buffer.cursor[1];
|
|
25
25
|
const { completionMode, query, completionStart, completionEnd } = useMemo(() => {
|
|
26
26
|
const currentLine = buffer.lines[cursorRow] || '';
|
|
27
|
-
|
|
28
|
-
return {
|
|
29
|
-
completionMode: CompletionMode.SLASH,
|
|
30
|
-
query: currentLine,
|
|
31
|
-
completionStart: 0,
|
|
32
|
-
completionEnd: currentLine.length,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
27
|
+
// Check for @ completion first (works in both regular input and slash commands)
|
|
35
28
|
const codePoints = toCodePoints(currentLine);
|
|
36
29
|
for (let i = cursorCol - 1; i >= 0; i--) {
|
|
37
30
|
const char = codePoints[i];
|
|
@@ -68,6 +61,15 @@ export function useCommandCompletion(buffer, dirs, cwd, slashCommands, commandCo
|
|
|
68
61
|
};
|
|
69
62
|
}
|
|
70
63
|
}
|
|
64
|
+
// Check for slash command completion (only if no @ was found)
|
|
65
|
+
if (cursorRow === 0 && isSlashCommand(currentLine.trim())) {
|
|
66
|
+
return {
|
|
67
|
+
completionMode: CompletionMode.SLASH,
|
|
68
|
+
query: currentLine,
|
|
69
|
+
completionStart: 0,
|
|
70
|
+
completionEnd: currentLine.length,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
71
73
|
// Check for prompt completion - only if enabled
|
|
72
74
|
const trimmedText = buffer.text.trim();
|
|
73
75
|
const isPromptCompletionEnabled = config?.getEnablePromptCompletion() ?? false;
|
|
@@ -154,8 +156,10 @@ export function useCommandCompletion(buffer, dirs, cwd, slashCommands, commandCo
|
|
|
154
156
|
}
|
|
155
157
|
const lineCodePoints = toCodePoints(buffer.lines[cursorRow] || '');
|
|
156
158
|
const charAfterCompletion = lineCodePoints[end];
|
|
157
|
-
if (
|
|
158
|
-
|
|
159
|
+
if (completionMode !== CompletionMode.AT) {
|
|
160
|
+
if (charAfterCompletion !== ' ') {
|
|
161
|
+
suggestionText += ' ';
|
|
162
|
+
}
|
|
159
163
|
}
|
|
160
164
|
buffer.replaceRangeByOffset(logicalPosToOffset(buffer.lines, cursorRow, start), logicalPosToOffset(buffer.lines, cursorRow, end), suggestionText);
|
|
161
165
|
}, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCommandCompletion.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useCommandCompletion.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,2BAAS,CAAA;IACT,iCAAe,CAAA;IACf,mCAAiB,CAAA;AACnB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB;AAkBD,MAAM,UAAU,oBAAoB,CAClC,MAAkB,EAClB,IAAuB,EACvB,GAAW,EACX,aAAsC,EACtC,cAA8B,EAC9B,sBAA+B,KAAK,EACpC,MAAe;IAEf,MAAM,EACJ,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,cAAc,EAEd,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EAEpB,oBAAoB,EACpB,UAAU,EACV,YAAY,GACb,GAAG,aAAa,EAAE,CAAC;IAEpB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,GAC7D,OAAO,CAAC,GAAG,EAAE;QACX,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useCommandCompletion.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useCommandCompletion.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,2BAAS,CAAA;IACT,iCAAe,CAAA;IACf,mCAAiB,CAAA;AACnB,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB;AAkBD,MAAM,UAAU,oBAAoB,CAClC,MAAkB,EAClB,IAAuB,EACvB,GAAW,EACX,aAAsC,EACtC,cAA8B,EAC9B,sBAA+B,KAAK,EACpC,MAAe;IAEf,MAAM,EACJ,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,cAAc,EAEd,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EAEpB,oBAAoB,EACpB,UAAU,EACV,YAAY,GACb,GAAG,aAAa,EAAE,CAAC;IAEpB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,GAC7D,OAAO,CAAC,GAAG,EAAE;QACX,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAElD,gFAAgF;QAChF,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAE3B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,IAAI,cAAc,GAAG,CAAC,CAAC;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1D,cAAc,EAAE,CAAC;gBACnB,CAAC;gBACD,IAAI,cAAc,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,MAAM;gBACR,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC5B,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnD,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC1B,IAAI,cAAc,GAAG,CAAC,CAAC;wBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC1D,cAAc,EAAE,CAAC;wBACnB,CAAC;wBAED,IAAI,cAAc,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC7B,GAAG,GAAG,CAAC,CAAC;4BACR,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxB,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC1D,OAAO;oBACL,cAAc,EAAE,cAAc,CAAC,EAAE;oBACjC,KAAK,EAAE,WAAW;oBAClB,eAAe,EAAE,SAAS;oBAC1B,aAAa,EAAE,GAAG;iBACnB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,IAAI,SAAS,KAAK,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1D,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,KAAK;gBACpC,KAAK,EAAE,WAAW;gBAClB,eAAe,EAAE,CAAC;gBAClB,aAAa,EAAE,WAAW,CAAC,MAAM;aAClC,CAAC;QACJ,CAAC;QAED,gDAAgD;QAChD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,yBAAyB,GAC7B,MAAM,EAAE,yBAAyB,EAAE,IAAI,KAAK,CAAC;QAE/C,IACE,yBAAyB;YACzB,WAAW,CAAC,MAAM,IAAI,4BAA4B;YAClD,CAAC,cAAc,CAAC,WAAW,CAAC;YAC5B,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC1B,CAAC;YACD,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,MAAM;gBACrC,KAAK,EAAE,WAAW;gBAClB,eAAe,EAAE,CAAC;gBAClB,aAAa,EAAE,WAAW,CAAC,MAAM;aAClC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,cAAc,EAAE,cAAc,CAAC,IAAI;YACnC,KAAK,EAAE,IAAI;YACX,eAAe,EAAE,CAAC,CAAC;YACnB,aAAa,EAAE,CAAC,CAAC;SAClB,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAEhE,eAAe,CAAC;QACd,OAAO,EAAE,cAAc,KAAK,cAAc,CAAC,EAAE;QAC7C,OAAO,EAAE,KAAK,IAAI,EAAE;QACpB,MAAM;QACN,GAAG;QACH,cAAc;QACd,uBAAuB;KACxB,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;QAC9C,OAAO,EAAE,cAAc,KAAK,cAAc,CAAC,KAAK;QAChD,KAAK;QACL,aAAa;QACb,cAAc;QACd,cAAc;QACd,uBAAuB;QACvB,iBAAiB;KAClB,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;QAC3C,MAAM;QACN,MAAM;QACN,OAAO,EAAE,cAAc,KAAK,cAAc,CAAC,MAAM;KAClD,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,wBAAwB,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,WAAW,EAAE,wBAAwB,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAElE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,cAAc,KAAK,cAAc,CAAC,IAAI,IAAI,mBAAmB,EAAE,CAAC;YAClE,oBAAoB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,yEAAyE;QACzE,kBAAkB,CAAC,oBAAoB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC,EAAE;QACD,cAAc;QACd,WAAW,CAAC,MAAM;QAClB,oBAAoB;QACpB,mBAAmB;QACnB,oBAAoB;QACpB,kBAAkB;KACnB,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,UAAkB,EAAE,EAAE;QACrB,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvD,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QAEjD,IAAI,KAAK,GAAG,eAAe,CAAC;QAC5B,IAAI,GAAG,GAAG,aAAa,CAAC;QACxB,IAAI,cAAc,KAAK,cAAc,CAAC,KAAK,EAAE,CAAC;YAC5C,KAAK,GAAG,oBAAoB,CAAC,eAAe,CAAC;YAC7C,GAAG,GAAG,oBAAoB,CAAC,aAAa,CAAC;QAC3C,CAAC;QAED,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,cAAc,GAAG,UAAU,CAAC;QAChC,IAAI,cAAc,KAAK,cAAc,CAAC,KAAK,EAAE,CAAC;YAC5C,IACE,KAAK,KAAK,GAAG;gBACb,KAAK,GAAG,CAAC;gBACT,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAClD,CAAC;gBACD,cAAc,GAAG,GAAG,GAAG,cAAc,CAAC;YACxC,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,mBAAmB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,cAAc,KAAK,cAAc,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,mBAAmB,KAAK,GAAG,EAAE,CAAC;gBAChC,cAAc,IAAI,GAAG,CAAC;YACxB,CAAC;QACH,CAAC;QAED,MAAM,CAAC,oBAAoB,CACzB,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAClD,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAChD,cAAc,CACf,CAAC;IACJ,CAAC,EACD;QACE,SAAS;QACT,MAAM;QACN,WAAW;QACX,cAAc;QACd,eAAe;QACf,aAAa;QACb,oBAAoB;KACrB,CACF,CAAC;IAEF,OAAO;QACL,WAAW;QACX,qBAAqB;QACrB,iBAAiB;QACjB,eAAe;QACf,oBAAoB;QACpB,cAAc;QACd,wBAAwB;QACxB,kBAAkB;QAClB,oBAAoB;QACpB,UAAU;QACV,YAAY;QACZ,kBAAkB;QAClB,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -15,6 +15,12 @@ export interface DialogCloseOptions {
|
|
|
15
15
|
exitEditorDialog: () => void;
|
|
16
16
|
isSettingsDialogOpen: boolean;
|
|
17
17
|
closeSettingsDialog: () => void;
|
|
18
|
+
isExtensionsDialogOpen: boolean;
|
|
19
|
+
closeExtensionsDialog: () => void;
|
|
20
|
+
isVoiceConfigDialogOpen: boolean;
|
|
21
|
+
closeVoiceConfigDialog: () => void;
|
|
22
|
+
isReleasesDialogOpen: boolean;
|
|
23
|
+
closeReleasesDialog: () => void;
|
|
18
24
|
isFolderTrustDialogOpen: boolean;
|
|
19
25
|
showPrivacyNotice: boolean;
|
|
20
26
|
setShowPrivacyNotice: (show: boolean) => void;
|
|
@@ -23,6 +29,10 @@ export interface DialogCloseOptions {
|
|
|
23
29
|
quitConfirmationRequest: {
|
|
24
30
|
onConfirm: (shouldQuit: boolean, action?: string) => void;
|
|
25
31
|
} | null;
|
|
32
|
+
showTodoListDialog: boolean;
|
|
33
|
+
setShowTodoListDialog: (show: boolean) => void;
|
|
34
|
+
isDbConfigureDialogOpen: boolean;
|
|
35
|
+
closeDbConfigureDialog: () => void;
|
|
26
36
|
}
|
|
27
37
|
/**
|
|
28
38
|
* Hook that handles closing dialogs when Ctrl+C is pressed.
|
|
@@ -37,6 +37,21 @@ export function useDialogClose(options) {
|
|
|
37
37
|
options.closeSettingsDialog();
|
|
38
38
|
return true;
|
|
39
39
|
}
|
|
40
|
+
if (options.isExtensionsDialogOpen) {
|
|
41
|
+
// Mimic ESC behavior: close the extensions dialog
|
|
42
|
+
options.closeExtensionsDialog();
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
if (options.isVoiceConfigDialogOpen) {
|
|
46
|
+
// Mimic ESC behavior: close the voice config dialog
|
|
47
|
+
options.closeVoiceConfigDialog();
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (options.isReleasesDialogOpen) {
|
|
51
|
+
// Mimic ESC behavior: close the releases dialog
|
|
52
|
+
options.closeReleasesDialog();
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
40
55
|
if (options.isFolderTrustDialogOpen) {
|
|
41
56
|
// FolderTrustDialog doesn't expose close function, but ESC would prevent exit
|
|
42
57
|
// We follow the same pattern - prevent exit behavior
|
|
@@ -52,6 +67,16 @@ export function useDialogClose(options) {
|
|
|
52
67
|
options.handleWelcomeBackClose();
|
|
53
68
|
return true;
|
|
54
69
|
}
|
|
70
|
+
if (options.showTodoListDialog) {
|
|
71
|
+
// Close todo list dialog
|
|
72
|
+
options.setShowTodoListDialog(false);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
if (options.isDbConfigureDialogOpen) {
|
|
76
|
+
// Close DB configure dialog
|
|
77
|
+
options.closeDbConfigureDialog();
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
55
80
|
// Note: quitConfirmationRequest is NOT handled here anymore
|
|
56
81
|
// It's handled specially in handleExit - ctrl+c in quit-confirm should exit immediately
|
|
57
82
|
// No dialog was open
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDialogClose.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useDialogClose.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"useDialogClose.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useDialogClose.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA6DxD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAA2B;IACxD,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAY,EAAE;QACnD,gFAAgF;QAEhF,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,+EAA+E;YAC/E,OAAO,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,yFAAyF;YACzF,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBAC3C,yEAAyE;gBACzE,KAAK,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YAC9D,CAAC;YACD,gFAAgF;YAChF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,6CAA6C;YAC7C,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACjC,yDAAyD;YACzD,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACnC,kDAAkD;YAClD,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACpC,oDAAoD;YACpD,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACjC,gDAAgD;YAChD,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACpC,8EAA8E;YAC9E,qDAAqD;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,qCAAqC;YACrC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAClC,wCAAwC;YACxC,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,yBAAyB;YACzB,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACpC,4BAA4B;YAC5B,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4DAA4D;QAC5D,wFAAwF;QAExF,qBAAqB;QACrB,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export interface UseDialogCloseAnimationReturn {
|
|
7
|
+
/** Whether the dialog is currently in the closing animation state */
|
|
8
|
+
isClosing: boolean;
|
|
9
|
+
/** Animation stage (0 = not closing, 1-ANIMATION_STAGES = progressively dimmer) */
|
|
10
|
+
animationStage: number;
|
|
11
|
+
/** Start the closing animation, optionally with work to do first */
|
|
12
|
+
startClosing: (doWork?: () => void) => void;
|
|
13
|
+
/** Callback to actually close the dialog after animation completes */
|
|
14
|
+
closeDialog: () => void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Hook to manage dialog close animation state.
|
|
18
|
+
* When startClosing() is called, isClosing becomes true for ANIMATION_DURATION_MS,
|
|
19
|
+
* then closeDialog callback is invoked.
|
|
20
|
+
* If doWork is provided, it will be called immediately when startClosing is called.
|
|
21
|
+
*/
|
|
22
|
+
export declare function useDialogCloseAnimation(closeDialog: () => void): UseDialogCloseAnimationReturn;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
7
|
+
const ANIMATION_DURATION_MS = 500;
|
|
8
|
+
const ANIMATION_STAGES = 4; // Number of dimming stages for gradual transition
|
|
9
|
+
/**
|
|
10
|
+
* Hook to manage dialog close animation state.
|
|
11
|
+
* When startClosing() is called, isClosing becomes true for ANIMATION_DURATION_MS,
|
|
12
|
+
* then closeDialog callback is invoked.
|
|
13
|
+
* If doWork is provided, it will be called immediately when startClosing is called.
|
|
14
|
+
*/
|
|
15
|
+
export function useDialogCloseAnimation(closeDialog) {
|
|
16
|
+
const [isClosing, setIsClosing] = useState(false);
|
|
17
|
+
const [animationStage, setAnimationStage] = useState(0);
|
|
18
|
+
const timeoutRef = useRef(null);
|
|
19
|
+
const stageTimeoutsRef = useRef([]);
|
|
20
|
+
const startClosing = useCallback((doWork) => {
|
|
21
|
+
// Set closing state immediately and synchronously for instant visual feedback
|
|
22
|
+
setIsClosing(true);
|
|
23
|
+
setAnimationStage(1);
|
|
24
|
+
// Clear any existing timeouts
|
|
25
|
+
if (timeoutRef.current) {
|
|
26
|
+
clearTimeout(timeoutRef.current);
|
|
27
|
+
}
|
|
28
|
+
stageTimeoutsRef.current.forEach(timeout => clearTimeout(timeout));
|
|
29
|
+
stageTimeoutsRef.current = [];
|
|
30
|
+
// Do work after setting state (but still before timeout) if provided
|
|
31
|
+
if (doWork) {
|
|
32
|
+
// Use a microtask to ensure state update is rendered first
|
|
33
|
+
Promise.resolve().then(() => {
|
|
34
|
+
doWork();
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
// Progressively dim through stages
|
|
38
|
+
const stageDuration = ANIMATION_DURATION_MS / ANIMATION_STAGES;
|
|
39
|
+
for (let stage = 2; stage <= ANIMATION_STAGES; stage++) {
|
|
40
|
+
const timeout = setTimeout(() => {
|
|
41
|
+
setAnimationStage(stage);
|
|
42
|
+
}, (stage - 1) * stageDuration);
|
|
43
|
+
stageTimeoutsRef.current.push(timeout);
|
|
44
|
+
}
|
|
45
|
+
// After animation duration, actually close the dialog
|
|
46
|
+
timeoutRef.current = setTimeout(() => {
|
|
47
|
+
setIsClosing(false);
|
|
48
|
+
setAnimationStage(0);
|
|
49
|
+
closeDialog();
|
|
50
|
+
timeoutRef.current = null;
|
|
51
|
+
stageTimeoutsRef.current = [];
|
|
52
|
+
}, ANIMATION_DURATION_MS);
|
|
53
|
+
}, [closeDialog]);
|
|
54
|
+
// Cleanup on unmount
|
|
55
|
+
useEffect(() => () => {
|
|
56
|
+
if (timeoutRef.current) {
|
|
57
|
+
clearTimeout(timeoutRef.current);
|
|
58
|
+
}
|
|
59
|
+
stageTimeoutsRef.current.forEach(timeout => clearTimeout(timeout));
|
|
60
|
+
}, []);
|
|
61
|
+
return {
|
|
62
|
+
isClosing,
|
|
63
|
+
animationStage,
|
|
64
|
+
startClosing,
|
|
65
|
+
closeDialog,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=useDialogCloseAnimation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDialogCloseAnimation.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useDialogCloseAnimation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAajE,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAC,kDAAkD;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAuB;IAEvB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,MAAM,CAAmB,EAAE,CAAC,CAAC;IAEtD,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,MAAmB,EAAE,EAAE;QACtB,8EAA8E;QAC9E,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAErB,8BAA8B;QAC9B,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,gBAAgB,CAAC,OAAO,GAAG,EAAE,CAAC;QAE9B,qEAAqE;QACrE,IAAI,MAAM,EAAE,CAAC;YACX,2DAA2D;YAC3D,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1B,MAAM,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,MAAM,aAAa,GAAG,qBAAqB,GAAG,gBAAgB,CAAC;QAC/D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,gBAAgB,EAAE,KAAK,EAAE,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;YAChC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAED,sDAAsD;QACtD,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACrB,WAAW,EAAE,CAAC;YACd,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,gBAAgB,CAAC,OAAO,GAAG,EAAE,CAAC;QAChC,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC5B,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,qBAAqB;IACrB,SAAS,CACP,GAAG,EAAE,CAAC,GAAG,EAAE;QACT,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QACD,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC,EACD,EAAE,CACH,CAAC;IAEF,OAAO;QACL,SAAS;QACT,cAAc;QACd,YAAY;QACZ,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Config, EditorType } from '@blackbox_ai/blackbox-cli-core';
|
|
7
|
+
import type { HistoryItem, HistoryItemWithoutId, SlashCommandProcessorResult } from '../types.js';
|
|
8
|
+
import { StreamingState } from '../types.js';
|
|
9
|
+
import type { UseHistoryManagerReturn } from './useHistoryManager.js';
|
|
10
|
+
import type { PartListUnion } from '@google/genai';
|
|
11
|
+
/**
|
|
12
|
+
* Hook for handling encrypted chat streams using the BlackboxAI Encrypted provider
|
|
13
|
+
*/
|
|
14
|
+
export declare const useEncryptedStream: (config: Config, history: HistoryItem[], addItem: UseHistoryManagerReturn["addItem"], onDebugMessage: (message: string) => void, onCancelSubmit: () => void, handleSlashCommand?: (cmd: PartListUnion) => Promise<SlashCommandProcessorResult | false>, getPreferredEditor?: () => EditorType | undefined, onEditorClose?: () => void) => {
|
|
15
|
+
streamingState: StreamingState;
|
|
16
|
+
submitQuery: (query: string) => Promise<void>;
|
|
17
|
+
initError: string | null;
|
|
18
|
+
pendingHistoryItems: HistoryItemWithoutId[];
|
|
19
|
+
thought: null;
|
|
20
|
+
cancelOngoingRequest: () => void;
|
|
21
|
+
isEncryptedMode: boolean;
|
|
22
|
+
};
|