mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-17 08:41:19 -07:00
119 lines
3.3 KiB
TypeScript
119 lines
3.3 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import type { LogRecord } from '@opentelemetry/api-logs';
|
|
import { logs } from '@opentelemetry/api-logs';
|
|
import type { Config } from '../config/config.js';
|
|
import { SERVICE_NAME } from './constants.js';
|
|
import { isTelemetrySdkInitialized } from './sdk.js';
|
|
import {
|
|
ClearcutLogger,
|
|
EventNames,
|
|
} from './clearcut-logger/clearcut-logger.js';
|
|
import { EventMetadataKey } from './clearcut-logger/event-metadata-key.js';
|
|
import { safeJsonStringify } from '../utils/safeJsonStringify.js';
|
|
import type {
|
|
ConsecaPolicyGenerationEvent,
|
|
ConsecaVerdictEvent,
|
|
} from './types.js';
|
|
import { debugLogger } from '../utils/debugLogger.js';
|
|
|
|
export function logConsecaPolicyGeneration(
|
|
config: Config,
|
|
event: ConsecaPolicyGenerationEvent,
|
|
): void {
|
|
debugLogger.debug('Conseca Policy Generation Event:', event);
|
|
const clearcutLogger = ClearcutLogger.getInstance(config);
|
|
if (clearcutLogger) {
|
|
const data = [
|
|
{
|
|
gemini_cli_key: EventMetadataKey.CONSECA_USER_PROMPT,
|
|
value: safeJsonStringify(event.user_prompt),
|
|
},
|
|
{
|
|
gemini_cli_key: EventMetadataKey.CONSECA_TRUSTED_CONTENT,
|
|
value: safeJsonStringify(event.trusted_content),
|
|
},
|
|
{
|
|
gemini_cli_key: EventMetadataKey.CONSECA_GENERATED_POLICY,
|
|
value: safeJsonStringify(event.policy),
|
|
},
|
|
];
|
|
|
|
if (event.error) {
|
|
data.push({
|
|
gemini_cli_key: EventMetadataKey.CONSECA_ERROR,
|
|
value: event.error,
|
|
});
|
|
}
|
|
|
|
clearcutLogger.enqueueLogEvent(
|
|
clearcutLogger.createLogEvent(EventNames.CONSECA_POLICY_GENERATION, data),
|
|
);
|
|
}
|
|
|
|
if (!isTelemetrySdkInitialized()) return;
|
|
|
|
const logger = logs.getLogger(SERVICE_NAME);
|
|
const logRecord: LogRecord = {
|
|
body: event.toLogBody(),
|
|
attributes: event.toOpenTelemetryAttributes(config),
|
|
};
|
|
logger.emit(logRecord);
|
|
}
|
|
|
|
export function logConsecaVerdict(
|
|
config: Config,
|
|
event: ConsecaVerdictEvent,
|
|
): void {
|
|
debugLogger.debug('Conseca Verdict Event:', event);
|
|
const clearcutLogger = ClearcutLogger.getInstance(config);
|
|
if (clearcutLogger) {
|
|
const data = [
|
|
{
|
|
gemini_cli_key: EventMetadataKey.CONSECA_USER_PROMPT,
|
|
value: safeJsonStringify(event.user_prompt),
|
|
},
|
|
{
|
|
gemini_cli_key: EventMetadataKey.CONSECA_GENERATED_POLICY,
|
|
value: safeJsonStringify(event.policy),
|
|
},
|
|
{
|
|
gemini_cli_key: EventMetadataKey.GEMINI_CLI_TOOL_CALL_NAME,
|
|
value: safeJsonStringify(event.tool_call),
|
|
},
|
|
{
|
|
gemini_cli_key: EventMetadataKey.CONSECA_VERDICT_RESULT,
|
|
value: safeJsonStringify(event.verdict),
|
|
},
|
|
{
|
|
gemini_cli_key: EventMetadataKey.CONSECA_VERDICT_RATIONALE,
|
|
value: event.verdict_rationale,
|
|
},
|
|
];
|
|
|
|
if (event.error) {
|
|
data.push({
|
|
gemini_cli_key: EventMetadataKey.CONSECA_ERROR,
|
|
value: event.error,
|
|
});
|
|
}
|
|
|
|
clearcutLogger.enqueueLogEvent(
|
|
clearcutLogger.createLogEvent(EventNames.CONSECA_VERDICT, data),
|
|
);
|
|
}
|
|
|
|
if (!isTelemetrySdkInitialized()) return;
|
|
|
|
const logger = logs.getLogger(SERVICE_NAME);
|
|
const logRecord: LogRecord = {
|
|
body: event.toLogBody(),
|
|
attributes: event.toOpenTelemetryAttributes(config),
|
|
};
|
|
logger.emit(logRecord);
|
|
}
|