import { ToolResult } from "../types/index.js"; import { ToolDiscovery } from "./tool-discovery.js"; export interface SearchResult { file: string; line: number; column: number; text: string; match: string; } export interface FileSearchResult { path: string; name: string; score: number; } export interface UnifiedSearchResult { type: "text" | "file"; file: string; line?: number; column?: number; text?: string; match?: string; score?: number; } export declare class SearchTool implements ToolDiscovery { private confirmationService; private currentDirectory; /** * Unified search method that can search for text content or find files */ universalSearch(query: string, options?: { searchType?: "text" | "files" | "both"; includePattern?: string; excludePattern?: string; caseSensitive?: boolean; wholeWord?: boolean; regex?: boolean; maxResults?: number; fileTypes?: string[]; excludeFiles?: string[]; includeHidden?: boolean; }): Promise; /** * Execute ripgrep command with specified options using ripgrep-node */ private _executeRipgrep; /** * Parse ripgrep JSON output into SearchResult objects */ private parseRipgrepOutput; /** * Find files by pattern using a simple file walking approach */ private _findFilesByPattern; /** * Calculate fuzzy match score for file names */ private calculateFileScore; /** * Format unified search results for display */ private formatUnifiedResults; /** * Update current working directory */ setCurrentDirectory(directory: string): void; /** * Get current working directory */ getCurrentDirectory(): string; getHandledToolNames(): string[]; }