wegho-agentes 7.0.0 → 7.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/.agent/skills/wegho-global-rules/SKILL.md +20 -0
- package/.agent/workflows/PROMPT_GUIDE.md +7 -4
- package/.agents/cli.ts +29 -21
- package/.agents/core/base-agent.ts +28 -12
- package/.agents/core/memory-system.ts +45 -13
- package/.agents/core/report-generator.ts +26 -19
- package/.agents/orchestrator.ts +104 -74
- package/.clinerules +318 -1229
- package/.cursorrules +0 -189
- package/README.md +3 -3
- package/docs/VERSION.md +3 -2
- package/package.json +3 -3
- package/.agents/agents/ai-agents/README.md +0 -175
- package/.agents/agents/ai-agents/agent.ts +0 -83
- package/.agents/agents/ai-agents/specialty.md +0 -14
- package/.agents/agents/architecture/README.md +0 -61
- package/.agents/agents/architecture/agent.ts +0 -238
- package/.agents/agents/architecture/memory.md +0 -111
- package/.agents/agents/architecture/specialty.md +0 -31
- package/.agents/agents/automation/README.md +0 -60
- package/.agents/agents/automation/agent.ts +0 -61
- package/.agents/agents/automation/specialty.md +0 -14
- package/.agents/agents/backend/README.md +0 -155
- package/.agents/agents/backend/agent.ts +0 -100
- package/.agents/agents/backend/specialty.md +0 -14
- package/.agents/agents/cloud/README.md +0 -73
- package/.agents/agents/cloud/agent.ts +0 -53
- package/.agents/agents/cloud/specialty.md +0 -14
- package/.agents/agents/code-auditor/README.md +0 -37
- package/.agents/agents/code-auditor/agent.ts +0 -334
- package/.agents/agents/code-auditor/specialty.md +0 -14
- package/.agents/agents/cro/README.md +0 -200
- package/.agents/agents/cro/agent.ts +0 -61
- package/.agents/agents/cro/specialty.md +0 -14
- package/.agents/agents/database/README.md +0 -67
- package/.agents/agents/database/agent.ts +0 -93
- package/.agents/agents/database/specialty.md +0 -14
- package/.agents/agents/devops/README.md +0 -84
- package/.agents/agents/devops/agent.ts +0 -54
- package/.agents/agents/devops/specialty.md +0 -14
- package/.agents/agents/documentation/README.md +0 -107
- package/.agents/agents/documentation/agent.ts +0 -253
- package/.agents/agents/documentation/memory.md +0 -56
- package/.agents/agents/documentation/specialty.md +0 -33
- package/.agents/agents/frontend/README.md +0 -188
- package/.agents/agents/frontend/agent.ts +0 -211
- package/.agents/agents/frontend/memory.md +0 -139
- package/.agents/agents/frontend/specialty.md +0 -30
- package/.agents/agents/inventory/README.md +0 -35
- package/.agents/agents/inventory/agent.ts +0 -758
- package/.agents/agents/inventory/memory.md +0 -50
- package/.agents/agents/inventory/specialty.md +0 -129
- package/.agents/agents/nextjs/README.md +0 -58
- package/.agents/agents/nextjs/agent.ts +0 -114
- package/.agents/agents/nextjs/specialty.md +0 -14
- package/.agents/agents/pentest/README.md +0 -228
- package/.agents/agents/pentest/agent.ts +0 -96
- package/.agents/agents/pentest/specialty.md +0 -14
- package/.agents/agents/planning/README.md +0 -107
- package/.agents/agents/planning/agent.ts +0 -389
- package/.agents/agents/planning/specialty.md +0 -14
- package/.agents/agents/project-discovery/README.md +0 -35
- package/.agents/agents/project-discovery/agent.ts +0 -344
- package/.agents/agents/project-discovery/specialty.md +0 -14
- package/.agents/agents/quality/README.md +0 -81
- package/.agents/agents/quality/agent.ts +0 -269
- package/.agents/agents/quality/memory.md +0 -110
- package/.agents/agents/quality/specialty.md +0 -31
- package/.agents/agents/rag/README.md +0 -41
- package/.agents/agents/rag/agent.ts +0 -85
- package/.agents/agents/rag/specialty.md +0 -14
- package/.agents/agents/security/README.md +0 -152
- package/.agents/agents/security/agent.ts +0 -218
- package/.agents/agents/security/memory.md +0 -91
- package/.agents/agents/security/specialty.md +0 -31
- package/.agents/agents/task-analyzer/README.md +0 -36
- package/.agents/agents/task-analyzer/agent.ts +0 -462
- package/.agents/agents/task-analyzer/specialty.md +0 -14
- package/.agents/agents/testing/README.md +0 -161
- package/.agents/agents/testing/agent.ts +0 -61
- package/.agents/agents/testing/specialty.md +0 -14
- package/.agents/agents/uiux/README.md +0 -68
- package/.agents/agents/uiux/agent.ts +0 -95
- package/.agents/agents/uiux/specialty.md +0 -14
- package/.agents/base/base-agent.ts +0 -331
- package/.agents/base/memory-system.ts +0 -397
- package/.agents/base/skill-manager.ts +0 -95
- package/.agents/convert-memory.ps1 +0 -153
- package/.agents/examples/reporting-example.md +0 -203
- package/.agents/managers/build-manager.ts +0 -304
- package/.agents/managers/cache-manager.ts +0 -184
- package/.agents/managers/checkpoint-manager.ts +0 -299
- package/.agents/migrate-agents.ps1 +0 -117
- package/.agents/templates/change-report.md +0 -55
- package/.agents/templates/execution-plan.md +0 -36
- package/.agents/unmapped-skills.txt +0 -0
- package/.agents/utils/agent-migrator.ts +0 -360
- package/.agents/utils/agent-monitor.ts +0 -102
- package/.agents/utils/agent-parallelizer.ts +0 -108
- package/.agents/utils/context-monitor.ts +0 -140
- package/.agents/utils/feedback-collector.ts +0 -207
- package/.agents/utils/file-generator.ts +0 -304
- package/.agents/utils/memory-converter.ts +0 -217
- package/.agents/utils/memory-dashboard.ts +0 -147
- package/.agents/utils/performance-tracker.ts +0 -275
- package/.agents/utils/report-generator.ts +0 -193
- package/.agents/utils/retry-utility.ts +0 -140
- package/.agents/utils/workflow-validator.ts +0 -158
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Migrator - Script para migrar agentes para nova estrutura
|
|
3
|
-
*
|
|
4
|
-
* Este script cria a estrutura completa para cada agente:
|
|
5
|
-
* - Pasta .agents/agents/[nome]/
|
|
6
|
-
* - Copia agent.ts
|
|
7
|
-
* - Cria README.md
|
|
8
|
-
* - Copia specialty.md
|
|
9
|
-
* - memory.md será criado pelo memory-converter
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import * as fs from 'fs';
|
|
13
|
-
import * as path from 'path';
|
|
14
|
-
|
|
15
|
-
interface AgentInfo {
|
|
16
|
-
name: string; // frontend, security, etc
|
|
17
|
-
className: string; // FrontEndAgent, SecurityAgent, etc
|
|
18
|
-
sourcePath: string; // .agents/core/frontend-agent.ts
|
|
19
|
-
displayName: string; // Front-End Agent
|
|
20
|
-
responsibility: string; // Responsabilidade principal
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const AGENTS: AgentInfo[] = [
|
|
24
|
-
// Agentes Core
|
|
25
|
-
{
|
|
26
|
-
name: 'ai-agents',
|
|
27
|
-
className: 'AIAgentsAgent',
|
|
28
|
-
sourcePath: '.agents/core/ai-agents-agent.ts',
|
|
29
|
-
displayName: 'AI Agents Agent',
|
|
30
|
-
responsibility: 'Gerenciar e orquestrar outros agentes de IA'
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
name: 'architecture',
|
|
34
|
-
className: 'ArchitectureAgent',
|
|
35
|
-
sourcePath: '.agents/core/architecture-agent.ts',
|
|
36
|
-
displayName: 'Architecture Agent',
|
|
37
|
-
responsibility: 'Garantir arquitetura limpa, separação de camadas e organização'
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
name: 'automation',
|
|
41
|
-
className: 'AutomationAgent',
|
|
42
|
-
sourcePath: '.agents/core/automation-agent.ts',
|
|
43
|
-
displayName: 'Automation Agent',
|
|
44
|
-
responsibility: 'Automatizar tarefas repetitivas e workflows'
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
name: 'backend',
|
|
48
|
-
className: 'BackendAgent',
|
|
49
|
-
sourcePath: '.agents/core/backend-agent.ts',
|
|
50
|
-
displayName: 'Backend Agent',
|
|
51
|
-
responsibility: 'Validar APIs, lógica de negócio e integração com banco de dados'
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
name: 'cloud',
|
|
55
|
-
className: 'CloudAgent',
|
|
56
|
-
sourcePath: '.agents/core/cloud-agent.ts',
|
|
57
|
-
displayName: 'Cloud Agent',
|
|
58
|
-
responsibility: 'Gerenciar deploy, infraestrutura e serviços cloud'
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
name: 'cro',
|
|
62
|
-
className: 'CROAgent',
|
|
63
|
-
sourcePath: '.agents/core/cro-agent.ts',
|
|
64
|
-
displayName: 'CRO Agent',
|
|
65
|
-
responsibility: 'Otimizar taxa de conversão e experiência do usuário'
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
name: 'database',
|
|
69
|
-
className: 'DatabaseAgent',
|
|
70
|
-
sourcePath: '.agents/core/database-agent.ts',
|
|
71
|
-
displayName: 'Database Agent',
|
|
72
|
-
responsibility: 'Validar queries, índices, RLS policies e segurança de banco'
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
name: 'devops',
|
|
76
|
-
className: 'DevOpsAgent',
|
|
77
|
-
sourcePath: '.agents/core/devops-agent.ts',
|
|
78
|
-
displayName: 'DevOps Agent',
|
|
79
|
-
responsibility: 'CI/CD, containers, monitoramento e automação de deploy'
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
name: 'documentation',
|
|
83
|
-
className: 'DocumentationAgent',
|
|
84
|
-
sourcePath: '.agents/core/documentation-agent.ts',
|
|
85
|
-
displayName: 'Documentation Agent',
|
|
86
|
-
responsibility: 'Gerar e manter documentação automática do projeto'
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
name: 'frontend',
|
|
90
|
-
className: 'FrontEndAgent',
|
|
91
|
-
sourcePath: '.agents/core/frontend-agent.ts',
|
|
92
|
-
displayName: 'Front-End Agent',
|
|
93
|
-
responsibility: 'Garantir qualidade de UI/UX, acessibilidade e performance'
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
name: 'inventory',
|
|
97
|
-
className: 'InventoryAgent',
|
|
98
|
-
sourcePath: '.agents/core/inventory-agent.ts',
|
|
99
|
-
displayName: 'Inventory Agent',
|
|
100
|
-
responsibility: 'Catalogar componentes, padrões e recursos do projeto'
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: 'nextjs',
|
|
104
|
-
className: 'NextJSAgent',
|
|
105
|
-
sourcePath: '.agents/core/nextjs-agent.ts',
|
|
106
|
-
displayName: 'Next.js Agent',
|
|
107
|
-
responsibility: 'Validar uso correto de Next.js (RSC, routing, performance)'
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
name: 'pentest',
|
|
111
|
-
className: 'PentestAgent',
|
|
112
|
-
sourcePath: '.agents/core/pentest-agent.ts',
|
|
113
|
-
displayName: 'Pentest Agent',
|
|
114
|
-
responsibility: 'Executar testes de penetração e vulnerabilidades'
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
name: 'planning',
|
|
118
|
-
className: 'PlanningAgent',
|
|
119
|
-
sourcePath: '.agents/core/planning-agent.ts',
|
|
120
|
-
displayName: 'Planning Agent',
|
|
121
|
-
responsibility: 'Criar planos de implementação e quebrar tarefas complexas'
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
name: 'quality',
|
|
125
|
-
className: 'QualityAgent',
|
|
126
|
-
sourcePath: '.agents/core/quality-agent.ts',
|
|
127
|
-
displayName: 'Quality Agent',
|
|
128
|
-
responsibility: 'Auditar código, executar lint, build e testes (GO/NO-GO)'
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
name: 'rag',
|
|
132
|
-
className: 'RAGAgent',
|
|
133
|
-
sourcePath: '.agents/core/rag-agent.ts',
|
|
134
|
-
displayName: 'RAG Agent',
|
|
135
|
-
responsibility: 'Retrieval-Augmented Generation para consulta de documentação'
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
name: 'security',
|
|
139
|
-
className: 'SecurityAgent',
|
|
140
|
-
sourcePath: '.agents/core/security-agent.ts',
|
|
141
|
-
displayName: 'Security Agent',
|
|
142
|
-
responsibility: 'Validar vulnerabilidades, XSS, CSRF, SQL injection, RLS'
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
name: 'testing',
|
|
146
|
-
className: 'TestingAgent',
|
|
147
|
-
sourcePath: '.agents/core/testing-agent.ts',
|
|
148
|
-
displayName: 'Testing Agent',
|
|
149
|
-
responsibility: 'Criar e executar testes unitários e de integração'
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
name: 'uiux',
|
|
153
|
-
className: 'UIUXAgent',
|
|
154
|
-
sourcePath: '.agents/core/uiux-agent.ts',
|
|
155
|
-
displayName: 'UI/UX Agent',
|
|
156
|
-
responsibility: 'Validar design system, responsividade e usabilidade'
|
|
157
|
-
},
|
|
158
|
-
// Agentes Raiz
|
|
159
|
-
{
|
|
160
|
-
name: 'code-auditor',
|
|
161
|
-
className: 'CodeAuditorAgent',
|
|
162
|
-
sourcePath: '.agents/code-auditor-agent.ts',
|
|
163
|
-
displayName: 'Code Auditor Agent',
|
|
164
|
-
responsibility: 'Auditar código fonte e gerar relatórios de qualidade'
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
name: 'project-discovery',
|
|
168
|
-
className: 'ProjectDiscoveryAgent',
|
|
169
|
-
sourcePath: '.agents/project-discovery-agent.ts',
|
|
170
|
-
displayName: 'Project Discovery Agent',
|
|
171
|
-
responsibility: 'Descobrir estrutura e dependências do projeto'
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
name: 'task-analyzer',
|
|
175
|
-
className: 'TaskAnalyzerAgent',
|
|
176
|
-
sourcePath: '.agents/task-analyzer-agent.ts',
|
|
177
|
-
displayName: 'Task Analyzer Agent',
|
|
178
|
-
responsibility: 'Analisar tarefas e recomendar melhores agentes'
|
|
179
|
-
},
|
|
180
|
-
];
|
|
181
|
-
|
|
182
|
-
class AgentMigrator {
|
|
183
|
-
static migrateAgent(agent: AgentInfo): void {
|
|
184
|
-
const agentDir = path.join('.agents', 'agents', agent.name);
|
|
185
|
-
|
|
186
|
-
// 1. Criar pasta do agente
|
|
187
|
-
if (!fs.existsSync(agentDir)) {
|
|
188
|
-
fs.mkdirSync(agentDir, { recursive: true });
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
// 2. Copiar arquivo do agente (renomear para agent.ts)
|
|
192
|
-
const sourcePath = agent.sourcePath;
|
|
193
|
-
const destPath = path.join(agentDir, 'agent.ts');
|
|
194
|
-
|
|
195
|
-
if (fs.existsSync(sourcePath)) {
|
|
196
|
-
// Atualizar imports no arquivo
|
|
197
|
-
let content = fs.readFileSync(sourcePath, 'utf-8');
|
|
198
|
-
|
|
199
|
-
// Atualizar imports de base-agent e outros
|
|
200
|
-
content = content.replace(
|
|
201
|
-
/from\s+['"]\.\/base-agent\.js['"]/g,
|
|
202
|
-
"from '../../base/base-agent.js'"
|
|
203
|
-
);
|
|
204
|
-
content = content.replace(
|
|
205
|
-
/from\s+['"]\.\/memory-system\.js['"]/g,
|
|
206
|
-
"from '../../base/memory-system.js'"
|
|
207
|
-
);
|
|
208
|
-
content = content.replace(
|
|
209
|
-
/from\s+['"]\.\/skill-manager\.js['"]/g,
|
|
210
|
-
"from '../../base/skill-manager.js'"
|
|
211
|
-
);
|
|
212
|
-
content = content.replace(
|
|
213
|
-
/from\s+['"]\.\.\/config\.js['"]/g,
|
|
214
|
-
"from '../../config.js'"
|
|
215
|
-
);
|
|
216
|
-
|
|
217
|
-
fs.writeFileSync(destPath, content, 'utf-8');
|
|
218
|
-
console.log(`✅ ${agent.name}/agent.ts criado`);
|
|
219
|
-
} else {
|
|
220
|
-
console.warn(`⚠️ Arquivo fonte não encontrado: ${sourcePath}`);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
// 3. Criar README.md
|
|
224
|
-
const readmePath = path.join(agentDir, 'README.md');
|
|
225
|
-
const readmeContent = this.generateReadme(agent);
|
|
226
|
-
fs.writeFileSync(readmePath, readmeContent, 'utf-8');
|
|
227
|
-
console.log(`✅ ${agent.name}/README.md criado`);
|
|
228
|
-
|
|
229
|
-
// 4. Copiar ou criar specialty.md
|
|
230
|
-
const oldSpecialtyPath = path.join('.agents', 'memory', `${agent.name}-agent`, 'specialty.md');
|
|
231
|
-
const newSpecialtyPath = path.join(agentDir, 'specialty.md');
|
|
232
|
-
|
|
233
|
-
if (fs.existsSync(oldSpecialtyPath)) {
|
|
234
|
-
fs.copyFileSync(oldSpecialtyPath, newSpecialtyPath);
|
|
235
|
-
console.log(`✅ ${agent.name}/specialty.md copiado`);
|
|
236
|
-
} else {
|
|
237
|
-
const defaultSpecialty = this.generateDefaultSpecialty(agent);
|
|
238
|
-
fs.writeFileSync(newSpecialtyPath, defaultSpecialty, 'utf-8');
|
|
239
|
-
console.log(`✅ ${agent.name}/specialty.md criado (padrão)`);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
console.log(`✅ ${agent.displayName} migrado com sucesso!\n`);
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
static generateReadme(agent: AgentInfo): string {
|
|
246
|
-
return `# ${agent.displayName}
|
|
247
|
-
|
|
248
|
-
## 🎯 Responsabilidade
|
|
249
|
-
|
|
250
|
-
${agent.responsibility}
|
|
251
|
-
|
|
252
|
-
## 🛠️ Skills
|
|
253
|
-
|
|
254
|
-
### Skill 1: Validação de Código
|
|
255
|
-
**Propósito**: Analisar código e identificar problemas
|
|
256
|
-
**Quando usar**: Antes de commits, PRs e deploys
|
|
257
|
-
**Exemplo**:
|
|
258
|
-
\`\`\`typescript
|
|
259
|
-
const result = await agent.executeTask(
|
|
260
|
-
"Validar componente",
|
|
261
|
-
{ files: ["component.tsx"], areas: ["frontend"], complexity: "medium" }
|
|
262
|
-
);
|
|
263
|
-
\`\`\`
|
|
264
|
-
|
|
265
|
-
### Skill 2: Aprendizado Contínuo
|
|
266
|
-
**Propósito**: Aprender com sucessos e falhas para melhorar recomendações
|
|
267
|
-
**Quando usar**: Após cada tarefa executada
|
|
268
|
-
**Exemplo**:
|
|
269
|
-
\`\`\`typescript
|
|
270
|
-
await agent.learn(
|
|
271
|
-
"Components > 500 lines",
|
|
272
|
-
"Componente muito grande",
|
|
273
|
-
"Dividir em sub-componentes",
|
|
274
|
-
["task-123", "task-456"]
|
|
275
|
-
);
|
|
276
|
-
\`\`\`
|
|
277
|
-
|
|
278
|
-
### Skill 3: Consulta de Memória
|
|
279
|
-
**Propósito**: Buscar casos similares e recomendações baseadas no histórico
|
|
280
|
-
**Quando usar**: Antes de iniciar novas tarefas
|
|
281
|
-
|
|
282
|
-
## 📋 Tarefas Típicas
|
|
283
|
-
|
|
284
|
-
- Validar arquivos do projeto
|
|
285
|
-
- Gerar relatórios de qualidade
|
|
286
|
-
- Aplicar padrões e best practices
|
|
287
|
-
- Aprender com feedback do usuário
|
|
288
|
-
|
|
289
|
-
## 🔗 Dependências
|
|
290
|
-
|
|
291
|
-
- \`BaseAgent\` (classe pai)
|
|
292
|
-
- \`MemorySystem\` (persistência)
|
|
293
|
-
- \`SkillManager\` (gerenciamento de skills)
|
|
294
|
-
|
|
295
|
-
## 📊 Memória
|
|
296
|
-
|
|
297
|
-
A memória deste agente é persistida em \`memory.md\` com histórico de:
|
|
298
|
-
- ✅ Sucessos
|
|
299
|
-
- ❌ Falhas
|
|
300
|
-
- 🧠 Aprendizados
|
|
301
|
-
|
|
302
|
-
Para consultar a memória:
|
|
303
|
-
\`\`\`typescript
|
|
304
|
-
const stats = agent.getStats();
|
|
305
|
-
console.log(\`Taxa de sucesso: \${stats.successRate}%\`);
|
|
306
|
-
\`\`\`
|
|
307
|
-
|
|
308
|
-
## 📝 Specialty
|
|
309
|
-
|
|
310
|
-
Veja \`specialty.md\` para detalhes sobre expertise, regras e responsabilidades específicas.
|
|
311
|
-
`;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
static generateDefaultSpecialty(agent: AgentInfo): string {
|
|
315
|
-
return `# ${agent.displayName} - Especialidade
|
|
316
|
-
|
|
317
|
-
## Responsabilidades
|
|
318
|
-
- ${agent.responsibility}
|
|
319
|
-
- Aprender com casos de sucesso e falha
|
|
320
|
-
- Aplicar melhores práticas
|
|
321
|
-
|
|
322
|
-
## Expertise
|
|
323
|
-
- Análise de código
|
|
324
|
-
- Validação de padrões
|
|
325
|
-
- Geração de relatórios
|
|
326
|
-
|
|
327
|
-
## Regras
|
|
328
|
-
- Arquivos < 500 linhas
|
|
329
|
-
- Não alucinar APIs ou bibliotecas
|
|
330
|
-
- Priorizar libs existentes
|
|
331
|
-
- Fonte de verdade: código → docs → padrões
|
|
332
|
-
|
|
333
|
-
## Tarefas Típicas
|
|
334
|
-
- Validar implementações
|
|
335
|
-
- Gerar recomendações
|
|
336
|
-
- Aplicar aprendizados anteriores
|
|
337
|
-
`;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
static migrateAll(): void {
|
|
341
|
-
console.log(`\n🚀 Iniciando migração de ${AGENTS.length} agentes...\n`);
|
|
342
|
-
|
|
343
|
-
AGENTS.forEach(agent => {
|
|
344
|
-
try {
|
|
345
|
-
this.migrateAgent(agent);
|
|
346
|
-
} catch (error: any) {
|
|
347
|
-
console.error(`❌ Erro ao migrar ${agent.name}:`, error.message);
|
|
348
|
-
}
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
console.log(`\n✅ Migração concluída! ${AGENTS.length} agentes processados.`);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
// CLI
|
|
356
|
-
if (require.main === module) {
|
|
357
|
-
AgentMigrator.migrateAll();
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
export { AgentMigrator, AGENTS };
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Monitor - Rastreia agentes ativos em tempo real
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export interface ActiveAgent {
|
|
6
|
-
name: string;
|
|
7
|
-
status: 'starting' | 'running' | 'waiting' | 'completed' | 'failed';
|
|
8
|
-
startedAt: Date;
|
|
9
|
-
task: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export class AgentMonitor {
|
|
13
|
-
private activeAgents: Map<string, ActiveAgent> = new Map();
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Registra início de execução de um agente
|
|
17
|
-
*/
|
|
18
|
-
trackAgentStart(agentName: string, task: string): void {
|
|
19
|
-
this.activeAgents.set(agentName, {
|
|
20
|
-
name: agentName,
|
|
21
|
-
status: 'starting',
|
|
22
|
-
startedAt: new Date(),
|
|
23
|
-
task
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Atualiza status de um agente
|
|
29
|
-
*/
|
|
30
|
-
updateAgentStatus(agentName: string, status: ActiveAgent['status']): void {
|
|
31
|
-
const agent = this.activeAgents.get(agentName);
|
|
32
|
-
if (agent) {
|
|
33
|
-
agent.status = status;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Remove agente do tracking (completou ou falhou)
|
|
39
|
-
*/
|
|
40
|
-
trackAgentEnd(agentName: string): void {
|
|
41
|
-
this.activeAgents.delete(agentName);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Gera relatório visual de agentes ativos
|
|
46
|
-
*/
|
|
47
|
-
reportActiveAgents(): string {
|
|
48
|
-
if (this.activeAgents.size === 0) {
|
|
49
|
-
return '🤖 Nenhum agente ativo no momento.';
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
let report = '🤖 AGENTES ATIVOS:\\n';
|
|
53
|
-
|
|
54
|
-
for (const agent of this.activeAgents.values()) {
|
|
55
|
-
const emoji = this.getStatusEmoji(agent.status);
|
|
56
|
-
const duration = this.getElapsedTime(agent.startedAt);
|
|
57
|
-
report += ` ${emoji} ${agent.name} - ${agent.task} (${duration})\\n`;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return report;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Retorna emoji baseado no status
|
|
65
|
-
*/
|
|
66
|
-
private getStatusEmoji(status: ActiveAgent['status']): string {
|
|
67
|
-
const emojiMap = {
|
|
68
|
-
'starting': '🔄',
|
|
69
|
-
'running': '✅',
|
|
70
|
-
'waiting': '⏸️',
|
|
71
|
-
'completed': '✔️',
|
|
72
|
-
'failed': '❌'
|
|
73
|
-
};
|
|
74
|
-
return emojiMap[status];
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Calcula tempo decorrido
|
|
79
|
-
*/
|
|
80
|
-
private getElapsedTime(startedAt: Date): string {
|
|
81
|
-
const elapsed = Date.now() - startedAt.getTime();
|
|
82
|
-
const seconds = Math.floor(elapsed / 1000);
|
|
83
|
-
|
|
84
|
-
if (seconds < 60) {
|
|
85
|
-
return `${seconds}s`;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const minutes = Math.floor(seconds / 60);
|
|
89
|
-
const remainingSeconds = seconds % 60;
|
|
90
|
-
return `${minutes}m ${remainingSeconds}s`;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Retorna lista de agentes ativos (para uso programático)
|
|
95
|
-
*/
|
|
96
|
-
getActiveAgents(): ActiveAgent[] {
|
|
97
|
-
return Array.from(this.activeAgents.values());
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Singleton global para compartilhar entre agentes
|
|
102
|
-
export const globalAgentMonitor = new AgentMonitor();
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Parallelization Utility
|
|
3
|
-
*
|
|
4
|
-
* Identifica agentes independentes e os executa em paralelo
|
|
5
|
-
* para reduzir tempo total de execução
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { AgentAssignment } from '../task-analyzer-agent.js';
|
|
9
|
-
|
|
10
|
-
export interface AgentGroup {
|
|
11
|
-
parallel: AgentAssignment[];
|
|
12
|
-
sequential: AgentAssignment[];
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export class AgentParallelizer {
|
|
16
|
-
/**
|
|
17
|
-
* Mapa de dependências entre agentes
|
|
18
|
-
* Agentes que dependem de outros devem executar depois
|
|
19
|
-
*/
|
|
20
|
-
private static readonly DEPENDENCIES: Record<string, string[]> = {
|
|
21
|
-
// Architecture deve rodar antes de outros agentes técnicos
|
|
22
|
-
'frontend-agent': ['architecture-agent'],
|
|
23
|
-
'security-agent': [], // Independente
|
|
24
|
-
'quality-agent': ['frontend-agent', 'architecture-agent'],
|
|
25
|
-
'documentation-agent': [], // Pode rodar em paralelo
|
|
26
|
-
|
|
27
|
-
// Agentes de domínio geralmente independentes
|
|
28
|
-
'cms-agent': [],
|
|
29
|
-
'seo-agent': [],
|
|
30
|
-
'production-control-agent': [],
|
|
31
|
-
'route-agent': [],
|
|
32
|
-
|
|
33
|
-
// Inventory deve rodar primeiro (coleta informações)
|
|
34
|
-
'pentesting-agent': ['security-agent']
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Agrupa agentes em grupos paralelos e sequenciais
|
|
39
|
-
*/
|
|
40
|
-
static groupAgents(agents: AgentAssignment[]): AgentAssignment[][] {
|
|
41
|
-
const groups: AgentAssignment[][] = [];
|
|
42
|
-
const processed = new Set<string>();
|
|
43
|
-
const remaining = [...agents].sort((a, b) => a.priority - b.priority);
|
|
44
|
-
|
|
45
|
-
while (remaining.length > 0) {
|
|
46
|
-
const currentGroup: AgentAssignment[] = [];
|
|
47
|
-
|
|
48
|
-
// Encontrar agentes que podem executar em paralelo
|
|
49
|
-
for (let i = remaining.length - 1; i >= 0; i--) {
|
|
50
|
-
const agent = remaining[i];
|
|
51
|
-
const dependencies = this.DEPENDENCIES[agent.agentName] || [];
|
|
52
|
-
|
|
53
|
-
// Verificar se todas as dependências já foram processadas
|
|
54
|
-
const canRun = dependencies.every(dep => processed.has(dep));
|
|
55
|
-
|
|
56
|
-
if (canRun) {
|
|
57
|
-
currentGroup.push(agent);
|
|
58
|
-
remaining.splice(i, 1);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (currentGroup.length === 0) {
|
|
63
|
-
// Deadlock - alguma dependência circular ou não resolvida
|
|
64
|
-
// Executar o próximo agente sequencialmente
|
|
65
|
-
currentGroup.push(remaining.shift()!);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Marcar agentes como processados
|
|
69
|
-
currentGroup.forEach(agent => processed.add(agent.agentName));
|
|
70
|
-
groups.push(currentGroup);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return groups;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Verifica se dois agentes podem executar em paralelo
|
|
78
|
-
*/
|
|
79
|
-
static canRunInParallel(agent1: string, agent2: string): boolean {
|
|
80
|
-
const deps1 = this.DEPENDENCIES[agent1] || [];
|
|
81
|
-
const deps2 = this.DEPENDENCIES[agent2] || [];
|
|
82
|
-
|
|
83
|
-
// Não podem rodar em paralelo se um depende do outro
|
|
84
|
-
return !deps1.includes(agent2) && !deps2.includes(agent1);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Estima redução de tempo com paralelização
|
|
89
|
-
*/
|
|
90
|
-
static estimateTimeReduction(agents: AgentAssignment[]): {
|
|
91
|
-
sequential: number;
|
|
92
|
-
parallel: number;
|
|
93
|
-
reduction: number;
|
|
94
|
-
} {
|
|
95
|
-
const groups = this.groupAgents(agents);
|
|
96
|
-
const avgTimePerAgent = 10; // segundos (estimativa)
|
|
97
|
-
|
|
98
|
-
const sequentialTime = agents.length * avgTimePerAgent;
|
|
99
|
-
const parallelTime = groups.length * avgTimePerAgent;
|
|
100
|
-
const reduction = ((sequentialTime - parallelTime) / sequentialTime) * 100;
|
|
101
|
-
|
|
102
|
-
return {
|
|
103
|
-
sequential: sequentialTime,
|
|
104
|
-
parallel: parallelTime,
|
|
105
|
-
reduction: Math.round(reduction)
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
}
|