@yalehwang/archguard 0.1.21 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -22
- package/dist/analysis/atlas-metrics-analysis.d.ts +11 -0
- package/dist/analysis/atlas-metrics-analysis.d.ts.map +1 -0
- package/dist/analysis/atlas-metrics-analysis.js +17 -0
- package/dist/analysis/atlas-metrics-analysis.js.map +1 -0
- package/dist/analysis/fitness/dependency-checker.d.ts +4 -0
- package/dist/analysis/fitness/dependency-checker.d.ts.map +1 -0
- package/dist/analysis/fitness/dependency-checker.js +16 -0
- package/dist/analysis/fitness/dependency-checker.js.map +1 -0
- package/dist/analysis/fitness/rule-evaluator.d.ts +6 -0
- package/dist/analysis/fitness/rule-evaluator.d.ts.map +1 -0
- package/dist/analysis/fitness/rule-evaluator.js +64 -0
- package/dist/analysis/fitness/rule-evaluator.js.map +1 -0
- package/dist/analysis/fitness/rule-types.d.ts +34 -0
- package/dist/analysis/fitness/rule-types.d.ts.map +1 -0
- package/dist/analysis/fitness/rule-types.js +2 -0
- package/dist/analysis/fitness/rule-types.js.map +1 -0
- package/dist/analysis/gim/direction-hint.d.ts +18 -0
- package/dist/analysis/gim/direction-hint.d.ts.map +1 -0
- package/dist/analysis/gim/direction-hint.js +76 -0
- package/dist/analysis/gim/direction-hint.js.map +1 -0
- package/dist/analysis/gim/gim-loss-evaluator.d.ts +14 -0
- package/dist/analysis/gim/gim-loss-evaluator.d.ts.map +1 -0
- package/dist/analysis/gim/gim-loss-evaluator.js +80 -0
- package/dist/analysis/gim/gim-loss-evaluator.js.map +1 -0
- package/dist/analysis/gini.d.ts +2 -0
- package/dist/analysis/gini.d.ts.map +1 -0
- package/dist/analysis/gini.js +12 -0
- package/dist/analysis/gini.js.map +1 -0
- package/dist/analysis/git-history/git-log-reader.d.ts +24 -0
- package/dist/analysis/git-history/git-log-reader.d.ts.map +1 -0
- package/dist/analysis/git-history/git-log-reader.js +117 -0
- package/dist/analysis/git-history/git-log-reader.js.map +1 -0
- package/dist/analysis/git-history/history-aggregator.d.ts +19 -0
- package/dist/analysis/git-history/history-aggregator.d.ts.map +1 -0
- package/dist/analysis/git-history/history-aggregator.js +291 -0
- package/dist/analysis/git-history/history-aggregator.js.map +1 -0
- package/dist/analysis/git-history/history-query.d.ts +111 -0
- package/dist/analysis/git-history/history-query.d.ts.map +1 -0
- package/dist/analysis/git-history/history-query.js +201 -0
- package/dist/analysis/git-history/history-query.js.map +1 -0
- package/dist/analysis/git-history/index.d.ts +4 -0
- package/dist/analysis/git-history/index.d.ts.map +1 -0
- package/dist/analysis/git-history/index.js +4 -0
- package/dist/analysis/git-history/index.js.map +1 -0
- package/dist/analysis/metric-vector-builder.d.ts +5 -0
- package/dist/analysis/metric-vector-builder.d.ts.map +1 -0
- package/dist/analysis/metric-vector-builder.js +47 -0
- package/dist/analysis/metric-vector-builder.js.map +1 -0
- package/dist/analysis/metrics-history-reader.d.ts +4 -0
- package/dist/analysis/metrics-history-reader.d.ts.map +1 -0
- package/dist/analysis/metrics-history-reader.js +24 -0
- package/dist/analysis/metrics-history-reader.js.map +1 -0
- package/dist/analysis/package-metrics-analysis.d.ts +18 -0
- package/dist/analysis/package-metrics-analysis.d.ts.map +1 -0
- package/dist/analysis/package-metrics-analysis.js +59 -0
- package/dist/analysis/package-metrics-analysis.js.map +1 -0
- package/dist/analysis/project-semantics-loader.d.ts +3 -0
- package/dist/analysis/project-semantics-loader.d.ts.map +1 -0
- package/dist/analysis/project-semantics-loader.js +25 -0
- package/dist/analysis/project-semantics-loader.js.map +1 -0
- package/dist/analysis/snapshot-diff.d.ts +19 -0
- package/dist/analysis/snapshot-diff.d.ts.map +1 -0
- package/dist/analysis/snapshot-diff.js +54 -0
- package/dist/analysis/snapshot-diff.js.map +1 -0
- package/dist/analysis/snapshot-store.d.ts +15 -0
- package/dist/analysis/snapshot-store.d.ts.map +1 -0
- package/dist/analysis/snapshot-store.js +96 -0
- package/dist/analysis/snapshot-store.js.map +1 -0
- package/dist/analysis/test-analyzer.d.ts +4 -1
- package/dist/analysis/test-analyzer.d.ts.map +1 -1
- package/dist/analysis/test-analyzer.js +67 -14
- package/dist/analysis/test-analyzer.js.map +1 -1
- package/dist/analysis/test-coverage-mapper.d.ts +1 -1
- package/dist/analysis/test-coverage-mapper.d.ts.map +1 -1
- package/dist/analysis/test-coverage-mapper.js +32 -2
- package/dist/analysis/test-coverage-mapper.js.map +1 -1
- package/dist/analysis/test-issue-detector.d.ts +1 -1
- package/dist/analysis/test-issue-detector.d.ts.map +1 -1
- package/dist/analysis/test-issue-detector.js +7 -2
- package/dist/analysis/test-issue-detector.js.map +1 -1
- package/dist/analysis/test-pattern-advisor.d.ts +2 -0
- package/dist/analysis/test-pattern-advisor.d.ts.map +1 -0
- package/dist/analysis/test-pattern-advisor.js +59 -0
- package/dist/analysis/test-pattern-advisor.js.map +1 -0
- package/dist/cli/analyze/normalize-to-diagrams.d.ts +9 -0
- package/dist/cli/analyze/normalize-to-diagrams.d.ts.map +1 -1
- package/dist/cli/analyze/normalize-to-diagrams.js +35 -26
- package/dist/cli/analyze/normalize-to-diagrams.js.map +1 -1
- package/dist/cli/analyze/run-analysis.d.ts +1 -1
- package/dist/cli/analyze/run-analysis.d.ts.map +1 -1
- package/dist/cli/analyze/run-analysis.js +186 -32
- package/dist/cli/analyze/run-analysis.js.map +1 -1
- package/dist/cli/{cache-manager.d.ts → cache/cache-manager.d.ts} +1 -1
- package/dist/cli/cache/cache-manager.d.ts.map +1 -0
- package/dist/cli/{cache-manager.js → cache/cache-manager.js} +2 -2
- package/dist/cli/cache/cache-manager.js.map +1 -0
- package/dist/cli/cognitive/ccb-assembler.d.ts +8 -0
- package/dist/cli/cognitive/ccb-assembler.d.ts.map +1 -0
- package/dist/cli/cognitive/ccb-assembler.js +213 -0
- package/dist/cli/cognitive/ccb-assembler.js.map +1 -0
- package/dist/cli/cognitive/ccb-reader.d.ts +7 -0
- package/dist/cli/cognitive/ccb-reader.d.ts.map +1 -0
- package/dist/cli/cognitive/ccb-reader.js +27 -0
- package/dist/cli/cognitive/ccb-reader.js.map +1 -0
- package/dist/cli/cognitive/ccb-schema.d.ts +36 -0
- package/dist/cli/cognitive/ccb-schema.d.ts.map +1 -0
- package/dist/cli/cognitive/ccb-schema.js +2 -0
- package/dist/cli/cognitive/ccb-schema.js.map +1 -0
- package/dist/cli/cognitive/ccb-writer.d.ts +3 -0
- package/dist/cli/cognitive/ccb-writer.d.ts.map +1 -0
- package/dist/cli/cognitive/ccb-writer.js +12 -0
- package/dist/cli/cognitive/ccb-writer.js.map +1 -0
- package/dist/cli/commands/analyze.d.ts.map +1 -1
- package/dist/cli/commands/analyze.js +23 -4
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/cache.js +2 -2
- package/dist/cli/commands/cache.js.map +1 -1
- package/dist/cli/commands/check.d.ts +3 -0
- package/dist/cli/commands/check.d.ts.map +1 -0
- package/dist/cli/commands/check.js +48 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/diff.d.ts +3 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +89 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +1 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/query.d.ts +51 -0
- package/dist/cli/commands/query.d.ts.map +1 -1
- package/dist/cli/commands/query.js +373 -17
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/config-loader.d.ts +50 -0
- package/dist/cli/config-loader.d.ts.map +1 -1
- package/dist/cli/config-loader.js +33 -0
- package/dist/cli/config-loader.js.map +1 -1
- package/dist/cli/{errors.d.ts → errors/index.d.ts} +16 -2
- package/dist/cli/errors/index.d.ts.map +1 -0
- package/dist/cli/{error-handler.js → errors/index.js} +32 -2
- package/dist/cli/errors/index.js.map +1 -0
- package/dist/cli/git-history/git-log-reader.d.ts +2 -0
- package/dist/cli/git-history/git-log-reader.d.ts.map +1 -0
- package/dist/cli/git-history/git-log-reader.js +2 -0
- package/dist/cli/git-history/git-log-reader.js.map +1 -0
- package/dist/cli/git-history/history-aggregator.d.ts +2 -0
- package/dist/cli/git-history/history-aggregator.d.ts.map +1 -0
- package/dist/cli/git-history/history-aggregator.js +2 -0
- package/dist/cli/git-history/history-aggregator.js.map +1 -0
- package/dist/cli/git-history/history-loader.d.ts +11 -0
- package/dist/cli/git-history/history-loader.d.ts.map +1 -0
- package/dist/cli/git-history/history-loader.js +30 -0
- package/dist/cli/git-history/history-loader.js.map +1 -0
- package/dist/cli/git-history/history-query.d.ts +2 -0
- package/dist/cli/git-history/history-query.d.ts.map +1 -0
- package/dist/cli/git-history/history-query.js +2 -0
- package/dist/cli/git-history/history-query.js.map +1 -0
- package/dist/cli/git-history/history-writer.d.ts +3 -0
- package/dist/cli/git-history/history-writer.d.ts.map +1 -0
- package/dist/cli/git-history/history-writer.js +14 -0
- package/dist/cli/git-history/history-writer.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp/analyze-tool.d.ts.map +1 -1
- package/dist/cli/mcp/analyze-tool.js +10 -4
- package/dist/cli/mcp/analyze-tool.js.map +1 -1
- package/dist/cli/mcp/mcp-server.d.ts.map +1 -1
- package/dist/cli/mcp/mcp-server.js +166 -47
- package/dist/cli/mcp/mcp-server.js.map +1 -1
- package/dist/cli/mcp/tools/atlas-analytics-tools.d.ts +7 -0
- package/dist/cli/mcp/tools/atlas-analytics-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/atlas-analytics-tools.js +190 -0
- package/dist/cli/mcp/tools/atlas-analytics-tools.js.map +1 -0
- package/dist/cli/mcp/tools/call-graph-tools.d.ts +3 -0
- package/dist/cli/mcp/tools/call-graph-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/call-graph-tools.js +47 -0
- package/dist/cli/mcp/tools/call-graph-tools.js.map +1 -0
- package/dist/cli/mcp/tools/ccb-tool.d.ts +3 -0
- package/dist/cli/mcp/tools/ccb-tool.d.ts.map +1 -0
- package/dist/cli/mcp/tools/ccb-tool.js +63 -0
- package/dist/cli/mcp/tools/ccb-tool.js.map +1 -0
- package/dist/cli/mcp/tools/cognitive-summary-tool.d.ts +3 -0
- package/dist/cli/mcp/tools/cognitive-summary-tool.d.ts.map +1 -0
- package/dist/cli/mcp/tools/cognitive-summary-tool.js +118 -0
- package/dist/cli/mcp/tools/cognitive-summary-tool.js.map +1 -0
- package/dist/cli/mcp/tools/gim-tools.d.ts +3 -0
- package/dist/cli/mcp/tools/gim-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/gim-tools.js +78 -0
- package/dist/cli/mcp/tools/gim-tools.js.map +1 -0
- package/dist/cli/mcp/tools/git-history-analyze-tool.d.ts +3 -0
- package/dist/cli/mcp/tools/git-history-analyze-tool.d.ts.map +1 -0
- package/dist/cli/mcp/tools/git-history-analyze-tool.js +172 -0
- package/dist/cli/mcp/tools/git-history-analyze-tool.js.map +1 -0
- package/dist/cli/mcp/tools/git-history-evidence-pack-tool.d.ts +3 -0
- package/dist/cli/mcp/tools/git-history-evidence-pack-tool.d.ts.map +1 -0
- package/dist/cli/mcp/tools/git-history-evidence-pack-tool.js +87 -0
- package/dist/cli/mcp/tools/git-history-evidence-pack-tool.js.map +1 -0
- package/dist/cli/mcp/tools/git-history-tools.d.ts +3 -0
- package/dist/cli/mcp/tools/git-history-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/git-history-tools.js +125 -0
- package/dist/cli/mcp/tools/git-history-tools.js.map +1 -0
- package/dist/cli/mcp/tools/metric-trend-tools.d.ts +8 -0
- package/dist/cli/mcp/tools/metric-trend-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/metric-trend-tools.js +50 -0
- package/dist/cli/mcp/tools/metric-trend-tools.js.map +1 -0
- package/dist/cli/mcp/tools/package-metrics-tools.d.ts +7 -0
- package/dist/cli/mcp/tools/package-metrics-tools.d.ts.map +1 -0
- package/dist/cli/mcp/tools/package-metrics-tools.js +62 -0
- package/dist/cli/mcp/tools/package-metrics-tools.js.map +1 -0
- package/dist/cli/mcp/tools/test-analysis-tools.d.ts.map +1 -1
- package/dist/cli/mcp/tools/test-analysis-tools.js +98 -94
- package/dist/cli/mcp/tools/test-analysis-tools.js.map +1 -1
- package/dist/cli/metrics-history-writer.d.ts +16 -0
- package/dist/cli/metrics-history-writer.d.ts.map +1 -0
- package/dist/cli/metrics-history-writer.js +16 -0
- package/dist/cli/metrics-history-writer.js.map +1 -0
- package/dist/cli/processors/arch-json-provider-types.d.ts +12 -0
- package/dist/cli/processors/arch-json-provider-types.d.ts.map +1 -0
- package/dist/cli/processors/arch-json-provider-types.js +2 -0
- package/dist/cli/processors/arch-json-provider-types.js.map +1 -0
- package/dist/cli/processors/arch-json-provider.d.ts +4 -13
- package/dist/cli/processors/arch-json-provider.d.ts.map +1 -1
- package/dist/cli/processors/arch-json-provider.js +54 -76
- package/dist/cli/processors/arch-json-provider.js.map +1 -1
- package/dist/cli/processors/arch-json-utils.d.ts +4 -0
- package/dist/cli/processors/arch-json-utils.d.ts.map +1 -0
- package/dist/cli/processors/arch-json-utils.js +73 -0
- package/dist/cli/processors/arch-json-utils.js.map +1 -0
- package/dist/cli/processors/diagram-output-router.d.ts +3 -1
- package/dist/cli/processors/diagram-output-router.d.ts.map +1 -1
- package/dist/cli/processors/diagram-output-router.js +28 -3
- package/dist/cli/processors/diagram-output-router.js.map +1 -1
- package/dist/cli/processors/diagram-pipeline-runner.d.ts +20 -0
- package/dist/cli/processors/diagram-pipeline-runner.d.ts.map +1 -0
- package/dist/cli/processors/diagram-pipeline-runner.js +171 -0
- package/dist/cli/processors/diagram-pipeline-runner.js.map +1 -0
- package/dist/cli/processors/diagram-processor.d.ts +11 -8
- package/dist/cli/processors/diagram-processor.d.ts.map +1 -1
- package/dist/cli/processors/diagram-processor.js +19 -148
- package/dist/cli/processors/diagram-processor.js.map +1 -1
- package/dist/cli/processors/query-scope-collector.d.ts +11 -0
- package/dist/cli/processors/query-scope-collector.d.ts.map +1 -0
- package/dist/cli/processors/query-scope-collector.js +44 -0
- package/dist/cli/processors/query-scope-collector.js.map +1 -0
- package/dist/cli/processors/test-coverage-writer.d.ts +4 -0
- package/dist/cli/processors/test-coverage-writer.d.ts.map +1 -0
- package/dist/cli/processors/test-coverage-writer.js +22 -0
- package/dist/cli/processors/test-coverage-writer.js.map +1 -0
- package/dist/cli/processors/worker-pool-factory.d.ts +6 -0
- package/dist/cli/processors/worker-pool-factory.d.ts.map +1 -0
- package/dist/cli/processors/worker-pool-factory.js +22 -0
- package/dist/cli/processors/worker-pool-factory.js.map +1 -0
- package/dist/cli/{progress.d.ts → progress/index.d.ts} +1 -1
- package/dist/cli/progress/index.d.ts.map +1 -0
- package/dist/cli/{progress.js → progress/index.js} +1 -1
- package/dist/cli/progress/index.js.map +1 -0
- package/dist/cli/query/arch-index-builder.d.ts +1 -3
- package/dist/cli/query/arch-index-builder.d.ts.map +1 -1
- package/dist/cli/query/arch-index-builder.js +1 -125
- package/dist/cli/query/arch-index-builder.js.map +1 -1
- package/dist/cli/query/arch-index.d.ts +2 -16
- package/dist/cli/query/arch-index.d.ts.map +1 -1
- package/dist/cli/query/arch-index.js +1 -1
- package/dist/cli/query/arch-index.js.map +1 -1
- package/dist/cli/query/engine-loader.d.ts +9 -1
- package/dist/cli/query/engine-loader.d.ts.map +1 -1
- package/dist/cli/query/engine-loader.js +5 -1
- package/dist/cli/query/engine-loader.js.map +1 -1
- package/dist/cli/query/query-artifacts.d.ts.map +1 -1
- package/dist/cli/query/query-artifacts.js +2 -1
- package/dist/cli/query/query-artifacts.js.map +1 -1
- package/dist/cli/query/query-engine.d.ts +3 -90
- package/dist/cli/query/query-engine.d.ts.map +1 -1
- package/dist/cli/query/query-engine.js +1 -347
- package/dist/cli/query/query-engine.js.map +1 -1
- package/dist/cli/utils/java-project-structure-detector.js +1 -1
- package/dist/cli/utils/java-project-structure-detector.js.map +1 -1
- package/dist/cli/utils/kotlin-project-structure-detector.d.ts +7 -0
- package/dist/cli/utils/kotlin-project-structure-detector.d.ts.map +1 -0
- package/dist/cli/utils/kotlin-project-structure-detector.js +101 -0
- package/dist/cli/utils/kotlin-project-structure-detector.js.map +1 -0
- package/dist/cli/utils/output-path-resolver.d.ts.map +1 -1
- package/dist/cli/utils/output-path-resolver.js.map +1 -1
- package/dist/cli/utils/project-language-detector.d.ts +1 -1
- package/dist/cli/utils/project-language-detector.d.ts.map +1 -1
- package/dist/cli/utils/project-language-detector.js +5 -1
- package/dist/cli/utils/project-language-detector.js.map +1 -1
- package/dist/cli/utils/project-structure-detector.js +3 -3
- package/dist/cli/utils/project-structure-detector.js.map +1 -1
- package/dist/cli/utils/test-output-writer.d.ts +1 -1
- package/dist/cli/utils/test-output-writer.d.ts.map +1 -1
- package/dist/cli/utils/test-output-writer.js.map +1 -1
- package/dist/core/entity-type-registry.d.ts +10 -0
- package/dist/core/entity-type-registry.d.ts.map +1 -0
- package/dist/core/entity-type-registry.js +17 -0
- package/dist/core/entity-type-registry.js.map +1 -0
- package/dist/core/interfaces/dependency.d.ts +1 -1
- package/dist/core/interfaces/dependency.d.ts.map +1 -1
- package/dist/core/interfaces/index.d.ts +2 -0
- package/dist/core/interfaces/index.d.ts.map +1 -1
- package/dist/core/interfaces/index.js.map +1 -1
- package/dist/core/interfaces/language-plugin.d.ts +8 -1
- package/dist/core/interfaces/language-plugin.d.ts.map +1 -1
- package/dist/core/interfaces/parser-facade.d.ts +5 -0
- package/dist/core/interfaces/parser-facade.d.ts.map +1 -0
- package/dist/core/interfaces/parser-facade.js +2 -0
- package/dist/core/interfaces/parser-facade.js.map +1 -0
- package/dist/core/interfaces/renderer-facade.d.ts +8 -0
- package/dist/core/interfaces/renderer-facade.d.ts.map +1 -0
- package/dist/core/interfaces/renderer-facade.js +2 -0
- package/dist/core/interfaces/renderer-facade.js.map +1 -0
- package/dist/core/interfaces/validation.d.ts.map +1 -1
- package/dist/core/plugin-registry.d.ts.map +1 -1
- package/dist/core/plugin-registry.js +2 -0
- package/dist/core/plugin-registry.js.map +1 -1
- package/dist/core/query/arch-index-builder.d.ts +4 -0
- package/dist/core/query/arch-index-builder.d.ts.map +1 -0
- package/dist/core/query/arch-index-builder.js +126 -0
- package/dist/core/query/arch-index-builder.js.map +1 -0
- package/dist/core/query/arch-index.d.ts +17 -0
- package/dist/core/query/arch-index.d.ts.map +1 -0
- package/dist/core/query/arch-index.js +2 -0
- package/dist/core/query/arch-index.js.map +1 -0
- package/dist/core/query/arch-metrics-cognitive.d.ts +32 -0
- package/dist/core/query/arch-metrics-cognitive.d.ts.map +1 -0
- package/dist/core/query/arch-metrics-cognitive.js +60 -0
- package/dist/core/query/arch-metrics-cognitive.js.map +1 -0
- package/dist/core/query/arch-metrics-quality.d.ts +24 -0
- package/dist/core/query/arch-metrics-quality.d.ts.map +1 -0
- package/dist/core/query/arch-metrics-quality.js +86 -0
- package/dist/core/query/arch-metrics-quality.js.map +1 -0
- package/dist/core/query/arch-metrics-structure.d.ts +43 -0
- package/dist/core/query/arch-metrics-structure.d.ts.map +1 -0
- package/dist/core/query/arch-metrics-structure.js +291 -0
- package/dist/core/query/arch-metrics-structure.js.map +1 -0
- package/dist/core/query/arch-metrics.d.ts +54 -0
- package/dist/core/query/arch-metrics.d.ts.map +1 -0
- package/dist/core/query/arch-metrics.js +42 -0
- package/dist/core/query/arch-metrics.js.map +1 -0
- package/dist/core/query/edge-list-serializer.d.ts +4 -0
- package/dist/core/query/edge-list-serializer.d.ts.map +1 -0
- package/dist/core/query/edge-list-serializer.js +24 -0
- package/dist/core/query/edge-list-serializer.js.map +1 -0
- package/dist/core/query/entity-query-service.d.ts +15 -0
- package/dist/core/query/entity-query-service.d.ts.map +1 -0
- package/dist/core/query/entity-query-service.js +51 -0
- package/dist/core/query/entity-query-service.js.map +1 -0
- package/dist/core/query/extension-accessor.d.ts +15 -0
- package/dist/core/query/extension-accessor.d.ts.map +1 -0
- package/dist/core/query/extension-accessor.js +28 -0
- package/dist/core/query/extension-accessor.js.map +1 -0
- package/dist/core/query/index.d.ts +8 -0
- package/dist/core/query/index.d.ts.map +1 -0
- package/dist/core/query/index.js +6 -0
- package/dist/core/query/index.js.map +1 -0
- package/dist/core/query/output-scope-filter.d.ts +6 -0
- package/dist/core/query/output-scope-filter.d.ts.map +1 -0
- package/dist/core/query/output-scope-filter.js +45 -0
- package/dist/core/query/output-scope-filter.js.map +1 -0
- package/dist/core/query/query-engine.d.ts +116 -0
- package/dist/core/query/query-engine.d.ts.map +1 -0
- package/dist/core/query/query-engine.js +105 -0
- package/dist/core/query/query-engine.js.map +1 -0
- package/dist/core/query/relation-query-service.d.ts +21 -0
- package/dist/core/query/relation-query-service.d.ts.map +1 -0
- package/dist/core/query/relation-query-service.js +124 -0
- package/dist/core/query/relation-query-service.js.map +1 -0
- package/dist/mermaid/auto-repair.d.ts +1 -1
- package/dist/mermaid/auto-repair.d.ts.map +1 -1
- package/dist/mermaid/auto-repair.js +6 -6
- package/dist/mermaid/auto-repair.js.map +1 -1
- package/dist/mermaid/cpp-package-flowchart-generator.js +1 -1
- package/dist/mermaid/cpp-package-flowchart-generator.js.map +1 -1
- package/dist/mermaid/diagram-generator.d.ts +2 -1
- package/dist/mermaid/diagram-generator.d.ts.map +1 -1
- package/dist/mermaid/diagram-generator.js +17 -16
- package/dist/mermaid/diagram-generator.js.map +1 -1
- package/dist/mermaid/generator-formatting.d.ts +1 -1
- package/dist/mermaid/generator-formatting.d.ts.map +1 -1
- package/dist/mermaid/generator-formatting.js +2 -0
- package/dist/mermaid/generator-formatting.js.map +1 -1
- package/dist/mermaid/generator-validation.d.ts.map +1 -1
- package/dist/mermaid/generator-validation.js.map +1 -1
- package/dist/mermaid/generator.d.ts +5 -10
- package/dist/mermaid/generator.d.ts.map +1 -1
- package/dist/mermaid/generator.js +192 -227
- package/dist/mermaid/generator.js.map +1 -1
- package/dist/mermaid/grouper.d.ts.map +1 -1
- package/dist/mermaid/grouper.js.map +1 -1
- package/dist/mermaid/test-coverage-renderer.d.ts +1 -1
- package/dist/mermaid/test-coverage-renderer.d.ts.map +1 -1
- package/dist/mermaid/ts-module-graph-renderer.d.ts +6 -2
- package/dist/mermaid/ts-module-graph-renderer.d.ts.map +1 -1
- package/dist/mermaid/ts-module-graph-renderer.js +49 -2
- package/dist/mermaid/ts-module-graph-renderer.js.map +1 -1
- package/dist/mermaid/validator-quality.js +1 -1
- package/dist/mermaid/validator-quality.js.map +1 -1
- package/dist/mermaid/validator-render.js +1 -1
- package/dist/mermaid/validator-render.js.map +1 -1
- package/dist/parser/archjson-aggregator.d.ts +1 -0
- package/dist/parser/archjson-aggregator.d.ts.map +1 -1
- package/dist/parser/archjson-aggregator.js +37 -7
- package/dist/parser/archjson-aggregator.js.map +1 -1
- package/dist/parser/call-edge-extractor.d.ts +13 -0
- package/dist/parser/call-edge-extractor.d.ts.map +1 -0
- package/dist/parser/call-edge-extractor.js +70 -0
- package/dist/parser/call-edge-extractor.js.map +1 -0
- package/dist/parser/metrics-calculator.d.ts.map +1 -1
- package/dist/parser/metrics-calculator.js +2 -1
- package/dist/parser/metrics-calculator.js.map +1 -1
- package/dist/parser/parallel-parser.d.ts +2 -1
- package/dist/parser/parallel-parser.d.ts.map +1 -1
- package/dist/parser/parallel-parser.js +4 -2
- package/dist/parser/parallel-parser.js.map +1 -1
- package/dist/parser/relation-extractor.d.ts +1 -0
- package/dist/parser/relation-extractor.d.ts.map +1 -1
- package/dist/parser/relation-extractor.js +84 -4
- package/dist/parser/relation-extractor.js.map +1 -1
- package/dist/parser/typescript-parser.d.ts +2 -0
- package/dist/parser/typescript-parser.d.ts.map +1 -1
- package/dist/parser/typescript-parser.js +44 -5
- package/dist/parser/typescript-parser.js.map +1 -1
- package/dist/plugins/cpp/archjson-mapper.d.ts.map +1 -1
- package/dist/plugins/cpp/archjson-mapper.js.map +1 -1
- package/dist/plugins/cpp/builders/class-builder.d.ts.map +1 -1
- package/dist/plugins/cpp/builders/class-builder.js +6 -1
- package/dist/plugins/cpp/builders/class-builder.js.map +1 -1
- package/dist/plugins/cpp/index.d.ts +3 -3
- package/dist/plugins/cpp/index.d.ts.map +1 -1
- package/dist/plugins/cpp/index.js +36 -7
- package/dist/plugins/cpp/index.js.map +1 -1
- package/dist/plugins/cpp/tree-sitter-bridge.d.ts.map +1 -1
- package/dist/plugins/cpp/tree-sitter-bridge.js +10 -7
- package/dist/plugins/cpp/tree-sitter-bridge.js.map +1 -1
- package/dist/plugins/golang/archjson-mapper.d.ts +3 -1
- package/dist/plugins/golang/archjson-mapper.d.ts.map +1 -1
- package/dist/plugins/golang/archjson-mapper.js +56 -1
- package/dist/plugins/golang/archjson-mapper.js.map +1 -1
- package/dist/plugins/golang/atlas/behavior-analyzer.d.ts +2 -1
- package/dist/plugins/golang/atlas/behavior-analyzer.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/behavior-analyzer.js +2 -2
- package/dist/plugins/golang/atlas/behavior-analyzer.js.map +1 -1
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts +5 -1
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.js +43 -1
- package/dist/plugins/golang/atlas/builders/capability-graph-builder.js.map +1 -1
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts +3 -0
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.js +166 -6
- package/dist/plugins/golang/atlas/builders/flow-graph-builder.js.map +1 -1
- package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js +12 -5
- package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js.map +1 -1
- package/dist/plugins/golang/atlas/builders/package-graph-builder.js +5 -5
- package/dist/plugins/golang/atlas/builders/package-graph-builder.js.map +1 -1
- package/dist/plugins/golang/atlas/framework-detector.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/framework-detector.js +2 -0
- package/dist/plugins/golang/atlas/framework-detector.js.map +1 -1
- package/dist/plugins/golang/atlas/go-mod-resolver.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/go-mod-resolver.js +3 -3
- package/dist/plugins/golang/atlas/go-mod-resolver.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/atlas-renderer.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/atlas-renderer.js +32 -2
- package/dist/plugins/golang/atlas/renderers/atlas-renderer.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.js +16 -5
- package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/flow-mermaid-template.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/goroutine-mermaid-template.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/goroutine-mermaid-template.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/mermaid-templates.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/mermaid-templates.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/package-mermaid-template.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/package-mermaid-template.js +5 -5
- package/dist/plugins/golang/atlas/renderers/package-mermaid-template.js.map +1 -1
- package/dist/plugins/golang/atlas/renderers/template-shared.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/renderers/template-shared.js.map +1 -1
- package/dist/plugins/golang/atlas/types.d.ts +9 -3
- package/dist/plugins/golang/atlas/types.d.ts.map +1 -1
- package/dist/plugins/golang/atlas/types.js +1 -1
- package/dist/plugins/golang/atlas/types.js.map +1 -1
- package/dist/plugins/golang/builders/function-builder.d.ts +19 -0
- package/dist/plugins/golang/builders/function-builder.d.ts.map +1 -0
- package/dist/plugins/golang/builders/function-builder.js +206 -0
- package/dist/plugins/golang/builders/function-builder.js.map +1 -0
- package/dist/plugins/golang/builders/goroutine-builder.d.ts +11 -0
- package/dist/plugins/golang/builders/goroutine-builder.d.ts.map +1 -0
- package/dist/plugins/golang/builders/goroutine-builder.js +147 -0
- package/dist/plugins/golang/builders/goroutine-builder.js.map +1 -0
- package/dist/plugins/golang/builders/interface-builder.d.ts +9 -0
- package/dist/plugins/golang/builders/interface-builder.d.ts.map +1 -0
- package/dist/plugins/golang/builders/interface-builder.js +126 -0
- package/dist/plugins/golang/builders/interface-builder.js.map +1 -0
- package/dist/plugins/golang/builders/node-utils.d.ts +8 -0
- package/dist/plugins/golang/builders/node-utils.d.ts.map +1 -0
- package/dist/plugins/golang/builders/node-utils.js +18 -0
- package/dist/plugins/golang/builders/node-utils.js.map +1 -0
- package/dist/plugins/golang/builders/struct-builder.d.ts +12 -0
- package/dist/plugins/golang/builders/struct-builder.d.ts.map +1 -0
- package/dist/plugins/golang/builders/struct-builder.js +81 -0
- package/dist/plugins/golang/builders/struct-builder.js.map +1 -0
- package/dist/plugins/golang/go-atlas-adapter.d.ts +11 -0
- package/dist/plugins/golang/go-atlas-adapter.d.ts.map +1 -0
- package/dist/plugins/golang/go-atlas-adapter.js +47 -0
- package/dist/plugins/golang/go-atlas-adapter.js.map +1 -0
- package/dist/plugins/golang/go-atlas-coordinator.d.ts +12 -0
- package/dist/plugins/golang/go-atlas-coordinator.d.ts.map +1 -0
- package/dist/plugins/golang/go-atlas-coordinator.js +76 -0
- package/dist/plugins/golang/go-atlas-coordinator.js.map +1 -0
- package/dist/plugins/golang/go-mod-reader.d.ts +2 -0
- package/dist/plugins/golang/go-mod-reader.d.ts.map +1 -0
- package/dist/plugins/golang/go-mod-reader.js +12 -0
- package/dist/plugins/golang/go-mod-reader.js.map +1 -0
- package/dist/plugins/golang/go-parse-coordinator.d.ts +23 -0
- package/dist/plugins/golang/go-parse-coordinator.d.ts.map +1 -0
- package/dist/plugins/golang/go-parse-coordinator.js +137 -0
- package/dist/plugins/golang/go-parse-coordinator.js.map +1 -0
- package/dist/plugins/golang/go-test-analyzer.d.ts +10 -0
- package/dist/plugins/golang/go-test-analyzer.d.ts.map +1 -0
- package/dist/plugins/golang/go-test-analyzer.js +90 -0
- package/dist/plugins/golang/go-test-analyzer.js.map +1 -0
- package/dist/plugins/golang/gopls-client.js +6 -6
- package/dist/plugins/golang/gopls-client.js.map +1 -1
- package/dist/plugins/golang/gopls-interface-resolver.d.ts +19 -0
- package/dist/plugins/golang/gopls-interface-resolver.d.ts.map +1 -0
- package/dist/plugins/golang/gopls-interface-resolver.js +49 -0
- package/dist/plugins/golang/gopls-interface-resolver.js.map +1 -0
- package/dist/plugins/golang/index.d.ts +12 -17
- package/dist/plugins/golang/index.d.ts.map +1 -1
- package/dist/plugins/golang/index.js +44 -326
- package/dist/plugins/golang/index.js.map +1 -1
- package/dist/plugins/golang/tree-sitter-bridge.d.ts +4 -24
- package/dist/plugins/golang/tree-sitter-bridge.d.ts.map +1 -1
- package/dist/plugins/golang/tree-sitter-bridge.js +16 -526
- package/dist/plugins/golang/tree-sitter-bridge.js.map +1 -1
- package/dist/plugins/golang/types.d.ts +5 -0
- package/dist/plugins/golang/types.d.ts.map +1 -1
- package/dist/plugins/java/archjson-mapper.d.ts +3 -1
- package/dist/plugins/java/archjson-mapper.d.ts.map +1 -1
- package/dist/plugins/java/archjson-mapper.js +123 -0
- package/dist/plugins/java/archjson-mapper.js.map +1 -1
- package/dist/plugins/java/dependency-extractor.js +2 -2
- package/dist/plugins/java/dependency-extractor.js.map +1 -1
- package/dist/plugins/java/index.d.ts +2 -2
- package/dist/plugins/java/index.d.ts.map +1 -1
- package/dist/plugins/java/index.js +73 -16
- package/dist/plugins/java/index.js.map +1 -1
- package/dist/plugins/java/maven-crossmodule-parser.d.ts +9 -0
- package/dist/plugins/java/maven-crossmodule-parser.d.ts.map +1 -0
- package/dist/plugins/java/maven-crossmodule-parser.js +54 -0
- package/dist/plugins/java/maven-crossmodule-parser.js.map +1 -0
- package/dist/plugins/java/tree-sitter-bridge.d.ts +2 -0
- package/dist/plugins/java/tree-sitter-bridge.d.ts.map +1 -1
- package/dist/plugins/java/tree-sitter-bridge.js +70 -7
- package/dist/plugins/java/tree-sitter-bridge.js.map +1 -1
- package/dist/plugins/java/types.d.ts +7 -0
- package/dist/plugins/java/types.d.ts.map +1 -1
- package/dist/plugins/kotlin/archjson-mapper.d.ts +12 -0
- package/dist/plugins/kotlin/archjson-mapper.d.ts.map +1 -0
- package/dist/plugins/kotlin/archjson-mapper.js +157 -0
- package/dist/plugins/kotlin/archjson-mapper.js.map +1 -0
- package/dist/plugins/kotlin/builders/class-builder.d.ts +26 -0
- package/dist/plugins/kotlin/builders/class-builder.d.ts.map +1 -0
- package/dist/plugins/kotlin/builders/class-builder.js +366 -0
- package/dist/plugins/kotlin/builders/class-builder.js.map +1 -0
- package/dist/plugins/kotlin/builders/function-builder.d.ts +15 -0
- package/dist/plugins/kotlin/builders/function-builder.d.ts.map +1 -0
- package/dist/plugins/kotlin/builders/function-builder.js +172 -0
- package/dist/plugins/kotlin/builders/function-builder.js.map +1 -0
- package/dist/plugins/kotlin/builders/import-resolver.d.ts +5 -0
- package/dist/plugins/kotlin/builders/import-resolver.d.ts.map +1 -0
- package/dist/plugins/kotlin/builders/import-resolver.js +10 -0
- package/dist/plugins/kotlin/builders/import-resolver.js.map +1 -0
- package/dist/plugins/kotlin/dependency-extractor.d.ts +13 -0
- package/dist/plugins/kotlin/dependency-extractor.d.ts.map +1 -0
- package/dist/plugins/kotlin/dependency-extractor.js +104 -0
- package/dist/plugins/kotlin/dependency-extractor.js.map +1 -0
- package/dist/plugins/kotlin/index.d.ts +26 -0
- package/dist/plugins/kotlin/index.d.ts.map +1 -0
- package/dist/plugins/kotlin/index.js +238 -0
- package/dist/plugins/kotlin/index.js.map +1 -0
- package/dist/plugins/kotlin/kotlin-type-extractor.d.ts +7 -0
- package/dist/plugins/kotlin/kotlin-type-extractor.d.ts.map +1 -0
- package/dist/plugins/kotlin/kotlin-type-extractor.js +96 -0
- package/dist/plugins/kotlin/kotlin-type-extractor.js.map +1 -0
- package/dist/plugins/kotlin/tree-sitter-bridge.d.ts +15 -0
- package/dist/plugins/kotlin/tree-sitter-bridge.d.ts.map +1 -0
- package/dist/plugins/kotlin/tree-sitter-bridge.js +79 -0
- package/dist/plugins/kotlin/tree-sitter-bridge.js.map +1 -0
- package/dist/plugins/kotlin/types.d.ts +48 -0
- package/dist/plugins/kotlin/types.d.ts.map +1 -0
- package/dist/plugins/kotlin/types.js +2 -0
- package/dist/plugins/kotlin/types.js.map +1 -0
- package/dist/plugins/python/archjson-mapper.d.ts +7 -2
- package/dist/plugins/python/archjson-mapper.d.ts.map +1 -1
- package/dist/plugins/python/archjson-mapper.js +117 -10
- package/dist/plugins/python/archjson-mapper.js.map +1 -1
- package/dist/plugins/python/dependency-extractor.js +1 -1
- package/dist/plugins/python/dependency-extractor.js.map +1 -1
- package/dist/plugins/python/import-extractor.d.ts +11 -0
- package/dist/plugins/python/import-extractor.d.ts.map +1 -0
- package/dist/plugins/python/import-extractor.js +67 -0
- package/dist/plugins/python/import-extractor.js.map +1 -0
- package/dist/plugins/python/index.d.ts +5 -3
- package/dist/plugins/python/index.d.ts.map +1 -1
- package/dist/plugins/python/index.js +115 -12
- package/dist/plugins/python/index.js.map +1 -1
- package/dist/plugins/python/tree-sitter-bridge.d.ts +2 -0
- package/dist/plugins/python/tree-sitter-bridge.d.ts.map +1 -1
- package/dist/plugins/python/tree-sitter-bridge.js +67 -1
- package/dist/plugins/python/tree-sitter-bridge.js.map +1 -1
- package/dist/plugins/python/types.d.ts +6 -0
- package/dist/plugins/python/types.d.ts.map +1 -1
- package/dist/plugins/shared/mapper-utils.d.ts +1 -1
- package/dist/plugins/shared/mapper-utils.d.ts.map +1 -1
- package/dist/plugins/shared/mapper-utils.js.map +1 -1
- package/dist/plugins/typescript/builders/module-graph-builder.d.ts +2 -2
- package/dist/plugins/typescript/builders/module-graph-builder.d.ts.map +1 -1
- package/dist/plugins/typescript/builders/module-graph-builder.js +29 -8
- package/dist/plugins/typescript/builders/module-graph-builder.js.map +1 -1
- package/dist/plugins/typescript/index.d.ts +3 -2
- package/dist/plugins/typescript/index.d.ts.map +1 -1
- package/dist/plugins/typescript/index.js +116 -10
- package/dist/plugins/typescript/index.js.map +1 -1
- package/dist/plugins/typescript/typescript-analyzer.d.ts +2 -2
- package/dist/plugins/typescript/typescript-analyzer.d.ts.map +1 -1
- package/dist/plugins/typescript/typescript-analyzer.js +1 -1
- package/dist/plugins/typescript/typescript-analyzer.js.map +1 -1
- package/dist/types/cognitive-summary.d.ts +20 -0
- package/dist/types/cognitive-summary.d.ts.map +1 -0
- package/dist/types/cognitive-summary.js +2 -0
- package/dist/types/cognitive-summary.js.map +1 -0
- package/dist/types/config-cli.d.ts +4 -0
- package/dist/types/config-cli.d.ts.map +1 -1
- package/dist/types/config-global.d.ts +4 -0
- package/dist/types/config-global.d.ts.map +1 -1
- package/dist/types/{extensions.d.ts → extensions/go-atlas.d.ts} +5 -99
- package/dist/types/extensions/go-atlas.d.ts.map +1 -0
- package/dist/types/extensions/go-atlas.js +2 -0
- package/dist/types/extensions/go-atlas.js.map +1 -0
- package/dist/types/extensions/index.d.ts +15 -0
- package/dist/types/extensions/index.d.ts.map +1 -0
- package/dist/types/extensions/index.js +5 -0
- package/dist/types/extensions/index.js.map +1 -0
- package/dist/types/extensions/project-semantics.d.ts +55 -0
- package/dist/types/extensions/project-semantics.d.ts.map +1 -0
- package/dist/types/extensions/project-semantics.js +126 -0
- package/dist/types/extensions/project-semantics.js.map +1 -0
- package/dist/types/extensions/test-analysis.d.ts +68 -0
- package/dist/types/extensions/test-analysis.d.ts.map +1 -0
- package/dist/types/extensions/test-analysis.js +2 -0
- package/dist/types/extensions/test-analysis.js.map +1 -0
- package/dist/types/extensions/ts-analysis.d.ts +33 -0
- package/dist/types/extensions/ts-analysis.d.ts.map +1 -0
- package/dist/types/extensions/ts-analysis.js +2 -0
- package/dist/types/extensions/ts-analysis.js.map +1 -0
- package/dist/types/git-history.d.ts +68 -0
- package/dist/types/git-history.d.ts.map +1 -0
- package/dist/types/git-history.js +2 -0
- package/dist/types/git-history.js.map +1 -0
- package/dist/types/index.d.ts +38 -29
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/metric-vector.d.ts +17 -0
- package/dist/types/metric-vector.d.ts.map +1 -0
- package/dist/types/metric-vector.js +2 -0
- package/dist/types/metric-vector.js.map +1 -0
- package/dist/utils/cli-detector.js +2 -2
- package/dist/utils/cli-detector.js.map +1 -1
- package/dist/utils/tsconfig-finder.d.ts.map +1 -1
- package/dist/utils/tsconfig-finder.js +6 -1
- package/dist/utils/tsconfig-finder.js.map +1 -1
- package/node_modules/tree-sitter/prebuilds/linux-x64/node.napi.glibc.node +0 -0
- package/package.json +5 -2
- package/dist/cli/cache-manager.d.ts.map +0 -1
- package/dist/cli/cache-manager.js.map +0 -1
- package/dist/cli/error-handler.d.ts +0 -15
- package/dist/cli/error-handler.d.ts.map +0 -1
- package/dist/cli/error-handler.js.map +0 -1
- package/dist/cli/errors.d.ts.map +0 -1
- package/dist/cli/errors.js +0 -31
- package/dist/cli/errors.js.map +0 -1
- package/dist/cli/progress.d.ts.map +0 -1
- package/dist/cli/progress.js.map +0 -1
- package/dist/types/extensions.d.ts.map +0 -1
- package/dist/types/extensions.js +0 -4
- package/dist/types/extensions.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ArchGuard
|
|
2
2
|
|
|
3
|
-
ArchGuard analyzes source code to extract architectural insights and generates **Mermaid diagrams** at multiple levels of detail. It supports TypeScript (stable), Go (stable), Java (beta), and
|
|
3
|
+
ArchGuard analyzes source code to extract architectural insights and generates **Mermaid diagrams** at multiple levels of detail. It supports TypeScript (stable), Go (stable), Java (beta), Python (beta), C++ (beta), and Kotlin/Android (beta) through a plugin system, and exposes query and MCP workflows for architecture inspection.
|
|
4
4
|
|
|
5
5
|
## Screenshots
|
|
6
6
|
|
|
@@ -16,9 +16,11 @@ ArchGuard analyzes source code to extract architectural insights and generates *
|
|
|
16
16
|
## Features
|
|
17
17
|
|
|
18
18
|
- **AI-Native MCP Interface**: Query architecture in natural language from Claude Code or Codex — analyze projects, trace dependencies, find implementers, detect cycles
|
|
19
|
-
- **Multi-Language Support**: TypeScript, Go, Java, Python via plugin system
|
|
19
|
+
- **Multi-Language Support**: TypeScript, Go, Java, Python, C++, Kotlin/Android via plugin system
|
|
20
20
|
- **Multi-Level Diagrams**: Package (high-level), Class (default), Method (low-level)
|
|
21
21
|
- **Go Architecture Atlas**: 4-layer visualization — package graph, capability graph, goroutine topology, flow graph
|
|
22
|
+
- **Kotlin/Android Support**: Auto-detect Kotlin projects, parse `build.gradle.kts` / `settings.gradle.kts`, and plan multi-module diagrams
|
|
23
|
+
- **Static Test Analysis**: Test coverage mapping, assertion density, orphan detection, and quality issues — no test execution required, including Kotlin/Android projects
|
|
22
24
|
- **Parallel Processing**: High-performance parsing with configurable concurrency
|
|
23
25
|
- **Smart Caching**: File-based caching with SHA-256 hashing for fast repeated runs
|
|
24
26
|
- **Zero External Dependencies**: Local Mermaid rendering using isomorphic-mermaid
|
|
@@ -42,6 +44,24 @@ Register the MCP server (project scope):
|
|
|
42
44
|
claude mcp add --scope project archguard -- archguard mcp
|
|
43
45
|
```
|
|
44
46
|
|
|
47
|
+
Or install it for Claude Code user scope, including the bundled repository
|
|
48
|
+
skills from this checkout:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
bash scripts/install-claude-user-scope.sh
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
This installs the `archguard` binary globally for the current user, registers
|
|
55
|
+
`archguard mcp` in `~/.claude/mcp.json`, and syncs all skills from
|
|
56
|
+
`.agents/skills/` into `~/.claude/skills/`.
|
|
57
|
+
|
|
58
|
+
If you already have fresh `dist/` artifacts and only want to re-install the user
|
|
59
|
+
scope wiring, use:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
bash scripts/install-claude-user-scope.sh --skip-build
|
|
63
|
+
```
|
|
64
|
+
|
|
45
65
|
Then ask Claude to analyze any project:
|
|
46
66
|
|
|
47
67
|
> Analyze the architecture of `/path/to/my-project` using archguard MCP.
|
|
@@ -58,6 +78,18 @@ Claude will call `archguard_analyze` to parse the project and build a query inde
|
|
|
58
78
|
|
|
59
79
|
> Based on the archguard analysis, suggest refactoring directions for reducing coupling.
|
|
60
80
|
|
|
81
|
+
To include test quality analysis alongside architecture inspection:
|
|
82
|
+
|
|
83
|
+
> Analyze the architecture and test coverage of `/path/to/my-project` using archguard MCP. Check which source entities lack test coverage and flag any test files with no assertions.
|
|
84
|
+
|
|
85
|
+
Claude will call `archguard_analyze(includeTests: true)`, then sequence through the test analysis tools:
|
|
86
|
+
|
|
87
|
+
> Which test files have no assertions?
|
|
88
|
+
|
|
89
|
+
> Show me the entity coverage ratio and assertion density for this project.
|
|
90
|
+
|
|
91
|
+
> List all orphan test files — tests with no detected link to source entities.
|
|
92
|
+
|
|
61
93
|
**Re-using an existing analysis**: If the project was already analyzed in a previous session, query artifacts persist in `.archguard/query/`. You can skip re-analysis and query the cache directly:
|
|
62
94
|
|
|
63
95
|
> Using the existing archguard cache, show me what depends on `DiagramProcessor`.
|
|
@@ -86,7 +118,7 @@ Point archguard at any project path — no configuration file needed:
|
|
|
86
118
|
|
|
87
119
|
> Analyze the architecture of `/home/user/work/my-project` using archguard MCP.
|
|
88
120
|
|
|
89
|
-
Archguard auto-detects the language and project structure, generates diagrams under `<project>/.archguard/`, and builds the query index for follow-up queries.
|
|
121
|
+
Archguard auto-detects the language and project structure, generates diagrams under `<project>/.archguard/`, and builds the query index for follow-up queries. Kotlin/Android projects are detected from `build.gradle.kts`, `settings.gradle.kts`, `.kt`, and `.kts` markers and can be analyzed without forcing `--lang kotlin`.
|
|
90
122
|
|
|
91
123
|
### Standalone CLI
|
|
92
124
|
|
|
@@ -117,7 +149,7 @@ archguard analyze [options]
|
|
|
117
149
|
|
|
118
150
|
- `-s, --sources <paths...>` - Source directories; triggers auto-detection and multi-diagram generation
|
|
119
151
|
- `--diagrams <levels...>` - Filter by level: `package` | `class` | `method` (language-dependent)
|
|
120
|
-
- `--lang <language>` - Language: `typescript` | `go` | `java` | `python` (auto-detected)
|
|
152
|
+
- `--lang <language>` - Language: `typescript` | `go` | `java` | `python` | `cpp` | `kotlin` (auto-detected)
|
|
121
153
|
- `--config <path>` - Config file path (default: `archguard.config.json`)
|
|
122
154
|
|
|
123
155
|
**Output:**
|
|
@@ -149,11 +181,6 @@ archguard analyze [options]
|
|
|
149
181
|
- `--atlas-include-tests` - Include test packages in Atlas
|
|
150
182
|
- `--atlas-protocols <protocols>` - Protocols included in flow graph
|
|
151
183
|
|
|
152
|
-
**Claude CLI:**
|
|
153
|
-
|
|
154
|
-
- `--cli-command <command>` - Claude CLI executable (default: `claude`)
|
|
155
|
-
- `--cli-args <args>` - Additional Claude CLI arguments
|
|
156
|
-
|
|
157
184
|
**Examples:**
|
|
158
185
|
|
|
159
186
|
```bash
|
|
@@ -180,6 +207,15 @@ archguard analyze -s ./src -e "**/*.test.ts" "**/*.spec.ts"
|
|
|
180
207
|
|
|
181
208
|
# Dark theme
|
|
182
209
|
archguard analyze -s ./src --mermaid-theme dark
|
|
210
|
+
|
|
211
|
+
# Analyze architecture and generate test quality report
|
|
212
|
+
archguard analyze --include-tests
|
|
213
|
+
|
|
214
|
+
# Refresh test report only, skip re-parsing source (faster)
|
|
215
|
+
archguard analyze --tests-only
|
|
216
|
+
|
|
217
|
+
# Kotlin/Android project (explicit language selection is optional)
|
|
218
|
+
archguard analyze -s ./app/src/main/java --lang kotlin
|
|
183
219
|
```
|
|
184
220
|
|
|
185
221
|
### `query`
|
|
@@ -237,6 +273,8 @@ codex mcp add archguard -- archguard mcp
|
|
|
237
273
|
|
|
238
274
|
**Available MCP tools:**
|
|
239
275
|
|
|
276
|
+
Architecture query:
|
|
277
|
+
|
|
240
278
|
| Tool | Purpose |
|
|
241
279
|
|------|---------|
|
|
242
280
|
| `archguard_summary` | Project overview: entity/relation counts, scope list |
|
|
@@ -247,7 +285,26 @@ codex mcp add archguard -- archguard mcp
|
|
|
247
285
|
| `archguard_find_subclasses` | All subclasses of a base class |
|
|
248
286
|
| `archguard_get_file_entities` | All entities defined in a source file |
|
|
249
287
|
| `archguard_detect_cycles` | Circular dependency detection |
|
|
250
|
-
| `archguard_analyze` | Refresh query artifacts
|
|
288
|
+
| `archguard_analyze` | Refresh query artifacts; pass `includeTests: true` to include test analysis |
|
|
289
|
+
|
|
290
|
+
Test analysis (requires `archguard_analyze(includeTests: true)` first):
|
|
291
|
+
|
|
292
|
+
| Tool | Purpose |
|
|
293
|
+
|------|---------|
|
|
294
|
+
| `archguard_detect_test_patterns` | Detect test frameworks and return suggested pattern config — call this first |
|
|
295
|
+
| `archguard_get_test_metrics` | Summary: file counts, entity coverage ratio, assertion density, issue counts |
|
|
296
|
+
| `archguard_get_test_issues` | Per-file issues: `zero_assertion`, `orphan_test`, `assertion_poverty`, `skip_accumulation` |
|
|
297
|
+
| `archguard_get_entity_coverage` | Per-entity coverage map with confidence scores |
|
|
298
|
+
|
|
299
|
+
Git history analysis:
|
|
300
|
+
|
|
301
|
+
| Tool | Purpose |
|
|
302
|
+
|------|---------|
|
|
303
|
+
| `archguard_analyze_git` | Index git history for change-based queries |
|
|
304
|
+
| `archguard_get_change_context` | Commits and changed files for an entity |
|
|
305
|
+
| `archguard_get_cochange` | Files that frequently change together |
|
|
306
|
+
| `archguard_get_change_risk` | Change risk score based on churn and coupling |
|
|
307
|
+
| `archguard_get_ownership` | Author ownership breakdown per file or entity |
|
|
251
308
|
|
|
252
309
|
See [MCP Usage Guide](docs/user-guide/mcp-usage.md) for setup, tool reference, and usage patterns.
|
|
253
310
|
|
|
@@ -271,12 +328,14 @@ archguard cache path # Show cache directory
|
|
|
271
328
|
|
|
272
329
|
## Language Support
|
|
273
330
|
|
|
274
|
-
| Language
|
|
275
|
-
|
|
276
|
-
| TypeScript
|
|
277
|
-
| Go
|
|
278
|
-
| Java
|
|
279
|
-
| Python
|
|
331
|
+
| Language | Status | Parser | Features |
|
|
332
|
+
|----------------|--------|---------------------------|----------------------------------------------------|
|
|
333
|
+
| TypeScript | Stable | ts-morph (AST) | Classes, interfaces, enums, dependencies, path aliases |
|
|
334
|
+
| Go | Stable | tree-sitter + gopls | Structs, interfaces, goroutines, Architecture Atlas |
|
|
335
|
+
| Java | Beta | tree-sitter | Classes, interfaces, Maven/Gradle deps |
|
|
336
|
+
| Python | Beta | tree-sitter | Classes, functions, pip/Poetry deps |
|
|
337
|
+
| C++ | Beta | tree-sitter | Structs, classes, inheritance, CMake deps |
|
|
338
|
+
| Kotlin/Android | Beta | tree-sitter | Classes, interfaces, top-level functions, `build.gradle.kts` deps, `settings.gradle.kts` multi-module planning, static test analysis |
|
|
280
339
|
|
|
281
340
|
### Go Architecture Atlas
|
|
282
341
|
|
|
@@ -380,8 +439,34 @@ archguard analyze --diagrams class method
|
|
|
380
439
|
| `cache.enabled` | boolean | `true` | Enable file-based caching |
|
|
381
440
|
| `mermaid.theme` | string | `default` | Diagram theme |
|
|
382
441
|
| `mermaid.transparentBackground` | boolean | `true` | Transparent PNG background |
|
|
383
|
-
| `
|
|
384
|
-
|
|
442
|
+
| `projectSemantics` | object | — | Skill-authored project knowledge consumed during analysis |
|
|
443
|
+
|
|
444
|
+
## Skill-Authored Project Semantics
|
|
445
|
+
|
|
446
|
+
ArchGuard does not discover project semantics at runtime. Skills or users write project knowledge, and ArchGuard loads, validates, merges, and consumes it during analysis.
|
|
447
|
+
|
|
448
|
+
Authoritative locations and priority:
|
|
449
|
+
|
|
450
|
+
1. `archguard.config.json.projectSemantics`
|
|
451
|
+
2. `.archguard/project-semantics.json`
|
|
452
|
+
3. built-in defaults
|
|
453
|
+
|
|
454
|
+
The sidecar file uses the same shape as `archguard.config.json.projectSemantics`.
|
|
455
|
+
|
|
456
|
+
```json
|
|
457
|
+
{
|
|
458
|
+
"additionalTestPatterns": ["tests/**/*.ts"],
|
|
459
|
+
"customAssertionPatterns": ["expect[A-Z]\\w+"],
|
|
460
|
+
"architecturalLayers": {
|
|
461
|
+
"src/analysis": "analysis",
|
|
462
|
+
"src/cli": "cli",
|
|
463
|
+
"src/rendering": "rendering"
|
|
464
|
+
},
|
|
465
|
+
"suggestedDepth": 2
|
|
466
|
+
}
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
If either the config `projectSemantics` block or `.archguard/project-semantics.json` is malformed, ArchGuard fails fast during configuration load or analysis startup instead of silently ignoring the knowledge.
|
|
385
470
|
|
|
386
471
|
## Output Formats
|
|
387
472
|
|
|
@@ -485,7 +570,9 @@ archguard/
|
|
|
485
570
|
│ │ ├── golang/ # Stable (tree-sitter + gopls + Atlas)
|
|
486
571
|
│ │ │ └── atlas/ # package, capability, goroutine, flow builders
|
|
487
572
|
│ │ ├── java/ # Beta
|
|
488
|
-
│ │
|
|
573
|
+
│ │ ├── python/ # Beta
|
|
574
|
+
│ │ ├── cpp/ # Beta (tree-sitter + CMake)
|
|
575
|
+
│ │ └── kotlin/ # Beta (tree-sitter + build.gradle.kts)
|
|
489
576
|
│ └── types/ # Core types (config, ArchJSON, extensions)
|
|
490
577
|
├── tests/
|
|
491
578
|
│ ├── unit/ # Unit tests
|
|
@@ -564,11 +651,11 @@ npm run build
|
|
|
564
651
|
# Analyze ArchGuard itself
|
|
565
652
|
node dist/cli/index.js analyze -v
|
|
566
653
|
|
|
567
|
-
# Package-level overview
|
|
568
|
-
node dist/cli/index.js analyze
|
|
654
|
+
# Package-level overview only
|
|
655
|
+
node dist/cli/index.js analyze --diagrams package
|
|
569
656
|
|
|
570
657
|
# Method-level detail for a module
|
|
571
|
-
node dist/cli/index.js analyze -s ./src/cli
|
|
658
|
+
node dist/cli/index.js analyze -s ./src/cli --diagrams method
|
|
572
659
|
```
|
|
573
660
|
|
|
574
661
|
## Technology Stack
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PackageGraph, PackageNode } from '../types/extensions/go-atlas.js';
|
|
2
|
+
export interface EnrichedPackageNode extends PackageNode {
|
|
3
|
+
fanIn: number;
|
|
4
|
+
fanOut: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function computePackageFanMetrics(graph: PackageGraph): {
|
|
7
|
+
fanIn: Map<string, number>;
|
|
8
|
+
fanOut: Map<string, number>;
|
|
9
|
+
};
|
|
10
|
+
export declare function enrichPackageNodes(nodes: PackageNode[], fanIn: Map<string, number>, fanOut: Map<string, number>): EnrichedPackageNode[];
|
|
11
|
+
//# sourceMappingURL=atlas-metrics-analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atlas-metrics-analysis.d.ts","sourceRoot":"","sources":["../../src/analysis/atlas-metrics-analysis.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAEhF,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAQD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,GAAG;IAC7D,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B,CAUA;AAMD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAAE,EACpB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,mBAAmB,EAAE,CAMvB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function computePackageFanMetrics(graph) {
|
|
2
|
+
const fanIn = new Map();
|
|
3
|
+
const fanOut = new Map();
|
|
4
|
+
for (const edge of graph.edges) {
|
|
5
|
+
fanIn.set(edge.target, (fanIn.get(edge.target) ?? 0) + 1);
|
|
6
|
+
fanOut.set(edge.source, (fanOut.get(edge.source) ?? 0) + 1);
|
|
7
|
+
}
|
|
8
|
+
return { fanIn, fanOut };
|
|
9
|
+
}
|
|
10
|
+
export function enrichPackageNodes(nodes, fanIn, fanOut) {
|
|
11
|
+
return nodes.map((node) => ({
|
|
12
|
+
...node,
|
|
13
|
+
fanIn: fanIn.get(node.id) ?? 0,
|
|
14
|
+
fanOut: fanOut.get(node.id) ?? 0,
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=atlas-metrics-analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atlas-metrics-analysis.js","sourceRoot":"","sources":["../../src/analysis/atlas-metrics-analysis.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,wBAAwB,CAAC,KAAmB;IAI1D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAMD,MAAM,UAAU,kBAAkB,CAChC,KAAoB,EACpB,KAA0B,EAC1B,MAA2B;IAE3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,GAAG,IAAI;QACP,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;KACjC,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DependencyConstraintRule, RuleResult } from './rule-types.js';
|
|
2
|
+
import type { Relation } from '../../types/index.js';
|
|
3
|
+
export declare function checkDependencyConstraint(rule: DependencyConstraintRule, relations: Relation[]): RuleResult;
|
|
4
|
+
//# sourceMappingURL=dependency-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-checker.d.ts","sourceRoot":"","sources":["../../../src/analysis/fitness/dependency-checker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,wBAAwB,EAC9B,SAAS,EAAE,QAAQ,EAAE,GACpB,UAAU,CAaZ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import micromatch from 'micromatch';
|
|
2
|
+
export function checkDependencyConstraint(rule, relations) {
|
|
3
|
+
for (const relation of relations) {
|
|
4
|
+
const sourceMatches = micromatch.isMatch(relation.source, rule.from);
|
|
5
|
+
const targetMatches = micromatch.isMatch(relation.target, rule.to);
|
|
6
|
+
if (sourceMatches && targetMatches) {
|
|
7
|
+
return {
|
|
8
|
+
rule,
|
|
9
|
+
passed: false,
|
|
10
|
+
detail: `Forbidden dependency: ${relation.source} → ${relation.target}. ${rule.message}`,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return { rule, passed: true };
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=dependency-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-checker.js","sourceRoot":"","sources":["../../../src/analysis/fitness/dependency-checker.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAIpC,MAAM,UAAU,yBAAyB,CACvC,IAA8B,EAC9B,SAAqB;IAErB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,aAAa,IAAI,aAAa,EAAE,CAAC;YACnC,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,yBAAyB,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE;aACzF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MetricThresholdRule, FitnessRule, RuleResult } from './rule-types.js';
|
|
2
|
+
import type { MetricVector } from '../../types/metric-vector.js';
|
|
3
|
+
import type { Relation } from '../../types/index.js';
|
|
4
|
+
export declare function evaluateMetricRule(rule: MetricThresholdRule, vector: MetricVector): RuleResult;
|
|
5
|
+
export declare function evaluateAllRules(rules: FitnessRule[], vector: MetricVector, relations: Relation[]): RuleResult[];
|
|
6
|
+
//# sourceMappingURL=rule-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-evaluator.d.ts","sourceRoot":"","sources":["../../../src/analysis/fitness/rule-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAmCjD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAsB9F;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAAE,EACpB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,QAAQ,EAAE,GACpB,UAAU,EAAE,CAUd"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { evaluateGimLossRule } from '../gim/gim-loss-evaluator.js';
|
|
2
|
+
import { checkDependencyConstraint } from './dependency-checker.js';
|
|
3
|
+
const KNOWN_METRIC_KEYS = new Set([
|
|
4
|
+
'schemaVersion',
|
|
5
|
+
'totalEntities',
|
|
6
|
+
'totalRelations',
|
|
7
|
+
'inferredRelationRatio',
|
|
8
|
+
'sccCount',
|
|
9
|
+
'maxInDegree',
|
|
10
|
+
'maxOutDegree',
|
|
11
|
+
'maxPackageSize',
|
|
12
|
+
'giniInDegree',
|
|
13
|
+
'giniPackageSize',
|
|
14
|
+
'packageCount',
|
|
15
|
+
'entityCoverageRatio',
|
|
16
|
+
]);
|
|
17
|
+
function compare(actual, op, threshold) {
|
|
18
|
+
switch (op) {
|
|
19
|
+
case '<':
|
|
20
|
+
return actual < threshold;
|
|
21
|
+
case '<=':
|
|
22
|
+
return actual <= threshold;
|
|
23
|
+
case '>':
|
|
24
|
+
return actual > threshold;
|
|
25
|
+
case '>=':
|
|
26
|
+
return actual >= threshold;
|
|
27
|
+
case '==':
|
|
28
|
+
return actual === threshold;
|
|
29
|
+
case '!=':
|
|
30
|
+
return actual !== threshold;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function evaluateMetricRule(rule, vector) {
|
|
34
|
+
if (!KNOWN_METRIC_KEYS.has(rule.metric)) {
|
|
35
|
+
return {
|
|
36
|
+
rule,
|
|
37
|
+
passed: false,
|
|
38
|
+
detail: `Unknown metric: '${rule.metric}'`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const raw = vector[rule.metric];
|
|
42
|
+
if (raw === null || raw === undefined) {
|
|
43
|
+
return {
|
|
44
|
+
rule,
|
|
45
|
+
passed: false,
|
|
46
|
+
detail: `Metric '${rule.metric}' is not available (did you run with --include-tests?)`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const actual = raw;
|
|
50
|
+
const passed = compare(actual, rule.op, rule.value);
|
|
51
|
+
return { rule, passed, actual };
|
|
52
|
+
}
|
|
53
|
+
export function evaluateAllRules(rules, vector, relations) {
|
|
54
|
+
return rules.map((rule) => {
|
|
55
|
+
if (rule.type === 'no-dependency') {
|
|
56
|
+
return checkDependencyConstraint(rule, relations);
|
|
57
|
+
}
|
|
58
|
+
if (rule.type === 'gim-loss') {
|
|
59
|
+
return evaluateGimLossRule(rule, vector);
|
|
60
|
+
}
|
|
61
|
+
return evaluateMetricRule(rule, vector);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=rule-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-evaluator.js","sourceRoot":"","sources":["../../../src/analysis/fitness/rule-evaluator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS;IACxC,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,uBAAuB;IACvB,UAAU;IACV,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IACjB,cAAc;IACd,qBAAqB;CACtB,CAAC,CAAC;AAEH,SAAS,OAAO,CAAC,MAAc,EAAE,EAA6B,EAAE,SAAiB;IAC/E,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,GAAG;YACN,OAAO,MAAM,GAAG,SAAS,CAAC;QAC5B,KAAK,IAAI;YACP,OAAO,MAAM,IAAI,SAAS,CAAC;QAC7B,KAAK,GAAG;YACN,OAAO,MAAM,GAAG,SAAS,CAAC;QAC5B,KAAK,IAAI;YACP,OAAO,MAAM,IAAI,SAAS,CAAC;QAC7B,KAAK,IAAI;YACP,OAAO,MAAM,KAAK,SAAS,CAAC;QAC9B,KAAK,IAAI;YACP,OAAO,MAAM,KAAK,SAAS,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAyB,EAAE,MAAoB;IAChF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,oBAAoB,IAAI,CAAC,MAAM,GAAG;SAC3C,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAI,MAA6C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAExE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,WAAW,IAAI,CAAC,MAAM,wDAAwD;SACvF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,GAAa,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAoB,EACpB,MAAoB,EACpB,SAAqB;IAErB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,OAAO,yBAAyB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type ComparisonOp = '<' | '<=' | '>' | '>=' | '==' | '!=';
|
|
2
|
+
export interface MetricThresholdRule {
|
|
3
|
+
type?: 'metric';
|
|
4
|
+
metric: string;
|
|
5
|
+
op: ComparisonOp;
|
|
6
|
+
value: number;
|
|
7
|
+
message: string;
|
|
8
|
+
}
|
|
9
|
+
export interface DependencyConstraintRule {
|
|
10
|
+
type: 'no-dependency';
|
|
11
|
+
from: string;
|
|
12
|
+
to: string;
|
|
13
|
+
message: string;
|
|
14
|
+
}
|
|
15
|
+
export type GimLossType = 'feasibility' | 'consistency' | 'description-length' | 'generation-alignment';
|
|
16
|
+
export interface GimLossRule {
|
|
17
|
+
type: 'gim-loss';
|
|
18
|
+
loss: GimLossType;
|
|
19
|
+
op: ComparisonOp;
|
|
20
|
+
value: number;
|
|
21
|
+
message: string;
|
|
22
|
+
}
|
|
23
|
+
export type FitnessRule = MetricThresholdRule | DependencyConstraintRule | GimLossRule;
|
|
24
|
+
export interface FitnessConfig {
|
|
25
|
+
rules: FitnessRule[];
|
|
26
|
+
failOnViolation: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface RuleResult {
|
|
29
|
+
rule: FitnessRule;
|
|
30
|
+
passed: boolean;
|
|
31
|
+
actual?: number | string;
|
|
32
|
+
detail?: string;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=rule-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-types.d.ts","sourceRoot":"","sources":["../../../src/analysis/fitness/rule-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;AAExG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,YAAY,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,wBAAwB,GAAG,WAAW,CAAC;AAEvF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-types.js","sourceRoot":"","sources":["../../../src/analysis/fitness/rule-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { MetricSnapshot } from '../snapshot-store.js';
|
|
2
|
+
export type DirectionType = 'expansion' | 'contraction' | 'stable' | 'insufficient_data';
|
|
3
|
+
export type ConfidenceLevel = 'low' | 'medium';
|
|
4
|
+
export interface DirectionSignal {
|
|
5
|
+
metric: string;
|
|
6
|
+
direction: 'expansion' | 'contraction' | 'neutral';
|
|
7
|
+
delta: number | null;
|
|
8
|
+
percentChange: number | null;
|
|
9
|
+
}
|
|
10
|
+
export interface DirectionHint {
|
|
11
|
+
direction: DirectionType;
|
|
12
|
+
confidence: ConfidenceLevel | null;
|
|
13
|
+
signals: DirectionSignal[];
|
|
14
|
+
caveat: string;
|
|
15
|
+
recommendation: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function computeDirectionHint(snapshots: MetricSnapshot[]): DirectionHint;
|
|
18
|
+
//# sourceMappingURL=direction-hint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direction-hint.d.ts","sourceRoot":"","sources":["../../../src/analysis/gim/direction-hint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,mBAAmB,CAAC;AACzF,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAgCD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,aAAa,CAqD/E"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { diffSnapshots } from '../snapshot-diff.js';
|
|
2
|
+
const EXPANSION_ON_INCREASE = new Set(['totalEntities', 'totalRelations', 'packageCount', 'sccCount', 'giniInDegree']);
|
|
3
|
+
const THRESHOLD_PCT = 5;
|
|
4
|
+
function signalDirection(metric, percentChange, delta) {
|
|
5
|
+
if (delta === null)
|
|
6
|
+
return 'neutral';
|
|
7
|
+
if (metric === 'sccCount') {
|
|
8
|
+
if (delta > 0)
|
|
9
|
+
return 'expansion';
|
|
10
|
+
if (delta < 0)
|
|
11
|
+
return 'contraction';
|
|
12
|
+
return 'neutral';
|
|
13
|
+
}
|
|
14
|
+
if (percentChange === null || Math.abs(percentChange) < THRESHOLD_PCT)
|
|
15
|
+
return 'neutral';
|
|
16
|
+
const increasing = delta > 0;
|
|
17
|
+
const expansionOnIncrease = EXPANSION_ON_INCREASE.has(metric);
|
|
18
|
+
if (increasing)
|
|
19
|
+
return expansionOnIncrease ? 'expansion' : 'contraction';
|
|
20
|
+
return expansionOnIncrease ? 'contraction' : 'expansion';
|
|
21
|
+
}
|
|
22
|
+
const RECOMMENDATION = {
|
|
23
|
+
expansion: 'System is in expansion phase. Consider scheduling contraction/refactor work to prevent structural debt from accumulating.',
|
|
24
|
+
contraction: 'System is in contraction phase. Good time to stabilize interfaces and consolidate responsibilities.',
|
|
25
|
+
stable: 'System is stable. Monitor key metrics (sccCount, giniInDegree) to catch early phase transitions.',
|
|
26
|
+
insufficient_data: 'Not enough snapshots to determine direction. Run archguard analyze to generate a second snapshot.',
|
|
27
|
+
};
|
|
28
|
+
export function computeDirectionHint(snapshots) {
|
|
29
|
+
const CAVEAT = 'Based on 2-point comparison only. Direction may flip between consecutive snapshots. Treat as a weak signal, not a definitive trend.';
|
|
30
|
+
if (snapshots.length < 2) {
|
|
31
|
+
return {
|
|
32
|
+
direction: 'insufficient_data',
|
|
33
|
+
confidence: null,
|
|
34
|
+
signals: [],
|
|
35
|
+
caveat: CAVEAT,
|
|
36
|
+
recommendation: RECOMMENDATION.insufficient_data,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const newer = snapshots[0];
|
|
40
|
+
const older = snapshots[1];
|
|
41
|
+
const diff = diffSnapshots(older, newer);
|
|
42
|
+
const trackedMetrics = ['totalEntities', 'totalRelations', 'packageCount', 'sccCount', 'giniInDegree'];
|
|
43
|
+
const signals = trackedMetrics.map((metric) => {
|
|
44
|
+
const entry = diff.entries.find((e) => e.metric === metric);
|
|
45
|
+
const dir = entry
|
|
46
|
+
? signalDirection(metric, entry.percentChange, entry.delta)
|
|
47
|
+
: 'neutral';
|
|
48
|
+
return {
|
|
49
|
+
metric,
|
|
50
|
+
direction: dir,
|
|
51
|
+
delta: entry?.delta ?? null,
|
|
52
|
+
percentChange: entry?.percentChange ?? null,
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
const expansionCount = signals.filter((s) => s.direction === 'expansion').length;
|
|
56
|
+
const contractionCount = signals.filter((s) => s.direction === 'contraction').length;
|
|
57
|
+
let direction;
|
|
58
|
+
if (expansionCount > contractionCount && expansionCount > signals.length / 2) {
|
|
59
|
+
direction = 'expansion';
|
|
60
|
+
}
|
|
61
|
+
else if (contractionCount > expansionCount && contractionCount > signals.length / 2) {
|
|
62
|
+
direction = 'contraction';
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
direction = 'stable';
|
|
66
|
+
}
|
|
67
|
+
const confidence = snapshots.length >= 3 ? 'medium' : 'low';
|
|
68
|
+
return {
|
|
69
|
+
direction,
|
|
70
|
+
confidence,
|
|
71
|
+
signals,
|
|
72
|
+
caveat: CAVEAT,
|
|
73
|
+
recommendation: RECOMMENDATION[direction],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=direction-hint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direction-hint.js","sourceRoot":"","sources":["../../../src/analysis/gim/direction-hint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { GimLossRule } from '../fitness/rule-types.js';
|
|
2
|
+
import type { RuleResult } from '../fitness/rule-types.js';
|
|
3
|
+
import type { MetricVector } from '../../types/metric-vector.js';
|
|
4
|
+
export interface LossStatus {
|
|
5
|
+
value: number;
|
|
6
|
+
status: 'healthy' | 'warning' | 'info';
|
|
7
|
+
detail: string;
|
|
8
|
+
proxy: true;
|
|
9
|
+
}
|
|
10
|
+
type LossName = GimLossRule['loss'];
|
|
11
|
+
export declare function evaluateGimLossRule(rule: GimLossRule, vector: MetricVector): RuleResult;
|
|
12
|
+
export declare function computeAllLosses(vector: MetricVector): Record<LossName, LossStatus>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=gim-loss-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gim-loss-evaluator.d.ts","sourceRoot":"","sources":["../../../src/analysis/gim/gim-loss-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,IAAI,CAAC;CACb;AAED,KAAK,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAmCpC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,CAiBvF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAgCnF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
function resolveProxy(loss, vector) {
|
|
2
|
+
switch (loss) {
|
|
3
|
+
case 'feasibility':
|
|
4
|
+
return vector.sccCount;
|
|
5
|
+
case 'consistency':
|
|
6
|
+
return vector.inferredRelationRatio;
|
|
7
|
+
case 'description-length':
|
|
8
|
+
return vector.totalEntities + vector.totalRelations;
|
|
9
|
+
case 'generation-alignment':
|
|
10
|
+
return vector.giniInDegree;
|
|
11
|
+
default:
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function compare(actual, op, threshold) {
|
|
16
|
+
switch (op) {
|
|
17
|
+
case '<': return actual < threshold;
|
|
18
|
+
case '<=': return actual <= threshold;
|
|
19
|
+
case '>': return actual > threshold;
|
|
20
|
+
case '>=': return actual >= threshold;
|
|
21
|
+
case '==': return actual === threshold;
|
|
22
|
+
case '!=': return actual !== threshold;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const PROXY_LABELS = {
|
|
26
|
+
feasibility: 'sccCount (proxy for ℒ_F)',
|
|
27
|
+
consistency: 'inferredRelationRatio (proxy for ℒ_C)',
|
|
28
|
+
'description-length': 'totalEntities + totalRelations (proxy for ℒ_D)',
|
|
29
|
+
'generation-alignment': 'giniInDegree (proxy for ℒ_A)',
|
|
30
|
+
};
|
|
31
|
+
export function evaluateGimLossRule(rule, vector) {
|
|
32
|
+
const proxyValue = resolveProxy(rule.loss, vector);
|
|
33
|
+
if (proxyValue === null) {
|
|
34
|
+
return {
|
|
35
|
+
rule,
|
|
36
|
+
passed: false,
|
|
37
|
+
detail: `Unknown GIM loss type: '${rule.loss}'`,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const passed = compare(proxyValue, rule.op, rule.value);
|
|
41
|
+
return {
|
|
42
|
+
rule,
|
|
43
|
+
passed,
|
|
44
|
+
actual: proxyValue,
|
|
45
|
+
detail: `${PROXY_LABELS[rule.loss]} = ${proxyValue}`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function computeAllLosses(vector) {
|
|
49
|
+
const feasibilityVal = vector.sccCount;
|
|
50
|
+
const consistencyVal = vector.inferredRelationRatio;
|
|
51
|
+
const descLengthVal = vector.totalEntities + vector.totalRelations;
|
|
52
|
+
const alignmentVal = vector.giniInDegree;
|
|
53
|
+
return {
|
|
54
|
+
feasibility: {
|
|
55
|
+
value: feasibilityVal,
|
|
56
|
+
status: feasibilityVal === 0 ? 'healthy' : 'warning',
|
|
57
|
+
detail: `sccCount=${feasibilityVal}. Proxy for structural feasibility loss ℒ_F. Zero cycles = minimum feasibility loss.`,
|
|
58
|
+
proxy: true,
|
|
59
|
+
},
|
|
60
|
+
consistency: {
|
|
61
|
+
value: consistencyVal,
|
|
62
|
+
status: consistencyVal <= 0.3 ? 'healthy' : 'warning',
|
|
63
|
+
detail: `inferredRelationRatio=${consistencyVal.toFixed(3)}. Proxy for consistency loss ℒ_C. High ratio = many unresolved type dependencies.`,
|
|
64
|
+
proxy: true,
|
|
65
|
+
},
|
|
66
|
+
'description-length': {
|
|
67
|
+
value: descLengthVal,
|
|
68
|
+
status: 'info',
|
|
69
|
+
detail: `totalEntities(${vector.totalEntities}) + totalRelations(${vector.totalRelations}) = ${descLengthVal}. Proxy for description-length loss ℒ_D. Smaller = easier to describe.`,
|
|
70
|
+
proxy: true,
|
|
71
|
+
},
|
|
72
|
+
'generation-alignment': {
|
|
73
|
+
value: alignmentVal,
|
|
74
|
+
status: alignmentVal <= 0.5 ? 'healthy' : 'warning',
|
|
75
|
+
detail: `giniInDegree=${alignmentVal.toFixed(3)}. Proxy for generation-alignment loss ℒ_A. High gini = few nodes dominate dependency graph.`,
|
|
76
|
+
proxy: true,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=gim-loss-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gim-loss-evaluator.js","sourceRoot":"","sources":["../../../src/analysis/gim/gim-loss-evaluator.ts"],"names":[],"mappings":"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"}
|