@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
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { GenerateContentResponse } from '@google/genai';
|
|
7
|
+
import { EncryptedChatService, createEncryptedToolParser, formatToolsForSystemPrompt } from '@blackbox_ai/blackbox-cli-core';
|
|
8
|
+
/**
|
|
9
|
+
* EncryptedContentGenerator implements the ContentGenerator interface
|
|
10
|
+
* but routes requests through the BlackboxAI encryption system instead of OpenAI API
|
|
11
|
+
*/
|
|
12
|
+
export class EncryptedContentGenerator {
|
|
13
|
+
encryptedService;
|
|
14
|
+
initialized = false;
|
|
15
|
+
constructor(_sessionId) {
|
|
16
|
+
this.encryptedService = new EncryptedChatService();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Initialize the encrypted service
|
|
20
|
+
*/
|
|
21
|
+
async ensureInitialized() {
|
|
22
|
+
if (!this.initialized) {
|
|
23
|
+
try {
|
|
24
|
+
await this.encryptedService.initialize();
|
|
25
|
+
this.initialized = true;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
console.warn('⚠️ Failed to initialize encrypted service:', error);
|
|
29
|
+
// Don't throw here, let individual methods handle fallback
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Extract tools from request and format them for system prompt
|
|
35
|
+
*/
|
|
36
|
+
extractAndFormatTools(request) {
|
|
37
|
+
const tools = [];
|
|
38
|
+
// Extract tools from request.config.tools
|
|
39
|
+
if (request.config?.tools) {
|
|
40
|
+
for (const toolGroup of request.config.tools) {
|
|
41
|
+
// Handle different tool types - check if it has functionDeclarations
|
|
42
|
+
if ('functionDeclarations' in toolGroup && toolGroup.functionDeclarations) {
|
|
43
|
+
tools.push(...toolGroup.functionDeclarations);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (tools.length === 0) {
|
|
48
|
+
return '';
|
|
49
|
+
}
|
|
50
|
+
// Use the tool formatter to create system prompt addition
|
|
51
|
+
// Default to 'DeepSeek' format, but could be made configurable
|
|
52
|
+
return formatToolsForSystemPrompt(tools, 'deepseek');
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Convert Content[] to message history format expected by EncryptedChatService
|
|
56
|
+
*/
|
|
57
|
+
convertToMessageHistory(contents, toolsSystemPrompt = '') {
|
|
58
|
+
const messages = contents.map(content => {
|
|
59
|
+
// Extract text from parts
|
|
60
|
+
const textParts = content.parts?.filter((part) => typeof part === 'object' && part !== null && 'text' in part) || [];
|
|
61
|
+
const text = textParts.map(part => part.text).join('\n');
|
|
62
|
+
// Map roles
|
|
63
|
+
const role = content.role === 'model' ? 'assistant' : content.role;
|
|
64
|
+
return { role, content: text };
|
|
65
|
+
});
|
|
66
|
+
// Add tools to system prompt if we have tools and a system message
|
|
67
|
+
if (toolsSystemPrompt && messages.length > 0 && messages[0].role === 'system') {
|
|
68
|
+
messages[0].content += toolsSystemPrompt;
|
|
69
|
+
}
|
|
70
|
+
else if (toolsSystemPrompt && (messages.length === 0 || messages[0].role !== 'system')) {
|
|
71
|
+
// Insert system message with tools at the beginning
|
|
72
|
+
messages.unshift({
|
|
73
|
+
role: 'system',
|
|
74
|
+
content: `You are a helpful AI assistant.${toolsSystemPrompt}`
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return messages;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Convert Parts to text content
|
|
81
|
+
*/
|
|
82
|
+
convertPartsToText(parts) {
|
|
83
|
+
return parts
|
|
84
|
+
.filter((part) => typeof part === 'object' && part !== null && 'text' in part)
|
|
85
|
+
.map(part => part.text)
|
|
86
|
+
.join('\n');
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Extract Content objects from the mixed content array
|
|
90
|
+
*/
|
|
91
|
+
extractContentArray(contents) {
|
|
92
|
+
if (Array.isArray(contents)) {
|
|
93
|
+
return contents.filter((item) => typeof item === 'object' && item !== null && 'parts' in item);
|
|
94
|
+
}
|
|
95
|
+
else if (typeof contents === 'object' && contents !== null && 'parts' in contents) {
|
|
96
|
+
return [contents];
|
|
97
|
+
}
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Parse tool calls from encrypted response text using enhanced parser
|
|
102
|
+
*/
|
|
103
|
+
parseToolCallsFromResponse(text, tools) {
|
|
104
|
+
// Try to detect model type from response format
|
|
105
|
+
const modelType = this.detectModelType(text);
|
|
106
|
+
// Use the enhanced tool parser
|
|
107
|
+
const parser = createEncryptedToolParser();
|
|
108
|
+
const parseResult = parser.parseComplete(text, tools, modelType);
|
|
109
|
+
if (!parseResult.success) {
|
|
110
|
+
console.error('❌ Tool parsing failed:', parseResult.error);
|
|
111
|
+
console.error('❌ Failed text:', text.substring(0, 500));
|
|
112
|
+
// Return empty array if parsing fails
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
115
|
+
const functionCalls = parseResult.toolCalls.map((tc, index) => {
|
|
116
|
+
const functionCall = {
|
|
117
|
+
name: tc.name,
|
|
118
|
+
args: tc.arguments,
|
|
119
|
+
id: tc.id || `call_${Date.now()}_${index}`
|
|
120
|
+
};
|
|
121
|
+
return functionCall;
|
|
122
|
+
});
|
|
123
|
+
return functionCalls;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Detect model type from response format
|
|
127
|
+
*/
|
|
128
|
+
detectModelType(text) {
|
|
129
|
+
// Check for DeepSeek format tokens
|
|
130
|
+
if (text.includes('<|tool▁calls▁begin|>') || text.includes('<|tool▁call▁begin|>')) {
|
|
131
|
+
return 'deepseek';
|
|
132
|
+
}
|
|
133
|
+
// Default to DeepSeek format
|
|
134
|
+
return 'deepseek';
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Remove tool call markup from response text to get clean text content
|
|
138
|
+
*/
|
|
139
|
+
removeToolCallMarkup(text) {
|
|
140
|
+
let cleanText = text;
|
|
141
|
+
// Remove Qwen format tool calls
|
|
142
|
+
cleanText = cleanText.replace(/<tool_call>\s*[\s\S]*?\s*<\/tool_call>/g, '');
|
|
143
|
+
// Remove DeepSeek format tool calls - full block format
|
|
144
|
+
cleanText = cleanText.replace(/<|tool▁calls▁begin|>[\s\S]*?<|tool▁calls▁end|>/g, '');
|
|
145
|
+
// Remove DeepSeek format tool calls - individual tool call format with full structure
|
|
146
|
+
// Pattern: <|tool▁call▁begin|>toolname<|tool▁sep|>{"args"}<|tool▁call▁end|>
|
|
147
|
+
cleanText = cleanText.replace(/<|tool▁call▁begin|>[a-zA-Z_][a-zA-Z0-9_]*<|tool▁sep|>[\s\S]*?<|tool▁call▁end|>/g, '');
|
|
148
|
+
// Remove DeepSeek format tool calls - incomplete format (missing begin tokens)
|
|
149
|
+
// Pattern: toolname<|tool▁sep|>{"args"}<|tool▁call▁end|><|tool▁calls▁end|>
|
|
150
|
+
cleanText = cleanText.replace(/[a-zA-Z_][a-zA-Z0-9_]*<|tool▁sep|>[\s\S]*?<|tool▁call▁end|><|tool▁calls▁end|>/g, '');
|
|
151
|
+
// Remove DeepSeek format tool calls - simple individual format
|
|
152
|
+
// Pattern: toolname<|tool▁sep|>{"args"}<|tool▁call▁end|>
|
|
153
|
+
cleanText = cleanText.replace(/[a-zA-Z_][a-zA-Z0-9_]*<|tool▁sep|>[\s\S]*?<|tool▁call▁end|>/g, '');
|
|
154
|
+
// CRITICAL FIX: Remove standalone end tokens that might appear at the end of responses
|
|
155
|
+
// This handles cases where the model outputs text followed by a standalone end token
|
|
156
|
+
cleanText = cleanText.replace(/<|tool▁calls▁end|>\s*$/g, '');
|
|
157
|
+
cleanText = cleanText.replace(/<|tool▁call▁end|>\s*$/g, '');
|
|
158
|
+
// Remove any remaining DeepSeek tool markers (cleanup pass)
|
|
159
|
+
cleanText = cleanText.replace(/<|tool▁call▁begin|>/g, '');
|
|
160
|
+
cleanText = cleanText.replace(/<|tool▁call▁end|>/g, '');
|
|
161
|
+
cleanText = cleanText.replace(/<|tool▁sep|>/g, '');
|
|
162
|
+
cleanText = cleanText.replace(/<|tool▁calls▁begin|>/g, '');
|
|
163
|
+
cleanText = cleanText.replace(/<|tool▁calls▁end|>/g, '');
|
|
164
|
+
// Clean up extra whitespace and empty lines
|
|
165
|
+
cleanText = cleanText.replace(/\n\s*\n\s*\n/g, '\n\n');
|
|
166
|
+
cleanText = cleanText.replace(/^\s+|\s+$/g, ''); // trim start and end
|
|
167
|
+
return cleanText;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Extract tools from request for validation
|
|
171
|
+
*/
|
|
172
|
+
extractToolsFromRequest(request) {
|
|
173
|
+
const tools = [];
|
|
174
|
+
// Extract tools from request.config.tools
|
|
175
|
+
if (request.config?.tools) {
|
|
176
|
+
for (const toolGroup of request.config.tools) {
|
|
177
|
+
// Handle different tool types - check if it has functionDeclarations
|
|
178
|
+
if ('functionDeclarations' in toolGroup && toolGroup.functionDeclarations) {
|
|
179
|
+
tools.push(...toolGroup.functionDeclarations);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return tools;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Create a fallback response for errors
|
|
187
|
+
*/
|
|
188
|
+
createFallbackResponse(userMessage, error) {
|
|
189
|
+
const fallbackText = `🔒 **ENCRYPTED RESPONSE (Error Recovery)**
|
|
190
|
+
|
|
191
|
+
Your message: "${userMessage}"
|
|
192
|
+
|
|
193
|
+
I encountered an issue while processing your request through the encrypted channel, but I'm providing a secure fallback response.
|
|
194
|
+
|
|
195
|
+
**Error Details:**
|
|
196
|
+
- Error: ${error.message}
|
|
197
|
+
- Encryption Status: Maintained
|
|
198
|
+
- Session: Secure
|
|
199
|
+
|
|
200
|
+
**Available Tools:**
|
|
201
|
+
I have access to various tools including file operations, search capabilities, and system commands. Please try your request again, and I'll attempt to process it through the encrypted channel.
|
|
202
|
+
|
|
203
|
+
How can I help you today?`;
|
|
204
|
+
const response = new GenerateContentResponse();
|
|
205
|
+
response.candidates = [{
|
|
206
|
+
content: {
|
|
207
|
+
role: 'model',
|
|
208
|
+
parts: [{ text: fallbackText }]
|
|
209
|
+
},
|
|
210
|
+
finishReason: 'STOP',
|
|
211
|
+
index: 0,
|
|
212
|
+
safetyRatings: []
|
|
213
|
+
}];
|
|
214
|
+
response.usageMetadata = {
|
|
215
|
+
promptTokenCount: userMessage.length / 4,
|
|
216
|
+
candidatesTokenCount: fallbackText.length / 4,
|
|
217
|
+
totalTokenCount: (userMessage.length + fallbackText.length) / 4
|
|
218
|
+
};
|
|
219
|
+
response.modelVersion = 'blackboxai/encrypted-fallback';
|
|
220
|
+
response.promptFeedback = { safetyRatings: [] };
|
|
221
|
+
return response;
|
|
222
|
+
}
|
|
223
|
+
async generateContent(request, _userPromptId) {
|
|
224
|
+
await this.ensureInitialized();
|
|
225
|
+
try {
|
|
226
|
+
// Extract and format tools for system prompt
|
|
227
|
+
const toolsSystemPrompt = this.extractAndFormatTools(request);
|
|
228
|
+
// Extract content array from request
|
|
229
|
+
const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
|
|
230
|
+
const contentsArray = this.extractContentArray(contents);
|
|
231
|
+
// Convert to message history format with tools in system prompt
|
|
232
|
+
const messageHistory = this.convertToMessageHistory(contentsArray, toolsSystemPrompt);
|
|
233
|
+
// Get the last user message
|
|
234
|
+
const lastContent = contentsArray[contentsArray.length - 1];
|
|
235
|
+
const userMessage = lastContent ? this.convertPartsToText(lastContent.parts || []) : 'Unknown message';
|
|
236
|
+
// DEBUG: Log tool information
|
|
237
|
+
const tools = this.extractToolsFromRequest(request);
|
|
238
|
+
// Send through encrypted service
|
|
239
|
+
const encryptedStream = await this.encryptedService.sendMessage(userMessage, messageHistory);
|
|
240
|
+
// Read the entire stream to get the complete response
|
|
241
|
+
const reader = encryptedStream.getReader();
|
|
242
|
+
const decoder = new TextDecoder();
|
|
243
|
+
let encryptedResponse = '';
|
|
244
|
+
try {
|
|
245
|
+
while (true) {
|
|
246
|
+
const { done, value } = await reader.read();
|
|
247
|
+
if (done)
|
|
248
|
+
break;
|
|
249
|
+
encryptedResponse += decoder.decode(value, { stream: true });
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
finally {
|
|
253
|
+
reader.releaseLock();
|
|
254
|
+
}
|
|
255
|
+
// Parse tool calls from response if any
|
|
256
|
+
const toolCalls = this.parseToolCallsFromResponse(encryptedResponse, tools);
|
|
257
|
+
// Create response with tool calls if found
|
|
258
|
+
const response = new GenerateContentResponse();
|
|
259
|
+
// CRITICAL FIX: Separate text content from tool calls
|
|
260
|
+
// Remove tool call markup from the text response
|
|
261
|
+
const cleanTextResponse = this.removeToolCallMarkup(encryptedResponse);
|
|
262
|
+
const responseParts = [];
|
|
263
|
+
// Add clean text response if there's meaningful content
|
|
264
|
+
if (cleanTextResponse.trim()) {
|
|
265
|
+
responseParts.push({ text: cleanTextResponse });
|
|
266
|
+
}
|
|
267
|
+
// Add function calls if detected - CRITICAL: These must be separate parts
|
|
268
|
+
if (toolCalls.length > 0) {
|
|
269
|
+
for (const toolCall of toolCalls) {
|
|
270
|
+
responseParts.push({
|
|
271
|
+
functionCall: toolCall
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
response.candidates = [{
|
|
276
|
+
content: {
|
|
277
|
+
role: 'model',
|
|
278
|
+
parts: responseParts
|
|
279
|
+
},
|
|
280
|
+
finishReason: 'STOP',
|
|
281
|
+
index: 0,
|
|
282
|
+
safetyRatings: []
|
|
283
|
+
}];
|
|
284
|
+
response.usageMetadata = {
|
|
285
|
+
promptTokenCount: userMessage.length / 4,
|
|
286
|
+
candidatesTokenCount: encryptedResponse.length / 4,
|
|
287
|
+
totalTokenCount: (userMessage.length + encryptedResponse.length) / 4
|
|
288
|
+
};
|
|
289
|
+
response.modelVersion = 'blackboxai/encrypted';
|
|
290
|
+
response.promptFeedback = { safetyRatings: [] };
|
|
291
|
+
return response;
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
console.error('❌ EncryptedContentGenerator.generateContent failed:', error);
|
|
295
|
+
// Extract user message for fallback
|
|
296
|
+
const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
|
|
297
|
+
const contentsArray = this.extractContentArray(contents);
|
|
298
|
+
const lastContent = contentsArray[contentsArray.length - 1];
|
|
299
|
+
const userMessage = lastContent ? this.convertPartsToText(lastContent.parts || []) : 'Unknown message';
|
|
300
|
+
return this.createFallbackResponse(userMessage, error);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
async generateContentStream(request, _userPromptId) {
|
|
304
|
+
return this.generateContentStreamInternal(request, _userPromptId);
|
|
305
|
+
}
|
|
306
|
+
async *generateContentStreamInternal(request, _userPromptId) {
|
|
307
|
+
await this.ensureInitialized();
|
|
308
|
+
try {
|
|
309
|
+
// Extract and format tools for system prompt
|
|
310
|
+
const toolsSystemPrompt = this.extractAndFormatTools(request);
|
|
311
|
+
// Extract content array from request
|
|
312
|
+
const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
|
|
313
|
+
const contentsArray = this.extractContentArray(contents);
|
|
314
|
+
// Convert to message history format with tools in system prompt
|
|
315
|
+
const messageHistory = this.convertToMessageHistory(contentsArray, toolsSystemPrompt);
|
|
316
|
+
// Get the last user message
|
|
317
|
+
const lastContent = contentsArray[contentsArray.length - 1];
|
|
318
|
+
const userMessage = lastContent ? this.convertPartsToText(lastContent.parts || []) : 'Unknown message';
|
|
319
|
+
// DEBUG: Log tool information for streaming
|
|
320
|
+
const tools = this.extractToolsFromRequest(request);
|
|
321
|
+
// Send through encrypted service and get stream
|
|
322
|
+
const encryptedStream = await this.encryptedService.sendMessage(userMessage, messageHistory);
|
|
323
|
+
// Process the stream
|
|
324
|
+
const reader = encryptedStream.getReader();
|
|
325
|
+
const decoder = new TextDecoder();
|
|
326
|
+
let accumulatedText = '';
|
|
327
|
+
let toolCallsDetected = false;
|
|
328
|
+
try {
|
|
329
|
+
while (true) {
|
|
330
|
+
const { done, value } = await reader.read();
|
|
331
|
+
if (done)
|
|
332
|
+
break;
|
|
333
|
+
const chunk = decoder.decode(value, { stream: true });
|
|
334
|
+
accumulatedText += chunk;
|
|
335
|
+
// Check if we have complete tool calls in accumulated text
|
|
336
|
+
const toolCalls = this.parseToolCallsFromResponse(accumulatedText, tools);
|
|
337
|
+
// Only yield the new chunk, not the accumulated text
|
|
338
|
+
if (chunk.trim()) {
|
|
339
|
+
// Create streaming response
|
|
340
|
+
const streamResponse = new GenerateContentResponse();
|
|
341
|
+
// CRITICAL FIX: Handle tool calls properly in streaming
|
|
342
|
+
const responseParts = [];
|
|
343
|
+
// If we haven't detected tool calls yet, include the chunk as text
|
|
344
|
+
if (toolCalls.length === 0) {
|
|
345
|
+
responseParts.push({ text: chunk });
|
|
346
|
+
}
|
|
347
|
+
else if (!toolCallsDetected) {
|
|
348
|
+
// First time detecting tool calls - send clean text and tool calls
|
|
349
|
+
toolCallsDetected = true;
|
|
350
|
+
const cleanTextResponse = this.removeToolCallMarkup(accumulatedText);
|
|
351
|
+
if (cleanTextResponse.trim()) {
|
|
352
|
+
responseParts.push({ text: cleanTextResponse });
|
|
353
|
+
}
|
|
354
|
+
// Add all detected tool calls
|
|
355
|
+
for (const toolCall of toolCalls) {
|
|
356
|
+
responseParts.push({
|
|
357
|
+
functionCall: toolCall
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
// If tool calls were already detected, don't send more chunks
|
|
362
|
+
if (responseParts.length > 0) {
|
|
363
|
+
streamResponse.candidates = [{
|
|
364
|
+
content: {
|
|
365
|
+
role: 'model',
|
|
366
|
+
parts: responseParts
|
|
367
|
+
},
|
|
368
|
+
finishReason: 'STOP',
|
|
369
|
+
index: 0,
|
|
370
|
+
safetyRatings: []
|
|
371
|
+
}];
|
|
372
|
+
streamResponse.usageMetadata = {
|
|
373
|
+
promptTokenCount: userMessage.length / 4,
|
|
374
|
+
candidatesTokenCount: chunk.length / 4,
|
|
375
|
+
totalTokenCount: (userMessage.length + chunk.length) / 4
|
|
376
|
+
};
|
|
377
|
+
streamResponse.modelVersion = 'blackboxai/encrypted';
|
|
378
|
+
streamResponse.promptFeedback = { safetyRatings: [] };
|
|
379
|
+
yield streamResponse;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
finally {
|
|
385
|
+
reader.releaseLock();
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
catch (error) {
|
|
389
|
+
console.error('❌ EncryptedContentGenerator.generateContentStream failed:', error);
|
|
390
|
+
// Extract user message for fallback
|
|
391
|
+
const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
|
|
392
|
+
const contentsArray = this.extractContentArray(contents);
|
|
393
|
+
const lastContent = contentsArray[contentsArray.length - 1];
|
|
394
|
+
const userMessage = lastContent ? this.convertPartsToText(lastContent.parts || []) : 'Unknown message';
|
|
395
|
+
yield this.createFallbackResponse(userMessage, error);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
async countTokens(request) {
|
|
399
|
+
// Simple token estimation for encrypted content
|
|
400
|
+
// In a real implementation, you might want to use a more sophisticated tokenizer
|
|
401
|
+
const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
|
|
402
|
+
const contentsArray = this.extractContentArray(contents);
|
|
403
|
+
let totalTokens = 0;
|
|
404
|
+
for (const content of contentsArray) {
|
|
405
|
+
const text = this.convertPartsToText(content.parts || []);
|
|
406
|
+
// Rough estimation: 1 token ≈ 4 characters
|
|
407
|
+
totalTokens += Math.ceil(text.length / 4);
|
|
408
|
+
}
|
|
409
|
+
return {
|
|
410
|
+
totalTokens
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
async embedContent(request) {
|
|
414
|
+
// Embedding is not supported for encrypted content
|
|
415
|
+
// Return empty embeddings
|
|
416
|
+
const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
|
|
417
|
+
return {
|
|
418
|
+
embeddings: contents.map(() => ({
|
|
419
|
+
values: [] // Empty embedding
|
|
420
|
+
}))
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
// Optional userTier property
|
|
424
|
+
userTier;
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=EncryptedContentGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EncryptedContentGenerator.js","sourceRoot":"","sources":["../../../src/services/EncryptedContentGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { ICommandLoader } from './types.js';
|
|
7
|
+
import type { SlashCommand } from '../ui/commands/types.js';
|
|
8
|
+
import type { Config } from '@blackbox_ai/blackbox-cli-core';
|
|
9
|
+
/**
|
|
10
|
+
* Dynamically loads commands for MCP servers.
|
|
11
|
+
* Creates a command for each configured MCP server that can be invoked via & prefix.
|
|
12
|
+
*/
|
|
13
|
+
export declare class McpCommandLoader implements ICommandLoader {
|
|
14
|
+
private config;
|
|
15
|
+
constructor(config: Config | null);
|
|
16
|
+
/**
|
|
17
|
+
* Loads commands for all configured MCP servers.
|
|
18
|
+
* Each server gets its own command that can be invoked via &<server-name>
|
|
19
|
+
*
|
|
20
|
+
* @param _signal An AbortSignal (unused for this synchronous loader).
|
|
21
|
+
* @returns A promise that resolves to an array of `SlashCommand` objects.
|
|
22
|
+
*/
|
|
23
|
+
loadCommands(_signal: AbortSignal): Promise<SlashCommand[]>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { createMcpInvokeCommand, createMcpServersListCommand, } from '../ui/commands/mcpInvokeCommand.js';
|
|
7
|
+
/**
|
|
8
|
+
* Dynamically loads commands for MCP servers.
|
|
9
|
+
* Creates a command for each configured MCP server that can be invoked via & prefix.
|
|
10
|
+
*/
|
|
11
|
+
export class McpCommandLoader {
|
|
12
|
+
config;
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.config = config;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Loads commands for all configured MCP servers.
|
|
18
|
+
* Each server gets its own command that can be invoked via &<server-name>
|
|
19
|
+
*
|
|
20
|
+
* @param _signal An AbortSignal (unused for this synchronous loader).
|
|
21
|
+
* @returns A promise that resolves to an array of `SlashCommand` objects.
|
|
22
|
+
*/
|
|
23
|
+
async loadCommands(_signal) {
|
|
24
|
+
if (!this.config) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const commands = [];
|
|
28
|
+
// Add the list command for showing all MCP servers
|
|
29
|
+
commands.push(createMcpServersListCommand());
|
|
30
|
+
// Get all configured MCP servers
|
|
31
|
+
const mcpServers = this.config.getMcpServers() || {};
|
|
32
|
+
const serverNames = Object.keys(mcpServers);
|
|
33
|
+
// Create a command for each MCP server
|
|
34
|
+
for (const serverName of serverNames) {
|
|
35
|
+
// Special handling for remote-code: rename to "remote" with "remote-code" as alias
|
|
36
|
+
if (serverName === 'remote-code') {
|
|
37
|
+
const command = createMcpInvokeCommand(serverName);
|
|
38
|
+
command.name = 'remote';
|
|
39
|
+
command.altNames = ['remote-code'];
|
|
40
|
+
command.description = 'remote MCP server';
|
|
41
|
+
commands.push(command);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
commands.push(createMcpInvokeCommand(serverName));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return commands;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=McpCommandLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpCommandLoader.js","sourceRoot":"","sources":["../../../src/services/McpCommandLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,oCAAoC,CAAC;AAE5C;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACP;IAApB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,OAAoB;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAmB,EAAE,CAAC;QAEpC,mDAAmD;QACnD,QAAQ,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC;QAE7C,iCAAiC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;QACrD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5C,uCAAuC;QACvC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,mFAAmF;YACnF,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;gBACxB,OAAO,CAAC,QAAQ,GAAG,CAAC,aAAa,CAAC,CAAC;gBACnC,OAAO,CAAC,WAAW,GAAG,mBAAmB,CAAC;gBAC1C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -102,7 +102,22 @@ export class McpPromptLoader {
|
|
|
102
102
|
content: `Error invoking prompt: ${result['error']}`,
|
|
103
103
|
};
|
|
104
104
|
}
|
|
105
|
-
|
|
105
|
+
// Extract text content from the message
|
|
106
|
+
const message = result.messages?.[0];
|
|
107
|
+
if (!message?.content) {
|
|
108
|
+
return {
|
|
109
|
+
type: 'message',
|
|
110
|
+
messageType: 'error',
|
|
111
|
+
content: 'Received an empty or invalid prompt response from the server.',
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// Handle content as array or single item
|
|
115
|
+
const contentArray = Array.isArray(message.content)
|
|
116
|
+
? message.content
|
|
117
|
+
: [message.content];
|
|
118
|
+
// Find text content
|
|
119
|
+
const textContent = contentArray.find((item) => item.type === 'text');
|
|
120
|
+
if (!textContent || textContent.type !== 'text') {
|
|
106
121
|
return {
|
|
107
122
|
type: 'message',
|
|
108
123
|
messageType: 'error',
|
|
@@ -111,7 +126,7 @@ export class McpPromptLoader {
|
|
|
111
126
|
}
|
|
112
127
|
return {
|
|
113
128
|
type: 'submit_prompt',
|
|
114
|
-
content: JSON.stringify(
|
|
129
|
+
content: JSON.stringify(textContent.text),
|
|
115
130
|
};
|
|
116
131
|
}
|
|
117
132
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpPromptLoader.js","sourceRoot":"","sources":["../../../src/services/McpPromptLoader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"McpPromptLoader.js","sourceRoot":"","sources":["../../../src/services/McpPromptLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export interface ReleaseData {
|
|
7
|
+
version: string;
|
|
8
|
+
releaseNotes?: string;
|
|
9
|
+
publishedAt: string;
|
|
10
|
+
isLatest: boolean;
|
|
11
|
+
briefNotes?: string;
|
|
12
|
+
detailedChanges?: string[];
|
|
13
|
+
[key: string]: unknown;
|
|
14
|
+
}
|
|
15
|
+
export interface ChangelogEntry {
|
|
16
|
+
version: string;
|
|
17
|
+
changes: string[];
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Release Notes Cache Service
|
|
22
|
+
* Caches release notes and automatically invalidates when:
|
|
23
|
+
* 1. CLI version changes (new release installed)
|
|
24
|
+
* 2. Cache is older than 24 hours
|
|
25
|
+
*/
|
|
26
|
+
export declare class ReleaseNotesCache {
|
|
27
|
+
private static instance;
|
|
28
|
+
private cache;
|
|
29
|
+
private cacheFilePath;
|
|
30
|
+
private initPromise;
|
|
31
|
+
private constructor();
|
|
32
|
+
static getInstance(): ReleaseNotesCache;
|
|
33
|
+
private initializeCachePath;
|
|
34
|
+
/**
|
|
35
|
+
* Ensure cache path is initialized before use
|
|
36
|
+
*/
|
|
37
|
+
private ensureInitialized;
|
|
38
|
+
/**
|
|
39
|
+
* Get cached release notes if valid
|
|
40
|
+
*/
|
|
41
|
+
get(): Promise<{
|
|
42
|
+
data: ReleaseData[];
|
|
43
|
+
changelogData: Map<string, ChangelogEntry>;
|
|
44
|
+
} | null>;
|
|
45
|
+
/**
|
|
46
|
+
* Save release notes to cache
|
|
47
|
+
*/
|
|
48
|
+
set(data: ReleaseData[], changelogData: Map<string, ChangelogEntry>): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Check if cache is still valid
|
|
51
|
+
*/
|
|
52
|
+
private isCacheValid;
|
|
53
|
+
/**
|
|
54
|
+
* Clear the cache
|
|
55
|
+
*/
|
|
56
|
+
clear(): Promise<void>;
|
|
57
|
+
}
|