/** * `harn backup`: restic-backed snapshots of `.harnery/`. * * Wraps `restic` with sensible defaults so single-user use doesn't require * remembering env vars. Repo path + password file live under XDG-style * paths and are init'd on first `harn backup init`. Subcommands: * * init restic init the repo (one-time) * snapshot restic backup of the durable, privacy-safe V3 state * list restic snapshots * restore restic restore * prune restic forget --keep-daily 7 --keep-weekly 4 --prune * * Defaults (repo path, password file, and the keep-daily/weekly/monthly prune * policy) come from `.harnery/config.jsonc` `backup.*`, overridable per field by * env vars (HARNERY_RESTIC_REPO, HARNERY_RESTIC_PASSWORD_FILE) and CLI flags — * see `backupConfig()`. The wrapper deliberately doesn't try to abstract restic; * it surfaces it, with opinionated defaults plus passthrough after `--`. */ import type { Command } from "commander"; import type { EmitContext } from "../commander.js"; import { type BackupConfig } from "../core/config.js"; import type { HarneryStorageClass } from "../core/storage/contract.js"; export { hostSnapshotCachePath, newestSnapshotTime, parseBackupDuration, readHostSnapshotCache, } from "../core/backup/host-snapshot.js"; export declare const DEFAULT_BACKUP_MAX_BYTES: number; export declare const DEFAULT_BACKUP_CLASSES: Set; export declare const DEFAULT_BACKUP_EXCLUDED_CLASSES: Set; export declare const DEFAULT_BACKUP_EXCLUDED_FAMILY_IDS: Set; export interface BackupSelection { targets: readonly string[]; familyIds: readonly string[]; } export declare function resolveBackupSelection(projectRoot: string, config?: BackupConfig, includeArtifacts?: boolean): BackupSelection; export declare function backupCatalogCoverage(projectRoot: string): { uncovered: readonly string[]; }; export declare function selectedLogicalBytes(targets: readonly string[]): number; export declare function registerBackupCommand(program: Command, emit: EmitContext): void; //# sourceMappingURL=backup.d.ts.map