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.
Files changed (108) hide show
  1. package/.agent/skills/wegho-global-rules/SKILL.md +20 -0
  2. package/.agent/workflows/PROMPT_GUIDE.md +7 -4
  3. package/.agents/cli.ts +29 -21
  4. package/.agents/core/base-agent.ts +28 -12
  5. package/.agents/core/memory-system.ts +45 -13
  6. package/.agents/core/report-generator.ts +26 -19
  7. package/.agents/orchestrator.ts +104 -74
  8. package/.clinerules +318 -1229
  9. package/.cursorrules +0 -189
  10. package/README.md +3 -3
  11. package/docs/VERSION.md +3 -2
  12. package/package.json +3 -3
  13. package/.agents/agents/ai-agents/README.md +0 -175
  14. package/.agents/agents/ai-agents/agent.ts +0 -83
  15. package/.agents/agents/ai-agents/specialty.md +0 -14
  16. package/.agents/agents/architecture/README.md +0 -61
  17. package/.agents/agents/architecture/agent.ts +0 -238
  18. package/.agents/agents/architecture/memory.md +0 -111
  19. package/.agents/agents/architecture/specialty.md +0 -31
  20. package/.agents/agents/automation/README.md +0 -60
  21. package/.agents/agents/automation/agent.ts +0 -61
  22. package/.agents/agents/automation/specialty.md +0 -14
  23. package/.agents/agents/backend/README.md +0 -155
  24. package/.agents/agents/backend/agent.ts +0 -100
  25. package/.agents/agents/backend/specialty.md +0 -14
  26. package/.agents/agents/cloud/README.md +0 -73
  27. package/.agents/agents/cloud/agent.ts +0 -53
  28. package/.agents/agents/cloud/specialty.md +0 -14
  29. package/.agents/agents/code-auditor/README.md +0 -37
  30. package/.agents/agents/code-auditor/agent.ts +0 -334
  31. package/.agents/agents/code-auditor/specialty.md +0 -14
  32. package/.agents/agents/cro/README.md +0 -200
  33. package/.agents/agents/cro/agent.ts +0 -61
  34. package/.agents/agents/cro/specialty.md +0 -14
  35. package/.agents/agents/database/README.md +0 -67
  36. package/.agents/agents/database/agent.ts +0 -93
  37. package/.agents/agents/database/specialty.md +0 -14
  38. package/.agents/agents/devops/README.md +0 -84
  39. package/.agents/agents/devops/agent.ts +0 -54
  40. package/.agents/agents/devops/specialty.md +0 -14
  41. package/.agents/agents/documentation/README.md +0 -107
  42. package/.agents/agents/documentation/agent.ts +0 -253
  43. package/.agents/agents/documentation/memory.md +0 -56
  44. package/.agents/agents/documentation/specialty.md +0 -33
  45. package/.agents/agents/frontend/README.md +0 -188
  46. package/.agents/agents/frontend/agent.ts +0 -211
  47. package/.agents/agents/frontend/memory.md +0 -139
  48. package/.agents/agents/frontend/specialty.md +0 -30
  49. package/.agents/agents/inventory/README.md +0 -35
  50. package/.agents/agents/inventory/agent.ts +0 -758
  51. package/.agents/agents/inventory/memory.md +0 -50
  52. package/.agents/agents/inventory/specialty.md +0 -129
  53. package/.agents/agents/nextjs/README.md +0 -58
  54. package/.agents/agents/nextjs/agent.ts +0 -114
  55. package/.agents/agents/nextjs/specialty.md +0 -14
  56. package/.agents/agents/pentest/README.md +0 -228
  57. package/.agents/agents/pentest/agent.ts +0 -96
  58. package/.agents/agents/pentest/specialty.md +0 -14
  59. package/.agents/agents/planning/README.md +0 -107
  60. package/.agents/agents/planning/agent.ts +0 -389
  61. package/.agents/agents/planning/specialty.md +0 -14
  62. package/.agents/agents/project-discovery/README.md +0 -35
  63. package/.agents/agents/project-discovery/agent.ts +0 -344
  64. package/.agents/agents/project-discovery/specialty.md +0 -14
  65. package/.agents/agents/quality/README.md +0 -81
  66. package/.agents/agents/quality/agent.ts +0 -269
  67. package/.agents/agents/quality/memory.md +0 -110
  68. package/.agents/agents/quality/specialty.md +0 -31
  69. package/.agents/agents/rag/README.md +0 -41
  70. package/.agents/agents/rag/agent.ts +0 -85
  71. package/.agents/agents/rag/specialty.md +0 -14
  72. package/.agents/agents/security/README.md +0 -152
  73. package/.agents/agents/security/agent.ts +0 -218
  74. package/.agents/agents/security/memory.md +0 -91
  75. package/.agents/agents/security/specialty.md +0 -31
  76. package/.agents/agents/task-analyzer/README.md +0 -36
  77. package/.agents/agents/task-analyzer/agent.ts +0 -462
  78. package/.agents/agents/task-analyzer/specialty.md +0 -14
  79. package/.agents/agents/testing/README.md +0 -161
  80. package/.agents/agents/testing/agent.ts +0 -61
  81. package/.agents/agents/testing/specialty.md +0 -14
  82. package/.agents/agents/uiux/README.md +0 -68
  83. package/.agents/agents/uiux/agent.ts +0 -95
  84. package/.agents/agents/uiux/specialty.md +0 -14
  85. package/.agents/base/base-agent.ts +0 -331
  86. package/.agents/base/memory-system.ts +0 -397
  87. package/.agents/base/skill-manager.ts +0 -95
  88. package/.agents/convert-memory.ps1 +0 -153
  89. package/.agents/examples/reporting-example.md +0 -203
  90. package/.agents/managers/build-manager.ts +0 -304
  91. package/.agents/managers/cache-manager.ts +0 -184
  92. package/.agents/managers/checkpoint-manager.ts +0 -299
  93. package/.agents/migrate-agents.ps1 +0 -117
  94. package/.agents/templates/change-report.md +0 -55
  95. package/.agents/templates/execution-plan.md +0 -36
  96. package/.agents/unmapped-skills.txt +0 -0
  97. package/.agents/utils/agent-migrator.ts +0 -360
  98. package/.agents/utils/agent-monitor.ts +0 -102
  99. package/.agents/utils/agent-parallelizer.ts +0 -108
  100. package/.agents/utils/context-monitor.ts +0 -140
  101. package/.agents/utils/feedback-collector.ts +0 -207
  102. package/.agents/utils/file-generator.ts +0 -304
  103. package/.agents/utils/memory-converter.ts +0 -217
  104. package/.agents/utils/memory-dashboard.ts +0 -147
  105. package/.agents/utils/performance-tracker.ts +0 -275
  106. package/.agents/utils/report-generator.ts +0 -193
  107. package/.agents/utils/retry-utility.ts +0 -140
  108. 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
- }