@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,301 @@
|
|
|
1
|
+
export interface FileExistsOptions {
|
|
2
|
+
cwd?: string;
|
|
3
|
+
}
|
|
4
|
+
export interface FileReadOptions {
|
|
5
|
+
encoding?: BufferEncoding;
|
|
6
|
+
cwd?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface FileWriteOptions {
|
|
9
|
+
encoding?: BufferEncoding;
|
|
10
|
+
cwd?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface DirEntry {
|
|
13
|
+
name: string;
|
|
14
|
+
isDirectory: () => boolean;
|
|
15
|
+
isFile: () => boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface IConfigParser {
|
|
18
|
+
parse(content: string): unknown;
|
|
19
|
+
stringify(data: unknown): string;
|
|
20
|
+
}
|
|
21
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
22
|
+
export interface LogEntry {
|
|
23
|
+
level: LogLevel;
|
|
24
|
+
message: string;
|
|
25
|
+
context?: string;
|
|
26
|
+
timestamp: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ILoggerProvider {
|
|
29
|
+
createLogger(context: string): ILogger;
|
|
30
|
+
}
|
|
31
|
+
export interface IConfigParserProvider {
|
|
32
|
+
createConfigParser(format: string): IConfigParser;
|
|
33
|
+
}
|
|
34
|
+
export declare const SUPPORTED_FORMATS: readonly ["yaml", "json"];
|
|
35
|
+
export type SupportedFormat = typeof SUPPORTED_FORMATS[number];
|
|
36
|
+
export interface CommandResult {
|
|
37
|
+
success: boolean;
|
|
38
|
+
stdout: string;
|
|
39
|
+
stderr: string;
|
|
40
|
+
exitCode: number;
|
|
41
|
+
}
|
|
42
|
+
export interface PlatformCheck {
|
|
43
|
+
name: string;
|
|
44
|
+
command: string;
|
|
45
|
+
available: boolean;
|
|
46
|
+
version?: string;
|
|
47
|
+
installHint?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface ICommandExecutor {
|
|
50
|
+
execute(command: string, cwd?: string): Promise<CommandResult>;
|
|
51
|
+
executeOrThrow(command: string, cwd?: string): Promise<string>;
|
|
52
|
+
checkTool(name: string, versionCommand: string): Promise<PlatformCheck>;
|
|
53
|
+
}
|
|
54
|
+
export interface ICatalogLoader {
|
|
55
|
+
loadRuntimeCatalog(): Runtime[];
|
|
56
|
+
loadToolCatalog(): ToolCatalog;
|
|
57
|
+
loadCommandsMatrix(): CommandsMatrix;
|
|
58
|
+
getMonorepoOptions(): MonorepoOption[];
|
|
59
|
+
getArchitecturePatterns(): ArchitecturePattern[];
|
|
60
|
+
getDefaultDatabase(runtimeId: string): string;
|
|
61
|
+
getApiProtocols(): Array<{
|
|
62
|
+
id: string;
|
|
63
|
+
name: string;
|
|
64
|
+
description: string;
|
|
65
|
+
}>;
|
|
66
|
+
}
|
|
67
|
+
export interface Runtime {
|
|
68
|
+
id: string;
|
|
69
|
+
name: string;
|
|
70
|
+
versions: string[];
|
|
71
|
+
defaultVersion: string;
|
|
72
|
+
language: string;
|
|
73
|
+
typeSystem: string;
|
|
74
|
+
frameworks: Framework[];
|
|
75
|
+
databases: Database[];
|
|
76
|
+
buildTools: string[];
|
|
77
|
+
testFrameworks: string[];
|
|
78
|
+
packageManager: string;
|
|
79
|
+
}
|
|
80
|
+
export interface Framework {
|
|
81
|
+
id: string;
|
|
82
|
+
name: string;
|
|
83
|
+
version: string;
|
|
84
|
+
}
|
|
85
|
+
export interface Database {
|
|
86
|
+
id: string;
|
|
87
|
+
name: string;
|
|
88
|
+
orm?: string;
|
|
89
|
+
type?: string;
|
|
90
|
+
}
|
|
91
|
+
export interface MonorepoOption {
|
|
92
|
+
id: string;
|
|
93
|
+
name: string;
|
|
94
|
+
description: string;
|
|
95
|
+
defaults: {
|
|
96
|
+
structure: string;
|
|
97
|
+
ciStrategy: string;
|
|
98
|
+
libraryStructure?: string;
|
|
99
|
+
policyEnforcement?: boolean;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export interface ArchitecturePattern {
|
|
103
|
+
id: string;
|
|
104
|
+
name: string;
|
|
105
|
+
description: string;
|
|
106
|
+
layers: string[];
|
|
107
|
+
dddConcepts?: string[];
|
|
108
|
+
}
|
|
109
|
+
export interface ToolGroup {
|
|
110
|
+
question: string;
|
|
111
|
+
defaultOption: string;
|
|
112
|
+
options?: ToolOption[];
|
|
113
|
+
tools: string[];
|
|
114
|
+
}
|
|
115
|
+
export interface ToolOption {
|
|
116
|
+
value: string;
|
|
117
|
+
label: string;
|
|
118
|
+
description: string;
|
|
119
|
+
hint?: string;
|
|
120
|
+
}
|
|
121
|
+
export interface PhaseDefinition {
|
|
122
|
+
value: string;
|
|
123
|
+
label: string;
|
|
124
|
+
description: string;
|
|
125
|
+
gateChecks: GateCheck[];
|
|
126
|
+
artifacts: string[];
|
|
127
|
+
toolGroups: Record<string, ToolGroup>;
|
|
128
|
+
defaultTools: string[];
|
|
129
|
+
}
|
|
130
|
+
export interface GateCheck {
|
|
131
|
+
id: string;
|
|
132
|
+
description: string;
|
|
133
|
+
required: boolean;
|
|
134
|
+
}
|
|
135
|
+
export interface PlatformCheck {
|
|
136
|
+
name: string;
|
|
137
|
+
command: string;
|
|
138
|
+
available: boolean;
|
|
139
|
+
version?: string;
|
|
140
|
+
installHint?: string;
|
|
141
|
+
}
|
|
142
|
+
export interface ProjectConfig {
|
|
143
|
+
name: string;
|
|
144
|
+
runtime: Runtime;
|
|
145
|
+
monorepo: MonorepoOption;
|
|
146
|
+
architecture: ArchitecturePattern;
|
|
147
|
+
database: string;
|
|
148
|
+
apiProtocol: string;
|
|
149
|
+
ciCd: string;
|
|
150
|
+
observability: string;
|
|
151
|
+
}
|
|
152
|
+
export interface PhaseTransition {
|
|
153
|
+
fromPhase: string;
|
|
154
|
+
toPhase: string;
|
|
155
|
+
tools: string[];
|
|
156
|
+
validated: boolean;
|
|
157
|
+
timestamp: string;
|
|
158
|
+
}
|
|
159
|
+
export interface ICommandExecutor {
|
|
160
|
+
execute(command: string, cwd?: string): Promise<CommandResult>;
|
|
161
|
+
executeOrThrow(command: string, cwd?: string): Promise<string>;
|
|
162
|
+
checkTool(name: string, versionCommand: string): Promise<PlatformCheck>;
|
|
163
|
+
}
|
|
164
|
+
export interface ICatalogLoader {
|
|
165
|
+
loadRuntimeCatalog(): Runtime[];
|
|
166
|
+
loadToolCatalog(): ToolCatalog;
|
|
167
|
+
loadCommandsMatrix(): CommandsMatrix;
|
|
168
|
+
getMonorepoOptions(): MonorepoOption[];
|
|
169
|
+
getArchitecturePatterns(): ArchitecturePattern[];
|
|
170
|
+
getDefaultDatabase(runtimeId: string): string;
|
|
171
|
+
getApiProtocols(): Array<{
|
|
172
|
+
id: string;
|
|
173
|
+
name: string;
|
|
174
|
+
description: string;
|
|
175
|
+
}>;
|
|
176
|
+
}
|
|
177
|
+
export interface ToolCatalog {
|
|
178
|
+
phases: Record<string, PhaseDefinition>;
|
|
179
|
+
toolMetadata: Record<string, ToolMetadata>;
|
|
180
|
+
}
|
|
181
|
+
export interface ToolMetadata {
|
|
182
|
+
description: string;
|
|
183
|
+
runtimeAgnostic: boolean;
|
|
184
|
+
runtimeAware?: boolean;
|
|
185
|
+
phase: string;
|
|
186
|
+
commands?: string[];
|
|
187
|
+
platformCheck?: string;
|
|
188
|
+
}
|
|
189
|
+
export interface CommandsMatrix {
|
|
190
|
+
runtimes: Record<string, RuntimeCommands>;
|
|
191
|
+
monorepos: Record<string, MonorepoCommands>;
|
|
192
|
+
container: ContainerCommands;
|
|
193
|
+
observability: ObservabilityCommands;
|
|
194
|
+
}
|
|
195
|
+
export interface RuntimeCommands {
|
|
196
|
+
native: string[];
|
|
197
|
+
scaffold: string[];
|
|
198
|
+
delegated: string[];
|
|
199
|
+
unsupported: string[];
|
|
200
|
+
}
|
|
201
|
+
export interface MonorepoCommands {
|
|
202
|
+
native: string[];
|
|
203
|
+
delegated: string[];
|
|
204
|
+
}
|
|
205
|
+
export interface ContainerCommands {
|
|
206
|
+
delegated: string[];
|
|
207
|
+
unsupported: string[];
|
|
208
|
+
}
|
|
209
|
+
export interface ObservabilityCommands {
|
|
210
|
+
scaffold: string[];
|
|
211
|
+
delegated: string[];
|
|
212
|
+
}
|
|
213
|
+
export interface IFileSystem {
|
|
214
|
+
readFile(path: string): Promise<string>;
|
|
215
|
+
readFileBuffer(path: string): Promise<Buffer>;
|
|
216
|
+
writeFile(path: string, content: string): Promise<void>;
|
|
217
|
+
exists(path: string): Promise<boolean>;
|
|
218
|
+
existsSync(path: string): boolean;
|
|
219
|
+
readJson<T = unknown>(path: string): Promise<T>;
|
|
220
|
+
writeJson(path: string, content: unknown): Promise<void>;
|
|
221
|
+
mkdir(path: string): Promise<void>;
|
|
222
|
+
readdir(path: string): Promise<DirEntry[]>;
|
|
223
|
+
readdirNames(path: string): Promise<string[]>;
|
|
224
|
+
copy(src: string, dest: string): Promise<void>;
|
|
225
|
+
ensureDir(path: string): Promise<void>;
|
|
226
|
+
ensureFile(path: string): Promise<void>;
|
|
227
|
+
stat(path: string): Promise<{
|
|
228
|
+
isDirectory: () => boolean;
|
|
229
|
+
isFile: () => boolean;
|
|
230
|
+
}>;
|
|
231
|
+
remove(path: string): Promise<void>;
|
|
232
|
+
}
|
|
233
|
+
export interface IConfigParser {
|
|
234
|
+
parse<T = unknown>(content: string): T;
|
|
235
|
+
stringify(data: unknown): string;
|
|
236
|
+
}
|
|
237
|
+
export interface ILogger {
|
|
238
|
+
info(message: string, context?: unknown): void;
|
|
239
|
+
warn(message: string, context?: unknown): void;
|
|
240
|
+
error(message: string, context?: unknown): void;
|
|
241
|
+
debug(message: string, context?: unknown): void;
|
|
242
|
+
}
|
|
243
|
+
export interface IProjectInitializer {
|
|
244
|
+
initialize(config: ProjectConfig, cwd: string): Promise<InitResult>;
|
|
245
|
+
scaffoldRuntime(config: ProjectConfig, fs: IFileSystem, projectDir: string): Promise<void>;
|
|
246
|
+
}
|
|
247
|
+
export interface InitResult {
|
|
248
|
+
success: boolean;
|
|
249
|
+
artifacts: string[];
|
|
250
|
+
warnings: string[];
|
|
251
|
+
errors: string[];
|
|
252
|
+
}
|
|
253
|
+
export interface IPhaseGates {
|
|
254
|
+
validate(phase: string, cwd: string): Promise<GateResult[]>;
|
|
255
|
+
canTransition(from: string, to: string): boolean;
|
|
256
|
+
}
|
|
257
|
+
export interface GateResult {
|
|
258
|
+
id: string;
|
|
259
|
+
passed: boolean;
|
|
260
|
+
description: string;
|
|
261
|
+
error?: string;
|
|
262
|
+
}
|
|
263
|
+
export interface IToolExecutor {
|
|
264
|
+
execute(tool: string, context: ToolContext): Promise<ToolResult>;
|
|
265
|
+
detectPlatform(tool: string): Promise<PlatformCheck>;
|
|
266
|
+
}
|
|
267
|
+
export interface ToolContext {
|
|
268
|
+
phase: string;
|
|
269
|
+
projectDir: string;
|
|
270
|
+
runtime?: string;
|
|
271
|
+
}
|
|
272
|
+
export interface ToolResult {
|
|
273
|
+
success: boolean;
|
|
274
|
+
command?: string;
|
|
275
|
+
output?: string;
|
|
276
|
+
error?: string;
|
|
277
|
+
}
|
|
278
|
+
export interface IToolSelector {
|
|
279
|
+
getToolsForPhase(phase: string): ToolGroup[];
|
|
280
|
+
getDefaultTools(phase: string): string[];
|
|
281
|
+
validateToolSelection(phase: string, tools: string[]): ValidationResult;
|
|
282
|
+
}
|
|
283
|
+
export interface ValidationResult {
|
|
284
|
+
valid: boolean;
|
|
285
|
+
errors: string[];
|
|
286
|
+
warnings: string[];
|
|
287
|
+
}
|
|
288
|
+
export interface FileExistsOptions {
|
|
289
|
+
checkType?: 'file' | 'directory';
|
|
290
|
+
}
|
|
291
|
+
export interface FileReadOptions {
|
|
292
|
+
encoding?: BufferEncoding;
|
|
293
|
+
flag?: string;
|
|
294
|
+
}
|
|
295
|
+
export interface FileWriteOptions {
|
|
296
|
+
encoding?: BufferEncoding;
|
|
297
|
+
mode?: number;
|
|
298
|
+
flag?: string;
|
|
299
|
+
}
|
|
300
|
+
export interface IFileSystemProvider extends IFileSystem {
|
|
301
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/domain/interfaces.ts"],"names":[],"mappings":";;;AAgDa,QAAA,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { IDomainEventBus } from '../../application/ports/event-bus.port';
|
|
2
|
+
export declare enum ArtifactState {
|
|
3
|
+
DRAFT = "DRAFT",
|
|
4
|
+
SUBMITTED = "SUBMITTED",
|
|
5
|
+
VALIDATING = "VALIDATING",
|
|
6
|
+
VALIDATED = "VALIDATED",
|
|
7
|
+
REJECTED = "REJECTED",
|
|
8
|
+
ARCHIVED = "ARCHIVED"
|
|
9
|
+
}
|
|
10
|
+
export declare const ARTIFACT_TRANSITIONS: Readonly<Record<ArtifactState, readonly ArtifactState[]>>;
|
|
11
|
+
export interface ArtifactTransitionContext {
|
|
12
|
+
artifactPath: string;
|
|
13
|
+
artifactType?: string;
|
|
14
|
+
projectId: string;
|
|
15
|
+
correlationId?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class ArtifactStateMachine {
|
|
18
|
+
private readonly eventBus?;
|
|
19
|
+
constructor(eventBus?: IDomainEventBus | undefined);
|
|
20
|
+
transition(from: ArtifactState, to: ArtifactState, ctx?: ArtifactTransitionContext): true;
|
|
21
|
+
canTransition(from: ArtifactState, to: ArtifactState): boolean;
|
|
22
|
+
allowedTransitions(from: ArtifactState): readonly ArtifactState[];
|
|
23
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArtifactStateMachine = exports.ARTIFACT_TRANSITIONS = exports.ArtifactState = void 0;
|
|
4
|
+
const domain_events_1 = require("../events/domain-events");
|
|
5
|
+
var ArtifactState;
|
|
6
|
+
(function (ArtifactState) {
|
|
7
|
+
ArtifactState["DRAFT"] = "DRAFT";
|
|
8
|
+
ArtifactState["SUBMITTED"] = "SUBMITTED";
|
|
9
|
+
ArtifactState["VALIDATING"] = "VALIDATING";
|
|
10
|
+
ArtifactState["VALIDATED"] = "VALIDATED";
|
|
11
|
+
ArtifactState["REJECTED"] = "REJECTED";
|
|
12
|
+
ArtifactState["ARCHIVED"] = "ARCHIVED";
|
|
13
|
+
})(ArtifactState || (exports.ArtifactState = ArtifactState = {}));
|
|
14
|
+
exports.ARTIFACT_TRANSITIONS = {
|
|
15
|
+
[ArtifactState.DRAFT]: [ArtifactState.SUBMITTED, ArtifactState.ARCHIVED],
|
|
16
|
+
[ArtifactState.SUBMITTED]: [ArtifactState.VALIDATING, ArtifactState.DRAFT, ArtifactState.ARCHIVED],
|
|
17
|
+
[ArtifactState.VALIDATING]: [ArtifactState.VALIDATED, ArtifactState.REJECTED],
|
|
18
|
+
[ArtifactState.VALIDATED]: [ArtifactState.ARCHIVED],
|
|
19
|
+
[ArtifactState.REJECTED]: [ArtifactState.DRAFT, ArtifactState.ARCHIVED],
|
|
20
|
+
[ArtifactState.ARCHIVED]: [],
|
|
21
|
+
};
|
|
22
|
+
class ArtifactStateMachine {
|
|
23
|
+
constructor(eventBus) {
|
|
24
|
+
this.eventBus = eventBus;
|
|
25
|
+
}
|
|
26
|
+
transition(from, to, ctx) {
|
|
27
|
+
const allowed = exports.ARTIFACT_TRANSITIONS[from];
|
|
28
|
+
if (!allowed.includes(to)) {
|
|
29
|
+
throw new Error(`Invalid artifact transition: ${from} → ${to}. ` +
|
|
30
|
+
`Allowed targets from ${from}: [${allowed.join(', ') || 'none'}]`);
|
|
31
|
+
}
|
|
32
|
+
if (this.eventBus && ctx) {
|
|
33
|
+
const event = domain_events_1.DomainEvents.artifactUpdated({
|
|
34
|
+
projectId: ctx.projectId,
|
|
35
|
+
artifactPath: ctx.artifactPath,
|
|
36
|
+
artifactType: ctx.artifactType,
|
|
37
|
+
}, ctx.correlationId);
|
|
38
|
+
void this.eventBus.publish(event);
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
canTransition(from, to) {
|
|
43
|
+
return exports.ARTIFACT_TRANSITIONS[from].includes(to);
|
|
44
|
+
}
|
|
45
|
+
allowedTransitions(from) {
|
|
46
|
+
return exports.ARTIFACT_TRANSITIONS[from];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.ArtifactStateMachine = ArtifactStateMachine;
|
|
50
|
+
//# sourceMappingURL=artifact-state-machine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-state-machine.js","sourceRoot":"","sources":["../../../src/domain/lifecycle/artifact-state-machine.ts"],"names":[],"mappings":";;;AASA,2DAAuD;AAMvD,IAAY,aAaX;AAbD,WAAY,aAAa;IAEvB,gCAAe,CAAA;IAEf,wCAAuB,CAAA;IAEvB,0CAAyB,CAAA;IAEzB,wCAAuB,CAAA;IAEvB,sCAAqB,CAAA;IAErB,sCAAqB,CAAA;AACvB,CAAC,EAbW,aAAa,6BAAb,aAAa,QAaxB;AAUY,QAAA,oBAAoB,GAA8D;IAC7F,CAAC,aAAa,CAAC,KAAK,CAAC,EAAO,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;IAC7E,CAAC,aAAa,CAAC,SAAS,CAAC,EAAG,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC;IACnG,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;IAC7E,CAAC,aAAa,CAAC,SAAS,CAAC,EAAG,CAAC,aAAa,CAAC,QAAQ,CAAC;IACpD,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAI,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC;IACzE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAI,EAAE;CAC/B,CAAC;AAeF,MAAa,oBAAoB;IAC/B,YAA6B,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;IAAG,CAAC;IAQ3D,UAAU,CACR,IAAmB,EACnB,EAAiB,EACjB,GAA+B;QAE/B,MAAM,OAAO,GAAG,4BAAoB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,MAAM,EAAE,IAAI;gBAChD,wBAAwB,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAClE,CAAC;QACJ,CAAC;QAGD,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,4BAAY,CAAC,eAAe,CACxC;gBACE,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,YAAY,EAAE,GAAG,CAAC,YAAY;aAC/B,EACD,GAAG,CAAC,aAAa,CAClB,CAAC;YAEF,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,aAAa,CAAC,IAAmB,EAAE,EAAiB;QAClD,OAAO,4BAAoB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAKD,kBAAkB,CAAC,IAAmB;QACpC,OAAO,4BAAoB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;CACF;AApDD,oDAoDC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./artifact-state-machine"), exports);
|
|
18
|
+
__exportStar(require("./phase-state-machine"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/lifecycle/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,wDAAsC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IDomainEventBus } from '../../application/ports/event-bus.port';
|
|
2
|
+
import type { GatePhase } from '../gate-evidence';
|
|
3
|
+
export declare enum PhaseState {
|
|
4
|
+
PENDING = "PENDING",
|
|
5
|
+
IN_PROGRESS = "IN_PROGRESS",
|
|
6
|
+
GATE_PENDING = "GATE_PENDING",
|
|
7
|
+
APPROVED = "APPROVED",
|
|
8
|
+
REJECTED = "REJECTED",
|
|
9
|
+
ARCHIVED = "ARCHIVED"
|
|
10
|
+
}
|
|
11
|
+
export declare const PHASE_TRANSITIONS: Readonly<Record<PhaseState, readonly PhaseState[]>>;
|
|
12
|
+
export interface PhaseTransitionContext {
|
|
13
|
+
projectId: string;
|
|
14
|
+
phase: GatePhase;
|
|
15
|
+
startedBy?: string;
|
|
16
|
+
correlationId?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class PhaseStateMachine {
|
|
19
|
+
private readonly eventBus?;
|
|
20
|
+
constructor(eventBus?: IDomainEventBus | undefined);
|
|
21
|
+
transition(from: PhaseState, to: PhaseState, ctx?: PhaseTransitionContext): true;
|
|
22
|
+
canTransition(from: PhaseState, to: PhaseState): boolean;
|
|
23
|
+
allowedTransitions(from: PhaseState): readonly PhaseState[];
|
|
24
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PhaseStateMachine = exports.PHASE_TRANSITIONS = exports.PhaseState = void 0;
|
|
4
|
+
const domain_events_1 = require("../events/domain-events");
|
|
5
|
+
var PhaseState;
|
|
6
|
+
(function (PhaseState) {
|
|
7
|
+
PhaseState["PENDING"] = "PENDING";
|
|
8
|
+
PhaseState["IN_PROGRESS"] = "IN_PROGRESS";
|
|
9
|
+
PhaseState["GATE_PENDING"] = "GATE_PENDING";
|
|
10
|
+
PhaseState["APPROVED"] = "APPROVED";
|
|
11
|
+
PhaseState["REJECTED"] = "REJECTED";
|
|
12
|
+
PhaseState["ARCHIVED"] = "ARCHIVED";
|
|
13
|
+
})(PhaseState || (exports.PhaseState = PhaseState = {}));
|
|
14
|
+
exports.PHASE_TRANSITIONS = {
|
|
15
|
+
[PhaseState.PENDING]: [PhaseState.IN_PROGRESS, PhaseState.ARCHIVED],
|
|
16
|
+
[PhaseState.IN_PROGRESS]: [PhaseState.GATE_PENDING, PhaseState.PENDING, PhaseState.ARCHIVED],
|
|
17
|
+
[PhaseState.GATE_PENDING]: [PhaseState.APPROVED, PhaseState.REJECTED],
|
|
18
|
+
[PhaseState.APPROVED]: [PhaseState.ARCHIVED],
|
|
19
|
+
[PhaseState.REJECTED]: [PhaseState.IN_PROGRESS, PhaseState.ARCHIVED],
|
|
20
|
+
[PhaseState.ARCHIVED]: [],
|
|
21
|
+
};
|
|
22
|
+
class PhaseStateMachine {
|
|
23
|
+
constructor(eventBus) {
|
|
24
|
+
this.eventBus = eventBus;
|
|
25
|
+
}
|
|
26
|
+
transition(from, to, ctx) {
|
|
27
|
+
const allowed = exports.PHASE_TRANSITIONS[from];
|
|
28
|
+
if (!allowed.includes(to)) {
|
|
29
|
+
throw new Error(`Invalid phase transition: ${from} → ${to}. ` +
|
|
30
|
+
`Allowed targets from ${from}: [${allowed.join(', ') || 'none'}]`);
|
|
31
|
+
}
|
|
32
|
+
if (this.eventBus && ctx) {
|
|
33
|
+
if (to === PhaseState.IN_PROGRESS) {
|
|
34
|
+
void this.eventBus.publish(domain_events_1.DomainEvents.phaseStarted({ projectId: ctx.projectId, phase: ctx.phase, startedBy: ctx.startedBy }, ctx.correlationId));
|
|
35
|
+
}
|
|
36
|
+
else if (to === PhaseState.APPROVED) {
|
|
37
|
+
void this.eventBus.publish(domain_events_1.DomainEvents.phaseCompleted({ projectId: ctx.projectId, phase: ctx.phase, completedAt: new Date().toISOString() }, ctx.correlationId));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
canTransition(from, to) {
|
|
43
|
+
return exports.PHASE_TRANSITIONS[from].includes(to);
|
|
44
|
+
}
|
|
45
|
+
allowedTransitions(from) {
|
|
46
|
+
return exports.PHASE_TRANSITIONS[from];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.PhaseStateMachine = PhaseStateMachine;
|
|
50
|
+
//# sourceMappingURL=phase-state-machine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-state-machine.js","sourceRoot":"","sources":["../../../src/domain/lifecycle/phase-state-machine.ts"],"names":[],"mappings":";;;AASA,2DAAuD;AAOvD,IAAY,UAaX;AAbD,WAAY,UAAU;IAEpB,iCAAmB,CAAA;IAEnB,yCAA2B,CAAA;IAE3B,2CAA6B,CAAA;IAE7B,mCAAqB,CAAA;IAErB,mCAAqB,CAAA;IAErB,mCAAqB,CAAA;AACvB,CAAC,EAbW,UAAU,0BAAV,UAAU,QAarB;AAMY,QAAA,iBAAiB,GAAwD;IACpF,CAAC,UAAU,CAAC,OAAO,CAAC,EAAO,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;IACxE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAG,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC;IAC7F,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;IACrE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;IAChD,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAM,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;IACxE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAM,EAAE;CAC9B,CAAC;AAcF,MAAa,iBAAiB;IAC5B,YAA6B,QAA0B;QAA1B,aAAQ,GAAR,QAAQ,CAAkB;IAAG,CAAC;IAW3D,UAAU,CACR,IAAgB,EAChB,EAAc,EACd,GAA4B;QAE5B,MAAM,OAAO,GAAG,yBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,MAAM,EAAE,IAAI;gBAC7C,wBAAwB,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAClE,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;gBAClC,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxB,4BAAY,CAAC,YAAY,CACvB,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EACxE,GAAG,CAAC,aAAa,CAClB,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,EAAE,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACtC,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CACxB,4BAAY,CAAC,cAAc,CACzB,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EACrF,GAAG,CAAC,aAAa,CAClB,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,aAAa,CAAC,IAAgB,EAAE,EAAc;QAC5C,OAAO,yBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAKD,kBAAkB,CAAC,IAAgB;QACjC,OAAO,yBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CACF;AA3DD,8CA2DC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { GitCommit } from './git-log-reader';
|
|
2
|
+
export type DoraRating = 'elite' | 'high' | 'medium' | 'low' | 'unknown';
|
|
3
|
+
export interface DoraMetric {
|
|
4
|
+
value: number;
|
|
5
|
+
label: string;
|
|
6
|
+
rating: DoraRating;
|
|
7
|
+
unit: string;
|
|
8
|
+
}
|
|
9
|
+
export interface DoraMetrics {
|
|
10
|
+
deploymentFrequency: DoraMetric;
|
|
11
|
+
leadTimeForChanges: DoraMetric;
|
|
12
|
+
changeFailureRate: DoraMetric;
|
|
13
|
+
timeToRestore: DoraMetric;
|
|
14
|
+
analyzedDays: number;
|
|
15
|
+
totalCommits: number;
|
|
16
|
+
available: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function calculateDora(commits: GitCommit[], sinceDays: number): DoraMetrics;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateDora = calculateDora;
|
|
4
|
+
function rateDeployFreq(perWeek) {
|
|
5
|
+
if (perWeek > 7)
|
|
6
|
+
return 'elite';
|
|
7
|
+
if (perWeek >= 1)
|
|
8
|
+
return 'high';
|
|
9
|
+
if (perWeek >= 0.25)
|
|
10
|
+
return 'medium';
|
|
11
|
+
return 'low';
|
|
12
|
+
}
|
|
13
|
+
function rateLeadTime(hours) {
|
|
14
|
+
if (hours < 1)
|
|
15
|
+
return 'elite';
|
|
16
|
+
if (hours < 168)
|
|
17
|
+
return 'high';
|
|
18
|
+
if (hours < 720)
|
|
19
|
+
return 'medium';
|
|
20
|
+
return 'low';
|
|
21
|
+
}
|
|
22
|
+
function rateFailureRate(pct) {
|
|
23
|
+
if (pct <= 5)
|
|
24
|
+
return 'elite';
|
|
25
|
+
if (pct <= 10)
|
|
26
|
+
return 'high';
|
|
27
|
+
if (pct <= 15)
|
|
28
|
+
return 'medium';
|
|
29
|
+
return 'low';
|
|
30
|
+
}
|
|
31
|
+
function rateMttr(hours) {
|
|
32
|
+
if (hours < 1)
|
|
33
|
+
return 'elite';
|
|
34
|
+
if (hours < 24)
|
|
35
|
+
return 'high';
|
|
36
|
+
if (hours < 168)
|
|
37
|
+
return 'medium';
|
|
38
|
+
return 'low';
|
|
39
|
+
}
|
|
40
|
+
function median(values) {
|
|
41
|
+
if (values.length === 0)
|
|
42
|
+
return 0;
|
|
43
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
44
|
+
const mid = Math.floor(sorted.length / 2);
|
|
45
|
+
return sorted.length % 2 === 0
|
|
46
|
+
? (sorted[mid - 1] + sorted[mid]) / 2
|
|
47
|
+
: sorted[mid];
|
|
48
|
+
}
|
|
49
|
+
function hoursLabel(hours) {
|
|
50
|
+
if (hours < 1)
|
|
51
|
+
return `${Math.round(hours * 60)} min`;
|
|
52
|
+
if (hours < 24)
|
|
53
|
+
return `${hours.toFixed(1)} h`;
|
|
54
|
+
return `${(hours / 24).toFixed(1)} days`;
|
|
55
|
+
}
|
|
56
|
+
const FIX_RE = /^(fix|hotfix|revert|rollback|bugfix|patch)[\s!(:]/i;
|
|
57
|
+
function calculateDora(commits, sinceDays) {
|
|
58
|
+
if (commits.length === 0) {
|
|
59
|
+
return emptyMetrics(sinceDays);
|
|
60
|
+
}
|
|
61
|
+
const weeks = sinceDays / 7;
|
|
62
|
+
const deploys = commits.filter(c => c.isMerge);
|
|
63
|
+
const deployCount = deploys.length > 0 ? deploys.length : commits.length;
|
|
64
|
+
const deploysPerWeek = deployCount / weeks;
|
|
65
|
+
const deployFreq = {
|
|
66
|
+
value: deploysPerWeek,
|
|
67
|
+
label: deploysPerWeek >= 1
|
|
68
|
+
? `${deploysPerWeek.toFixed(1)}/week`
|
|
69
|
+
: `${(deploysPerWeek * 4).toFixed(1)}/month`,
|
|
70
|
+
rating: rateDeployFreq(deploysPerWeek),
|
|
71
|
+
unit: 'deployments/week',
|
|
72
|
+
};
|
|
73
|
+
const commitDateMs = new Map();
|
|
74
|
+
for (const c of commits) {
|
|
75
|
+
commitDateMs.set(c.hash, new Date(c.date).getTime());
|
|
76
|
+
}
|
|
77
|
+
const leadTimesHours = [];
|
|
78
|
+
for (const merge of deploys) {
|
|
79
|
+
const mergeMs = commitDateMs.get(merge.hash) ?? 0;
|
|
80
|
+
const featureHash = merge.parents[1];
|
|
81
|
+
const featureMs = featureHash ? (commitDateMs.get(featureHash) ?? mergeMs) : mergeMs;
|
|
82
|
+
const diffHours = (mergeMs - featureMs) / 3_600_000;
|
|
83
|
+
if (diffHours > 0 && diffHours < 24 * 30) {
|
|
84
|
+
leadTimesHours.push(diffHours);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const medianLeadHours = leadTimesHours.length > 0 ? median(leadTimesHours) : 0;
|
|
88
|
+
const leadTime = {
|
|
89
|
+
value: medianLeadHours,
|
|
90
|
+
label: leadTimesHours.length > 0 ? hoursLabel(medianLeadHours) : 'n/a (no merges)',
|
|
91
|
+
rating: leadTimesHours.length > 0 ? rateLeadTime(medianLeadHours) : 'unknown',
|
|
92
|
+
unit: 'hours (median)',
|
|
93
|
+
};
|
|
94
|
+
const fixCommits = commits.filter(c => FIX_RE.test(c.subject));
|
|
95
|
+
const cfr = (fixCommits.length / commits.length) * 100;
|
|
96
|
+
const changeFailureRate = {
|
|
97
|
+
value: cfr,
|
|
98
|
+
label: `${cfr.toFixed(1)}%`,
|
|
99
|
+
rating: rateFailureRate(cfr),
|
|
100
|
+
unit: '% fix/revert commits',
|
|
101
|
+
};
|
|
102
|
+
const sorted = [...commits].sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime());
|
|
103
|
+
const restoreTimesHours = [];
|
|
104
|
+
for (let i = 0; i < sorted.length; i++) {
|
|
105
|
+
if (!FIX_RE.test(sorted[i].subject))
|
|
106
|
+
continue;
|
|
107
|
+
for (let j = i - 1; j >= 0; j--) {
|
|
108
|
+
if (!FIX_RE.test(sorted[j].subject)) {
|
|
109
|
+
const diffH = (new Date(sorted[i].date).getTime() - new Date(sorted[j].date).getTime()) / 3_600_000;
|
|
110
|
+
if (diffH > 0 && diffH < 24 * 14) {
|
|
111
|
+
restoreTimesHours.push(diffH);
|
|
112
|
+
}
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const medianRestoreHours = restoreTimesHours.length > 0 ? median(restoreTimesHours) : 0;
|
|
118
|
+
const timeToRestore = {
|
|
119
|
+
value: medianRestoreHours,
|
|
120
|
+
label: restoreTimesHours.length > 0 ? hoursLabel(medianRestoreHours) : 'n/a (no fix commits)',
|
|
121
|
+
rating: restoreTimesHours.length > 0 ? rateMttr(medianRestoreHours) : 'unknown',
|
|
122
|
+
unit: 'hours (median)',
|
|
123
|
+
};
|
|
124
|
+
return {
|
|
125
|
+
deploymentFrequency: deployFreq,
|
|
126
|
+
leadTimeForChanges: leadTime,
|
|
127
|
+
changeFailureRate,
|
|
128
|
+
timeToRestore,
|
|
129
|
+
analyzedDays: sinceDays,
|
|
130
|
+
totalCommits: commits.length,
|
|
131
|
+
available: true,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function emptyMetrics(sinceDays) {
|
|
135
|
+
const none = { value: 0, label: 'n/a', rating: 'unknown', unit: '' };
|
|
136
|
+
return {
|
|
137
|
+
deploymentFrequency: none,
|
|
138
|
+
leadTimeForChanges: none,
|
|
139
|
+
changeFailureRate: none,
|
|
140
|
+
timeToRestore: none,
|
|
141
|
+
analyzedDays: sinceDays,
|
|
142
|
+
totalCommits: 0,
|
|
143
|
+
available: false,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=dora-calculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dora-calculator.js","sourceRoot":"","sources":["../../../src/domain/metrics/dora-calculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|