/** * Lightweight in-process metrics registry with zero external dependencies. * * Provides counters, gauges, and bucketed histograms for operational * observability of the dispatch subsystem. No HTTP server — snapshots are * consumed programmatically or exposed via other means (e.g., health check). * * Gated via ROLEBOX_METRICS env var. When unset or falsy, all methods are * NO-OPs and snapshot() returns an empty structure. */ export interface CounterSnapshot { value: number; labels?: Record; } export interface GaugeSnapshot { value: number; labels?: Record; } export interface HistogramSnapshot { buckets: Record; sum: number; count: number; labels?: Record; } export interface MetricsSnapshot { counters: Record; gauges: Record; histograms: Record; } /** * A monotonically increasing counter. * * Labels must be low-cardinality only (agent id, status, concurrency key). * Do NOT use high-cardinality labels like taskId or sessionId. */ export declare class Counter { private _value; inc(n?: number): void; peek(): number; } /** * A gauge that can go up and down. * * Same low-cardinality label constraint as Counter. */ export declare class Gauge { private _value; inc(n?: number): void; dec(n?: number): void; set(val: number): void; peek(): number; } /** * A histogram with fixed, named bucket boundaries (milliseconds). * * Buckets consume bounded memory regardless of observation count: * only the 11 predefined buckets are tracked. * * Labels must be low-cardinality only (agent id, status, concurrency key). * Do NOT use high-cardinality labels like taskId or sessionId. */ export declare class Histogram { private _buckets; private _sum; private _count; constructor(); observe(value: number): void; peek(): HistogramSnapshot; } /** * In-process metrics registry. * * Creates counters, gauges, and histograms keyed by `name` + sorted labels * so that label sets like `{status: "ok"}` and `{status: "fail"}` produce * distinct metrics under the same name. * * When `enabled` is false (default: read from ROLEBOX_METRICS env var), * all metric creation returns NO-OP wrappers and snapshot() returns an * empty structure. */ export declare class MetricsRegistry { private readonly enabled; private counters; private gauges; private histograms; private coreCounters; private coreGauges; constructor(enabled?: boolean); counter(name: string, labels?: Record): Counter; gauge(name: string, labels?: Record): Gauge; histogram(name: string, labels?: Record): Histogram; snapshot(): MetricsSnapshot; reset(): void; } /** Module-level metrics registry. Gated via ROLEBOX_METRICS env var. */ export declare const metrics: MetricsRegistry; //# sourceMappingURL=metrics.d.ts.map