/** * Default search roots derived from the live nexus registry (T12476). * * A project is identified by its `project_id` (ADR-094); its path is a * per-device hint. A hardcoded search root such as `/mnt/projects` is the * layout of ONE past device: after a move it names a directory that does not * exist, so a scan silently walks nothing and a fleet survey reports an empty * fleet. The registry already knows where this device's projects live — the * parent directories of their recorded checkouts are the roots to search. * * @task T12476 * @epic T12468 * @adr ADR-094 */ /** * Parent directories of the given project paths that exist on this device. * * Paths whose checkout is gone are skipped (a vanished checkout says nothing * about where projects live now), as is a filesystem root — walking `/` is * never a sensible default. The result is de-duplicated and sorted so callers * produce deterministic output. * * @param projectPaths - Absolute project checkout paths. * @returns Existing parent directories, unique and sorted. * @example * ```ts * parentRootsOf(['/home/me/code/a', '/home/me/code/b', '/srv/c']); * // → ['/home/me/code', '/srv'] (when all three exist) * ``` * @task T12476 */ export declare function parentRootsOf(projectPaths: readonly string[]): string[]; /** * Parent directories of every live project checkout in the nexus registry * (a project that lives on another machine, a cloud vault placeholder row, * has none here). * * An EMPTY registry yields `[]`, and callers choose their own fallback. An * UNREADABLE registry throws (T12512): falling back to a guessed root would * report a partial or empty fleet as if it were the whole one. * * @returns Existing parent directories of registered projects, sorted. * @throws {NexusRegistryReadError} When the registry cannot be read. * @example * ```ts * const roots = await listRegistryParentRoots(); * ``` * @task T12476 * @task T12512 */ export declare function listRegistryParentRoots(): Promise; //# sourceMappingURL=registry-roots.d.ts.map