@google/gemini-cli 0.25.0-nightly.20260112.15891721a → 0.25.0-preview.0

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 (255) hide show
  1. package/dist/package.json +2 -2
  2. package/dist/src/commands/extensions/examples/mcp-server/example.d.ts +6 -0
  3. package/dist/src/commands/extensions/examples/mcp-server/example.js +22 -36
  4. package/dist/src/commands/extensions/examples/mcp-server/example.js.map +1 -0
  5. package/dist/src/commands/extensions/examples/mcp-server/example.test.d.ts +6 -0
  6. package/dist/src/commands/extensions/examples/mcp-server/example.test.js +111 -0
  7. package/dist/src/commands/extensions/examples/mcp-server/example.test.js.map +1 -0
  8. package/dist/src/commands/extensions/examples/mcp-server/example.test.ts +135 -0
  9. package/dist/src/commands/extensions/examples/mcp-server/example.ts +60 -0
  10. package/dist/src/commands/extensions/examples/mcp-server/gemini-extension.json +1 -1
  11. package/dist/src/commands/extensions/examples/mcp-server/package.json +7 -0
  12. package/dist/src/commands/extensions/examples/mcp-server/tsconfig.json +13 -0
  13. package/dist/src/commands/extensions/utils.d.ts +1 -1
  14. package/dist/src/commands/skills/disable.js +1 -1
  15. package/dist/src/commands/skills/disable.js.map +1 -1
  16. package/dist/src/commands/skills/disable.test.js +1 -1
  17. package/dist/src/commands/skills/disable.test.js.map +1 -1
  18. package/dist/src/commands/skills/install.d.ts +14 -0
  19. package/dist/src/commands/skills/install.js +61 -0
  20. package/dist/src/commands/skills/install.js.map +1 -0
  21. package/dist/src/commands/skills/install.test.d.ts +6 -0
  22. package/dist/src/commands/skills/install.test.js +57 -0
  23. package/dist/src/commands/skills/install.test.js.map +1 -0
  24. package/dist/src/commands/skills/list.js +1 -1
  25. package/dist/src/commands/skills/list.js.map +1 -1
  26. package/dist/src/commands/skills/list.test.js +1 -1
  27. package/dist/src/commands/skills/list.test.js.map +1 -1
  28. package/dist/src/commands/skills/uninstall.d.ts +13 -0
  29. package/dist/src/commands/skills/uninstall.js +56 -0
  30. package/dist/src/commands/skills/uninstall.js.map +1 -0
  31. package/dist/src/commands/skills/uninstall.test.d.ts +6 -0
  32. package/dist/src/commands/skills/uninstall.test.js +61 -0
  33. package/dist/src/commands/skills/uninstall.test.js.map +1 -0
  34. package/dist/src/commands/skills.js +4 -0
  35. package/dist/src/commands/skills.js.map +1 -1
  36. package/dist/src/config/config.js +5 -0
  37. package/dist/src/config/config.js.map +1 -1
  38. package/dist/src/config/extension-manager-agents.test.d.ts +6 -0
  39. package/dist/src/config/extension-manager-agents.test.js +115 -0
  40. package/dist/src/config/extension-manager-agents.test.js.map +1 -0
  41. package/dist/src/config/extension-manager-scope.test.js +11 -0
  42. package/dist/src/config/extension-manager-scope.test.js.map +1 -1
  43. package/dist/src/config/extension-manager-skills.test.js +4 -0
  44. package/dist/src/config/extension-manager-skills.test.js.map +1 -1
  45. package/dist/src/config/extension-manager.js +7 -1
  46. package/dist/src/config/extension-manager.js.map +1 -1
  47. package/dist/src/config/extension.test.js +10 -1
  48. package/dist/src/config/extension.test.js.map +1 -1
  49. package/dist/src/config/keyBindings.d.ts +14 -2
  50. package/dist/src/config/keyBindings.js +85 -10
  51. package/dist/src/config/keyBindings.js.map +1 -1
  52. package/dist/src/config/settings.js +8 -9
  53. package/dist/src/config/settings.js.map +1 -1
  54. package/dist/src/config/settingsSchema.d.ts +66 -2
  55. package/dist/src/config/settingsSchema.js +99 -2
  56. package/dist/src/config/settingsSchema.js.map +1 -1
  57. package/dist/src/gemini.js +12 -6
  58. package/dist/src/gemini.js.map +1 -1
  59. package/dist/src/generated/git-commit.d.ts +2 -2
  60. package/dist/src/generated/git-commit.js +2 -2
  61. package/dist/src/generated/git-commit.js.map +1 -1
  62. package/dist/src/services/BuiltinCommandLoader.js +18 -1
  63. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  64. package/dist/src/test-utils/render.js +1 -0
  65. package/dist/src/test-utils/render.js.map +1 -1
  66. package/dist/src/ui/AppContainer.js +103 -40
  67. package/dist/src/ui/AppContainer.js.map +1 -1
  68. package/dist/src/ui/AppContainer.test.js +214 -41
  69. package/dist/src/ui/AppContainer.test.js.map +1 -1
  70. package/dist/src/ui/auth/AuthDialog.d.ts +4 -1
  71. package/dist/src/ui/auth/AuthDialog.js +8 -2
  72. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  73. package/dist/src/ui/auth/AuthDialog.test.js +17 -0
  74. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  75. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.d.ts +10 -0
  76. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.js +27 -0
  77. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.js.map +1 -0
  78. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.d.ts +6 -0
  79. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js +68 -0
  80. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js.map +1 -0
  81. package/dist/src/ui/commands/aboutCommand.js +1 -1
  82. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  83. package/dist/src/ui/commands/aboutCommand.test.js +4 -4
  84. package/dist/src/ui/commands/aboutCommand.test.js.map +1 -1
  85. package/dist/src/ui/commands/agentsCommand.js +5 -1
  86. package/dist/src/ui/commands/agentsCommand.js.map +1 -1
  87. package/dist/src/ui/commands/agentsCommand.test.js +1 -1
  88. package/dist/src/ui/commands/agentsCommand.test.js.map +1 -1
  89. package/dist/src/ui/commands/chatCommand.js +1 -1
  90. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  91. package/dist/src/ui/commands/chatCommand.test.js +1 -1
  92. package/dist/src/ui/commands/chatCommand.test.js.map +1 -1
  93. package/dist/src/ui/commands/directoryCommand.js +9 -9
  94. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  95. package/dist/src/ui/commands/directoryCommand.test.js +9 -9
  96. package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
  97. package/dist/src/ui/commands/extensionsCommand.js +36 -36
  98. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  99. package/dist/src/ui/commands/extensionsCommand.test.js +36 -36
  100. package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
  101. package/dist/src/ui/commands/helpCommand.js +1 -1
  102. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  103. package/dist/src/ui/commands/helpCommand.test.js +1 -1
  104. package/dist/src/ui/commands/helpCommand.test.js.map +1 -1
  105. package/dist/src/ui/commands/hooksCommand.js +1 -1
  106. package/dist/src/ui/commands/hooksCommand.js.map +1 -1
  107. package/dist/src/ui/commands/hooksCommand.test.js +4 -4
  108. package/dist/src/ui/commands/hooksCommand.test.js.map +1 -1
  109. package/dist/src/ui/commands/mcpCommand.js +6 -6
  110. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  111. package/dist/src/ui/commands/mcpCommand.test.js +3 -3
  112. package/dist/src/ui/commands/mcpCommand.test.js.map +1 -1
  113. package/dist/src/ui/commands/memoryCommand.js +18 -43
  114. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  115. package/dist/src/ui/commands/memoryCommand.test.js +85 -15
  116. package/dist/src/ui/commands/memoryCommand.test.js.map +1 -1
  117. package/dist/src/ui/commands/skillsCommand.js +23 -8
  118. package/dist/src/ui/commands/skillsCommand.js.map +1 -1
  119. package/dist/src/ui/commands/skillsCommand.test.js +33 -12
  120. package/dist/src/ui/commands/skillsCommand.test.js.map +1 -1
  121. package/dist/src/ui/commands/statsCommand.js +4 -4
  122. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  123. package/dist/src/ui/commands/statsCommand.test.js +4 -4
  124. package/dist/src/ui/commands/statsCommand.test.js.map +1 -1
  125. package/dist/src/ui/commands/toolsCommand.js +2 -2
  126. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  127. package/dist/src/ui/commands/toolsCommand.test.js +2 -2
  128. package/dist/src/ui/commands/toolsCommand.test.js.map +1 -1
  129. package/dist/src/ui/components/DialogManager.js +1 -1
  130. package/dist/src/ui/components/DialogManager.js.map +1 -1
  131. package/dist/src/ui/components/Help.js +1 -1
  132. package/dist/src/ui/components/Help.js.map +1 -1
  133. package/dist/src/ui/components/InputPrompt.js +18 -7
  134. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  135. package/dist/src/ui/components/InputPrompt.test.js +64 -1
  136. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  137. package/dist/src/ui/components/MainContent.js +6 -9
  138. package/dist/src/ui/components/MainContent.js.map +1 -1
  139. package/dist/src/ui/components/MainContent.test.js +19 -9
  140. package/dist/src/ui/components/MainContent.test.js.map +1 -1
  141. package/dist/src/ui/components/ModelDialog.js +1 -1
  142. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  143. package/dist/src/ui/components/MultiFolderTrustDialog.d.ts +2 -2
  144. package/dist/src/ui/components/MultiFolderTrustDialog.js +1 -1
  145. package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -1
  146. package/dist/src/ui/components/MultiFolderTrustDialog.test.js +2 -2
  147. package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -1
  148. package/dist/src/ui/components/SettingsDialog.test.js +5 -2
  149. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  150. package/dist/src/ui/components/StickyHeader.d.ts +2 -0
  151. package/dist/src/ui/components/StickyHeader.js +1 -1
  152. package/dist/src/ui/components/StickyHeader.js.map +1 -1
  153. package/dist/src/ui/components/messages/DiffRenderer.js +5 -13
  154. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  155. package/dist/src/ui/components/messages/DiffRenderer.test.js +26 -17
  156. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
  157. package/dist/src/ui/components/messages/ShellToolMessage.js +8 -5
  158. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  159. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +1 -5
  160. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  161. package/dist/src/ui/components/messages/ToolMessage.js +6 -2
  162. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  163. package/dist/src/ui/components/messages/ToolResultDisplay.js +22 -16
  164. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  165. package/dist/src/ui/components/messages/ToolResultDisplay.test.js +36 -18
  166. package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -1
  167. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.d.ts +6 -0
  168. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js +134 -0
  169. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js.map +1 -0
  170. package/dist/src/ui/components/shared/MaxSizedBox.d.ts +2 -38
  171. package/dist/src/ui/components/shared/MaxSizedBox.js +34 -419
  172. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  173. package/dist/src/ui/components/shared/MaxSizedBox.test.js +48 -133
  174. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -1
  175. package/dist/src/ui/components/shared/text-buffer.d.ts +4 -4
  176. package/dist/src/ui/components/shared/text-buffer.js +35 -38
  177. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  178. package/dist/src/ui/components/views/AgentsStatus.js +3 -3
  179. package/dist/src/ui/components/views/AgentsStatus.js.map +1 -1
  180. package/dist/src/ui/constants/tips.js +1 -1
  181. package/dist/src/ui/constants/tips.js.map +1 -1
  182. package/dist/src/ui/constants.d.ts +1 -0
  183. package/dist/src/ui/constants.js +1 -0
  184. package/dist/src/ui/constants.js.map +1 -1
  185. package/dist/src/ui/contexts/KeypressContext.js +28 -0
  186. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  187. package/dist/src/ui/contexts/KeypressContext.test.js +31 -1
  188. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  189. package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -0
  190. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  191. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +2 -1
  192. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +5 -4
  193. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  194. package/dist/src/ui/hooks/useCommandCompletion.d.ts +1 -0
  195. package/dist/src/ui/hooks/useCommandCompletion.js +1 -0
  196. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  197. package/dist/src/ui/hooks/useCommandCompletion.test.js +7 -2
  198. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
  199. package/dist/src/ui/hooks/useExtensionUpdates.test.js +11 -2
  200. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -1
  201. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -1
  202. package/dist/src/ui/hooks/useGeminiStream.js +34 -14
  203. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  204. package/dist/src/ui/hooks/useGeminiStream.test.js +87 -10
  205. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  206. package/dist/src/ui/hooks/useHistoryManager.d.ts +1 -1
  207. package/dist/src/ui/hooks/useHistoryManager.js +1 -1
  208. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
  209. package/dist/src/ui/hooks/useHistoryManager.test.js +16 -0
  210. package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -1
  211. package/dist/src/ui/hooks/useIncludeDirsTrust.js +2 -2
  212. package/dist/src/ui/hooks/useIncludeDirsTrust.js.map +1 -1
  213. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +2 -2
  214. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +1 -1
  215. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +2 -1
  216. package/dist/src/ui/hooks/useLoadingIndicator.js +7 -3
  217. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  218. package/dist/src/ui/hooks/useLoadingIndicator.test.js +14 -4
  219. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  220. package/dist/src/ui/hooks/usePhraseCycler.d.ts +1 -1
  221. package/dist/src/ui/hooks/usePhraseCycler.js +2 -2
  222. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  223. package/dist/src/ui/keyMatchers.test.js +79 -53
  224. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  225. package/dist/src/ui/types.d.ts +2 -1
  226. package/dist/src/ui/types.js +2 -0
  227. package/dist/src/ui/types.js.map +1 -1
  228. package/dist/src/ui/utils/CodeColorizer.js +2 -2
  229. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  230. package/dist/src/ui/utils/commandUtils.js +1 -3
  231. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  232. package/dist/src/ui/utils/commandUtils.test.js +15 -2
  233. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  234. package/dist/src/utils/sessionCleanup.js +12 -0
  235. package/dist/src/utils/sessionCleanup.js.map +1 -1
  236. package/dist/src/utils/skillUtils.d.ts +13 -0
  237. package/dist/src/utils/skillUtils.js +93 -0
  238. package/dist/src/utils/skillUtils.js.map +1 -1
  239. package/dist/src/utils/skillUtils.test.d.ts +6 -0
  240. package/dist/src/utils/skillUtils.test.js +57 -0
  241. package/dist/src/utils/skillUtils.test.js.map +1 -0
  242. package/dist/src/utils/windowTitle.d.ts +13 -4
  243. package/dist/src/utils/windowTitle.js +65 -7
  244. package/dist/src/utils/windowTitle.js.map +1 -1
  245. package/dist/src/utils/windowTitle.test.js +183 -40
  246. package/dist/src/utils/windowTitle.test.js.map +1 -1
  247. package/dist/tsconfig.tsbuildinfo +1 -1
  248. package/package.json +3 -3
  249. package/dist/google-gemini-cli-0.25.0-nightly.20260107.59a18e710.tgz +0 -0
  250. package/dist/src/commands/extensions/examples/hooks/gemini-extension.json +0 -4
  251. package/dist/src/commands/extensions/examples/hooks/hooks/hooks.json +0 -14
  252. package/dist/src/commands/extensions/examples/hooks/scripts/on-start.js +0 -8
  253. package/dist/src/commands/extensions/examples/mcp-server/README.md +0 -35
  254. package/dist/src/commands/extensions/examples/skills/gemini-extension.json +0 -4
  255. package/dist/src/commands/extensions/examples/skills/skills/greeter/SKILL.md +0 -7
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@google/gemini-cli",
3
- "version": "0.25.0-nightly.20260112.15891721a",
3
+ "version": "0.25.0-preview.0",
4
4
  "description": "Gemini CLI",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -26,7 +26,7 @@
26
26
  "dist"
27
27
  ],
28
28
  "config": {
29
- "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.25.0-nightly.20260112.15891721a"
29
+ "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.25.0-preview.0"
30
30
  },
31
31
  "dependencies": {
32
32
  "@agentclientprotocol/sdk": "^0.11.0",
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -3,58 +3,44 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
-
7
6
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
7
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
9
8
  import { z } from 'zod';
10
-
11
9
  const server = new McpServer({
12
- name: 'prompt-server',
13
- version: '1.0.0',
10
+ name: 'prompt-server',
11
+ version: '1.0.0',
14
12
  });
15
-
16
- server.registerTool(
17
- 'fetch_posts',
18
- {
13
+ server.registerTool('fetch_posts', {
19
14
  description: 'Fetches a list of posts from a public API.',
20
15
  inputSchema: z.object({}).shape,
21
- },
22
- async () => {
23
- const apiResponse = await fetch(
24
- 'https://jsonplaceholder.typicode.com/posts',
25
- );
16
+ }, async () => {
17
+ const apiResponse = await fetch('https://jsonplaceholder.typicode.com/posts');
26
18
  const posts = await apiResponse.json();
27
19
  const response = { posts: posts.slice(0, 5) };
28
20
  return {
29
- content: [
30
- {
31
- type: 'text',
32
- text: JSON.stringify(response),
33
- },
34
- ],
21
+ content: [
22
+ {
23
+ type: 'text',
24
+ text: JSON.stringify(response),
25
+ },
26
+ ],
35
27
  };
36
- },
37
- );
38
-
39
- server.registerPrompt(
40
- 'poem-writer',
41
- {
28
+ });
29
+ server.registerPrompt('poem-writer', {
42
30
  title: 'Poem Writer',
43
31
  description: 'Write a nice haiku',
44
32
  argsSchema: { title: z.string(), mood: z.string().optional() },
45
- },
46
- ({ title, mood }) => ({
33
+ }, ({ title, mood }) => ({
47
34
  messages: [
48
- {
49
- role: 'user',
50
- content: {
51
- type: 'text',
52
- text: `Write a haiku${mood ? ` with the mood ${mood}` : ''} called ${title}. Note that a haiku is 5 syllables followed by 7 syllables followed by 5 syllables `,
35
+ {
36
+ role: 'user',
37
+ content: {
38
+ type: 'text',
39
+ text: `Write a haiku${mood ? ` with the mood ${mood}` : ''} called ${title}. Note that a haiku is 5 syllables followed by 7 syllables followed by 5 syllables `,
40
+ },
53
41
  },
54
- },
55
42
  ],
56
- }),
57
- );
58
-
43
+ }));
59
44
  const transport = new StdioServerTransport();
60
45
  await server.connect(transport);
46
+ //# sourceMappingURL=example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.js","sourceRoot":"","sources":["../../../../../../src/commands/extensions/examples/mcp-server/example.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;IACE,WAAW,EAAE,4CAA4C;IACzD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK;CAChC,EACD,KAAK,IAAI,EAAE;IACT,MAAM,WAAW,GAAG,MAAM,KAAK,CAC7B,4CAA4C,CAC7C,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC9C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;aAC/B;SACF;KACF,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,cAAc,CACnB,aAAa,EACb;IACE,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,oBAAoB;IACjC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;CAC/D,EACD,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACpB,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,qFAAqF;aAChK;SACF;KACF;CACF,CAAC,CACH,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,111 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
9
+ import { z } from 'zod';
10
+ // Mock the MCP server and transport
11
+ const mockRegisterTool = vi.fn();
12
+ const mockRegisterPrompt = vi.fn();
13
+ const mockConnect = vi.fn();
14
+ vi.mock('@modelcontextprotocol/sdk/server/mcp.js', () => ({
15
+ McpServer: vi.fn().mockImplementation(() => ({
16
+ registerTool: mockRegisterTool,
17
+ registerPrompt: mockRegisterPrompt,
18
+ connect: mockConnect,
19
+ })),
20
+ }));
21
+ vi.mock('@modelcontextprotocol/sdk/server/stdio.js', () => ({
22
+ StdioServerTransport: vi.fn(),
23
+ }));
24
+ describe('MCP Server Example', () => {
25
+ beforeEach(async () => {
26
+ // Dynamically import the server setup after mocks are in place
27
+ await import('./example.js');
28
+ });
29
+ afterEach(() => {
30
+ vi.clearAllMocks();
31
+ vi.resetModules();
32
+ });
33
+ it('should create an McpServer with the correct name and version', () => {
34
+ expect(McpServer).toHaveBeenCalledWith({
35
+ name: 'prompt-server',
36
+ version: '1.0.0',
37
+ });
38
+ });
39
+ it('should register the "fetch_posts" tool', () => {
40
+ expect(mockRegisterTool).toHaveBeenCalledWith('fetch_posts', {
41
+ description: 'Fetches a list of posts from a public API.',
42
+ inputSchema: z.object({}).shape,
43
+ }, expect.any(Function));
44
+ });
45
+ it('should register the "poem-writer" prompt', () => {
46
+ expect(mockRegisterPrompt).toHaveBeenCalledWith('poem-writer', {
47
+ title: 'Poem Writer',
48
+ description: 'Write a nice haiku',
49
+ argsSchema: expect.any(Object),
50
+ }, expect.any(Function));
51
+ });
52
+ it('should connect the server to an StdioServerTransport', () => {
53
+ expect(StdioServerTransport).toHaveBeenCalled();
54
+ expect(mockConnect).toHaveBeenCalledWith(expect.any(StdioServerTransport));
55
+ });
56
+ describe('fetch_posts tool implementation', () => {
57
+ it('should fetch posts and return a formatted response', async () => {
58
+ const mockPosts = [
59
+ { id: 1, title: 'Post 1' },
60
+ { id: 2, title: 'Post 2' },
61
+ ];
62
+ global.fetch = vi.fn().mockResolvedValue({
63
+ json: vi.fn().mockResolvedValue(mockPosts),
64
+ });
65
+ const toolFn = mockRegisterTool.mock.calls[0][2];
66
+ const result = await toolFn();
67
+ expect(global.fetch).toHaveBeenCalledWith('https://jsonplaceholder.typicode.com/posts');
68
+ expect(result).toEqual({
69
+ content: [
70
+ {
71
+ type: 'text',
72
+ text: JSON.stringify({ posts: mockPosts }),
73
+ },
74
+ ],
75
+ });
76
+ });
77
+ });
78
+ describe('poem-writer prompt implementation', () => {
79
+ it('should generate a prompt with a title', () => {
80
+ const promptFn = mockRegisterPrompt.mock.calls[0][2];
81
+ const result = promptFn({ title: 'My Poem' });
82
+ expect(result).toEqual({
83
+ messages: [
84
+ {
85
+ role: 'user',
86
+ content: {
87
+ type: 'text',
88
+ text: 'Write a haiku called My Poem. Note that a haiku is 5 syllables followed by 7 syllables followed by 5 syllables ',
89
+ },
90
+ },
91
+ ],
92
+ });
93
+ });
94
+ it('should generate a prompt with a title and mood', () => {
95
+ const promptFn = mockRegisterPrompt.mock.calls[0][2];
96
+ const result = promptFn({ title: 'My Poem', mood: 'sad' });
97
+ expect(result).toEqual({
98
+ messages: [
99
+ {
100
+ role: 'user',
101
+ content: {
102
+ type: 'text',
103
+ text: 'Write a haiku with the mood sad called My Poem. Note that a haiku is 5 syllables followed by 7 syllables followed by 5 syllables ',
104
+ },
105
+ },
106
+ ],
107
+ });
108
+ });
109
+ });
110
+ });
111
+ //# sourceMappingURL=example.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.test.js","sourceRoot":"","sources":["../../../../../../src/commands/extensions/examples/mcp-server/example.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
8
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
10
+ import { z } from 'zod';
11
+
12
+ // Mock the MCP server and transport
13
+ const mockRegisterTool = vi.fn();
14
+ const mockRegisterPrompt = vi.fn();
15
+ const mockConnect = vi.fn();
16
+
17
+ vi.mock('@modelcontextprotocol/sdk/server/mcp.js', () => ({
18
+ McpServer: vi.fn().mockImplementation(() => ({
19
+ registerTool: mockRegisterTool,
20
+ registerPrompt: mockRegisterPrompt,
21
+ connect: mockConnect,
22
+ })),
23
+ }));
24
+
25
+ vi.mock('@modelcontextprotocol/sdk/server/stdio.js', () => ({
26
+ StdioServerTransport: vi.fn(),
27
+ }));
28
+
29
+ describe('MCP Server Example', () => {
30
+ beforeEach(async () => {
31
+ // Dynamically import the server setup after mocks are in place
32
+ await import('./example.js');
33
+ });
34
+
35
+ afterEach(() => {
36
+ vi.clearAllMocks();
37
+ vi.resetModules();
38
+ });
39
+
40
+ it('should create an McpServer with the correct name and version', () => {
41
+ expect(McpServer).toHaveBeenCalledWith({
42
+ name: 'prompt-server',
43
+ version: '1.0.0',
44
+ });
45
+ });
46
+
47
+ it('should register the "fetch_posts" tool', () => {
48
+ expect(mockRegisterTool).toHaveBeenCalledWith(
49
+ 'fetch_posts',
50
+ {
51
+ description: 'Fetches a list of posts from a public API.',
52
+ inputSchema: z.object({}).shape,
53
+ },
54
+ expect.any(Function),
55
+ );
56
+ });
57
+
58
+ it('should register the "poem-writer" prompt', () => {
59
+ expect(mockRegisterPrompt).toHaveBeenCalledWith(
60
+ 'poem-writer',
61
+ {
62
+ title: 'Poem Writer',
63
+ description: 'Write a nice haiku',
64
+ argsSchema: expect.any(Object),
65
+ },
66
+ expect.any(Function),
67
+ );
68
+ });
69
+
70
+ it('should connect the server to an StdioServerTransport', () => {
71
+ expect(StdioServerTransport).toHaveBeenCalled();
72
+ expect(mockConnect).toHaveBeenCalledWith(expect.any(StdioServerTransport));
73
+ });
74
+
75
+ describe('fetch_posts tool implementation', () => {
76
+ it('should fetch posts and return a formatted response', async () => {
77
+ const mockPosts = [
78
+ { id: 1, title: 'Post 1' },
79
+ { id: 2, title: 'Post 2' },
80
+ ];
81
+ global.fetch = vi.fn().mockResolvedValue({
82
+ json: vi.fn().mockResolvedValue(mockPosts),
83
+ });
84
+
85
+ const toolFn = mockRegisterTool.mock.calls[0][2];
86
+ const result = await toolFn();
87
+
88
+ expect(global.fetch).toHaveBeenCalledWith(
89
+ 'https://jsonplaceholder.typicode.com/posts',
90
+ );
91
+ expect(result).toEqual({
92
+ content: [
93
+ {
94
+ type: 'text',
95
+ text: JSON.stringify({ posts: mockPosts }),
96
+ },
97
+ ],
98
+ });
99
+ });
100
+ });
101
+
102
+ describe('poem-writer prompt implementation', () => {
103
+ it('should generate a prompt with a title', () => {
104
+ const promptFn = mockRegisterPrompt.mock.calls[0][2];
105
+ const result = promptFn({ title: 'My Poem' });
106
+ expect(result).toEqual({
107
+ messages: [
108
+ {
109
+ role: 'user',
110
+ content: {
111
+ type: 'text',
112
+ text: 'Write a haiku called My Poem. Note that a haiku is 5 syllables followed by 7 syllables followed by 5 syllables ',
113
+ },
114
+ },
115
+ ],
116
+ });
117
+ });
118
+
119
+ it('should generate a prompt with a title and mood', () => {
120
+ const promptFn = mockRegisterPrompt.mock.calls[0][2];
121
+ const result = promptFn({ title: 'My Poem', mood: 'sad' });
122
+ expect(result).toEqual({
123
+ messages: [
124
+ {
125
+ role: 'user',
126
+ content: {
127
+ type: 'text',
128
+ text: 'Write a haiku with the mood sad called My Poem. Note that a haiku is 5 syllables followed by 7 syllables followed by 5 syllables ',
129
+ },
130
+ },
131
+ ],
132
+ });
133
+ });
134
+ });
135
+ });
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
9
+ import { z } from 'zod';
10
+
11
+ const server = new McpServer({
12
+ name: 'prompt-server',
13
+ version: '1.0.0',
14
+ });
15
+
16
+ server.registerTool(
17
+ 'fetch_posts',
18
+ {
19
+ description: 'Fetches a list of posts from a public API.',
20
+ inputSchema: z.object({}).shape,
21
+ },
22
+ async () => {
23
+ const apiResponse = await fetch(
24
+ 'https://jsonplaceholder.typicode.com/posts',
25
+ );
26
+ const posts = await apiResponse.json();
27
+ const response = { posts: posts.slice(0, 5) };
28
+ return {
29
+ content: [
30
+ {
31
+ type: 'text',
32
+ text: JSON.stringify(response),
33
+ },
34
+ ],
35
+ };
36
+ },
37
+ );
38
+
39
+ server.registerPrompt(
40
+ 'poem-writer',
41
+ {
42
+ title: 'Poem Writer',
43
+ description: 'Write a nice haiku',
44
+ argsSchema: { title: z.string(), mood: z.string().optional() },
45
+ },
46
+ ({ title, mood }) => ({
47
+ messages: [
48
+ {
49
+ role: 'user',
50
+ content: {
51
+ type: 'text',
52
+ text: `Write a haiku${mood ? ` with the mood ${mood}` : ''} called ${title}. Note that a haiku is 5 syllables followed by 7 syllables followed by 5 syllables `,
53
+ },
54
+ },
55
+ ],
56
+ }),
57
+ );
58
+
59
+ const transport = new StdioServerTransport();
60
+ await server.connect(transport);
@@ -4,7 +4,7 @@
4
4
  "mcpServers": {
5
5
  "nodeServer": {
6
6
  "command": "node",
7
- "args": ["${extensionPath}${/}example.js"],
7
+ "args": ["${extensionPath}${/}dist${/}example.js"],
8
8
  "cwd": "${extensionPath}"
9
9
  }
10
10
  }
@@ -4,6 +4,13 @@
4
4
  "description": "Example MCP Server for Gemini CLI Extension",
5
5
  "type": "module",
6
6
  "main": "example.js",
7
+ "scripts": {
8
+ "build": "tsc"
9
+ },
10
+ "devDependencies": {
11
+ "typescript": "~5.4.5",
12
+ "@types/node": "^20.11.25"
13
+ },
7
14
  "dependencies": {
8
15
  "@modelcontextprotocol/sdk": "^1.23.0",
9
16
  "zod": "^3.22.4"
@@ -0,0 +1,13 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "strict": true,
7
+ "esModuleInterop": true,
8
+ "skipLibCheck": true,
9
+ "forceConsistentCasingInFileNames": true,
10
+ "outDir": "./dist"
11
+ },
12
+ "include": ["example.ts"]
13
+ }
@@ -9,6 +9,6 @@ export declare function getExtensionAndManager(name: string): Promise<{
9
9
  extension: null;
10
10
  extensionManager: null;
11
11
  } | {
12
- extension: import("@google/gemini-cli-core/index.js").GeminiCLIExtension;
12
+ extension: import("@google/gemini-cli-core").GeminiCLIExtension;
13
13
  extensionManager: ExtensionManager;
14
14
  }>;
@@ -18,7 +18,7 @@ export async function handleDisable(args) {
18
18
  debugLogger.log(feedback);
19
19
  }
20
20
  export const disableCommand = {
21
- command: 'disable <name>',
21
+ command: 'disable <name> [--scope]',
22
22
  describe: 'Disables an agent skill.',
23
23
  builder: (yargs) => yargs
24
24
  .positional('name', {
@@ -1 +1 @@
1
- {"version":3,"file":"disable.js","sourceRoot":"","sources":["../../../../src/commands/skills/disable.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAiB;IACnD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,yBAAyB,CACxC,MAAM,EACN,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAC7D,CAAC;IACF,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EAAE,0BAA0B;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,mCAAmC;QAC7C,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,sDAAsD;QAChE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;KAC7B,CAAC;IACN,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GACT,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;QAC3E,MAAM,aAAa,CAAC;YAClB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAW;YAC5B,KAAK;SACN,CAAC,CAAC;QACH,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"disable.js","sourceRoot":"","sources":["../../../../src/commands/skills/disable.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAiB;IACnD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,yBAAyB,CACxC,MAAM,EACN,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAC7D,CAAC;IACF,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE,0BAA0B;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,mCAAmC;QAC7C,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,sDAAsD;QAChE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;KAC7B,CAAC;IACN,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GACT,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;QAC3E,MAAM,aAAa,CAAC;YAClB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAW;YAC5B,KAAK;SACN,CAAC,CAAC;QACH,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -72,7 +72,7 @@ describe('skills disable command', () => {
72
72
  });
73
73
  describe('disableCommand', () => {
74
74
  it('should have correct command and describe', () => {
75
- expect(disableCommand.command).toBe('disable <name>');
75
+ expect(disableCommand.command).toBe('disable <name> [--scope]');
76
76
  expect(disableCommand.describe).toBe('Disables an agent skill.');
77
77
  });
78
78
  });
@@ -1 +1 @@
1
- {"version":3,"file":"disable.test.js","sourceRoot":"","sources":["../../../../src/commands/skills/disable.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"disable.test.js","sourceRoot":"","sources":["../../../../src/commands/skills/disable.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { CommandModule } from 'yargs';
7
+ interface InstallArgs {
8
+ source: string;
9
+ scope?: 'user' | 'workspace';
10
+ path?: string;
11
+ }
12
+ export declare function handleInstall(args: InstallArgs): Promise<void>;
13
+ export declare const installCommand: CommandModule;
14
+ export {};
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { debugLogger } from '@google/gemini-cli-core';
7
+ import { getErrorMessage } from '../../utils/errors.js';
8
+ import { exitCli } from '../utils.js';
9
+ import { installSkill } from '../../utils/skillUtils.js';
10
+ import chalk from 'chalk';
11
+ export async function handleInstall(args) {
12
+ try {
13
+ const { source } = args;
14
+ const scope = args.scope ?? 'user';
15
+ const subpath = args.path;
16
+ const installedSkills = await installSkill(source, scope, subpath, (msg) => {
17
+ debugLogger.log(msg);
18
+ });
19
+ for (const skill of installedSkills) {
20
+ debugLogger.log(chalk.green(`Successfully installed skill: ${chalk.bold(skill.name)} (scope: ${scope}, location: ${skill.location})`));
21
+ }
22
+ }
23
+ catch (error) {
24
+ debugLogger.error(getErrorMessage(error));
25
+ await exitCli(1);
26
+ }
27
+ }
28
+ export const installCommand = {
29
+ command: 'install <source> [--scope] [--path]',
30
+ describe: 'Installs an agent skill from a git repository URL or a local path.',
31
+ builder: (yargs) => yargs
32
+ .positional('source', {
33
+ describe: 'The git repository URL or local path of the skill to install.',
34
+ type: 'string',
35
+ demandOption: true,
36
+ })
37
+ .option('scope', {
38
+ describe: 'The scope to install the skill into. Defaults to "user" (global).',
39
+ choices: ['user', 'workspace'],
40
+ default: 'user',
41
+ })
42
+ .option('path', {
43
+ describe: 'Sub-path within the repository to install from (only used for git repository sources).',
44
+ type: 'string',
45
+ })
46
+ .check((argv) => {
47
+ if (!argv.source) {
48
+ throw new Error('The source argument must be provided.');
49
+ }
50
+ return true;
51
+ }),
52
+ handler: async (argv) => {
53
+ await handleInstall({
54
+ source: argv['source'],
55
+ scope: argv['scope'],
56
+ path: argv['path'],
57
+ });
58
+ await exitCli();
59
+ },
60
+ };
61
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../../src/commands/skills/install.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAiB;IACnD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAE1B,MAAM,eAAe,GAAG,MAAM,YAAY,CACxC,MAAM,EACN,KAAK,EACL,OAAO,EACP,CAAC,GAAG,EAAE,EAAE;YACN,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CACF,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YACpC,WAAW,CAAC,GAAG,CACb,KAAK,CAAC,KAAK,CACT,iCAAiC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,eAAe,KAAK,CAAC,QAAQ,GAAG,CACzG,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,OAAO,EAAE,qCAAqC;IAC9C,QAAQ,EACN,oEAAoE;IACtE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,QAAQ,EAAE;QACpB,QAAQ,EACN,+DAA+D;QACjE,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,OAAO,EAAE;QACf,QAAQ,EACN,mEAAmE;QACrE,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;QAC9B,OAAO,EAAE,MAAM;KAChB,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,QAAQ,EACN,wFAAwF;QAC1F,IAAI,EAAE,QAAQ;KACf,CAAC;SACD,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,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,CAAW;YAChC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAyB;YAC5C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAuB;SACzC,CAAC,CAAC;QACH,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};