@google/gemini-cli 0.1.10-dev.14 → 0.1.10

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 (143) hide show
  1. package/README.md +16 -2
  2. package/dist/google-gemini-cli-0.1.9.tgz +0 -0
  3. package/dist/package.json +7 -7
  4. package/dist/src/config/auth.js +6 -5
  5. package/dist/src/config/auth.js.map +1 -1
  6. package/dist/src/config/config.d.ts +0 -1
  7. package/dist/src/config/config.js +62 -50
  8. package/dist/src/config/config.js.map +1 -1
  9. package/dist/src/config/extension.d.ts +1 -0
  10. package/dist/src/config/extension.js +34 -6
  11. package/dist/src/config/extension.js.map +1 -1
  12. package/dist/src/config/sandboxConfig.d.ts +1 -1
  13. package/dist/src/config/sandboxConfig.js +1 -1
  14. package/dist/src/config/sandboxConfig.js.map +1 -1
  15. package/dist/src/config/settings.d.ts +7 -2
  16. package/dist/src/config/settings.js +101 -3
  17. package/dist/src/config/settings.js.map +1 -1
  18. package/dist/src/gemini.js +30 -21
  19. package/dist/src/gemini.js.map +1 -1
  20. package/dist/src/generated/git-commit.d.ts +1 -1
  21. package/dist/src/generated/git-commit.js +1 -1
  22. package/dist/src/nonInteractiveCli.d.ts +1 -1
  23. package/dist/src/nonInteractiveCli.js +4 -2
  24. package/dist/src/nonInteractiveCli.js.map +1 -1
  25. package/dist/src/services/CommandService.d.ts +13 -0
  26. package/dist/src/services/CommandService.js +30 -0
  27. package/dist/src/services/CommandService.js.map +1 -0
  28. package/dist/src/ui/App.js +71 -12
  29. package/dist/src/ui/App.js.map +1 -1
  30. package/dist/src/ui/commands/clearCommand.d.ts +7 -0
  31. package/dist/src/ui/commands/clearCommand.js +15 -0
  32. package/dist/src/ui/commands/clearCommand.js.map +1 -0
  33. package/dist/src/ui/commands/helpCommand.d.ts +7 -0
  34. package/dist/src/ui/commands/helpCommand.js +18 -0
  35. package/dist/src/ui/commands/helpCommand.js.map +1 -0
  36. package/dist/src/ui/commands/memoryCommand.d.ts +7 -0
  37. package/dist/src/ui/commands/memoryCommand.js +81 -0
  38. package/dist/src/ui/commands/memoryCommand.js.map +1 -0
  39. package/dist/src/ui/commands/types.d.ts +63 -0
  40. package/dist/src/{gemini.test.d.ts → ui/commands/types.js} +1 -0
  41. package/dist/src/ui/commands/types.js.map +1 -0
  42. package/dist/src/ui/components/AuthDialog.js +36 -8
  43. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  44. package/dist/src/ui/components/Help.d.ts +1 -1
  45. package/dist/src/ui/components/Help.js +3 -2
  46. package/dist/src/ui/components/Help.js.map +1 -1
  47. package/dist/src/ui/components/InputPrompt.d.ts +2 -1
  48. package/dist/src/ui/components/InputPrompt.js +106 -157
  49. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  50. package/dist/src/ui/components/LoadingIndicator.js +2 -1
  51. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  52. package/dist/src/ui/components/ThemeDialog.js +10 -9
  53. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  54. package/dist/src/ui/components/messages/CompressionMessage.js +1 -1
  55. package/dist/src/ui/components/shared/MaxSizedBox.js +1 -1
  56. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  57. package/dist/src/ui/components/shared/text-buffer.d.ts +72 -16
  58. package/dist/src/ui/components/shared/text-buffer.js +564 -676
  59. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  60. package/dist/src/ui/contexts/SessionContext.d.ts +4 -1
  61. package/dist/src/ui/contexts/SessionContext.js +12 -2
  62. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  63. package/dist/src/ui/hooks/atCommandProcessor.js +5 -7
  64. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  65. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -10
  66. package/dist/src/ui/hooks/slashCommandProcessor.js +217 -121
  67. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  68. package/dist/src/ui/hooks/useCompletion.d.ts +2 -2
  69. package/dist/src/ui/hooks/useCompletion.js +106 -56
  70. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  71. package/dist/src/ui/hooks/useGeminiStream.d.ts +3 -3
  72. package/dist/src/ui/hooks/useGeminiStream.js +45 -28
  73. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  74. package/dist/src/ui/themes/ansi.js +1 -1
  75. package/dist/src/ui/themes/ansi.js.map +1 -1
  76. package/dist/src/ui/types.d.ts +10 -0
  77. package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +16 -0
  78. package/dist/src/ui/utils/InlineMarkdownRenderer.js +104 -0
  79. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -0
  80. package/dist/src/ui/utils/MarkdownDisplay.js +1 -80
  81. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  82. package/dist/src/ui/utils/TableRenderer.js +50 -32
  83. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  84. package/dist/src/ui/utils/errorParsing.d.ts +2 -10
  85. package/dist/src/ui/utils/errorParsing.js +34 -23
  86. package/dist/src/ui/utils/errorParsing.js.map +1 -1
  87. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +1 -1
  88. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +1 -1
  89. package/dist/src/utils/userStartupWarnings.d.ts +6 -0
  90. package/dist/src/utils/userStartupWarnings.js +33 -0
  91. package/dist/src/utils/userStartupWarnings.js.map +1 -0
  92. package/dist/tsconfig.tsbuildinfo +1 -1
  93. package/package.json +8 -8
  94. package/dist/src/gemini.test.js +0 -122
  95. package/dist/src/gemini.test.js.map +0 -1
  96. package/dist/src/ui/App.test.d.ts +0 -6
  97. package/dist/src/ui/App.test.js +0 -299
  98. package/dist/src/ui/App.test.js.map +0 -1
  99. package/dist/src/ui/components/AuthDialog.test.d.ts +0 -6
  100. package/dist/src/ui/components/AuthDialog.test.js +0 -69
  101. package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
  102. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +0 -6
  103. package/dist/src/ui/components/HistoryItemDisplay.test.js +0 -81
  104. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +0 -1
  105. package/dist/src/ui/components/InputPrompt.test.d.ts +0 -6
  106. package/dist/src/ui/components/InputPrompt.test.js +0 -154
  107. package/dist/src/ui/components/InputPrompt.test.js.map +0 -1
  108. package/dist/src/ui/components/LoadingIndicator.test.d.ts +0 -6
  109. package/dist/src/ui/components/LoadingIndicator.test.js +0 -141
  110. package/dist/src/ui/components/LoadingIndicator.test.js.map +0 -1
  111. package/dist/src/ui/components/ModelStatsDisplay.test.d.ts +0 -6
  112. package/dist/src/ui/components/ModelStatsDisplay.test.js +0 -217
  113. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +0 -1
  114. package/dist/src/ui/components/SessionSummaryDisplay.test.d.ts +0 -6
  115. package/dist/src/ui/components/SessionSummaryDisplay.test.js +0 -60
  116. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +0 -1
  117. package/dist/src/ui/components/StatsDisplay.test.d.ts +0 -6
  118. package/dist/src/ui/components/StatsDisplay.test.js +0 -275
  119. package/dist/src/ui/components/StatsDisplay.test.js.map +0 -1
  120. package/dist/src/ui/components/ToolStatsDisplay.test.d.ts +0 -6
  121. package/dist/src/ui/components/ToolStatsDisplay.test.js +0 -160
  122. package/dist/src/ui/components/ToolStatsDisplay.test.js.map +0 -1
  123. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +0 -6
  124. package/dist/src/ui/components/messages/DiffRenderer.test.js +0 -239
  125. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +0 -1
  126. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +0 -6
  127. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -37
  128. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +0 -1
  129. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +0 -6
  130. package/dist/src/ui/components/messages/ToolMessage.test.js +0 -116
  131. package/dist/src/ui/components/messages/ToolMessage.test.js.map +0 -1
  132. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +0 -6
  133. package/dist/src/ui/components/shared/MaxSizedBox.test.js +0 -134
  134. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +0 -1
  135. package/dist/src/ui/contexts/SessionContext.test.d.ts +0 -6
  136. package/dist/src/ui/contexts/SessionContext.test.js +0 -96
  137. package/dist/src/ui/contexts/SessionContext.test.js.map +0 -1
  138. package/dist/src/ui/hooks/useGeminiStream.test.d.ts +0 -6
  139. package/dist/src/ui/hooks/useGeminiStream.test.js +0 -775
  140. package/dist/src/ui/hooks/useGeminiStream.test.js.map +0 -1
  141. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +0 -6
  142. package/dist/src/ui/utils/MarkdownDisplay.test.js +0 -176
  143. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@google/gemini-cli",
3
- "version": "0.1.10-dev.14",
3
+ "version": "0.1.10",
4
4
  "description": "Gemini CLI",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,15 +25,15 @@
25
25
  "dist"
26
26
  ],
27
27
  "config": {
28
- "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.1.10-dev.14"
28
+ "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.1.10"
29
29
  },
30
30
  "dependencies": {
31
- "@google/gemini-cli-core": "0.1.10-dev.14",
31
+ "@google/gemini-cli-core": "0.1.10",
32
32
  "@types/update-notifier": "^6.0.8",
33
33
  "command-exists": "^1.2.9",
34
34
  "diff": "^7.0.0",
35
- "dotenv": "^16.6.1",
36
- "gaxios": "^6.1.1",
35
+ "dotenv": "^17.1.0",
36
+ "gaxios": "^7.1.1",
37
37
  "glob": "^10.4.1",
38
38
  "highlight.js": "^11.11.1",
39
39
  "ink": "^6.0.1",
@@ -44,11 +44,11 @@
44
44
  "ink-spinner": "^5.0.0",
45
45
  "ink-text-input": "^6.0.0",
46
46
  "lowlight": "^3.3.0",
47
- "mime-types": "^2.1.4",
47
+ "mime-types": "^3.0.1",
48
48
  "open": "^10.1.2",
49
49
  "react": "^19.1.0",
50
50
  "read-package-up": "^11.0.0",
51
- "shell-quote": "^1.8.2",
51
+ "shell-quote": "^1.8.3",
52
52
  "string-width": "^7.1.0",
53
53
  "strip-ansi": "^7.1.0",
54
54
  "strip-json-comments": "^3.1.1",
@@ -75,6 +75,6 @@
75
75
  "vitest": "^3.1.1"
76
76
  },
77
77
  "engines": {
78
- "node": ">=18"
78
+ "node": ">=20"
79
79
  }
80
80
  }
@@ -1,122 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import stripAnsi from 'strip-ansi';
7
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
8
- import { main } from './gemini.js';
9
- import { LoadedSettings, loadSettings, } from './config/settings.js';
10
- // Custom error to identify mock process.exit calls
11
- class MockProcessExitError extends Error {
12
- code;
13
- constructor(code) {
14
- super('PROCESS_EXIT_MOCKED');
15
- this.code = code;
16
- this.name = 'MockProcessExitError';
17
- }
18
- }
19
- // Mock dependencies
20
- vi.mock('./config/settings.js', async (importOriginal) => {
21
- const actual = await importOriginal();
22
- return {
23
- ...actual,
24
- loadSettings: vi.fn(),
25
- };
26
- });
27
- vi.mock('./config/config.js', () => ({
28
- loadCliConfig: vi.fn().mockResolvedValue({
29
- config: {
30
- getSandbox: vi.fn(() => false),
31
- getQuestion: vi.fn(() => ''),
32
- },
33
- modelWasSwitched: false,
34
- originalModelBeforeSwitch: null,
35
- finalModel: 'test-model',
36
- }),
37
- }));
38
- vi.mock('read-package-up', () => ({
39
- readPackageUp: vi.fn().mockResolvedValue({
40
- packageJson: { name: 'test-pkg', version: 'test-version' },
41
- path: '/fake/path/package.json',
42
- }),
43
- }));
44
- vi.mock('update-notifier', () => ({
45
- default: vi.fn(() => ({
46
- notify: vi.fn(),
47
- })),
48
- }));
49
- vi.mock('./utils/sandbox.js', () => ({
50
- sandbox_command: vi.fn(() => ''), // Default to no sandbox command
51
- start_sandbox: vi.fn(() => Promise.resolve()), // Mock as an async function that resolves
52
- }));
53
- describe('gemini.tsx main function', () => {
54
- let consoleErrorSpy;
55
- let loadSettingsMock;
56
- let originalEnvGeminiSandbox;
57
- let originalEnvSandbox;
58
- const processExitSpy = vi
59
- .spyOn(process, 'exit')
60
- .mockImplementation((code) => {
61
- throw new MockProcessExitError(code);
62
- });
63
- beforeEach(() => {
64
- loadSettingsMock = vi.mocked(loadSettings);
65
- // Store and clear sandbox-related env variables to ensure a consistent test environment
66
- originalEnvGeminiSandbox = process.env.GEMINI_SANDBOX;
67
- originalEnvSandbox = process.env.SANDBOX;
68
- delete process.env.GEMINI_SANDBOX;
69
- delete process.env.SANDBOX;
70
- consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
71
- });
72
- afterEach(() => {
73
- // Restore original env variables
74
- if (originalEnvGeminiSandbox !== undefined) {
75
- process.env.GEMINI_SANDBOX = originalEnvGeminiSandbox;
76
- }
77
- else {
78
- delete process.env.GEMINI_SANDBOX;
79
- }
80
- if (originalEnvSandbox !== undefined) {
81
- process.env.SANDBOX = originalEnvSandbox;
82
- }
83
- else {
84
- delete process.env.SANDBOX;
85
- }
86
- vi.restoreAllMocks();
87
- });
88
- it('should call process.exit(1) if settings have errors', async () => {
89
- const settingsError = {
90
- message: 'Test settings error',
91
- path: '/test/settings.json',
92
- };
93
- const userSettingsFile = {
94
- path: '/user/settings.json',
95
- settings: {},
96
- };
97
- const workspaceSettingsFile = {
98
- path: '/workspace/.gemini/settings.json',
99
- settings: {},
100
- };
101
- const mockLoadedSettings = new LoadedSettings(userSettingsFile, workspaceSettingsFile, [settingsError]);
102
- loadSettingsMock.mockReturnValue(mockLoadedSettings);
103
- try {
104
- await main();
105
- // If main completes without throwing, the test should fail because process.exit was expected
106
- expect.fail('main function did not exit as expected');
107
- }
108
- catch (error) {
109
- expect(error).toBeInstanceOf(MockProcessExitError);
110
- if (error instanceof MockProcessExitError) {
111
- expect(error.code).toBe(1);
112
- }
113
- }
114
- // Verify console.error was called with the error message
115
- expect(consoleErrorSpy).toHaveBeenCalledTimes(2);
116
- expect(stripAnsi(String(consoleErrorSpy.mock.calls[0][0]))).toBe('Error in /test/settings.json: Test settings error');
117
- expect(stripAnsi(String(consoleErrorSpy.mock.calls[1][0]))).toBe('Please fix /test/settings.json and try again.');
118
- // Verify process.exit was called (indirectly, via the thrown error)
119
- expect(processExitSpy).toHaveBeenCalledWith(1);
120
- });
121
- });
122
- //# sourceMappingURL=gemini.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.test.js","sourceRoot":"","sources":["../../src/gemini.test.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -1,299 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * @license
4
- * Copyright 2025 Google LLC
5
- * SPDX-License-Identifier: Apache-2.0
6
- */
7
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
8
- import { render } from 'ink-testing-library';
9
- import { AppWrapper as App } from './App.js';
10
- import { Config as ServerConfig, ApprovalMode, } from '@google/gemini-cli-core';
11
- import { LoadedSettings } from '../config/settings.js';
12
- import process from 'node:process';
13
- import { Tips } from './components/Tips.js';
14
- // Mock @google/gemini-cli-core and its Config class
15
- vi.mock('@google/gemini-cli-core', async (importOriginal) => {
16
- const actualCore = await importOriginal();
17
- const ConfigClassMock = vi
18
- .fn()
19
- .mockImplementation((optionsPassedToConstructor) => {
20
- const opts = { ...optionsPassedToConstructor }; // Clone
21
- // Basic mock structure, will be extended by the instance in tests
22
- return {
23
- apiKey: opts.apiKey || 'test-key',
24
- model: opts.model || 'test-model-in-mock-factory',
25
- sandbox: opts.sandbox,
26
- targetDir: opts.targetDir || '/test/dir',
27
- debugMode: opts.debugMode || false,
28
- question: opts.question,
29
- fullContext: opts.fullContext ?? false,
30
- coreTools: opts.coreTools,
31
- toolDiscoveryCommand: opts.toolDiscoveryCommand,
32
- toolCallCommand: opts.toolCallCommand,
33
- mcpServerCommand: opts.mcpServerCommand,
34
- mcpServers: opts.mcpServers,
35
- userAgent: opts.userAgent || 'test-agent',
36
- userMemory: opts.userMemory || '',
37
- geminiMdFileCount: opts.geminiMdFileCount || 0,
38
- approvalMode: opts.approvalMode ?? ApprovalMode.DEFAULT,
39
- vertexai: opts.vertexai,
40
- showMemoryUsage: opts.showMemoryUsage ?? false,
41
- accessibility: opts.accessibility ?? {},
42
- embeddingModel: opts.embeddingModel || 'test-embedding-model',
43
- getApiKey: vi.fn(() => opts.apiKey || 'test-key'),
44
- getModel: vi.fn(() => opts.model || 'test-model-in-mock-factory'),
45
- getSandbox: vi.fn(() => opts.sandbox),
46
- getTargetDir: vi.fn(() => opts.targetDir || '/test/dir'),
47
- getToolRegistry: vi.fn(() => ({})), // Simple mock
48
- getDebugMode: vi.fn(() => opts.debugMode || false),
49
- getQuestion: vi.fn(() => opts.question),
50
- getFullContext: vi.fn(() => opts.fullContext ?? false),
51
- getCoreTools: vi.fn(() => opts.coreTools),
52
- getToolDiscoveryCommand: vi.fn(() => opts.toolDiscoveryCommand),
53
- getToolCallCommand: vi.fn(() => opts.toolCallCommand),
54
- getMcpServerCommand: vi.fn(() => opts.mcpServerCommand),
55
- getMcpServers: vi.fn(() => opts.mcpServers),
56
- getUserAgent: vi.fn(() => opts.userAgent || 'test-agent'),
57
- getUserMemory: vi.fn(() => opts.userMemory || ''),
58
- setUserMemory: vi.fn(),
59
- getGeminiMdFileCount: vi.fn(() => opts.geminiMdFileCount || 0),
60
- setGeminiMdFileCount: vi.fn(),
61
- getApprovalMode: vi.fn(() => opts.approvalMode ?? ApprovalMode.DEFAULT),
62
- setApprovalMode: vi.fn(),
63
- getVertexAI: vi.fn(() => opts.vertexai),
64
- getShowMemoryUsage: vi.fn(() => opts.showMemoryUsage ?? false),
65
- getAccessibility: vi.fn(() => opts.accessibility ?? {}),
66
- getProjectRoot: vi.fn(() => opts.projectRoot),
67
- getGeminiClient: vi.fn(() => ({})),
68
- getCheckpointingEnabled: vi.fn(() => opts.checkpointing ?? true),
69
- getAllGeminiMdFilenames: vi.fn(() => ['GEMINI.md']),
70
- setFlashFallbackHandler: vi.fn(),
71
- };
72
- });
73
- return {
74
- ...actualCore,
75
- Config: ConfigClassMock,
76
- MCPServerConfig: actualCore.MCPServerConfig,
77
- getAllGeminiMdFilenames: vi.fn(() => ['GEMINI.md']),
78
- };
79
- });
80
- // Mock heavy dependencies or those with side effects
81
- vi.mock('./hooks/useGeminiStream', () => ({
82
- useGeminiStream: vi.fn(() => ({
83
- streamingState: 'Idle',
84
- submitQuery: vi.fn(),
85
- initError: null,
86
- pendingHistoryItems: [],
87
- })),
88
- }));
89
- vi.mock('./hooks/useAuthCommand', () => ({
90
- useAuthCommand: vi.fn(() => ({
91
- isAuthDialogOpen: false,
92
- openAuthDialog: vi.fn(),
93
- handleAuthSelect: vi.fn(),
94
- handleAuthHighlight: vi.fn(),
95
- })),
96
- }));
97
- vi.mock('./hooks/useLogger', () => ({
98
- useLogger: vi.fn(() => ({
99
- getPreviousUserMessages: vi.fn().mockResolvedValue([]),
100
- })),
101
- }));
102
- vi.mock('../config/config.js', async (importOriginal) => {
103
- const actual = await importOriginal();
104
- return {
105
- // @ts-expect-error - this is fine
106
- ...actual,
107
- loadHierarchicalGeminiMemory: vi
108
- .fn()
109
- .mockResolvedValue({ memoryContent: '', fileCount: 0 }),
110
- };
111
- });
112
- vi.mock('./components/Tips.js', () => ({
113
- Tips: vi.fn(() => null),
114
- }));
115
- describe('App UI', () => {
116
- let mockConfig;
117
- let mockSettings;
118
- let currentUnmount;
119
- const createMockSettings = (settings = {}) => {
120
- const userSettingsFile = {
121
- path: '/user/settings.json',
122
- settings: {},
123
- };
124
- const workspaceSettingsFile = {
125
- path: '/workspace/.gemini/settings.json',
126
- settings: {
127
- ...settings,
128
- },
129
- };
130
- return new LoadedSettings(userSettingsFile, workspaceSettingsFile, []);
131
- };
132
- beforeEach(() => {
133
- const ServerConfigMocked = vi.mocked(ServerConfig, true);
134
- mockConfig = new ServerConfigMocked({
135
- embeddingModel: 'test-embedding-model',
136
- sandbox: undefined,
137
- targetDir: '/test/dir',
138
- debugMode: false,
139
- userMemory: '',
140
- geminiMdFileCount: 0,
141
- showMemoryUsage: false,
142
- sessionId: 'test-session-id',
143
- cwd: '/tmp',
144
- model: 'model',
145
- });
146
- // Ensure the getShowMemoryUsage mock function is specifically set up if not covered by constructor mock
147
- if (!mockConfig.getShowMemoryUsage) {
148
- mockConfig.getShowMemoryUsage = vi.fn(() => false);
149
- }
150
- mockConfig.getShowMemoryUsage.mockReturnValue(false); // Default for most tests
151
- // Ensure a theme is set so the theme dialog does not appear.
152
- mockSettings = createMockSettings({ theme: 'Default' });
153
- });
154
- afterEach(() => {
155
- if (currentUnmount) {
156
- currentUnmount();
157
- currentUnmount = undefined;
158
- }
159
- vi.clearAllMocks(); // Clear mocks after each test
160
- });
161
- it('should display default "GEMINI.md" in footer when contextFileName is not set and count is 1', async () => {
162
- mockConfig.getGeminiMdFileCount.mockReturnValue(1);
163
- // For this test, ensure showMemoryUsage is false or debugMode is false if it relies on that
164
- mockConfig.getDebugMode.mockReturnValue(false);
165
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
166
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
167
- currentUnmount = unmount;
168
- await Promise.resolve(); // Wait for any async updates
169
- expect(lastFrame()).toContain('Using 1 GEMINI.md file');
170
- });
171
- it('should display default "GEMINI.md" with plural when contextFileName is not set and count is > 1', async () => {
172
- mockConfig.getGeminiMdFileCount.mockReturnValue(2);
173
- mockConfig.getDebugMode.mockReturnValue(false);
174
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
175
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
176
- currentUnmount = unmount;
177
- await Promise.resolve();
178
- expect(lastFrame()).toContain('Using 2 GEMINI.md files');
179
- });
180
- it('should display custom contextFileName in footer when set and count is 1', async () => {
181
- mockSettings = createMockSettings({
182
- contextFileName: 'AGENTS.md',
183
- theme: 'Default',
184
- });
185
- mockConfig.getGeminiMdFileCount.mockReturnValue(1);
186
- mockConfig.getDebugMode.mockReturnValue(false);
187
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
188
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
189
- currentUnmount = unmount;
190
- await Promise.resolve();
191
- expect(lastFrame()).toContain('Using 1 AGENTS.md file');
192
- });
193
- it('should display a generic message when multiple context files with different names are provided', async () => {
194
- mockSettings = createMockSettings({
195
- contextFileName: ['AGENTS.md', 'CONTEXT.md'],
196
- theme: 'Default',
197
- });
198
- mockConfig.getGeminiMdFileCount.mockReturnValue(2);
199
- mockConfig.getDebugMode.mockReturnValue(false);
200
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
201
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
202
- currentUnmount = unmount;
203
- await Promise.resolve();
204
- expect(lastFrame()).toContain('Using 2 context files');
205
- });
206
- it('should display custom contextFileName with plural when set and count is > 1', async () => {
207
- mockSettings = createMockSettings({
208
- contextFileName: 'MY_NOTES.TXT',
209
- theme: 'Default',
210
- });
211
- mockConfig.getGeminiMdFileCount.mockReturnValue(3);
212
- mockConfig.getDebugMode.mockReturnValue(false);
213
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
214
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
215
- currentUnmount = unmount;
216
- await Promise.resolve();
217
- expect(lastFrame()).toContain('Using 3 MY_NOTES.TXT files');
218
- });
219
- it('should not display context file message if count is 0, even if contextFileName is set', async () => {
220
- mockSettings = createMockSettings({
221
- contextFileName: 'ANY_FILE.MD',
222
- theme: 'Default',
223
- });
224
- mockConfig.getGeminiMdFileCount.mockReturnValue(0);
225
- mockConfig.getDebugMode.mockReturnValue(false);
226
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
227
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
228
- currentUnmount = unmount;
229
- await Promise.resolve();
230
- expect(lastFrame()).not.toContain('ANY_FILE.MD');
231
- });
232
- it('should display GEMINI.md and MCP server count when both are present', async () => {
233
- mockConfig.getGeminiMdFileCount.mockReturnValue(2);
234
- mockConfig.getMcpServers.mockReturnValue({
235
- server1: {},
236
- });
237
- mockConfig.getDebugMode.mockReturnValue(false);
238
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
239
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
240
- currentUnmount = unmount;
241
- await Promise.resolve();
242
- expect(lastFrame()).toContain('server');
243
- });
244
- it('should display only MCP server count when GEMINI.md count is 0', async () => {
245
- mockConfig.getGeminiMdFileCount.mockReturnValue(0);
246
- mockConfig.getMcpServers.mockReturnValue({
247
- server1: {},
248
- server2: {},
249
- });
250
- mockConfig.getDebugMode.mockReturnValue(false);
251
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
252
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
253
- currentUnmount = unmount;
254
- await Promise.resolve();
255
- expect(lastFrame()).toContain('Using 2 MCP servers');
256
- });
257
- it('should display Tips component by default', async () => {
258
- const { unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
259
- currentUnmount = unmount;
260
- await Promise.resolve();
261
- expect(vi.mocked(Tips)).toHaveBeenCalled();
262
- });
263
- it('should not display Tips component when hideTips is true', async () => {
264
- mockSettings = createMockSettings({
265
- hideTips: true,
266
- });
267
- const { unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
268
- currentUnmount = unmount;
269
- await Promise.resolve();
270
- expect(vi.mocked(Tips)).not.toHaveBeenCalled();
271
- });
272
- describe('when no theme is set', () => {
273
- let originalNoColor;
274
- beforeEach(() => {
275
- originalNoColor = process.env.NO_COLOR;
276
- // Ensure no theme is set for these tests
277
- mockSettings = createMockSettings({});
278
- mockConfig.getDebugMode.mockReturnValue(false);
279
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
280
- });
281
- afterEach(() => {
282
- process.env.NO_COLOR = originalNoColor;
283
- });
284
- it('should display theme dialog if NO_COLOR is not set', async () => {
285
- delete process.env.NO_COLOR;
286
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
287
- currentUnmount = unmount;
288
- expect(lastFrame()).toContain('Select Theme');
289
- });
290
- it('should display a message if NO_COLOR is set', async () => {
291
- process.env.NO_COLOR = 'true';
292
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
293
- currentUnmount = unmount;
294
- expect(lastFrame()).toContain('Theme configuration unavailable due to NO_COLOR env variable.');
295
- expect(lastFrame()).not.toContain('Select Theme');
296
- });
297
- });
298
- });
299
- //# sourceMappingURL=App.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"App.test.js","sourceRoot":"","sources":["../../../src/ui/App.test.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -1,69 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * @license
4
- * Copyright 2025 Google LLC
5
- * SPDX-License-Identifier: Apache-2.0
6
- */
7
- import { render } from 'ink-testing-library';
8
- import { describe, it, expect, vi } from 'vitest';
9
- import { AuthDialog } from './AuthDialog.js';
10
- import { LoadedSettings, SettingScope } from '../../config/settings.js';
11
- import { AuthType } from '@google/gemini-cli-core';
12
- describe('AuthDialog', () => {
13
- const wait = (ms = 50) => new Promise((resolve) => setTimeout(resolve, ms));
14
- it('should show an error if the initial auth type is invalid', () => {
15
- const settings = new LoadedSettings({
16
- settings: {
17
- selectedAuthType: AuthType.USE_GEMINI,
18
- },
19
- path: '',
20
- }, {
21
- settings: {},
22
- path: '',
23
- }, []);
24
- const { lastFrame } = render(_jsx(AuthDialog, { onSelect: () => { }, settings: settings, initialErrorMessage: "GEMINI_API_KEY environment variable not found" }));
25
- expect(lastFrame()).toContain('GEMINI_API_KEY environment variable not found');
26
- });
27
- it('should prevent exiting when no auth method is selected and show error message', async () => {
28
- const onSelect = vi.fn();
29
- const settings = new LoadedSettings({
30
- settings: {
31
- selectedAuthType: undefined,
32
- },
33
- path: '',
34
- }, {
35
- settings: {},
36
- path: '',
37
- }, []);
38
- const { lastFrame, stdin, unmount } = render(_jsx(AuthDialog, { onSelect: onSelect, settings: settings }));
39
- await wait();
40
- // Simulate pressing escape key
41
- stdin.write('\u001b'); // ESC key
42
- await wait();
43
- // Should show error message instead of calling onSelect
44
- expect(lastFrame()).toContain('You must select an auth method to proceed. Press Ctrl+C twice to exit.');
45
- expect(onSelect).not.toHaveBeenCalled();
46
- unmount();
47
- });
48
- it('should allow exiting when auth method is already selected', async () => {
49
- const onSelect = vi.fn();
50
- const settings = new LoadedSettings({
51
- settings: {
52
- selectedAuthType: AuthType.USE_GEMINI,
53
- },
54
- path: '',
55
- }, {
56
- settings: {},
57
- path: '',
58
- }, []);
59
- const { stdin, unmount } = render(_jsx(AuthDialog, { onSelect: onSelect, settings: settings }));
60
- await wait();
61
- // Simulate pressing escape key
62
- stdin.write('\u001b'); // ESC key
63
- await wait();
64
- // Should call onSelect with undefined to exit
65
- expect(onSelect).toHaveBeenCalledWith(undefined, SettingScope.User);
66
- unmount();
67
- });
68
- });
69
- //# sourceMappingURL=AuthDialog.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthDialog.test.js","sourceRoot":"","sources":["../../../../src/ui/components/AuthDialog.test.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};