@blackbox_ai/blackbox-cli 0.0.9 → 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 (416) 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 +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,233 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * ElevenLabs API error codes and types based on official documentation
8
+ * https://elevenlabs.io/docs/api-reference/error-messages
9
+ */
10
+ /**
11
+ * Error codes returned by ElevenLabs API
12
+ */
13
+ export var ElevenLabsErrorCode;
14
+ (function (ElevenLabsErrorCode) {
15
+ // 400/401 errors
16
+ ElevenLabsErrorCode["MAX_CHARACTER_LIMIT_EXCEEDED"] = "max_character_limit_exceeded";
17
+ ElevenLabsErrorCode["INVALID_API_KEY"] = "invalid_api_key";
18
+ ElevenLabsErrorCode["QUOTA_EXCEEDED"] = "quota_exceeded";
19
+ ElevenLabsErrorCode["VOICE_NOT_FOUND"] = "voice_not_found";
20
+ // 403 errors
21
+ ElevenLabsErrorCode["ONLY_FOR_CREATOR_PLUS"] = "only_for_creator+";
22
+ // 429 errors
23
+ ElevenLabsErrorCode["TOO_MANY_CONCURRENT_REQUESTS"] = "too_many_concurrent_requests";
24
+ ElevenLabsErrorCode["SYSTEM_BUSY"] = "system_busy";
25
+ // Generic/Unknown
26
+ ElevenLabsErrorCode["UNKNOWN"] = "unknown";
27
+ })(ElevenLabsErrorCode || (ElevenLabsErrorCode = {}));
28
+ /**
29
+ * Error type categories for easier handling
30
+ */
31
+ export var ElevenLabsErrorType;
32
+ (function (ElevenLabsErrorType) {
33
+ ElevenLabsErrorType["AUTHENTICATION"] = "authentication";
34
+ ElevenLabsErrorType["PERMISSION"] = "permission";
35
+ ElevenLabsErrorType["QUOTA"] = "quota";
36
+ ElevenLabsErrorType["RATE_LIMIT"] = "rate_limit";
37
+ ElevenLabsErrorType["VALIDATION"] = "validation";
38
+ ElevenLabsErrorType["NETWORK"] = "network";
39
+ ElevenLabsErrorType["UNKNOWN"] = "unknown";
40
+ })(ElevenLabsErrorType || (ElevenLabsErrorType = {}));
41
+ /**
42
+ * Map of error codes to detailed error information
43
+ */
44
+ export const ELEVENLABS_ERROR_MAP = {
45
+ [ElevenLabsErrorCode.MAX_CHARACTER_LIMIT_EXCEEDED]: {
46
+ code: ElevenLabsErrorCode.MAX_CHARACTER_LIMIT_EXCEEDED,
47
+ type: ElevenLabsErrorType.VALIDATION,
48
+ httpStatus: 400,
49
+ message: 'You are sending too many characters in a single request.',
50
+ solution: 'Split the request into smaller chunks. Check the character limits for your model at https://elevenlabs.io/docs/api-reference/text-to-speech#character-limits',
51
+ documentationUrl: 'https://elevenlabs.io/docs/api-reference/text-to-speech#character-limits',
52
+ },
53
+ [ElevenLabsErrorCode.INVALID_API_KEY]: {
54
+ code: ElevenLabsErrorCode.INVALID_API_KEY,
55
+ type: ElevenLabsErrorType.AUTHENTICATION,
56
+ httpStatus: 401,
57
+ message: 'Your API key is invalid or has not been set correctly.',
58
+ solution: 'Ensure the request is correctly authenticated. Check your API key at https://elevenlabs.io/app/settings/api-keys and run: blackbox voice configure',
59
+ documentationUrl: 'https://elevenlabs.io/docs/api-reference/authentication',
60
+ },
61
+ [ElevenLabsErrorCode.QUOTA_EXCEEDED]: {
62
+ code: ElevenLabsErrorCode.QUOTA_EXCEEDED,
63
+ type: ElevenLabsErrorType.QUOTA,
64
+ httpStatus: 401,
65
+ message: 'You have insufficient quota to complete the request.',
66
+ solution: 'On the Creator plan and above, you can enable usage-based billing from your Subscription page at https://elevenlabs.io/app/subscription',
67
+ documentationUrl: 'https://elevenlabs.io/app/subscription',
68
+ },
69
+ [ElevenLabsErrorCode.VOICE_NOT_FOUND]: {
70
+ code: ElevenLabsErrorCode.VOICE_NOT_FOUND,
71
+ type: ElevenLabsErrorType.VALIDATION,
72
+ httpStatus: 400,
73
+ message: 'The voice_id you entered is incorrect.',
74
+ solution: 'Check that you are using the correct voice_id for the voice you want to use. You can verify this in My Voices at https://elevenlabs.io/app/voice-library',
75
+ documentationUrl: 'https://elevenlabs.io/app/voice-library',
76
+ },
77
+ [ElevenLabsErrorCode.ONLY_FOR_CREATOR_PLUS]: {
78
+ code: ElevenLabsErrorCode.ONLY_FOR_CREATOR_PLUS,
79
+ type: ElevenLabsErrorType.PERMISSION,
80
+ httpStatus: 403,
81
+ message: 'You are trying to use professional voices on a free or basic subscription.',
82
+ solution: 'Upgrade to Creator tier or higher to access professional voices at https://elevenlabs.io/pricing',
83
+ documentationUrl: 'https://elevenlabs.io/pricing',
84
+ },
85
+ [ElevenLabsErrorCode.TOO_MANY_CONCURRENT_REQUESTS]: {
86
+ code: ElevenLabsErrorCode.TOO_MANY_CONCURRENT_REQUESTS,
87
+ type: ElevenLabsErrorType.RATE_LIMIT,
88
+ httpStatus: 429,
89
+ message: 'You have exceeded the concurrency limit for your subscription.',
90
+ solution: 'Wait for existing requests to complete before making new ones. Consider upgrading your subscription for higher concurrency limits at https://elevenlabs.io/docs/api-reference/concurrency-and-priority',
91
+ documentationUrl: 'https://elevenlabs.io/docs/api-reference/concurrency-and-priority',
92
+ },
93
+ [ElevenLabsErrorCode.SYSTEM_BUSY]: {
94
+ code: ElevenLabsErrorCode.SYSTEM_BUSY,
95
+ type: ElevenLabsErrorType.RATE_LIMIT,
96
+ httpStatus: 429,
97
+ message: 'Our services are experiencing high levels of traffic and your request could not be processed.',
98
+ solution: 'Retry the request later with exponential backoff. Consider upgrading your subscription to get higher priority at https://elevenlabs.io/docs/api-reference/concurrency-and-priority',
99
+ documentationUrl: 'https://elevenlabs.io/docs/api-reference/concurrency-and-priority',
100
+ },
101
+ [ElevenLabsErrorCode.UNKNOWN]: {
102
+ code: ElevenLabsErrorCode.UNKNOWN,
103
+ type: ElevenLabsErrorType.UNKNOWN,
104
+ httpStatus: 500,
105
+ message: 'An unknown error occurred.',
106
+ solution: 'Please try again. If the problem persists, contact ElevenLabs support at https://help.elevenlabs.io/hc/en-us/requests/new',
107
+ documentationUrl: 'https://help.elevenlabs.io/hc/en-us/requests/new',
108
+ },
109
+ };
110
+ /**
111
+ * Parse ElevenLabs API error response and return detailed error information
112
+ */
113
+ export function parseElevenLabsError(statusCode, responseBody) {
114
+ try {
115
+ // Try to parse as JSON
116
+ const json = JSON.parse(responseBody);
117
+ // Extract error code from various possible locations
118
+ const errorCode = json.detail?.code ||
119
+ json.code ||
120
+ json.detail?.status ||
121
+ json.status;
122
+ // Check if we have a known error code
123
+ if (errorCode && errorCode in ELEVENLABS_ERROR_MAP) {
124
+ return ELEVENLABS_ERROR_MAP[errorCode];
125
+ }
126
+ // Fall back to HTTP status code mapping
127
+ return mapHttpStatusToError(statusCode, responseBody);
128
+ }
129
+ catch {
130
+ // If JSON parsing fails, map by HTTP status code
131
+ return mapHttpStatusToError(statusCode, responseBody);
132
+ }
133
+ }
134
+ /**
135
+ * Map HTTP status code to error information when specific error code is not available
136
+ */
137
+ function mapHttpStatusToError(statusCode, responseBody) {
138
+ switch (statusCode) {
139
+ case 400:
140
+ // Could be various validation errors
141
+ if (responseBody.toLowerCase().includes('character')) {
142
+ return ELEVENLABS_ERROR_MAP[ElevenLabsErrorCode.MAX_CHARACTER_LIMIT_EXCEEDED];
143
+ }
144
+ if (responseBody.toLowerCase().includes('voice')) {
145
+ return ELEVENLABS_ERROR_MAP[ElevenLabsErrorCode.VOICE_NOT_FOUND];
146
+ }
147
+ return {
148
+ code: ElevenLabsErrorCode.UNKNOWN,
149
+ type: ElevenLabsErrorType.VALIDATION,
150
+ httpStatus: 400,
151
+ message: `Bad request: ${responseBody}`,
152
+ solution: 'Check your request parameters and try again.',
153
+ };
154
+ case 401:
155
+ // Authentication errors
156
+ if (responseBody.toLowerCase().includes('quota')) {
157
+ return ELEVENLABS_ERROR_MAP[ElevenLabsErrorCode.QUOTA_EXCEEDED];
158
+ }
159
+ return ELEVENLABS_ERROR_MAP[ElevenLabsErrorCode.INVALID_API_KEY];
160
+ case 403:
161
+ // Permission errors
162
+ if (responseBody.toLowerCase().includes('creator') ||
163
+ responseBody.toLowerCase().includes('professional')) {
164
+ return ELEVENLABS_ERROR_MAP[ElevenLabsErrorCode.ONLY_FOR_CREATOR_PLUS];
165
+ }
166
+ return {
167
+ code: ElevenLabsErrorCode.UNKNOWN,
168
+ type: ElevenLabsErrorType.PERMISSION,
169
+ httpStatus: 403,
170
+ message: `Permission denied: ${responseBody}`,
171
+ solution: 'Ensure your API key has the required permissions at https://elevenlabs.io/app/settings/api-keys',
172
+ documentationUrl: 'https://elevenlabs.io/app/settings/api-keys',
173
+ };
174
+ case 429:
175
+ // Rate limit errors
176
+ if (responseBody.toLowerCase().includes('concurrent')) {
177
+ return ELEVENLABS_ERROR_MAP[ElevenLabsErrorCode.TOO_MANY_CONCURRENT_REQUESTS];
178
+ }
179
+ if (responseBody.toLowerCase().includes('busy') ||
180
+ responseBody.toLowerCase().includes('traffic')) {
181
+ return ELEVENLABS_ERROR_MAP[ElevenLabsErrorCode.SYSTEM_BUSY];
182
+ }
183
+ return {
184
+ code: ElevenLabsErrorCode.UNKNOWN,
185
+ type: ElevenLabsErrorType.RATE_LIMIT,
186
+ httpStatus: 429,
187
+ message: `Rate limit exceeded: ${responseBody}`,
188
+ solution: 'Wait a moment and try again. Consider implementing exponential backoff for retries.',
189
+ };
190
+ default:
191
+ return {
192
+ code: ElevenLabsErrorCode.UNKNOWN,
193
+ type: ElevenLabsErrorType.UNKNOWN,
194
+ httpStatus: statusCode,
195
+ message: responseBody || 'An unknown error occurred',
196
+ solution: 'Please try again. If the problem persists, contact ElevenLabs support at https://help.elevenlabs.io/hc/en-us/requests/new',
197
+ documentationUrl: 'https://help.elevenlabs.io/hc/en-us/requests/new',
198
+ };
199
+ }
200
+ }
201
+ /**
202
+ * Format error information into a user-friendly message
203
+ */
204
+ export function formatElevenLabsError(errorInfo) {
205
+ let message = `${errorInfo.message}\n\n`;
206
+ message += `Solution: ${errorInfo.solution}`;
207
+ if (errorInfo.documentationUrl) {
208
+ message += `\n\nFor more information, visit: ${errorInfo.documentationUrl}`;
209
+ }
210
+ return message;
211
+ }
212
+ /**
213
+ * Check if an error is retryable (rate limit errors)
214
+ */
215
+ export function isRetryableError(errorInfo) {
216
+ return errorInfo.type === ElevenLabsErrorType.RATE_LIMIT;
217
+ }
218
+ /**
219
+ * Get recommended retry delay in milliseconds for retryable errors
220
+ */
221
+ export function getRetryDelay(errorInfo, attemptNumber) {
222
+ if (!isRetryableError(errorInfo)) {
223
+ return 0;
224
+ }
225
+ // Exponential backoff: 1s, 2s, 4s, 8s, 16s
226
+ const baseDelay = 1000;
227
+ const maxDelay = 16000;
228
+ const delay = Math.min(baseDelay * Math.pow(2, attemptNumber - 1), maxDelay);
229
+ // Add jitter to prevent thundering herd
230
+ const jitter = Math.random() * 0.3 * delay;
231
+ return Math.floor(delay + jitter);
232
+ }
233
+ //# sourceMappingURL=elevenLabsErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenLabsErrors.js","sourceRoot":"","sources":["../../../src/services/elevenLabsErrors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,mBAgBX;AAhBD,WAAY,mBAAmB;IAC7B,iBAAiB;IACjB,oFAA6D,CAAA;IAC7D,0DAAmC,CAAA;IACnC,wDAAiC,CAAA;IACjC,0DAAmC,CAAA;IAEnC,aAAa;IACb,kEAA2C,CAAA;IAE3C,aAAa;IACb,oFAA6D,CAAA;IAC7D,kDAA2B,CAAA;IAE3B,kBAAkB;IAClB,0CAAmB,CAAA;AACrB,CAAC,EAhBW,mBAAmB,KAAnB,mBAAmB,QAgB9B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,mBAQX;AARD,WAAY,mBAAmB;IAC7B,wDAAiC,CAAA;IACjC,gDAAyB,CAAA;IACzB,sCAAe,CAAA;IACf,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,0CAAmB,CAAA;IACnB,0CAAmB,CAAA;AACrB,CAAC,EARW,mBAAmB,KAAnB,mBAAmB,QAQ9B;AAcD;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAqD;IACpF,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,EAAE;QAClD,IAAI,EAAE,mBAAmB,CAAC,4BAA4B;QACtD,IAAI,EAAE,mBAAmB,CAAC,UAAU;QACpC,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,0DAA0D;QACnE,QAAQ,EAAE,8JAA8J;QACxK,gBAAgB,EAAE,0EAA0E;KAC7F;IAED,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE;QACrC,IAAI,EAAE,mBAAmB,CAAC,eAAe;QACzC,IAAI,EAAE,mBAAmB,CAAC,cAAc;QACxC,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,wDAAwD;QACjE,QAAQ,EAAE,oJAAoJ;QAC9J,gBAAgB,EAAE,yDAAyD;KAC5E;IAED,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE;QACpC,IAAI,EAAE,mBAAmB,CAAC,cAAc;QACxC,IAAI,EAAE,mBAAmB,CAAC,KAAK;QAC/B,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,sDAAsD;QAC/D,QAAQ,EAAE,yIAAyI;QACnJ,gBAAgB,EAAE,wCAAwC;KAC3D;IAED,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE;QACrC,IAAI,EAAE,mBAAmB,CAAC,eAAe;QACzC,IAAI,EAAE,mBAAmB,CAAC,UAAU;QACpC,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,wCAAwC;QACjD,QAAQ,EAAE,0JAA0J;QACpK,gBAAgB,EAAE,yCAAyC;KAC5D;IAED,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,EAAE;QAC3C,IAAI,EAAE,mBAAmB,CAAC,qBAAqB;QAC/C,IAAI,EAAE,mBAAmB,CAAC,UAAU;QACpC,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,4EAA4E;QACrF,QAAQ,EAAE,kGAAkG;QAC5G,gBAAgB,EAAE,+BAA+B;KAClD;IAED,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,EAAE;QAClD,IAAI,EAAE,mBAAmB,CAAC,4BAA4B;QACtD,IAAI,EAAE,mBAAmB,CAAC,UAAU;QACpC,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,gEAAgE;QACzE,QAAQ,EAAE,wMAAwM;QAClN,gBAAgB,EAAE,mEAAmE;KACtF;IAED,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE;QACjC,IAAI,EAAE,mBAAmB,CAAC,WAAW;QACrC,IAAI,EAAE,mBAAmB,CAAC,UAAU;QACpC,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,+FAA+F;QACxG,QAAQ,EAAE,oLAAoL;QAC9L,gBAAgB,EAAE,mEAAmE;KACtF;IAED,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAC7B,IAAI,EAAE,mBAAmB,CAAC,OAAO;QACjC,IAAI,EAAE,mBAAmB,CAAC,OAAO;QACjC,UAAU,EAAE,GAAG;QACf,OAAO,EAAE,4BAA4B;QACrC,QAAQ,EAAE,2HAA2H;QACrI,gBAAgB,EAAE,kDAAkD;KACrE;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,YAAoB;IAEpB,IAAI,CAAC;QACH,uBAAuB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CASnC,CAAC;QAEF,qDAAqD;QACrD,MAAM,SAAS,GACb,IAAI,CAAC,MAAM,EAAE,IAAI;YACjB,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,MAAM,EAAE,MAAM;YACnB,IAAI,CAAC,MAAM,CAAC;QAEd,sCAAsC;QACtC,IAAI,SAAS,IAAI,SAAS,IAAI,oBAAoB,EAAE,CAAC;YACnD,OAAO,oBAAoB,CAAC,SAAgC,CAAC,CAAC;QAChE,CAAC;QAED,wCAAwC;QACxC,OAAO,oBAAoB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;QACjD,OAAO,oBAAoB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,UAAkB,EAAE,YAAoB;IACpE,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,GAAG;YACN,qCAAqC;YACrC,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrD,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,CAAC;YAChF,CAAC;YACD,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;YACnE,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,mBAAmB,CAAC,OAAO;gBACjC,IAAI,EAAE,mBAAmB,CAAC,UAAU;gBACpC,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,gBAAgB,YAAY,EAAE;gBACvC,QAAQ,EAAE,8CAA8C;aACzD,CAAC;QAEJ,KAAK,GAAG;YACN,wBAAwB;YACxB,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAEnE,KAAK,GAAG;YACN,oBAAoB;YACpB,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC9C,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACxD,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;YACzE,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,mBAAmB,CAAC,OAAO;gBACjC,IAAI,EAAE,mBAAmB,CAAC,UAAU;gBACpC,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,sBAAsB,YAAY,EAAE;gBAC7C,QAAQ,EAAE,iGAAiG;gBAC3G,gBAAgB,EAAE,6CAA6C;aAChE,CAAC;QAEJ,KAAK,GAAG;YACN,oBAAoB;YACpB,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtD,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,CAAC;YAChF,CAAC;YACD,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC3C,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnD,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,mBAAmB,CAAC,OAAO;gBACjC,IAAI,EAAE,mBAAmB,CAAC,UAAU;gBACpC,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,wBAAwB,YAAY,EAAE;gBAC/C,QAAQ,EAAE,qFAAqF;aAChG,CAAC;QAEJ;YACE,OAAO;gBACL,IAAI,EAAE,mBAAmB,CAAC,OAAO;gBACjC,IAAI,EAAE,mBAAmB,CAAC,OAAO;gBACjC,UAAU,EAAE,UAAU;gBACtB,OAAO,EAAE,YAAY,IAAI,2BAA2B;gBACpD,QAAQ,EAAE,2HAA2H;gBACrI,gBAAgB,EAAE,kDAAkD;aACrE,CAAC;IACN,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAA8B;IAClE,IAAI,OAAO,GAAG,GAAG,SAAS,CAAC,OAAO,MAAM,CAAC;IACzC,OAAO,IAAI,aAAa,SAAS,CAAC,QAAQ,EAAE,CAAC;IAE7C,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAC/B,OAAO,IAAI,oCAAoC,SAAS,CAAC,gBAAgB,EAAE,CAAC;IAC9E,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAA8B;IAC7D,OAAO,SAAS,CAAC,IAAI,KAAK,mBAAmB,CAAC,UAAU,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAA8B,EAAE,aAAqB;IACjF,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,2CAA2C;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,MAAM,QAAQ,GAAG,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAE7E,wCAAwC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC;IAE3C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type ElevenLabsErrorInfo } from './elevenLabsErrors.js';
7
+ export interface ElevenLabsConfig {
8
+ apiKey: string;
9
+ agentId?: string;
10
+ model?: string;
11
+ language?: string;
12
+ }
13
+ export interface TranscriptionResult {
14
+ text: string;
15
+ language?: string;
16
+ duration?: number;
17
+ }
18
+ export interface ApiKeyValidationResult {
19
+ valid: boolean;
20
+ error?: string;
21
+ errorType?: 'missing' | 'invalid' | 'permission' | 'network' | 'unknown';
22
+ errorInfo?: ElevenLabsErrorInfo;
23
+ }
24
+ export interface ElevenLabsError {
25
+ detail?: {
26
+ status?: string;
27
+ message?: string;
28
+ };
29
+ message?: string;
30
+ status?: string;
31
+ }
32
+ /**
33
+ * Service for interacting with ElevenLabs Speech-to-Text API
34
+ */
35
+ export declare class ElevenLabsService {
36
+ private readonly apiKey;
37
+ private readonly model;
38
+ private readonly language;
39
+ private readonly baseUrl;
40
+ constructor(config: ElevenLabsConfig);
41
+ /**
42
+ * Transcribe audio file to text using ElevenLabs API
43
+ * @param audioFilePath Path to the audio file
44
+ * @returns Transcription result
45
+ */
46
+ transcribe(audioFilePath: string): Promise<TranscriptionResult>;
47
+ /**
48
+ * Validate API key by making a test request
49
+ * @returns true if API key is valid
50
+ */
51
+ validateApiKey(): Promise<boolean>;
52
+ /**
53
+ * Validate API key with detailed error information
54
+ * @returns Validation result with error details
55
+ */
56
+ validateApiKeyDetailed(): Promise<ApiKeyValidationResult>;
57
+ /**
58
+ * Get available models for speech-to-text
59
+ * @returns List of available models
60
+ */
61
+ getAvailableModels(): Promise<string[]>;
62
+ }
@@ -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
+ }