← back to Dw Gemini Skip TK11321

lib/hourly-activation-count.js

16 lines

'use strict';

// Manual canaries and scheduled runs share the existing 21-per-hour allowance.
function countHourlyActivations(auditText, now = new Date()) {
  const hour = now.toISOString().slice(0, 13);
  let used = 0;
  for (const line of auditText.split('\n')) {
    if (!/"action"\s*:\s*"activated"/.test(line)) continue;
    const row = JSON.parse(line); // A malformed activation event must stop the run.
    if (typeof row.ts !== 'string' || !Number.isFinite(Date.parse(row.ts))) throw new Error('Invalid activation audit timestamp');
    if (new Date(row.ts).toISOString().slice(0, 13) === hour) used++;
  }
  return used;
}
module.exports = { countHourlyActivations };