export declare const BROAD_SEARCH_OUTPUT_ROUTE: "route-to-file"; export type SearchScopeAssessment = { kind: "scoped"; } | { kind: "broad"; searchTool: "rg" | "grep" | "find" | "fd"; reason: string; }; export type ShellContentSearchTool = "rg" | "grep"; export interface ShellSearchInvocationScope { targets: string[]; positiveGlobs: string[]; hasScopeFilter: boolean; readsStdin: boolean; metaOnly: boolean; } /** One owner for filesystem targets, include globs, and stdin across both shell search guards. */ export declare function parseShellSearchInvocationScope(searchTool: ShellContentSearchTool, args: string[], readsPipe: boolean): ShellSearchInvocationScope; /** * Reject shell searches whose filesystem scope cannot be proven narrow. Dedicated grep/find * tools already own result caps and artifacts; this closes the raw-shell bypass before execution. */ export declare function assessShellSearchScope(command: string, cwd: string): SearchScopeAssessment; /** * Ripgrep and grep reserve exit code 1 for a successful search with zero matches. Shell lists * return the final command's status, so compound diagnostics ending in either search must preserve * that semantic instead of turning an empty result into a tool failure. This scans the * already-bounded command once and only accepts an unambiguous final invocation; syntax, IO, and * regex errors remain exit code 2. */ export declare function expectedContentSearchNoMatch(command: string, exitCode: number | null): ShellContentSearchTool | undefined; //# sourceMappingURL=search-command-guard.d.ts.map