@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
@@ -5,14 +5,90 @@
5
5
  */
6
6
  import { installExtension, } from '../../config/extension.js';
7
7
  import { getErrorMessage } from '../../utils/errors.js';
8
+ import * as fs from 'node:fs';
9
+ import * as path from 'node:path';
10
+ import { fileURLToPath } from 'node:url';
11
+ function getOnDemandExtensionsPath() {
12
+ const currentModuleDir = path.dirname(fileURLToPath(import.meta.url));
13
+ const possiblePaths = [
14
+ // Installed package: relative to bundle directory
15
+ path.join(currentModuleDir, 'on-demand-extensions'),
16
+ // Development environment: relative to src directory
17
+ path.join(currentModuleDir, '..', '..', 'on-demand-extensions'),
18
+ // Alternative bundle location
19
+ path.join(currentModuleDir, '..', 'on-demand-extensions'),
20
+ ];
21
+ for (const possiblePath of possiblePaths) {
22
+ if (fs.existsSync(possiblePath)) {
23
+ return possiblePath;
24
+ }
25
+ }
26
+ // Fallback to the first path if none exist (will be handled by loadExtensionRegistry)
27
+ return possiblePaths[0];
28
+ }
29
+ function loadExtensionRegistry() {
30
+ const registryPath = path.join(getOnDemandExtensionsPath(), 'registry.json');
31
+ if (!fs.existsSync(registryPath)) {
32
+ return { extensions: [] };
33
+ }
34
+ const registryContent = fs.readFileSync(registryPath, 'utf-8');
35
+ return JSON.parse(registryContent);
36
+ }
8
37
  export async function handleInstall(args) {
9
38
  try {
39
+ if (args.consent) {
40
+ console.log('You have consented to the following:');
41
+ console.log('⚠️ Extensions can execute arbitrary code and access your files.');
42
+ console.log(' Only install extensions from sources you trust.');
43
+ }
44
+ let source = args.source;
45
+ // Handle --from-registry flag
46
+ if (args.fromRegistry) {
47
+ const registry = loadExtensionRegistry();
48
+ const extension = registry.extensions.find(e => e.name === args.source);
49
+ if (!extension) {
50
+ console.error(`Extension "${args.source}" not found in registry.`);
51
+ console.log('\nAvailable extensions:');
52
+ registry.extensions.forEach(ext => {
53
+ console.log(` - ${ext.name} (${ext.description})`);
54
+ });
55
+ process.exit(1);
56
+ }
57
+ console.log(`Installing "${extension.name}" (v${extension.version}) from registry...`);
58
+ console.log(`Description: ${extension.description}`);
59
+ if (extension.gitUrl) {
60
+ // Git-based extension
61
+ source = extension.gitUrl;
62
+ }
63
+ else if (extension.path) {
64
+ // Local extension
65
+ source = path.join(getOnDemandExtensionsPath(), extension.path);
66
+ if (!fs.existsSync(source)) {
67
+ console.error(`Extension source not found at: ${source}`);
68
+ process.exit(1);
69
+ }
70
+ }
71
+ else {
72
+ console.error(`Invalid extension configuration: missing both gitUrl and path`);
73
+ process.exit(1);
74
+ }
75
+ }
10
76
  const installMetadata = {
11
- source: (args.source || args.path),
12
- type: args.source ? 'git' : 'local',
77
+ source,
78
+ type: source.startsWith('http') || source.includes('.git') ? 'git' : 'blackbox',
79
+ ref: args.ref,
80
+ autoUpdate: args.autoUpdate,
81
+ allowPreRelease: args.preRelease,
13
82
  };
14
83
  const extensionName = await installExtension(installMetadata);
15
84
  console.log(`Extension "${extensionName}" installed successfully and enabled.`);
85
+ if (args.autoUpdate) {
86
+ console.log('Auto-update has been enabled for this extension.');
87
+ }
88
+ if (args.preRelease) {
89
+ console.log('Pre-release versions are enabled for this extension.');
90
+ }
91
+ console.log('\n✨ Restart the CLI to use the new extension.');
16
92
  }
17
93
  catch (error) {
18
94
  console.error(getErrorMessage(error));
@@ -20,28 +96,46 @@ export async function handleInstall(args) {
20
96
  }
21
97
  }
22
98
  export const installCommand = {
23
- command: 'install [--source | --path ]',
24
- describe: 'Installs an extension from a git repository or a local path.',
99
+ command: 'install <source> [--ref <ref>] [--auto-update] [--pre-release] [--consent] [--from-registry]',
100
+ describe: 'Installs an extension from a git repository, local path, or the on-demand registry.',
25
101
  builder: (yargs) => yargs
26
- .option('source', {
27
- describe: 'The git URL of the extension to install.',
102
+ .positional('source', {
103
+ describe: 'The github URL, local path, or extension name (with --from-registry) to install.',
28
104
  type: 'string',
105
+ demandOption: true,
106
+ })
107
+ .option('from-registry', {
108
+ describe: 'Install from the on-demand extensions registry using the extension name.',
109
+ type: 'boolean',
110
+ default: false,
29
111
  })
30
- .option('path', {
31
- describe: 'Path to a local extension directory.',
112
+ .option('ref', {
113
+ describe: 'The git ref to install from.',
32
114
  type: 'string',
33
115
  })
34
- .conflicts('source', 'path')
35
- .check((argv) => {
36
- if (!argv.source && !argv.path) {
37
- throw new Error('Either a git URL --source or a --path must be provided.');
38
- }
39
- return true;
116
+ .option('auto-update', {
117
+ describe: 'Enable auto-update for this extension.',
118
+ type: 'boolean',
119
+ default: false,
120
+ })
121
+ .option('pre-release', {
122
+ describe: 'Enable pre-release versions for this extension.',
123
+ type: 'boolean',
124
+ default: false,
125
+ })
126
+ .option('consent', {
127
+ describe: 'Acknowledge the security risks of installing an extension and skip the confirmation prompt.',
128
+ type: 'boolean',
129
+ default: false,
40
130
  }),
41
131
  handler: async (argv) => {
42
132
  await handleInstall({
43
133
  source: argv['source'],
44
- path: argv['path'],
134
+ fromRegistry: argv['from-registry'],
135
+ ref: argv['ref'],
136
+ autoUpdate: argv['auto-update'],
137
+ preRelease: argv['pre-release'],
138
+ consent: argv['consent'],
45
139
  });
46
140
  },
47
141
  };
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../../src/commands/extensions/install.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,gBAAgB,GAEjB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAOxD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAiB;IACnD,IAAI,CAAC;QACH,MAAM,eAAe,GAA6B;YAChD,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAW;YAC5C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;SACpC,CAAC;QACF,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CACT,cAAc,aAAa,uCAAuC,CACnE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,OAAO,EAAE,8BAA8B;IACvC,QAAQ,EAAE,8DAA8D;IACxE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,MAAM,CAAC,QAAQ,EAAE;QAChB,QAAQ,EAAE,0CAA0C;QACpD,IAAI,EAAE,QAAQ;KACf,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,QAAQ,EAAE,sCAAsC;QAChD,IAAI,EAAE,QAAQ;KACf,CAAC;SACD,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;SAC3B,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACN,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,aAAa,CAAC;YAClB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAuB;YAC5C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAuB;SACzC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../../src/commands/extensions/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { CommandModule } from 'yargs';
7
+ interface LinkArgs {
8
+ path: string;
9
+ }
10
+ export declare function handleLink(args: LinkArgs): Promise<void>;
11
+ export declare const linkCommand: CommandModule;
12
+ export {};
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { installExtension } from '../../config/extension.js';
7
+ import { getErrorMessage } from '../../utils/errors.js';
8
+ import * as fs from 'node:fs';
9
+ import * as path from 'node:path';
10
+ export async function handleLink(args) {
11
+ try {
12
+ const absolutePath = path.resolve(args.path);
13
+ // Verify the path exists and is a directory
14
+ if (!fs.existsSync(absolutePath)) {
15
+ throw new Error(`Path does not exist: ${absolutePath}`);
16
+ }
17
+ if (!fs.statSync(absolutePath).isDirectory()) {
18
+ throw new Error(`Path is not a directory: ${absolutePath}`);
19
+ }
20
+ // Verify it has a blackbox-extension.json file
21
+ const configPath = path.join(absolutePath, 'blackbox-extension.json');
22
+ if (!fs.existsSync(configPath)) {
23
+ throw new Error(`No blackbox-extension.json found in: ${absolutePath}`);
24
+ }
25
+ const installMetadata = {
26
+ source: absolutePath,
27
+ type: 'blackbox',
28
+ };
29
+ const extensionName = await installExtension(installMetadata);
30
+ console.log(`Extension "${extensionName}" linked successfully from ${absolutePath}.`);
31
+ console.log('Note: Changes to the source directory will be reflected immediately.');
32
+ }
33
+ catch (error) {
34
+ console.error(getErrorMessage(error));
35
+ process.exit(1);
36
+ }
37
+ }
38
+ export const linkCommand = {
39
+ command: 'link <path>',
40
+ describe: 'Create a symbolic link from the extension installation directory to the development path.',
41
+ builder: (yargs) => yargs
42
+ .positional('path', {
43
+ describe: 'The path of the extension to link.',
44
+ type: 'string',
45
+ demandOption: true,
46
+ }),
47
+ handler: async (argv) => {
48
+ await handleLink({
49
+ path: argv['path'],
50
+ });
51
+ },
52
+ };
53
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../../src/commands/extensions/link.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAiC,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAMlC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,4CAA4C;QAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,+CAA+C;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;QACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,eAAe,GAA6B;YAChD,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,cAAc,aAAa,8BAA8B,YAAY,GAAG,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,2FAA2F;IACrG,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,oCAAoC;QAC9C,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB,CAAC;IACN,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,UAAU,CAAC;YACf,IAAI,EAAE,IAAI,CAAC,MAAM,CAAW;SAC7B,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -3,11 +3,11 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { loadUserExtensions, toOutputString } from '../../config/extension.js';
6
+ import { loadExtensions, toOutputString } from '../../config/extension.js';
7
7
  import { getErrorMessage } from '../../utils/errors.js';
8
8
  export async function handleList() {
9
9
  try {
10
- const extensions = loadUserExtensions();
10
+ const extensions = loadExtensions(process.cwd());
11
11
  if (extensions.length === 0) {
12
12
  console.log('No extensions installed.');
13
13
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/extensions/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACxC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CACT,UAAU;aACP,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAU,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aACxD,IAAI,CAAC,MAAM,CAAC,CAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,6BAA6B;IACvC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACzB,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,UAAU,EAAE,CAAC;IACrB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/extensions/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CACT,UAAU;aACP,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAU,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aACxD,IAAI,CAAC,MAAM,CAAC,CAChB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,6BAA6B;IACvC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACzB,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,UAAU,EAAE,CAAC;IACrB,CAAC;CACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { CommandModule } from 'yargs';
7
+ interface NewArgs {
8
+ path: string;
9
+ template?: string;
10
+ }
11
+ export declare function handleNew(args: NewArgs): Promise<void>;
12
+ export declare const newCommand: CommandModule;
13
+ export {};
@@ -0,0 +1,145 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { getErrorMessage } from '../../utils/errors.js';
7
+ import * as fs from 'node:fs';
8
+ import * as path from 'node:path';
9
+ const TEMPLATES = {
10
+ context: {
11
+ name: 'context',
12
+ description: 'A simple extension that provides additional context',
13
+ files: {
14
+ 'blackbox-extension.json': {
15
+ name: 'example-context',
16
+ version: '1.0.0',
17
+ contextFileName: 'CONTEXT.md'
18
+ },
19
+ 'CONTEXT.md': `# Example Context Extension
20
+
21
+ This is an example context extension that provides additional context to Blackbox CLI.
22
+
23
+ ## Features
24
+
25
+ - Provides project-specific context
26
+ - Can include documentation, guidelines, or any relevant information
27
+ - Automatically loaded when the extension is active
28
+
29
+ ## Usage
30
+
31
+ This context will be automatically included when using Blackbox CLI in projects where this extension is enabled.
32
+ `
33
+ }
34
+ },
35
+ 'custom-commands': {
36
+ name: 'custom-commands',
37
+ description: 'An extension that provides custom slash commands',
38
+ files: {
39
+ 'blackbox-extension.json': {
40
+ name: 'example-custom-commands',
41
+ version: '1.0.0'
42
+ },
43
+ 'commands/deploy.toml': `prompt = """
44
+ Deploy the application to production. Please:
45
+
46
+ 1. Run tests to ensure everything is working
47
+ 2. Build the application for production
48
+ 3. Deploy using the appropriate deployment method
49
+ 4. Verify the deployment was successful
50
+
51
+ Use the following deployment command: !{npm run deploy}
52
+ """
53
+
54
+ description = "Deploy the application to production"
55
+ `
56
+ }
57
+ },
58
+ 'exclude-tools': {
59
+ name: 'exclude-tools',
60
+ description: 'An extension that excludes certain tools for security',
61
+ files: {
62
+ 'blackbox-extension.json': {
63
+ name: 'example-exclude-tools',
64
+ version: '1.0.0',
65
+ excludeTools: ['run_shell_command', 'edit_file']
66
+ },
67
+ 'README.md': `# Tool Exclusion Extension
68
+
69
+ This extension excludes certain tools from being used by Blackbox CLI for security purposes.
70
+
71
+ ## Excluded Tools
72
+
73
+ - \`run_shell_command\`: Prevents execution of shell commands
74
+ - \`edit_file\`: Prevents direct file editing
75
+
76
+ This is useful in environments where you want to restrict certain capabilities.
77
+ `
78
+ }
79
+ }
80
+ };
81
+ export async function handleNew(args) {
82
+ try {
83
+ const targetPath = path.resolve(args.path);
84
+ const template = args.template || 'context';
85
+ if (!TEMPLATES[template]) {
86
+ throw new Error(`Unknown template: ${template}. Available templates: ${Object.keys(TEMPLATES).join(', ')}`);
87
+ }
88
+ const templateConfig = TEMPLATES[template];
89
+ // Check if directory already exists
90
+ if (fs.existsSync(targetPath)) {
91
+ throw new Error(`Directory already exists: ${targetPath}`);
92
+ }
93
+ // Create the directory
94
+ await fs.promises.mkdir(targetPath, { recursive: true });
95
+ // Create all files from the template
96
+ for (const [filePath, content] of Object.entries(templateConfig.files)) {
97
+ const fullPath = path.join(targetPath, filePath);
98
+ const dir = path.dirname(fullPath);
99
+ // Create subdirectories if needed
100
+ if (dir !== targetPath) {
101
+ await fs.promises.mkdir(dir, { recursive: true });
102
+ }
103
+ // Write the file
104
+ if (typeof content === 'object') {
105
+ await fs.promises.writeFile(fullPath, JSON.stringify(content, null, 2));
106
+ }
107
+ else {
108
+ await fs.promises.writeFile(fullPath, content);
109
+ }
110
+ }
111
+ console.log(`✓ Created new extension from "${template}" template at: ${targetPath}`);
112
+ console.log(` Template: ${templateConfig.description}`);
113
+ console.log('\nNext steps:');
114
+ console.log(`1. cd ${targetPath}`);
115
+ console.log('2. Customize the extension configuration');
116
+ console.log('3. Install the extension: blackbox extensions install ${targetPath}');
117
+ }
118
+ catch (error) {
119
+ console.error(getErrorMessage(error));
120
+ process.exit(1);
121
+ }
122
+ }
123
+ export const newCommand = {
124
+ command: 'new <path> [template]',
125
+ describe: 'Create a new extension from a template.',
126
+ builder: (yargs) => yargs
127
+ .positional('path', {
128
+ describe: 'The path to create the extension in.',
129
+ type: 'string',
130
+ demandOption: true,
131
+ })
132
+ .positional('template', {
133
+ describe: 'The template to use.',
134
+ type: 'string',
135
+ choices: Object.keys(TEMPLATES),
136
+ default: 'context',
137
+ }),
138
+ handler: async (argv) => {
139
+ await handleNew({
140
+ path: argv['path'],
141
+ template: argv['template'],
142
+ });
143
+ },
144
+ };
145
+ //# sourceMappingURL=new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../../../src/commands/extensions/new.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { CommandModule } from 'yargs';
7
+ interface SettingsListArgs {
8
+ extensionName: string;
9
+ }
10
+ interface SettingsSetArgs {
11
+ extensionName: string;
12
+ settingName: string;
13
+ scope?: 'user' | 'workspace';
14
+ }
15
+ export declare function handleSettingsList(args: SettingsListArgs): Promise<void>;
16
+ export declare function handleSettingsSet(args: SettingsSetArgs): Promise<void>;
17
+ export declare const settingsCommand: CommandModule;
18
+ export {};
@@ -0,0 +1,98 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { loadUserExtensions } from '../../config/extension.js';
7
+ import { getErrorMessage } from '../../utils/errors.js';
8
+ export async function handleSettingsList(args) {
9
+ try {
10
+ const extensions = loadUserExtensions();
11
+ const extension = extensions.find(ext => ext.config.name === args.extensionName);
12
+ if (!extension) {
13
+ throw new Error(`Extension "${args.extensionName}" not found`);
14
+ }
15
+ // For now, we'll just show that settings functionality is not yet implemented
16
+ // In a full implementation, this would read from extension config and show available settings
17
+ console.log(`Settings for extension "${args.extensionName}":`);
18
+ console.log('Settings functionality is not yet fully implemented.');
19
+ console.log('This would show configurable settings defined in the extension.');
20
+ }
21
+ catch (error) {
22
+ console.error(getErrorMessage(error));
23
+ process.exit(1);
24
+ }
25
+ }
26
+ export async function handleSettingsSet(args) {
27
+ try {
28
+ const extensions = loadUserExtensions();
29
+ const extension = extensions.find(ext => ext.config.name === args.extensionName);
30
+ if (!extension) {
31
+ throw new Error(`Extension "${args.extensionName}" not found`);
32
+ }
33
+ // For now, we'll just show that settings functionality is not yet implemented
34
+ console.log(`Setting "${args.settingName}" for extension "${args.extensionName}" in ${args.scope || 'user'} scope:`);
35
+ console.log('Settings functionality is not yet fully implemented.');
36
+ console.log('This would update the specified setting value.');
37
+ }
38
+ catch (error) {
39
+ console.error(getErrorMessage(error));
40
+ process.exit(1);
41
+ }
42
+ }
43
+ const listCommand = {
44
+ command: 'list <extension-name>',
45
+ describe: 'List settings for an extension.',
46
+ builder: (yargs) => yargs
47
+ .positional('extension-name', {
48
+ describe: 'The name of the extension.',
49
+ type: 'string',
50
+ demandOption: true,
51
+ }),
52
+ handler: async (argv) => {
53
+ await handleSettingsList({
54
+ extensionName: argv['extension-name'],
55
+ });
56
+ },
57
+ };
58
+ const setCommand = {
59
+ command: 'set <extension-name> <setting-name>',
60
+ describe: 'Set a setting for an extension.',
61
+ builder: (yargs) => yargs
62
+ .positional('extension-name', {
63
+ describe: 'The name of the extension.',
64
+ type: 'string',
65
+ demandOption: true,
66
+ })
67
+ .positional('setting-name', {
68
+ describe: 'The name of the setting to set.',
69
+ type: 'string',
70
+ demandOption: true,
71
+ })
72
+ .option('scope', {
73
+ describe: 'The scope to set the setting in.',
74
+ type: 'string',
75
+ choices: ['user', 'workspace'],
76
+ default: 'user',
77
+ }),
78
+ handler: async (argv) => {
79
+ await handleSettingsSet({
80
+ extensionName: argv['extension-name'],
81
+ settingName: argv['setting-name'],
82
+ scope: argv['scope'],
83
+ });
84
+ },
85
+ };
86
+ export const settingsCommand = {
87
+ command: 'settings <command>',
88
+ describe: 'Manage extension settings.',
89
+ builder: (yargs) => yargs
90
+ .command(listCommand)
91
+ .command(setCommand)
92
+ .demandCommand(1, 'You need at least one command before continuing.')
93
+ .version(false),
94
+ handler: () => {
95
+ // This handler is not called when a subcommand is provided.
96
+ },
97
+ };
98
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../src/commands/extensions/settings.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,8 @@
5
5
  */
6
6
  import type { CommandModule } from 'yargs';
7
7
  interface UpdateArgs {
8
- name: string;
8
+ name?: string;
9
+ all?: boolean;
9
10
  }
10
11
  export declare function handleUpdate(args: UpdateArgs): Promise<void>;
11
12
  export declare const updateCommand: CommandModule;