@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,35 +0,0 @@
|
|
|
1
|
-
export interface CommunityContext {
|
|
2
|
-
communityId: string;
|
|
3
|
-
label: string;
|
|
4
|
-
topSymbols: { name: string; label: string; filePath: string | null }[];
|
|
5
|
-
incomingCount: number;
|
|
6
|
-
outgoingCount: number;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Build an LLM prompt for generating a wiki page about a code community.
|
|
11
|
-
*/
|
|
12
|
-
export function buildWikiPrompt(context: CommunityContext): string {
|
|
13
|
-
const symbolLines = context.topSymbols
|
|
14
|
-
.map(s => ` - [${s.label}] ${s.name}${s.filePath ? ` (${s.filePath})` : ''}`)
|
|
15
|
-
.join('\n');
|
|
16
|
-
|
|
17
|
-
return `You are a technical documentation writer. Write a concise markdown wiki page for the following code module (community).
|
|
18
|
-
|
|
19
|
-
Community ID: ${context.communityId}
|
|
20
|
-
Module Name: ${context.label}
|
|
21
|
-
Incoming Dependencies: ${context.incomingCount} (other modules that depend on this one)
|
|
22
|
-
Outgoing Dependencies: ${context.outgoingCount} (modules this one depends on)
|
|
23
|
-
|
|
24
|
-
Top Symbols:
|
|
25
|
-
${symbolLines || ' (none)'}
|
|
26
|
-
|
|
27
|
-
Write a wiki page that includes:
|
|
28
|
-
1. A brief description of what this module does
|
|
29
|
-
2. The key entry points and their purpose
|
|
30
|
-
3. What this module depends on and what depends on it
|
|
31
|
-
4. Any notable architectural patterns observed
|
|
32
|
-
|
|
33
|
-
Format the output as markdown with a top-level heading using the module name.
|
|
34
|
-
Be concise but informative. Focus on the role this module plays in the overall system.`;
|
|
35
|
-
}
|
package/src/wiki/providers.ts
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
export type LLMProvider = 'anthropic' | 'openai' | 'ollama';
|
|
2
|
-
|
|
3
|
-
export interface LLMConfig {
|
|
4
|
-
provider: LLMProvider;
|
|
5
|
-
model?: string; // e.g. "claude-3-haiku-20240307", "gpt-4o-mini", "mistral"
|
|
6
|
-
apiKey?: string; // read from env if not provided
|
|
7
|
-
baseUrl?: string; // for ollama: "http://localhost:11434"
|
|
8
|
-
maxTokens?: number; // default 2048
|
|
9
|
-
temperature?: number; // default 0.2
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface LLMResponse {
|
|
13
|
-
text: string;
|
|
14
|
-
inputTokens?: number;
|
|
15
|
-
outputTokens?: number;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const REASONING_MODELS = new Set(['o1', 'o1-mini', 'o1-preview', 'o3', 'o3-mini', 'o4-mini']);
|
|
19
|
-
|
|
20
|
-
function isReasoningModel(model: string): boolean {
|
|
21
|
-
return REASONING_MODELS.has(model) || /^o\d+(-mini|-preview)?$/.test(model);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Call an LLM provider with the given prompt and configuration.
|
|
26
|
-
* Supports anthropic, openai, and ollama providers.
|
|
27
|
-
*/
|
|
28
|
-
export async function callLLM(prompt: string, config: LLMConfig): Promise<LLMResponse> {
|
|
29
|
-
const controller = new AbortController();
|
|
30
|
-
const timeoutId = setTimeout(() => controller.abort(), 30_000);
|
|
31
|
-
|
|
32
|
-
try {
|
|
33
|
-
switch (config.provider) {
|
|
34
|
-
case 'anthropic':
|
|
35
|
-
return await callAnthropic(prompt, config, controller.signal);
|
|
36
|
-
case 'openai':
|
|
37
|
-
return await callOpenAI(prompt, config, controller.signal);
|
|
38
|
-
case 'ollama':
|
|
39
|
-
return await callOllama(prompt, config, controller.signal);
|
|
40
|
-
default: {
|
|
41
|
-
const _exhaustive: never = config.provider;
|
|
42
|
-
throw new Error(`Unknown LLM provider: ${_exhaustive}`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
} finally {
|
|
46
|
-
clearTimeout(timeoutId);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async function callAnthropic(
|
|
51
|
-
prompt: string,
|
|
52
|
-
_config: LLMConfig,
|
|
53
|
-
_signal: AbortSignal,
|
|
54
|
-
): Promise<LLMResponse> {
|
|
55
|
-
// Route through Claude Code CLI — reuses host auth, no API key needed.
|
|
56
|
-
const { claudeCliCall } = await import('../claude-cli.js');
|
|
57
|
-
const text = await claudeCliCall(prompt);
|
|
58
|
-
return { text };
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
async function callOpenAI(
|
|
62
|
-
prompt: string,
|
|
63
|
-
config: LLMConfig,
|
|
64
|
-
signal: AbortSignal,
|
|
65
|
-
): Promise<LLMResponse> {
|
|
66
|
-
const apiKey = config.apiKey ?? process.env['OPENAI_API_KEY'];
|
|
67
|
-
const response = await fetch('https://api.openai.com/v1/chat/completions', {
|
|
68
|
-
method: 'POST',
|
|
69
|
-
signal,
|
|
70
|
-
headers: {
|
|
71
|
-
'Authorization': `Bearer ${apiKey ?? ''}`,
|
|
72
|
-
'content-type': 'application/json',
|
|
73
|
-
},
|
|
74
|
-
body: (() => {
|
|
75
|
-
const reasoning = isReasoningModel(config.model ?? '');
|
|
76
|
-
const bodyObj: Record<string, unknown> = {
|
|
77
|
-
model: config.model ?? 'gpt-4o-mini',
|
|
78
|
-
messages: [{ role: 'user', content: prompt }],
|
|
79
|
-
};
|
|
80
|
-
if (reasoning) {
|
|
81
|
-
bodyObj['max_completion_tokens'] = config.maxTokens ?? 2048;
|
|
82
|
-
} else {
|
|
83
|
-
bodyObj['max_tokens'] = config.maxTokens ?? 2048;
|
|
84
|
-
bodyObj['temperature'] = config.temperature ?? 0.2;
|
|
85
|
-
}
|
|
86
|
-
return JSON.stringify(bodyObj);
|
|
87
|
-
})(),
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
if (!response.ok) {
|
|
91
|
-
throw new Error(`LLM provider openai error: ${response.status} ${response.statusText}`);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const data = await response.json() as {
|
|
95
|
-
choices: Array<{ message: { content: string } }>;
|
|
96
|
-
usage: { prompt_tokens: number; completion_tokens: number };
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
return {
|
|
100
|
-
text: data.choices[0].message.content,
|
|
101
|
-
inputTokens: data.usage.prompt_tokens,
|
|
102
|
-
outputTokens: data.usage.completion_tokens,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
async function callOllama(
|
|
107
|
-
prompt: string,
|
|
108
|
-
config: LLMConfig,
|
|
109
|
-
signal: AbortSignal,
|
|
110
|
-
): Promise<LLMResponse> {
|
|
111
|
-
const baseUrl = config.baseUrl ?? 'http://localhost:11434';
|
|
112
|
-
const response = await fetch(`${baseUrl}/api/generate`, {
|
|
113
|
-
method: 'POST',
|
|
114
|
-
signal,
|
|
115
|
-
headers: {
|
|
116
|
-
'content-type': 'application/json',
|
|
117
|
-
},
|
|
118
|
-
body: JSON.stringify({
|
|
119
|
-
model: config.model ?? 'mistral',
|
|
120
|
-
prompt,
|
|
121
|
-
stream: false,
|
|
122
|
-
}),
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
if (!response.ok) {
|
|
126
|
-
throw new Error(`LLM provider ollama error: ${response.status} ${response.statusText}`);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const data = await response.json() as { response: string };
|
|
130
|
-
|
|
131
|
-
return {
|
|
132
|
-
text: data.response,
|
|
133
|
-
};
|
|
134
|
-
}
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
import type { MonographDb } from '../storage/db.js';
|
|
2
|
-
import { buildWikiPrompt } from './prompt-builder.js';
|
|
3
|
-
import { upsertWikiPage, getWikiPage, listWikiPages } from './wiki-store.js';
|
|
4
|
-
import { callLLM, type LLMConfig } from './providers.js';
|
|
5
|
-
|
|
6
|
-
export type { LLMConfig } from './providers.js';
|
|
7
|
-
export type { LLMProvider, LLMResponse } from './providers.js';
|
|
8
|
-
|
|
9
|
-
export interface WikiGeneratorOptions {
|
|
10
|
-
repoPath: string;
|
|
11
|
-
reviewOnly?: boolean;
|
|
12
|
-
db?: MonographDb;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface WikiGeneratorResult {
|
|
16
|
-
reviewMode?: boolean;
|
|
17
|
-
proposedGroupings?: unknown[];
|
|
18
|
-
pages: string[];
|
|
19
|
-
pageCount: number;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Top-level wiki generation entry point.
|
|
24
|
-
* When reviewOnly is true, returns proposed community groupings without generating pages.
|
|
25
|
-
*/
|
|
26
|
-
export async function generateWiki(options: WikiGeneratorOptions): Promise<WikiGeneratorResult> {
|
|
27
|
-
const db = options.db;
|
|
28
|
-
|
|
29
|
-
// Collect community groupings from DB (if available)
|
|
30
|
-
let groupings: unknown[] = [];
|
|
31
|
-
if (db) {
|
|
32
|
-
try {
|
|
33
|
-
const rows = db.prepare('SELECT DISTINCT community_id FROM nodes WHERE community_id IS NOT NULL').all();
|
|
34
|
-
groupings = rows as unknown[];
|
|
35
|
-
} catch {
|
|
36
|
-
groupings = [];
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (options.reviewOnly) {
|
|
41
|
-
return {
|
|
42
|
-
reviewMode: true,
|
|
43
|
-
proposedGroupings: groupings,
|
|
44
|
-
pages: [],
|
|
45
|
-
pageCount: 0,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Full generation path
|
|
50
|
-
if (!db) {
|
|
51
|
-
return { pages: [], pageCount: 0 };
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const result = await generateAllWikiPages(db);
|
|
55
|
-
return {
|
|
56
|
-
pages: [],
|
|
57
|
-
pageCount: result.generated,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export interface LlmClient {
|
|
62
|
-
generate: (prompt: string) => Promise<string>;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export interface GenerateWikiPageOptions {
|
|
66
|
-
model?: string;
|
|
67
|
-
apiKey?: string;
|
|
68
|
-
/** Inject a test client instead of calling Anthropic API */
|
|
69
|
-
llmClient?: LlmClient;
|
|
70
|
-
/** Use a multi-provider LLM config instead of the default Anthropic SDK */
|
|
71
|
-
llmConfig?: LLMConfig;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export interface GenerateAllWikiPagesOptions {
|
|
75
|
-
force?: boolean;
|
|
76
|
-
model?: string;
|
|
77
|
-
communityId?: string;
|
|
78
|
-
llmClient?: LlmClient;
|
|
79
|
-
/** Use a multi-provider LLM config instead of the default Anthropic SDK */
|
|
80
|
-
llmConfig?: LLMConfig;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export interface GenerateAllResult {
|
|
84
|
-
generated: number;
|
|
85
|
-
skipped: number;
|
|
86
|
-
errors: number;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Generate a wiki page for a single community using the LLM.
|
|
91
|
-
* Returns the generated markdown content and persists it to the DB.
|
|
92
|
-
*/
|
|
93
|
-
export async function generateWikiPage(
|
|
94
|
-
db: MonographDb,
|
|
95
|
-
communityId: string,
|
|
96
|
-
options?: GenerateWikiPageOptions,
|
|
97
|
-
): Promise<string> {
|
|
98
|
-
const communityIdStr = String(communityId);
|
|
99
|
-
|
|
100
|
-
// 1. Get community label
|
|
101
|
-
const commRow = db.prepare('SELECT id, label FROM communities WHERE id = ?')
|
|
102
|
-
.get(Number(communityIdStr)) as { id: number; label: string | null } | undefined;
|
|
103
|
-
const label = commRow?.label ?? `Community ${communityIdStr}`;
|
|
104
|
-
|
|
105
|
-
// 2. Get top 5 symbols by degree (count of connected edges, since no centrality column)
|
|
106
|
-
const symbolRows = db.prepare(`
|
|
107
|
-
SELECT n.name, n.label, n.file_path
|
|
108
|
-
FROM nodes n
|
|
109
|
-
LEFT JOIN (
|
|
110
|
-
SELECT node_id, SUM(cnt) AS deg FROM (
|
|
111
|
-
SELECT source_id AS node_id, COUNT(*) AS cnt FROM edges GROUP BY source_id
|
|
112
|
-
UNION ALL
|
|
113
|
-
SELECT target_id AS node_id, COUNT(*) AS cnt FROM edges GROUP BY target_id
|
|
114
|
-
) GROUP BY node_id
|
|
115
|
-
) d ON d.node_id = n.id
|
|
116
|
-
WHERE n.community_id = ?
|
|
117
|
-
ORDER BY d.deg DESC NULLS LAST, n.name ASC
|
|
118
|
-
LIMIT 5
|
|
119
|
-
`).all(Number(communityIdStr)) as { name: string; label: string; file_path: string | null }[];
|
|
120
|
-
|
|
121
|
-
// 3. Count incoming edges to community (edges whose target is in this community)
|
|
122
|
-
const incomingRow = db.prepare(`
|
|
123
|
-
SELECT COUNT(*) AS cnt FROM edges
|
|
124
|
-
WHERE target_id IN (SELECT id FROM nodes WHERE community_id = ?)
|
|
125
|
-
`).get(Number(communityIdStr)) as { cnt: number };
|
|
126
|
-
|
|
127
|
-
// 4. Count outgoing edges from community (edges whose source is in this community)
|
|
128
|
-
const outgoingRow = db.prepare(`
|
|
129
|
-
SELECT COUNT(*) AS cnt FROM edges
|
|
130
|
-
WHERE source_id IN (SELECT id FROM nodes WHERE community_id = ?)
|
|
131
|
-
`).get(Number(communityIdStr)) as { cnt: number };
|
|
132
|
-
|
|
133
|
-
// 5. Build prompt
|
|
134
|
-
const prompt = buildWikiPrompt({
|
|
135
|
-
communityId: communityIdStr,
|
|
136
|
-
label,
|
|
137
|
-
topSymbols: symbolRows.map(r => ({ name: r.name, label: r.label, filePath: r.file_path })),
|
|
138
|
-
incomingCount: incomingRow.cnt,
|
|
139
|
-
outgoingCount: outgoingRow.cnt,
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
// 6. Call LLM (injected client, multi-provider config, or Anthropic SDK)
|
|
143
|
-
let content: string;
|
|
144
|
-
|
|
145
|
-
if (options?.llmClient) {
|
|
146
|
-
content = await options.llmClient.generate(prompt);
|
|
147
|
-
} else if (options?.llmConfig) {
|
|
148
|
-
const result = await callLLM(prompt, options.llmConfig);
|
|
149
|
-
content = result.text;
|
|
150
|
-
} else {
|
|
151
|
-
const { claudeCliCall, isClaudeCliAvailable } = await import('../claude-cli.js');
|
|
152
|
-
if (!isClaudeCliAvailable()) {
|
|
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
|
-
);
|
|
160
|
-
}
|
|
161
|
-
content = await claudeCliCall(prompt);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// 7. Persist to DB — prepend OKF frontmatter if not already present
|
|
165
|
-
if (!content.startsWith('---')) {
|
|
166
|
-
const safeLabel = label.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
167
|
-
content = `---\ntype: Code Community Wiki\ntitle: "${safeLabel}"\ntags: [monograph, wiki]\ntimestamp: ${new Date().toISOString()}\n---\n\n${content}`;
|
|
168
|
-
}
|
|
169
|
-
upsertWikiPage(db, communityIdStr, content);
|
|
170
|
-
|
|
171
|
-
return content;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Generate wiki pages for all (or a filtered) communities.
|
|
176
|
-
*/
|
|
177
|
-
export async function generateAllWikiPages(
|
|
178
|
-
db: MonographDb,
|
|
179
|
-
options?: GenerateAllWikiPagesOptions,
|
|
180
|
-
): Promise<GenerateAllResult> {
|
|
181
|
-
// Get all distinct community_ids from nodes
|
|
182
|
-
let communityRows: { community_id: number }[];
|
|
183
|
-
|
|
184
|
-
if (options?.communityId != null) {
|
|
185
|
-
communityRows = [{ community_id: Number(options.communityId) }];
|
|
186
|
-
} else {
|
|
187
|
-
communityRows = db.prepare(
|
|
188
|
-
'SELECT DISTINCT community_id FROM nodes WHERE community_id IS NOT NULL',
|
|
189
|
-
).all() as { community_id: number }[];
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
let generated = 0;
|
|
193
|
-
let skipped = 0;
|
|
194
|
-
let errors = 0;
|
|
195
|
-
|
|
196
|
-
for (const row of communityRows) {
|
|
197
|
-
const communityIdStr = String(row.community_id);
|
|
198
|
-
|
|
199
|
-
// Skip if already generated and force is not set
|
|
200
|
-
if (!options?.force) {
|
|
201
|
-
const existing = getWikiPage(db, communityIdStr);
|
|
202
|
-
if (existing) {
|
|
203
|
-
skipped++;
|
|
204
|
-
continue;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
try {
|
|
209
|
-
await generateWikiPage(db, communityIdStr, {
|
|
210
|
-
model: options?.model,
|
|
211
|
-
llmClient: options?.llmClient,
|
|
212
|
-
llmConfig: options?.llmConfig,
|
|
213
|
-
});
|
|
214
|
-
generated++;
|
|
215
|
-
} catch {
|
|
216
|
-
errors++;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
return { generated, skipped, errors };
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
export { upsertWikiPage, getWikiPage, listWikiPages };
|
package/src/wiki/wiki-store.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { MonographDb } from '../storage/db.js';
|
|
2
|
-
|
|
3
|
-
export interface WikiPage {
|
|
4
|
-
communityId: string;
|
|
5
|
-
content: string;
|
|
6
|
-
generatedAt: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Upsert a wiki page for a community.
|
|
11
|
-
* community_id is stored as TEXT (coerced from integer community_id in nodes).
|
|
12
|
-
*/
|
|
13
|
-
export function upsertWikiPage(db: MonographDb, communityId: string, content: string): void {
|
|
14
|
-
const generatedAt = new Date().toISOString();
|
|
15
|
-
db.prepare(`
|
|
16
|
-
INSERT INTO wiki_pages (community_id, content, generated_at)
|
|
17
|
-
VALUES (?, ?, ?)
|
|
18
|
-
ON CONFLICT(community_id) DO UPDATE SET content = excluded.content, generated_at = excluded.generated_at
|
|
19
|
-
`).run(String(communityId), content, generatedAt);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Get a single wiki page by community ID.
|
|
24
|
-
*/
|
|
25
|
-
export function getWikiPage(db: MonographDb, communityId: string): WikiPage | null {
|
|
26
|
-
const row = db.prepare('SELECT community_id, content, generated_at FROM wiki_pages WHERE community_id = ?')
|
|
27
|
-
.get(String(communityId)) as { community_id: string; content: string; generated_at: string } | undefined;
|
|
28
|
-
|
|
29
|
-
if (!row) return null;
|
|
30
|
-
return {
|
|
31
|
-
communityId: row.community_id,
|
|
32
|
-
content: row.content,
|
|
33
|
-
generatedAt: row.generated_at,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* List all wiki pages.
|
|
39
|
-
*/
|
|
40
|
-
export function listWikiPages(db: MonographDb): WikiPage[] {
|
|
41
|
-
const rows = db.prepare('SELECT community_id, content, generated_at FROM wiki_pages ORDER BY community_id')
|
|
42
|
-
.all() as { community_id: string; content: string; generated_at: string }[];
|
|
43
|
-
|
|
44
|
-
return rows.map(row => ({
|
|
45
|
-
communityId: row.community_id,
|
|
46
|
-
content: row.content,
|
|
47
|
-
generatedAt: row.generated_at,
|
|
48
|
-
}));
|
|
49
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../../tsconfig.base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"outDir": "dist",
|
|
5
|
-
"rootDir": ".",
|
|
6
|
-
"composite": true,
|
|
7
|
-
"types": ["node", "better-sqlite3", "express", "micromatch"]
|
|
8
|
-
},
|
|
9
|
-
"include": ["src/**/*.ts"],
|
|
10
|
-
"exclude": ["node_modules", "dist", "__tests__", "src/**/__tests__/**", "src/**/*.test.ts", "src/**/*.spec.ts"]
|
|
11
|
-
}
|
package/vitest.config.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from 'vitest/config';
|
|
2
|
-
|
|
3
|
-
export default defineConfig({
|
|
4
|
-
test: {
|
|
5
|
-
environment: 'node',
|
|
6
|
-
include: ['__tests__/**/*.test.ts', 'src/__tests__/**/*.test.ts'],
|
|
7
|
-
exclude: ['node_modules', 'dist', '**/._*'],
|
|
8
|
-
globals: true,
|
|
9
|
-
// Off by default to keep the edit/test loop fast; run
|
|
10
|
-
// `npm run test:coverage` (or pass --coverage) to measure.
|
|
11
|
-
coverage: {
|
|
12
|
-
enabled: false,
|
|
13
|
-
provider: 'v8',
|
|
14
|
-
reporter: ['text-summary', 'json-summary', 'html'],
|
|
15
|
-
reportsDirectory: './coverage',
|
|
16
|
-
include: ['src/**/*.ts'],
|
|
17
|
-
exclude: ['src/**/*.test.ts', 'src/__tests__/**', 'src/**/*.d.ts'],
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
});
|