/** * Schedule repository interface — abstracts storage backend. * * Current implementation: JsonScheduleRepository (JSON files on disk). * Future upgrade path: Drizzle + sql.js (WASM, no native modules). */ import type { Schedule, ScheduleRun } from '@shared/types'; export interface ScheduleRepository { listSchedules(): Promise; getSchedule(id: string): Promise; getSchedulesByTeam(teamName: string): Promise; saveSchedule(schedule: Schedule): Promise; deleteSchedule(id: string): Promise; listRuns(scheduleId: string, opts?: { limit?: number; offset?: number }): Promise; getLatestRun(scheduleId: string): Promise; saveRun(run: ScheduleRun): Promise; pruneOldRuns(scheduleId: string, keepCount: number): Promise; saveRunLogs(scheduleId: string, runId: string, stdout: string, stderr: string): Promise; getRunLogs(scheduleId: string, runId: string): Promise<{ stdout: string; stderr: string }>; }