/** * ⚡🦀 OverClawck — Database Layer * SQLite persistence for the job queue. */ import { Job, QueueStats, OverClawckConfig, Plan, Phase, PlanTask, ProgressEvent } from './types'; export declare class OverClawckDB { private db; private config; private dbPath; private _ready; constructor(config: OverClawckConfig); private init; private migrate; ensureReady(): Promise; private save; insert(job: Job): Job; update(id: string, updates: Partial): Job | null; getById(id: string): Job | null; /** * Get the next job(s) ready to execute. * Respects: priority, scheduled_at, dependencies, status. */ getNextReady(limit?: number): Job[]; /** * Check if all dependencies for a job are completed. */ areDependenciesMet(job: Job): boolean; /** * Rich dependency check — returns whether deps are met, stuck, or still pending. */ checkDependencies(job: Job): { ready: boolean; stuck: boolean; reason?: string; }; /** * Auto-fail queued jobs whose dependencies can never be met. */ failStuckJobs(): Job[]; getRunning(): Job[]; query(filters?: { status?: string; priority?: string; runtime?: string; client?: string; project?: string; tag?: string; from?: string; to?: string; limit?: number; offset?: number; }): Job[]; private queryRows; getStats(): QueueStats; getDailySpend(): number; logEvent(jobId: string, event: string, detail?: string): void; getJobLog(jobId: string): Array<{ timestamp: string; event: string; detail: string; }>; exportJSON(filters?: { status?: string; client?: string; from?: string; to?: string; }): string; getDistinct(col: string): string[]; private rowToJob; insertPlan(plan: Plan): Plan; updatePlan(id: string, updates: Partial): Plan | null; getPlanById(id: string): Plan | null; queryPlans(filters?: { status?: string; project?: string; client?: string; limit?: number; }): Plan[]; insertPhase(phase: Phase): Phase; updatePhase(id: string, updates: Partial): Phase | null; getPhasesByPlan(planId: string): Phase[]; getPhaseById(id: string): Phase | null; insertTask(task: PlanTask): PlanTask; updateTask(id: string, updates: Partial): PlanTask | null; getTasksByPhase(phaseId: string): PlanTask[]; getTasksByPlan(planId: string): PlanTask[]; getTaskById(id: string): PlanTask | null; logPlanEvent(event: ProgressEvent): void; getPlanLog(planId: string): ProgressEvent[]; purgeJobs(filters?: { before?: string; status?: string; olderThanDays?: number; }): number; private rowToPlan; private rowToPhase; private rowToTask; close(): void; } //# sourceMappingURL=database.d.ts.map