/** * v0.7 — workspace asset classifier. * Per docs/plan/v0.7-uninstall-lifecycle.md §4 + §10 #1. * * Walks the workspace tree and tags each entry with one of 6 classes: * * A — User code (`/repositories//`) — untouched, not enumerated * A* — `/.solosquad/repo.yaml` — surgical extract (whitelist length 1) * B — Accumulated knowledge — archive then delete * C — Operational metadata — archive metadata only, delete * D — Secrets — mask + delete * E — External resources — guide only, do not touch * * Critical contract: this walker NEVER descends into a repository directory * beyond `/.solosquad/repo.yaml`. The rest of the repo tree is left * entirely untraversed so even read-side bugs cannot leak user code. */ export type AssetClass = "A" | "A*" | "B" | "C" | "D" | "E"; export interface AssetEntry { /** Absolute path on disk. */ absPath: string; /** Relative to workspace root (forward-slash, for archive layout). */ relPath: string; /** Classification. */ cls: AssetClass; /** File or directory. */ kind: "file" | "directory"; /** Bytes (files only). */ size?: number; /** Owning org slug when applicable. */ orgSlug?: string; /** Owning repo slug when applicable (A* only). */ repoSlug?: string; } export interface ClassifyResult { entries: AssetEntry[]; /** Tallies per class. */ totals: Record; /** Repository roots that were *not* enumerated (class A — untouched). */ untraversedRepoRoots: string[]; } export declare function classifyWorkspace(workspace: string): ClassifyResult; /** * Summary line per class for CLI/doctor reports. */ export declare function summarizeClassification(result: ClassifyResult): string[];