@evolith/smart-cli 0.0.3-beta → 1.1.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.es.md +51 -15
- package/README.md +51 -15
- package/dist/app.module.js +2 -0
- package/dist/app.module.js.map +1 -1
- package/dist/application/ports/webhook-notifier.port.d.ts +4 -0
- package/dist/application/ports/webhook-notifier.port.js +3 -0
- package/dist/application/ports/webhook-notifier.port.js.map +1 -0
- package/dist/application/services/index.d.ts +1 -0
- package/dist/application/services/index.js +28 -2
- package/dist/application/services/index.js.map +1 -1
- package/dist/application/services/initialize-project.spec.d.ts +1 -0
- package/dist/application/services/initialize-project.spec.js +211 -0
- package/dist/application/services/initialize-project.spec.js.map +1 -0
- package/dist/application/use-cases/evaluate-gate.use-case.d.ts +20 -0
- package/dist/application/use-cases/evaluate-gate.use-case.js +72 -0
- package/dist/application/use-cases/evaluate-gate.use-case.js.map +1 -0
- package/dist/application/use-cases/validate-satellite.use-case.d.ts +1 -0
- package/dist/application/use-cases/validate-satellite.use-case.js +7 -3
- package/dist/application/use-cases/validate-satellite.use-case.js.map +1 -1
- package/dist/commands/adr/adr.command.d.ts +2 -0
- package/dist/commands/adr/adr.command.js +36 -14
- package/dist/commands/adr/adr.command.js.map +1 -1
- package/dist/commands/architecture/scaffold.command.d.ts +1 -0
- package/dist/commands/architecture/scaffold.command.js +23 -1
- package/dist/commands/architecture/scaffold.command.js.map +1 -1
- package/dist/commands/gate/gate.command.d.ts +23 -0
- package/dist/commands/gate/gate.command.js +210 -0
- package/dist/commands/gate/gate.command.js.map +1 -0
- package/dist/commands/sdlc/gate-status.command.d.ts +3 -1
- package/dist/commands/sdlc/gate-status.command.js +78 -3
- package/dist/commands/sdlc/gate-status.command.js.map +1 -1
- package/dist/commands/sdlc/gate-status.command.spec.d.ts +1 -0
- package/dist/commands/sdlc/gate-status.command.spec.js +302 -0
- package/dist/commands/sdlc/gate-status.command.spec.js.map +1 -0
- package/dist/commands/sdlc/generate-domain.command.d.ts +2 -0
- package/dist/commands/sdlc/generate-domain.command.js +123 -12
- package/dist/commands/sdlc/generate-domain.command.js.map +1 -1
- package/dist/commands/sdlc/generate-domain.command.spec.js +103 -29
- package/dist/commands/sdlc/generate-domain.command.spec.js.map +1 -1
- package/dist/commands/sdlc/handoff.command.js +2 -2
- package/dist/commands/sdlc/handoff.command.js.map +1 -1
- package/dist/commands/sdlc/sdlc.command.js +40 -6
- package/dist/commands/sdlc/sdlc.command.js.map +1 -1
- package/dist/commands/sdlc/sdlc.command.spec.js +48 -14
- package/dist/commands/sdlc/sdlc.command.spec.js.map +1 -1
- package/dist/commands/validate/validate.command.d.ts +2 -0
- package/dist/commands/validate/validate.command.js +16 -2
- package/dist/commands/validate/validate.command.js.map +1 -1
- package/dist/core/abstractions/interfaces.d.ts +1 -0
- package/dist/core/abstractions/interfaces.js.map +1 -1
- package/dist/core/abstractions/providers/config-parser.provider.spec.d.ts +1 -0
- package/dist/core/abstractions/providers/config-parser.provider.spec.js +18 -0
- package/dist/core/abstractions/providers/config-parser.provider.spec.js.map +1 -0
- package/dist/core/abstractions/providers/mock-filesystem.provider.d.ts +1 -0
- package/dist/core/abstractions/providers/mock-filesystem.provider.js +4 -0
- package/dist/core/abstractions/providers/mock-filesystem.provider.js.map +1 -1
- package/dist/core/abstractions/providers/mock-filesystem.provider.spec.d.ts +1 -0
- package/dist/core/abstractions/providers/mock-filesystem.provider.spec.js +56 -0
- package/dist/core/abstractions/providers/mock-filesystem.provider.spec.js.map +1 -0
- package/dist/core/abstractions/providers/node-filesystem.provider.d.ts +1 -0
- package/dist/core/abstractions/providers/node-filesystem.provider.js +4 -0
- package/dist/core/abstractions/providers/node-filesystem.provider.js.map +1 -1
- package/dist/core/architecture/nx-workspace.strategy.d.ts +3 -0
- package/dist/core/architecture/nx-workspace.strategy.js +35 -6
- package/dist/core/architecture/nx-workspace.strategy.js.map +1 -1
- package/dist/core/architecture/nx-workspace.strategy.spec.d.ts +1 -0
- package/dist/core/architecture/nx-workspace.strategy.spec.js +187 -0
- package/dist/core/architecture/nx-workspace.strategy.spec.js.map +1 -0
- package/dist/core/architecture/workspace-manager.strategy.d.ts +1 -0
- package/dist/core/generators/hexagonal-scaffolder.d.ts +6 -0
- package/dist/core/generators/hexagonal-scaffolder.js +260 -0
- package/dist/core/generators/hexagonal-scaffolder.js.map +1 -0
- package/dist/core/generators/hexagonal-scaffolder.spec.d.ts +1 -0
- package/dist/core/generators/hexagonal-scaffolder.spec.js +164 -0
- package/dist/core/generators/hexagonal-scaffolder.spec.js.map +1 -0
- package/dist/core/generators/mermaid-class-parser.d.ts +38 -0
- package/dist/core/generators/mermaid-class-parser.js +183 -0
- package/dist/core/generators/mermaid-class-parser.js.map +1 -0
- package/dist/core/generators/mermaid-class-parser.spec.d.ts +1 -0
- package/dist/core/generators/mermaid-class-parser.spec.js +148 -0
- package/dist/core/generators/mermaid-class-parser.spec.js.map +1 -0
- package/dist/core/mcp/server.d.ts +3 -1
- package/dist/core/mcp/server.js +82 -108
- package/dist/core/mcp/server.js.map +1 -1
- package/dist/core/mcp/server.spec.js +20 -4
- package/dist/core/mcp/server.spec.js.map +1 -1
- package/dist/core/mcp/tools/gate.d.ts +1 -0
- package/dist/core/mcp/tools/gate.js +68 -0
- package/dist/core/mcp/tools/gate.js.map +1 -0
- package/dist/core/metrics/dora-calculator.d.ts +18 -0
- package/dist/core/metrics/dora-calculator.js +146 -0
- package/dist/core/metrics/dora-calculator.js.map +1 -0
- package/dist/core/metrics/dora-calculator.spec.d.ts +1 -0
- package/dist/core/metrics/dora-calculator.spec.js +164 -0
- package/dist/core/metrics/dora-calculator.spec.js.map +1 -0
- package/dist/core/metrics/git-log-reader.d.ts +14 -0
- package/dist/core/metrics/git-log-reader.js +39 -0
- package/dist/core/metrics/git-log-reader.js.map +1 -0
- package/dist/core/metrics/git-log-reader.spec.d.ts +1 -0
- package/dist/core/metrics/git-log-reader.spec.js +108 -0
- package/dist/core/metrics/git-log-reader.spec.js.map +1 -0
- package/dist/core/observability/command-watcher.spec.d.ts +1 -0
- package/dist/core/observability/command-watcher.spec.js +123 -0
- package/dist/core/observability/command-watcher.spec.js.map +1 -0
- package/dist/core/observability/index.d.ts +1 -0
- package/dist/core/observability/index.js +3 -1
- package/dist/core/observability/index.js.map +1 -1
- package/dist/core/observability/tool-usage-telemetry.service.d.ts +46 -0
- package/dist/core/observability/tool-usage-telemetry.service.js +181 -0
- package/dist/core/observability/tool-usage-telemetry.service.js.map +1 -0
- package/dist/core/services/command-history.service.d.ts +1 -0
- package/dist/core/services/command-history.service.js +4 -0
- package/dist/core/services/command-history.service.js.map +1 -1
- package/dist/core/services/command-history.service.spec.js +217 -126
- package/dist/core/services/command-history.service.spec.js.map +1 -1
- package/dist/core/upgrade/satellite-upgrade.service.spec.js +204 -144
- package/dist/core/upgrade/satellite-upgrade.service.spec.js.map +1 -1
- package/dist/core/validators/deep-architecture-analyzer.spec.js +27 -57
- package/dist/core/validators/deep-architecture-analyzer.spec.js.map +1 -1
- package/dist/core/validators/evaluators/evaluator.interface.d.ts +14 -0
- package/dist/core/validators/evaluators/evaluator.interface.js +3 -0
- package/dist/core/validators/evaluators/evaluator.interface.js.map +1 -0
- package/dist/core/validators/evaluators/native-evaluator.d.ts +31 -0
- package/dist/core/validators/evaluators/native-evaluator.js +461 -0
- package/dist/core/validators/evaluators/native-evaluator.js.map +1 -0
- package/dist/core/validators/evaluators/opa-evaluator.d.ts +20 -0
- package/dist/core/validators/evaluators/opa-evaluator.js +249 -0
- package/dist/core/validators/evaluators/opa-evaluator.js.map +1 -0
- package/dist/core/validators/phase-gate-validator.service.d.ts +4 -0
- package/dist/core/validators/phase-gate-validator.service.js +74 -9
- package/dist/core/validators/phase-gate-validator.service.js.map +1 -1
- package/dist/core/validators/rule-evaluation-engine.d.ts +34 -0
- package/dist/core/validators/rule-evaluation-engine.js +187 -0
- package/dist/core/validators/rule-evaluation-engine.js.map +1 -0
- package/dist/core/validators/rule-evaluation-engine.spec.d.ts +1 -0
- package/dist/core/validators/rule-evaluation-engine.spec.js +243 -0
- package/dist/core/validators/rule-evaluation-engine.spec.js.map +1 -0
- package/dist/core/validators/ruleset-validator.service.d.ts +2 -0
- package/dist/core/validators/ruleset-validator.service.js +29 -4
- package/dist/core/validators/ruleset-validator.service.js.map +1 -1
- package/dist/domain/gate-evidence.d.ts +59 -0
- package/dist/domain/gate-evidence.js +38 -0
- package/dist/domain/gate-evidence.js.map +1 -0
- package/dist/domain/services/adr.service.d.ts +2 -2
- package/dist/domain/services/adr.service.js +12 -8
- package/dist/domain/services/adr.service.js.map +1 -1
- package/dist/infrastructure/adapters/webhook.adapter.d.ts +5 -0
- package/dist/infrastructure/adapters/webhook.adapter.js +19 -0
- package/dist/infrastructure/adapters/webhook.adapter.js.map +1 -0
- package/dist/infrastructure/cli/command-executor.spec.d.ts +1 -0
- package/dist/infrastructure/cli/command-executor.spec.js +149 -0
- package/dist/infrastructure/cli/command-executor.spec.js.map +1 -0
- package/dist/infrastructure/cli/providers/providers.spec.d.ts +1 -0
- package/dist/infrastructure/cli/providers/providers.spec.js +251 -0
- package/dist/infrastructure/cli/providers/providers.spec.js.map +1 -0
- package/package.json +23 -5
package/README.es.md
CHANGED
|
@@ -25,7 +25,7 @@ Descarga el binario más reciente desde [GitHub Releases](https://github.com/bey
|
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
27
|
smart-cli --version
|
|
28
|
-
# smart-cli version 0.0.
|
|
28
|
+
# smart-cli version 0.0.3-beta
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
## Inicio Rápido
|
|
@@ -73,8 +73,12 @@ Opciones:
|
|
|
73
73
|
--format <formato> Formato de salida: json, table, yaml, markdown
|
|
74
74
|
--output <archivo> Escribir salida a archivo
|
|
75
75
|
--ruleset <id> Validar ruleset específico (acl, open-core, inheritance)
|
|
76
|
+
--engine <engine> Motor de evaluación de políticas: native u opa (por defecto: native)
|
|
76
77
|
```
|
|
77
78
|
|
|
79
|
+
**Evaluación de Políticas Dual-Engine:**
|
|
80
|
+
La CLI soporta la evaluación de políticas utilizando el motor integrado en TypeScript (`native`) o módulos WebAssembly de Open Policy Agent (`opa`). Ver [Core ADR-0041](../../reference/architecture/adrs/core/0041-dual-engine-policy-evaluation.es.md) para más detalles.
|
|
81
|
+
|
|
78
82
|
**Ejemplos:**
|
|
79
83
|
|
|
80
84
|
```bash
|
|
@@ -229,6 +233,16 @@ smart-cli mcp serve
|
|
|
229
233
|
|
|
230
234
|
El servidor se comunica vía stdio JSON-RPC.
|
|
231
235
|
|
|
236
|
+
### Smoke Test MCP
|
|
237
|
+
|
|
238
|
+
Usar el smoke test antes de releases o cambios de protocolo MCP:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
npm run mcp:smoke
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
El smoke verifica `initialize`, `tools/list`, `resources/list`, `prompts/list` y una llamada real `tools/call` mediante la CLI compilada.
|
|
245
|
+
|
|
232
246
|
También puedes iniciar en modo HTTP:
|
|
233
247
|
|
|
234
248
|
```bash
|
|
@@ -243,12 +257,21 @@ smart-cli mcp serve --transport http --port 3000
|
|
|
243
257
|
| `evolith-agent-install` | Instalar nuevo agente |
|
|
244
258
|
| `evolith-agent-list` | Listar agentes instalados |
|
|
245
259
|
| `evolith-agent-validate` | Validar ruleset del agente |
|
|
246
|
-
| `evolith-
|
|
247
|
-
| `evolith-
|
|
248
|
-
| `evolith-
|
|
249
|
-
| `evolith-
|
|
250
|
-
| `evolith-
|
|
260
|
+
| `evolith-agent-upgrade` | Actualizar un agente existente |
|
|
261
|
+
| `evolith-agent-remove` | Eliminar un agente |
|
|
262
|
+
| `evolith-architecture-validate` | Validar arquitectura (F1/F2/F3) con análisis profundo opcional |
|
|
263
|
+
| `evolith-sdlc-handoff` | Generar manifiesto de artefactos de transición de fase |
|
|
264
|
+
| `evolith-sdlc-status` | Mostrar estado de phase gate SDLC |
|
|
265
|
+
| `evolith-config-get` | Obtener valor de configuración de `evolith.yaml` |
|
|
266
|
+
| `evolith-config-set` | Establecer valor de configuración en `evolith.yaml` |
|
|
251
267
|
| `evolith-metrics` | Obtener métricas del servidor MCP |
|
|
268
|
+
| `evolith-moscow-create` | Crear un nuevo análisis de priorización MoSCoW |
|
|
269
|
+
| `evolith-moscow-load` | Cargar un análisis MoSCoW existente |
|
|
270
|
+
| `evolith-moscow-update` | Actualizar un ítem en un análisis MoSCoW |
|
|
271
|
+
| `evolith-moscow-remove` | Eliminar un ítem de un análisis MoSCoW |
|
|
272
|
+
| `evolith-moscow-list` | Listar todos los análisis MoSCoW de un repositorio |
|
|
273
|
+
| `evolith-moscow-validate` | Validar la corrección de un análisis MoSCoW |
|
|
274
|
+
| `evolith-moscow-report` | Generar un reporte markdown desde un análisis MoSCoW |
|
|
252
275
|
|
|
253
276
|
### Configuración para Cursor AI
|
|
254
277
|
|
|
@@ -297,15 +320,15 @@ Resultado: ✓ El repositorio cumple con los estándares de Evolith
|
|
|
297
320
|
Reglas verificadas: 12
|
|
298
321
|
Todas las puertas pasaron
|
|
299
322
|
|
|
300
|
-
Tú: Muéstrame
|
|
301
|
-
Agente: Déjame
|
|
323
|
+
Tú: Muéstrame el estado SDLC
|
|
324
|
+
Agente: Déjame verificar el estado de los phase gates...
|
|
302
325
|
|
|
303
|
-
await mcp.callTool('evolith-
|
|
326
|
+
await mcp.callTool('evolith-sdlc-status', {
|
|
327
|
+
path: '/user/project'
|
|
328
|
+
})
|
|
304
329
|
|
|
305
|
-
Resultado:
|
|
306
|
-
|
|
307
|
-
- ADR-0002: Arquitectura Hexagonal (aceptado)
|
|
308
|
-
- ADR-0003: Pirámide de Pruebas (aceptado)
|
|
330
|
+
Resultado: Fase 1 — 3 gates pasados, 0 fallados
|
|
331
|
+
Todos los artefactos de evidencia presentes
|
|
309
332
|
```
|
|
310
333
|
|
|
311
334
|
## Configuración
|
|
@@ -315,7 +338,7 @@ Evolith usa un archivo `evolith.yaml` en la raíz del repositorio:
|
|
|
315
338
|
```yaml
|
|
316
339
|
coreRef:
|
|
317
340
|
version: "1.0.0"
|
|
318
|
-
path: "
|
|
341
|
+
path: "../../evolith"
|
|
319
342
|
|
|
320
343
|
governance:
|
|
321
344
|
version: "1.0"
|
|
@@ -389,9 +412,15 @@ npm link # Enlazar globalmente para pruebas
|
|
|
389
412
|
### Ejecutar Pruebas
|
|
390
413
|
|
|
391
414
|
```bash
|
|
415
|
+
# Ejecutar todas las pruebas
|
|
392
416
|
npm test
|
|
417
|
+
|
|
418
|
+
# Ejecutar con reporte de cobertura
|
|
419
|
+
npm run test:cov
|
|
393
420
|
```
|
|
394
421
|
|
|
422
|
+
**Cobertura (v0.0.3-beta):** 88.7% statements · 89.8% lines · 77.0% branches · 83.6% functions · 1 369 tests
|
|
423
|
+
|
|
395
424
|
### Estructura del Proyecto
|
|
396
425
|
|
|
397
426
|
```
|
|
@@ -407,6 +436,13 @@ sdk/cli/
|
|
|
407
436
|
└── docs/ # Documentación
|
|
408
437
|
```
|
|
409
438
|
|
|
439
|
+
## Documentación
|
|
440
|
+
|
|
441
|
+
- [Guía de Demo SMART CLI](docs/SMART-CLI-DEMO.es.md) - Guía completa que cubre todos los comandos, flujo SDLC, tipos de producto, integración MCP y validación de arquitectura
|
|
442
|
+
- [Visión](docs/VISION.es.md) - Visión y hoja de ruta de la CLI
|
|
443
|
+
- [Modelos de Datos](docs/data-models.es.md) - Modelos de datos del dominio
|
|
444
|
+
- [Integración MCP](docs/MCP-INTEGRATION.md) - Detalles de integración del servidor MCP
|
|
445
|
+
|
|
410
446
|
## Contribuir
|
|
411
447
|
|
|
412
448
|
1. Haz fork del repositorio
|
|
@@ -422,4 +458,4 @@ ISC
|
|
|
422
458
|
|
|
423
459
|
- [Documentación](https://github.com/beyondnetcode/evolith_arch32#readme)
|
|
424
460
|
- [Rastreador de Incidencias](https://github.com/beyondnetcode/evolith_arch32/issues)
|
|
425
|
-
- [Discusiones](https://github.com/beyondnetcode/evolith_arch32/discussions)
|
|
461
|
+
- [Discusiones](https://github.com/beyondnetcode/evolith_arch32/discussions)
|
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ Download the latest binary from [GitHub Releases](https://github.com/beyondnetco
|
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
27
|
smart-cli --version
|
|
28
|
-
# smart-cli version 0.0.
|
|
28
|
+
# smart-cli version 0.0.3-beta
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
## Quickstart
|
|
@@ -73,8 +73,12 @@ Options:
|
|
|
73
73
|
--format <format> Output format: json, table, yaml, markdown
|
|
74
74
|
--output <file> Write output to file
|
|
75
75
|
--ruleset <id> Validate specific ruleset (acl, open-core, inheritance)
|
|
76
|
+
--engine <engine> Policy evaluation engine: native or opa (default: native)
|
|
76
77
|
```
|
|
77
78
|
|
|
79
|
+
**Dual-Engine Policy Evaluation:**
|
|
80
|
+
The CLI supports evaluating policies using either the built-in TypeScript engine (`native`) or Open Policy Agent WebAssembly modules (`opa`). See [Core ADR-0041](../../reference/architecture/adrs/core/0041-dual-engine-policy-evaluation.md) for details.
|
|
81
|
+
|
|
78
82
|
**Examples:**
|
|
79
83
|
|
|
80
84
|
```bash
|
|
@@ -229,6 +233,16 @@ smart-cli mcp serve
|
|
|
229
233
|
|
|
230
234
|
The server communicates via stdio JSON-RPC.
|
|
231
235
|
|
|
236
|
+
### MCP Smoke Test
|
|
237
|
+
|
|
238
|
+
Use the smoke test before releases or MCP protocol changes:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
npm run mcp:smoke
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
The smoke verifies `initialize`, `tools/list`, `resources/list`, `prompts/list`, and a real `tools/call` through the built CLI.
|
|
245
|
+
|
|
232
246
|
### Available MCP Tools
|
|
233
247
|
|
|
234
248
|
| Tool | Description |
|
|
@@ -237,12 +251,21 @@ The server communicates via stdio JSON-RPC.
|
|
|
237
251
|
| `evolith-agent-install` | Install new agent |
|
|
238
252
|
| `evolith-agent-list` | List installed agents |
|
|
239
253
|
| `evolith-agent-validate` | Validate agent ruleset |
|
|
240
|
-
| `evolith-
|
|
241
|
-
| `evolith-
|
|
242
|
-
| `evolith-
|
|
243
|
-
| `evolith-
|
|
244
|
-
| `evolith-
|
|
254
|
+
| `evolith-agent-upgrade` | Upgrade an existing agent |
|
|
255
|
+
| `evolith-agent-remove` | Remove an agent |
|
|
256
|
+
| `evolith-architecture-validate` | Validate architecture (F1/F2/F3) with optional deep analysis |
|
|
257
|
+
| `evolith-sdlc-handoff` | Generate phase handoff artifact manifest |
|
|
258
|
+
| `evolith-sdlc-status` | Show SDLC phase gate status |
|
|
259
|
+
| `evolith-config-get` | Get configuration value from `evolith.yaml` |
|
|
260
|
+
| `evolith-config-set` | Set configuration value in `evolith.yaml` |
|
|
245
261
|
| `evolith-metrics` | Get MCP server metrics |
|
|
262
|
+
| `evolith-moscow-create` | Create a new MoSCoW prioritization analysis |
|
|
263
|
+
| `evolith-moscow-load` | Load an existing MoSCoW analysis |
|
|
264
|
+
| `evolith-moscow-update` | Update an item in a MoSCoW analysis |
|
|
265
|
+
| `evolith-moscow-remove` | Remove an item from a MoSCoW analysis |
|
|
266
|
+
| `evolith-moscow-list` | List all MoSCoW analyses for a repository |
|
|
267
|
+
| `evolith-moscow-validate` | Validate a MoSCoW analysis for correctness |
|
|
268
|
+
| `evolith-moscow-report` | Generate a markdown report from a MoSCoW analysis |
|
|
246
269
|
|
|
247
270
|
### Cursor AI Configuration
|
|
248
271
|
|
|
@@ -291,15 +314,15 @@ Result: ✓ Repository is compliant with Evolith standards
|
|
|
291
314
|
Rules checked: 12
|
|
292
315
|
All gates passed
|
|
293
316
|
|
|
294
|
-
You: Show me the
|
|
295
|
-
Agent: Let me
|
|
317
|
+
You: Show me the SDLC status
|
|
318
|
+
Agent: Let me check the phase gate status...
|
|
296
319
|
|
|
297
|
-
await mcp.callTool('evolith-
|
|
320
|
+
await mcp.callTool('evolith-sdlc-status', {
|
|
321
|
+
path: '/user/project'
|
|
322
|
+
})
|
|
298
323
|
|
|
299
|
-
Result:
|
|
300
|
-
|
|
301
|
-
- ADR-0002: Hexagonal Architecture (accepted)
|
|
302
|
-
- ADR-0003: Testing Pyramid (accepted)
|
|
324
|
+
Result: Phase 1 — 3 gates passed, 0 failed
|
|
325
|
+
All evidence artifacts present
|
|
303
326
|
```
|
|
304
327
|
|
|
305
328
|
## Configuration
|
|
@@ -309,7 +332,7 @@ Evolith uses an `evolith.yaml` file in the repository root:
|
|
|
309
332
|
```yaml
|
|
310
333
|
coreRef:
|
|
311
334
|
version: "1.0.0"
|
|
312
|
-
path: "
|
|
335
|
+
path: "../../evolith"
|
|
313
336
|
|
|
314
337
|
governance:
|
|
315
338
|
version: "1.0"
|
|
@@ -383,9 +406,15 @@ npm link # Link globally for testing
|
|
|
383
406
|
### Running Tests
|
|
384
407
|
|
|
385
408
|
```bash
|
|
409
|
+
# Run all tests
|
|
386
410
|
npm test
|
|
411
|
+
|
|
412
|
+
# Run with coverage report
|
|
413
|
+
npm run test:cov
|
|
387
414
|
```
|
|
388
415
|
|
|
416
|
+
**Coverage (as of v0.0.3-beta):** 88.7% statements · 89.8% lines · 77.0% branches · 83.6% functions · 1 369 tests
|
|
417
|
+
|
|
389
418
|
### Project Structure
|
|
390
419
|
|
|
391
420
|
```
|
|
@@ -401,6 +430,13 @@ sdk/cli/
|
|
|
401
430
|
└── docs/ # Documentation
|
|
402
431
|
```
|
|
403
432
|
|
|
433
|
+
## Documentation
|
|
434
|
+
|
|
435
|
+
- [SMART CLI Demo Guide](docs/SMART-CLI-DEMO.md) - Comprehensive guide covering all commands, SDLC flow, product types, MCP integration, and architecture validation
|
|
436
|
+
- [Vision](docs/VISION.md) - CLI vision and roadmap
|
|
437
|
+
- [Data Models](docs/data-models.md) - Domain data models
|
|
438
|
+
- [MCP Integration](docs/MCP-INTEGRATION.md) - MCP server integration details
|
|
439
|
+
|
|
404
440
|
## Contributing
|
|
405
441
|
|
|
406
442
|
1. Fork the repository
|
|
@@ -416,4 +452,4 @@ ISC
|
|
|
416
452
|
|
|
417
453
|
- [Documentation](https://github.com/beyondnetcode/evolith_arch32#readme)
|
|
418
454
|
- [Issue Tracker](https://github.com/beyondnetcode/evolith_arch32/issues)
|
|
419
|
-
- [Discussions](https://github.com/beyondnetcode/evolith_arch32/discussions)
|
|
455
|
+
- [Discussions](https://github.com/beyondnetcode/evolith_arch32/discussions)
|
package/dist/app.module.js
CHANGED
|
@@ -27,6 +27,7 @@ const standards_command_1 = require("./commands/standards/standards.command");
|
|
|
27
27
|
const completion_command_1 = require("./commands/completion/completion.command");
|
|
28
28
|
const history_command_1 = require("./commands/history/history.command");
|
|
29
29
|
const drift_command_1 = require("./commands/drift/drift.command");
|
|
30
|
+
const gate_command_1 = require("./commands/gate/gate.command");
|
|
30
31
|
let AppModule = class AppModule {
|
|
31
32
|
};
|
|
32
33
|
exports.AppModule = AppModule;
|
|
@@ -53,6 +54,7 @@ exports.AppModule = AppModule = __decorate([
|
|
|
53
54
|
completion_command_1.CompletionCommand,
|
|
54
55
|
history_command_1.HistoryCommand,
|
|
55
56
|
drift_command_1.DriftCommand,
|
|
57
|
+
gate_command_1.GateCommand,
|
|
56
58
|
],
|
|
57
59
|
})
|
|
58
60
|
], AppModule);
|
package/dist/app.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+DAA2D;AAC3D,mEAA+D;AAC/D,2EAAuE;AACvE,+DAA2D;AAC3D,qEAAiE;AACjE,wEAAmE;AACnE,iEAA6D;AAC7D,iFAA4E;AAC5E,2DAAuD;AACvD,gEAA4D;AAC5D,+DAA2D;AAC3D,qEAAiE;AACjE,qFAAgF;AAChF,+EAA2E;AAC3E,4DAAwD;AACxD,8EAA0E;AAC1E,iFAA6E;AAC7E,wEAAoE;AACpE,kEAA8D;
|
|
1
|
+
{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+DAA2D;AAC3D,mEAA+D;AAC/D,2EAAuE;AACvE,+DAA2D;AAC3D,qEAAiE;AACjE,wEAAmE;AACnE,iEAA6D;AAC7D,iFAA4E;AAC5E,2DAAuD;AACvD,gEAA4D;AAC5D,+DAA2D;AAC3D,qEAAiE;AACjE,qFAAgF;AAChF,+EAA2E;AAC3E,4DAAwD;AACxD,8EAA0E;AAC1E,iFAA6E;AAC7E,wEAAoE;AACpE,kEAA8D;AAC9D,+DAA2D;AA2BpD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAzBrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,EAAE;QACX,SAAS,EAAE;YACT,0BAAW;YACX,8BAAa;YACb,kCAAe;YACf,0BAAW;YACX,gCAAc;YACd,mCAAe;YACf,8BAAa;YACb,yCAAkB;YAClB,0BAAW;YACX,gCAAc;YACd,0BAAW;YACX,gCAAc;YACd,+CAAqB;YACrB,kCAAe;YACf,wBAAU;YACV,oCAAgB;YAChB,sCAAiB;YACjB,gCAAc;YACd,4BAAY;YACZ,0BAAW;SACZ;KACF,CAAC;GACW,SAAS,CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-notifier.port.js","sourceRoot":"","sources":["../../../src/application/ports/webhook-notifier.port.ts"],"names":[],"mappings":""}
|
|
@@ -162,9 +162,32 @@ evolith sdlc status
|
|
|
162
162
|
await this.scaffoldPython(input, projectDir);
|
|
163
163
|
break;
|
|
164
164
|
default:
|
|
165
|
-
|
|
165
|
+
await this.scaffoldGeneric(input, projectDir);
|
|
166
|
+
break;
|
|
166
167
|
}
|
|
167
168
|
}
|
|
169
|
+
async scaffoldGeneric(input, projectDir) {
|
|
170
|
+
await this.fs.ensureDir(`${projectDir}/src`);
|
|
171
|
+
await this.fs.writeFile(`${projectDir}/src/.gitkeep`, '');
|
|
172
|
+
const setupMd = `# ${input.name} — Setup
|
|
173
|
+
|
|
174
|
+
Runtime \`${input.runtime}\` does not have a full Evolith scaffold template yet.
|
|
175
|
+
|
|
176
|
+
## Next steps
|
|
177
|
+
|
|
178
|
+
1. Add your entry-point files inside \`src/\`
|
|
179
|
+
2. Run \`evolith validate\` once your project structure is in place
|
|
180
|
+
3. Open a PR to contribute a \`scaffold${input.runtime.charAt(0).toUpperCase()}${input.runtime.slice(1)}\` method to Evolith core
|
|
181
|
+
|
|
182
|
+
## Evolith commands that work today
|
|
183
|
+
|
|
184
|
+
\`\`\`bash
|
|
185
|
+
evolith validate
|
|
186
|
+
evolith sdlc gate-status
|
|
187
|
+
\`\`\`
|
|
188
|
+
`;
|
|
189
|
+
await this.fs.writeFile(`${projectDir}/SETUP.md`, setupMd);
|
|
190
|
+
}
|
|
168
191
|
async scaffoldNodeJs(input, projectDir) {
|
|
169
192
|
const isTs = input.runtime === 'typescript';
|
|
170
193
|
const packageJson = {
|
|
@@ -232,7 +255,10 @@ evolith sdlc status
|
|
|
232
255
|
case 'python':
|
|
233
256
|
return { available: await providers_1.pythonProvider.isAvailable() };
|
|
234
257
|
default:
|
|
235
|
-
return {
|
|
258
|
+
return {
|
|
259
|
+
available: false,
|
|
260
|
+
installHint: `Install the ${runtime} runtime and ensure it is on your PATH.`,
|
|
261
|
+
};
|
|
236
262
|
}
|
|
237
263
|
}
|
|
238
264
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/application/services/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/application/services/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const index_1 = require("./index");
|
|
4
|
+
jest.mock('../../infrastructure/catalog/catalog-loader', () => ({
|
|
5
|
+
catalogLoader: {
|
|
6
|
+
loadRuntimeCatalog: jest.fn(() => [
|
|
7
|
+
{ id: 'nodejs', name: 'Node.js', defaultVersion: '20.x', language: 'JavaScript', databases: [{ id: 'postgresql', name: 'PostgreSQL', orm: 'TypeORM' }] },
|
|
8
|
+
{ id: 'typescript', name: 'TypeScript', defaultVersion: '5.x', language: 'TypeScript', databases: [{ id: 'postgresql', name: 'PostgreSQL', orm: 'TypeORM' }] },
|
|
9
|
+
{ id: 'dotnet', name: '.NET', defaultVersion: '8.x', language: 'C#', databases: [{ id: 'sqlserver', name: 'SQL Server', orm: 'EF Core' }] },
|
|
10
|
+
{ id: 'python', name: 'Python', defaultVersion: '3.12', language: 'Python', databases: [{ id: 'postgresql', name: 'PostgreSQL', orm: 'SQLAlchemy' }] },
|
|
11
|
+
{ id: 'java', name: 'Java', defaultVersion: '21', language: 'Java', databases: [{ id: 'postgresql', name: 'PostgreSQL', orm: 'Hibernate' }] },
|
|
12
|
+
]),
|
|
13
|
+
getMonorepoOptions: jest.fn(() => [
|
|
14
|
+
{ id: 'none', name: 'None', description: 'No monorepo' },
|
|
15
|
+
]),
|
|
16
|
+
getArchitecturePatterns: jest.fn(() => [
|
|
17
|
+
{ id: 'clean', name: 'Clean Architecture', description: '' },
|
|
18
|
+
]),
|
|
19
|
+
getDefaultDatabase: jest.fn(() => 'postgresql'),
|
|
20
|
+
getApiProtocols: jest.fn(() => [{ id: 'rest', name: 'REST', description: '' }]),
|
|
21
|
+
},
|
|
22
|
+
}));
|
|
23
|
+
jest.mock('../../infrastructure/cli/providers', () => ({
|
|
24
|
+
npmProvider: { isAvailable: jest.fn().mockResolvedValue(true) },
|
|
25
|
+
dotnetProvider: { isAvailable: jest.fn().mockResolvedValue(true) },
|
|
26
|
+
pythonProvider: { isAvailable: jest.fn().mockResolvedValue(true) },
|
|
27
|
+
nxProvider: { isAvailable: jest.fn().mockResolvedValue(true) },
|
|
28
|
+
}));
|
|
29
|
+
jest.mock('../../core/observability', () => ({
|
|
30
|
+
logger: { info: jest.fn(), warn: jest.fn(), error: jest.fn(), debug: jest.fn() },
|
|
31
|
+
Timed: () => (_t, _k, desc) => desc,
|
|
32
|
+
commandWatcher: { trackStart: jest.fn(), trackEnd: jest.fn() },
|
|
33
|
+
errorReporter: { report: jest.fn(), printSummary: jest.fn() },
|
|
34
|
+
OperationTimer: jest.fn(() => ({ start: jest.fn(), end: jest.fn().mockReturnValue(0) })),
|
|
35
|
+
}));
|
|
36
|
+
function makeFs() {
|
|
37
|
+
return {
|
|
38
|
+
ensureDir: jest.fn().mockResolvedValue(undefined),
|
|
39
|
+
writeFile: jest.fn().mockResolvedValue(undefined),
|
|
40
|
+
writeJson: jest.fn().mockResolvedValue(undefined),
|
|
41
|
+
readJson: jest.fn().mockResolvedValue({}),
|
|
42
|
+
exists: jest.fn().mockResolvedValue(false),
|
|
43
|
+
existsSync: jest.fn().mockReturnValue(false),
|
|
44
|
+
readFile: jest.fn().mockResolvedValue(''),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function makeInput(overrides = {}) {
|
|
48
|
+
return {
|
|
49
|
+
name: 'my-project',
|
|
50
|
+
runtime: 'nodejs',
|
|
51
|
+
monorepo: 'none',
|
|
52
|
+
architecture: 'clean',
|
|
53
|
+
database: 'postgresql',
|
|
54
|
+
apiProtocol: 'rest',
|
|
55
|
+
ciCd: 'github',
|
|
56
|
+
observability: 'minimal',
|
|
57
|
+
features: [],
|
|
58
|
+
agents: [],
|
|
59
|
+
...overrides,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
describe('InitializeProjectUseCase', () => {
|
|
63
|
+
describe('nodejs runtime', () => {
|
|
64
|
+
it('returns success and creates evolith.yaml + README', async () => {
|
|
65
|
+
const fs = makeFs();
|
|
66
|
+
const uc = new index_1.InitializeProjectUseCase(fs);
|
|
67
|
+
const result = await uc.execute(makeInput({ runtime: 'nodejs' }), '/tmp');
|
|
68
|
+
expect(result.success).toBe(true);
|
|
69
|
+
expect(result.errors).toHaveLength(0);
|
|
70
|
+
expect(result.artifacts).toContain('my-project/evolith.yaml');
|
|
71
|
+
expect(result.artifacts).toContain('my-project/README.md');
|
|
72
|
+
});
|
|
73
|
+
it('writes package.json for nodejs', async () => {
|
|
74
|
+
const fs = makeFs();
|
|
75
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'nodejs' }), '/tmp');
|
|
76
|
+
const writeJsonCalls = fs.writeJson.mock.calls.map((c) => c[0]);
|
|
77
|
+
expect(writeJsonCalls.some((p) => p.endsWith('package.json'))).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
it('writes tsconfig.json for typescript', async () => {
|
|
80
|
+
const fs = makeFs();
|
|
81
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'typescript' }), '/tmp');
|
|
82
|
+
const writeJsonCalls = fs.writeJson.mock.calls.map((c) => c[0]);
|
|
83
|
+
expect(writeJsonCalls.some((p) => p.endsWith('tsconfig.json'))).toBe(true);
|
|
84
|
+
});
|
|
85
|
+
it('does NOT write tsconfig.json for plain nodejs', async () => {
|
|
86
|
+
const fs = makeFs();
|
|
87
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'nodejs' }), '/tmp');
|
|
88
|
+
const writeJsonCalls = fs.writeJson.mock.calls.map((c) => c[0]);
|
|
89
|
+
expect(writeJsonCalls.some((p) => p.endsWith('tsconfig.json'))).toBe(false);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe('dotnet runtime', () => {
|
|
93
|
+
it('returns success', async () => {
|
|
94
|
+
const fs = makeFs();
|
|
95
|
+
const result = await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'dotnet' }), '/tmp');
|
|
96
|
+
expect(result.success).toBe(true);
|
|
97
|
+
});
|
|
98
|
+
it('writes a .csproj file', async () => {
|
|
99
|
+
const fs = makeFs();
|
|
100
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'dotnet' }), '/tmp');
|
|
101
|
+
const writeFileCalls = fs.writeFile.mock.calls.map((c) => c[0]);
|
|
102
|
+
expect(writeFileCalls.some((p) => p.endsWith('.csproj'))).toBe(true);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('python runtime', () => {
|
|
106
|
+
it('returns success', async () => {
|
|
107
|
+
const fs = makeFs();
|
|
108
|
+
const result = await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'python' }), '/tmp');
|
|
109
|
+
expect(result.success).toBe(true);
|
|
110
|
+
});
|
|
111
|
+
it('writes requirements.txt', async () => {
|
|
112
|
+
const fs = makeFs();
|
|
113
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'python' }), '/tmp');
|
|
114
|
+
const writeFileCalls = fs.writeFile.mock.calls.map((c) => c[0]);
|
|
115
|
+
expect(writeFileCalls.some((p) => p.endsWith('requirements.txt'))).toBe(true);
|
|
116
|
+
});
|
|
117
|
+
it('writes pyproject.toml', async () => {
|
|
118
|
+
const fs = makeFs();
|
|
119
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'python' }), '/tmp');
|
|
120
|
+
const writeJsonCalls = fs.writeJson.mock.calls.map((c) => c[0]);
|
|
121
|
+
expect(writeJsonCalls.some((p) => p.endsWith('pyproject.toml'))).toBe(true);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe('generic fallback for unknown runtimes', () => {
|
|
125
|
+
it('returns success instead of throwing', async () => {
|
|
126
|
+
const fs = makeFs();
|
|
127
|
+
const result = await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'java' }), '/tmp');
|
|
128
|
+
expect(result.success).toBe(true);
|
|
129
|
+
expect(result.errors).toHaveLength(0);
|
|
130
|
+
});
|
|
131
|
+
it('creates src/ directory', async () => {
|
|
132
|
+
const fs = makeFs();
|
|
133
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'java' }), '/tmp');
|
|
134
|
+
const ensureDirCalls = fs.ensureDir.mock.calls.map((c) => c[0]);
|
|
135
|
+
expect(ensureDirCalls.some((p) => p.endsWith('/src'))).toBe(true);
|
|
136
|
+
});
|
|
137
|
+
it('writes SETUP.md with runtime name and next steps', async () => {
|
|
138
|
+
const fs = makeFs();
|
|
139
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'java' }), '/tmp');
|
|
140
|
+
const writeFileCalls = fs.writeFile.mock.calls;
|
|
141
|
+
const setupCall = writeFileCalls.find(([p]) => p.endsWith('SETUP.md'));
|
|
142
|
+
expect(setupCall).toBeDefined();
|
|
143
|
+
expect(setupCall[1]).toContain('java');
|
|
144
|
+
expect(setupCall[1]).toContain('evolith validate');
|
|
145
|
+
});
|
|
146
|
+
it('includes runtime name in SETUP.md capitalised scaffold method hint', async () => {
|
|
147
|
+
const fs = makeFs();
|
|
148
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'java' }), '/tmp');
|
|
149
|
+
const writeFileCalls = fs.writeFile.mock.calls;
|
|
150
|
+
const setupCall = writeFileCalls.find(([p]) => p.endsWith('SETUP.md'));
|
|
151
|
+
expect(setupCall[1]).toContain('scaffoldJava');
|
|
152
|
+
});
|
|
153
|
+
it('adds platform warning to result.warnings for unknown runtime', async () => {
|
|
154
|
+
const fs = makeFs();
|
|
155
|
+
const result = await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'java' }), '/tmp');
|
|
156
|
+
expect(result.warnings.some(w => w.includes('java'))).toBe(true);
|
|
157
|
+
});
|
|
158
|
+
it('installHint mentions the runtime (java is in catalog but has no provider)', async () => {
|
|
159
|
+
const fs = makeFs();
|
|
160
|
+
const result = await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'java' }), '/tmp');
|
|
161
|
+
expect(result.warnings.some(w => w.includes('java'))).toBe(true);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe('optional features', () => {
|
|
165
|
+
it('creates ADR matrix when feature adr is selected', async () => {
|
|
166
|
+
const fs = makeFs();
|
|
167
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ features: ['adr'] }), '/tmp');
|
|
168
|
+
const writeJsonCalls = fs.writeJson.mock.calls.map((c) => c[0]);
|
|
169
|
+
expect(writeJsonCalls.some((p) => p.includes('adr-matrix'))).toBe(true);
|
|
170
|
+
});
|
|
171
|
+
it('creates husky pre-commit hook when hooks feature selected', async () => {
|
|
172
|
+
const fs = makeFs();
|
|
173
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ features: ['hooks'] }), '/tmp');
|
|
174
|
+
const writeFileCalls = fs.writeFile.mock.calls.map((c) => c[0]);
|
|
175
|
+
expect(writeFileCalls.some((p) => p.includes('pre-commit'))).toBe(true);
|
|
176
|
+
});
|
|
177
|
+
it('creates ACL ruleset when acl feature selected', async () => {
|
|
178
|
+
const fs = makeFs();
|
|
179
|
+
await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ features: ['acl'] }), '/tmp');
|
|
180
|
+
const writeJsonCalls = fs.writeJson.mock.calls.map((c) => c[0]);
|
|
181
|
+
expect(writeJsonCalls.some((p) => p.includes('anti-corruption-layer'))).toBe(true);
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
describe('catalog validation', () => {
|
|
185
|
+
it('returns failure when runtime not in catalog', async () => {
|
|
186
|
+
const { catalogLoader } = require('../../infrastructure/catalog/catalog-loader');
|
|
187
|
+
catalogLoader.loadRuntimeCatalog.mockReturnValueOnce([]);
|
|
188
|
+
const fs = makeFs();
|
|
189
|
+
const result = await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ runtime: 'nodejs' }), '/tmp');
|
|
190
|
+
expect(result.success).toBe(false);
|
|
191
|
+
expect(result.errors[0]).toContain('nodejs not found');
|
|
192
|
+
});
|
|
193
|
+
it('returns failure when monorepo not in catalog', async () => {
|
|
194
|
+
const { catalogLoader } = require('../../infrastructure/catalog/catalog-loader');
|
|
195
|
+
catalogLoader.getMonorepoOptions.mockReturnValueOnce([]);
|
|
196
|
+
const fs = makeFs();
|
|
197
|
+
const result = await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ monorepo: 'none' }), '/tmp');
|
|
198
|
+
expect(result.success).toBe(false);
|
|
199
|
+
expect(result.errors[0]).toContain('none not found');
|
|
200
|
+
});
|
|
201
|
+
it('returns failure when architecture not in catalog', async () => {
|
|
202
|
+
const { catalogLoader } = require('../../infrastructure/catalog/catalog-loader');
|
|
203
|
+
catalogLoader.getArchitecturePatterns.mockReturnValueOnce([]);
|
|
204
|
+
const fs = makeFs();
|
|
205
|
+
const result = await new index_1.InitializeProjectUseCase(fs).execute(makeInput({ architecture: 'clean' }), '/tmp');
|
|
206
|
+
expect(result.success).toBe(false);
|
|
207
|
+
expect(result.errors[0]).toContain('clean not found');
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
//# sourceMappingURL=initialize-project.spec.js.map
|