claude-usage-tracker
Version:
Advanced analytics for Claude Code usage with cost optimization, conversation length analysis, and rate limit tracking
85 lines • 2.59 kB
JavaScript
import { clearConfigCache, setTestConfig, clearTestConfig, } from "./config-loader.js";
// Mock configuration for tests
export const TEST_CONFIG = {
models: {
"claude-3.5-sonnet-20241022": {
name: "Claude 3.5 Sonnet",
input: 3.0,
output: 15.0,
cached: 0.375,
},
"claude-opus-4-20250514": {
name: "Claude Opus 4",
input: 15.0,
output: 75.0,
cached: 1.875,
},
"claude-3-haiku-20240307": {
name: "Claude 3 Haiku",
input: 0.25,
output: 1.25,
cached: 0.03125,
},
},
rate_limits: {
Pro: {
price: 20,
weekly: {
sonnet4: { min: 40, max: 80 },
opus4: { min: 4, max: 8 },
},
},
},
token_estimates: {
sonnet4: { min: 50000, max: 100000 },
opus4: { min: 40000, max: 80000 },
},
batch_api_discount: 0.5,
data_paths: ["~/.config/claude/projects"],
recommendations: {
code_generation: { model: "claude-3.5-sonnet-20241022", confidence: 0.8 },
debugging: { model: "claude-opus-4-20250514", confidence: 0.7 },
simple_query: { model: "claude-3.5-sonnet-20241022", confidence: 0.95 },
documentation: { model: "claude-3.5-sonnet-20241022", confidence: 0.9 },
},
};
export function setupTestConfig() {
// Clear any cached config
clearConfigCache();
clearTestConfig();
// Set up test environment
const originalEnv = process.env.NODE_ENV;
process.env.NODE_ENV = "test";
// Set the test configuration
setTestConfig(TEST_CONFIG);
return () => {
process.env.NODE_ENV = originalEnv;
clearConfigCache();
clearTestConfig();
};
}
export function createMockUsageEntries() {
return [
{
id: "test-1",
timestamp: new Date("2024-01-15T10:00:00Z").toISOString(),
model: "claude-3.5-sonnet-20241022",
conversationId: "conv-1",
input_tokens: 1000,
output_tokens: 500,
total_tokens: 1500,
isBatchAPI: false,
},
{
id: "test-2",
timestamp: new Date("2024-01-15T11:00:00Z").toISOString(),
model: "claude-opus-4-20250514",
conversationId: "conv-2",
input_tokens: 800,
output_tokens: 400,
total_tokens: 1200,
isBatchAPI: false,
},
];
}
//# sourceMappingURL=test-utils.js.map