import type { RunRecordDiagnostic } from "./run-store.js"; import type { ProcessIdentityInspector, WorkerSessionLeaseDiagnostic } from "./workflow-lease.js"; export interface WorkflowDoctorCommand { readonly kind: "exec" | "pi"; readonly argv: readonly string[]; readonly purpose: string; } export interface WorkflowDoctorFinding { readonly severity: "error" | "warning"; readonly code: "corrupt-run-record" | "corrupt-session-lease" | "orphan-process" | "ledger-process-missing" | "stale-session-lease" | "abandoned-session-lease" | "dangling-session"; readonly message: string; readonly paths: readonly string[]; readonly commands: readonly WorkflowDoctorCommand[]; } export interface WorkflowDoctorReport { readonly schema: 1; readonly checkedAt: string; readonly status: "ok" | "attention"; readonly summary: { readonly healthyRuns: number; readonly corruptRuns: number; readonly workerProcessesChecked: number; readonly orphanProcesses: number; readonly staleOrAbandonedLeases: number; readonly danglingSessions: number; }; readonly diskUsage: { readonly totalBytes: number; readonly byArea: readonly { readonly name: string; readonly path: string; readonly bytes: number; }[]; }; readonly findings: readonly WorkflowDoctorFinding[]; readonly suggestedCommands: readonly WorkflowDoctorCommand[]; } interface RunDiagnosticCatalog { diagnoseRunRecords(): Promise; } interface LeaseDiagnosticCatalog { diagnoseWorkerSessionLeases(): Promise; } export interface WorkflowDoctorOptions { readonly namespaceDirectory: string; readonly runs: RunDiagnosticCatalog; readonly leases: LeaseDiagnosticCatalog; readonly inspector: ProcessIdentityInspector; readonly now?: () => Date; } export declare class WorkflowDoctor { #private; constructor(options: WorkflowDoctorOptions); inspect(): Promise; } export {}; //# sourceMappingURL=workflow-doctor.d.ts.map