scip-query 0.1.0

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 (330) hide show
  1. package/IMPROVEMENTS.md +143 -0
  2. package/PLAN.md +320 -0
  3. package/README.md +1213 -0
  4. package/dist/chunk-2QZ23IBN.js +55 -0
  5. package/dist/chunk-2QZ23IBN.js.map +1 -0
  6. package/dist/chunk-36OMT7ZJ.js +144 -0
  7. package/dist/chunk-36OMT7ZJ.js.map +1 -0
  8. package/dist/chunk-3E2X7RIE.js +101 -0
  9. package/dist/chunk-3E2X7RIE.js.map +1 -0
  10. package/dist/chunk-3UOUTZQT.js +45 -0
  11. package/dist/chunk-3UOUTZQT.js.map +1 -0
  12. package/dist/chunk-3ZZJVBIO.js +88 -0
  13. package/dist/chunk-3ZZJVBIO.js.map +1 -0
  14. package/dist/chunk-4TYLS5XX.js +10 -0
  15. package/dist/chunk-4TYLS5XX.js.map +1 -0
  16. package/dist/chunk-5FGUEU7N.js +101 -0
  17. package/dist/chunk-5FGUEU7N.js.map +1 -0
  18. package/dist/chunk-5WTJAXY2.js +61 -0
  19. package/dist/chunk-5WTJAXY2.js.map +1 -0
  20. package/dist/chunk-6NBLIDF4.js +24 -0
  21. package/dist/chunk-6NBLIDF4.js.map +1 -0
  22. package/dist/chunk-6SXADWLW.js +43 -0
  23. package/dist/chunk-6SXADWLW.js.map +1 -0
  24. package/dist/chunk-6VJ6Q7IE.js +65 -0
  25. package/dist/chunk-6VJ6Q7IE.js.map +1 -0
  26. package/dist/chunk-7OZPA5OO.js +258 -0
  27. package/dist/chunk-7OZPA5OO.js.map +1 -0
  28. package/dist/chunk-BEPIEVLR.js +76 -0
  29. package/dist/chunk-BEPIEVLR.js.map +1 -0
  30. package/dist/chunk-BFSCMC22.js +42 -0
  31. package/dist/chunk-BFSCMC22.js.map +1 -0
  32. package/dist/chunk-BP2ATLK2.js +110 -0
  33. package/dist/chunk-BP2ATLK2.js.map +1 -0
  34. package/dist/chunk-CM454WL3.js +114 -0
  35. package/dist/chunk-CM454WL3.js.map +1 -0
  36. package/dist/chunk-DCKMSTJ4.js +74 -0
  37. package/dist/chunk-DCKMSTJ4.js.map +1 -0
  38. package/dist/chunk-DEZKCZXD.js +40 -0
  39. package/dist/chunk-DEZKCZXD.js.map +1 -0
  40. package/dist/chunk-DVWGWHFW.js +99 -0
  41. package/dist/chunk-DVWGWHFW.js.map +1 -0
  42. package/dist/chunk-EMDQWNYR.js +102 -0
  43. package/dist/chunk-EMDQWNYR.js.map +1 -0
  44. package/dist/chunk-FFSWWE5O.js +33 -0
  45. package/dist/chunk-FFSWWE5O.js.map +1 -0
  46. package/dist/chunk-FGXRVW7G.js +73 -0
  47. package/dist/chunk-FGXRVW7G.js.map +1 -0
  48. package/dist/chunk-FUHJCHS4.js +158 -0
  49. package/dist/chunk-FUHJCHS4.js.map +1 -0
  50. package/dist/chunk-GJFURBEW.js +64 -0
  51. package/dist/chunk-GJFURBEW.js.map +1 -0
  52. package/dist/chunk-GTILYBH6.js +102 -0
  53. package/dist/chunk-GTILYBH6.js.map +1 -0
  54. package/dist/chunk-JJP7KQND.js +1 -0
  55. package/dist/chunk-JJP7KQND.js.map +1 -0
  56. package/dist/chunk-JKP5GH6T.js +213 -0
  57. package/dist/chunk-JKP5GH6T.js.map +1 -0
  58. package/dist/chunk-KCBMVQL5.js +38 -0
  59. package/dist/chunk-KCBMVQL5.js.map +1 -0
  60. package/dist/chunk-KVSW5KYP.js +78 -0
  61. package/dist/chunk-KVSW5KYP.js.map +1 -0
  62. package/dist/chunk-LAWMH22O.js +172 -0
  63. package/dist/chunk-LAWMH22O.js.map +1 -0
  64. package/dist/chunk-LB7OS35Q.js +72 -0
  65. package/dist/chunk-LB7OS35Q.js.map +1 -0
  66. package/dist/chunk-LUSIFBXO.js +57 -0
  67. package/dist/chunk-LUSIFBXO.js.map +1 -0
  68. package/dist/chunk-MBVNHJVN.js +44 -0
  69. package/dist/chunk-MBVNHJVN.js.map +1 -0
  70. package/dist/chunk-MGNMHKX3.js +15 -0
  71. package/dist/chunk-MGNMHKX3.js.map +1 -0
  72. package/dist/chunk-N5KEREIA.js +41 -0
  73. package/dist/chunk-N5KEREIA.js.map +1 -0
  74. package/dist/chunk-NDSQYIWT.js +71 -0
  75. package/dist/chunk-NDSQYIWT.js.map +1 -0
  76. package/dist/chunk-NUZ4OMU3.js +28 -0
  77. package/dist/chunk-NUZ4OMU3.js.map +1 -0
  78. package/dist/chunk-QOV2R2WT.js +170 -0
  79. package/dist/chunk-QOV2R2WT.js.map +1 -0
  80. package/dist/chunk-SEFSL2GF.js +78 -0
  81. package/dist/chunk-SEFSL2GF.js.map +1 -0
  82. package/dist/chunk-T6ARFSBZ.js +103 -0
  83. package/dist/chunk-T6ARFSBZ.js.map +1 -0
  84. package/dist/chunk-TBP6BICL.js +46 -0
  85. package/dist/chunk-TBP6BICL.js.map +1 -0
  86. package/dist/chunk-TDNNOR6D.js +97 -0
  87. package/dist/chunk-TDNNOR6D.js.map +1 -0
  88. package/dist/chunk-TSPZOMHC.js +195 -0
  89. package/dist/chunk-TSPZOMHC.js.map +1 -0
  90. package/dist/chunk-UNTPVD36.js +55 -0
  91. package/dist/chunk-UNTPVD36.js.map +1 -0
  92. package/dist/chunk-VRUJH4BO.js +88 -0
  93. package/dist/chunk-VRUJH4BO.js.map +1 -0
  94. package/dist/chunk-VZ7AMAFL.js +76 -0
  95. package/dist/chunk-VZ7AMAFL.js.map +1 -0
  96. package/dist/chunk-XFXDXEUN.js +24 -0
  97. package/dist/chunk-XFXDXEUN.js.map +1 -0
  98. package/dist/chunk-YZAA4LYG.js +169 -0
  99. package/dist/chunk-YZAA4LYG.js.map +1 -0
  100. package/dist/chunk-Z73NYSBZ.js +92 -0
  101. package/dist/chunk-Z73NYSBZ.js.map +1 -0
  102. package/dist/chunk-ZJRYBOEE.js +125 -0
  103. package/dist/chunk-ZJRYBOEE.js.map +1 -0
  104. package/dist/cli.js +5798 -0
  105. package/dist/cli.js.map +1 -0
  106. package/dist/db-BxaevAyc.d.ts +683 -0
  107. package/dist/index.d.ts +254 -0
  108. package/dist/index.js +1271 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/postinstall.js +167 -0
  111. package/dist/postinstall.js.map +1 -0
  112. package/dist/queries/affected.d.ts +14 -0
  113. package/dist/queries/affected.js +9 -0
  114. package/dist/queries/affected.js.map +1 -0
  115. package/dist/queries/bottlenecks.d.ts +18 -0
  116. package/dist/queries/bottlenecks.js +8 -0
  117. package/dist/queries/bottlenecks.js.map +1 -0
  118. package/dist/queries/by-kind.d.ts +20 -0
  119. package/dist/queries/by-kind.js +10 -0
  120. package/dist/queries/by-kind.js.map +1 -0
  121. package/dist/queries/call-graph.d.ts +13 -0
  122. package/dist/queries/call-graph.js +9 -0
  123. package/dist/queries/call-graph.js.map +1 -0
  124. package/dist/queries/change-surface.d.ts +10 -0
  125. package/dist/queries/change-surface.js +9 -0
  126. package/dist/queries/change-surface.js.map +1 -0
  127. package/dist/queries/clean-signature.d.ts +9 -0
  128. package/dist/queries/clean-signature.js +7 -0
  129. package/dist/queries/clean-signature.js.map +1 -0
  130. package/dist/queries/code.d.ts +17 -0
  131. package/dist/queries/code.js +9 -0
  132. package/dist/queries/code.js.map +1 -0
  133. package/dist/queries/complexity-hotspots.d.ts +19 -0
  134. package/dist/queries/complexity-hotspots.js +9 -0
  135. package/dist/queries/complexity-hotspots.js.map +1 -0
  136. package/dist/queries/complexity.d.ts +13 -0
  137. package/dist/queries/complexity.js +9 -0
  138. package/dist/queries/complexity.js.map +1 -0
  139. package/dist/queries/convergence.d.ts +11 -0
  140. package/dist/queries/convergence.js +9 -0
  141. package/dist/queries/convergence.js.map +1 -0
  142. package/dist/queries/coupling.d.ts +17 -0
  143. package/dist/queries/coupling.js +9 -0
  144. package/dist/queries/coupling.js.map +1 -0
  145. package/dist/queries/cycles.d.ts +16 -0
  146. package/dist/queries/cycles.js +8 -0
  147. package/dist/queries/cycles.js.map +1 -0
  148. package/dist/queries/dataflow.d.ts +19 -0
  149. package/dist/queries/dataflow.js +9 -0
  150. package/dist/queries/dataflow.js.map +1 -0
  151. package/dist/queries/dead.d.ts +10 -0
  152. package/dist/queries/dead.js +9 -0
  153. package/dist/queries/dead.js.map +1 -0
  154. package/dist/queries/deep-chains.d.ts +16 -0
  155. package/dist/queries/deep-chains.js +8 -0
  156. package/dist/queries/deep-chains.js.map +1 -0
  157. package/dist/queries/deps.d.ts +9 -0
  158. package/dist/queries/deps.js +9 -0
  159. package/dist/queries/deps.js.map +1 -0
  160. package/dist/queries/diff-impact.d.ts +13 -0
  161. package/dist/queries/diff-impact.js +9 -0
  162. package/dist/queries/diff-impact.js.map +1 -0
  163. package/dist/queries/doc-coverage.d.ts +14 -0
  164. package/dist/queries/doc-coverage.js +8 -0
  165. package/dist/queries/doc-coverage.js.map +1 -0
  166. package/dist/queries/drift.d.ts +25 -0
  167. package/dist/queries/drift.js +8 -0
  168. package/dist/queries/drift.js.map +1 -0
  169. package/dist/queries/extract-candidates.d.ts +25 -0
  170. package/dist/queries/extract-candidates.js +9 -0
  171. package/dist/queries/extract-candidates.js.map +1 -0
  172. package/dist/queries/fan.d.ts +29 -0
  173. package/dist/queries/fan.js +14 -0
  174. package/dist/queries/fan.js.map +1 -0
  175. package/dist/queries/files.d.ts +6 -0
  176. package/dist/queries/files.js +7 -0
  177. package/dist/queries/files.js.map +1 -0
  178. package/dist/queries/health.d.ts +18 -0
  179. package/dist/queries/health.js +21 -0
  180. package/dist/queries/health.js.map +1 -0
  181. package/dist/queries/hierarchy.d.ts +13 -0
  182. package/dist/queries/hierarchy.js +8 -0
  183. package/dist/queries/hierarchy.js.map +1 -0
  184. package/dist/queries/hotspots.d.ts +13 -0
  185. package/dist/queries/hotspots.js +8 -0
  186. package/dist/queries/hotspots.js.map +1 -0
  187. package/dist/queries/imports.d.ts +19 -0
  188. package/dist/queries/imports.js +12 -0
  189. package/dist/queries/imports.js.map +1 -0
  190. package/dist/queries/index.d.ts +47 -0
  191. package/dist/queries/index.js +207 -0
  192. package/dist/queries/index.js.map +1 -0
  193. package/dist/queries/isolated.d.ts +14 -0
  194. package/dist/queries/isolated.js +9 -0
  195. package/dist/queries/isolated.js.map +1 -0
  196. package/dist/queries/members.d.ts +10 -0
  197. package/dist/queries/members.js +8 -0
  198. package/dist/queries/members.js.map +1 -0
  199. package/dist/queries/methods.d.ts +6 -0
  200. package/dist/queries/methods.js +8 -0
  201. package/dist/queries/methods.js.map +1 -0
  202. package/dist/queries/outline.d.ts +10 -0
  203. package/dist/queries/outline.js +8 -0
  204. package/dist/queries/outline.js.map +1 -0
  205. package/dist/queries/passthrough-candidates.d.ts +18 -0
  206. package/dist/queries/passthrough-candidates.js +9 -0
  207. package/dist/queries/passthrough-candidates.js.map +1 -0
  208. package/dist/queries/redundant-reexports.d.ts +22 -0
  209. package/dist/queries/redundant-reexports.js +8 -0
  210. package/dist/queries/redundant-reexports.js.map +1 -0
  211. package/dist/queries/refs.d.ts +6 -0
  212. package/dist/queries/refs.js +7 -0
  213. package/dist/queries/refs.js.map +1 -0
  214. package/dist/queries/similar-chains.d.ts +29 -0
  215. package/dist/queries/similar-chains.js +8 -0
  216. package/dist/queries/similar-chains.js.map +1 -0
  217. package/dist/queries/similar-files.d.ts +19 -0
  218. package/dist/queries/similar-files.js +8 -0
  219. package/dist/queries/similar-files.js.map +1 -0
  220. package/dist/queries/similar-signatures.d.ts +21 -0
  221. package/dist/queries/similar-signatures.js +8 -0
  222. package/dist/queries/similar-signatures.js.map +1 -0
  223. package/dist/queries/similar.d.ts +34 -0
  224. package/dist/queries/similar.js +11 -0
  225. package/dist/queries/similar.js.map +1 -0
  226. package/dist/queries/slice.d.ts +21 -0
  227. package/dist/queries/slice.js +9 -0
  228. package/dist/queries/slice.js.map +1 -0
  229. package/dist/queries/stale-abstractions.d.ts +18 -0
  230. package/dist/queries/stale-abstractions.js +9 -0
  231. package/dist/queries/stale-abstractions.js.map +1 -0
  232. package/dist/queries/stats.d.ts +6 -0
  233. package/dist/queries/stats.js +7 -0
  234. package/dist/queries/stats.js.map +1 -0
  235. package/dist/queries/surface.d.ts +7 -0
  236. package/dist/queries/surface.js +8 -0
  237. package/dist/queries/surface.js.map +1 -0
  238. package/dist/queries/symbols.d.ts +6 -0
  239. package/dist/queries/symbols.js +9 -0
  240. package/dist/queries/symbols.js.map +1 -0
  241. package/dist/queries/system.d.ts +7 -0
  242. package/dist/queries/system.js +9 -0
  243. package/dist/queries/system.js.map +1 -0
  244. package/dist/queries/test-coverage.d.ts +22 -0
  245. package/dist/queries/test-coverage.js +11 -0
  246. package/dist/queries/test-coverage.js.map +1 -0
  247. package/dist/queries/trace.d.ts +6 -0
  248. package/dist/queries/trace.js +8 -0
  249. package/dist/queries/trace.js.map +1 -0
  250. package/dist/queries/wrapper-candidates.d.ts +17 -0
  251. package/dist/queries/wrapper-candidates.js +9 -0
  252. package/dist/queries/wrapper-candidates.js.map +1 -0
  253. package/dist/reindex-worker.js +368 -0
  254. package/dist/reindex-worker.js.map +1 -0
  255. package/docs/AGENT_GUIDE.md +359 -0
  256. package/package.json +70 -0
  257. package/reports/debloat/2026-04-10-scip-query-self-audit.md +161 -0
  258. package/skills/concrete-plan/SKILL.md +318 -0
  259. package/skills/scip-debloat/SKILL.md +413 -0
  260. package/skills/scip-explore/SKILL.md +235 -0
  261. package/skills/scip-verify/SKILL.md +323 -0
  262. package/src/cli.ts +1480 -0
  263. package/src/config.ts +117 -0
  264. package/src/db.ts +127 -0
  265. package/src/gitignore-filter.ts +143 -0
  266. package/src/index.ts +11 -0
  267. package/src/postinstall.ts +8 -0
  268. package/src/queries/affected.ts +86 -0
  269. package/src/queries/bottlenecks.ts +67 -0
  270. package/src/queries/by-kind.ts +204 -0
  271. package/src/queries/call-graph.ts +66 -0
  272. package/src/queries/change-surface.ts +110 -0
  273. package/src/queries/clean-signature.ts +22 -0
  274. package/src/queries/code.ts +101 -0
  275. package/src/queries/complexity-hotspots.ts +119 -0
  276. package/src/queries/complexity.ts +152 -0
  277. package/src/queries/convergence.ts +82 -0
  278. package/src/queries/coupling.ts +99 -0
  279. package/src/queries/cycles.ts +78 -0
  280. package/src/queries/dataflow.ts +128 -0
  281. package/src/queries/dead.ts +122 -0
  282. package/src/queries/deep-chains.ts +59 -0
  283. package/src/queries/deps.ts +46 -0
  284. package/src/queries/diff-impact.ts +204 -0
  285. package/src/queries/doc-coverage.ts +86 -0
  286. package/src/queries/drift.ts +224 -0
  287. package/src/queries/extract-candidates.ts +167 -0
  288. package/src/queries/fan.ts +148 -0
  289. package/src/queries/files.ts +16 -0
  290. package/src/queries/health.ts +324 -0
  291. package/src/queries/hierarchy.ts +49 -0
  292. package/src/queries/hotspots.ts +53 -0
  293. package/src/queries/imports.ts +95 -0
  294. package/src/queries/index.ts +45 -0
  295. package/src/queries/isolated.ts +67 -0
  296. package/src/queries/members.ts +54 -0
  297. package/src/queries/methods.ts +27 -0
  298. package/src/queries/outline.ts +52 -0
  299. package/src/queries/passthrough-candidates.ts +94 -0
  300. package/src/queries/redundant-reexports.ts +170 -0
  301. package/src/queries/refs.ts +27 -0
  302. package/src/queries/similar-chains.ts +314 -0
  303. package/src/queries/similar-files.ts +140 -0
  304. package/src/queries/similar-signatures.ts +151 -0
  305. package/src/queries/similar.ts +305 -0
  306. package/src/queries/slice.ts +154 -0
  307. package/src/queries/stale-abstractions.ts +82 -0
  308. package/src/queries/stats.ts +22 -0
  309. package/src/queries/surface.ts +34 -0
  310. package/src/queries/symbols.ts +39 -0
  311. package/src/queries/system.ts +86 -0
  312. package/src/queries/test-coverage.ts +106 -0
  313. package/src/queries/trace.ts +55 -0
  314. package/src/queries/wrapper-candidates.ts +112 -0
  315. package/src/query-support.ts +226 -0
  316. package/src/reindex/detect.ts +58 -0
  317. package/src/reindex/index.ts +153 -0
  318. package/src/reindex/indexers.ts +220 -0
  319. package/src/reindex/install.ts +125 -0
  320. package/src/reindex-worker.ts +35 -0
  321. package/src/setup.ts +202 -0
  322. package/src/symbol-parser.ts +278 -0
  323. package/src/types.ts +654 -0
  324. package/src/watch.ts +274 -0
  325. package/tests/gitignore-filter.test.ts +48 -0
  326. package/tests/queries.test.ts +300 -0
  327. package/tests/symbol-parser.test.ts +157 -0
  328. package/tsconfig.json +20 -0
  329. package/tsup.config.ts +40 -0
  330. package/vitest.config.ts +7 -0
@@ -0,0 +1,11 @@
1
+ import { S as ScipDatabase, f as ConvergenceResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Given two similar symbols, show what a consolidated version would look like.
6
+ * The shared callee set becomes the common body. The unique callees become
7
+ * the parameterization points.
8
+ */
9
+ declare function convergence(db: ScipDatabase, symbolPatternA: string, symbolPatternB: string): ConvergenceResult | null;
10
+
11
+ export { convergence };
@@ -0,0 +1,9 @@
1
+ import {
2
+ convergence
3
+ } from "../chunk-LB7OS35Q.js";
4
+ import "../chunk-FUHJCHS4.js";
5
+ import "../chunk-QOV2R2WT.js";
6
+ export {
7
+ convergence
8
+ };
9
+ //# sourceMappingURL=convergence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,17 @@
1
+ import { S as ScipDatabase, g as CouplingResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Measure coupling between two files: how many symbols do they share
6
+ * (symbols defined in one and referenced in the other, or vice versa).
7
+ */
8
+ declare function coupling(db: ScipDatabase, file1: string, file2: string): CouplingResult;
9
+ /**
10
+ * Find the most coupled file pairs in the codebase.
11
+ */
12
+ declare function topCoupling(db: ScipDatabase, opts?: {
13
+ limit?: number;
14
+ scope?: string;
15
+ }): CouplingResult[];
16
+
17
+ export { coupling, topCoupling };
@@ -0,0 +1,9 @@
1
+ import {
2
+ coupling,
3
+ topCoupling
4
+ } from "../chunk-KVSW5KYP.js";
5
+ export {
6
+ coupling,
7
+ topCoupling
8
+ };
9
+ //# sourceMappingURL=coupling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,16 @@
1
+ import { S as ScipDatabase, h as CycleResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Detect circular dependency chains between files.
6
+ * A cycle exists when file A depends on B, B depends on C, and C depends on A.
7
+ *
8
+ * Uses the same dependency edges as the `deps` command (symbol definitions
9
+ * referenced across files), then runs DFS cycle detection.
10
+ */
11
+ declare function cycles(db: ScipDatabase, opts?: {
12
+ scope?: string;
13
+ maxDepth?: number;
14
+ }): CycleResult[];
15
+
16
+ export { cycles };
@@ -0,0 +1,8 @@
1
+ import {
2
+ cycles
3
+ } from "../chunk-5WTJAXY2.js";
4
+ import "../chunk-FUHJCHS4.js";
5
+ export {
6
+ cycles
7
+ };
8
+ //# sourceMappingURL=cycles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,19 @@
1
+ import { S as ScipDatabase, D as DataflowResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Reference-level dataflow analysis: where does data around this symbol
6
+ * come from and where does it go?
7
+ *
8
+ * This is not value-level dataflow (we can't trace x = foo(); bar(x);
9
+ * as a chain). Instead it shows:
10
+ * - Where the symbol is defined and used
11
+ * - What other symbols appear in the same enclosing scope (co-occurring data)
12
+ * - What feeds into the function that defines it (producers)
13
+ * - What consumes the function that uses it (consumers)
14
+ *
15
+ * Language-agnostic: works with any SCIP index.
16
+ */
17
+ declare function dataflow(db: ScipDatabase, symbolPattern: string): DataflowResult | null;
18
+
19
+ export { dataflow };
@@ -0,0 +1,9 @@
1
+ import {
2
+ dataflow
3
+ } from "../chunk-T6ARFSBZ.js";
4
+ import "../chunk-FUHJCHS4.js";
5
+ import "../chunk-QOV2R2WT.js";
6
+ export {
7
+ dataflow
8
+ };
9
+ //# sourceMappingURL=dataflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,10 @@
1
+ import { S as ScipDatabase, i as DeadOptions, j as DeadSummary } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Find dead exports: symbols defined locally with no cross-file references.
6
+ * Language-agnostic — works with any SCIP index.
7
+ */
8
+ declare function dead(db: ScipDatabase, opts?: DeadOptions): DeadSummary;
9
+
10
+ export { dead };
@@ -0,0 +1,9 @@
1
+ import {
2
+ dead
3
+ } from "../chunk-5FGUEU7N.js";
4
+ import "../chunk-FUHJCHS4.js";
5
+ import "../chunk-QOV2R2WT.js";
6
+ export {
7
+ dead
8
+ };
9
+ //# sourceMappingURL=dead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,16 @@
1
+ import { S as ScipDatabase, k as DeepChainResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Find the longest transitive dependency chains between files.
6
+ * A chain A → B → C → D means A depends on B, B on C, C on D.
7
+ *
8
+ * Long chains = high coupling depth = changes at the end ripple through many layers.
9
+ */
10
+ declare function deepChains(db: ScipDatabase, opts?: {
11
+ limit?: number;
12
+ scope?: string;
13
+ minDepth?: number;
14
+ }): DeepChainResult[];
15
+
16
+ export { deepChains };
@@ -0,0 +1,8 @@
1
+ import {
2
+ deepChains
3
+ } from "../chunk-MBVNHJVN.js";
4
+ import "../chunk-FUHJCHS4.js";
5
+ export {
6
+ deepChains
7
+ };
8
+ //# sourceMappingURL=deep-chains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,9 @@
1
+ import { S as ScipDatabase, l as DepResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /** What internal files does this file depend on? (forward dependencies) */
5
+ declare function deps(db: ScipDatabase, filePattern: string): DepResult[];
6
+ /** What files depend on this file/module? (reverse dependencies) */
7
+ declare function rdeps(db: ScipDatabase, filePattern: string): DepResult[];
8
+
9
+ export { deps, rdeps };
@@ -0,0 +1,9 @@
1
+ import {
2
+ deps,
3
+ rdeps
4
+ } from "../chunk-N5KEREIA.js";
5
+ export {
6
+ deps,
7
+ rdeps
8
+ };
9
+ //# sourceMappingURL=deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,13 @@
1
+ import { S as ScipDatabase, m as DiffImpactResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Given a git diff, compute the affected symbol set.
6
+ * Finds all symbols defined in changed files, their fan-in,
7
+ * the files that consume them, and test coverage gaps.
8
+ */
9
+ declare function diffImpact(db: ScipDatabase, opts?: {
10
+ base?: string;
11
+ }): DiffImpactResult;
12
+
13
+ export { diffImpact };
@@ -0,0 +1,9 @@
1
+ import {
2
+ diffImpact
3
+ } from "../chunk-YZAA4LYG.js";
4
+ import "../chunk-FUHJCHS4.js";
5
+ import "../chunk-QOV2R2WT.js";
6
+ export {
7
+ diffImpact
8
+ };
9
+ //# sourceMappingURL=diff-impact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,14 @@
1
+ import { S as ScipDatabase, n as DocCoverageResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Check documentation coverage: what percentage of symbols have doc strings?
6
+ * Reports overall stats and lists undocumented symbols.
7
+ */
8
+ declare function docCoverage(db: ScipDatabase, opts?: {
9
+ scope?: string;
10
+ minLoc?: number;
11
+ limit?: number;
12
+ }): DocCoverageResult;
13
+
14
+ export { docCoverage };
@@ -0,0 +1,8 @@
1
+ import {
2
+ docCoverage
3
+ } from "../chunk-FGXRVW7G.js";
4
+ import "../chunk-QOV2R2WT.js";
5
+ export {
6
+ docCoverage
7
+ };
8
+ //# sourceMappingURL=doc-coverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,25 @@
1
+ import { S as ScipDatabase, o as DriftSummary } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Detect structural drift using the reference graph, not just import patterns.
6
+ *
7
+ * Three types of drift, each detecting a real problem:
8
+ *
9
+ * 1. **Unused imports** — file depends on a module but never references
10
+ * any of its symbols. Dead dependency, safe to remove.
11
+ *
12
+ * 2. **Layer violations** — file imports from a directory it shouldn't
13
+ * based on the project's directory structure (e.g., a query importing
14
+ * from reindex, a helper importing from CLI). Architectural decay.
15
+ *
16
+ * 3. **Pattern deviations** — file imports something no sibling does,
17
+ * suggesting it's reaching outside its expected scope. Only flagged
18
+ * when the file is the ONLY one in its directory with that dep.
19
+ */
20
+ declare function drift(db: ScipDatabase, opts?: {
21
+ scope?: string;
22
+ minDeviation?: number;
23
+ }): DriftSummary;
24
+
25
+ export { drift };
@@ -0,0 +1,8 @@
1
+ import {
2
+ drift
3
+ } from "../chunk-36OMT7ZJ.js";
4
+ import "../chunk-FUHJCHS4.js";
5
+ export {
6
+ drift
7
+ };
8
+ //# sourceMappingURL=drift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,25 @@
1
+ import { S as ScipDatabase, E as ExtractCandidate } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Find functions with natural extraction seams.
6
+ *
7
+ * A large function that references two distinct groups of symbols —
8
+ * where group A's symbols are never co-referenced with group B's —
9
+ * has a natural extraction boundary. The isolated cluster can likely
10
+ * be pulled into its own function.
11
+ *
12
+ * We detect this by:
13
+ * 1. Finding all callees of a function
14
+ * 2. Building a co-occurrence graph (which callees appear in the same chunk)
15
+ * 3. Finding connected components — disconnected components = extraction seams
16
+ * 4. Scoring each cluster by how isolated it is from the rest
17
+ */
18
+ declare function extractCandidates(db: ScipDatabase, opts?: {
19
+ scope?: string;
20
+ minLoc?: number;
21
+ minCallees?: number;
22
+ limit?: number;
23
+ }): ExtractCandidate[];
24
+
25
+ export { extractCandidates };
@@ -0,0 +1,9 @@
1
+ import {
2
+ extractCandidates
3
+ } from "../chunk-CM454WL3.js";
4
+ import "../chunk-FUHJCHS4.js";
5
+ import "../chunk-QOV2R2WT.js";
6
+ export {
7
+ extractCandidates
8
+ };
9
+ //# sourceMappingURL=extract-candidates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,29 @@
1
+ import { S as ScipDatabase, F as FanResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Fan-in: how many distinct files reference this symbol.
6
+ * High fan-in = widely depended upon = high blast radius for changes.
7
+ */
8
+ declare function fanIn(db: ScipDatabase, symbolPattern: string): FanResult[];
9
+ /**
10
+ * Fan-out: how many external symbols does this file reference.
11
+ * High fan-out = depends on many things = fragile to upstream changes.
12
+ */
13
+ declare function fanOut(db: ScipDatabase, filePattern: string): FanResult[];
14
+ /**
15
+ * Top fan-in across the whole codebase — the most depended-on symbols.
16
+ */
17
+ declare function topFanIn(db: ScipDatabase, opts?: {
18
+ limit?: number;
19
+ scope?: string;
20
+ }): FanResult[];
21
+ /**
22
+ * Top fan-out across the whole codebase — files that depend on the most external symbols.
23
+ */
24
+ declare function topFanOut(db: ScipDatabase, opts?: {
25
+ limit?: number;
26
+ scope?: string;
27
+ }): FanResult[];
28
+
29
+ export { fanIn, fanOut, topFanIn, topFanOut };
@@ -0,0 +1,14 @@
1
+ import {
2
+ fanIn,
3
+ fanOut,
4
+ topFanIn,
5
+ topFanOut
6
+ } from "../chunk-GTILYBH6.js";
7
+ import "../chunk-QOV2R2WT.js";
8
+ export {
9
+ fanIn,
10
+ fanOut,
11
+ topFanIn,
12
+ topFanOut
13
+ };
14
+ //# sourceMappingURL=fan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,6 @@
1
+ import { S as ScipDatabase, p as FileResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ declare function files(db: ScipDatabase, pattern: string): FileResult[];
5
+
6
+ export { files };
@@ -0,0 +1,7 @@
1
+ import {
2
+ files
3
+ } from "../chunk-MGNMHKX3.js";
4
+ export {
5
+ files
6
+ };
7
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,18 @@
1
+ import { S as ScipDatabase, H as HealthReport } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Single composite health report that runs all de-bloat analyses
6
+ * and produces a prioritized action list.
7
+ *
8
+ * The scoring formula accounts for common false positives:
9
+ * - Entry points (CLI, workers, barrels) appearing as "dead code"
10
+ * - Typed result interfaces with 1 consumer (normal for APIs)
11
+ * - Consistent import patterns across sibling modules (not duplication)
12
+ * - Barrel and orchestrator files deviating from sibling patterns (expected)
13
+ */
14
+ declare function health(db: ScipDatabase, opts?: {
15
+ scope?: string;
16
+ }): HealthReport;
17
+
18
+ export { health };
@@ -0,0 +1,21 @@
1
+ import {
2
+ health
3
+ } from "../chunk-7OZPA5OO.js";
4
+ import "../chunk-GJFURBEW.js";
5
+ import "../chunk-XFXDXEUN.js";
6
+ import "../chunk-3ZZJVBIO.js";
7
+ import "../chunk-TDNNOR6D.js";
8
+ import "../chunk-NDSQYIWT.js";
9
+ import "../chunk-TSPZOMHC.js";
10
+ import "../chunk-LUSIFBXO.js";
11
+ import "../chunk-36OMT7ZJ.js";
12
+ import "../chunk-CM454WL3.js";
13
+ import "../chunk-EMDQWNYR.js";
14
+ import "../chunk-5WTJAXY2.js";
15
+ import "../chunk-5FGUEU7N.js";
16
+ import "../chunk-FUHJCHS4.js";
17
+ import "../chunk-QOV2R2WT.js";
18
+ export {
19
+ health
20
+ };
21
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,13 @@
1
+ import { S as ScipDatabase, q as HierarchyNode } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Walk the enclosing_symbol chain upward to show a symbol's ancestry.
6
+ * e.g., method → class → module → file
7
+ *
8
+ * Falls back to parsing the SCIP symbol descriptor chain when
9
+ * enclosing_symbol is not populated by the indexer.
10
+ */
11
+ declare function hierarchy(db: ScipDatabase, symbolPattern: string): HierarchyNode[];
12
+
13
+ export { hierarchy };
@@ -0,0 +1,8 @@
1
+ import {
2
+ hierarchy
3
+ } from "../chunk-DEZKCZXD.js";
4
+ import "../chunk-QOV2R2WT.js";
5
+ export {
6
+ hierarchy
7
+ };
8
+ //# sourceMappingURL=hierarchy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,13 @@
1
+ import { S as ScipDatabase, r as HotspotResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * Find the most-referenced symbols in the codebase — the choke points
6
+ * where changes have the widest blast radius.
7
+ */
8
+ declare function hotspots(db: ScipDatabase, opts?: {
9
+ limit?: number;
10
+ scope?: string;
11
+ }): HotspotResult[];
12
+
13
+ export { hotspots };
@@ -0,0 +1,8 @@
1
+ import {
2
+ hotspots
3
+ } from "../chunk-BFSCMC22.js";
4
+ import "../chunk-QOV2R2WT.js";
5
+ export {
6
+ hotspots
7
+ };
8
+ //# sourceMappingURL=hotspots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,19 @@
1
+ import { S as ScipDatabase, I as ImportResult, U as UnusedImportResult } from '../db-BxaevAyc.js';
2
+ import 'better-sqlite3';
3
+
4
+ /**
5
+ * What symbols does this file import?
6
+ * Uses role=2 (import) from the SCIP mentions table.
7
+ */
8
+ declare function imports(db: ScipDatabase, filePattern: string): ImportResult[];
9
+ /**
10
+ * Which files import this symbol?
11
+ */
12
+ declare function importedBy(db: ScipDatabase, symbolPattern: string): ImportResult[];
13
+ /**
14
+ * Find imports in a file that are never referenced (role=0) in the same file.
15
+ * These are likely unused imports.
16
+ */
17
+ declare function unusedImports(db: ScipDatabase, filePattern: string): UnusedImportResult[];
18
+
19
+ export { importedBy, imports, unusedImports };
@@ -0,0 +1,12 @@
1
+ import {
2
+ importedBy,
3
+ imports,
4
+ unusedImports
5
+ } from "../chunk-BEPIEVLR.js";
6
+ import "../chunk-QOV2R2WT.js";
7
+ export {
8
+ importedBy,
9
+ imports,
10
+ unusedImports
11
+ };
12
+ //# sourceMappingURL=imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,47 @@
1
+ export { stats } from './stats.js';
2
+ export { files } from './files.js';
3
+ export { symbols } from './symbols.js';
4
+ export { methods } from './methods.js';
5
+ export { refs } from './refs.js';
6
+ export { trace } from './trace.js';
7
+ export { deps, rdeps } from './deps.js';
8
+ export { system } from './system.js';
9
+ export { surface } from './surface.js';
10
+ export { dead } from './dead.js';
11
+ export { hotspots } from './hotspots.js';
12
+ export { importedBy, imports, unusedImports } from './imports.js';
13
+ export { outline } from './outline.js';
14
+ export { members } from './members.js';
15
+ export { fanIn, fanOut, topFanIn, topFanOut } from './fan.js';
16
+ export { coupling, topCoupling } from './coupling.js';
17
+ export { cycles } from './cycles.js';
18
+ export { bottlenecks } from './bottlenecks.js';
19
+ export { isolated } from './isolated.js';
20
+ export { byKind, kindCounts } from './by-kind.js';
21
+ export { testCoverage, testCoverageSummary } from './test-coverage.js';
22
+ export { docCoverage } from './doc-coverage.js';
23
+ export { deepChains } from './deep-chains.js';
24
+ export { hierarchy } from './hierarchy.js';
25
+ export { callGraph } from './call-graph.js';
26
+ export { similar, similarAll } from './similar.js';
27
+ export { similarFiles } from './similar-files.js';
28
+ export { similarChains } from './similar-chains.js';
29
+ export { extractCandidates } from './extract-candidates.js';
30
+ export { affected } from './affected.js';
31
+ export { changeSurface } from './change-surface.js';
32
+ export { diffImpact } from './diff-impact.js';
33
+ export { drift } from './drift.js';
34
+ export { wrapperCandidates } from './wrapper-candidates.js';
35
+ export { passthroughCandidates } from './passthrough-candidates.js';
36
+ export { staleAbstractions } from './stale-abstractions.js';
37
+ export { complexityHotspots } from './complexity-hotspots.js';
38
+ export { health } from './health.js';
39
+ export { convergence } from './convergence.js';
40
+ export { code } from './code.js';
41
+ export { complexity } from './complexity.js';
42
+ export { dataflow } from './dataflow.js';
43
+ export { slice } from './slice.js';
44
+ export { redundantReexports } from './redundant-reexports.js';
45
+ export { similarSignatures } from './similar-signatures.js';
46
+ import '../db-BxaevAyc.js';
47
+ import 'better-sqlite3';