UNPKG

@juspay/neurolink

Version:

Universal AI Development Platform with working MCP integration, multi-provider support, and professional CLI. Built-in tools operational, 58+ external MCP servers discoverable. Connect to filesystem, GitHub, database operations, and more. Build, test, and

77 lines (76 loc) 2.44 kB
/** * Analytics utility functions for TokenUsage and AnalyticsData * Provides helper functions to avoid manual field access patterns */ /** * Format token usage as a human-readable string */ export function formatTokenUsage(usage) { return `${usage.input}/${usage.output}/${usage.total}`; } /** * Calculate cost based on token usage and cost per token */ export function calculateTokenCost(usage, costPerToken) { return usage.total * costPerToken; } /** * Combine multiple token usage objects into a single total */ export function combineTokenUsage(usages) { return usages.reduce((total, current) => ({ input: total.input + current.input, output: total.output + current.output, total: total.total + current.total, }), { input: 0, output: 0, total: 0 }); } /** * Format analytics data for display */ export function formatAnalyticsForDisplay(analytics) { const parts = []; // Provider and model parts.push(`Provider: ${analytics.provider}`); if (analytics.model) { parts.push(`Model: ${analytics.model}`); } // Token usage parts.push(`Tokens: ${formatTokenUsage(analytics.tokenUsage)}`); // Cost if (analytics.cost !== undefined) { parts.push(`Cost: $${analytics.cost.toFixed(5)}`); } // Duration const timeInSeconds = (analytics.requestDuration / 1000).toFixed(1); parts.push(`Time: ${timeInSeconds}s`); return parts.join(" | "); } /** * Check if analytics data contains valid token usage */ export function hasValidTokenUsage(analytics) { return !!(analytics.tokenUsage && typeof analytics.tokenUsage.input === "number" && typeof analytics.tokenUsage.output === "number" && typeof analytics.tokenUsage.total === "number"); } /** * Extract summary metrics from analytics data */ export function getAnalyticsSummary(analytics) { const totalTokens = analytics.tokenUsage.total; let costPerToken = null; if (analytics.cost !== null && analytics.cost !== undefined && Number.isFinite(analytics.cost) && totalTokens > 0) { const computed = analytics.cost / (totalTokens / 1000); costPerToken = Number.isFinite(computed) ? computed : null; } const requestsPerSecond = analytics.requestDuration > 0 ? 1000 / analytics.requestDuration : 0; return { totalTokens, costPerToken, requestsPerSecond, }; }