summaryrefslogtreecommitdiff
path: root/packages/cli/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src')
-rw-r--r--packages/cli/src/config/config.test.ts12
-rw-r--r--packages/cli/src/config/config.ts1
-rw-r--r--packages/cli/src/config/settings.test.ts8
-rw-r--r--packages/cli/src/gemini.tsx2
-rw-r--r--packages/cli/src/ui/hooks/useGeminiStream.test.tsx6
-rw-r--r--packages/cli/src/ui/hooks/useGeminiStream.ts9
-rw-r--r--packages/cli/src/ui/hooks/useToolScheduler.test.ts1
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 = {