/** Why a path is not carried. Stable codes — callers may group on these. */ export type SyncExclusionReason = "dependency-tree" | "provider-cache" | "build-output" | "tool-cache" | "vcs-internal" | "nested-worktrees" | "regenerable-database" | "oversize"; export interface SyncScopeDecision { /** Carry this path into the archive. */ readonly include: boolean; /** Set only when `include` is false. */ readonly reason?: SyncExclusionReason; /** The rule that decided, for auditing a plan without re-running it. */ readonly rule?: string; } /** * Files whose presence at a directory's root identifies that directory as a * generated dependency tree, whatever it is called. Marker detection is what * catches a virtualenv named `.venv-media`. */ export declare const DEPENDENCY_TREE_MARKERS: readonly string[]; /** Directories whose NAME is the convention rather than an arbitrary choice. */ export declare const DEPENDENCY_TREE_DIRS: readonly string[]; export declare const PROVIDER_CACHE_DIRS: readonly string[]; export declare const BUILD_OUTPUT_DIRS: readonly string[]; export declare const TOOL_CACHE_DIRS: readonly string[]; /** * Database files. The census found 17.89 GiB in 51 files, 20.6% of the whole * store in two 8.7 GB session backups. A live sqlite file is also the one thing * that cannot be copied safely while it is open, so it is excluded on * correctness grounds and not only on size. */ export declare const DATABASE_EXTENSIONS: readonly string[]; export interface DirectoryProbe { /** True when the directory being classified contains this child entry. */ hasChild(name: string): boolean; } export interface ClassifyDirectoryOptions { /** * Lets a marker rule see the directory's own children. Omit it and marker * detection is skipped — name rules still apply, so an unprobed walk is * weaker but never wrong in the include direction. */ readonly probe?: DirectoryProbe; /** * Depth of this directory below the workspace root, 0 for a direct child. * `worktrees` is only meaningful at the root. */ readonly depth?: number; } /** * Decide whether to descend into a directory. * * Marker rules run before name rules: a directory is judged by what it contains * before it is judged by what it is called. */ export declare function classifyDirectory(name: string, options?: ClassifyDirectoryOptions): SyncScopeDecision; export interface ClassifyFileOptions { /** Size in bytes, when the caller has already stat'd the entry. */ readonly size?: number; /** * Opt-in ceiling. UNSET BY DEFAULT so that no file is ever dropped on size * alone unless a caller asks for it; a caller that sets this is accepting * that some real content may need handling out of band. */ readonly maxFileBytes?: number; } /** * Decide whether to carry a file. * * Everything not matched here is carried, including every document, image and * unknown extension. */ export declare function classifyFile(name: string, options?: ClassifyFileOptions): SyncScopeDecision; //# sourceMappingURL=sync-scope.d.ts.map