import { z } from 'zod'; import type { ToolDef } from '../../tools.js'; import { callCodecontext, type CodecontextResponse } from '../../codecontext_client.js'; export const GetHotFilesInput = z.object({ limit: z.number().int().min(1).max(100).optional(), }); export type GetHotFilesInputT = z.infer; const DESCRIPTION = 'Returns the most-imported files in the project, ranked by incoming import count. ' + 'Hot files are high-risk change targets — many other files depend on them. ' + 'Use to identify core modules and assess refactoring risk.'; export async function executeGetHotFiles( input: GetHotFilesInputT, projectPath: string, fetcher: typeof fetch = fetch, ): Promise { return callCodecontext( { toolName: 'get_hot_files', args: input.limit != null ? { limit: input.limit } : {}, projectPath }, fetcher, ); } export const getHotFiles: ToolDef = { name: 'get_hot_files', description: DESCRIPTION, inputSchema: GetHotFilesInput, jsonSchema: { type: 'function', function: { name: 'get_hot_files', description: DESCRIPTION, parameters: { type: 'object', properties: { limit: { type: 'number', description: 'Maximum number of files to return (default 20, max 100).', }, }, additionalProperties: false, }, }, }, async execute(input, projectRoot) { return await executeGetHotFiles(input, projectRoot); }, };