@google/gemini-cli 0.1.21 → 0.1.22

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 (283) hide show
  1. package/README.md +26 -28
  2. package/dist/package.json +2 -2
  3. package/dist/src/commands/mcp/add.js +21 -10
  4. package/dist/src/commands/mcp/add.js.map +1 -1
  5. package/dist/src/commands/mcp/remove.js +2 -2
  6. package/dist/src/commands/mcp/remove.js.map +1 -1
  7. package/dist/src/config/auth.js +4 -3
  8. package/dist/src/config/auth.js.map +1 -1
  9. package/dist/src/config/auth.test.d.ts +6 -0
  10. package/dist/src/config/auth.test.js +57 -0
  11. package/dist/src/config/auth.test.js.map +1 -0
  12. package/dist/src/config/config.d.ts +1 -0
  13. package/dist/src/config/config.js +18 -11
  14. package/dist/src/config/config.js.map +1 -1
  15. package/dist/src/config/keyBindings.js +3 -2
  16. package/dist/src/config/keyBindings.js.map +1 -1
  17. package/dist/src/config/keyBindings.test.d.ts +6 -0
  18. package/dist/src/config/keyBindings.test.js +51 -0
  19. package/dist/src/config/keyBindings.test.js.map +1 -0
  20. package/dist/src/config/sandboxConfig.js +3 -3
  21. package/dist/src/config/sandboxConfig.js.map +1 -1
  22. package/dist/src/config/settings.js +7 -7
  23. package/dist/src/config/settings.js.map +1 -1
  24. package/dist/src/config/settingsSchema.test.d.ts +6 -0
  25. package/dist/src/config/settingsSchema.test.js +195 -0
  26. package/dist/src/config/settingsSchema.test.js.map +1 -0
  27. package/dist/src/config/trustedFolders.d.ts +2 -1
  28. package/dist/src/config/trustedFolders.js +7 -1
  29. package/dist/src/config/trustedFolders.js.map +1 -1
  30. package/dist/src/config/trustedFolders.test.d.ts +6 -0
  31. package/dist/src/config/trustedFolders.test.js +160 -0
  32. package/dist/src/config/trustedFolders.test.js.map +1 -0
  33. package/dist/src/gemini.js +17 -7
  34. package/dist/src/gemini.js.map +1 -1
  35. package/dist/src/gemini.test.d.ts +6 -0
  36. package/dist/src/gemini.test.js +193 -0
  37. package/dist/src/gemini.test.js.map +1 -0
  38. package/dist/src/generated/git-commit.d.ts +2 -1
  39. package/dist/src/generated/git-commit.js +2 -1
  40. package/dist/src/generated/git-commit.js.map +1 -1
  41. package/dist/src/nonInteractiveCli.js +1 -3
  42. package/dist/src/nonInteractiveCli.js.map +1 -1
  43. package/dist/src/services/BuiltinCommandLoader.test.d.ts +6 -0
  44. package/dist/src/services/BuiltinCommandLoader.test.js +108 -0
  45. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -0
  46. package/dist/src/services/CommandService.test.d.ts +6 -0
  47. package/dist/src/services/CommandService.test.js +232 -0
  48. package/dist/src/services/CommandService.test.js.map +1 -0
  49. package/dist/src/services/FileCommandLoader.js +10 -8
  50. package/dist/src/services/FileCommandLoader.js.map +1 -1
  51. package/dist/src/services/McpPromptLoader.js +3 -3
  52. package/dist/src/services/McpPromptLoader.js.map +1 -1
  53. package/dist/src/services/prompt-processors/argumentProcessor.d.ts +2 -7
  54. package/dist/src/services/prompt-processors/argumentProcessor.js +2 -10
  55. package/dist/src/services/prompt-processors/argumentProcessor.js.map +1 -1
  56. package/dist/src/services/prompt-processors/shellProcessor.d.ts +16 -13
  57. package/dist/src/services/prompt-processors/shellProcessor.js +133 -40
  58. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  59. package/dist/src/services/prompt-processors/types.d.ts +2 -0
  60. package/dist/src/services/prompt-processors/types.js +2 -0
  61. package/dist/src/services/prompt-processors/types.js.map +1 -1
  62. package/dist/src/test-utils/customMatchers.d.ts +14 -0
  63. package/dist/src/test-utils/customMatchers.js +46 -0
  64. package/dist/src/test-utils/customMatchers.js.map +1 -0
  65. package/dist/src/test-utils/mockCommandContext.d.ts +18 -0
  66. package/dist/src/test-utils/mockCommandContext.js +86 -0
  67. package/dist/src/test-utils/mockCommandContext.js.map +1 -0
  68. package/dist/src/test-utils/mockCommandContext.test.d.ts +6 -0
  69. package/dist/src/test-utils/mockCommandContext.test.js +51 -0
  70. package/dist/src/test-utils/mockCommandContext.test.js.map +1 -0
  71. package/dist/src/test-utils/render.d.ts +8 -0
  72. package/dist/src/test-utils/render.js +10 -0
  73. package/dist/src/test-utils/render.js.map +1 -0
  74. package/dist/src/ui/App.js +10 -8
  75. package/dist/src/ui/App.js.map +1 -1
  76. package/dist/src/ui/IdeIntegrationNudge.js +3 -3
  77. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  78. package/dist/src/ui/commands/aboutCommand.js +8 -5
  79. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  80. package/dist/src/ui/commands/bugCommand.js +6 -4
  81. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  82. package/dist/src/ui/commands/chatCommand.js +8 -6
  83. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  84. package/dist/src/ui/commands/docsCommand.js +1 -1
  85. package/dist/src/ui/commands/docsCommand.js.map +1 -1
  86. package/dist/src/ui/commands/ideCommand.js +2 -2
  87. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  88. package/dist/src/ui/commands/setupGithubCommand.test.d.ts +6 -0
  89. package/dist/src/ui/commands/setupGithubCommand.test.js +74 -0
  90. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -0
  91. package/dist/src/ui/components/AboutBox.d.ts +1 -0
  92. package/dist/src/ui/components/AboutBox.js +1 -1
  93. package/dist/src/ui/components/AboutBox.js.map +1 -1
  94. package/dist/src/ui/components/AuthDialog.js +8 -8
  95. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  96. package/dist/src/ui/components/AuthDialog.test.d.ts +6 -0
  97. package/dist/src/ui/components/AuthDialog.test.js +242 -0
  98. package/dist/src/ui/components/AuthDialog.test.js.map +1 -0
  99. package/dist/src/ui/components/ContextSummaryDisplay.js +1 -1
  100. package/dist/src/ui/components/FolderTrustDialog.test.d.ts +6 -0
  101. package/dist/src/ui/components/FolderTrustDialog.test.js +26 -0
  102. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -0
  103. package/dist/src/ui/components/Footer.d.ts +1 -0
  104. package/dist/src/ui/components/Footer.js +3 -2
  105. package/dist/src/ui/components/Footer.js.map +1 -1
  106. package/dist/src/ui/components/Header.test.d.ts +6 -0
  107. package/dist/src/ui/components/Header.test.js +37 -0
  108. package/dist/src/ui/components/Header.test.js.map +1 -0
  109. package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
  110. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  111. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +6 -0
  112. package/dist/src/ui/components/HistoryItemDisplay.test.js +91 -0
  113. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -0
  114. package/dist/src/ui/components/InputPrompt.js +0 -4
  115. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  116. package/dist/src/ui/components/LoadingIndicator.test.d.ts +6 -0
  117. package/dist/src/ui/components/LoadingIndicator.test.js +190 -0
  118. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -0
  119. package/dist/src/ui/components/SettingsDialog.test.d.ts +6 -0
  120. package/dist/src/ui/components/SettingsDialog.test.js +555 -0
  121. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -0
  122. package/dist/src/ui/components/ShellConfirmationDialog.js +2 -1
  123. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  124. package/dist/src/ui/components/ShellConfirmationDialog.test.d.ts +6 -0
  125. package/dist/src/ui/components/ShellConfirmationDialog.test.js +40 -0
  126. package/dist/src/ui/components/ShellConfirmationDialog.test.js.map +1 -0
  127. package/dist/src/ui/components/StatsDisplay.js +1 -1
  128. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  129. package/dist/src/ui/components/messages/DiffRenderer.js +10 -1
  130. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  131. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +6 -0
  132. package/dist/src/ui/components/messages/DiffRenderer.test.js +239 -0
  133. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -0
  134. package/dist/src/ui/components/messages/InfoMessage.js +2 -1
  135. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  136. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +2 -1
  137. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  138. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +6 -0
  139. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +37 -0
  140. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -0
  141. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +6 -0
  142. package/dist/src/ui/components/messages/ToolMessage.test.js +118 -0
  143. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -0
  144. package/dist/src/ui/components/shared/MaxSizedBox.js +1 -1
  145. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  146. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +6 -0
  147. package/dist/src/ui/components/shared/MaxSizedBox.test.js +154 -0
  148. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -0
  149. package/dist/src/ui/components/shared/RadioButtonSelect.js +1 -1
  150. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  151. package/dist/src/ui/components/shared/RadioButtonSelect.test.d.ts +6 -0
  152. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +111 -0
  153. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -0
  154. package/dist/src/ui/contexts/KeypressContext.d.ts +30 -0
  155. package/dist/src/ui/contexts/KeypressContext.js +310 -0
  156. package/dist/src/ui/contexts/KeypressContext.js.map +1 -0
  157. package/dist/src/ui/contexts/KeypressContext.test.d.ts +6 -0
  158. package/dist/src/ui/contexts/KeypressContext.test.js +220 -0
  159. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -0
  160. package/dist/src/ui/contexts/SessionContext.d.ts +1 -0
  161. package/dist/src/ui/contexts/SessionContext.js +2 -1
  162. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  163. package/dist/src/ui/hooks/atCommandProcessor.js +9 -9
  164. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  165. package/dist/src/ui/hooks/atCommandProcessor.test.d.ts +6 -0
  166. package/dist/src/ui/hooks/atCommandProcessor.test.js +802 -0
  167. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -0
  168. package/dist/src/ui/hooks/shellCommandProcessor.test.d.ts +6 -0
  169. package/dist/src/ui/hooks/shellCommandProcessor.test.js +328 -0
  170. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -0
  171. package/dist/src/ui/hooks/slashCommandProcessor.js +7 -7
  172. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  173. package/dist/src/ui/hooks/useAtCompletion.js +3 -5
  174. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  175. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.d.ts +6 -0
  176. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +191 -0
  177. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -0
  178. package/dist/src/ui/hooks/useEditorSettings.test.d.ts +6 -0
  179. package/dist/src/ui/hooks/useEditorSettings.test.js +164 -0
  180. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -0
  181. package/dist/src/ui/hooks/useFolderTrust.d.ts +2 -2
  182. package/dist/src/ui/hooks/useFolderTrust.js +23 -5
  183. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  184. package/dist/src/ui/hooks/useGitBranchName.test.d.ts +6 -0
  185. package/dist/src/ui/hooks/useGitBranchName.test.js +175 -0
  186. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -0
  187. package/dist/src/ui/hooks/useHistoryManager.test.d.ts +6 -0
  188. package/dist/src/ui/hooks/useHistoryManager.test.js +171 -0
  189. package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -0
  190. package/dist/src/ui/hooks/useInputHistory.test.d.ts +6 -0
  191. package/dist/src/ui/hooks/useInputHistory.test.js +207 -0
  192. package/dist/src/ui/hooks/useInputHistory.test.js.map +1 -0
  193. package/dist/src/ui/hooks/useKeypress.d.ts +4 -24
  194. package/dist/src/ui/hooks/useKeypress.js +9 -330
  195. package/dist/src/ui/hooks/useKeypress.js.map +1 -1
  196. package/dist/src/ui/hooks/useLoadingIndicator.test.d.ts +6 -0
  197. package/dist/src/ui/hooks/useLoadingIndicator.test.js +91 -0
  198. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -0
  199. package/dist/src/ui/hooks/useReverseSearchCompletion.test.d.ts +6 -0
  200. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +163 -0
  201. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -0
  202. package/dist/src/ui/hooks/useShellHistory.test.d.ts +6 -0
  203. package/dist/src/ui/hooks/useShellHistory.test.js +162 -0
  204. package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -0
  205. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +6 -0
  206. package/dist/src/ui/hooks/useSlashCompletion.test.js +272 -0
  207. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -0
  208. package/dist/src/ui/hooks/useThemeCommand.js +1 -1
  209. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  210. package/dist/src/ui/hooks/useTimer.test.d.ts +6 -0
  211. package/dist/src/ui/hooks/useTimer.test.js +90 -0
  212. package/dist/src/ui/hooks/useTimer.test.js.map +1 -0
  213. package/dist/src/ui/hooks/useToolScheduler.test.d.ts +6 -0
  214. package/dist/src/ui/hooks/useToolScheduler.test.js +841 -0
  215. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -0
  216. package/dist/src/ui/keyMatchers.test.d.ts +6 -0
  217. package/dist/src/ui/keyMatchers.test.js +276 -0
  218. package/dist/src/ui/keyMatchers.test.js.map +1 -0
  219. package/dist/src/ui/themes/color-utils.test.d.ts +6 -0
  220. package/dist/src/ui/themes/color-utils.test.js +197 -0
  221. package/dist/src/ui/themes/color-utils.test.js.map +1 -0
  222. package/dist/src/ui/themes/theme-manager.js +1 -1
  223. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  224. package/dist/src/ui/themes/theme-manager.test.d.ts +6 -0
  225. package/dist/src/ui/themes/theme-manager.test.js +83 -0
  226. package/dist/src/ui/themes/theme-manager.test.js.map +1 -0
  227. package/dist/src/ui/types.d.ts +2 -0
  228. package/dist/src/ui/types.js.map +1 -1
  229. package/dist/src/ui/utils/CodeColorizer.js +1 -1
  230. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  231. package/dist/src/ui/utils/InlineMarkdownRenderer.js +8 -1
  232. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
  233. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +6 -0
  234. package/dist/src/ui/utils/MarkdownDisplay.test.js +151 -0
  235. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -0
  236. package/dist/src/ui/utils/clipboardUtils.test.d.ts +6 -0
  237. package/dist/src/ui/utils/clipboardUtils.test.js +65 -0
  238. package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -0
  239. package/dist/src/ui/utils/commandUtils.test.d.ts +6 -0
  240. package/dist/src/ui/utils/commandUtils.test.js +294 -0
  241. package/dist/src/ui/utils/commandUtils.test.js.map +1 -0
  242. package/dist/src/ui/utils/displayUtils.test.d.ts +6 -0
  243. package/dist/src/ui/utils/displayUtils.test.js +42 -0
  244. package/dist/src/ui/utils/displayUtils.test.js.map +1 -0
  245. package/dist/src/ui/utils/formatters.test.d.ts +6 -0
  246. package/dist/src/ui/utils/formatters.test.js +56 -0
  247. package/dist/src/ui/utils/formatters.test.js.map +1 -0
  248. package/dist/src/ui/utils/markdownUtilities.test.d.ts +6 -0
  249. package/dist/src/ui/utils/markdownUtilities.test.js +42 -0
  250. package/dist/src/ui/utils/markdownUtilities.test.js.map +1 -0
  251. package/dist/src/ui/utils/platformConstants.d.ts +5 -0
  252. package/dist/src/ui/utils/platformConstants.js +5 -0
  253. package/dist/src/ui/utils/platformConstants.js.map +1 -1
  254. package/dist/src/ui/utils/terminalSetup.js +7 -7
  255. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  256. package/dist/src/ui/utils/updateCheck.js +1 -1
  257. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  258. package/dist/src/ui/utils/updateCheck.test.d.ts +6 -0
  259. package/dist/src/ui/utils/updateCheck.test.js +145 -0
  260. package/dist/src/ui/utils/updateCheck.test.js.map +1 -0
  261. package/dist/src/utils/gitUtils.test.d.ts +6 -0
  262. package/dist/src/utils/gitUtils.test.js +113 -0
  263. package/dist/src/utils/gitUtils.test.js.map +1 -0
  264. package/dist/src/utils/installationInfo.test.d.ts +6 -0
  265. package/dist/src/utils/installationInfo.test.js +242 -0
  266. package/dist/src/utils/installationInfo.test.js.map +1 -0
  267. package/dist/src/utils/readStdin.js +10 -0
  268. package/dist/src/utils/readStdin.js.map +1 -1
  269. package/dist/src/utils/sandbox.js +62 -60
  270. package/dist/src/utils/sandbox.js.map +1 -1
  271. package/dist/src/utils/settingsUtils.test.d.ts +6 -0
  272. package/dist/src/utils/settingsUtils.test.js +514 -0
  273. package/dist/src/utils/settingsUtils.test.js.map +1 -0
  274. package/dist/src/utils/userStartupWarnings.test.d.ts +6 -0
  275. package/dist/src/utils/userStartupWarnings.test.js +67 -0
  276. package/dist/src/utils/userStartupWarnings.test.js.map +1 -0
  277. package/dist/src/utils/version.js +1 -1
  278. package/dist/src/utils/version.js.map +1 -1
  279. package/dist/src/validateNonInterActiveAuth.js +3 -3
  280. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  281. package/dist/src/zed-integration/schema.d.ts +322 -322
  282. package/dist/tsconfig.tsbuildinfo +1 -1
  283. package/package.json +3 -3
@@ -0,0 +1,232 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
7
+ import { CommandService } from './CommandService.js';
8
+ import { CommandKind } from '../ui/commands/types.js';
9
+ const createMockCommand = (name, kind) => ({
10
+ name,
11
+ description: `Description for ${name}`,
12
+ kind,
13
+ action: vi.fn(),
14
+ });
15
+ const mockCommandA = createMockCommand('command-a', CommandKind.BUILT_IN);
16
+ const mockCommandB = createMockCommand('command-b', CommandKind.BUILT_IN);
17
+ const mockCommandC = createMockCommand('command-c', CommandKind.FILE);
18
+ const mockCommandB_Override = createMockCommand('command-b', CommandKind.FILE);
19
+ class MockCommandLoader {
20
+ commandsToLoad;
21
+ constructor(commandsToLoad) {
22
+ this.commandsToLoad = commandsToLoad;
23
+ }
24
+ loadCommands = vi.fn(async () => Promise.resolve(this.commandsToLoad));
25
+ }
26
+ describe('CommandService', () => {
27
+ beforeEach(() => {
28
+ vi.spyOn(console, 'debug').mockImplementation(() => { });
29
+ });
30
+ afterEach(() => {
31
+ vi.restoreAllMocks();
32
+ });
33
+ it('should load commands from a single loader', async () => {
34
+ const mockLoader = new MockCommandLoader([mockCommandA, mockCommandB]);
35
+ const service = await CommandService.create([mockLoader], new AbortController().signal);
36
+ const commands = service.getCommands();
37
+ expect(mockLoader.loadCommands).toHaveBeenCalledTimes(1);
38
+ expect(commands).toHaveLength(2);
39
+ expect(commands).toEqual(expect.arrayContaining([mockCommandA, mockCommandB]));
40
+ });
41
+ it('should aggregate commands from multiple loaders', async () => {
42
+ const loader1 = new MockCommandLoader([mockCommandA]);
43
+ const loader2 = new MockCommandLoader([mockCommandC]);
44
+ const service = await CommandService.create([loader1, loader2], new AbortController().signal);
45
+ const commands = service.getCommands();
46
+ expect(loader1.loadCommands).toHaveBeenCalledTimes(1);
47
+ expect(loader2.loadCommands).toHaveBeenCalledTimes(1);
48
+ expect(commands).toHaveLength(2);
49
+ expect(commands).toEqual(expect.arrayContaining([mockCommandA, mockCommandC]));
50
+ });
51
+ it('should override commands from earlier loaders with those from later loaders', async () => {
52
+ const loader1 = new MockCommandLoader([mockCommandA, mockCommandB]);
53
+ const loader2 = new MockCommandLoader([
54
+ mockCommandB_Override,
55
+ mockCommandC,
56
+ ]);
57
+ const service = await CommandService.create([loader1, loader2], new AbortController().signal);
58
+ const commands = service.getCommands();
59
+ expect(commands).toHaveLength(3); // Should be A, C, and the overridden B.
60
+ // The final list should contain the override from the *last* loader.
61
+ const commandB = commands.find((cmd) => cmd.name === 'command-b');
62
+ expect(commandB).toBeDefined();
63
+ expect(commandB?.kind).toBe(CommandKind.FILE); // Verify it's the overridden version.
64
+ expect(commandB).toEqual(mockCommandB_Override);
65
+ // Ensure the other commands are still present.
66
+ expect(commands).toEqual(expect.arrayContaining([
67
+ mockCommandA,
68
+ mockCommandC,
69
+ mockCommandB_Override,
70
+ ]));
71
+ });
72
+ it('should handle loaders that return an empty array of commands gracefully', async () => {
73
+ const loader1 = new MockCommandLoader([mockCommandA]);
74
+ const emptyLoader = new MockCommandLoader([]);
75
+ const loader3 = new MockCommandLoader([mockCommandB]);
76
+ const service = await CommandService.create([loader1, emptyLoader, loader3], new AbortController().signal);
77
+ const commands = service.getCommands();
78
+ expect(emptyLoader.loadCommands).toHaveBeenCalledTimes(1);
79
+ expect(commands).toHaveLength(2);
80
+ expect(commands).toEqual(expect.arrayContaining([mockCommandA, mockCommandB]));
81
+ });
82
+ it('should load commands from successful loaders even if one fails', async () => {
83
+ const successfulLoader = new MockCommandLoader([mockCommandA]);
84
+ const failingLoader = new MockCommandLoader([]);
85
+ const error = new Error('Loader failed');
86
+ vi.spyOn(failingLoader, 'loadCommands').mockRejectedValue(error);
87
+ const service = await CommandService.create([successfulLoader, failingLoader], new AbortController().signal);
88
+ const commands = service.getCommands();
89
+ expect(commands).toHaveLength(1);
90
+ expect(commands).toEqual([mockCommandA]);
91
+ expect(console.debug).toHaveBeenCalledWith('A command loader failed:', error);
92
+ });
93
+ it('getCommands should return a readonly array that cannot be mutated', async () => {
94
+ const service = await CommandService.create([new MockCommandLoader([mockCommandA])], new AbortController().signal);
95
+ const commands = service.getCommands();
96
+ // Expect it to throw a TypeError at runtime because the array is frozen.
97
+ expect(() => {
98
+ // @ts-expect-error - Testing immutability is intentional here.
99
+ commands.push(mockCommandB);
100
+ }).toThrow();
101
+ // Verify the original array was not mutated.
102
+ expect(service.getCommands()).toHaveLength(1);
103
+ });
104
+ it('should pass the abort signal to all loaders', async () => {
105
+ const controller = new AbortController();
106
+ const signal = controller.signal;
107
+ const loader1 = new MockCommandLoader([mockCommandA]);
108
+ const loader2 = new MockCommandLoader([mockCommandB]);
109
+ await CommandService.create([loader1, loader2], signal);
110
+ expect(loader1.loadCommands).toHaveBeenCalledTimes(1);
111
+ expect(loader1.loadCommands).toHaveBeenCalledWith(signal);
112
+ expect(loader2.loadCommands).toHaveBeenCalledTimes(1);
113
+ expect(loader2.loadCommands).toHaveBeenCalledWith(signal);
114
+ });
115
+ it('should rename extension commands when they conflict', async () => {
116
+ const builtinCommand = createMockCommand('deploy', CommandKind.BUILT_IN);
117
+ const userCommand = createMockCommand('sync', CommandKind.FILE);
118
+ const extensionCommand1 = {
119
+ ...createMockCommand('deploy', CommandKind.FILE),
120
+ extensionName: 'firebase',
121
+ description: '[firebase] Deploy to Firebase',
122
+ };
123
+ const extensionCommand2 = {
124
+ ...createMockCommand('sync', CommandKind.FILE),
125
+ extensionName: 'git-helper',
126
+ description: '[git-helper] Sync with remote',
127
+ };
128
+ const mockLoader1 = new MockCommandLoader([builtinCommand]);
129
+ const mockLoader2 = new MockCommandLoader([
130
+ userCommand,
131
+ extensionCommand1,
132
+ extensionCommand2,
133
+ ]);
134
+ const service = await CommandService.create([mockLoader1, mockLoader2], new AbortController().signal);
135
+ const commands = service.getCommands();
136
+ expect(commands).toHaveLength(4);
137
+ // Built-in command keeps original name
138
+ const deployBuiltin = commands.find((cmd) => cmd.name === 'deploy' && !cmd.extensionName);
139
+ expect(deployBuiltin).toBeDefined();
140
+ expect(deployBuiltin?.kind).toBe(CommandKind.BUILT_IN);
141
+ // Extension command conflicting with built-in gets renamed
142
+ const deployExtension = commands.find((cmd) => cmd.name === 'firebase.deploy');
143
+ expect(deployExtension).toBeDefined();
144
+ expect(deployExtension?.extensionName).toBe('firebase');
145
+ // User command keeps original name
146
+ const syncUser = commands.find((cmd) => cmd.name === 'sync' && !cmd.extensionName);
147
+ expect(syncUser).toBeDefined();
148
+ expect(syncUser?.kind).toBe(CommandKind.FILE);
149
+ // Extension command conflicting with user command gets renamed
150
+ const syncExtension = commands.find((cmd) => cmd.name === 'git-helper.sync');
151
+ expect(syncExtension).toBeDefined();
152
+ expect(syncExtension?.extensionName).toBe('git-helper');
153
+ });
154
+ it('should handle user/project command override correctly', async () => {
155
+ const builtinCommand = createMockCommand('help', CommandKind.BUILT_IN);
156
+ const userCommand = createMockCommand('help', CommandKind.FILE);
157
+ const projectCommand = createMockCommand('deploy', CommandKind.FILE);
158
+ const userDeployCommand = createMockCommand('deploy', CommandKind.FILE);
159
+ const mockLoader1 = new MockCommandLoader([builtinCommand]);
160
+ const mockLoader2 = new MockCommandLoader([
161
+ userCommand,
162
+ userDeployCommand,
163
+ projectCommand,
164
+ ]);
165
+ const service = await CommandService.create([mockLoader1, mockLoader2], new AbortController().signal);
166
+ const commands = service.getCommands();
167
+ expect(commands).toHaveLength(2);
168
+ // User command overrides built-in
169
+ const helpCommand = commands.find((cmd) => cmd.name === 'help');
170
+ expect(helpCommand).toBeDefined();
171
+ expect(helpCommand?.kind).toBe(CommandKind.FILE);
172
+ // Project command overrides user command (last wins)
173
+ const deployCommand = commands.find((cmd) => cmd.name === 'deploy');
174
+ expect(deployCommand).toBeDefined();
175
+ expect(deployCommand?.kind).toBe(CommandKind.FILE);
176
+ });
177
+ it('should handle secondary conflicts when renaming extension commands', async () => {
178
+ // User has both /deploy and /gcp.deploy commands
179
+ const userCommand1 = createMockCommand('deploy', CommandKind.FILE);
180
+ const userCommand2 = createMockCommand('gcp.deploy', CommandKind.FILE);
181
+ // Extension also has a deploy command that will conflict with user's /deploy
182
+ const extensionCommand = {
183
+ ...createMockCommand('deploy', CommandKind.FILE),
184
+ extensionName: 'gcp',
185
+ description: '[gcp] Deploy to Google Cloud',
186
+ };
187
+ const mockLoader = new MockCommandLoader([
188
+ userCommand1,
189
+ userCommand2,
190
+ extensionCommand,
191
+ ]);
192
+ const service = await CommandService.create([mockLoader], new AbortController().signal);
193
+ const commands = service.getCommands();
194
+ expect(commands).toHaveLength(3);
195
+ // Original user command keeps its name
196
+ const deployUser = commands.find((cmd) => cmd.name === 'deploy' && !cmd.extensionName);
197
+ expect(deployUser).toBeDefined();
198
+ // User's dot notation command keeps its name
199
+ const gcpDeployUser = commands.find((cmd) => cmd.name === 'gcp.deploy' && !cmd.extensionName);
200
+ expect(gcpDeployUser).toBeDefined();
201
+ // Extension command gets renamed with suffix due to secondary conflict
202
+ const deployExtension = commands.find((cmd) => cmd.name === 'gcp.deploy1' && cmd.extensionName === 'gcp');
203
+ expect(deployExtension).toBeDefined();
204
+ expect(deployExtension?.description).toBe('[gcp] Deploy to Google Cloud');
205
+ });
206
+ it('should handle multiple secondary conflicts with incrementing suffixes', async () => {
207
+ // User has /deploy, /gcp.deploy, and /gcp.deploy1
208
+ const userCommand1 = createMockCommand('deploy', CommandKind.FILE);
209
+ const userCommand2 = createMockCommand('gcp.deploy', CommandKind.FILE);
210
+ const userCommand3 = createMockCommand('gcp.deploy1', CommandKind.FILE);
211
+ // Extension has a deploy command
212
+ const extensionCommand = {
213
+ ...createMockCommand('deploy', CommandKind.FILE),
214
+ extensionName: 'gcp',
215
+ description: '[gcp] Deploy to Google Cloud',
216
+ };
217
+ const mockLoader = new MockCommandLoader([
218
+ userCommand1,
219
+ userCommand2,
220
+ userCommand3,
221
+ extensionCommand,
222
+ ]);
223
+ const service = await CommandService.create([mockLoader], new AbortController().signal);
224
+ const commands = service.getCommands();
225
+ expect(commands).toHaveLength(4);
226
+ // Extension command gets renamed with suffix 2 due to multiple conflicts
227
+ const deployExtension = commands.find((cmd) => cmd.name === 'gcp.deploy2' && cmd.extensionName === 'gcp');
228
+ expect(deployExtension).toBeDefined();
229
+ expect(deployExtension?.description).toBe('[gcp] Deploy to Google Cloud');
230
+ });
231
+ });
232
+ //# sourceMappingURL=CommandService.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandService.test.js","sourceRoot":"","sources":["../../../src/services/CommandService.test.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import { glob } from 'glob';
10
10
  import { z } from 'zod';
11
11
  import { getProjectCommandsDir, getUserCommandsDir, } from '@google/gemini-cli-core';
12
12
  import { CommandKind, } from '../ui/commands/types.js';
13
- import { DefaultArgumentProcessor, ShorthandArgumentProcessor, } from './prompt-processors/argumentProcessor.js';
13
+ import { DefaultArgumentProcessor } from './prompt-processors/argumentProcessor.js';
14
14
  import { SHORTHAND_ARGS_PLACEHOLDER, SHELL_INJECTION_TRIGGER, } from './prompt-processors/types.js';
15
15
  import { ConfirmationRequiredError, ShellProcessor, } from './prompt-processors/shellProcessor.js';
16
16
  /**
@@ -152,15 +152,17 @@ export class FileCommandLoader {
152
152
  description = `[${extensionName}] ${description}`;
153
153
  }
154
154
  const processors = [];
155
- // Add the Shell Processor if needed.
156
- if (validDef.prompt.includes(SHELL_INJECTION_TRIGGER)) {
155
+ const usesArgs = validDef.prompt.includes(SHORTHAND_ARGS_PLACEHOLDER);
156
+ const usesShellInjection = validDef.prompt.includes(SHELL_INJECTION_TRIGGER);
157
+ // Interpolation (Shell Execution and Argument Injection)
158
+ // If the prompt uses either shell injection OR argument placeholders,
159
+ // we must use the ShellProcessor.
160
+ if (usesShellInjection || usesArgs) {
157
161
  processors.push(new ShellProcessor(baseCommandName));
158
162
  }
159
- // The presence of '{{args}}' is the switch that determines the behavior.
160
- if (validDef.prompt.includes(SHORTHAND_ARGS_PLACEHOLDER)) {
161
- processors.push(new ShorthandArgumentProcessor());
162
- }
163
- else {
163
+ // Default Argument Handling
164
+ // If NO explicit argument injection ({{args}}) was used, we append the raw invocation.
165
+ if (!usesArgs) {
164
166
  processors.push(new DefaultArgumentProcessor());
165
167
  }
166
168
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"FileCommandLoader.js","sourceRoot":"","sources":["../../../src/services/FileCommandLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileCommandLoader.js","sourceRoot":"","sources":["../../../src/services/FileCommandLoader.ts"],"names":[],"mappings":"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"}
@@ -95,14 +95,14 @@ export class McpPromptLoader {
95
95
  };
96
96
  }
97
97
  const result = await prompt.invoke(promptInputs);
98
- if (result.error) {
98
+ if (result['error']) {
99
99
  return {
100
100
  type: 'message',
101
101
  messageType: 'error',
102
- content: `Error invoking prompt: ${result.error}`,
102
+ content: `Error invoking prompt: ${result['error']}`,
103
103
  };
104
104
  }
105
- if (!result.messages?.[0]?.content?.text) {
105
+ if (!result.messages?.[0]?.content?.['text']) {
106
106
  return {
107
107
  type: 'message',
108
108
  messageType: 'error',
@@ -1 +1 @@
1
- {"version":3,"file":"McpPromptLoader.js","sourceRoot":"","sources":["../../../src/services/McpPromptLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"McpPromptLoader.js","sourceRoot":"","sources":["../../../src/services/McpPromptLoader.ts"],"names":[],"mappings":"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"}
@@ -5,16 +5,11 @@
5
5
  */
6
6
  import { IPromptProcessor } from './types.js';
7
7
  import { CommandContext } from '../../ui/commands/types.js';
8
- /**
9
- * Replaces all instances of `{{args}}` in a prompt with the user-provided
10
- * argument string.
11
- */
12
- export declare class ShorthandArgumentProcessor implements IPromptProcessor {
13
- process(prompt: string, context: CommandContext): Promise<string>;
14
- }
15
8
  /**
16
9
  * Appends the user's full command invocation to the prompt if arguments are
17
10
  * provided, allowing the model to perform its own argument parsing.
11
+ *
12
+ * This processor is only used if the prompt does NOT contain {{args}}.
18
13
  */
19
14
  export declare class DefaultArgumentProcessor implements IPromptProcessor {
20
15
  process(prompt: string, context: CommandContext): Promise<string>;
@@ -3,19 +3,11 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { SHORTHAND_ARGS_PLACEHOLDER } from './types.js';
7
- /**
8
- * Replaces all instances of `{{args}}` in a prompt with the user-provided
9
- * argument string.
10
- */
11
- export class ShorthandArgumentProcessor {
12
- async process(prompt, context) {
13
- return prompt.replaceAll(SHORTHAND_ARGS_PLACEHOLDER, context.invocation.args);
14
- }
15
- }
16
6
  /**
17
7
  * Appends the user's full command invocation to the prompt if arguments are
18
8
  * provided, allowing the model to perform its own argument parsing.
9
+ *
10
+ * This processor is only used if the prompt does NOT contain {{args}}.
19
11
  */
20
12
  export class DefaultArgumentProcessor {
21
13
  async process(prompt, context) {
@@ -1 +1 @@
1
- {"version":3,"file":"argumentProcessor.js","sourceRoot":"","sources":["../../../../src/services/prompt-processors/argumentProcessor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAoB,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAG1E;;;GAGG;AACH,MAAM,OAAO,0BAA0B;IACrC,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAuB;QACnD,OAAO,MAAM,CAAC,UAAU,CACtB,0BAA0B,EAC1B,OAAO,CAAC,UAAW,CAAC,IAAI,CACzB,CAAC;IACJ,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,wBAAwB;IACnC,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAuB;QACnD,IAAI,OAAO,CAAC,UAAW,CAAC,IAAI,EAAE,CAAC;YAC7B,OAAO,GAAG,MAAM,OAAO,OAAO,CAAC,UAAW,CAAC,GAAG,EAAE,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"argumentProcessor.js","sourceRoot":"","sources":["../../../../src/services/prompt-processors/argumentProcessor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;;;GAKG;AACH,MAAM,OAAO,wBAAwB;IACnC,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAuB;QACnD,IAAI,OAAO,CAAC,UAAW,CAAC,IAAI,EAAE,CAAC;YAC7B,OAAO,GAAG,MAAM,OAAO,OAAO,CAAC,UAAW,CAAC,GAAG,EAAE,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -10,23 +10,26 @@ export declare class ConfirmationRequiredError extends Error {
10
10
  constructor(message: string, commandsToConfirm: string[]);
11
11
  }
12
12
  /**
13
- * Finds all instances of shell command injections (`!{...}`) in a prompt,
14
- * executes them, and replaces the injection site with the command's output.
13
+ * Handles prompt interpolation, including shell command execution (`!{...}`)
14
+ * and context-aware argument injection (`{{args}}`).
15
15
  *
16
- * This processor ensures that only allowlisted commands are executed. If a
17
- * disallowed command is found, it halts execution and reports an error.
16
+ * This processor ensures that:
17
+ * 1. `{{args}}` outside `!{...}` are replaced with raw input.
18
+ * 2. `{{args}}` inside `!{...}` are replaced with shell-escaped input.
19
+ * 3. Shell commands are executed securely after argument substitution.
20
+ * 4. Parsing correctly handles nested braces.
18
21
  */
19
22
  export declare class ShellProcessor implements IPromptProcessor {
20
23
  private readonly commandName;
21
- /**
22
- * A regular expression to find all instances of `!{...}`. The inner
23
- * capture group extracts the command itself.
24
- */
25
- private static readonly SHELL_INJECTION_REGEX;
26
- /**
27
- * @param commandName The name of the custom command being executed, used
28
- * for logging and error messages.
29
- */
30
24
  constructor(commandName: string);
31
25
  process(prompt: string, context: CommandContext): Promise<string>;
26
+ /**
27
+ * Iteratively parses the prompt string to extract shell injections (!{...}),
28
+ * correctly handling nested braces within the command.
29
+ *
30
+ * @param prompt The prompt string to parse.
31
+ * @returns An array of extracted ShellInjection objects.
32
+ * @throws Error if an unclosed injection (`!{`) is found.
33
+ */
34
+ private extractInjections;
32
35
  }