import { loadFile } from "../utils/fileLoader.js";
import { buildContext } from "../utils/contextBuilder.js";
import { callModel } from "../utils/modelApi.js";
import { DOC_GENERATOR_TEMPLATE } from "../utils/promptTemplates.js";
/**
* MCP Tool: docGenerator
* Gera documentação para um arquivo de código.
* Agora com logs, tratamento de erro e retorno detalhado para fins de apresentação.
*/
export async function run(params: { target_file: string; template?: string }) {
console.log("[docGenerator] Iniciando geração de documentação...");
console.log("[docGenerator] Parâmetros recebidos:", params);
try {
// Carrega o conteúdo do arquivo alvo
const codeContent = await loadFile(params.target_file);
console.log("[docGenerator] Conteúdo do arquivo carregado (primeiros 200 chars):", codeContent.slice(0, 200));
// Gera o contexto a partir do código
const context = buildContext(codeContent);
console.log("[docGenerator] Contexto gerado (primeiros 200 chars):", context.slice(0, 200));
// Usa template customizado se fornecido, senão o padrão
const template = params.template || DOC_GENERATOR_TEMPLATE;
const prompt = template.replace("{code}", context);
console.log("[docGenerator] Prompt final (primeiros 200 chars):", prompt.slice(0, 200));
// Chama o modelo
const response = await callModel(prompt);
console.log("[docGenerator] Resposta do modelo:", response);
// Retorna informações detalhadas para apresentação
return {
docs: response,
context,
prompt,
params
};
} catch (error: any) {
console.error("[docGenerator] Erro ao gerar documentação:", error);
return {
error: true,
message: error?.message || String(error),
params
};
}
}