@monoes/monograph 1.5.4 → 1.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/pipeline/phases/llm-extract.d.ts.map +1 -1
- package/dist/src/pipeline/phases/llm-extract.js +12 -0
- package/dist/src/pipeline/phases/llm-extract.js.map +1 -1
- package/dist/src/wiki/wiki-generator.d.ts.map +1 -1
- package/dist/src/wiki/wiki-generator.js +5 -1
- package/dist/src/wiki/wiki-generator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -1
- package/src/pipeline/phases/llm-extract.ts +14 -0
- package/src/wiki/wiki-generator.ts +7 -1
- package/dist/src/__tests__/analysis/benchmark.test.d.ts +0 -2
- package/dist/src/__tests__/analysis/benchmark.test.d.ts.map +0 -1
- package/dist/src/__tests__/analysis/benchmark.test.js +0 -54
- package/dist/src/__tests__/analysis/benchmark.test.js.map +0 -1
- package/dist/src/__tests__/analysis/cluster-quality.test.d.ts +0 -2
- package/dist/src/__tests__/analysis/cluster-quality.test.d.ts.map +0 -1
- package/dist/src/__tests__/analysis/cluster-quality.test.js +0 -99
- package/dist/src/__tests__/analysis/cluster-quality.test.js.map +0 -1
- package/dist/src/__tests__/analysis/corpus-health.test.d.ts +0 -2
- package/dist/src/__tests__/analysis/corpus-health.test.d.ts.map +0 -1
- package/dist/src/__tests__/analysis/corpus-health.test.js +0 -29
- package/dist/src/__tests__/analysis/corpus-health.test.js.map +0 -1
- package/dist/src/__tests__/analysis/dependency-health.test.d.ts +0 -2
- package/dist/src/__tests__/analysis/dependency-health.test.d.ts.map +0 -1
- package/dist/src/__tests__/analysis/dependency-health.test.js +0 -96
- package/dist/src/__tests__/analysis/dependency-health.test.js.map +0 -1
- package/dist/src/__tests__/analysis/file-classifier.test.d.ts +0 -2
- package/dist/src/__tests__/analysis/file-classifier.test.d.ts.map +0 -1
- package/dist/src/__tests__/analysis/file-classifier.test.js +0 -49
- package/dist/src/__tests__/analysis/file-classifier.test.js.map +0 -1
- package/dist/src/__tests__/analysis/node-similarity.test.d.ts +0 -2
- package/dist/src/__tests__/analysis/node-similarity.test.d.ts.map +0 -1
- package/dist/src/__tests__/analysis/node-similarity.test.js +0 -66
- package/dist/src/__tests__/analysis/node-similarity.test.js.map +0 -1
- package/dist/src/__tests__/cache/augment-cache.test.d.ts +0 -2
- package/dist/src/__tests__/cache/augment-cache.test.d.ts.map +0 -1
- package/dist/src/__tests__/cache/augment-cache.test.js +0 -47
- package/dist/src/__tests__/cache/augment-cache.test.js.map +0 -1
- package/dist/src/__tests__/cli/check-update.test.d.ts +0 -2
- package/dist/src/__tests__/cli/check-update.test.d.ts.map +0 -1
- package/dist/src/__tests__/cli/check-update.test.js +0 -38
- package/dist/src/__tests__/cli/check-update.test.js.map +0 -1
- package/dist/src/__tests__/cli/hooks-install.test.d.ts +0 -2
- package/dist/src/__tests__/cli/hooks-install.test.d.ts.map +0 -1
- package/dist/src/__tests__/cli/hooks-install.test.js +0 -48
- package/dist/src/__tests__/cli/hooks-install.test.js.map +0 -1
- package/dist/src/__tests__/cli/hooks-marker.test.d.ts +0 -2
- package/dist/src/__tests__/cli/hooks-marker.test.d.ts.map +0 -1
- package/dist/src/__tests__/cli/hooks-marker.test.js +0 -115
- package/dist/src/__tests__/cli/hooks-marker.test.js.map +0 -1
- package/dist/src/__tests__/cli/hooks-status.test.d.ts +0 -2
- package/dist/src/__tests__/cli/hooks-status.test.d.ts.map +0 -1
- package/dist/src/__tests__/cli/hooks-status.test.js +0 -36
- package/dist/src/__tests__/cli/hooks-status.test.js.map +0 -1
- package/dist/src/__tests__/export/adjacency-matrix.test.d.ts +0 -2
- package/dist/src/__tests__/export/adjacency-matrix.test.d.ts.map +0 -1
- package/dist/src/__tests__/export/adjacency-matrix.test.js +0 -103
- package/dist/src/__tests__/export/adjacency-matrix.test.js.map +0 -1
- package/dist/src/__tests__/export/csv.test.d.ts +0 -2
- package/dist/src/__tests__/export/csv.test.d.ts.map +0 -1
- package/dist/src/__tests__/export/csv.test.js +0 -34
- package/dist/src/__tests__/export/csv.test.js.map +0 -1
- package/dist/src/__tests__/export/dot.test.d.ts +0 -2
- package/dist/src/__tests__/export/dot.test.d.ts.map +0 -1
- package/dist/src/__tests__/export/dot.test.js +0 -73
- package/dist/src/__tests__/export/dot.test.js.map +0 -1
- package/dist/src/__tests__/export/gexf.test.d.ts +0 -2
- package/dist/src/__tests__/export/gexf.test.d.ts.map +0 -1
- package/dist/src/__tests__/export/gexf.test.js +0 -66
- package/dist/src/__tests__/export/gexf.test.js.map +0 -1
- package/dist/src/__tests__/export/graphml.test.d.ts +0 -2
- package/dist/src/__tests__/export/graphml.test.d.ts.map +0 -1
- package/dist/src/__tests__/export/graphml.test.js +0 -51
- package/dist/src/__tests__/export/graphml.test.js.map +0 -1
- package/dist/src/__tests__/export/mermaid.test.d.ts +0 -2
- package/dist/src/__tests__/export/mermaid.test.d.ts.map +0 -1
- package/dist/src/__tests__/export/mermaid.test.js +0 -78
- package/dist/src/__tests__/export/mermaid.test.js.map +0 -1
- package/dist/src/__tests__/graph/betweenness.test.d.ts +0 -2
- package/dist/src/__tests__/graph/betweenness.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/betweenness.test.js +0 -77
- package/dist/src/__tests__/graph/betweenness.test.js.map +0 -1
- package/dist/src/__tests__/graph/cycles.test.d.ts +0 -2
- package/dist/src/__tests__/graph/cycles.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/cycles.test.js +0 -119
- package/dist/src/__tests__/graph/cycles.test.js.map +0 -1
- package/dist/src/__tests__/graph/dead-code.test.d.ts +0 -2
- package/dist/src/__tests__/graph/dead-code.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/dead-code.test.js +0 -89
- package/dist/src/__tests__/graph/dead-code.test.js.map +0 -1
- package/dist/src/__tests__/graph/dfs.test.d.ts +0 -2
- package/dist/src/__tests__/graph/dfs.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/dfs.test.js +0 -56
- package/dist/src/__tests__/graph/dfs.test.js.map +0 -1
- package/dist/src/__tests__/graph/diff-summary.test.d.ts +0 -2
- package/dist/src/__tests__/graph/diff-summary.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/diff-summary.test.js +0 -74
- package/dist/src/__tests__/graph/diff-summary.test.js.map +0 -1
- package/dist/src/__tests__/graph/edge-filter.test.d.ts +0 -2
- package/dist/src/__tests__/graph/edge-filter.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/edge-filter.test.js +0 -117
- package/dist/src/__tests__/graph/edge-filter.test.js.map +0 -1
- package/dist/src/__tests__/graph/import-chain.test.d.ts +0 -2
- package/dist/src/__tests__/graph/import-chain.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/import-chain.test.js +0 -101
- package/dist/src/__tests__/graph/import-chain.test.js.map +0 -1
- package/dist/src/__tests__/graph/merge.test.d.ts +0 -2
- package/dist/src/__tests__/graph/merge.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/merge.test.js +0 -132
- package/dist/src/__tests__/graph/merge.test.js.map +0 -1
- package/dist/src/__tests__/graph/node-search.test.d.ts +0 -2
- package/dist/src/__tests__/graph/node-search.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/node-search.test.js +0 -127
- package/dist/src/__tests__/graph/node-search.test.js.map +0 -1
- package/dist/src/__tests__/graph/normalize-id.test.d.ts +0 -2
- package/dist/src/__tests__/graph/normalize-id.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/normalize-id.test.js +0 -88
- package/dist/src/__tests__/graph/normalize-id.test.js.map +0 -1
- package/dist/src/__tests__/graph/pagerank.test.d.ts +0 -2
- package/dist/src/__tests__/graph/pagerank.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/pagerank.test.js +0 -87
- package/dist/src/__tests__/graph/pagerank.test.js.map +0 -1
- package/dist/src/__tests__/graph/prune.test.d.ts +0 -2
- package/dist/src/__tests__/graph/prune.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/prune.test.js +0 -98
- package/dist/src/__tests__/graph/prune.test.js.map +0 -1
- package/dist/src/__tests__/graph/regex-search.test.d.ts +0 -2
- package/dist/src/__tests__/graph/regex-search.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/regex-search.test.js +0 -128
- package/dist/src/__tests__/graph/regex-search.test.js.map +0 -1
- package/dist/src/__tests__/graph/ripple-impact.test.d.ts +0 -2
- package/dist/src/__tests__/graph/ripple-impact.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/ripple-impact.test.js +0 -64
- package/dist/src/__tests__/graph/ripple-impact.test.js.map +0 -1
- package/dist/src/__tests__/graph/scc.test.d.ts +0 -2
- package/dist/src/__tests__/graph/scc.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/scc.test.js +0 -77
- package/dist/src/__tests__/graph/scc.test.js.map +0 -1
- package/dist/src/__tests__/graph/statistics.test.d.ts +0 -2
- package/dist/src/__tests__/graph/statistics.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/statistics.test.js +0 -197
- package/dist/src/__tests__/graph/statistics.test.js.map +0 -1
- package/dist/src/__tests__/graph/subgraph.test.d.ts +0 -2
- package/dist/src/__tests__/graph/subgraph.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/subgraph.test.js +0 -116
- package/dist/src/__tests__/graph/subgraph.test.js.map +0 -1
- package/dist/src/__tests__/graph/topo-sort.test.d.ts +0 -2
- package/dist/src/__tests__/graph/topo-sort.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/topo-sort.test.js +0 -101
- package/dist/src/__tests__/graph/topo-sort.test.js.map +0 -1
- package/dist/src/__tests__/graph/wcc.test.d.ts +0 -2
- package/dist/src/__tests__/graph/wcc.test.d.ts.map +0 -1
- package/dist/src/__tests__/graph/wcc.test.js +0 -91
- package/dist/src/__tests__/graph/wcc.test.js.map +0 -1
- package/dist/src/__tests__/groups/grpc-extractor.test.d.ts +0 -2
- package/dist/src/__tests__/groups/grpc-extractor.test.d.ts.map +0 -1
- package/dist/src/__tests__/groups/grpc-extractor.test.js +0 -42
- package/dist/src/__tests__/groups/grpc-extractor.test.js.map +0 -1
- package/dist/src/__tests__/groups/service-boundary.test.d.ts +0 -2
- package/dist/src/__tests__/groups/service-boundary.test.d.ts.map +0 -1
- package/dist/src/__tests__/groups/service-boundary.test.js +0 -75
- package/dist/src/__tests__/groups/service-boundary.test.js.map +0 -1
- package/dist/src/__tests__/groups/topic-extractor.test.d.ts +0 -2
- package/dist/src/__tests__/groups/topic-extractor.test.d.ts.map +0 -1
- package/dist/src/__tests__/groups/topic-extractor.test.js +0 -37
- package/dist/src/__tests__/groups/topic-extractor.test.js.map +0 -1
- package/dist/src/__tests__/ingest/git-clone.test.d.ts +0 -2
- package/dist/src/__tests__/ingest/git-clone.test.d.ts.map +0 -1
- package/dist/src/__tests__/ingest/git-clone.test.js +0 -100
- package/dist/src/__tests__/ingest/git-clone.test.js.map +0 -1
- package/dist/src/__tests__/ingest/query-memory.test.d.ts +0 -2
- package/dist/src/__tests__/ingest/query-memory.test.d.ts.map +0 -1
- package/dist/src/__tests__/ingest/query-memory.test.js +0 -116
- package/dist/src/__tests__/ingest/query-memory.test.js.map +0 -1
- package/dist/src/__tests__/ingest/transcribe.test.d.ts +0 -2
- package/dist/src/__tests__/ingest/transcribe.test.d.ts.map +0 -1
- package/dist/src/__tests__/ingest/transcribe.test.js +0 -50
- package/dist/src/__tests__/ingest/transcribe.test.js.map +0 -1
- package/dist/src/__tests__/ingest/url-ingest.test.d.ts +0 -2
- package/dist/src/__tests__/ingest/url-ingest.test.d.ts.map +0 -1
- package/dist/src/__tests__/ingest/url-ingest.test.js +0 -43
- package/dist/src/__tests__/ingest/url-ingest.test.js.map +0 -1
- package/dist/src/__tests__/mcp-resources/repo-context-resource.test.d.ts +0 -2
- package/dist/src/__tests__/mcp-resources/repo-context-resource.test.d.ts.map +0 -1
- package/dist/src/__tests__/mcp-resources/repo-context-resource.test.js +0 -34
- package/dist/src/__tests__/mcp-resources/repo-context-resource.test.js.map +0 -1
- package/dist/src/__tests__/mcp-resources/repos-resource.test.d.ts +0 -2
- package/dist/src/__tests__/mcp-resources/repos-resource.test.d.ts.map +0 -1
- package/dist/src/__tests__/mcp-resources/repos-resource.test.js +0 -63
- package/dist/src/__tests__/mcp-resources/repos-resource.test.js.map +0 -1
- package/dist/src/__tests__/mcp-resources/wiki-resource.test.d.ts +0 -2
- package/dist/src/__tests__/mcp-resources/wiki-resource.test.d.ts.map +0 -1
- package/dist/src/__tests__/mcp-resources/wiki-resource.test.js +0 -47
- package/dist/src/__tests__/mcp-resources/wiki-resource.test.js.map +0 -1
- package/dist/src/__tests__/mcp-tools/explain.test.d.ts +0 -2
- package/dist/src/__tests__/mcp-tools/explain.test.d.ts.map +0 -1
- package/dist/src/__tests__/mcp-tools/explain.test.js +0 -42
- package/dist/src/__tests__/mcp-tools/explain.test.js.map +0 -1
- package/dist/src/__tests__/mcp-tools/graph-query.test.d.ts +0 -2
- package/dist/src/__tests__/mcp-tools/graph-query.test.d.ts.map +0 -1
- package/dist/src/__tests__/mcp-tools/graph-query.test.js +0 -41
- package/dist/src/__tests__/mcp-tools/graph-query.test.js.map +0 -1
- package/dist/src/__tests__/mcp-tools/group-sync.test.d.ts +0 -2
- package/dist/src/__tests__/mcp-tools/group-sync.test.d.ts.map +0 -1
- package/dist/src/__tests__/mcp-tools/group-sync.test.js +0 -8
- package/dist/src/__tests__/mcp-tools/group-sync.test.js.map +0 -1
- package/dist/src/__tests__/mcp-tools/impact-filtering.test.d.ts +0 -2
- package/dist/src/__tests__/mcp-tools/impact-filtering.test.d.ts.map +0 -1
- package/dist/src/__tests__/mcp-tools/impact-filtering.test.js +0 -45
- package/dist/src/__tests__/mcp-tools/impact-filtering.test.js.map +0 -1
- package/dist/src/__tests__/mcp-tools/impact.risk.test.d.ts +0 -2
- package/dist/src/__tests__/mcp-tools/impact.risk.test.d.ts.map +0 -1
- package/dist/src/__tests__/mcp-tools/impact.risk.test.js +0 -21
- package/dist/src/__tests__/mcp-tools/impact.risk.test.js.map +0 -1
- package/dist/src/__tests__/mcp-tools/list-repos.test.d.ts +0 -2
- package/dist/src/__tests__/mcp-tools/list-repos.test.d.ts.map +0 -1
- package/dist/src/__tests__/mcp-tools/list-repos.test.js +0 -21
- package/dist/src/__tests__/mcp-tools/list-repos.test.js.map +0 -1
- package/dist/src/__tests__/mcp-tools/neighbors.test.d.ts +0 -2
- package/dist/src/__tests__/mcp-tools/neighbors.test.d.ts.map +0 -1
- package/dist/src/__tests__/mcp-tools/neighbors.test.js +0 -44
- package/dist/src/__tests__/mcp-tools/neighbors.test.js.map +0 -1
- package/dist/src/__tests__/mcp-tools/query.test.d.ts +0 -2
- package/dist/src/__tests__/mcp-tools/query.test.d.ts.map +0 -1
- package/dist/src/__tests__/mcp-tools/query.test.js +0 -37
- package/dist/src/__tests__/mcp-tools/query.test.js.map +0 -1
- package/dist/src/__tests__/parsers/language-parsers.test.d.ts +0 -2
- package/dist/src/__tests__/parsers/language-parsers.test.d.ts.map +0 -1
- package/dist/src/__tests__/parsers/language-parsers.test.js +0 -48
- package/dist/src/__tests__/parsers/language-parsers.test.js.map +0 -1
- package/dist/src/__tests__/parsers/named-bindings.test.d.ts +0 -2
- package/dist/src/__tests__/parsers/named-bindings.test.d.ts.map +0 -1
- package/dist/src/__tests__/parsers/named-bindings.test.js +0 -68
- package/dist/src/__tests__/parsers/named-bindings.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/cluster-only.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/cluster-only.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/cluster-only.test.js +0 -31
- package/dist/src/__tests__/pipeline/cluster-only.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/incremental.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/incremental.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/incremental.test.js +0 -38
- package/dist/src/__tests__/pipeline/incremental.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/communities.cohesion.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/communities.cohesion.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/communities.cohesion.test.js +0 -40
- package/dist/src/__tests__/pipeline/phases/communities.cohesion.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/community-split.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/community-split.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/community-split.test.js +0 -27
- package/dist/src/__tests__/pipeline/phases/community-split.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/framework-detect.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/framework-detect.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/framework-detect.test.js +0 -56
- package/dist/src/__tests__/pipeline/phases/framework-detect.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/import-resolver.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/import-resolver.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/import-resolver.test.js +0 -56
- package/dist/src/__tests__/pipeline/phases/import-resolver.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/parse-arrow.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/parse-arrow.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/parse-arrow.test.js +0 -30
- package/dist/src/__tests__/pipeline/phases/parse-arrow.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/parse-csharp.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/parse-csharp.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/parse-csharp.test.js +0 -30
- package/dist/src/__tests__/pipeline/phases/parse-csharp.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/scan.monographignore.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/scan.monographignore.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/scan.monographignore.test.js +0 -46
- package/dist/src/__tests__/pipeline/phases/scan.monographignore.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/scan.negation.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/scan.negation.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/scan.negation.test.js +0 -35
- package/dist/src/__tests__/pipeline/phases/scan.negation.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/scope-resolution.go.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/scope-resolution.go.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/scope-resolution.go.test.js +0 -32
- package/dist/src/__tests__/pipeline/phases/scope-resolution.go.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/scope-resolution.java.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/scope-resolution.java.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/scope-resolution.java.test.js +0 -28
- package/dist/src/__tests__/pipeline/phases/scope-resolution.java.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/scope-resolution.rust.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/scope-resolution.rust.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/scope-resolution.rust.test.js +0 -29
- package/dist/src/__tests__/pipeline/phases/scope-resolution.rust.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/suggest-questions.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/suggest-questions.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/suggest-questions.test.js +0 -42
- package/dist/src/__tests__/pipeline/phases/suggest-questions.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/surprises-scoring.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/surprises-scoring.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/surprises-scoring.test.js +0 -42
- package/dist/src/__tests__/pipeline/phases/surprises-scoring.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/variables-phase.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/variables-phase.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/variables-phase.test.js +0 -72
- package/dist/src/__tests__/pipeline/phases/variables-phase.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/phases/wildcard-phase.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/phases/wildcard-phase.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/phases/wildcard-phase.test.js +0 -59
- package/dist/src/__tests__/pipeline/phases/wildcard-phase.test.js.map +0 -1
- package/dist/src/__tests__/pipeline/runner.parallel.test.d.ts +0 -2
- package/dist/src/__tests__/pipeline/runner.parallel.test.d.ts.map +0 -1
- package/dist/src/__tests__/pipeline/runner.parallel.test.js +0 -66
- package/dist/src/__tests__/pipeline/runner.parallel.test.js.map +0 -1
- package/dist/src/__tests__/reporting/graph-report-confidence.test.d.ts +0 -2
- package/dist/src/__tests__/reporting/graph-report-confidence.test.d.ts.map +0 -1
- package/dist/src/__tests__/reporting/graph-report-confidence.test.js +0 -40
- package/dist/src/__tests__/reporting/graph-report-confidence.test.js.map +0 -1
- package/dist/src/__tests__/reporting/graph-report-gaps.test.d.ts +0 -2
- package/dist/src/__tests__/reporting/graph-report-gaps.test.d.ts.map +0 -1
- package/dist/src/__tests__/reporting/graph-report-gaps.test.js +0 -38
- package/dist/src/__tests__/reporting/graph-report-gaps.test.js.map +0 -1
- package/dist/src/__tests__/scope-resolution/evidence-weights.test.d.ts +0 -2
- package/dist/src/__tests__/scope-resolution/evidence-weights.test.d.ts.map +0 -1
- package/dist/src/__tests__/scope-resolution/evidence-weights.test.js +0 -40
- package/dist/src/__tests__/scope-resolution/evidence-weights.test.js.map +0 -1
- package/dist/src/__tests__/search/diacritic.test.d.ts +0 -2
- package/dist/src/__tests__/search/diacritic.test.d.ts.map +0 -1
- package/dist/src/__tests__/search/diacritic.test.js +0 -23
- package/dist/src/__tests__/search/diacritic.test.js.map +0 -1
- package/dist/src/__tests__/security/safe-fetch.test.d.ts +0 -2
- package/dist/src/__tests__/security/safe-fetch.test.d.ts.map +0 -1
- package/dist/src/__tests__/security/safe-fetch.test.js +0 -113
- package/dist/src/__tests__/security/safe-fetch.test.js.map +0 -1
- package/dist/src/__tests__/skills/platform-skills.extra.test.d.ts +0 -2
- package/dist/src/__tests__/skills/platform-skills.extra.test.d.ts.map +0 -1
- package/dist/src/__tests__/skills/platform-skills.extra.test.js +0 -31
- package/dist/src/__tests__/skills/platform-skills.extra.test.js.map +0 -1
- package/dist/src/__tests__/web/api.clusters.test.d.ts +0 -2
- package/dist/src/__tests__/web/api.clusters.test.d.ts.map +0 -1
- package/dist/src/__tests__/web/api.clusters.test.js +0 -59
- package/dist/src/__tests__/web/api.clusters.test.js.map +0 -1
- package/dist/src/__tests__/web/api.file.test.d.ts +0 -2
- package/dist/src/__tests__/web/api.file.test.d.ts.map +0 -1
- package/dist/src/__tests__/web/api.file.test.js +0 -38
- package/dist/src/__tests__/web/api.file.test.js.map +0 -1
- package/dist/src/__tests__/web/api.grep.test.d.ts +0 -2
- package/dist/src/__tests__/web/api.grep.test.d.ts.map +0 -1
- package/dist/src/__tests__/web/api.grep.test.js +0 -43
- package/dist/src/__tests__/web/api.grep.test.js.map +0 -1
- package/dist/src/__tests__/web/api.info.test.d.ts +0 -2
- package/dist/src/__tests__/web/api.info.test.d.ts.map +0 -1
- package/dist/src/__tests__/web/api.info.test.js +0 -17
- package/dist/src/__tests__/web/api.info.test.js.map +0 -1
- package/dist/src/__tests__/web/api.jobs.test.d.ts +0 -2
- package/dist/src/__tests__/web/api.jobs.test.d.ts.map +0 -1
- package/dist/src/__tests__/web/api.jobs.test.js +0 -40
- package/dist/src/__tests__/web/api.jobs.test.js.map +0 -1
- package/dist/src/__tests__/web/api.progress.test.d.ts +0 -2
- package/dist/src/__tests__/web/api.progress.test.d.ts.map +0 -1
- package/dist/src/__tests__/web/api.progress.test.js +0 -23
- package/dist/src/__tests__/web/api.progress.test.js.map +0 -1
- package/dist/src/__tests__/web/api.stream.test.d.ts +0 -2
- package/dist/src/__tests__/web/api.stream.test.d.ts.map +0 -1
- package/dist/src/__tests__/web/api.stream.test.js +0 -33
- package/dist/src/__tests__/web/api.stream.test.js.map +0 -1
- package/dist/src/__tests__/wiki/providers-reasoning.test.d.ts +0 -2
- package/dist/src/__tests__/wiki/providers-reasoning.test.d.ts.map +0 -1
- package/dist/src/__tests__/wiki/providers-reasoning.test.js +0 -41
- package/dist/src/__tests__/wiki/providers-reasoning.test.js.map +0 -1
- package/dist/src/__tests__/wiki/wiki-review-mode.test.d.ts +0 -2
- package/dist/src/__tests__/wiki/wiki-review-mode.test.d.ts.map +0 -1
- package/dist/src/__tests__/wiki/wiki-review-mode.test.js +0 -21
- package/dist/src/__tests__/wiki/wiki-review-mode.test.js.map +0 -1
- package/dist/src/analysis/cycles.d.ts +0 -16
- package/dist/src/analysis/cycles.d.ts.map +0 -1
- package/dist/src/analysis/cycles.js +0 -203
- package/dist/src/analysis/cycles.js.map +0 -1
- package/dist/src/analysis/trace.d.ts +0 -80
- package/dist/src/analysis/trace.d.ts.map +0 -1
- package/dist/src/analysis/trace.js +0 -186
- package/dist/src/analysis/trace.js.map +0 -1
- package/dist/src/analysis/worker-pool.d.ts +0 -17
- package/dist/src/analysis/worker-pool.d.ts.map +0 -1
- package/dist/src/analysis/worker-pool.js +0 -62
- package/dist/src/analysis/worker-pool.js.map +0 -1
- package/dist/src/coverage/runtime.d.ts +0 -36
- package/dist/src/coverage/runtime.d.ts.map +0 -1
- package/dist/src/coverage/runtime.js +0 -187
- package/dist/src/coverage/runtime.js.map +0 -1
- package/dist/src/graph/clone-detector.d.ts +0 -15
- package/dist/src/graph/clone-detector.d.ts.map +0 -1
- package/dist/src/graph/clone-detector.js +0 -132
- package/dist/src/graph/clone-detector.js.map +0 -1
- package/dist/src/graph/shingle-filter.d.ts +0 -6
- package/dist/src/graph/shingle-filter.d.ts.map +0 -1
- package/dist/src/graph/shingle-filter.js +0 -129
- package/dist/src/graph/shingle-filter.js.map +0 -1
- package/dist/src/watch/watch-runner.d.ts +0 -16
- package/dist/src/watch/watch-runner.d.ts.map +0 -1
- package/dist/src/watch/watch-runner.js +0 -49
- package/dist/src/watch/watch-runner.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../../src/analysis/trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
/** Build an O(1) id→node index. Pass to the trace functions when calling multiple times on the same graph. */
|
|
2
|
-
export function buildNodeIndex(graph) {
|
|
3
|
-
const index = new Map();
|
|
4
|
-
for (const n of graph.nodes)
|
|
5
|
-
index.set(n.id, n);
|
|
6
|
-
return index;
|
|
7
|
-
}
|
|
8
|
-
export function traceExport(graph, file, exportName, nodeIndex) {
|
|
9
|
-
// Build index once if not supplied — O(N) amortised when caller reuses it
|
|
10
|
-
const idx = nodeIndex ?? buildNodeIndex(graph);
|
|
11
|
-
// Find nodes in the target file matching exportName
|
|
12
|
-
const targetIds = new Set();
|
|
13
|
-
for (const n of graph.nodes) {
|
|
14
|
-
if (n.filePath === file && n.name === exportName)
|
|
15
|
-
targetIds.add(n.id);
|
|
16
|
-
}
|
|
17
|
-
// Find CALLS or IMPORTS edges pointing to these nodes from other files
|
|
18
|
-
const directReferences = [];
|
|
19
|
-
const reExportChains = [];
|
|
20
|
-
for (const edge of graph.edges) {
|
|
21
|
-
if (!targetIds.has(edge.targetId))
|
|
22
|
-
continue;
|
|
23
|
-
const sourceNode = idx.get(edge.sourceId);
|
|
24
|
-
if (!sourceNode)
|
|
25
|
-
continue;
|
|
26
|
-
// Skip self-references (same file)
|
|
27
|
-
if (sourceNode.filePath === file)
|
|
28
|
-
continue;
|
|
29
|
-
if (edge.relation === 'CALLS' || edge.relation === 'IMPORTS') {
|
|
30
|
-
directReferences.push({
|
|
31
|
-
filePath: sourceNode.filePath ?? sourceNode.id,
|
|
32
|
-
line: sourceNode.startLine ?? 0,
|
|
33
|
-
col: 0,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
else if (edge.relation === 'RE_EXPORTS') {
|
|
37
|
-
reExportChains.push({
|
|
38
|
-
path: sourceNode.filePath ?? sourceNode.id,
|
|
39
|
-
exportName: sourceNode.name,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
// Determine reason
|
|
44
|
-
let reason;
|
|
45
|
-
let isUsed;
|
|
46
|
-
if (directReferences.length > 0) {
|
|
47
|
-
reason = 'has_references';
|
|
48
|
-
isUsed = true;
|
|
49
|
-
}
|
|
50
|
-
else if (reExportChains.length > 0) {
|
|
51
|
-
reason = 'only_re_exported';
|
|
52
|
-
isUsed = false;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
reason = 'no_references';
|
|
56
|
-
isUsed = false;
|
|
57
|
-
}
|
|
58
|
-
return {
|
|
59
|
-
file,
|
|
60
|
-
exportName,
|
|
61
|
-
isUsed,
|
|
62
|
-
directReferences,
|
|
63
|
-
reExportChains,
|
|
64
|
-
reason,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
export function traceFile(graph, file, nodeIndex) {
|
|
68
|
-
// Build index once if not supplied
|
|
69
|
-
const idx = nodeIndex ?? buildNodeIndex(graph);
|
|
70
|
-
// Find all nodes in this file
|
|
71
|
-
const fileNodes = graph.nodes.filter((n) => n.filePath === file);
|
|
72
|
-
const fileNodeIds = new Set(fileNodes.map((n) => n.id));
|
|
73
|
-
// Pre-compute which target node ids have external references in one edge pass
|
|
74
|
-
// to avoid O(exported_nodes * edges) in the map below.
|
|
75
|
-
const externallyReferenced = new Set();
|
|
76
|
-
const importsFromSet = new Set();
|
|
77
|
-
const importedBySet = new Set();
|
|
78
|
-
const reExports = [];
|
|
79
|
-
for (const edge of graph.edges) {
|
|
80
|
-
const srcInFile = fileNodeIds.has(edge.sourceId);
|
|
81
|
-
const tgtInFile = fileNodeIds.has(edge.targetId);
|
|
82
|
-
if (edge.relation === 'IMPORTS') {
|
|
83
|
-
if (srcInFile) {
|
|
84
|
-
const targetNode = idx.get(edge.targetId);
|
|
85
|
-
if (targetNode?.filePath && targetNode.filePath !== file) {
|
|
86
|
-
importsFromSet.add(targetNode.filePath);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (tgtInFile) {
|
|
90
|
-
const sourceNode = idx.get(edge.sourceId);
|
|
91
|
-
if (sourceNode?.filePath && sourceNode.filePath !== file) {
|
|
92
|
-
importedBySet.add(sourceNode.filePath);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// External IMPORTS into a file node → that node is externally referenced
|
|
96
|
-
if (tgtInFile && !srcInFile) {
|
|
97
|
-
externallyReferenced.add(edge.targetId);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
if (edge.relation === 'CALLS' && tgtInFile && !srcInFile) {
|
|
101
|
-
externallyReferenced.add(edge.targetId);
|
|
102
|
-
}
|
|
103
|
-
if (edge.relation === 'RE_EXPORTS' && srcInFile) {
|
|
104
|
-
const sourceNode = idx.get(edge.sourceId);
|
|
105
|
-
const targetNode = idx.get(edge.targetId);
|
|
106
|
-
if (sourceNode && targetNode?.filePath) {
|
|
107
|
-
reExports.push({ name: sourceNode.name, fromFile: targetNode.filePath });
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Build exports list using pre-computed set — O(exported_nodes) not O(exported_nodes * edges)
|
|
112
|
-
const exports = fileNodes
|
|
113
|
-
.filter((n) => n.isExported)
|
|
114
|
-
.map((n) => ({
|
|
115
|
-
name: n.name,
|
|
116
|
-
isUsed: externallyReferenced.has(n.id),
|
|
117
|
-
line: n.startLine ?? 0,
|
|
118
|
-
}));
|
|
119
|
-
return {
|
|
120
|
-
file,
|
|
121
|
-
exports,
|
|
122
|
-
importsFrom: Array.from(importsFromSet),
|
|
123
|
-
importedBy: Array.from(importedBySet),
|
|
124
|
-
reExports,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
export function traceDependency(importEdges, packageName) {
|
|
128
|
-
// Find direct importers
|
|
129
|
-
const directImporters = importEdges
|
|
130
|
-
.filter((e) => e.targetPackage === packageName)
|
|
131
|
-
.map((e) => e.sourceFile);
|
|
132
|
-
const directSet = new Set(directImporters);
|
|
133
|
-
// BFS to find transitive importers via reverse import graph
|
|
134
|
-
const reverseImportMap = new Map();
|
|
135
|
-
for (const edge of importEdges) {
|
|
136
|
-
if (!reverseImportMap.has(edge.targetPackage)) {
|
|
137
|
-
reverseImportMap.set(edge.targetPackage, new Set());
|
|
138
|
-
}
|
|
139
|
-
reverseImportMap.get(edge.targetPackage).add(edge.sourceFile);
|
|
140
|
-
}
|
|
141
|
-
const transitiveSet = new Set();
|
|
142
|
-
const queue = [...directImporters];
|
|
143
|
-
const visited = new Set(directImporters);
|
|
144
|
-
while (queue.length > 0) {
|
|
145
|
-
const current = queue.shift();
|
|
146
|
-
const upstream = reverseImportMap.get(current);
|
|
147
|
-
if (upstream) {
|
|
148
|
-
for (const file of upstream) {
|
|
149
|
-
if (!visited.has(file) && !directSet.has(file)) {
|
|
150
|
-
visited.add(file);
|
|
151
|
-
transitiveSet.add(file);
|
|
152
|
-
queue.push(file);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
return {
|
|
158
|
-
packageName,
|
|
159
|
-
directImporters,
|
|
160
|
-
transitiveImporters: Array.from(transitiveSet),
|
|
161
|
-
isUsed: directImporters.length > 0 || transitiveSet.size > 0,
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
export function traceClone(cloneGroups, file, line) {
|
|
165
|
-
// Find groups containing an instance at (file, line)
|
|
166
|
-
const matchingGroups = cloneGroups.filter((group) => group.instances.some((inst) => inst.filePath === file && inst.startLine <= line && inst.endLine >= line));
|
|
167
|
-
if (matchingGroups.length === 0) {
|
|
168
|
-
return {
|
|
169
|
-
sourceFile: file,
|
|
170
|
-
sourceLine: line,
|
|
171
|
-
matchingInstances: [],
|
|
172
|
-
groupId: undefined,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
// Use the first matching group
|
|
176
|
-
const group = matchingGroups[0];
|
|
177
|
-
// Return all OTHER instances (not the source one)
|
|
178
|
-
const matchingInstances = group.instances.filter((inst) => !(inst.filePath === file && inst.startLine <= line && inst.endLine >= line));
|
|
179
|
-
return {
|
|
180
|
-
sourceFile: file,
|
|
181
|
-
sourceLine: line,
|
|
182
|
-
matchingInstances,
|
|
183
|
-
groupId: group.id,
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
//# sourceMappingURL=trace.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../src/analysis/trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface WorkerPoolOptions {
|
|
2
|
-
threads?: number;
|
|
3
|
-
stackSizeMb?: number;
|
|
4
|
-
}
|
|
5
|
-
export declare class WorkerPool {
|
|
6
|
-
readonly threads: number;
|
|
7
|
-
readonly stackSizeMb: number;
|
|
8
|
-
private _active;
|
|
9
|
-
private readonly _queue;
|
|
10
|
-
constructor(opts?: WorkerPoolOptions);
|
|
11
|
-
run<T>(workerScript: string, input: unknown): Promise<T>;
|
|
12
|
-
private _drain;
|
|
13
|
-
}
|
|
14
|
-
export declare function configureGlobalPool(threads?: number, stackSizeMb?: number): WorkerPool;
|
|
15
|
-
export declare function getGlobalPool(): WorkerPool;
|
|
16
|
-
export declare function resetGlobalPool(): void;
|
|
17
|
-
//# sourceMappingURL=worker-pool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../../../src/analysis/worker-pool.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAWD,qBAAa,UAAU;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,YAAY,IAAI,GAAE,iBAAsB,EAGvC;IAED,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAKvD;IAED,OAAO,CAAC,MAAM;CA6Bf;AAED,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAGtF;AAED,wBAAgB,aAAa,IAAI,UAAU,CAE1C;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { Worker } from 'node:worker_threads';
|
|
2
|
-
import { cpus } from 'node:os';
|
|
3
|
-
const DEFAULT_STACK_SIZE_MB = 16;
|
|
4
|
-
let _globalPool = null;
|
|
5
|
-
export class WorkerPool {
|
|
6
|
-
threads;
|
|
7
|
-
stackSizeMb;
|
|
8
|
-
_active = 0;
|
|
9
|
-
_queue = [];
|
|
10
|
-
constructor(opts = {}) {
|
|
11
|
-
this.threads = opts.threads ?? cpus().length;
|
|
12
|
-
this.stackSizeMb = opts.stackSizeMb ?? DEFAULT_STACK_SIZE_MB;
|
|
13
|
-
}
|
|
14
|
-
run(workerScript, input) {
|
|
15
|
-
return new Promise((resolve, reject) => {
|
|
16
|
-
this._queue.push({ script: workerScript, input, resolve: resolve, reject });
|
|
17
|
-
this._drain();
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
_drain() {
|
|
21
|
-
while (this._active < this.threads && this._queue.length > 0) {
|
|
22
|
-
const task = this._queue.shift();
|
|
23
|
-
this._active++;
|
|
24
|
-
const worker = new Worker(task.script, {
|
|
25
|
-
workerData: task.input,
|
|
26
|
-
resourceLimits: { stackSizeMb: this.stackSizeMb },
|
|
27
|
-
});
|
|
28
|
-
let settled = false;
|
|
29
|
-
const settle = (fn) => {
|
|
30
|
-
if (settled)
|
|
31
|
-
return;
|
|
32
|
-
settled = true;
|
|
33
|
-
fn();
|
|
34
|
-
this._active--;
|
|
35
|
-
this._drain();
|
|
36
|
-
};
|
|
37
|
-
worker.on('message', (v) => {
|
|
38
|
-
settle(() => task.resolve(v));
|
|
39
|
-
});
|
|
40
|
-
worker.on('error', (err) => {
|
|
41
|
-
settle(() => task.reject(err));
|
|
42
|
-
});
|
|
43
|
-
worker.on('exit', (code) => {
|
|
44
|
-
if (code !== 0) {
|
|
45
|
-
settle(() => task.reject(new Error(`Worker exited with code ${code}`)));
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
export function configureGlobalPool(threads, stackSizeMb) {
|
|
52
|
-
if (!_globalPool)
|
|
53
|
-
_globalPool = new WorkerPool({ threads, stackSizeMb });
|
|
54
|
-
return _globalPool;
|
|
55
|
-
}
|
|
56
|
-
export function getGlobalPool() {
|
|
57
|
-
return _globalPool ?? configureGlobalPool();
|
|
58
|
-
}
|
|
59
|
-
export function resetGlobalPool() {
|
|
60
|
-
_globalPool = null;
|
|
61
|
-
}
|
|
62
|
-
//# sourceMappingURL=worker-pool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker-pool.js","sourceRoot":"","sources":["../../../src/analysis/worker-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAcjC,IAAI,WAAW,GAAsB,IAAI,CAAC;AAE1C,MAAM,OAAO,UAAU;IACZ,OAAO,CAAS;IAChB,WAAW,CAAS;IAErB,OAAO,GAAG,CAAC,CAAC;IACH,MAAM,GAAiB,EAAE,CAAC;IAE3C,YAAY,IAAI,GAAsB,EAAE;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,qBAAqB,CAAC;IAC/D,CAAC;IAED,GAAG,CAAI,YAAoB,EAAE,KAAc;QACzC,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,OAA+B,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM;QACZ,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,CAAC;YAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;gBACrC,UAAU,EAAE,IAAI,CAAC,KAAK;gBACtB,cAAc,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;aAClD,CAAC,CAAC;YACH,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,MAAM,GAAG,CAAC,EAAc,EAAE,EAAE;gBAChC,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,EAAE,EAAE,CAAC;gBACL,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,CAAC,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAU,EAAE,EAAE;gBAClC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAY,EAAE,EAAE;gBAClC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,WAAoB;IACxE,IAAI,CAAC,WAAW;QAAE,WAAW,GAAG,IAAI,UAAU,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IACzE,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,IAAI,mBAAmB,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { MonographDb } from '../storage/db.js';
|
|
2
|
-
export type RuntimeClassification = 'SafeToDelete' | 'ReviewRequired' | 'LowTraffic' | 'Active' | 'CoverageUnavailable';
|
|
3
|
-
export interface FunctionCoverageEntry {
|
|
4
|
-
nodeId: string;
|
|
5
|
-
name: string;
|
|
6
|
-
filePath: string | null;
|
|
7
|
-
startLine: number | null;
|
|
8
|
-
covered: boolean;
|
|
9
|
-
callCount: number;
|
|
10
|
-
classification: RuntimeClassification;
|
|
11
|
-
}
|
|
12
|
-
export interface RuntimeCoverageReport {
|
|
13
|
-
entries: FunctionCoverageEntry[];
|
|
14
|
-
safeToDelete: number;
|
|
15
|
-
reviewRequired: number;
|
|
16
|
-
active: number;
|
|
17
|
-
coverageUnavailable: number;
|
|
18
|
-
blastRadius: string[];
|
|
19
|
-
}
|
|
20
|
-
export interface V8CoverageFunction {
|
|
21
|
-
functionName: string;
|
|
22
|
-
url: string;
|
|
23
|
-
ranges: Array<{
|
|
24
|
-
startOffset: number;
|
|
25
|
-
endOffset: number;
|
|
26
|
-
count: number;
|
|
27
|
-
}>;
|
|
28
|
-
}
|
|
29
|
-
export interface V8Coverage {
|
|
30
|
-
result: Array<{
|
|
31
|
-
url: string;
|
|
32
|
-
functions: V8CoverageFunction[];
|
|
33
|
-
}>;
|
|
34
|
-
}
|
|
35
|
-
export declare function analyzeRuntimeCoverage(db: MonographDb, coverage: V8Coverage, repoRoot?: string): RuntimeCoverageReport;
|
|
36
|
-
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/coverage/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,qBAAqB,GAC7B,cAAc,GACd,gBAAgB,GAChB,YAAY,GACZ,QAAQ,GACR,qBAAqB,CAAC;AAE1B,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,qBAAqB,CAAC;CACvC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAGD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,kBAAkB,EAAE,CAAC;KACjC,CAAC,CAAC;CACJ;AAeD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,UAAU,EACpB,QAAQ,CAAC,EAAE,MAAM,GAChB,qBAAqB,CA6LvB"}
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
export function analyzeRuntimeCoverage(db, coverage, repoRoot) {
|
|
2
|
-
// Build a map: filePath -> Map<functionName, CoverageMapEntry>
|
|
3
|
-
const fileCoverageMap = new Map();
|
|
4
|
-
for (const scriptCov of coverage.result) {
|
|
5
|
-
let filePath = scriptCov.url;
|
|
6
|
-
// Strip file:// prefix
|
|
7
|
-
if (filePath.startsWith('file://')) {
|
|
8
|
-
filePath = filePath.slice('file://'.length);
|
|
9
|
-
}
|
|
10
|
-
// Resolve relative to repoRoot if provided and path is relative
|
|
11
|
-
if (repoRoot && !filePath.startsWith('/')) {
|
|
12
|
-
filePath = repoRoot.replace(/\/$/, '') + '/' + filePath;
|
|
13
|
-
}
|
|
14
|
-
const fnMap = fileCoverageMap.get(filePath) ?? new Map();
|
|
15
|
-
for (const fn of scriptCov.functions) {
|
|
16
|
-
const covered = fn.ranges.some(r => r.count > 0);
|
|
17
|
-
const callCount = fn.ranges.reduce((max, r) => Math.max(max, r.count), 0);
|
|
18
|
-
const existing = fnMap.get(fn.functionName);
|
|
19
|
-
if (!existing || callCount > existing.callCount) {
|
|
20
|
-
fnMap.set(fn.functionName, { covered, callCount });
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
fileCoverageMap.set(filePath, fnMap);
|
|
24
|
-
}
|
|
25
|
-
// Helper: normalize a file path for lookup
|
|
26
|
-
function normalizeForLookup(fp) {
|
|
27
|
-
return fp.replace(/\\/g, '/');
|
|
28
|
-
}
|
|
29
|
-
// Build alternate lookup: basename -> filePath list
|
|
30
|
-
const filePathIndex = new Map();
|
|
31
|
-
for (const fp of fileCoverageMap.keys()) {
|
|
32
|
-
const norm = normalizeForLookup(fp);
|
|
33
|
-
filePathIndex.set(norm, (filePathIndex.get(norm) ?? []).concat(fp));
|
|
34
|
-
// Also store by just the filename for relative matching
|
|
35
|
-
const parts = norm.split('/');
|
|
36
|
-
const base = parts[parts.length - 1];
|
|
37
|
-
if (base && base !== norm) {
|
|
38
|
-
filePathIndex.set(base, (filePathIndex.get(base) ?? []).concat(fp));
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
// Compute total call count across all functions for LowTraffic threshold
|
|
42
|
-
let totalCallCount = 0;
|
|
43
|
-
for (const fnMap of fileCoverageMap.values()) {
|
|
44
|
-
for (const entry of fnMap.values()) {
|
|
45
|
-
totalCallCount += entry.callCount;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
const lowTrafficThreshold = totalCallCount * 0.05;
|
|
49
|
-
// Query all Symbol nodes that are Functions/Methods
|
|
50
|
-
const rows = db.prepare(`
|
|
51
|
-
SELECT id, name, file_path, start_line, properties
|
|
52
|
-
FROM nodes
|
|
53
|
-
WHERE label IN ('Function', 'Method')
|
|
54
|
-
`).all();
|
|
55
|
-
const entries = [];
|
|
56
|
-
for (const row of rows) {
|
|
57
|
-
const props = row.properties ? JSON.parse(row.properties) : {};
|
|
58
|
-
const reachabilityRole = props.reachabilityRole ?? '';
|
|
59
|
-
let fnEntry = null;
|
|
60
|
-
if (row.file_path) {
|
|
61
|
-
const normFilePath = normalizeForLookup(row.file_path);
|
|
62
|
-
// Try exact match first
|
|
63
|
-
const exactFnMap = fileCoverageMap.get(normFilePath) ?? fileCoverageMap.get(row.file_path);
|
|
64
|
-
if (exactFnMap) {
|
|
65
|
-
const match = exactFnMap.get(row.name);
|
|
66
|
-
if (match)
|
|
67
|
-
fnEntry = match;
|
|
68
|
-
// If no exact function name match, aggregate all functions for this file
|
|
69
|
-
if (!fnEntry) {
|
|
70
|
-
// Best-effort: file is covered if any function is covered
|
|
71
|
-
let fileCovered = false;
|
|
72
|
-
let fileMaxCount = 0;
|
|
73
|
-
for (const e of exactFnMap.values()) {
|
|
74
|
-
if (e.covered)
|
|
75
|
-
fileCovered = true;
|
|
76
|
-
fileMaxCount = Math.max(fileMaxCount, e.callCount);
|
|
77
|
-
}
|
|
78
|
-
if (exactFnMap.size > 0) {
|
|
79
|
-
fnEntry = { covered: fileCovered, callCount: fileMaxCount };
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
// Try relative path matching
|
|
85
|
-
for (const [covPath, fnMap] of fileCoverageMap.entries()) {
|
|
86
|
-
if (covPath.endsWith(normFilePath) || normFilePath.endsWith(covPath.replace(/.*\//, ''))) {
|
|
87
|
-
const match = fnMap.get(row.name);
|
|
88
|
-
if (match) {
|
|
89
|
-
fnEntry = match;
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
// Aggregate file-level coverage
|
|
93
|
-
let fileCovered = false;
|
|
94
|
-
let fileMaxCount = 0;
|
|
95
|
-
for (const e of fnMap.values()) {
|
|
96
|
-
if (e.covered)
|
|
97
|
-
fileCovered = true;
|
|
98
|
-
fileMaxCount = Math.max(fileMaxCount, e.callCount);
|
|
99
|
-
}
|
|
100
|
-
if (fnMap.size > 0) {
|
|
101
|
-
fnEntry = { covered: fileCovered, callCount: fileMaxCount };
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
let classification;
|
|
109
|
-
let covered = false;
|
|
110
|
-
let callCount = 0;
|
|
111
|
-
if (!fnEntry) {
|
|
112
|
-
classification = 'CoverageUnavailable';
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
covered = fnEntry.covered;
|
|
116
|
-
callCount = fnEntry.callCount;
|
|
117
|
-
if (!covered && reachabilityRole === 'unreachable') {
|
|
118
|
-
classification = 'SafeToDelete';
|
|
119
|
-
}
|
|
120
|
-
else if (covered && reachabilityRole === 'unreachable') {
|
|
121
|
-
classification = 'ReviewRequired';
|
|
122
|
-
}
|
|
123
|
-
else if (covered && callCount < lowTrafficThreshold) {
|
|
124
|
-
classification = 'LowTraffic';
|
|
125
|
-
}
|
|
126
|
-
else if (covered) {
|
|
127
|
-
classification = 'Active';
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
// not covered, not unreachable — treat as unavailable
|
|
131
|
-
classification = 'CoverageUnavailable';
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
entries.push({
|
|
135
|
-
nodeId: row.id,
|
|
136
|
-
name: row.name,
|
|
137
|
-
filePath: row.file_path,
|
|
138
|
-
startLine: row.start_line,
|
|
139
|
-
covered,
|
|
140
|
-
callCount,
|
|
141
|
-
classification,
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
// Aggregate counts
|
|
145
|
-
let safeToDelete = 0;
|
|
146
|
-
let reviewRequired = 0;
|
|
147
|
-
let active = 0;
|
|
148
|
-
let coverageUnavailable = 0;
|
|
149
|
-
const blastRadiusSet = new Set();
|
|
150
|
-
for (const entry of entries) {
|
|
151
|
-
switch (entry.classification) {
|
|
152
|
-
case 'SafeToDelete':
|
|
153
|
-
safeToDelete++;
|
|
154
|
-
break;
|
|
155
|
-
case 'ReviewRequired':
|
|
156
|
-
reviewRequired++;
|
|
157
|
-
break;
|
|
158
|
-
case 'Active':
|
|
159
|
-
active++;
|
|
160
|
-
break;
|
|
161
|
-
case 'CoverageUnavailable':
|
|
162
|
-
coverageUnavailable++;
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
// BlastRadius: Active nodes with reachabilityRole === 'runtime'
|
|
166
|
-
if (entry.classification === 'Active' && entry.filePath) {
|
|
167
|
-
const nodeProps = entries.find(e => e.nodeId === entry.nodeId);
|
|
168
|
-
// Re-query to get reachabilityRole for blast radius check
|
|
169
|
-
const nodeRow = db.prepare(`SELECT properties FROM nodes WHERE id = ?`).get(entry.nodeId);
|
|
170
|
-
if (nodeRow) {
|
|
171
|
-
const p = nodeRow.properties ? JSON.parse(nodeRow.properties) : {};
|
|
172
|
-
if (p.reachabilityRole === 'runtime') {
|
|
173
|
-
blastRadiusSet.add(entry.filePath);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
return {
|
|
179
|
-
entries,
|
|
180
|
-
safeToDelete,
|
|
181
|
-
reviewRequired,
|
|
182
|
-
active,
|
|
183
|
-
coverageUnavailable,
|
|
184
|
-
blastRadius: Array.from(blastRadiusSet),
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
//# sourceMappingURL=runtime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/coverage/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { MonographDb } from '../storage/db.js';
|
|
2
|
-
export interface ClonePair {
|
|
3
|
-
fileA: string;
|
|
4
|
-
fileB: string;
|
|
5
|
-
similarity: number;
|
|
6
|
-
cloneType: 'exact' | 'renamed' | 'structural';
|
|
7
|
-
tokenCount: number;
|
|
8
|
-
}
|
|
9
|
-
export interface CloneDetectionResult {
|
|
10
|
-
pairs: ClonePair[];
|
|
11
|
-
totalFiles: number;
|
|
12
|
-
cloneRatio: number;
|
|
13
|
-
}
|
|
14
|
-
export declare function detectClones(db: MonographDb, minSimilarity?: number, minTokens?: number): CloneDetectionResult;
|
|
15
|
-
//# sourceMappingURL=clone-detector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clone-detector.d.ts","sourceRoot":"","sources":["../../../src/graph/clone-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAwCD,wBAAgB,YAAY,CAC1B,EAAE,EAAE,WAAW,EACf,aAAa,SAAM,EACnB,SAAS,SAAI,GACZ,oBAAoB,CAsGtB"}
|