context-probe 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +183 -0
- package/README.ja.md +323 -0
- package/README.md +323 -0
- package/dist/src/analyzers/architecture-contract-declarations-dart.d.ts +2 -0
- package/dist/src/analyzers/architecture-contract-declarations-dart.js +129 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma-core.d.ts +2 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma-core.js +89 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma-shared.d.ts +10 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma-shared.js +56 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma.d.ts +1 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma.js +1 -0
- package/dist/src/analyzers/architecture-contract-declarations-shared.d.ts +8 -0
- package/dist/src/analyzers/architecture-contract-declarations-shared.js +21 -0
- package/dist/src/analyzers/architecture-contract-declarations.d.ts +2 -0
- package/dist/src/analyzers/architecture-contract-declarations.js +2 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-analysis.d.ts +8 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-analysis.js +70 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-core.d.ts +8 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-core.js +4 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-entry.d.ts +19 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-entry.js +89 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-scope.d.ts +8 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-scope.js +18 -0
- package/dist/src/analyzers/architecture-contract-score-baseline.d.ts +1 -0
- package/dist/src/analyzers/architecture-contract-score-baseline.js +1 -0
- package/dist/src/analyzers/architecture-contract-score-current.d.ts +3 -0
- package/dist/src/analyzers/architecture-contract-score-current.js +39 -0
- package/dist/src/analyzers/architecture-contract-score-shared.d.ts +18 -0
- package/dist/src/analyzers/architecture-contract-score-shared.js +9 -0
- package/dist/src/analyzers/architecture-contract-scoring.d.ts +15 -0
- package/dist/src/analyzers/architecture-contract-scoring.js +70 -0
- package/dist/src/analyzers/architecture-contract-stats-core.d.ts +9 -0
- package/dist/src/analyzers/architecture-contract-stats-core.js +20 -0
- package/dist/src/analyzers/architecture-contract-stats-file.d.ts +23 -0
- package/dist/src/analyzers/architecture-contract-stats-file.js +77 -0
- package/dist/src/analyzers/architecture-contract-stats.d.ts +2 -0
- package/dist/src/analyzers/architecture-contract-stats.js +1 -0
- package/dist/src/analyzers/architecture-contract-types.d.ts +24 -0
- package/dist/src/analyzers/architecture-contract-types.js +1 -0
- package/dist/src/analyzers/architecture-contracts.d.ts +2 -0
- package/dist/src/analyzers/architecture-contracts.js +1 -0
- package/dist/src/analyzers/architecture-cti-ingest.d.ts +19 -0
- package/dist/src/analyzers/architecture-cti-ingest.js +64 -0
- package/dist/src/analyzers/architecture-delivery-normalization-core.d.ts +6 -0
- package/dist/src/analyzers/architecture-delivery-normalization-core.js +83 -0
- package/dist/src/analyzers/architecture-delivery-normalization-shared.d.ts +16 -0
- package/dist/src/analyzers/architecture-delivery-normalization-shared.js +1 -0
- package/dist/src/analyzers/architecture-delivery-normalization-spec.d.ts +13 -0
- package/dist/src/analyzers/architecture-delivery-normalization-spec.js +52 -0
- package/dist/src/analyzers/architecture-delivery-normalization.d.ts +6 -0
- package/dist/src/analyzers/architecture-delivery-normalization.js +4 -0
- package/dist/src/analyzers/architecture-evolution-efficiency.d.ts +8 -0
- package/dist/src/analyzers/architecture-evolution-efficiency.js +76 -0
- package/dist/src/analyzers/architecture-evolution-locality.d.ts +7 -0
- package/dist/src/analyzers/architecture-evolution-locality.js +129 -0
- package/dist/src/analyzers/architecture-evolution-shared.d.ts +33 -0
- package/dist/src/analyzers/architecture-evolution-shared.js +29 -0
- package/dist/src/analyzers/architecture-evolution.d.ts +3 -0
- package/dist/src/analyzers/architecture-evolution.js +2 -0
- package/dist/src/analyzers/architecture-observation-ingest-delivery.d.ts +9 -0
- package/dist/src/analyzers/architecture-observation-ingest-delivery.js +62 -0
- package/dist/src/analyzers/architecture-observation-ingest-shared.d.ts +13 -0
- package/dist/src/analyzers/architecture-observation-ingest-shared.js +12 -0
- package/dist/src/analyzers/architecture-observation-ingest-telemetry.d.ts +10 -0
- package/dist/src/analyzers/architecture-observation-ingest-telemetry.js +71 -0
- package/dist/src/analyzers/architecture-observation-ingest.d.ts +5 -0
- package/dist/src/analyzers/architecture-observation-ingest.js +2 -0
- package/dist/src/analyzers/architecture-observation-normalization-shared.d.ts +10 -0
- package/dist/src/analyzers/architecture-observation-normalization-shared.js +19 -0
- package/dist/src/analyzers/architecture-operations-common-ops.d.ts +16 -0
- package/dist/src/analyzers/architecture-operations-common-ops.js +76 -0
- package/dist/src/analyzers/architecture-operations.d.ts +27 -0
- package/dist/src/analyzers/architecture-operations.js +56 -0
- package/dist/src/analyzers/architecture-pattern-runtime-fallback.d.ts +8 -0
- package/dist/src/analyzers/architecture-pattern-runtime-fallback.js +79 -0
- package/dist/src/analyzers/architecture-pattern-runtime-family.d.ts +7 -0
- package/dist/src/analyzers/architecture-pattern-runtime-family.js +56 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization-blocks.d.ts +12 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization-blocks.js +41 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization-math.d.ts +10 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization-math.js +19 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization.d.ts +21 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization.js +103 -0
- package/dist/src/analyzers/architecture-pattern-runtime-resolution-shared.d.ts +16 -0
- package/dist/src/analyzers/architecture-pattern-runtime-resolution-shared.js +65 -0
- package/dist/src/analyzers/architecture-pattern-runtime-resolution.d.ts +15 -0
- package/dist/src/analyzers/architecture-pattern-runtime-resolution.js +99 -0
- package/dist/src/analyzers/architecture-pattern-runtime-shared.d.ts +2 -0
- package/dist/src/analyzers/architecture-pattern-runtime-shared.js +1 -0
- package/dist/src/analyzers/architecture-pattern-runtime-types.d.ts +29 -0
- package/dist/src/analyzers/architecture-pattern-runtime-types.js +1 -0
- package/dist/src/analyzers/architecture-pattern-runtime.d.ts +7 -0
- package/dist/src/analyzers/architecture-pattern-runtime.js +20 -0
- package/dist/src/analyzers/architecture-purity-signals.d.ts +6 -0
- package/dist/src/analyzers/architecture-purity-signals.js +21 -0
- package/dist/src/analyzers/architecture-purity.d.ts +2 -0
- package/dist/src/analyzers/architecture-purity.js +1 -0
- package/dist/src/analyzers/architecture-scenarios.d.ts +22 -0
- package/dist/src/analyzers/architecture-scenarios.js +95 -0
- package/dist/src/analyzers/architecture-source-loader-command.d.ts +8 -0
- package/dist/src/analyzers/architecture-source-loader-command.js +73 -0
- package/dist/src/analyzers/architecture-source-loader-core.d.ts +22 -0
- package/dist/src/analyzers/architecture-source-loader-core.js +41 -0
- package/dist/src/analyzers/architecture-source-loader-file.d.ts +8 -0
- package/dist/src/analyzers/architecture-source-loader-file.js +28 -0
- package/dist/src/analyzers/architecture-source-loader-shared.d.ts +24 -0
- package/dist/src/analyzers/architecture-source-loader-shared.js +4 -0
- package/dist/src/analyzers/architecture-source-loader.d.ts +2 -0
- package/dist/src/analyzers/architecture-source-loader.js +1 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-band.d.ts +10 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-band.js +78 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-core.d.ts +6 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-core.js +30 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-shared.d.ts +16 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-shared.js +1 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-spec.d.ts +10 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-spec.js +20 -0
- package/dist/src/analyzers/architecture-telemetry-normalization.d.ts +6 -0
- package/dist/src/analyzers/architecture-telemetry-normalization.js +4 -0
- package/dist/src/analyzers/architecture-topology-core.d.ts +7 -0
- package/dist/src/analyzers/architecture-topology-core.js +4 -0
- package/dist/src/analyzers/architecture-topology-shared.d.ts +2 -0
- package/dist/src/analyzers/architecture-topology-shared.js +9 -0
- package/dist/src/analyzers/architecture-topology-signals.d.ts +21 -0
- package/dist/src/analyzers/architecture-topology-signals.js +98 -0
- package/dist/src/analyzers/architecture-topology.d.ts +2 -0
- package/dist/src/analyzers/architecture-topology.js +1 -0
- package/dist/src/analyzers/architecture.d.ts +16 -0
- package/dist/src/analyzers/architecture.js +44 -0
- package/dist/src/analyzers/code-contracts.d.ts +4 -0
- package/dist/src/analyzers/code-contracts.js +74 -0
- package/dist/src/analyzers/code-dart.d.ts +3 -0
- package/dist/src/analyzers/code-dart.js +57 -0
- package/dist/src/analyzers/code-ecma.d.ts +2 -0
- package/dist/src/analyzers/code-ecma.js +53 -0
- package/dist/src/analyzers/code-shared.d.ts +19 -0
- package/dist/src/analyzers/code-shared.js +64 -0
- package/dist/src/analyzers/code.d.ts +3 -0
- package/dist/src/analyzers/code.js +34 -0
- package/dist/src/analyzers/contract-files.d.ts +13 -0
- package/dist/src/analyzers/contract-files.js +80 -0
- package/dist/src/analyzers/cti-complexity-components.d.ts +12 -0
- package/dist/src/analyzers/cti-complexity-components.js +83 -0
- package/dist/src/analyzers/cti-complexity-recorder.d.ts +31 -0
- package/dist/src/analyzers/cti-complexity-recorder.js +58 -0
- package/dist/src/analyzers/cti-complexity.d.ts +7 -0
- package/dist/src/analyzers/cti-complexity.js +15 -0
- package/dist/src/analyzers/cti-helpers.d.ts +7 -0
- package/dist/src/analyzers/cti-helpers.js +40 -0
- package/dist/src/analyzers/cti.d.ts +2 -0
- package/dist/src/analyzers/cti.js +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +95 -0
- package/dist/src/command-architecture-inputs-loaders-config.d.ts +24 -0
- package/dist/src/command-architecture-inputs-loaders-config.js +17 -0
- package/dist/src/command-architecture-inputs-loaders-data.d.ts +22 -0
- package/dist/src/command-architecture-inputs-loaders-data.js +105 -0
- package/dist/src/command-architecture-inputs-loaders.d.ts +42 -0
- package/dist/src/command-architecture-inputs-loaders.js +12 -0
- package/dist/src/command-architecture-inputs-provenance.d.ts +2 -0
- package/dist/src/command-architecture-inputs-provenance.js +29 -0
- package/dist/src/command-architecture-inputs-resolved.d.ts +44 -0
- package/dist/src/command-architecture-inputs-resolved.js +72 -0
- package/dist/src/command-architecture-inputs-sources.d.ts +2 -0
- package/dist/src/command-architecture-inputs-sources.js +1 -0
- package/dist/src/command-architecture-inputs.d.ts +4 -0
- package/dist/src/command-architecture-inputs.js +63 -0
- package/dist/src/command-architecture.d.ts +2 -0
- package/dist/src/command-architecture.js +35 -0
- package/dist/src/command-domain.d.ts +2 -0
- package/dist/src/command-domain.js +124 -0
- package/dist/src/command-extraction-helpers.d.ts +13 -0
- package/dist/src/command-extraction-helpers.js +33 -0
- package/dist/src/command-helpers.d.ts +4 -0
- package/dist/src/command-helpers.js +3 -0
- package/dist/src/command-history.d.ts +2 -0
- package/dist/src/command-history.js +61 -0
- package/dist/src/command-input-loaders-architecture-compat-delivery-complexity.d.ts +3 -0
- package/dist/src/command-input-loaders-architecture-compat-delivery-complexity.js +132 -0
- package/dist/src/command-input-loaders-architecture-compat-pattern-runtime.d.ts +2 -0
- package/dist/src/command-input-loaders-architecture-compat-pattern-runtime.js +54 -0
- package/dist/src/command-input-loaders-architecture-compat-scenario.d.ts +3 -0
- package/dist/src/command-input-loaders-architecture-compat-scenario.js +94 -0
- package/dist/src/command-input-loaders-architecture-compat-shared.d.ts +17 -0
- package/dist/src/command-input-loaders-architecture-compat-shared.js +109 -0
- package/dist/src/command-input-loaders-architecture-compat-telemetry.d.ts +3 -0
- package/dist/src/command-input-loaders-architecture-compat-telemetry.js +137 -0
- package/dist/src/command-input-loaders-architecture-compat-topology-boundary.d.ts +3 -0
- package/dist/src/command-input-loaders-architecture-compat-topology-boundary.js +178 -0
- package/dist/src/command-input-loaders-architecture-compat.d.ts +4 -0
- package/dist/src/command-input-loaders-architecture-compat.js +4 -0
- package/dist/src/command-input-loaders-architecture-config.d.ts +34 -0
- package/dist/src/command-input-loaders-architecture-config.js +25 -0
- package/dist/src/command-input-loaders-architecture-data.d.ts +17 -0
- package/dist/src/command-input-loaders-architecture-data.js +47 -0
- package/dist/src/command-input-loaders-architecture.d.ts +2 -0
- package/dist/src/command-input-loaders-architecture.js +2 -0
- package/dist/src/command-input-loaders-core.d.ts +20 -0
- package/dist/src/command-input-loaders-core.js +58 -0
- package/dist/src/command-input-loaders.d.ts +2 -0
- package/dist/src/command-input-loaders.js +2 -0
- package/dist/src/command-path-helpers.d.ts +6 -0
- package/dist/src/command-path-helpers.js +15 -0
- package/dist/src/command-score-driven.d.ts +19 -0
- package/dist/src/command-score-driven.js +96 -0
- package/dist/src/command-score.d.ts +3 -0
- package/dist/src/command-score.js +78 -0
- package/dist/src/command-shadow-rollout-batch.d.ts +5 -0
- package/dist/src/command-shadow-rollout-batch.js +85 -0
- package/dist/src/command-shadow-rollout-gate.d.ts +5 -0
- package/dist/src/command-shadow-rollout-gate.js +33 -0
- package/dist/src/command-shadow-rollout-observe.d.ts +5 -0
- package/dist/src/command-shadow-rollout-observe.js +43 -0
- package/dist/src/command-shadow-rollout-shared.d.ts +4 -0
- package/dist/src/command-shadow-rollout-shared.js +23 -0
- package/dist/src/command-shadow-rollout.d.ts +2 -0
- package/dist/src/command-shadow-rollout.js +16 -0
- package/dist/src/command-types.d.ts +4 -0
- package/dist/src/command-types.js +1 -0
- package/dist/src/commands.d.ts +6 -0
- package/dist/src/commands.js +66 -0
- package/dist/src/core/aggregate-fitness-core.d.ts +24 -0
- package/dist/src/core/aggregate-fitness-core.js +40 -0
- package/dist/src/core/aggregate-fitness-evidence.d.ts +2 -0
- package/dist/src/core/aggregate-fitness-evidence.js +24 -0
- package/dist/src/core/aggregate-fitness-mapping.d.ts +17 -0
- package/dist/src/core/aggregate-fitness-mapping.js +57 -0
- package/dist/src/core/aggregate-fitness-scoring.d.ts +24 -0
- package/dist/src/core/aggregate-fitness-scoring.js +71 -0
- package/dist/src/core/aggregate-fitness-shared.d.ts +21 -0
- package/dist/src/core/aggregate-fitness-shared.js +127 -0
- package/dist/src/core/aggregate-fitness.d.ts +2 -0
- package/dist/src/core/aggregate-fitness.js +1 -0
- package/dist/src/core/architecture-purity-core.d.ts +3 -0
- package/dist/src/core/architecture-purity-core.js +94 -0
- package/dist/src/core/architecture-purity-types.d.ts +18 -0
- package/dist/src/core/architecture-purity-types.js +1 -0
- package/dist/src/core/architecture-scenario-quality.d.ts +5 -0
- package/dist/src/core/architecture-scenario-quality.js +52 -0
- package/dist/src/core/architecture-scoring-evidence-architecture.d.ts +10 -0
- package/dist/src/core/architecture-scoring-evidence-architecture.js +50 -0
- package/dist/src/core/architecture-scoring-evidence-findings.d.ts +2 -0
- package/dist/src/core/architecture-scoring-evidence-findings.js +2 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-ingest.d.ts +5 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-ingest.js +68 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-shared.d.ts +20 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-shared.js +24 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-source.d.ts +7 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-source.js +16 -0
- package/dist/src/core/architecture-scoring-evidence-inputs.d.ts +2 -0
- package/dist/src/core/architecture-scoring-evidence-inputs.js +2 -0
- package/dist/src/core/architecture-scoring-evidence-observability.d.ts +12 -0
- package/dist/src/core/architecture-scoring-evidence-observability.js +75 -0
- package/dist/src/core/architecture-scoring-evidence.d.ts +30 -0
- package/dist/src/core/architecture-scoring-evidence.js +76 -0
- package/dist/src/core/architecture-scoring-evolution-inputs.d.ts +10 -0
- package/dist/src/core/architecture-scoring-evolution-inputs.js +56 -0
- package/dist/src/core/architecture-scoring-inputs-complexity.d.ts +7 -0
- package/dist/src/core/architecture-scoring-inputs-complexity.js +24 -0
- package/dist/src/core/architecture-scoring-inputs-observability.d.ts +11 -0
- package/dist/src/core/architecture-scoring-inputs-observability.js +84 -0
- package/dist/src/core/architecture-scoring-inputs-static.d.ts +13 -0
- package/dist/src/core/architecture-scoring-inputs-static.js +48 -0
- package/dist/src/core/architecture-scoring-inputs.d.ts +9 -0
- package/dist/src/core/architecture-scoring-inputs.js +16 -0
- package/dist/src/core/architecture-scoring-metric-shared.d.ts +11 -0
- package/dist/src/core/architecture-scoring-metric-shared.js +3 -0
- package/dist/src/core/architecture-scoring-metrics-composite.d.ts +3 -0
- package/dist/src/core/architecture-scoring-metrics-composite.js +56 -0
- package/dist/src/core/architecture-scoring-metrics-core.d.ts +3 -0
- package/dist/src/core/architecture-scoring-metrics-core.js +81 -0
- package/dist/src/core/architecture-scoring-metrics-evolution.d.ts +3 -0
- package/dist/src/core/architecture-scoring-metrics-evolution.js +74 -0
- package/dist/src/core/architecture-scoring-metrics-runtime.d.ts +3 -0
- package/dist/src/core/architecture-scoring-metrics-runtime.js +68 -0
- package/dist/src/core/architecture-scoring-metrics.d.ts +4 -0
- package/dist/src/core/architecture-scoring-metrics.js +14 -0
- package/dist/src/core/architecture-scoring-types.d.ts +94 -0
- package/dist/src/core/architecture-scoring-types.js +1 -0
- package/dist/src/core/architecture-scoring.d.ts +9 -0
- package/dist/src/core/architecture-scoring.js +82 -0
- package/dist/src/core/artifacts.d.ts +3 -0
- package/dist/src/core/artifacts.js +58 -0
- package/dist/src/core/boundary-fitness-attraction.d.ts +4 -0
- package/dist/src/core/boundary-fitness-attraction.js +11 -0
- package/dist/src/core/boundary-fitness-contexts.d.ts +7 -0
- package/dist/src/core/boundary-fitness-contexts.js +80 -0
- package/dist/src/core/boundary-fitness-core.d.ts +28 -0
- package/dist/src/core/boundary-fitness-core.js +132 -0
- package/dist/src/core/boundary-fitness-evidence.d.ts +17 -0
- package/dist/src/core/boundary-fitness-evidence.js +27 -0
- package/dist/src/core/boundary-fitness-separation.d.ts +13 -0
- package/dist/src/core/boundary-fitness-separation.js +14 -0
- package/dist/src/core/boundary-fitness-shared.d.ts +3 -0
- package/dist/src/core/boundary-fitness-shared.js +17 -0
- package/dist/src/core/boundary-fitness-signals.d.ts +21 -0
- package/dist/src/core/boundary-fitness-signals.js +104 -0
- package/dist/src/core/boundary-fitness.d.ts +3 -0
- package/dist/src/core/boundary-fitness.js +2 -0
- package/dist/src/core/command-analytics.d.ts +32 -0
- package/dist/src/core/command-analytics.js +80 -0
- package/dist/src/core/contracts/analysis.d.ts +105 -0
- package/dist/src/core/contracts/analysis.js +1 -0
- package/dist/src/core/contracts/architecture-complexity.d.ts +20 -0
- package/dist/src/core/contracts/architecture-complexity.js +1 -0
- package/dist/src/core/contracts/architecture-constraints.d.ts +62 -0
- package/dist/src/core/contracts/architecture-constraints.js +1 -0
- package/dist/src/core/contracts/architecture-contract-baseline.d.ts +33 -0
- package/dist/src/core/contracts/architecture-contract-baseline.js +1 -0
- package/dist/src/core/contracts/architecture-delivery.d.ts +42 -0
- package/dist/src/core/contracts/architecture-delivery.js +1 -0
- package/dist/src/core/contracts/architecture-normalization.d.ts +6 -0
- package/dist/src/core/contracts/architecture-normalization.js +1 -0
- package/dist/src/core/contracts/architecture-pattern-runtime.d.ts +69 -0
- package/dist/src/core/contracts/architecture-pattern-runtime.js +1 -0
- package/dist/src/core/contracts/architecture-scenarios.d.ts +62 -0
- package/dist/src/core/contracts/architecture-scenarios.js +1 -0
- package/dist/src/core/contracts/architecture-telemetry.d.ts +47 -0
- package/dist/src/core/contracts/architecture-telemetry.js +1 -0
- package/dist/src/core/contracts/architecture-topology.d.ts +35 -0
- package/dist/src/core/contracts/architecture-topology.js +1 -0
- package/dist/src/core/contracts/architecture.d.ts +9 -0
- package/dist/src/core/contracts/architecture.js +9 -0
- package/dist/src/core/contracts/common.d.ts +87 -0
- package/dist/src/core/contracts/common.js +1 -0
- package/dist/src/core/contracts/domain-design-score.d.ts +14 -0
- package/dist/src/core/contracts/domain-design-score.js +1 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-batch.d.ts +58 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-batch.js +1 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-gate.d.ts +46 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-gate.js +1 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-observation.d.ts +17 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-observation.js +1 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-registry.d.ts +15 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-registry.js +1 -0
- package/dist/src/core/contracts/domain-design.d.ts +5 -0
- package/dist/src/core/contracts/domain-design.js +5 -0
- package/dist/src/core/contracts/domain-model.d.ts +35 -0
- package/dist/src/core/contracts/domain-model.js +1 -0
- package/dist/src/core/contracts/governance-extraction.d.ts +65 -0
- package/dist/src/core/contracts/governance-extraction.js +1 -0
- package/dist/src/core/contracts/governance-policy.d.ts +23 -0
- package/dist/src/core/contracts/governance-policy.js +1 -0
- package/dist/src/core/contracts/governance-review.d.ts +31 -0
- package/dist/src/core/contracts/governance-review.js +1 -0
- package/dist/src/core/contracts/governance-runtime.d.ts +12 -0
- package/dist/src/core/contracts/governance-runtime.js +1 -0
- package/dist/src/core/contracts/governance-scoring.d.ts +41 -0
- package/dist/src/core/contracts/governance-scoring.js +1 -0
- package/dist/src/core/contracts/governance.d.ts +5 -0
- package/dist/src/core/contracts/governance.js +5 -0
- package/dist/src/core/contracts.d.ts +6 -0
- package/dist/src/core/contracts.js +6 -0
- package/dist/src/core/document-extractor-glossary.d.ts +3 -0
- package/dist/src/core/document-extractor-glossary.js +90 -0
- package/dist/src/core/document-extractor-identity.d.ts +18 -0
- package/dist/src/core/document-extractor-identity.js +37 -0
- package/dist/src/core/document-extractor-shared.d.ts +3 -0
- package/dist/src/core/document-extractor-shared.js +2 -0
- package/dist/src/core/document-extractor-statements-classification-cli.d.ts +3 -0
- package/dist/src/core/document-extractor-statements-classification-cli.js +50 -0
- package/dist/src/core/document-extractor-statements-classification-core.d.ts +17 -0
- package/dist/src/core/document-extractor-statements-classification-core.js +91 -0
- package/dist/src/core/document-extractor-statements-classification-heuristic.d.ts +3 -0
- package/dist/src/core/document-extractor-statements-classification-heuristic.js +32 -0
- package/dist/src/core/document-extractor-statements-classification.d.ts +2 -0
- package/dist/src/core/document-extractor-statements-classification.js +2 -0
- package/dist/src/core/document-extractor-statements-segments.d.ts +3 -0
- package/dist/src/core/document-extractor-statements-segments.js +38 -0
- package/dist/src/core/document-extractor-statements.d.ts +1 -0
- package/dist/src/core/document-extractor-statements.js +1 -0
- package/dist/src/core/document-extractor-text-normalization.d.ts +5 -0
- package/dist/src/core/document-extractor-text-normalization.js +29 -0
- package/dist/src/core/document-extractor-text-review.d.ts +3 -0
- package/dist/src/core/document-extractor-text-review.js +15 -0
- package/dist/src/core/document-extractor-text-signals.d.ts +11 -0
- package/dist/src/core/document-extractor-text-signals.js +115 -0
- package/dist/src/core/document-extractor-text.d.ts +3 -0
- package/dist/src/core/document-extractor-text.js +3 -0
- package/dist/src/core/document-extractor-types.d.ts +30 -0
- package/dist/src/core/document-extractor-types.js +1 -0
- package/dist/src/core/document-extractors-review.d.ts +4 -0
- package/dist/src/core/document-extractors-review.js +10 -0
- package/dist/src/core/document-extractors-runner.d.ts +15 -0
- package/dist/src/core/document-extractors-runner.js +31 -0
- package/dist/src/core/document-extractors.d.ts +24 -0
- package/dist/src/core/document-extractors.js +130 -0
- package/dist/src/core/domain-design-matching.d.ts +2 -0
- package/dist/src/core/domain-design-matching.js +85 -0
- package/dist/src/core/domain-design-scoring-context.d.ts +25 -0
- package/dist/src/core/domain-design-scoring-context.js +66 -0
- package/dist/src/core/domain-design-scoring-core-docs.d.ts +5 -0
- package/dist/src/core/domain-design-scoring-core-docs.js +8 -0
- package/dist/src/core/domain-design-scoring-core.d.ts +24 -0
- package/dist/src/core/domain-design-scoring-core.js +137 -0
- package/dist/src/core/domain-design-scoring-docs-afs.d.ts +2 -0
- package/dist/src/core/domain-design-scoring-docs-afs.js +40 -0
- package/dist/src/core/domain-design-scoring-docs-bfs.d.ts +2 -0
- package/dist/src/core/domain-design-scoring-docs-bfs.js +46 -0
- package/dist/src/core/domain-design-scoring-docs-core.d.ts +12 -0
- package/dist/src/core/domain-design-scoring-docs-core.js +47 -0
- package/dist/src/core/domain-design-scoring-docs-drf.d.ts +2 -0
- package/dist/src/core/domain-design-scoring-docs-drf.js +55 -0
- package/dist/src/core/domain-design-scoring-docs-shared.d.ts +25 -0
- package/dist/src/core/domain-design-scoring-docs-shared.js +1 -0
- package/dist/src/core/domain-design-scoring-docs-uli.d.ts +2 -0
- package/dist/src/core/domain-design-scoring-docs-uli.js +39 -0
- package/dist/src/core/domain-design-scoring-docs.d.ts +1 -0
- package/dist/src/core/domain-design-scoring-docs.js +1 -0
- package/dist/src/core/domain-design-scoring-locality.d.ts +27 -0
- package/dist/src/core/domain-design-scoring-locality.js +87 -0
- package/dist/src/core/domain-design-scoring-mccs.d.ts +18 -0
- package/dist/src/core/domain-design-scoring-mccs.js +29 -0
- package/dist/src/core/domain-design-scoring-pilot.d.ts +13 -0
- package/dist/src/core/domain-design-scoring-pilot.js +57 -0
- package/dist/src/core/domain-design-scoring-response-shared.d.ts +20 -0
- package/dist/src/core/domain-design-scoring-response-shared.js +30 -0
- package/dist/src/core/domain-design-scoring-response.d.ts +18 -0
- package/dist/src/core/domain-design-scoring-response.js +27 -0
- package/dist/src/core/domain-design-scoring-support-drf.d.ts +17 -0
- package/dist/src/core/domain-design-scoring-support-drf.js +118 -0
- package/dist/src/core/domain-design-scoring-support-persistence.d.ts +6 -0
- package/dist/src/core/domain-design-scoring-support-persistence.js +8 -0
- package/dist/src/core/domain-design-scoring-support-uli.d.ts +12 -0
- package/dist/src/core/domain-design-scoring-support-uli.js +31 -0
- package/dist/src/core/domain-design-scoring-support.d.ts +3 -0
- package/dist/src/core/domain-design-scoring-support.js +3 -0
- package/dist/src/core/domain-design-scoring.d.ts +1 -0
- package/dist/src/core/domain-design-scoring.js +1 -0
- package/dist/src/core/formula-parser-tokenize.d.ts +14 -0
- package/dist/src/core/formula-parser-tokenize.js +58 -0
- package/dist/src/core/formula-parser.d.ts +1 -0
- package/dist/src/core/formula-parser.js +91 -0
- package/dist/src/core/formula.d.ts +1 -0
- package/dist/src/core/formula.js +1 -0
- package/dist/src/core/history-locality.d.ts +5 -0
- package/dist/src/core/history-locality.js +48 -0
- package/dist/src/core/history-normalization.d.ts +13 -0
- package/dist/src/core/history-normalization.js +105 -0
- package/dist/src/core/history-persistence-analysis.d.ts +6 -0
- package/dist/src/core/history-persistence-analysis.js +26 -0
- package/dist/src/core/history-persistence-clusters.d.ts +6 -0
- package/dist/src/core/history-persistence-clusters.js +9 -0
- package/dist/src/core/history-persistence-comparison.d.ts +6 -0
- package/dist/src/core/history-persistence-comparison.js +66 -0
- package/dist/src/core/history-persistence-components.d.ts +8 -0
- package/dist/src/core/history-persistence-components.js +99 -0
- package/dist/src/core/history-persistence-stability.d.ts +8 -0
- package/dist/src/core/history-persistence-stability.js +79 -0
- package/dist/src/core/history-persistence.d.ts +2 -0
- package/dist/src/core/history-persistence.js +2 -0
- package/dist/src/core/history-shared.d.ts +27 -0
- package/dist/src/core/history-shared.js +145 -0
- package/dist/src/core/history.d.ts +3 -0
- package/dist/src/core/history.js +3 -0
- package/dist/src/core/io.d.ts +9 -0
- package/dist/src/core/io.js +86 -0
- package/dist/src/core/measurement-metadata.d.ts +13 -0
- package/dist/src/core/measurement-metadata.js +142 -0
- package/dist/src/core/model.d.ts +3 -0
- package/dist/src/core/model.js +33 -0
- package/dist/src/core/policy-defaults-architecture.d.ts +2 -0
- package/dist/src/core/policy-defaults-architecture.js +75 -0
- package/dist/src/core/policy-defaults-domain.d.ts +2 -0
- package/dist/src/core/policy-defaults-domain.js +51 -0
- package/dist/src/core/policy-defaults-profiles.d.ts +2 -0
- package/dist/src/core/policy-defaults-profiles.js +24 -0
- package/dist/src/core/policy-defaults.d.ts +2 -0
- package/dist/src/core/policy-defaults.js +4 -0
- package/dist/src/core/policy-formulas.d.ts +5 -0
- package/dist/src/core/policy-formulas.js +5 -0
- package/dist/src/core/policy.d.ts +4 -0
- package/dist/src/core/policy.js +20 -0
- package/dist/src/core/progress.d.ts +8 -0
- package/dist/src/core/progress.js +40 -0
- package/dist/src/core/providers-normalization.d.ts +7 -0
- package/dist/src/core/providers-normalization.js +27 -0
- package/dist/src/core/providers-prompt.d.ts +4 -0
- package/dist/src/core/providers-prompt.js +63 -0
- package/dist/src/core/providers-runner.d.ts +3 -0
- package/dist/src/core/providers-runner.js +32 -0
- package/dist/src/core/providers-types.d.ts +10 -0
- package/dist/src/core/providers-types.js +1 -0
- package/dist/src/core/providers.d.ts +4 -0
- package/dist/src/core/providers.js +30 -0
- package/dist/src/core/report-actionability.d.ts +4 -0
- package/dist/src/core/report-actionability.js +57 -0
- package/dist/src/core/report-architecture.d.ts +2 -0
- package/dist/src/core/report-architecture.js +80 -0
- package/dist/src/core/report-domain.d.ts +2 -0
- package/dist/src/core/report-domain.js +50 -0
- package/dist/src/core/report-gate.d.ts +3 -0
- package/dist/src/core/report-gate.js +54 -0
- package/dist/src/core/report-shared-format.d.ts +2 -0
- package/dist/src/core/report-shared-format.js +6 -0
- package/dist/src/core/report-shared-guidance.d.ts +2 -0
- package/dist/src/core/report-shared-guidance.js +98 -0
- package/dist/src/core/report-shared-predicates.d.ts +17 -0
- package/dist/src/core/report-shared-predicates.js +9 -0
- package/dist/src/core/report-shared.d.ts +4 -0
- package/dist/src/core/report-shared.js +3 -0
- package/dist/src/core/report.d.ts +3 -0
- package/dist/src/core/report.js +10 -0
- package/dist/src/core/response.d.ts +8 -0
- package/dist/src/core/response.js +67 -0
- package/dist/src/core/review-items.d.ts +2 -0
- package/dist/src/core/review-items.js +116 -0
- package/dist/src/core/review-resolutions.d.ts +3 -0
- package/dist/src/core/review-resolutions.js +43 -0
- package/dist/src/core/review.d.ts +2 -0
- package/dist/src/core/review.js +2 -0
- package/dist/src/core/scaffold-aggregation.d.ts +13 -0
- package/dist/src/core/scaffold-aggregation.js +18 -0
- package/dist/src/core/scaffold-architecture-balances.d.ts +3 -0
- package/dist/src/core/scaffold-architecture-balances.js +25 -0
- package/dist/src/core/scaffold-architecture-drafts-builders.d.ts +19 -0
- package/dist/src/core/scaffold-architecture-drafts-builders.js +114 -0
- package/dist/src/core/scaffold-architecture-drafts-profiles.d.ts +11 -0
- package/dist/src/core/scaffold-architecture-drafts-profiles.js +183 -0
- package/dist/src/core/scaffold-architecture-drafts.d.ts +12 -0
- package/dist/src/core/scaffold-architecture-drafts.js +4 -0
- package/dist/src/core/scaffold-architecture-layer-candidates.d.ts +3 -0
- package/dist/src/core/scaffold-architecture-layer-candidates.js +32 -0
- package/dist/src/core/scaffold-architecture-layers.d.ts +3 -0
- package/dist/src/core/scaffold-architecture-layers.js +15 -0
- package/dist/src/core/scaffold-architecture-orchestration.d.ts +5 -0
- package/dist/src/core/scaffold-architecture-orchestration.js +36 -0
- package/dist/src/core/scaffold-architecture-ordering.d.ts +4 -0
- package/dist/src/core/scaffold-architecture-ordering.js +55 -0
- package/dist/src/core/scaffold-architecture.d.ts +1 -0
- package/dist/src/core/scaffold-architecture.js +1 -0
- package/dist/src/core/scaffold-domain-aggregates-candidates.d.ts +4 -0
- package/dist/src/core/scaffold-domain-aggregates-candidates.js +8 -0
- package/dist/src/core/scaffold-domain-aggregates-core.d.ts +1 -0
- package/dist/src/core/scaffold-domain-aggregates-core.js +1 -0
- package/dist/src/core/scaffold-domain-aggregates-dedupe.d.ts +2 -0
- package/dist/src/core/scaffold-domain-aggregates-dedupe.js +18 -0
- package/dist/src/core/scaffold-domain-aggregates-explicit.d.ts +4 -0
- package/dist/src/core/scaffold-domain-aggregates-explicit.js +43 -0
- package/dist/src/core/scaffold-domain-aggregates-inferred.d.ts +4 -0
- package/dist/src/core/scaffold-domain-aggregates-inferred.js +117 -0
- package/dist/src/core/scaffold-domain-aggregates-shared.d.ts +23 -0
- package/dist/src/core/scaffold-domain-aggregates-shared.js +91 -0
- package/dist/src/core/scaffold-domain-aggregates.d.ts +1 -0
- package/dist/src/core/scaffold-domain-aggregates.js +1 -0
- package/dist/src/core/scaffold-domain-context-candidates.d.ts +5 -0
- package/dist/src/core/scaffold-domain-context-candidates.js +65 -0
- package/dist/src/core/scaffold-domain-context-naming.d.ts +8 -0
- package/dist/src/core/scaffold-domain-context-naming.js +117 -0
- package/dist/src/core/scaffold-domain-contexts.d.ts +11 -0
- package/dist/src/core/scaffold-domain-contexts.js +75 -0
- package/dist/src/core/scaffold-domain-docs.d.ts +17 -0
- package/dist/src/core/scaffold-domain-docs.js +18 -0
- package/dist/src/core/scaffold-domain.d.ts +7 -0
- package/dist/src/core/scaffold-domain.js +62 -0
- package/dist/src/core/scaffold-naming.d.ts +4 -0
- package/dist/src/core/scaffold-naming.js +32 -0
- package/dist/src/core/scaffold-options.d.ts +2 -0
- package/dist/src/core/scaffold-options.js +10 -0
- package/dist/src/core/scaffold-shared.d.ts +5 -0
- package/dist/src/core/scaffold-shared.js +4 -0
- package/dist/src/core/scaffold-source-group-classification.d.ts +3 -0
- package/dist/src/core/scaffold-source-group-classification.js +91 -0
- package/dist/src/core/scaffold-source-group-constants.d.ts +3 -0
- package/dist/src/core/scaffold-source-group-constants.js +52 -0
- package/dist/src/core/scaffold-source-group-merge.d.ts +5 -0
- package/dist/src/core/scaffold-source-group-merge.js +56 -0
- package/dist/src/core/scaffold-source-group-naming.d.ts +4 -0
- package/dist/src/core/scaffold-source-group-naming.js +66 -0
- package/dist/src/core/scaffold-source-groups.d.ts +5 -0
- package/dist/src/core/scaffold-source-groups.js +123 -0
- package/dist/src/core/scaffold-types.d.ts +30 -0
- package/dist/src/core/scaffold-types.js +1 -0
- package/dist/src/core/scaffold.d.ts +2 -0
- package/dist/src/core/scaffold.js +2 -0
- package/dist/src/core/scoring-shared.d.ts +12 -0
- package/dist/src/core/scoring-shared.js +39 -0
- package/dist/src/core/scoring.d.ts +2 -0
- package/dist/src/core/scoring.js +2 -0
- package/dist/src/core/shadow-rollout-gate-reasons.d.ts +8 -0
- package/dist/src/core/shadow-rollout-gate-reasons.js +22 -0
- package/dist/src/core/shadow-rollout-gate-summary.d.ts +2 -0
- package/dist/src/core/shadow-rollout-gate-summary.js +36 -0
- package/dist/src/core/shadow-rollout-gate.d.ts +2 -0
- package/dist/src/core/shadow-rollout-gate.js +50 -0
- package/dist/src/core/shadow-rollout-registry.d.ts +5 -0
- package/dist/src/core/shadow-rollout-registry.js +31 -0
- package/dist/src/core/shadow-rollout-summary.d.ts +4 -0
- package/dist/src/core/shadow-rollout-summary.js +39 -0
- package/dist/src/core/shadow-rollout.d.ts +3 -0
- package/dist/src/core/shadow-rollout.js +3 -0
- package/dist/src/core/shared-utils.d.ts +4 -0
- package/dist/src/core/shared-utils.js +15 -0
- package/dist/src/core/trace.d.ts +14 -0
- package/dist/src/core/trace.js +118 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.js +7 -0
- package/dist/src/packs/index.d.ts +2 -0
- package/dist/src/packs/index.js +36 -0
- package/package.json +68 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
import { readDataFile, relativePath } from "../core/io.js";
|
|
4
|
+
export const ECMASCRIPT_EXTENSIONS = new Set([".ts", ".tsx", ".js", ".jsx", ".mts", ".cts", ".mjs", ".cjs"]);
|
|
5
|
+
export const DART_EXTENSION = ".dart";
|
|
6
|
+
const DART_GENERATED_SUFFIXES = [".g.dart", ".freezed.dart", ".mocks.dart", ".gen.dart", ".gr.dart"];
|
|
7
|
+
export const DART_DIRECTIVE_PATTERN = /^\s*(import|export|part)\s+(?!of\b)[^"'`]*["']([^"']+)["'][^;]*;/gm;
|
|
8
|
+
export const DART_PART_OF_PATTERN = /^\s*part\s+of\b/m;
|
|
9
|
+
function fileExists(filePath) {
|
|
10
|
+
return ts.sys.fileExists(filePath);
|
|
11
|
+
}
|
|
12
|
+
export function isDartSourceFile(filePath) {
|
|
13
|
+
return path.extname(filePath).toLowerCase() === DART_EXTENSION;
|
|
14
|
+
}
|
|
15
|
+
export function inferSourceLanguage(filePath) {
|
|
16
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
17
|
+
if (extension === DART_EXTENSION) {
|
|
18
|
+
return "dart";
|
|
19
|
+
}
|
|
20
|
+
if (extension === ".js" || extension === ".jsx" || extension === ".mjs" || extension === ".cjs") {
|
|
21
|
+
return "javascript";
|
|
22
|
+
}
|
|
23
|
+
return "typescript";
|
|
24
|
+
}
|
|
25
|
+
export function isGeneratedDartFile(filePath) {
|
|
26
|
+
const normalized = filePath.replace(/\\/g, "/");
|
|
27
|
+
return DART_GENERATED_SUFFIXES.some((suffix) => normalized.endsWith(suffix));
|
|
28
|
+
}
|
|
29
|
+
export function stripComments(source) {
|
|
30
|
+
return source.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/.*$/gm, "");
|
|
31
|
+
}
|
|
32
|
+
export function resolveWithCandidates(root, specifier, candidates) {
|
|
33
|
+
for (const candidate of candidates) {
|
|
34
|
+
if (fileExists(candidate)) {
|
|
35
|
+
return {
|
|
36
|
+
target: relativePath(root, candidate),
|
|
37
|
+
targetKind: "file",
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
target: specifier,
|
|
43
|
+
targetKind: "missing",
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export async function loadDartPackageContext(root) {
|
|
47
|
+
const pubspecPath = path.join(root, "pubspec.yaml");
|
|
48
|
+
if (!fileExists(pubspecPath)) {
|
|
49
|
+
return {};
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const pubspec = await readDataFile(pubspecPath);
|
|
53
|
+
if (typeof pubspec.name !== "string" || pubspec.name.trim().length === 0) {
|
|
54
|
+
return {};
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
packageName: pubspec.name.trim(),
|
|
58
|
+
packageRoot: path.join(root, "lib"),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return {};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { listFiles, readText, relativePath } from "../core/io.js";
|
|
3
|
+
export { detectBoundaryLeaks, detectContractUsage, getScorableDependencies } from "./code-contracts.js";
|
|
4
|
+
import { parseDartSourceFile } from "./code-dart.js";
|
|
5
|
+
import { parseEcmaSourceFile } from "./code-ecma.js";
|
|
6
|
+
import { DART_EXTENSION, ECMASCRIPT_EXTENSIONS, isDartSourceFile, loadDartPackageContext } from "./code-shared.js";
|
|
7
|
+
export async function parseCodebase(root) {
|
|
8
|
+
const dartPackageContext = await loadDartPackageContext(root);
|
|
9
|
+
const absoluteFiles = (await listFiles(root)).filter((filePath) => {
|
|
10
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
11
|
+
return ECMASCRIPT_EXTENSIONS.has(extension) || extension === DART_EXTENSION;
|
|
12
|
+
});
|
|
13
|
+
const files = [];
|
|
14
|
+
const dependencies = [];
|
|
15
|
+
for (const absolutePath of absoluteFiles) {
|
|
16
|
+
const relative = relativePath(root, absolutePath);
|
|
17
|
+
const source = await readText(absolutePath);
|
|
18
|
+
const parsedFile = isDartSourceFile(relative)
|
|
19
|
+
? parseDartSourceFile(root, absolutePath, relative, source, dartPackageContext)
|
|
20
|
+
: parseEcmaSourceFile(root, absolutePath, relative, source);
|
|
21
|
+
files.push(parsedFile);
|
|
22
|
+
dependencies.push(...parsedFile.imports);
|
|
23
|
+
}
|
|
24
|
+
const sourceFiles = files.map((file) => file.path);
|
|
25
|
+
const scorableSourceFiles = files
|
|
26
|
+
.filter((file) => !file.generated && file.libraryRole !== "part")
|
|
27
|
+
.map((file) => file.path);
|
|
28
|
+
return {
|
|
29
|
+
files,
|
|
30
|
+
dependencies,
|
|
31
|
+
sourceFiles,
|
|
32
|
+
scorableSourceFiles,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ArchitectureConstraints, CodebaseAnalysis, LayerDefinition, ParsedSourceFile } from "../core/contracts.js";
|
|
2
|
+
export declare function classifyArchitectureLayer(filePath: string, constraints: ArchitectureConstraints): LayerDefinition | undefined;
|
|
3
|
+
export declare function isMeasuredContractFilePath(options: {
|
|
4
|
+
filePath: string;
|
|
5
|
+
constraints: ArchitectureConstraints;
|
|
6
|
+
parsedFile?: ParsedSourceFile;
|
|
7
|
+
allowDartDomainFallback?: boolean;
|
|
8
|
+
}): boolean;
|
|
9
|
+
export declare function collectContractFilePaths(options: {
|
|
10
|
+
codebase: CodebaseAnalysis;
|
|
11
|
+
constraints: ArchitectureConstraints;
|
|
12
|
+
allowDartDomainFallback?: boolean;
|
|
13
|
+
}): string[];
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { matchGlobs } from "../core/io.js";
|
|
3
|
+
const CONTRACT_DIRECTORY_SIGNAL = /(^|\/)(contracts?|dtos?|schemas?|protocols?|interfaces?|apis?)(\/|$)/i;
|
|
4
|
+
const CONTRACT_BASENAME_SIGNAL = /(?:^|[_-])(contract|dto|event|schema|protocol|interface|api)s?\.[^.]+$/i;
|
|
5
|
+
const CONTRACT_LAYER_NAME_SIGNAL = /\b(contracts?|dtos?|schemas?|protocols?|interfaces?|apis?)\b/i;
|
|
6
|
+
const DART_DOMAIN_LAYER_SIGNAL = /\bdomain\b/i;
|
|
7
|
+
export function classifyArchitectureLayer(filePath, constraints) {
|
|
8
|
+
return constraints.layers.find((layer) => matchGlobs(filePath, layer.globs));
|
|
9
|
+
}
|
|
10
|
+
function hasContractDirectorySignal(filePath) {
|
|
11
|
+
return CONTRACT_DIRECTORY_SIGNAL.test(filePath);
|
|
12
|
+
}
|
|
13
|
+
function hasContractBasenameSignal(filePath) {
|
|
14
|
+
return CONTRACT_BASENAME_SIGNAL.test(path.basename(filePath));
|
|
15
|
+
}
|
|
16
|
+
function hasContractLayerNameSignal(layer) {
|
|
17
|
+
return CONTRACT_LAYER_NAME_SIGNAL.test(layer.name);
|
|
18
|
+
}
|
|
19
|
+
function hasContractLayerGlobSignal(layer) {
|
|
20
|
+
return layer.globs.some((glob) => hasContractDirectorySignal(glob));
|
|
21
|
+
}
|
|
22
|
+
function isArchitectureContractLayer(layer) {
|
|
23
|
+
return hasContractLayerNameSignal(layer) || hasContractLayerGlobSignal(layer);
|
|
24
|
+
}
|
|
25
|
+
function hasNamedExplicitContractLayer(constraints) {
|
|
26
|
+
return constraints.layers.some((layer) => hasContractLayerNameSignal(layer));
|
|
27
|
+
}
|
|
28
|
+
function hasExplicitContractLayer(constraints) {
|
|
29
|
+
return constraints.layers.some((layer) => isArchitectureContractLayer(layer));
|
|
30
|
+
}
|
|
31
|
+
function isDartDomainFallbackContract(options) {
|
|
32
|
+
if (!options.allowDartDomainFallback || options.explicitContractLayerExists) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (options.parsedFile?.language !== "dart") {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return Boolean(options.layer && DART_DOMAIN_LAYER_SIGNAL.test(options.layer.name));
|
|
39
|
+
}
|
|
40
|
+
export function isMeasuredContractFilePath(options) {
|
|
41
|
+
const namedExplicitContractLayerExists = hasNamedExplicitContractLayer(options.constraints);
|
|
42
|
+
const explicitContractLayerExists = hasExplicitContractLayer(options.constraints);
|
|
43
|
+
const layer = classifyArchitectureLayer(options.filePath, options.constraints);
|
|
44
|
+
// Architecture constraints define the measurement scope. Contract-like files
|
|
45
|
+
// outside those layer globs must not influence IPS/CTI for the current repo.
|
|
46
|
+
if (!layer) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
if (namedExplicitContractLayerExists) {
|
|
50
|
+
return hasContractLayerNameSignal(layer);
|
|
51
|
+
}
|
|
52
|
+
if (explicitContractLayerExists) {
|
|
53
|
+
return isArchitectureContractLayer(layer);
|
|
54
|
+
}
|
|
55
|
+
if (hasContractDirectorySignal(options.filePath) ||
|
|
56
|
+
hasContractBasenameSignal(options.filePath) ||
|
|
57
|
+
isArchitectureContractLayer(layer)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
return isDartDomainFallbackContract({
|
|
61
|
+
parsedFile: options.parsedFile,
|
|
62
|
+
layer,
|
|
63
|
+
allowDartDomainFallback: options.allowDartDomainFallback ?? false,
|
|
64
|
+
explicitContractLayerExists,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
export function collectContractFilePaths(options) {
|
|
68
|
+
const fileMap = new Map(options.codebase.files.map((file) => [file.path, file]));
|
|
69
|
+
return options.codebase.scorableSourceFiles.filter((filePath) => {
|
|
70
|
+
const parsedFile = fileMap.get(filePath);
|
|
71
|
+
return isMeasuredContractFilePath({
|
|
72
|
+
filePath,
|
|
73
|
+
constraints: options.constraints,
|
|
74
|
+
...(parsedFile ? { parsedFile } : {}),
|
|
75
|
+
...(options.allowDartDomainFallback !== undefined
|
|
76
|
+
? { allowDartDomainFallback: options.allowDartDomainFallback }
|
|
77
|
+
: {}),
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ArchitectureConstraints, CodebaseAnalysis } from "../core/contracts.js";
|
|
2
|
+
import type { ComplexityTaxRecorder } from "./cti-complexity-recorder.js";
|
|
3
|
+
interface ComplexityTaxComponentContext {
|
|
4
|
+
constraints: ArchitectureConstraints;
|
|
5
|
+
metadata: ArchitectureConstraints["complexity"];
|
|
6
|
+
recorder: ComplexityTaxRecorder;
|
|
7
|
+
}
|
|
8
|
+
export declare function recordComplexityTaxComponents(options: {
|
|
9
|
+
codebase: CodebaseAnalysis;
|
|
10
|
+
context: ComplexityTaxComponentContext;
|
|
11
|
+
}): void;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { collectContractFilePaths } from "./contract-files.js";
|
|
2
|
+
function recordConstraintComponent(recorder, input) {
|
|
3
|
+
recorder.recordObservedComponent({
|
|
4
|
+
...input,
|
|
5
|
+
source: "constraints",
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
export function recordComplexityTaxComponents(options) {
|
|
9
|
+
const { codebase, context } = options;
|
|
10
|
+
const { metadata, recorder } = context;
|
|
11
|
+
const deployableCount = metadata?.deployableCount;
|
|
12
|
+
const teamCount = metadata?.teamCount;
|
|
13
|
+
recordConstraintComponent(recorder, {
|
|
14
|
+
component: "DeployablesPerTeam",
|
|
15
|
+
kind: "deployables_per_team",
|
|
16
|
+
observed: deployableCount !== undefined && teamCount !== undefined && teamCount > 0
|
|
17
|
+
? deployableCount / teamCount
|
|
18
|
+
: undefined,
|
|
19
|
+
note: "Evaluating deployables per team as a complexity-tax component.",
|
|
20
|
+
missingUnknown: "DeployablesPerTeam cannot be approximated because teamCount or deployableCount is missing.",
|
|
21
|
+
});
|
|
22
|
+
recordConstraintComponent(recorder, {
|
|
23
|
+
component: "PipelinesPerDeployable",
|
|
24
|
+
kind: "pipelines_per_deployable",
|
|
25
|
+
observed: metadata?.pipelineCount !== undefined && deployableCount !== undefined && deployableCount > 0
|
|
26
|
+
? metadata.pipelineCount / deployableCount
|
|
27
|
+
: undefined,
|
|
28
|
+
note: "Evaluating pipelines per deployable as a complexity-tax component.",
|
|
29
|
+
missingUnknown: "PipelinesPerDeployable cannot be approximated because pipelineCount or deployableCount is missing.",
|
|
30
|
+
});
|
|
31
|
+
const observedContractCount = metadata?.contractOrSchemaCount ??
|
|
32
|
+
collectContractFilePaths({
|
|
33
|
+
codebase,
|
|
34
|
+
constraints: context.constraints,
|
|
35
|
+
allowDartDomainFallback: false,
|
|
36
|
+
}).length;
|
|
37
|
+
const serviceCount = metadata?.serviceCount ?? metadata?.deployableCount;
|
|
38
|
+
recorder.recordObservedComponent({
|
|
39
|
+
component: "ContractsOrSchemasPerService",
|
|
40
|
+
kind: "contracts_or_schemas_per_service",
|
|
41
|
+
observed: serviceCount !== undefined && serviceCount > 0 ? observedContractCount / serviceCount : undefined,
|
|
42
|
+
source: metadata?.contractOrSchemaCount !== undefined ? "constraints" : "codebase",
|
|
43
|
+
note: "Evaluating contracts or schemas per service as a complexity-tax component.",
|
|
44
|
+
missingUnknown: "ContractsOrSchemasPerService cannot be approximated because serviceCount or deployableCount is missing.",
|
|
45
|
+
});
|
|
46
|
+
if (metadata?.contractOrSchemaCount === undefined && observedContractCount === 0) {
|
|
47
|
+
recorder.noteUnknown("Contract/schema observations are sparse, so ContractsOrSchemasPerService is conservative.");
|
|
48
|
+
}
|
|
49
|
+
recordConstraintComponent(recorder, {
|
|
50
|
+
component: "DatastoresPerServiceGroup",
|
|
51
|
+
kind: "datastores_per_service_group",
|
|
52
|
+
observed: metadata?.datastoreCount !== undefined &&
|
|
53
|
+
metadata?.serviceGroupCount !== undefined &&
|
|
54
|
+
metadata.serviceGroupCount > 0
|
|
55
|
+
? metadata.datastoreCount / metadata.serviceGroupCount
|
|
56
|
+
: undefined,
|
|
57
|
+
note: "Evaluating datastores per service group as a complexity-tax component.",
|
|
58
|
+
missingUnknown: "DatastoresPerServiceGroup cannot be approximated because datastoreCount or serviceGroupCount is missing.",
|
|
59
|
+
});
|
|
60
|
+
recordConstraintComponent(recorder, {
|
|
61
|
+
component: "OnCallSurface",
|
|
62
|
+
kind: "oncall_surface",
|
|
63
|
+
observed: metadata?.onCallSurface !== undefined && teamCount !== undefined && teamCount > 0
|
|
64
|
+
? metadata.onCallSurface / teamCount
|
|
65
|
+
: undefined,
|
|
66
|
+
note: "Evaluating on-call surface per team as a complexity-tax component.",
|
|
67
|
+
missingUnknown: "OnCallSurface cannot be approximated because onCallSurface or teamCount is missing.",
|
|
68
|
+
});
|
|
69
|
+
recordConstraintComponent(recorder, {
|
|
70
|
+
component: "SyncDepthOverhead",
|
|
71
|
+
kind: "sync_depth_overhead",
|
|
72
|
+
observed: metadata?.syncDepthP95,
|
|
73
|
+
note: "Evaluating p95 synchronous hop depth as a complexity-tax component.",
|
|
74
|
+
missingUnknown: "SyncDepthOverhead cannot be approximated because syncDepthP95 is missing.",
|
|
75
|
+
});
|
|
76
|
+
recordConstraintComponent(recorder, {
|
|
77
|
+
component: "RunCostPerBusinessTransaction",
|
|
78
|
+
kind: "run_cost_per_business_transaction",
|
|
79
|
+
observed: metadata?.runCostPerBusinessTransaction,
|
|
80
|
+
note: "Evaluating run cost per business transaction as a complexity-tax component.",
|
|
81
|
+
missingUnknown: "RunCostPerBusinessTransaction cannot be approximated because runCostPerBusinessTransaction is missing.",
|
|
82
|
+
});
|
|
83
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ArchitectureConstraints, ComplexityTaxComponentName } from "../core/contracts.js";
|
|
2
|
+
export interface ComplexityTaxFinding {
|
|
3
|
+
component: ComplexityTaxComponentName;
|
|
4
|
+
kind: "deployables_per_team" | "pipelines_per_deployable" | "contracts_or_schemas_per_service" | "datastores_per_service_group" | "oncall_surface" | "sync_depth_overhead" | "run_cost_per_business_transaction";
|
|
5
|
+
observed: number;
|
|
6
|
+
normalized: number;
|
|
7
|
+
confidence: number;
|
|
8
|
+
source: "constraints" | "codebase" | "derived";
|
|
9
|
+
note: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ComplexityTaxScore {
|
|
12
|
+
components: Record<ComplexityTaxComponentName, number>;
|
|
13
|
+
confidence: number;
|
|
14
|
+
unknowns: string[];
|
|
15
|
+
findings: ComplexityTaxFinding[];
|
|
16
|
+
}
|
|
17
|
+
export interface ComplexityTaxObservationInput {
|
|
18
|
+
component: ComplexityTaxComponentName;
|
|
19
|
+
kind: ComplexityTaxFinding["kind"];
|
|
20
|
+
observed: number | undefined;
|
|
21
|
+
source: ComplexityTaxFinding["source"];
|
|
22
|
+
note: string;
|
|
23
|
+
missingUnknown: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ComplexityTaxRecorder {
|
|
26
|
+
components: Record<ComplexityTaxComponentName, number>;
|
|
27
|
+
recordObservedComponent(input: ComplexityTaxObservationInput): void;
|
|
28
|
+
noteUnknown(message: string): void;
|
|
29
|
+
finalize(): ComplexityTaxScore;
|
|
30
|
+
}
|
|
31
|
+
export declare function createComplexityTaxRecorder(constraints: ArchitectureConstraints): ComplexityTaxRecorder;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { average, clamp01, getBaseline, normalizeTax, round, uniqueUnknowns } from "./cti-helpers.js";
|
|
2
|
+
export function createComplexityTaxRecorder(constraints) {
|
|
3
|
+
const findings = [];
|
|
4
|
+
const unknowns = [];
|
|
5
|
+
const confidenceSignals = [];
|
|
6
|
+
const components = {
|
|
7
|
+
DeployablesPerTeam: 0.5,
|
|
8
|
+
PipelinesPerDeployable: 0.5,
|
|
9
|
+
ContractsOrSchemasPerService: 0.5,
|
|
10
|
+
DatastoresPerServiceGroup: 0.5,
|
|
11
|
+
OnCallSurface: 0.5,
|
|
12
|
+
SyncDepthOverhead: 0.5,
|
|
13
|
+
RunCostPerBusinessTransaction: 0.5,
|
|
14
|
+
};
|
|
15
|
+
const recorded = new Set();
|
|
16
|
+
function recordObservedComponent(input) {
|
|
17
|
+
if (input.observed === undefined || !Number.isFinite(input.observed)) {
|
|
18
|
+
unknowns.push(input.missingUnknown);
|
|
19
|
+
confidenceSignals.push(0.4);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const baseline = getBaseline(constraints, input.component);
|
|
23
|
+
const normalized = normalizeTax(input.observed, baseline);
|
|
24
|
+
const sourceConfidence = input.source === "constraints" ? 0.88 : input.source === "codebase" ? 0.72 : 0.6;
|
|
25
|
+
components[input.component] = normalized;
|
|
26
|
+
confidenceSignals.push(sourceConfidence);
|
|
27
|
+
recorded.add(input.component);
|
|
28
|
+
findings.push({
|
|
29
|
+
component: input.component,
|
|
30
|
+
kind: input.kind,
|
|
31
|
+
observed: round(input.observed),
|
|
32
|
+
normalized: round(normalized),
|
|
33
|
+
confidence: sourceConfidence,
|
|
34
|
+
source: input.source,
|
|
35
|
+
note: `${input.note} (observed=${round(input.observed)}, target=${baseline.target}, worst=${baseline.worst})`,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function noteUnknown(message) {
|
|
39
|
+
unknowns.push(message);
|
|
40
|
+
}
|
|
41
|
+
function finalize() {
|
|
42
|
+
if (recorded.size < 4) {
|
|
43
|
+
unknowns.push("Too few complexity-tax components were observed, so CTI confidence is limited.");
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
components,
|
|
47
|
+
confidence: clamp01(average(confidenceSignals, 0.45)),
|
|
48
|
+
unknowns: uniqueUnknowns(unknowns),
|
|
49
|
+
findings,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
components,
|
|
54
|
+
recordObservedComponent,
|
|
55
|
+
noteUnknown,
|
|
56
|
+
finalize,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArchitectureConstraints, CodebaseAnalysis } from "../core/contracts.js";
|
|
2
|
+
import { type ComplexityTaxScore } from "./cti-complexity-recorder.js";
|
|
3
|
+
export type { ComplexityTaxFinding, ComplexityTaxScore } from "./cti-complexity-recorder.js";
|
|
4
|
+
export declare function scoreComplexityTax(options: {
|
|
5
|
+
codebase: CodebaseAnalysis;
|
|
6
|
+
constraints: ArchitectureConstraints;
|
|
7
|
+
}): ComplexityTaxScore;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { recordComplexityTaxComponents } from "./cti-complexity-components.js";
|
|
2
|
+
import { createComplexityTaxRecorder } from "./cti-complexity-recorder.js";
|
|
3
|
+
export function scoreComplexityTax(options) {
|
|
4
|
+
const { codebase, constraints } = options;
|
|
5
|
+
const metadata = constraints.complexity;
|
|
6
|
+
const recorder = createComplexityTaxRecorder(constraints);
|
|
7
|
+
recordComplexityTaxComponents({
|
|
8
|
+
codebase,
|
|
9
|
+
context: { constraints, metadata, recorder },
|
|
10
|
+
});
|
|
11
|
+
if (!metadata) {
|
|
12
|
+
recorder.noteUnknown("Constraints do not include complexity metadata, so CTI is only partially observed.");
|
|
13
|
+
}
|
|
14
|
+
return recorder.finalize();
|
|
15
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArchitectureConstraints, ComplexityTaxBaseline, ComplexityTaxComponentName } from "../core/contracts.js";
|
|
2
|
+
export declare function clamp01(value: number): number;
|
|
3
|
+
export declare function average(values: number[], fallback: number): number;
|
|
4
|
+
export declare function getBaseline(constraints: ArchitectureConstraints, component: ComplexityTaxComponentName): Required<ComplexityTaxBaseline>;
|
|
5
|
+
export declare function normalizeTax(value: number, baseline: Required<ComplexityTaxBaseline>): number;
|
|
6
|
+
export declare function uniqueUnknowns(entries: string[]): string[];
|
|
7
|
+
export declare function round(value: number): number;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const DEFAULT_BASELINES = {
|
|
2
|
+
DeployablesPerTeam: { target: 1, worst: 8 },
|
|
3
|
+
PipelinesPerDeployable: { target: 1, worst: 6 },
|
|
4
|
+
ContractsOrSchemasPerService: { target: 2, worst: 20 },
|
|
5
|
+
DatastoresPerServiceGroup: { target: 1, worst: 5 },
|
|
6
|
+
OnCallSurface: { target: 2, worst: 20 },
|
|
7
|
+
SyncDepthOverhead: { target: 1, worst: 6 },
|
|
8
|
+
RunCostPerBusinessTransaction: { target: 1, worst: 10 },
|
|
9
|
+
};
|
|
10
|
+
export function clamp01(value) {
|
|
11
|
+
return Math.max(0, Math.min(1, Number.isFinite(value) ? value : 0));
|
|
12
|
+
}
|
|
13
|
+
export function average(values, fallback) {
|
|
14
|
+
if (values.length === 0) {
|
|
15
|
+
return fallback;
|
|
16
|
+
}
|
|
17
|
+
return values.reduce((sum, value) => sum + value, 0) / values.length;
|
|
18
|
+
}
|
|
19
|
+
export function getBaseline(constraints, component) {
|
|
20
|
+
const override = constraints.complexity?.normalization?.[component];
|
|
21
|
+
return {
|
|
22
|
+
target: override?.target ?? DEFAULT_BASELINES[component].target,
|
|
23
|
+
worst: override?.worst ?? DEFAULT_BASELINES[component].worst,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function normalizeTax(value, baseline) {
|
|
27
|
+
if (value <= baseline.target) {
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
if (value >= baseline.worst) {
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
return clamp01((value - baseline.target) / Math.max(0.0001, baseline.worst - baseline.target));
|
|
34
|
+
}
|
|
35
|
+
export function uniqueUnknowns(entries) {
|
|
36
|
+
return Array.from(new Set(entries));
|
|
37
|
+
}
|
|
38
|
+
export function round(value) {
|
|
39
|
+
return Math.round(value * 1000) / 1000;
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { scoreComplexityTax } from "./cti-complexity.js";
|
package/dist/src/cli.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import process from "node:process";
|
|
3
|
+
import { COMMANDS, listCommands, maybeWriteOutput } from "./commands.js";
|
|
4
|
+
import { appendCommandEventLog, resolveCommandSessionId } from "./core/command-analytics.js";
|
|
5
|
+
import { createResponse } from "./core/response.js";
|
|
6
|
+
function parseArgs(argv) {
|
|
7
|
+
const [first, ...remainder] = argv;
|
|
8
|
+
const command = first?.startsWith("--") ? undefined : first;
|
|
9
|
+
const rest = command ? remainder : argv;
|
|
10
|
+
const args = {};
|
|
11
|
+
for (let index = 0; index < rest.length; index += 1) {
|
|
12
|
+
const token = rest[index];
|
|
13
|
+
if (!token) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
if (!token.startsWith("--")) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
const trimmed = token.slice(2);
|
|
20
|
+
const [key, inlineValue] = trimmed.split("=", 2);
|
|
21
|
+
if (!key) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (inlineValue !== undefined) {
|
|
25
|
+
args[key] = inlineValue;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const next = rest[index + 1];
|
|
29
|
+
if (!next || next.startsWith("--")) {
|
|
30
|
+
args[key] = true;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
args[key] = next;
|
|
34
|
+
index += 1;
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
command,
|
|
38
|
+
args,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async function main() {
|
|
42
|
+
const startedAt = Date.now();
|
|
43
|
+
const { command, args } = parseArgs(process.argv.slice(2));
|
|
44
|
+
const sessionId = resolveCommandSessionId(process.env);
|
|
45
|
+
const progressEnabled = process.stderr.isTTY || process.env.CONTEXT_PROBE_PROGRESS === "1" || process.env.CONTEXT_PROBE_PROGRESS === "true";
|
|
46
|
+
const context = {
|
|
47
|
+
cwd: process.cwd(),
|
|
48
|
+
...(progressEnabled
|
|
49
|
+
? {
|
|
50
|
+
reportProgress(update) {
|
|
51
|
+
process.stderr.write(`[context-probe:${update.phase}] ${update.message}${update.elapsedMs !== undefined ? ` (${update.elapsedMs}ms)` : ""}\n`);
|
|
52
|
+
},
|
|
53
|
+
}
|
|
54
|
+
: {}),
|
|
55
|
+
};
|
|
56
|
+
if (!command || args.help === true) {
|
|
57
|
+
process.stdout.write(`${JSON.stringify(createResponse({
|
|
58
|
+
commands: listCommands(),
|
|
59
|
+
}), null, 2)}\n`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const handler = COMMANDS[command];
|
|
63
|
+
if (!handler) {
|
|
64
|
+
process.stderr.write(`Unknown command: ${command}\n`);
|
|
65
|
+
process.exitCode = 1;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
const response = await handler(args, context);
|
|
70
|
+
await maybeWriteOutput(response, args, context);
|
|
71
|
+
await appendCommandEventLog({
|
|
72
|
+
env: process.env,
|
|
73
|
+
command,
|
|
74
|
+
repoPath: typeof args.repo === "string" ? args.repo : process.cwd(),
|
|
75
|
+
durationMs: Date.now() - startedAt,
|
|
76
|
+
response,
|
|
77
|
+
sessionId,
|
|
78
|
+
});
|
|
79
|
+
process.stdout.write(`${JSON.stringify(response, null, 2)}\n`);
|
|
80
|
+
if (response.status === "error") {
|
|
81
|
+
process.exitCode = 1;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
86
|
+
const response = createResponse({ command }, {
|
|
87
|
+
status: "error",
|
|
88
|
+
confidence: 0,
|
|
89
|
+
diagnostics: [message],
|
|
90
|
+
});
|
|
91
|
+
process.stdout.write(`${JSON.stringify(response, null, 2)}\n`);
|
|
92
|
+
process.exitCode = 1;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
void main();
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ArchitectureComplexitySourceConfig, ArchitectureContractBaselineSourceConfig, ArchitectureDeliverySourceConfig, ArchitectureScenarioObservationSourceConfig, ArchitectureTelemetrySourceConfig, CommandContext } from "./core/contracts.js";
|
|
2
|
+
export interface LoadedArchitectureInputSourceConfigs {
|
|
3
|
+
scenarioObservationSourceConfig?: {
|
|
4
|
+
config: ArchitectureScenarioObservationSourceConfig;
|
|
5
|
+
configPath: string;
|
|
6
|
+
} | undefined;
|
|
7
|
+
contractBaselineSourceConfig?: {
|
|
8
|
+
config: ArchitectureContractBaselineSourceConfig;
|
|
9
|
+
configPath: string;
|
|
10
|
+
} | undefined;
|
|
11
|
+
deliverySourceConfig?: {
|
|
12
|
+
config: ArchitectureDeliverySourceConfig;
|
|
13
|
+
configPath: string;
|
|
14
|
+
} | undefined;
|
|
15
|
+
telemetrySourceConfig?: {
|
|
16
|
+
config: ArchitectureTelemetrySourceConfig;
|
|
17
|
+
configPath: string;
|
|
18
|
+
} | undefined;
|
|
19
|
+
complexitySourceConfig?: {
|
|
20
|
+
config: ArchitectureComplexitySourceConfig;
|
|
21
|
+
configPath: string;
|
|
22
|
+
} | undefined;
|
|
23
|
+
}
|
|
24
|
+
export declare function loadArchitectureInputSourceConfigs(args: Record<string, string | boolean>, context: CommandContext): Promise<LoadedArchitectureInputSourceConfigs>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { loadComplexitySourceConfigIfRequested, loadContractBaselineSourceConfigIfRequested, loadDeliverySourceConfigIfRequested, loadScenarioObservationSourceConfigIfRequested, loadTelemetrySourceConfigIfRequested, } from "./command-helpers.js";
|
|
2
|
+
export async function loadArchitectureInputSourceConfigs(args, context) {
|
|
3
|
+
const [scenarioObservationSourceConfig, contractBaselineSourceConfig, deliverySourceConfig, telemetrySourceConfig, complexitySourceConfig,] = await Promise.all([
|
|
4
|
+
loadScenarioObservationSourceConfigIfRequested(args, context),
|
|
5
|
+
loadContractBaselineSourceConfigIfRequested(args, context),
|
|
6
|
+
loadDeliverySourceConfigIfRequested(args, context),
|
|
7
|
+
loadTelemetrySourceConfigIfRequested(args, context),
|
|
8
|
+
loadComplexitySourceConfigIfRequested(args, context),
|
|
9
|
+
]);
|
|
10
|
+
return {
|
|
11
|
+
scenarioObservationSourceConfig,
|
|
12
|
+
contractBaselineSourceConfig,
|
|
13
|
+
deliverySourceConfig,
|
|
14
|
+
telemetrySourceConfig,
|
|
15
|
+
complexitySourceConfig,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ArchitectureBoundaryMap, ArchitectureComplexityExportBundle, ArchitectureContractBaseline, ArchitectureDeliveryExportBundle, ArchitectureDeliveryNormalizationProfile, ArchitectureDeliveryObservationSet, ArchitectureDeliveryRawObservationSet, ArchitecturePatternRuntimeNormalizationProfile, ArchitecturePatternRuntimeObservationSet, ArchitecturePatternRuntimeRawObservationSet, ArchitectureScenarioCatalog, ArchitectureTelemetryExportBundle, ArchitectureTelemetryNormalizationProfile, ArchitectureTelemetryObservationSet, ArchitectureTelemetryRawObservationSet, ArchitectureTopologyModel, CommandContext, ScenarioObservationSet, TopologyRuntimeObservationSet } from "./core/contracts.js";
|
|
2
|
+
export interface LoadedArchitectureInputData {
|
|
3
|
+
scenarioCatalog?: ArchitectureScenarioCatalog | undefined;
|
|
4
|
+
scenarioObservations?: ScenarioObservationSet | undefined;
|
|
5
|
+
topologyModel?: ArchitectureTopologyModel | undefined;
|
|
6
|
+
boundaryMap?: ArchitectureBoundaryMap | undefined;
|
|
7
|
+
contractBaseline?: ArchitectureContractBaseline | undefined;
|
|
8
|
+
runtimeObservations?: TopologyRuntimeObservationSet | undefined;
|
|
9
|
+
deliveryObservations?: ArchitectureDeliveryObservationSet | undefined;
|
|
10
|
+
deliveryRawObservations?: ArchitectureDeliveryRawObservationSet | undefined;
|
|
11
|
+
deliveryExport?: ArchitectureDeliveryExportBundle | undefined;
|
|
12
|
+
deliveryNormalizationProfile?: ArchitectureDeliveryNormalizationProfile | undefined;
|
|
13
|
+
telemetryObservations?: ArchitectureTelemetryObservationSet | undefined;
|
|
14
|
+
telemetryRawObservations?: ArchitectureTelemetryRawObservationSet | undefined;
|
|
15
|
+
telemetryExport?: ArchitectureTelemetryExportBundle | undefined;
|
|
16
|
+
telemetryNormalizationProfile?: ArchitectureTelemetryNormalizationProfile | undefined;
|
|
17
|
+
patternRuntimeObservations?: ArchitecturePatternRuntimeObservationSet | undefined;
|
|
18
|
+
patternRuntimeRawObservations?: ArchitecturePatternRuntimeRawObservationSet | undefined;
|
|
19
|
+
patternRuntimeNormalizationProfile?: ArchitecturePatternRuntimeNormalizationProfile | undefined;
|
|
20
|
+
complexityExport?: ArchitectureComplexityExportBundle | undefined;
|
|
21
|
+
}
|
|
22
|
+
export declare function loadArchitectureInputData(args: Record<string, string | boolean>, context: CommandContext): Promise<LoadedArchitectureInputData>;
|