// v1.12 Track B.2: codecontext wrapper — get_file_analysis. import { z } from 'zod'; import type { ToolDef } from '../../tools.js'; import { callCodecontext, type CodecontextResponse } from '../../codecontext_client.js'; export const GetFileAnalysisInput = z.object({ file_path: z.string().trim().min(1), }); export type GetFileAnalysisInputT = z.infer; const DESCRIPTION = 'Returns detailed analysis of a single file: symbols defined, imports, exports, and inferred role. ' + 'Use when you have a specific file in mind and need its structure without view_file-ing the whole thing. ' + 'Tree-sitter coverage: full for JS/Python/Java/Go/Rust/C++. TypeScript symbols are approximate. ' + 'PHP and SQL are not supported — fall back to view_file for those.'; export async function executeGetFileAnalysis( input: GetFileAnalysisInputT, projectPath: string, fetcher: typeof fetch = fetch, ): Promise { return callCodecontext( { toolName: 'get_file_analysis', args: { file_path: input.file_path }, projectPath, }, fetcher, ); } export const getFileAnalysis: ToolDef = { name: 'get_file_analysis', description: DESCRIPTION, inputSchema: GetFileAnalysisInput, jsonSchema: { type: 'function', function: { name: 'get_file_analysis', description: DESCRIPTION, parameters: { type: 'object', properties: { file_path: { type: 'string', description: 'Absolute or project-relative path to the file.', }, }, required: ['file_path'], additionalProperties: false, }, }, }, async execute(input, projectRoot) { return await executeGetFileAnalysis(input, projectRoot); }, };