@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio
127 lines (126 loc) • 3.4 kB
TypeScript
import { TokenTracker } from "./tokenTracker.js";
import type { LatencyStats, MetricsAggregatorConfig, MetricsSummary, ModelCostStats, ProviderCostStats, SpanData, TimeWindowStats, TokenUsageStats, TraceView } from "../types/index.js";
/**
* Metrics Aggregator for comprehensive telemetry analysis
* Provides latency percentiles, token aggregation, and cost tracking
*/
export declare class MetricsAggregator {
private spans;
private latencyValues;
private tokenTracker;
private timeWindows;
private config;
private spansByType;
private costByProvider;
private costByModel;
private successCount;
private failureCount;
private firstSpanTime?;
private lastSpanTime?;
constructor(config?: MetricsAggregatorConfig);
/**
* Record a span for metrics aggregation
*/
recordSpan(span: SpanData): void;
/**
* Track cost aggregations from a span
*/
private trackCosts;
/**
* Update time window statistics
*/
private updateTimeWindow;
/**
* Create an empty time window
*/
private createEmptyTimeWindow;
/**
* Create empty latency stats
*/
private createEmptyLatencyStats;
/**
* Calculate latency percentile from sorted array
*/
private calculatePercentile;
/**
* Calculate standard deviation
*/
private calculateStdDev;
/**
* Get comprehensive latency statistics
*/
getLatencyStats(): LatencyStats;
/**
* Get token usage statistics
*/
getTokenStats(): TokenUsageStats;
/**
* Get cost breakdown by provider
*/
getCostByProvider(): ProviderCostStats[];
/**
* Get cost breakdown by model
*/
getCostByModel(): ModelCostStats[];
/**
* Get total cost across all providers
*/
getTotalCost(): number;
/**
* Get time window statistics
*/
getTimeWindows(): TimeWindowStats[];
/**
* Get statistics for a specific time range
*/
getStatsForTimeRange(startTime: Date, endTime: Date): TimeWindowStats;
/**
* Record a latency measurement for an operation
* Use this for standalone latency tracking without a full span
*/
recordLatency(operation: string, latencyMs: number): void;
/**
* Get comprehensive metrics summary (alias for getSummary)
*/
getMetrics(): MetricsSummary;
/**
* Get comprehensive metrics summary
*/
getSummary(): MetricsSummary;
/**
* Get all recorded spans (returns a copy)
*/
getSpans(): SpanData[];
/**
* Get spans grouped by traceId as hierarchical trace views
*/
getTraces(): TraceView[];
/**
* Get the underlying token tracker for custom pricing configuration
*/
getTokenTracker(): TokenTracker;
/**
* Reset all metrics
*/
reset(): void;
/**
* Export metrics as JSON
*/
toJSON(): Record<string, unknown>;
/**
* Format cost as currency string
*/
formatCost(cost: number, currency?: string): string;
/**
* Get a formatted summary string
*/
getFormattedSummary(): string;
}
/**
* Get the global metrics aggregator instance
*/
export declare function getMetricsAggregator(): MetricsAggregator;
/**
* Reset the global metrics aggregator (for testing)
*/
export declare function resetMetricsAggregator(): void;