import { type ExecFileException } from "node:child_process"; /** Structural DI seam: only the callback overload the collector actually uses — demanding * node's full `typeof execFile` (with `__promisify__`) makes plain test mocks unassignable. */ export type WorkspaceExecFileFn = (command: string, args: readonly string[], options: { cwd?: string; timeout?: number; maxBuffer?: number; encoding?: string; windowsHide?: boolean; }, callback: (error: ExecFileException | null, stdout: string, stderr: string) => void) => unknown; import type { EvidenceRef } from "../autonomy/contracts.ts"; export interface CollectWorkspaceSourcesArgs { /** Free text (goal + requirement text) that search terms are derived from. */ query: string; /** Session working directory; ripgrep runs here and paths are reported relative to it. */ cwd: string; /** Hard cap on returned sources; also the lane's source budget. */ maxSources: number; /** Injected for tests; defaults to node's `execFile`. */ execFileFn?: WorkspaceExecFileFn; } /** Split on non-word runs, lowercase, drop stopwords/short/dupes, keep source order, cap at MAX_TERMS. */ export declare function deriveSearchTerms(query: string): string[]; export declare function collectWorkspaceSources(args: CollectWorkspaceSourcesArgs): Promise; //# sourceMappingURL=workspace-collector.d.ts.map