@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
JavaScript
/**
* 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,
};
}