/** * quota-tracker.ts — Seguimiento de cuota de uso de Claude Code * * Calcula en base a los JSONL de ~/.claude/projects/: * - Prompts reales en el ciclo actual de 5 horas (ventana deslizante desde epoch UTC) * - Tiempo hasta el reset del ciclo * - Horas de sesión semanales por modelo (Sonnet vs Opus) * - Burn rate: tokens/min promedio de los últimos 30 minutos * - Plan detectado automáticamente desde el máximo histórico * * Por qué 5h desde epoch UTC (no desde una hora fija): * Claude Code usa ventanas deslizantes de exactamente 5 horas desde el epoch Unix. * Ciclo actual = floor(now / 5h) * 5h. El reset ocurre cuando cruza ese límite. * * Caché de 30 segundos para no re-leer todos los JSONL en cada request del dashboard. */ export type ClaudePlan = 'free' | 'pro' | 'max5' | 'max20'; export interface QuotaData { cyclePrompts: number; cycleLimit: number; cyclePct: number; cycleTokens: number; cycleLimitTokens: number; cycleResetMs: number; cycleResetAt: number; cycleStartTs: number; weeklyHoursSonnet: number; weeklyHoursOpus: number; weeklyHoursHaiku: number; weeklyTokensSonnet: number; weeklyTokensOpus: number; weeklyTokensHaiku: number; weeklyLimitSonnet: number; weeklyLimitOpus: number; weeklyPctAll: number; burnRateTokensPerMin: number; detectedPlan: ClaudePlan; planSource: 'config' | 'keychain' | 'inferred'; computedAt: number; } /** * Llama a la API de Anthropic para obtener los % de quota exactos que muestra claude.ai. * Actualiza apiCache si la llamada tiene éxito; de lo contrario, no hace nada (silent fallback). * Debe llamarse periódicamente desde el daemon y al inicio del MCP server. */ export declare function refreshFromApi(): Promise; /** * Calcula y retorna QuotaData. * Usa caché de 30s para no re-leer todos los JSONL en cada request del dashboard. * Pasar `forcePlan` para fijar el plan manualmente (por config del usuario). */ export declare function computeQuota(forcePlan?: ClaudePlan): QuotaData; /** Invalida la caché (llamar cuando llega un nuevo evento para que el siguiente /quota sea fresco) */ export declare function invalidateQuotaCache(): void;