import type { Database } from "./memory/db-types.js"; import type { ThreadRegistryEntry } from "./memory/thread-registry.js"; export interface IThreadRepository { registerThread(db: Database, entry: { threadId: number; name: string; type: ThreadRegistryEntry["type"]; rootThreadId?: number; badge?: string; client?: string; maxRetries?: number; cooldownMs?: number; keepAlive?: boolean; dailyRotation?: boolean; workingDirectory?: string; }): ThreadRegistryEntry; updateThread(db: Database, threadId: number, updates: Partial>): boolean; archiveThread(db: Database, threadId: number): boolean; getThread(db: Database, threadId: number): ThreadRegistryEntry | null; getAllThreads(db: Database): ThreadRegistryEntry[]; getRootThreads(db: Database): ThreadRegistryEntry[]; } export interface ISessionRepository { getSession(chatId: string, name: string): number | undefined; setSession(chatId: string, name: string, threadId: number): void; deleteSession(chatId: string, name: string): void; lookupTopicRegistry(chatId: string, name: string): number | undefined; registerTopicRegistry(chatId: string, name: string, threadId: number): void; } export interface ScheduledTask { /** Unique task ID (auto-generated). */ id: string; /** Thread ID this task is scoped to. */ threadId: number; /** The prompt to inject when the task fires. */ prompt: string; /** Human-readable label for the task. */ label: string; /** When set, task fires after this many minutes of operator silence. */ afterIdleMinutes?: number; /** When set, ISO 8601 timestamp for one-shot scheduled execution. */ runAt?: string; /** When set, cron expression for recurring execution (minute hour day month weekday). */ cron?: string; /** Timestamp of last execution (ISO string), for cron dedup. */ lastFiredAt?: string; /** If true, the task is a one-shot and should be removed after firing. */ oneShot: boolean; /** Creation timestamp (ISO string). */ createdAt: string; } export interface IScheduleRepository { loadSchedule(threadId: number): ScheduledTask[]; saveSchedule(threadId: number, tasks: ScheduledTask[]): void; deleteSchedule(threadId: number): void; listSchedules(threadId: number): ScheduledTask[]; } //# sourceMappingURL=interfaces.d.ts.map