import type { ProjectRef } from './types.js'; /** * Read the watch-config file (`~/.videoclaw-monitor.json`, or an injected path). * Returns extra BASE dirs from its `roots: string[]` (a leading `~/` expands to * the home dir). Missing/malformed files are ignored gracefully (returns []). * Exported so workspace.ts / serve.ts can reuse the same config path. */ export declare function readWatchConfigRoots(configPath: string, key?: 'roots' | 'looseRoots'): Promise; /** * Gather the candidate BASE dirs scanned for workspaces and loose deliverables: * `~/.videoclaw-*` dirs + cwd + `extraRoots` + watch-config roots, deduped. * `configPath` is injectable for hermetic tests; it defaults to * `~/.videoclaw-monitor.json`. */ export declare function gatherBaseDirs(extraRoots?: string[], configPath?: string): Promise; /** * Discover workspace roots — dirs that directly contain `projects/`. * * Gathers candidate BASE dirs (~/.videoclaw-* + cwd + extraRoots + watch-config * roots), then recursively scans each (up to MAX_SCAN_DEPTH levels deep) for * dirs containing a `projects/` subdir, excluding videoclaw source checkouts * (whose `projects/` is a test fixture). `configPath` is injectable for hermetic * tests; it defaults to `~/.videoclaw-monitor.json`. */ export declare function discoverWorkspaceRoots(extraRoots?: string[], configPath?: string): Promise; /** A rendered video file living OUTSIDE any `projects//` workspace. */ export interface LooseDeliverable { path: string; name: string; dir: string; sizeBytes: number; mtimeMs: number; /** Absolute path to a cached poster frame, set ONLY when it already exists on disk (cache hit). */ thumbPath?: string; } /** * Discover loose deliverables — rendered `.mp4`/`.mov` files that live under the * user-curated watch-config roots (from `~/.videoclaw-monitor.json`) but NOT * inside any `projects//` workspace or intermediate working dir. * * Scans ONLY the watch-config roots — NOT ~/.videoclaw-* dirs or cwd, which * are managed workspaces whose loose mp4s are intermediates already surfaced as * project cards. If the watch-config is missing/empty, returns []. * * `configPath` is injectable for hermetic tests; defaults to * `~/.videoclaw-monitor.json`. */ export declare function discoverLooseDeliverables(configPath?: string): Promise; export declare function discoverProjects(roots: string[]): Promise; //# sourceMappingURL=discovery.d.ts.map