feat: add direct Google Cloud telemetry exporters (#8541)

This commit is contained in:
Jerop Kipruto
2025-09-17 04:13:57 +09:00
committed by GitHub
parent 4e5c1fce8d
commit 88272cba8b
11 changed files with 1196 additions and 133 deletions
+27
View File
@@ -363,6 +363,33 @@ describe('Server Config (config.ts)', () => {
expect(config.getTelemetryEnabled()).toBe(TELEMETRY_SETTINGS.enabled);
});
it('Config constructor should set telemetry useCollector to true when provided', () => {
const paramsWithTelemetry: ConfigParameters = {
...baseParams,
telemetry: { enabled: true, useCollector: true },
};
const config = new Config(paramsWithTelemetry);
expect(config.getTelemetryUseCollector()).toBe(true);
});
it('Config constructor should set telemetry useCollector to false when provided', () => {
const paramsWithTelemetry: ConfigParameters = {
...baseParams,
telemetry: { enabled: true, useCollector: false },
};
const config = new Config(paramsWithTelemetry);
expect(config.getTelemetryUseCollector()).toBe(false);
});
it('Config constructor should default telemetry useCollector to false if not provided', () => {
const paramsWithTelemetry: ConfigParameters = {
...baseParams,
telemetry: { enabled: true },
};
const config = new Config(paramsWithTelemetry);
expect(config.getTelemetryUseCollector()).toBe(false);
});
it('should have a getFileService method that returns FileDiscoveryService', () => {
const config = new Config(baseParams);
const fileService = config.getFileService();
+6
View File
@@ -105,6 +105,7 @@ export interface TelemetrySettings {
otlpProtocol?: 'grpc' | 'http';
logPrompts?: boolean;
outfile?: string;
useCollector?: boolean;
}
export interface OutputSettings {
@@ -364,6 +365,7 @@ export class Config {
otlpProtocol: params.telemetry?.otlpProtocol,
logPrompts: params.telemetry?.logPrompts ?? true,
outfile: params.telemetry?.outfile,
useCollector: params.telemetry?.useCollector,
};
this.usageStatisticsEnabled = params.usageStatisticsEnabled ?? true;
@@ -708,6 +710,10 @@ export class Config {
return this.telemetrySettings.outfile;
}
getTelemetryUseCollector(): boolean {
return this.telemetrySettings.useCollector ?? false;
}
getGeminiClient(): GeminiClient {
return this.geminiClient;
}