All files / lib/feedback cooldown.ts

0% Statements 0/15
0% Branches 0/1
0% Functions 0/1
0% Lines 0/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19                                     
// lib/feedback/cooldown.ts
 
const cooldownMap: Record<string, number> = {};
const backoff: Record<string, number> = {};
 
export function canRun(kind: string, now: number, cooldownMs = 60000): boolean {
  const last = cooldownMap[kind] || 0;
  return now - last > (backoff[kind] || cooldownMs);
}
 
export function mark(kind: string, now: number, success: boolean) {
  cooldownMap[kind] = now;
  if (!success) {
    backoff[kind] = (backoff[kind] || 60000) * 2; // Exponential backoff
  } else {
    backoff[kind] = 60000;
  }
}