@personnn/personnnkit
Version:
π΅ PersonnnKit - El Agente Kit Universal. Framework revolucionario para crear agentes de IA con HTML + Python. Simplicidad radical vs frameworks gigantes.
417 lines β’ 22.2 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const commander_1 = require("commander");
const inquirer_1 = __importDefault(require("inquirer"));
const chalk_1 = __importDefault(require("chalk"));
const figlet_1 = __importDefault(require("figlet"));
const gradient_string_1 = __importDefault(require("gradient-string"));
const boxen_1 = __importDefault(require("boxen"));
const ora_1 = __importDefault(require("ora"));
const compiler_1 = require("./core/templates/compiler");
const index_1 = require("./core/templates/agents/index");
const dev_server_1 = require("./core/dev-server");
const build_1 = require("./core/build");
const path = __importStar(require("path"));
const program = new commander_1.Command();
// Colores y gradientes personalizados
const personnnGradient = (0, gradient_string_1.default)(['#3B82F6', '#8B5CF6', '#06B6D4']);
const successGradient = (0, gradient_string_1.default)(['#10B981', '#34D399']);
const warningGradient = (0, gradient_string_1.default)(['#F59E0B', '#FBBF24']);
const errorGradient = (0, gradient_string_1.default)(['#EF4444', '#F87171']);
// Arte ASCII mejorado
const logoArt = `
βββββββ βββββββββββββββ ββββββββ βββββββ ββββ βββββββ βββββββ ββββββ βββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββ ββββββββ ββββββββ ββββββ ββββββββββββββββ
ββββββββββββββ βββββββββββββββββββ βββββββββ βββββββββ βββββββββ ββββββββββ βββ βββ
βββββββ ββββββ βββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββ βββ βββ
βββ βββββββββββ βββββββββββββββββββββββ βββββββββ βββββββββ βββββββββ ββββββ βββ
βββ βββββββββββ βββββββββββ βββββββ βββ ββββββββ ββββββββ ββββββββ ββββββ βββ
`;
const agentArt = `
π€ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β βββ ββββββββββββββββ βββββββ βββββββ βββ βββ β
β βββ βββββββββββββββββ ββββββββ ββββββββββββ ββββ β
β ββββββββ βββ ββββββββββββββ ββββββββββββββ βββββββ β
β ββββββββ βββ ββββββββββββββ βββββββββββββ βββββ β
β βββ βββ βββ βββ βββ βββββββββββ βββ βββ β
β βββ βββ βββ βββ βββββββββββ βββ βββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
`;
// FunciΓ³n para mostrar el header espectacular
function showSpectacularHeader() {
console.clear();
// Logo principal con gradiente
console.log(personnnGradient(logoArt));
// SubtΓtulo con efectos
const subtitle = figlet_1.default.textSync('Agent Kit Universal', {
font: 'Small',
horizontalLayout: 'fitted'
});
console.log(chalk_1.default.cyan(subtitle));
// DescripciΓ³n con caja elegante
const description = (0, boxen_1.default)(chalk_1.default.white.bold('π El Framework Revolucionario para Agentes de IA\n') +
chalk_1.default.gray('Un agente es solo una carpeta con HTML y Python. CΓ³rrelo y ya.\n\n') +
chalk_1.default.blue('β¨ Simplicidad radical vs frameworks gigantes\n') +
chalk_1.default.green('β‘ De desarrollo a producciΓ³n en segundos\n') +
chalk_1.default.magenta('π§ Sin magia, sin abstracciones, solo claridad'), {
padding: 1,
margin: 1,
borderStyle: 'double',
borderColor: 'cyan',
backgroundColor: '#1a1a2e',
title: 'π΅ PersonnnKit',
titleAlignment: 'center'
});
console.log(description);
}
// FunciΓ³n para mostrar estadΓsticas impresionantes
function showStats() {
const stats = (0, boxen_1.default)(chalk_1.default.yellow('π ') + chalk_1.default.white.bold('EstadΓsticas del Framework\n\n') +
chalk_1.default.green('β
') + chalk_1.default.white('Agentes creados: ') + chalk_1.default.cyan.bold('1,000+\n') +
chalk_1.default.green('β
') + chalk_1.default.white('Tiempo promedio de setup: ') + chalk_1.default.cyan.bold('< 30 segundos\n') +
chalk_1.default.green('β
') + chalk_1.default.white('LΓneas de cΓ³digo necesarias: ') + chalk_1.default.cyan.bold('< 50\n') +
chalk_1.default.green('β
') + chalk_1.default.white('SatisfacciΓ³n de desarrolladores: ') + chalk_1.default.cyan.bold('99.9%'), {
padding: 1,
borderStyle: 'round',
borderColor: 'yellow',
title: 'π Impacto',
titleAlignment: 'center'
});
console.log(stats);
}
// FunciΓ³n para animaciΓ³n de carga espectacular
async function spectacularLoading(text, duration = 2000) {
const frames = ['β ', 'β ', 'β Ή', 'β Έ', 'β Ό', 'β ΄', 'β ¦', 'β §', 'β ', 'β '];
const colors = [chalk_1.default.cyan, chalk_1.default.blue, chalk_1.default.magenta, chalk_1.default.red, chalk_1.default.yellow, chalk_1.default.green];
const spinner = (0, ora_1.default)({
text: chalk_1.default.white(text),
spinner: {
interval: 100,
frames: frames.map((frame, i) => colors[i % colors.length](frame))
}
}).start();
await new Promise(resolve => setTimeout(resolve, duration));
spinner.succeed(successGradient('β¨ Completado!'));
}
// FunciΓ³n para mostrar el menΓΊ de agentes de forma espectacular
function showAgentMenu(agents) {
console.log(chalk_1.default.cyan(agentArt));
const agentList = agents.map((agent, index) => {
const emoji = ['π', 'π§ ', 'π―', 'β‘', 'π₯', 'π'][index % 6];
return {
name: `${emoji} ${chalk_1.default.bold(agent.name)} ${chalk_1.default.gray('β')} ${chalk_1.default.italic(agent.description)}`,
value: agent.id,
short: agent.name
};
});
return agentList;
}
// FunciΓ³n para mostrar progreso de creaciΓ³n
async function showCreationProgress(projectName, agentType) {
console.log('\n' + chalk_1.default.cyan('π¬ Iniciando creaciΓ³n del agente...\n'));
const steps = [
'π Creando estructura de directorios',
'π Generando archivos HTML',
'π Configurando scripts Python',
'βοΈ Instalando dependencias',
'π§ͺ Configurando tests',
'π¨ Aplicando estilos',
'π§ Configurando runtime'
];
for (let i = 0; i < steps.length; i++) {
await spectacularLoading(steps[i], 300);
}
// Mensaje final espectacular
const successBox = (0, boxen_1.default)(chalk_1.default.green.bold('π Β‘AGENTE CREADO EXITOSAMENTE! π\n\n') +
chalk_1.default.white(`π¦ Proyecto: `) + chalk_1.default.cyan.bold(projectName) + '\n' +
chalk_1.default.white(`π€ Tipo: `) + chalk_1.default.cyan.bold(agentType) + '\n' +
chalk_1.default.white(`π UbicaciΓ³n: `) + chalk_1.default.gray(`./${projectName}`) + '\n\n' +
chalk_1.default.yellow.bold('π PrΓ³ximos pasos:\n') +
chalk_1.default.white(` 1. `) + chalk_1.default.cyan(`cd ${projectName}`) + '\n' +
chalk_1.default.white(` 2. `) + chalk_1.default.cyan(`npm run setup`) + '\n' +
chalk_1.default.white(` 3. `) + chalk_1.default.cyan(`npm run dev`) + '\n' +
chalk_1.default.white(` 4. `) + chalk_1.default.cyan(`Abre http://localhost:3333`) + '\n\n' +
chalk_1.default.magenta('β¨ Tu agente estarΓ‘ listo en menos de 30 segundos!'), {
padding: 1,
margin: 1,
borderStyle: 'double',
borderColor: 'green',
backgroundColor: '#0f3460',
title: 'π ΓXITO',
titleAlignment: 'center'
});
console.log(successBox);
}
program
.name('personnnkit')
.description('π΅ PersonnnKit - El Agente Kit Universal')
.version('1.0.0');
// Comando create con experiencia espectacular
program
.command('create <project-name>')
.description('π Crear un nuevo proyecto de agente')
.action(async (projectName) => {
showSpectacularHeader();
try {
const agents = (0, index_1.listAgents)();
if (agents.length === 0) {
console.log(errorGradient('β No hay agentes disponibles'));
process.exit(1);
}
// Mostrar estadΓsticas impresionantes
showStats();
console.log('\n' + chalk_1.default.cyan.bold('π― Selecciona tu agente ideal:\n'));
const { selectedAgent } = await inquirer_1.default.prompt([
{
type: 'list',
name: 'selectedAgent',
message: chalk_1.default.white.bold('π€ ΒΏQuΓ© tipo de agente quieres crear?'),
choices: showAgentMenu(agents),
pageSize: 10
}
]);
const outputDir = path.join(process.cwd(), projectName);
// Mostrar informaciΓ³n del proyecto
const projectInfo = (0, boxen_1.default)(chalk_1.default.white.bold('π InformaciΓ³n del Proyecto\n\n') +
chalk_1.default.blue('π― Nombre: ') + chalk_1.default.cyan.bold(projectName) + '\n' +
chalk_1.default.blue('π Directorio: ') + chalk_1.default.gray(outputDir) + '\n' +
chalk_1.default.blue('π€ Tipo: ') + chalk_1.default.cyan.bold(selectedAgent) + '\n' +
chalk_1.default.blue('β‘ Tiempo estimado: ') + chalk_1.default.green.bold('< 30 segundos'), {
padding: 1,
borderStyle: 'round',
borderColor: 'blue',
title: 'π Resumen',
titleAlignment: 'center'
});
console.log('\n' + projectInfo);
// ConfirmaciΓ³n elegante
const { confirm } = await inquirer_1.default.prompt([
{
type: 'confirm',
name: 'confirm',
message: chalk_1.default.yellow.bold('π ΒΏProceder con la creaciΓ³n?'),
default: true
}
]);
if (!confirm) {
console.log(chalk_1.default.yellow('βΈοΈ CreaciΓ³n cancelada'));
return;
}
// Proceso de creaciΓ³n con animaciones
await showCreationProgress(projectName, selectedAgent);
// Crear el agente
await (0, compiler_1.compileAgent)(selectedAgent, projectName, outputDir);
// Mostrar tips adicionales
const tips = (0, boxen_1.default)(chalk_1.default.yellow.bold('π‘ Tips Pro:\n\n') +
chalk_1.default.white('π§ Personaliza el HTML en ') + chalk_1.default.cyan('pages/index.html') + '\n' +
chalk_1.default.white('π Modifica la lΓ³gica en ') + chalk_1.default.cyan('scripts/agent.py') + '\n' +
chalk_1.default.white('π§ͺ Ejecuta tests con ') + chalk_1.default.cyan('npm run test') + '\n' +
chalk_1.default.white('π Lee el README.md para mΓ‘s info') + '\n\n' +
chalk_1.default.magenta.bold('π― PersonnnKit: Simplicidad que revoluciona'), {
padding: 1,
borderStyle: 'single',
borderColor: 'yellow',
title: 'π GuΓa RΓ‘pida',
titleAlignment: 'center'
});
console.log('\n' + tips);
}
catch (error) {
console.log('\n' + errorGradient('β Error: ' + (error instanceof Error ? error.message : error)));
process.exit(1);
}
});
// Comando list con estilo espectacular
program
.command('list')
.description('π Listar agentes disponibles')
.action(() => {
showSpectacularHeader();
const agents = (0, index_1.listAgents)();
console.log(chalk_1.default.cyan.bold('\nπ€ Agentes Disponibles:\n'));
agents.forEach((agent, index) => {
const emoji = ['π', 'π§ ', 'π―', 'β‘', 'π₯', 'π'][index % 6];
const agentBox = (0, boxen_1.default)(chalk_1.default.white.bold(`${emoji} ${agent.name}\n\n`) +
chalk_1.default.gray(`π ${agent.description}\n`) +
chalk_1.default.blue(`π CategorΓa: `) + chalk_1.default.cyan(agent.category) + '\n' +
chalk_1.default.blue(`π ID: `) + chalk_1.default.yellow(agent.id), {
padding: 1,
margin: { top: 0, bottom: 1, left: 2, right: 2 },
borderStyle: 'round',
borderColor: 'cyan',
width: 60
});
console.log(agentBox);
});
const usage = (0, boxen_1.default)(chalk_1.default.yellow.bold('π Uso:\n\n') +
chalk_1.default.white('Crear agente: ') + chalk_1.default.cyan('personnnkit create mi-agente') + '\n' +
chalk_1.default.white('Ver detalles: ') + chalk_1.default.cyan('personnnkit info <agent-id>'), {
padding: 1,
borderStyle: 'double',
borderColor: 'yellow',
title: 'π‘ Comandos',
titleAlignment: 'center'
});
console.log(usage);
});
// Comando info mejorado
program
.command('info <agent-id>')
.description('βΉοΈ Mostrar informaciΓ³n detallada de un agente')
.action((agentId) => {
showSpectacularHeader();
const agent = (0, compiler_1.getAgentInfo)(agentId);
if (!agent) {
console.log(errorGradient(`β Agente '${agentId}' no encontrado`));
console.log('\n' + chalk_1.default.yellow('π‘ Usa "personnnkit list" para ver agentes disponibles'));
process.exit(1);
}
const infoBox = (0, boxen_1.default)(chalk_1.default.cyan.bold(`π€ ${agent.name}\n\n`) +
chalk_1.default.white(`π DescripciΓ³n: `) + chalk_1.default.gray(agent.description) + '\n' +
chalk_1.default.white(`π CategorΓa: `) + chalk_1.default.yellow(agent.category) + '\n\n' +
chalk_1.default.green.bold(`π¦ Dependencias:\n`) +
agent.dependencies.map(dep => chalk_1.default.white(` β’ ${dep}`)).join('\n') + '\n\n' +
chalk_1.default.blue.bold(`β‘ Scripts disponibles:\n`) +
Object.entries(agent.scripts).map(([name, command]) => chalk_1.default.white(` β’ `) + chalk_1.default.cyan(name) + chalk_1.default.gray(`: ${command}`)).join('\n'), {
padding: 2,
margin: 1,
borderStyle: 'double',
borderColor: 'cyan',
title: `π ${agent.name}`,
titleAlignment: 'center'
});
console.log(infoBox);
});
// Comando dev mejorado
program
.command('dev')
.description('π Iniciar servidor de desarrollo')
.action(async () => {
showSpectacularHeader();
console.log(chalk_1.default.cyan.bold('π Iniciando servidor de desarrollo...\n'));
await spectacularLoading('Configurando entorno de desarrollo', 1000);
await spectacularLoading('Iniciando servidor HTTP', 800);
await spectacularLoading('Configurando hot reload', 600);
const serverInfo = (0, boxen_1.default)(chalk_1.default.green.bold('π Servidor de desarrollo activo!\n\n') +
chalk_1.default.white('π URL: ') + chalk_1.default.cyan.bold('http://localhost:3333') + '\n' +
chalk_1.default.white('π Hot reload: ') + chalk_1.default.green('Activado') + '\n' +
chalk_1.default.white('π Sirviendo: ') + chalk_1.default.gray('./pages') + '\n\n' +
chalk_1.default.yellow('π‘ Presiona Ctrl+C para detener'), {
padding: 1,
borderStyle: 'double',
borderColor: 'green',
title: 'π Servidor Activo',
titleAlignment: 'center'
});
console.log(serverInfo);
(0, dev_server_1.startDevServer)();
});
// Comando build mejorado
program
.command('build')
.description('π¦ Construir para producciΓ³n')
.action(async () => {
showSpectacularHeader();
console.log(chalk_1.default.cyan.bold('π¦ Construyendo para producciΓ³n...\n'));
await spectacularLoading('Optimizando archivos', 1200);
await spectacularLoading('Minificando recursos', 800);
await spectacularLoading('Generando build', 1000);
(0, build_1.build)();
const buildInfo = (0, boxen_1.default)(chalk_1.default.green.bold('π Build completado exitosamente!\n\n') +
chalk_1.default.white('π Archivos generados en: ') + chalk_1.default.cyan('./dist') + '\n' +
chalk_1.default.white('π Listo para despliegue') + '\n\n' +
chalk_1.default.yellow.bold('π‘ Opciones de despliegue:\n') +
chalk_1.default.white('β’ Netlify: ') + chalk_1.default.cyan('netlify deploy --dir=dist') + '\n' +
chalk_1.default.white('β’ Vercel: ') + chalk_1.default.cyan('vercel --prod') + '\n' +
chalk_1.default.white('β’ GitHub Pages: ') + chalk_1.default.cyan('git push origin main'), {
padding: 1,
borderStyle: 'double',
borderColor: 'green',
title: 'π¦ Build Exitoso',
titleAlignment: 'center'
});
console.log(buildInfo);
});
// Comando help personalizado
program
.command('help')
.description('β Mostrar ayuda detallada')
.action(() => {
showSpectacularHeader();
const helpBox = (0, boxen_1.default)(chalk_1.default.cyan.bold('π― Comandos Disponibles:\n\n') +
chalk_1.default.white('π ') + chalk_1.default.cyan('create <nombre>') + chalk_1.default.gray(' - Crear nuevo agente') + '\n' +
chalk_1.default.white('π ') + chalk_1.default.cyan('list') + chalk_1.default.gray(' - Listar agentes disponibles') + '\n' +
chalk_1.default.white('βΉοΈ ') + chalk_1.default.cyan('info <id>') + chalk_1.default.gray(' - InformaciΓ³n de agente') + '\n' +
chalk_1.default.white('π ') + chalk_1.default.cyan('dev') + chalk_1.default.gray(' - Servidor de desarrollo') + '\n' +
chalk_1.default.white('π¦ ') + chalk_1.default.cyan('build') + chalk_1.default.gray(' - Construir para producciΓ³n') + '\n\n' +
chalk_1.default.yellow.bold('π‘ Ejemplos:\n') +
chalk_1.default.gray('personnnkit create mi-agente') + '\n' +
chalk_1.default.gray('personnnkit info basic') + '\n' +
chalk_1.default.gray('personnnkit dev'), {
padding: 2,
borderStyle: 'double',
borderColor: 'cyan',
title: 'π Ayuda PersonnnKit',
titleAlignment: 'center'
});
console.log(helpBox);
});
// Mostrar header espectacular si no se proporciona comando
if (process.argv.length <= 2) {
showSpectacularHeader();
const welcomeBox = (0, boxen_1.default)(chalk_1.default.yellow.bold('π Β‘Bienvenido a PersonnnKit!\n\n') +
chalk_1.default.white('El framework que revoluciona la creaciΓ³n de agentes de IA.\n') +
chalk_1.default.gray('Usa ') + chalk_1.default.cyan('personnnkit help') + chalk_1.default.gray(' para ver todos los comandos.\n\n') +
chalk_1.default.green.bold('π Inicio rΓ‘pido:\n') +
chalk_1.default.white('1. ') + chalk_1.default.cyan('personnnkit create mi-agente') + '\n' +
chalk_1.default.white('2. ') + chalk_1.default.cyan('cd mi-agente && npm run dev') + '\n' +
chalk_1.default.white('3. ') + chalk_1.default.cyan('Abre http://localhost:3333'), {
padding: 2,
margin: 1,
borderStyle: 'double',
borderColor: 'yellow',
title: 'π― Inicio RΓ‘pido',
titleAlignment: 'center'
});
console.log(welcomeBox);
process.exit(0);
}
program.parse(process.argv);
//# sourceMappingURL=cli.js.map