interface MetricEntry {
count: number;
totalMs: number;
errors: number;
}
const metrics = new Map<string, MetricEntry>();
export function recordCall(tool: string, durationMs: number, isError = false): void {
const entry = metrics.get(tool) ?? { count: 0, totalMs: 0, errors: 0 };
entry.count++;
entry.totalMs += durationMs;
if (isError) entry.errors++;
metrics.set(tool, entry);
}
export function getMetrics(): Record<string, MetricEntry & { avgMs: number }> {
const result: Record<string, MetricEntry & { avgMs: number }> = {};
for (const [name, entry] of metrics) {
result[name] = {
...entry,
avgMs: entry.count > 0 ? Math.round(entry.totalMs / entry.count) : 0,
};
}
return result;
}
export function resetMetrics(): void {
metrics.clear();
}