import type { AgentTool } from "@catui/agent-core"; import { type Static } from "@sinclair/typebox"; import { type TruncationResult } from "./truncate.js"; declare const grepSchema: import("@sinclair/typebox").TObject<{ pattern: import("@sinclair/typebox").TString; path: import("@sinclair/typebox").TOptional; glob: import("@sinclair/typebox").TOptional; ignoreCase: import("@sinclair/typebox").TOptional; literal: import("@sinclair/typebox").TOptional; context: import("@sinclair/typebox").TOptional; output_mode: import("@sinclair/typebox").TOptional, import("@sinclair/typebox").TLiteral<"files_with_matches">, import("@sinclair/typebox").TLiteral<"count">]>>; type: import("@sinclair/typebox").TOptional; contextBefore: import("@sinclair/typebox").TOptional; contextAfter: import("@sinclair/typebox").TOptional; offset: import("@sinclair/typebox").TOptional; multiline: import("@sinclair/typebox").TOptional; limit: import("@sinclair/typebox").TOptional; head_limit: import("@sinclair/typebox").TOptional; }>; export type GrepToolInput = Static; export interface GrepToolDetails { truncation?: TruncationResult; matchLimitReached?: number; linesTruncated?: boolean; } /** * Pluggable operations for the grep tool. * Override these to delegate search to remote systems (e.g., SSH). */ export interface GrepOperations { /** Check if path is a directory. Throws if path doesn't exist. */ isDirectory: (absolutePath: string) => Promise | boolean; /** Read file contents for context lines */ readFile: (absolutePath: string) => Promise | string; } export interface GrepToolOptions { /** Custom operations for grep. Default: local filesystem + ripgrep */ operations?: GrepOperations; } export declare function createGrepTool(cwd: string, options?: GrepToolOptions): AgentTool; /** Default grep tool using process.cwd() - for backwards compatibility */ export declare const grepTool: AgentTool; glob: import("@sinclair/typebox").TOptional; ignoreCase: import("@sinclair/typebox").TOptional; literal: import("@sinclair/typebox").TOptional; context: import("@sinclair/typebox").TOptional; output_mode: import("@sinclair/typebox").TOptional, import("@sinclair/typebox").TLiteral<"files_with_matches">, import("@sinclair/typebox").TLiteral<"count">]>>; type: import("@sinclair/typebox").TOptional; contextBefore: import("@sinclair/typebox").TOptional; contextAfter: import("@sinclair/typebox").TOptional; offset: import("@sinclair/typebox").TOptional; multiline: import("@sinclair/typebox").TOptional; limit: import("@sinclair/typebox").TOptional; head_limit: import("@sinclair/typebox").TOptional; }>, any>; export {};