#!/usr/bin/env bun
/**
* Self MCP Server - Test Script
* Testa as funcionalidades básicas do servidor
*/
import db from "../src/db/index.js";
import { generateMarkdown } from "../src/lib/markdown.js";
import { executeTool } from "../src/tools/index.js";
import { readResource } from "../src/resources/index.js";
import { getPrompt } from "../src/prompts/index.js";
console.log("🧪 Iniciando testes do Self MCP Server...\n");
// Limpa dados anteriores para teste limpo
console.log("1. Limpando dados anteriores...");
db.clearAll();
console.log(" ✅ Dados limpos\n");
// Testa adicionar fundamentos
console.log("2. Testando fundamentos...");
db.addFoundation("value", "Autonomia");
db.addFoundation("value", "Excelência");
db.addFoundation("value", "Impacto");
db.addFoundation("anti_value", "Dependência");
db.addFoundation(
"identity",
"Sou um construtor que capacita outros a construir com segurança."
);
const foundations = db.getFoundations();
console.log(` ✅ ${foundations.length} fundamentos adicionados\n`);
// Testa adicionar intenções
console.log("3. Testando intenções...");
const intention = db.addIntention(
"problem",
"Software open-source é frequentemente inseguro, causando brechas de dados.",
true
);
console.log(` ✅ Intenção primária adicionada (ID: ${intention.id})\n`);
// Testa adicionar missões
console.log("4. Testando missões...");
const mission = db.addMission(
"M1",
intention.id,
"Criar um padrão prático que torne segurança o default em projetos OSS."
);
console.log(` ✅ Missão ${mission.code} adicionada\n`);
// Testa adicionar metas
console.log("5. Testando metas...");
const goal = db.addGoal(
"G1",
mission.id,
2025,
"Lançar SecureOSS v1.0 com 10.000 downloads",
"downloads no npm"
);
console.log(` ✅ Meta ${goal.code} adicionada\n`);
// Testa adicionar projetos
console.log("6. Testando projetos...");
const project = db.addProject("PJ1", goal.id, "Desenvolver CLI do SecureOSS");
console.log(` ✅ Projeto ${project.code} adicionado\n`);
// Testa adicionar obstáculos
console.log("7. Testando obstáculos...");
db.addObstacle(
"O1",
"Trabalho consome muito tempo",
"Acordar 1h mais cedo para deep work matinal"
);
console.log(" ✅ Obstáculo O1 adicionado\n");
// Testa adicionar registro diário
console.log("8. Testando registro diário...");
const today = new Date().toISOString().split("T")[0];
db.addDaily(
today,
"victory",
"Finalizei o parser de configuração do SecureOSS.",
mission.id
);
console.log(` ✅ Entrada diária adicionada para ${today}\n`);
// Testa geração de Markdown
console.log("9. Testando geração de Markdown...");
const markdown = generateMarkdown();
console.log(" ✅ Markdown gerado com sucesso");
console.log(` 📄 Tamanho: ${markdown.length} caracteres\n`);
// Testa resources
console.log("10. Testando resources...");
const profileJson = readResource("self://profile/json");
const profileMd = readResource("self://profile/markdown");
console.log(" ✅ self://profile/json - OK");
console.log(" ✅ self://profile/markdown - OK\n");
// Testa prompts
console.log("11. Testando prompts...");
const createSelfPrompt = getPrompt("create_self", { style: "personal" });
const dailyGuardianPrompt = getPrompt("daily_guardian", { mode: "morning" });
console.log(" ✅ create_self - OK");
console.log(" ✅ daily_guardian - OK\n");
// Testa tools via executeTool
console.log("12. Testando tools...");
const toolResult = await executeTool("add_daily", {
date: today,
type: "learning",
content: "Aprendi que testes automatizados são essenciais!",
});
console.log(` ✅ add_daily executado: ${toolResult.content[0].text}\n`);
// Exibe o perfil completo
console.log("═".repeat(60));
console.log("PERFIL COMPLETO (JSON):");
console.log("═".repeat(60));
const fullProfile = db.getFullProfile();
console.log(JSON.stringify(fullProfile, null, 2));
console.log("\n" + "═".repeat(60));
console.log("PERFIL COMPLETO (MARKDOWN):");
console.log("═".repeat(60));
console.log(markdown);
console.log("\n✅ TODOS OS TESTES PASSARAM!");
console.log("🧠 Self MCP Server está pronto para uso.\n");