kimi-code / packages /agent-core-v2 /src /app /telemetry /consoleAppender.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
f0634fb verified
Raw History Blame Contribute Delete
1.23 kB
import type { ITelemetryAppender, TelemetryAppenderRecord } from './telemetry';
import type { TelemetryProperties } from './context';
export interface ConsoleAppenderOptions {
readonly prefix?: string;
readonly pretty?: boolean;
readonly log?: (message: string) => void;
}
const DEFAULT_PREFIX = '[telemetry]';
export class ConsoleAppender implements ITelemetryAppender {
private readonly prefix: string;
private readonly pretty: boolean;
private readonly log: (message: string) => void;
constructor(options: ConsoleAppenderOptions = {}) {
this.prefix = options.prefix ?? DEFAULT_PREFIX;
this.pretty = options.pretty ?? false;
this.log = options.log ?? defaultLog;
}
track(record: TelemetryAppenderRecord): void {
const payload =
Object.keys(record.properties).length === 0
? ''
: ` ${stringifyProperties(record.properties, this.pretty)}`;
this.log(`${this.prefix} ${record.event}${payload}`);
}
}
function stringifyProperties(properties: TelemetryProperties, pretty: boolean): string {
if (pretty) {
return JSON.stringify(properties, null, 2);
}
return JSON.stringify(properties);
}
function defaultLog(message: string): void {
console.log(message);
}