claude-usage-tracker
Version:
Advanced analytics for Claude Code usage with cost optimization, conversation length analysis, and rate limit tracking
94 lines • 3.05 kB
TypeScript
import type { UsageEntry } from "./types.js";
export interface ConversationCluster {
id: string;
type: "coding" | "analysis" | "writing" | "debugging" | "other";
conversations: Array<{
conversationId: string;
cost: number;
tokens: number;
duration: number;
efficiency: number;
}>;
avgCost: number;
avgTokens: number;
avgEfficiency: number;
optimizationPotential: number;
recommendations: string[];
}
export interface BatchProcessingOpportunity {
conversationId: string;
currentCost: number;
batchCost: number;
savings: number;
eligibilityScore: number;
reasoning: string;
timeToProcess: number;
}
export interface ModelSwitchingRecommendation {
conversationId: string;
currentModel: string;
recommendedModel: string;
currentCost: number;
projectedCost: number;
savings: number;
confidence: number;
riskLevel: "low" | "medium" | "high";
reasoning: string;
}
export interface OptimizationSummary {
totalPotentialSavings: number;
batchProcessingSavings: number;
modelSwitchingSavings: number;
efficiencyImprovements: number;
recommendations: Array<{
type: "batch" | "model_switch" | "efficiency";
description: string;
savings: number;
effort: "low" | "medium" | "high";
}>;
}
export declare class OptimizationAnalyzer {
private readonly BATCH_API_DISCOUNT;
private readonly MIN_BATCH_COST;
clusterConversations(entries: UsageEntry[]): ConversationCluster[];
identifyBatchProcessingOpportunities(entries: UsageEntry[]): {
opportunities: BatchProcessingOpportunity[];
totalPotentialSavings: number;
};
generateModelSwitchingRecommendations(entries: UsageEntry[]): {
recommendations: ModelSwitchingRecommendation[];
totalPotentialSavings: number;
};
generateOptimizationSummary(entries: UsageEntry[]): OptimizationSummary;
private groupByConversation;
private classifyConversationType;
private calculateConversationDuration;
private calculateClusterStats;
private generateClusterRecommendations;
private calculateBatchEligibility;
private calculateAvgTimeBetweenMessages;
private getBatchEligibilityReasoning;
private estimateBatchProcessingTime;
private analyzeModelSwitch;
private assessConversationComplexity;
private detectCodeContext;
analyzeConversationClusters(entries: UsageEntry[]): {
clusters: {
conversationIds: string[];
characteristics: {
avgTokens: number;
avgCost: number;
complexity: number;
};
optimization: {
potentialSavings: number;
recommendation: string;
};
}[];
totalConversations: number;
avgClusterSize: number;
};
private removeBatchOverlaps;
private calculateComplexityScore;
}
//# sourceMappingURL=optimization-analytics.d.ts.map