@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
|
@@ -5,14 +5,90 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { installExtension, } from '../../config/extension.js';
|
|
7
7
|
import { getErrorMessage } from '../../utils/errors.js';
|
|
8
|
+
import * as fs from 'node:fs';
|
|
9
|
+
import * as path from 'node:path';
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
11
|
+
function getOnDemandExtensionsPath() {
|
|
12
|
+
const currentModuleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
const possiblePaths = [
|
|
14
|
+
// Installed package: relative to bundle directory
|
|
15
|
+
path.join(currentModuleDir, 'on-demand-extensions'),
|
|
16
|
+
// Development environment: relative to src directory
|
|
17
|
+
path.join(currentModuleDir, '..', '..', 'on-demand-extensions'),
|
|
18
|
+
// Alternative bundle location
|
|
19
|
+
path.join(currentModuleDir, '..', 'on-demand-extensions'),
|
|
20
|
+
];
|
|
21
|
+
for (const possiblePath of possiblePaths) {
|
|
22
|
+
if (fs.existsSync(possiblePath)) {
|
|
23
|
+
return possiblePath;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Fallback to the first path if none exist (will be handled by loadExtensionRegistry)
|
|
27
|
+
return possiblePaths[0];
|
|
28
|
+
}
|
|
29
|
+
function loadExtensionRegistry() {
|
|
30
|
+
const registryPath = path.join(getOnDemandExtensionsPath(), 'registry.json');
|
|
31
|
+
if (!fs.existsSync(registryPath)) {
|
|
32
|
+
return { extensions: [] };
|
|
33
|
+
}
|
|
34
|
+
const registryContent = fs.readFileSync(registryPath, 'utf-8');
|
|
35
|
+
return JSON.parse(registryContent);
|
|
36
|
+
}
|
|
8
37
|
export async function handleInstall(args) {
|
|
9
38
|
try {
|
|
39
|
+
if (args.consent) {
|
|
40
|
+
console.log('You have consented to the following:');
|
|
41
|
+
console.log('⚠️ Extensions can execute arbitrary code and access your files.');
|
|
42
|
+
console.log(' Only install extensions from sources you trust.');
|
|
43
|
+
}
|
|
44
|
+
let source = args.source;
|
|
45
|
+
// Handle --from-registry flag
|
|
46
|
+
if (args.fromRegistry) {
|
|
47
|
+
const registry = loadExtensionRegistry();
|
|
48
|
+
const extension = registry.extensions.find(e => e.name === args.source);
|
|
49
|
+
if (!extension) {
|
|
50
|
+
console.error(`Extension "${args.source}" not found in registry.`);
|
|
51
|
+
console.log('\nAvailable extensions:');
|
|
52
|
+
registry.extensions.forEach(ext => {
|
|
53
|
+
console.log(` - ${ext.name} (${ext.description})`);
|
|
54
|
+
});
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
console.log(`Installing "${extension.name}" (v${extension.version}) from registry...`);
|
|
58
|
+
console.log(`Description: ${extension.description}`);
|
|
59
|
+
if (extension.gitUrl) {
|
|
60
|
+
// Git-based extension
|
|
61
|
+
source = extension.gitUrl;
|
|
62
|
+
}
|
|
63
|
+
else if (extension.path) {
|
|
64
|
+
// Local extension
|
|
65
|
+
source = path.join(getOnDemandExtensionsPath(), extension.path);
|
|
66
|
+
if (!fs.existsSync(source)) {
|
|
67
|
+
console.error(`Extension source not found at: ${source}`);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.error(`Invalid extension configuration: missing both gitUrl and path`);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
10
76
|
const installMetadata = {
|
|
11
|
-
source
|
|
12
|
-
type:
|
|
77
|
+
source,
|
|
78
|
+
type: source.startsWith('http') || source.includes('.git') ? 'git' : 'blackbox',
|
|
79
|
+
ref: args.ref,
|
|
80
|
+
autoUpdate: args.autoUpdate,
|
|
81
|
+
allowPreRelease: args.preRelease,
|
|
13
82
|
};
|
|
14
83
|
const extensionName = await installExtension(installMetadata);
|
|
15
84
|
console.log(`Extension "${extensionName}" installed successfully and enabled.`);
|
|
85
|
+
if (args.autoUpdate) {
|
|
86
|
+
console.log('Auto-update has been enabled for this extension.');
|
|
87
|
+
}
|
|
88
|
+
if (args.preRelease) {
|
|
89
|
+
console.log('Pre-release versions are enabled for this extension.');
|
|
90
|
+
}
|
|
91
|
+
console.log('\n✨ Restart the CLI to use the new extension.');
|
|
16
92
|
}
|
|
17
93
|
catch (error) {
|
|
18
94
|
console.error(getErrorMessage(error));
|
|
@@ -20,28 +96,46 @@ export async function handleInstall(args) {
|
|
|
20
96
|
}
|
|
21
97
|
}
|
|
22
98
|
export const installCommand = {
|
|
23
|
-
command: 'install [--
|
|
24
|
-
describe: 'Installs an extension from a git repository or
|
|
99
|
+
command: 'install <source> [--ref <ref>] [--auto-update] [--pre-release] [--consent] [--from-registry]',
|
|
100
|
+
describe: 'Installs an extension from a git repository, local path, or the on-demand registry.',
|
|
25
101
|
builder: (yargs) => yargs
|
|
26
|
-
.
|
|
27
|
-
describe: 'The
|
|
102
|
+
.positional('source', {
|
|
103
|
+
describe: 'The github URL, local path, or extension name (with --from-registry) to install.',
|
|
28
104
|
type: 'string',
|
|
105
|
+
demandOption: true,
|
|
106
|
+
})
|
|
107
|
+
.option('from-registry', {
|
|
108
|
+
describe: 'Install from the on-demand extensions registry using the extension name.',
|
|
109
|
+
type: 'boolean',
|
|
110
|
+
default: false,
|
|
29
111
|
})
|
|
30
|
-
.option('
|
|
31
|
-
describe: '
|
|
112
|
+
.option('ref', {
|
|
113
|
+
describe: 'The git ref to install from.',
|
|
32
114
|
type: 'string',
|
|
33
115
|
})
|
|
34
|
-
.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
116
|
+
.option('auto-update', {
|
|
117
|
+
describe: 'Enable auto-update for this extension.',
|
|
118
|
+
type: 'boolean',
|
|
119
|
+
default: false,
|
|
120
|
+
})
|
|
121
|
+
.option('pre-release', {
|
|
122
|
+
describe: 'Enable pre-release versions for this extension.',
|
|
123
|
+
type: 'boolean',
|
|
124
|
+
default: false,
|
|
125
|
+
})
|
|
126
|
+
.option('consent', {
|
|
127
|
+
describe: 'Acknowledge the security risks of installing an extension and skip the confirmation prompt.',
|
|
128
|
+
type: 'boolean',
|
|
129
|
+
default: false,
|
|
40
130
|
}),
|
|
41
131
|
handler: async (argv) => {
|
|
42
132
|
await handleInstall({
|
|
43
133
|
source: argv['source'],
|
|
44
|
-
|
|
134
|
+
fromRegistry: argv['from-registry'],
|
|
135
|
+
ref: argv['ref'],
|
|
136
|
+
autoUpdate: argv['auto-update'],
|
|
137
|
+
preRelease: argv['pre-release'],
|
|
138
|
+
consent: argv['consent'],
|
|
45
139
|
});
|
|
46
140
|
},
|
|
47
141
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../../src/commands/extensions/install.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,gBAAgB,GAEjB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../../src/commands/extensions/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandModule } from 'yargs';
|
|
7
|
+
interface LinkArgs {
|
|
8
|
+
path: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function handleLink(args: LinkArgs): Promise<void>;
|
|
11
|
+
export declare const linkCommand: CommandModule;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { installExtension } from '../../config/extension.js';
|
|
7
|
+
import { getErrorMessage } from '../../utils/errors.js';
|
|
8
|
+
import * as fs from 'node:fs';
|
|
9
|
+
import * as path from 'node:path';
|
|
10
|
+
export async function handleLink(args) {
|
|
11
|
+
try {
|
|
12
|
+
const absolutePath = path.resolve(args.path);
|
|
13
|
+
// Verify the path exists and is a directory
|
|
14
|
+
if (!fs.existsSync(absolutePath)) {
|
|
15
|
+
throw new Error(`Path does not exist: ${absolutePath}`);
|
|
16
|
+
}
|
|
17
|
+
if (!fs.statSync(absolutePath).isDirectory()) {
|
|
18
|
+
throw new Error(`Path is not a directory: ${absolutePath}`);
|
|
19
|
+
}
|
|
20
|
+
// Verify it has a blackbox-extension.json file
|
|
21
|
+
const configPath = path.join(absolutePath, 'blackbox-extension.json');
|
|
22
|
+
if (!fs.existsSync(configPath)) {
|
|
23
|
+
throw new Error(`No blackbox-extension.json found in: ${absolutePath}`);
|
|
24
|
+
}
|
|
25
|
+
const installMetadata = {
|
|
26
|
+
source: absolutePath,
|
|
27
|
+
type: 'blackbox',
|
|
28
|
+
};
|
|
29
|
+
const extensionName = await installExtension(installMetadata);
|
|
30
|
+
console.log(`Extension "${extensionName}" linked successfully from ${absolutePath}.`);
|
|
31
|
+
console.log('Note: Changes to the source directory will be reflected immediately.');
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.error(getErrorMessage(error));
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export const linkCommand = {
|
|
39
|
+
command: 'link <path>',
|
|
40
|
+
describe: 'Create a symbolic link from the extension installation directory to the development path.',
|
|
41
|
+
builder: (yargs) => yargs
|
|
42
|
+
.positional('path', {
|
|
43
|
+
describe: 'The path of the extension to link.',
|
|
44
|
+
type: 'string',
|
|
45
|
+
demandOption: true,
|
|
46
|
+
}),
|
|
47
|
+
handler: async (argv) => {
|
|
48
|
+
await handleLink({
|
|
49
|
+
path: argv['path'],
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../../src/commands/extensions/link.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAiC,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAMlC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,4CAA4C;QAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,+CAA+C;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;QACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,eAAe,GAA6B;YAChD,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,cAAc,aAAa,8BAA8B,YAAY,GAAG,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,2FAA2F;IACrG,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,oCAAoC;QAC9C,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB,CAAC;IACN,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,UAAU,CAAC;YACf,IAAI,EAAE,IAAI,CAAC,MAAM,CAAW;SAC7B,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { loadExtensions, toOutputString } from '../../config/extension.js';
|
|
7
7
|
import { getErrorMessage } from '../../utils/errors.js';
|
|
8
8
|
export async function handleList() {
|
|
9
9
|
try {
|
|
10
|
-
const extensions =
|
|
10
|
+
const extensions = loadExtensions(process.cwd());
|
|
11
11
|
if (extensions.length === 0) {
|
|
12
12
|
console.log('No extensions installed.');
|
|
13
13
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/extensions/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/extensions/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CACT,UAAU;aACP,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAU,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aACxD,IAAI,CAAC,MAAM,CAAC,CAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,6BAA6B;IACvC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACzB,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,UAAU,EAAE,CAAC;IACrB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandModule } from 'yargs';
|
|
7
|
+
interface NewArgs {
|
|
8
|
+
path: string;
|
|
9
|
+
template?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function handleNew(args: NewArgs): Promise<void>;
|
|
12
|
+
export declare const newCommand: CommandModule;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { getErrorMessage } from '../../utils/errors.js';
|
|
7
|
+
import * as fs from 'node:fs';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
const TEMPLATES = {
|
|
10
|
+
context: {
|
|
11
|
+
name: 'context',
|
|
12
|
+
description: 'A simple extension that provides additional context',
|
|
13
|
+
files: {
|
|
14
|
+
'blackbox-extension.json': {
|
|
15
|
+
name: 'example-context',
|
|
16
|
+
version: '1.0.0',
|
|
17
|
+
contextFileName: 'CONTEXT.md'
|
|
18
|
+
},
|
|
19
|
+
'CONTEXT.md': `# Example Context Extension
|
|
20
|
+
|
|
21
|
+
This is an example context extension that provides additional context to Blackbox CLI.
|
|
22
|
+
|
|
23
|
+
## Features
|
|
24
|
+
|
|
25
|
+
- Provides project-specific context
|
|
26
|
+
- Can include documentation, guidelines, or any relevant information
|
|
27
|
+
- Automatically loaded when the extension is active
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
This context will be automatically included when using Blackbox CLI in projects where this extension is enabled.
|
|
32
|
+
`
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
'custom-commands': {
|
|
36
|
+
name: 'custom-commands',
|
|
37
|
+
description: 'An extension that provides custom slash commands',
|
|
38
|
+
files: {
|
|
39
|
+
'blackbox-extension.json': {
|
|
40
|
+
name: 'example-custom-commands',
|
|
41
|
+
version: '1.0.0'
|
|
42
|
+
},
|
|
43
|
+
'commands/deploy.toml': `prompt = """
|
|
44
|
+
Deploy the application to production. Please:
|
|
45
|
+
|
|
46
|
+
1. Run tests to ensure everything is working
|
|
47
|
+
2. Build the application for production
|
|
48
|
+
3. Deploy using the appropriate deployment method
|
|
49
|
+
4. Verify the deployment was successful
|
|
50
|
+
|
|
51
|
+
Use the following deployment command: !{npm run deploy}
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
description = "Deploy the application to production"
|
|
55
|
+
`
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
'exclude-tools': {
|
|
59
|
+
name: 'exclude-tools',
|
|
60
|
+
description: 'An extension that excludes certain tools for security',
|
|
61
|
+
files: {
|
|
62
|
+
'blackbox-extension.json': {
|
|
63
|
+
name: 'example-exclude-tools',
|
|
64
|
+
version: '1.0.0',
|
|
65
|
+
excludeTools: ['run_shell_command', 'edit_file']
|
|
66
|
+
},
|
|
67
|
+
'README.md': `# Tool Exclusion Extension
|
|
68
|
+
|
|
69
|
+
This extension excludes certain tools from being used by Blackbox CLI for security purposes.
|
|
70
|
+
|
|
71
|
+
## Excluded Tools
|
|
72
|
+
|
|
73
|
+
- \`run_shell_command\`: Prevents execution of shell commands
|
|
74
|
+
- \`edit_file\`: Prevents direct file editing
|
|
75
|
+
|
|
76
|
+
This is useful in environments where you want to restrict certain capabilities.
|
|
77
|
+
`
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
export async function handleNew(args) {
|
|
82
|
+
try {
|
|
83
|
+
const targetPath = path.resolve(args.path);
|
|
84
|
+
const template = args.template || 'context';
|
|
85
|
+
if (!TEMPLATES[template]) {
|
|
86
|
+
throw new Error(`Unknown template: ${template}. Available templates: ${Object.keys(TEMPLATES).join(', ')}`);
|
|
87
|
+
}
|
|
88
|
+
const templateConfig = TEMPLATES[template];
|
|
89
|
+
// Check if directory already exists
|
|
90
|
+
if (fs.existsSync(targetPath)) {
|
|
91
|
+
throw new Error(`Directory already exists: ${targetPath}`);
|
|
92
|
+
}
|
|
93
|
+
// Create the directory
|
|
94
|
+
await fs.promises.mkdir(targetPath, { recursive: true });
|
|
95
|
+
// Create all files from the template
|
|
96
|
+
for (const [filePath, content] of Object.entries(templateConfig.files)) {
|
|
97
|
+
const fullPath = path.join(targetPath, filePath);
|
|
98
|
+
const dir = path.dirname(fullPath);
|
|
99
|
+
// Create subdirectories if needed
|
|
100
|
+
if (dir !== targetPath) {
|
|
101
|
+
await fs.promises.mkdir(dir, { recursive: true });
|
|
102
|
+
}
|
|
103
|
+
// Write the file
|
|
104
|
+
if (typeof content === 'object') {
|
|
105
|
+
await fs.promises.writeFile(fullPath, JSON.stringify(content, null, 2));
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
await fs.promises.writeFile(fullPath, content);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
console.log(`✓ Created new extension from "${template}" template at: ${targetPath}`);
|
|
112
|
+
console.log(` Template: ${templateConfig.description}`);
|
|
113
|
+
console.log('\nNext steps:');
|
|
114
|
+
console.log(`1. cd ${targetPath}`);
|
|
115
|
+
console.log('2. Customize the extension configuration');
|
|
116
|
+
console.log('3. Install the extension: blackbox extensions install ${targetPath}');
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
console.error(getErrorMessage(error));
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
export const newCommand = {
|
|
124
|
+
command: 'new <path> [template]',
|
|
125
|
+
describe: 'Create a new extension from a template.',
|
|
126
|
+
builder: (yargs) => yargs
|
|
127
|
+
.positional('path', {
|
|
128
|
+
describe: 'The path to create the extension in.',
|
|
129
|
+
type: 'string',
|
|
130
|
+
demandOption: true,
|
|
131
|
+
})
|
|
132
|
+
.positional('template', {
|
|
133
|
+
describe: 'The template to use.',
|
|
134
|
+
type: 'string',
|
|
135
|
+
choices: Object.keys(TEMPLATES),
|
|
136
|
+
default: 'context',
|
|
137
|
+
}),
|
|
138
|
+
handler: async (argv) => {
|
|
139
|
+
await handleNew({
|
|
140
|
+
path: argv['path'],
|
|
141
|
+
template: argv['template'],
|
|
142
|
+
});
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../src/commands/extensions/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandModule } from 'yargs';
|
|
7
|
+
interface SettingsListArgs {
|
|
8
|
+
extensionName: string;
|
|
9
|
+
}
|
|
10
|
+
interface SettingsSetArgs {
|
|
11
|
+
extensionName: string;
|
|
12
|
+
settingName: string;
|
|
13
|
+
scope?: 'user' | 'workspace';
|
|
14
|
+
}
|
|
15
|
+
export declare function handleSettingsList(args: SettingsListArgs): Promise<void>;
|
|
16
|
+
export declare function handleSettingsSet(args: SettingsSetArgs): Promise<void>;
|
|
17
|
+
export declare const settingsCommand: CommandModule;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { loadUserExtensions } from '../../config/extension.js';
|
|
7
|
+
import { getErrorMessage } from '../../utils/errors.js';
|
|
8
|
+
export async function handleSettingsList(args) {
|
|
9
|
+
try {
|
|
10
|
+
const extensions = loadUserExtensions();
|
|
11
|
+
const extension = extensions.find(ext => ext.config.name === args.extensionName);
|
|
12
|
+
if (!extension) {
|
|
13
|
+
throw new Error(`Extension "${args.extensionName}" not found`);
|
|
14
|
+
}
|
|
15
|
+
// For now, we'll just show that settings functionality is not yet implemented
|
|
16
|
+
// In a full implementation, this would read from extension config and show available settings
|
|
17
|
+
console.log(`Settings for extension "${args.extensionName}":`);
|
|
18
|
+
console.log('Settings functionality is not yet fully implemented.');
|
|
19
|
+
console.log('This would show configurable settings defined in the extension.');
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.error(getErrorMessage(error));
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export async function handleSettingsSet(args) {
|
|
27
|
+
try {
|
|
28
|
+
const extensions = loadUserExtensions();
|
|
29
|
+
const extension = extensions.find(ext => ext.config.name === args.extensionName);
|
|
30
|
+
if (!extension) {
|
|
31
|
+
throw new Error(`Extension "${args.extensionName}" not found`);
|
|
32
|
+
}
|
|
33
|
+
// For now, we'll just show that settings functionality is not yet implemented
|
|
34
|
+
console.log(`Setting "${args.settingName}" for extension "${args.extensionName}" in ${args.scope || 'user'} scope:`);
|
|
35
|
+
console.log('Settings functionality is not yet fully implemented.');
|
|
36
|
+
console.log('This would update the specified setting value.');
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error(getErrorMessage(error));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const listCommand = {
|
|
44
|
+
command: 'list <extension-name>',
|
|
45
|
+
describe: 'List settings for an extension.',
|
|
46
|
+
builder: (yargs) => yargs
|
|
47
|
+
.positional('extension-name', {
|
|
48
|
+
describe: 'The name of the extension.',
|
|
49
|
+
type: 'string',
|
|
50
|
+
demandOption: true,
|
|
51
|
+
}),
|
|
52
|
+
handler: async (argv) => {
|
|
53
|
+
await handleSettingsList({
|
|
54
|
+
extensionName: argv['extension-name'],
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
const setCommand = {
|
|
59
|
+
command: 'set <extension-name> <setting-name>',
|
|
60
|
+
describe: 'Set a setting for an extension.',
|
|
61
|
+
builder: (yargs) => yargs
|
|
62
|
+
.positional('extension-name', {
|
|
63
|
+
describe: 'The name of the extension.',
|
|
64
|
+
type: 'string',
|
|
65
|
+
demandOption: true,
|
|
66
|
+
})
|
|
67
|
+
.positional('setting-name', {
|
|
68
|
+
describe: 'The name of the setting to set.',
|
|
69
|
+
type: 'string',
|
|
70
|
+
demandOption: true,
|
|
71
|
+
})
|
|
72
|
+
.option('scope', {
|
|
73
|
+
describe: 'The scope to set the setting in.',
|
|
74
|
+
type: 'string',
|
|
75
|
+
choices: ['user', 'workspace'],
|
|
76
|
+
default: 'user',
|
|
77
|
+
}),
|
|
78
|
+
handler: async (argv) => {
|
|
79
|
+
await handleSettingsSet({
|
|
80
|
+
extensionName: argv['extension-name'],
|
|
81
|
+
settingName: argv['setting-name'],
|
|
82
|
+
scope: argv['scope'],
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
export const settingsCommand = {
|
|
87
|
+
command: 'settings <command>',
|
|
88
|
+
describe: 'Manage extension settings.',
|
|
89
|
+
builder: (yargs) => yargs
|
|
90
|
+
.command(listCommand)
|
|
91
|
+
.command(setCommand)
|
|
92
|
+
.demandCommand(1, 'You need at least one command before continuing.')
|
|
93
|
+
.version(false),
|
|
94
|
+
handler: () => {
|
|
95
|
+
// This handler is not called when a subcommand is provided.
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../src/commands/extensions/settings.ts"],"names":[],"mappings":"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"}
|