@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.
Files changed (422) hide show
  1. package/README.md +11 -183
  2. package/dist/index.js +8 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +13 -3
  5. package/dist/src/built-in-extensions/conductor/README.md +242 -0
  6. package/dist/src/built-in-extensions/conductor/blackbox-extension.json +5 -0
  7. package/dist/src/built-in-extensions/conductor/commands/conductor/implement.toml +170 -0
  8. package/dist/src/built-in-extensions/conductor/commands/conductor/newTrack.toml +142 -0
  9. package/dist/src/built-in-extensions/conductor/commands/conductor/revert.toml +122 -0
  10. package/dist/src/built-in-extensions/conductor/commands/conductor/setup.toml +424 -0
  11. package/dist/src/built-in-extensions/conductor/commands/conductor/status.toml +57 -0
  12. package/dist/src/built-in-extensions/conductor/templates/code_styleguides/general.md +23 -0
  13. package/dist/src/built-in-extensions/conductor/templates/code_styleguides/go.md +48 -0
  14. package/dist/src/built-in-extensions/conductor/templates/code_styleguides/html-css.md +49 -0
  15. package/dist/src/built-in-extensions/conductor/templates/code_styleguides/javascript.md +51 -0
  16. package/dist/src/built-in-extensions/conductor/templates/code_styleguides/python.md +37 -0
  17. package/dist/src/built-in-extensions/conductor/templates/code_styleguides/typescript.md +43 -0
  18. package/dist/src/built-in-extensions/conductor/templates/workflow.md +333 -0
  19. package/dist/src/built-in-extensions-data.d.ts +15 -0
  20. package/dist/src/built-in-extensions-data.js +61 -0
  21. package/dist/src/built-in-extensions-data.js.map +1 -0
  22. package/dist/src/commands/configure/ConfigureUI.d.ts +14 -0
  23. package/dist/src/commands/configure/ConfigureUI.js +556 -0
  24. package/dist/src/commands/configure/ConfigureUI.js.map +1 -0
  25. package/dist/src/commands/configure/index.d.ts +7 -0
  26. package/dist/src/commands/configure/index.js +62 -0
  27. package/dist/src/commands/configure/index.js.map +1 -0
  28. package/dist/src/commands/configure.d.ts +7 -0
  29. package/dist/src/commands/configure.js +276 -0
  30. package/dist/src/commands/configure.js.map +1 -0
  31. package/dist/src/commands/configure.test.d.ts +6 -0
  32. package/dist/src/commands/configure.test.js +32 -0
  33. package/dist/src/commands/configure.test.js.map +1 -0
  34. package/dist/src/commands/extensions/enable.js +1 -1
  35. package/dist/src/commands/extensions/enable.js.map +1 -1
  36. package/dist/src/commands/extensions/examples/context/CONTEXT.md +16 -0
  37. package/dist/src/commands/extensions/examples/context/blackbox-extension.json +5 -0
  38. package/dist/src/commands/extensions/examples/custom-commands/blackbox-extension.json +4 -0
  39. package/dist/src/commands/extensions/examples/custom-commands/commands/deploy.toml +12 -0
  40. package/dist/src/commands/extensions/examples/exclude-tools/README.md +28 -0
  41. package/dist/src/commands/extensions/examples/exclude-tools/blackbox-extension.json +5 -0
  42. package/dist/src/commands/extensions/install.d.ts +6 -2
  43. package/dist/src/commands/extensions/install.js +109 -15
  44. package/dist/src/commands/extensions/install.js.map +1 -1
  45. package/dist/src/commands/extensions/link.d.ts +12 -0
  46. package/dist/src/commands/extensions/link.js +53 -0
  47. package/dist/src/commands/extensions/link.js.map +1 -0
  48. package/dist/src/commands/extensions/list.js +2 -2
  49. package/dist/src/commands/extensions/list.js.map +1 -1
  50. package/dist/src/commands/extensions/new.d.ts +13 -0
  51. package/dist/src/commands/extensions/new.js +145 -0
  52. package/dist/src/commands/extensions/new.js.map +1 -0
  53. package/dist/src/commands/extensions/settings.d.ts +18 -0
  54. package/dist/src/commands/extensions/settings.js +98 -0
  55. package/dist/src/commands/extensions/settings.js.map +1 -0
  56. package/dist/src/commands/extensions/update.d.ts +2 -1
  57. package/dist/src/commands/extensions/update.js +59 -10
  58. package/dist/src/commands/extensions/update.js.map +1 -1
  59. package/dist/src/commands/extensions/validate.d.ts +12 -0
  60. package/dist/src/commands/extensions/validate.js +72 -0
  61. package/dist/src/commands/extensions/validate.js.map +1 -0
  62. package/dist/src/commands/extensions.js +10 -1
  63. package/dist/src/commands/extensions.js.map +1 -1
  64. package/dist/src/commands/mcp/add.d.ts +11 -0
  65. package/dist/src/commands/mcp/add.js +61 -7
  66. package/dist/src/commands/mcp/add.js.map +1 -1
  67. package/dist/src/commands/update.d.ts +7 -0
  68. package/dist/src/commands/update.js +103 -0
  69. package/dist/src/commands/update.js.map +1 -0
  70. package/dist/src/commands/voice.d.ts +7 -0
  71. package/dist/src/commands/voice.js +510 -0
  72. package/dist/src/commands/voice.js.map +1 -0
  73. package/dist/src/config/auth.d.ts +32 -1
  74. package/dist/src/config/auth.js +317 -2
  75. package/dist/src/config/auth.js.map +1 -1
  76. package/dist/src/config/config.d.ts +7 -1
  77. package/dist/src/config/config.js +71 -10
  78. package/dist/src/config/config.js.map +1 -1
  79. package/dist/src/config/extension.d.ts +6 -1
  80. package/dist/src/config/extension.js +137 -11
  81. package/dist/src/config/extension.js.map +1 -1
  82. package/dist/src/config/extensions/github.d.ts +48 -0
  83. package/dist/src/config/extensions/github.js +308 -0
  84. package/dist/src/config/extensions/github.js.map +1 -0
  85. package/dist/src/config/keyBindings.d.ts +1 -0
  86. package/dist/src/config/keyBindings.js +3 -0
  87. package/dist/src/config/keyBindings.js.map +1 -1
  88. package/dist/src/config/modelFetcher.d.ts +21 -0
  89. package/dist/src/config/modelFetcher.js +226 -0
  90. package/dist/src/config/modelFetcher.js.map +1 -0
  91. package/dist/src/config/settings.js +101 -0
  92. package/dist/src/config/settings.js.map +1 -1
  93. package/dist/src/config/settingsSchema.d.ts +626 -0
  94. package/dist/src/config/settingsSchema.js +626 -0
  95. package/dist/src/config/settingsSchema.js.map +1 -1
  96. package/dist/src/config/voice.d.ts +31 -0
  97. package/dist/src/config/voice.js +82 -0
  98. package/dist/src/config/voice.js.map +1 -0
  99. package/dist/src/encrypt/attestation.d.ts +5 -0
  100. package/dist/src/encrypt/attestation.js +100 -0
  101. package/dist/src/encrypt/attestation.js.map +1 -0
  102. package/dist/src/encrypt/bridge.d.ts +30 -0
  103. package/dist/src/encrypt/bridge.js +32 -0
  104. package/dist/src/encrypt/bridge.js.map +1 -0
  105. package/dist/src/encrypt/client.d.ts +14 -0
  106. package/dist/src/encrypt/client.js +133 -0
  107. package/dist/src/encrypt/client.js.map +1 -0
  108. package/dist/src/encrypt/config.d.ts +26 -0
  109. package/dist/src/encrypt/config.js +51 -0
  110. package/dist/src/encrypt/config.js.map +1 -0
  111. package/dist/src/encrypt/crypto-utils.d.ts +57 -0
  112. package/dist/src/encrypt/crypto-utils.js +257 -0
  113. package/dist/src/encrypt/crypto-utils.js.map +1 -0
  114. package/dist/src/encrypt/index.d.ts +12 -0
  115. package/dist/src/encrypt/index.js +13 -0
  116. package/dist/src/encrypt/index.js.map +1 -0
  117. package/dist/src/encrypt/retry-utils.d.ts +20 -0
  118. package/dist/src/encrypt/retry-utils.js +60 -0
  119. package/dist/src/encrypt/retry-utils.js.map +1 -0
  120. package/dist/src/encrypt/sessions.d.ts +17 -0
  121. package/dist/src/encrypt/sessions.js +221 -0
  122. package/dist/src/encrypt/sessions.js.map +1 -0
  123. package/dist/src/encrypt/streaming-client.d.ts +29 -0
  124. package/dist/src/encrypt/streaming-client.js +226 -0
  125. package/dist/src/encrypt/streaming-client.js.map +1 -0
  126. package/dist/src/encrypt/types.d.ts +81 -0
  127. package/dist/src/encrypt/types.js +2 -0
  128. package/dist/src/encrypt/types.js.map +1 -0
  129. package/dist/src/gemini.d.ts +1 -1
  130. package/dist/src/gemini.js +61 -28
  131. package/dist/src/gemini.js.map +1 -1
  132. package/dist/src/generated/git-commit.d.ts +3 -3
  133. package/dist/src/generated/git-commit.js +3 -3
  134. package/dist/src/nonInteractiveCli.d.ts +4 -0
  135. package/dist/src/nonInteractiveCli.js +563 -6
  136. package/dist/src/nonInteractiveCli.js.map +1 -1
  137. package/dist/src/on-demand-extensions/README.md +266 -0
  138. package/dist/src/on-demand-extensions/git-helper/README.md +16 -0
  139. package/dist/src/on-demand-extensions/git-helper/blackbox-extension.json +5 -0
  140. package/dist/src/on-demand-extensions/git-helper/commands/git/branch-cleanup.toml +18 -0
  141. package/dist/src/on-demand-extensions/git-helper/commands/git/smart-commit.toml +22 -0
  142. package/dist/src/on-demand-extensions/greet/README.md +76 -0
  143. package/dist/src/on-demand-extensions/greet/blackbox-extension.json +5 -0
  144. package/dist/src/on-demand-extensions/greet/commands/greet/hello.toml +9 -0
  145. package/dist/src/on-demand-extensions/registry.json +251 -0
  146. package/dist/src/services/BuiltinCommandLoader.js +20 -2
  147. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  148. package/dist/src/services/EncryptedContentGenerator.d.ts +63 -0
  149. package/dist/src/services/EncryptedContentGenerator.js +426 -0
  150. package/dist/src/services/EncryptedContentGenerator.js.map +1 -0
  151. package/dist/src/services/McpCommandLoader.d.ts +24 -0
  152. package/dist/src/services/McpCommandLoader.js +50 -0
  153. package/dist/src/services/McpCommandLoader.js.map +1 -0
  154. package/dist/src/services/McpPromptLoader.js +17 -2
  155. package/dist/src/services/McpPromptLoader.js.map +1 -1
  156. package/dist/src/services/ReleaseNotesCache.d.ts +57 -0
  157. package/dist/src/services/ReleaseNotesCache.js +186 -0
  158. package/dist/src/services/ReleaseNotesCache.js.map +1 -0
  159. package/dist/src/services/elevenLabsErrors.d.ts +65 -0
  160. package/dist/src/services/elevenLabsErrors.js +233 -0
  161. package/dist/src/services/elevenLabsErrors.js.map +1 -0
  162. package/dist/src/services/elevenLabsService.d.ts +62 -0
  163. package/dist/src/services/elevenLabsService.js +186 -0
  164. package/dist/src/services/elevenLabsService.js.map +1 -0
  165. package/dist/src/services/elevenLabsStreamingService.d.ts +59 -0
  166. package/dist/src/services/elevenLabsStreamingService.js +202 -0
  167. package/dist/src/services/elevenLabsStreamingService.js.map +1 -0
  168. package/dist/src/services/elevenLabsTokenService.d.ts +21 -0
  169. package/dist/src/services/elevenLabsTokenService.js +42 -0
  170. package/dist/src/services/elevenLabsTokenService.js.map +1 -0
  171. package/dist/src/services/voiceInputHandler.d.ts +26 -0
  172. package/dist/src/services/voiceInputHandler.js +209 -0
  173. package/dist/src/services/voiceInputHandler.js.map +1 -0
  174. package/dist/src/services/voiceRecordingService.d.ts +69 -0
  175. package/dist/src/services/voiceRecordingService.js +397 -0
  176. package/dist/src/services/voiceRecordingService.js.map +1 -0
  177. package/dist/src/ui/App.d.ts +1 -0
  178. package/dist/src/ui/App.js +412 -63
  179. package/dist/src/ui/App.js.map +1 -1
  180. package/dist/src/ui/commands/browseExtensionsCommand.d.ts +7 -0
  181. package/dist/src/ui/commands/browseExtensionsCommand.js +16 -0
  182. package/dist/src/ui/commands/browseExtensionsCommand.js.map +1 -0
  183. package/dist/src/ui/commands/chatCommand.js +356 -16
  184. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  185. package/dist/src/ui/commands/dbCommand.d.ts +7 -0
  186. package/dist/src/ui/commands/dbCommand.js +37 -0
  187. package/dist/src/ui/commands/dbCommand.js.map +1 -0
  188. package/dist/src/ui/commands/docsCommand.js +1 -1
  189. package/dist/src/ui/commands/docsCommand.js.map +1 -1
  190. package/dist/src/ui/commands/mcpCommand.js +3 -2
  191. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  192. package/dist/src/ui/commands/mcpInvokeCommand.d.ts +16 -0
  193. package/dist/src/ui/commands/mcpInvokeCommand.js +263 -0
  194. package/dist/src/ui/commands/mcpInvokeCommand.js.map +1 -0
  195. package/dist/src/ui/commands/modelCommand.js +79 -5
  196. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  197. package/dist/src/ui/commands/multiAgentCommand.d.ts +7 -0
  198. package/dist/src/ui/commands/multiAgentCommand.js +833 -0
  199. package/dist/src/ui/commands/multiAgentCommand.js.map +1 -0
  200. package/dist/src/ui/commands/multiAgentConfigureCommand.d.ts +7 -0
  201. package/dist/src/ui/commands/multiAgentConfigureCommand.js +17 -0
  202. package/dist/src/ui/commands/multiAgentConfigureCommand.js.map +1 -0
  203. package/dist/src/ui/commands/quitCommand.js +71 -2
  204. package/dist/src/ui/commands/quitCommand.js.map +1 -1
  205. package/dist/src/ui/commands/releasesCommand.d.ts +7 -0
  206. package/dist/src/ui/commands/releasesCommand.js +16 -0
  207. package/dist/src/ui/commands/releasesCommand.js.map +1 -0
  208. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  209. package/dist/src/ui/commands/shellPermissionsCommand.d.ts +7 -0
  210. package/dist/src/ui/commands/shellPermissionsCommand.js +109 -0
  211. package/dist/src/ui/commands/shellPermissionsCommand.js.map +1 -0
  212. package/dist/src/ui/commands/skillCommand.d.ts +7 -0
  213. package/dist/src/ui/commands/skillCommand.js +240 -0
  214. package/dist/src/ui/commands/skillCommand.js.map +1 -0
  215. package/dist/src/ui/commands/statsCommand.js +243 -1
  216. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  217. package/dist/src/ui/commands/tasksCommand.d.ts +7 -0
  218. package/dist/src/ui/commands/tasksCommand.js +535 -0
  219. package/dist/src/ui/commands/tasksCommand.js.map +1 -0
  220. package/dist/src/ui/commands/toolPermissionsCommand.d.ts +7 -0
  221. package/dist/src/ui/commands/toolPermissionsCommand.js +408 -0
  222. package/dist/src/ui/commands/toolPermissionsCommand.js.map +1 -0
  223. package/dist/src/ui/commands/types.d.ts +10 -2
  224. package/dist/src/ui/commands/types.js.map +1 -1
  225. package/dist/src/ui/commands/voiceCommand.d.ts +7 -0
  226. package/dist/src/ui/commands/voiceCommand.js +525 -0
  227. package/dist/src/ui/commands/voiceCommand.js.map +1 -0
  228. package/dist/src/ui/components/AuthDialog.d.ts +4 -2
  229. package/dist/src/ui/components/AuthDialog.js +349 -64
  230. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  231. package/dist/src/ui/components/AuthInProgress.js +3 -1
  232. package/dist/src/ui/components/AuthInProgress.js.map +1 -1
  233. package/dist/src/ui/components/ExtensionsDialog.d.ts +11 -0
  234. package/dist/src/ui/components/ExtensionsDialog.js +303 -0
  235. package/dist/src/ui/components/ExtensionsDialog.js.map +1 -0
  236. package/dist/src/ui/components/GenericProviderKeyPrompt.d.ts +24 -0
  237. package/dist/src/ui/components/GenericProviderKeyPrompt.js +99 -0
  238. package/dist/src/ui/components/GenericProviderKeyPrompt.js.map +1 -0
  239. package/dist/src/ui/components/Header.js +10 -1
  240. package/dist/src/ui/components/Header.js.map +1 -1
  241. package/dist/src/ui/components/HistoryBrowserDialog.d.ts +15 -0
  242. package/dist/src/ui/components/HistoryBrowserDialog.js +166 -0
  243. package/dist/src/ui/components/HistoryBrowserDialog.js.map +1 -0
  244. package/dist/src/ui/components/HistoryItemDisplay.js +13 -1
  245. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  246. package/dist/src/ui/components/InputPrompt.js +22 -8
  247. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  248. package/dist/src/ui/components/LoadingIndicator.d.ts +4 -0
  249. package/dist/src/ui/components/LoadingIndicator.js +16 -4
  250. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  251. package/dist/src/ui/components/LoadingIndicator.test.js +108 -16
  252. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
  253. package/dist/src/ui/components/ModelSelectionDialog.d.ts +2 -0
  254. package/dist/src/ui/components/ModelSelectionDialog.js +33 -4
  255. package/dist/src/ui/components/ModelSelectionDialog.js.map +1 -1
  256. package/dist/src/ui/components/ModelSelectionDialog.test.js +41 -4
  257. package/dist/src/ui/components/ModelSelectionDialog.test.js.map +1 -1
  258. package/dist/src/ui/components/ReleaseNotesDialog.d.ts +23 -0
  259. package/dist/src/ui/components/ReleaseNotesDialog.js +150 -0
  260. package/dist/src/ui/components/ReleaseNotesDialog.js.map +1 -0
  261. package/dist/src/ui/components/ReleaseNotesDisplay.d.ts +18 -0
  262. package/dist/src/ui/components/ReleaseNotesDisplay.js +14 -0
  263. package/dist/src/ui/components/ReleaseNotesDisplay.js.map +1 -0
  264. package/dist/src/ui/components/SessionSummaryDisplay.d.ts +2 -0
  265. package/dist/src/ui/components/SessionSummaryDisplay.js +1 -1
  266. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  267. package/dist/src/ui/components/SettingsDialog.d.ts +3 -1
  268. package/dist/src/ui/components/SettingsDialog.js +17 -7
  269. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  270. package/dist/src/ui/components/ShellConfirmationDialog.d.ts +2 -0
  271. package/dist/src/ui/components/ShellConfirmationDialog.js +7 -3
  272. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  273. package/dist/src/ui/components/StatsDisplay.d.ts +2 -0
  274. package/dist/src/ui/components/StatsDisplay.js +92 -7
  275. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  276. package/dist/src/ui/components/SuggestionsDisplay.js +6 -1
  277. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  278. package/dist/src/ui/components/ThemeDialog.d.ts +3 -1
  279. package/dist/src/ui/components/ThemeDialog.js +5 -2
  280. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  281. package/dist/src/ui/components/Tips.js +1 -4
  282. package/dist/src/ui/components/Tips.js.map +1 -1
  283. package/dist/src/ui/components/TodoListDialog.d.ts +13 -0
  284. package/dist/src/ui/components/TodoListDialog.js +29 -0
  285. package/dist/src/ui/components/TodoListDialog.js.map +1 -0
  286. package/dist/src/ui/components/TodoListDialog.test.d.ts +6 -0
  287. package/dist/src/ui/components/TodoListDialog.test.js +60 -0
  288. package/dist/src/ui/components/TodoListDialog.test.js.map +1 -0
  289. package/dist/src/ui/components/VoiceConfigDialog.d.ts +17 -0
  290. package/dist/src/ui/components/VoiceConfigDialog.js +47 -0
  291. package/dist/src/ui/components/VoiceConfigDialog.js.map +1 -0
  292. package/dist/src/ui/components/messages/GeminiMessage.js +4 -0
  293. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  294. package/dist/src/ui/components/messages/GeminiMessageContent.js +4 -0
  295. package/dist/src/ui/components/messages/GeminiMessageContent.js.map +1 -1
  296. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +2 -0
  297. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +96 -9
  298. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  299. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +3 -3
  300. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  301. package/dist/src/ui/components/messages/ToolMessage.js +1 -1
  302. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  303. package/dist/src/ui/components/messages/ToolMessage.test.js +9 -12
  304. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  305. package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.d.ts +25 -0
  306. package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.js +179 -0
  307. package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.js.map +1 -0
  308. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +3 -1
  309. package/dist/src/ui/components/shared/RadioButtonSelect.js +57 -18
  310. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  311. package/dist/src/ui/components/shared/TextInput.d.ts +2 -1
  312. package/dist/src/ui/components/shared/TextInput.js +5 -2
  313. package/dist/src/ui/components/shared/TextInput.js.map +1 -1
  314. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js +3 -3
  315. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js.map +1 -1
  316. package/dist/src/ui/constants.d.ts +3 -3
  317. package/dist/src/ui/constants.js +3 -3
  318. package/dist/src/ui/constants.js.map +1 -1
  319. package/dist/src/ui/contexts/SessionContext.d.ts +6 -0
  320. package/dist/src/ui/contexts/SessionContext.js +24 -2
  321. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  322. package/dist/src/ui/hooks/atCommandProcessor.js +139 -57
  323. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  324. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -1
  325. package/dist/src/ui/hooks/slashCommandProcessor.js +189 -17
  326. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  327. package/dist/src/ui/hooks/useAdaptiveStream.d.ts +42 -0
  328. package/dist/src/ui/hooks/useAdaptiveStream.js +31 -0
  329. package/dist/src/ui/hooks/useAdaptiveStream.js.map +1 -0
  330. package/dist/src/ui/hooks/useAtCompletion.js +20 -4
  331. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  332. package/dist/src/ui/hooks/useAuthCommand.d.ts +2 -2
  333. package/dist/src/ui/hooks/useAuthCommand.js +99 -5
  334. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  335. package/dist/src/ui/hooks/useCommandCompletion.js +14 -10
  336. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  337. package/dist/src/ui/hooks/useDialogClose.d.ts +10 -0
  338. package/dist/src/ui/hooks/useDialogClose.js +25 -0
  339. package/dist/src/ui/hooks/useDialogClose.js.map +1 -1
  340. package/dist/src/ui/hooks/useDialogCloseAnimation.d.ts +22 -0
  341. package/dist/src/ui/hooks/useDialogCloseAnimation.js +68 -0
  342. package/dist/src/ui/hooks/useDialogCloseAnimation.js.map +1 -0
  343. package/dist/src/ui/hooks/useEncryptedStream.d.ts +22 -0
  344. package/dist/src/ui/hooks/useEncryptedStream.js +378 -0
  345. package/dist/src/ui/hooks/useEncryptedStream.js.map +1 -0
  346. package/dist/src/ui/hooks/useExtensionsDialog.d.ts +10 -0
  347. package/dist/src/ui/hooks/useExtensionsDialog.js +21 -0
  348. package/dist/src/ui/hooks/useExtensionsDialog.js.map +1 -0
  349. package/dist/src/ui/hooks/useGeminiStream.js +6 -2
  350. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  351. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  352. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
  353. package/dist/src/ui/hooks/useLoadingIndicator.js +3 -2
  354. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  355. package/dist/src/ui/hooks/useLoadingIndicator.test.js +27 -5
  356. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  357. package/dist/src/ui/hooks/useMultiAgentConfigCommand.d.ts +10 -0
  358. package/dist/src/ui/hooks/useMultiAgentConfigCommand.js +21 -0
  359. package/dist/src/ui/hooks/useMultiAgentConfigCommand.js.map +1 -0
  360. package/dist/src/ui/hooks/useReleasesDialog.d.ts +20 -0
  361. package/dist/src/ui/hooks/useReleasesDialog.js +214 -0
  362. package/dist/src/ui/hooks/useReleasesDialog.js.map +1 -0
  363. package/dist/src/ui/hooks/useSlashCompletion.js +10 -8
  364. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  365. package/dist/src/ui/hooks/useTodoList.d.ts +17 -0
  366. package/dist/src/ui/hooks/useTodoList.js +51 -0
  367. package/dist/src/ui/hooks/useTodoList.js.map +1 -0
  368. package/dist/src/ui/keyMatchers.test.js +6 -0
  369. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  370. package/dist/src/ui/themes/blackbox-dark.js +1 -1
  371. package/dist/src/ui/themes/blackbox-dark.js.map +1 -1
  372. package/dist/src/ui/themes/blackbox-light.js +1 -1
  373. package/dist/src/ui/themes/blackbox-light.js.map +1 -1
  374. package/dist/src/ui/types.d.ts +15 -2
  375. package/dist/src/ui/types.js +1 -0
  376. package/dist/src/ui/types.js.map +1 -1
  377. package/dist/src/ui/utils/computeStats.d.ts +25 -1
  378. package/dist/src/ui/utils/computeStats.js +58 -1
  379. package/dist/src/ui/utils/computeStats.js.map +1 -1
  380. package/dist/src/ui/utils/updateCheck.js +37 -54
  381. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  382. package/dist/src/utils/backgroundUpdateCheck.d.ts +15 -0
  383. package/dist/src/utils/backgroundUpdateCheck.js +48 -0
  384. package/dist/src/utils/backgroundUpdateCheck.js.map +1 -0
  385. package/dist/src/utils/gitAutoDetect.d.ts +16 -0
  386. package/dist/src/utils/gitAutoDetect.js +45 -0
  387. package/dist/src/utils/gitAutoDetect.js.map +1 -0
  388. package/dist/src/utils/installationInfo.d.ts +1 -0
  389. package/dist/src/utils/installationInfo.js +24 -4
  390. package/dist/src/utils/installationInfo.js.map +1 -1
  391. package/dist/src/utils/preLaunchUpdateCheck.d.ts +17 -0
  392. package/dist/src/utils/preLaunchUpdateCheck.js +75 -0
  393. package/dist/src/utils/preLaunchUpdateCheck.js.map +1 -0
  394. package/dist/src/utils/version.js +12 -1
  395. package/dist/src/utils/version.js.map +1 -1
  396. package/dist/src/utils/versionStorage.d.ts +50 -0
  397. package/dist/src/utils/versionStorage.js +224 -0
  398. package/dist/src/utils/versionStorage.js.map +1 -0
  399. package/dist/src/validateNonInterActiveAuth.js +10 -3
  400. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  401. package/dist/src/virtual-extensions.d.ts +14 -0
  402. package/dist/src/virtual-extensions.js +56 -0
  403. package/dist/src/virtual-extensions.js.map +1 -0
  404. package/dist/src/zed-integration/fileSystemService.d.ts +3 -3
  405. package/dist/src/zed-integration/fileSystemService.js +5 -7
  406. package/dist/src/zed-integration/fileSystemService.js.map +1 -1
  407. package/dist/src/zed-integration/zedIntegration.js +62 -17
  408. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  409. package/dist/tsconfig.tsbuildinfo +1 -1
  410. package/package.json +13 -3
  411. package/dist/src/utils/handleAutoUpdate.d.ts +0 -11
  412. package/dist/src/utils/handleAutoUpdate.js +0 -102
  413. package/dist/src/utils/handleAutoUpdate.js.map +0 -1
  414. package/dist/src/utils/updateEventEmitter.d.ts +0 -11
  415. package/dist/src/utils/updateEventEmitter.js +0 -12
  416. package/dist/src/utils/updateEventEmitter.js.map +0 -1
  417. package/dist/src/zed-integration/acp.d.ts +0 -63
  418. package/dist/src/zed-integration/acp.js +0 -226
  419. package/dist/src/zed-integration/acp.js.map +0 -1
  420. package/dist/src/zed-integration/schema.d.ts +0 -11782
  421. package/dist/src/zed-integration/schema.js +0 -311
  422. package/dist/src/zed-integration/schema.js.map +0 -1
@@ -0,0 +1,556 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState, useEffect, useCallback } from 'react';
3
+ import { Box, Text, useApp } from 'ink';
4
+ import { useKeypress } from '../../ui/hooks/useKeypress.js';
5
+ import { AuthType } from '@blackbox_ai/blackbox-cli-core';
6
+ import { Colors } from '../../ui/colors.js';
7
+ import { RadioButtonSelect } from '../../ui/components/shared/RadioButtonSelect.js';
8
+ import { TextInput } from '../../ui/components/shared/TextInput.js';
9
+ import { setBlackboxApiKey, setBlackboxApiBaseUrl, setBlackboxApiModel, setBlackboxEncryptionBaseUrl, setBlackboxEncryptedModel, setOpenAIApiKey, setOpenAIBaseUrl, setOpenAIModel, setOpenRouterApiKey, setOpenRouterBaseUrl, setOpenRouterModel, setCustomApiKey, setCustomBaseUrl, setCustomModel, setAnthropicApiKey, setAnthropicBaseUrl, setAnthropicModel, setGoogleApiKey, setGoogleBaseUrl, setGoogleModel, setXaiApiKey, setXaiBaseUrl, setXaiModel, saveProviderCredentials, } from '../../config/auth.js';
10
+ import { loadSettings, SettingScope } from '../../config/settings.js';
11
+ import { fetchModelsForProvider } from '../../config/modelFetcher.js';
12
+ const PROVIDERS = [
13
+ {
14
+ name: 'blackbox',
15
+ displayName: 'BlackboxAI',
16
+ authType: AuthType.USE_BLACKBOX_API,
17
+ requiresApiKey: true,
18
+ defaultBaseUrl: 'https://api.blackbox.ai/v1',
19
+ defaultModel: 'blackbox-ai',
20
+ envKeyName: 'BLACKBOX_API_KEY',
21
+ envBaseUrlName: 'BLACKBOX_API_BASE_URL',
22
+ envModelName: 'BLACKBOX_API_MODEL',
23
+ availableModels: [
24
+ 'blackboxai/anthropic/claude-sonnet-4.5',
25
+ 'blackboxai/anthropic/claude-sonnet-4',
26
+ 'blackboxai/anthropic/claude-opus-4',
27
+ 'blackboxai/anthropic/claude-3.7-sonnet:thinking',
28
+ 'blackboxai/anthropic/claude-haiku-4.5',
29
+ 'blackboxai/anthropic/claude-3.5-sonnet',
30
+ 'blackboxai/encrypted',
31
+ 'blackboxai/deepseek/deepseek-chat',
32
+ 'blackboxai/deepseek/deepseek-chat:free',
33
+ 'blackboxai/google/gemini-2.5-flash',
34
+ 'blackboxai/google/gemini-2.5-pro',
35
+ 'blackboxai/mistralai/mistral-large',
36
+ 'blackboxai/openai/codex-mini',
37
+ 'blackboxai/openai/gpt-4.1',
38
+ 'blackboxai/openai/gpt-4.1-mini',
39
+ 'blackboxai/openai/gpt-4o',
40
+ 'blackboxai/openai/gpt-4o-mini',
41
+ 'blackboxai/openai/o4-mini',
42
+ 'blackboxai/openai/o3-mini'
43
+ ],
44
+ },
45
+ {
46
+ name: 'blackbox-encrypted',
47
+ displayName: 'BlackboxAI Encrypted',
48
+ authType: AuthType.USE_BLACKBOX_API,
49
+ requiresApiKey: false, // Special case: no API key required
50
+ defaultBaseUrl: 'https://encrypt.blackboxai.app',
51
+ defaultModel: 'blackboxai/encrypted',
52
+ envKeyName: 'BLACKBOX_API_KEY',
53
+ envBaseUrlName: 'BLACKBOX_ENCRYPTION_BASE_URL',
54
+ envModelName: 'BLACKBOX_ENCRYPTED_MODEL',
55
+ availableModels: [
56
+ 'blackboxai/encrypted',
57
+ ],
58
+ },
59
+ {
60
+ name: 'xai',
61
+ displayName: 'xAI',
62
+ authType: AuthType.USE_OPENAI, // xAI uses OpenAI-compatible API
63
+ requiresApiKey: true,
64
+ defaultBaseUrl: 'https://api.x.ai/v1',
65
+ defaultModel: 'grok-code-fast-1',
66
+ envKeyName: 'XAI_API_KEY',
67
+ envBaseUrlName: 'XAI_HOST',
68
+ envModelName: 'XAI_MODEL',
69
+ availableModels: [
70
+ 'grok-code-fast-1',
71
+ 'grok-4-0709',
72
+ 'grok-3',
73
+ 'grok-3-fast',
74
+ 'grok-3-mini',
75
+ 'grok-3-mini-fast',
76
+ 'grok-2-vision-1212',
77
+ 'grok-2-image-1212',
78
+ 'grok-3-latest',
79
+ 'grok-3-fast-latest',
80
+ 'grok-3-mini-latest',
81
+ 'grok-3-mini-fast-latest',
82
+ 'grok-2-vision',
83
+ 'grok-2-vision-latest',
84
+ 'grok-2-image',
85
+ 'grok-2-image-latest',
86
+ 'grok-2',
87
+ 'grok-2-latest',
88
+ ],
89
+ },
90
+ {
91
+ name: 'google',
92
+ displayName: 'Google Gemini',
93
+ authType: AuthType.USE_OPENAI, // Google uses OpenAI-compatible API
94
+ requiresApiKey: true,
95
+ defaultBaseUrl: 'https://generativelanguage.googleapis.com',
96
+ defaultModel: 'gemini-2.5-flash',
97
+ envKeyName: 'GOOGLE_API_KEY',
98
+ envBaseUrlName: 'GOOGLE_HOST',
99
+ envModelName: 'GOOGLE_MODEL',
100
+ availableModels: [
101
+ 'gemini-2.5-pro',
102
+ 'gemini-2.5-pro-preview-06-05',
103
+ 'gemini-2.5-pro-preview-05-06',
104
+ 'gemini-2.5-flash',
105
+ 'gemini-2.5-flash-preview-05-20',
106
+ 'gemini-2.5-flash-lite-preview-06-17',
107
+ 'gemini-2.0-flash',
108
+ 'gemini-2.0-flash-exp',
109
+ 'gemini-2.0-flash-lite',
110
+ 'gemini-1.5-flash',
111
+ 'gemini-1.5-flash-latest',
112
+ 'gemini-1.5-flash-002',
113
+ 'gemini-1.5-flash-8b',
114
+ 'gemini-1.5-flash-8b-latest',
115
+ 'gemini-1.5-pro',
116
+ 'gemini-1.5-pro-latest',
117
+ 'gemini-1.5-pro-002',
118
+ ],
119
+ },
120
+ {
121
+ name: 'anthropic',
122
+ displayName: 'Anthropic',
123
+ authType: AuthType.USE_OPENAI, // Anthropic uses OpenAI-compatible API
124
+ requiresApiKey: true,
125
+ defaultBaseUrl: 'https://api.anthropic.com/v1',
126
+ defaultModel: 'claude-3-5-sonnet-latest',
127
+ envKeyName: 'ANTHROPIC_API_KEY',
128
+ envBaseUrlName: 'ANTHROPIC_BASE_URL',
129
+ envModelName: 'ANTHROPIC_MODEL',
130
+ availableModels: [
131
+ 'claude-sonnet-4-latest',
132
+ 'claude-sonnet-4-20250514',
133
+ 'claude-opus-4-latest',
134
+ 'claude-opus-4-20250514',
135
+ 'claude-3-7-sonnet-latest',
136
+ 'claude-3-7-sonnet-20250219',
137
+ 'claude-3-5-sonnet-latest',
138
+ 'claude-3-5-sonnet-20241022',
139
+ 'claude-3-5-haiku-latest',
140
+ 'claude-3-5-haiku-20241022',
141
+ 'claude-3-opus-latest',
142
+ 'claude-3-opus-20240229',
143
+ 'claude-3-sonnet-20240229',
144
+ 'claude-3-haiku-20240307',
145
+ ],
146
+ },
147
+ {
148
+ name: 'openai',
149
+ displayName: 'OpenAI',
150
+ authType: AuthType.USE_OPENAI,
151
+ requiresApiKey: true,
152
+ defaultBaseUrl: 'https://api.openai.com/v1',
153
+ defaultModel: 'gpt-4',
154
+ envKeyName: 'OPENAI_API_KEY',
155
+ envBaseUrlName: 'OPENAI_BASE_URL',
156
+ envModelName: 'OPENAI_MODEL',
157
+ availableModels: [
158
+ 'gpt-4',
159
+ 'gpt-4-turbo',
160
+ 'gpt-4o',
161
+ 'gpt-4o-mini',
162
+ 'gpt-3.5-turbo',
163
+ 'o1',
164
+ 'o1-mini',
165
+ 'o1-preview',
166
+ ],
167
+ },
168
+ {
169
+ name: 'openrouter',
170
+ displayName: 'OpenRouter',
171
+ authType: AuthType.USE_OPENAI, // OpenRouter uses OpenAI-compatible API
172
+ requiresApiKey: true,
173
+ defaultBaseUrl: 'https://openrouter.ai/api/v1',
174
+ defaultModel: 'anthropic/claude-3.5-sonnet',
175
+ envKeyName: 'OPENROUTER_API_KEY',
176
+ envBaseUrlName: 'OPENROUTER_BASE_URL',
177
+ envModelName: 'OPENROUTER_MODEL',
178
+ availableModels: [
179
+ 'anthropic/claude-3.5-sonnet',
180
+ 'anthropic/claude-3.7-sonnet',
181
+ 'anthropic/claude-sonnet-4',
182
+ 'google/gemini-2.5-pro',
183
+ 'deepseek/deepseek-r1-0528',
184
+ 'openai/gpt-4o',
185
+ 'openai/gpt-4-turbo',
186
+ 'meta-llama/llama-3.3-70b-instruct',
187
+ ],
188
+ },
189
+ {
190
+ name: 'custom',
191
+ displayName: 'Custom Provider',
192
+ authType: AuthType.USE_OPENAI, // Custom provider uses OpenAI-compatible API
193
+ requiresApiKey: true,
194
+ defaultBaseUrl: '',
195
+ defaultModel: '',
196
+ envKeyName: 'CUSTOM_API_KEY',
197
+ envBaseUrlName: 'CUSTOM_BASE_URL',
198
+ envModelName: 'CUSTOM_MODEL',
199
+ availableModels: [],
200
+ },
201
+ ];
202
+ export function ConfigureUI({ onComplete, onCancel, embedded = false, mode = 'provider', }) {
203
+ const { exit } = useApp();
204
+ const [step, setStep] = useState(mode === 'db' ? 'dbType' : 'provider');
205
+ // Handle ESC key to close dialog when in embedded mode
206
+ const handleKeypress = useCallback((key) => {
207
+ if (key.name === 'escape' && embedded) {
208
+ // Use onCancel if provided, otherwise fall back to onComplete
209
+ if (onCancel) {
210
+ onCancel();
211
+ }
212
+ else {
213
+ onComplete();
214
+ }
215
+ }
216
+ }, [embedded, onComplete, onCancel]);
217
+ useKeypress(handleKeypress, { isActive: embedded });
218
+ const [selectedProvider, setSelectedProvider] = useState(null);
219
+ const [apiKey, setApiKey] = useState('');
220
+ const [dbType, setDbType] = useState('');
221
+ const [dbUri, setDbUri] = useState('');
222
+ const [dbName, setDbName] = useState('');
223
+ const [baseUrl, setBaseUrl] = useState('');
224
+ const [model, setModel] = useState('');
225
+ const [modelSearch, setModelSearch] = useState('');
226
+ const [error, setError] = useState(null);
227
+ const [isFetchingModels, setIsFetchingModels] = useState(false);
228
+ const [fetchedModels, setFetchedModels] = useState([]);
229
+ // Check for existing environment variables when provider is selected
230
+ useEffect(() => {
231
+ if (selectedProvider) {
232
+ const existingApiKey = process.env[selectedProvider.envKeyName];
233
+ const existingBaseUrl = process.env[selectedProvider.envBaseUrlName];
234
+ const existingModel = process.env[selectedProvider.envModelName];
235
+ if (existingApiKey) {
236
+ setApiKey(existingApiKey);
237
+ }
238
+ if (existingBaseUrl) {
239
+ setBaseUrl(existingBaseUrl);
240
+ }
241
+ else {
242
+ setBaseUrl(selectedProvider.defaultBaseUrl);
243
+ }
244
+ if (existingModel) {
245
+ setModel(existingModel);
246
+ }
247
+ else {
248
+ setModel(selectedProvider.defaultModel);
249
+ }
250
+ }
251
+ }, [selectedProvider]);
252
+ // Fetch models when moving to model selection step
253
+ useEffect(() => {
254
+ if (step === 'model' && selectedProvider && apiKey && baseUrl) {
255
+ const providerName = selectedProvider.name;
256
+ console.log(`[${providerName}] Fetching models from API...`);
257
+ setIsFetchingModels(true);
258
+ setFetchedModels([]); // Clear previous models
259
+ fetchModelsForProvider(providerName, apiKey, baseUrl)
260
+ .then((models) => {
261
+ console.log(`[${providerName}] Fetched ${models.length} models`);
262
+ if (models.length > 0) {
263
+ setFetchedModels(models);
264
+ console.log(`[${providerName}] First 5 models:`, models.slice(0, 5));
265
+ }
266
+ else {
267
+ console.log(`[${providerName}] No models fetched, using defaults`);
268
+ }
269
+ })
270
+ .catch((error) => {
271
+ console.error(`[${providerName}] Error fetching models:`, error);
272
+ })
273
+ .finally(() => {
274
+ setIsFetchingModels(false);
275
+ });
276
+ }
277
+ }, [step, selectedProvider, apiKey, baseUrl]);
278
+ const handleProviderSelect = (providerName) => {
279
+ const provider = PROVIDERS.find((p) => p.name === providerName);
280
+ if (provider) {
281
+ setSelectedProvider(provider);
282
+ // Special case for blackbox-encrypted: skip all configuration steps
283
+ if (provider.name === 'blackbox-encrypted') {
284
+ // Set predefined values
285
+ setApiKey(''); // No API key needed
286
+ setBaseUrl(provider.defaultBaseUrl);
287
+ setModel(provider.defaultModel);
288
+ setStep('confirm');
289
+ }
290
+ else {
291
+ setStep('apiKey');
292
+ }
293
+ }
294
+ };
295
+ const handleApiKeySubmit = () => {
296
+ if (!apiKey.trim()) {
297
+ setError('API key is required');
298
+ return;
299
+ }
300
+ setError(null);
301
+ // Skip baseUrl step for non-custom providers (use default)
302
+ if (selectedProvider?.name === 'custom') {
303
+ setStep('baseUrl');
304
+ }
305
+ else {
306
+ setStep('model');
307
+ }
308
+ };
309
+ const handleBaseUrlSubmit = () => {
310
+ if (!baseUrl.trim()) {
311
+ setError('Base URL is required');
312
+ return;
313
+ }
314
+ setError(null);
315
+ setStep('model');
316
+ };
317
+ const handleModelSelect = (selectedModel) => {
318
+ setModel(selectedModel);
319
+ setStep('confirm');
320
+ };
321
+ // Filter models based on search
322
+ // Use fetched models if available, otherwise use default list
323
+ const availableModels = selectedProvider
324
+ ? fetchedModels.length > 0
325
+ ? fetchedModels
326
+ : selectedProvider.availableModels
327
+ : [];
328
+ const filteredModels = availableModels.filter((m) => m.toLowerCase().includes(modelSearch.toLowerCase()));
329
+ const handleModelSearchSubmit = () => {
330
+ // Only submit if there are no filtered results (custom model entry)
331
+ // If there are filtered results, the RadioButtonSelect should handle selection
332
+ if (filteredModels.length > 0) {
333
+ return; // Don't submit, let RadioButtonSelect handle it
334
+ }
335
+ if (!modelSearch.trim()) {
336
+ setError('Model name is required');
337
+ return;
338
+ }
339
+ setModel(modelSearch);
340
+ setStep('confirm');
341
+ };
342
+ const handleDbTypeSelect = (selected) => {
343
+ if (selected === 'postgres' ||
344
+ selected === 'mysql' ||
345
+ selected === 'mongodb' ||
346
+ selected === 'redis') {
347
+ setDbType(selected);
348
+ setDbUri(process.env['DB_CONNECTION_URI'] || '');
349
+ setDbName('');
350
+ setError(null);
351
+ setStep('dbUri');
352
+ }
353
+ };
354
+ const handleDbUriSubmit = () => {
355
+ const trimmed = dbUri.trim();
356
+ if (!trimmed) {
357
+ setError('Connection URI is required');
358
+ return;
359
+ }
360
+ setError(null);
361
+ if (dbType === 'postgres') {
362
+ try {
363
+ const url = new URL(trimmed);
364
+ const hasDb = url.pathname && url.pathname !== '/' && url.pathname !== '';
365
+ if (!hasDb) {
366
+ setStep('dbName');
367
+ return;
368
+ }
369
+ }
370
+ catch {
371
+ // fallthrough: save as-is and let tool validation handle exact format
372
+ }
373
+ }
374
+ setStep('dbComplete');
375
+ try {
376
+ const settings = loadSettings(process.cwd());
377
+ settings.setValue(SettingScope.User, 'tools.sqlDb.type', dbType);
378
+ settings.setValue(SettingScope.User, 'tools.sqlDb.connectionUri', trimmed);
379
+ process.env['DB_CONNECTION_URI'] = trimmed;
380
+ setTimeout(() => {
381
+ onComplete();
382
+ if (!embedded) {
383
+ exit();
384
+ }
385
+ }, 1500);
386
+ }
387
+ catch (err) {
388
+ setError(err instanceof Error ? err.message : 'Configuration failed');
389
+ setStep('dbUri');
390
+ }
391
+ };
392
+ const handleDbNameSubmit = () => {
393
+ const uri = dbUri.trim();
394
+ const name = dbName.trim();
395
+ if (!name) {
396
+ setError('Database name is required for Postgres');
397
+ return;
398
+ }
399
+ setError(null);
400
+ try {
401
+ const url = new URL(uri);
402
+ url.pathname = `/${encodeURIComponent(name)}`;
403
+ const finalUri = url.toString();
404
+ const settings = loadSettings(process.cwd());
405
+ settings.setValue(SettingScope.User, 'tools.sqlDb.type', dbType);
406
+ settings.setValue(SettingScope.User, 'tools.sqlDb.connectionUri', finalUri);
407
+ process.env['DB_CONNECTION_URI'] = finalUri;
408
+ setStep('dbComplete');
409
+ setTimeout(() => {
410
+ onComplete();
411
+ if (!embedded) {
412
+ exit();
413
+ }
414
+ }, 1500);
415
+ }
416
+ catch (_err) {
417
+ setError('Invalid connection URI');
418
+ }
419
+ };
420
+ const handleConfirm = async () => {
421
+ if (!selectedProvider)
422
+ return;
423
+ try {
424
+ // Load settings first
425
+ const settings = loadSettings(process.cwd());
426
+ // Apply configuration based on provider name (not authType, since OpenRouter uses USE_OPENAI)
427
+ if (selectedProvider.name === 'openrouter') {
428
+ // Set environment variables for immediate use
429
+ setOpenRouterApiKey(apiKey);
430
+ setOpenRouterBaseUrl(baseUrl);
431
+ setOpenRouterModel(model);
432
+ // Save to settings for persistence
433
+ saveProviderCredentials(settings, 'openrouter', {
434
+ apiKey,
435
+ baseUrl,
436
+ model,
437
+ });
438
+ }
439
+ else if (selectedProvider.name === 'openai') {
440
+ // Set environment variables for immediate use
441
+ setOpenAIApiKey(apiKey);
442
+ setOpenAIBaseUrl(baseUrl);
443
+ setOpenAIModel(model);
444
+ // Save to settings for persistence
445
+ saveProviderCredentials(settings, 'openai', {
446
+ apiKey,
447
+ baseUrl,
448
+ model,
449
+ });
450
+ }
451
+ else if (selectedProvider.name === 'blackbox') {
452
+ // Set environment variables for immediate use
453
+ setBlackboxApiKey(apiKey);
454
+ setBlackboxApiBaseUrl(baseUrl);
455
+ setBlackboxApiModel(model);
456
+ // Save to settings for persistence
457
+ saveProviderCredentials(settings, 'blackbox', {
458
+ apiKey,
459
+ baseUrl,
460
+ model,
461
+ });
462
+ }
463
+ else if (selectedProvider.name === 'blackbox-encrypted') {
464
+ // Set environment variables for immediate use (no API key needed for encrypted provider)
465
+ setBlackboxEncryptionBaseUrl(baseUrl);
466
+ setBlackboxEncryptedModel(model);
467
+ // Save to settings for persistence (no API key needed)
468
+ saveProviderCredentials(settings, 'blackbox-encrypted', {
469
+ baseUrl,
470
+ model,
471
+ });
472
+ }
473
+ else if (selectedProvider.name === 'xai') {
474
+ // Set environment variables for immediate use
475
+ setXaiApiKey(apiKey);
476
+ setXaiBaseUrl(baseUrl);
477
+ setXaiModel(model);
478
+ // Save to settings for persistence
479
+ saveProviderCredentials(settings, 'xai', {
480
+ apiKey,
481
+ baseUrl,
482
+ model,
483
+ });
484
+ }
485
+ else if (selectedProvider.name === 'google') {
486
+ // Set environment variables for immediate use
487
+ setGoogleApiKey(apiKey);
488
+ setGoogleBaseUrl(baseUrl);
489
+ setGoogleModel(model);
490
+ // Save to settings for persistence
491
+ saveProviderCredentials(settings, 'google', {
492
+ apiKey,
493
+ baseUrl,
494
+ model,
495
+ });
496
+ }
497
+ else if (selectedProvider.name === 'anthropic') {
498
+ // Set environment variables for immediate use
499
+ setAnthropicApiKey(apiKey);
500
+ setAnthropicBaseUrl(baseUrl);
501
+ setAnthropicModel(model);
502
+ // Save to settings for persistence
503
+ saveProviderCredentials(settings, 'anthropic', {
504
+ apiKey,
505
+ baseUrl,
506
+ model,
507
+ });
508
+ }
509
+ else if (selectedProvider.name === 'custom') {
510
+ // Set environment variables for immediate use
511
+ setCustomApiKey(apiKey);
512
+ setCustomBaseUrl(baseUrl);
513
+ setCustomModel(model);
514
+ // Save to settings for persistence
515
+ saveProviderCredentials(settings, 'custom', {
516
+ apiKey,
517
+ baseUrl,
518
+ model,
519
+ });
520
+ }
521
+ // Save provider selection and model name
522
+ // For selectedType, we use authType for backward compatibility
523
+ settings.setValue(SettingScope.User, 'security.auth.selectedType', selectedProvider.authType);
524
+ // Save the actual provider name so we can distinguish between OpenAI and OpenRouter
525
+ settings.setValue(SettingScope.User, 'security.auth.selectedProvider', selectedProvider.name);
526
+ settings.setValue(SettingScope.User, 'model.name', model);
527
+ setStep('complete');
528
+ setTimeout(() => {
529
+ onComplete(selectedProvider.name);
530
+ if (!embedded) {
531
+ exit();
532
+ }
533
+ }, 2000);
534
+ }
535
+ catch (err) {
536
+ setError(err instanceof Error ? err.message : 'Configuration failed');
537
+ }
538
+ };
539
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: Colors.AccentCyan, children: mode === 'db'
540
+ ? '🗄️ Database Connection Configuration'
541
+ : '🚀 Blackbox CLI Configuration' }) }), step === 'dbType' && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: "Select database type for `sql_db_connect`:" }) }), _jsx(RadioButtonSelect, { items: [
542
+ { label: 'PostgreSQL', value: 'postgres' },
543
+ { label: 'MySQL', value: 'mysql' },
544
+ { label: 'MongoDB', value: 'mongodb' },
545
+ { label: 'Redis', value: 'redis' },
546
+ ], onSelect: handleDbTypeSelect, isFocused: true }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "Press Enter to select, Ctrl+C to cancel" }) })] })), step === 'dbUri' && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: "Enter your connection URI (saved as `DB_CONNECTION_URI`)." }) }), _jsx(TextInput, { value: dbUri, onChange: setDbUri, onSubmit: handleDbUriSubmit, placeholder: "postgresql://user:pass@host:5432/db", isActive: true, maskValue: true }), error && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: Colors.AccentRed, children: ["\u274C ", error] }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "Press Enter to save, Ctrl+C to cancel" }) })] })), step === 'dbName' && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: "Postgres URI is missing a database name. Enter database name:" }) }), _jsx(TextInput, { value: dbName, onChange: setDbName, onSubmit: handleDbNameSubmit, placeholder: "my_database", isActive: true }), error && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: Colors.AccentRed, children: ["\u274C ", error] }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "Press Enter to save, Ctrl+C to cancel" }) })] })), step === 'dbComplete' && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: Colors.AccentGreen, children: "\u2705 DB connection saved successfully!" }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.AccentCyan, children: "\uD83D\uDCA1 Please retry your request (the previous tool call will not auto-retry)." }) })] })), step === 'provider' && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: "Select your AI provider:" }) }), _jsx(RadioButtonSelect, { items: PROVIDERS.map((p) => ({
547
+ label: p.displayName,
548
+ value: p.name,
549
+ })), onSelect: handleProviderSelect, isFocused: true }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "Use \u2191\u2193 arrows to navigate, Enter to select, Ctrl+C to cancel" }) })] })), step === 'apiKey' && selectedProvider && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["Configure ", _jsx(Text, { color: Colors.AccentGreen, children: selectedProvider.displayName })] }) }), process.env[selectedProvider.envKeyName] && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: Colors.AccentGreen, children: ["\u2713 API key found in environment variable ", selectedProvider.envKeyName] }) })), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: "Enter your API key (or press Enter to use existing):" }) }), _jsx(TextInput, { value: apiKey, onChange: setApiKey, onSubmit: handleApiKeySubmit, placeholder: "Enter API key...", isActive: true, maskValue: true }), error && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: Colors.AccentRed, children: ["\u274C ", error] }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "Press Enter to continue, Ctrl+C to cancel" }) })] })), step === 'baseUrl' && selectedProvider && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: "Base URL (press Enter to use default):" }) }), _jsx(TextInput, { value: baseUrl, onChange: setBaseUrl, onSubmit: handleBaseUrlSubmit, placeholder: selectedProvider.defaultBaseUrl, isActive: true }), error && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: Colors.AccentRed, children: ["\u274C ", error] }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "Press Enter to continue, Ctrl+C to cancel" }) })] })), step === 'model' && selectedProvider && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: "Select a model or search for a custom one:" }) }), isFetchingModels && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: Colors.AccentCyan, children: ["\u23F3 Fetching available models from ", selectedProvider.displayName, "..."] }) })), !isFetchingModels && fetchedModels.length > 0 && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: Colors.AccentGreen, children: ["\u2713 Loaded ", fetchedModels.length, " models from ", selectedProvider.displayName, " API"] }) })), !isFetchingModels && fetchedModels.length === 0 && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: Colors.AccentYellow, children: "\u26A0 Could not fetch models from API, using default list" }) })), _jsx(Box, { marginBottom: 1, children: _jsx(TextInput, { value: modelSearch, onChange: setModelSearch, onSubmit: handleModelSearchSubmit, placeholder: "Search models or enter custom model name...", isActive: true }) }), filteredModels.length > 0 && (_jsx(Box, { marginTop: 1, children: _jsx(RadioButtonSelect, { items: filteredModels.map((m) => ({
550
+ label: m,
551
+ value: m,
552
+ })), onSelect: handleModelSelect, isFocused: true, maxItemsToShow: 8, showScrollArrows: true }) })), modelSearch && filteredModels.length === 0 && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: Colors.Gray, children: ["No matching models. Press Enter to use ", modelSearch, " as custom model."] }) })), error && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: Colors.AccentRed, children: ["\u274C ", error] }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: filteredModels.length > 0
553
+ ? 'Type to filter, use ↑↓ to navigate, Enter to select, Ctrl+C to cancel'
554
+ : 'Type model name and press Enter to use custom model, Ctrl+C to cancel' }) })] })), step === 'confirm' && selectedProvider && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Review your configuration:" }) }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["Provider: ", _jsx(Text, { color: Colors.AccentGreen, children: selectedProvider.displayName })] }) }), apiKey && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["API Key: ", _jsxs(Text, { color: Colors.AccentGreen, children: [apiKey.substring(0, 8), "..."] })] }) })), !apiKey && selectedProvider.name === 'blackbox-encrypted' && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["Security: ", _jsx(Text, { color: Colors.AccentGreen, children: "\uD83D\uDD12 Encrypted Communication" })] }) })), selectedProvider.name !== 'blackbox-encrypted' && (_jsxs(_Fragment, { children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["Base URL: ", _jsx(Text, { color: Colors.AccentGreen, children: baseUrl })] }) }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["Model: ", _jsx(Text, { color: Colors.AccentGreen, children: model })] }) })] })), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Text, { children: "Press Enter to save, Ctrl+C to cancel" }) }), _jsx(TextInput, { value: "", onChange: () => { }, onSubmit: handleConfirm, placeholder: "Press Enter to confirm...", isActive: true })] })), step === 'complete' && selectedProvider && (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: Colors.AccentGreen, children: "\u2705 Configuration saved successfully!" }) }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["Provider: ", _jsx(Text, { color: Colors.AccentGreen, children: selectedProvider.displayName })] }) }), selectedProvider.name !== 'blackbox-encrypted' && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["Model: ", _jsx(Text, { color: Colors.AccentGreen, children: model })] }) })), selectedProvider.name === 'blackbox-encrypted' && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["Security: ", _jsx(Text, { color: Colors.AccentGreen, children: "\uD83D\uDD12 E2E Encrypted Communication Enabled" })] }) })), apiKey && selectedProvider.name !== 'blackbox-encrypted' && (_jsxs(_Fragment, { children: [_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.AccentYellow, children: "\uD83D\uDCDD To persist your API key across sessions, add it to:" }) }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: Colors.Gray, children: "\u2022 Your shell profile (~/.bashrc, ~/.zshrc, etc.)" }) }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: Colors.Gray, children: "\u2022 Or ~/.blackboxcli/.env" }) }), _jsx(Box, { marginTop: 1, marginLeft: 2, children: _jsxs(Text, { color: Colors.Gray, children: ["export ", selectedProvider.envKeyName, "='", apiKey.substring(0, 8), "...'"] }) })] })), selectedProvider.name === 'blackbox-encrypted' && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.AccentYellow, children: "\uD83D\uDD12 This provider uses encrypted communication without requiring an API key." }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.AccentCyan, children: "\uD83D\uDCA1 Run 'blackbox' to start using the CLI!" }) })] }))] }));
555
+ }
556
+ //# sourceMappingURL=ConfigureUI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigureUI.js","sourceRoot":"","sources":["../../../../src/commands/configure/ConfigureUI.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { CommandModule } from 'yargs';
7
+ export declare const configureCommand: CommandModule;