claude-usage-tracker
Version:
Advanced analytics for Claude Code usage with cost optimization, conversation length analysis, and rate limit tracking
139 lines • 4.05 kB
TypeScript
import type { UsageEntry } from "./types.js";
export interface DataQualityReport {
totalEntries: number;
validEntries: number;
invalidEntries: number;
duplicateEntries: number;
dateRange: {
earliest: string;
latest: string;
spanDays: number;
};
modelDistribution: Record<string, number>;
conversationDistribution: {
totalConversations: number;
avgMessagesPerConversation: number;
shortConversations: number;
mediumConversations: number;
longConversations: number;
};
costDistribution: {
totalCost: number;
medianCost: number;
top10PercentCost: number;
costPerModel: Record<string, number>;
};
tokenDistribution: {
totalTokens: number;
avgPromptTokens: number;
avgCompletionTokens: number;
cacheTokens: number;
extremeEntries: Array<{
type: "high_tokens" | "low_tokens" | "high_cost";
conversationId: string;
value: number;
}>;
};
anomalies: Array<{
type: string;
description: string;
severity: "low" | "medium" | "high";
affectedEntries: number;
}>;
}
export interface UsageHeatmap {
hourlyHeatmap: Array<{
hour: number;
dayOfWeek: number;
totalCost: number;
conversationCount: number;
avgEfficiency: number;
}>;
monthlyTrends: Array<{
month: string;
totalCost: number;
totalTokens: number;
conversationCount: number;
avgEfficiency: number;
topModel: string;
}>;
efficiencyDistribution: Array<{
range: string;
count: number;
percentage: number;
}>;
}
export interface ConversationFlowAnalysis {
conversationJourneys: Array<{
conversationId: string;
startTime: string;
endTime: string;
messageCount: number;
totalCost: number;
efficiency: number;
modelSwitches: number;
avgResponseTime: number;
peakActivity: {
hour: number;
burstCount: number;
};
conversationType: "sprint" | "marathon" | "interrupted" | "focused";
}>;
flowPatterns: Array<{
pattern: string;
frequency: number;
avgCost: number;
successRate: number;
}>;
}
export interface CostDriverAnalysis {
primaryDrivers: Array<{
factor: string;
impact: number;
description: string;
recommendedAction: string;
}>;
modelUsagePattern: {
opusUsage: {
percentage: number;
appropriateUsage: number;
wastedSpend: number;
};
sonnetUsage: {
percentage: number;
missedOpportunities: number;
underutilization: number;
};
};
seasonalPatterns: Array<{
period: string;
avgDailyCost: number;
efficiency: number;
explanation: string;
}>;
}
export interface DeepInsights {
dataQuality: DataQualityReport;
usageHeatmap: UsageHeatmap;
conversationFlow: ConversationFlowAnalysis;
costDrivers: CostDriverAnalysis;
recommendations: Array<{
category: "cost" | "efficiency" | "workflow" | "data_quality";
priority: "high" | "medium" | "low";
title: string;
description: string;
potentialSavings?: number;
implementationEffort: "low" | "medium" | "high";
}>;
}
export declare class DeepAnalyzer {
generateDataQualityReport(entries: UsageEntry[]): DataQualityReport;
generateUsageHeatmap(entries: UsageEntry[]): UsageHeatmap;
analyzeConversationFlow(entries: UsageEntry[]): ConversationFlowAnalysis;
analyzeCostDrivers(entries: UsageEntry[]): CostDriverAnalysis;
generateDeepInsights(entries: UsageEntry[]): DeepInsights;
private detectDataAnomalies;
private countDuplicates;
private generateRecommendations;
}
//# sourceMappingURL=deep-analysis.d.ts.map