@blackbox_ai/blackbox-cli 0.0.9 → 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 +11 -2
- 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 +5 -2
- package/dist/src/commands/configure/ConfigureUI.js +181 -41
- package/dist/src/commands/configure/ConfigureUI.js.map +1 -1
- package/dist/src/commands/configure/index.js +35 -3
- package/dist/src/commands/configure/index.js.map +1 -1
- package/dist/src/commands/configure.js +20 -3
- package/dist/src/commands/configure.js.map +1 -1
- 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 +4 -2
- package/dist/src/config/auth.js +36 -1
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/config.d.ts +7 -1
- package/dist/src/config/config.js +68 -9
- 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.js +14 -39
- package/dist/src/config/modelFetcher.js.map +1 -1
- package/dist/src/config/settings.js +64 -0
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +351 -0
- package/dist/src/config/settingsSchema.js +351 -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 +57 -27
- 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 +418 -5
- 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 +5 -4
- package/dist/src/ui/components/AuthDialog.js +89 -52
- 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 +3 -1
- package/dist/src/ui/components/GenericProviderKeyPrompt.js +17 -4
- package/dist/src/ui/components/GenericProviderKeyPrompt.js.map +1 -1
- 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 +4 -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 +11 -2
- 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
|
@@ -7,6 +7,7 @@ import { aboutCommand } from '../ui/commands/aboutCommand.js';
|
|
|
7
7
|
import { agentsCommand } from '../ui/commands/agentsCommand.js';
|
|
8
8
|
import { approvalModeCommand } from '../ui/commands/approvalModeCommand.js';
|
|
9
9
|
import { authCommand } from '../ui/commands/authCommand.js';
|
|
10
|
+
import { browseExtensionsCommand } from '../ui/commands/browseExtensionsCommand.js';
|
|
10
11
|
import { bugCommand } from '../ui/commands/bugCommand.js';
|
|
11
12
|
import { chatCommand } from '../ui/commands/chatCommand.js';
|
|
12
13
|
import { clearCommand } from '../ui/commands/clearCommand.js';
|
|
@@ -18,7 +19,6 @@ import { directoryCommand } from '../ui/commands/directoryCommand.js';
|
|
|
18
19
|
import { editorCommand } from '../ui/commands/editorCommand.js';
|
|
19
20
|
import { extensionsCommand } from '../ui/commands/extensionsCommand.js';
|
|
20
21
|
import { helpCommand } from '../ui/commands/helpCommand.js';
|
|
21
|
-
import { ideCommand } from '../ui/commands/ideCommand.js';
|
|
22
22
|
import { initCommand } from '../ui/commands/initCommand.js';
|
|
23
23
|
import { mcpCommand } from '../ui/commands/mcpCommand.js';
|
|
24
24
|
import { memoryCommand } from '../ui/commands/memoryCommand.js';
|
|
@@ -34,6 +34,15 @@ import { themeCommand } from '../ui/commands/themeCommand.js';
|
|
|
34
34
|
import { toolsCommand } from '../ui/commands/toolsCommand.js';
|
|
35
35
|
import { vimCommand } from '../ui/commands/vimCommand.js';
|
|
36
36
|
import { setupGithubCommand } from '../ui/commands/setupGithubCommand.js';
|
|
37
|
+
import { dbCommand } from '../ui/commands/dbCommand.js';
|
|
38
|
+
import { voiceCommand } from '../ui/commands/voiceCommand.js';
|
|
39
|
+
import { multiAgentCommand } from '../ui/commands/multiAgentCommand.js';
|
|
40
|
+
import { multiAgentConfigureCommand } from '../ui/commands/multiAgentConfigureCommand.js';
|
|
41
|
+
import { shellPermissionsCommand } from '../ui/commands/shellPermissionsCommand.js';
|
|
42
|
+
import { toolPermissionsCommand } from '../ui/commands/toolPermissionsCommand.js';
|
|
43
|
+
import { skillCommand } from '../ui/commands/skillCommand.js';
|
|
44
|
+
import { releasesCommand } from '../ui/commands/releasesCommand.js';
|
|
45
|
+
import { tasksCommand } from '../ui/commands/tasksCommand.js';
|
|
37
46
|
/**
|
|
38
47
|
* Loads the core, hard-coded slash commands that are an integral part
|
|
39
48
|
* of the Gemini CLI application.
|
|
@@ -56,6 +65,7 @@ export class BuiltinCommandLoader {
|
|
|
56
65
|
agentsCommand,
|
|
57
66
|
approvalModeCommand,
|
|
58
67
|
authCommand,
|
|
68
|
+
browseExtensionsCommand,
|
|
59
69
|
bugCommand,
|
|
60
70
|
chatCommand,
|
|
61
71
|
clearCommand,
|
|
@@ -67,11 +77,12 @@ export class BuiltinCommandLoader {
|
|
|
67
77
|
editorCommand,
|
|
68
78
|
extensionsCommand,
|
|
69
79
|
helpCommand,
|
|
70
|
-
ideCommand(this.config),
|
|
71
80
|
initCommand,
|
|
72
81
|
mcpCommand,
|
|
73
82
|
memoryCommand,
|
|
74
83
|
modelCommand,
|
|
84
|
+
multiAgentCommand,
|
|
85
|
+
multiAgentConfigureCommand,
|
|
75
86
|
privacyCommand,
|
|
76
87
|
quitCommand,
|
|
77
88
|
quitConfirmCommand,
|
|
@@ -81,9 +92,16 @@ export class BuiltinCommandLoader {
|
|
|
81
92
|
themeCommand,
|
|
82
93
|
toolsCommand,
|
|
83
94
|
settingsCommand,
|
|
95
|
+
shellPermissionsCommand,
|
|
96
|
+
toolPermissionsCommand,
|
|
97
|
+
skillCommand,
|
|
98
|
+
releasesCommand,
|
|
84
99
|
vimCommand,
|
|
85
100
|
setupGithubCommand,
|
|
86
101
|
terminalSetupCommand,
|
|
102
|
+
voiceCommand,
|
|
103
|
+
dbCommand,
|
|
104
|
+
tasksCommand,
|
|
87
105
|
];
|
|
88
106
|
return allDefinitions.filter((cmd) => cmd !== null);
|
|
89
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { CountTokensParameters, CountTokensResponse, EmbedContentParameters, EmbedContentResponse, GenerateContentParameters } from '@google/genai';
|
|
7
|
+
import { GenerateContentResponse } from '@google/genai';
|
|
8
|
+
import type { ContentGenerator, UserTierId } from '@blackbox_ai/blackbox-cli-core';
|
|
9
|
+
/**
|
|
10
|
+
* EncryptedContentGenerator implements the ContentGenerator interface
|
|
11
|
+
* but routes requests through the BlackboxAI encryption system instead of OpenAI API
|
|
12
|
+
*/
|
|
13
|
+
export declare class EncryptedContentGenerator implements ContentGenerator {
|
|
14
|
+
private encryptedService;
|
|
15
|
+
private initialized;
|
|
16
|
+
constructor(_sessionId?: string);
|
|
17
|
+
/**
|
|
18
|
+
* Initialize the encrypted service
|
|
19
|
+
*/
|
|
20
|
+
private ensureInitialized;
|
|
21
|
+
/**
|
|
22
|
+
* Extract tools from request and format them for system prompt
|
|
23
|
+
*/
|
|
24
|
+
private extractAndFormatTools;
|
|
25
|
+
/**
|
|
26
|
+
* Convert Content[] to message history format expected by EncryptedChatService
|
|
27
|
+
*/
|
|
28
|
+
private convertToMessageHistory;
|
|
29
|
+
/**
|
|
30
|
+
* Convert Parts to text content
|
|
31
|
+
*/
|
|
32
|
+
private convertPartsToText;
|
|
33
|
+
/**
|
|
34
|
+
* Extract Content objects from the mixed content array
|
|
35
|
+
*/
|
|
36
|
+
private extractContentArray;
|
|
37
|
+
/**
|
|
38
|
+
* Parse tool calls from encrypted response text using enhanced parser
|
|
39
|
+
*/
|
|
40
|
+
private parseToolCallsFromResponse;
|
|
41
|
+
/**
|
|
42
|
+
* Detect model type from response format
|
|
43
|
+
*/
|
|
44
|
+
private detectModelType;
|
|
45
|
+
/**
|
|
46
|
+
* Remove tool call markup from response text to get clean text content
|
|
47
|
+
*/
|
|
48
|
+
private removeToolCallMarkup;
|
|
49
|
+
/**
|
|
50
|
+
* Extract tools from request for validation
|
|
51
|
+
*/
|
|
52
|
+
private extractToolsFromRequest;
|
|
53
|
+
/**
|
|
54
|
+
* Create a fallback response for errors
|
|
55
|
+
*/
|
|
56
|
+
private createFallbackResponse;
|
|
57
|
+
generateContent(request: GenerateContentParameters, _userPromptId: string): Promise<GenerateContentResponse>;
|
|
58
|
+
generateContentStream(request: GenerateContentParameters, _userPromptId: string): Promise<AsyncGenerator<GenerateContentResponse>>;
|
|
59
|
+
private generateContentStreamInternal;
|
|
60
|
+
countTokens(request: CountTokensParameters): Promise<CountTokensResponse>;
|
|
61
|
+
embedContent(request: EmbedContentParameters): Promise<EmbedContentResponse>;
|
|
62
|
+
userTier?: UserTierId;
|
|
63
|
+
}
|
|
@@ -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
|
+
}
|