claude-usage-tracker
Version:
Advanced analytics for Claude Code usage with cost optimization, conversation length analysis, and rate limit tracking
138 lines • 4.52 kB
TypeScript
import type { UsageEntry } from "./types.js";
export interface ConversationLengthPattern {
lengthCategory: "short" | "medium" | "long" | "extended";
messageCount: number;
avgTokensPerMessage: number;
avgCostPerMessage: number;
efficiency: number;
frequency: number;
trendDirection: "increasing" | "decreasing" | "stable";
}
export interface TimeToCompletionAnalysis {
taskType: string;
avgCompletionTime: number;
medianCompletionTime: number;
successRate: number;
efficiencyTrend: "improving" | "declining" | "stable";
optimalSessionLength: number;
recommendations: string[];
}
export interface TaskSwitchingPattern {
switchFrequency: number;
avgTimeBetweenSwitches: number;
costOfSwitching: number;
mostCommonTransitions: Array<{
from: string;
to: string;
frequency: number;
avgGapTime: number;
}>;
recommendations: string[];
}
export interface LearningCurveAnalysis {
skillArea: string;
initialEfficiency: number;
currentEfficiency: number;
improvementRate: number;
plateauDetected: boolean;
timeToCompetency: number;
costToCompetency: number;
learningPhase: "novice" | "developing" | "competent" | "expert";
nextMilestone: string;
}
export interface UsagePattern {
patternType: "peak_hours" | "model_preference" | "cost_sensitivity" | "efficiency_cycles";
description: string;
strength: number;
impact: "low" | "medium" | "high";
actionable: boolean;
recommendation?: string;
}
export declare class PatternAnalyzer {
analyzeConversationLengthPatterns(entries: UsageEntry[]): {
conversationTypes: {
quickQuestions: {
count: number;
};
detailedDiscussions: {
count: number;
};
deepDives: {
count: number;
};
};
avgLengthByType: {
quickQuestions: number;
detailedDiscussions: number;
deepDives: number;
};
costDistribution: {
quickQuestions: {
avgCost: number;
totalCost: number;
};
detailedDiscussions: {
avgCost: number;
totalCost: number;
};
deepDives: {
avgCost: number;
totalCost: number;
};
};
efficiencyInsights: {
mostEfficientType: string;
leastEfficientType: string;
avgTokensPerExchange: number;
};
recommendations: string[];
};
analyzeTimeToCompletion(entries: UsageEntry[]): TimeToCompletionAnalysis[];
analyzeTaskSwitchingPatterns(entries: UsageEntry[]): TaskSwitchingPattern;
analyzeLearningCurve(entries: UsageEntry[], skillArea?: string): LearningCurveAnalysis;
identifyUsagePatterns(entries: UsageEntry[]): UsagePattern[];
private groupByConversation;
private categorizeConversationLength;
private calculateLengthTrend;
private inferTaskType;
private calculateCompletionTime;
private inferTaskSuccess;
private calculateMedian;
private calculateEfficiencyTrend;
private findOptimalSessionLength;
private generateCompletionRecommendations;
private estimateSwitchingCost;
private generateSwitchingRecommendations;
private filterBySkillArea;
private createDefaultLearningAnalysis;
private calculateRecentEfficiencyTrend;
private determineLearningPhase;
private estimateTimeToCompetency;
private estimateCostToCompetency;
private suggestNextMilestone;
private analyzeHourlyDistribution;
private detectPeakHoursPattern;
private analyzeModelPreference;
private analyzeCostSensitivity;
private detectEfficiencyCycles;
private getDailyCosts;
private calculateStandardDeviation;
identifyLearningCurves(entries: UsageEntry[]): {
periods: {
startDate: string;
endDate: string;
metrics: {
avgQuestionsPerDay: number;
avgComplexityScore: number;
};
characteristics: string[];
}[];
overallTrend: "stable" | "improving" | "declining";
insights: string[];
};
private calculateAverageComplexity;
private classifyTaskType;
private groupTasksByType;
private calculateLongestFocusedSession;
}
//# sourceMappingURL=pattern-analysis.d.ts.map