/** * Heartbeat Scheduler * * Periodically polls HEARTBEAT.md and executes proactive tasks */ import type { AgentLoop } from '../agent/agent-loop.js'; export interface HeartbeatConfig { /** Interval in milliseconds (default: 30 minutes) */ interval: number; /** Quiet hours start (0-23, default: 23) */ quietStart: number; /** Quiet hours end (0-23, default: 8) */ quietEnd: number; /** Discord channel ID to send notifications */ notifyChannelId?: string; } export declare class HeartbeatScheduler { private config; private agentLoop; private timer; private startupTimer; private running; private sendNotification?; constructor(agentLoop: AgentLoop, config?: Partial, sendNotification?: (channelId: string, message: string) => Promise); /** * Start the heartbeat scheduler */ /** * The cadence the watchdog should hold this leg to, or null when the * heartbeat is off. Boot declares the leg AFTER initLegCadence runs - * declaring from start() hit a null singleton and was silently unwatched * (review: a watchdog believed to be watching but isn't is the failure * mode this feature exists to prevent). */ declaredCadence(): number | null; start(): void; /** * Stop the heartbeat scheduler */ stop(): void; /** * Check if current time is within quiet hours */ private isQuietHours; /** * Execute a heartbeat tick */ private tick; /** * Manually trigger a heartbeat */ triggerNow(): Promise; /** * Update configuration */ setConfig(config: Partial): void; /** * Get current configuration */ getConfig(): HeartbeatConfig; } //# sourceMappingURL=heartbeat.d.ts.map