export interface PruneReport { scanned: number; pruned: number; bytesFreed: number; retentionDays: number; dryRun: boolean; /** First 20 pruned file basenames for user confirmation */ sample: string[]; } export interface PruneOptions { retentionMs?: number; dryRun?: boolean; /** Override the state directory. Used by tests. */ stateDir?: string; /** Override the outcomes directory. Used by tests. */ outcomesDir?: string; /** Current time for deterministic tests. Defaults to Date.now(). */ now?: number; } export interface RotateReport { scanned: number; rotated: number; bytesFreed: number; sample: string[]; } export declare function rotateAppendOnlyLogs(opts?: { stateDir?: string; maxBytes?: number; }): RotateReport; /** * Prune session-scoped files older than `retentionMs` from the state and * outcomes directories. Defaults to a dry-run so callers must opt-in to * deletion via `dryRun: false`. */ export declare function pruneState(opts?: PruneOptions): PruneReport; /** * ADR-002 T4 — daily rule decay scanner. * * `~/.forgen/me/rules` 전체를 훑어 `last_inject_at < now - decay_days` 인 active rule 을 * retire phase 로 전이시킨다. 실제 파일 삭제가 아니라 status='removed' + phase='retired'. * * 호출 지점: `forgen doctor --prune-state` 또는 `forgen lifecycle-scan --apply` 그리고 * 별도 cron/CI scheduler 에서도 호출 가능. dryRun=true 기본. */ export declare function runDailyT4Decay(opts?: { decayDays?: number; dryRun?: boolean; now?: number; }): Promise<{ scanned: number; retired: number; sample: string[]; dryRun: boolean; }>; /** * Count session-scoped files in STATE_DIR without deleting. Used by doctor * to surface a warning when the directory is bloated. */ export declare function countSessionScopedFiles(stateDir?: string): number;