@planu/cli 0.29.0 → 0.30.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.
Files changed (97) hide show
  1. package/dist/engine/ci-generator/planu-config.d.ts +7 -0
  2. package/dist/engine/ci-generator/planu-config.d.ts.map +1 -0
  3. package/dist/engine/ci-generator/planu-config.js +40 -0
  4. package/dist/engine/ci-generator/planu-config.js.map +1 -0
  5. package/dist/engine/ci-generator/planu-steps.d.ts +11 -0
  6. package/dist/engine/ci-generator/planu-steps.d.ts.map +1 -0
  7. package/dist/engine/ci-generator/planu-steps.js +292 -0
  8. package/dist/engine/ci-generator/planu-steps.js.map +1 -0
  9. package/dist/engine/spec-templates/catalog-industry.d.ts +4 -0
  10. package/dist/engine/spec-templates/catalog-industry.d.ts.map +1 -0
  11. package/dist/engine/spec-templates/catalog-industry.js +19 -0
  12. package/dist/engine/spec-templates/catalog-industry.js.map +1 -0
  13. package/dist/engine/spec-templates/catalog.d.ts +1 -1
  14. package/dist/engine/spec-templates/catalog.d.ts.map +1 -1
  15. package/dist/engine/spec-templates/catalog.js +3 -1
  16. package/dist/engine/spec-templates/catalog.js.map +1 -1
  17. package/dist/engine/spec-templates/custom-loader.d.ts +12 -0
  18. package/dist/engine/spec-templates/custom-loader.d.ts.map +1 -0
  19. package/dist/engine/spec-templates/custom-loader.js +99 -0
  20. package/dist/engine/spec-templates/custom-loader.js.map +1 -0
  21. package/dist/engine/spec-templates/index.d.ts +4 -2
  22. package/dist/engine/spec-templates/index.d.ts.map +1 -1
  23. package/dist/engine/spec-templates/index.js +4 -2
  24. package/dist/engine/spec-templates/index.js.map +1 -1
  25. package/dist/engine/spec-templates/query.d.ts +12 -4
  26. package/dist/engine/spec-templates/query.d.ts.map +1 -1
  27. package/dist/engine/spec-templates/query.js +29 -7
  28. package/dist/engine/spec-templates/query.js.map +1 -1
  29. package/dist/engine/spec-templates/renderer.d.ts +27 -2
  30. package/dist/engine/spec-templates/renderer.d.ts.map +1 -1
  31. package/dist/engine/spec-templates/renderer.js +119 -4
  32. package/dist/engine/spec-templates/renderer.js.map +1 -1
  33. package/dist/engine/spec-templates/templates-api-ui.d.ts.map +1 -1
  34. package/dist/engine/spec-templates/templates-api-ui.js +28 -1
  35. package/dist/engine/spec-templates/templates-api-ui.js.map +1 -1
  36. package/dist/engine/spec-templates/templates-auth-crud.d.ts.map +1 -1
  37. package/dist/engine/spec-templates/templates-auth-crud.js +27 -0
  38. package/dist/engine/spec-templates/templates-auth-crud.js.map +1 -1
  39. package/dist/engine/spec-templates/templates-data-security.d.ts.map +1 -1
  40. package/dist/engine/spec-templates/templates-data-security.js +26 -0
  41. package/dist/engine/spec-templates/templates-data-security.js.map +1 -1
  42. package/dist/engine/spec-templates/templates-industry-ecom.d.ts +6 -0
  43. package/dist/engine/spec-templates/templates-industry-ecom.d.ts.map +1 -0
  44. package/dist/engine/spec-templates/templates-industry-ecom.js +209 -0
  45. package/dist/engine/spec-templates/templates-industry-ecom.js.map +1 -0
  46. package/dist/engine/spec-templates/templates-industry-fintech.d.ts +8 -0
  47. package/dist/engine/spec-templates/templates-industry-fintech.d.ts.map +1 -0
  48. package/dist/engine/spec-templates/templates-industry-fintech.js +350 -0
  49. package/dist/engine/spec-templates/templates-industry-fintech.js.map +1 -0
  50. package/dist/engine/spec-templates/templates-industry-health-ecom.d.ts +3 -0
  51. package/dist/engine/spec-templates/templates-industry-health-ecom.d.ts.map +1 -0
  52. package/dist/engine/spec-templates/templates-industry-health-ecom.js +5 -0
  53. package/dist/engine/spec-templates/templates-industry-health-ecom.js.map +1 -0
  54. package/dist/engine/spec-templates/templates-industry-health.d.ts +6 -0
  55. package/dist/engine/spec-templates/templates-industry-health.d.ts.map +1 -0
  56. package/dist/engine/spec-templates/templates-industry-health.js +208 -0
  57. package/dist/engine/spec-templates/templates-industry-health.js.map +1 -0
  58. package/dist/engine/spec-templates/templates-industry-saas.d.ts +8 -0
  59. package/dist/engine/spec-templates/templates-industry-saas.d.ts.map +1 -0
  60. package/dist/engine/spec-templates/templates-industry-saas.js +323 -0
  61. package/dist/engine/spec-templates/templates-industry-saas.js.map +1 -0
  62. package/dist/engine/spec-templates/templates-perf-integration.d.ts.map +1 -1
  63. package/dist/engine/spec-templates/templates-perf-integration.js +27 -0
  64. package/dist/engine/spec-templates/templates-perf-integration.js.map +1 -1
  65. package/dist/tools/ci-planu-handler.d.ts +8 -0
  66. package/dist/tools/ci-planu-handler.d.ts.map +1 -0
  67. package/dist/tools/ci-planu-handler.js +44 -0
  68. package/dist/tools/ci-planu-handler.js.map +1 -0
  69. package/dist/tools/init-project/handler.d.ts.map +1 -1
  70. package/dist/tools/init-project/handler.js +24 -159
  71. package/dist/tools/init-project/handler.js.map +1 -1
  72. package/dist/tools/init-project/result-builder.d.ts +4 -0
  73. package/dist/tools/init-project/result-builder.d.ts.map +1 -0
  74. package/dist/tools/init-project/result-builder.js +150 -0
  75. package/dist/tools/init-project/result-builder.js.map +1 -0
  76. package/dist/tools/learn.d.ts.map +1 -1
  77. package/dist/tools/learn.js +67 -14
  78. package/dist/tools/learn.js.map +1 -1
  79. package/dist/tools/register-ci-tools.d.ts.map +1 -1
  80. package/dist/tools/register-ci-tools.js +36 -0
  81. package/dist/tools/register-ci-tools.js.map +1 -1
  82. package/dist/tools/register-template-tools.d.ts.map +1 -1
  83. package/dist/tools/register-template-tools.js +21 -8
  84. package/dist/tools/register-template-tools.js.map +1 -1
  85. package/dist/tools/spec-templates.d.ts +1 -1
  86. package/dist/tools/spec-templates.d.ts.map +1 -1
  87. package/dist/tools/spec-templates.js +20 -6
  88. package/dist/tools/spec-templates.js.map +1 -1
  89. package/dist/types/ci.d.ts +51 -0
  90. package/dist/types/ci.d.ts.map +1 -1
  91. package/dist/types/project/core.d.ts +46 -5
  92. package/dist/types/project/core.d.ts.map +1 -1
  93. package/dist/types/spec-templates.d.ts +51 -1
  94. package/dist/types/spec-templates.d.ts.map +1 -1
  95. package/dist/types/vector-store.d.ts +7 -0
  96. package/dist/types/vector-store.d.ts.map +1 -1
  97. package/package.json +1 -1
@@ -0,0 +1,208 @@
1
+ // engine/spec-templates/templates-industry-health.ts — Healthtech industry templates.
2
+ // AC-04: Templates by industry — healthtech vertical (split from health-ecom).
3
+ /** Healthtech patient records template. */
4
+ export const HEALTHTECH_PATIENT_RECORDS_TEMPLATE = {
5
+ id: 'healthtech-patient-records',
6
+ name: 'Gestion de registros de pacientes',
7
+ category: 'industry',
8
+ subcategory: 'healthtech',
9
+ description: 'Registros medicos con acceso por consentimiento, historial clinico y portabilidad.',
10
+ tags: ['healthtech', 'patient', 'records', 'hipaa', 'consent'],
11
+ complexityScore: 'XL',
12
+ estimationBase: {
13
+ hoursMin: 80,
14
+ hoursMax: 160,
15
+ notes: 'Requiere cifrado de datos de salud y gestion de consentimientos',
16
+ },
17
+ criteria: [
18
+ { id: 'AC-1', title: 'Acceso con consentimiento', required: true },
19
+ { id: 'AC-2', title: 'Historial clinico', required: true },
20
+ { id: 'AC-3', title: 'Portabilidad de datos', required: true },
21
+ { id: 'AC-4', title: 'Cifrado y privacidad', required: true },
22
+ { id: 'AC-5', title: 'Auditoria de acceso', required: true },
23
+ { id: 'AC-6', title: 'Interoperabilidad', required: false },
24
+ ],
25
+ variables: [
26
+ {
27
+ key: 'SystemName',
28
+ label: 'Nombre del sistema',
29
+ description: 'Nombre del sistema de salud',
30
+ example: 'HealthApp',
31
+ required: true,
32
+ },
33
+ ],
34
+ huTemplate: `# HU: Registros de Pacientes — {{SystemName}}
35
+
36
+ ## Historia de Usuario
37
+ Como profesional de salud, quiero gestionar registros de pacientes de forma segura y con consentimiento para cumplir con regulaciones de proteccion de datos de salud.
38
+
39
+ ## Criterios de Aceptacion
40
+
41
+ ### AC-1: Acceso con consentimiento
42
+ - [ ] El paciente otorga consentimiento explicito antes de compartir sus datos
43
+ - [ ] El consentimiento es revocable en cualquier momento
44
+ - [ ] El acceso sin consentimiento vigente es bloqueado automaticamente
45
+ - [ ] Se registra quien solicito acceso y el resultado (concedido/denegado)
46
+
47
+ ### AC-2: Historial clinico
48
+ - [ ] Se mantiene historial cronologico de consultas, diagnosticos y tratamientos
49
+ - [ ] El historial es inmutable (append-only) — las correcciones generan enmiendas
50
+ - [ ] Los profesionales pueden agregar notas clinicas con su firma digital
51
+ - [ ] Se soportan adjuntos (imagenes, documentos) vinculados al historial
52
+
53
+ ### AC-3: Portabilidad de datos
54
+ - [ ] El paciente puede exportar sus datos en formato estandar (HL7 FHIR o equivalente)
55
+ - [ ] La exportacion incluye historial completo o por periodo seleccionado
56
+ - [ ] Los datos exportados mantienen integridad verificable
57
+
58
+ ### AC-4: Cifrado y privacidad
59
+ - [ ] Los datos de salud se almacenan cifrados en reposo y en transito
60
+ - [ ] Las claves de cifrado se gestionan con rotacion periodica
61
+ - [ ] Los datos personales y clinicos se almacenan separados (pseudonimizacion)
62
+
63
+ ### AC-5: Auditoria de acceso
64
+ - [ ] Todo acceso a registros de pacientes se registra con timestamp y actor
65
+ - [ ] Los registros de auditoria son inmutables y accesibles para auditorias externas
66
+ - [ ] Se generan alertas ante patrones de acceso anomalos
67
+
68
+ ### AC-6: Interoperabilidad
69
+ - [ ] El sistema expone APIs compatibles con estandares de salud (HL7 FHIR o equivalente)
70
+ - [ ] Se soporta intercambio de datos con otros sistemas de salud autorizados
71
+ `,
72
+ fichaTecnicaTemplate: `# FICHA TÉCNICA: Registros de Pacientes — {{SystemName}}
73
+
74
+ ## Archivos Afectados
75
+ - patients/records
76
+ - patients/consent-manager
77
+ - patients/audit-log
78
+ - patients/export
79
+ - security/encryption
80
+
81
+ ## Tipos / Entidades
82
+ - \`PatientRecord\`: id, patientId, entries[], consents[]
83
+ - \`ClinicalEntry\`: type, date, professional, notes, attachments
84
+ - \`Consent\`: patientId, grantedTo, scope, grantedAt, revokedAt
85
+
86
+ ## Riesgos
87
+ - Fuga de datos de salud → cifrado obligatorio + acceso auditado
88
+ - Consentimiento desactualizado → verificacion en tiempo real
89
+ - Incompatibilidad con estandares → tests de conformidad requeridos
90
+
91
+ ## Estimacion
92
+ - Dev: 80–160 horas
93
+ - Review: 16–32 horas
94
+ - Dificultad: 5/5
95
+ `,
96
+ progressTemplate: `# PROGRESS: Registros de Pacientes — {{SystemName}}
97
+
98
+ ## Estado: borrador
99
+
100
+ ## Criterios
101
+ - [ ] AC-1: Acceso con consentimiento
102
+ - [ ] AC-2: Historial clinico
103
+ - [ ] AC-3: Portabilidad de datos
104
+ - [ ] AC-4: Cifrado y privacidad
105
+ - [ ] AC-5: Auditoria de acceso
106
+ - [ ] AC-6: Interoperabilidad
107
+ `,
108
+ };
109
+ /** Healthtech appointments template. */
110
+ export const HEALTHTECH_APPOINTMENTS_TEMPLATE = {
111
+ id: 'healthtech-appointments',
112
+ name: 'Agenda y citas medicas',
113
+ category: 'industry',
114
+ subcategory: 'healthtech',
115
+ description: 'Gestion de citas medicas con disponibilidad, recordatorios y telemedicina.',
116
+ tags: ['healthtech', 'appointments', 'scheduling', 'telemedicine', 'reminders'],
117
+ complexityScore: 'M',
118
+ estimationBase: {
119
+ hoursMin: 24,
120
+ hoursMax: 48,
121
+ notes: 'Incluye gestion de disponibilidad y recordatorios automaticos',
122
+ },
123
+ criteria: [
124
+ { id: 'AC-1', title: 'Disponibilidad', required: true },
125
+ { id: 'AC-2', title: 'Reserva de citas', required: true },
126
+ { id: 'AC-3', title: 'Recordatorios', required: true },
127
+ { id: 'AC-4', title: 'Cancelacion y reprogramacion', required: true },
128
+ { id: 'AC-5', title: 'Telemedicina', required: false },
129
+ ],
130
+ variables: [
131
+ {
132
+ key: 'SystemName',
133
+ label: 'Nombre del sistema',
134
+ description: 'Nombre del sistema de salud',
135
+ example: 'HealthApp',
136
+ required: true,
137
+ },
138
+ ],
139
+ huTemplate: `# HU: Citas Medicas — {{SystemName}}
140
+
141
+ ## Historia de Usuario
142
+ Como paciente, quiero agendar citas medicas de forma sencilla y recibir recordatorios para no perder mis consultas.
143
+
144
+ ## Criterios de Aceptacion
145
+
146
+ ### AC-1: Disponibilidad
147
+ - [ ] El sistema muestra horarios disponibles por profesional y especialidad
148
+ - [ ] La disponibilidad se actualiza en tiempo real al reservar/cancelar
149
+ - [ ] Se manejan zonas horarias correctamente para telemedicina
150
+ - [ ] Los bloqueos de agenda (vacaciones, emergencias) se reflejan inmediatamente
151
+
152
+ ### AC-2: Reserva de citas
153
+ - [ ] El paciente puede reservar una cita seleccionando fecha, hora y profesional
154
+ - [ ] Se confirma la cita por el canal preferido del paciente (email, SMS, push)
155
+ - [ ] Se previenen reservas dobles en el mismo horario
156
+
157
+ ### AC-3: Recordatorios
158
+ - [ ] Se envia recordatorio 24 horas y 1 hora antes de la cita
159
+ - [ ] Los canales de recordatorio son configurables por paciente
160
+ - [ ] El recordatorio incluye opcion de confirmar, cancelar o reprogramar
161
+
162
+ ### AC-4: Cancelacion y reprogramacion
163
+ - [ ] El paciente puede cancelar hasta N horas antes de la cita
164
+ - [ ] La reprogramacion ofrece los proximos horarios disponibles
165
+ - [ ] Las cancelaciones tardias se registran (politica configurable)
166
+
167
+ ### AC-5: Telemedicina
168
+ - [ ] Las citas virtuales generan un enlace de videollamada automaticamente
169
+ - [ ] El enlace es accesible solo durante la ventana de la cita
170
+ - [ ] Se registra la asistencia a la sesion virtual
171
+ `,
172
+ fichaTecnicaTemplate: `# FICHA TÉCNICA: Citas Medicas — {{SystemName}}
173
+
174
+ ## Archivos Afectados
175
+ - appointments/availability
176
+ - appointments/booking
177
+ - appointments/reminders
178
+ - appointments/cancellation
179
+ - appointments/telemedicine
180
+
181
+ ## Tipos / Entidades
182
+ - \`Appointment\`: id, patientId, professionalId, dateTime, type, status
183
+ - \`Availability\`: professionalId, slots[], blockedPeriods[]
184
+ - \`Reminder\`: appointmentId, channel, scheduledAt, sentAt
185
+
186
+ ## Riesgos
187
+ - Reservas dobles → bloqueo optimista con verificacion
188
+ - Recordatorios no enviados → cola de reintentos con monitoring
189
+ - Problemas de conectividad en telemedicina → plan de contingencia
190
+
191
+ ## Estimacion
192
+ - Dev: 24–48 horas
193
+ - Review: 4–8 horas
194
+ - Dificultad: 3/5
195
+ `,
196
+ progressTemplate: `# PROGRESS: Citas Medicas — {{SystemName}}
197
+
198
+ ## Estado: borrador
199
+
200
+ ## Criterios
201
+ - [ ] AC-1: Disponibilidad
202
+ - [ ] AC-2: Reserva de citas
203
+ - [ ] AC-3: Recordatorios
204
+ - [ ] AC-4: Cancelacion y reprogramacion
205
+ - [ ] AC-5: Telemedicina
206
+ `,
207
+ };
208
+ //# sourceMappingURL=templates-industry-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates-industry-health.js","sourceRoot":"","sources":["../../../src/engine/spec-templates/templates-industry-health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { SpecTemplateEntry } from '../../types/spec-templates.js';
2
+ /** SaaS multi-tenant template. */
3
+ export declare const SAAS_MULTI_TENANT_TEMPLATE: SpecTemplateEntry;
4
+ /** SaaS billing and subscriptions template. */
5
+ export declare const SAAS_BILLING_TEMPLATE: SpecTemplateEntry;
6
+ /** SaaS RBAC template. */
7
+ export declare const SAAS_ROLES_TEMPLATE: SpecTemplateEntry;
8
+ //# sourceMappingURL=templates-industry-saas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates-industry-saas.d.ts","sourceRoot":"","sources":["../../../src/engine/spec-templates/templates-industry-saas.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,kCAAkC;AAClC,eAAO,MAAM,0BAA0B,EAAE,iBAuGxC,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,qBAAqB,EAAE,iBA2GnC,CAAC;AAEF,0BAA0B;AAC1B,eAAO,MAAM,mBAAmB,EAAE,iBAwGjC,CAAC"}
@@ -0,0 +1,323 @@
1
+ // engine/spec-templates/templates-industry-saas.ts — SaaS industry templates.
2
+ // AC-04: Templates by industry — SaaS vertical (multi-tenant, billing, RBAC).
3
+ /** SaaS multi-tenant template. */
4
+ export const SAAS_MULTI_TENANT_TEMPLATE = {
5
+ id: 'saas-multi-tenant',
6
+ name: 'Arquitectura multi-tenant',
7
+ category: 'industry',
8
+ subcategory: 'saas',
9
+ description: 'Aislamiento de datos por tenant, subdominios y configuracion por tenant.',
10
+ tags: ['saas', 'multi-tenant', 'isolation', 'tenancy'],
11
+ complexityScore: 'XL',
12
+ estimationBase: {
13
+ hoursMin: 80,
14
+ hoursMax: 160,
15
+ notes: 'Arquitectura fundamental que impacta todas las capas',
16
+ },
17
+ criteria: [
18
+ { id: 'AC-1', title: 'Aislamiento de datos', required: true },
19
+ { id: 'AC-2', title: 'Resolucion de tenant', required: true },
20
+ { id: 'AC-3', title: 'Configuracion por tenant', required: true },
21
+ { id: 'AC-4', title: 'Onboarding de tenant', required: true },
22
+ { id: 'AC-5', title: 'Limites por tenant', required: true },
23
+ { id: 'AC-6', title: 'Operaciones cross-tenant', required: false },
24
+ ],
25
+ variables: [
26
+ {
27
+ key: 'PlatformName',
28
+ label: 'Nombre de la plataforma',
29
+ description: 'Nombre de la plataforma SaaS',
30
+ example: 'CloudApp',
31
+ required: true,
32
+ },
33
+ ],
34
+ huTemplate: `# HU: Multi-Tenant — {{PlatformName}}
35
+
36
+ ## Historia de Usuario
37
+ Como operador de {{PlatformName}}, quiero que cada tenant tenga sus datos aislados y su configuracion independiente para ofrecer un servicio seguro y personalizable.
38
+
39
+ ## Criterios de Aceptacion
40
+
41
+ ### AC-1: Aislamiento de datos
42
+ - [ ] Los datos de cada tenant son inaccesibles para otros tenants
43
+ - [ ] Las consultas a base de datos filtran por tenant automaticamente
44
+ - [ ] No existe ruta de acceso que permita cross-tenant sin autorizacion explicita
45
+ - [ ] Las pruebas verifican que el aislamiento funciona correctamente
46
+
47
+ ### AC-2: Resolucion de tenant
48
+ - [ ] El tenant se resuelve desde subdominio, header o token segun la estrategia elegida
49
+ - [ ] La resolucion es transparente para el codigo de negocio
50
+ - [ ] Solicitudes sin tenant valido son rechazadas con error claro
51
+
52
+ ### AC-3: Configuracion por tenant
53
+ - [ ] Cada tenant puede personalizar branding (logo, colores, nombre)
54
+ - [ ] Las configuraciones de funcionalidad son independientes por tenant
55
+ - [ ] Los valores por defecto se heredan de la configuracion global
56
+
57
+ ### AC-4: Onboarding de tenant
58
+ - [ ] El alta de un nuevo tenant es automatizada (no requiere intervencion manual)
59
+ - [ ] Se provisionan los recursos necesarios (schema/namespace/bucket)
60
+ - [ ] El administrador del tenant recibe credenciales de acceso
61
+
62
+ ### AC-5: Limites por tenant
63
+ - [ ] Cada tenant tiene limites de uso configurables (usuarios, storage, API calls)
64
+ - [ ] Se notifica al tenant cuando se acerca a sus limites
65
+ - [ ] Exceder limites bloquea operaciones nuevas (no las existentes)
66
+
67
+ ### AC-6: Operaciones cross-tenant (solo para superadmin)
68
+ - [ ] El superadmin puede consultar metricas agregadas de todos los tenants
69
+ - [ ] Las operaciones de mantenimiento pueden ejecutarse por tenant o globalmente
70
+ `,
71
+ fichaTecnicaTemplate: `# FICHA TÉCNICA: Multi-Tenant — {{PlatformName}}
72
+
73
+ ## Archivos Afectados
74
+ - tenancy/resolver
75
+ - tenancy/isolation-middleware
76
+ - tenancy/config-manager
77
+ - tenancy/onboarding
78
+ - tenancy/limits
79
+
80
+ ## Tipos / Entidades
81
+ - \`Tenant\`: id, name, slug, config, limits, createdAt
82
+ - \`TenantConfig\`: branding, features, defaults
83
+ - \`TenantLimit\`: type, maxValue, currentValue
84
+
85
+ ## Riesgos
86
+ - Fuga de datos entre tenants → filtrado automatico + tests de aislamiento
87
+ - Onboarding lento → provisionamiento asincronico con status tracking
88
+ - Limites no respetados → middleware de verificacion en cada request
89
+
90
+ ## Estimacion
91
+ - Dev: 80–160 horas
92
+ - Review: 16–32 horas
93
+ - Dificultad: 5/5
94
+ `,
95
+ progressTemplate: `# PROGRESS: Multi-Tenant — {{PlatformName}}
96
+
97
+ ## Estado: borrador
98
+
99
+ ## Criterios
100
+ - [ ] AC-1: Aislamiento de datos
101
+ - [ ] AC-2: Resolucion de tenant
102
+ - [ ] AC-3: Configuracion por tenant
103
+ - [ ] AC-4: Onboarding de tenant
104
+ - [ ] AC-5: Limites por tenant
105
+ - [ ] AC-6: Operaciones cross-tenant
106
+ `,
107
+ };
108
+ /** SaaS billing and subscriptions template. */
109
+ export const SAAS_BILLING_TEMPLATE = {
110
+ id: 'saas-billing',
111
+ name: 'Facturacion y suscripciones',
112
+ category: 'industry',
113
+ subcategory: 'saas',
114
+ description: 'Planes de suscripcion, upgrades, facturacion PDF y webhooks de pago.',
115
+ tags: ['saas', 'billing', 'subscriptions', 'invoices', 'payments'],
116
+ complexityScore: 'L',
117
+ estimationBase: {
118
+ hoursMin: 40,
119
+ hoursMax: 80,
120
+ notes: 'Incluye integracion con pasarela de pago y generacion de facturas',
121
+ },
122
+ criteria: [
123
+ { id: 'AC-1', title: 'Planes de suscripcion', required: true },
124
+ { id: 'AC-2', title: 'Upgrades y downgrades', required: true },
125
+ { id: 'AC-3', title: 'Facturacion', required: true },
126
+ { id: 'AC-4', title: 'Webhooks de pago', required: true },
127
+ { id: 'AC-5', title: 'Periodo de prueba', required: false },
128
+ { id: 'AC-6', title: 'Metricas de revenue', required: false },
129
+ ],
130
+ variables: [
131
+ {
132
+ key: 'PlatformName',
133
+ label: 'Nombre de la plataforma',
134
+ description: 'Nombre de la plataforma SaaS',
135
+ example: 'CloudApp',
136
+ required: true,
137
+ },
138
+ ],
139
+ huTemplate: `# HU: Facturacion y Suscripciones — {{PlatformName}}
140
+
141
+ ## Historia de Usuario
142
+ Como usuario de {{PlatformName}}, quiero gestionar mi suscripcion y recibir facturas para mantener mi cuenta al dia.
143
+
144
+ ## Criterios de Aceptacion
145
+
146
+ ### AC-1: Planes de suscripcion
147
+ - [ ] El sistema define planes con nombre, precio, ciclo de facturacion y features incluidas
148
+ - [ ] Los planes son configurables sin despliegue (admin dashboard o config)
149
+ - [ ] Se soportan planes mensuales y anuales como minimo
150
+ - [ ] Los precios soportan multiples monedas
151
+
152
+ ### AC-2: Upgrades y downgrades
153
+ - [ ] El usuario puede cambiar de plan en cualquier momento
154
+ - [ ] Los upgrades se aplican inmediatamente con prorrateo
155
+ - [ ] Los downgrades se aplican al final del periodo de facturacion actual
156
+ - [ ] Se notifica al usuario del impacto del cambio antes de confirmar
157
+
158
+ ### AC-3: Facturacion
159
+ - [ ] Se genera factura automatica en cada ciclo de facturacion
160
+ - [ ] La factura es descargable en PDF con datos fiscales
161
+ - [ ] El historial de facturas es accesible para el usuario
162
+ - [ ] Los pagos fallidos generan reintentos con notificacion al usuario
163
+
164
+ ### AC-4: Webhooks de pago
165
+ - [ ] Los eventos de pago del proveedor se reciben y procesan via webhook
166
+ - [ ] Los webhooks validan firma/autenticidad antes de procesar
167
+ - [ ] El procesamiento es idempotente (replay-safe)
168
+ - [ ] Los eventos fallidos se reintentan con backoff
169
+
170
+ ### AC-5: Periodo de prueba
171
+ - [ ] Los nuevos usuarios pueden acceder a un periodo de prueba configurable
172
+ - [ ] Se notifica antes del fin del trial con opcion de convertir
173
+ - [ ] Al expirar el trial, se limita el acceso sin perder datos
174
+
175
+ ### AC-6: Metricas de revenue
176
+ - [ ] MRR (Monthly Recurring Revenue) calculado automaticamente
177
+ - [ ] Churn rate visible en dashboard de admin
178
+ - [ ] Cohort analysis por mes de registro
179
+ `,
180
+ fichaTecnicaTemplate: `# FICHA TÉCNICA: Facturacion — {{PlatformName}}
181
+
182
+ ## Archivos Afectados
183
+ - billing/plans
184
+ - billing/subscriptions
185
+ - billing/invoices
186
+ - billing/webhook-handler
187
+ - billing/trial
188
+
189
+ ## Tipos / Entidades
190
+ - \`Plan\`: id, name, price, currency, interval, features[]
191
+ - \`Subscription\`: userId, planId, status, startedAt, expiresAt
192
+ - \`Invoice\`: id, subscriptionId, amount, currency, paidAt, pdfUrl
193
+
194
+ ## Riesgos
195
+ - Doble cobro → idempotencia en webhook processing
196
+ - Factura incorrecta → validacion cruzada con proveedor
197
+ - Trial abuse → limitar a un trial por usuario/email
198
+
199
+ ## Estimacion
200
+ - Dev: 40–80 horas
201
+ - Review: 8–16 horas
202
+ - Dificultad: 4/5
203
+ `,
204
+ progressTemplate: `# PROGRESS: Facturacion — {{PlatformName}}
205
+
206
+ ## Estado: borrador
207
+
208
+ ## Criterios
209
+ - [ ] AC-1: Planes de suscripcion
210
+ - [ ] AC-2: Upgrades y downgrades
211
+ - [ ] AC-3: Facturacion
212
+ - [ ] AC-4: Webhooks de pago
213
+ - [ ] AC-5: Periodo de prueba
214
+ - [ ] AC-6: Metricas de revenue
215
+ `,
216
+ };
217
+ /** SaaS RBAC template. */
218
+ export const SAAS_ROLES_TEMPLATE = {
219
+ id: 'saas-roles',
220
+ name: 'Control de acceso basado en roles (RBAC)',
221
+ category: 'industry',
222
+ subcategory: 'saas',
223
+ description: 'Permisos granulares, herencia de roles y auditoria de acceso.',
224
+ tags: ['saas', 'rbac', 'permissions', 'roles', 'access-control'],
225
+ complexityScore: 'M',
226
+ estimationBase: {
227
+ hoursMin: 24,
228
+ hoursMax: 48,
229
+ notes: 'Incluye herencia de roles y auditoria de acceso',
230
+ },
231
+ criteria: [
232
+ { id: 'AC-1', title: 'Definicion de roles', required: true },
233
+ { id: 'AC-2', title: 'Permisos granulares', required: true },
234
+ { id: 'AC-3', title: 'Herencia de roles', required: false },
235
+ { id: 'AC-4', title: 'Asignacion de roles', required: true },
236
+ { id: 'AC-5', title: 'Verificacion de permisos', required: true },
237
+ { id: 'AC-6', title: 'Auditoria de acceso', required: true },
238
+ ],
239
+ variables: [
240
+ {
241
+ key: 'PlatformName',
242
+ label: 'Nombre de la plataforma',
243
+ description: 'Nombre de la plataforma SaaS',
244
+ example: 'CloudApp',
245
+ required: true,
246
+ },
247
+ ],
248
+ huTemplate: `# HU: RBAC — {{PlatformName}}
249
+
250
+ ## Historia de Usuario
251
+ Como administrador de {{PlatformName}}, quiero asignar roles y permisos a los usuarios para controlar que acciones puede realizar cada uno.
252
+
253
+ ## Criterios de Aceptacion
254
+
255
+ ### AC-1: Definicion de roles
256
+ - [ ] Los roles se definen con nombre, descripcion y conjunto de permisos
257
+ - [ ] Existen roles predefinidos (admin, editor, viewer) configurables
258
+ - [ ] Se pueden crear roles personalizados
259
+ - [ ] Los roles se gestionan por tenant (no globales)
260
+
261
+ ### AC-2: Permisos granulares
262
+ - [ ] Los permisos se definen como pares recurso:accion (e.g. "users:create")
263
+ - [ ] Se soportan wildcards (e.g. "users:*" para todas las acciones sobre usuarios)
264
+ - [ ] Los permisos nuevos se agregan sin redeploy (configuracion)
265
+
266
+ ### AC-3: Herencia de roles
267
+ - [ ] Un rol puede heredar permisos de otro rol padre
268
+ - [ ] La herencia es transitiva (admin hereda de editor que hereda de viewer)
269
+ - [ ] Los permisos heredados pueden ser revocados explicitamente
270
+
271
+ ### AC-4: Asignacion de roles
272
+ - [ ] Los administradores pueden asignar/revocar roles a usuarios
273
+ - [ ] Un usuario puede tener multiples roles (los permisos se combinan)
274
+ - [ ] Los cambios de rol se aplican inmediatamente (sin requerir re-login)
275
+
276
+ ### AC-5: Verificacion de permisos
277
+ - [ ] Toda ruta/accion verifica permisos antes de ejecutar
278
+ - [ ] La verificacion es eficiente (cache en memoria, no DB por request)
279
+ - [ ] Los permisos denegados retornan 403 con mensaje claro
280
+
281
+ ### AC-6: Auditoria de acceso
282
+ - [ ] Los cambios de roles y permisos se registran con timestamp y actor
283
+ - [ ] Los accesos denegados se registran para analisis de seguridad
284
+ - [ ] El registro de auditoria es consultable por admin
285
+ `,
286
+ fichaTecnicaTemplate: `# FICHA TÉCNICA: RBAC — {{PlatformName}}
287
+
288
+ ## Archivos Afectados
289
+ - rbac/roles
290
+ - rbac/permissions
291
+ - rbac/assignment
292
+ - rbac/middleware (permission check)
293
+ - rbac/audit-log
294
+
295
+ ## Tipos / Entidades
296
+ - \`Role\`: id, name, permissions[], parentRoleId
297
+ - \`Permission\`: resource, action, granted
298
+ - \`RoleAssignment\`: userId, roleId, assignedBy, assignedAt
299
+
300
+ ## Riesgos
301
+ - Escalacion de privilegios → tests de aislamiento de permisos
302
+ - Cache de permisos desactualizado → invalidacion al cambiar roles
303
+ - Herencia circular → validacion al definir roles padre
304
+
305
+ ## Estimacion
306
+ - Dev: 24–48 horas
307
+ - Review: 4–8 horas
308
+ - Dificultad: 3/5
309
+ `,
310
+ progressTemplate: `# PROGRESS: RBAC — {{PlatformName}}
311
+
312
+ ## Estado: borrador
313
+
314
+ ## Criterios
315
+ - [ ] AC-1: Definicion de roles
316
+ - [ ] AC-2: Permisos granulares
317
+ - [ ] AC-3: Herencia de roles
318
+ - [ ] AC-4: Asignacion de roles
319
+ - [ ] AC-5: Verificacion de permisos
320
+ - [ ] AC-6: Auditoria de acceso
321
+ `,
322
+ };
323
+ //# sourceMappingURL=templates-industry-saas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates-industry-saas.js","sourceRoot":"","sources":["../../../src/engine/spec-templates/templates-industry-saas.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"templates-perf-integration.d.ts","sourceRoot":"","sources":["../../../src/engine/spec-templates/templates-perf-integration.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,8CAA8C;AAC9C,eAAO,MAAM,iCAAiC,EAAE,iBAkG/C,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,gCAAgC,EAAE,iBA8F9C,CAAC"}
1
+ {"version":3,"file":"templates-perf-integration.d.ts","sourceRoot":"","sources":["../../../src/engine/spec-templates/templates-perf-integration.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,8CAA8C;AAC9C,eAAO,MAAM,iCAAiC,EAAE,iBA+G/C,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,gCAAgC,EAAE,iBA4G9C,CAAC"}
@@ -7,6 +7,19 @@ export const PERFORMANCE_OPTIMIZATION_TEMPLATE = {
7
7
  category: 'performance',
8
8
  description: 'Measurable performance improvements with before/after benchmarks.',
9
9
  tags: ['performance', 'optimization', 'caching', 'benchmarks'],
10
+ complexityScore: 'L',
11
+ estimationBase: {
12
+ hoursMin: 16,
13
+ hoursMax: 60,
14
+ notes: 'Highly variable by root cause; includes benchmarking setup',
15
+ },
16
+ criteria: [
17
+ { id: 'AC-1', title: 'Baseline measurement', required: true },
18
+ { id: 'AC-2', title: 'Optimization implementation', required: true },
19
+ { id: 'AC-3', title: 'Cache strategy', required: false },
20
+ { id: 'AC-4', title: 'Validation', required: true },
21
+ { id: 'AC-5', title: 'Observability', required: false },
22
+ ],
10
23
  variables: [
11
24
  {
12
25
  key: 'TargetArea',
@@ -107,6 +120,20 @@ export const THIRD_PARTY_INTEGRATION_TEMPLATE = {
107
120
  category: 'integration',
108
121
  description: 'Integrating with an external service (payment, email, SMS, CRM, etc.).',
109
122
  tags: ['integration', 'external', 'api', 'webhook'],
123
+ complexityScore: 'M',
124
+ estimationBase: {
125
+ hoursMin: 16,
126
+ hoursMax: 40,
127
+ notes: 'Includes webhook handling and circuit breaker setup',
128
+ },
129
+ criteria: [
130
+ { id: 'AC-1', title: 'Credentials management', required: true },
131
+ { id: 'AC-2', title: 'Core integration', required: true },
132
+ { id: 'AC-3', title: 'Error handling', required: true },
133
+ { id: 'AC-4', title: 'Webhooks', required: false },
134
+ { id: 'AC-5', title: 'Observability', required: false },
135
+ { id: 'AC-6', title: 'Testing', required: true },
136
+ ],
110
137
  variables: [
111
138
  {
112
139
  key: 'ServiceName',
@@ -1 +1 @@
1
- {"version":3,"file":"templates-perf-integration.js","sourceRoot":"","sources":["../../../src/engine/spec-templates/templates-perf-integration.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,oEAAoE;AAIpE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,iCAAiC,GAAsB;IAClE,EAAE,EAAE,0BAA0B;IAC9B,IAAI,EAAE,0BAA0B;IAChC,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,mEAAmE;IAChF,IAAI,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC;IAC9D,SAAS,EAAE;QACT;YACE,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,oEAAoE;YACjF,OAAO,EAAE,mBAAmB;YAC5B,QAAQ,EAAE,IAAI;SACf;QACD;YACE,GAAG,EAAE,iBAAiB;YACtB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,qCAAqC;YAClD,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,+BAA+B;SAC9C;QACD;YACE,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,+CAA+C;YAC5D,OAAO,EAAE,sBAAsB;YAC/B,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,yCAAyC;SACxD;KACF;IACD,UAAU,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCb;IACC,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;CAoBvB;IACC,gBAAgB,EAAE;;;;;;;;;;CAUnB;CACA,CAAC;AAEF,6CAA6C;AAC7C,MAAM,CAAC,MAAM,gCAAgC,GAAsB;IACjE,EAAE,EAAE,yBAAyB;IAC7B,IAAI,EAAE,yBAAyB;IAC/B,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,wEAAwE;IACrF,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC;IACnD,SAAS,EAAE;QACT;YACE,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,cAAc;YACrB,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,IAAI;SACf;QACD;YACE,GAAG,EAAE,oBAAoB;YACzB,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,8BAA8B;YAC3C,OAAO,EAAE,oBAAoB;YAC7B,QAAQ,EAAE,IAAI;SACf;KACF;IACD,UAAU,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCb;IACC,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;CAuBvB;IACC,gBAAgB,EAAE;;;;;;;;;;;CAWnB;CACA,CAAC"}
1
+ {"version":3,"file":"templates-perf-integration.js","sourceRoot":"","sources":["../../../src/engine/spec-templates/templates-perf-integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { GeneratePlanuCIInput, ToolResult } from '../types/index.js';
2
+ /**
3
+ * Handle the generate_planu_ci tool.
4
+ * Generates a GitHub Actions workflow YAML for Planu spec validation in CI,
5
+ * including drift detection, PR comments, badge, and .planu.yml config.
6
+ */
7
+ export declare function handleGeneratePlanuCI(args: GeneratePlanuCIInput): ToolResult;
8
+ //# sourceMappingURL=ci-planu-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-planu-handler.d.ts","sourceRoot":"","sources":["../../src/tools/ci-planu-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG1E;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,UAAU,CA0C5E"}