claude-usage-tracker
Version:
Advanced analytics for Claude Code usage with cost optimization, conversation length analysis, and rate limit tracking
183 lines • 5.75 kB
TypeScript
import type { UsageEntry } from "./types.js";
export interface ConversationSuccessMetrics {
conversationId: string;
messageCount: number;
totalCost: number;
totalTokens: number;
duration: number;
successScore: number;
efficiency: number;
promptComplexity: number;
cacheUtilization: number;
modelSwitches: number;
timeOfDay: number;
dayOfWeek: number;
avgResponseTime: number;
}
export interface ProjectAnalysis {
projectPath: string;
totalCost: number;
totalTokens: number;
conversationCount: number;
avgCostPerConversation: number;
efficiency: number;
timeSpent: number;
roi: number;
primaryModel: string;
topics: string[];
}
export interface TimeSeriesDataPoint {
date: string;
dailyCost: number;
dailyTokens: number;
conversationCount: number;
avgEfficiency: number;
opusPercentage: number;
cacheHitRate: number;
}
export interface CacheOptimizationInsight {
totalCacheTokens: number;
cacheHitRate: number;
cacheSavings: number;
underutilizedConversations: Array<{
conversationId: string;
missedCachingOpportunity: number;
}>;
recommendations: string[];
}
export interface PromptingPatternAnalysis {
avgPromptLength: number;
effectivePromptPatterns: Array<{
pattern: string;
successRate: number;
efficiency: number;
examples: string[];
}>;
inefficientPatterns: Array<{
pattern: string;
wasteRate: number;
avgCost: number;
}>;
optimalPromptingGuidelines: string[];
}
export interface AdvancedInsights {
conversationSuccess: ConversationSuccessMetrics[];
projectAnalysis: ProjectAnalysis[];
timeSeriesData: TimeSeriesDataPoint[];
cacheOptimization: CacheOptimizationInsight;
promptingPatterns: PromptingPatternAnalysis;
correlationInsights: Array<{
factor1: string;
factor2: string;
correlation: number;
insight: string;
}>;
}
export declare class ResearchAnalyzer {
analyzeConversationSuccess(entries: UsageEntry[]): ConversationSuccessMetrics[];
analyzeProjectROI(entries: UsageEntry[]): ProjectAnalysis[];
generateTimeSeriesData(entries: UsageEntry[]): TimeSeriesDataPoint[];
analyzeCacheOptimization(entries: UsageEntry[]): CacheOptimizationInsight;
analyzePromptingPatterns(entries: UsageEntry[]): PromptingPatternAnalysis;
generateAdvancedInsights(entries: UsageEntry[]): AdvancedInsights;
private groupByConversation;
private calculateSuccessScore;
private calculatePromptComplexity;
private calculateCacheUtilization;
private countModelSwitches;
private calculateAvgResponseTime;
private extractProjectPath;
private calculateProjectTimeSpent;
private calculateROI;
private getPrimaryModel;
private inferTopics;
private calculateDailyCacheHitRate;
private calculateMissedCachingOpportunity;
private generateCacheRecommendations;
private generatePromptingGuidelines;
private calculateCorrelationInsights;
private calculateCorrelation;
calculateProjectROI(entries: UsageEntry[]): {
projects: {
projectId: string;
totalCost: number;
conversationCount: number;
roi: number;
efficiency: number;
avgCostPerConversation: number;
roiScore: number;
characteristics: string[];
recommendations: string[];
}[];
totalInvestment: number;
avgROI: number;
insights: {
topPerformers: {
projectId: string;
totalCost: number;
conversationCount: number;
roi: number;
efficiency: number;
avgCostPerConversation: number;
roiScore: number;
characteristics: string[];
recommendations: string[];
}[];
underperformers: {
projectId: string;
totalCost: number;
conversationCount: number;
roi: number;
efficiency: number;
avgCostPerConversation: number;
roiScore: number;
characteristics: string[];
recommendations: string[];
}[];
};
recommendations: string[];
};
findCorrelations(entries: UsageEntry[]): {
correlations: {
variables: string[];
variable1: string;
variable2: string;
coefficient: number;
strength: number;
pValue: number;
significance: string;
interpretation: string;
description: string;
}[];
strongestCorrelations: {
variables: string[];
variable1: string;
variable2: string;
coefficient: number;
strength: number;
pValue: number;
significance: string;
interpretation: string;
description: string;
}[];
insights: string[];
};
analyzeConversationSuccessMetrics(entries: UsageEntry[]): {
successMetrics: {
totalConversations: number;
completionRate: number;
avgSuccessScore: number;
};
conversationCategories: {
successful: string[];
struggling: string[];
abandoned: string[];
};
patterns: {
successFactors: string[];
commonFailurePoints: string[];
};
recommendations: string[];
};
}
//# sourceMappingURL=research-analytics.d.ts.map