diff options
Diffstat (limited to 'packages/core/src/telemetry/metrics.ts')
| -rw-r--r-- | packages/core/src/telemetry/metrics.ts | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/packages/core/src/telemetry/metrics.ts b/packages/core/src/telemetry/metrics.ts index 59979ef3..124bc602 100644 --- a/packages/core/src/telemetry/metrics.ts +++ b/packages/core/src/telemetry/metrics.ts @@ -20,15 +20,23 @@ import { METRIC_API_REQUEST_LATENCY, METRIC_TOKEN_USAGE, METRIC_SESSION_COUNT, + METRIC_FILE_OPERATION_COUNT, } from './constants.js'; import { Config } from '../config/config.js'; +export enum FileOperation { + CREATE = 'create', + READ = 'read', + UPDATE = 'update', +} + let cliMeter: Meter | undefined; let toolCallCounter: Counter | undefined; let toolCallLatencyHistogram: Histogram | undefined; let apiRequestCounter: Counter | undefined; let apiRequestLatencyHistogram: Histogram | undefined; let tokenUsageCounter: Counter | undefined; +let fileOperationCounter: Counter | undefined; let isMetricsInitialized = false; function getCommonAttributes(config: Config): Attributes { @@ -75,7 +83,10 @@ export function initializeMetrics(config: Config): void { description: 'Counts the total number of tokens used.', valueType: ValueType.INT, }); - + fileOperationCounter = meter.createCounter(METRIC_FILE_OPERATION_COUNT, { + description: 'Counts file operations (create, read, update).', + valueType: ValueType.INT, + }); const sessionCounter = meter.createCounter(METRIC_SESSION_COUNT, { description: 'Count of CLI sessions started.', valueType: ValueType.INT, @@ -171,3 +182,21 @@ export function recordApiErrorMetrics( model, }); } + +export function recordFileOperationMetric( + config: Config, + operation: FileOperation, + lines?: number, + mimetype?: string, + extension?: string, +): void { + if (!fileOperationCounter || !isMetricsInitialized) return; + const attributes: Attributes = { + ...getCommonAttributes(config), + operation, + }; + if (lines !== undefined) attributes.lines = lines; + if (mimetype !== undefined) attributes.mimetype = mimetype; + if (extension !== undefined) attributes.extension = extension; + fileOperationCounter.add(1, attributes); +} |
