@blackbox_ai/blackbox-cli 0.0.9 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/README.md +22 -196
  2. package/dist/index.js +8 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +11 -2
  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 +5 -2
  23. package/dist/src/commands/configure/ConfigureUI.js +181 -41
  24. package/dist/src/commands/configure/ConfigureUI.js.map +1 -1
  25. package/dist/src/commands/configure/index.js +35 -3
  26. package/dist/src/commands/configure/index.js.map +1 -1
  27. package/dist/src/commands/configure.js +20 -3
  28. package/dist/src/commands/configure.js.map +1 -1
  29. package/dist/src/commands/extensions/enable.js +1 -1
  30. package/dist/src/commands/extensions/enable.js.map +1 -1
  31. package/dist/src/commands/extensions/examples/context/CONTEXT.md +16 -0
  32. package/dist/src/commands/extensions/examples/context/blackbox-extension.json +5 -0
  33. package/dist/src/commands/extensions/examples/custom-commands/blackbox-extension.json +4 -0
  34. package/dist/src/commands/extensions/examples/custom-commands/commands/deploy.toml +12 -0
  35. package/dist/src/commands/extensions/examples/exclude-tools/README.md +28 -0
  36. package/dist/src/commands/extensions/examples/exclude-tools/blackbox-extension.json +5 -0
  37. package/dist/src/commands/extensions/install.d.ts +6 -2
  38. package/dist/src/commands/extensions/install.js +109 -15
  39. package/dist/src/commands/extensions/install.js.map +1 -1
  40. package/dist/src/commands/extensions/link.d.ts +12 -0
  41. package/dist/src/commands/extensions/link.js +53 -0
  42. package/dist/src/commands/extensions/link.js.map +1 -0
  43. package/dist/src/commands/extensions/list.js +2 -2
  44. package/dist/src/commands/extensions/list.js.map +1 -1
  45. package/dist/src/commands/extensions/new.d.ts +13 -0
  46. package/dist/src/commands/extensions/new.js +145 -0
  47. package/dist/src/commands/extensions/new.js.map +1 -0
  48. package/dist/src/commands/extensions/settings.d.ts +18 -0
  49. package/dist/src/commands/extensions/settings.js +98 -0
  50. package/dist/src/commands/extensions/settings.js.map +1 -0
  51. package/dist/src/commands/extensions/update.d.ts +2 -1
  52. package/dist/src/commands/extensions/update.js +59 -10
  53. package/dist/src/commands/extensions/update.js.map +1 -1
  54. package/dist/src/commands/extensions/validate.d.ts +12 -0
  55. package/dist/src/commands/extensions/validate.js +72 -0
  56. package/dist/src/commands/extensions/validate.js.map +1 -0
  57. package/dist/src/commands/extensions.js +10 -1
  58. package/dist/src/commands/extensions.js.map +1 -1
  59. package/dist/src/commands/mcp/add.d.ts +11 -0
  60. package/dist/src/commands/mcp/add.js +61 -7
  61. package/dist/src/commands/mcp/add.js.map +1 -1
  62. package/dist/src/commands/update.d.ts +7 -0
  63. package/dist/src/commands/update.js +103 -0
  64. package/dist/src/commands/update.js.map +1 -0
  65. package/dist/src/commands/voice.d.ts +7 -0
  66. package/dist/src/commands/voice.js +510 -0
  67. package/dist/src/commands/voice.js.map +1 -0
  68. package/dist/src/config/auth.d.ts +4 -2
  69. package/dist/src/config/auth.js +36 -1
  70. package/dist/src/config/auth.js.map +1 -1
  71. package/dist/src/config/config.d.ts +7 -1
  72. package/dist/src/config/config.js +68 -9
  73. package/dist/src/config/config.js.map +1 -1
  74. package/dist/src/config/extension.d.ts +6 -1
  75. package/dist/src/config/extension.js +137 -11
  76. package/dist/src/config/extension.js.map +1 -1
  77. package/dist/src/config/extensions/github.d.ts +48 -0
  78. package/dist/src/config/extensions/github.js +308 -0
  79. package/dist/src/config/extensions/github.js.map +1 -0
  80. package/dist/src/config/keyBindings.d.ts +1 -0
  81. package/dist/src/config/keyBindings.js +3 -0
  82. package/dist/src/config/keyBindings.js.map +1 -1
  83. package/dist/src/config/modelFetcher.js +14 -39
  84. package/dist/src/config/modelFetcher.js.map +1 -1
  85. package/dist/src/config/settings.js +64 -0
  86. package/dist/src/config/settings.js.map +1 -1
  87. package/dist/src/config/settingsSchema.d.ts +351 -0
  88. package/dist/src/config/settingsSchema.js +351 -0
  89. package/dist/src/config/settingsSchema.js.map +1 -1
  90. package/dist/src/config/voice.d.ts +31 -0
  91. package/dist/src/config/voice.js +82 -0
  92. package/dist/src/config/voice.js.map +1 -0
  93. package/dist/src/encrypt/attestation.d.ts +5 -0
  94. package/dist/src/encrypt/attestation.js +100 -0
  95. package/dist/src/encrypt/attestation.js.map +1 -0
  96. package/dist/src/encrypt/bridge.d.ts +30 -0
  97. package/dist/src/encrypt/bridge.js +32 -0
  98. package/dist/src/encrypt/bridge.js.map +1 -0
  99. package/dist/src/encrypt/client.d.ts +14 -0
  100. package/dist/src/encrypt/client.js +133 -0
  101. package/dist/src/encrypt/client.js.map +1 -0
  102. package/dist/src/encrypt/config.d.ts +26 -0
  103. package/dist/src/encrypt/config.js +51 -0
  104. package/dist/src/encrypt/config.js.map +1 -0
  105. package/dist/src/encrypt/crypto-utils.d.ts +57 -0
  106. package/dist/src/encrypt/crypto-utils.js +257 -0
  107. package/dist/src/encrypt/crypto-utils.js.map +1 -0
  108. package/dist/src/encrypt/index.d.ts +12 -0
  109. package/dist/src/encrypt/index.js +13 -0
  110. package/dist/src/encrypt/index.js.map +1 -0
  111. package/dist/src/encrypt/retry-utils.d.ts +20 -0
  112. package/dist/src/encrypt/retry-utils.js +60 -0
  113. package/dist/src/encrypt/retry-utils.js.map +1 -0
  114. package/dist/src/encrypt/sessions.d.ts +17 -0
  115. package/dist/src/encrypt/sessions.js +221 -0
  116. package/dist/src/encrypt/sessions.js.map +1 -0
  117. package/dist/src/encrypt/streaming-client.d.ts +29 -0
  118. package/dist/src/encrypt/streaming-client.js +226 -0
  119. package/dist/src/encrypt/streaming-client.js.map +1 -0
  120. package/dist/src/encrypt/types.d.ts +81 -0
  121. package/dist/src/encrypt/types.js +2 -0
  122. package/dist/src/encrypt/types.js.map +1 -0
  123. package/dist/src/gemini.d.ts +1 -1
  124. package/dist/src/gemini.js +57 -27
  125. package/dist/src/gemini.js.map +1 -1
  126. package/dist/src/generated/git-commit.d.ts +3 -3
  127. package/dist/src/generated/git-commit.js +3 -3
  128. package/dist/src/nonInteractiveCli.d.ts +4 -0
  129. package/dist/src/nonInteractiveCli.js +418 -5
  130. package/dist/src/nonInteractiveCli.js.map +1 -1
  131. package/dist/src/on-demand-extensions/README.md +266 -0
  132. package/dist/src/on-demand-extensions/git-helper/README.md +16 -0
  133. package/dist/src/on-demand-extensions/git-helper/blackbox-extension.json +5 -0
  134. package/dist/src/on-demand-extensions/git-helper/commands/git/branch-cleanup.toml +18 -0
  135. package/dist/src/on-demand-extensions/git-helper/commands/git/smart-commit.toml +22 -0
  136. package/dist/src/on-demand-extensions/greet/README.md +76 -0
  137. package/dist/src/on-demand-extensions/greet/blackbox-extension.json +5 -0
  138. package/dist/src/on-demand-extensions/greet/commands/greet/hello.toml +9 -0
  139. package/dist/src/on-demand-extensions/registry.json +251 -0
  140. package/dist/src/services/BuiltinCommandLoader.js +20 -2
  141. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  142. package/dist/src/services/EncryptedContentGenerator.d.ts +63 -0
  143. package/dist/src/services/EncryptedContentGenerator.js +426 -0
  144. package/dist/src/services/EncryptedContentGenerator.js.map +1 -0
  145. package/dist/src/services/McpCommandLoader.d.ts +24 -0
  146. package/dist/src/services/McpCommandLoader.js +50 -0
  147. package/dist/src/services/McpCommandLoader.js.map +1 -0
  148. package/dist/src/services/McpPromptLoader.js +17 -2
  149. package/dist/src/services/McpPromptLoader.js.map +1 -1
  150. package/dist/src/services/ReleaseNotesCache.d.ts +57 -0
  151. package/dist/src/services/ReleaseNotesCache.js +186 -0
  152. package/dist/src/services/ReleaseNotesCache.js.map +1 -0
  153. package/dist/src/services/elevenLabsErrors.d.ts +65 -0
  154. package/dist/src/services/elevenLabsErrors.js +233 -0
  155. package/dist/src/services/elevenLabsErrors.js.map +1 -0
  156. package/dist/src/services/elevenLabsService.d.ts +62 -0
  157. package/dist/src/services/elevenLabsService.js +186 -0
  158. package/dist/src/services/elevenLabsService.js.map +1 -0
  159. package/dist/src/services/elevenLabsStreamingService.d.ts +59 -0
  160. package/dist/src/services/elevenLabsStreamingService.js +202 -0
  161. package/dist/src/services/elevenLabsStreamingService.js.map +1 -0
  162. package/dist/src/services/elevenLabsTokenService.d.ts +21 -0
  163. package/dist/src/services/elevenLabsTokenService.js +42 -0
  164. package/dist/src/services/elevenLabsTokenService.js.map +1 -0
  165. package/dist/src/services/voiceInputHandler.d.ts +26 -0
  166. package/dist/src/services/voiceInputHandler.js +209 -0
  167. package/dist/src/services/voiceInputHandler.js.map +1 -0
  168. package/dist/src/services/voiceRecordingService.d.ts +69 -0
  169. package/dist/src/services/voiceRecordingService.js +397 -0
  170. package/dist/src/services/voiceRecordingService.js.map +1 -0
  171. package/dist/src/ui/App.d.ts +1 -0
  172. package/dist/src/ui/App.js +412 -63
  173. package/dist/src/ui/App.js.map +1 -1
  174. package/dist/src/ui/commands/browseExtensionsCommand.d.ts +7 -0
  175. package/dist/src/ui/commands/browseExtensionsCommand.js +16 -0
  176. package/dist/src/ui/commands/browseExtensionsCommand.js.map +1 -0
  177. package/dist/src/ui/commands/chatCommand.js +356 -16
  178. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  179. package/dist/src/ui/commands/dbCommand.d.ts +7 -0
  180. package/dist/src/ui/commands/dbCommand.js +37 -0
  181. package/dist/src/ui/commands/dbCommand.js.map +1 -0
  182. package/dist/src/ui/commands/docsCommand.js +1 -1
  183. package/dist/src/ui/commands/docsCommand.js.map +1 -1
  184. package/dist/src/ui/commands/mcpCommand.js +3 -2
  185. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  186. package/dist/src/ui/commands/mcpInvokeCommand.d.ts +16 -0
  187. package/dist/src/ui/commands/mcpInvokeCommand.js +263 -0
  188. package/dist/src/ui/commands/mcpInvokeCommand.js.map +1 -0
  189. package/dist/src/ui/commands/modelCommand.js +79 -5
  190. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  191. package/dist/src/ui/commands/multiAgentCommand.d.ts +7 -0
  192. package/dist/src/ui/commands/multiAgentCommand.js +833 -0
  193. package/dist/src/ui/commands/multiAgentCommand.js.map +1 -0
  194. package/dist/src/ui/commands/multiAgentConfigureCommand.d.ts +7 -0
  195. package/dist/src/ui/commands/multiAgentConfigureCommand.js +17 -0
  196. package/dist/src/ui/commands/multiAgentConfigureCommand.js.map +1 -0
  197. package/dist/src/ui/commands/quitCommand.js +71 -2
  198. package/dist/src/ui/commands/quitCommand.js.map +1 -1
  199. package/dist/src/ui/commands/releasesCommand.d.ts +7 -0
  200. package/dist/src/ui/commands/releasesCommand.js +16 -0
  201. package/dist/src/ui/commands/releasesCommand.js.map +1 -0
  202. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  203. package/dist/src/ui/commands/shellPermissionsCommand.d.ts +7 -0
  204. package/dist/src/ui/commands/shellPermissionsCommand.js +109 -0
  205. package/dist/src/ui/commands/shellPermissionsCommand.js.map +1 -0
  206. package/dist/src/ui/commands/skillCommand.d.ts +7 -0
  207. package/dist/src/ui/commands/skillCommand.js +240 -0
  208. package/dist/src/ui/commands/skillCommand.js.map +1 -0
  209. package/dist/src/ui/commands/statsCommand.js +243 -1
  210. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  211. package/dist/src/ui/commands/tasksCommand.d.ts +7 -0
  212. package/dist/src/ui/commands/tasksCommand.js +535 -0
  213. package/dist/src/ui/commands/tasksCommand.js.map +1 -0
  214. package/dist/src/ui/commands/toolPermissionsCommand.d.ts +7 -0
  215. package/dist/src/ui/commands/toolPermissionsCommand.js +408 -0
  216. package/dist/src/ui/commands/toolPermissionsCommand.js.map +1 -0
  217. package/dist/src/ui/commands/types.d.ts +10 -2
  218. package/dist/src/ui/commands/types.js.map +1 -1
  219. package/dist/src/ui/commands/voiceCommand.d.ts +7 -0
  220. package/dist/src/ui/commands/voiceCommand.js +525 -0
  221. package/dist/src/ui/commands/voiceCommand.js.map +1 -0
  222. package/dist/src/ui/components/AuthDialog.d.ts +5 -4
  223. package/dist/src/ui/components/AuthDialog.js +89 -52
  224. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  225. package/dist/src/ui/components/AuthInProgress.js +3 -1
  226. package/dist/src/ui/components/AuthInProgress.js.map +1 -1
  227. package/dist/src/ui/components/ExtensionsDialog.d.ts +11 -0
  228. package/dist/src/ui/components/ExtensionsDialog.js +303 -0
  229. package/dist/src/ui/components/ExtensionsDialog.js.map +1 -0
  230. package/dist/src/ui/components/GenericProviderKeyPrompt.d.ts +3 -1
  231. package/dist/src/ui/components/GenericProviderKeyPrompt.js +17 -4
  232. package/dist/src/ui/components/GenericProviderKeyPrompt.js.map +1 -1
  233. package/dist/src/ui/components/Header.js +10 -1
  234. package/dist/src/ui/components/Header.js.map +1 -1
  235. package/dist/src/ui/components/HistoryBrowserDialog.d.ts +15 -0
  236. package/dist/src/ui/components/HistoryBrowserDialog.js +166 -0
  237. package/dist/src/ui/components/HistoryBrowserDialog.js.map +1 -0
  238. package/dist/src/ui/components/HistoryItemDisplay.js +13 -1
  239. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  240. package/dist/src/ui/components/InputPrompt.js +22 -8
  241. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  242. package/dist/src/ui/components/LoadingIndicator.d.ts +4 -0
  243. package/dist/src/ui/components/LoadingIndicator.js +16 -4
  244. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  245. package/dist/src/ui/components/LoadingIndicator.test.js +108 -16
  246. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
  247. package/dist/src/ui/components/ModelSelectionDialog.d.ts +2 -0
  248. package/dist/src/ui/components/ModelSelectionDialog.js +33 -4
  249. package/dist/src/ui/components/ModelSelectionDialog.js.map +1 -1
  250. package/dist/src/ui/components/ModelSelectionDialog.test.js +41 -4
  251. package/dist/src/ui/components/ModelSelectionDialog.test.js.map +1 -1
  252. package/dist/src/ui/components/ReleaseNotesDialog.d.ts +23 -0
  253. package/dist/src/ui/components/ReleaseNotesDialog.js +150 -0
  254. package/dist/src/ui/components/ReleaseNotesDialog.js.map +1 -0
  255. package/dist/src/ui/components/ReleaseNotesDisplay.d.ts +18 -0
  256. package/dist/src/ui/components/ReleaseNotesDisplay.js +14 -0
  257. package/dist/src/ui/components/ReleaseNotesDisplay.js.map +1 -0
  258. package/dist/src/ui/components/SessionSummaryDisplay.d.ts +2 -0
  259. package/dist/src/ui/components/SessionSummaryDisplay.js +1 -1
  260. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  261. package/dist/src/ui/components/SettingsDialog.d.ts +3 -1
  262. package/dist/src/ui/components/SettingsDialog.js +17 -7
  263. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  264. package/dist/src/ui/components/ShellConfirmationDialog.d.ts +2 -0
  265. package/dist/src/ui/components/ShellConfirmationDialog.js +7 -3
  266. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  267. package/dist/src/ui/components/StatsDisplay.d.ts +2 -0
  268. package/dist/src/ui/components/StatsDisplay.js +92 -7
  269. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  270. package/dist/src/ui/components/SuggestionsDisplay.js +6 -1
  271. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  272. package/dist/src/ui/components/ThemeDialog.d.ts +3 -1
  273. package/dist/src/ui/components/ThemeDialog.js +5 -2
  274. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  275. package/dist/src/ui/components/Tips.js +1 -4
  276. package/dist/src/ui/components/Tips.js.map +1 -1
  277. package/dist/src/ui/components/TodoListDialog.d.ts +13 -0
  278. package/dist/src/ui/components/TodoListDialog.js +29 -0
  279. package/dist/src/ui/components/TodoListDialog.js.map +1 -0
  280. package/dist/src/ui/components/TodoListDialog.test.d.ts +6 -0
  281. package/dist/src/ui/components/TodoListDialog.test.js +60 -0
  282. package/dist/src/ui/components/TodoListDialog.test.js.map +1 -0
  283. package/dist/src/ui/components/VoiceConfigDialog.d.ts +17 -0
  284. package/dist/src/ui/components/VoiceConfigDialog.js +47 -0
  285. package/dist/src/ui/components/VoiceConfigDialog.js.map +1 -0
  286. package/dist/src/ui/components/messages/GeminiMessage.js +4 -0
  287. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  288. package/dist/src/ui/components/messages/GeminiMessageContent.js +4 -0
  289. package/dist/src/ui/components/messages/GeminiMessageContent.js.map +1 -1
  290. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +2 -0
  291. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +96 -9
  292. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  293. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +3 -3
  294. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  295. package/dist/src/ui/components/messages/ToolMessage.js +1 -1
  296. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  297. package/dist/src/ui/components/messages/ToolMessage.test.js +9 -12
  298. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  299. package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.d.ts +25 -0
  300. package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.js +179 -0
  301. package/dist/src/ui/components/multiagent/MultiAgentConfigDialog.js.map +1 -0
  302. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +3 -1
  303. package/dist/src/ui/components/shared/RadioButtonSelect.js +57 -18
  304. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  305. package/dist/src/ui/components/shared/TextInput.d.ts +2 -1
  306. package/dist/src/ui/components/shared/TextInput.js +5 -2
  307. package/dist/src/ui/components/shared/TextInput.js.map +1 -1
  308. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js +3 -3
  309. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js.map +1 -1
  310. package/dist/src/ui/constants.d.ts +3 -3
  311. package/dist/src/ui/constants.js +3 -3
  312. package/dist/src/ui/constants.js.map +1 -1
  313. package/dist/src/ui/contexts/SessionContext.d.ts +6 -0
  314. package/dist/src/ui/contexts/SessionContext.js +24 -2
  315. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  316. package/dist/src/ui/hooks/atCommandProcessor.js +139 -57
  317. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  318. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -1
  319. package/dist/src/ui/hooks/slashCommandProcessor.js +189 -17
  320. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  321. package/dist/src/ui/hooks/useAdaptiveStream.d.ts +42 -0
  322. package/dist/src/ui/hooks/useAdaptiveStream.js +31 -0
  323. package/dist/src/ui/hooks/useAdaptiveStream.js.map +1 -0
  324. package/dist/src/ui/hooks/useAtCompletion.js +20 -4
  325. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  326. package/dist/src/ui/hooks/useAuthCommand.d.ts +2 -2
  327. package/dist/src/ui/hooks/useAuthCommand.js +99 -5
  328. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  329. package/dist/src/ui/hooks/useCommandCompletion.js +14 -10
  330. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  331. package/dist/src/ui/hooks/useDialogClose.d.ts +10 -0
  332. package/dist/src/ui/hooks/useDialogClose.js +25 -0
  333. package/dist/src/ui/hooks/useDialogClose.js.map +1 -1
  334. package/dist/src/ui/hooks/useDialogCloseAnimation.d.ts +22 -0
  335. package/dist/src/ui/hooks/useDialogCloseAnimation.js +68 -0
  336. package/dist/src/ui/hooks/useDialogCloseAnimation.js.map +1 -0
  337. package/dist/src/ui/hooks/useEncryptedStream.d.ts +22 -0
  338. package/dist/src/ui/hooks/useEncryptedStream.js +378 -0
  339. package/dist/src/ui/hooks/useEncryptedStream.js.map +1 -0
  340. package/dist/src/ui/hooks/useExtensionsDialog.d.ts +10 -0
  341. package/dist/src/ui/hooks/useExtensionsDialog.js +21 -0
  342. package/dist/src/ui/hooks/useExtensionsDialog.js.map +1 -0
  343. package/dist/src/ui/hooks/useGeminiStream.js +4 -2
  344. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  345. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  346. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
  347. package/dist/src/ui/hooks/useLoadingIndicator.js +3 -2
  348. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  349. package/dist/src/ui/hooks/useLoadingIndicator.test.js +27 -5
  350. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  351. package/dist/src/ui/hooks/useMultiAgentConfigCommand.d.ts +10 -0
  352. package/dist/src/ui/hooks/useMultiAgentConfigCommand.js +21 -0
  353. package/dist/src/ui/hooks/useMultiAgentConfigCommand.js.map +1 -0
  354. package/dist/src/ui/hooks/useReleasesDialog.d.ts +20 -0
  355. package/dist/src/ui/hooks/useReleasesDialog.js +214 -0
  356. package/dist/src/ui/hooks/useReleasesDialog.js.map +1 -0
  357. package/dist/src/ui/hooks/useSlashCompletion.js +10 -8
  358. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  359. package/dist/src/ui/hooks/useTodoList.d.ts +17 -0
  360. package/dist/src/ui/hooks/useTodoList.js +51 -0
  361. package/dist/src/ui/hooks/useTodoList.js.map +1 -0
  362. package/dist/src/ui/keyMatchers.test.js +6 -0
  363. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  364. package/dist/src/ui/themes/blackbox-dark.js +1 -1
  365. package/dist/src/ui/themes/blackbox-dark.js.map +1 -1
  366. package/dist/src/ui/themes/blackbox-light.js +1 -1
  367. package/dist/src/ui/themes/blackbox-light.js.map +1 -1
  368. package/dist/src/ui/types.d.ts +15 -2
  369. package/dist/src/ui/types.js +1 -0
  370. package/dist/src/ui/types.js.map +1 -1
  371. package/dist/src/ui/utils/computeStats.d.ts +25 -1
  372. package/dist/src/ui/utils/computeStats.js +58 -1
  373. package/dist/src/ui/utils/computeStats.js.map +1 -1
  374. package/dist/src/ui/utils/updateCheck.js +37 -54
  375. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  376. package/dist/src/utils/backgroundUpdateCheck.d.ts +15 -0
  377. package/dist/src/utils/backgroundUpdateCheck.js +48 -0
  378. package/dist/src/utils/backgroundUpdateCheck.js.map +1 -0
  379. package/dist/src/utils/gitAutoDetect.d.ts +16 -0
  380. package/dist/src/utils/gitAutoDetect.js +45 -0
  381. package/dist/src/utils/gitAutoDetect.js.map +1 -0
  382. package/dist/src/utils/installationInfo.d.ts +1 -0
  383. package/dist/src/utils/installationInfo.js +24 -4
  384. package/dist/src/utils/installationInfo.js.map +1 -1
  385. package/dist/src/utils/preLaunchUpdateCheck.d.ts +17 -0
  386. package/dist/src/utils/preLaunchUpdateCheck.js +75 -0
  387. package/dist/src/utils/preLaunchUpdateCheck.js.map +1 -0
  388. package/dist/src/utils/version.js +12 -1
  389. package/dist/src/utils/version.js.map +1 -1
  390. package/dist/src/utils/versionStorage.d.ts +50 -0
  391. package/dist/src/utils/versionStorage.js +224 -0
  392. package/dist/src/utils/versionStorage.js.map +1 -0
  393. package/dist/src/validateNonInterActiveAuth.js +10 -3
  394. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  395. package/dist/src/virtual-extensions.d.ts +14 -0
  396. package/dist/src/virtual-extensions.js +56 -0
  397. package/dist/src/virtual-extensions.js.map +1 -0
  398. package/dist/src/zed-integration/fileSystemService.d.ts +3 -3
  399. package/dist/src/zed-integration/fileSystemService.js +5 -7
  400. package/dist/src/zed-integration/fileSystemService.js.map +1 -1
  401. package/dist/src/zed-integration/zedIntegration.js +62 -17
  402. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  403. package/dist/tsconfig.tsbuildinfo +1 -1
  404. package/package.json +11 -2
  405. package/dist/src/utils/handleAutoUpdate.d.ts +0 -11
  406. package/dist/src/utils/handleAutoUpdate.js +0 -102
  407. package/dist/src/utils/handleAutoUpdate.js.map +0 -1
  408. package/dist/src/utils/updateEventEmitter.d.ts +0 -11
  409. package/dist/src/utils/updateEventEmitter.js +0 -12
  410. package/dist/src/utils/updateEventEmitter.js.map +0 -1
  411. package/dist/src/zed-integration/acp.d.ts +0 -63
  412. package/dist/src/zed-integration/acp.js +0 -226
  413. package/dist/src/zed-integration/acp.js.map +0 -1
  414. package/dist/src/zed-integration/schema.d.ts +0 -11782
  415. package/dist/src/zed-integration/schema.js +0 -311
  416. package/dist/src/zed-integration/schema.js.map +0 -1
@@ -0,0 +1,397 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { getErrorMessage } from '@blackbox_ai/blackbox-cli-core';
7
+ import * as fs from 'node:fs';
8
+ import * as os from 'node:os';
9
+ import { spawn } from 'node:child_process';
10
+ import ffmpegInstaller from '@ffmpeg-installer/ffmpeg';
11
+ // Debug mode flag - can be set via environment variable
12
+ const DEBUG_MODE = process.env['DEBUG'] === 'true' || process.env['DEBUG'] === '1' || process.env['DEBUG_MODE'] === 'true' || process.env['DEBUG_MODE'] === '1';
13
+ function debugLog(...args) {
14
+ if (DEBUG_MODE) {
15
+ console.debug('[DEBUG][VoiceRecording]', ...args);
16
+ }
17
+ }
18
+ /**
19
+ * Service for recording audio from microphone
20
+ * Uses ffmpeg directly for cross-platform audio recording
21
+ */
22
+ export class VoiceRecordingService {
23
+ sampleRate;
24
+ channels;
25
+ audioFormat;
26
+ ffmpegProcess = null;
27
+ outputFilePath = null;
28
+ fileStream = null;
29
+ startTime = null;
30
+ audioStream = null;
31
+ constructor(config = {}) {
32
+ this.sampleRate = config.sampleRate || 16000;
33
+ this.channels = config.channels || 1;
34
+ this.audioFormat = config.audioFormat || 'wav';
35
+ }
36
+ /**
37
+ * List available audio input devices on Windows using DirectShow
38
+ */
39
+ async listWindowsAudioDevices() {
40
+ debugLog('Listing Windows audio devices...');
41
+ return new Promise((resolve) => {
42
+ const ffmpegPath = ffmpegInstaller.path;
43
+ const args = ['-list_devices', 'true', '-f', 'dshow', '-i', 'dummy'];
44
+ debugLog('FFmpeg path:', ffmpegPath);
45
+ debugLog('FFmpeg args:', args.join(' '));
46
+ const process = spawn(ffmpegPath, args, {
47
+ stdio: ['ignore', 'pipe', 'pipe']
48
+ });
49
+ const stderrChunks = [];
50
+ process.stderr?.on('data', (chunk) => {
51
+ stderrChunks.push(chunk);
52
+ });
53
+ process.on('close', () => {
54
+ const output = Buffer.concat(stderrChunks).toString();
55
+ debugLog('Device enumeration output length:', output.length);
56
+ const devices = [];
57
+ // Primary parsing method: Parse devices listed under "DirectShow audio devices" section
58
+ // Format:
59
+ // [dshow @ ...] DirectShow audio devices
60
+ // [dshow @ ...] "Device Name"
61
+ // [dshow @ ...] Alternative name "..."
62
+ const lines = output.split('\n');
63
+ let inAudioSection = false;
64
+ for (const line of lines) {
65
+ // Check if we've entered the audio devices section
66
+ if (line.includes('DirectShow audio devices')) {
67
+ inAudioSection = true;
68
+ continue;
69
+ }
70
+ // Check if we've left the audio section (new section starts or video devices)
71
+ if (inAudioSection && (line.includes('DirectShow video devices') ||
72
+ (line.includes('[dshow') && !line.includes('"') && !line.includes('Alternative name')))) {
73
+ break;
74
+ }
75
+ // Parse device names in the audio section
76
+ if (inAudioSection) {
77
+ // Match lines with quoted device names, but skip "Alternative name" lines
78
+ const deviceMatch = line.match(/\[dshow[^\]]*\]\s+"([^"]+)"/);
79
+ if (deviceMatch && deviceMatch[1] && !line.includes('Alternative name')) {
80
+ devices.push(deviceMatch[1]);
81
+ }
82
+ }
83
+ }
84
+ // Fallback parsing method: Look for devices with (audio) suffix
85
+ // Format: [dshow @ ...] "Device Name" (audio)
86
+ if (devices.length === 0) {
87
+ debugLog('Primary parsing found no devices, trying fallback method...');
88
+ const audioDeviceRegex = /\[dshow[^\]]*\]\s+"([^"]+)"\s*\(audio\)/gi;
89
+ let match;
90
+ while ((match = audioDeviceRegex.exec(output)) !== null) {
91
+ if (match[1]) {
92
+ devices.push(match[1]);
93
+ }
94
+ }
95
+ }
96
+ debugLog('Found audio devices:', devices.length > 0 ? devices : 'None');
97
+ if (devices.length > 0) {
98
+ debugLog('Device list:', devices);
99
+ }
100
+ resolve(devices);
101
+ });
102
+ });
103
+ }
104
+ /**
105
+ * Get the appropriate ffmpeg input device and format based on platform
106
+ */
107
+ async getInputDeviceConfig() {
108
+ const platform = os.platform();
109
+ debugLog('Getting input device config for platform:', platform);
110
+ switch (platform) {
111
+ case 'darwin': // macOS
112
+ debugLog('Using macOS avfoundation with default audio device');
113
+ return {
114
+ format: 'avfoundation',
115
+ device: ':0', // Default audio input device
116
+ };
117
+ case 'win32': {
118
+ // Windows - enumerate DirectShow devices and use the first one
119
+ // DirectShow is the most reliable method for Windows audio capture with ffmpeg
120
+ const devices = await this.listWindowsAudioDevices();
121
+ if (devices.length === 0) {
122
+ debugLog('ERROR: No audio devices found on Windows');
123
+ throw new Error('No audio input devices found. Please ensure:\n' +
124
+ ' 1. Your microphone is connected and enabled in Windows Sound settings\n' +
125
+ ' 2. The microphone is set as the default recording device\n' +
126
+ ' 3. Applications have permission to access the microphone in Windows Privacy settings');
127
+ }
128
+ // Use the first available audio device
129
+ // DirectShow typically lists the default device first
130
+ const deviceName = devices[0];
131
+ debugLog('Selected Windows audio device:', deviceName);
132
+ return {
133
+ format: 'dshow',
134
+ device: `audio=${deviceName}`,
135
+ };
136
+ }
137
+ case 'linux':
138
+ debugLog('Using Linux ALSA with default device');
139
+ return {
140
+ format: 'alsa',
141
+ device: 'default', // Default ALSA device
142
+ };
143
+ default:
144
+ debugLog('ERROR: Unsupported platform:', platform);
145
+ throw new Error(`Unsupported platform: ${platform}`);
146
+ }
147
+ }
148
+ /**
149
+ * Start recording audio from microphone
150
+ * Recording continues until stopRecording() is called
151
+ * @param outputPath Optional custom output path. If not provided, audio will only be streamed via callback
152
+ * @param onAudioChunk Optional callback for streaming audio chunks
153
+ * @returns Promise that resolves with the output file path when recording starts (or empty string if no file)
154
+ */
155
+ async startRecording(outputPath, onAudioChunk) {
156
+ if (this.ffmpegProcess) {
157
+ throw new Error('Recording is already in progress');
158
+ }
159
+ // Only create file path if explicitly provided
160
+ this.outputFilePath = outputPath || null;
161
+ debugLog('Starting recording...');
162
+ debugLog('Output path:', this.outputFilePath || '(streaming only)');
163
+ debugLog('Sample rate:', this.sampleRate);
164
+ debugLog('Channels:', this.channels);
165
+ debugLog('Audio format:', this.audioFormat);
166
+ try {
167
+ const ffmpegPath = ffmpegInstaller.path;
168
+ const { format, device } = await this.getInputDeviceConfig();
169
+ return new Promise((resolve, reject) => {
170
+ try {
171
+ // Build ffmpeg arguments for audio capture
172
+ const args = [
173
+ '-f', format, // Input format
174
+ '-i', device, // Input device
175
+ '-ar', String(this.sampleRate), // Sample rate
176
+ '-ac', String(this.channels), // Number of channels
177
+ '-acodec', 'pcm_s16le', // Audio codec (16-bit PCM)
178
+ '-f', this.audioFormat, // Output format
179
+ '-' // Output to stdout (pipe)
180
+ ];
181
+ debugLog('FFmpeg command:', ffmpegPath, args.join(' '));
182
+ // Spawn ffmpeg process
183
+ this.ffmpegProcess = spawn(ffmpegPath, args, {
184
+ stdio: ['ignore', 'pipe', 'pipe']
185
+ });
186
+ this.startTime = Date.now();
187
+ debugLog('FFmpeg process spawned, PID:', this.ffmpegProcess.pid);
188
+ // Get the audio stream from stdout
189
+ this.audioStream = this.ffmpegProcess.stdout;
190
+ // Create file stream for writing only if output path is provided
191
+ if (this.outputFilePath) {
192
+ this.fileStream = fs.createWriteStream(this.outputFilePath);
193
+ debugLog('File stream created for:', this.outputFilePath);
194
+ }
195
+ let chunkCount = 0;
196
+ let totalBytes = 0;
197
+ // Handle audio data
198
+ this.audioStream.on('data', (chunk) => {
199
+ chunkCount++;
200
+ totalBytes += chunk.length;
201
+ if (chunkCount === 1) {
202
+ debugLog('First audio chunk received, size:', chunk.length, 'bytes');
203
+ }
204
+ else if (chunkCount % 100 === 0) {
205
+ // Log every 100th chunk to avoid spam
206
+ debugLog(`Audio chunks: ${chunkCount}, total bytes: ${totalBytes}`);
207
+ }
208
+ // Write to file only if file stream exists
209
+ if (this.fileStream) {
210
+ this.fileStream.write(chunk);
211
+ }
212
+ // Send to callback for real-time streaming
213
+ if (onAudioChunk) {
214
+ onAudioChunk(chunk);
215
+ }
216
+ });
217
+ // Handle errors from stderr
218
+ const stderrChunks = [];
219
+ this.ffmpegProcess.stderr?.on('data', (chunk) => {
220
+ stderrChunks.push(chunk);
221
+ if (DEBUG_MODE) {
222
+ const stderrText = chunk.toString();
223
+ // Only log non-routine ffmpeg output
224
+ if (!stderrText.includes('size=') && !stderrText.includes('time=')) {
225
+ debugLog('FFmpeg stderr:', stderrText.trim());
226
+ }
227
+ }
228
+ });
229
+ // Handle process errors
230
+ this.ffmpegProcess.on('error', (error) => {
231
+ debugLog('FFmpeg process error:', error.message);
232
+ this.cleanup();
233
+ reject(new Error(`Failed to start ffmpeg: ${error.message}`));
234
+ });
235
+ // Handle process exit
236
+ this.ffmpegProcess.on('close', (code) => {
237
+ debugLog('FFmpeg process closed with code:', code);
238
+ if (code !== 0 && code !== null) {
239
+ const stderrOutput = Buffer.concat(stderrChunks).toString();
240
+ const errorMsg = this.parseFFmpegError(stderrOutput);
241
+ debugLog('FFmpeg error output:', stderrOutput);
242
+ // Only reject if we haven't successfully started yet
243
+ if (this.startTime && Date.now() - this.startTime < 1000) {
244
+ this.cleanup();
245
+ reject(new Error(errorMsg));
246
+ }
247
+ }
248
+ });
249
+ // Give ffmpeg a moment to start, then resolve
250
+ setTimeout(() => {
251
+ if (this.ffmpegProcess && !this.ffmpegProcess.killed) {
252
+ debugLog('Recording started successfully');
253
+ resolve(this.outputFilePath || '');
254
+ }
255
+ else {
256
+ debugLog('ERROR: FFmpeg process failed to start');
257
+ reject(new Error('FFmpeg process failed to start'));
258
+ }
259
+ }, 500);
260
+ }
261
+ catch (error) {
262
+ this.cleanup();
263
+ reject(new Error(`Failed to start recording: ${getErrorMessage(error)}`));
264
+ }
265
+ });
266
+ }
267
+ catch (error) {
268
+ this.cleanup();
269
+ throw new Error(`Failed to start recording: ${getErrorMessage(error)}`);
270
+ }
271
+ }
272
+ /**
273
+ * Parse ffmpeg error messages to provide helpful feedback
274
+ */
275
+ parseFFmpegError(stderrOutput) {
276
+ const lowerOutput = stderrOutput.toLowerCase();
277
+ if (lowerOutput.includes('no such file or directory') ||
278
+ lowerOutput.includes('cannot find') ||
279
+ lowerOutput.includes('could not open')) {
280
+ const platform = os.platform();
281
+ if (platform === 'win32') {
282
+ return 'Audio input device not found. Please ensure:\n' +
283
+ ' 1. Your microphone is connected and enabled in Windows Sound settings\n' +
284
+ ' 2. The microphone is set as the default recording device\n' +
285
+ ' 3. Applications have permission to access the microphone in Windows Privacy settings';
286
+ }
287
+ return 'Audio input device not found. Please check your microphone connection.';
288
+ }
289
+ if (lowerOutput.includes('permission denied') ||
290
+ lowerOutput.includes('access denied')) {
291
+ return 'Permission denied to access microphone. Please grant microphone permissions.';
292
+ }
293
+ if (lowerOutput.includes('device or resource busy')) {
294
+ return 'Microphone is already in use by another application.';
295
+ }
296
+ if (lowerOutput.includes('invalid') || lowerOutput.includes('unknown')) {
297
+ return 'Invalid audio device configuration. Please check your system audio settings.';
298
+ }
299
+ // Return a portion of the actual error for debugging
300
+ const lines = stderrOutput.split('\n').filter(line => line.trim());
301
+ const relevantLines = lines.slice(-5).join('\n');
302
+ return `FFmpeg error: ${relevantLines || 'Unknown error occurred'}`;
303
+ }
304
+ /**
305
+ * Stop the current recording
306
+ * @returns Recording result with file path and metadata (file path will be empty if no file was created)
307
+ */
308
+ async stopRecording() {
309
+ if (!this.ffmpegProcess) {
310
+ throw new Error('No recording in progress');
311
+ }
312
+ debugLog('Stopping recording...');
313
+ return new Promise((resolve, reject) => {
314
+ const filePath = this.outputFilePath || '';
315
+ const startTime = this.startTime;
316
+ // Close file stream if it exists
317
+ if (this.fileStream) {
318
+ this.fileStream.end();
319
+ debugLog('File stream closed');
320
+ }
321
+ // Send SIGTERM to ffmpeg for graceful shutdown
322
+ if (this.ffmpegProcess && !this.ffmpegProcess.killed) {
323
+ debugLog('Sending SIGTERM to FFmpeg process');
324
+ this.ffmpegProcess.kill('SIGTERM');
325
+ }
326
+ // Wait for the file to be fully written (if file was created)
327
+ setTimeout(() => {
328
+ try {
329
+ const duration = Math.round((Date.now() - startTime) / 1000);
330
+ let size = 0;
331
+ // Get file stats only if file was created
332
+ if (filePath && fs.existsSync(filePath)) {
333
+ const stats = fs.statSync(filePath);
334
+ size = stats.size;
335
+ debugLog('Recording file stats - size:', size, 'bytes, duration:', duration, 'seconds');
336
+ }
337
+ else {
338
+ debugLog('Recording completed (streaming only), duration:', duration, 'seconds');
339
+ }
340
+ this.cleanup();
341
+ resolve({
342
+ filePath,
343
+ duration,
344
+ size,
345
+ });
346
+ }
347
+ catch (error) {
348
+ this.cleanup();
349
+ reject(new Error(`Failed to process recording: ${getErrorMessage(error)}`));
350
+ }
351
+ }, 300);
352
+ });
353
+ }
354
+ /**
355
+ * Check if recording is currently in progress
356
+ */
357
+ isRecording() {
358
+ return this.ffmpegProcess !== null && !this.ffmpegProcess.killed;
359
+ }
360
+ /**
361
+ * Cancel the current recording and delete the file if it exists
362
+ */
363
+ async cancelRecording() {
364
+ if (!this.ffmpegProcess) {
365
+ return;
366
+ }
367
+ debugLog('Cancelling recording...');
368
+ const filePath = this.outputFilePath;
369
+ // Kill the ffmpeg process
370
+ if (!this.ffmpegProcess.killed) {
371
+ debugLog('Sending SIGKILL to FFmpeg process');
372
+ this.ffmpegProcess.kill('SIGKILL');
373
+ }
374
+ // Close file stream if it exists
375
+ if (this.fileStream) {
376
+ this.fileStream.end();
377
+ debugLog('File stream closed');
378
+ }
379
+ this.cleanup();
380
+ // Delete the recording file only if it was created
381
+ if (filePath && fs.existsSync(filePath)) {
382
+ fs.unlinkSync(filePath);
383
+ debugLog('Recording file deleted:', filePath);
384
+ }
385
+ }
386
+ /**
387
+ * Clean up recording resources
388
+ */
389
+ cleanup() {
390
+ this.ffmpegProcess = null;
391
+ this.audioStream = null;
392
+ this.outputFilePath = null;
393
+ this.fileStream = null;
394
+ this.startTime = null;
395
+ }
396
+ }
397
+ //# sourceMappingURL=voiceRecordingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voiceRecordingService.js","sourceRoot":"","sources":["../../../src/services/voiceRecordingService.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ interface AppProps {
10
10
  settings: LoadedSettings;
11
11
  startupWarnings?: string[];
12
12
  version: string;
13
+ initialSlashCommand?: string;
13
14
  }
14
15
  export declare const AppWrapper: (props: AppProps) => import("react/jsx-runtime").JSX.Element;
15
16
  export {};