@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@monoes/monograph",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Native TypeScript code intelligence engine for monomind",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -19,7 +19,9 @@
|
|
|
19
19
|
"tag": "latest"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
|
+
"prebuild": "node ../../../scripts/build-fs.mjs clean dist tsconfig.tsbuildinfo",
|
|
22
23
|
"build": "tsc",
|
|
24
|
+
"prepublishOnly": "npm run build",
|
|
23
25
|
"test": "vitest run",
|
|
24
26
|
"test:coverage": "vitest run --coverage"
|
|
25
27
|
},
|
|
@@ -62,6 +62,20 @@ export const llmExtractPhase: PipelinePhase<LlmExtractOutput> = {
|
|
|
62
62
|
|
|
63
63
|
const { isClaudeCliAvailable } = await import('../../claude-cli.js');
|
|
64
64
|
if (!isClaudeCliAvailable()) {
|
|
65
|
+
// Say so. Returning 0 silently is indistinguishable from "your docs had
|
|
66
|
+
// nothing to infer", so `--llm` looked like it ran and found nothing —
|
|
67
|
+
// reported as "silently produces 0 inferred edges" (#43), with the
|
|
68
|
+
// reasonable but wrong conclusion that an API key was missing.
|
|
69
|
+
//
|
|
70
|
+
// No API key is involved: LLM work goes through `claude --print`, which
|
|
71
|
+
// reuses Claude Code's own auth. The only requirement is that `claude` is
|
|
72
|
+
// on PATH — which is why this can fail *inside* a Claude Code session,
|
|
73
|
+
// where users least expect it.
|
|
74
|
+
console.warn(
|
|
75
|
+
'[monograph] --llm skipped: the `claude` CLI was not found on PATH.\n' +
|
|
76
|
+
' Semantic extraction runs through `claude --print` and needs no ANTHROPIC_API_KEY.\n' +
|
|
77
|
+
' Install it with: npm install -g @anthropic-ai/claude-code',
|
|
78
|
+
);
|
|
65
79
|
return { triplesExtracted: 0, sectionsProcessed: 0 };
|
|
66
80
|
}
|
|
67
81
|
|
|
@@ -150,7 +150,13 @@ export async function generateWikiPage(
|
|
|
150
150
|
} else {
|
|
151
151
|
const { claudeCliCall, isClaudeCliAvailable } = await import('../claude-cli.js');
|
|
152
152
|
if (!isClaudeCliAvailable()) {
|
|
153
|
-
|
|
153
|
+
// Spell out that no API key is wanted — users hitting this reasonably
|
|
154
|
+
// assume ANTHROPIC_API_KEY is the missing piece and go set one, which
|
|
155
|
+
// changes nothing (#43).
|
|
156
|
+
throw new Error(
|
|
157
|
+
'Claude Code CLI not found on PATH. Wiki generation runs through `claude --print` ' +
|
|
158
|
+
'and needs no ANTHROPIC_API_KEY. Install it with: npm install -g @anthropic-ai/claude-code',
|
|
159
|
+
);
|
|
154
160
|
}
|
|
155
161
|
content = await claudeCliCall(prompt);
|
|
156
162
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/analysis/benchmark.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import Database from 'better-sqlite3';
|
|
3
|
-
import { runBenchmark, estimateTokens } from '../../analysis/benchmark.js';
|
|
4
|
-
function makeDb(nodeCount) {
|
|
5
|
-
const db = new Database(':memory:');
|
|
6
|
-
db.exec(`
|
|
7
|
-
CREATE TABLE nodes (id TEXT PRIMARY KEY, name TEXT, label TEXT, file_path TEXT, start_line INTEGER, end_line INTEGER, community_id INTEGER);
|
|
8
|
-
CREATE TABLE edges (id TEXT PRIMARY KEY, source_id TEXT, target_id TEXT, relation TEXT, confidence TEXT, confidence_score REAL);
|
|
9
|
-
`);
|
|
10
|
-
const insert = db.prepare('INSERT INTO nodes VALUES (?,?,?,?,?,?,?)');
|
|
11
|
-
for (let i = 0; i < nodeCount; i++) {
|
|
12
|
-
insert.run(`n${i}`, `symbol_${i}`, 'Function', `/app/file${i % 10}.ts`, i * 5 + 1, i * 5 + 4, i % 3);
|
|
13
|
-
}
|
|
14
|
-
for (let i = 1; i < Math.min(nodeCount, 20); i++) {
|
|
15
|
-
db.prepare('INSERT INTO edges VALUES (?,?,?,?,?,?)').run(`e${i}`, `n${i - 1}`, `n${i}`, 'CALLS', 'EXTRACTED', 0.9);
|
|
16
|
-
}
|
|
17
|
-
return db;
|
|
18
|
-
}
|
|
19
|
-
describe('estimateTokens', () => {
|
|
20
|
-
it('estimates tokens as text length divided by 4', () => {
|
|
21
|
-
expect(estimateTokens('a'.repeat(400))).toBe(100);
|
|
22
|
-
expect(estimateTokens('')).toBe(0);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
describe('runBenchmark', () => {
|
|
26
|
-
it('returns corpus_tokens, avg_query_tokens, and reduction_ratio', () => {
|
|
27
|
-
const db = makeDb(50);
|
|
28
|
-
const result = runBenchmark(db, { corpusWordCount: 5000 });
|
|
29
|
-
expect(result.corpus_tokens).toBeGreaterThan(0);
|
|
30
|
-
expect(result.avg_query_tokens).toBeGreaterThanOrEqual(0);
|
|
31
|
-
expect(result.reduction_ratio).toBeGreaterThanOrEqual(0);
|
|
32
|
-
expect(result.nodes).toBe(50);
|
|
33
|
-
});
|
|
34
|
-
it('returns per_question breakdown', () => {
|
|
35
|
-
const db = makeDb(30);
|
|
36
|
-
const result = runBenchmark(db, {
|
|
37
|
-
questions: ['how does authentication work', 'what is the entry point'],
|
|
38
|
-
corpusWordCount: 3000,
|
|
39
|
-
});
|
|
40
|
-
expect(Array.isArray(result.per_question)).toBe(true);
|
|
41
|
-
});
|
|
42
|
-
it('works with no matching nodes gracefully', () => {
|
|
43
|
-
const db = makeDb(5);
|
|
44
|
-
const result = runBenchmark(db, { questions: ['zzz_nonexistent_xyz'] });
|
|
45
|
-
expect(result.nodes).toBe(5);
|
|
46
|
-
expect(typeof result.reduction_ratio).toBe('number');
|
|
47
|
-
});
|
|
48
|
-
it('uses default questions when none provided', () => {
|
|
49
|
-
const db = makeDb(20);
|
|
50
|
-
const result = runBenchmark(db);
|
|
51
|
-
expect(result.per_question.length).toBeGreaterThan(0);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
//# sourceMappingURL=benchmark.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.test.js","sourceRoot":"","sources":["../../../../src/__tests__/analysis/benchmark.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cluster-quality.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/analysis/cluster-quality.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { silhouetteScore, modularityScore } from '../../analysis/cluster-quality.js';
|
|
3
|
-
describe('silhouetteScore', () => {
|
|
4
|
-
it('returns 0 for a single node', () => {
|
|
5
|
-
const memberships = new Map([['a', 0]]);
|
|
6
|
-
const edges = [];
|
|
7
|
-
expect(silhouetteScore(memberships, edges)).toBeCloseTo(0);
|
|
8
|
-
});
|
|
9
|
-
it('returns 1 for two perfectly separated communities with no cross edges', () => {
|
|
10
|
-
// Community 0: a-b-c fully connected, Community 1: d-e-f fully connected
|
|
11
|
-
const memberships = new Map([
|
|
12
|
-
['a', 0], ['b', 0], ['c', 0],
|
|
13
|
-
['d', 1], ['e', 1], ['f', 1],
|
|
14
|
-
]);
|
|
15
|
-
const edges = [
|
|
16
|
-
{ sourceId: 'a', targetId: 'b' },
|
|
17
|
-
{ sourceId: 'b', targetId: 'c' },
|
|
18
|
-
{ sourceId: 'a', targetId: 'c' },
|
|
19
|
-
{ sourceId: 'd', targetId: 'e' },
|
|
20
|
-
{ sourceId: 'e', targetId: 'f' },
|
|
21
|
-
{ sourceId: 'd', targetId: 'f' },
|
|
22
|
-
];
|
|
23
|
-
const score = silhouetteScore(memberships, edges);
|
|
24
|
-
expect(score).toBeGreaterThan(0.5);
|
|
25
|
-
});
|
|
26
|
-
it('returns negative score for misassigned nodes (cross edges dominate)', () => {
|
|
27
|
-
// Node 'a' is in community 0 but only connected to community 1 nodes
|
|
28
|
-
const memberships = new Map([
|
|
29
|
-
['a', 0],
|
|
30
|
-
['b', 1], ['c', 1], ['d', 1],
|
|
31
|
-
]);
|
|
32
|
-
const edges = [
|
|
33
|
-
{ sourceId: 'a', targetId: 'b' },
|
|
34
|
-
{ sourceId: 'a', targetId: 'c' },
|
|
35
|
-
{ sourceId: 'a', targetId: 'd' },
|
|
36
|
-
{ sourceId: 'b', targetId: 'c' },
|
|
37
|
-
{ sourceId: 'c', targetId: 'd' },
|
|
38
|
-
];
|
|
39
|
-
const score = silhouetteScore(memberships, edges);
|
|
40
|
-
// 'a' is isolated in its community, so its silhouette is negative
|
|
41
|
-
expect(score).toBeLessThan(0.5);
|
|
42
|
-
});
|
|
43
|
-
it('handles nodes with no edges gracefully', () => {
|
|
44
|
-
const memberships = new Map([['x', 0], ['y', 1]]);
|
|
45
|
-
const edges = [];
|
|
46
|
-
const score = silhouetteScore(memberships, edges);
|
|
47
|
-
expect(typeof score).toBe('number');
|
|
48
|
-
expect(isNaN(score)).toBe(false);
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
describe('modularityScore', () => {
|
|
52
|
-
it('returns 0 for empty graph', () => {
|
|
53
|
-
const memberships = new Map();
|
|
54
|
-
const edges = [];
|
|
55
|
-
expect(modularityScore(memberships, edges)).toBeCloseTo(0);
|
|
56
|
-
});
|
|
57
|
-
it('returns positive value for well-structured communities', () => {
|
|
58
|
-
// Two dense clusters with few cross edges
|
|
59
|
-
const memberships = new Map([
|
|
60
|
-
['a', 0], ['b', 0], ['c', 0],
|
|
61
|
-
['d', 1], ['e', 1], ['f', 1],
|
|
62
|
-
]);
|
|
63
|
-
const edges = [
|
|
64
|
-
{ sourceId: 'a', targetId: 'b' },
|
|
65
|
-
{ sourceId: 'b', targetId: 'c' },
|
|
66
|
-
{ sourceId: 'a', targetId: 'c' },
|
|
67
|
-
{ sourceId: 'd', targetId: 'e' },
|
|
68
|
-
{ sourceId: 'e', targetId: 'f' },
|
|
69
|
-
{ sourceId: 'd', targetId: 'f' },
|
|
70
|
-
{ sourceId: 'c', targetId: 'd' }, // one bridge edge
|
|
71
|
-
];
|
|
72
|
-
const q = modularityScore(memberships, edges);
|
|
73
|
-
expect(q).toBeGreaterThan(0);
|
|
74
|
-
});
|
|
75
|
-
it('returns close to 0 or negative for random partition', () => {
|
|
76
|
-
// All edges cross community boundaries
|
|
77
|
-
const memberships = new Map([
|
|
78
|
-
['a', 0], ['b', 1], ['c', 0], ['d', 1],
|
|
79
|
-
]);
|
|
80
|
-
const edges = [
|
|
81
|
-
{ sourceId: 'a', targetId: 'b' },
|
|
82
|
-
{ sourceId: 'b', targetId: 'c' },
|
|
83
|
-
{ sourceId: 'c', targetId: 'd' },
|
|
84
|
-
{ sourceId: 'd', targetId: 'a' },
|
|
85
|
-
];
|
|
86
|
-
const q = modularityScore(memberships, edges);
|
|
87
|
-
expect(q).toBeLessThan(0.3);
|
|
88
|
-
});
|
|
89
|
-
it('handles single-community graph', () => {
|
|
90
|
-
const memberships = new Map([['a', 0], ['b', 0], ['c', 0]]);
|
|
91
|
-
const edges = [
|
|
92
|
-
{ sourceId: 'a', targetId: 'b' },
|
|
93
|
-
{ sourceId: 'b', targetId: 'c' },
|
|
94
|
-
];
|
|
95
|
-
const q = modularityScore(memberships, edges);
|
|
96
|
-
expect(typeof q).toBe('number');
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
//# sourceMappingURL=cluster-quality.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cluster-quality.test.js","sourceRoot":"","sources":["../../../../src/__tests__/analysis/cluster-quality.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"corpus-health.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/analysis/corpus-health.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { checkCorpusHealth } from '../../analysis/corpus-health.js';
|
|
3
|
-
describe('checkCorpusHealth', () => {
|
|
4
|
-
it('passes for healthy corpus', () => {
|
|
5
|
-
const r = checkCorpusHealth({ wordCount: 100_000, fileCount: 50 });
|
|
6
|
-
expect(r.healthy).toBe(true);
|
|
7
|
-
expect(r.warnings).toHaveLength(0);
|
|
8
|
-
});
|
|
9
|
-
it('warns when corpus too small', () => {
|
|
10
|
-
const r = checkCorpusHealth({ wordCount: 10_000, fileCount: 10 });
|
|
11
|
-
expect(r.healthy).toBe(false);
|
|
12
|
-
expect(r.warnings.some(w => /small/i.test(w))).toBe(true);
|
|
13
|
-
});
|
|
14
|
-
it('warns when corpus too large', () => {
|
|
15
|
-
const r = checkCorpusHealth({ wordCount: 600_000, fileCount: 100 });
|
|
16
|
-
expect(r.healthy).toBe(false);
|
|
17
|
-
expect(r.warnings.some(w => /large/i.test(w))).toBe(true);
|
|
18
|
-
});
|
|
19
|
-
it('warns when file count too high', () => {
|
|
20
|
-
const r = checkCorpusHealth({ wordCount: 200_000, fileCount: 250 });
|
|
21
|
-
expect(r.healthy).toBe(false);
|
|
22
|
-
expect(r.warnings.some(w => /file/i.test(w))).toBe(true);
|
|
23
|
-
});
|
|
24
|
-
it('collects multiple warnings', () => {
|
|
25
|
-
const r = checkCorpusHealth({ wordCount: 600_000, fileCount: 300 });
|
|
26
|
-
expect(r.warnings.length).toBeGreaterThanOrEqual(2);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=corpus-health.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"corpus-health.test.js","sourceRoot":"","sources":["../../../../src/__tests__/analysis/corpus-health.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAC;AAE7F,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-health.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/analysis/dependency-health.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { dependencyHealth, } from '../../analysis/dependency-health.js';
|
|
3
|
-
describe('dependencyHealth', () => {
|
|
4
|
-
it('returns score 1 for a perfectly healthy small graph', () => {
|
|
5
|
-
const input = {
|
|
6
|
-
nodes: ['a', 'b', 'c'],
|
|
7
|
-
edges: [
|
|
8
|
-
{ sourceId: 'a', targetId: 'b' },
|
|
9
|
-
{ sourceId: 'b', targetId: 'c' },
|
|
10
|
-
],
|
|
11
|
-
cycleCount: 0,
|
|
12
|
-
deadNodeCount: 0,
|
|
13
|
-
};
|
|
14
|
-
const result = dependencyHealth(input);
|
|
15
|
-
expect(result.score).toBeGreaterThan(0.8);
|
|
16
|
-
});
|
|
17
|
-
it('penalizes cycles', () => {
|
|
18
|
-
const baseline = {
|
|
19
|
-
nodes: ['a', 'b', 'c'],
|
|
20
|
-
edges: [
|
|
21
|
-
{ sourceId: 'a', targetId: 'b' },
|
|
22
|
-
{ sourceId: 'b', targetId: 'c' },
|
|
23
|
-
],
|
|
24
|
-
cycleCount: 0,
|
|
25
|
-
deadNodeCount: 0,
|
|
26
|
-
};
|
|
27
|
-
const withCycle = {
|
|
28
|
-
...baseline,
|
|
29
|
-
edges: [
|
|
30
|
-
...baseline.edges,
|
|
31
|
-
{ sourceId: 'c', targetId: 'a' },
|
|
32
|
-
],
|
|
33
|
-
cycleCount: 1,
|
|
34
|
-
};
|
|
35
|
-
expect(dependencyHealth(withCycle).score).toBeLessThan(dependencyHealth(baseline).score);
|
|
36
|
-
});
|
|
37
|
-
it('penalizes dead code', () => {
|
|
38
|
-
const baseline = {
|
|
39
|
-
nodes: ['a', 'b', 'c'],
|
|
40
|
-
edges: [{ sourceId: 'a', targetId: 'b' }],
|
|
41
|
-
cycleCount: 0,
|
|
42
|
-
deadNodeCount: 0,
|
|
43
|
-
};
|
|
44
|
-
const withDead = { ...baseline, deadNodeCount: 2 };
|
|
45
|
-
expect(dependencyHealth(withDead).score).toBeLessThan(dependencyHealth(baseline).score);
|
|
46
|
-
});
|
|
47
|
-
it('penalizes high fan-in concentration (god nodes)', () => {
|
|
48
|
-
// One node targeted by all others → god node
|
|
49
|
-
const nodes = ['a', 'b', 'c', 'd', 'e', 'hub'];
|
|
50
|
-
const edges = nodes.slice(0, 5).map(n => ({ sourceId: n, targetId: 'hub' }));
|
|
51
|
-
const input = {
|
|
52
|
-
nodes,
|
|
53
|
-
edges,
|
|
54
|
-
cycleCount: 0,
|
|
55
|
-
deadNodeCount: 0,
|
|
56
|
-
};
|
|
57
|
-
const result = dependencyHealth(input);
|
|
58
|
-
expect(result.score).toBeLessThan(1);
|
|
59
|
-
expect(result.details.godNodeConcentration).toBeGreaterThan(0);
|
|
60
|
-
});
|
|
61
|
-
it('returns score in [0, 1] range', () => {
|
|
62
|
-
const input = {
|
|
63
|
-
nodes: ['a', 'b'],
|
|
64
|
-
edges: [{ sourceId: 'a', targetId: 'b' }, { sourceId: 'b', targetId: 'a' }],
|
|
65
|
-
cycleCount: 1,
|
|
66
|
-
deadNodeCount: 1,
|
|
67
|
-
};
|
|
68
|
-
const result = dependencyHealth(input);
|
|
69
|
-
expect(result.score).toBeGreaterThanOrEqual(0);
|
|
70
|
-
expect(result.score).toBeLessThanOrEqual(1);
|
|
71
|
-
});
|
|
72
|
-
it('exposes details breakdown', () => {
|
|
73
|
-
const input = {
|
|
74
|
-
nodes: ['a', 'b', 'c'],
|
|
75
|
-
edges: [{ sourceId: 'a', targetId: 'b' }],
|
|
76
|
-
cycleCount: 0,
|
|
77
|
-
deadNodeCount: 1,
|
|
78
|
-
};
|
|
79
|
-
const { details } = dependencyHealth(input);
|
|
80
|
-
expect(typeof details.cyclePenalty).toBe('number');
|
|
81
|
-
expect(typeof details.deadCodeRatio).toBe('number');
|
|
82
|
-
expect(typeof details.fanSkew).toBe('number');
|
|
83
|
-
expect(typeof details.godNodeConcentration).toBe('number');
|
|
84
|
-
});
|
|
85
|
-
it('handles empty graph without throwing', () => {
|
|
86
|
-
const input = {
|
|
87
|
-
nodes: [],
|
|
88
|
-
edges: [],
|
|
89
|
-
cycleCount: 0,
|
|
90
|
-
deadNodeCount: 0,
|
|
91
|
-
};
|
|
92
|
-
expect(() => dependencyHealth(input)).not.toThrow();
|
|
93
|
-
expect(dependencyHealth(input).score).toBe(1);
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
//# sourceMappingURL=dependency-health.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-health.test.js","sourceRoot":"","sources":["../../../../src/__tests__/analysis/dependency-health.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-classifier.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/analysis/file-classifier.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { classifyFile, classifyContent } from '../../analysis/file-classifier.js';
|
|
3
|
-
describe('classifyFile', () => {
|
|
4
|
-
it('classifies TypeScript as CODE', () => {
|
|
5
|
-
expect(classifyFile('src/app.ts')).toBe('CODE');
|
|
6
|
-
});
|
|
7
|
-
it('classifies Python as CODE', () => {
|
|
8
|
-
expect(classifyFile('main.py')).toBe('CODE');
|
|
9
|
-
});
|
|
10
|
-
it('classifies markdown as DOCUMENT', () => {
|
|
11
|
-
expect(classifyFile('README.md')).toBe('DOCUMENT');
|
|
12
|
-
});
|
|
13
|
-
it('classifies PDF as DOCUMENT', () => {
|
|
14
|
-
expect(classifyFile('report.pdf')).toBe('DOCUMENT');
|
|
15
|
-
});
|
|
16
|
-
it('classifies PNG as IMAGE', () => {
|
|
17
|
-
expect(classifyFile('logo.png')).toBe('IMAGE');
|
|
18
|
-
});
|
|
19
|
-
it('classifies mp4 as VIDEO', () => {
|
|
20
|
-
expect(classifyFile('demo.mp4')).toBe('VIDEO');
|
|
21
|
-
});
|
|
22
|
-
it('classifies arxiv URL as PAPER', () => {
|
|
23
|
-
expect(classifyFile('https://arxiv.org/abs/2401.00001')).toBe('PAPER');
|
|
24
|
-
});
|
|
25
|
-
it('returns CODE for unknown extension', () => {
|
|
26
|
-
expect(classifyFile('Makefile')).toBe('CODE');
|
|
27
|
-
});
|
|
28
|
-
it('detects paper signals in filename', () => {
|
|
29
|
-
expect(classifyFile('attention_is_all_you_need.pdf')).toBe('PAPER');
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
describe('paper detection signals', () => {
|
|
33
|
-
it('detects LaTeX cite command', () => {
|
|
34
|
-
expect(classifyContent('We show \\cite{smith2020} that...')).toBe('PAPER');
|
|
35
|
-
});
|
|
36
|
-
it('detects numbered citations', () => {
|
|
37
|
-
expect(classifyContent('The results [1][2][3] confirm...')).toBe('PAPER');
|
|
38
|
-
});
|
|
39
|
-
it('detects DOI pattern', () => {
|
|
40
|
-
expect(classifyContent('doi:10.1145/3491102.3501993')).toBe('PAPER');
|
|
41
|
-
});
|
|
42
|
-
it('detects abstract keyword', () => {
|
|
43
|
-
expect(classifyContent('Abstract\nIn this paper we propose...')).toBe('PAPER');
|
|
44
|
-
});
|
|
45
|
-
it('does not classify random text as PAPER', () => {
|
|
46
|
-
expect(classifyContent('Hello world this is a readme.')).not.toBe('PAPER');
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
//# sourceMappingURL=file-classifier.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-classifier.test.js","sourceRoot":"","sources":["../../../../src/__tests__/analysis/file-classifier.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-similarity.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/analysis/node-similarity.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { jaccardSimilarity, findSimilarNodes, buildNeighborMap, } from '../../analysis/node-similarity.js';
|
|
3
|
-
describe('jaccardSimilarity', () => {
|
|
4
|
-
it('returns 1 for identical sets', () => {
|
|
5
|
-
expect(jaccardSimilarity(new Set(['a', 'b', 'c']), new Set(['a', 'b', 'c']))).toBeCloseTo(1);
|
|
6
|
-
});
|
|
7
|
-
it('returns 0 for disjoint sets', () => {
|
|
8
|
-
expect(jaccardSimilarity(new Set(['a', 'b']), new Set(['c', 'd']))).toBeCloseTo(0);
|
|
9
|
-
});
|
|
10
|
-
it('returns 1/3 for sets with one shared and two unique elements', () => {
|
|
11
|
-
// intersection={b}, union={a,b,c} => 1/3
|
|
12
|
-
expect(jaccardSimilarity(new Set(['a', 'b']), new Set(['b', 'c']))).toBeCloseTo(1 / 3);
|
|
13
|
-
});
|
|
14
|
-
it('returns 0 for two empty sets', () => {
|
|
15
|
-
expect(jaccardSimilarity(new Set(), new Set())).toBeCloseTo(0);
|
|
16
|
-
});
|
|
17
|
-
it('returns 0 when one set is empty and other is not', () => {
|
|
18
|
-
expect(jaccardSimilarity(new Set(['a']), new Set())).toBeCloseTo(0);
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
describe('buildNeighborMap', () => {
|
|
22
|
-
it('builds an undirected adjacency map', () => {
|
|
23
|
-
const edges = [
|
|
24
|
-
{ sourceId: 'a', targetId: 'b' },
|
|
25
|
-
{ sourceId: 'b', targetId: 'c' },
|
|
26
|
-
];
|
|
27
|
-
const map = buildNeighborMap(edges);
|
|
28
|
-
expect(map.get('a')).toEqual(new Set(['b']));
|
|
29
|
-
expect(map.get('b')).toEqual(new Set(['a', 'c']));
|
|
30
|
-
expect(map.get('c')).toEqual(new Set(['b']));
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
describe('findSimilarNodes', () => {
|
|
34
|
-
const edges = [
|
|
35
|
-
{ sourceId: 'a', targetId: 'b' },
|
|
36
|
-
{ sourceId: 'a', targetId: 'c' },
|
|
37
|
-
{ sourceId: 'a', targetId: 'd' },
|
|
38
|
-
{ sourceId: 'x', targetId: 'b' },
|
|
39
|
-
{ sourceId: 'x', targetId: 'c' },
|
|
40
|
-
{ sourceId: 'x', targetId: 'd' },
|
|
41
|
-
{ sourceId: 'y', targetId: 'e' },
|
|
42
|
-
];
|
|
43
|
-
it('returns nodes sorted by jaccard similarity descending', () => {
|
|
44
|
-
const results = findSimilarNodes('a', edges, 5);
|
|
45
|
-
// 'x' shares all 3 neighbors (b,c,d) — should be top result
|
|
46
|
-
expect(results[0]?.nodeId).toBe('x');
|
|
47
|
-
expect(results[0]?.score).toBeGreaterThan(0.5);
|
|
48
|
-
});
|
|
49
|
-
it('respects the k limit', () => {
|
|
50
|
-
const results = findSimilarNodes('a', edges, 1);
|
|
51
|
-
expect(results.length).toBe(1);
|
|
52
|
-
});
|
|
53
|
-
it('excludes the query node itself', () => {
|
|
54
|
-
const results = findSimilarNodes('a', edges, 10);
|
|
55
|
-
expect(results.every(r => r.nodeId !== 'a')).toBe(true);
|
|
56
|
-
});
|
|
57
|
-
it('returns empty array for unknown node', () => {
|
|
58
|
-
const results = findSimilarNodes('unknown', edges, 5);
|
|
59
|
-
expect(results).toHaveLength(0);
|
|
60
|
-
});
|
|
61
|
-
it('returns only nodes with score > 0', () => {
|
|
62
|
-
const results = findSimilarNodes('a', edges, 10);
|
|
63
|
-
expect(results.every(r => r.score > 0)).toBe(true);
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
//# sourceMappingURL=node-similarity.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-similarity.test.js","sourceRoot":"","sources":["../../../../src/__tests__/analysis/node-similarity.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"augment-cache.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/cache/augment-cache.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
|
-
import { createAugmentCache } from '../../cache/augment-cache.js';
|
|
3
|
-
describe('AugmentCache', () => {
|
|
4
|
-
let cache;
|
|
5
|
-
beforeEach(() => {
|
|
6
|
-
cache = createAugmentCache({ maxSize: 3, ttlMs: 60_000 });
|
|
7
|
-
});
|
|
8
|
-
it('stores and retrieves a value by key', () => {
|
|
9
|
-
cache.set('k1', 'result1');
|
|
10
|
-
expect(cache.get('k1')).toBe('result1');
|
|
11
|
-
});
|
|
12
|
-
it('returns undefined for a missing key', () => {
|
|
13
|
-
expect(cache.get('missing')).toBeUndefined();
|
|
14
|
-
});
|
|
15
|
-
it('evicts the oldest entry when maxSize is exceeded', () => {
|
|
16
|
-
cache.set('k1', 'v1');
|
|
17
|
-
cache.set('k2', 'v2');
|
|
18
|
-
cache.set('k3', 'v3');
|
|
19
|
-
cache.set('k4', 'v4');
|
|
20
|
-
expect(cache.get('k1')).toBeUndefined();
|
|
21
|
-
expect(cache.get('k4')).toBe('v4');
|
|
22
|
-
});
|
|
23
|
-
it('expires entries after TTL', async () => {
|
|
24
|
-
const shortCache = createAugmentCache({ maxSize: 10, ttlMs: 10 });
|
|
25
|
-
shortCache.set('k1', 'v1');
|
|
26
|
-
await new Promise(r => setTimeout(r, 20));
|
|
27
|
-
expect(shortCache.get('k1')).toBeUndefined();
|
|
28
|
-
});
|
|
29
|
-
it('reports size correctly', () => {
|
|
30
|
-
cache.set('k1', 'v1');
|
|
31
|
-
cache.set('k2', 'v2');
|
|
32
|
-
expect(cache.size()).toBe(2);
|
|
33
|
-
});
|
|
34
|
-
it('clears all entries', () => {
|
|
35
|
-
cache.set('k1', 'v1');
|
|
36
|
-
cache.set('k2', 'v2');
|
|
37
|
-
cache.clear();
|
|
38
|
-
expect(cache.size()).toBe(0);
|
|
39
|
-
});
|
|
40
|
-
it('provides a makeKey helper that encodes all relevant params', () => {
|
|
41
|
-
const { makeKey } = cache;
|
|
42
|
-
const k = makeKey('query', '/repo', 10, 'markdown');
|
|
43
|
-
expect(k).toContain('query');
|
|
44
|
-
expect(k).toContain('/repo');
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
//# sourceMappingURL=augment-cache.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"augment-cache.test.js","sourceRoot":"","sources":["../../../../src/__tests__/cache/augment-cache.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-update.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/cli/check-update.test.ts"],"names":[],"mappings":""}
|