@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,186 @@
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 { fetch } from 'undici';
9
+ import { parseElevenLabsError, formatElevenLabsError, ElevenLabsErrorType, } from './elevenLabsErrors.js';
10
+ /**
11
+ * Service for interacting with ElevenLabs Speech-to-Text API
12
+ */
13
+ export class ElevenLabsService {
14
+ apiKey;
15
+ model;
16
+ language;
17
+ baseUrl = 'https://api.elevenlabs.io/v1';
18
+ constructor(config) {
19
+ this.apiKey = config.apiKey;
20
+ this.model = config.model || 'scribe_v2';
21
+ this.language = config.language || 'en';
22
+ }
23
+ /**
24
+ * Transcribe audio file to text using ElevenLabs API
25
+ * @param audioFilePath Path to the audio file
26
+ * @returns Transcription result
27
+ */
28
+ async transcribe(audioFilePath) {
29
+ try {
30
+ // Read audio file
31
+ const audioBuffer = fs.readFileSync(audioFilePath);
32
+ // Create boundary for multipart/form-data
33
+ const boundary = `----WebKitFormBoundary${Math.random().toString(36).substring(2)}`;
34
+ // Build multipart form data manually
35
+ const parts = [];
36
+ // Add model_id field
37
+ parts.push(Buffer.from(`--${boundary}\r\n` +
38
+ `Content-Disposition: form-data; name="model_id"\r\n\r\n` +
39
+ `${this.model}\r\n`));
40
+ // Add language field if provided
41
+ if (this.language) {
42
+ parts.push(Buffer.from(`--${boundary}\r\n` +
43
+ `Content-Disposition: form-data; name="language"\r\n\r\n` +
44
+ `${this.language}\r\n`));
45
+ }
46
+ // Add audio file - API expects "file" not "audio"
47
+ parts.push(Buffer.from(`--${boundary}\r\n` +
48
+ `Content-Disposition: form-data; name="file"; filename="recording.wav"\r\n` +
49
+ `Content-Type: audio/wav\r\n\r\n`));
50
+ parts.push(audioBuffer);
51
+ parts.push(Buffer.from(`\r\n`));
52
+ // Add closing boundary
53
+ parts.push(Buffer.from(`--${boundary}--\r\n`));
54
+ // Combine all parts
55
+ const body = Buffer.concat(parts);
56
+ // Make API request with proper Content-Type
57
+ const response = await fetch(`${this.baseUrl}/speech-to-text`, {
58
+ method: 'POST',
59
+ headers: {
60
+ 'xi-api-key': this.apiKey,
61
+ 'Content-Type': `multipart/form-data; boundary=${boundary}`,
62
+ 'Content-Length': body.length.toString(),
63
+ },
64
+ body,
65
+ });
66
+ if (!response.ok) {
67
+ const responseText = await response.text();
68
+ const errorInfo = parseElevenLabsError(response.status, responseText);
69
+ const errorMessage = formatElevenLabsError(errorInfo);
70
+ throw new Error(errorMessage);
71
+ }
72
+ const result = (await response.json());
73
+ return {
74
+ text: result.text || '',
75
+ language: result.language,
76
+ duration: result.duration,
77
+ };
78
+ }
79
+ catch (error) {
80
+ throw new Error(`Failed to transcribe audio: ${getErrorMessage(error)}`);
81
+ }
82
+ }
83
+ /**
84
+ * Validate API key by making a test request
85
+ * @returns true if API key is valid
86
+ */
87
+ async validateApiKey() {
88
+ const result = await this.validateApiKeyDetailed();
89
+ return result.valid;
90
+ }
91
+ /**
92
+ * Validate API key with detailed error information
93
+ * @returns Validation result with error details
94
+ */
95
+ async validateApiKeyDetailed() {
96
+ try {
97
+ // Try to get user subscription info to validate the key
98
+ const response = await fetch(`${this.baseUrl}/user/subscription`, {
99
+ method: 'GET',
100
+ headers: {
101
+ 'xi-api-key': this.apiKey,
102
+ },
103
+ });
104
+ if (response.ok) {
105
+ return { valid: true };
106
+ }
107
+ // Parse error response with detailed error information
108
+ const responseText = await response.text();
109
+ const errorInfo = parseElevenLabsError(response.status, responseText);
110
+ // Map error type to validation result
111
+ let errorType;
112
+ switch (errorInfo.type) {
113
+ case ElevenLabsErrorType.AUTHENTICATION:
114
+ errorType = 'invalid';
115
+ break;
116
+ case ElevenLabsErrorType.PERMISSION:
117
+ errorType = 'permission';
118
+ break;
119
+ case ElevenLabsErrorType.NETWORK:
120
+ errorType = 'network';
121
+ break;
122
+ default:
123
+ errorType = 'unknown';
124
+ }
125
+ // If subscription endpoint fails, try the voices endpoint as fallback
126
+ if (response.status >= 500) {
127
+ const voicesResponse = await fetch(`${this.baseUrl}/voices`, {
128
+ method: 'GET',
129
+ headers: {
130
+ 'xi-api-key': this.apiKey,
131
+ },
132
+ });
133
+ if (voicesResponse.ok) {
134
+ return { valid: true };
135
+ }
136
+ const voicesResponseText = await voicesResponse.text();
137
+ const voicesErrorInfo = parseElevenLabsError(voicesResponse.status, voicesResponseText);
138
+ return {
139
+ valid: false,
140
+ error: formatElevenLabsError(voicesErrorInfo),
141
+ errorType: voicesErrorInfo.type === ElevenLabsErrorType.AUTHENTICATION ? 'invalid' :
142
+ voicesErrorInfo.type === ElevenLabsErrorType.PERMISSION ? 'permission' :
143
+ voicesErrorInfo.type === ElevenLabsErrorType.NETWORK ? 'network' : 'unknown',
144
+ errorInfo: voicesErrorInfo,
145
+ };
146
+ }
147
+ return {
148
+ valid: false,
149
+ error: formatElevenLabsError(errorInfo),
150
+ errorType,
151
+ errorInfo,
152
+ };
153
+ }
154
+ catch (error) {
155
+ return {
156
+ valid: false,
157
+ error: `Network error: ${getErrorMessage(error)}`,
158
+ errorType: 'network',
159
+ };
160
+ }
161
+ }
162
+ /**
163
+ * Get available models for speech-to-text
164
+ * @returns List of available models
165
+ */
166
+ async getAvailableModels() {
167
+ try {
168
+ const response = await fetch(`${this.baseUrl}/models`, {
169
+ method: 'GET',
170
+ headers: {
171
+ 'xi-api-key': this.apiKey,
172
+ },
173
+ });
174
+ if (!response.ok) {
175
+ throw new Error(`Failed to fetch models: ${response.statusText}`);
176
+ }
177
+ const data = (await response.json());
178
+ return data.models?.map((m) => m.model_id) || [];
179
+ }
180
+ catch (error) {
181
+ console.error('Failed to fetch available models:', error);
182
+ return ['scribe_v1', 'scribe_v1_experimental', 'scribe_v2']; // Update default models
183
+ }
184
+ }
185
+ }
186
+ //# sourceMappingURL=elevenLabsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenLabsService.js","sourceRoot":"","sources":["../../../src/services/elevenLabsService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export interface StreamingTranscriptionConfig {
7
+ apiKey: string;
8
+ model?: string;
9
+ language?: string;
10
+ onPartialTranscript?: (text: string) => void;
11
+ onFinalTranscript?: (text: string) => void;
12
+ onError?: (error: Error) => void;
13
+ }
14
+ export interface StreamingTranscriptionResult {
15
+ fullText: string;
16
+ partialTexts: string[];
17
+ }
18
+ /**
19
+ * Service for real-time streaming transcription using ElevenLabs WebSocket API
20
+ * Based on: https://elevenlabs.io/docs/developers/guides/cookbooks/speech-to-text/streaming
21
+ */
22
+ export declare class ElevenLabsStreamingService {
23
+ private readonly apiKey;
24
+ private readonly model;
25
+ private readonly onPartialTranscript?;
26
+ private readonly onFinalTranscript?;
27
+ private readonly onError?;
28
+ private ws;
29
+ private fullTranscript;
30
+ private partialTranscripts;
31
+ private isConnected;
32
+ constructor(config: StreamingTranscriptionConfig);
33
+ /**
34
+ * Start streaming transcription session
35
+ */
36
+ startStreaming(): Promise<void>;
37
+ /**
38
+ * Send audio chunk for transcription
39
+ * Audio should be in the correct format (PCM, 16kHz, mono)
40
+ * @param audioChunk Audio data as Buffer
41
+ */
42
+ sendAudioChunk(audioChunk: Buffer): void;
43
+ /**
44
+ * Stop streaming and close connection
45
+ */
46
+ stopStreaming(): Promise<StreamingTranscriptionResult>;
47
+ /**
48
+ * Get current full transcript
49
+ */
50
+ getFullTranscript(): string;
51
+ /**
52
+ * Check if streaming is active
53
+ */
54
+ isStreaming(): boolean;
55
+ /**
56
+ * Reset transcript state
57
+ */
58
+ reset(): void;
59
+ }
@@ -0,0 +1,202 @@
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 { WebSocket } from 'ws';
8
+ /**
9
+ * Service for real-time streaming transcription using ElevenLabs WebSocket API
10
+ * Based on: https://elevenlabs.io/docs/developers/guides/cookbooks/speech-to-text/streaming
11
+ */
12
+ export class ElevenLabsStreamingService {
13
+ apiKey;
14
+ model;
15
+ onPartialTranscript;
16
+ onFinalTranscript;
17
+ onError;
18
+ ws = null;
19
+ fullTranscript = '';
20
+ partialTranscripts = [];
21
+ isConnected = false;
22
+ constructor(config) {
23
+ this.apiKey = config.apiKey;
24
+ this.model = config.model || 'scribe_v2';
25
+ this.onPartialTranscript = config.onPartialTranscript;
26
+ this.onFinalTranscript = config.onFinalTranscript;
27
+ this.onError = config.onError;
28
+ }
29
+ /**
30
+ * Start streaming transcription session
31
+ */
32
+ async startStreaming() {
33
+ return new Promise((resolve, reject) => {
34
+ try {
35
+ // ElevenLabs WebSocket endpoint - using conversational AI endpoint
36
+ // which supports speech-to-text streaming
37
+ const wsUrl = 'wss://api.elevenlabs.io/v1/convai/conversation';
38
+ this.ws = new WebSocket(wsUrl, {
39
+ headers: {
40
+ 'xi-api-key': this.apiKey,
41
+ },
42
+ });
43
+ this.ws.on('open', () => {
44
+ // Send initial configuration for speech-to-text mode
45
+ const config = {
46
+ type: 'conversation_initiation_client_data',
47
+ conversation_config_override: {
48
+ agent: {
49
+ prompt: {
50
+ prompt: 'You are a transcription assistant. Only transcribe what the user says, do not respond.',
51
+ },
52
+ },
53
+ tts: {
54
+ model_id: this.model,
55
+ },
56
+ },
57
+ };
58
+ if (this.ws) {
59
+ this.ws.send(JSON.stringify(config));
60
+ this.isConnected = true;
61
+ resolve();
62
+ }
63
+ });
64
+ this.ws.on('message', (data) => {
65
+ try {
66
+ const message = JSON.parse(data.toString());
67
+ // Handle different message types from conversational AI endpoint
68
+ if (message.type === 'user_transcript' || message.type === 'transcript') {
69
+ const text = message.user_transcript || message.transcript || message.text || '';
70
+ const isFinal = message.is_final !== false; // Default to true if not specified
71
+ if (text) {
72
+ if (isFinal) {
73
+ // Final transcription for this segment
74
+ this.partialTranscripts.push(text);
75
+ this.fullTranscript += (this.fullTranscript ? ' ' : '') + text;
76
+ if (this.onFinalTranscript) {
77
+ this.onFinalTranscript(text);
78
+ }
79
+ }
80
+ else {
81
+ // Partial transcription (interim results)
82
+ if (this.onPartialTranscript) {
83
+ this.onPartialTranscript(text);
84
+ }
85
+ }
86
+ }
87
+ }
88
+ else if (message.type === 'interruption') {
89
+ // User started speaking, clear any previous partial transcripts
90
+ if (this.onPartialTranscript) {
91
+ this.onPartialTranscript('');
92
+ }
93
+ }
94
+ else if (message.type === 'error' || message.error) {
95
+ const errorMsg = message.message || message.error || 'Streaming transcription error';
96
+ const error = new Error(errorMsg);
97
+ if (this.onError) {
98
+ this.onError(error);
99
+ }
100
+ }
101
+ }
102
+ catch (error) {
103
+ console.error('Error parsing WebSocket message:', error);
104
+ }
105
+ });
106
+ this.ws.on('error', (error) => {
107
+ this.isConnected = false;
108
+ const err = new Error(`WebSocket error: ${error.message}`);
109
+ if (this.onError) {
110
+ this.onError(err);
111
+ }
112
+ reject(err);
113
+ });
114
+ this.ws.on('close', (code, reason) => {
115
+ this.isConnected = false;
116
+ if (code !== 1000) {
117
+ // Abnormal closure
118
+ console.error(`WebSocket closed with code ${code}: ${reason}`);
119
+ }
120
+ });
121
+ }
122
+ catch (error) {
123
+ reject(new Error(`Failed to start streaming: ${getErrorMessage(error)}`));
124
+ }
125
+ });
126
+ }
127
+ /**
128
+ * Send audio chunk for transcription
129
+ * Audio should be in the correct format (PCM, 16kHz, mono)
130
+ * @param audioChunk Audio data as Buffer
131
+ */
132
+ sendAudioChunk(audioChunk) {
133
+ if (!this.ws || !this.isConnected) {
134
+ throw new Error('WebSocket not connected');
135
+ }
136
+ try {
137
+ // For conversational AI endpoint, send audio with proper message type
138
+ const audioMessage = {
139
+ type: 'audio',
140
+ audio: audioChunk.toString('base64'),
141
+ };
142
+ this.ws.send(JSON.stringify(audioMessage));
143
+ }
144
+ catch (error) {
145
+ throw new Error(`Failed to send audio chunk: ${getErrorMessage(error)}`);
146
+ }
147
+ }
148
+ /**
149
+ * Stop streaming and close connection
150
+ */
151
+ async stopStreaming() {
152
+ return new Promise((resolve) => {
153
+ if (!this.ws) {
154
+ resolve({
155
+ fullText: this.fullTranscript,
156
+ partialTexts: this.partialTranscripts,
157
+ });
158
+ return;
159
+ }
160
+ // Send end-of-stream signal (empty buffer or close message)
161
+ try {
162
+ // Some APIs expect an empty buffer or specific close message
163
+ this.ws.send(Buffer.alloc(0));
164
+ }
165
+ catch (error) {
166
+ console.error('Unable to stop the streaming', error);
167
+ // Ignore errors when sending end signal
168
+ }
169
+ // Wait a bit for final transcriptions
170
+ setTimeout(() => {
171
+ if (this.ws) {
172
+ this.ws.close(1000, 'Normal closure');
173
+ this.ws = null;
174
+ }
175
+ resolve({
176
+ fullText: this.fullTranscript,
177
+ partialTexts: this.partialTranscripts,
178
+ });
179
+ }, 1000); // Increased timeout to ensure we get final results
180
+ });
181
+ }
182
+ /**
183
+ * Get current full transcript
184
+ */
185
+ getFullTranscript() {
186
+ return this.fullTranscript;
187
+ }
188
+ /**
189
+ * Check if streaming is active
190
+ */
191
+ isStreaming() {
192
+ return this.isConnected;
193
+ }
194
+ /**
195
+ * Reset transcript state
196
+ */
197
+ reset() {
198
+ this.fullTranscript = '';
199
+ this.partialTranscripts = [];
200
+ }
201
+ }
202
+ //# sourceMappingURL=elevenLabsStreamingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenLabsStreamingService.js","sourceRoot":"","sources":["../../../src/services/elevenLabsStreamingService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export interface TokenResponse {
7
+ token: string;
8
+ expiresAt: string;
9
+ }
10
+ /**
11
+ * Service for generating single-use tokens for ElevenLabs Scribe
12
+ */
13
+ export declare class ElevenLabsTokenService {
14
+ private readonly apiKey;
15
+ constructor(apiKey: string);
16
+ /**
17
+ * Generate a single-use token for Scribe realtime transcription
18
+ * Token expires after 15 minutes
19
+ */
20
+ generateScribeToken(): Promise<TokenResponse>;
21
+ }
@@ -0,0 +1,42 @@
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
+ /**
8
+ * Service for generating single-use tokens for ElevenLabs Scribe
9
+ */
10
+ export class ElevenLabsTokenService {
11
+ apiKey;
12
+ constructor(apiKey) {
13
+ this.apiKey = apiKey;
14
+ }
15
+ /**
16
+ * Generate a single-use token for Scribe realtime transcription
17
+ * Token expires after 15 minutes
18
+ */
19
+ async generateScribeToken() {
20
+ try {
21
+ const response = await fetch('https://api.elevenlabs.io/v1/single-use-token/realtime_scribe', {
22
+ method: 'POST',
23
+ headers: {
24
+ 'xi-api-key': this.apiKey,
25
+ },
26
+ });
27
+ if (!response.ok) {
28
+ const errorText = await response.text();
29
+ throw new Error(`Failed to generate token: ${response.status} ${response.statusText} - ${errorText}`);
30
+ }
31
+ const data = await response.json();
32
+ return {
33
+ token: data.token,
34
+ expiresAt: data.expires_at || new Date(Date.now() + 15 * 60 * 1000).toISOString(),
35
+ };
36
+ }
37
+ catch (error) {
38
+ throw new Error(`Token generation failed: ${getErrorMessage(error)}`);
39
+ }
40
+ }
41
+ }
42
+ //# sourceMappingURL=elevenLabsTokenService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenLabsTokenService.js","sourceRoot":"","sources":["../../../src/services/elevenLabsTokenService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAOjE;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAChB,MAAM,CAAS;IAEhC,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,+DAA+D,EAC/D;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,YAAY,EAAE,IAAI,CAAC,MAAM;iBAC1B;aACF,CACF,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CACb,6BAA6B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CACrF,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;aAClF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { Settings } from '../config/settings.js';
7
+ export interface VoiceInputOptions {
8
+ settings: Settings;
9
+ language?: string;
10
+ onRecordingStart?: () => void;
11
+ onRecordingStop?: () => void;
12
+ onTranscriptionStart?: () => void;
13
+ onTranscriptionComplete?: (text: string) => void;
14
+ onError?: (error: Error) => void;
15
+ }
16
+ /**
17
+ * Handle voice input: record audio and transcribe to text
18
+ */
19
+ export declare function handleVoiceInput(options: VoiceInputOptions): Promise<string>;
20
+ /**
21
+ * Check if voice input is properly configured
22
+ */
23
+ export declare function isVoiceConfigured(settings: Settings): Promise<{
24
+ configured: boolean;
25
+ errors: string[];
26
+ }>;