@thugdacake/operante
Version:
Cérebro Operante — o núcleo IA que invade e domina assistentes, criando uma mente única com Thug Developer
122 lines (104 loc) • 3.41 kB
JavaScript
const fs = require('fs');
const path = require('path');
const chalk = require('chalk');
/**
* Interpreta o conteúdo do arquivo mind.md como um conjunto de comandos operacionais.
* Analisa as diretivas de instrução para os cinco papéis principais do Cérebro Operante.
*/
function parseMind(filePath = path.join(__dirname, 'mind.md')) {
if (!fs.existsSync(filePath)) {
console.error(chalk.red(`[x] Arquivo mind.md não encontrado em ${filePath}`));
process.exit(1);
}
const raw = fs.readFileSync(filePath, 'utf8');
const lines = raw.split('\n');
const blocks = {
leader: [],
manager: [],
architect: [],
engineer: [],
analyst: [],
};
let currentRole = null;
for (let line of lines) {
line = line.trim();
// Identifica o papel atual
if (line.toLowerCase().startsWith('# leader')) {
currentRole = 'leader';
continue;
} else if (line.toLowerCase().startsWith('# manager')) {
currentRole = 'manager';
continue;
} else if (line.toLowerCase().startsWith('# architect')) {
currentRole = 'architect';
continue;
} else if (line.toLowerCase().startsWith('# engineer')) {
currentRole = 'engineer';
continue;
} else if (line.toLowerCase().startsWith('# analyst')) {
currentRole = 'analyst';
continue;
}
// Adiciona a instrução ao bloco do papel atual
if (currentRole && line && !line.startsWith('#')) {
blocks[currentRole].push(line);
}
}
return blocks;
}
/**
* Executa o Cérebro Operante com base nos blocos de instruções.
*/
function executeCerebro(blocks) {
console.log(chalk.blueBright.bold('\n>>> EXECUTANDO CÉREBRO OPERANTE <<<'));
for (const [role, instructions] of Object.entries(blocks)) {
console.log(chalk.green(`\n[${role.toUpperCase()}]`));
for (const instruction of instructions) {
if (instruction) {
console.log(`- ${instruction}`);
}
}
}
console.log(chalk.yellow('\n>>> EXECUÇÃO COMPLETA <<<'));
}
/**
* Valida a estrutura do mind.md
*/
function validateMind(blocks) {
const requiredRoles = ['leader', 'manager', 'architect', 'engineer', 'analyst'];
const missingRoles = requiredRoles.filter(role => !blocks[role] || blocks[role].length === 0);
if (missingRoles.length > 0) {
console.error(chalk.red(`[x] Papéis ausentes no mind.md: ${missingRoles.join(', ')}`));
return false;
}
return true;
}
/**
* Gera um relatório da estrutura do mind.md
*/
function generateMindReport(blocks) {
console.log(chalk.cyan('\n=== RELATÓRIO DO MIND.MD ===\n'));
for (const [role, instructions] of Object.entries(blocks)) {
console.log(chalk.yellow(`\n[${role.toUpperCase()}]`));
console.log(`Total de instruções: ${instructions.length}`);
console.log('Primeiras instruções:');
instructions.slice(0, 3).forEach(instruction => {
console.log(`- ${instruction}`);
});
}
console.log(chalk.cyan('\n=== FIM DO RELATÓRIO ===\n'));
}
module.exports = {
parseMind,
executeCerebro,
validateMind,
generateMindReport
};
// Se for executado diretamente via Node
if (require.main === module) {
const mind = parseMind();
if (validateMind(mind)) {
generateMindReport(mind);
executeCerebro(mind);
}
}