@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
@@ -7,6 +7,7 @@ import { aboutCommand } from '../ui/commands/aboutCommand.js';
7
7
  import { agentsCommand } from '../ui/commands/agentsCommand.js';
8
8
  import { approvalModeCommand } from '../ui/commands/approvalModeCommand.js';
9
9
  import { authCommand } from '../ui/commands/authCommand.js';
10
+ import { browseExtensionsCommand } from '../ui/commands/browseExtensionsCommand.js';
10
11
  import { bugCommand } from '../ui/commands/bugCommand.js';
11
12
  import { chatCommand } from '../ui/commands/chatCommand.js';
12
13
  import { clearCommand } from '../ui/commands/clearCommand.js';
@@ -18,7 +19,6 @@ import { directoryCommand } from '../ui/commands/directoryCommand.js';
18
19
  import { editorCommand } from '../ui/commands/editorCommand.js';
19
20
  import { extensionsCommand } from '../ui/commands/extensionsCommand.js';
20
21
  import { helpCommand } from '../ui/commands/helpCommand.js';
21
- import { ideCommand } from '../ui/commands/ideCommand.js';
22
22
  import { initCommand } from '../ui/commands/initCommand.js';
23
23
  import { mcpCommand } from '../ui/commands/mcpCommand.js';
24
24
  import { memoryCommand } from '../ui/commands/memoryCommand.js';
@@ -34,6 +34,15 @@ import { themeCommand } from '../ui/commands/themeCommand.js';
34
34
  import { toolsCommand } from '../ui/commands/toolsCommand.js';
35
35
  import { vimCommand } from '../ui/commands/vimCommand.js';
36
36
  import { setupGithubCommand } from '../ui/commands/setupGithubCommand.js';
37
+ import { dbCommand } from '../ui/commands/dbCommand.js';
38
+ import { voiceCommand } from '../ui/commands/voiceCommand.js';
39
+ import { multiAgentCommand } from '../ui/commands/multiAgentCommand.js';
40
+ import { multiAgentConfigureCommand } from '../ui/commands/multiAgentConfigureCommand.js';
41
+ import { shellPermissionsCommand } from '../ui/commands/shellPermissionsCommand.js';
42
+ import { toolPermissionsCommand } from '../ui/commands/toolPermissionsCommand.js';
43
+ import { skillCommand } from '../ui/commands/skillCommand.js';
44
+ import { releasesCommand } from '../ui/commands/releasesCommand.js';
45
+ import { tasksCommand } from '../ui/commands/tasksCommand.js';
37
46
  /**
38
47
  * Loads the core, hard-coded slash commands that are an integral part
39
48
  * of the Gemini CLI application.
@@ -56,6 +65,7 @@ export class BuiltinCommandLoader {
56
65
  agentsCommand,
57
66
  approvalModeCommand,
58
67
  authCommand,
68
+ browseExtensionsCommand,
59
69
  bugCommand,
60
70
  chatCommand,
61
71
  clearCommand,
@@ -67,11 +77,12 @@ export class BuiltinCommandLoader {
67
77
  editorCommand,
68
78
  extensionsCommand,
69
79
  helpCommand,
70
- ideCommand(this.config),
71
80
  initCommand,
72
81
  mcpCommand,
73
82
  memoryCommand,
74
83
  modelCommand,
84
+ multiAgentCommand,
85
+ multiAgentConfigureCommand,
75
86
  privacyCommand,
76
87
  quitCommand,
77
88
  quitConfirmCommand,
@@ -81,9 +92,16 @@ export class BuiltinCommandLoader {
81
92
  themeCommand,
82
93
  toolsCommand,
83
94
  settingsCommand,
95
+ shellPermissionsCommand,
96
+ toolPermissionsCommand,
97
+ skillCommand,
98
+ releasesCommand,
84
99
  vimCommand,
85
100
  setupGithubCommand,
86
101
  terminalSetupCommand,
102
+ voiceCommand,
103
+ dbCommand,
104
+ tasksCommand,
87
105
  ];
88
106
  return allDefinitions.filter((cmd) => cmd !== null);
89
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { CountTokensParameters, CountTokensResponse, EmbedContentParameters, EmbedContentResponse, GenerateContentParameters } from '@google/genai';
7
+ import { GenerateContentResponse } from '@google/genai';
8
+ import type { ContentGenerator, UserTierId } from '@blackbox_ai/blackbox-cli-core';
9
+ /**
10
+ * EncryptedContentGenerator implements the ContentGenerator interface
11
+ * but routes requests through the BlackboxAI encryption system instead of OpenAI API
12
+ */
13
+ export declare class EncryptedContentGenerator implements ContentGenerator {
14
+ private encryptedService;
15
+ private initialized;
16
+ constructor(_sessionId?: string);
17
+ /**
18
+ * Initialize the encrypted service
19
+ */
20
+ private ensureInitialized;
21
+ /**
22
+ * Extract tools from request and format them for system prompt
23
+ */
24
+ private extractAndFormatTools;
25
+ /**
26
+ * Convert Content[] to message history format expected by EncryptedChatService
27
+ */
28
+ private convertToMessageHistory;
29
+ /**
30
+ * Convert Parts to text content
31
+ */
32
+ private convertPartsToText;
33
+ /**
34
+ * Extract Content objects from the mixed content array
35
+ */
36
+ private extractContentArray;
37
+ /**
38
+ * Parse tool calls from encrypted response text using enhanced parser
39
+ */
40
+ private parseToolCallsFromResponse;
41
+ /**
42
+ * Detect model type from response format
43
+ */
44
+ private detectModelType;
45
+ /**
46
+ * Remove tool call markup from response text to get clean text content
47
+ */
48
+ private removeToolCallMarkup;
49
+ /**
50
+ * Extract tools from request for validation
51
+ */
52
+ private extractToolsFromRequest;
53
+ /**
54
+ * Create a fallback response for errors
55
+ */
56
+ private createFallbackResponse;
57
+ generateContent(request: GenerateContentParameters, _userPromptId: string): Promise<GenerateContentResponse>;
58
+ generateContentStream(request: GenerateContentParameters, _userPromptId: string): Promise<AsyncGenerator<GenerateContentResponse>>;
59
+ private generateContentStreamInternal;
60
+ countTokens(request: CountTokensParameters): Promise<CountTokensResponse>;
61
+ embedContent(request: EmbedContentParameters): Promise<EmbedContentResponse>;
62
+ userTier?: UserTierId;
63
+ }
@@ -0,0 +1,426 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { GenerateContentResponse } from '@google/genai';
7
+ import { EncryptedChatService, createEncryptedToolParser, formatToolsForSystemPrompt } from '@blackbox_ai/blackbox-cli-core';
8
+ /**
9
+ * EncryptedContentGenerator implements the ContentGenerator interface
10
+ * but routes requests through the BlackboxAI encryption system instead of OpenAI API
11
+ */
12
+ export class EncryptedContentGenerator {
13
+ encryptedService;
14
+ initialized = false;
15
+ constructor(_sessionId) {
16
+ this.encryptedService = new EncryptedChatService();
17
+ }
18
+ /**
19
+ * Initialize the encrypted service
20
+ */
21
+ async ensureInitialized() {
22
+ if (!this.initialized) {
23
+ try {
24
+ await this.encryptedService.initialize();
25
+ this.initialized = true;
26
+ }
27
+ catch (error) {
28
+ console.warn('⚠️ Failed to initialize encrypted service:', error);
29
+ // Don't throw here, let individual methods handle fallback
30
+ }
31
+ }
32
+ }
33
+ /**
34
+ * Extract tools from request and format them for system prompt
35
+ */
36
+ extractAndFormatTools(request) {
37
+ const tools = [];
38
+ // Extract tools from request.config.tools
39
+ if (request.config?.tools) {
40
+ for (const toolGroup of request.config.tools) {
41
+ // Handle different tool types - check if it has functionDeclarations
42
+ if ('functionDeclarations' in toolGroup && toolGroup.functionDeclarations) {
43
+ tools.push(...toolGroup.functionDeclarations);
44
+ }
45
+ }
46
+ }
47
+ if (tools.length === 0) {
48
+ return '';
49
+ }
50
+ // Use the tool formatter to create system prompt addition
51
+ // Default to 'DeepSeek' format, but could be made configurable
52
+ return formatToolsForSystemPrompt(tools, 'deepseek');
53
+ }
54
+ /**
55
+ * Convert Content[] to message history format expected by EncryptedChatService
56
+ */
57
+ convertToMessageHistory(contents, toolsSystemPrompt = '') {
58
+ const messages = contents.map(content => {
59
+ // Extract text from parts
60
+ const textParts = content.parts?.filter((part) => typeof part === 'object' && part !== null && 'text' in part) || [];
61
+ const text = textParts.map(part => part.text).join('\n');
62
+ // Map roles
63
+ const role = content.role === 'model' ? 'assistant' : content.role;
64
+ return { role, content: text };
65
+ });
66
+ // Add tools to system prompt if we have tools and a system message
67
+ if (toolsSystemPrompt && messages.length > 0 && messages[0].role === 'system') {
68
+ messages[0].content += toolsSystemPrompt;
69
+ }
70
+ else if (toolsSystemPrompt && (messages.length === 0 || messages[0].role !== 'system')) {
71
+ // Insert system message with tools at the beginning
72
+ messages.unshift({
73
+ role: 'system',
74
+ content: `You are a helpful AI assistant.${toolsSystemPrompt}`
75
+ });
76
+ }
77
+ return messages;
78
+ }
79
+ /**
80
+ * Convert Parts to text content
81
+ */
82
+ convertPartsToText(parts) {
83
+ return parts
84
+ .filter((part) => typeof part === 'object' && part !== null && 'text' in part)
85
+ .map(part => part.text)
86
+ .join('\n');
87
+ }
88
+ /**
89
+ * Extract Content objects from the mixed content array
90
+ */
91
+ extractContentArray(contents) {
92
+ if (Array.isArray(contents)) {
93
+ return contents.filter((item) => typeof item === 'object' && item !== null && 'parts' in item);
94
+ }
95
+ else if (typeof contents === 'object' && contents !== null && 'parts' in contents) {
96
+ return [contents];
97
+ }
98
+ return [];
99
+ }
100
+ /**
101
+ * Parse tool calls from encrypted response text using enhanced parser
102
+ */
103
+ parseToolCallsFromResponse(text, tools) {
104
+ // Try to detect model type from response format
105
+ const modelType = this.detectModelType(text);
106
+ // Use the enhanced tool parser
107
+ const parser = createEncryptedToolParser();
108
+ const parseResult = parser.parseComplete(text, tools, modelType);
109
+ if (!parseResult.success) {
110
+ console.error('❌ Tool parsing failed:', parseResult.error);
111
+ console.error('❌ Failed text:', text.substring(0, 500));
112
+ // Return empty array if parsing fails
113
+ return [];
114
+ }
115
+ const functionCalls = parseResult.toolCalls.map((tc, index) => {
116
+ const functionCall = {
117
+ name: tc.name,
118
+ args: tc.arguments,
119
+ id: tc.id || `call_${Date.now()}_${index}`
120
+ };
121
+ return functionCall;
122
+ });
123
+ return functionCalls;
124
+ }
125
+ /**
126
+ * Detect model type from response format
127
+ */
128
+ detectModelType(text) {
129
+ // Check for DeepSeek format tokens
130
+ if (text.includes('<|tool▁calls▁begin|>') || text.includes('<|tool▁call▁begin|>')) {
131
+ return 'deepseek';
132
+ }
133
+ // Default to DeepSeek format
134
+ return 'deepseek';
135
+ }
136
+ /**
137
+ * Remove tool call markup from response text to get clean text content
138
+ */
139
+ removeToolCallMarkup(text) {
140
+ let cleanText = text;
141
+ // Remove Qwen format tool calls
142
+ cleanText = cleanText.replace(/<tool_call>\s*[\s\S]*?\s*<\/tool_call>/g, '');
143
+ // Remove DeepSeek format tool calls - full block format
144
+ cleanText = cleanText.replace(/<|tool▁calls▁begin|>[\s\S]*?<|tool▁calls▁end|>/g, '');
145
+ // Remove DeepSeek format tool calls - individual tool call format with full structure
146
+ // Pattern: <|tool▁call▁begin|>toolname<|tool▁sep|>{"args"}<|tool▁call▁end|>
147
+ cleanText = cleanText.replace(/<|tool▁call▁begin|>[a-zA-Z_][a-zA-Z0-9_]*<|tool▁sep|>[\s\S]*?<|tool▁call▁end|>/g, '');
148
+ // Remove DeepSeek format tool calls - incomplete format (missing begin tokens)
149
+ // Pattern: toolname<|tool▁sep|>{"args"}<|tool▁call▁end|><|tool▁calls▁end|>
150
+ cleanText = cleanText.replace(/[a-zA-Z_][a-zA-Z0-9_]*<|tool▁sep|>[\s\S]*?<|tool▁call▁end|><|tool▁calls▁end|>/g, '');
151
+ // Remove DeepSeek format tool calls - simple individual format
152
+ // Pattern: toolname<|tool▁sep|>{"args"}<|tool▁call▁end|>
153
+ cleanText = cleanText.replace(/[a-zA-Z_][a-zA-Z0-9_]*<|tool▁sep|>[\s\S]*?<|tool▁call▁end|>/g, '');
154
+ // CRITICAL FIX: Remove standalone end tokens that might appear at the end of responses
155
+ // This handles cases where the model outputs text followed by a standalone end token
156
+ cleanText = cleanText.replace(/<|tool▁calls▁end|>\s*$/g, '');
157
+ cleanText = cleanText.replace(/<|tool▁call▁end|>\s*$/g, '');
158
+ // Remove any remaining DeepSeek tool markers (cleanup pass)
159
+ cleanText = cleanText.replace(/<|tool▁call▁begin|>/g, '');
160
+ cleanText = cleanText.replace(/<|tool▁call▁end|>/g, '');
161
+ cleanText = cleanText.replace(/<|tool▁sep|>/g, '');
162
+ cleanText = cleanText.replace(/<|tool▁calls▁begin|>/g, '');
163
+ cleanText = cleanText.replace(/<|tool▁calls▁end|>/g, '');
164
+ // Clean up extra whitespace and empty lines
165
+ cleanText = cleanText.replace(/\n\s*\n\s*\n/g, '\n\n');
166
+ cleanText = cleanText.replace(/^\s+|\s+$/g, ''); // trim start and end
167
+ return cleanText;
168
+ }
169
+ /**
170
+ * Extract tools from request for validation
171
+ */
172
+ extractToolsFromRequest(request) {
173
+ const tools = [];
174
+ // Extract tools from request.config.tools
175
+ if (request.config?.tools) {
176
+ for (const toolGroup of request.config.tools) {
177
+ // Handle different tool types - check if it has functionDeclarations
178
+ if ('functionDeclarations' in toolGroup && toolGroup.functionDeclarations) {
179
+ tools.push(...toolGroup.functionDeclarations);
180
+ }
181
+ }
182
+ }
183
+ return tools;
184
+ }
185
+ /**
186
+ * Create a fallback response for errors
187
+ */
188
+ createFallbackResponse(userMessage, error) {
189
+ const fallbackText = `🔒 **ENCRYPTED RESPONSE (Error Recovery)**
190
+
191
+ Your message: "${userMessage}"
192
+
193
+ I encountered an issue while processing your request through the encrypted channel, but I'm providing a secure fallback response.
194
+
195
+ **Error Details:**
196
+ - Error: ${error.message}
197
+ - Encryption Status: Maintained
198
+ - Session: Secure
199
+
200
+ **Available Tools:**
201
+ I have access to various tools including file operations, search capabilities, and system commands. Please try your request again, and I'll attempt to process it through the encrypted channel.
202
+
203
+ How can I help you today?`;
204
+ const response = new GenerateContentResponse();
205
+ response.candidates = [{
206
+ content: {
207
+ role: 'model',
208
+ parts: [{ text: fallbackText }]
209
+ },
210
+ finishReason: 'STOP',
211
+ index: 0,
212
+ safetyRatings: []
213
+ }];
214
+ response.usageMetadata = {
215
+ promptTokenCount: userMessage.length / 4,
216
+ candidatesTokenCount: fallbackText.length / 4,
217
+ totalTokenCount: (userMessage.length + fallbackText.length) / 4
218
+ };
219
+ response.modelVersion = 'blackboxai/encrypted-fallback';
220
+ response.promptFeedback = { safetyRatings: [] };
221
+ return response;
222
+ }
223
+ async generateContent(request, _userPromptId) {
224
+ await this.ensureInitialized();
225
+ try {
226
+ // Extract and format tools for system prompt
227
+ const toolsSystemPrompt = this.extractAndFormatTools(request);
228
+ // Extract content array from request
229
+ const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
230
+ const contentsArray = this.extractContentArray(contents);
231
+ // Convert to message history format with tools in system prompt
232
+ const messageHistory = this.convertToMessageHistory(contentsArray, toolsSystemPrompt);
233
+ // Get the last user message
234
+ const lastContent = contentsArray[contentsArray.length - 1];
235
+ const userMessage = lastContent ? this.convertPartsToText(lastContent.parts || []) : 'Unknown message';
236
+ // DEBUG: Log tool information
237
+ const tools = this.extractToolsFromRequest(request);
238
+ // Send through encrypted service
239
+ const encryptedStream = await this.encryptedService.sendMessage(userMessage, messageHistory);
240
+ // Read the entire stream to get the complete response
241
+ const reader = encryptedStream.getReader();
242
+ const decoder = new TextDecoder();
243
+ let encryptedResponse = '';
244
+ try {
245
+ while (true) {
246
+ const { done, value } = await reader.read();
247
+ if (done)
248
+ break;
249
+ encryptedResponse += decoder.decode(value, { stream: true });
250
+ }
251
+ }
252
+ finally {
253
+ reader.releaseLock();
254
+ }
255
+ // Parse tool calls from response if any
256
+ const toolCalls = this.parseToolCallsFromResponse(encryptedResponse, tools);
257
+ // Create response with tool calls if found
258
+ const response = new GenerateContentResponse();
259
+ // CRITICAL FIX: Separate text content from tool calls
260
+ // Remove tool call markup from the text response
261
+ const cleanTextResponse = this.removeToolCallMarkup(encryptedResponse);
262
+ const responseParts = [];
263
+ // Add clean text response if there's meaningful content
264
+ if (cleanTextResponse.trim()) {
265
+ responseParts.push({ text: cleanTextResponse });
266
+ }
267
+ // Add function calls if detected - CRITICAL: These must be separate parts
268
+ if (toolCalls.length > 0) {
269
+ for (const toolCall of toolCalls) {
270
+ responseParts.push({
271
+ functionCall: toolCall
272
+ });
273
+ }
274
+ }
275
+ response.candidates = [{
276
+ content: {
277
+ role: 'model',
278
+ parts: responseParts
279
+ },
280
+ finishReason: 'STOP',
281
+ index: 0,
282
+ safetyRatings: []
283
+ }];
284
+ response.usageMetadata = {
285
+ promptTokenCount: userMessage.length / 4,
286
+ candidatesTokenCount: encryptedResponse.length / 4,
287
+ totalTokenCount: (userMessage.length + encryptedResponse.length) / 4
288
+ };
289
+ response.modelVersion = 'blackboxai/encrypted';
290
+ response.promptFeedback = { safetyRatings: [] };
291
+ return response;
292
+ }
293
+ catch (error) {
294
+ console.error('❌ EncryptedContentGenerator.generateContent failed:', error);
295
+ // Extract user message for fallback
296
+ const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
297
+ const contentsArray = this.extractContentArray(contents);
298
+ const lastContent = contentsArray[contentsArray.length - 1];
299
+ const userMessage = lastContent ? this.convertPartsToText(lastContent.parts || []) : 'Unknown message';
300
+ return this.createFallbackResponse(userMessage, error);
301
+ }
302
+ }
303
+ async generateContentStream(request, _userPromptId) {
304
+ return this.generateContentStreamInternal(request, _userPromptId);
305
+ }
306
+ async *generateContentStreamInternal(request, _userPromptId) {
307
+ await this.ensureInitialized();
308
+ try {
309
+ // Extract and format tools for system prompt
310
+ const toolsSystemPrompt = this.extractAndFormatTools(request);
311
+ // Extract content array from request
312
+ const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
313
+ const contentsArray = this.extractContentArray(contents);
314
+ // Convert to message history format with tools in system prompt
315
+ const messageHistory = this.convertToMessageHistory(contentsArray, toolsSystemPrompt);
316
+ // Get the last user message
317
+ const lastContent = contentsArray[contentsArray.length - 1];
318
+ const userMessage = lastContent ? this.convertPartsToText(lastContent.parts || []) : 'Unknown message';
319
+ // DEBUG: Log tool information for streaming
320
+ const tools = this.extractToolsFromRequest(request);
321
+ // Send through encrypted service and get stream
322
+ const encryptedStream = await this.encryptedService.sendMessage(userMessage, messageHistory);
323
+ // Process the stream
324
+ const reader = encryptedStream.getReader();
325
+ const decoder = new TextDecoder();
326
+ let accumulatedText = '';
327
+ let toolCallsDetected = false;
328
+ try {
329
+ while (true) {
330
+ const { done, value } = await reader.read();
331
+ if (done)
332
+ break;
333
+ const chunk = decoder.decode(value, { stream: true });
334
+ accumulatedText += chunk;
335
+ // Check if we have complete tool calls in accumulated text
336
+ const toolCalls = this.parseToolCallsFromResponse(accumulatedText, tools);
337
+ // Only yield the new chunk, not the accumulated text
338
+ if (chunk.trim()) {
339
+ // Create streaming response
340
+ const streamResponse = new GenerateContentResponse();
341
+ // CRITICAL FIX: Handle tool calls properly in streaming
342
+ const responseParts = [];
343
+ // If we haven't detected tool calls yet, include the chunk as text
344
+ if (toolCalls.length === 0) {
345
+ responseParts.push({ text: chunk });
346
+ }
347
+ else if (!toolCallsDetected) {
348
+ // First time detecting tool calls - send clean text and tool calls
349
+ toolCallsDetected = true;
350
+ const cleanTextResponse = this.removeToolCallMarkup(accumulatedText);
351
+ if (cleanTextResponse.trim()) {
352
+ responseParts.push({ text: cleanTextResponse });
353
+ }
354
+ // Add all detected tool calls
355
+ for (const toolCall of toolCalls) {
356
+ responseParts.push({
357
+ functionCall: toolCall
358
+ });
359
+ }
360
+ }
361
+ // If tool calls were already detected, don't send more chunks
362
+ if (responseParts.length > 0) {
363
+ streamResponse.candidates = [{
364
+ content: {
365
+ role: 'model',
366
+ parts: responseParts
367
+ },
368
+ finishReason: 'STOP',
369
+ index: 0,
370
+ safetyRatings: []
371
+ }];
372
+ streamResponse.usageMetadata = {
373
+ promptTokenCount: userMessage.length / 4,
374
+ candidatesTokenCount: chunk.length / 4,
375
+ totalTokenCount: (userMessage.length + chunk.length) / 4
376
+ };
377
+ streamResponse.modelVersion = 'blackboxai/encrypted';
378
+ streamResponse.promptFeedback = { safetyRatings: [] };
379
+ yield streamResponse;
380
+ }
381
+ }
382
+ }
383
+ }
384
+ finally {
385
+ reader.releaseLock();
386
+ }
387
+ }
388
+ catch (error) {
389
+ console.error('❌ EncryptedContentGenerator.generateContentStream failed:', error);
390
+ // Extract user message for fallback
391
+ const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
392
+ const contentsArray = this.extractContentArray(contents);
393
+ const lastContent = contentsArray[contentsArray.length - 1];
394
+ const userMessage = lastContent ? this.convertPartsToText(lastContent.parts || []) : 'Unknown message';
395
+ yield this.createFallbackResponse(userMessage, error);
396
+ }
397
+ }
398
+ async countTokens(request) {
399
+ // Simple token estimation for encrypted content
400
+ // In a real implementation, you might want to use a more sophisticated tokenizer
401
+ const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
402
+ const contentsArray = this.extractContentArray(contents);
403
+ let totalTokens = 0;
404
+ for (const content of contentsArray) {
405
+ const text = this.convertPartsToText(content.parts || []);
406
+ // Rough estimation: 1 token ≈ 4 characters
407
+ totalTokens += Math.ceil(text.length / 4);
408
+ }
409
+ return {
410
+ totalTokens
411
+ };
412
+ }
413
+ async embedContent(request) {
414
+ // Embedding is not supported for encrypted content
415
+ // Return empty embeddings
416
+ const contents = Array.isArray(request.contents) ? request.contents : [request.contents];
417
+ return {
418
+ embeddings: contents.map(() => ({
419
+ values: [] // Empty embedding
420
+ }))
421
+ };
422
+ }
423
+ // Optional userTier property
424
+ userTier;
425
+ }
426
+ //# sourceMappingURL=EncryptedContentGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncryptedContentGenerator.js","sourceRoot":"","sources":["../../../src/services/EncryptedContentGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { ICommandLoader } from './types.js';
7
+ import type { SlashCommand } from '../ui/commands/types.js';
8
+ import type { Config } from '@blackbox_ai/blackbox-cli-core';
9
+ /**
10
+ * Dynamically loads commands for MCP servers.
11
+ * Creates a command for each configured MCP server that can be invoked via & prefix.
12
+ */
13
+ export declare class McpCommandLoader implements ICommandLoader {
14
+ private config;
15
+ constructor(config: Config | null);
16
+ /**
17
+ * Loads commands for all configured MCP servers.
18
+ * Each server gets its own command that can be invoked via &<server-name>
19
+ *
20
+ * @param _signal An AbortSignal (unused for this synchronous loader).
21
+ * @returns A promise that resolves to an array of `SlashCommand` objects.
22
+ */
23
+ loadCommands(_signal: AbortSignal): Promise<SlashCommand[]>;
24
+ }