@google/gemini-cli 0.1.9-nightly.250708.a4097ae6 → 0.1.9-nightly.250709.c8cf954e

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 (78) hide show
  1. package/dist/google-gemini-cli-0.1.9.tgz +0 -0
  2. package/dist/package.json +2 -2
  3. package/dist/src/config/auth.js +3 -3
  4. package/dist/src/config/auth.js.map +1 -1
  5. package/dist/src/config/config.js +45 -9
  6. package/dist/src/config/config.js.map +1 -1
  7. package/dist/src/config/extension.d.ts +1 -0
  8. package/dist/src/config/extension.js +34 -6
  9. package/dist/src/config/extension.js.map +1 -1
  10. package/dist/src/config/sandboxConfig.d.ts +1 -1
  11. package/dist/src/config/sandboxConfig.js +1 -1
  12. package/dist/src/config/sandboxConfig.js.map +1 -1
  13. package/dist/src/gemini.js +14 -7
  14. package/dist/src/gemini.js.map +1 -1
  15. package/dist/src/generated/git-commit.d.ts +1 -1
  16. package/dist/src/generated/git-commit.js +1 -1
  17. package/dist/src/ui/components/AuthDialog.js +15 -6
  18. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  19. package/dist/src/ui/components/LoadingIndicator.js +2 -1
  20. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  21. package/dist/src/ui/hooks/slashCommandProcessor.js +26 -0
  22. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  23. package/dist/tsconfig.tsbuildinfo +1 -1
  24. package/package.json +3 -3
  25. package/dist/src/gemini.test.d.ts +0 -6
  26. package/dist/src/gemini.test.js +0 -122
  27. package/dist/src/gemini.test.js.map +0 -1
  28. package/dist/src/test-utils/mockCommandContext.d.ts +0 -18
  29. package/dist/src/test-utils/mockCommandContext.js +0 -75
  30. package/dist/src/test-utils/mockCommandContext.js.map +0 -1
  31. package/dist/src/ui/App.test.d.ts +0 -6
  32. package/dist/src/ui/App.test.js +0 -300
  33. package/dist/src/ui/App.test.js.map +0 -1
  34. package/dist/src/ui/components/AuthDialog.test.d.ts +0 -6
  35. package/dist/src/ui/components/AuthDialog.test.js +0 -86
  36. package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
  37. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +0 -6
  38. package/dist/src/ui/components/HistoryItemDisplay.test.js +0 -81
  39. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +0 -1
  40. package/dist/src/ui/components/InputPrompt.test.d.ts +0 -6
  41. package/dist/src/ui/components/InputPrompt.test.js +0 -334
  42. package/dist/src/ui/components/InputPrompt.test.js.map +0 -1
  43. package/dist/src/ui/components/LoadingIndicator.test.d.ts +0 -6
  44. package/dist/src/ui/components/LoadingIndicator.test.js +0 -141
  45. package/dist/src/ui/components/LoadingIndicator.test.js.map +0 -1
  46. package/dist/src/ui/components/ModelStatsDisplay.test.d.ts +0 -6
  47. package/dist/src/ui/components/ModelStatsDisplay.test.js +0 -217
  48. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +0 -1
  49. package/dist/src/ui/components/SessionSummaryDisplay.test.d.ts +0 -6
  50. package/dist/src/ui/components/SessionSummaryDisplay.test.js +0 -60
  51. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +0 -1
  52. package/dist/src/ui/components/StatsDisplay.test.d.ts +0 -6
  53. package/dist/src/ui/components/StatsDisplay.test.js +0 -275
  54. package/dist/src/ui/components/StatsDisplay.test.js.map +0 -1
  55. package/dist/src/ui/components/ToolStatsDisplay.test.d.ts +0 -6
  56. package/dist/src/ui/components/ToolStatsDisplay.test.js +0 -160
  57. package/dist/src/ui/components/ToolStatsDisplay.test.js.map +0 -1
  58. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +0 -6
  59. package/dist/src/ui/components/messages/DiffRenderer.test.js +0 -239
  60. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +0 -1
  61. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +0 -6
  62. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -37
  63. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +0 -1
  64. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +0 -6
  65. package/dist/src/ui/components/messages/ToolMessage.test.js +0 -116
  66. package/dist/src/ui/components/messages/ToolMessage.test.js.map +0 -1
  67. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +0 -6
  68. package/dist/src/ui/components/shared/MaxSizedBox.test.js +0 -134
  69. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +0 -1
  70. package/dist/src/ui/contexts/SessionContext.test.d.ts +0 -6
  71. package/dist/src/ui/contexts/SessionContext.test.js +0 -96
  72. package/dist/src/ui/contexts/SessionContext.test.js.map +0 -1
  73. package/dist/src/ui/hooks/useGeminiStream.test.d.ts +0 -6
  74. package/dist/src/ui/hooks/useGeminiStream.test.js +0 -838
  75. package/dist/src/ui/hooks/useGeminiStream.test.js.map +0 -1
  76. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +0 -6
  77. package/dist/src/ui/utils/MarkdownDisplay.test.js +0 -211
  78. 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.9-nightly.250708.a4097ae6",
3
+ "version": "0.1.9-nightly.250709.c8cf954e",
4
4
  "description": "Gemini CLI",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,10 +25,10 @@
25
25
  "dist"
26
26
  ],
27
27
  "config": {
28
- "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.1.9-nightly.250708.a4097ae6"
28
+ "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.1.9-nightly.250709.c8cf954e"
29
29
  },
30
30
  "dependencies": {
31
- "@google/gemini-cli-core": "0.1.9-nightly.250707.d1c0a211",
31
+ "@google/gemini-cli-core": "0.1.9-nightly.250709.c8cf954e",
32
32
  "@types/update-notifier": "^6.0.8",
33
33
  "command-exists": "^1.2.9",
34
34
  "diff": "^7.0.0",
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -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,18 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { CommandContext } from '../ui/commands/types.js';
7
- type DeepPartial<T> = T extends object ? {
8
- [P in keyof T]?: DeepPartial<T[P]>;
9
- } : T;
10
- /**
11
- * Creates a deep, fully-typed mock of the CommandContext for use in tests.
12
- * All functions are pre-mocked with `vi.fn()`.
13
- *
14
- * @param overrides - A deep partial object to override any default mock values.
15
- * @returns A complete, mocked CommandContext object.
16
- */
17
- export declare const createMockCommandContext: (overrides?: DeepPartial<CommandContext>) => CommandContext;
18
- export {};
@@ -1,75 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { vi } from 'vitest';
7
- /**
8
- * Creates a deep, fully-typed mock of the CommandContext for use in tests.
9
- * All functions are pre-mocked with `vi.fn()`.
10
- *
11
- * @param overrides - A deep partial object to override any default mock values.
12
- * @returns A complete, mocked CommandContext object.
13
- */
14
- export const createMockCommandContext = (overrides = {}) => {
15
- const defaultMocks = {
16
- services: {
17
- config: null,
18
- settings: { merged: {} },
19
- git: undefined,
20
- logger: {
21
- log: vi.fn(),
22
- logMessage: vi.fn(),
23
- saveCheckpoint: vi.fn(),
24
- loadCheckpoint: vi.fn().mockResolvedValue([]),
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- }, // Cast because Logger is a class.
27
- },
28
- ui: {
29
- addItem: vi.fn(),
30
- clear: vi.fn(),
31
- setDebugMessage: vi.fn(),
32
- },
33
- session: {
34
- stats: {
35
- sessionStartTime: new Date(),
36
- lastPromptTokenCount: 0,
37
- metrics: {
38
- models: {},
39
- tools: {
40
- totalCalls: 0,
41
- totalSuccess: 0,
42
- totalFail: 0,
43
- totalDurationMs: 0,
44
- totalDecisions: { accept: 0, reject: 0, modify: 0 },
45
- byName: {},
46
- },
47
- },
48
- },
49
- },
50
- };
51
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
- const merge = (target, source) => {
53
- const output = { ...target };
54
- for (const key in source) {
55
- if (Object.prototype.hasOwnProperty.call(source, key)) {
56
- const sourceValue = source[key];
57
- const targetValue = output[key];
58
- if (sourceValue &&
59
- typeof sourceValue === 'object' &&
60
- !Array.isArray(sourceValue) &&
61
- targetValue &&
62
- typeof targetValue === 'object' &&
63
- !Array.isArray(targetValue)) {
64
- output[key] = merge(targetValue, sourceValue);
65
- }
66
- else {
67
- output[key] = sourceValue;
68
- }
69
- }
70
- }
71
- return output;
72
- };
73
- return merge(defaultMocks, overrides);
74
- };
75
- //# sourceMappingURL=mockCommandContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mockCommandContext.js","sourceRoot":"","sources":["../../../src/test-utils/mockCommandContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAa5B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,YAAyC,EAAE,EAC3B,EAAE;IAClB,MAAM,YAAY,GAAmB;QACnC,QAAQ,EAAE;YACR,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAoB;YAC1C,GAAG,EAAE,SAAmC;YACxC,MAAM,EAAE;gBACN,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBACZ,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;gBACnB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;gBACvB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC7C,8DAA8D;aACxD,EAAE,kCAAkC;SAC7C;QACD,EAAE,EAAE;YACF,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;SACzB;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,gBAAgB,EAAE,IAAI,IAAI,EAAE;gBAC5B,oBAAoB,EAAE,CAAC;gBACvB,OAAO,EAAE;oBACP,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE;wBACL,UAAU,EAAE,CAAC;wBACb,YAAY,EAAE,CAAC;wBACf,SAAS,EAAE,CAAC;wBACZ,eAAe,EAAE,CAAC;wBAClB,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;wBACnD,MAAM,EAAE,EAAE;qBACX;iBACF;aACmB;SACvB;KACF,CAAC;IAEF,8DAA8D;IAC9D,MAAM,KAAK,GAAG,CAAC,MAAW,EAAE,MAAW,EAAO,EAAE;QAC9C,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAE7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;gBACtD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEhC,IACE,WAAW;oBACX,OAAO,WAAW,KAAK,QAAQ;oBAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC3B,WAAW;oBACX,OAAO,WAAW,KAAK,QAAQ;oBAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B,CAAC;oBACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -1,300 +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
- getSessionId: vi.fn(() => 'test-session-id'),
72
- };
73
- });
74
- return {
75
- ...actualCore,
76
- Config: ConfigClassMock,
77
- MCPServerConfig: actualCore.MCPServerConfig,
78
- getAllGeminiMdFilenames: vi.fn(() => ['GEMINI.md']),
79
- };
80
- });
81
- // Mock heavy dependencies or those with side effects
82
- vi.mock('./hooks/useGeminiStream', () => ({
83
- useGeminiStream: vi.fn(() => ({
84
- streamingState: 'Idle',
85
- submitQuery: vi.fn(),
86
- initError: null,
87
- pendingHistoryItems: [],
88
- })),
89
- }));
90
- vi.mock('./hooks/useAuthCommand', () => ({
91
- useAuthCommand: vi.fn(() => ({
92
- isAuthDialogOpen: false,
93
- openAuthDialog: vi.fn(),
94
- handleAuthSelect: vi.fn(),
95
- handleAuthHighlight: vi.fn(),
96
- })),
97
- }));
98
- vi.mock('./hooks/useLogger', () => ({
99
- useLogger: vi.fn(() => ({
100
- getPreviousUserMessages: vi.fn().mockResolvedValue([]),
101
- })),
102
- }));
103
- vi.mock('../config/config.js', async (importOriginal) => {
104
- const actual = await importOriginal();
105
- return {
106
- // @ts-expect-error - this is fine
107
- ...actual,
108
- loadHierarchicalGeminiMemory: vi
109
- .fn()
110
- .mockResolvedValue({ memoryContent: '', fileCount: 0 }),
111
- };
112
- });
113
- vi.mock('./components/Tips.js', () => ({
114
- Tips: vi.fn(() => null),
115
- }));
116
- describe('App UI', () => {
117
- let mockConfig;
118
- let mockSettings;
119
- let currentUnmount;
120
- const createMockSettings = (settings = {}) => {
121
- const userSettingsFile = {
122
- path: '/user/settings.json',
123
- settings: {},
124
- };
125
- const workspaceSettingsFile = {
126
- path: '/workspace/.gemini/settings.json',
127
- settings: {
128
- ...settings,
129
- },
130
- };
131
- return new LoadedSettings(userSettingsFile, workspaceSettingsFile, []);
132
- };
133
- beforeEach(() => {
134
- const ServerConfigMocked = vi.mocked(ServerConfig, true);
135
- mockConfig = new ServerConfigMocked({
136
- embeddingModel: 'test-embedding-model',
137
- sandbox: undefined,
138
- targetDir: '/test/dir',
139
- debugMode: false,
140
- userMemory: '',
141
- geminiMdFileCount: 0,
142
- showMemoryUsage: false,
143
- sessionId: 'test-session-id',
144
- cwd: '/tmp',
145
- model: 'model',
146
- });
147
- // Ensure the getShowMemoryUsage mock function is specifically set up if not covered by constructor mock
148
- if (!mockConfig.getShowMemoryUsage) {
149
- mockConfig.getShowMemoryUsage = vi.fn(() => false);
150
- }
151
- mockConfig.getShowMemoryUsage.mockReturnValue(false); // Default for most tests
152
- // Ensure a theme is set so the theme dialog does not appear.
153
- mockSettings = createMockSettings({ theme: 'Default' });
154
- });
155
- afterEach(() => {
156
- if (currentUnmount) {
157
- currentUnmount();
158
- currentUnmount = undefined;
159
- }
160
- vi.clearAllMocks(); // Clear mocks after each test
161
- });
162
- it('should display default "GEMINI.md" in footer when contextFileName is not set and count is 1', async () => {
163
- mockConfig.getGeminiMdFileCount.mockReturnValue(1);
164
- // For this test, ensure showMemoryUsage is false or debugMode is false if it relies on that
165
- mockConfig.getDebugMode.mockReturnValue(false);
166
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
167
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
168
- currentUnmount = unmount;
169
- await Promise.resolve(); // Wait for any async updates
170
- expect(lastFrame()).toContain('Using 1 GEMINI.md file');
171
- });
172
- it('should display default "GEMINI.md" with plural when contextFileName is not set and count is > 1', async () => {
173
- mockConfig.getGeminiMdFileCount.mockReturnValue(2);
174
- mockConfig.getDebugMode.mockReturnValue(false);
175
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
176
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
177
- currentUnmount = unmount;
178
- await Promise.resolve();
179
- expect(lastFrame()).toContain('Using 2 GEMINI.md files');
180
- });
181
- it('should display custom contextFileName in footer when set and count is 1', async () => {
182
- mockSettings = createMockSettings({
183
- contextFileName: 'AGENTS.md',
184
- theme: 'Default',
185
- });
186
- mockConfig.getGeminiMdFileCount.mockReturnValue(1);
187
- mockConfig.getDebugMode.mockReturnValue(false);
188
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
189
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
190
- currentUnmount = unmount;
191
- await Promise.resolve();
192
- expect(lastFrame()).toContain('Using 1 AGENTS.md file');
193
- });
194
- it('should display a generic message when multiple context files with different names are provided', async () => {
195
- mockSettings = createMockSettings({
196
- contextFileName: ['AGENTS.md', 'CONTEXT.md'],
197
- theme: 'Default',
198
- });
199
- mockConfig.getGeminiMdFileCount.mockReturnValue(2);
200
- mockConfig.getDebugMode.mockReturnValue(false);
201
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
202
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
203
- currentUnmount = unmount;
204
- await Promise.resolve();
205
- expect(lastFrame()).toContain('Using 2 context files');
206
- });
207
- it('should display custom contextFileName with plural when set and count is > 1', async () => {
208
- mockSettings = createMockSettings({
209
- contextFileName: 'MY_NOTES.TXT',
210
- theme: 'Default',
211
- });
212
- mockConfig.getGeminiMdFileCount.mockReturnValue(3);
213
- mockConfig.getDebugMode.mockReturnValue(false);
214
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
215
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
216
- currentUnmount = unmount;
217
- await Promise.resolve();
218
- expect(lastFrame()).toContain('Using 3 MY_NOTES.TXT files');
219
- });
220
- it('should not display context file message if count is 0, even if contextFileName is set', async () => {
221
- mockSettings = createMockSettings({
222
- contextFileName: 'ANY_FILE.MD',
223
- theme: 'Default',
224
- });
225
- mockConfig.getGeminiMdFileCount.mockReturnValue(0);
226
- mockConfig.getDebugMode.mockReturnValue(false);
227
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
228
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
229
- currentUnmount = unmount;
230
- await Promise.resolve();
231
- expect(lastFrame()).not.toContain('ANY_FILE.MD');
232
- });
233
- it('should display GEMINI.md and MCP server count when both are present', async () => {
234
- mockConfig.getGeminiMdFileCount.mockReturnValue(2);
235
- mockConfig.getMcpServers.mockReturnValue({
236
- server1: {},
237
- });
238
- mockConfig.getDebugMode.mockReturnValue(false);
239
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
240
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
241
- currentUnmount = unmount;
242
- await Promise.resolve();
243
- expect(lastFrame()).toContain('server');
244
- });
245
- it('should display only MCP server count when GEMINI.md count is 0', async () => {
246
- mockConfig.getGeminiMdFileCount.mockReturnValue(0);
247
- mockConfig.getMcpServers.mockReturnValue({
248
- server1: {},
249
- server2: {},
250
- });
251
- mockConfig.getDebugMode.mockReturnValue(false);
252
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
253
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
254
- currentUnmount = unmount;
255
- await Promise.resolve();
256
- expect(lastFrame()).toContain('Using 2 MCP servers');
257
- });
258
- it('should display Tips component by default', async () => {
259
- const { unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
260
- currentUnmount = unmount;
261
- await Promise.resolve();
262
- expect(vi.mocked(Tips)).toHaveBeenCalled();
263
- });
264
- it('should not display Tips component when hideTips is true', async () => {
265
- mockSettings = createMockSettings({
266
- hideTips: true,
267
- });
268
- const { unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
269
- currentUnmount = unmount;
270
- await Promise.resolve();
271
- expect(vi.mocked(Tips)).not.toHaveBeenCalled();
272
- });
273
- describe('when no theme is set', () => {
274
- let originalNoColor;
275
- beforeEach(() => {
276
- originalNoColor = process.env.NO_COLOR;
277
- // Ensure no theme is set for these tests
278
- mockSettings = createMockSettings({});
279
- mockConfig.getDebugMode.mockReturnValue(false);
280
- mockConfig.getShowMemoryUsage.mockReturnValue(false);
281
- });
282
- afterEach(() => {
283
- process.env.NO_COLOR = originalNoColor;
284
- });
285
- it('should display theme dialog if NO_COLOR is not set', async () => {
286
- delete process.env.NO_COLOR;
287
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
288
- currentUnmount = unmount;
289
- expect(lastFrame()).toContain('Select Theme');
290
- });
291
- it('should display a message if NO_COLOR is set', async () => {
292
- process.env.NO_COLOR = 'true';
293
- const { lastFrame, unmount } = render(_jsx(App, { config: mockConfig, settings: mockSettings }));
294
- currentUnmount = unmount;
295
- expect(lastFrame()).toContain('Theme configuration unavailable due to NO_COLOR env variable.');
296
- expect(lastFrame()).not.toContain('Select Theme');
297
- });
298
- });
299
- });
300
- //# 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 {};