diff options
Diffstat (limited to 'packages/cli/src')
| -rw-r--r-- | packages/cli/src/config/config.test.ts | 12 | ||||
| -rw-r--r-- | packages/cli/src/config/config.ts | 1 | ||||
| -rw-r--r-- | packages/cli/src/config/settings.test.ts | 8 | ||||
| -rw-r--r-- | packages/cli/src/gemini.tsx | 2 | ||||
| -rw-r--r-- | packages/cli/src/ui/hooks/useGeminiStream.test.tsx | 6 | ||||
| -rw-r--r-- | packages/cli/src/ui/hooks/useGeminiStream.ts | 9 | ||||
| -rw-r--r-- | packages/cli/src/ui/hooks/useToolScheduler.test.ts | 1 |
7 files changed, 23 insertions, 16 deletions
diff --git a/packages/cli/src/config/config.test.ts b/packages/cli/src/config/config.test.ts index 5b24f434..cc1310dd 100644 --- a/packages/cli/src/config/config.test.ts +++ b/packages/cli/src/config/config.test.ts @@ -11,13 +11,11 @@ import { Settings } from './settings.js'; import { Extension } from './extension.js'; import * as ServerConfig from '@gemini-cli/core'; -const MOCK_HOME_DIR = '/mock/home/user'; - vi.mock('os', async (importOriginal) => { const actualOs = await importOriginal<typeof os>(); return { ...actualOs, - homedir: vi.fn(() => MOCK_HOME_DIR), + homedir: vi.fn(() => '/mock/home/user'), }; }); @@ -53,7 +51,7 @@ describe('loadCliConfig', () => { beforeEach(() => { vi.resetAllMocks(); - vi.mocked(os.homedir).mockReturnValue(MOCK_HOME_DIR); + vi.mocked(os.homedir).mockReturnValue('/mock/home/user'); process.env.GEMINI_API_KEY = 'test-api-key'; // Ensure API key is set for tests }); @@ -98,7 +96,7 @@ describe('loadCliConfig telemetry', () => { beforeEach(() => { vi.resetAllMocks(); - vi.mocked(os.homedir).mockReturnValue(MOCK_HOME_DIR); + vi.mocked(os.homedir).mockReturnValue('/mock/home/user'); process.env.GEMINI_API_KEY = 'test-api-key'; }); @@ -250,7 +248,7 @@ describe('loadCliConfig telemetry', () => { describe('Hierarchical Memory Loading (config.ts) - Placeholder Suite', () => { beforeEach(() => { vi.resetAllMocks(); - vi.mocked(os.homedir).mockReturnValue(MOCK_HOME_DIR); + vi.mocked(os.homedir).mockReturnValue('/mock/home/user'); // Other common mocks would be reset here. }); @@ -310,7 +308,7 @@ describe('Hierarchical Memory Loading (config.ts) - Placeholder Suite', () => { // Example of a previously failing test structure: /* it('should correctly use mocked homedir for global path', async () => { - const MOCK_GEMINI_DIR_LOCAL = path.join(MOCK_HOME_DIR, '.gemini'); + const MOCK_GEMINI_DIR_LOCAL = path.join('/mock/home/user', '.gemini'); const MOCK_GLOBAL_PATH_LOCAL = path.join(MOCK_GEMINI_DIR_LOCAL, 'GEMINI.md'); mockFs({ [MOCK_GLOBAL_PATH_LOCAL]: { type: 'file', content: 'GlobalContentOnly' } diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index 26894bc9..d8502bdd 100644 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -226,6 +226,7 @@ export async function loadCliConfig( process.env.OTEL_EXPORTER_OTLP_ENDPOINT ?? settings.telemetry?.otlpEndpoint, logPrompts: argv.telemetryLogPrompts ?? settings.telemetry?.logPrompts, + disableDataCollection: settings.telemetry?.disableDataCollection ?? true, }, // Git-aware file filtering settings fileFiltering: { diff --git a/packages/cli/src/config/settings.test.ts b/packages/cli/src/config/settings.test.ts index cfa5e2b5..efaddab3 100644 --- a/packages/cli/src/config/settings.test.ts +++ b/packages/cli/src/config/settings.test.ts @@ -6,15 +6,13 @@ /// <reference types="vitest/globals" /> -const MOCK_HOME_DIR = '/mock/home/user'; // MUST BE FIRST - -// Mock 'os' first. Its factory uses MOCK_HOME_DIR. +// Mock 'os' first. import * as osActual from 'os'; // Import for type info for the mock factory vi.mock('os', async (importOriginal) => { const actualOs = await importOriginal<typeof osActual>(); return { ...actualOs, - homedir: vi.fn(() => MOCK_HOME_DIR), + homedir: vi.fn(() => '/mock/home/user'), }; }); @@ -77,7 +75,7 @@ describe('Settings Loading and Merging', () => { mockFsMkdirSync = vi.mocked(fs.mkdirSync); mockStripJsonComments = vi.mocked(stripJsonComments); - vi.mocked(osActual.homedir).mockReturnValue(MOCK_HOME_DIR); + vi.mocked(osActual.homedir).mockReturnValue('/mock/home/user'); (mockStripJsonComments as unknown as Mock).mockImplementation( (jsonString: string) => jsonString, ); diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx index 9657ba8f..293d50a5 100644 --- a/packages/cli/src/gemini.tsx +++ b/packages/cli/src/gemini.tsx @@ -131,6 +131,8 @@ export async function main() { } logUserPrompt(config, { + 'event.name': 'user_prompt', + 'event.timestamp': new Date().toISOString(), prompt: input, prompt_length: input.length, }); diff --git a/packages/cli/src/ui/hooks/useGeminiStream.test.tsx b/packages/cli/src/ui/hooks/useGeminiStream.test.tsx index f8cc61bc..cb5b35b4 100644 --- a/packages/cli/src/ui/hooks/useGeminiStream.test.tsx +++ b/packages/cli/src/ui/hooks/useGeminiStream.test.tsx @@ -38,12 +38,17 @@ const MockedGeminiClientClass = vi.hoisted(() => }), ); +const MockedUserPromptEvent = vi.hoisted(() => + vi.fn().mockImplementation(() => {}), +); + vi.mock('@gemini-cli/core', async (importOriginal) => { const actualCoreModule = (await importOriginal()) as any; return { ...actualCoreModule, GitService: vi.fn(), GeminiClient: MockedGeminiClientClass, + UserPromptEvent: MockedUserPromptEvent, }; }); @@ -283,6 +288,7 @@ describe('useGeminiStream', () => { getProjectRoot: vi.fn(() => '/test/dir'), getCheckpointingEnabled: vi.fn(() => false), getGeminiClient: mockGetGeminiClient, + getDisableDataCollection: () => false, addHistory: vi.fn(), } as unknown as Config; mockOnDebugMessage = vi.fn(); diff --git a/packages/cli/src/ui/hooks/useGeminiStream.ts b/packages/cli/src/ui/hooks/useGeminiStream.ts index 09b14666..921fbdb1 100644 --- a/packages/cli/src/ui/hooks/useGeminiStream.ts +++ b/packages/cli/src/ui/hooks/useGeminiStream.ts @@ -23,6 +23,7 @@ import { EditorType, ThoughtSummary, isAuthError, + UserPromptEvent, } from '@gemini-cli/core'; import { type Part, type PartListUnion } from '@google/genai'; import { @@ -213,10 +214,10 @@ export const useGeminiStream = ( if (typeof query === 'string') { const trimmedQuery = query.trim(); - logUserPrompt(config, { - prompt: trimmedQuery, - prompt_length: trimmedQuery.length, - }); + logUserPrompt( + config, + new UserPromptEvent(trimmedQuery.length, trimmedQuery), + ); onDebugMessage(`User query: '${trimmedQuery}'`); await logger?.logMessage(MessageSenderType.USER, trimmedQuery); diff --git a/packages/cli/src/ui/hooks/useToolScheduler.test.ts b/packages/cli/src/ui/hooks/useToolScheduler.test.ts index 8e3f139b..4c8901dc 100644 --- a/packages/cli/src/ui/hooks/useToolScheduler.test.ts +++ b/packages/cli/src/ui/hooks/useToolScheduler.test.ts @@ -48,6 +48,7 @@ const mockToolRegistry = { const mockConfig = { getToolRegistry: vi.fn(() => mockToolRegistry as unknown as ToolRegistry), getApprovalMode: vi.fn(() => ApprovalMode.DEFAULT), + getDisableDataCollection: () => false, }; const mockTool: Tool = { |
