@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 { getCliVersion } from '../utils/version.js';
7
+ const CACHE_DURATION_MS = 24 * 60 * 60 * 1000; // 24 hours
8
+ /**
9
+ * Release Notes Cache Service
10
+ * Caches release notes and automatically invalidates when:
11
+ * 1. CLI version changes (new release installed)
12
+ * 2. Cache is older than 24 hours
13
+ */
14
+ export class ReleaseNotesCache {
15
+ static instance;
16
+ cache = null;
17
+ cacheFilePath = null;
18
+ initPromise = null;
19
+ constructor() {
20
+ // Start initialization but don't wait for it
21
+ this.initPromise = this.initializeCachePath();
22
+ }
23
+ static getInstance() {
24
+ if (!ReleaseNotesCache.instance) {
25
+ ReleaseNotesCache.instance = new ReleaseNotesCache();
26
+ }
27
+ return ReleaseNotesCache.instance;
28
+ }
29
+ async initializeCachePath() {
30
+ try {
31
+ const path = await import('node:path');
32
+ const os = await import('node:os');
33
+ const fs = await import('node:fs/promises');
34
+ const cacheDir = path.join(os.homedir(), '.blackboxcli', 'cache');
35
+ // Ensure cache directory exists
36
+ try {
37
+ await fs.mkdir(cacheDir, { recursive: true });
38
+ }
39
+ catch {
40
+ // Directory might already exist
41
+ }
42
+ this.cacheFilePath = path.join(cacheDir, 'release-notes.json');
43
+ console.log(`[ReleaseNotesCache] Cache file path: ${this.cacheFilePath}`);
44
+ }
45
+ catch (error) {
46
+ console.error('[ReleaseNotesCache] Failed to initialize cache path:', error);
47
+ }
48
+ }
49
+ /**
50
+ * Ensure cache path is initialized before use
51
+ */
52
+ async ensureInitialized() {
53
+ if (this.initPromise) {
54
+ await this.initPromise;
55
+ this.initPromise = null;
56
+ }
57
+ }
58
+ /**
59
+ * Get cached release notes if valid
60
+ */
61
+ async get() {
62
+ // Ensure cache path is initialized
63
+ await this.ensureInitialized();
64
+ try {
65
+ // Try memory cache first
66
+ if (this.cache && await this.isCacheValid(this.cache)) {
67
+ console.log('[ReleaseNotesCache] Using memory cache');
68
+ return {
69
+ data: this.cache.data,
70
+ changelogData: this.cache.changelogData,
71
+ };
72
+ }
73
+ // Try disk cache
74
+ if (this.cacheFilePath) {
75
+ const fs = await import('node:fs/promises');
76
+ try {
77
+ const content = await fs.readFile(this.cacheFilePath, 'utf-8');
78
+ const cached = JSON.parse(content);
79
+ // Convert plain object back to Map
80
+ cached.changelogData = new Map(Object.entries(cached.changelogData || {}));
81
+ if (await this.isCacheValid(cached)) {
82
+ console.log('[ReleaseNotesCache] Using disk cache');
83
+ this.cache = cached;
84
+ return {
85
+ data: cached.data,
86
+ changelogData: cached.changelogData,
87
+ };
88
+ }
89
+ else {
90
+ console.log('[ReleaseNotesCache] Cache invalid, will fetch fresh data');
91
+ }
92
+ }
93
+ catch (_error) {
94
+ // Cache file doesn't exist or is corrupted
95
+ console.log('[ReleaseNotesCache] No valid cache found');
96
+ }
97
+ }
98
+ return null;
99
+ }
100
+ catch (err) {
101
+ console.error('[ReleaseNotesCache] Error reading cache:', err);
102
+ return null;
103
+ }
104
+ }
105
+ /**
106
+ * Save release notes to cache
107
+ */
108
+ async set(data, changelogData) {
109
+ // Ensure cache path is initialized
110
+ await this.ensureInitialized();
111
+ try {
112
+ const cliVersion = await getCliVersion();
113
+ const cacheData = {
114
+ version: data[0]?.version || 'unknown',
115
+ data,
116
+ changelogData,
117
+ cachedAt: Date.now(),
118
+ cliVersion,
119
+ };
120
+ // Save to memory
121
+ this.cache = cacheData;
122
+ // Save to disk
123
+ if (this.cacheFilePath) {
124
+ const fs = await import('node:fs/promises');
125
+ // Convert Map to plain object for JSON serialization
126
+ const serializable = {
127
+ ...cacheData,
128
+ changelogData: Object.fromEntries(cacheData.changelogData),
129
+ };
130
+ await fs.writeFile(this.cacheFilePath, JSON.stringify(serializable, null, 2), 'utf-8');
131
+ console.log('[ReleaseNotesCache] Cache saved successfully');
132
+ }
133
+ }
134
+ catch (err) {
135
+ console.error('[ReleaseNotesCache] Error saving cache:', err);
136
+ }
137
+ }
138
+ /**
139
+ * Check if cache is still valid
140
+ */
141
+ async isCacheValid(cached) {
142
+ try {
143
+ // Check if cache is too old
144
+ const age = Date.now() - cached.cachedAt;
145
+ if (age > CACHE_DURATION_MS) {
146
+ console.log('[ReleaseNotesCache] Cache expired (age: ${Math.round(age / 1000 / 60)} minutes)');
147
+ return false;
148
+ }
149
+ // Check if CLI version has changed (new release installed)
150
+ const currentVersion = await getCliVersion();
151
+ if (cached.cliVersion !== currentVersion) {
152
+ console.log(`[ReleaseNotesCache] CLI version changed: ${cached.cliVersion} -> ${currentVersion}`);
153
+ return false;
154
+ }
155
+ return true;
156
+ }
157
+ catch (err) {
158
+ console.error('[ReleaseNotesCache] Error validating cache:', err);
159
+ return false;
160
+ }
161
+ }
162
+ /**
163
+ * Clear the cache
164
+ */
165
+ async clear() {
166
+ // Ensure cache path is initialized
167
+ await this.ensureInitialized();
168
+ try {
169
+ this.cache = null;
170
+ if (this.cacheFilePath) {
171
+ const fs = await import('node:fs/promises');
172
+ try {
173
+ await fs.unlink(this.cacheFilePath);
174
+ console.log('[ReleaseNotesCache] Cache cleared');
175
+ }
176
+ catch (_error) {
177
+ // File might not exist
178
+ }
179
+ }
180
+ }
181
+ catch (error) {
182
+ console.error('[ReleaseNotesCache] Error clearing cache:', error);
183
+ }
184
+ }
185
+ }
186
+ //# sourceMappingURL=ReleaseNotesCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReleaseNotesCache.js","sourceRoot":"","sources":["../../../src/services/ReleaseNotesCache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
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 declare enum ElevenLabsErrorCode {
14
+ MAX_CHARACTER_LIMIT_EXCEEDED = "max_character_limit_exceeded",
15
+ INVALID_API_KEY = "invalid_api_key",
16
+ QUOTA_EXCEEDED = "quota_exceeded",
17
+ VOICE_NOT_FOUND = "voice_not_found",
18
+ ONLY_FOR_CREATOR_PLUS = "only_for_creator+",
19
+ TOO_MANY_CONCURRENT_REQUESTS = "too_many_concurrent_requests",
20
+ SYSTEM_BUSY = "system_busy",
21
+ UNKNOWN = "unknown"
22
+ }
23
+ /**
24
+ * Error type categories for easier handling
25
+ */
26
+ export declare enum ElevenLabsErrorType {
27
+ AUTHENTICATION = "authentication",
28
+ PERMISSION = "permission",
29
+ QUOTA = "quota",
30
+ RATE_LIMIT = "rate_limit",
31
+ VALIDATION = "validation",
32
+ NETWORK = "network",
33
+ UNKNOWN = "unknown"
34
+ }
35
+ /**
36
+ * Detailed error information with user-friendly messages and solutions
37
+ */
38
+ export interface ElevenLabsErrorInfo {
39
+ code: ElevenLabsErrorCode;
40
+ type: ElevenLabsErrorType;
41
+ httpStatus: number;
42
+ message: string;
43
+ solution: string;
44
+ documentationUrl?: string;
45
+ }
46
+ /**
47
+ * Map of error codes to detailed error information
48
+ */
49
+ export declare const ELEVENLABS_ERROR_MAP: Record<ElevenLabsErrorCode, ElevenLabsErrorInfo>;
50
+ /**
51
+ * Parse ElevenLabs API error response and return detailed error information
52
+ */
53
+ export declare function parseElevenLabsError(statusCode: number, responseBody: string): ElevenLabsErrorInfo;
54
+ /**
55
+ * Format error information into a user-friendly message
56
+ */
57
+ export declare function formatElevenLabsError(errorInfo: ElevenLabsErrorInfo): string;
58
+ /**
59
+ * Check if an error is retryable (rate limit errors)
60
+ */
61
+ export declare function isRetryableError(errorInfo: ElevenLabsErrorInfo): boolean;
62
+ /**
63
+ * Get recommended retry delay in milliseconds for retryable errors
64
+ */
65
+ export declare function getRetryDelay(errorInfo: ElevenLabsErrorInfo, attemptNumber: number): number;
@@ -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":"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"}
@@ -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
+ }