UNPKG

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
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