@evolith/core-domain 1.0.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/dist/application/agents/agent-ruleset-builder.d.ts +30 -0
- package/dist/application/agents/agent-ruleset-builder.js +75 -0
- package/dist/application/agents/agent-ruleset-builder.js.map +1 -0
- package/dist/application/agents/agent-ruleset-builder.spec.d.ts +1 -0
- package/dist/application/agents/agent-ruleset-builder.spec.js +135 -0
- package/dist/application/agents/agent-ruleset-builder.spec.js.map +1 -0
- package/dist/application/architecture/workspace-manager.strategy.d.ts +8 -0
- package/dist/application/architecture/workspace-manager.strategy.js +3 -0
- package/dist/application/architecture/workspace-manager.strategy.js.map +1 -0
- package/dist/application/generators/hexagonal-scaffolder.d.ts +6 -0
- package/dist/application/generators/hexagonal-scaffolder.js +259 -0
- package/dist/application/generators/hexagonal-scaffolder.js.map +1 -0
- package/dist/application/generators/hexagonal-scaffolder.spec.d.ts +1 -0
- package/dist/application/generators/hexagonal-scaffolder.spec.js +166 -0
- package/dist/application/generators/hexagonal-scaffolder.spec.js.map +1 -0
- package/dist/application/generators/mermaid-class-parser.d.ts +38 -0
- package/dist/application/generators/mermaid-class-parser.js +183 -0
- package/dist/application/generators/mermaid-class-parser.js.map +1 -0
- package/dist/application/generators/mermaid-class-parser.spec.d.ts +1 -0
- package/dist/application/generators/mermaid-class-parser.spec.js +148 -0
- package/dist/application/generators/mermaid-class-parser.spec.js.map +1 -0
- package/dist/application/index.d.ts +9 -0
- package/dist/application/index.js +26 -0
- package/dist/application/index.js.map +1 -0
- package/dist/application/ports/blueprint-repository.port.d.ts +6 -0
- package/dist/application/ports/blueprint-repository.port.js +3 -0
- package/dist/application/ports/blueprint-repository.port.js.map +1 -0
- package/dist/application/ports/event-bus.port.d.ts +5 -0
- package/dist/application/ports/event-bus.port.js +3 -0
- package/dist/application/ports/event-bus.port.js.map +1 -0
- package/dist/application/ports/index.d.ts +5 -0
- package/dist/application/ports/index.js +22 -0
- package/dist/application/ports/index.js.map +1 -0
- package/dist/application/ports/platform-detection.port.d.ts +9 -0
- package/dist/application/ports/platform-detection.port.js +3 -0
- package/dist/application/ports/platform-detection.port.js.map +1 -0
- package/dist/application/ports/webhook-notifier.port.d.ts +3 -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/ports/webhook-subscription.port.d.ts +13 -0
- package/dist/application/ports/webhook-subscription.port.js +3 -0
- package/dist/application/ports/webhook-subscription.port.js.map +1 -0
- package/dist/application/services/audit.service.d.ts +12 -0
- package/dist/application/services/audit.service.js +36 -0
- package/dist/application/services/audit.service.js.map +1 -0
- package/dist/application/services/catalog.service.d.ts +10 -0
- package/dist/application/services/catalog.service.js +84 -0
- package/dist/application/services/catalog.service.js.map +1 -0
- package/dist/application/services/evolith-config.service.d.ts +25 -0
- package/dist/application/services/evolith-config.service.js +120 -0
- package/dist/application/services/evolith-config.service.js.map +1 -0
- package/dist/application/services/gate-registry.service.d.ts +34 -0
- package/dist/application/services/gate-registry.service.js +104 -0
- package/dist/application/services/gate-registry.service.js.map +1 -0
- package/dist/application/services/index.d.ts +41 -0
- package/dist/application/services/index.js +25 -0
- package/dist/application/services/index.js.map +1 -0
- package/dist/application/services/initialize-project.spec.d.ts +5 -0
- package/dist/application/services/initialize-project.spec.js +228 -0
- package/dist/application/services/initialize-project.spec.js.map +1 -0
- package/dist/application/services/phase-transition.use-case.spec.d.ts +1 -0
- package/dist/application/services/phase-transition.use-case.spec.js +303 -0
- package/dist/application/services/phase-transition.use-case.spec.js.map +1 -0
- package/dist/application/services/project-scaffolder.service.d.ts +19 -0
- package/dist/application/services/project-scaffolder.service.js +194 -0
- package/dist/application/services/project-scaffolder.service.js.map +1 -0
- package/dist/application/services/satellite-evaluation-pipeline.service.d.ts +18 -0
- package/dist/application/services/satellite-evaluation-pipeline.service.js +206 -0
- package/dist/application/services/satellite-evaluation-pipeline.service.js.map +1 -0
- package/dist/application/services/sdlc-data-loader.service.d.ts +39 -0
- package/dist/application/services/sdlc-data-loader.service.js +112 -0
- package/dist/application/services/sdlc-data-loader.service.js.map +1 -0
- package/dist/application/services/services/command-executor.service.d.ts +3 -0
- package/dist/application/services/services/command-executor.service.js +13 -0
- package/dist/application/services/services/command-executor.service.js.map +1 -0
- package/dist/application/services/services/command-history.service.d.ts +39 -0
- package/dist/application/services/services/command-history.service.js +150 -0
- package/dist/application/services/services/command-history.service.js.map +1 -0
- package/dist/application/services/services/command-history.service.spec.d.ts +1 -0
- package/dist/application/services/services/command-history.service.spec.js +266 -0
- package/dist/application/services/services/command-history.service.spec.js.map +1 -0
- package/dist/application/services/services/command-providers.d.ts +1 -0
- package/dist/application/services/services/command-providers.js +17 -0
- package/dist/application/services/services/command-providers.js.map +1 -0
- package/dist/application/services/topology-catalog.service.d.ts +58 -0
- package/dist/application/services/topology-catalog.service.js +85 -0
- package/dist/application/services/topology-catalog.service.js.map +1 -0
- package/dist/application/sync/sync.service.d.ts +9 -0
- package/dist/application/sync/sync.service.js +88 -0
- package/dist/application/sync/sync.service.js.map +1 -0
- package/dist/application/sync/sync.service.spec.d.ts +1 -0
- package/dist/application/sync/sync.service.spec.js +76 -0
- package/dist/application/sync/sync.service.spec.js.map +1 -0
- package/dist/application/upgrade/satellite-upgrade-apply.d.ts +5 -0
- package/dist/application/upgrade/satellite-upgrade-apply.js +102 -0
- package/dist/application/upgrade/satellite-upgrade-apply.js.map +1 -0
- package/dist/application/upgrade/satellite-upgrade-diff.d.ts +6 -0
- package/dist/application/upgrade/satellite-upgrade-diff.js +130 -0
- package/dist/application/upgrade/satellite-upgrade-diff.js.map +1 -0
- package/dist/application/upgrade/satellite-upgrade-fs.d.ts +4 -0
- package/dist/application/upgrade/satellite-upgrade-fs.js +97 -0
- package/dist/application/upgrade/satellite-upgrade-fs.js.map +1 -0
- package/dist/application/upgrade/satellite-upgrade.service.d.ts +14 -0
- package/dist/application/upgrade/satellite-upgrade.service.js +78 -0
- package/dist/application/upgrade/satellite-upgrade.service.js.map +1 -0
- package/dist/application/upgrade/satellite-upgrade.service.spec.d.ts +1 -0
- package/dist/application/upgrade/satellite-upgrade.service.spec.js +231 -0
- package/dist/application/upgrade/satellite-upgrade.service.spec.js.map +1 -0
- package/dist/application/upgrade/satellite-upgrade.types.d.ts +31 -0
- package/dist/application/upgrade/satellite-upgrade.types.js +3 -0
- package/dist/application/upgrade/satellite-upgrade.types.js.map +1 -0
- package/dist/application/use-cases/evaluate-gate.use-case.d.ts +25 -0
- package/dist/application/use-cases/evaluate-gate.use-case.js +124 -0
- package/dist/application/use-cases/evaluate-gate.use-case.js.map +1 -0
- package/dist/application/use-cases/evaluate-gate.use-case.spec.d.ts +1 -0
- package/dist/application/use-cases/evaluate-gate.use-case.spec.js +112 -0
- package/dist/application/use-cases/evaluate-gate.use-case.spec.js.map +1 -0
- package/dist/application/use-cases/index.d.ts +7 -0
- package/dist/application/use-cases/index.js +24 -0
- package/dist/application/use-cases/index.js.map +1 -0
- package/dist/application/use-cases/initialize-project.use-case.d.ts +10 -0
- package/dist/application/use-cases/initialize-project.use-case.js +71 -0
- package/dist/application/use-cases/initialize-project.use-case.js.map +1 -0
- package/dist/application/use-cases/phase-transition.use-case.d.ts +22 -0
- package/dist/application/use-cases/phase-transition.use-case.js +100 -0
- package/dist/application/use-cases/phase-transition.use-case.js.map +1 -0
- package/dist/application/use-cases/propose-phase-advance.use-case.d.ts +15 -0
- package/dist/application/use-cases/propose-phase-advance.use-case.js +42 -0
- package/dist/application/use-cases/propose-phase-advance.use-case.js.map +1 -0
- package/dist/application/use-cases/propose-phase-advance.use-case.spec.d.ts +1 -0
- package/dist/application/use-cases/propose-phase-advance.use-case.spec.js +64 -0
- package/dist/application/use-cases/propose-phase-advance.use-case.spec.js.map +1 -0
- package/dist/application/use-cases/validate-blueprint.use-case.d.ts +32 -0
- package/dist/application/use-cases/validate-blueprint.use-case.js +179 -0
- package/dist/application/use-cases/validate-blueprint.use-case.js.map +1 -0
- package/dist/application/use-cases/validate-satellite.use-case.d.ts +25 -0
- package/dist/application/use-cases/validate-satellite.use-case.js +192 -0
- package/dist/application/use-cases/validate-satellite.use-case.js.map +1 -0
- package/dist/application/use-cases/validate-satellite.use-case.spec.d.ts +1 -0
- package/dist/application/use-cases/validate-satellite.use-case.spec.js +102 -0
- package/dist/application/use-cases/validate-satellite.use-case.spec.js.map +1 -0
- package/dist/application/use-cases/validate-workflow.use-case.d.ts +11 -0
- package/dist/application/use-cases/validate-workflow.use-case.js +121 -0
- package/dist/application/use-cases/validate-workflow.use-case.js.map +1 -0
- package/dist/application/validators/architecture/detectors.d.ts +7 -0
- package/dist/application/validators/architecture/detectors.js +128 -0
- package/dist/application/validators/architecture/detectors.js.map +1 -0
- package/dist/application/validators/architecture/import-graph.d.ts +5 -0
- package/dist/application/validators/architecture/import-graph.js +132 -0
- package/dist/application/validators/architecture/import-graph.js.map +1 -0
- package/dist/application/validators/architecture/types.d.ts +44 -0
- package/dist/application/validators/architecture/types.js +39 -0
- package/dist/application/validators/architecture/types.js.map +1 -0
- package/dist/application/validators/architecture-drift.service.d.ts +74 -0
- package/dist/application/validators/architecture-drift.service.js +268 -0
- package/dist/application/validators/architecture-drift.service.js.map +1 -0
- package/dist/application/validators/architecture-drift.service.spec.d.ts +1 -0
- package/dist/application/validators/architecture-drift.service.spec.js +144 -0
- package/dist/application/validators/architecture-drift.service.spec.js.map +1 -0
- package/dist/application/validators/architecture-validator.d.ts +14 -0
- package/dist/application/validators/architecture-validator.js +125 -0
- package/dist/application/validators/architecture-validator.js.map +1 -0
- package/dist/application/validators/blocking-criteria-validator.d.ts +29 -0
- package/dist/application/validators/blocking-criteria-validator.js +255 -0
- package/dist/application/validators/blocking-criteria-validator.js.map +1 -0
- package/dist/application/validators/build-vs-compose.schema.spec.d.ts +1 -0
- package/dist/application/validators/build-vs-compose.schema.spec.js +143 -0
- package/dist/application/validators/build-vs-compose.schema.spec.js.map +1 -0
- package/dist/application/validators/deep-architecture-analyzer.d.ts +9 -0
- package/dist/application/validators/deep-architecture-analyzer.js +73 -0
- package/dist/application/validators/deep-architecture-analyzer.js.map +1 -0
- package/dist/application/validators/deep-architecture-analyzer.spec.d.ts +1 -0
- package/dist/application/validators/deep-architecture-analyzer.spec.js +186 -0
- package/dist/application/validators/deep-architecture-analyzer.spec.js.map +1 -0
- package/dist/application/validators/evaluators/architecture-equivalence.spec.d.ts +1 -0
- package/dist/application/validators/evaluators/architecture-equivalence.spec.js +58 -0
- package/dist/application/validators/evaluators/architecture-equivalence.spec.js.map +1 -0
- package/dist/application/validators/evaluators/evaluator.interface.d.ts +14 -0
- package/dist/application/validators/evaluators/evaluator.interface.js +3 -0
- package/dist/application/validators/evaluators/evaluator.interface.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/acl-rule.handler.d.ts +16 -0
- package/dist/application/validators/evaluators/handlers/acl-rule.handler.js +139 -0
- package/dist/application/validators/evaluators/handlers/acl-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/architecture/agent-rules.d.ts +6 -0
- package/dist/application/validators/evaluators/handlers/architecture/agent-rules.js +131 -0
- package/dist/application/validators/evaluators/handlers/architecture/agent-rules.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/architecture/ast-rules.d.ts +6 -0
- package/dist/application/validators/evaluators/handlers/architecture/ast-rules.js +151 -0
- package/dist/application/validators/evaluators/handlers/architecture/ast-rules.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/architecture/config-rules.d.ts +6 -0
- package/dist/application/validators/evaluators/handlers/architecture/config-rules.js +60 -0
- package/dist/application/validators/evaluators/handlers/architecture/config-rules.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/architecture/shared.d.ts +14 -0
- package/dist/application/validators/evaluators/handlers/architecture/shared.js +91 -0
- package/dist/application/validators/evaluators/handlers/architecture/shared.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/architecture/structural-rules.d.ts +6 -0
- package/dist/application/validators/evaluators/handlers/architecture/structural-rules.js +208 -0
- package/dist/application/validators/evaluators/handlers/architecture/structural-rules.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/architecture-rule.handler.d.ts +11 -0
- package/dist/application/validators/evaluators/handlers/architecture-rule.handler.js +39 -0
- package/dist/application/validators/evaluators/handlers/architecture-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/architecture-rule.handler.spec.d.ts +1 -0
- package/dist/application/validators/evaluators/handlers/architecture-rule.handler.spec.js +212 -0
- package/dist/application/validators/evaluators/handlers/architecture-rule.handler.spec.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/cli-release-rule.handler.d.ts +17 -0
- package/dist/application/validators/evaluators/handlers/cli-release-rule.handler.js +133 -0
- package/dist/application/validators/evaluators/handlers/cli-release-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/cli-release-rule.handler.spec.d.ts +1 -0
- package/dist/application/validators/evaluators/handlers/cli-release-rule.handler.spec.js +89 -0
- package/dist/application/validators/evaluators/handlers/cli-release-rule.handler.spec.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/cross-cutting-rule.handler.d.ts +25 -0
- package/dist/application/validators/evaluators/handlers/cross-cutting-rule.handler.js +244 -0
- package/dist/application/validators/evaluators/handlers/cross-cutting-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/dependency-rule.handler.d.ts +17 -0
- package/dist/application/validators/evaluators/handlers/dependency-rule.handler.js +163 -0
- package/dist/application/validators/evaluators/handlers/dependency-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/dependency-rule.handler.spec.d.ts +1 -0
- package/dist/application/validators/evaluators/handlers/dependency-rule.handler.spec.js +115 -0
- package/dist/application/validators/evaluators/handlers/dependency-rule.handler.spec.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/evidence-rule.handler.d.ts +10 -0
- package/dist/application/validators/evaluators/handlers/evidence-rule.handler.js +102 -0
- package/dist/application/validators/evaluators/handlers/evidence-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/evidence-rule.handler.spec.d.ts +1 -0
- package/dist/application/validators/evaluators/handlers/evidence-rule.handler.spec.js +94 -0
- package/dist/application/validators/evaluators/handlers/evidence-rule.handler.spec.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/executive-scorecard-rule.handler.d.ts +15 -0
- package/dist/application/validators/evaluators/handlers/executive-scorecard-rule.handler.js +126 -0
- package/dist/application/validators/evaluators/handlers/executive-scorecard-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/governance-rule.handler.d.ts +11 -0
- package/dist/application/validators/evaluators/handlers/governance-rule.handler.js +120 -0
- package/dist/application/validators/evaluators/handlers/governance-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/governance-rule.handler.spec.d.ts +1 -0
- package/dist/application/validators/evaluators/handlers/governance-rule.handler.spec.js +107 -0
- package/dist/application/validators/evaluators/handlers/governance-rule.handler.spec.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/mcp-rule.handler.d.ts +12 -0
- package/dist/application/validators/evaluators/handlers/mcp-rule.handler.js +91 -0
- package/dist/application/validators/evaluators/handlers/mcp-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/mcp-rule.handler.spec.d.ts +1 -0
- package/dist/application/validators/evaluators/handlers/mcp-rule.handler.spec.js +92 -0
- package/dist/application/validators/evaluators/handlers/mcp-rule.handler.spec.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/rule-handler.interface.d.ts +6 -0
- package/dist/application/validators/evaluators/handlers/rule-handler.interface.js +3 -0
- package/dist/application/validators/evaluators/handlers/rule-handler.interface.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/satellite-contract-rule.handler.d.ts +14 -0
- package/dist/application/validators/evaluators/handlers/satellite-contract-rule.handler.js +105 -0
- package/dist/application/validators/evaluators/handlers/satellite-contract-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/sdlc-rule.handler.d.ts +12 -0
- package/dist/application/validators/evaluators/handlers/sdlc-rule.handler.js +81 -0
- package/dist/application/validators/evaluators/handlers/sdlc-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/taxonomy-rule.handler.d.ts +13 -0
- package/dist/application/validators/evaluators/handlers/taxonomy-rule.handler.js +136 -0
- package/dist/application/validators/evaluators/handlers/taxonomy-rule.handler.js.map +1 -0
- package/dist/application/validators/evaluators/handlers/taxonomy-rule.handler.spec.d.ts +1 -0
- package/dist/application/validators/evaluators/handlers/taxonomy-rule.handler.spec.js +96 -0
- package/dist/application/validators/evaluators/handlers/taxonomy-rule.handler.spec.js.map +1 -0
- package/dist/application/validators/evaluators/native-evaluator.d.ts +12 -0
- package/dist/application/validators/evaluators/native-evaluator.js +63 -0
- package/dist/application/validators/evaluators/native-evaluator.js.map +1 -0
- package/dist/application/validators/evaluators/opa-evaluator.d.ts +14 -0
- package/dist/application/validators/evaluators/opa-evaluator.js +151 -0
- package/dist/application/validators/evaluators/opa-evaluator.js.map +1 -0
- package/dist/application/validators/evaluators/opa-evaluator.spec.d.ts +1 -0
- package/dist/application/validators/evaluators/opa-evaluator.spec.js +96 -0
- package/dist/application/validators/evaluators/opa-evaluator.spec.js.map +1 -0
- package/dist/application/validators/evaluators/opa-input-builder.d.ts +27 -0
- package/dist/application/validators/evaluators/opa-input-builder.js +357 -0
- package/dist/application/validators/evaluators/opa-input-builder.js.map +1 -0
- package/dist/application/validators/evaluators/opa-input-builder.spec.d.ts +1 -0
- package/dist/application/validators/evaluators/opa-input-builder.spec.js +138 -0
- package/dist/application/validators/evaluators/opa-input-builder.spec.js.map +1 -0
- package/dist/application/validators/evidence-validator.d.ts +13 -0
- package/dist/application/validators/evidence-validator.js +195 -0
- package/dist/application/validators/evidence-validator.js.map +1 -0
- package/dist/application/validators/index.d.ts +4 -0
- package/dist/application/validators/index.js +21 -0
- package/dist/application/validators/index.js.map +1 -0
- package/dist/application/validators/modes/adhoc-validation.mode.d.ts +8 -0
- package/dist/application/validators/modes/adhoc-validation.mode.js +156 -0
- package/dist/application/validators/modes/adhoc-validation.mode.js.map +1 -0
- package/dist/application/validators/modes/adr-validation.mode.d.ts +7 -0
- package/dist/application/validators/modes/adr-validation.mode.js +183 -0
- package/dist/application/validators/modes/adr-validation.mode.js.map +1 -0
- package/dist/application/validators/modes/architecture-validation.mode.d.ts +7 -0
- package/dist/application/validators/modes/architecture-validation.mode.js +154 -0
- package/dist/application/validators/modes/architecture-validation.mode.js.map +1 -0
- package/dist/application/validators/modes/composable-validation-engine.d.ts +20 -0
- package/dist/application/validators/modes/composable-validation-engine.js +110 -0
- package/dist/application/validators/modes/composable-validation-engine.js.map +1 -0
- package/dist/application/validators/modes/index.d.ts +7 -0
- package/dist/application/validators/modes/index.js +16 -0
- package/dist/application/validators/modes/index.js.map +1 -0
- package/dist/application/validators/modes/ruleset-validation.mode.d.ts +6 -0
- package/dist/application/validators/modes/ruleset-validation.mode.js +143 -0
- package/dist/application/validators/modes/ruleset-validation.mode.js.map +1 -0
- package/dist/application/validators/modes/sdlc-validation.mode.d.ts +7 -0
- package/dist/application/validators/modes/sdlc-validation.mode.js +151 -0
- package/dist/application/validators/modes/sdlc-validation.mode.js.map +1 -0
- package/dist/application/validators/modes/validation-mode.interface.d.ts +34 -0
- package/dist/application/validators/modes/validation-mode.interface.js +3 -0
- package/dist/application/validators/modes/validation-mode.interface.js.map +1 -0
- package/dist/application/validators/phase-gate-validator.service.d.ts +77 -0
- package/dist/application/validators/phase-gate-validator.service.js +183 -0
- package/dist/application/validators/phase-gate-validator.service.js.map +1 -0
- package/dist/application/validators/phase-gate-validator.service.spec.d.ts +1 -0
- package/dist/application/validators/phase-gate-validator.service.spec.js +383 -0
- package/dist/application/validators/phase-gate-validator.service.spec.js.map +1 -0
- package/dist/application/validators/rule-evaluation-engine.d.ts +29 -0
- package/dist/application/validators/rule-evaluation-engine.js +41 -0
- package/dist/application/validators/rule-evaluation-engine.js.map +1 -0
- package/dist/application/validators/ruleset-id-loader.d.ts +3 -0
- package/dist/application/validators/ruleset-id-loader.js +109 -0
- package/dist/application/validators/ruleset-id-loader.js.map +1 -0
- package/dist/application/validators/ruleset-loader.d.ts +13 -0
- package/dist/application/validators/ruleset-loader.js +83 -0
- package/dist/application/validators/ruleset-loader.js.map +1 -0
- package/dist/application/validators/ruleset-validator-architecture.spec.d.ts +1 -0
- package/dist/application/validators/ruleset-validator-architecture.spec.js +174 -0
- package/dist/application/validators/ruleset-validator-architecture.spec.js.map +1 -0
- package/dist/application/validators/ruleset-validator.service.d.ts +18 -0
- package/dist/application/validators/ruleset-validator.service.js +154 -0
- package/dist/application/validators/ruleset-validator.service.js.map +1 -0
- package/dist/application/validators/ruleset-validator.types.d.ts +57 -0
- package/dist/application/validators/ruleset-validator.types.js +5 -0
- package/dist/application/validators/ruleset-validator.types.js.map +1 -0
- package/dist/common/request-context.d.ts +10 -0
- package/dist/common/request-context.js +14 -0
- package/dist/common/request-context.js.map +1 -0
- package/dist/domain/audit/audit-entry.d.ts +19 -0
- package/dist/domain/audit/audit-entry.js +3 -0
- package/dist/domain/audit/audit-entry.js.map +1 -0
- package/dist/domain/audit/audit-repository.port.d.ts +6 -0
- package/dist/domain/audit/audit-repository.port.js +3 -0
- package/dist/domain/audit/audit-repository.port.js.map +1 -0
- package/dist/domain/audit/index.d.ts +2 -0
- package/dist/domain/audit/index.js +19 -0
- package/dist/domain/audit/index.js.map +1 -0
- package/dist/domain/entities/blueprint.d.ts +41 -0
- package/dist/domain/entities/blueprint.js +82 -0
- package/dist/domain/entities/blueprint.js.map +1 -0
- package/dist/domain/entities/index.d.ts +73 -0
- package/dist/domain/entities/index.js +134 -0
- package/dist/domain/entities/index.js.map +1 -0
- package/dist/domain/errors/gate-authorization.error.d.ts +9 -0
- package/dist/domain/errors/gate-authorization.error.js +17 -0
- package/dist/domain/errors/gate-authorization.error.js.map +1 -0
- package/dist/domain/errors/index.d.ts +29 -0
- package/dist/domain/errors/index.js +73 -0
- package/dist/domain/errors/index.js.map +1 -0
- package/dist/domain/events/domain-event.d.ts +9 -0
- package/dist/domain/events/domain-event.js +14 -0
- package/dist/domain/events/domain-event.js.map +1 -0
- package/dist/domain/events/domain-events.d.ts +99 -0
- package/dist/domain/events/domain-events.js +49 -0
- package/dist/domain/events/domain-events.js.map +1 -0
- package/dist/domain/events/event-catalog.d.ts +7 -0
- package/dist/domain/events/event-catalog.js +82 -0
- package/dist/domain/events/event-catalog.js.map +1 -0
- package/dist/domain/events/index.d.ts +4 -0
- package/dist/domain/events/index.js +21 -0
- package/dist/domain/events/index.js.map +1 -0
- package/dist/domain/gate-evidence.d.ts +70 -0
- package/dist/domain/gate-evidence.js +46 -0
- package/dist/domain/gate-evidence.js.map +1 -0
- package/dist/domain/gate-evidence.spec.d.ts +1 -0
- package/dist/domain/gate-evidence.spec.js +173 -0
- package/dist/domain/gate-evidence.spec.js.map +1 -0
- package/dist/domain/index.d.ts +12 -0
- package/dist/domain/index.js +29 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/interfaces.d.ts +301 -0
- package/dist/domain/interfaces.js +5 -0
- package/dist/domain/interfaces.js.map +1 -0
- package/dist/domain/lifecycle/artifact-state-machine.d.ts +23 -0
- package/dist/domain/lifecycle/artifact-state-machine.js +50 -0
- package/dist/domain/lifecycle/artifact-state-machine.js.map +1 -0
- package/dist/domain/lifecycle/index.d.ts +2 -0
- package/dist/domain/lifecycle/index.js +19 -0
- package/dist/domain/lifecycle/index.js.map +1 -0
- package/dist/domain/lifecycle/phase-state-machine.d.ts +24 -0
- package/dist/domain/lifecycle/phase-state-machine.js +50 -0
- package/dist/domain/lifecycle/phase-state-machine.js.map +1 -0
- package/dist/domain/metrics/dora-calculator.d.ts +18 -0
- package/dist/domain/metrics/dora-calculator.js +146 -0
- package/dist/domain/metrics/dora-calculator.js.map +1 -0
- package/dist/domain/metrics/dora-calculator.spec.d.ts +1 -0
- package/dist/domain/metrics/dora-calculator.spec.js +172 -0
- package/dist/domain/metrics/dora-calculator.spec.js.map +1 -0
- package/dist/domain/metrics/git-log-reader.d.ts +14 -0
- package/dist/domain/metrics/git-log-reader.js +39 -0
- package/dist/domain/metrics/git-log-reader.js.map +1 -0
- package/dist/domain/metrics/git-log-reader.spec.d.ts +8 -0
- package/dist/domain/metrics/git-log-reader.spec.js +121 -0
- package/dist/domain/metrics/git-log-reader.spec.js.map +1 -0
- package/dist/domain/metrics/index.d.ts +2 -0
- package/dist/domain/metrics/index.js +19 -0
- package/dist/domain/metrics/index.js.map +1 -0
- package/dist/domain/models/normalized-rule.d.ts +10 -0
- package/dist/domain/models/normalized-rule.js +3 -0
- package/dist/domain/models/normalized-rule.js.map +1 -0
- package/dist/domain/ports/index.d.ts +2 -0
- package/dist/domain/ports/index.js +19 -0
- package/dist/domain/ports/index.js.map +1 -0
- package/dist/domain/ports/ruleset-repository.port.d.ts +4 -0
- package/dist/domain/ports/ruleset-repository.port.js +3 -0
- package/dist/domain/ports/ruleset-repository.port.js.map +1 -0
- package/dist/domain/ports/workflow-definition.port.d.ts +24 -0
- package/dist/domain/ports/workflow-definition.port.js +3 -0
- package/dist/domain/ports/workflow-definition.port.js.map +1 -0
- package/dist/domain/rbac/gate-role-enforcer.d.ts +16 -0
- package/dist/domain/rbac/gate-role-enforcer.js +46 -0
- package/dist/domain/rbac/gate-role-enforcer.js.map +1 -0
- package/dist/domain/rbac/index.d.ts +1 -0
- package/dist/domain/rbac/index.js +12 -0
- package/dist/domain/rbac/index.js.map +1 -0
- package/dist/domain/rbac/role.d.ts +19 -0
- package/dist/domain/rbac/role.js +79 -0
- package/dist/domain/rbac/role.js.map +1 -0
- package/dist/domain/satellite-manifest.d.ts +44 -0
- package/dist/domain/satellite-manifest.js +3 -0
- package/dist/domain/satellite-manifest.js.map +1 -0
- package/dist/domain/services/adr.service.d.ts +50 -0
- package/dist/domain/services/adr.service.js +129 -0
- package/dist/domain/services/adr.service.js.map +1 -0
- package/dist/domain/services/adr.service.spec.d.ts +1 -0
- package/dist/domain/services/adr.service.spec.js +141 -0
- package/dist/domain/services/adr.service.spec.js.map +1 -0
- package/dist/domain/services/default-workflow-definition.d.ts +40 -0
- package/dist/domain/services/default-workflow-definition.js +94 -0
- package/dist/domain/services/default-workflow-definition.js.map +1 -0
- package/dist/domain/services/index.d.ts +37 -0
- package/dist/domain/services/index.js +110 -0
- package/dist/domain/services/index.js.map +1 -0
- package/dist/domain/services/standards.service.d.ts +47 -0
- package/dist/domain/services/standards.service.js +129 -0
- package/dist/domain/services/standards.service.js.map +1 -0
- package/dist/domain/services/standards.service.spec.d.ts +1 -0
- package/dist/domain/services/standards.service.spec.js +600 -0
- package/dist/domain/services/standards.service.spec.js.map +1 -0
- package/dist/domain/verdict/index.d.ts +1 -0
- package/dist/domain/verdict/index.js +18 -0
- package/dist/domain/verdict/index.js.map +1 -0
- package/dist/domain/verdict/verdict.d.ts +22 -0
- package/dist/domain/verdict/verdict.js +50 -0
- package/dist/domain/verdict/verdict.js.map +1 -0
- package/dist/domain/webhook/webhook-subscription.d.ts +27 -0
- package/dist/domain/webhook/webhook-subscription.js +9 -0
- package/dist/domain/webhook/webhook-subscription.js.map +1 -0
- package/dist/domain/workflow/index.d.ts +1 -0
- package/dist/domain/workflow/index.js +18 -0
- package/dist/domain/workflow/index.js.map +1 -0
- package/dist/domain/workflow/workflow-definition.d.ts +33 -0
- package/dist/domain/workflow/workflow-definition.js +3 -0
- package/dist/domain/workflow/workflow-definition.js.map +1 -0
- package/dist/evidence/evidence-graph.d.ts +29 -0
- package/dist/evidence/evidence-graph.js +27 -0
- package/dist/evidence/evidence-graph.js.map +1 -0
- package/dist/evidence/index.d.ts +1 -0
- package/dist/evidence/index.js +18 -0
- package/dist/evidence/index.js.map +1 -0
- package/dist/gates/decision/gate-decision.d.ts +18 -0
- package/dist/gates/decision/gate-decision.js +23 -0
- package/dist/gates/decision/gate-decision.js.map +1 -0
- package/dist/gates/decision/index.d.ts +1 -0
- package/dist/gates/decision/index.js +18 -0
- package/dist/gates/decision/index.js.map +1 -0
- package/dist/gates/gate-evaluator.d.ts +15 -0
- package/dist/gates/gate-evaluator.js +37 -0
- package/dist/gates/gate-evaluator.js.map +1 -0
- package/dist/gates/index.d.ts +1 -0
- package/dist/gates/index.js +18 -0
- package/dist/gates/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/audit/in-memory-audit-repository.d.ts +10 -0
- package/dist/infrastructure/audit/in-memory-audit-repository.js +44 -0
- package/dist/infrastructure/audit/in-memory-audit-repository.js.map +1 -0
- package/dist/infrastructure/audit/index.d.ts +2 -0
- package/dist/infrastructure/audit/index.js +19 -0
- package/dist/infrastructure/audit/index.js.map +1 -0
- package/dist/infrastructure/audit/jsonl-audit-repository.d.ts +12 -0
- package/dist/infrastructure/audit/jsonl-audit-repository.js +103 -0
- package/dist/infrastructure/audit/jsonl-audit-repository.js.map +1 -0
- package/dist/infrastructure/events/in-memory-event-bus.d.ts +9 -0
- package/dist/infrastructure/events/in-memory-event-bus.js +25 -0
- package/dist/infrastructure/events/in-memory-event-bus.js.map +1 -0
- package/dist/infrastructure/events/index.d.ts +4 -0
- package/dist/infrastructure/events/index.js +21 -0
- package/dist/infrastructure/events/index.js.map +1 -0
- package/dist/infrastructure/events/outbox.d.ts +27 -0
- package/dist/infrastructure/events/outbox.js +43 -0
- package/dist/infrastructure/events/outbox.js.map +1 -0
- package/dist/infrastructure/webhook/hmac-signer.d.ts +6 -0
- package/dist/infrastructure/webhook/hmac-signer.js +25 -0
- package/dist/infrastructure/webhook/hmac-signer.js.map +1 -0
- package/dist/infrastructure/webhook/in-memory-delivery-repository.d.ts +10 -0
- package/dist/infrastructure/webhook/in-memory-delivery-repository.js +25 -0
- package/dist/infrastructure/webhook/in-memory-delivery-repository.js.map +1 -0
- package/dist/infrastructure/webhook/in-memory-subscription-repository.d.ts +11 -0
- package/dist/infrastructure/webhook/in-memory-subscription-repository.js +28 -0
- package/dist/infrastructure/webhook/in-memory-subscription-repository.js.map +1 -0
- package/dist/infrastructure/webhook/index.d.ts +4 -0
- package/dist/infrastructure/webhook/index.js +21 -0
- package/dist/infrastructure/webhook/index.js.map +1 -0
- package/dist/infrastructure/webhook/webhook-dispatcher.d.ts +13 -0
- package/dist/infrastructure/webhook/webhook-dispatcher.js +91 -0
- package/dist/infrastructure/webhook/webhook-dispatcher.js.map +1 -0
- package/dist/phases/index.d.ts +1 -0
- package/dist/phases/index.js +18 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/phases/phase-transition.d.ts +19 -0
- package/dist/phases/phase-transition.js +31 -0
- package/dist/phases/phase-transition.js.map +1 -0
- package/dist/phases/transition/index.d.ts +1 -0
- package/dist/phases/transition/index.js +18 -0
- package/dist/phases/transition/index.js.map +1 -0
- package/dist/phases/transition/phase-transition.model.d.ts +13 -0
- package/dist/phases/transition/phase-transition.model.js +21 -0
- package/dist/phases/transition/phase-transition.model.js.map +1 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.js +18 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/provider.ports.d.ts +39 -0
- package/dist/providers/provider.ports.js +18 -0
- package/dist/providers/provider.ports.js.map +1 -0
- package/dist/tenancy/index.d.ts +1 -0
- package/dist/tenancy/index.js +18 -0
- package/dist/tenancy/index.js.map +1 -0
- package/dist/tenancy/tenant-authority.d.ts +22 -0
- package/dist/tenancy/tenant-authority.js +31 -0
- package/dist/tenancy/tenant-authority.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.CommandHistoryService = void 0;
|
|
37
|
+
const fs = __importStar(require("fs-extra"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
class CommandHistoryService {
|
|
40
|
+
constructor(repoPath) {
|
|
41
|
+
this.entryCounter = 0;
|
|
42
|
+
this.initialized = false;
|
|
43
|
+
const basePath = repoPath || process.env.HOME || '/root';
|
|
44
|
+
const evolithDir = path.join(basePath, '.evolith');
|
|
45
|
+
this.historyFile = path.join(evolithDir, 'history.jsonl');
|
|
46
|
+
this.history = { entries: [], lastUpdated: new Date().toISOString() };
|
|
47
|
+
}
|
|
48
|
+
async initialize() {
|
|
49
|
+
if (this.initialized)
|
|
50
|
+
return;
|
|
51
|
+
this.initialized = true;
|
|
52
|
+
const dir = path.dirname(this.historyFile);
|
|
53
|
+
await fs.ensureDir(dir);
|
|
54
|
+
if (await fs.pathExists(this.historyFile)) {
|
|
55
|
+
const content = await fs.readFile(this.historyFile, 'utf-8');
|
|
56
|
+
const lines = content.split('\n').filter(l => l.trim());
|
|
57
|
+
for (const line of lines) {
|
|
58
|
+
try {
|
|
59
|
+
const entry = JSON.parse(line);
|
|
60
|
+
const num = parseInt(entry.id.replace('h-', ''), 10);
|
|
61
|
+
if (!isNaN(num) && num > this.entryCounter) {
|
|
62
|
+
this.entryCounter = num;
|
|
63
|
+
}
|
|
64
|
+
this.history.entries.push(entry);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (this.history.entries.length > 1000) {
|
|
70
|
+
this.history.entries = this.history.entries.slice(-1000);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async record(command, args, exitCode, durationMs) {
|
|
75
|
+
await this.initialize();
|
|
76
|
+
const id = `h-${String(++this.entryCounter).padStart(6, '0')}`;
|
|
77
|
+
const entry = {
|
|
78
|
+
id,
|
|
79
|
+
timestamp: new Date().toISOString(),
|
|
80
|
+
command,
|
|
81
|
+
args,
|
|
82
|
+
exitCode,
|
|
83
|
+
durationMs,
|
|
84
|
+
success: exitCode === 0,
|
|
85
|
+
};
|
|
86
|
+
this.history.entries.push(entry);
|
|
87
|
+
this.history.lastUpdated = new Date().toISOString();
|
|
88
|
+
await fs.appendFile(this.historyFile, JSON.stringify(entry) + '\n');
|
|
89
|
+
return id;
|
|
90
|
+
}
|
|
91
|
+
async list(limit = 50, offset = 0) {
|
|
92
|
+
await this.initialize();
|
|
93
|
+
return this.history.entries
|
|
94
|
+
.slice(-limit - offset)
|
|
95
|
+
.slice(offset)
|
|
96
|
+
.reverse();
|
|
97
|
+
}
|
|
98
|
+
async get(id) {
|
|
99
|
+
await this.initialize();
|
|
100
|
+
return this.history.entries.find(e => e.id === id);
|
|
101
|
+
}
|
|
102
|
+
async search(query) {
|
|
103
|
+
await this.initialize();
|
|
104
|
+
const lowerQuery = query.toLowerCase();
|
|
105
|
+
return this.history.entries.filter(e => e.command.toLowerCase().includes(lowerQuery) ||
|
|
106
|
+
e.args.some(a => a.toLowerCase().includes(lowerQuery))).reverse();
|
|
107
|
+
}
|
|
108
|
+
async clear() {
|
|
109
|
+
this.history.entries = [];
|
|
110
|
+
this.history.lastUpdated = new Date().toISOString();
|
|
111
|
+
if (await fs.pathExists(this.historyFile)) {
|
|
112
|
+
await fs.remove(this.historyFile);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async stats() {
|
|
116
|
+
await this.initialize();
|
|
117
|
+
const total = this.history.entries.length;
|
|
118
|
+
const successful = this.history.entries.filter(e => e.success).length;
|
|
119
|
+
const successRate = total > 0 ? ((successful / total) * 100).toFixed(1) + '%' : '0%';
|
|
120
|
+
const recent = this.history.entries.filter(e => {
|
|
121
|
+
const diff = Date.now() - new Date(e.timestamp).getTime();
|
|
122
|
+
return diff < 24 * 60 * 60 * 1000;
|
|
123
|
+
}).length;
|
|
124
|
+
const usageMap = new Map();
|
|
125
|
+
for (const entry of this.history.entries) {
|
|
126
|
+
usageMap.set(entry.command, (usageMap.get(entry.command) || 0) + 1);
|
|
127
|
+
}
|
|
128
|
+
const mostUsed = Array.from(usageMap.entries())
|
|
129
|
+
.map(([command, count]) => ({ command, count }))
|
|
130
|
+
.sort((a, b) => b.count - a.count)
|
|
131
|
+
.slice(0, 10);
|
|
132
|
+
return {
|
|
133
|
+
totalCommands: total,
|
|
134
|
+
successRate,
|
|
135
|
+
mostUsed,
|
|
136
|
+
recentCommands: recent,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
async replay(id) {
|
|
140
|
+
const entry = await this.get(id);
|
|
141
|
+
if (!entry)
|
|
142
|
+
return undefined;
|
|
143
|
+
return {
|
|
144
|
+
command: entry.command,
|
|
145
|
+
args: entry.args,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.CommandHistoryService = CommandHistoryService;
|
|
150
|
+
//# sourceMappingURL=command-history.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-history.service.js","sourceRoot":"","sources":["../../../../src/application/services/services/command-history.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const command_history_service_1 = require("./command-history.service");
|
|
37
|
+
jest.mock('fs-extra');
|
|
38
|
+
const fs = __importStar(require("fs-extra"));
|
|
39
|
+
const mockFs = fs;
|
|
40
|
+
// ── helpers ───────────────────────────────────────────────────────────────────
|
|
41
|
+
function makeEntry(overrides = {}) {
|
|
42
|
+
return {
|
|
43
|
+
id: 'h-000001',
|
|
44
|
+
timestamp: new Date(Date.now() - 60_000).toISOString(),
|
|
45
|
+
command: 'validate',
|
|
46
|
+
args: ['--satellite', '.'],
|
|
47
|
+
exitCode: 0,
|
|
48
|
+
durationMs: 120,
|
|
49
|
+
success: true,
|
|
50
|
+
...overrides,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function makeService() {
|
|
54
|
+
return new command_history_service_1.CommandHistoryService('/tmp/test-repo');
|
|
55
|
+
}
|
|
56
|
+
beforeEach(() => {
|
|
57
|
+
jest.clearAllMocks();
|
|
58
|
+
mockFs.ensureDir.mockResolvedValue(undefined);
|
|
59
|
+
mockFs.pathExists.mockResolvedValue(false);
|
|
60
|
+
mockFs.appendFile.mockResolvedValue(undefined);
|
|
61
|
+
mockFs.remove.mockResolvedValue(undefined);
|
|
62
|
+
});
|
|
63
|
+
// ── initialize ────────────────────────────────────────────────────────────────
|
|
64
|
+
describe('initialize', () => {
|
|
65
|
+
it('creates the .evolith directory', async () => {
|
|
66
|
+
const svc = makeService();
|
|
67
|
+
await svc.initialize();
|
|
68
|
+
expect(mockFs.ensureDir).toHaveBeenCalledWith(expect.stringContaining('.evolith'));
|
|
69
|
+
});
|
|
70
|
+
it('starts empty when history file does not exist', async () => {
|
|
71
|
+
const svc = makeService();
|
|
72
|
+
await svc.initialize();
|
|
73
|
+
expect(await svc.list()).toEqual([]);
|
|
74
|
+
});
|
|
75
|
+
it('parses existing JSONL history file', async () => {
|
|
76
|
+
const entry = makeEntry();
|
|
77
|
+
mockFs.pathExists.mockResolvedValue(true);
|
|
78
|
+
mockFs.readFile.mockResolvedValue(JSON.stringify(entry) + '\n');
|
|
79
|
+
const svc = makeService();
|
|
80
|
+
await svc.initialize();
|
|
81
|
+
const entries = await svc.list();
|
|
82
|
+
expect(entries).toHaveLength(1);
|
|
83
|
+
expect(entries[0].id).toBe('h-000001');
|
|
84
|
+
});
|
|
85
|
+
it('skips malformed lines in history file', async () => {
|
|
86
|
+
mockFs.pathExists.mockResolvedValue(true);
|
|
87
|
+
mockFs.readFile.mockResolvedValue('bad json\n' + JSON.stringify(makeEntry()) + '\n');
|
|
88
|
+
const svc = makeService();
|
|
89
|
+
await svc.initialize();
|
|
90
|
+
expect(await svc.list()).toHaveLength(1);
|
|
91
|
+
});
|
|
92
|
+
it('keeps only the last 1000 entries', async () => {
|
|
93
|
+
const lines = Array.from({ length: 1100 }, (_, i) => JSON.stringify(makeEntry({ id: `h-${String(i + 1).padStart(6, '0')}` }))).join('\n');
|
|
94
|
+
mockFs.pathExists.mockResolvedValue(true);
|
|
95
|
+
mockFs.readFile.mockResolvedValue(lines);
|
|
96
|
+
const svc = makeService();
|
|
97
|
+
await svc.initialize();
|
|
98
|
+
expect((await svc.list(2000)).length).toBe(1000);
|
|
99
|
+
});
|
|
100
|
+
it('is idempotent — calling twice does not double entries', async () => {
|
|
101
|
+
const entry = makeEntry();
|
|
102
|
+
mockFs.pathExists.mockResolvedValue(true);
|
|
103
|
+
mockFs.readFile.mockResolvedValue(JSON.stringify(entry) + '\n');
|
|
104
|
+
const svc = makeService();
|
|
105
|
+
await svc.initialize();
|
|
106
|
+
await svc.initialize();
|
|
107
|
+
expect((await svc.list()).length).toBe(1);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
// ── record ────────────────────────────────────────────────────────────────────
|
|
111
|
+
describe('record', () => {
|
|
112
|
+
it('returns an id in h-NNNNNN format', async () => {
|
|
113
|
+
const id = await makeService().record('validate', [], 0, 100);
|
|
114
|
+
expect(id).toMatch(/^h-\d{6}$/);
|
|
115
|
+
});
|
|
116
|
+
it('appends JSON line to the history file', async () => {
|
|
117
|
+
await makeService().record('validate', ['--satellite', '.'], 0, 50);
|
|
118
|
+
expect(mockFs.appendFile).toHaveBeenCalledWith(expect.any(String), expect.stringContaining('"validate"'));
|
|
119
|
+
});
|
|
120
|
+
it('marks success=true when exitCode=0', async () => {
|
|
121
|
+
const svc = makeService();
|
|
122
|
+
await svc.record('validate', [], 0, 10);
|
|
123
|
+
const [entry] = await svc.list();
|
|
124
|
+
expect(entry.success).toBe(true);
|
|
125
|
+
});
|
|
126
|
+
it('marks success=false when exitCode≠0', async () => {
|
|
127
|
+
const svc = makeService();
|
|
128
|
+
await svc.record('validate', [], 1, 10);
|
|
129
|
+
const [entry] = await svc.list();
|
|
130
|
+
expect(entry.success).toBe(false);
|
|
131
|
+
});
|
|
132
|
+
it('increments id counter across multiple records', async () => {
|
|
133
|
+
const svc = makeService();
|
|
134
|
+
const id1 = await svc.record('cmd', [], 0, 1);
|
|
135
|
+
const id2 = await svc.record('cmd', [], 0, 1);
|
|
136
|
+
expect(id1).not.toBe(id2);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
// ── list ─────────────────────────────────────────────────────────────────────
|
|
140
|
+
describe('list', () => {
|
|
141
|
+
it('returns entries in reverse chronological order (newest first)', async () => {
|
|
142
|
+
const svc = makeService();
|
|
143
|
+
await svc.record('first', [], 0, 1);
|
|
144
|
+
await svc.record('second', [], 0, 1);
|
|
145
|
+
const entries = await svc.list();
|
|
146
|
+
expect(entries[0].command).toBe('second');
|
|
147
|
+
expect(entries[1].command).toBe('first');
|
|
148
|
+
});
|
|
149
|
+
it('respects limit parameter', async () => {
|
|
150
|
+
const svc = makeService();
|
|
151
|
+
for (let i = 0; i < 5; i++)
|
|
152
|
+
await svc.record(`cmd${i}`, [], 0, 1);
|
|
153
|
+
expect(await svc.list(3)).toHaveLength(3);
|
|
154
|
+
});
|
|
155
|
+
it('returns all entries when limit > total', async () => {
|
|
156
|
+
const svc = makeService();
|
|
157
|
+
await svc.record('only', [], 0, 1);
|
|
158
|
+
expect(await svc.list(100)).toHaveLength(1);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
// ── get ───────────────────────────────────────────────────────────────────────
|
|
162
|
+
describe('get', () => {
|
|
163
|
+
it('returns the entry with the matching id', async () => {
|
|
164
|
+
const svc = makeService();
|
|
165
|
+
const id = await svc.record('validate', ['--satellite', '.'], 0, 42);
|
|
166
|
+
const entry = await svc.get(id);
|
|
167
|
+
expect(entry).toBeDefined();
|
|
168
|
+
expect(entry.command).toBe('validate');
|
|
169
|
+
expect(entry.durationMs).toBe(42);
|
|
170
|
+
});
|
|
171
|
+
it('returns undefined for unknown id', async () => {
|
|
172
|
+
expect(await makeService().get('h-999999')).toBeUndefined();
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
// ── search ────────────────────────────────────────────────────────────────────
|
|
176
|
+
describe('search', () => {
|
|
177
|
+
it('finds entries by command name', async () => {
|
|
178
|
+
const svc = makeService();
|
|
179
|
+
await svc.record('validate', [], 0, 1);
|
|
180
|
+
await svc.record('gate-status', [], 0, 1);
|
|
181
|
+
const results = await svc.search('validate');
|
|
182
|
+
expect(results).toHaveLength(1);
|
|
183
|
+
expect(results[0].command).toBe('validate');
|
|
184
|
+
});
|
|
185
|
+
it('finds entries by args substring', async () => {
|
|
186
|
+
const svc = makeService();
|
|
187
|
+
await svc.record('validate', ['--satellite', '/my/repo'], 0, 1);
|
|
188
|
+
const results = await svc.search('my/repo');
|
|
189
|
+
expect(results).toHaveLength(1);
|
|
190
|
+
});
|
|
191
|
+
it('is case-insensitive', async () => {
|
|
192
|
+
const svc = makeService();
|
|
193
|
+
await svc.record('Validate', [], 0, 1);
|
|
194
|
+
expect(await svc.search('validate')).toHaveLength(1);
|
|
195
|
+
expect(await svc.search('VALIDATE')).toHaveLength(1);
|
|
196
|
+
});
|
|
197
|
+
it('returns empty array when no match', async () => {
|
|
198
|
+
const svc = makeService();
|
|
199
|
+
await svc.record('gate-status', [], 0, 1);
|
|
200
|
+
expect(await svc.search('nonexistent')).toHaveLength(0);
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
// ── clear ─────────────────────────────────────────────────────────────────────
|
|
204
|
+
describe('clear', () => {
|
|
205
|
+
it('empties the in-memory entries', async () => {
|
|
206
|
+
const svc = makeService();
|
|
207
|
+
await svc.record('validate', [], 0, 1);
|
|
208
|
+
await svc.clear();
|
|
209
|
+
expect(await svc.list()).toHaveLength(0);
|
|
210
|
+
});
|
|
211
|
+
it('removes the history file when it exists', async () => {
|
|
212
|
+
mockFs.pathExists.mockResolvedValue(true);
|
|
213
|
+
await makeService().clear();
|
|
214
|
+
expect(mockFs.remove).toHaveBeenCalled();
|
|
215
|
+
});
|
|
216
|
+
it('does not call remove when file does not exist', async () => {
|
|
217
|
+
mockFs.pathExists.mockResolvedValue(false);
|
|
218
|
+
await makeService().clear();
|
|
219
|
+
expect(mockFs.remove).not.toHaveBeenCalled();
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
// ── stats ─────────────────────────────────────────────────────────────────────
|
|
223
|
+
describe('stats', () => {
|
|
224
|
+
it('returns zero stats when history is empty', async () => {
|
|
225
|
+
const result = await makeService().stats();
|
|
226
|
+
expect(result.totalCommands).toBe(0);
|
|
227
|
+
expect(result.successRate).toBe('0%');
|
|
228
|
+
expect(result.mostUsed).toHaveLength(0);
|
|
229
|
+
});
|
|
230
|
+
it('calculates success rate correctly', async () => {
|
|
231
|
+
const svc = makeService();
|
|
232
|
+
await svc.record('cmd', [], 0, 1);
|
|
233
|
+
await svc.record('cmd', [], 0, 1);
|
|
234
|
+
await svc.record('cmd', [], 1, 1);
|
|
235
|
+
const { successRate } = await svc.stats();
|
|
236
|
+
expect(successRate).toBe('66.7%');
|
|
237
|
+
});
|
|
238
|
+
it('returns mostUsed sorted by frequency', async () => {
|
|
239
|
+
const svc = makeService();
|
|
240
|
+
await svc.record('validate', [], 0, 1);
|
|
241
|
+
await svc.record('validate', [], 0, 1);
|
|
242
|
+
await svc.record('gate-status', [], 0, 1);
|
|
243
|
+
const { mostUsed } = await svc.stats();
|
|
244
|
+
expect(mostUsed[0].command).toBe('validate');
|
|
245
|
+
expect(mostUsed[0].count).toBe(2);
|
|
246
|
+
});
|
|
247
|
+
it('counts recentCommands in last 24h', async () => {
|
|
248
|
+
const svc = makeService();
|
|
249
|
+
await svc.record('recent', [], 0, 1);
|
|
250
|
+
const { recentCommands } = await svc.stats();
|
|
251
|
+
expect(recentCommands).toBe(1);
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
// ── replay ────────────────────────────────────────────────────────────────────
|
|
255
|
+
describe('replay', () => {
|
|
256
|
+
it('returns command and args for a valid id', async () => {
|
|
257
|
+
const svc = makeService();
|
|
258
|
+
const id = await svc.record('gate-status', ['--since', '30'], 0, 1);
|
|
259
|
+
const result = await svc.replay(id);
|
|
260
|
+
expect(result).toEqual({ command: 'gate-status', args: ['--since', '30'] });
|
|
261
|
+
});
|
|
262
|
+
it('returns undefined for unknown id', async () => {
|
|
263
|
+
expect(await makeService().replay('h-999999')).toBeUndefined();
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
//# sourceMappingURL=command-history.service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-history.service.spec.js","sourceRoot":"","sources":["../../../../src/application/services/services/command-history.service.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NpmProvider, DotnetProvider, PythonProvider, DockerProvider, NxProvider, GitHubActionsProvider, npmProvider, dotnetProvider, pythonProvider, dockerProvider, nxProvider, githubActionsProvider, } from '../../../infrastructure/cli/providers';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.githubActionsProvider = exports.nxProvider = exports.dockerProvider = exports.pythonProvider = exports.dotnetProvider = exports.npmProvider = exports.GitHubActionsProvider = exports.NxProvider = exports.DockerProvider = exports.PythonProvider = exports.DotnetProvider = exports.NpmProvider = void 0;
|
|
4
|
+
var providers_1 = require("../../../infrastructure/cli/providers");
|
|
5
|
+
Object.defineProperty(exports, "NpmProvider", { enumerable: true, get: function () { return providers_1.NpmProvider; } });
|
|
6
|
+
Object.defineProperty(exports, "DotnetProvider", { enumerable: true, get: function () { return providers_1.DotnetProvider; } });
|
|
7
|
+
Object.defineProperty(exports, "PythonProvider", { enumerable: true, get: function () { return providers_1.PythonProvider; } });
|
|
8
|
+
Object.defineProperty(exports, "DockerProvider", { enumerable: true, get: function () { return providers_1.DockerProvider; } });
|
|
9
|
+
Object.defineProperty(exports, "NxProvider", { enumerable: true, get: function () { return providers_1.NxProvider; } });
|
|
10
|
+
Object.defineProperty(exports, "GitHubActionsProvider", { enumerable: true, get: function () { return providers_1.GitHubActionsProvider; } });
|
|
11
|
+
Object.defineProperty(exports, "npmProvider", { enumerable: true, get: function () { return providers_1.npmProvider; } });
|
|
12
|
+
Object.defineProperty(exports, "dotnetProvider", { enumerable: true, get: function () { return providers_1.dotnetProvider; } });
|
|
13
|
+
Object.defineProperty(exports, "pythonProvider", { enumerable: true, get: function () { return providers_1.pythonProvider; } });
|
|
14
|
+
Object.defineProperty(exports, "dockerProvider", { enumerable: true, get: function () { return providers_1.dockerProvider; } });
|
|
15
|
+
Object.defineProperty(exports, "nxProvider", { enumerable: true, get: function () { return providers_1.nxProvider; } });
|
|
16
|
+
Object.defineProperty(exports, "githubActionsProvider", { enumerable: true, get: function () { return providers_1.githubActionsProvider; } });
|
|
17
|
+
//# sourceMappingURL=command-providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-providers.js","sourceRoot":"","sources":["../../../../src/application/services/services/command-providers.ts"],"names":[],"mappings":";;;AAAA,mEAa+C;AAZ7C,wGAAA,WAAW,OAAA;AACX,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AACd,uGAAA,UAAU,OAAA;AACV,kHAAA,qBAAqB,OAAA;AACrB,wGAAA,WAAW,OAAA;AACX,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AACd,2GAAA,cAAc,OAAA;AACd,uGAAA,UAAU,OAAA;AACV,kHAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { IFileSystem, ILogger } from '../../domain/interfaces';
|
|
2
|
+
export type ProgressivePhase = 'F1' | 'F2' | 'F3' | 'cross';
|
|
3
|
+
export interface TopologyManifest {
|
|
4
|
+
apiVersion: 'evolith.dev/topology/v1';
|
|
5
|
+
kind: 'TopologyManifest';
|
|
6
|
+
metadata: {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
dimension: string;
|
|
10
|
+
status: 'draft' | 'proposed' | 'accepted' | 'deprecated';
|
|
11
|
+
version: string;
|
|
12
|
+
};
|
|
13
|
+
spec: {
|
|
14
|
+
summary: string;
|
|
15
|
+
topologyType: string;
|
|
16
|
+
compatibility: {
|
|
17
|
+
progressiveAxis: {
|
|
18
|
+
phase: ProgressivePhase;
|
|
19
|
+
profile: string;
|
|
20
|
+
};
|
|
21
|
+
composableWith: string[];
|
|
22
|
+
};
|
|
23
|
+
artifacts: {
|
|
24
|
+
adrs: string[];
|
|
25
|
+
rulesets: string[];
|
|
26
|
+
opaPolicies: string[];
|
|
27
|
+
aiRulesets: string[];
|
|
28
|
+
umsContracts: string[];
|
|
29
|
+
};
|
|
30
|
+
corpus?: {
|
|
31
|
+
guidance: {
|
|
32
|
+
profile: string;
|
|
33
|
+
maturityGuide: string;
|
|
34
|
+
};
|
|
35
|
+
configurationContract: string;
|
|
36
|
+
fixtures: {
|
|
37
|
+
valid: string;
|
|
38
|
+
invalid: string;
|
|
39
|
+
};
|
|
40
|
+
nativeEvaluator: string;
|
|
41
|
+
tests: {
|
|
42
|
+
positive: string;
|
|
43
|
+
negative: string;
|
|
44
|
+
};
|
|
45
|
+
evidence: string;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export declare class TopologyCatalogService {
|
|
50
|
+
private readonly fs;
|
|
51
|
+
private readonly logger;
|
|
52
|
+
constructor(fs: IFileSystem, logger: ILogger);
|
|
53
|
+
list(corePath: string): Promise<TopologyManifest[]>;
|
|
54
|
+
get(corePath: string, topologyId: string): Promise<TopologyManifest | undefined>;
|
|
55
|
+
resolveProgressivePhase(corePath: string, phase: Exclude<ProgressivePhase, 'cross'>): Promise<TopologyManifest | undefined>;
|
|
56
|
+
private findManifestFiles;
|
|
57
|
+
private readManifest;
|
|
58
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.TopologyCatalogService = void 0;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
class TopologyCatalogService {
|
|
39
|
+
constructor(fs, logger) {
|
|
40
|
+
this.fs = fs;
|
|
41
|
+
this.logger = logger;
|
|
42
|
+
}
|
|
43
|
+
async list(corePath) {
|
|
44
|
+
const root = path.join(corePath, 'reference', 'architecture', 'topologies');
|
|
45
|
+
const files = await this.findManifestFiles(root);
|
|
46
|
+
const manifests = await Promise.all(files.map((file) => this.readManifest(file)));
|
|
47
|
+
return manifests.sort((a, b) => a.metadata.id.localeCompare(b.metadata.id));
|
|
48
|
+
}
|
|
49
|
+
async get(corePath, topologyId) {
|
|
50
|
+
return (await this.list(corePath)).find((manifest) => manifest.metadata.id === topologyId);
|
|
51
|
+
}
|
|
52
|
+
async resolveProgressivePhase(corePath, phase) {
|
|
53
|
+
return (await this.list(corePath)).find((manifest) => manifest.spec.compatibility.progressiveAxis.phase === phase);
|
|
54
|
+
}
|
|
55
|
+
async findManifestFiles(directory, depth = 0) {
|
|
56
|
+
if (depth > 3 || !(await this.fs.exists(directory)))
|
|
57
|
+
return [];
|
|
58
|
+
const entries = await this.fs.readdir(directory);
|
|
59
|
+
const files = [];
|
|
60
|
+
for (const entry of entries) {
|
|
61
|
+
const fullPath = path.join(directory, entry.name);
|
|
62
|
+
if (entry.isFile() && entry.name === 'topology.manifest.json')
|
|
63
|
+
files.push(fullPath);
|
|
64
|
+
if (entry.isDirectory())
|
|
65
|
+
files.push(...await this.findManifestFiles(fullPath, depth + 1));
|
|
66
|
+
}
|
|
67
|
+
return files;
|
|
68
|
+
}
|
|
69
|
+
async readManifest(filePath) {
|
|
70
|
+
try {
|
|
71
|
+
const manifest = JSON.parse(await this.fs.readFile(filePath));
|
|
72
|
+
if (manifest.apiVersion !== 'evolith.dev/topology/v1' || manifest.kind !== 'TopologyManifest' || !manifest.metadata?.id) {
|
|
73
|
+
throw new Error('missing required topology manifest identity');
|
|
74
|
+
}
|
|
75
|
+
return manifest;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
79
|
+
this.logger.error(`Invalid topology manifest at ${filePath}: ${message}`);
|
|
80
|
+
throw new Error(`Topology manifest error in ${filePath}: ${message}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.TopologyCatalogService = TopologyCatalogService;
|
|
85
|
+
//# sourceMappingURL=topology-catalog.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topology-catalog.service.js","sourceRoot":"","sources":["../../../src/application/services/topology-catalog.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface IConfigService {
|
|
2
|
+
get<T = Record<string, unknown>>(key: string): T;
|
|
3
|
+
}
|
|
4
|
+
export declare class SyncService {
|
|
5
|
+
private readonly configService;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
constructor(configService: IConfigService);
|
|
8
|
+
syncTemplatesFromUpstream(): Promise<void>;
|
|
9
|
+
}
|