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