@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
73 lines (72 loc) • 3.04 kB
TypeScript
/**
* Telemetry Handler Module
*
* Handles analytics, evaluation, performance metrics, and telemetry configuration.
* Extracted from BaseProvider to follow Single Responsibility Principle.
*
* Responsibilities:
* - Analytics creation and tracking
* - Evaluation generation
* - Performance metrics recording
* - Cost calculation
* - Telemetry configuration
*
* @module core/modules/TelemetryHandler
*/
import type { NeuroLink } from "../../neurolink.js";
import type { StreamOptions, AIProviderName, AnalyticsData, EnhancedGenerateResult, EvaluationData, TextGenerationOptions } from "../../types/index.js";
/**
* TelemetryHandler class - Handles analytics and telemetry for AI providers
*/
export declare class TelemetryHandler {
private readonly providerName;
private readonly modelName;
private readonly neurolink?;
constructor(providerName: AIProviderName, modelName: string, neurolink?: NeuroLink | undefined);
/**
* Create analytics for a generation result
*/
createAnalytics(result: EnhancedGenerateResult, responseTime: number, context?: Record<string, unknown>): Promise<AnalyticsData>;
/**
* Create evaluation for a generation result
*/
createEvaluation(result: EnhancedGenerateResult, options: TextGenerationOptions): Promise<EvaluationData>;
/**
* Record performance metrics for a generation
*/
recordPerformanceMetrics(usage: {
inputTokens: number | undefined;
outputTokens: number | undefined;
} | undefined, responseTime: number): Promise<void>;
/**
* Calculate actual cost based on token usage and provider configuration.
*
* Uses the per-model pricing table first (which has accurate rates for
* specific models like Claude on Vertex AI), then falls back to the
* provider-level default cost from modelConfiguration.
*
* Previously this only used modelConfig.getCostInfo() which returns
* provider-level defaults (e.g. Gemini rates for the "vertex" provider),
* causing a ~1,780x under-estimate when the actual model was Claude Sonnet
* on Vertex AI ($0.000060 vs $0.106895 for the same request).
*/
calculateActualCost(usage: {
inputTokens?: number | undefined;
outputTokens?: number | undefined;
}): Promise<number>;
/**
* Create telemetry configuration for Vercel AI SDK experimental_telemetry
* This enables automatic OpenTelemetry tracing when telemetry is enabled
*/
getTelemetryConfig(options: StreamOptions | TextGenerationOptions, operationType?: "stream" | "generate"): {
isEnabled: boolean;
functionId?: string;
metadata?: Record<string, string | number | boolean>;
recordInputs?: boolean;
recordOutputs?: boolean;
} | undefined;
/**
* Handle tool execution storage if available
*/
handleToolExecutionStorage(toolCalls: unknown[], toolResults: unknown[], options: TextGenerationOptions | StreamOptions, currentTime: Date): Promise<void>;
}