@blackbox_ai/blackbox-cli 0.0.9 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -196
- 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
|
@@ -0,0 +1,525 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { CommandKind } from './types.js';
|
|
7
|
+
import { VoiceRecordingService } from '../../services/voiceRecordingService.js';
|
|
8
|
+
import { isVoiceConfigured } from '../../config/voice.js';
|
|
9
|
+
import { parseElevenLabsError, formatElevenLabsError } from '../../services/elevenLabsErrors.js';
|
|
10
|
+
import process from 'node:process';
|
|
11
|
+
import WebSocket from 'ws';
|
|
12
|
+
// Debug mode flag - can be set via environment variable
|
|
13
|
+
const DEBUG_MODE = process.env['DEBUG'] === 'true' || process.env['DEBUG'] === '1' || process.env['DEBUG_MODE'] === 'true' || process.env['DEBUG_MODE'] === '1';
|
|
14
|
+
function debugLog(...args) {
|
|
15
|
+
if (DEBUG_MODE) {
|
|
16
|
+
console.debug('[DEBUG][VoiceCommand]', ...args);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function sanitizeApiKey(apiKey) {
|
|
20
|
+
if (apiKey.length <= 8)
|
|
21
|
+
return '***';
|
|
22
|
+
return `${apiKey.substring(0, 4)}...${apiKey.substring(apiKey.length - 4)}`;
|
|
23
|
+
}
|
|
24
|
+
const voiceRecordCommand = {
|
|
25
|
+
name: 'record',
|
|
26
|
+
altNames: ['start'],
|
|
27
|
+
description: 'record voice input with live transcription and submit as prompt',
|
|
28
|
+
kind: CommandKind.BUILT_IN,
|
|
29
|
+
action: async (context, _args) => {
|
|
30
|
+
const settings = context.services.settings;
|
|
31
|
+
debugLog('Voice record command invoked');
|
|
32
|
+
// Initialize voice service
|
|
33
|
+
const voiceService = new VoiceRecordingService({
|
|
34
|
+
sampleRate: 16000,
|
|
35
|
+
audioFormat: 'wav',
|
|
36
|
+
});
|
|
37
|
+
// Check API key - if not configured, open the config dialog
|
|
38
|
+
const apiKey = settings.merged.voice?.elevenLabs?.apiKey || process.env['ELEVENLABS_API_KEY'];
|
|
39
|
+
if (!apiKey) {
|
|
40
|
+
debugLog('No API key found, opening config dialog');
|
|
41
|
+
return {
|
|
42
|
+
type: 'dialog',
|
|
43
|
+
dialog: 'voice_config',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
debugLog('API key found:', sanitizeApiKey(apiKey));
|
|
47
|
+
try {
|
|
48
|
+
let fullTranscript = '';
|
|
49
|
+
let lastPartialTranscript = '';
|
|
50
|
+
let websocketError = null;
|
|
51
|
+
// Create temporary file path for recording
|
|
52
|
+
const os = await import('node:os');
|
|
53
|
+
const path = await import('node:path');
|
|
54
|
+
const tempFilePath = path.join(os.tmpdir(), `voice-recording-${Date.now()}.wav`);
|
|
55
|
+
// Connect to ElevenLabs WebSocket with English language explicitly set
|
|
56
|
+
const uri = "wss://api.elevenlabs.io/v1/speech-to-text/realtime?model_id=scribe_v2_realtime&language_code=en&commit_strategy=manual";
|
|
57
|
+
debugLog('Connecting to WebSocket:', uri);
|
|
58
|
+
const websocket = new WebSocket(uri, {
|
|
59
|
+
headers: {
|
|
60
|
+
"xi-api-key": apiKey,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
let sessionStarted = false;
|
|
64
|
+
let pendingItemSet = false;
|
|
65
|
+
let isRecordingPhase = true; // Flag to control which handler processes messages
|
|
66
|
+
// Set up WebSocket event handlers
|
|
67
|
+
websocket.on("open", () => {
|
|
68
|
+
debugLog('WebSocket connection opened');
|
|
69
|
+
});
|
|
70
|
+
const recordingMessageHandler = (event) => {
|
|
71
|
+
// Only process messages during recording phase
|
|
72
|
+
if (!isRecordingPhase)
|
|
73
|
+
return;
|
|
74
|
+
const data = JSON.parse(event.toString());
|
|
75
|
+
debugLog('WebSocket message received:', data.message_type);
|
|
76
|
+
switch (data.message_type) {
|
|
77
|
+
case "session_started":
|
|
78
|
+
sessionStarted = true;
|
|
79
|
+
debugLog('Session started successfully');
|
|
80
|
+
// Set pending item only once when session starts
|
|
81
|
+
if (!pendingItemSet) {
|
|
82
|
+
context.ui.setPendingItem({
|
|
83
|
+
type: 'gemini',
|
|
84
|
+
text: `🔴 Recording... (press Enter to stop, ESC to cancel)`,
|
|
85
|
+
});
|
|
86
|
+
pendingItemSet = true;
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
case "partial_transcript": {
|
|
90
|
+
const partialText = data.text || '';
|
|
91
|
+
debugLog('Partial transcript:', partialText ? `"${partialText}"` : '(empty)');
|
|
92
|
+
if (partialText && partialText.trim()) {
|
|
93
|
+
lastPartialTranscript = partialText;
|
|
94
|
+
const displayText = fullTranscript
|
|
95
|
+
? `${fullTranscript} ${partialText}`
|
|
96
|
+
: partialText;
|
|
97
|
+
// Create a new object to trigger React re-render
|
|
98
|
+
context.ui.setPendingItem({
|
|
99
|
+
type: 'gemini',
|
|
100
|
+
text: `🔴 Recording... (press Enter to stop, ESC to cancel)\n\n💬 ${displayText}`,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case "committed_transcript": {
|
|
106
|
+
const committedText = data.text || '';
|
|
107
|
+
debugLog('Committed transcript:', committedText ? `"${committedText}"` : '(empty)');
|
|
108
|
+
if (committedText) {
|
|
109
|
+
if (fullTranscript && !fullTranscript.endsWith(' ')) {
|
|
110
|
+
fullTranscript += ' ';
|
|
111
|
+
}
|
|
112
|
+
fullTranscript += committedText;
|
|
113
|
+
lastPartialTranscript = '';
|
|
114
|
+
const displayText = fullTranscript;
|
|
115
|
+
// Create a new object to trigger React re-render
|
|
116
|
+
context.ui.setPendingItem({
|
|
117
|
+
type: 'gemini',
|
|
118
|
+
text: `🔴 Recording... (press Enter to stop, ESC to cancel)\n\n💬 ${displayText}`,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
case "error":
|
|
124
|
+
debugLog('WebSocket error message:', JSON.stringify(data));
|
|
125
|
+
break;
|
|
126
|
+
default:
|
|
127
|
+
debugLog('Unknown message type:', data.message_type, JSON.stringify(data));
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
websocket.on("message", recordingMessageHandler);
|
|
132
|
+
websocket.on("error", (error) => {
|
|
133
|
+
// Capture WebSocket errors for later handling
|
|
134
|
+
websocketError = error;
|
|
135
|
+
debugLog('WebSocket error event:', error.message, error.stack);
|
|
136
|
+
console.error('WebSocket error:', error.message);
|
|
137
|
+
});
|
|
138
|
+
websocket.on("close", (code, reason) => {
|
|
139
|
+
// Handle WebSocket close events, especially authentication failures
|
|
140
|
+
const reasonString = reason.toString();
|
|
141
|
+
debugLog('WebSocket closed - code:', code, 'reason:', reasonString || '(none)');
|
|
142
|
+
// WebSocket close codes:
|
|
143
|
+
// 1000 = Normal closure
|
|
144
|
+
// 1001 = Going away (e.g., server going down or browser navigating away)
|
|
145
|
+
// 1005 = No Status Received (reserved code, used internally when no close code was received)
|
|
146
|
+
// 1008 = Policy violation (often used for auth failures)
|
|
147
|
+
// 4001 = Unauthorized (custom code used by some APIs)
|
|
148
|
+
// 1002 = Protocol error
|
|
149
|
+
// Handle authentication and protocol errors
|
|
150
|
+
if (code === 1008 || code === 4001 || code === 1002) {
|
|
151
|
+
// Parse the error using our error handler
|
|
152
|
+
const httpStatus = code === 1008 || code === 4001 ? 401 : 403;
|
|
153
|
+
const errorInfo = parseElevenLabsError(httpStatus, reasonString || 'Authentication failed');
|
|
154
|
+
const formattedError = formatElevenLabsError(errorInfo);
|
|
155
|
+
websocketError = new Error(formattedError);
|
|
156
|
+
debugLog('Authentication/protocol error detected');
|
|
157
|
+
console.error('WebSocket authentication error:', formattedError);
|
|
158
|
+
}
|
|
159
|
+
else if (code !== 1000 && code !== 1001 && code !== 1005) {
|
|
160
|
+
// Log non-normal closures
|
|
161
|
+
// Exclude 1000 (normal), 1001 (going away), and 1005 (no status received - benign)
|
|
162
|
+
const errorMessage = `WebSocket closed unexpectedly: ${reasonString || 'Unknown reason'} (code: ${code})`;
|
|
163
|
+
websocketError = new Error(errorMessage);
|
|
164
|
+
debugLog('Unexpected WebSocket closure');
|
|
165
|
+
console.error(errorMessage);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
debugLog('Normal WebSocket closure');
|
|
169
|
+
}
|
|
170
|
+
// Note: Codes 1000, 1001, and 1005 are considered normal and don't generate errors
|
|
171
|
+
});
|
|
172
|
+
// Wait for session to start with timeout and error checking
|
|
173
|
+
debugLog('Waiting for session to start...');
|
|
174
|
+
await new Promise((resolve, reject) => {
|
|
175
|
+
const timeout = setTimeout(() => {
|
|
176
|
+
clearInterval(checkSession);
|
|
177
|
+
debugLog('Session start timeout reached');
|
|
178
|
+
// Check for captured errors first
|
|
179
|
+
if (websocketError) {
|
|
180
|
+
debugLog('Rejecting with captured WebSocket error');
|
|
181
|
+
reject(websocketError);
|
|
182
|
+
}
|
|
183
|
+
else if (websocket.readyState === WebSocket.CLOSED || websocket.readyState === WebSocket.CLOSING) {
|
|
184
|
+
// WebSocket closed without starting session - likely an auth error
|
|
185
|
+
debugLog('WebSocket closed before session started');
|
|
186
|
+
const errorInfo = parseElevenLabsError(401, 'WebSocket connection closed before session started. This usually indicates an authentication issue.');
|
|
187
|
+
const formattedError = formatElevenLabsError(errorInfo);
|
|
188
|
+
reject(new Error(formattedError));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
debugLog('Session failed to start within timeout');
|
|
192
|
+
reject(new Error('WebSocket session failed to start (timeout after 10s)'));
|
|
193
|
+
}
|
|
194
|
+
}, 10000); // 10 second timeout
|
|
195
|
+
const checkSession = setInterval(() => {
|
|
196
|
+
// Check for errors first - this is the highest priority
|
|
197
|
+
if (websocketError) {
|
|
198
|
+
clearInterval(checkSession);
|
|
199
|
+
clearTimeout(timeout);
|
|
200
|
+
reject(websocketError);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
// Check if WebSocket closed without starting session
|
|
204
|
+
if (!sessionStarted && (websocket.readyState === WebSocket.CLOSED || websocket.readyState === WebSocket.CLOSING)) {
|
|
205
|
+
clearInterval(checkSession);
|
|
206
|
+
clearTimeout(timeout);
|
|
207
|
+
// WebSocket closed early - this is likely an authentication error
|
|
208
|
+
const errorInfo = parseElevenLabsError(401, 'WebSocket connection closed before session started. This usually indicates an authentication issue.');
|
|
209
|
+
const formattedError = formatElevenLabsError(errorInfo);
|
|
210
|
+
reject(new Error(formattedError));
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
// Check if session started successfully
|
|
214
|
+
if (sessionStarted) {
|
|
215
|
+
clearInterval(checkSession);
|
|
216
|
+
clearTimeout(timeout);
|
|
217
|
+
resolve();
|
|
218
|
+
}
|
|
219
|
+
}, 50); // Check more frequently (every 50ms instead of 100ms)
|
|
220
|
+
});
|
|
221
|
+
// Track elapsed time without updating UI
|
|
222
|
+
let isRecording = true;
|
|
223
|
+
let elapsedSeconds = 0;
|
|
224
|
+
const durationInterval = setInterval(() => {
|
|
225
|
+
if (isRecording) {
|
|
226
|
+
elapsedSeconds++;
|
|
227
|
+
}
|
|
228
|
+
}, 1000);
|
|
229
|
+
// WebSocket keepalive - send ping every 5 seconds to prevent timeout
|
|
230
|
+
const keepaliveInterval = setInterval(() => {
|
|
231
|
+
if (websocket.readyState === WebSocket.OPEN) {
|
|
232
|
+
websocket.ping();
|
|
233
|
+
}
|
|
234
|
+
}, 5000);
|
|
235
|
+
// Periodic commit interval - commit every 30 seconds to avoid buffer overflow
|
|
236
|
+
// This helps with very long recordings by ensuring audio is processed incrementally
|
|
237
|
+
let lastCommitTime = Date.now();
|
|
238
|
+
const COMMIT_INTERVAL_MS = 30000; // 30 seconds
|
|
239
|
+
// Start recording with streaming callback and save to tmp file
|
|
240
|
+
debugLog('Starting audio recording with streaming to WebSocket');
|
|
241
|
+
let audioChunksSent = 0;
|
|
242
|
+
let totalAudioBytesSent = 0;
|
|
243
|
+
await voiceService.startRecording(tempFilePath, (audioChunk) => {
|
|
244
|
+
// Stream audio chunks to WebSocket in real-time
|
|
245
|
+
if (websocket.readyState === WebSocket.OPEN) {
|
|
246
|
+
audioChunksSent++;
|
|
247
|
+
totalAudioBytesSent += audioChunk.length;
|
|
248
|
+
if (audioChunksSent === 1) {
|
|
249
|
+
debugLog('First audio chunk sent to WebSocket, size:', audioChunk.length, 'bytes');
|
|
250
|
+
}
|
|
251
|
+
else if (audioChunksSent % 100 === 0) {
|
|
252
|
+
debugLog(`Audio chunks sent: ${audioChunksSent}, total bytes: ${totalAudioBytesSent}`);
|
|
253
|
+
}
|
|
254
|
+
const chunkBase64 = audioChunk.toString("base64");
|
|
255
|
+
const now = Date.now();
|
|
256
|
+
const shouldCommit = (now - lastCommitTime) >= COMMIT_INTERVAL_MS;
|
|
257
|
+
if (shouldCommit) {
|
|
258
|
+
debugLog('Sending commit with audio chunk');
|
|
259
|
+
}
|
|
260
|
+
websocket.send(JSON.stringify({
|
|
261
|
+
message_type: "input_audio_chunk",
|
|
262
|
+
audio_base_64: chunkBase64,
|
|
263
|
+
commit: shouldCommit,
|
|
264
|
+
sample_rate: 16000,
|
|
265
|
+
}));
|
|
266
|
+
// Reset commit timer if we just committed
|
|
267
|
+
if (shouldCommit) {
|
|
268
|
+
lastCommitTime = now;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
debugLog('WebSocket not open, skipping audio chunk. State:', websocket.readyState);
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
// Wait for Enter key
|
|
276
|
+
await new Promise((resolve, reject) => {
|
|
277
|
+
const stdin = process.stdin;
|
|
278
|
+
const wasRaw = stdin.isRaw;
|
|
279
|
+
const wasPaused = stdin.isPaused();
|
|
280
|
+
stdin.setRawMode(true);
|
|
281
|
+
stdin.resume();
|
|
282
|
+
stdin.setEncoding('utf8');
|
|
283
|
+
const cleanup = () => {
|
|
284
|
+
stdin.setRawMode(wasRaw || false);
|
|
285
|
+
if (wasPaused) {
|
|
286
|
+
stdin.pause();
|
|
287
|
+
}
|
|
288
|
+
stdin.removeListener('data', onData);
|
|
289
|
+
};
|
|
290
|
+
const onData = (key) => {
|
|
291
|
+
// Enter key
|
|
292
|
+
if (key === '\r' || key === '\n') {
|
|
293
|
+
cleanup();
|
|
294
|
+
resolve();
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
// Ctrl+C
|
|
298
|
+
if (key === '\u0003') {
|
|
299
|
+
cleanup();
|
|
300
|
+
// Synchronously cancel recording to prevent race condition
|
|
301
|
+
isRecording = false;
|
|
302
|
+
isRecordingPhase = false; // Stop message handler immediately
|
|
303
|
+
clearInterval(durationInterval);
|
|
304
|
+
clearInterval(keepaliveInterval);
|
|
305
|
+
// Clear UI immediately
|
|
306
|
+
context.ui.setPendingItem(null);
|
|
307
|
+
// Close WebSocket synchronously
|
|
308
|
+
websocket.close();
|
|
309
|
+
// Cancel recording (fire and forget - don't wait)
|
|
310
|
+
voiceService.cancelRecording().catch((error) => {
|
|
311
|
+
console.error('Error during cleanup:', error);
|
|
312
|
+
});
|
|
313
|
+
// Reject immediately
|
|
314
|
+
reject(new Error('Recording cancelled'));
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
// ESC key
|
|
318
|
+
if (key === '\u001b') {
|
|
319
|
+
cleanup();
|
|
320
|
+
// Synchronously cancel recording to prevent race condition
|
|
321
|
+
isRecording = false;
|
|
322
|
+
isRecordingPhase = false; // Stop message handler immediately
|
|
323
|
+
clearInterval(durationInterval);
|
|
324
|
+
clearInterval(keepaliveInterval);
|
|
325
|
+
// Clear UI immediately
|
|
326
|
+
context.ui.setPendingItem(null);
|
|
327
|
+
// Close WebSocket synchronously
|
|
328
|
+
websocket.close();
|
|
329
|
+
// Cancel recording (fire and forget - don't wait)
|
|
330
|
+
voiceService.cancelRecording().catch((error) => {
|
|
331
|
+
console.error('Error during cleanup:', error);
|
|
332
|
+
});
|
|
333
|
+
// Reject immediately
|
|
334
|
+
reject(new Error('Recording cancelled'));
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
stdin.on('data', onData);
|
|
339
|
+
});
|
|
340
|
+
// Stop recording
|
|
341
|
+
isRecording = false;
|
|
342
|
+
isRecordingPhase = false; // Stop the recording handler from processing new messages
|
|
343
|
+
clearInterval(durationInterval);
|
|
344
|
+
clearInterval(keepaliveInterval);
|
|
345
|
+
debugLog('Stopping audio recording...');
|
|
346
|
+
await voiceService.stopRecording();
|
|
347
|
+
debugLog('Audio recording stopped');
|
|
348
|
+
debugLog('Total audio chunks sent:', audioChunksSent, 'Total bytes:', totalAudioBytesSent);
|
|
349
|
+
// Show processing message
|
|
350
|
+
context.ui.setPendingItem({
|
|
351
|
+
type: 'gemini',
|
|
352
|
+
text: `⏳ Processing final audio... (${elapsedSeconds}s recorded)`,
|
|
353
|
+
});
|
|
354
|
+
// Send final commit to flush any remaining audio in the buffer
|
|
355
|
+
if (websocket.readyState === WebSocket.OPEN) {
|
|
356
|
+
debugLog('Sending final commit to flush remaining audio');
|
|
357
|
+
websocket.send(JSON.stringify({
|
|
358
|
+
message_type: "input_audio_chunk",
|
|
359
|
+
audio_base_64: "",
|
|
360
|
+
commit: true,
|
|
361
|
+
sample_rate: 16000,
|
|
362
|
+
}));
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
debugLog('WARNING: WebSocket not open for final commit. State:', websocket.readyState);
|
|
366
|
+
}
|
|
367
|
+
// Wait for all remaining committed transcripts with dynamic timeout based on recording duration
|
|
368
|
+
// The API can send multiple committed_transcript messages after the final commit
|
|
369
|
+
// We need to keep listening and appending until no more data arrives
|
|
370
|
+
const baseTimeout = 3000; // 3 seconds base
|
|
371
|
+
const additionalTimePerMinute = 2000; // Add 2 seconds per minute of recording
|
|
372
|
+
const recordingMinutes = Math.ceil(elapsedSeconds / 60);
|
|
373
|
+
const dynamicTimeout = baseTimeout + (additionalTimePerMinute * recordingMinutes);
|
|
374
|
+
await new Promise((resolve) => {
|
|
375
|
+
let noDataTimeout;
|
|
376
|
+
// Main timeout - maximum time to wait
|
|
377
|
+
const mainTimeout = setTimeout(() => {
|
|
378
|
+
clearTimeout(noDataTimeout);
|
|
379
|
+
websocket.removeListener('message', finalTranscriptHandler);
|
|
380
|
+
resolve();
|
|
381
|
+
}, dynamicTimeout);
|
|
382
|
+
// Reset the no-data timeout whenever we receive data
|
|
383
|
+
const resetNoDataTimeout = () => {
|
|
384
|
+
clearTimeout(noDataTimeout);
|
|
385
|
+
// If no data for 1 second, assume we're done
|
|
386
|
+
noDataTimeout = setTimeout(() => {
|
|
387
|
+
clearTimeout(mainTimeout);
|
|
388
|
+
websocket.removeListener('message', finalTranscriptHandler);
|
|
389
|
+
resolve();
|
|
390
|
+
}, 1000);
|
|
391
|
+
};
|
|
392
|
+
// Listen for all committed transcripts and keep appending
|
|
393
|
+
const finalTranscriptHandler = (event) => {
|
|
394
|
+
const data = JSON.parse(event.toString());
|
|
395
|
+
if (data.message_type === "committed_transcript") {
|
|
396
|
+
const committedText = data.text || '';
|
|
397
|
+
if (committedText) {
|
|
398
|
+
// Append to full transcript
|
|
399
|
+
if (fullTranscript && !fullTranscript.endsWith(' ')) {
|
|
400
|
+
fullTranscript += ' ';
|
|
401
|
+
}
|
|
402
|
+
fullTranscript += committedText;
|
|
403
|
+
lastPartialTranscript = '';
|
|
404
|
+
// Update UI with latest transcript
|
|
405
|
+
context.ui.setPendingItem({
|
|
406
|
+
type: 'gemini',
|
|
407
|
+
text: `⏳ Processing final audio... (${elapsedSeconds}s recorded)\n\n💬 ${fullTranscript}`,
|
|
408
|
+
});
|
|
409
|
+
resetNoDataTimeout();
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
else if (data.message_type === "partial_transcript") {
|
|
413
|
+
// Also handle any partial transcripts that come after commit
|
|
414
|
+
const partialText = data.text || '';
|
|
415
|
+
if (partialText && partialText.trim()) {
|
|
416
|
+
lastPartialTranscript = partialText;
|
|
417
|
+
const displayText = fullTranscript
|
|
418
|
+
? `${fullTranscript} ${partialText}`
|
|
419
|
+
: partialText;
|
|
420
|
+
context.ui.setPendingItem({
|
|
421
|
+
type: 'gemini',
|
|
422
|
+
text: `⏳ Processing final audio... (${elapsedSeconds}s recorded)\n\n💬 ${displayText}`,
|
|
423
|
+
});
|
|
424
|
+
resetNoDataTimeout();
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
};
|
|
428
|
+
websocket.on('message', finalTranscriptHandler);
|
|
429
|
+
resetNoDataTimeout(); // Start the no-data timeout
|
|
430
|
+
});
|
|
431
|
+
// Close WebSocket
|
|
432
|
+
debugLog('Closing WebSocket connection');
|
|
433
|
+
websocket.close();
|
|
434
|
+
const duration = elapsedSeconds;
|
|
435
|
+
// Combine committed transcript with any remaining partial transcript
|
|
436
|
+
let finalTranscript = fullTranscript;
|
|
437
|
+
if (lastPartialTranscript) {
|
|
438
|
+
debugLog('Adding remaining partial transcript to final result');
|
|
439
|
+
finalTranscript = finalTranscript
|
|
440
|
+
? `${finalTranscript} ${lastPartialTranscript}`
|
|
441
|
+
: lastPartialTranscript;
|
|
442
|
+
}
|
|
443
|
+
debugLog('Final transcript length:', finalTranscript.length);
|
|
444
|
+
debugLog('Final transcript:', finalTranscript ? `"${finalTranscript}"` : '(empty)');
|
|
445
|
+
// Clear pending item
|
|
446
|
+
context.ui.setPendingItem(null);
|
|
447
|
+
// Show final result in history
|
|
448
|
+
context.ui.addItem({
|
|
449
|
+
type: 'gemini',
|
|
450
|
+
text: `✓ Recording complete: ${duration}s\n\nTranscription:\n${finalTranscript}`,
|
|
451
|
+
}, Date.now());
|
|
452
|
+
// Check if transcription is empty
|
|
453
|
+
if (!finalTranscript || finalTranscript.trim().length === 0) {
|
|
454
|
+
// Show error message instead of submitting empty transcription
|
|
455
|
+
return {
|
|
456
|
+
type: 'message',
|
|
457
|
+
messageType: 'error',
|
|
458
|
+
content: 'No speech detected. Please try recording again and speak clearly into your microphone.',
|
|
459
|
+
};
|
|
460
|
+
}
|
|
461
|
+
// Submit the transcribed text as a prompt
|
|
462
|
+
return {
|
|
463
|
+
type: 'submit_prompt',
|
|
464
|
+
content: finalTranscript,
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
catch (error) {
|
|
468
|
+
// Clear any pending UI items
|
|
469
|
+
context.ui.setPendingItem(null);
|
|
470
|
+
// Parse error message - the error should already be formatted with helpful information
|
|
471
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
472
|
+
debugLog('Voice recording error:', errorMessage);
|
|
473
|
+
if (error instanceof Error && error.stack) {
|
|
474
|
+
debugLog('Error stack:', error.stack);
|
|
475
|
+
}
|
|
476
|
+
// Check if the error message contains ElevenLabs error information
|
|
477
|
+
// If it already has "Solution:" it means it's been formatted by our error handler
|
|
478
|
+
if (errorMessage.includes('Solution:')) {
|
|
479
|
+
// Error is already formatted, use it directly
|
|
480
|
+
return {
|
|
481
|
+
type: 'message',
|
|
482
|
+
messageType: 'error',
|
|
483
|
+
content: `Voice recording failed:\n\n${errorMessage}`,
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
// For other errors, display as-is
|
|
487
|
+
return {
|
|
488
|
+
type: 'message',
|
|
489
|
+
messageType: 'error',
|
|
490
|
+
content: `Voice recording failed:\n\n${errorMessage}`,
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
},
|
|
494
|
+
};
|
|
495
|
+
const voiceConfigureCommand = {
|
|
496
|
+
name: 'configure',
|
|
497
|
+
altNames: ['config', 'setup'],
|
|
498
|
+
description: 'configure ElevenLabs API key for voice input',
|
|
499
|
+
kind: CommandKind.BUILT_IN,
|
|
500
|
+
action: async (_context, _args) => ({
|
|
501
|
+
type: 'dialog',
|
|
502
|
+
dialog: 'voice_config',
|
|
503
|
+
}),
|
|
504
|
+
};
|
|
505
|
+
export const voiceCommand = {
|
|
506
|
+
name: 'voice',
|
|
507
|
+
description: 'voice input commands',
|
|
508
|
+
kind: CommandKind.BUILT_IN,
|
|
509
|
+
subCommands: [voiceRecordCommand, voiceConfigureCommand],
|
|
510
|
+
action: async (context, _args) => {
|
|
511
|
+
// When called without subcommand, check if configured
|
|
512
|
+
// If not configured, open config dialog
|
|
513
|
+
// If configured, start recording
|
|
514
|
+
const settings = context.services.settings;
|
|
515
|
+
if (!isVoiceConfigured(settings)) {
|
|
516
|
+
return {
|
|
517
|
+
type: 'dialog',
|
|
518
|
+
dialog: 'voice_config',
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
// If configured, delegate to record command
|
|
522
|
+
return voiceRecordCommand.action(context, _args);
|
|
523
|
+
},
|
|
524
|
+
};
|
|
525
|
+
//# sourceMappingURL=voiceCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voiceCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/voiceCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type React from 'react';
|
|
7
|
-
import { AuthType
|
|
7
|
+
import { AuthType } from '@blackbox_ai/blackbox-cli-core';
|
|
8
8
|
import { type LoadedSettings, SettingScope } from '../../config/settings.js';
|
|
9
9
|
interface AuthDialogProps {
|
|
10
|
-
onSelect: (authMethod: AuthType | undefined, scope: SettingScope) => void;
|
|
10
|
+
onSelect: (authMethod: AuthType | undefined, scope: SettingScope, providerName?: string) => void;
|
|
11
11
|
settings: LoadedSettings;
|
|
12
12
|
initialErrorMessage?: string | null;
|
|
13
|
-
|
|
13
|
+
/** Whether the dialog is in closing animation state */
|
|
14
|
+
isClosing?: boolean;
|
|
14
15
|
}
|
|
15
|
-
export declare function AuthDialog({ onSelect, settings, initialErrorMessage,
|
|
16
|
+
export declare function AuthDialog({ onSelect, settings, initialErrorMessage, isClosing, }: AuthDialogProps): React.JSX.Element;
|
|
16
17
|
export {};
|