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
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Front-End Agent (com Memória)
|
|
3
|
+
*
|
|
4
|
+
* Responsabilidades:
|
|
5
|
+
* - Garantir qualidade de UI/UX
|
|
6
|
+
* - Validar conformidade com DESIGN_SYSTEM.md
|
|
7
|
+
* - Implementar estados (loading, empty, error)
|
|
8
|
+
* - Garantir acessibilidade (ARIA, contraste, teclado)
|
|
9
|
+
* - Otimizar performance (lazy loading, code splitting)
|
|
10
|
+
* - Aplicar regra de 500 linhas em componentes
|
|
11
|
+
* - Aprender com sucessos e falhas
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import * as fs from 'fs';
|
|
15
|
+
import { BaseAgent, TaskContext, TaskResult } from './base-agent';
|
|
16
|
+
import { validateFileLines } from '../config';
|
|
17
|
+
|
|
18
|
+
export interface FrontEndCheckResult extends TaskResult {
|
|
19
|
+
passed: boolean;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export class FrontEndAgent extends BaseAgent {
|
|
23
|
+
constructor(memoryBasePath: string = '.agents/memory') {
|
|
24
|
+
super('frontend-agent', memoryBasePath);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Implementação da validação de componente
|
|
29
|
+
*/
|
|
30
|
+
async executeTask(taskDescription: string, context: TaskContext): Promise<TaskResult> {
|
|
31
|
+
const issues: string[] = [];
|
|
32
|
+
const warnings: string[] = [];
|
|
33
|
+
const recommendations: string[] = [];
|
|
34
|
+
|
|
35
|
+
// Validar cada arquivo no contexto
|
|
36
|
+
for (const filePath of context.files) {
|
|
37
|
+
// 1. Verificar limite de linhas
|
|
38
|
+
const lineCheck = validateFileLines(filePath, 500);
|
|
39
|
+
if (!lineCheck.valid) {
|
|
40
|
+
issues.push(lineCheck.message || 'Arquivo excede 500 linhas');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// 2. Ler conteúdo do arquivo
|
|
44
|
+
if (!fs.existsSync(filePath)) {
|
|
45
|
+
issues.push(`Arquivo não encontrado: ${filePath}`);
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
50
|
+
|
|
51
|
+
// 3. Verificar uso de 'any' em componentes
|
|
52
|
+
if (content.match(/:\s*any(?!\w)/g)) {
|
|
53
|
+
warnings.push(`[${filePath}] Uso de "any" detectado - considere usar tipos específicos`);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// 4. Verificar estados de loading/error/empty
|
|
57
|
+
const hasUseState = content.includes('useState');
|
|
58
|
+
const hasLoading = content.match(/loading|isLoading|isPending/i);
|
|
59
|
+
const hasError = content.match(/error|isError/i);
|
|
60
|
+
|
|
61
|
+
if (hasUseState && !hasLoading) {
|
|
62
|
+
recommendations.push(`[${filePath}] Considere adicionar estado de loading`);
|
|
63
|
+
}
|
|
64
|
+
if (hasUseState && !hasError) {
|
|
65
|
+
recommendations.push(`[${filePath}] Considere adicionar tratamento de erro`);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// 5. Verificar acessibilidade básica
|
|
69
|
+
if (content.includes('<button') && !content.match(/aria-label|aria-labelledby/)) {
|
|
70
|
+
warnings.push(`[${filePath}] Botões sem aria-label detectados - verifique acessibilidade`);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// 6. Verificar uso de next/image
|
|
74
|
+
if (content.includes('<img') && !content.includes('next/image')) {
|
|
75
|
+
recommendations.push(`[${filePath}] Considere usar next/image para otimização automática`);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// 7. Verificar dangerouslySetInnerHTML sem sanitização
|
|
79
|
+
if (content.includes('dangerouslySetInnerHTML') && !content.includes('DOMPurify')) {
|
|
80
|
+
issues.push(`[${filePath}] dangerouslySetInnerHTML sem sanitização (DOMPurify) detectado!`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const success = issues.length === 0;
|
|
85
|
+
const details = this.formatDetails(issues, warnings, recommendations);
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
success,
|
|
89
|
+
details,
|
|
90
|
+
issues,
|
|
91
|
+
warnings,
|
|
92
|
+
recommendations,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Valida componente (método de conveniência)
|
|
98
|
+
*/
|
|
99
|
+
async validateComponent(filePath: string): Promise<FrontEndCheckResult> {
|
|
100
|
+
const context: TaskContext = {
|
|
101
|
+
files: [filePath],
|
|
102
|
+
areas: ['frontend'],
|
|
103
|
+
complexity: 'low',
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const result = await this.executeWithMemory(
|
|
107
|
+
`Validar componente: ${filePath}`,
|
|
108
|
+
context
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
return {
|
|
112
|
+
...result,
|
|
113
|
+
passed: result.success,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Gera relatório de front-end
|
|
119
|
+
*/
|
|
120
|
+
generateReport(results: FrontEndCheckResult[]): string {
|
|
121
|
+
const allIssues = results.flatMap(r => r.issues || []);
|
|
122
|
+
const allWarnings = results.flatMap(r => r.warnings || []);
|
|
123
|
+
const allRecommendations = results.flatMap(r => r.recommendations || []);
|
|
124
|
+
|
|
125
|
+
let report = '[FRONT-END IMPLEMENTATION REPORT]\n\n';
|
|
126
|
+
|
|
127
|
+
if (allIssues.length > 0) {
|
|
128
|
+
report += '❌ ISSUES (Bloqueadores):\n';
|
|
129
|
+
allIssues.forEach(issue => report += ` - ${issue}\n`);
|
|
130
|
+
report += '\n';
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (allWarnings.length > 0) {
|
|
134
|
+
report += '⚠️ WARNINGS:\n';
|
|
135
|
+
allWarnings.forEach(warning => report += ` - ${warning}\n`);
|
|
136
|
+
report += '\n';
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (allRecommendations.length > 0) {
|
|
140
|
+
report += '💡 RECOMENDAÇÕES:\n';
|
|
141
|
+
allRecommendations.forEach(rec => report += ` - ${rec}\n`);
|
|
142
|
+
report += '\n';
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (allIssues.length === 0 && allWarnings.length === 0) {
|
|
146
|
+
report += '✅ Todos os checks passaram!\n\n';
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
report += '---\n';
|
|
150
|
+
report += '[x] Regra 2 implementada (Front-End)\n';
|
|
151
|
+
|
|
152
|
+
return report;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Formata detalhes do resultado
|
|
157
|
+
*/
|
|
158
|
+
private formatDetails(issues: string[], warnings: string[], recommendations: string[]): string {
|
|
159
|
+
let details = '';
|
|
160
|
+
|
|
161
|
+
if (issues.length > 0) {
|
|
162
|
+
details += `Issues: ${issues.length}\n`;
|
|
163
|
+
}
|
|
164
|
+
if (warnings.length > 0) {
|
|
165
|
+
details += `Warnings: ${warnings.length}\n`;
|
|
166
|
+
}
|
|
167
|
+
if (recommendations.length > 0) {
|
|
168
|
+
details += `Recommendations: ${recommendations.length}\n`;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return details || 'Validação concluída sem problemas';
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Especialidade padrão do Front-End Agent
|
|
176
|
+
*/
|
|
177
|
+
protected getDefaultSpecialty(): string {
|
|
178
|
+
return `# Front-End Agent - Especialidade
|
|
179
|
+
|
|
180
|
+
## Responsabilidades
|
|
181
|
+
- Validar componentes React/Next.js
|
|
182
|
+
- Garantir acessibilidade (WCAG 2.1)
|
|
183
|
+
- Otimizar performance (Core Web Vitals)
|
|
184
|
+
- Aplicar design system
|
|
185
|
+
- Implementar estados: loading, error, empty
|
|
186
|
+
|
|
187
|
+
## Expertise
|
|
188
|
+
- React, Next.js, TypeScript
|
|
189
|
+
- CSS, Tailwind, Design Systems
|
|
190
|
+
- Acessibilidade (ARIA, semântica)
|
|
191
|
+
- Performance (lazy loading, code splitting)
|
|
192
|
+
- Server Components vs Client Components
|
|
193
|
+
|
|
194
|
+
## Regras
|
|
195
|
+
- Componentes < 500 linhas
|
|
196
|
+
- Sempre incluir estados: loading, error, empty
|
|
197
|
+
- Usar next/image para imagens
|
|
198
|
+
- Sanitizar HTML com DOMPurify
|
|
199
|
+
- Evitar uso de 'any'
|
|
200
|
+
- Adicionar aria-labels em botões
|
|
201
|
+
|
|
202
|
+
## Tarefas Típicas
|
|
203
|
+
- Criar/validar componentes UI
|
|
204
|
+
- Implementar páginas responsivas
|
|
205
|
+
- Otimizar performance de renderização
|
|
206
|
+
- Garantir acessibilidade
|
|
207
|
+
- Aplicar design system
|
|
208
|
+
`;
|
|
209
|
+
}
|
|
210
|
+
}
|