claude-monitor
Version:
Real-time terminal monitoring tool for Claude AI token usage
61 lines • 2.01 kB
JavaScript
export var CostMode;
(function (CostMode) {
CostMode["AUTO"] = "auto";
CostMode["CACHED"] = "cached";
CostMode["CALCULATED"] = "calculate";
})(CostMode || (CostMode = {}));
export var PlanType;
(function (PlanType) {
PlanType["PRO"] = "pro";
PlanType["MAX5"] = "max5";
PlanType["MAX20"] = "max20";
PlanType["CUSTOM"] = "custom";
})(PlanType || (PlanType = {}));
export function getTotalTokens(counts) {
return (counts.inputTokens +
counts.outputTokens +
counts.cacheCreationTokens +
counts.cacheReadTokens);
}
export function getSessionTotalTokens(session) {
return getTotalTokens(session.tokenCounts);
}
export function getSessionDurationMinutes(session) {
const endTime = session.actualEndTime || session.endTime;
const duration = (endTime.getTime() - session.startTime.getTime()) / (1000 * 60);
return Math.max(duration, 1.0);
}
export function normalizeModelName(model) {
if (!model)
return '';
const modelLower = model.toLowerCase();
if (modelLower.includes('claude-opus-4-') ||
modelLower.includes('claude-sonnet-4-') ||
modelLower.includes('claude-haiku-4-') ||
modelLower.includes('sonnet-4-') ||
modelLower.includes('opus-4-') ||
modelLower.includes('haiku-4-')) {
return modelLower;
}
if (modelLower.includes('opus')) {
if (modelLower.includes('4-'))
return modelLower;
return 'claude-3-opus';
}
if (modelLower.includes('sonnet')) {
if (modelLower.includes('4-'))
return modelLower;
if (modelLower.includes('3.5') || modelLower.includes('3-5')) {
return 'claude-3-5-sonnet';
}
return 'claude-3-sonnet';
}
if (modelLower.includes('haiku')) {
if (modelLower.includes('3.5') || modelLower.includes('3-5')) {
return 'claude-3-5-haiku';
}
return 'claude-3-haiku';
}
return model;
}
//# sourceMappingURL=index.js.map