siesa-agents 2.1.72-qa.2 → 2.1.72-qa.21

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 (49) hide show
  1. package/bmad/bmm/config.yaml +33 -0
  2. package/claude/skills/sa-agent-sre-sentinel/SKILL.md +180 -0
  3. package/claude/skills/sa-aplicar/SKILL.md +268 -0
  4. package/claude/skills/sa-auditar-servicio/SKILL.md +255 -0
  5. package/claude/skills/sa-nueva-transversal/SKILL.md +317 -0
  6. package/claude/skills/sa-nuevo-ambiente/SKILL.md +147 -0
  7. package/claude/skills/sa-nuevo-servicio/SKILL.md +530 -0
  8. package/claude/skills/sa-onboard-db/SKILL.md +122 -0
  9. package/claude/skills/sa-qa-data-generator/SKILL.md +200 -51
  10. package/claude/skills/sa-quality-process/SKILL.md +6 -0
  11. package/claude/skills/sa-registrar-permisos/SKILL.md +233 -0
  12. package/package.json +1 -1
  13. package/siesa-agents/bmm/workflows/3-solutioning/quality-process/prompts/prompt_design_test.md +1037 -60
  14. package/siesa-agents/bmm/workflows/3-solutioning/quality-process/prompts/prompt_dor_gate.md +419 -379
  15. package/siesa-agents/bmm/workflows/3-solutioning/quality-process/prompts/prompt_e2e_executor.md +273 -0
  16. package/siesa-agents/bmm/workflows/3-solutioning/quality-process/prompts/prompt_playwright_impl.md +359 -355
  17. package/siesa-agents/bmm/workflows/3-solutioning/quality-process/prompts/prompt_test_plan.md +73 -111
  18. package/siesa-agents/bmm/workflows/3-solutioning/quality-process/workflow.md +1320 -997
  19. package/siesa-agents/resources/playwright-kit/.env.example +42 -0
  20. package/siesa-agents/resources/playwright-kit/README.md +228 -0
  21. package/siesa-agents/resources/playwright-kit/allure/categories.json +26 -0
  22. package/siesa-agents/resources/playwright-kit/global-setup.ts +34 -0
  23. package/siesa-agents/resources/playwright-kit/helpers/blazor-e2e-helpers.ts +417 -0
  24. package/siesa-agents/resources/playwright-kit/helpers/react-e2e-helpers.ts +297 -0
  25. package/siesa-agents/resources/playwright-kit/package-lock.json +850 -0
  26. package/siesa-agents/resources/playwright-kit/package.json +27 -0
  27. package/siesa-agents/resources/playwright-kit/playwright.config.ts +60 -0
  28. package/siesa-agents/resources/playwright-kit/proposed/.gitkeep +0 -0
  29. package/siesa-agents/resources/playwright-kit/reporters/agiletest-reporter.ts +252 -0
  30. package/siesa-agents/resources/playwright-kit/specs/.gitkeep +0 -0
  31. package/siesa-agents/resources/playwright-kit/specs/architecture-brief-siesa-erp.md +85 -0
  32. package/siesa-agents/resources/playwright-kit/specs/architecture-brief-siesa-react.md +109 -0
  33. package/siesa-agents/resources/playwright-kit/specs/architecture-brief-template.md +69 -0
  34. package/siesa-agents/resources/playwright-kit/tests/seed-example.spec.ts +95 -0
  35. package/siesa-agents/resources/playwright-kit/tools/locator-overlay.js +1306 -0
  36. package/siesa-agents/resources/playwright-kit/tools/locator-recorder.spec.ts +986 -0
  37. package/siesa-agents/scripts/__pycache__/bmad_to_agiletest.cpython-36.pyc +0 -0
  38. package/siesa-agents/scripts/bmad_to_agiletest.py +352 -337
  39. package/siesa-agents/scripts/converters/convert_csv_to_test_design.py +327 -0
  40. package/siesa-agents/scripts/converters/convert_excel_to_test_design.py +360 -0
  41. package/siesa-agents/scripts/converters/convert_md_to_test_design.py +359 -0
  42. package/siesa-agents/scripts/converters/convert_pdf_to_test_design.py +412 -0
  43. package/siesa-agents/scripts/converters/export_yaml_to_csv.py +149 -0
  44. package/siesa-agents/scripts/converters/export_yaml_to_excel.py +233 -0
  45. package/siesa-agents/scripts/converters/export_yaml_to_markdown.py +172 -0
  46. package/siesa-agents/scripts/converters/export_yaml_to_pdf.py +297 -0
  47. package/siesa-agents/scripts/merge_test_design.py +106 -106
  48. package/siesa-agents/scripts/playwright/yaml-to-playwright-spec.ts +203 -0
  49. package/siesa-agents/scripts/requirements.txt +7 -0
@@ -0,0 +1,233 @@
1
+ ---
2
+ name: sa-registrar-permisos
3
+ description: 'Generates the exact curl command to register a services permissions in access-manager via POST /internal/v1/permissions/register. Use whenever the user needs to wire a new services permissions into the access-manager API.'
4
+ ---
5
+
6
+ > **Contexto de ejecución:** este skill asume que el cwd está dentro de la carpeta del workspace de despliegue (`_siesa-agents/devops/` en Siesa-Agents tras correr `/sa-init-devops`, o la raíz de un clon directo de `architecture-sa-devops`). Las rutas relativas (`environments/`, `terraform/`, `k8s/`, `scripts/`, etc.) se resuelven contra ese cwd.
7
+
8
+ Genera el curl exacto para registrar los permisos de un servicio en access-manager via POST /internal/v1/permissions/register.
9
+
10
+ **Uso:** `/sa-registrar-permisos {servicio} {prefijo} {entidad1} {entidad2} ...`
11
+
12
+ **Ejemplo:** `/sa-registrar-permisos treasury tax treasury-accounts treasury-transactions`
13
+
14
+ **Prefijos existentes por servicio:**
15
+ | Servicio | Prefijo |
16
+ |---|---|
17
+ | segments | `segment` |
18
+ | base-config | `base-config` |
19
+ | third-party | `third-party` |
20
+ | accounting | `acct` |
21
+ | liquid-tax | `tax` |
22
+
23
+ **Acciones estándar por entidad:** `create`, `read`, `update`, `delete`, `change_status`
24
+
25
+ ---
26
+
27
+ ## Instrucciones
28
+
29
+ Los argumentos son: `$ARGUMENTS`
30
+
31
+ - `SERVICIO` = primer argumento (ej: `treasury`)
32
+ - `PREFIJO` = segundo argumento (ej: `tax`)
33
+ - `ENTIDADES` = todos los argumentos restantes (ej: `treasury-accounts treasury-transactions`)
34
+
35
+ Lee `environments/dev.yaml` para obtener:
36
+ - `DOMINIO` = `.dns.domain` (ej: `finance.siesacloud.dev`)
37
+
38
+ ---
39
+
40
+ ### Paso 1 — Explicar el formato de permisos
41
+
42
+ ```
43
+ Formato: Resource="{PREFIJO}.{entidad-plural-kebab}" + Action="{acción}"
44
+ Cadena en Redis = Resource + "." + Action
45
+
46
+ Ejemplo para prefijo "tax", entidad "treasury-accounts":
47
+ Resource: "tax.treasury-accounts"
48
+ Actions: "create", "read", "update", "delete", "change_status"
49
+ → Redis keys: "tax.treasury-accounts.create", "tax.treasury-accounts.read", etc.
50
+
51
+ IMPORTANTE:
52
+ - Entidad: kebab-case (ej: treasury-accounts ✅ / treasuryAccounts ❌)
53
+ - Acción: snake_case (ej: change_status ✅ / changeStatus ❌)
54
+ - Prefijo: siempre usar el prefijo del servicio (ej: "tax.treasury-accounts" ✅ / "treasury-accounts" ❌)
55
+ ```
56
+
57
+ ### Paso 2 — Generar el curl
58
+
59
+ Para cada entidad en ENTIDADES, genera permisos con las 5 acciones estándar.
60
+
61
+ ```bash
62
+ # ============================================================
63
+ # Registrar permisos: servicio {SERVICIO}
64
+ # Ejecutar con acceso a https://{DOMINIO}
65
+ # Obtener X-Api-Key del Secret Manager: accmgr-sandbox-internal-api-key
66
+ # ============================================================
67
+
68
+ curl -X POST https://{DOMINIO}/api/access-manager/internal/v1/permissions/register \
69
+ -H "Content-Type: application/json" \
70
+ -H "X-Api-Key: <INTERNAL_API_KEY>" \
71
+ -H "X-Microservice-Source: {SERVICIO}" \
72
+ -d '{
73
+ "permissions": [
74
+ ```
75
+
76
+ Para cada ENTIDAD genera:
77
+ ```json
78
+ { "resource": "{PREFIJO}.{ENTIDAD}", "action": "create" },
79
+ { "resource": "{PREFIJO}.{ENTIDAD}", "action": "read" },
80
+ { "resource": "{PREFIJO}.{ENTIDAD}", "action": "update" },
81
+ { "resource": "{PREFIJO}.{ENTIDAD}", "action": "delete" },
82
+ { "resource": "{PREFIJO}.{ENTIDAD}", "action": "change_status" },
83
+ ```
84
+
85
+ Cierra el JSON:
86
+ ```json
87
+ ]
88
+ }'
89
+ ```
90
+
91
+ ### Paso 3 — Mostrar cómo usar en el código
92
+
93
+ ```csharp
94
+ // En el endpoint del servicio {SERVICIO}:
95
+
96
+ // ✅ Correcto — con prefijo
97
+ [RequirePermission("{PREFIJO}.{ENTIDAD}.read")]
98
+
99
+ // ❌ Incorrecto — sin prefijo
100
+ [RequirePermission("{ENTIDAD}.read")]
101
+ ```
102
+
103
+ ### Paso 4 — Notas
104
+
105
+ ```
106
+ ⚠️ NOTAS:
107
+
108
+ 1. Obtener X-Api-Key:
109
+ gcloud secrets versions access latest \
110
+ --secret="accmgr-sandbox-internal-api-key" \
111
+ --project={PROJECT_ID}
112
+
113
+ 2. Registro manual — NO auto-registrar en startup.
114
+ El patrón de auto-registro fue eliminado.
115
+
116
+ 3. InternalApiKey (sin doble guión bajo) es la clave de configuración.
117
+ InternalApi__Key mapea a InternalApi:Key — NO es leída por el filtro.
118
+
119
+ 4. Para validar que quedaron registrados:
120
+ curl https://{DOMINIO}/api/access-manager/internal/v1/permissions \
121
+ -H "X-Api-Key: <INTERNAL_API_KEY>"
122
+
123
+ 5. Si el servicio tiene más acciones personalizadas (ej: approve, export),
124
+ agregarlas manualmente al JSON de permisos antes de ejecutar el curl.
125
+ ```
126
+
127
+ ---
128
+
129
+ ## Inventario de permisos ya registrados en BD
130
+
131
+ > Re-ejecutar estos curls si se resetea `access_manager.permissions`.
132
+
133
+ ### segments (`prefijo: segment`)
134
+
135
+ ```bash
136
+ curl -X POST https://{DOMINIO}/api/access-manager/internal/v1/permissions/register \
137
+ -H "Content-Type: application/json" \
138
+ -H "X-Api-Key: <INTERNAL_API_KEY>" \
139
+ -H "X-Microservice-Source: segments" \
140
+ -d '{
141
+ "permissions": [
142
+ {"resource": "segment.companies", "action": "read", "description": "Ver listado de compañías", "summary": "Leer compañías", "displayOrder": 1},
143
+ {"resource": "segment.companies", "action": "create", "description": "Crear compañías", "summary": "Crear compañía", "displayOrder": 2},
144
+ {"resource": "segment.companies", "action": "update", "description": "Editar compañías", "summary": "Editar compañía", "displayOrder": 3},
145
+ {"resource": "segment.companies", "action": "change_status", "description": "Activar/desactivar compañías", "summary": "Cambiar estado compañía", "displayOrder": 4},
146
+ {"resource": "segment.cost-center-groups", "action": "read", "description": "Ver grupos de centros de costo", "summary": "Leer grupos CC", "displayOrder": 10},
147
+ {"resource": "segment.cost-center-groups", "action": "create", "description": "Crear grupos de centros de costo", "summary": "Crear grupo CC", "displayOrder": 11},
148
+ {"resource": "segment.cost-center-groups", "action": "update", "description": "Editar grupos de centros de costo", "summary": "Editar grupo CC", "displayOrder": 12},
149
+ {"resource": "segment.cost-center-groups", "action": "change_status", "description": "Activar/desactivar grupos CC", "summary": "Cambiar estado grupo CC", "displayOrder": 13},
150
+ {"resource": "segment.cost-center-groups", "action": "assign", "description": "Asignar centros de costo a grupos", "summary": "Asignar CC a grupo", "displayOrder": 14},
151
+ {"resource": "segment.cost-center-groups", "action": "update_global", "description": "Actualizar configuración global grupos CC", "summary": "Actualizar global grupos CC", "displayOrder": 15},
152
+ {"resource": "segment.segment-configurations", "action": "read", "description": "Ver configuraciones de segmentos", "summary": "Leer configuraciones", "displayOrder": 20},
153
+ {"resource": "segment.segment-configurations", "action": "create", "description": "Crear configuraciones de segmentos", "summary": "Crear configuración", "displayOrder": 21},
154
+ {"resource": "segment.segment-configurations", "action": "update", "description": "Editar configuraciones de segmentos", "summary": "Editar configuración", "displayOrder": 22},
155
+ {"resource": "segment.segment-configurations", "action": "change_status", "description": "Activar/desactivar configuraciones", "summary": "Cambiar estado configuración", "displayOrder": 23},
156
+ {"resource": "segment.segment-configurations", "action": "assign", "description": "Asignar compañías a configuraciones", "summary": "Asignar compañía a configuración", "displayOrder": 24},
157
+ {"resource": "segment.segments", "action": "read", "description": "Ver segmentos", "summary": "Leer segmentos", "displayOrder": 30},
158
+ {"resource": "segment.segments", "action": "create", "description": "Crear segmentos", "summary": "Crear segmento", "displayOrder": 31},
159
+ {"resource": "segment.segments", "action": "update", "description": "Editar segmentos", "summary": "Editar segmento", "displayOrder": 32},
160
+ {"resource": "segment.segments", "action": "delete", "description": "Eliminar segmentos", "summary": "Eliminar segmento", "displayOrder": 33},
161
+ {"resource": "segment.segments", "action": "change_status", "description": "Activar/desactivar segmentos", "summary": "Cambiar estado segmento", "displayOrder": 34},
162
+ {"resource": "segment.segments", "action": "assign", "description": "Asignar compañías a segmentos", "summary": "Asignar compañía a segmento", "displayOrder": 35}
163
+ ]
164
+ }'
165
+ ```
166
+
167
+ ### third-party (`prefijo: third-party`)
168
+
169
+ ```bash
170
+ curl -X POST https://{DOMINIO}/api/access-manager/internal/v1/permissions/register \
171
+ -H "Content-Type: application/json" \
172
+ -H "X-Api-Key: <INTERNAL_API_KEY>" \
173
+ -H "X-Microservice-Source: third-party" \
174
+ -d '{
175
+ "permissions": [
176
+ {"resource": "third-party.economic-activities", "action": "read", "description": "Ver listado de actividades económicas", "summary": "Leer actividades económicas", "displayOrder": 40},
177
+ {"resource": "third-party.economic-activities", "action": "create", "description": "Crear actividades económicas", "summary": "Crear actividad económica", "displayOrder": 41},
178
+ {"resource": "third-party.economic-activities", "action": "update", "description": "Editar actividades económicas", "summary": "Editar actividad económica", "displayOrder": 42},
179
+ {"resource": "third-party.economic-activities", "action": "update_global", "description": "Actualizar configuración global actividades económicas","summary": "Actualizar global act. económica", "displayOrder": 43},
180
+ {"resource": "third-party.economic-activities", "action": "change_status", "description": "Activar/desactivar actividades económicas", "summary": "Cambiar estado actividad económica", "displayOrder": 44},
181
+ {"resource": "third-party.economic-activities", "action": "delete", "description": "Eliminar actividades económicas", "summary": "Eliminar actividad económica", "displayOrder": 45},
182
+ {"resource": "third-party.economic-activities", "action": "assign", "description": "Asignar actividades económicas", "summary": "Asignar actividad económica", "displayOrder": 46},
183
+ {"resource": "third-party.identification-types", "action": "read", "description": "Ver listado de tipos de identificación", "summary": "Leer tipos de identificación", "displayOrder": 50},
184
+ {"resource": "third-party.identification-types", "action": "create", "description": "Crear tipos de identificación", "summary": "Crear tipo de identificación", "displayOrder": 51},
185
+ {"resource": "third-party.identification-types", "action": "update", "description": "Editar tipos de identificación", "summary": "Editar tipo de identificación", "displayOrder": 52},
186
+ {"resource": "third-party.identification-types", "action": "update_global", "description": "Actualizar configuración global tipos de identificación","summary": "Actualizar global tipo ID", "displayOrder": 53},
187
+ {"resource": "third-party.identification-types", "action": "change_status", "description": "Activar/desactivar tipos de identificación", "summary": "Cambiar estado tipo identificación", "displayOrder": 54},
188
+ {"resource": "third-party.identification-types", "action": "delete", "description": "Eliminar tipos de identificación", "summary": "Eliminar tipo de identificación", "displayOrder": 55},
189
+ {"resource": "third-party.identification-types", "action": "assign", "description": "Asignar tipos de identificación", "summary": "Asignar tipo de identificación", "displayOrder": 56}
190
+ ]
191
+ }'
192
+ ```
193
+
194
+ ### liquid-tax (`prefijo: tax`)
195
+
196
+ ```bash
197
+ curl -X POST https://{DOMINIO}/api/access-manager/internal/v1/permissions/register \
198
+ -H "Content-Type: application/json" \
199
+ -H "X-Api-Key: <INTERNAL_API_KEY>" \
200
+ -H "X-Microservice-Source: liquid-tax" \
201
+ -d '{
202
+ "permissions": [
203
+ {"resource": "tax.withholding-keys", "action": "read", "description": "Ver listado de claves de retención", "summary": "Leer claves de retención", "displayOrder": 60},
204
+ {"resource": "tax.withholding-keys", "action": "create", "description": "Crear claves de retención", "summary": "Crear clave de retención", "displayOrder": 61},
205
+ {"resource": "tax.withholding-keys", "action": "update", "description": "Editar claves de retención", "summary": "Editar clave de retención", "displayOrder": 62},
206
+ {"resource": "tax.withholding-keys", "action": "change_status", "description": "Activar/desactivar claves de retención", "summary": "Cambiar estado clave retención", "displayOrder": 63},
207
+ {"resource": "tax.withholding-keys", "action": "delete", "description": "Eliminar claves de retención", "summary": "Eliminar clave de retención", "displayOrder": 64},
208
+ {"resource": "tax.tax_keys", "action": "read", "description": "Ver listado de claves de impuesto", "summary": "Leer claves de impuesto", "displayOrder": 65},
209
+ {"resource": "tax.tax_keys", "action": "create", "description": "Crear claves de impuesto", "summary": "Crear clave de impuesto", "displayOrder": 66},
210
+ {"resource": "tax.tax_keys", "action": "update", "description": "Editar claves de impuesto", "summary": "Editar clave de impuesto", "displayOrder": 67},
211
+ {"resource": "tax.tax_keys", "action": "change_status", "description": "Activar/desactivar claves de impuesto", "summary": "Cambiar estado clave impuesto", "displayOrder": 68}
212
+ ]
213
+ }'
214
+ ```
215
+
216
+ ### accounting (`prefijo: acct`)
217
+
218
+ ```bash
219
+ curl -X POST https://{DOMINIO}/api/access-manager/internal/v1/permissions/register \
220
+ -H "Content-Type: application/json" \
221
+ -H "X-Api-Key: <INTERNAL_API_KEY>" \
222
+ -H "X-Microservice-Source: accounting" \
223
+ -d '{
224
+ "permissions": [
225
+ {"resource": "acct.accounting-concepts", "action": "read", "description": "Ver listado de conceptos contables", "summary": "Leer conceptos contables", "displayOrder": 80},
226
+ {"resource": "acct.accounting-concepts", "action": "create", "description": "Crear conceptos contables", "summary": "Crear concepto contable", "displayOrder": 81},
227
+ {"resource": "acct.accounting-concepts", "action": "update", "description": "Editar conceptos contables", "summary": "Editar concepto contable", "displayOrder": 82},
228
+ {"resource": "acct.accounting-concepts", "action": "update_global", "description": "Actualizar configuración global conceptos contables","summary": "Actualizar global concepto contable","displayOrder": 83},
229
+ {"resource": "acct.accounting-concepts", "action": "change_status", "description": "Activar/desactivar conceptos contables", "summary": "Cambiar estado concepto contable", "displayOrder": 84},
230
+ {"resource": "acct.accounting-concepts", "action": "assign", "description": "Asignar conceptos contables a compañías", "summary": "Asignar concepto contable", "displayOrder": 85}
231
+ ]
232
+ }'
233
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siesa-agents",
3
- "version": "2.1.72-qa.2",
3
+ "version": "2.1.72-qa.21",
4
4
  "description": "Paquete para instalar y configurar agentes SIESA en tu proyecto",
5
5
  "main": "index.js",
6
6
  "bin": {