@google/gemini-cli 0.1.16 → 0.1.17-nightly.250808.60362e03

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 (181) hide show
  1. package/README.md +11 -1
  2. package/dist/google-gemini-cli-0.1.17.tgz +0 -0
  3. package/dist/package.json +6 -3
  4. package/dist/src/acp/acpPeer.js +72 -64
  5. package/dist/src/acp/acpPeer.js.map +1 -1
  6. package/dist/src/commands/mcp/add.d.ts +7 -0
  7. package/dist/src/commands/mcp/add.js +155 -0
  8. package/dist/src/commands/mcp/add.js.map +1 -0
  9. package/dist/src/commands/mcp/list.d.ts +8 -0
  10. package/dist/src/commands/mcp/list.js +110 -0
  11. package/dist/src/commands/mcp/list.js.map +1 -0
  12. package/dist/src/commands/mcp/remove.d.ts +7 -0
  13. package/dist/src/commands/mcp/remove.js +44 -0
  14. package/dist/src/commands/mcp/remove.js.map +1 -0
  15. package/dist/src/commands/mcp.d.ts +7 -0
  16. package/dist/src/commands/mcp.js +23 -0
  17. package/dist/src/commands/mcp.js.map +1 -0
  18. package/dist/src/config/config.d.ts +2 -2
  19. package/dist/src/config/config.js +87 -50
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/settings.d.ts +14 -2
  22. package/dist/src/config/settings.js +73 -8
  23. package/dist/src/config/settings.js.map +1 -1
  24. package/dist/src/gemini.js +3 -27
  25. package/dist/src/gemini.js.map +1 -1
  26. package/dist/src/generated/git-commit.d.ts +1 -1
  27. package/dist/src/generated/git-commit.js +2 -2
  28. package/dist/src/generated/git-commit.js.map +1 -1
  29. package/dist/src/nonInteractiveCli.js +20 -12
  30. package/dist/src/nonInteractiveCli.js.map +1 -1
  31. package/dist/src/services/BuiltinCommandLoader.js +1 -2
  32. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  33. package/dist/src/ui/App.js +50 -19
  34. package/dist/src/ui/App.js.map +1 -1
  35. package/dist/src/ui/IdeIntegrationNudge.d.ts +13 -0
  36. package/dist/src/ui/IdeIntegrationNudge.js +31 -0
  37. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -0
  38. package/dist/src/ui/commands/directoryCommand.js +21 -1
  39. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  40. package/dist/src/ui/commands/helpCommand.js +7 -6
  41. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  42. package/dist/src/ui/commands/ideCommand.js +68 -39
  43. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  44. package/dist/src/ui/commands/mcpCommand.js +15 -20
  45. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  46. package/dist/src/ui/commands/memoryCommand.js +3 -1
  47. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  48. package/dist/src/ui/commands/setupGithubCommand.js +57 -19
  49. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  50. package/dist/src/ui/commands/types.d.ts +2 -1
  51. package/dist/src/ui/commands/types.js.map +1 -1
  52. package/dist/src/ui/components/AsciiArt.d.ts +1 -0
  53. package/dist/src/ui/components/AsciiArt.js +10 -0
  54. package/dist/src/ui/components/AsciiArt.js.map +1 -1
  55. package/dist/src/ui/components/AuthInProgress.js +3 -3
  56. package/dist/src/ui/components/AuthInProgress.js.map +1 -1
  57. package/dist/src/ui/components/ContextSummaryDisplay.js +21 -24
  58. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  59. package/dist/src/ui/components/ContextUsageDisplay.d.ts +9 -0
  60. package/dist/src/ui/components/ContextUsageDisplay.js +14 -0
  61. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -0
  62. package/dist/src/ui/components/Footer.js +14 -5
  63. package/dist/src/ui/components/Footer.js.map +1 -1
  64. package/dist/src/ui/components/Header.d.ts +0 -1
  65. package/dist/src/ui/components/Header.js +13 -5
  66. package/dist/src/ui/components/Header.js.map +1 -1
  67. package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -0
  68. package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
  69. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  70. package/dist/src/ui/components/IDEContextDetailDisplay.js +14 -1
  71. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +1 -1
  72. package/dist/src/ui/components/InputPrompt.js +77 -8
  73. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  74. package/dist/src/ui/components/LoadingIndicator.js +10 -5
  75. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  76. package/dist/src/ui/components/PrepareLabel.d.ts +15 -0
  77. package/dist/src/ui/components/PrepareLabel.js +16 -0
  78. package/dist/src/ui/components/PrepareLabel.js.map +1 -0
  79. package/dist/src/ui/components/SuggestionsDisplay.d.ts +1 -0
  80. package/dist/src/ui/components/SuggestionsDisplay.js +3 -3
  81. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  82. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +29 -9
  83. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  84. package/dist/src/ui/hooks/atCommandProcessor.js +18 -8
  85. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  86. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
  87. package/dist/src/ui/hooks/slashCommandProcessor.js +9 -5
  88. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  89. package/dist/src/ui/hooks/useAtCompletion.d.ts +23 -0
  90. package/dist/src/ui/hooks/useAtCompletion.js +180 -0
  91. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -0
  92. package/dist/src/ui/hooks/useCommandCompletion.d.ts +29 -0
  93. package/dist/src/ui/hooks/useCommandCompletion.js +165 -0
  94. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -0
  95. package/dist/src/ui/hooks/useCompletion.d.ts +5 -5
  96. package/dist/src/ui/hooks/useCompletion.js +7 -423
  97. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  98. package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
  99. package/dist/src/ui/hooks/useGeminiStream.js +3 -4
  100. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  101. package/dist/src/ui/hooks/usePhraseCycler.js +1 -5
  102. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  103. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +1 -1
  104. package/dist/src/ui/hooks/useReactToolScheduler.js +15 -13
  105. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  106. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +19 -0
  107. package/dist/src/ui/hooks/useReverseSearchCompletion.js +56 -0
  108. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -0
  109. package/dist/src/ui/hooks/useShellHistory.d.ts +1 -0
  110. package/dist/src/ui/hooks/useShellHistory.js +30 -7
  111. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  112. package/dist/src/ui/hooks/useSlashCompletion.d.ts +20 -0
  113. package/dist/src/ui/hooks/useSlashCompletion.js +135 -0
  114. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -0
  115. package/dist/src/ui/hooks/vim.js +13 -4
  116. package/dist/src/ui/hooks/vim.js.map +1 -1
  117. package/dist/src/ui/semantic-colors.d.ts +7 -0
  118. package/dist/src/ui/semantic-colors.js +24 -0
  119. package/dist/src/ui/semantic-colors.js.map +1 -0
  120. package/dist/src/ui/themes/ansi-light.js +2 -1
  121. package/dist/src/ui/themes/ansi-light.js.map +1 -1
  122. package/dist/src/ui/themes/ansi.js +2 -1
  123. package/dist/src/ui/themes/ansi.js.map +1 -1
  124. package/dist/src/ui/themes/atom-one-dark.js +2 -1
  125. package/dist/src/ui/themes/atom-one-dark.js.map +1 -1
  126. package/dist/src/ui/themes/ayu-light.js +2 -1
  127. package/dist/src/ui/themes/ayu-light.js.map +1 -1
  128. package/dist/src/ui/themes/ayu.js +2 -1
  129. package/dist/src/ui/themes/ayu.js.map +1 -1
  130. package/dist/src/ui/themes/default-light.js +2 -1
  131. package/dist/src/ui/themes/default-light.js.map +1 -1
  132. package/dist/src/ui/themes/default.js +2 -1
  133. package/dist/src/ui/themes/default.js.map +1 -1
  134. package/dist/src/ui/themes/dracula.js +2 -1
  135. package/dist/src/ui/themes/dracula.js.map +1 -1
  136. package/dist/src/ui/themes/github-dark.js +2 -1
  137. package/dist/src/ui/themes/github-dark.js.map +1 -1
  138. package/dist/src/ui/themes/github-light.js +2 -1
  139. package/dist/src/ui/themes/github-light.js.map +1 -1
  140. package/dist/src/ui/themes/googlecode.js +2 -1
  141. package/dist/src/ui/themes/googlecode.js.map +1 -1
  142. package/dist/src/ui/themes/no-color.js +30 -1
  143. package/dist/src/ui/themes/no-color.js.map +1 -1
  144. package/dist/src/ui/themes/semantic-tokens.d.ts +37 -0
  145. package/dist/src/ui/themes/semantic-tokens.js +94 -0
  146. package/dist/src/ui/themes/semantic-tokens.js.map +1 -0
  147. package/dist/src/ui/themes/shades-of-purple.js +2 -1
  148. package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
  149. package/dist/src/ui/themes/theme-manager.d.ts +6 -0
  150. package/dist/src/ui/themes/theme-manager.js +7 -0
  151. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  152. package/dist/src/ui/themes/theme.d.ts +45 -2
  153. package/dist/src/ui/themes/theme.js +92 -107
  154. package/dist/src/ui/themes/theme.js.map +1 -1
  155. package/dist/src/ui/themes/xcode.js +2 -1
  156. package/dist/src/ui/themes/xcode.js.map +1 -1
  157. package/dist/src/ui/types.d.ts +11 -2
  158. package/dist/src/ui/types.js +1 -0
  159. package/dist/src/ui/types.js.map +1 -1
  160. package/dist/src/ui/utils/ConsolePatcher.d.ts +3 -1
  161. package/dist/src/ui/utils/ConsolePatcher.js +18 -8
  162. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  163. package/dist/src/ui/utils/commandUtils.d.ts +1 -0
  164. package/dist/src/ui/utils/commandUtils.js +22 -1
  165. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  166. package/dist/src/ui/utils/isNarrowWidth.d.ts +6 -0
  167. package/dist/src/ui/utils/isNarrowWidth.js +9 -0
  168. package/dist/src/ui/utils/isNarrowWidth.js.map +1 -0
  169. package/dist/src/utils/gitUtils.d.ts +21 -1
  170. package/dist/src/utils/gitUtils.js +70 -3
  171. package/dist/src/utils/gitUtils.js.map +1 -1
  172. package/dist/src/utils/handleAutoUpdate.js +3 -0
  173. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  174. package/dist/src/utils/resolvePath.d.ts +6 -0
  175. package/dist/src/utils/resolvePath.js +21 -0
  176. package/dist/src/utils/resolvePath.js.map +1 -0
  177. package/dist/src/utils/sandbox.js +416 -405
  178. package/dist/src/utils/sandbox.js.map +1 -1
  179. package/dist/tsconfig.tsbuildinfo +1 -1
  180. package/package.json +6 -3
  181. package/dist/google-gemini-cli-0.1.15.tgz +0 -0
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { loadSettings, SettingScope } from '../../config/settings.js';
7
+ async function removeMcpServer(name, options) {
8
+ const { scope } = options;
9
+ const settingsScope = scope === 'user' ? SettingScope.User : SettingScope.Workspace;
10
+ const settings = loadSettings(process.cwd());
11
+ const existingSettings = settings.forScope(settingsScope).settings;
12
+ const mcpServers = existingSettings.mcpServers || {};
13
+ if (!mcpServers[name]) {
14
+ console.log(`Server "${name}" not found in ${scope} settings.`);
15
+ return;
16
+ }
17
+ delete mcpServers[name];
18
+ settings.setValue(settingsScope, 'mcpServers', mcpServers);
19
+ console.log(`Server "${name}" removed from ${scope} settings.`);
20
+ }
21
+ export const removeCommand = {
22
+ command: 'remove <name>',
23
+ describe: 'Remove a server',
24
+ builder: (yargs) => yargs
25
+ .usage('Usage: gemini mcp remove [options] <name>')
26
+ .positional('name', {
27
+ describe: 'Name of the server',
28
+ type: 'string',
29
+ demandOption: true,
30
+ })
31
+ .option('scope', {
32
+ alias: 's',
33
+ describe: 'Configuration scope (user or project)',
34
+ type: 'string',
35
+ default: 'project',
36
+ choices: ['user', 'project'],
37
+ }),
38
+ handler: async (argv) => {
39
+ await removeMcpServer(argv.name, {
40
+ scope: argv.scope,
41
+ });
42
+ },
43
+ };
44
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/commands/mcp/remove.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEtE,KAAK,UAAU,eAAe,CAC5B,IAAY,EACZ,OAEC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,MAAM,aAAa,GACjB,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC;IAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAE7C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC;IACnE,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,IAAI,EAAE,CAAC;IAErD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,kBAAkB,KAAK,YAAY,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAExB,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IAE3D,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,kBAAkB,KAAK,YAAY,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,OAAO,EAAE,eAAe;IACxB,QAAQ,EAAE,iBAAiB;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,KAAK,CAAC,2CAA2C,CAAC;SAClD,UAAU,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,oBAAoB;QAC9B,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,uCAAuC;QACjD,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,eAAe,CAAC,IAAI,CAAC,IAAc,EAAE;YACzC,KAAK,EAAE,IAAI,CAAC,KAAe;SAC5B,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { CommandModule } from 'yargs';
7
+ export declare const mcpCommand: CommandModule;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { addCommand } from './mcp/add.js';
7
+ import { removeCommand } from './mcp/remove.js';
8
+ import { listCommand } from './mcp/list.js';
9
+ export const mcpCommand = {
10
+ command: 'mcp',
11
+ describe: 'Manage MCP servers',
12
+ builder: (yargs) => yargs
13
+ .command(addCommand)
14
+ .command(removeCommand)
15
+ .command(listCommand)
16
+ .demandCommand(1, 'You need at least one command before continuing.')
17
+ .version(false),
18
+ handler: () => {
19
+ // yargs will automatically show help if no subcommand is provided
20
+ // thanks to demandCommand(1) in the builder.
21
+ },
22
+ };
23
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,CAAC,MAAM,UAAU,GAAkB;IACvC,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,oBAAoB;IAC9B,OAAO,EAAE,CAAC,KAAW,EAAE,EAAE,CACvB,KAAK;SACF,OAAO,CAAC,UAAU,CAAC;SACnB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,WAAW,CAAC;SACpB,aAAa,CAAC,CAAC,EAAE,kDAAkD,CAAC;SACpE,OAAO,CAAC,KAAK,CAAC;IACnB,OAAO,EAAE,GAAG,EAAE;QACZ,kEAAkE;QAClE,6CAA6C;IAC/C,CAAC;CACF,CAAC"}
@@ -28,13 +28,13 @@ export interface CliArgs {
28
28
  experimentalAcp: boolean | undefined;
29
29
  extensions: string[] | undefined;
30
30
  listExtensions: boolean | undefined;
31
- ideMode?: boolean | undefined;
32
31
  ideModeFeature: boolean | undefined;
33
32
  proxy: string | undefined;
34
33
  includeDirectories: string[] | undefined;
34
+ loadMemoryFromIncludeDirectories: boolean | undefined;
35
35
  }
36
36
  export declare function parseArguments(): Promise<CliArgs>;
37
- export declare function loadHierarchicalGeminiMemory(currentWorkingDirectory: string, debugMode: boolean, fileService: FileDiscoveryService, settings: Settings, extensionContextFilePaths?: string[], memoryImportFormat?: 'flat' | 'tree', fileFilteringOptions?: FileFilteringOptions): Promise<{
37
+ export declare function loadHierarchicalGeminiMemory(currentWorkingDirectory: string, includeDirectoriesToReadGemini: readonly string[] | undefined, debugMode: boolean, fileService: FileDiscoveryService, settings: Settings, extensionContextFilePaths?: string[], memoryImportFormat?: 'flat' | 'tree', fileFilteringOptions?: FileFilteringOptions): Promise<{
38
38
  memoryContent: string;
39
39
  fileCount: number;
40
40
  }>;
@@ -9,10 +9,12 @@ import { homedir } from 'node:os';
9
9
  import yargs from 'yargs/yargs';
10
10
  import { hideBin } from 'yargs/helpers';
11
11
  import process from 'node:process';
12
- import { Config, loadServerHierarchicalMemory, setGeminiMdFilename as setServerGeminiMdFilename, getCurrentGeminiMdFilename, ApprovalMode, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, FileDiscoveryService, IdeClient, } from '@google/gemini-cli-core';
12
+ import { mcpCommand } from '../commands/mcp.js';
13
+ import { Config, loadServerHierarchicalMemory, setGeminiMdFilename as setServerGeminiMdFilename, getCurrentGeminiMdFilename, ApprovalMode, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, FileDiscoveryService, ShellTool, EditTool, WriteFileTool, } from '@google/gemini-cli-core';
13
14
  import { annotateActiveExtensions } from './extension.js';
14
15
  import { getCliVersion } from '../utils/version.js';
15
16
  import { loadSandboxConfig } from './sandboxConfig.js';
17
+ import { resolvePath } from '../utils/resolvePath.js';
16
18
  // Simple console logger for now - replace with actual logger if available
17
19
  const logger = {
18
20
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -25,12 +27,13 @@ const logger = {
25
27
  export async function parseArguments() {
26
28
  const yargsInstance = yargs(hideBin(process.argv))
27
29
  .scriptName('gemini')
28
- .usage('$0 [options]', 'Gemini CLI - Launch an interactive CLI, use -p/--prompt for non-interactive mode')
30
+ .usage('Usage: gemini [options] [command]\n\nGemini CLI - Launch an interactive CLI, use -p/--prompt for non-interactive mode')
31
+ .command('$0', 'Launch Gemini CLI', (yargsInstance) => yargsInstance
29
32
  .option('model', {
30
33
  alias: 'm',
31
34
  type: 'string',
32
35
  description: `Model`,
33
- default: process.env.GEMINI_MODEL || DEFAULT_GEMINI_MODEL,
36
+ default: process.env.GEMINI_MODEL,
34
37
  })
35
38
  .option('prompt', {
36
39
  alias: 'p',
@@ -149,19 +152,33 @@ export async function parseArguments() {
149
152
  // Handle comma-separated values
150
153
  dirs.flatMap((dir) => dir.split(',').map((d) => d.trim())),
151
154
  })
152
- .version(await getCliVersion()) // This will enable the --version flag based on package.json
153
- .alias('v', 'version')
154
- .help()
155
- .alias('h', 'help')
156
- .strict()
155
+ .option('load-memory-from-include-directories', {
156
+ type: 'boolean',
157
+ description: 'If true, when refreshing memory, GEMINI.md files should be loaded from all directories that are added. If false, GEMINI.md files should only be loaded from the primary working directory.',
158
+ default: false,
159
+ })
157
160
  .check((argv) => {
158
161
  if (argv.prompt && argv.promptInteractive) {
159
162
  throw new Error('Cannot use both --prompt (-p) and --prompt-interactive (-i) together');
160
163
  }
161
164
  return true;
162
- });
165
+ }))
166
+ // Register MCP subcommands
167
+ .command(mcpCommand)
168
+ .version(await getCliVersion()) // This will enable the --version flag based on package.json
169
+ .alias('v', 'version')
170
+ .help()
171
+ .alias('h', 'help')
172
+ .strict()
173
+ .demandCommand(0, 0); // Allow base command to run with no subcommands
163
174
  yargsInstance.wrap(yargsInstance.terminalWidth());
164
- const result = yargsInstance.parseSync();
175
+ const result = await yargsInstance.parse();
176
+ // Handle case where MCP subcommands are executed - they should exit the process
177
+ // and not return to main CLI logic
178
+ if (result._.length > 0 && result._[0] === 'mcp') {
179
+ // MCP commands handle their own execution and process exit
180
+ process.exit(0);
181
+ }
165
182
  // The import format is now only controlled by settings.memoryImportFormat
166
183
  // We no longer accept it as a CLI argument
167
184
  return result;
@@ -169,7 +186,7 @@ export async function parseArguments() {
169
186
  // This function is now a thin wrapper around the server's implementation.
170
187
  // It's kept in the CLI for now as App.tsx directly calls it for memory refresh.
171
188
  // TODO: Consider if App.tsx should get memory via a server call or if Config should refresh itself.
172
- export async function loadHierarchicalGeminiMemory(currentWorkingDirectory, debugMode, fileService, settings, extensionContextFilePaths = [], memoryImportFormat = 'tree', fileFilteringOptions) {
189
+ export async function loadHierarchicalGeminiMemory(currentWorkingDirectory, includeDirectoriesToReadGemini = [], debugMode, fileService, settings, extensionContextFilePaths = [], memoryImportFormat = 'tree', fileFilteringOptions) {
173
190
  // FIX: Use real, canonical paths for a reliable comparison to handle symlinks.
174
191
  const realCwd = fs.realpathSync(path.resolve(currentWorkingDirectory));
175
192
  const realHome = fs.realpathSync(path.resolve(homedir()));
@@ -181,18 +198,18 @@ export async function loadHierarchicalGeminiMemory(currentWorkingDirectory, debu
181
198
  logger.debug(`CLI: Delegating hierarchical memory load to server for CWD: ${currentWorkingDirectory} (memoryImportFormat: ${memoryImportFormat})`);
182
199
  }
183
200
  // Directly call the server function with the corrected path.
184
- return loadServerHierarchicalMemory(effectiveCwd, debugMode, fileService, extensionContextFilePaths, memoryImportFormat, fileFilteringOptions, settings.memoryDiscoveryMaxDirs);
201
+ return loadServerHierarchicalMemory(effectiveCwd, includeDirectoriesToReadGemini, debugMode, fileService, extensionContextFilePaths, memoryImportFormat, fileFilteringOptions, settings.memoryDiscoveryMaxDirs);
185
202
  }
186
203
  export async function loadCliConfig(settings, extensions, sessionId, argv) {
187
204
  const debugMode = argv.debug ||
188
205
  [process.env.DEBUG, process.env.DEBUG_MODE].some((v) => v === 'true' || v === '1') ||
189
206
  false;
190
207
  const memoryImportFormat = settings.memoryImportFormat || 'tree';
191
- const ideMode = (argv.ideMode ?? settings.ideMode ?? false) &&
192
- process.env.TERM_PROGRAM === 'vscode';
193
- const ideModeFeature = (argv.ideModeFeature ?? settings.ideModeFeature ?? false) &&
194
- !process.env.SANDBOX;
195
- const ideClient = IdeClient.getInstance(ideMode && ideModeFeature);
208
+ const ideMode = settings.ideMode ?? false;
209
+ const ideModeFeature = argv.ideModeFeature ?? settings.ideModeFeature ?? false;
210
+ const folderTrustFeature = settings.folderTrustFeature ?? false;
211
+ const folderTrustSetting = settings.folderTrust ?? false;
212
+ const folderTrust = folderTrustFeature && folderTrustSetting;
196
213
  const allExtensions = annotateActiveExtensions(extensions, argv.extensions || []);
197
214
  const activeExtensions = extensions.filter((_, i) => allExtensions[i].isActive);
198
215
  // Set the context filename in the server's memoryTool module BEFORE loading memory
@@ -212,17 +229,24 @@ export async function loadCliConfig(settings, extensions, sessionId, argv) {
212
229
  ...DEFAULT_MEMORY_FILE_FILTERING_OPTIONS,
213
230
  ...settings.fileFiltering,
214
231
  };
232
+ const includeDirectories = (settings.includeDirectories || [])
233
+ .map(resolvePath)
234
+ .concat((argv.includeDirectories || []).map(resolvePath));
215
235
  // Call the (now wrapper) loadHierarchicalGeminiMemory which calls the server's version
216
- const { memoryContent, fileCount } = await loadHierarchicalGeminiMemory(process.cwd(), debugMode, fileService, settings, extensionContextFilePaths, memoryImportFormat, fileFiltering);
236
+ const { memoryContent, fileCount } = await loadHierarchicalGeminiMemory(process.cwd(), settings.loadMemoryFromIncludeDirectories ? includeDirectories : [], debugMode, fileService, settings, extensionContextFilePaths, memoryImportFormat, fileFiltering);
217
237
  let mcpServers = mergeMcpServers(settings, activeExtensions);
218
- const excludeTools = mergeExcludeTools(settings, activeExtensions);
238
+ const question = argv.promptInteractive || argv.prompt || '';
239
+ const approvalMode = argv.yolo || false ? ApprovalMode.YOLO : ApprovalMode.DEFAULT;
240
+ const interactive = !!argv.promptInteractive || (process.stdin.isTTY && question.length === 0);
241
+ // In non-interactive and non-yolo mode, exclude interactive built in tools.
242
+ const extraExcludes = !interactive && approvalMode !== ApprovalMode.YOLO
243
+ ? [ShellTool.Name, EditTool.Name, WriteFileTool.Name]
244
+ : undefined;
245
+ const excludeTools = mergeExcludeTools(settings, activeExtensions, extraExcludes);
219
246
  const blockedMcpServers = [];
220
247
  if (!argv.allowedMcpServerNames) {
221
248
  if (settings.allowMCPServers) {
222
- const allowedNames = new Set(settings.allowMCPServers.filter(Boolean));
223
- if (allowedNames.size > 0) {
224
- mcpServers = Object.fromEntries(Object.entries(mcpServers).filter(([key]) => allowedNames.has(key)));
225
- }
249
+ mcpServers = allowedMcpServers(mcpServers, settings.allowMCPServers, blockedMcpServers);
226
250
  }
227
251
  if (settings.excludeMCPServers) {
228
252
  const excludedNames = new Set(settings.excludeMCPServers.filter(Boolean));
@@ -232,26 +256,7 @@ export async function loadCliConfig(settings, extensions, sessionId, argv) {
232
256
  }
233
257
  }
234
258
  if (argv.allowedMcpServerNames) {
235
- const allowedNames = new Set(argv.allowedMcpServerNames.filter(Boolean));
236
- if (allowedNames.size > 0) {
237
- mcpServers = Object.fromEntries(Object.entries(mcpServers).filter(([key, server]) => {
238
- const isAllowed = allowedNames.has(key);
239
- if (!isAllowed) {
240
- blockedMcpServers.push({
241
- name: key,
242
- extensionName: server.extensionName || '',
243
- });
244
- }
245
- return isAllowed;
246
- }));
247
- }
248
- else {
249
- blockedMcpServers.push(...Object.entries(mcpServers).map(([key, server]) => ({
250
- name: key,
251
- extensionName: server.extensionName || '',
252
- })));
253
- mcpServers = {};
254
- }
259
+ mcpServers = allowedMcpServers(mcpServers, argv.allowedMcpServerNames, blockedMcpServers);
255
260
  }
256
261
  const sandboxConfig = await loadSandboxConfig(settings, argv);
257
262
  return new Config({
@@ -259,9 +264,12 @@ export async function loadCliConfig(settings, extensions, sessionId, argv) {
259
264
  embeddingModel: DEFAULT_GEMINI_EMBEDDING_MODEL,
260
265
  sandbox: sandboxConfig,
261
266
  targetDir: process.cwd(),
262
- includeDirectories: argv.includeDirectories,
267
+ includeDirectories,
268
+ loadMemoryFromIncludeDirectories: argv.loadMemoryFromIncludeDirectories ||
269
+ settings.loadMemoryFromIncludeDirectories ||
270
+ false,
263
271
  debugMode,
264
- question: argv.promptInteractive || argv.prompt || '',
272
+ question,
265
273
  fullContext: argv.allFiles || argv.all_files || false,
266
274
  coreTools: settings.coreTools || undefined,
267
275
  excludeTools,
@@ -271,7 +279,7 @@ export async function loadCliConfig(settings, extensions, sessionId, argv) {
271
279
  mcpServers,
272
280
  userMemory: memoryContent,
273
281
  geminiMdFileCount: fileCount,
274
- approvalMode: argv.yolo || false ? ApprovalMode.YOLO : ApprovalMode.DEFAULT,
282
+ approvalMode,
275
283
  showMemoryUsage: argv.showMemoryUsage ||
276
284
  argv.show_memory_usage ||
277
285
  settings.showMemoryUsage ||
@@ -303,7 +311,7 @@ export async function loadCliConfig(settings, extensions, sessionId, argv) {
303
311
  cwd: process.cwd(),
304
312
  fileDiscoveryService: fileService,
305
313
  bugCommand: settings.bugCommand,
306
- model: argv.model,
314
+ model: argv.model || settings.model || DEFAULT_GEMINI_MODEL,
307
315
  extensionContextFilePaths,
308
316
  maxSessionTurns: settings.maxSessionTurns ?? -1,
309
317
  experimentalAcp: argv.experimentalAcp || false,
@@ -314,9 +322,35 @@ export async function loadCliConfig(settings, extensions, sessionId, argv) {
314
322
  summarizeToolOutput: settings.summarizeToolOutput,
315
323
  ideMode,
316
324
  ideModeFeature,
317
- ideClient,
325
+ chatCompression: settings.chatCompression,
326
+ folderTrustFeature,
327
+ interactive,
328
+ folderTrust,
318
329
  });
319
330
  }
331
+ function allowedMcpServers(mcpServers, allowMCPServers, blockedMcpServers) {
332
+ const allowedNames = new Set(allowMCPServers.filter(Boolean));
333
+ if (allowedNames.size > 0) {
334
+ mcpServers = Object.fromEntries(Object.entries(mcpServers).filter(([key, server]) => {
335
+ const isAllowed = allowedNames.has(key);
336
+ if (!isAllowed) {
337
+ blockedMcpServers.push({
338
+ name: key,
339
+ extensionName: server.extensionName || '',
340
+ });
341
+ }
342
+ return isAllowed;
343
+ }));
344
+ }
345
+ else {
346
+ blockedMcpServers.push(...Object.entries(mcpServers).map(([key, server]) => ({
347
+ name: key,
348
+ extensionName: server.extensionName || '',
349
+ })));
350
+ mcpServers = {};
351
+ }
352
+ return mcpServers;
353
+ }
320
354
  function mergeMcpServers(settings, extensions) {
321
355
  const mcpServers = { ...(settings.mcpServers || {}) };
322
356
  for (const extension of extensions) {
@@ -333,8 +367,11 @@ function mergeMcpServers(settings, extensions) {
333
367
  }
334
368
  return mcpServers;
335
369
  }
336
- function mergeExcludeTools(settings, extensions) {
337
- const allExcludeTools = new Set(settings.excludeTools || []);
370
+ function mergeExcludeTools(settings, extensions, extraExcludes) {
371
+ const allExcludeTools = new Set([
372
+ ...(settings.excludeTools || []),
373
+ ...(extraExcludes || []),
374
+ ]);
338
375
  for (const extension of extensions) {
339
376
  for (const tool of extension.config.excludeTools || []) {
340
377
  allExcludeTools.add(tool);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,14 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { MCPServerConfig, BugCommandSettings, TelemetrySettings, AuthType } from '@google/gemini-cli-core';
6
+ import { MCPServerConfig, BugCommandSettings, ChatCompressionSettings, TelemetrySettings, AuthType } from '@google/gemini-cli-core';
7
7
  import { CustomTheme } from '../ui/themes/theme.js';
8
8
  export declare const SETTINGS_DIRECTORY_NAME = ".gemini";
9
9
  export declare const USER_SETTINGS_DIR: string;
10
10
  export declare const USER_SETTINGS_PATH: string;
11
+ export declare const DEFAULT_EXCLUDED_ENV_VARS: string[];
11
12
  export declare function getSystemSettingsPath(): string;
13
+ export declare function getWorkspaceSettingsPath(workspaceDir: string): string;
12
14
  export type DnsResolutionOrder = 'ipv4first' | 'verbatim';
13
15
  export declare enum SettingScope {
14
16
  User = "User",
@@ -47,6 +49,8 @@ export interface Settings {
47
49
  bugCommand?: BugCommandSettings;
48
50
  checkpointing?: CheckpointingSettings;
49
51
  autoConfigureMaxOldSpaceSize?: boolean;
52
+ /** The model name to use (e.g 'gemini-9.0-pro') */
53
+ model?: string;
50
54
  fileFiltering?: {
51
55
  respectGitIgnore?: boolean;
52
56
  respectGeminiIgnore?: boolean;
@@ -61,9 +65,17 @@ export interface Settings {
61
65
  memoryImportFormat?: 'tree' | 'flat';
62
66
  ideModeFeature?: boolean;
63
67
  ideMode?: boolean;
68
+ folderTrustFeature?: boolean;
69
+ folderTrust?: boolean;
70
+ hasSeenIdeIntegrationNudge?: boolean;
64
71
  disableAutoUpdate?: boolean;
72
+ disableUpdateNag?: boolean;
65
73
  memoryDiscoveryMaxDirs?: number;
74
+ excludedProjectEnvVars?: string[];
66
75
  dnsResolutionOrder?: DnsResolutionOrder;
76
+ includeDirectories?: string[];
77
+ loadMemoryFromIncludeDirectories?: boolean;
78
+ chatCompression?: ChatCompressionSettings;
67
79
  }
68
80
  export interface SettingsError {
69
81
  message: string;
@@ -86,7 +98,7 @@ export declare class LoadedSettings {
86
98
  setValue<K extends keyof Settings>(scope: SettingScope, key: K, value: Settings[K]): void;
87
99
  }
88
100
  export declare function setUpCloudShellEnvironment(envFilePath: string | null): void;
89
- export declare function loadEnvironment(): void;
101
+ export declare function loadEnvironment(settings?: Settings): void;
90
102
  /**
91
103
  * Loads settings from user and workspace directories.
92
104
  * Project settings override user settings.
@@ -14,6 +14,7 @@ import { DefaultDark } from '../ui/themes/default.js';
14
14
  export const SETTINGS_DIRECTORY_NAME = '.gemini';
15
15
  export const USER_SETTINGS_DIR = path.join(homedir(), SETTINGS_DIRECTORY_NAME);
16
16
  export const USER_SETTINGS_PATH = path.join(USER_SETTINGS_DIR, 'settings.json');
17
+ export const DEFAULT_EXCLUDED_ENV_VARS = ['DEBUG', 'DEBUG_MODE'];
17
18
  export function getSystemSettingsPath() {
18
19
  if (process.env.GEMINI_CLI_SYSTEM_SETTINGS_PATH) {
19
20
  return process.env.GEMINI_CLI_SYSTEM_SETTINGS_PATH;
@@ -28,6 +29,9 @@ export function getSystemSettingsPath() {
28
29
  return '/etc/gemini-cli/settings.json';
29
30
  }
30
31
  }
32
+ export function getWorkspaceSettingsPath(workspaceDir) {
33
+ return path.join(workspaceDir, SETTINGS_DIRECTORY_NAME, 'settings.json');
34
+ }
31
35
  export var SettingScope;
32
36
  (function (SettingScope) {
33
37
  SettingScope["User"] = "User";
@@ -54,9 +58,12 @@ export class LoadedSettings {
54
58
  const system = this.system.settings;
55
59
  const user = this.user.settings;
56
60
  const workspace = this.workspace.settings;
61
+ // folderTrust is not supported at workspace level.
62
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
63
+ const { folderTrust, ...workspaceWithoutFolderTrust } = workspace;
57
64
  return {
58
65
  ...user,
59
- ...workspace,
66
+ ...workspaceWithoutFolderTrust,
60
67
  ...system,
61
68
  customThemes: {
62
69
  ...(user.customThemes || {}),
@@ -68,6 +75,16 @@ export class LoadedSettings {
68
75
  ...(workspace.mcpServers || {}),
69
76
  ...(system.mcpServers || {}),
70
77
  },
78
+ includeDirectories: [
79
+ ...(system.includeDirectories || []),
80
+ ...(user.includeDirectories || []),
81
+ ...(workspace.includeDirectories || []),
82
+ ],
83
+ chatCompression: {
84
+ ...(system.chatCompression || {}),
85
+ ...(user.chatCompression || {}),
86
+ ...(workspace.chatCompression || {}),
87
+ },
71
88
  };
72
89
  }
73
90
  forScope(scope) {
@@ -174,13 +191,51 @@ export function setUpCloudShellEnvironment(envFilePath) {
174
191
  process.env.GOOGLE_CLOUD_PROJECT = 'cloudshell-gca';
175
192
  }
176
193
  }
177
- export function loadEnvironment() {
194
+ export function loadEnvironment(settings) {
178
195
  const envFilePath = findEnvFile(process.cwd());
196
+ // Cloud Shell environment variable handling
179
197
  if (process.env.CLOUD_SHELL === 'true') {
180
198
  setUpCloudShellEnvironment(envFilePath);
181
199
  }
200
+ // If no settings provided, try to load workspace settings for exclusions
201
+ let resolvedSettings = settings;
202
+ if (!resolvedSettings) {
203
+ const workspaceSettingsPath = getWorkspaceSettingsPath(process.cwd());
204
+ try {
205
+ if (fs.existsSync(workspaceSettingsPath)) {
206
+ const workspaceContent = fs.readFileSync(workspaceSettingsPath, 'utf-8');
207
+ const parsedWorkspaceSettings = JSON.parse(stripJsonComments(workspaceContent));
208
+ resolvedSettings = resolveEnvVarsInObject(parsedWorkspaceSettings);
209
+ }
210
+ }
211
+ catch (_e) {
212
+ // Ignore errors loading workspace settings
213
+ }
214
+ }
182
215
  if (envFilePath) {
183
- dotenv.config({ path: envFilePath, quiet: true });
216
+ // Manually parse and load environment variables to handle exclusions correctly.
217
+ // This avoids modifying environment variables that were already set from the shell.
218
+ try {
219
+ const envFileContent = fs.readFileSync(envFilePath, 'utf-8');
220
+ const parsedEnv = dotenv.parse(envFileContent);
221
+ const excludedVars = resolvedSettings?.excludedProjectEnvVars || DEFAULT_EXCLUDED_ENV_VARS;
222
+ const isProjectEnvFile = !envFilePath.includes(GEMINI_DIR);
223
+ for (const key in parsedEnv) {
224
+ if (Object.hasOwn(parsedEnv, key)) {
225
+ // If it's a project .env file, skip loading excluded variables.
226
+ if (isProjectEnvFile && excludedVars.includes(key)) {
227
+ continue;
228
+ }
229
+ // Load variable only if it's not already set in the environment.
230
+ if (!Object.hasOwn(process.env, key)) {
231
+ process.env[key] = parsedEnv[key];
232
+ }
233
+ }
234
+ }
235
+ }
236
+ catch (_e) {
237
+ // Errors are ignored to match the behavior of `dotenv.config({ quiet: true })`.
238
+ }
184
239
  }
185
240
  }
186
241
  /**
@@ -188,13 +243,12 @@ export function loadEnvironment() {
188
243
  * Project settings override user settings.
189
244
  */
190
245
  export function loadSettings(workspaceDir) {
191
- loadEnvironment();
192
246
  let systemSettings = {};
193
247
  let userSettings = {};
194
248
  let workspaceSettings = {};
195
249
  const settingsErrors = [];
196
250
  const systemSettingsPath = getSystemSettingsPath();
197
- // FIX: Resolve paths to their canonical representation to handle symlinks
251
+ // Resolve paths to their canonical representation to handle symlinks
198
252
  const resolvedWorkspaceDir = path.resolve(workspaceDir);
199
253
  const resolvedHomeDir = path.resolve(homedir());
200
254
  let realWorkspaceDir = resolvedWorkspaceDir;
@@ -207,6 +261,7 @@ export function loadSettings(workspaceDir) {
207
261
  }
208
262
  // We expect homedir to always exist and be resolvable.
209
263
  const realHomeDir = fs.realpathSync(resolvedHomeDir);
264
+ const workspaceSettingsPath = getWorkspaceSettingsPath(workspaceDir);
210
265
  // Load system settings
211
266
  try {
212
267
  if (fs.existsSync(systemSettingsPath)) {
@@ -242,8 +297,6 @@ export function loadSettings(workspaceDir) {
242
297
  path: USER_SETTINGS_PATH,
243
298
  });
244
299
  }
245
- const workspaceSettingsPath = path.join(workspaceDir, SETTINGS_DIRECTORY_NAME, 'settings.json');
246
- // This comparison is now much more reliable.
247
300
  if (realWorkspaceDir !== realHomeDir) {
248
301
  // Load workspace settings
249
302
  try {
@@ -267,7 +320,8 @@ export function loadSettings(workspaceDir) {
267
320
  });
268
321
  }
269
322
  }
270
- return new LoadedSettings({
323
+ // Create LoadedSettings first
324
+ const loadedSettings = new LoadedSettings({
271
325
  path: systemSettingsPath,
272
326
  settings: systemSettings,
273
327
  }, {
@@ -277,6 +331,17 @@ export function loadSettings(workspaceDir) {
277
331
  path: workspaceSettingsPath,
278
332
  settings: workspaceSettings,
279
333
  }, settingsErrors);
334
+ // Validate chatCompression settings
335
+ const chatCompression = loadedSettings.merged.chatCompression;
336
+ const threshold = chatCompression?.contextPercentageThreshold;
337
+ if (threshold != null &&
338
+ (typeof threshold !== 'number' || threshold < 0 || threshold > 1)) {
339
+ console.warn(`Invalid value for chatCompression.contextPercentageThreshold: "${threshold}". Please use a value between 0 and 1. Using default compression settings.`);
340
+ delete loadedSettings.merged.chatCompression;
341
+ }
342
+ // Load environment with merged settings
343
+ loadEnvironment(loadedSettings.merged);
344
+ return loadedSettings;
280
345
  }
281
346
  export function saveSettings(settingsFile) {
282
347
  try {