import { z } from 'zod';
import * as search from '../core/search';
import { createErrorResponse, ErrorCodes } from '../utils/errors';
/**
* Search tools
*/
export const SearchFilesInputSchema = z.object({
baseDir: z.string(),
query: z.string(),
maxResults: z.number().optional().default(100),
});
export async function searchFilesTool(input: z.infer<typeof SearchFilesInputSchema>) {
try {
const results = await search.searchFiles(input.baseDir, input.query, input.maxResults);
return {
content: [
{
type: 'text',
text: JSON.stringify({ success: true, count: results.length, results }, null, 2),
},
],
};
} catch (error) {
return {
content: [createErrorResponse(ErrorCodes.INTERNAL_ERROR, String(error))],
};
}
}
export const SearchContentInputSchema = z.object({
baseDir: z.string(),
query: z.string(),
maxResults: z.number().optional().default(50),
});
export async function searchContentTool(input: z.infer<typeof SearchContentInputSchema>) {
try {
const results = await search.searchFileContents(input.baseDir, input.query, input.maxResults);
return {
content: [
{
type: 'text',
text: JSON.stringify({ success: true, count: results.length, results }, null, 2),
},
],
};
} catch (error) {
return {
content: [createErrorResponse(ErrorCodes.INTERNAL_ERROR, String(error))],
};
}
}