/** * Cron scheduling in-memory. Los jobs viven solo en la sesión de sq (no * persisten) salvo que el user pida `durable: true` — entonces los guardamos * en ~/.squeezr-code/scheduled_tasks.json para que sobrevivan restarts. * * Cron syntax: 5 fields, local timezone. * min hour day-of-month month day-of-week * * Soporta: *, star-slash-N, N, N-M, N,M,L * No soporta: @reboot, L (last), W (weekday) * * Los jobs se disparan cuando el REPL está idle. Al fire, inyectan el prompt * como si el user lo hubiera tecleado. Auto-expiran tras 7 días (recurrentes) * o al primer fire (one-shot). */ export interface CronJob { id: string; cron: string; prompt: string; recurring: boolean; durable: boolean; createdAt: number; expiresAt: number; lastFireAt?: number; nextFireAt: number; } export declare function setCronFireHandler(fn: ((prompt: string) => void) | null): void; export declare function cronCreate(opts: { cron: string; prompt: string; recurring?: boolean; durable?: boolean; }): { id: string; nextFireAt: number; }; export declare function cronDelete(id: string): boolean; export declare function cronList(): CronJob[]; export declare function startCronTicker(): void; export declare function stopCronTicker(): void; /** * Load durable jobs from disk. Call once at REPL startup. * Jobs whose nextFireAt is in the past get a fresh nextFireAt from now. */ export declare function loadDurableJobs(): void; //# sourceMappingURL=cron.d.ts.map