@monoes/monograph 1.5.6 → 1.5.8

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.
Files changed (708) hide show
  1. package/README.md +31 -15
  2. package/dist/src/analysis/changed-files.d.ts +3 -0
  3. package/dist/src/analysis/changed-files.d.ts.map +1 -1
  4. package/dist/src/analysis/changed-files.js +11 -9
  5. package/dist/src/analysis/changed-files.js.map +1 -1
  6. package/dist/src/analysis/changed-workspaces.d.ts.map +1 -1
  7. package/dist/src/analysis/changed-workspaces.js +2 -9
  8. package/dist/src/analysis/changed-workspaces.js.map +1 -1
  9. package/dist/src/analysis/git-changed-files.d.ts +3 -0
  10. package/dist/src/analysis/git-changed-files.d.ts.map +1 -1
  11. package/dist/src/analysis/git-changed-files.js +17 -12
  12. package/dist/src/analysis/git-changed-files.js.map +1 -1
  13. package/dist/src/analysis/git-ref.d.ts +33 -0
  14. package/dist/src/analysis/git-ref.d.ts.map +1 -0
  15. package/dist/src/analysis/git-ref.js +54 -0
  16. package/dist/src/analysis/git-ref.js.map +1 -0
  17. package/dist/src/analyze/boundary-analysis.d.ts.map +1 -1
  18. package/dist/src/analyze/boundary-analysis.js +42 -42
  19. package/dist/src/analyze/boundary-analysis.js.map +1 -1
  20. package/dist/src/index.d.ts +1 -0
  21. package/dist/src/index.d.ts.map +1 -1
  22. package/dist/src/index.js +1 -0
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/lsp/server.d.ts +1 -1
  25. package/dist/src/lsp/server.d.ts.map +1 -1
  26. package/dist/src/lsp/server.js +48 -13
  27. package/dist/src/lsp/server.js.map +1 -1
  28. package/dist/src/mcp-tools/api-impact.d.ts.map +1 -1
  29. package/dist/src/mcp-tools/api-impact.js +1 -16
  30. package/dist/src/mcp-tools/api-impact.js.map +1 -1
  31. package/dist/src/mcp-tools/context.d.ts.map +1 -1
  32. package/dist/src/mcp-tools/context.js +12 -23
  33. package/dist/src/mcp-tools/context.js.map +1 -1
  34. package/dist/src/mcp-tools/explain.d.ts.map +1 -1
  35. package/dist/src/mcp-tools/explain.js +15 -20
  36. package/dist/src/mcp-tools/explain.js.map +1 -1
  37. package/dist/src/mcp-tools/graph-query.d.ts.map +1 -1
  38. package/dist/src/mcp-tools/graph-query.js +10 -19
  39. package/dist/src/mcp-tools/graph-query.js.map +1 -1
  40. package/dist/src/mcp-tools/impact.d.ts.map +1 -1
  41. package/dist/src/mcp-tools/impact.js +38 -41
  42. package/dist/src/mcp-tools/impact.js.map +1 -1
  43. package/dist/src/mcp-tools/neighbors.d.ts.map +1 -1
  44. package/dist/src/mcp-tools/neighbors.js +4 -22
  45. package/dist/src/mcp-tools/neighbors.js.map +1 -1
  46. package/dist/src/mcp-tools/query.d.ts.map +1 -1
  47. package/dist/src/mcp-tools/query.js +14 -9
  48. package/dist/src/mcp-tools/query.js.map +1 -1
  49. package/dist/src/mcp-tools/rename.d.ts.map +1 -1
  50. package/dist/src/mcp-tools/rename.js +3 -20
  51. package/dist/src/mcp-tools/rename.js.map +1 -1
  52. package/dist/src/parsers/c.d.ts.map +1 -1
  53. package/dist/src/parsers/c.js +12 -0
  54. package/dist/src/parsers/c.js.map +1 -1
  55. package/dist/src/parsers/extractor.d.ts.map +1 -1
  56. package/dist/src/parsers/extractor.js +2 -1
  57. package/dist/src/parsers/extractor.js.map +1 -1
  58. package/dist/src/parsers/go.d.ts.map +1 -1
  59. package/dist/src/parsers/go.js +19 -1
  60. package/dist/src/parsers/go.js.map +1 -1
  61. package/dist/src/parsers/language-config.d.ts +4 -0
  62. package/dist/src/parsers/language-config.d.ts.map +1 -1
  63. package/dist/src/parsers/language-parsers.d.ts.map +1 -1
  64. package/dist/src/parsers/language-parsers.js +3 -1
  65. package/dist/src/parsers/language-parsers.js.map +1 -1
  66. package/dist/src/parsers/loader.d.ts +1 -0
  67. package/dist/src/parsers/loader.d.ts.map +1 -1
  68. package/dist/src/parsers/loader.js +161 -20
  69. package/dist/src/parsers/loader.js.map +1 -1
  70. package/dist/src/parsers/python.d.ts.map +1 -1
  71. package/dist/src/parsers/python.js +6 -0
  72. package/dist/src/parsers/python.js.map +1 -1
  73. package/dist/src/parsers/rust.d.ts.map +1 -1
  74. package/dist/src/parsers/rust.js +10 -0
  75. package/dist/src/parsers/rust.js.map +1 -1
  76. package/dist/src/pipeline/orchestrator.d.ts.map +1 -1
  77. package/dist/src/pipeline/orchestrator.js +17 -0
  78. package/dist/src/pipeline/orchestrator.js.map +1 -1
  79. package/dist/src/pipeline/phases/pdf-parse.d.ts.map +1 -1
  80. package/dist/src/pipeline/phases/pdf-parse.js +10 -11
  81. package/dist/src/pipeline/phases/pdf-parse.js.map +1 -1
  82. package/dist/src/storage/edge-store.d.ts +1 -0
  83. package/dist/src/storage/edge-store.d.ts.map +1 -1
  84. package/dist/src/storage/edge-store.js +5 -8
  85. package/dist/src/storage/edge-store.js.map +1 -1
  86. package/dist/src/storage/node-store.d.ts +1 -0
  87. package/dist/src/storage/node-store.d.ts.map +1 -1
  88. package/dist/src/storage/node-store.js +11 -12
  89. package/dist/src/storage/node-store.js.map +1 -1
  90. package/dist/src/storage/schema.d.ts.map +1 -1
  91. package/dist/src/storage/schema.js +6 -0
  92. package/dist/src/storage/schema.js.map +1 -1
  93. package/dist/src/storage/utils.d.ts +11 -0
  94. package/dist/src/storage/utils.d.ts.map +1 -0
  95. package/dist/src/storage/utils.js +24 -0
  96. package/dist/src/storage/utils.js.map +1 -0
  97. package/dist/tsconfig.tsbuildinfo +1 -1
  98. package/package.json +12 -9
  99. package/.monomind/data/ranked-context.json +0 -5
  100. package/.monomind/loops/mastermind-review-1782162423447.json +0 -16
  101. package/.monomind/sessions/session-1777578175215.json +0 -15
  102. package/.monomind/sessions/session-1777823684507.json +0 -15
  103. package/.monomind/sessions/session-1777928944749.json +0 -15
  104. package/.monomind/sessions/session-1778052902210.json +0 -15
  105. package/.monomind/sessions/session-1778056744636.json +0 -15
  106. package/.monomind/sessions/session-1778061077599.json +0 -15
  107. package/.monomind/sessions/session-1778102154764.json +0 -15
  108. package/__tests__/analysis/shape-extractor.test.ts +0 -124
  109. package/__tests__/analysis/surprise-scorer.test.ts +0 -154
  110. package/__tests__/cache/extraction-cache.test.ts +0 -45
  111. package/__tests__/cli/ai-context.test.ts +0 -175
  112. package/__tests__/cli/augment.test.ts +0 -128
  113. package/__tests__/cli/doctor.test.ts +0 -125
  114. package/__tests__/cli/eval-server.test.ts +0 -89
  115. package/__tests__/cli/setup.test.ts +0 -178
  116. package/__tests__/cli/skill-gen.test.ts +0 -280
  117. package/__tests__/export/formats.test.ts +0 -82
  118. package/__tests__/fixtures/sample.c +0 -25
  119. package/__tests__/fixtures/sample.cpp +0 -32
  120. package/__tests__/fixtures/sample.dart +0 -34
  121. package/__tests__/fixtures/sample.kt +0 -30
  122. package/__tests__/fixtures/sample.php +0 -30
  123. package/__tests__/fixtures/sample.py +0 -11
  124. package/__tests__/fixtures/sample.rb +0 -26
  125. package/__tests__/fixtures/sample.swift +0 -42
  126. package/__tests__/fixtures/sample.ts +0 -17
  127. package/__tests__/fixtures/sample.vue +0 -40
  128. package/__tests__/groups/group-search.test.ts +0 -221
  129. package/__tests__/groups/group-sync.test.ts +0 -336
  130. package/__tests__/integration/build-atomicity.test.ts +0 -61
  131. package/__tests__/integration/call-attribution.test.ts +0 -116
  132. package/__tests__/integration/full-pipeline.test.ts +0 -64
  133. package/__tests__/integration/graph-report-freshness.test.ts +0 -53
  134. package/__tests__/integration/incremental-build.test.ts +0 -103
  135. package/__tests__/mcp-resources/resources.test.ts +0 -256
  136. package/__tests__/mcp-tools/api-impact.test.ts +0 -188
  137. package/__tests__/mcp-tools/context.test.ts +0 -130
  138. package/__tests__/mcp-tools/cypher.test.ts +0 -258
  139. package/__tests__/mcp-tools/detect-changes.test.ts +0 -114
  140. package/__tests__/mcp-tools/impact.test.ts +0 -133
  141. package/__tests__/mcp-tools/rename.test.ts +0 -117
  142. package/__tests__/mcp-tools/route-map.test.ts +0 -237
  143. package/__tests__/mcp-tools/shape-check.test.ts +0 -202
  144. package/__tests__/mcp-tools/tool-map.test.ts +0 -135
  145. package/__tests__/parsers/c.test.ts +0 -28
  146. package/__tests__/parsers/cpp.test.ts +0 -28
  147. package/__tests__/parsers/csharp.test.ts +0 -62
  148. package/__tests__/parsers/dart.test.ts +0 -28
  149. package/__tests__/parsers/kotlin.test.ts +0 -28
  150. package/__tests__/parsers/loader.test.ts +0 -14
  151. package/__tests__/parsers/php.test.ts +0 -28
  152. package/__tests__/parsers/python.test.ts +0 -32
  153. package/__tests__/parsers/ruby.test.ts +0 -33
  154. package/__tests__/parsers/swift.test.ts +0 -28
  155. package/__tests__/parsers/typescript.test.ts +0 -45
  156. package/__tests__/parsers/vue.test.ts +0 -28
  157. package/__tests__/pipeline/analysis.test.ts +0 -58
  158. package/__tests__/pipeline/phases/corpus-check.test.ts +0 -26
  159. package/__tests__/pipeline/phases/evidence.test.ts +0 -41
  160. package/__tests__/pipeline/phases/field-access.test.ts +0 -22
  161. package/__tests__/pipeline/phases/leiden.test.ts +0 -72
  162. package/__tests__/pipeline/phases/markdown.test.ts +0 -84
  163. package/__tests__/pipeline/phases/middleware-extractor.test.ts +0 -131
  164. package/__tests__/pipeline/phases/orm.test.ts +0 -379
  165. package/__tests__/pipeline/phases/processes.test.ts +0 -191
  166. package/__tests__/pipeline/phases/routes.test.ts +0 -195
  167. package/__tests__/pipeline/phases/scope-resolution.test.ts +0 -133
  168. package/__tests__/pipeline/phases/tools.test.ts +0 -161
  169. package/__tests__/pipeline/phases/variables.test.ts +0 -30
  170. package/__tests__/pipeline/phases/wildcard-synthesis.test.ts +0 -207
  171. package/__tests__/pipeline/phases.test.ts +0 -41
  172. package/__tests__/pipeline/runner.test.ts +0 -28
  173. package/__tests__/registry/repo-registry.test.ts +0 -127
  174. package/__tests__/reporting/graph-report.suggest.test.ts +0 -36
  175. package/__tests__/reporting/graph-report.test.ts +0 -165
  176. package/__tests__/search/ast-chunker.test.ts +0 -63
  177. package/__tests__/search/rrf.test.ts +0 -95
  178. package/__tests__/security/safe-fetch.test.ts +0 -41
  179. package/__tests__/security/sensitive-files.test.ts +0 -32
  180. package/__tests__/setup.ts +0 -1
  181. package/__tests__/skills/platform-skills.test.ts +0 -63
  182. package/__tests__/staleness/git-staleness.test.ts +0 -107
  183. package/__tests__/storage/db.test.ts +0 -37
  184. package/__tests__/storage/evidence-roundtrip.test.ts +0 -89
  185. package/__tests__/storage/stores.test.ts +0 -165
  186. package/__tests__/types.test.ts +0 -13
  187. package/__tests__/validation/extraction-validator.test.ts +0 -48
  188. package/__tests__/watch/watcher.test.ts +0 -31
  189. package/__tests__/web/analyze-api.test.ts +0 -66
  190. package/__tests__/web/api.test.ts +0 -210
  191. package/__tests__/web/mcp-http.test.ts +0 -67
  192. package/__tests__/web/react-ui.test.ts +0 -43
  193. package/__tests__/wiki/gist-publisher.test.ts +0 -66
  194. package/__tests__/wiki/providers.test.ts +0 -69
  195. package/__tests__/wiki/wiki-generator.test.ts +0 -260
  196. package/dist/src/fix/deps.d.ts +0 -14
  197. package/dist/src/fix/deps.d.ts.map +0 -1
  198. package/dist/src/fix/deps.js +0 -47
  199. package/dist/src/fix/deps.js.map +0 -1
  200. package/dist/src/fix/enum-members.d.ts +0 -20
  201. package/dist/src/fix/enum-members.d.ts.map +0 -1
  202. package/dist/src/fix/enum-members.js +0 -95
  203. package/dist/src/fix/enum-members.js.map +0 -1
  204. package/dist/src/fix/export-surgery.d.ts +0 -14
  205. package/dist/src/fix/export-surgery.d.ts.map +0 -1
  206. package/dist/src/fix/export-surgery.js +0 -140
  207. package/dist/src/fix/export-surgery.js.map +0 -1
  208. package/dist/src/fix/exports.d.ts +0 -16
  209. package/dist/src/fix/exports.d.ts.map +0 -1
  210. package/dist/src/fix/exports.js +0 -65
  211. package/dist/src/fix/exports.js.map +0 -1
  212. package/dist/src/fix/orchestrator.d.ts +0 -28
  213. package/dist/src/fix/orchestrator.d.ts.map +0 -1
  214. package/dist/src/fix/orchestrator.js +0 -39
  215. package/dist/src/fix/orchestrator.js.map +0 -1
  216. package/src/__tests__/analysis/benchmark.test.ts +0 -59
  217. package/src/__tests__/analysis/cluster-quality.test.ts +0 -106
  218. package/src/__tests__/analysis/corpus-health.test.ts +0 -33
  219. package/src/__tests__/analysis/dependency-health.test.ts +0 -105
  220. package/src/__tests__/analysis/file-classifier.test.ts +0 -50
  221. package/src/__tests__/analysis/node-similarity.test.ts +0 -81
  222. package/src/__tests__/cache/augment-cache.test.ts +0 -55
  223. package/src/__tests__/cli/check-update.test.ts +0 -42
  224. package/src/__tests__/cli/hooks-install.test.ts +0 -56
  225. package/src/__tests__/cli/hooks-marker.test.ts +0 -138
  226. package/src/__tests__/cli/hooks-status.test.ts +0 -42
  227. package/src/__tests__/export/adjacency-matrix.test.ts +0 -116
  228. package/src/__tests__/export/csv.test.ts +0 -39
  229. package/src/__tests__/export/dot.test.ts +0 -86
  230. package/src/__tests__/export/gexf.test.ts +0 -78
  231. package/src/__tests__/export/graphml.test.ts +0 -57
  232. package/src/__tests__/export/mermaid.test.ts +0 -89
  233. package/src/__tests__/graph/betweenness.test.ts +0 -89
  234. package/src/__tests__/graph/cycles.test.ts +0 -131
  235. package/src/__tests__/graph/dead-code.test.ts +0 -174
  236. package/src/__tests__/graph/dfs.test.ts +0 -62
  237. package/src/__tests__/graph/diff-summary.test.ts +0 -83
  238. package/src/__tests__/graph/edge-filter.test.ts +0 -129
  239. package/src/__tests__/graph/import-chain.test.ts +0 -111
  240. package/src/__tests__/graph/merge.test.ts +0 -151
  241. package/src/__tests__/graph/node-search.test.ts +0 -167
  242. package/src/__tests__/graph/normalize-id.test.ts +0 -102
  243. package/src/__tests__/graph/pagerank.test.ts +0 -96
  244. package/src/__tests__/graph/prune.test.ts +0 -110
  245. package/src/__tests__/graph/regex-search.test.ts +0 -166
  246. package/src/__tests__/graph/ripple-impact.test.ts +0 -73
  247. package/src/__tests__/graph/scc.test.ts +0 -85
  248. package/src/__tests__/graph/statistics.test.ts +0 -219
  249. package/src/__tests__/graph/subgraph.test.ts +0 -127
  250. package/src/__tests__/graph/topo-sort.test.ts +0 -110
  251. package/src/__tests__/graph/wcc.test.ts +0 -101
  252. package/src/__tests__/groups/grpc-extractor.test.ts +0 -47
  253. package/src/__tests__/groups/service-boundary.test.ts +0 -86
  254. package/src/__tests__/groups/topic-extractor.test.ts +0 -43
  255. package/src/__tests__/ingest/git-clone.test.ts +0 -128
  256. package/src/__tests__/ingest/query-memory.test.ts +0 -123
  257. package/src/__tests__/ingest/transcribe.test.ts +0 -58
  258. package/src/__tests__/ingest/url-ingest.test.ts +0 -48
  259. package/src/__tests__/mcp-resources/repo-context-resource.test.ts +0 -37
  260. package/src/__tests__/mcp-resources/repos-resource.test.ts +0 -71
  261. package/src/__tests__/mcp-resources/wiki-resource.test.ts +0 -52
  262. package/src/__tests__/mcp-tools/explain.test.ts +0 -46
  263. package/src/__tests__/mcp-tools/graph-query.test.ts +0 -45
  264. package/src/__tests__/mcp-tools/group-sync.test.ts +0 -8
  265. package/src/__tests__/mcp-tools/impact-filtering.test.ts +0 -48
  266. package/src/__tests__/mcp-tools/impact.risk.test.ts +0 -24
  267. package/src/__tests__/mcp-tools/list-repos.test.ts +0 -24
  268. package/src/__tests__/mcp-tools/neighbors.test.ts +0 -48
  269. package/src/__tests__/mcp-tools/query.test.ts +0 -42
  270. package/src/__tests__/parsers/language-parsers.test.ts +0 -52
  271. package/src/__tests__/parsers/named-bindings.test.ts +0 -73
  272. package/src/__tests__/pipeline/cluster-only.test.ts +0 -33
  273. package/src/__tests__/pipeline/phases/bridge-adapters/electron-ipc.test.ts +0 -87
  274. package/src/__tests__/pipeline/phases/bridge-adapters/tauri.test.ts +0 -116
  275. package/src/__tests__/pipeline/phases/bridge-adapters/wails.test.ts +0 -81
  276. package/src/__tests__/pipeline/phases/bridge-resolver.test.ts +0 -110
  277. package/src/__tests__/pipeline/phases/communities.cohesion.test.ts +0 -43
  278. package/src/__tests__/pipeline/phases/community-split.test.ts +0 -30
  279. package/src/__tests__/pipeline/phases/framework-detect.test.ts +0 -65
  280. package/src/__tests__/pipeline/phases/import-resolver.test.ts +0 -64
  281. package/src/__tests__/pipeline/phases/parse-arrow.test.ts +0 -33
  282. package/src/__tests__/pipeline/phases/parse-csharp.test.ts +0 -33
  283. package/src/__tests__/pipeline/phases/scan.monographignore.test.ts +0 -53
  284. package/src/__tests__/pipeline/phases/scan.negation.test.ts +0 -40
  285. package/src/__tests__/pipeline/phases/scope-resolution.go.test.ts +0 -34
  286. package/src/__tests__/pipeline/phases/scope-resolution.java.test.ts +0 -30
  287. package/src/__tests__/pipeline/phases/scope-resolution.rust.test.ts +0 -31
  288. package/src/__tests__/pipeline/phases/suggest-questions.test.ts +0 -46
  289. package/src/__tests__/pipeline/phases/surprises-scoring.test.ts +0 -46
  290. package/src/__tests__/pipeline/phases/variables-phase.test.ts +0 -78
  291. package/src/__tests__/pipeline/phases/wildcard-phase.test.ts +0 -99
  292. package/src/__tests__/pipeline/runner.parallel.test.ts +0 -78
  293. package/src/__tests__/reporting/graph-report-confidence.test.ts +0 -43
  294. package/src/__tests__/reporting/graph-report-gaps.test.ts +0 -41
  295. package/src/__tests__/scope-resolution/call-sites.test.ts +0 -89
  296. package/src/__tests__/scope-resolution/evidence-weights.test.ts +0 -49
  297. package/src/__tests__/search/diacritic.test.ts +0 -23
  298. package/src/__tests__/security/safe-fetch.test.ts +0 -125
  299. package/src/__tests__/skills/platform-skills.extra.test.ts +0 -36
  300. package/src/__tests__/web/api.clusters.test.ts +0 -65
  301. package/src/__tests__/web/api.file.test.ts +0 -44
  302. package/src/__tests__/web/api.grep.test.ts +0 -47
  303. package/src/__tests__/web/api.info.test.ts +0 -18
  304. package/src/__tests__/web/api.jobs.test.ts +0 -47
  305. package/src/__tests__/web/api.progress.test.ts +0 -25
  306. package/src/__tests__/web/api.stream.test.ts +0 -35
  307. package/src/__tests__/wiki/providers-reasoning.test.ts +0 -46
  308. package/src/__tests__/wiki/wiki-review-mode.test.ts +0 -22
  309. package/src/analysis/benchmark.ts +0 -132
  310. package/src/analysis/changed-files.ts +0 -73
  311. package/src/analysis/changed-workspaces.ts +0 -94
  312. package/src/analysis/churn-cache.ts +0 -179
  313. package/src/analysis/churn-trend.ts +0 -57
  314. package/src/analysis/churn.ts +0 -263
  315. package/src/analysis/cluster-quality.ts +0 -142
  316. package/src/analysis/combined.ts +0 -41
  317. package/src/analysis/corpus-health.ts +0 -41
  318. package/src/analysis/coverage-gaps.ts +0 -246
  319. package/src/analysis/dep-classification.ts +0 -167
  320. package/src/analysis/dependency-health.ts +0 -146
  321. package/src/analysis/duplicate-exports.ts +0 -110
  322. package/src/analysis/fallow-suppression.ts +0 -98
  323. package/src/analysis/feature-flags-config.ts +0 -47
  324. package/src/analysis/feature-flags.ts +0 -223
  325. package/src/analysis/file-classifier.ts +0 -87
  326. package/src/analysis/git-changed-files.ts +0 -62
  327. package/src/analysis/health-baseline.ts +0 -80
  328. package/src/analysis/issue-filters.ts +0 -56
  329. package/src/analysis/list.ts +0 -74
  330. package/src/analysis/node-similarity.ts +0 -115
  331. package/src/analysis/private-type-leaks.ts +0 -119
  332. package/src/analysis/progress.ts +0 -43
  333. package/src/analysis/project-state.ts +0 -95
  334. package/src/analysis/regression-config.ts +0 -36
  335. package/src/analysis/rule-overrides.ts +0 -81
  336. package/src/analysis/scripts.ts +0 -95
  337. package/src/analysis/shape-extractor.ts +0 -202
  338. package/src/analysis/since-duration.ts +0 -42
  339. package/src/analysis/suppression-context.ts +0 -95
  340. package/src/analysis/suppressions.ts +0 -80
  341. package/src/analysis/surprise-scorer.ts +0 -74
  342. package/src/analysis/targets.ts +0 -237
  343. package/src/analysis/unused-class-members.ts +0 -79
  344. package/src/analysis/workspace-filter.ts +0 -89
  345. package/src/analyze/boundary-analysis.ts +0 -129
  346. package/src/analyze/predicates/file.ts +0 -86
  347. package/src/analyze/predicates/import.ts +0 -90
  348. package/src/analyze/predicates/lifecycle.ts +0 -55
  349. package/src/analyze/unused-deps.ts +0 -70
  350. package/src/analyze/unused-exports.ts +0 -145
  351. package/src/analyze/unused-files.ts +0 -46
  352. package/src/api/production-override.ts +0 -63
  353. package/src/api/programmatic.ts +0 -118
  354. package/src/audit.ts +0 -234
  355. package/src/cache/augment-cache.ts +0 -63
  356. package/src/cache/extraction-cache.ts +0 -141
  357. package/src/check/filtering.ts +0 -78
  358. package/src/check/index.ts +0 -99
  359. package/src/check/output.ts +0 -79
  360. package/src/check/rules.ts +0 -61
  361. package/src/ci-template.ts +0 -84
  362. package/src/claude-cli.ts +0 -59
  363. package/src/cli/ai-context.ts +0 -193
  364. package/src/cli/augment.ts +0 -114
  365. package/src/cli/check-update.ts +0 -40
  366. package/src/cli/doctor.ts +0 -182
  367. package/src/cli/eval-server.ts +0 -126
  368. package/src/cli/hooks-install.ts +0 -202
  369. package/src/cli/setup.ts +0 -197
  370. package/src/cli/skill-gen.ts +0 -347
  371. package/src/commands/flags.ts +0 -72
  372. package/src/config/boundary-config.ts +0 -183
  373. package/src/config/cli-schema.ts +0 -81
  374. package/src/config/config-parsing.ts +0 -102
  375. package/src/config/duplicates-config.ts +0 -62
  376. package/src/config/external-plugin.ts +0 -77
  377. package/src/config/health-config.ts +0 -42
  378. package/src/config/ignore-exports-used-in-file.ts +0 -46
  379. package/src/config/migration-types.ts +0 -73
  380. package/src/config/output-format.ts +0 -24
  381. package/src/config/plugins/builtin.ts +0 -411
  382. package/src/config/plugins/registry.ts +0 -77
  383. package/src/config/plugins/types.ts +0 -14
  384. package/src/config/resolution.ts +0 -102
  385. package/src/config/rules.ts +0 -70
  386. package/src/config/schema-gen.ts +0 -115
  387. package/src/config/types.ts +0 -149
  388. package/src/config/used-class-members.ts +0 -53
  389. package/src/config/validate.ts +0 -108
  390. package/src/config/workspace.ts +0 -137
  391. package/src/coverage/cloud-client.ts +0 -111
  392. package/src/coverage/upload-inventory.ts +0 -84
  393. package/src/coverage/upload-source-maps.ts +0 -97
  394. package/src/discover/entry-points.ts +0 -51
  395. package/src/discover/infrastructure-entries.ts +0 -175
  396. package/src/duplicates/detect/concatenation.ts +0 -37
  397. package/src/duplicates/detect/extraction.ts +0 -107
  398. package/src/duplicates/detect/filtering.ts +0 -112
  399. package/src/duplicates/detect/lcp.ts +0 -27
  400. package/src/duplicates/detect/ranking.ts +0 -16
  401. package/src/duplicates/detect/statistics.ts +0 -69
  402. package/src/duplicates/detect/suffix-array.ts +0 -88
  403. package/src/duplicates/families.ts +0 -95
  404. package/src/duplicates/normalize.ts +0 -58
  405. package/src/duplicates/shingle-filter.ts +0 -37
  406. package/src/duplicates/token-types.ts +0 -62
  407. package/src/duplicates/tokenize/index.ts +0 -104
  408. package/src/error/fallow-error.ts +0 -94
  409. package/src/error.ts +0 -47
  410. package/src/export/adjacency-matrix.ts +0 -127
  411. package/src/export/analysis-json.ts +0 -87
  412. package/src/export/badge.ts +0 -105
  413. package/src/export/canvas.ts +0 -42
  414. package/src/export/codeclimate.ts +0 -201
  415. package/src/export/compact-health.ts +0 -119
  416. package/src/export/compact.ts +0 -83
  417. package/src/export/csv.ts +0 -33
  418. package/src/export/cypher.ts +0 -33
  419. package/src/export/dot.ts +0 -52
  420. package/src/export/gexf.ts +0 -59
  421. package/src/export/graphml.ts +0 -50
  422. package/src/export/html.ts +0 -548
  423. package/src/export/index.ts +0 -9
  424. package/src/export/json.ts +0 -36
  425. package/src/export/markdown.ts +0 -290
  426. package/src/export/mermaid.ts +0 -100
  427. package/src/export/obsidian.ts +0 -44
  428. package/src/export/sarif.ts +0 -245
  429. package/src/export/svg.ts +0 -68
  430. package/src/fix/deps.ts +0 -70
  431. package/src/fix/enum-members.ts +0 -103
  432. package/src/fix/export-surgery.ts +0 -197
  433. package/src/fix/exports.ts +0 -93
  434. package/src/fix/orchestrator.ts +0 -67
  435. package/src/graph/analyzer.ts +0 -69
  436. package/src/graph/author-analytics.ts +0 -217
  437. package/src/graph/baseline.ts +0 -432
  438. package/src/graph/clone-families.ts +0 -132
  439. package/src/graph/codeowners-extended.ts +0 -114
  440. package/src/graph/codeowners-gitlab.ts +0 -150
  441. package/src/graph/codeowners.ts +0 -217
  442. package/src/graph/complexity.ts +0 -200
  443. package/src/graph/cross-reference-findings.ts +0 -85
  444. package/src/graph/cross-reference.ts +0 -139
  445. package/src/graph/cycle-detection.ts +0 -311
  446. package/src/graph/cycles.ts +0 -222
  447. package/src/graph/dead-code.ts +0 -128
  448. package/src/graph/dependency-closure.ts +0 -126
  449. package/src/graph/dfs.ts +0 -118
  450. package/src/graph/diff.ts +0 -92
  451. package/src/graph/duplication-stats.ts +0 -79
  452. package/src/graph/edge-filter.ts +0 -117
  453. package/src/graph/explain.ts +0 -133
  454. package/src/graph/external-style-usage.ts +0 -81
  455. package/src/graph/health-score.ts +0 -179
  456. package/src/graph/hotspots.ts +0 -219
  457. package/src/graph/import-chain.ts +0 -148
  458. package/src/graph/loader.ts +0 -44
  459. package/src/graph/maintainability.ts +0 -156
  460. package/src/graph/merge.ts +0 -174
  461. package/src/graph/mirrored-dirs.ts +0 -202
  462. package/src/graph/narrowing.ts +0 -92
  463. package/src/graph/node-search.ts +0 -201
  464. package/src/graph/node-types.ts +0 -67
  465. package/src/graph/normalize-id.ts +0 -138
  466. package/src/graph/pagerank.ts +0 -165
  467. package/src/graph/prune.ts +0 -95
  468. package/src/graph/re-exports/propagate.ts +0 -95
  469. package/src/graph/reachability.ts +0 -99
  470. package/src/graph/regex-search.ts +0 -232
  471. package/src/graph/regression.ts +0 -199
  472. package/src/graph/resolve/discover-types.ts +0 -45
  473. package/src/graph/resolve/dynamic-imports.ts +0 -102
  474. package/src/graph/resolve/fallbacks.ts +0 -79
  475. package/src/graph/resolve/index.ts +0 -68
  476. package/src/graph/resolve/path-info.ts +0 -41
  477. package/src/graph/resolve/re-exports.ts +0 -14
  478. package/src/graph/resolve/react-native.ts +0 -27
  479. package/src/graph/resolve/require-imports.ts +0 -18
  480. package/src/graph/resolve/specifier.ts +0 -120
  481. package/src/graph/resolve/static-imports.ts +0 -14
  482. package/src/graph/resolve/types.ts +0 -108
  483. package/src/graph/resolve/upgrades.ts +0 -32
  484. package/src/graph/ripple-impact.ts +0 -131
  485. package/src/graph/risk-profile.ts +0 -179
  486. package/src/graph/statistics.ts +0 -165
  487. package/src/graph/stats.ts +0 -157
  488. package/src/graph/subgraph.ts +0 -162
  489. package/src/graph/topo-sort.ts +0 -171
  490. package/src/graph/wcc.ts +0 -187
  491. package/src/groups/contract-bridge.ts +0 -103
  492. package/src/groups/contract-registry.ts +0 -263
  493. package/src/groups/group-config.ts +0 -108
  494. package/src/groups/group-search.ts +0 -139
  495. package/src/groups/group-sync.ts +0 -82
  496. package/src/groups/grpc-extractor.ts +0 -64
  497. package/src/groups/service-boundary.ts +0 -119
  498. package/src/groups/topic-extractor.ts +0 -90
  499. package/src/health/analysis-counts-snapshot.ts +0 -57
  500. package/src/health/analysis-counts.ts +0 -70
  501. package/src/health/complexity-findings.ts +0 -115
  502. package/src/health/distribution-thresholds.ts +0 -54
  503. package/src/health/grouping.ts +0 -138
  504. package/src/health/health-grouping.ts +0 -86
  505. package/src/health/health-report-types.ts +0 -165
  506. package/src/health/health-report.ts +0 -81
  507. package/src/health/health-score.ts +0 -65
  508. package/src/health/hotspot-utils.ts +0 -55
  509. package/src/health/hotspots.ts +0 -104
  510. package/src/health/large-functions.ts +0 -34
  511. package/src/health/ownership-metrics.ts +0 -61
  512. package/src/health/ownership-risk.ts +0 -98
  513. package/src/health/ownership.ts +0 -174
  514. package/src/health/quality-gate.ts +0 -57
  515. package/src/health/risk-profile.ts +0 -39
  516. package/src/health/runtime-coverage-report.ts +0 -101
  517. package/src/health/runtime-coverage.ts +0 -71
  518. package/src/health/scores.ts +0 -72
  519. package/src/health/scoring-types.ts +0 -48
  520. package/src/health/target-thresholds.ts +0 -92
  521. package/src/health/target-types.ts +0 -54
  522. package/src/health/targets.ts +0 -151
  523. package/src/health/timings.ts +0 -86
  524. package/src/health/trend-types.ts +0 -57
  525. package/src/health/trends.ts +0 -86
  526. package/src/health/vital-signs-compute.ts +0 -108
  527. package/src/health/vital-signs-snapshot.ts +0 -72
  528. package/src/health/vital-signs.ts +0 -101
  529. package/src/index.ts +0 -111
  530. package/src/ingest/git-clone.ts +0 -246
  531. package/src/ingest/query-memory.ts +0 -132
  532. package/src/ingest/transcribe.ts +0 -254
  533. package/src/ingest/url-ingest.ts +0 -87
  534. package/src/init/agent-hooks.ts +0 -86
  535. package/src/init/git-hooks.ts +0 -71
  536. package/src/init/project-detection.ts +0 -105
  537. package/src/license/manager.ts +0 -120
  538. package/src/lsp/code-actions.ts +0 -127
  539. package/src/lsp/code-lens.ts +0 -56
  540. package/src/lsp/diagnostics-ext.ts +0 -150
  541. package/src/lsp/diagnostics-push.ts +0 -103
  542. package/src/lsp/diagnostics.ts +0 -98
  543. package/src/lsp/hover.ts +0 -64
  544. package/src/lsp/server.ts +0 -254
  545. package/src/mcp/params.ts +0 -201
  546. package/src/mcp/resources.ts +0 -124
  547. package/src/mcp/tool-builders.ts +0 -203
  548. package/src/mcp-resources/communities-resource.ts +0 -72
  549. package/src/mcp-resources/graph-resource.ts +0 -14
  550. package/src/mcp-resources/index.ts +0 -9
  551. package/src/mcp-resources/named-cluster-resource.ts +0 -35
  552. package/src/mcp-resources/named-process-resource.ts +0 -26
  553. package/src/mcp-resources/processes-resource.ts +0 -67
  554. package/src/mcp-resources/repo-context-resource.ts +0 -36
  555. package/src/mcp-resources/repos-resource.ts +0 -21
  556. package/src/mcp-resources/schema-resource.ts +0 -46
  557. package/src/mcp-resources/wiki-resource.ts +0 -23
  558. package/src/mcp-tools/api-impact.ts +0 -181
  559. package/src/mcp-tools/context.ts +0 -111
  560. package/src/mcp-tools/cypher.ts +0 -29
  561. package/src/mcp-tools/detect-changes.ts +0 -116
  562. package/src/mcp-tools/explain.ts +0 -65
  563. package/src/mcp-tools/graph-query.ts +0 -128
  564. package/src/mcp-tools/group-list.ts +0 -88
  565. package/src/mcp-tools/group-query.ts +0 -26
  566. package/src/mcp-tools/group-sync.ts +0 -32
  567. package/src/mcp-tools/impact.ts +0 -202
  568. package/src/mcp-tools/index.ts +0 -21
  569. package/src/mcp-tools/list-repos.ts +0 -38
  570. package/src/mcp-tools/neighbors.ts +0 -80
  571. package/src/mcp-tools/query.ts +0 -86
  572. package/src/mcp-tools/rename.ts +0 -118
  573. package/src/mcp-tools/route-map.ts +0 -98
  574. package/src/mcp-tools/serve.ts +0 -41
  575. package/src/mcp-tools/shape-check.ts +0 -182
  576. package/src/mcp-tools/staleness.ts +0 -13
  577. package/src/mcp-tools/tool-map.ts +0 -66
  578. package/src/mcp-tools/wiki-build.ts +0 -37
  579. package/src/mcp-tools/wiki.ts +0 -28
  580. package/src/migrate/jscpd.ts +0 -78
  581. package/src/migrate/jsonc-gen.ts +0 -38
  582. package/src/migrate/knip.ts +0 -126
  583. package/src/migrate/toml-gen.ts +0 -48
  584. package/src/parsers/c.ts +0 -31
  585. package/src/parsers/cpp.ts +0 -29
  586. package/src/parsers/csharp.ts +0 -43
  587. package/src/parsers/dart.ts +0 -39
  588. package/src/parsers/extractor.ts +0 -202
  589. package/src/parsers/go.ts +0 -27
  590. package/src/parsers/java.ts +0 -27
  591. package/src/parsers/kotlin.ts +0 -36
  592. package/src/parsers/language-config.ts +0 -28
  593. package/src/parsers/language-parsers.ts +0 -120
  594. package/src/parsers/loader.ts +0 -149
  595. package/src/parsers/named-bindings.ts +0 -63
  596. package/src/parsers/php.ts +0 -37
  597. package/src/parsers/python.ts +0 -26
  598. package/src/parsers/ruby.ts +0 -39
  599. package/src/parsers/rust.ts +0 -25
  600. package/src/parsers/swift.ts +0 -28
  601. package/src/parsers/typescript.ts +0 -41
  602. package/src/parsers/vue.ts +0 -79
  603. package/src/pipeline/cluster-only.ts +0 -64
  604. package/src/pipeline/effort.ts +0 -50
  605. package/src/pipeline/orchestrator.ts +0 -384
  606. package/src/pipeline/phases/boundary.ts +0 -151
  607. package/src/pipeline/phases/bridge-adapters/electron-ipc.ts +0 -91
  608. package/src/pipeline/phases/bridge-adapters/registry.ts +0 -14
  609. package/src/pipeline/phases/bridge-adapters/tauri.ts +0 -103
  610. package/src/pipeline/phases/bridge-adapters/types.ts +0 -31
  611. package/src/pipeline/phases/bridge-adapters/wails.ts +0 -33
  612. package/src/pipeline/phases/bridge-resolver.ts +0 -77
  613. package/src/pipeline/phases/call-site-extractors.ts +0 -177
  614. package/src/pipeline/phases/communities.ts +0 -183
  615. package/src/pipeline/phases/contextual-proximity.ts +0 -88
  616. package/src/pipeline/phases/cross-file.ts +0 -116
  617. package/src/pipeline/phases/docs-parse.ts +0 -307
  618. package/src/pipeline/phases/evidence.ts +0 -9
  619. package/src/pipeline/phases/field-access.ts +0 -49
  620. package/src/pipeline/phases/framework-detect.ts +0 -109
  621. package/src/pipeline/phases/god-nodes.ts +0 -163
  622. package/src/pipeline/phases/import-resolver.ts +0 -114
  623. package/src/pipeline/phases/leiden.ts +0 -77
  624. package/src/pipeline/phases/llm-extract.ts +0 -178
  625. package/src/pipeline/phases/markdown.ts +0 -121
  626. package/src/pipeline/phases/middleware-extractor.ts +0 -127
  627. package/src/pipeline/phases/module-resolution.ts +0 -294
  628. package/src/pipeline/phases/mro.ts +0 -56
  629. package/src/pipeline/phases/orm.ts +0 -503
  630. package/src/pipeline/phases/parse.ts +0 -222
  631. package/src/pipeline/phases/pdf-parse.ts +0 -133
  632. package/src/pipeline/phases/processes.ts +0 -249
  633. package/src/pipeline/phases/re-export-propagation.ts +0 -160
  634. package/src/pipeline/phases/reachability.ts +0 -156
  635. package/src/pipeline/phases/routes.ts +0 -350
  636. package/src/pipeline/phases/scan.ts +0 -133
  637. package/src/pipeline/phases/scope-resolution.ts +0 -442
  638. package/src/pipeline/phases/structure.ts +0 -68
  639. package/src/pipeline/phases/suggest.ts +0 -92
  640. package/src/pipeline/phases/surprises.ts +0 -83
  641. package/src/pipeline/phases/tools.ts +0 -180
  642. package/src/pipeline/phases/variables-phase.ts +0 -37
  643. package/src/pipeline/phases/variables.ts +0 -67
  644. package/src/pipeline/phases/wildcard-phase.ts +0 -50
  645. package/src/pipeline/phases/wildcard-synthesis.ts +0 -214
  646. package/src/pipeline/progress.ts +0 -58
  647. package/src/pipeline/runner.ts +0 -88
  648. package/src/pipeline/types.ts +0 -41
  649. package/src/query/cypher-parser.ts +0 -450
  650. package/src/registry/repo-registry.ts +0 -125
  651. package/src/regression/baseline-deltas.ts +0 -215
  652. package/src/regression/baseline.ts +0 -76
  653. package/src/regression/counts.ts +0 -87
  654. package/src/regression/outcome.ts +0 -78
  655. package/src/regression/tolerance.ts +0 -35
  656. package/src/report/attributed-duplication.ts +0 -112
  657. package/src/report/badge-svg.ts +0 -100
  658. package/src/report/cross-ref-human.ts +0 -50
  659. package/src/report/duplication-grouping.ts +0 -74
  660. package/src/report/grouping.ts +0 -137
  661. package/src/report/human-check.ts +0 -291
  662. package/src/report/human-dupes.ts +0 -142
  663. package/src/report/human-health.ts +0 -195
  664. package/src/report/human.ts +0 -120
  665. package/src/report/json-actions.ts +0 -91
  666. package/src/report/json-builders.ts +0 -70
  667. package/src/report/json-schema.ts +0 -75
  668. package/src/report/number-format.ts +0 -91
  669. package/src/report/output-grouped.ts +0 -102
  670. package/src/report/pipeline-perf.ts +0 -56
  671. package/src/report/trace-human.ts +0 -127
  672. package/src/reporting/graph-report.ts +0 -431
  673. package/src/results/fallow-results.ts +0 -152
  674. package/src/results/types.ts +0 -149
  675. package/src/scope-resolution/evidence-weights.ts +0 -41
  676. package/src/search/ast-chunker.ts +0 -206
  677. package/src/search/diacritic.ts +0 -7
  678. package/src/search/hybrid-query.ts +0 -65
  679. package/src/search/rrf.ts +0 -51
  680. package/src/security/safe-fetch.ts +0 -113
  681. package/src/security/sensitive-files.ts +0 -24
  682. package/src/skills/platform-skills.ts +0 -233
  683. package/src/staleness/git-staleness.ts +0 -66
  684. package/src/storage/db.ts +0 -110
  685. package/src/storage/edge-store.ts +0 -103
  686. package/src/storage/file-cache.ts +0 -78
  687. package/src/storage/fts-store.ts +0 -385
  688. package/src/storage/node-store.ts +0 -209
  689. package/src/storage/schema.ts +0 -171
  690. package/src/storage/suppressions.ts +0 -145
  691. package/src/storage/unlinked-refs.ts +0 -117
  692. package/src/types.ts +0 -197
  693. package/src/validation/extraction-validator.ts +0 -54
  694. package/src/watch/watcher.ts +0 -160
  695. package/src/web/analyze-api.ts +0 -146
  696. package/src/web/api.ts +0 -584
  697. package/src/web/async-jobs.ts +0 -109
  698. package/src/web/mcp-http.ts +0 -227
  699. package/src/web/react-ui.ts +0 -78
  700. package/src/web/server.ts +0 -90
  701. package/src/web/ui/index.html +0 -204
  702. package/src/wiki/gist-publisher.ts +0 -76
  703. package/src/wiki/prompt-builder.ts +0 -35
  704. package/src/wiki/providers.ts +0 -134
  705. package/src/wiki/wiki-generator.ts +0 -223
  706. package/src/wiki/wiki-store.ts +0 -49
  707. package/tsconfig.json +0 -11
  708. package/vitest.config.ts +0 -20
@@ -1,149 +0,0 @@
1
- export type DependencyLocation = 'Dependencies' | 'DevDependencies' | 'OptionalDependencies' | 'PeerDependencies';
2
-
3
- export interface UnusedFile {
4
- filePath: string;
5
- sizeBytes?: number;
6
- }
7
-
8
- export interface UnusedExport {
9
- filePath: string;
10
- exportName: string;
11
- line?: number;
12
- col?: number;
13
- isType?: boolean;
14
- }
15
-
16
- export interface UnusedMember {
17
- filePath: string;
18
- memberName: string;
19
- parentName?: string;
20
- kind?: 'method' | 'property' | 'getter' | 'setter' | 'accessor' | 'constructor';
21
- line?: number;
22
- }
23
-
24
- export interface UnusedDependency {
25
- name: string;
26
- location: DependencyLocation;
27
- }
28
-
29
- export interface CircularDependency {
30
- cycle: string[];
31
- }
32
-
33
- export interface BoundaryViolation {
34
- fromFile: string;
35
- toFile: string;
36
- fromBoundary: string;
37
- toBoundary: string;
38
- }
39
-
40
- export interface StaleSuppression {
41
- filePath: string;
42
- line: number;
43
- kind: string;
44
- comment: string;
45
- }
46
-
47
- export interface PrivateTypeLeak {
48
- filePath: string;
49
- exportName: string;
50
- leakedType: string;
51
- line?: number;
52
- }
53
-
54
- export interface DuplicateExport {
55
- exportName: string;
56
- files: string[];
57
- }
58
-
59
- export interface AnalysisResults {
60
- unusedFiles: UnusedFile[];
61
- unusedExports: UnusedExport[];
62
- unusedTypes: UnusedExport[];
63
- privateTypeLeaks: PrivateTypeLeak[];
64
- unusedDependencies: UnusedDependency[];
65
- unusedEnumMembers: UnusedMember[];
66
- unusedClassMembers: UnusedMember[];
67
- unresolvedImports: Array<{ filePath: string; specifier: string; line?: number }>;
68
- unlistedDependencies: UnusedDependency[];
69
- duplicateExports: DuplicateExport[];
70
- circularDependencies: CircularDependency[];
71
- boundaryViolations: BoundaryViolation[];
72
- staleSuppressions: StaleSuppression[];
73
- }
74
-
75
- export function makeEmptyAnalysisResults(): AnalysisResults {
76
- return {
77
- unusedFiles: [],
78
- unusedExports: [],
79
- unusedTypes: [],
80
- privateTypeLeaks: [],
81
- unusedDependencies: [],
82
- unusedEnumMembers: [],
83
- unusedClassMembers: [],
84
- unresolvedImports: [],
85
- unlistedDependencies: [],
86
- duplicateExports: [],
87
- circularDependencies: [],
88
- boundaryViolations: [],
89
- staleSuppressions: [],
90
- };
91
- }
92
-
93
- export function totalIssues(results: AnalysisResults): number {
94
- return (
95
- results.unusedFiles.length +
96
- results.unusedExports.length +
97
- results.unusedTypes.length +
98
- results.privateTypeLeaks.length +
99
- results.unusedDependencies.length +
100
- results.unusedEnumMembers.length +
101
- results.unusedClassMembers.length +
102
- results.unresolvedImports.length +
103
- results.unlistedDependencies.length +
104
- results.duplicateExports.length +
105
- results.circularDependencies.length +
106
- results.boundaryViolations.length +
107
- results.staleSuppressions.length
108
- );
109
- }
110
-
111
- export function hasIssues(results: AnalysisResults): boolean {
112
- return totalIssues(results) > 0;
113
- }
114
-
115
- export function mergeAnalysisResults(a: AnalysisResults, b: AnalysisResults): AnalysisResults {
116
- return {
117
- unusedFiles: [...a.unusedFiles, ...b.unusedFiles],
118
- unusedExports: [...a.unusedExports, ...b.unusedExports],
119
- unusedTypes: [...a.unusedTypes, ...b.unusedTypes],
120
- privateTypeLeaks: [...a.privateTypeLeaks, ...b.privateTypeLeaks],
121
- unusedDependencies: [...a.unusedDependencies, ...b.unusedDependencies],
122
- unusedEnumMembers: [...a.unusedEnumMembers, ...b.unusedEnumMembers],
123
- unusedClassMembers: [...a.unusedClassMembers, ...b.unusedClassMembers],
124
- unresolvedImports: [...a.unresolvedImports, ...b.unresolvedImports],
125
- unlistedDependencies: [...a.unlistedDependencies, ...b.unlistedDependencies],
126
- duplicateExports: [...a.duplicateExports, ...b.duplicateExports],
127
- circularDependencies: [...a.circularDependencies, ...b.circularDependencies],
128
- boundaryViolations: [...a.boundaryViolations, ...b.boundaryViolations],
129
- staleSuppressions: [...a.staleSuppressions, ...b.staleSuppressions],
130
- };
131
- }
132
-
133
- export function filterResultsByFile(results: AnalysisResults, filePaths: Set<string>): AnalysisResults {
134
- return {
135
- unusedFiles: results.unusedFiles.filter(r => filePaths.has(r.filePath)),
136
- unusedExports: results.unusedExports.filter(r => filePaths.has(r.filePath)),
137
- unusedTypes: results.unusedTypes.filter(r => filePaths.has(r.filePath)),
138
- privateTypeLeaks: results.privateTypeLeaks.filter(r => filePaths.has(r.filePath)),
139
- unusedDependencies: results.unusedDependencies,
140
- unusedEnumMembers: results.unusedEnumMembers.filter(r => filePaths.has(r.filePath)),
141
- unusedClassMembers: results.unusedClassMembers.filter(r => filePaths.has(r.filePath)),
142
- unresolvedImports: results.unresolvedImports.filter(r => filePaths.has(r.filePath)),
143
- unlistedDependencies: results.unlistedDependencies,
144
- duplicateExports: results.duplicateExports,
145
- circularDependencies: results.circularDependencies.filter(c => c.cycle.some(f => filePaths.has(f))),
146
- boundaryViolations: results.boundaryViolations.filter(b => filePaths.has(b.fromFile)),
147
- staleSuppressions: results.staleSuppressions.filter(r => filePaths.has(r.filePath)),
148
- };
149
- }
@@ -1,41 +0,0 @@
1
- /**
2
- * Evidence weight constants for scope-based resolution.
3
- */
4
-
5
- export const EvidenceWeights = {
6
- local: 0.55,
7
- import: 0.45,
8
- reexport: 0.4,
9
- namespace: 0.4,
10
- wildcard: 0.3,
11
-
12
- scopeChainPerDepth: -0.02,
13
-
14
- typeBindingByMroDepth: [0.5, 0.42, 0.36, 0.32, 0.3] as const,
15
-
16
- ownerMatch: 0.2,
17
- kindMatch: 0.0,
18
-
19
- arityMatchCompatible: 0.1,
20
- arityMatchUnknown: 0.0,
21
- arityMatchIncompatible: -0.15,
22
-
23
- globalQualified: 0.35,
24
- globalName: 0.1,
25
-
26
- dynamicImportUnresolved: 0.02,
27
-
28
- unlinkedImportMultiplier: 0.5,
29
- } as const;
30
-
31
- export function typeBindingWeightAtDepth(mroDepth: number): number {
32
- const table = EvidenceWeights.typeBindingByMroDepth;
33
- if (mroDepth < 0) return table[0];
34
- if (mroDepth >= table.length) return table[table.length - 1]!;
35
- return table[mroDepth]!;
36
- }
37
-
38
- export function composeWeights(...weights: number[]): number {
39
- const sum = weights.reduce((s, w) => s + w, 0);
40
- return Math.min(1.0, Math.max(0.0, sum));
41
- }
@@ -1,206 +0,0 @@
1
- export interface ChunkOptions {
2
- maxTokens?: number; // default 512
3
- overlap?: number; // default 50 (token overlap between adjacent chunks)
4
- minTokens?: number; // default 20 (discard chunks smaller than this)
5
- }
6
-
7
- export interface Chunk {
8
- text: string;
9
- startLine: number;
10
- endLine: number;
11
- kind: 'function' | 'class' | 'block' | 'comment' | 'import' | 'other';
12
- }
13
-
14
- const IMPORT_RE = /^(import\s|export\s*\{[^}]*\}\s*from)/;
15
- const FUNCTION_RE = /^(export\s+)?(async\s+)?function\s+\w+|^(export\s+)?const\s+\w+\s*=\s*(async\s+)?\(/;
16
- const CLASS_RE = /^(export\s+)?(abstract\s+)?class\s+\w+/;
17
- const COMMENT_RE = /^(\/\/|\/\*| \*)/;
18
-
19
- type LineKind = 'function' | 'class' | 'block' | 'comment' | 'import' | 'other';
20
-
21
- function estimateTokens(text: string): number {
22
- return Math.ceil(text.length / 4);
23
- }
24
-
25
- function classifyLine(line: string): LineKind {
26
- const trimmed = line.trimStart();
27
- if (IMPORT_RE.test(trimmed)) return 'import';
28
- if (FUNCTION_RE.test(trimmed)) return 'function';
29
- if (CLASS_RE.test(trimmed)) return 'class';
30
- if (COMMENT_RE.test(trimmed)) return 'comment';
31
- return 'other';
32
- }
33
-
34
- interface LineGroup {
35
- lines: string[];
36
- startLine: number; // 1-based
37
- kind: LineKind;
38
- }
39
-
40
- function groupLines(sourceLines: string[]): LineGroup[] {
41
- const groups: LineGroup[] = [];
42
- let i = 0;
43
-
44
- while (i < sourceLines.length) {
45
- const line = sourceLines[i];
46
- const trimmed = line.trim();
47
-
48
- // Skip blank lines (treat them as other with 0 tokens — they'll be filtered)
49
- if (trimmed === '') {
50
- i++;
51
- continue;
52
- }
53
-
54
- const kind = classifyLine(trimmed);
55
-
56
- // For groupable kinds (import, comment), collect consecutive matching lines
57
- if (kind === 'import' || kind === 'comment') {
58
- const startIdx = i;
59
- const collected: string[] = [line];
60
- i++;
61
- while (i < sourceLines.length) {
62
- const next = sourceLines[i].trim();
63
- if (next === '') break;
64
- const nextKind = classifyLine(next);
65
- if (nextKind === kind) {
66
- collected.push(sourceLines[i]);
67
- i++;
68
- } else {
69
- break;
70
- }
71
- }
72
- groups.push({ lines: collected, startLine: startIdx + 1, kind });
73
- } else if (kind === 'function' || kind === 'class') {
74
- // Collect the block: track brace depth
75
- const startIdx = i;
76
- const collected: string[] = [line];
77
- i++;
78
- let depth = (line.match(/\{/g) || []).length - (line.match(/\}/g) || []).length;
79
-
80
- // If no opening brace on the first line yet, keep reading until we have one
81
- while (i < sourceLines.length && depth <= 0) {
82
- const cur = sourceLines[i];
83
- collected.push(cur);
84
- depth += (cur.match(/\{/g) || []).length - (cur.match(/\}/g) || []).length;
85
- i++;
86
- }
87
-
88
- // Now consume until depth returns to 0
89
- while (i < sourceLines.length && depth > 0) {
90
- const cur = sourceLines[i];
91
- collected.push(cur);
92
- depth += (cur.match(/\{/g) || []).length - (cur.match(/\}/g) || []).length;
93
- i++;
94
- }
95
-
96
- groups.push({ lines: collected, startLine: startIdx + 1, kind });
97
- } else {
98
- // 'other': collect consecutive non-blank other lines into one group
99
- const startIdx = i;
100
- const collected: string[] = [line];
101
- i++;
102
- while (i < sourceLines.length) {
103
- const next = sourceLines[i].trim();
104
- if (next === '') break;
105
- const nextKind = classifyLine(next);
106
- if (nextKind === 'other') {
107
- collected.push(sourceLines[i]);
108
- i++;
109
- } else {
110
- break;
111
- }
112
- }
113
- groups.push({ lines: collected, startLine: startIdx + 1, kind });
114
- }
115
- }
116
-
117
- return groups;
118
- }
119
-
120
- function splitGroupIntoChunks(
121
- group: LineGroup,
122
- maxTokens: number,
123
- overlap: number,
124
- ): Chunk[] {
125
- const lines = group.lines;
126
- const result: Chunk[] = [];
127
-
128
- // Tokens per line (estimated)
129
- const lineTokens = lines.map(l => estimateTokens(l));
130
-
131
- let start = 0; // index into lines[]
132
-
133
- while (start < lines.length) {
134
- let tokenCount = 0;
135
- let end = start;
136
-
137
- while (end < lines.length && tokenCount + lineTokens[end] <= maxTokens) {
138
- tokenCount += lineTokens[end];
139
- end++;
140
- }
141
-
142
- // If we couldn't advance even one line (single line exceeds maxTokens), force include it
143
- if (end === start) {
144
- end = start + 1;
145
- }
146
-
147
- const chunkLines = lines.slice(start, end);
148
- const text = chunkLines.join('\n');
149
- const startLine = group.startLine + start;
150
- const endLine = group.startLine + end - 1;
151
-
152
- result.push({ text, startLine, endLine, kind: group.kind });
153
-
154
- if (end >= lines.length) break;
155
-
156
- // Calculate how many lines from the end of this chunk to include as overlap
157
- // for the next chunk's start. Count back until overlap token budget is met.
158
- let overlapTokens = 0;
159
- let overlapLineCount = 0;
160
- for (let j = end - 1; j >= start; j--) {
161
- if (overlapTokens + lineTokens[j] > overlap) break;
162
- overlapTokens += lineTokens[j];
163
- overlapLineCount++;
164
- }
165
-
166
- // Next start is (end - overlapLineCount), but must be strictly > start to avoid looping
167
- const nextStart = Math.max(start + 1, end - overlapLineCount);
168
- start = nextStart;
169
- }
170
-
171
- return result;
172
- }
173
-
174
- export function chunkSource(source: string, options?: ChunkOptions): Chunk[] {
175
- const maxTokens = options?.maxTokens ?? 512;
176
- const overlap = options?.overlap ?? 50;
177
- const minTokens = options?.minTokens ?? 5;
178
-
179
- if (!source || source.trim() === '') return [];
180
-
181
- const sourceLines = source.split('\n');
182
- const groups = groupLines(sourceLines);
183
-
184
- const chunks: Chunk[] = [];
185
-
186
- for (const group of groups) {
187
- const text = group.lines.join('\n');
188
- const tokens = estimateTokens(text);
189
-
190
- if (tokens <= maxTokens) {
191
- chunks.push({
192
- text,
193
- startLine: group.startLine,
194
- endLine: group.startLine + group.lines.length - 1,
195
- kind: group.kind,
196
- });
197
- } else {
198
- // Split into sub-chunks with overlap
199
- const subChunks = splitGroupIntoChunks(group, maxTokens, overlap);
200
- chunks.push(...subChunks);
201
- }
202
- }
203
-
204
- // Discard chunks below minTokens
205
- return chunks.filter(c => estimateTokens(c.text) >= minTokens);
206
- }
@@ -1,7 +0,0 @@
1
- export function stripDiacritics(text: string): string {
2
- return text.normalize('NFD').replace(/[̀-ͯ]/g, '');
3
- }
4
-
5
- export function normalizeSearchTerm(term: string): string {
6
- return stripDiacritics(term.trim().toLowerCase());
7
- }
@@ -1,65 +0,0 @@
1
- /**
2
- * BM25 search (FTS5) with the historical "hybrid" entry-point signature.
3
- *
4
- * Monograph search is BM25-only. The former embedding/vector branch
5
- * (gated on MONOGRAPH_EMBEDDINGS=true) was removed — it was never run in
6
- * practice (the embeddings table stayed empty) and did a JS cosine full
7
- * scan. The exported function signatures are unchanged so callers do not
8
- * need to change.
9
- */
10
-
11
- import type Database from 'better-sqlite3';
12
- import type { RankedResult } from './rrf.js';
13
- import { ftsSearch } from '../storage/fts-store.js';
14
- import { normalizeSearchTerm } from './diacritic.js';
15
-
16
- export interface HybridQueryOptions {
17
- limit?: number;
18
- label?: string;
19
- /** @deprecated Embeddings are disabled — this option is ignored; search is BM25-only. */
20
- embedder?: unknown;
21
- }
22
-
23
- export interface HybridResult extends RankedResult {
24
- id: string;
25
- name: string;
26
- normLabel: string;
27
- filePath: string | null;
28
- label: string;
29
- score: number;
30
- /** First line of the symbol in its source file (1-based, null if unknown). */
31
- startLine?: number | null;
32
- /** Last line of the symbol in its source file (1-based, null if unknown). */
33
- endLine?: number | null;
34
- }
35
-
36
- /**
37
- * Run a BM25 (FTS5) search. Despite the name, this is BM25-only — the
38
- * vector branch was removed; the `embedder` option is ignored.
39
- */
40
- export async function hybridQuery(
41
- db: Database.Database,
42
- query: string,
43
- options: HybridQueryOptions = {},
44
- ): Promise<HybridResult[]> {
45
- const { limit = 20, label } = options;
46
-
47
- // Normalize the query for text-based lookups (strip diacritics, lowercase, trim)
48
- const normalizedQuery = normalizeSearchTerm(query);
49
-
50
- // ── BM25 via FTS5 ──────────────────────────────────────────────────────────
51
- const bm25Limit = Math.max(limit, 50);
52
- const bm25Raw = ftsSearch(db, normalizedQuery, bm25Limit, label);
53
- const bm25Results: RankedResult[] = bm25Raw.map((r) => ({
54
- id: r.id,
55
- name: r.name,
56
- normLabel: r.normLabel,
57
- filePath: r.filePath,
58
- label: r.label,
59
- score: r.rank,
60
- startLine: r.startLine,
61
- endLine: r.endLine,
62
- }));
63
-
64
- return bm25Results.slice(0, limit) as HybridResult[];
65
- }
package/src/search/rrf.ts DELETED
@@ -1,51 +0,0 @@
1
- /**
2
- * Reciprocal Rank Fusion (RRF)
3
- *
4
- * Merges two ranked result lists using the formula:
5
- * score(d) = sum over each list of: 1 / (K + rank_of_d_in_list)
6
- *
7
- * where rank is 1-based.
8
- *
9
- * Reference: Cormack, Clarke & Buettcher (SIGIR 2009).
10
- */
11
-
12
- export interface RankedResult {
13
- id: string;
14
- score: number;
15
- [key: string]: unknown;
16
- }
17
-
18
- /**
19
- * Merge two ranked lists via RRF and return results sorted by fused score descending.
20
- *
21
- * @param list1 - First ranked list (ordered by relevance, best first)
22
- * @param list2 - Second ranked list (ordered by relevance, best first)
23
- * @param K - RRF constant (default 60, per the original paper)
24
- */
25
- export function mergeRanks(
26
- list1: RankedResult[],
27
- list2: RankedResult[],
28
- K = 60,
29
- ): RankedResult[] {
30
- const scoreMap = new Map<string, { rrf: number; payload: RankedResult }>();
31
-
32
- const addList = (list: RankedResult[]) => {
33
- list.forEach((item, idx) => {
34
- const rank = idx + 1; // 1-based
35
- const contribution = 1 / (K + rank);
36
- const existing = scoreMap.get(item.id);
37
- if (existing) {
38
- existing.rrf += contribution;
39
- } else {
40
- scoreMap.set(item.id, { rrf: contribution, payload: item });
41
- }
42
- });
43
- };
44
-
45
- addList(list1);
46
- addList(list2);
47
-
48
- return [...scoreMap.values()]
49
- .sort((a, b) => b.rrf - a.rrf)
50
- .map(({ rrf, payload }) => ({ ...payload, score: rrf }));
51
- }
@@ -1,113 +0,0 @@
1
- const PRIVATE_IP_PATTERNS: RegExp[] = [
2
- /^127\./,
3
- /^10\./,
4
- /^192\.168\./,
5
- /^172\.(1[6-9]|2\d|3[01])\./,
6
- /^169\.254\./,
7
- /^::1$|\[::1\]/,
8
- /^fc00:|^\[fc00:/i,
9
- /^fe80:|^\[fe80:/i,
10
- // IPv4-mapped IPv6 (e.g. ::ffff:192.168.1.1) — covers private ranges via mapped form
11
- /^::ffff:/i,
12
- /^\[::ffff:/i,
13
- ];
14
-
15
- const CLOUD_METADATA_HOSTS = new Set([
16
- 'metadata.google.internal',
17
- 'metadata.goog',
18
- '169.254.169.254',
19
- ]);
20
-
21
- /**
22
- * Returns true if the given URL resolves to a private, loopback, or cloud
23
- * metadata address that should be blocked to prevent SSRF attacks.
24
- */
25
- export function isPrivateUrl(rawUrl: string): boolean {
26
- let url: URL;
27
- try {
28
- url = new URL(rawUrl);
29
- } catch {
30
- return false;
31
- }
32
- const host = url.hostname;
33
- if (host === 'localhost') return true;
34
- if (CLOUD_METADATA_HOSTS.has(host)) return true;
35
- return PRIVATE_IP_PATTERNS.some(p => p.test(host));
36
- }
37
-
38
- /**
39
- * Validates that a URL is safe to fetch: must use http/https and must not
40
- * resolve to a private or reserved address.
41
- * @throws {Error} if the URL is invalid, uses an unsupported scheme, or is private
42
- */
43
- export function validateUrl(rawUrl: string): void {
44
- let url: URL;
45
- try {
46
- url = new URL(rawUrl);
47
- } catch {
48
- throw new Error(`Invalid URL: ${rawUrl}`);
49
- }
50
- if (!['http:', 'https:'].includes(url.protocol)) {
51
- throw new Error(`Unsupported scheme: ${url.protocol}`);
52
- }
53
- if (isPrivateUrl(rawUrl)) {
54
- throw new Error(`URL resolves to private/reserved address: ${url.hostname}`);
55
- }
56
- }
57
-
58
- /**
59
- * Fetches the content of a URL after validating it is safe (not private/internal).
60
- * Enforces a maximum response size and request timeout.
61
- *
62
- * @param rawUrl - The URL to fetch
63
- * @param opts.maxBytes - Maximum allowed response size in bytes (default 10 MB)
64
- * @param opts.timeoutMs - Request timeout in milliseconds (default 10 000)
65
- * @returns The response body as a string
66
- * @throws {Error} if the URL is unsafe, the request fails, or the response is too large
67
- */
68
- export async function safeFetch(
69
- rawUrl: string,
70
- opts: { maxBytes?: number; timeoutMs?: number } = {},
71
- ): Promise<string> {
72
- validateUrl(rawUrl);
73
- const { maxBytes = 10 * 1024 * 1024, timeoutMs = 10_000 } = opts;
74
- const controller = new AbortController();
75
- const timer = setTimeout(() => controller.abort(), timeoutMs);
76
- try {
77
- const res = await fetch(rawUrl, { signal: controller.signal });
78
- if (!res.ok) throw new Error(`HTTP ${res.status}: ${rawUrl}`);
79
-
80
- // Stream the body incrementally so we can enforce maxBytes before
81
- // the full response is loaded into memory (prevents memory exhaustion
82
- // on large/malicious payloads).
83
- if (!res.body) {
84
- throw new Error(`Response body is missing: ${rawUrl}`);
85
- }
86
- const reader = (res.body as ReadableStream<Uint8Array>).getReader();
87
- const decoder = new TextDecoder();
88
- const chunks: string[] = [];
89
- let totalBytes = 0;
90
-
91
- try {
92
- while (true) {
93
- const { value, done } = await reader.read();
94
- if (done) break;
95
- if (value) {
96
- totalBytes += value.byteLength;
97
- if (totalBytes > maxBytes) {
98
- throw new Error(`Response exceeds ${maxBytes} bytes: ${rawUrl}`);
99
- }
100
- chunks.push(decoder.decode(value, { stream: true }));
101
- }
102
- }
103
- // Flush any remaining bytes held in the decoder
104
- chunks.push(decoder.decode());
105
- } finally {
106
- reader.releaseLock();
107
- }
108
-
109
- return chunks.join('');
110
- } finally {
111
- clearTimeout(timer);
112
- }
113
- }
@@ -1,24 +0,0 @@
1
- import { basename as pathBasename } from 'path';
2
-
3
- const SENSITIVE_PATTERNS: RegExp[] = [
4
- /^\.env(\.|$)/i,
5
- /^\.netrc$/i,
6
- /\baws_credentials\b/i,
7
- /\bcredentials?\b.*\.(json|yaml|yml|toml|ini|cfg)$/i,
8
- /\bsecrets?\b.*\.(json|yaml|yml|toml|ini|cfg)$/i,
9
- /\bsecret[_-]?key\b/i,
10
- /\bapi[_-]?key\b.*\.(json|txt)$/i,
11
- /\bpasswd\b/i,
12
- /\bpassword[s]?\b.*\.(txt|json|yaml|yml)$/i,
13
- /\btoken\b.*\.(txt|json|env)$/i,
14
- /\b(id_rsa|id_dsa|id_ecdsa|id_ed25519)(\.pub)?$/i,
15
- /\.(pem|key|pfx|p12|p8|pkcs8)$/i,
16
- /\bservice[_-]?account\b.*\.json$/i,
17
- /\bkeystore\b/i,
18
- /\bvault[_-]?token\b/i,
19
- ];
20
-
21
- export function isSensitiveFile(filePath: string): boolean {
22
- const base = pathBasename(filePath);
23
- return SENSITIVE_PATTERNS.some(p => p.test(base) || p.test(filePath));
24
- }