@monoes/monograph 1.5.6 → 1.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -9
- package/dist/src/mcp-tools/impact.d.ts.map +1 -1
- package/dist/src/mcp-tools/impact.js +1 -10
- package/dist/src/mcp-tools/impact.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -9
- package/.monomind/data/ranked-context.json +0 -5
- package/.monomind/loops/mastermind-review-1782162423447.json +0 -16
- package/.monomind/sessions/session-1777578175215.json +0 -15
- package/.monomind/sessions/session-1777823684507.json +0 -15
- package/.monomind/sessions/session-1777928944749.json +0 -15
- package/.monomind/sessions/session-1778052902210.json +0 -15
- package/.monomind/sessions/session-1778056744636.json +0 -15
- package/.monomind/sessions/session-1778061077599.json +0 -15
- package/.monomind/sessions/session-1778102154764.json +0 -15
- package/__tests__/analysis/shape-extractor.test.ts +0 -124
- package/__tests__/analysis/surprise-scorer.test.ts +0 -154
- package/__tests__/cache/extraction-cache.test.ts +0 -45
- package/__tests__/cli/ai-context.test.ts +0 -175
- package/__tests__/cli/augment.test.ts +0 -128
- package/__tests__/cli/doctor.test.ts +0 -125
- package/__tests__/cli/eval-server.test.ts +0 -89
- package/__tests__/cli/setup.test.ts +0 -178
- package/__tests__/cli/skill-gen.test.ts +0 -280
- package/__tests__/export/formats.test.ts +0 -82
- package/__tests__/fixtures/sample.c +0 -25
- package/__tests__/fixtures/sample.cpp +0 -32
- package/__tests__/fixtures/sample.dart +0 -34
- package/__tests__/fixtures/sample.kt +0 -30
- package/__tests__/fixtures/sample.php +0 -30
- package/__tests__/fixtures/sample.py +0 -11
- package/__tests__/fixtures/sample.rb +0 -26
- package/__tests__/fixtures/sample.swift +0 -42
- package/__tests__/fixtures/sample.ts +0 -17
- package/__tests__/fixtures/sample.vue +0 -40
- package/__tests__/groups/group-search.test.ts +0 -221
- package/__tests__/groups/group-sync.test.ts +0 -336
- package/__tests__/integration/build-atomicity.test.ts +0 -61
- package/__tests__/integration/call-attribution.test.ts +0 -116
- package/__tests__/integration/full-pipeline.test.ts +0 -64
- package/__tests__/integration/graph-report-freshness.test.ts +0 -53
- package/__tests__/integration/incremental-build.test.ts +0 -103
- package/__tests__/mcp-resources/resources.test.ts +0 -256
- package/__tests__/mcp-tools/api-impact.test.ts +0 -188
- package/__tests__/mcp-tools/context.test.ts +0 -130
- package/__tests__/mcp-tools/cypher.test.ts +0 -258
- package/__tests__/mcp-tools/detect-changes.test.ts +0 -114
- package/__tests__/mcp-tools/impact.test.ts +0 -133
- package/__tests__/mcp-tools/rename.test.ts +0 -117
- package/__tests__/mcp-tools/route-map.test.ts +0 -237
- package/__tests__/mcp-tools/shape-check.test.ts +0 -202
- package/__tests__/mcp-tools/tool-map.test.ts +0 -135
- package/__tests__/parsers/c.test.ts +0 -28
- package/__tests__/parsers/cpp.test.ts +0 -28
- package/__tests__/parsers/csharp.test.ts +0 -62
- package/__tests__/parsers/dart.test.ts +0 -28
- package/__tests__/parsers/kotlin.test.ts +0 -28
- package/__tests__/parsers/loader.test.ts +0 -14
- package/__tests__/parsers/php.test.ts +0 -28
- package/__tests__/parsers/python.test.ts +0 -32
- package/__tests__/parsers/ruby.test.ts +0 -33
- package/__tests__/parsers/swift.test.ts +0 -28
- package/__tests__/parsers/typescript.test.ts +0 -45
- package/__tests__/parsers/vue.test.ts +0 -28
- package/__tests__/pipeline/analysis.test.ts +0 -58
- package/__tests__/pipeline/phases/corpus-check.test.ts +0 -26
- package/__tests__/pipeline/phases/evidence.test.ts +0 -41
- package/__tests__/pipeline/phases/field-access.test.ts +0 -22
- package/__tests__/pipeline/phases/leiden.test.ts +0 -72
- package/__tests__/pipeline/phases/markdown.test.ts +0 -84
- package/__tests__/pipeline/phases/middleware-extractor.test.ts +0 -131
- package/__tests__/pipeline/phases/orm.test.ts +0 -379
- package/__tests__/pipeline/phases/processes.test.ts +0 -191
- package/__tests__/pipeline/phases/routes.test.ts +0 -195
- package/__tests__/pipeline/phases/scope-resolution.test.ts +0 -133
- package/__tests__/pipeline/phases/tools.test.ts +0 -161
- package/__tests__/pipeline/phases/variables.test.ts +0 -30
- package/__tests__/pipeline/phases/wildcard-synthesis.test.ts +0 -207
- package/__tests__/pipeline/phases.test.ts +0 -41
- package/__tests__/pipeline/runner.test.ts +0 -28
- package/__tests__/registry/repo-registry.test.ts +0 -127
- package/__tests__/reporting/graph-report.suggest.test.ts +0 -36
- package/__tests__/reporting/graph-report.test.ts +0 -165
- package/__tests__/search/ast-chunker.test.ts +0 -63
- package/__tests__/search/rrf.test.ts +0 -95
- package/__tests__/security/safe-fetch.test.ts +0 -41
- package/__tests__/security/sensitive-files.test.ts +0 -32
- package/__tests__/setup.ts +0 -1
- package/__tests__/skills/platform-skills.test.ts +0 -63
- package/__tests__/staleness/git-staleness.test.ts +0 -107
- package/__tests__/storage/db.test.ts +0 -37
- package/__tests__/storage/evidence-roundtrip.test.ts +0 -89
- package/__tests__/storage/stores.test.ts +0 -165
- package/__tests__/types.test.ts +0 -13
- package/__tests__/validation/extraction-validator.test.ts +0 -48
- package/__tests__/watch/watcher.test.ts +0 -31
- package/__tests__/web/analyze-api.test.ts +0 -66
- package/__tests__/web/api.test.ts +0 -210
- package/__tests__/web/mcp-http.test.ts +0 -67
- package/__tests__/web/react-ui.test.ts +0 -43
- package/__tests__/wiki/gist-publisher.test.ts +0 -66
- package/__tests__/wiki/providers.test.ts +0 -69
- package/__tests__/wiki/wiki-generator.test.ts +0 -260
- package/src/__tests__/analysis/benchmark.test.ts +0 -59
- package/src/__tests__/analysis/cluster-quality.test.ts +0 -106
- package/src/__tests__/analysis/corpus-health.test.ts +0 -33
- package/src/__tests__/analysis/dependency-health.test.ts +0 -105
- package/src/__tests__/analysis/file-classifier.test.ts +0 -50
- package/src/__tests__/analysis/node-similarity.test.ts +0 -81
- package/src/__tests__/cache/augment-cache.test.ts +0 -55
- package/src/__tests__/cli/check-update.test.ts +0 -42
- package/src/__tests__/cli/hooks-install.test.ts +0 -56
- package/src/__tests__/cli/hooks-marker.test.ts +0 -138
- package/src/__tests__/cli/hooks-status.test.ts +0 -42
- package/src/__tests__/export/adjacency-matrix.test.ts +0 -116
- package/src/__tests__/export/csv.test.ts +0 -39
- package/src/__tests__/export/dot.test.ts +0 -86
- package/src/__tests__/export/gexf.test.ts +0 -78
- package/src/__tests__/export/graphml.test.ts +0 -57
- package/src/__tests__/export/mermaid.test.ts +0 -89
- package/src/__tests__/graph/betweenness.test.ts +0 -89
- package/src/__tests__/graph/cycles.test.ts +0 -131
- package/src/__tests__/graph/dead-code.test.ts +0 -174
- package/src/__tests__/graph/dfs.test.ts +0 -62
- package/src/__tests__/graph/diff-summary.test.ts +0 -83
- package/src/__tests__/graph/edge-filter.test.ts +0 -129
- package/src/__tests__/graph/import-chain.test.ts +0 -111
- package/src/__tests__/graph/merge.test.ts +0 -151
- package/src/__tests__/graph/node-search.test.ts +0 -167
- package/src/__tests__/graph/normalize-id.test.ts +0 -102
- package/src/__tests__/graph/pagerank.test.ts +0 -96
- package/src/__tests__/graph/prune.test.ts +0 -110
- package/src/__tests__/graph/regex-search.test.ts +0 -166
- package/src/__tests__/graph/ripple-impact.test.ts +0 -73
- package/src/__tests__/graph/scc.test.ts +0 -85
- package/src/__tests__/graph/statistics.test.ts +0 -219
- package/src/__tests__/graph/subgraph.test.ts +0 -127
- package/src/__tests__/graph/topo-sort.test.ts +0 -110
- package/src/__tests__/graph/wcc.test.ts +0 -101
- package/src/__tests__/groups/grpc-extractor.test.ts +0 -47
- package/src/__tests__/groups/service-boundary.test.ts +0 -86
- package/src/__tests__/groups/topic-extractor.test.ts +0 -43
- package/src/__tests__/ingest/git-clone.test.ts +0 -128
- package/src/__tests__/ingest/query-memory.test.ts +0 -123
- package/src/__tests__/ingest/transcribe.test.ts +0 -58
- package/src/__tests__/ingest/url-ingest.test.ts +0 -48
- package/src/__tests__/mcp-resources/repo-context-resource.test.ts +0 -37
- package/src/__tests__/mcp-resources/repos-resource.test.ts +0 -71
- package/src/__tests__/mcp-resources/wiki-resource.test.ts +0 -52
- package/src/__tests__/mcp-tools/explain.test.ts +0 -46
- package/src/__tests__/mcp-tools/graph-query.test.ts +0 -45
- package/src/__tests__/mcp-tools/group-sync.test.ts +0 -8
- package/src/__tests__/mcp-tools/impact-filtering.test.ts +0 -48
- package/src/__tests__/mcp-tools/impact.risk.test.ts +0 -24
- package/src/__tests__/mcp-tools/list-repos.test.ts +0 -24
- package/src/__tests__/mcp-tools/neighbors.test.ts +0 -48
- package/src/__tests__/mcp-tools/query.test.ts +0 -42
- package/src/__tests__/parsers/language-parsers.test.ts +0 -52
- package/src/__tests__/parsers/named-bindings.test.ts +0 -73
- package/src/__tests__/pipeline/cluster-only.test.ts +0 -33
- package/src/__tests__/pipeline/phases/bridge-adapters/electron-ipc.test.ts +0 -87
- package/src/__tests__/pipeline/phases/bridge-adapters/tauri.test.ts +0 -116
- package/src/__tests__/pipeline/phases/bridge-adapters/wails.test.ts +0 -81
- package/src/__tests__/pipeline/phases/bridge-resolver.test.ts +0 -110
- package/src/__tests__/pipeline/phases/communities.cohesion.test.ts +0 -43
- package/src/__tests__/pipeline/phases/community-split.test.ts +0 -30
- package/src/__tests__/pipeline/phases/framework-detect.test.ts +0 -65
- package/src/__tests__/pipeline/phases/import-resolver.test.ts +0 -64
- package/src/__tests__/pipeline/phases/parse-arrow.test.ts +0 -33
- package/src/__tests__/pipeline/phases/parse-csharp.test.ts +0 -33
- package/src/__tests__/pipeline/phases/scan.monographignore.test.ts +0 -53
- package/src/__tests__/pipeline/phases/scan.negation.test.ts +0 -40
- package/src/__tests__/pipeline/phases/scope-resolution.go.test.ts +0 -34
- package/src/__tests__/pipeline/phases/scope-resolution.java.test.ts +0 -30
- package/src/__tests__/pipeline/phases/scope-resolution.rust.test.ts +0 -31
- package/src/__tests__/pipeline/phases/suggest-questions.test.ts +0 -46
- package/src/__tests__/pipeline/phases/surprises-scoring.test.ts +0 -46
- package/src/__tests__/pipeline/phases/variables-phase.test.ts +0 -78
- package/src/__tests__/pipeline/phases/wildcard-phase.test.ts +0 -99
- package/src/__tests__/pipeline/runner.parallel.test.ts +0 -78
- package/src/__tests__/reporting/graph-report-confidence.test.ts +0 -43
- package/src/__tests__/reporting/graph-report-gaps.test.ts +0 -41
- package/src/__tests__/scope-resolution/call-sites.test.ts +0 -89
- package/src/__tests__/scope-resolution/evidence-weights.test.ts +0 -49
- package/src/__tests__/search/diacritic.test.ts +0 -23
- package/src/__tests__/security/safe-fetch.test.ts +0 -125
- package/src/__tests__/skills/platform-skills.extra.test.ts +0 -36
- package/src/__tests__/web/api.clusters.test.ts +0 -65
- package/src/__tests__/web/api.file.test.ts +0 -44
- package/src/__tests__/web/api.grep.test.ts +0 -47
- package/src/__tests__/web/api.info.test.ts +0 -18
- package/src/__tests__/web/api.jobs.test.ts +0 -47
- package/src/__tests__/web/api.progress.test.ts +0 -25
- package/src/__tests__/web/api.stream.test.ts +0 -35
- package/src/__tests__/wiki/providers-reasoning.test.ts +0 -46
- package/src/__tests__/wiki/wiki-review-mode.test.ts +0 -22
- package/src/analysis/benchmark.ts +0 -132
- package/src/analysis/changed-files.ts +0 -73
- package/src/analysis/changed-workspaces.ts +0 -94
- package/src/analysis/churn-cache.ts +0 -179
- package/src/analysis/churn-trend.ts +0 -57
- package/src/analysis/churn.ts +0 -263
- package/src/analysis/cluster-quality.ts +0 -142
- package/src/analysis/combined.ts +0 -41
- package/src/analysis/corpus-health.ts +0 -41
- package/src/analysis/coverage-gaps.ts +0 -246
- package/src/analysis/dep-classification.ts +0 -167
- package/src/analysis/dependency-health.ts +0 -146
- package/src/analysis/duplicate-exports.ts +0 -110
- package/src/analysis/fallow-suppression.ts +0 -98
- package/src/analysis/feature-flags-config.ts +0 -47
- package/src/analysis/feature-flags.ts +0 -223
- package/src/analysis/file-classifier.ts +0 -87
- package/src/analysis/git-changed-files.ts +0 -62
- package/src/analysis/health-baseline.ts +0 -80
- package/src/analysis/issue-filters.ts +0 -56
- package/src/analysis/list.ts +0 -74
- package/src/analysis/node-similarity.ts +0 -115
- package/src/analysis/private-type-leaks.ts +0 -119
- package/src/analysis/progress.ts +0 -43
- package/src/analysis/project-state.ts +0 -95
- package/src/analysis/regression-config.ts +0 -36
- package/src/analysis/rule-overrides.ts +0 -81
- package/src/analysis/scripts.ts +0 -95
- package/src/analysis/shape-extractor.ts +0 -202
- package/src/analysis/since-duration.ts +0 -42
- package/src/analysis/suppression-context.ts +0 -95
- package/src/analysis/suppressions.ts +0 -80
- package/src/analysis/surprise-scorer.ts +0 -74
- package/src/analysis/targets.ts +0 -237
- package/src/analysis/unused-class-members.ts +0 -79
- package/src/analysis/workspace-filter.ts +0 -89
- package/src/analyze/boundary-analysis.ts +0 -129
- package/src/analyze/predicates/file.ts +0 -86
- package/src/analyze/predicates/import.ts +0 -90
- package/src/analyze/predicates/lifecycle.ts +0 -55
- package/src/analyze/unused-deps.ts +0 -70
- package/src/analyze/unused-exports.ts +0 -145
- package/src/analyze/unused-files.ts +0 -46
- package/src/api/production-override.ts +0 -63
- package/src/api/programmatic.ts +0 -118
- package/src/audit.ts +0 -234
- package/src/cache/augment-cache.ts +0 -63
- package/src/cache/extraction-cache.ts +0 -141
- package/src/check/filtering.ts +0 -78
- package/src/check/index.ts +0 -99
- package/src/check/output.ts +0 -79
- package/src/check/rules.ts +0 -61
- package/src/ci-template.ts +0 -84
- package/src/claude-cli.ts +0 -59
- package/src/cli/ai-context.ts +0 -193
- package/src/cli/augment.ts +0 -114
- package/src/cli/check-update.ts +0 -40
- package/src/cli/doctor.ts +0 -182
- package/src/cli/eval-server.ts +0 -126
- package/src/cli/hooks-install.ts +0 -202
- package/src/cli/setup.ts +0 -197
- package/src/cli/skill-gen.ts +0 -347
- package/src/commands/flags.ts +0 -72
- package/src/config/boundary-config.ts +0 -183
- package/src/config/cli-schema.ts +0 -81
- package/src/config/config-parsing.ts +0 -102
- package/src/config/duplicates-config.ts +0 -62
- package/src/config/external-plugin.ts +0 -77
- package/src/config/health-config.ts +0 -42
- package/src/config/ignore-exports-used-in-file.ts +0 -46
- package/src/config/migration-types.ts +0 -73
- package/src/config/output-format.ts +0 -24
- package/src/config/plugins/builtin.ts +0 -411
- package/src/config/plugins/registry.ts +0 -77
- package/src/config/plugins/types.ts +0 -14
- package/src/config/resolution.ts +0 -102
- package/src/config/rules.ts +0 -70
- package/src/config/schema-gen.ts +0 -115
- package/src/config/types.ts +0 -149
- package/src/config/used-class-members.ts +0 -53
- package/src/config/validate.ts +0 -108
- package/src/config/workspace.ts +0 -137
- package/src/coverage/cloud-client.ts +0 -111
- package/src/coverage/upload-inventory.ts +0 -84
- package/src/coverage/upload-source-maps.ts +0 -97
- package/src/discover/entry-points.ts +0 -51
- package/src/discover/infrastructure-entries.ts +0 -175
- package/src/duplicates/detect/concatenation.ts +0 -37
- package/src/duplicates/detect/extraction.ts +0 -107
- package/src/duplicates/detect/filtering.ts +0 -112
- package/src/duplicates/detect/lcp.ts +0 -27
- package/src/duplicates/detect/ranking.ts +0 -16
- package/src/duplicates/detect/statistics.ts +0 -69
- package/src/duplicates/detect/suffix-array.ts +0 -88
- package/src/duplicates/families.ts +0 -95
- package/src/duplicates/normalize.ts +0 -58
- package/src/duplicates/shingle-filter.ts +0 -37
- package/src/duplicates/token-types.ts +0 -62
- package/src/duplicates/tokenize/index.ts +0 -104
- package/src/error/fallow-error.ts +0 -94
- package/src/error.ts +0 -47
- package/src/export/adjacency-matrix.ts +0 -127
- package/src/export/analysis-json.ts +0 -87
- package/src/export/badge.ts +0 -105
- package/src/export/canvas.ts +0 -42
- package/src/export/codeclimate.ts +0 -201
- package/src/export/compact-health.ts +0 -119
- package/src/export/compact.ts +0 -83
- package/src/export/csv.ts +0 -33
- package/src/export/cypher.ts +0 -33
- package/src/export/dot.ts +0 -52
- package/src/export/gexf.ts +0 -59
- package/src/export/graphml.ts +0 -50
- package/src/export/html.ts +0 -548
- package/src/export/index.ts +0 -9
- package/src/export/json.ts +0 -36
- package/src/export/markdown.ts +0 -290
- package/src/export/mermaid.ts +0 -100
- package/src/export/obsidian.ts +0 -44
- package/src/export/sarif.ts +0 -245
- package/src/export/svg.ts +0 -68
- package/src/fix/deps.ts +0 -70
- package/src/fix/enum-members.ts +0 -103
- package/src/fix/export-surgery.ts +0 -197
- package/src/fix/exports.ts +0 -93
- package/src/fix/orchestrator.ts +0 -67
- package/src/graph/analyzer.ts +0 -69
- package/src/graph/author-analytics.ts +0 -217
- package/src/graph/baseline.ts +0 -432
- package/src/graph/clone-families.ts +0 -132
- package/src/graph/codeowners-extended.ts +0 -114
- package/src/graph/codeowners-gitlab.ts +0 -150
- package/src/graph/codeowners.ts +0 -217
- package/src/graph/complexity.ts +0 -200
- package/src/graph/cross-reference-findings.ts +0 -85
- package/src/graph/cross-reference.ts +0 -139
- package/src/graph/cycle-detection.ts +0 -311
- package/src/graph/cycles.ts +0 -222
- package/src/graph/dead-code.ts +0 -128
- package/src/graph/dependency-closure.ts +0 -126
- package/src/graph/dfs.ts +0 -118
- package/src/graph/diff.ts +0 -92
- package/src/graph/duplication-stats.ts +0 -79
- package/src/graph/edge-filter.ts +0 -117
- package/src/graph/explain.ts +0 -133
- package/src/graph/external-style-usage.ts +0 -81
- package/src/graph/health-score.ts +0 -179
- package/src/graph/hotspots.ts +0 -219
- package/src/graph/import-chain.ts +0 -148
- package/src/graph/loader.ts +0 -44
- package/src/graph/maintainability.ts +0 -156
- package/src/graph/merge.ts +0 -174
- package/src/graph/mirrored-dirs.ts +0 -202
- package/src/graph/narrowing.ts +0 -92
- package/src/graph/node-search.ts +0 -201
- package/src/graph/node-types.ts +0 -67
- package/src/graph/normalize-id.ts +0 -138
- package/src/graph/pagerank.ts +0 -165
- package/src/graph/prune.ts +0 -95
- package/src/graph/re-exports/propagate.ts +0 -95
- package/src/graph/reachability.ts +0 -99
- package/src/graph/regex-search.ts +0 -232
- package/src/graph/regression.ts +0 -199
- package/src/graph/resolve/discover-types.ts +0 -45
- package/src/graph/resolve/dynamic-imports.ts +0 -102
- package/src/graph/resolve/fallbacks.ts +0 -79
- package/src/graph/resolve/index.ts +0 -68
- package/src/graph/resolve/path-info.ts +0 -41
- package/src/graph/resolve/re-exports.ts +0 -14
- package/src/graph/resolve/react-native.ts +0 -27
- package/src/graph/resolve/require-imports.ts +0 -18
- package/src/graph/resolve/specifier.ts +0 -120
- package/src/graph/resolve/static-imports.ts +0 -14
- package/src/graph/resolve/types.ts +0 -108
- package/src/graph/resolve/upgrades.ts +0 -32
- package/src/graph/ripple-impact.ts +0 -131
- package/src/graph/risk-profile.ts +0 -179
- package/src/graph/statistics.ts +0 -165
- package/src/graph/stats.ts +0 -157
- package/src/graph/subgraph.ts +0 -162
- package/src/graph/topo-sort.ts +0 -171
- package/src/graph/wcc.ts +0 -187
- package/src/groups/contract-bridge.ts +0 -103
- package/src/groups/contract-registry.ts +0 -263
- package/src/groups/group-config.ts +0 -108
- package/src/groups/group-search.ts +0 -139
- package/src/groups/group-sync.ts +0 -82
- package/src/groups/grpc-extractor.ts +0 -64
- package/src/groups/service-boundary.ts +0 -119
- package/src/groups/topic-extractor.ts +0 -90
- package/src/health/analysis-counts-snapshot.ts +0 -57
- package/src/health/analysis-counts.ts +0 -70
- package/src/health/complexity-findings.ts +0 -115
- package/src/health/distribution-thresholds.ts +0 -54
- package/src/health/grouping.ts +0 -138
- package/src/health/health-grouping.ts +0 -86
- package/src/health/health-report-types.ts +0 -165
- package/src/health/health-report.ts +0 -81
- package/src/health/health-score.ts +0 -65
- package/src/health/hotspot-utils.ts +0 -55
- package/src/health/hotspots.ts +0 -104
- package/src/health/large-functions.ts +0 -34
- package/src/health/ownership-metrics.ts +0 -61
- package/src/health/ownership-risk.ts +0 -98
- package/src/health/ownership.ts +0 -174
- package/src/health/quality-gate.ts +0 -57
- package/src/health/risk-profile.ts +0 -39
- package/src/health/runtime-coverage-report.ts +0 -101
- package/src/health/runtime-coverage.ts +0 -71
- package/src/health/scores.ts +0 -72
- package/src/health/scoring-types.ts +0 -48
- package/src/health/target-thresholds.ts +0 -92
- package/src/health/target-types.ts +0 -54
- package/src/health/targets.ts +0 -151
- package/src/health/timings.ts +0 -86
- package/src/health/trend-types.ts +0 -57
- package/src/health/trends.ts +0 -86
- package/src/health/vital-signs-compute.ts +0 -108
- package/src/health/vital-signs-snapshot.ts +0 -72
- package/src/health/vital-signs.ts +0 -101
- package/src/index.ts +0 -111
- package/src/ingest/git-clone.ts +0 -246
- package/src/ingest/query-memory.ts +0 -132
- package/src/ingest/transcribe.ts +0 -254
- package/src/ingest/url-ingest.ts +0 -87
- package/src/init/agent-hooks.ts +0 -86
- package/src/init/git-hooks.ts +0 -71
- package/src/init/project-detection.ts +0 -105
- package/src/license/manager.ts +0 -120
- package/src/lsp/code-actions.ts +0 -127
- package/src/lsp/code-lens.ts +0 -56
- package/src/lsp/diagnostics-ext.ts +0 -150
- package/src/lsp/diagnostics-push.ts +0 -103
- package/src/lsp/diagnostics.ts +0 -98
- package/src/lsp/hover.ts +0 -64
- package/src/lsp/server.ts +0 -254
- package/src/mcp/params.ts +0 -201
- package/src/mcp/resources.ts +0 -124
- package/src/mcp/tool-builders.ts +0 -203
- package/src/mcp-resources/communities-resource.ts +0 -72
- package/src/mcp-resources/graph-resource.ts +0 -14
- package/src/mcp-resources/index.ts +0 -9
- package/src/mcp-resources/named-cluster-resource.ts +0 -35
- package/src/mcp-resources/named-process-resource.ts +0 -26
- package/src/mcp-resources/processes-resource.ts +0 -67
- package/src/mcp-resources/repo-context-resource.ts +0 -36
- package/src/mcp-resources/repos-resource.ts +0 -21
- package/src/mcp-resources/schema-resource.ts +0 -46
- package/src/mcp-resources/wiki-resource.ts +0 -23
- package/src/mcp-tools/api-impact.ts +0 -181
- package/src/mcp-tools/context.ts +0 -111
- package/src/mcp-tools/cypher.ts +0 -29
- package/src/mcp-tools/detect-changes.ts +0 -116
- package/src/mcp-tools/explain.ts +0 -65
- package/src/mcp-tools/graph-query.ts +0 -128
- package/src/mcp-tools/group-list.ts +0 -88
- package/src/mcp-tools/group-query.ts +0 -26
- package/src/mcp-tools/group-sync.ts +0 -32
- package/src/mcp-tools/impact.ts +0 -202
- package/src/mcp-tools/index.ts +0 -21
- package/src/mcp-tools/list-repos.ts +0 -38
- package/src/mcp-tools/neighbors.ts +0 -80
- package/src/mcp-tools/query.ts +0 -86
- package/src/mcp-tools/rename.ts +0 -118
- package/src/mcp-tools/route-map.ts +0 -98
- package/src/mcp-tools/serve.ts +0 -41
- package/src/mcp-tools/shape-check.ts +0 -182
- package/src/mcp-tools/staleness.ts +0 -13
- package/src/mcp-tools/tool-map.ts +0 -66
- package/src/mcp-tools/wiki-build.ts +0 -37
- package/src/mcp-tools/wiki.ts +0 -28
- package/src/migrate/jscpd.ts +0 -78
- package/src/migrate/jsonc-gen.ts +0 -38
- package/src/migrate/knip.ts +0 -126
- package/src/migrate/toml-gen.ts +0 -48
- package/src/parsers/c.ts +0 -31
- package/src/parsers/cpp.ts +0 -29
- package/src/parsers/csharp.ts +0 -43
- package/src/parsers/dart.ts +0 -39
- package/src/parsers/extractor.ts +0 -202
- package/src/parsers/go.ts +0 -27
- package/src/parsers/java.ts +0 -27
- package/src/parsers/kotlin.ts +0 -36
- package/src/parsers/language-config.ts +0 -28
- package/src/parsers/language-parsers.ts +0 -120
- package/src/parsers/loader.ts +0 -149
- package/src/parsers/named-bindings.ts +0 -63
- package/src/parsers/php.ts +0 -37
- package/src/parsers/python.ts +0 -26
- package/src/parsers/ruby.ts +0 -39
- package/src/parsers/rust.ts +0 -25
- package/src/parsers/swift.ts +0 -28
- package/src/parsers/typescript.ts +0 -41
- package/src/parsers/vue.ts +0 -79
- package/src/pipeline/cluster-only.ts +0 -64
- package/src/pipeline/effort.ts +0 -50
- package/src/pipeline/orchestrator.ts +0 -384
- package/src/pipeline/phases/boundary.ts +0 -151
- package/src/pipeline/phases/bridge-adapters/electron-ipc.ts +0 -91
- package/src/pipeline/phases/bridge-adapters/registry.ts +0 -14
- package/src/pipeline/phases/bridge-adapters/tauri.ts +0 -103
- package/src/pipeline/phases/bridge-adapters/types.ts +0 -31
- package/src/pipeline/phases/bridge-adapters/wails.ts +0 -33
- package/src/pipeline/phases/bridge-resolver.ts +0 -77
- package/src/pipeline/phases/call-site-extractors.ts +0 -177
- package/src/pipeline/phases/communities.ts +0 -183
- package/src/pipeline/phases/contextual-proximity.ts +0 -88
- package/src/pipeline/phases/cross-file.ts +0 -116
- package/src/pipeline/phases/docs-parse.ts +0 -307
- package/src/pipeline/phases/evidence.ts +0 -9
- package/src/pipeline/phases/field-access.ts +0 -49
- package/src/pipeline/phases/framework-detect.ts +0 -109
- package/src/pipeline/phases/god-nodes.ts +0 -163
- package/src/pipeline/phases/import-resolver.ts +0 -114
- package/src/pipeline/phases/leiden.ts +0 -77
- package/src/pipeline/phases/llm-extract.ts +0 -178
- package/src/pipeline/phases/markdown.ts +0 -121
- package/src/pipeline/phases/middleware-extractor.ts +0 -127
- package/src/pipeline/phases/module-resolution.ts +0 -294
- package/src/pipeline/phases/mro.ts +0 -56
- package/src/pipeline/phases/orm.ts +0 -503
- package/src/pipeline/phases/parse.ts +0 -222
- package/src/pipeline/phases/pdf-parse.ts +0 -133
- package/src/pipeline/phases/processes.ts +0 -249
- package/src/pipeline/phases/re-export-propagation.ts +0 -160
- package/src/pipeline/phases/reachability.ts +0 -156
- package/src/pipeline/phases/routes.ts +0 -350
- package/src/pipeline/phases/scan.ts +0 -133
- package/src/pipeline/phases/scope-resolution.ts +0 -442
- package/src/pipeline/phases/structure.ts +0 -68
- package/src/pipeline/phases/suggest.ts +0 -92
- package/src/pipeline/phases/surprises.ts +0 -83
- package/src/pipeline/phases/tools.ts +0 -180
- package/src/pipeline/phases/variables-phase.ts +0 -37
- package/src/pipeline/phases/variables.ts +0 -67
- package/src/pipeline/phases/wildcard-phase.ts +0 -50
- package/src/pipeline/phases/wildcard-synthesis.ts +0 -214
- package/src/pipeline/progress.ts +0 -58
- package/src/pipeline/runner.ts +0 -88
- package/src/pipeline/types.ts +0 -41
- package/src/query/cypher-parser.ts +0 -450
- package/src/registry/repo-registry.ts +0 -125
- package/src/regression/baseline-deltas.ts +0 -215
- package/src/regression/baseline.ts +0 -76
- package/src/regression/counts.ts +0 -87
- package/src/regression/outcome.ts +0 -78
- package/src/regression/tolerance.ts +0 -35
- package/src/report/attributed-duplication.ts +0 -112
- package/src/report/badge-svg.ts +0 -100
- package/src/report/cross-ref-human.ts +0 -50
- package/src/report/duplication-grouping.ts +0 -74
- package/src/report/grouping.ts +0 -137
- package/src/report/human-check.ts +0 -291
- package/src/report/human-dupes.ts +0 -142
- package/src/report/human-health.ts +0 -195
- package/src/report/human.ts +0 -120
- package/src/report/json-actions.ts +0 -91
- package/src/report/json-builders.ts +0 -70
- package/src/report/json-schema.ts +0 -75
- package/src/report/number-format.ts +0 -91
- package/src/report/output-grouped.ts +0 -102
- package/src/report/pipeline-perf.ts +0 -56
- package/src/report/trace-human.ts +0 -127
- package/src/reporting/graph-report.ts +0 -431
- package/src/results/fallow-results.ts +0 -152
- package/src/results/types.ts +0 -149
- package/src/scope-resolution/evidence-weights.ts +0 -41
- package/src/search/ast-chunker.ts +0 -206
- package/src/search/diacritic.ts +0 -7
- package/src/search/hybrid-query.ts +0 -65
- package/src/search/rrf.ts +0 -51
- package/src/security/safe-fetch.ts +0 -113
- package/src/security/sensitive-files.ts +0 -24
- package/src/skills/platform-skills.ts +0 -233
- package/src/staleness/git-staleness.ts +0 -66
- package/src/storage/db.ts +0 -110
- package/src/storage/edge-store.ts +0 -103
- package/src/storage/file-cache.ts +0 -78
- package/src/storage/fts-store.ts +0 -385
- package/src/storage/node-store.ts +0 -209
- package/src/storage/schema.ts +0 -171
- package/src/storage/suppressions.ts +0 -145
- package/src/storage/unlinked-refs.ts +0 -117
- package/src/types.ts +0 -197
- package/src/validation/extraction-validator.ts +0 -54
- package/src/watch/watcher.ts +0 -160
- package/src/web/analyze-api.ts +0 -146
- package/src/web/api.ts +0 -584
- package/src/web/async-jobs.ts +0 -109
- package/src/web/mcp-http.ts +0 -227
- package/src/web/react-ui.ts +0 -78
- package/src/web/server.ts +0 -90
- package/src/web/ui/index.html +0 -204
- package/src/wiki/gist-publisher.ts +0 -76
- package/src/wiki/prompt-builder.ts +0 -35
- package/src/wiki/providers.ts +0 -134
- package/src/wiki/wiki-generator.ts +0 -223
- package/src/wiki/wiki-store.ts +0 -49
- package/tsconfig.json +0 -11
- package/vitest.config.ts +0 -20
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
import { dirname, resolve, basename } from 'path';
|
|
2
|
-
import type { MonographNode, MonographEdge } from '../../types.js';
|
|
3
|
-
import { makeId, CONFIDENCE_SCORE } from '../../types.js';
|
|
4
|
-
|
|
5
|
-
// ── Types ─────────────────────────────────────────────────────────────────────
|
|
6
|
-
|
|
7
|
-
export interface WildcardBinding {
|
|
8
|
-
/** The namespace alias, e.g. `X` in `import * as X from './module'` */
|
|
9
|
-
alias: string;
|
|
10
|
-
/** The module specifier, e.g. `./module` */
|
|
11
|
-
moduleSpecifier: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface WildcardMemberAccess {
|
|
15
|
-
alias: string;
|
|
16
|
-
member: string;
|
|
17
|
-
line: number;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface WildcardSynthesisResult {
|
|
21
|
-
/** New edges synthesized from wildcard member accesses */
|
|
22
|
-
synthesizedEdges: MonographEdge[];
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// ── Regex patterns ────────────────────────────────────────────────────────────
|
|
26
|
-
|
|
27
|
-
/** Matches: import * as X from './path' or import * as X from "../path" */
|
|
28
|
-
const WILDCARD_IMPORT_RE = /import\s+\*\s+as\s+(\w+)\s+from\s+['"]([^'"]+)['"]/g;
|
|
29
|
-
|
|
30
|
-
// ── Core functions ────────────────────────────────────────────────────────────
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Extracts all wildcard import bindings from a TypeScript/JavaScript source file.
|
|
34
|
-
*
|
|
35
|
-
* @param source - Raw source code content
|
|
36
|
-
* @returns Array of wildcard bindings found in the source
|
|
37
|
-
*/
|
|
38
|
-
export function extractWildcardBindings(source: string): WildcardBinding[] {
|
|
39
|
-
const results: WildcardBinding[] = [];
|
|
40
|
-
WILDCARD_IMPORT_RE.lastIndex = 0;
|
|
41
|
-
|
|
42
|
-
let match: RegExpExecArray | null;
|
|
43
|
-
while ((match = WILDCARD_IMPORT_RE.exec(source)) !== null) {
|
|
44
|
-
results.push({ alias: match[1], moduleSpecifier: match[2] });
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return results;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Extracts all member accesses for a given namespace alias from source code.
|
|
52
|
-
* e.g. for alias `ns`, detects `ns.foo`, `ns.bar`, etc.
|
|
53
|
-
*
|
|
54
|
-
* @param source - Raw source code content
|
|
55
|
-
* @param alias - The namespace alias to scan for
|
|
56
|
-
* @returns Array of member accesses with line numbers
|
|
57
|
-
*/
|
|
58
|
-
export function extractWildcardMemberAccesses(
|
|
59
|
-
source: string,
|
|
60
|
-
alias: string,
|
|
61
|
-
): WildcardMemberAccess[] {
|
|
62
|
-
const results: WildcardMemberAccess[] = [];
|
|
63
|
-
const memberRe = new RegExp(`\\b${alias}\\.(\\w+)`, 'g');
|
|
64
|
-
const lines = source.split('\n');
|
|
65
|
-
|
|
66
|
-
for (let i = 0; i < lines.length; i++) {
|
|
67
|
-
const line = lines[i];
|
|
68
|
-
memberRe.lastIndex = 0;
|
|
69
|
-
let m: RegExpExecArray | null;
|
|
70
|
-
const seen = new Set<string>();
|
|
71
|
-
while ((m = memberRe.exec(line)) !== null) {
|
|
72
|
-
const member = m[1];
|
|
73
|
-
if (!seen.has(member)) {
|
|
74
|
-
seen.add(member);
|
|
75
|
-
results.push({ alias, member, line: i + 1 });
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
return results;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Resolve a relative module specifier to an absolute file path (without extension).
|
|
85
|
-
* Returns null when `sourceFilePath` is unavailable or the specifier is non-relative.
|
|
86
|
-
*/
|
|
87
|
-
function resolveSpecifierPath(
|
|
88
|
-
sourceFilePath: string | undefined | null,
|
|
89
|
-
moduleSpecifier: string,
|
|
90
|
-
): string | null {
|
|
91
|
-
if (!sourceFilePath) return null;
|
|
92
|
-
if (!moduleSpecifier.startsWith('.')) return null;
|
|
93
|
-
const dir = dirname(sourceFilePath);
|
|
94
|
-
const resolved = resolve(dir, moduleSpecifier);
|
|
95
|
-
// Strip extension so we can match .ts, .js, .tsx, .mjs, etc.
|
|
96
|
-
return resolved.replace(/\.[^./\\]+$/, '');
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Return true when a candidate file path matches the resolved specifier path.
|
|
101
|
-
*
|
|
102
|
-
* Handles:
|
|
103
|
-
* - Exact basename-without-extension match (resolvedPath is a bare module path)
|
|
104
|
-
* - Index file: `resolvedPath/index` matches `candidatePath` ending in `/index.<ext>`
|
|
105
|
-
*/
|
|
106
|
-
function specifierMatchesFilePath(
|
|
107
|
-
resolvedPath: string,
|
|
108
|
-
candidateFilePath: string,
|
|
109
|
-
): boolean {
|
|
110
|
-
// Strip extension from candidate for comparison
|
|
111
|
-
const candidateBase = candidateFilePath.replace(/\.[^./\\]+$/, '');
|
|
112
|
-
if (candidateBase === resolvedPath) return true;
|
|
113
|
-
// Handle implicit /index
|
|
114
|
-
if (candidateBase === resolvedPath + '/index') return true;
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Synthesizes direct symbol edges from wildcard namespace member accesses.
|
|
120
|
-
*
|
|
121
|
-
* Given source code that has `import * as X from './module'` and uses `X.foo`,
|
|
122
|
-
* this function creates IMPORTS edges from the source file node to the `foo`
|
|
123
|
-
* export node in `./module`.
|
|
124
|
-
*
|
|
125
|
-
* @param sourceFileId - The node ID of the file containing the wildcard import
|
|
126
|
-
* @param source - Raw source code of the file
|
|
127
|
-
* @param nodes - All known nodes in the graph
|
|
128
|
-
* @param edges - All known edges (used to avoid duplicates)
|
|
129
|
-
* @returns Synthesized edges that directly link callers to target exports
|
|
130
|
-
*/
|
|
131
|
-
export function synthesizeWildcardImports(
|
|
132
|
-
sourceFileId: string,
|
|
133
|
-
source: string,
|
|
134
|
-
nodes: MonographNode[],
|
|
135
|
-
edges: MonographEdge[],
|
|
136
|
-
): WildcardSynthesisResult {
|
|
137
|
-
const bindings = extractWildcardBindings(source);
|
|
138
|
-
if (bindings.length === 0) return { synthesizedEdges: [] };
|
|
139
|
-
|
|
140
|
-
// Build an index of existing edge IDs to avoid duplicates
|
|
141
|
-
const existingEdgeIds = new Set(edges.map(e => e.id));
|
|
142
|
-
|
|
143
|
-
// Build id→node map for path-based filtering and name→nodes index
|
|
144
|
-
const nodeById = new Map<string, MonographNode>(nodes.map(n => [n.id, n]));
|
|
145
|
-
const sourceNode = nodeById.get(sourceFileId);
|
|
146
|
-
|
|
147
|
-
// Build a name→node[] index restricted to exported nodes
|
|
148
|
-
const nameIndex = new Map<string, MonographNode[]>();
|
|
149
|
-
for (const node of nodes) {
|
|
150
|
-
if (!node.isExported) continue;
|
|
151
|
-
const existing = nameIndex.get(node.name) ?? [];
|
|
152
|
-
existing.push(node);
|
|
153
|
-
nameIndex.set(node.name, existing);
|
|
154
|
-
// Also index by normLabel if different
|
|
155
|
-
if (node.normLabel && node.normLabel !== node.name) {
|
|
156
|
-
const byNorm = nameIndex.get(node.normLabel) ?? [];
|
|
157
|
-
byNorm.push(node);
|
|
158
|
-
nameIndex.set(node.normLabel, byNorm);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
const synthesizedEdges: MonographEdge[] = [];
|
|
163
|
-
|
|
164
|
-
for (const binding of bindings) {
|
|
165
|
-
// Resolve the module specifier to an absolute path (extension-stripped)
|
|
166
|
-
const resolvedPath = resolveSpecifierPath(sourceNode?.filePath, binding.moduleSpecifier);
|
|
167
|
-
|
|
168
|
-
// Basename of the specifier for fallback matching
|
|
169
|
-
const specBase = basename(binding.moduleSpecifier).replace(/\.[^.]+$/, '').toLowerCase();
|
|
170
|
-
|
|
171
|
-
const accesses = extractWildcardMemberAccesses(source, binding.alias);
|
|
172
|
-
|
|
173
|
-
for (const access of accesses) {
|
|
174
|
-
const candidateNodes: MonographNode[] =
|
|
175
|
-
nameIndex.get(access.member) ?? nameIndex.get(access.member.toLowerCase()) ?? [];
|
|
176
|
-
|
|
177
|
-
// Filter candidates to only those belonging to the target module
|
|
178
|
-
let filtered: MonographNode[];
|
|
179
|
-
if (resolvedPath !== null) {
|
|
180
|
-
// Strong filter: match by resolved absolute path
|
|
181
|
-
filtered = candidateNodes.filter(
|
|
182
|
-
n => n.filePath != null && specifierMatchesFilePath(resolvedPath, n.filePath),
|
|
183
|
-
);
|
|
184
|
-
} else {
|
|
185
|
-
// Fallback: match by basename (mirrors cross-file.ts resolution)
|
|
186
|
-
filtered = candidateNodes.filter(
|
|
187
|
-
n => n.filePath != null &&
|
|
188
|
-
basename(n.filePath).replace(/\.[^.]+$/, '').toLowerCase() === specBase,
|
|
189
|
-
);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// If still no match with basename fallback, skip — no cross-module edge
|
|
193
|
-
if (filtered.length === 0) continue;
|
|
194
|
-
|
|
195
|
-
for (const target of filtered) {
|
|
196
|
-
const edgeId = makeId(sourceFileId, target.id, 'wildcard', access.member);
|
|
197
|
-
if (existingEdgeIds.has(edgeId)) continue;
|
|
198
|
-
|
|
199
|
-
synthesizedEdges.push({
|
|
200
|
-
id: edgeId,
|
|
201
|
-
sourceId: sourceFileId,
|
|
202
|
-
targetId: target.id,
|
|
203
|
-
relation: 'IMPORTS',
|
|
204
|
-
confidence: 'INFERRED',
|
|
205
|
-
confidenceScore: CONFIDENCE_SCORE.INFERRED,
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
existingEdgeIds.add(edgeId);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
return { synthesizedEdges };
|
|
214
|
-
}
|
package/src/pipeline/progress.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
export type ProgressPhase =
|
|
2
|
-
| 'discovery' | 'parse' | 'churn' | 'complexity'
|
|
3
|
-
| 'duplication' | 'scoring' | 'render' | 'complete';
|
|
4
|
-
|
|
5
|
-
export interface ProgressEvent {
|
|
6
|
-
phase: ProgressPhase;
|
|
7
|
-
filesProcessed?: number;
|
|
8
|
-
totalFiles?: number;
|
|
9
|
-
message?: string;
|
|
10
|
-
elapsedMs?: number;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export type ProgressCallback = (event: ProgressEvent) => void;
|
|
14
|
-
|
|
15
|
-
export class ProgressReporter {
|
|
16
|
-
private callbacks: ProgressCallback[] = [];
|
|
17
|
-
private startTime = Date.now();
|
|
18
|
-
private counts = new Map<ProgressPhase, number>();
|
|
19
|
-
|
|
20
|
-
subscribe(cb: ProgressCallback): () => void {
|
|
21
|
-
this.callbacks.push(cb);
|
|
22
|
-
return () => {
|
|
23
|
-
const idx = this.callbacks.indexOf(cb);
|
|
24
|
-
if (idx !== -1) this.callbacks.splice(idx, 1);
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
emit(phase: ProgressPhase, opts?: Omit<ProgressEvent, 'phase' | 'elapsedMs'>): void {
|
|
29
|
-
const event: ProgressEvent = {
|
|
30
|
-
phase,
|
|
31
|
-
elapsedMs: Date.now() - this.startTime,
|
|
32
|
-
...opts,
|
|
33
|
-
};
|
|
34
|
-
for (const cb of this.callbacks) {
|
|
35
|
-
try { cb(event); } catch { /* don't let progress errors crash the pipeline */ }
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
increment(phase: ProgressPhase): void {
|
|
40
|
-
this.counts.set(phase, (this.counts.get(phase) ?? 0) + 1);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
getCount(phase: ProgressPhase): number {
|
|
44
|
-
return this.counts.get(phase) ?? 0;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export function consoleProgressReporter(enabled: boolean): ProgressCallback {
|
|
49
|
-
return (event) => {
|
|
50
|
-
if (!enabled) return;
|
|
51
|
-
const pct = event.totalFiles && event.filesProcessed
|
|
52
|
-
? ` (${Math.round(event.filesProcessed / event.totalFiles * 100)}%)`
|
|
53
|
-
: '';
|
|
54
|
-
const msg = event.message ?? `phase: ${event.phase}`;
|
|
55
|
-
process.stderr.write(`\r ${msg}${pct} `);
|
|
56
|
-
if (event.phase === 'complete') process.stderr.write('\n');
|
|
57
|
-
};
|
|
58
|
-
}
|
package/src/pipeline/runner.ts
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import type { PipelinePhase, PipelineContext } from './types.js';
|
|
2
|
-
import { MonographError } from '../types.js';
|
|
3
|
-
|
|
4
|
-
export class PipelineRunner {
|
|
5
|
-
private readonly phases: PipelinePhase<unknown>[];
|
|
6
|
-
/** Topo-sorted phase names, computed once in constructor for O(1) phase map lookups. */
|
|
7
|
-
private readonly sortedNames: string[];
|
|
8
|
-
/** O(1) phase lookup by name. */
|
|
9
|
-
private readonly phaseMap: Map<string, PipelinePhase<unknown>>;
|
|
10
|
-
|
|
11
|
-
constructor(phases: PipelinePhase<unknown>[]) {
|
|
12
|
-
this.phases = phases;
|
|
13
|
-
this.sortedNames = topoSort(phases);
|
|
14
|
-
this.phaseMap = new Map(phases.map(p => [p.name, p]));
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
async run(ctx: PipelineContext): Promise<Map<string, unknown>> {
|
|
18
|
-
const outputs = new Map<string, unknown>();
|
|
19
|
-
|
|
20
|
-
// Lazily-created promise per phase — ensures dep promises exist before they are awaited
|
|
21
|
-
const promises = new Map<string, Promise<void>>();
|
|
22
|
-
|
|
23
|
-
const getOrCreatePromise = (name: string): Promise<void> => {
|
|
24
|
-
if (promises.has(name)) return promises.get(name)!;
|
|
25
|
-
const phase = this.phaseMap.get(name)!;
|
|
26
|
-
const p = (async () => {
|
|
27
|
-
// Wait for all dep phases to finish
|
|
28
|
-
await Promise.all(phase.deps.map(dep => getOrCreatePromise(dep)));
|
|
29
|
-
ctx.onProgress?.({ phase: phase.name });
|
|
30
|
-
try {
|
|
31
|
-
const output = await phase.execute(ctx, outputs);
|
|
32
|
-
outputs.set(phase.name, output);
|
|
33
|
-
} catch (err) {
|
|
34
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
35
|
-
throw new MonographError(`Phase '${phase.name}' failed: ${msg}`);
|
|
36
|
-
}
|
|
37
|
-
})();
|
|
38
|
-
promises.set(name, p);
|
|
39
|
-
return p;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
// Use allSettled so every in-flight phase completes before we return.
|
|
43
|
-
// This ensures the DB is not closed while phases are still writing to it,
|
|
44
|
-
// which would otherwise cause unhandled rejections that hang the process.
|
|
45
|
-
const results = await Promise.allSettled(this.sortedNames.map(name => getOrCreatePromise(name)));
|
|
46
|
-
const failed = results.find(r => r.status === 'rejected') as PromiseRejectedResult | undefined;
|
|
47
|
-
if (failed) throw failed.reason;
|
|
48
|
-
return outputs;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function topoSort(phases: PipelinePhase<unknown>[]): string[] {
|
|
53
|
-
const names = new Set(phases.map(p => p.name));
|
|
54
|
-
const inDegree = new Map<string, number>();
|
|
55
|
-
const adjList = new Map<string, string[]>();
|
|
56
|
-
|
|
57
|
-
for (const p of phases) {
|
|
58
|
-
inDegree.set(p.name, p.deps.length);
|
|
59
|
-
for (const dep of p.deps) {
|
|
60
|
-
if (!names.has(dep)) {
|
|
61
|
-
throw new MonographError(`Phase '${p.name}' depends on unknown phase '${dep}'`);
|
|
62
|
-
}
|
|
63
|
-
const adj = adjList.get(dep) ?? [];
|
|
64
|
-
adj.push(p.name);
|
|
65
|
-
adjList.set(dep, adj);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const queue = phases.filter(p => (inDegree.get(p.name) ?? 0) === 0).map(p => p.name);
|
|
70
|
-
const result: string[] = [];
|
|
71
|
-
|
|
72
|
-
while (queue.length) {
|
|
73
|
-
const name = queue.shift()!;
|
|
74
|
-
result.push(name);
|
|
75
|
-
for (const next of (adjList.get(name) ?? [])) {
|
|
76
|
-
const deg = (inDegree.get(next) ?? 0) - 1;
|
|
77
|
-
inDegree.set(next, deg);
|
|
78
|
-
if (deg === 0) queue.push(next);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (result.length !== phases.length) {
|
|
83
|
-
throw new MonographError('Cycle detected in pipeline phase graph');
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return result;
|
|
87
|
-
}
|
|
88
|
-
|
package/src/pipeline/types.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { MonographDb } from '../storage/db.js';
|
|
2
|
-
import type { PipelineProgress } from '../types.js';
|
|
3
|
-
import type Graph from 'graphology';
|
|
4
|
-
|
|
5
|
-
export interface PipelineContext {
|
|
6
|
-
repoPath: string;
|
|
7
|
-
db: MonographDb;
|
|
8
|
-
graph: Graph;
|
|
9
|
-
onProgress: (p: PipelineProgress) => void;
|
|
10
|
-
options: PipelineOptions;
|
|
11
|
-
/** Set by parse phase when all files hit the extraction cache (0 misses). */
|
|
12
|
-
allFilesCached?: boolean;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface PipelineOptions {
|
|
16
|
-
codeOnly: boolean;
|
|
17
|
-
maxFileSizeBytes: number;
|
|
18
|
-
workerPoolThreshold: number;
|
|
19
|
-
workerChunkBudgetBytes: number;
|
|
20
|
-
ignore: string[];
|
|
21
|
-
/** Max Section nodes to submit to LLM extraction (0 = disabled). Default 0. */
|
|
22
|
-
llmMaxSections: number;
|
|
23
|
-
/** When true, bypass the on-disk extraction cache entirely and re-parse every file from scratch. Default false. */
|
|
24
|
-
force?: boolean;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export const DEFAULT_OPTIONS: PipelineOptions = {
|
|
28
|
-
codeOnly: false,
|
|
29
|
-
maxFileSizeBytes: 524288,
|
|
30
|
-
workerPoolThreshold: 15,
|
|
31
|
-
workerChunkBudgetBytes: 20971520,
|
|
32
|
-
ignore: [],
|
|
33
|
-
llmMaxSections: 0,
|
|
34
|
-
force: false,
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export interface PipelinePhase<TOutput> {
|
|
38
|
-
name: string;
|
|
39
|
-
deps: string[];
|
|
40
|
-
execute(ctx: PipelineContext, depOutputs: Map<string, unknown>): Promise<TOutput>;
|
|
41
|
-
}
|