siesa-agents 2.1.17 → 2.1.19-dev.0
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/README.md +10 -7
- package/bin/install.js +9 -106
- package/bmad-core/agents/architect.md +0 -2
- package/bmad-core/agents/ux-expert.md +1 -1
- package/bmad-core/data/frontend-standards.md +15 -1
- package/bmad-core/data/technical-preferences-ux.md +423 -0
- package/bmad-core/tasks/create-doc.md +54 -10
- package/claude/commands/BMad/tasks/create-doc.md +50 -10
- package/claude/hooks/file-restriction-hook.py +51 -0
- package/claude/hooks/track-agent.py +67 -0
- package/claude/settings.local.json +37 -1
- package/package.json +2 -1
- package/resources/fonts/SiesaBT-Bold.otf +0 -0
- package/resources/fonts/SiesaBT-Light.otf +0 -0
- package/resources/fonts/SiesaBT-Regular.otf +0 -0
- package/resources/images/Siesa_Logosimbolo_Azul.svg +25 -0
- package/resources/images/Siesa_Logosimbolo_Blanco.svg +25 -0
- package/resources/images/Siesa_Simbolo_Azul.svg +15 -0
- package/resources/images/Siesa_Simbolo_Blanco.svg +15 -0
- package/bmad-core/data/architecture-patterns.md +0 -114
- package/bmad-core/data/technology-stack.md +0 -81
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SIESA Agents
|
|
1
|
+
# SIESA BMAD Agents
|
|
2
2
|
|
|
3
3
|
Paquete para instalar y configurar agentes SIESA en tu proyecto.
|
|
4
4
|
|
|
@@ -52,7 +52,6 @@ El paquete instala las siguientes carpetas en tu directorio actual:
|
|
|
52
52
|
- **`.bmad-core/`** - Archivos principales del sistema BMAD
|
|
53
53
|
- **`.vscode/`** - Configuración de Visual Studio Code
|
|
54
54
|
- **`.github/`** - Configuración de GitHub Actions y workflows
|
|
55
|
-
- **`.claude/`** - Configuración de Claude Code Commands y workflows
|
|
56
55
|
|
|
57
56
|
## Características
|
|
58
57
|
|
|
@@ -71,17 +70,22 @@ El paquete instala las siguientes carpetas en tu directorio actual:
|
|
|
71
70
|
|
|
72
71
|
Para actualizar una instalación existente, simplemente ejecuta el comando nuevamente:
|
|
73
72
|
|
|
73
|
+
**Versión estable (recomendado):**
|
|
74
74
|
```bash
|
|
75
75
|
npx siesa-agents
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
+
**Versión de desarrollo:**
|
|
79
|
+
```bash
|
|
80
|
+
npx siesa-agents@dev
|
|
81
|
+
```
|
|
82
|
+
|
|
78
83
|
El sistema detectará automáticamente que ya existe una instalación y la actualizará.
|
|
79
84
|
|
|
80
85
|
## Requisitos
|
|
81
86
|
|
|
82
87
|
- Node.js >= 14.0.0
|
|
83
88
|
- npm >= 6.0.0
|
|
84
|
-
- Python >= 3.7 (requerido para hooks de Claude Code)
|
|
85
89
|
|
|
86
90
|
## Estructura de archivos instalados
|
|
87
91
|
|
|
@@ -95,6 +99,8 @@ tu-proyecto/
|
|
|
95
99
|
└── [workflows y configuración de GitHub]
|
|
96
100
|
```
|
|
97
101
|
|
|
102
|
+
|
|
103
|
+
|
|
98
104
|
## Soporte
|
|
99
105
|
|
|
100
106
|
Si encuentras algún problema durante la instalación, por favor verifica:
|
|
@@ -109,7 +115,4 @@ MIT
|
|
|
109
115
|
|
|
110
116
|
## Autor
|
|
111
117
|
|
|
112
|
-
SIESA - Sistemas de Información Empresarial
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
*Versión actualizada automáticamente por CI/CD*
|
|
118
|
+
SIESA - Sistemas de Información Empresarial
|
package/bin/install.js
CHANGED
|
@@ -11,20 +11,12 @@ class SiesaBmadInstaller {
|
|
|
11
11
|
{ source: 'bmad-core', target: '.bmad-core' },
|
|
12
12
|
{ source: 'vscode', target: '.vscode' },
|
|
13
13
|
{ source: 'github', target: '.github' },
|
|
14
|
-
{ source: 'claude', target: '.claude' }
|
|
14
|
+
{ source: 'claude', target: '.claude' },
|
|
15
|
+
{ source: 'resources', target: '.resources' }
|
|
15
16
|
];
|
|
16
|
-
|
|
17
|
-
// Lista de archivos que se preservan automáticamente (no se crean backups)
|
|
18
|
-
this.ignoredFiles = [
|
|
19
|
-
'data/technical-preferences.md'
|
|
20
|
-
];
|
|
21
|
-
|
|
22
17
|
this.targetDir = process.cwd();
|
|
23
18
|
// Intentar múltiples ubicaciones posibles para el paquete
|
|
24
19
|
this.packageDir = this.findPackageDir();
|
|
25
|
-
|
|
26
|
-
// Almacenamiento temporal para contenido de archivos ignorados
|
|
27
|
-
this.preservedContent = new Map();
|
|
28
20
|
}
|
|
29
21
|
|
|
30
22
|
showBanner() {
|
|
@@ -35,7 +27,8 @@ class SiesaBmadInstaller {
|
|
|
35
27
|
console.log('╚════██║██║██╔══╝ ╚════██║██╔══██║ ██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ╚════██║');
|
|
36
28
|
console.log('███████║██║███████╗███████║██║ ██║ ██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ███████║');
|
|
37
29
|
console.log('╚══════╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝');
|
|
38
|
-
console.log('');
|
|
30
|
+
console.log('Version de Desarrollador');
|
|
31
|
+
console.log('\n');
|
|
39
32
|
}
|
|
40
33
|
|
|
41
34
|
findPackageDir() {
|
|
@@ -132,8 +125,7 @@ class SiesaBmadInstaller {
|
|
|
132
125
|
modifiedFiles.push({
|
|
133
126
|
folder: mapping.target,
|
|
134
127
|
file: relativePath,
|
|
135
|
-
fullPath: targetFile
|
|
136
|
-
is_ignored: this.ignoredFiles.includes(relativePath)
|
|
128
|
+
fullPath: targetFile
|
|
137
129
|
});
|
|
138
130
|
}
|
|
139
131
|
} catch (error) {
|
|
@@ -145,8 +137,7 @@ class SiesaBmadInstaller {
|
|
|
145
137
|
modifiedFiles.push({
|
|
146
138
|
folder: mapping.target,
|
|
147
139
|
file: relativePath,
|
|
148
|
-
fullPath: targetFile
|
|
149
|
-
is_ignored: this.ignoredFiles.includes(relativePath)
|
|
140
|
+
fullPath: targetFile
|
|
150
141
|
});
|
|
151
142
|
}
|
|
152
143
|
}
|
|
@@ -177,10 +168,6 @@ class SiesaBmadInstaller {
|
|
|
177
168
|
}
|
|
178
169
|
|
|
179
170
|
async promptUser(modifiedFiles) {
|
|
180
|
-
|
|
181
|
-
const hasNonIgnoredFiles = modifiedFiles.some(file => file.is_ignored == false)
|
|
182
|
-
if (!hasNonIgnoredFiles) return '2'
|
|
183
|
-
|
|
184
171
|
console.log('\n⚠️ Se detectaron archivos modificados:');
|
|
185
172
|
|
|
186
173
|
// Agrupar por carpeta
|
|
@@ -221,12 +208,6 @@ class SiesaBmadInstaller {
|
|
|
221
208
|
console.log('\n🔄 Creando backup de archivos modificados...');
|
|
222
209
|
|
|
223
210
|
for (const item of modifiedFiles) {
|
|
224
|
-
// No crear backup de archivos ignorados
|
|
225
|
-
if (item.is_ignored) {
|
|
226
|
-
console.log(`✓ Preservando: ${item.file} (sin backup)`);
|
|
227
|
-
continue;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
211
|
const originalPath = item.fullPath;
|
|
231
212
|
const backupPath = this.getBackupPath(originalPath);
|
|
232
213
|
|
|
@@ -291,19 +272,10 @@ class SiesaBmadInstaller {
|
|
|
291
272
|
// Obtener todos los archivos backup existentes
|
|
292
273
|
const backupFiles = await this.findBackupFiles(targetPath);
|
|
293
274
|
|
|
294
|
-
// Copiar la carpeta
|
|
275
|
+
// Copiar la carpeta completa sobrescribiendo
|
|
295
276
|
await fs.copy(sourcePath, targetPath, {
|
|
296
277
|
overwrite: true,
|
|
297
|
-
recursive: true
|
|
298
|
-
filter: (src) => {
|
|
299
|
-
const relativePath = path.relative(sourcePath, src);
|
|
300
|
-
// No sobrescribir archivos ignorados si ya existen
|
|
301
|
-
if (this.ignoredFiles.includes(relativePath)) {
|
|
302
|
-
const targetFile = path.join(targetPath, relativePath);
|
|
303
|
-
return !fs.existsSync(targetFile);
|
|
304
|
-
}
|
|
305
|
-
return true;
|
|
306
|
-
}
|
|
278
|
+
recursive: true
|
|
307
279
|
});
|
|
308
280
|
|
|
309
281
|
// Restaurar los archivos backup
|
|
@@ -358,16 +330,7 @@ class SiesaBmadInstaller {
|
|
|
358
330
|
if (fs.existsSync(sourcePath)) {
|
|
359
331
|
await fs.copy(sourcePath, targetPath, {
|
|
360
332
|
overwrite: true,
|
|
361
|
-
recursive: true
|
|
362
|
-
filter: (src) => {
|
|
363
|
-
const relativePath = path.relative(sourcePath, src);
|
|
364
|
-
// No sobrescribir archivos ignorados si ya existen
|
|
365
|
-
if (this.ignoredFiles.includes(relativePath)) {
|
|
366
|
-
const targetFile = path.join(targetPath, relativePath);
|
|
367
|
-
return !fs.existsSync(targetFile);
|
|
368
|
-
}
|
|
369
|
-
return true;
|
|
370
|
-
}
|
|
333
|
+
recursive: true
|
|
371
334
|
});
|
|
372
335
|
} else {
|
|
373
336
|
console.warn(`⚠️ Carpeta ${mapping.source} no encontrada en el paquete`);
|
|
@@ -403,9 +366,6 @@ class SiesaBmadInstaller {
|
|
|
403
366
|
await this.performUpdateWithBackups();
|
|
404
367
|
} else {
|
|
405
368
|
// Si no hay backups, hacer actualización normal (remover y copiar)
|
|
406
|
-
// Pero primero preservar archivos ignorados
|
|
407
|
-
await this.preserveIgnoredFiles();
|
|
408
|
-
|
|
409
369
|
for (const mapping of this.folderMappings) {
|
|
410
370
|
const targetPath = path.join(this.targetDir, mapping.target);
|
|
411
371
|
|
|
@@ -416,66 +376,9 @@ class SiesaBmadInstaller {
|
|
|
416
376
|
|
|
417
377
|
// Realizar instalación nueva
|
|
418
378
|
await this.performInstallation();
|
|
419
|
-
|
|
420
|
-
// Restaurar archivos ignorados
|
|
421
|
-
await this.restoreIgnoredFiles();
|
|
422
379
|
}
|
|
423
380
|
}
|
|
424
381
|
|
|
425
|
-
async preserveIgnoredFiles() {
|
|
426
|
-
console.log('🔒 Preservando archivos de configuración...');
|
|
427
|
-
|
|
428
|
-
for (const mapping of this.folderMappings) {
|
|
429
|
-
const targetFolderPath = path.join(this.targetDir, mapping.target);
|
|
430
|
-
|
|
431
|
-
if (!fs.existsSync(targetFolderPath)) {
|
|
432
|
-
continue;
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
for (const ignoredFile of this.ignoredFiles) {
|
|
436
|
-
const filePath = path.join(targetFolderPath, ignoredFile);
|
|
437
|
-
|
|
438
|
-
if (fs.existsSync(filePath)) {
|
|
439
|
-
try {
|
|
440
|
-
const content = await fs.readFile(filePath, 'utf8');
|
|
441
|
-
const key = `${mapping.target}/${ignoredFile}`;
|
|
442
|
-
this.preservedContent.set(key, content);
|
|
443
|
-
console.log(`✓ Preservando: ${ignoredFile}`);
|
|
444
|
-
} catch (error) {
|
|
445
|
-
console.warn(`⚠️ Error leyendo ${ignoredFile}: ${error.message}`);
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
async restoreIgnoredFiles() {
|
|
453
|
-
if (this.preservedContent.size === 0) {
|
|
454
|
-
return;
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
console.log('🔄 Restaurando archivos de configuración...');
|
|
458
|
-
|
|
459
|
-
for (const [key, content] of this.preservedContent) {
|
|
460
|
-
const [targetFolder, ...filePathParts] = key.split('/');
|
|
461
|
-
const filePath = path.join(this.targetDir, targetFolder, ...filePathParts);
|
|
462
|
-
|
|
463
|
-
try {
|
|
464
|
-
// Asegurar que el directorio existe
|
|
465
|
-
await fs.ensureDir(path.dirname(filePath));
|
|
466
|
-
|
|
467
|
-
// Restaurar el contenido
|
|
468
|
-
await fs.writeFile(filePath, content, 'utf8');
|
|
469
|
-
console.log(`✓ Restaurado: ${filePathParts.join('/')}`);
|
|
470
|
-
} catch (error) {
|
|
471
|
-
console.warn(`⚠️ Error restaurando ${filePathParts.join('/')}: ${error.message}`);
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
// Limpiar el mapa después de restaurar
|
|
476
|
-
this.preservedContent.clear();
|
|
477
|
-
}
|
|
478
|
-
|
|
479
382
|
showPostInstallMessage() {
|
|
480
383
|
console.log('\n📚 Carpetas instaladas:');
|
|
481
384
|
this.folderMappings.forEach(mapping => {
|
|
@@ -263,6 +263,7 @@ src/
|
|
|
263
263
|
│ └── registration/ # FEATURE
|
|
264
264
|
├── shared/
|
|
265
265
|
│ ├── components/ # Shadcn/ui components
|
|
266
|
+
│ │ └── ui/ # Base UI Kit components from proyecto/components/ui/
|
|
266
267
|
│ ├── hooks/
|
|
267
268
|
│ ├── utils/
|
|
268
269
|
│ ├── types/
|
|
@@ -276,7 +277,20 @@ src/
|
|
|
276
277
|
│ ├── api/ # API configuration
|
|
277
278
|
│ ├── storage/ # IndexedDB, localStorage
|
|
278
279
|
│ └── pwa/ # PWA configuration
|
|
279
|
-
|
|
280
|
+
├── assets/
|
|
281
|
+
│ ├── fonts/ # Fonts from proyecto/public/fonts/
|
|
282
|
+
│ │ ├── SiesaBT-Light.otf
|
|
283
|
+
│ │ ├── SiesaBT-Regular.otf
|
|
284
|
+
│ │ └── SiesaBT-Bold.otf
|
|
285
|
+
│ ├── images/
|
|
286
|
+
│ │ └── logos/ # Logos from proyecto/public/images/logos/
|
|
287
|
+
│ │ ├── Siesa_Logosimbolo_Azul.svg
|
|
288
|
+
│ │ ├── Siesa_Logosimbolo_Blanco.svg
|
|
289
|
+
│ │ ├── Siesa_Simbolo_Azul.svg
|
|
290
|
+
│ │ └── Siesa_Simbolo_Blanco.svg
|
|
291
|
+
│ └── favicon.ico # Favicon from proyecto/public/favicon.ico
|
|
292
|
+
└── styles/
|
|
293
|
+
└── globals.css # Consolidated styles + Tailwind + WCAG from proyecto/styles/globals.css
|
|
280
294
|
```
|
|
281
295
|
|
|
282
296
|
### Import Organization
|