wegho-agentes 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/AGENT_WORKFLOW.md +528 -0
- package/.agents/AI_COMPATIBILITY.md +332 -0
- package/.agents/CLI.md +222 -0
- package/.agents/README.md +130 -0
- package/.agents/cli.js +389 -0
- package/.agents/code-auditor-agent.ts +333 -0
- package/.agents/config.ts +145 -0
- package/.agents/context-loader.ts +300 -0
- package/.agents/core/agent-parallelizer.test.ts +94 -0
- package/.agents/core/agent-parallelizer.ts +108 -0
- package/.agents/core/architecture-agent.ts +237 -0
- package/.agents/core/base-agent.ts +311 -0
- package/.agents/core/cache-manager.test.ts +147 -0
- package/.agents/core/cache-manager.ts +184 -0
- package/.agents/core/documentation-agent.ts +183 -0
- package/.agents/core/feedback-collector.ts +207 -0
- package/.agents/core/frontend-agent.ts +210 -0
- package/.agents/core/inventory-agent.ts +582 -0
- package/.agents/core/memory-system.ts +397 -0
- package/.agents/core/quality-agent.ts +268 -0
- package/.agents/core/retry-utility.test.ts +165 -0
- package/.agents/core/retry-utility.ts +140 -0
- package/.agents/core/security-agent.ts +217 -0
- package/.agents/core/workflow-validator.test.ts +171 -0
- package/.agents/core/workflow-validator.ts +158 -0
- package/.agents/domains/README.md +53 -0
- package/.agents/domains/logistics/route-agent.ts +177 -0
- package/.agents/domains/news/cms-agent.ts +158 -0
- package/.agents/domains/news/seo-agent.ts +170 -0
- package/.agents/domains/production/production-control-agent.ts +169 -0
- package/.agents/example-learning-system.js +118 -0
- package/.agents/init.ts +164 -0
- package/.agents/memory/architecture-agent/failures.json +1 -0
- package/.agents/memory/architecture-agent/learnings.json +1 -0
- package/.agents/memory/architecture-agent/specialty.md +31 -0
- package/.agents/memory/architecture-agent/successes.json +16 -0
- package/.agents/memory/cms-agent/failures.json +1 -0
- package/.agents/memory/cms-agent/learnings.json +1 -0
- package/.agents/memory/cms-agent/specialty.md +30 -0
- package/.agents/memory/cms-agent/successes.json +16 -0
- package/.agents/memory/documentation-agent/failures.json +1 -0
- package/.agents/memory/documentation-agent/learnings.json +1 -0
- package/.agents/memory/documentation-agent/specialty.md +33 -0
- package/.agents/memory/documentation-agent/successes.json +16 -0
- package/.agents/memory/frontend-agent/failures.json +1 -0
- package/.agents/memory/frontend-agent/learnings.json +1 -0
- package/.agents/memory/frontend-agent/specialty.md +30 -0
- package/.agents/memory/frontend-agent/successes.json +16 -0
- package/.agents/memory/inventory-agent/failures.json +1 -0
- package/.agents/memory/inventory-agent/inventory/index.json +8 -0
- package/.agents/memory/inventory-agent/inventory/types.json +77716 -0
- package/.agents/memory/inventory-agent/inventory/variables.json +405 -0
- package/.agents/memory/inventory-agent/learnings.json +1 -0
- package/.agents/memory/inventory-agent/specialty.md +129 -0
- package/.agents/memory/inventory-agent/successes.json +30 -0
- package/.agents/memory/production-control-agent/failures.json +1 -0
- package/.agents/memory/production-control-agent/learnings.json +1 -0
- package/.agents/memory/production-control-agent/specialty.md +29 -0
- package/.agents/memory/production-control-agent/successes.json +16 -0
- package/.agents/memory/quality-agent/failures.json +16 -0
- package/.agents/memory/quality-agent/learnings.json +1 -0
- package/.agents/memory/quality-agent/specialty.md +31 -0
- package/.agents/memory/quality-agent/successes.json +1 -0
- package/.agents/memory/reference-repositories.json +271 -0
- package/.agents/memory/route-agent/failures.json +1 -0
- package/.agents/memory/route-agent/learnings.json +1 -0
- package/.agents/memory/route-agent/specialty.md +29 -0
- package/.agents/memory/route-agent/successes.json +16 -0
- package/.agents/memory/security-agent/failures.json +1 -0
- package/.agents/memory/security-agent/learnings.json +1 -0
- package/.agents/memory/security-agent/specialty.md +31 -0
- package/.agents/memory/security-agent/successes.json +16 -0
- package/.agents/memory/seo-agent/failures.json +1 -0
- package/.agents/memory/seo-agent/learnings.json +1 -0
- package/.agents/memory/seo-agent/specialty.md +31 -0
- package/.agents/memory/seo-agent/successes.json +16 -0
- package/.agents/orchestrator.ts +438 -0
- package/.agents/project-discovery-agent.ts +342 -0
- package/.agents/security/pentesting-agent.py +387 -0
- package/.agents/security/python-bridge.ts +193 -0
- package/.agents/security/vulnerability-db.json +201 -0
- package/.agents/task-analyzer-agent.ts +346 -0
- package/.agents/test-init-context.js +67 -0
- package/INSTALL.md +300 -0
- package/LICENSE +21 -0
- package/README.md +315 -0
- package/docs/AGENT_RULES.md +292 -0
- package/docs/BUILD_HISTORY.md +65 -0
- package/docs/DESIGN_SYSTEM.md +256 -0
- package/docs/LEARNING_SYSTEM.md +326 -0
- package/docs/SYMBOLS_TREE.md +182 -0
- package/docs/VERSION.md +6 -0
- package/docs/architecture.md +111 -0
- package/package.json +60 -0
package/.agents/cli.js
ADDED
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* CLI do Sistema de Agentes
|
|
5
|
+
*
|
|
6
|
+
* Comandos disponíveis:
|
|
7
|
+
* - !comandos - Lista todos comandos
|
|
8
|
+
* - !iniciar contexto - Carrega contexto do projeto
|
|
9
|
+
* - !rever codigo - Executa auditoria do código
|
|
10
|
+
* - !rever plano - Revisa plano de implementação
|
|
11
|
+
* - !voltar versao - Reverte para versão anterior
|
|
12
|
+
* - !criar backup - Cria backup do estado atual
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const { initializeContext } = require('./context-loader');
|
|
16
|
+
const { CodeAuditorAgent } = require('./code-auditor-agent');
|
|
17
|
+
const fs = require('fs');
|
|
18
|
+
const path = require('path');
|
|
19
|
+
const { execSync } = require('child_process');
|
|
20
|
+
|
|
21
|
+
const COMMANDS = {
|
|
22
|
+
'!comandos': showCommands,
|
|
23
|
+
'!iniciar contexto': initContext,
|
|
24
|
+
'!rever codigo': reviewCode,
|
|
25
|
+
'!rever plano': reviewPlan,
|
|
26
|
+
'!voltar versao': revertVersion,
|
|
27
|
+
'!criar backup': createBackup,
|
|
28
|
+
'!desinstalar': uninstall,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Mostra todos os comandos disponíveis
|
|
33
|
+
*/
|
|
34
|
+
function showCommands() {
|
|
35
|
+
console.log('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
36
|
+
console.log('🤖 COMANDOS DO SISTEMA DE AGENTES');
|
|
37
|
+
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
|
|
38
|
+
|
|
39
|
+
console.log('📋 Comandos Disponíveis:\n');
|
|
40
|
+
|
|
41
|
+
console.log(' !comandos');
|
|
42
|
+
console.log(' └─ Mostra esta lista de comandos\n');
|
|
43
|
+
|
|
44
|
+
console.log(' !iniciar contexto');
|
|
45
|
+
console.log(' └─ Carrega contexto completo do projeto');
|
|
46
|
+
console.log(' └─ Detecta domínio, perfil, documentação\n');
|
|
47
|
+
|
|
48
|
+
console.log(' !rever codigo');
|
|
49
|
+
console.log(' └─ Executa auditoria completa do código');
|
|
50
|
+
console.log(' └─ Gera relatório de violações (P0/P1/P2)');
|
|
51
|
+
console.log(' └─ Salva em docs/AUDIT_REPORT.md\n');
|
|
52
|
+
|
|
53
|
+
console.log(' !rever plano');
|
|
54
|
+
console.log(' └─ Revisa plano de implementação');
|
|
55
|
+
console.log(' └─ Valida agentes necessários');
|
|
56
|
+
console.log(' └─ Lista próximos passos\n');
|
|
57
|
+
|
|
58
|
+
console.log(' !voltar versao');
|
|
59
|
+
console.log(' └─ Reverte para versão anterior (git)');
|
|
60
|
+
console.log(' └─ Lista commits recentes para escolher\n');
|
|
61
|
+
|
|
62
|
+
console.log(' !criar backup');
|
|
63
|
+
console.log(' └─ Cria backup do estado atual');
|
|
64
|
+
console.log(' └─ Salva em .backups/backup-YYYYMMDD-HHmmss/\n');
|
|
65
|
+
|
|
66
|
+
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
|
|
67
|
+
|
|
68
|
+
console.log('💡 Uso:');
|
|
69
|
+
console.log(' node .agents/cli.js "!comando"\n');
|
|
70
|
+
console.log(' Ou adicione ao package.json:');
|
|
71
|
+
console.log(' "scripts": {');
|
|
72
|
+
console.log(' "agent": "node .agents/cli.js"');
|
|
73
|
+
console.log(' }\n');
|
|
74
|
+
console.log(' E use: npm run agent "!comando"\n');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Iniciar Contexto
|
|
79
|
+
*/
|
|
80
|
+
async function initContext() {
|
|
81
|
+
console.log('\n🔄 Executando: !iniciar contexto\n');
|
|
82
|
+
|
|
83
|
+
try {
|
|
84
|
+
const context = await initializeContext(true);
|
|
85
|
+
console.log('✅ Contexto inicializado com sucesso!\n');
|
|
86
|
+
return context;
|
|
87
|
+
} catch (error) {
|
|
88
|
+
console.error('❌ Erro ao iniciar contexto:', error.message);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Rever Código
|
|
95
|
+
*/
|
|
96
|
+
async function reviewCode() {
|
|
97
|
+
console.log('\n🔍 Executando: !rever codigo\n');
|
|
98
|
+
|
|
99
|
+
try {
|
|
100
|
+
const auditor = new CodeAuditorAgent(process.cwd());
|
|
101
|
+
const report = await auditor.auditProject();
|
|
102
|
+
|
|
103
|
+
console.log(report.summary);
|
|
104
|
+
|
|
105
|
+
auditor.saveReport(report);
|
|
106
|
+
|
|
107
|
+
console.log(`\n✅ Auditoria concluída!`);
|
|
108
|
+
console.log(`📊 ${report.totalViolations} violações encontradas`);
|
|
109
|
+
console.log(` 💀 P0: ${report.p0Count}`);
|
|
110
|
+
console.log(` ⚠️ P1: ${report.p1Count}`);
|
|
111
|
+
console.log(` 💡 P2: ${report.p2Count}\n`);
|
|
112
|
+
|
|
113
|
+
if (report.p0Count > 0) {
|
|
114
|
+
console.log('❌ ATENÇÃO: Existem violações P0 (críticas) que devem ser corrigidas!\n');
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return report;
|
|
119
|
+
} catch (error) {
|
|
120
|
+
console.error('❌ Erro na auditoria:', error.message);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Rever Plano
|
|
127
|
+
*/
|
|
128
|
+
async function reviewPlan() {
|
|
129
|
+
console.log('\n📋 Executando: !rever plano\n');
|
|
130
|
+
|
|
131
|
+
const planFile = 'docs/IMPLEMENTATION_PLAN.md';
|
|
132
|
+
|
|
133
|
+
if (!fs.existsSync(planFile)) {
|
|
134
|
+
console.log('⚠️ Nenhum plano de implementação encontrado.');
|
|
135
|
+
console.log('💡 Crie um plano primeiro ou use o Task Analyzer.\n');
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const plan = fs.readFileSync(planFile, 'utf-8');
|
|
140
|
+
|
|
141
|
+
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
142
|
+
console.log('📋 PLANO DE IMPLEMENTAÇÃO');
|
|
143
|
+
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
|
|
144
|
+
console.log(plan);
|
|
145
|
+
console.log('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
|
|
146
|
+
|
|
147
|
+
// Verificar se há profil do projeto
|
|
148
|
+
if (fs.existsSync('docs/PROJECT_PROFILE.json')) {
|
|
149
|
+
const profile = JSON.parse(fs.readFileSync('docs/PROJECT_PROFILE.json', 'utf-8'));
|
|
150
|
+
console.log('🎯 Perfil do Projeto:');
|
|
151
|
+
console.log(` Nome: ${profile.projectName}`);
|
|
152
|
+
console.log(` Domínio: ${profile.domain}`);
|
|
153
|
+
console.log(` Complexidade estimada: ${profile.customNeeds?.length || 0} necessidades customizadas\n`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Voltar Versão
|
|
159
|
+
*/
|
|
160
|
+
function revertVersion() {
|
|
161
|
+
console.log('\n⏮️ Executando: !voltar versao\n');
|
|
162
|
+
|
|
163
|
+
try {
|
|
164
|
+
// Verificar se está em repositório git
|
|
165
|
+
if (!fs.existsSync('.git')) {
|
|
166
|
+
console.log('❌ Não é um repositório Git!');
|
|
167
|
+
console.log('💡 Inicialize com: git init\n');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Listar últimos 10 commits
|
|
172
|
+
console.log('📜 Últimos commits:\n');
|
|
173
|
+
const commits = execSync('git log --oneline -n 10', { encoding: 'utf-8' });
|
|
174
|
+
console.log(commits);
|
|
175
|
+
|
|
176
|
+
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
177
|
+
console.log('⚠️ Para reverter, execute manualmente:\n');
|
|
178
|
+
console.log(' git revert <commit-hash> # Criar commit de reversão');
|
|
179
|
+
console.log(' ou');
|
|
180
|
+
console.log(' git reset --hard <commit-hash> # Voltar diretamente (CUIDADO!)\n');
|
|
181
|
+
console.log('💡 Recomendado: git revert (mais seguro)\n');
|
|
182
|
+
|
|
183
|
+
} catch (error) {
|
|
184
|
+
console.error('❌ Erro ao listar commits:', error.message);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Criar Backup
|
|
190
|
+
*/
|
|
191
|
+
function createBackup() {
|
|
192
|
+
console.log('\n💾 Executando: !criar backup\n');
|
|
193
|
+
|
|
194
|
+
try {
|
|
195
|
+
// Criar diretório de backups
|
|
196
|
+
const backupsDir = '.backups';
|
|
197
|
+
if (!fs.existsSync(backupsDir)) {
|
|
198
|
+
fs.mkdirSync(backupsDir, { recursive: true });
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// Nome do backup com timestamp
|
|
202
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5);
|
|
203
|
+
const backupName = `backup-${timestamp}`;
|
|
204
|
+
const backupPath = path.join(backupsDir, backupName);
|
|
205
|
+
|
|
206
|
+
console.log(`📦 Criando backup em: ${backupPath}\n`);
|
|
207
|
+
|
|
208
|
+
// Diretórios/arquivos para backup
|
|
209
|
+
const itemsToBackup = [
|
|
210
|
+
'app',
|
|
211
|
+
'components',
|
|
212
|
+
'hooks',
|
|
213
|
+
'lib',
|
|
214
|
+
'utils',
|
|
215
|
+
'docs',
|
|
216
|
+
'.agents',
|
|
217
|
+
'package.json',
|
|
218
|
+
'tsconfig.json',
|
|
219
|
+
'next.config.js',
|
|
220
|
+
];
|
|
221
|
+
|
|
222
|
+
fs.mkdirSync(backupPath, { recursive: true });
|
|
223
|
+
|
|
224
|
+
let backedUp = 0;
|
|
225
|
+
|
|
226
|
+
itemsToBackup.forEach(item => {
|
|
227
|
+
if (fs.existsSync(item)) {
|
|
228
|
+
const isDir = fs.statSync(item).isDirectory();
|
|
229
|
+
|
|
230
|
+
if (isDir) {
|
|
231
|
+
// Copiar diretório recursivamente
|
|
232
|
+
copyRecursive(item, path.join(backupPath, item));
|
|
233
|
+
console.log(` ✅ ${item}/`);
|
|
234
|
+
} else {
|
|
235
|
+
// Copiar arquivo
|
|
236
|
+
fs.copyFileSync(item, path.join(backupPath, item));
|
|
237
|
+
console.log(` ✅ ${item}`);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
backedUp++;
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
console.log(`\n✅ Backup criado com sucesso!`);
|
|
245
|
+
console.log(`📂 Localização: ${backupPath}`);
|
|
246
|
+
console.log(`📊 ${backedUp} itens salvos\n`);
|
|
247
|
+
|
|
248
|
+
// Criar arquivo de metadata
|
|
249
|
+
const metadata = {
|
|
250
|
+
timestamp: new Date().toISOString(),
|
|
251
|
+
items: itemsToBackup.filter(i => fs.existsSync(i)),
|
|
252
|
+
git: {
|
|
253
|
+
branch: execSync('git branch --show-current', { encoding: 'utf-8' }).trim(),
|
|
254
|
+
commit: execSync('git rev-parse HEAD', { encoding: 'utf-8' }).trim(),
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
fs.writeFileSync(
|
|
259
|
+
path.join(backupPath, 'backup-info.json'),
|
|
260
|
+
JSON.stringify(metadata, null, 2),
|
|
261
|
+
'utf-8'
|
|
262
|
+
);
|
|
263
|
+
|
|
264
|
+
console.log('💡 Para restaurar:');
|
|
265
|
+
console.log(` cp -r ${backupPath}/* .\n`);
|
|
266
|
+
|
|
267
|
+
} catch (error) {
|
|
268
|
+
console.error('❌ Erro ao criar backup:', error.message);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Copia diretório recursivamente
|
|
274
|
+
*/
|
|
275
|
+
function copyRecursive(src, dest) {
|
|
276
|
+
if (!fs.existsSync(dest)) {
|
|
277
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
281
|
+
|
|
282
|
+
for (const entry of entries) {
|
|
283
|
+
const srcPath = path.join(src, entry.name);
|
|
284
|
+
const destPath = path.join(dest, entry.name);
|
|
285
|
+
|
|
286
|
+
// Ignorar node_modules, .next, etc
|
|
287
|
+
if (entry.name === 'node_modules' || entry.name === '.next' || entry.name === 'dist') {
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
if (entry.isDirectory()) {
|
|
292
|
+
copyRecursive(srcPath, destPath);
|
|
293
|
+
} else {
|
|
294
|
+
fs.copyFileSync(srcPath, destPath);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Desinstala o sistema de agentes do projeto
|
|
301
|
+
*/
|
|
302
|
+
async function uninstall() {
|
|
303
|
+
console.log('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
304
|
+
console.log('🗑️ DESINSTALANDO SISTEMA DE AGENTES');
|
|
305
|
+
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
|
|
306
|
+
|
|
307
|
+
const readline = require('readline').createInterface({
|
|
308
|
+
input: process.stdin,
|
|
309
|
+
output: process.stdout
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
const confirm = await new Promise(resolve => {
|
|
313
|
+
readline.question('⚠️ Tem certeza que deseja remover o sistema de agentes e todas as documentações? (s/N): ', answer => {
|
|
314
|
+
resolve(answer.toLowerCase() === 's');
|
|
315
|
+
readline.close();
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
if (!confirm) {
|
|
320
|
+
console.log('\n❌ Desinstalação cancelada.\n');
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
try {
|
|
325
|
+
const projectRoot = process.cwd();
|
|
326
|
+
const agentsDir = path.join(projectRoot, '.webgho-agents');
|
|
327
|
+
const legacyAgentsDir = path.join(projectRoot, '.agents');
|
|
328
|
+
|
|
329
|
+
if (fs.existsSync(agentsDir)) {
|
|
330
|
+
console.log(` 📁 Removendo .webgho-agents/...`);
|
|
331
|
+
fs.rmSync(agentsDir, { recursive: true, force: true });
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
if (fs.existsSync(legacyAgentsDir)) {
|
|
335
|
+
console.log(` 📁 Removendo .agents/ (legado)...`);
|
|
336
|
+
fs.rmSync(legacyAgentsDir, { recursive: true, force: true });
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// Remover scripts do package.json
|
|
340
|
+
const packageJsonPath = path.join(projectRoot, 'package.json');
|
|
341
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
342
|
+
console.log(` 📝 Limpando package.json...`);
|
|
343
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
344
|
+
if (packageJson.scripts) {
|
|
345
|
+
delete packageJson.scripts['agents:init'];
|
|
346
|
+
delete packageJson.scripts['agent'];
|
|
347
|
+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
console.log('\n✅ Sistema de agentes removido com sucesso!\n');
|
|
352
|
+
console.log('💡 Para instalar novamente: npx @webgho.com/agentes install\n');
|
|
353
|
+
|
|
354
|
+
} catch (error) {
|
|
355
|
+
console.error(`\n❌ Erro ao desinstalar: ${error.message}`);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Main
|
|
361
|
+
*/
|
|
362
|
+
async function main() {
|
|
363
|
+
const command = process.argv[2];
|
|
364
|
+
|
|
365
|
+
if (!command) {
|
|
366
|
+
showCommands();
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
const handler = COMMANDS[command.toLowerCase()];
|
|
371
|
+
|
|
372
|
+
if (!handler) {
|
|
373
|
+
console.log(`\n❌ Comando não encontrado: ${command}\n`);
|
|
374
|
+
console.log('💡 Use "!comandos" para ver a lista completa.\n');
|
|
375
|
+
process.exit(1);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
await handler();
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// Executar se chamado diretamente
|
|
382
|
+
if (require.main === module) {
|
|
383
|
+
main().catch(error => {
|
|
384
|
+
console.error('\n❌ Erro:', error.message);
|
|
385
|
+
process.exit(1);
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
module.exports = { COMMANDS, showCommands, initContext, reviewCode, reviewPlan, revertVersion, createBackup, uninstall };
|