import type { SyncAgent } from "./agent-sync.js"; /** A snapshot source: one directory of installed skills. */ export interface SyncHomeDefinition { /** Directory name used in the snapshot destination and reporting. */ name: string; /** Snapshot category: the standalone stores, or one of the agent homes. */ subClass: "skills" | "custom" | "agent-homes"; /** The coding agent whose home this is, when subClass is agent-homes. */ agent: SyncAgent | null; } /** The seven installed skill homes the per-station snapshot covers. */ export declare const SYNC_HOMES: readonly SyncHomeDefinition[]; /** * Scanner-flagged portable files the fleet conformance gate refuses. They are * absent from the snapshots by construction; the check stays as defense in * depth. See the header comment for the provenance and retirement path. */ export declare const REFUSED_SCANNER_FLAGGED: Set; export declare function isExcludedSkillFileName(fileName: string): boolean; /** * The portable filter: only files at `/SKILL.md`, `/skill.json`, * and `/scripts|assets|references/*` may reach a snapshot or the cache. */ export declare function isPortableWithinSkill(relativeParts: string[]): boolean; /** * The on-disk location of one of the seven snapshot homes. `homesRoot` stages * a copy of the homes (e.g. an rsync'd mirror of a remote station); when * absent, this machine's real `$HOME` is the root. The staged layout mirrors * the home mapping: `/skills`, `//skills`, * `/opencode/skills`. */ export declare function homePathFor(definition: SyncHomeDefinition, homesRoot?: string): string; /** Snapshot destination inside the repo, relative to the repo root. */ export declare function destinationFor(definition: SyncHomeDefinition, stationId: string, relativePath: string): string; export interface WalkEntry { kind: "file" | "symlink"; relativePath: string; fullPath: string; } /** * Recursive walk that records symlinks instead of following them, and skips * the excluded directory names/patterns. A missing root reads as empty — the * same contract as the source script, where an absent home is a zero-file * home, not an error. */ export declare function walkEntries(absoluteRoot: string): WalkEntry[]; /** True when a path exists and is a regular file. */ export declare function isRegularFile(filePath: string): boolean;