@blackbox_ai/blackbox-cli 0.0.7 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -183
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json +13 -3
- package/dist/src/built-in-extensions/conductor/README.md +242 -0
- package/dist/src/built-in-extensions/conductor/blackbox-extension.json +5 -0
- package/dist/src/built-in-extensions/conductor/commands/conductor/implement.toml +170 -0
- package/dist/src/built-in-extensions/conductor/commands/conductor/newTrack.toml +142 -0
- package/dist/src/built-in-extensions/conductor/commands/conductor/revert.toml +122 -0
- package/dist/src/built-in-extensions/conductor/commands/conductor/setup.toml +424 -0
- package/dist/src/built-in-extensions/conductor/commands/conductor/status.toml +57 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/general.md +23 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/go.md +48 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/html-css.md +49 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/javascript.md +51 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/python.md +37 -0
- package/dist/src/built-in-extensions/conductor/templates/code_styleguides/typescript.md +43 -0
- package/dist/src/built-in-extensions/conductor/templates/workflow.md +333 -0
- package/dist/src/built-in-extensions-data.d.ts +15 -0
- package/dist/src/built-in-extensions-data.js +61 -0
- package/dist/src/built-in-extensions-data.js.map +1 -0
- package/dist/src/commands/configure/ConfigureUI.d.ts +14 -0
- package/dist/src/commands/configure/ConfigureUI.js +556 -0
- package/dist/src/commands/configure/ConfigureUI.js.map +1 -0
- package/dist/src/commands/configure/index.d.ts +7 -0
- package/dist/src/commands/configure/index.js +62 -0
- package/dist/src/commands/configure/index.js.map +1 -0
- package/dist/src/commands/configure.d.ts +7 -0
- package/dist/src/commands/configure.js +276 -0
- package/dist/src/commands/configure.js.map +1 -0
- package/dist/src/commands/configure.test.d.ts +6 -0
- package/dist/src/commands/configure.test.js +32 -0
- package/dist/src/commands/configure.test.js.map +1 -0
- package/dist/src/commands/extensions/enable.js +1 -1
- package/dist/src/commands/extensions/enable.js.map +1 -1
- package/dist/src/commands/extensions/examples/context/CONTEXT.md +16 -0
- package/dist/src/commands/extensions/examples/context/blackbox-extension.json +5 -0
- package/dist/src/commands/extensions/examples/custom-commands/blackbox-extension.json +4 -0
- package/dist/src/commands/extensions/examples/custom-commands/commands/deploy.toml +12 -0
- package/dist/src/commands/extensions/examples/exclude-tools/README.md +28 -0
- package/dist/src/commands/extensions/examples/exclude-tools/blackbox-extension.json +5 -0
- package/dist/src/commands/extensions/install.d.ts +6 -2
- package/dist/src/commands/extensions/install.js +109 -15
- package/dist/src/commands/extensions/install.js.map +1 -1
- package/dist/src/commands/extensions/link.d.ts +12 -0
- package/dist/src/commands/extensions/link.js +53 -0
- package/dist/src/commands/extensions/link.js.map +1 -0
- package/dist/src/commands/extensions/list.js +2 -2
- package/dist/src/commands/extensions/list.js.map +1 -1
- package/dist/src/commands/extensions/new.d.ts +13 -0
- package/dist/src/commands/extensions/new.js +145 -0
- package/dist/src/commands/extensions/new.js.map +1 -0
- package/dist/src/commands/extensions/settings.d.ts +18 -0
- package/dist/src/commands/extensions/settings.js +98 -0
- package/dist/src/commands/extensions/settings.js.map +1 -0
- package/dist/src/commands/extensions/update.d.ts +2 -1
- package/dist/src/commands/extensions/update.js +59 -10
- package/dist/src/commands/extensions/update.js.map +1 -1
- package/dist/src/commands/extensions/validate.d.ts +12 -0
- package/dist/src/commands/extensions/validate.js +72 -0
- package/dist/src/commands/extensions/validate.js.map +1 -0
- package/dist/src/commands/extensions.js +10 -1
- package/dist/src/commands/extensions.js.map +1 -1
- package/dist/src/commands/mcp/add.d.ts +11 -0
- package/dist/src/commands/mcp/add.js +61 -7
- package/dist/src/commands/mcp/add.js.map +1 -1
- package/dist/src/commands/update.d.ts +7 -0
- package/dist/src/commands/update.js +103 -0
- package/dist/src/commands/update.js.map +1 -0
- package/dist/src/commands/voice.d.ts +7 -0
- package/dist/src/commands/voice.js +510 -0
- package/dist/src/commands/voice.js.map +1 -0
- package/dist/src/config/auth.d.ts +32 -1
- package/dist/src/config/auth.js +317 -2
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/config.d.ts +7 -1
- package/dist/src/config/config.js +71 -10
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +6 -1
- package/dist/src/config/extension.js +137 -11
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/extensions/github.d.ts +48 -0
- package/dist/src/config/extensions/github.js +308 -0
- package/dist/src/config/extensions/github.js.map +1 -0
- package/dist/src/config/keyBindings.d.ts +1 -0
- package/dist/src/config/keyBindings.js +3 -0
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/modelFetcher.d.ts +21 -0
- package/dist/src/config/modelFetcher.js +226 -0
- package/dist/src/config/modelFetcher.js.map +1 -0
- package/dist/src/config/settings.js +101 -0
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +626 -0
- package/dist/src/config/settingsSchema.js +626 -0
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/voice.d.ts +31 -0
- package/dist/src/config/voice.js +82 -0
- package/dist/src/config/voice.js.map +1 -0
- package/dist/src/encrypt/attestation.d.ts +5 -0
- package/dist/src/encrypt/attestation.js +100 -0
- package/dist/src/encrypt/attestation.js.map +1 -0
- package/dist/src/encrypt/bridge.d.ts +30 -0
- package/dist/src/encrypt/bridge.js +32 -0
- package/dist/src/encrypt/bridge.js.map +1 -0
- package/dist/src/encrypt/client.d.ts +14 -0
- package/dist/src/encrypt/client.js +133 -0
- package/dist/src/encrypt/client.js.map +1 -0
- package/dist/src/encrypt/config.d.ts +26 -0
- package/dist/src/encrypt/config.js +51 -0
- package/dist/src/encrypt/config.js.map +1 -0
- package/dist/src/encrypt/crypto-utils.d.ts +57 -0
- package/dist/src/encrypt/crypto-utils.js +257 -0
- package/dist/src/encrypt/crypto-utils.js.map +1 -0
- package/dist/src/encrypt/index.d.ts +12 -0
- package/dist/src/encrypt/index.js +13 -0
- package/dist/src/encrypt/index.js.map +1 -0
- package/dist/src/encrypt/retry-utils.d.ts +20 -0
- package/dist/src/encrypt/retry-utils.js +60 -0
- package/dist/src/encrypt/retry-utils.js.map +1 -0
- package/dist/src/encrypt/sessions.d.ts +17 -0
- package/dist/src/encrypt/sessions.js +221 -0
- package/dist/src/encrypt/sessions.js.map +1 -0
- package/dist/src/encrypt/streaming-client.d.ts +29 -0
- package/dist/src/encrypt/streaming-client.js +226 -0
- package/dist/src/encrypt/streaming-client.js.map +1 -0
- package/dist/src/encrypt/types.d.ts +81 -0
- package/dist/src/encrypt/types.js +2 -0
- package/dist/src/encrypt/types.js.map +1 -0
- package/dist/src/gemini.d.ts +1 -1
- package/dist/src/gemini.js +61 -28
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +3 -3
- package/dist/src/generated/git-commit.js +3 -3
- package/dist/src/nonInteractiveCli.d.ts +4 -0
- package/dist/src/nonInteractiveCli.js +563 -6
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/on-demand-extensions/README.md +266 -0
- package/dist/src/on-demand-extensions/git-helper/README.md +16 -0
- package/dist/src/on-demand-extensions/git-helper/blackbox-extension.json +5 -0
- package/dist/src/on-demand-extensions/git-helper/commands/git/branch-cleanup.toml +18 -0
- package/dist/src/on-demand-extensions/git-helper/commands/git/smart-commit.toml +22 -0
- package/dist/src/on-demand-extensions/greet/README.md +76 -0
- package/dist/src/on-demand-extensions/greet/blackbox-extension.json +5 -0
- package/dist/src/on-demand-extensions/greet/commands/greet/hello.toml +9 -0
- package/dist/src/on-demand-extensions/registry.json +251 -0
- package/dist/src/services/BuiltinCommandLoader.js +20 -2
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/EncryptedContentGenerator.d.ts +63 -0
- package/dist/src/services/EncryptedContentGenerator.js +426 -0
- package/dist/src/services/EncryptedContentGenerator.js.map +1 -0
- package/dist/src/services/McpCommandLoader.d.ts +24 -0
- package/dist/src/services/McpCommandLoader.js +50 -0
- package/dist/src/services/McpCommandLoader.js.map +1 -0
- package/dist/src/services/McpPromptLoader.js +17 -2
- package/dist/src/services/McpPromptLoader.js.map +1 -1
- package/dist/src/services/ReleaseNotesCache.d.ts +57 -0
- package/dist/src/services/ReleaseNotesCache.js +186 -0
- package/dist/src/services/ReleaseNotesCache.js.map +1 -0
- package/dist/src/services/elevenLabsErrors.d.ts +65 -0
- package/dist/src/services/elevenLabsErrors.js +233 -0
- package/dist/src/services/elevenLabsErrors.js.map +1 -0
- package/dist/src/services/elevenLabsService.d.ts +62 -0
- package/dist/src/services/elevenLabsService.js +186 -0
- package/dist/src/services/elevenLabsService.js.map +1 -0
- package/dist/src/services/elevenLabsStreamingService.d.ts +59 -0
- package/dist/src/services/elevenLabsStreamingService.js +202 -0
- package/dist/src/services/elevenLabsStreamingService.js.map +1 -0
- package/dist/src/services/elevenLabsTokenService.d.ts +21 -0
- package/dist/src/services/elevenLabsTokenService.js +42 -0
- package/dist/src/services/elevenLabsTokenService.js.map +1 -0
- package/dist/src/services/voiceInputHandler.d.ts +26 -0
- package/dist/src/services/voiceInputHandler.js +209 -0
- package/dist/src/services/voiceInputHandler.js.map +1 -0
- package/dist/src/services/voiceRecordingService.d.ts +69 -0
- package/dist/src/services/voiceRecordingService.js +397 -0
- package/dist/src/services/voiceRecordingService.js.map +1 -0
- package/dist/src/ui/App.d.ts +1 -0
- package/dist/src/ui/App.js +412 -63
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/commands/browseExtensionsCommand.d.ts +7 -0
- package/dist/src/ui/commands/browseExtensionsCommand.js +16 -0
- package/dist/src/ui/commands/browseExtensionsCommand.js.map +1 -0
- package/dist/src/ui/commands/chatCommand.js +356 -16
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/dbCommand.d.ts +7 -0
- package/dist/src/ui/commands/dbCommand.js +37 -0
- package/dist/src/ui/commands/dbCommand.js.map +1 -0
- package/dist/src/ui/commands/docsCommand.js +1 -1
- package/dist/src/ui/commands/docsCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +3 -2
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpInvokeCommand.d.ts +16 -0
- package/dist/src/ui/commands/mcpInvokeCommand.js +263 -0
- package/dist/src/ui/commands/mcpInvokeCommand.js.map +1 -0
- package/dist/src/ui/commands/modelCommand.js +79 -5
- package/dist/src/ui/commands/modelCommand.js.map +1 -1
- package/dist/src/ui/commands/multiAgentCommand.d.ts +7 -0
- package/dist/src/ui/commands/multiAgentCommand.js +833 -0
- package/dist/src/ui/commands/multiAgentCommand.js.map +1 -0
- package/dist/src/ui/commands/multiAgentConfigureCommand.d.ts +7 -0
- package/dist/src/ui/commands/multiAgentConfigureCommand.js +17 -0
- package/dist/src/ui/commands/multiAgentConfigureCommand.js.map +1 -0
- package/dist/src/ui/commands/quitCommand.js +71 -2
- package/dist/src/ui/commands/quitCommand.js.map +1 -1
- package/dist/src/ui/commands/releasesCommand.d.ts +7 -0
- package/dist/src/ui/commands/releasesCommand.js +16 -0
- package/dist/src/ui/commands/releasesCommand.js.map +1 -0
- package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
- package/dist/src/ui/commands/shellPermissionsCommand.d.ts +7 -0
- package/dist/src/ui/commands/shellPermissionsCommand.js +109 -0
- package/dist/src/ui/commands/shellPermissionsCommand.js.map +1 -0
- package/dist/src/ui/commands/skillCommand.d.ts +7 -0
- package/dist/src/ui/commands/skillCommand.js +240 -0
- package/dist/src/ui/commands/skillCommand.js.map +1 -0
- package/dist/src/ui/commands/statsCommand.js +243 -1
- package/dist/src/ui/commands/statsCommand.js.map +1 -1
- package/dist/src/ui/commands/tasksCommand.d.ts +7 -0
- package/dist/src/ui/commands/tasksCommand.js +535 -0
- package/dist/src/ui/commands/tasksCommand.js.map +1 -0
- package/dist/src/ui/commands/toolPermissionsCommand.d.ts +7 -0
- package/dist/src/ui/commands/toolPermissionsCommand.js +408 -0
- package/dist/src/ui/commands/toolPermissionsCommand.js.map +1 -0
- package/dist/src/ui/commands/types.d.ts +10 -2
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/commands/voiceCommand.d.ts +7 -0
- package/dist/src/ui/commands/voiceCommand.js +525 -0
- package/dist/src/ui/commands/voiceCommand.js.map +1 -0
- package/dist/src/ui/components/AuthDialog.d.ts +4 -2
- package/dist/src/ui/components/AuthDialog.js +349 -64
- package/dist/src/ui/components/AuthDialog.js.map +1 -1
- package/dist/src/ui/components/AuthInProgress.js +3 -1
- package/dist/src/ui/components/AuthInProgress.js.map +1 -1
- package/dist/src/ui/components/ExtensionsDialog.d.ts +11 -0
- package/dist/src/ui/components/ExtensionsDialog.js +303 -0
- package/dist/src/ui/components/ExtensionsDialog.js.map +1 -0
- package/dist/src/ui/components/GenericProviderKeyPrompt.d.ts +24 -0
- package/dist/src/ui/components/GenericProviderKeyPrompt.js +99 -0
- package/dist/src/ui/components/GenericProviderKeyPrompt.js.map +1 -0
- package/dist/src/ui/components/Header.js +10 -1
- package/dist/src/ui/components/Header.js.map +1 -1
- package/dist/src/ui/components/HistoryBrowserDialog.d.ts +15 -0
- package/dist/src/ui/components/HistoryBrowserDialog.js +166 -0
- package/dist/src/ui/components/HistoryBrowserDialog.js.map +1 -0
- package/dist/src/ui/components/HistoryItemDisplay.js +13 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +22 -8
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.d.ts +4 -0
- package/dist/src/ui/components/LoadingIndicator.js +16 -4
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.test.js +108 -16
- package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/components/ModelSelectionDialog.d.ts +2 -0
- package/dist/src/ui/components/ModelSelectionDialog.js +33 -4
- package/dist/src/ui/components/ModelSelectionDialog.js.map +1 -1
- package/dist/src/ui/components/ModelSelectionDialog.test.js +41 -4
- package/dist/src/ui/components/ModelSelectionDialog.test.js.map +1 -1
- package/dist/src/ui/components/ReleaseNotesDialog.d.ts +23 -0
- package/dist/src/ui/components/ReleaseNotesDialog.js +150 -0
- package/dist/src/ui/components/ReleaseNotesDialog.js.map +1 -0
- package/dist/src/ui/components/ReleaseNotesDisplay.d.ts +18 -0
- package/dist/src/ui/components/ReleaseNotesDisplay.js +14 -0
- package/dist/src/ui/components/ReleaseNotesDisplay.js.map +1 -0
- package/dist/src/ui/components/SessionSummaryDisplay.d.ts +2 -0
- package/dist/src/ui/components/SessionSummaryDisplay.js +1 -1
- package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +3 -1
- package/dist/src/ui/components/SettingsDialog.js +17 -7
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/ShellConfirmationDialog.d.ts +2 -0
- package/dist/src/ui/components/ShellConfirmationDialog.js +7 -3
- package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.d.ts +2 -0
- package/dist/src/ui/components/StatsDisplay.js +92 -7
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.js +6 -1
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.d.ts +3 -1
- package/dist/src/ui/components/ThemeDialog.js +5 -2
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/Tips.js +1 -4
- package/dist/src/ui/components/Tips.js.map +1 -1
- package/dist/src/ui/components/TodoListDialog.d.ts +13 -0
- package/dist/src/ui/components/TodoListDialog.js +29 -0
- package/dist/src/ui/components/TodoListDialog.js.map +1 -0
- package/dist/src/ui/components/TodoListDialog.test.d.ts +6 -0
- package/dist/src/ui/components/TodoListDialog.test.js +60 -0
- package/dist/src/ui/components/TodoListDialog.test.js.map +1 -0
- package/dist/src/ui/components/VoiceConfigDialog.d.ts +17 -0
- package/dist/src/ui/components/VoiceConfigDialog.js +47 -0
- package/dist/src/ui/components/VoiceConfigDialog.js.map +1 -0
- package/dist/src/ui/components/messages/GeminiMessage.js +4 -0
- package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
- package/dist/src/ui/components/messages/GeminiMessageContent.js +4 -0
- package/dist/src/ui/components/messages/GeminiMessageContent.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +2 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +96 -9
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js +3 -3
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.js +1 -1
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js +9 -12
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
- package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.d.ts +25 -0
- package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.js +179 -0
- package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.js.map +1 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +3 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.js +57 -18
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/TextInput.d.ts +2 -1
- package/dist/src/ui/components/shared/TextInput.js +5 -2
- package/dist/src/ui/components/shared/TextInput.js.map +1 -1
- package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js +3 -3
- package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js.map +1 -1
- package/dist/src/ui/constants.d.ts +3 -3
- package/dist/src/ui/constants.js +3 -3
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/contexts/SessionContext.d.ts +6 -0
- package/dist/src/ui/contexts/SessionContext.js +24 -2
- package/dist/src/ui/contexts/SessionContext.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.js +139 -57
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +189 -17
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAdaptiveStream.d.ts +42 -0
- package/dist/src/ui/hooks/useAdaptiveStream.js +31 -0
- package/dist/src/ui/hooks/useAdaptiveStream.js.map +1 -0
- package/dist/src/ui/hooks/useAtCompletion.js +20 -4
- package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useAuthCommand.d.ts +2 -2
- package/dist/src/ui/hooks/useAuthCommand.js +99 -5
- package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
- package/dist/src/ui/hooks/useCommandCompletion.js +14 -10
- package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useDialogClose.d.ts +10 -0
- package/dist/src/ui/hooks/useDialogClose.js +25 -0
- package/dist/src/ui/hooks/useDialogClose.js.map +1 -1
- package/dist/src/ui/hooks/useDialogCloseAnimation.d.ts +22 -0
- package/dist/src/ui/hooks/useDialogCloseAnimation.js +68 -0
- package/dist/src/ui/hooks/useDialogCloseAnimation.js.map +1 -0
- package/dist/src/ui/hooks/useEncryptedStream.d.ts +22 -0
- package/dist/src/ui/hooks/useEncryptedStream.js +378 -0
- package/dist/src/ui/hooks/useEncryptedStream.js.map +1 -0
- package/dist/src/ui/hooks/useExtensionsDialog.d.ts +10 -0
- package/dist/src/ui/hooks/useExtensionsDialog.js +21 -0
- package/dist/src/ui/hooks/useExtensionsDialog.js.map +1 -0
- package/dist/src/ui/hooks/useGeminiStream.js +6 -2
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.js +3 -2
- package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.test.js +27 -5
- package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/useMultiAgentConfigCommand.d.ts +10 -0
- package/dist/src/ui/hooks/useMultiAgentConfigCommand.js +21 -0
- package/dist/src/ui/hooks/useMultiAgentConfigCommand.js.map +1 -0
- package/dist/src/ui/hooks/useReleasesDialog.d.ts +20 -0
- package/dist/src/ui/hooks/useReleasesDialog.js +214 -0
- package/dist/src/ui/hooks/useReleasesDialog.js.map +1 -0
- package/dist/src/ui/hooks/useSlashCompletion.js +10 -8
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useTodoList.d.ts +17 -0
- package/dist/src/ui/hooks/useTodoList.js +51 -0
- package/dist/src/ui/hooks/useTodoList.js.map +1 -0
- package/dist/src/ui/keyMatchers.test.js +6 -0
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/themes/blackbox-dark.js +1 -1
- package/dist/src/ui/themes/blackbox-dark.js.map +1 -1
- package/dist/src/ui/themes/blackbox-light.js +1 -1
- package/dist/src/ui/themes/blackbox-light.js.map +1 -1
- package/dist/src/ui/types.d.ts +15 -2
- package/dist/src/ui/types.js +1 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/computeStats.d.ts +25 -1
- package/dist/src/ui/utils/computeStats.js +58 -1
- package/dist/src/ui/utils/computeStats.js.map +1 -1
- package/dist/src/ui/utils/updateCheck.js +37 -54
- package/dist/src/ui/utils/updateCheck.js.map +1 -1
- package/dist/src/utils/backgroundUpdateCheck.d.ts +15 -0
- package/dist/src/utils/backgroundUpdateCheck.js +48 -0
- package/dist/src/utils/backgroundUpdateCheck.js.map +1 -0
- package/dist/src/utils/gitAutoDetect.d.ts +16 -0
- package/dist/src/utils/gitAutoDetect.js +45 -0
- package/dist/src/utils/gitAutoDetect.js.map +1 -0
- package/dist/src/utils/installationInfo.d.ts +1 -0
- package/dist/src/utils/installationInfo.js +24 -4
- package/dist/src/utils/installationInfo.js.map +1 -1
- package/dist/src/utils/preLaunchUpdateCheck.d.ts +17 -0
- package/dist/src/utils/preLaunchUpdateCheck.js +75 -0
- package/dist/src/utils/preLaunchUpdateCheck.js.map +1 -0
- package/dist/src/utils/version.js +12 -1
- package/dist/src/utils/version.js.map +1 -1
- package/dist/src/utils/versionStorage.d.ts +50 -0
- package/dist/src/utils/versionStorage.js +224 -0
- package/dist/src/utils/versionStorage.js.map +1 -0
- package/dist/src/validateNonInterActiveAuth.js +10 -3
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/src/virtual-extensions.d.ts +14 -0
- package/dist/src/virtual-extensions.js +56 -0
- package/dist/src/virtual-extensions.js.map +1 -0
- package/dist/src/zed-integration/fileSystemService.d.ts +3 -3
- package/dist/src/zed-integration/fileSystemService.js +5 -7
- package/dist/src/zed-integration/fileSystemService.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.js +62 -17
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -3
- package/dist/src/utils/handleAutoUpdate.d.ts +0 -11
- package/dist/src/utils/handleAutoUpdate.js +0 -102
- package/dist/src/utils/handleAutoUpdate.js.map +0 -1
- package/dist/src/utils/updateEventEmitter.d.ts +0 -11
- package/dist/src/utils/updateEventEmitter.js +0 -12
- package/dist/src/utils/updateEventEmitter.js.map +0 -1
- package/dist/src/zed-integration/acp.d.ts +0 -63
- package/dist/src/zed-integration/acp.js +0 -226
- package/dist/src/zed-integration/acp.js.map +0 -1
- package/dist/src/zed-integration/schema.d.ts +0 -11782
- package/dist/src/zed-integration/schema.js +0 -311
- package/dist/src/zed-integration/schema.js.map +0 -1
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { getErrorMessage } from '@blackbox_ai/blackbox-cli-core';
|
|
7
|
+
import * as fs from 'node:fs';
|
|
8
|
+
import * as os from 'node:os';
|
|
9
|
+
import { spawn } from 'node:child_process';
|
|
10
|
+
import ffmpegInstaller from '@ffmpeg-installer/ffmpeg';
|
|
11
|
+
// Debug mode flag - can be set via environment variable
|
|
12
|
+
const DEBUG_MODE = process.env['DEBUG'] === 'true' || process.env['DEBUG'] === '1' || process.env['DEBUG_MODE'] === 'true' || process.env['DEBUG_MODE'] === '1';
|
|
13
|
+
function debugLog(...args) {
|
|
14
|
+
if (DEBUG_MODE) {
|
|
15
|
+
console.debug('[DEBUG][VoiceRecording]', ...args);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Service for recording audio from microphone
|
|
20
|
+
* Uses ffmpeg directly for cross-platform audio recording
|
|
21
|
+
*/
|
|
22
|
+
export class VoiceRecordingService {
|
|
23
|
+
sampleRate;
|
|
24
|
+
channels;
|
|
25
|
+
audioFormat;
|
|
26
|
+
ffmpegProcess = null;
|
|
27
|
+
outputFilePath = null;
|
|
28
|
+
fileStream = null;
|
|
29
|
+
startTime = null;
|
|
30
|
+
audioStream = null;
|
|
31
|
+
constructor(config = {}) {
|
|
32
|
+
this.sampleRate = config.sampleRate || 16000;
|
|
33
|
+
this.channels = config.channels || 1;
|
|
34
|
+
this.audioFormat = config.audioFormat || 'wav';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* List available audio input devices on Windows using DirectShow
|
|
38
|
+
*/
|
|
39
|
+
async listWindowsAudioDevices() {
|
|
40
|
+
debugLog('Listing Windows audio devices...');
|
|
41
|
+
return new Promise((resolve) => {
|
|
42
|
+
const ffmpegPath = ffmpegInstaller.path;
|
|
43
|
+
const args = ['-list_devices', 'true', '-f', 'dshow', '-i', 'dummy'];
|
|
44
|
+
debugLog('FFmpeg path:', ffmpegPath);
|
|
45
|
+
debugLog('FFmpeg args:', args.join(' '));
|
|
46
|
+
const process = spawn(ffmpegPath, args, {
|
|
47
|
+
stdio: ['ignore', 'pipe', 'pipe']
|
|
48
|
+
});
|
|
49
|
+
const stderrChunks = [];
|
|
50
|
+
process.stderr?.on('data', (chunk) => {
|
|
51
|
+
stderrChunks.push(chunk);
|
|
52
|
+
});
|
|
53
|
+
process.on('close', () => {
|
|
54
|
+
const output = Buffer.concat(stderrChunks).toString();
|
|
55
|
+
debugLog('Device enumeration output length:', output.length);
|
|
56
|
+
const devices = [];
|
|
57
|
+
// Primary parsing method: Parse devices listed under "DirectShow audio devices" section
|
|
58
|
+
// Format:
|
|
59
|
+
// [dshow @ ...] DirectShow audio devices
|
|
60
|
+
// [dshow @ ...] "Device Name"
|
|
61
|
+
// [dshow @ ...] Alternative name "..."
|
|
62
|
+
const lines = output.split('\n');
|
|
63
|
+
let inAudioSection = false;
|
|
64
|
+
for (const line of lines) {
|
|
65
|
+
// Check if we've entered the audio devices section
|
|
66
|
+
if (line.includes('DirectShow audio devices')) {
|
|
67
|
+
inAudioSection = true;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
// Check if we've left the audio section (new section starts or video devices)
|
|
71
|
+
if (inAudioSection && (line.includes('DirectShow video devices') ||
|
|
72
|
+
(line.includes('[dshow') && !line.includes('"') && !line.includes('Alternative name')))) {
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
// Parse device names in the audio section
|
|
76
|
+
if (inAudioSection) {
|
|
77
|
+
// Match lines with quoted device names, but skip "Alternative name" lines
|
|
78
|
+
const deviceMatch = line.match(/\[dshow[^\]]*\]\s+"([^"]+)"/);
|
|
79
|
+
if (deviceMatch && deviceMatch[1] && !line.includes('Alternative name')) {
|
|
80
|
+
devices.push(deviceMatch[1]);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Fallback parsing method: Look for devices with (audio) suffix
|
|
85
|
+
// Format: [dshow @ ...] "Device Name" (audio)
|
|
86
|
+
if (devices.length === 0) {
|
|
87
|
+
debugLog('Primary parsing found no devices, trying fallback method...');
|
|
88
|
+
const audioDeviceRegex = /\[dshow[^\]]*\]\s+"([^"]+)"\s*\(audio\)/gi;
|
|
89
|
+
let match;
|
|
90
|
+
while ((match = audioDeviceRegex.exec(output)) !== null) {
|
|
91
|
+
if (match[1]) {
|
|
92
|
+
devices.push(match[1]);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
debugLog('Found audio devices:', devices.length > 0 ? devices : 'None');
|
|
97
|
+
if (devices.length > 0) {
|
|
98
|
+
debugLog('Device list:', devices);
|
|
99
|
+
}
|
|
100
|
+
resolve(devices);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get the appropriate ffmpeg input device and format based on platform
|
|
106
|
+
*/
|
|
107
|
+
async getInputDeviceConfig() {
|
|
108
|
+
const platform = os.platform();
|
|
109
|
+
debugLog('Getting input device config for platform:', platform);
|
|
110
|
+
switch (platform) {
|
|
111
|
+
case 'darwin': // macOS
|
|
112
|
+
debugLog('Using macOS avfoundation with default audio device');
|
|
113
|
+
return {
|
|
114
|
+
format: 'avfoundation',
|
|
115
|
+
device: ':0', // Default audio input device
|
|
116
|
+
};
|
|
117
|
+
case 'win32': {
|
|
118
|
+
// Windows - enumerate DirectShow devices and use the first one
|
|
119
|
+
// DirectShow is the most reliable method for Windows audio capture with ffmpeg
|
|
120
|
+
const devices = await this.listWindowsAudioDevices();
|
|
121
|
+
if (devices.length === 0) {
|
|
122
|
+
debugLog('ERROR: No audio devices found on Windows');
|
|
123
|
+
throw new Error('No audio input devices found. Please ensure:\n' +
|
|
124
|
+
' 1. Your microphone is connected and enabled in Windows Sound settings\n' +
|
|
125
|
+
' 2. The microphone is set as the default recording device\n' +
|
|
126
|
+
' 3. Applications have permission to access the microphone in Windows Privacy settings');
|
|
127
|
+
}
|
|
128
|
+
// Use the first available audio device
|
|
129
|
+
// DirectShow typically lists the default device first
|
|
130
|
+
const deviceName = devices[0];
|
|
131
|
+
debugLog('Selected Windows audio device:', deviceName);
|
|
132
|
+
return {
|
|
133
|
+
format: 'dshow',
|
|
134
|
+
device: `audio=${deviceName}`,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
case 'linux':
|
|
138
|
+
debugLog('Using Linux ALSA with default device');
|
|
139
|
+
return {
|
|
140
|
+
format: 'alsa',
|
|
141
|
+
device: 'default', // Default ALSA device
|
|
142
|
+
};
|
|
143
|
+
default:
|
|
144
|
+
debugLog('ERROR: Unsupported platform:', platform);
|
|
145
|
+
throw new Error(`Unsupported platform: ${platform}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Start recording audio from microphone
|
|
150
|
+
* Recording continues until stopRecording() is called
|
|
151
|
+
* @param outputPath Optional custom output path. If not provided, audio will only be streamed via callback
|
|
152
|
+
* @param onAudioChunk Optional callback for streaming audio chunks
|
|
153
|
+
* @returns Promise that resolves with the output file path when recording starts (or empty string if no file)
|
|
154
|
+
*/
|
|
155
|
+
async startRecording(outputPath, onAudioChunk) {
|
|
156
|
+
if (this.ffmpegProcess) {
|
|
157
|
+
throw new Error('Recording is already in progress');
|
|
158
|
+
}
|
|
159
|
+
// Only create file path if explicitly provided
|
|
160
|
+
this.outputFilePath = outputPath || null;
|
|
161
|
+
debugLog('Starting recording...');
|
|
162
|
+
debugLog('Output path:', this.outputFilePath || '(streaming only)');
|
|
163
|
+
debugLog('Sample rate:', this.sampleRate);
|
|
164
|
+
debugLog('Channels:', this.channels);
|
|
165
|
+
debugLog('Audio format:', this.audioFormat);
|
|
166
|
+
try {
|
|
167
|
+
const ffmpegPath = ffmpegInstaller.path;
|
|
168
|
+
const { format, device } = await this.getInputDeviceConfig();
|
|
169
|
+
return new Promise((resolve, reject) => {
|
|
170
|
+
try {
|
|
171
|
+
// Build ffmpeg arguments for audio capture
|
|
172
|
+
const args = [
|
|
173
|
+
'-f', format, // Input format
|
|
174
|
+
'-i', device, // Input device
|
|
175
|
+
'-ar', String(this.sampleRate), // Sample rate
|
|
176
|
+
'-ac', String(this.channels), // Number of channels
|
|
177
|
+
'-acodec', 'pcm_s16le', // Audio codec (16-bit PCM)
|
|
178
|
+
'-f', this.audioFormat, // Output format
|
|
179
|
+
'-' // Output to stdout (pipe)
|
|
180
|
+
];
|
|
181
|
+
debugLog('FFmpeg command:', ffmpegPath, args.join(' '));
|
|
182
|
+
// Spawn ffmpeg process
|
|
183
|
+
this.ffmpegProcess = spawn(ffmpegPath, args, {
|
|
184
|
+
stdio: ['ignore', 'pipe', 'pipe']
|
|
185
|
+
});
|
|
186
|
+
this.startTime = Date.now();
|
|
187
|
+
debugLog('FFmpeg process spawned, PID:', this.ffmpegProcess.pid);
|
|
188
|
+
// Get the audio stream from stdout
|
|
189
|
+
this.audioStream = this.ffmpegProcess.stdout;
|
|
190
|
+
// Create file stream for writing only if output path is provided
|
|
191
|
+
if (this.outputFilePath) {
|
|
192
|
+
this.fileStream = fs.createWriteStream(this.outputFilePath);
|
|
193
|
+
debugLog('File stream created for:', this.outputFilePath);
|
|
194
|
+
}
|
|
195
|
+
let chunkCount = 0;
|
|
196
|
+
let totalBytes = 0;
|
|
197
|
+
// Handle audio data
|
|
198
|
+
this.audioStream.on('data', (chunk) => {
|
|
199
|
+
chunkCount++;
|
|
200
|
+
totalBytes += chunk.length;
|
|
201
|
+
if (chunkCount === 1) {
|
|
202
|
+
debugLog('First audio chunk received, size:', chunk.length, 'bytes');
|
|
203
|
+
}
|
|
204
|
+
else if (chunkCount % 100 === 0) {
|
|
205
|
+
// Log every 100th chunk to avoid spam
|
|
206
|
+
debugLog(`Audio chunks: ${chunkCount}, total bytes: ${totalBytes}`);
|
|
207
|
+
}
|
|
208
|
+
// Write to file only if file stream exists
|
|
209
|
+
if (this.fileStream) {
|
|
210
|
+
this.fileStream.write(chunk);
|
|
211
|
+
}
|
|
212
|
+
// Send to callback for real-time streaming
|
|
213
|
+
if (onAudioChunk) {
|
|
214
|
+
onAudioChunk(chunk);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
// Handle errors from stderr
|
|
218
|
+
const stderrChunks = [];
|
|
219
|
+
this.ffmpegProcess.stderr?.on('data', (chunk) => {
|
|
220
|
+
stderrChunks.push(chunk);
|
|
221
|
+
if (DEBUG_MODE) {
|
|
222
|
+
const stderrText = chunk.toString();
|
|
223
|
+
// Only log non-routine ffmpeg output
|
|
224
|
+
if (!stderrText.includes('size=') && !stderrText.includes('time=')) {
|
|
225
|
+
debugLog('FFmpeg stderr:', stderrText.trim());
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
// Handle process errors
|
|
230
|
+
this.ffmpegProcess.on('error', (error) => {
|
|
231
|
+
debugLog('FFmpeg process error:', error.message);
|
|
232
|
+
this.cleanup();
|
|
233
|
+
reject(new Error(`Failed to start ffmpeg: ${error.message}`));
|
|
234
|
+
});
|
|
235
|
+
// Handle process exit
|
|
236
|
+
this.ffmpegProcess.on('close', (code) => {
|
|
237
|
+
debugLog('FFmpeg process closed with code:', code);
|
|
238
|
+
if (code !== 0 && code !== null) {
|
|
239
|
+
const stderrOutput = Buffer.concat(stderrChunks).toString();
|
|
240
|
+
const errorMsg = this.parseFFmpegError(stderrOutput);
|
|
241
|
+
debugLog('FFmpeg error output:', stderrOutput);
|
|
242
|
+
// Only reject if we haven't successfully started yet
|
|
243
|
+
if (this.startTime && Date.now() - this.startTime < 1000) {
|
|
244
|
+
this.cleanup();
|
|
245
|
+
reject(new Error(errorMsg));
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
// Give ffmpeg a moment to start, then resolve
|
|
250
|
+
setTimeout(() => {
|
|
251
|
+
if (this.ffmpegProcess && !this.ffmpegProcess.killed) {
|
|
252
|
+
debugLog('Recording started successfully');
|
|
253
|
+
resolve(this.outputFilePath || '');
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
debugLog('ERROR: FFmpeg process failed to start');
|
|
257
|
+
reject(new Error('FFmpeg process failed to start'));
|
|
258
|
+
}
|
|
259
|
+
}, 500);
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
this.cleanup();
|
|
263
|
+
reject(new Error(`Failed to start recording: ${getErrorMessage(error)}`));
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
this.cleanup();
|
|
269
|
+
throw new Error(`Failed to start recording: ${getErrorMessage(error)}`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Parse ffmpeg error messages to provide helpful feedback
|
|
274
|
+
*/
|
|
275
|
+
parseFFmpegError(stderrOutput) {
|
|
276
|
+
const lowerOutput = stderrOutput.toLowerCase();
|
|
277
|
+
if (lowerOutput.includes('no such file or directory') ||
|
|
278
|
+
lowerOutput.includes('cannot find') ||
|
|
279
|
+
lowerOutput.includes('could not open')) {
|
|
280
|
+
const platform = os.platform();
|
|
281
|
+
if (platform === 'win32') {
|
|
282
|
+
return 'Audio input device not found. Please ensure:\n' +
|
|
283
|
+
' 1. Your microphone is connected and enabled in Windows Sound settings\n' +
|
|
284
|
+
' 2. The microphone is set as the default recording device\n' +
|
|
285
|
+
' 3. Applications have permission to access the microphone in Windows Privacy settings';
|
|
286
|
+
}
|
|
287
|
+
return 'Audio input device not found. Please check your microphone connection.';
|
|
288
|
+
}
|
|
289
|
+
if (lowerOutput.includes('permission denied') ||
|
|
290
|
+
lowerOutput.includes('access denied')) {
|
|
291
|
+
return 'Permission denied to access microphone. Please grant microphone permissions.';
|
|
292
|
+
}
|
|
293
|
+
if (lowerOutput.includes('device or resource busy')) {
|
|
294
|
+
return 'Microphone is already in use by another application.';
|
|
295
|
+
}
|
|
296
|
+
if (lowerOutput.includes('invalid') || lowerOutput.includes('unknown')) {
|
|
297
|
+
return 'Invalid audio device configuration. Please check your system audio settings.';
|
|
298
|
+
}
|
|
299
|
+
// Return a portion of the actual error for debugging
|
|
300
|
+
const lines = stderrOutput.split('\n').filter(line => line.trim());
|
|
301
|
+
const relevantLines = lines.slice(-5).join('\n');
|
|
302
|
+
return `FFmpeg error: ${relevantLines || 'Unknown error occurred'}`;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Stop the current recording
|
|
306
|
+
* @returns Recording result with file path and metadata (file path will be empty if no file was created)
|
|
307
|
+
*/
|
|
308
|
+
async stopRecording() {
|
|
309
|
+
if (!this.ffmpegProcess) {
|
|
310
|
+
throw new Error('No recording in progress');
|
|
311
|
+
}
|
|
312
|
+
debugLog('Stopping recording...');
|
|
313
|
+
return new Promise((resolve, reject) => {
|
|
314
|
+
const filePath = this.outputFilePath || '';
|
|
315
|
+
const startTime = this.startTime;
|
|
316
|
+
// Close file stream if it exists
|
|
317
|
+
if (this.fileStream) {
|
|
318
|
+
this.fileStream.end();
|
|
319
|
+
debugLog('File stream closed');
|
|
320
|
+
}
|
|
321
|
+
// Send SIGTERM to ffmpeg for graceful shutdown
|
|
322
|
+
if (this.ffmpegProcess && !this.ffmpegProcess.killed) {
|
|
323
|
+
debugLog('Sending SIGTERM to FFmpeg process');
|
|
324
|
+
this.ffmpegProcess.kill('SIGTERM');
|
|
325
|
+
}
|
|
326
|
+
// Wait for the file to be fully written (if file was created)
|
|
327
|
+
setTimeout(() => {
|
|
328
|
+
try {
|
|
329
|
+
const duration = Math.round((Date.now() - startTime) / 1000);
|
|
330
|
+
let size = 0;
|
|
331
|
+
// Get file stats only if file was created
|
|
332
|
+
if (filePath && fs.existsSync(filePath)) {
|
|
333
|
+
const stats = fs.statSync(filePath);
|
|
334
|
+
size = stats.size;
|
|
335
|
+
debugLog('Recording file stats - size:', size, 'bytes, duration:', duration, 'seconds');
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
debugLog('Recording completed (streaming only), duration:', duration, 'seconds');
|
|
339
|
+
}
|
|
340
|
+
this.cleanup();
|
|
341
|
+
resolve({
|
|
342
|
+
filePath,
|
|
343
|
+
duration,
|
|
344
|
+
size,
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
catch (error) {
|
|
348
|
+
this.cleanup();
|
|
349
|
+
reject(new Error(`Failed to process recording: ${getErrorMessage(error)}`));
|
|
350
|
+
}
|
|
351
|
+
}, 300);
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Check if recording is currently in progress
|
|
356
|
+
*/
|
|
357
|
+
isRecording() {
|
|
358
|
+
return this.ffmpegProcess !== null && !this.ffmpegProcess.killed;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Cancel the current recording and delete the file if it exists
|
|
362
|
+
*/
|
|
363
|
+
async cancelRecording() {
|
|
364
|
+
if (!this.ffmpegProcess) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
debugLog('Cancelling recording...');
|
|
368
|
+
const filePath = this.outputFilePath;
|
|
369
|
+
// Kill the ffmpeg process
|
|
370
|
+
if (!this.ffmpegProcess.killed) {
|
|
371
|
+
debugLog('Sending SIGKILL to FFmpeg process');
|
|
372
|
+
this.ffmpegProcess.kill('SIGKILL');
|
|
373
|
+
}
|
|
374
|
+
// Close file stream if it exists
|
|
375
|
+
if (this.fileStream) {
|
|
376
|
+
this.fileStream.end();
|
|
377
|
+
debugLog('File stream closed');
|
|
378
|
+
}
|
|
379
|
+
this.cleanup();
|
|
380
|
+
// Delete the recording file only if it was created
|
|
381
|
+
if (filePath && fs.existsSync(filePath)) {
|
|
382
|
+
fs.unlinkSync(filePath);
|
|
383
|
+
debugLog('Recording file deleted:', filePath);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Clean up recording resources
|
|
388
|
+
*/
|
|
389
|
+
cleanup() {
|
|
390
|
+
this.ffmpegProcess = null;
|
|
391
|
+
this.audioStream = null;
|
|
392
|
+
this.outputFilePath = null;
|
|
393
|
+
this.fileStream = null;
|
|
394
|
+
this.startTime = null;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
//# sourceMappingURL=voiceRecordingService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voiceRecordingService.js","sourceRoot":"","sources":["../../../src/services/voiceRecordingService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,eAAe,MAAM,0BAA0B,CAAC;AAEvD,wDAAwD;AACxD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC;AAEhK,SAAS,QAAQ,CAAC,GAAG,IAAe;IAClC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAgBD;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACf,UAAU,CAAS;IACnB,QAAQ,CAAS;IACjB,WAAW,CAAS;IAC7B,aAAa,GAAwB,IAAI,CAAC;IAC1C,cAAc,GAAkB,IAAI,CAAC;IACrC,UAAU,GAA0B,IAAI,CAAC;IACzC,SAAS,GAAkB,IAAI,CAAC;IAChC,WAAW,GAAoB,IAAI,CAAC;IAE5C,YAAY,SAA+B,EAAE;QAC3C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC;IACjD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB;QACnC,QAAQ,CAAC,kCAAkC,CAAC,CAAC;QAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC;YACxC,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAErE,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YACrC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAEzC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE;gBACtC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;aAClC,CAAC,CAAC;YAEH,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC3C,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACtD,QAAQ,CAAC,mCAAmC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAa,EAAE,CAAC;gBAE7B,wFAAwF;gBACxF,UAAU;gBACV,yCAAyC;gBACzC,+BAA+B;gBAC/B,2CAA2C;gBAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,cAAc,GAAG,KAAK,CAAC;gBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,mDAAmD;oBACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;wBAC9C,cAAc,GAAG,IAAI,CAAC;wBACtB,SAAS;oBACX,CAAC;oBAED,8EAA8E;oBAC9E,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC;wBAC5D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC5F,MAAM;oBACR,CAAC;oBAED,0CAA0C;oBAC1C,IAAI,cAAc,EAAE,CAAC;wBACnB,0EAA0E;wBAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;wBAC9D,IAAI,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;4BACxE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,gEAAgE;gBAChE,8CAA8C;gBAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,QAAQ,CAAC,6DAA6D,CAAC,CAAC;oBACxE,MAAM,gBAAgB,GAAG,2CAA2C,CAAC;oBACrE,IAAI,KAAK,CAAC;oBAEV,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBACxD,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;4BACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBACzB,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACxE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;gBACpC,CAAC;gBACD,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB;QAChC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC/B,QAAQ,CAAC,2CAA2C,EAAE,QAAQ,CAAC,CAAC;QAEhE,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ,EAAE,QAAQ;gBACrB,QAAQ,CAAC,oDAAoD,CAAC,CAAC;gBAC/D,OAAO;oBACL,MAAM,EAAE,cAAc;oBACtB,MAAM,EAAE,IAAI,EAAE,6BAA6B;iBAC5C,CAAC;YACJ,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,+DAA+D;gBAC/D,+EAA+E;gBAC/E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAErD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,QAAQ,CAAC,0CAA0C,CAAC,CAAC;oBACrD,MAAM,IAAI,KAAK,CACb,gDAAgD;wBAChD,2EAA2E;wBAC3E,8DAA8D;wBAC9D,wFAAwF,CACzF,CAAC;gBACJ,CAAC;gBAED,uCAAuC;gBACvC,sDAAsD;gBACtD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9B,QAAQ,CAAC,gCAAgC,EAAE,UAAU,CAAC,CAAC;gBACvD,OAAO;oBACL,MAAM,EAAE,OAAO;oBACf,MAAM,EAAE,SAAS,UAAU,EAAE;iBAC9B,CAAC;YACJ,CAAC;YACD,KAAK,OAAO;gBACV,QAAQ,CAAC,sCAAsC,CAAC,CAAC;gBACjD,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,SAAS,EAAE,sBAAsB;iBAC1C,CAAC;YACJ;gBACE,QAAQ,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAClB,UAAmB,EACnB,YAAsC;QAEtC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,IAAI,CAAC;QACzC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QAClC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,kBAAkB,CAAC,CAAC;QACpE,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC;YACxC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAE7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,IAAI,CAAC;oBAEH,2CAA2C;oBAC3C,MAAM,IAAI,GAAG;wBACX,IAAI,EAAE,MAAM,EAAY,eAAe;wBACvC,IAAI,EAAE,MAAM,EAAY,eAAe;wBACvC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,cAAc;wBAC9C,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAI,qBAAqB;wBACrD,SAAS,EAAE,WAAW,EAAE,2BAA2B;wBACnD,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,gBAAgB;wBACxC,GAAG,CAAqB,0BAA0B;qBACnD,CAAC;oBAEF,QAAQ,CAAC,iBAAiB,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAExD,uBAAuB;oBACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE;wBAC3C,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;qBAClC,CAAC,CAAC;oBAEH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC5B,QAAQ,CAAC,8BAA8B,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBAEjE,mCAAmC;oBACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAkB,CAAC;oBAEzD,iEAAiE;oBACjE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;wBACxB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBAC5D,QAAQ,CAAC,0BAA0B,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC5D,CAAC;oBAED,IAAI,UAAU,GAAG,CAAC,CAAC;oBACnB,IAAI,UAAU,GAAG,CAAC,CAAC;oBAEnB,oBAAoB;oBACpB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC5C,UAAU,EAAE,CAAC;wBACb,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;wBAE3B,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;4BACrB,QAAQ,CAAC,mCAAmC,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;wBACvE,CAAC;6BAAM,IAAI,UAAU,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;4BAClC,sCAAsC;4BACtC,QAAQ,CAAC,iBAAiB,UAAU,kBAAkB,UAAU,EAAE,CAAC,CAAC;wBACtE,CAAC;wBAED,2CAA2C;wBAC3C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;4BACpB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC/B,CAAC;wBAED,2CAA2C;wBAC3C,IAAI,YAAY,EAAE,CAAC;4BACjB,YAAY,CAAC,KAAK,CAAC,CAAC;wBACtB,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,4BAA4B;oBAC5B,MAAM,YAAY,GAAa,EAAE,CAAC;oBAClC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;wBACtD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACzB,IAAI,UAAU,EAAE,CAAC;4BACf,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;4BACpC,qCAAqC;4BACrC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gCACnE,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;4BAChD,CAAC;wBACH,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,wBAAwB;oBACxB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;wBAC9C,QAAQ,CAAC,uBAAuB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;wBACjD,IAAI,CAAC,OAAO,EAAE,CAAC;wBACf,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAChE,CAAC,CAAC,CAAC;oBAEH,sBAAsB;oBACtB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE;wBAC9C,QAAQ,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;wBACnD,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;4BAChC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;4BAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;4BACrD,QAAQ,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;4BAE/C,qDAAqD;4BACrD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,CAAC;gCACzD,IAAI,CAAC,OAAO,EAAE,CAAC;gCACf,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;4BAC9B,CAAC;wBACH,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,8CAA8C;oBAC9C,UAAU,CAAC,GAAG,EAAE;wBACd,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;4BACrD,QAAQ,CAAC,gCAAgC,CAAC,CAAC;4BAC3C,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;wBACrC,CAAC;6BAAM,CAAC;4BACN,QAAQ,CAAC,uCAAuC,CAAC,CAAC;4BAClD,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;wBACtD,CAAC;oBACH,CAAC,EAAE,GAAG,CAAC,CAAC;gBACV,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,MAAM,CACJ,IAAI,KAAK,CAAC,8BAA8B,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAClE,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,YAAoB;QAC3C,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAE/C,IAAI,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACjD,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC;YACnC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACzB,OAAO,gDAAgD;oBAChD,2EAA2E;oBAC3E,8DAA8D;oBAC9D,wFAAwF,CAAC;YAClG,CAAC;YACD,OAAO,wEAAwE,CAAC;QAClF,CAAC;QAED,IAAI,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACzC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1C,OAAO,8EAA8E,CAAC;QACxF,CAAC;QAED,IAAI,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACpD,OAAO,sDAAsD,CAAC;QAChE,CAAC;QAED,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,OAAO,8EAA8E,CAAC;QACxF,CAAC;QAED,qDAAqD;QACrD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,iBAAiB,aAAa,IAAI,wBAAwB,EAAE,CAAC;IACtE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QAElC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAU,CAAC;YAElC,iCAAiC;YACjC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;gBACtB,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YACjC,CAAC;YAED,+CAA+C;YAC/C,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;gBACrD,QAAQ,CAAC,mCAAmC,CAAC,CAAC;gBAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;YAED,8DAA8D;YAC9D,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;oBAC7D,IAAI,IAAI,GAAG,CAAC,CAAC;oBAEb,0CAA0C;oBAC1C,IAAI,QAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACxC,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBACpC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;wBAClB,QAAQ,CAAC,8BAA8B,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC1F,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,iDAAiD,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACnF,CAAC;oBAED,IAAI,CAAC,OAAO,EAAE,CAAC;oBAEf,OAAO,CAAC;wBACN,QAAQ;wBACR,QAAQ;wBACR,IAAI;qBACL,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,MAAM,CACJ,IAAI,KAAK,CAAC,gCAAgC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CACpE,CAAC;gBACJ,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QAErC,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC/B,QAAQ,CAAC,mCAAmC,CAAC,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YACtB,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,mDAAmD;QACnD,IAAI,QAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxB,QAAQ,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,OAAO;QACb,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF"}
|
package/dist/src/ui/App.d.ts
CHANGED