scip-query 0.10.11 → 0.11.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 (374) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/{vendor/scip/LICENSE.scip → LICENSE} +1 -0
  3. package/README.md +168 -55
  4. package/dist/augment-vue-worker.js +1 -1
  5. package/dist/chunk-2VSDXOG5.js +2 -0
  6. package/dist/chunk-343O6EVV.js +2 -0
  7. package/dist/chunk-3KDUITBE.js +7 -0
  8. package/dist/chunk-3T2FNHIU.js +2 -0
  9. package/dist/chunk-3V6JQQM5.js +2 -0
  10. package/dist/chunk-5AAAEZ2Z.js +2 -0
  11. package/dist/chunk-6Q6OFLFQ.js +8 -0
  12. package/dist/chunk-6XA4LDHY.js +2 -0
  13. package/dist/chunk-75X52JTA.js +2 -0
  14. package/dist/{chunk-54KGX7EX.js → chunk-7HB3CZFD.js} +2 -2
  15. package/dist/chunk-7JZRFDCU.js +2 -0
  16. package/dist/chunk-7XL7J7PT.js +3 -0
  17. package/dist/chunk-ALHNAPS2.js +2 -0
  18. package/dist/{chunk-JATUZIEH.js → chunk-BDRBPG7Y.js} +2 -2
  19. package/dist/chunk-BN5SXXQS.js +40 -0
  20. package/dist/chunk-C4ICAIJ4.js +3 -0
  21. package/dist/{chunk-LSET2TXH.js → chunk-CMHYBXJB.js} +2 -2
  22. package/dist/{chunk-YWYFU2V3.js → chunk-DRPAQAFM.js} +6 -6
  23. package/dist/chunk-FERAXG6Y.js +72 -0
  24. package/dist/chunk-FLJJLSGB.js +2 -0
  25. package/dist/chunk-FXG3PHVW.js +9 -0
  26. package/dist/chunk-GCN2P4EJ.js +2 -0
  27. package/dist/chunk-GHXRVCIY.js +21 -0
  28. package/dist/chunk-GNG622H3.js +3 -0
  29. package/dist/chunk-H4LUPLEJ.js +2 -0
  30. package/dist/{chunk-BASVXNY3.js → chunk-H56MGERE.js} +4 -4
  31. package/dist/chunk-H7NSJ7L2.js +5 -0
  32. package/dist/chunk-HINMXZ6J.js +2 -0
  33. package/dist/chunk-HXXMPYEF.js +2 -0
  34. package/dist/{chunk-Z3YYR4OS.js → chunk-HZKMEXA3.js} +2 -2
  35. package/dist/chunk-IFSX6YVU.js +4 -0
  36. package/dist/chunk-ISLWJ4PY.js +10 -0
  37. package/dist/chunk-J5WVNZ6O.js +2 -0
  38. package/dist/chunk-K2HYR5A7.js +3 -0
  39. package/dist/chunk-K6UI6EBZ.js +2 -0
  40. package/dist/chunk-KJCDEDQW.js +2 -0
  41. package/dist/{chunk-Z4HICZGY.js → chunk-KKMOB3OJ.js} +2 -2
  42. package/dist/{chunk-YWOOQ4FF.js → chunk-KMVGRIO2.js} +2 -2
  43. package/dist/chunk-LWOOTRHC.js +2 -0
  44. package/dist/{chunk-EY43NV4M.js → chunk-LZNLRE4X.js} +17 -8
  45. package/dist/chunk-M2YXL62V.js +23 -0
  46. package/dist/chunk-MNEJYEHW.js +3 -0
  47. package/dist/chunk-MTDBHTSF.js +2 -0
  48. package/dist/{chunk-ZQDIXAF5.js → chunk-N2Z3CU7X.js} +2 -2
  49. package/dist/chunk-N7PNFLGY.js +2 -0
  50. package/dist/chunk-NAH5EAZS.js +6 -0
  51. package/dist/chunk-NBXK32I6.js +2 -0
  52. package/dist/chunk-NJJ7AS4F.js +2 -0
  53. package/dist/{chunk-FDEQIPPK.js → chunk-NLMRJ7SI.js} +2 -2
  54. package/dist/chunk-ODVITBYU.js +26 -0
  55. package/dist/chunk-ORBRX2QJ.js +2 -0
  56. package/dist/chunk-P36UR5II.js +2 -0
  57. package/dist/chunk-PYZZBIEU.js +3 -0
  58. package/dist/chunk-PZS6J5YG.js +16 -0
  59. package/dist/{chunk-LM5SHAN4.js → chunk-QARYU7R3.js} +2 -2
  60. package/dist/chunk-QJ3FK4TB.js +38 -0
  61. package/dist/chunk-QXGTGE2C.js +35 -0
  62. package/dist/chunk-QZ4JVECJ.js +2 -0
  63. package/dist/chunk-R3JY4EZ4.js +102 -0
  64. package/dist/{chunk-VOYOYC5T.js → chunk-R5336VHZ.js} +2 -2
  65. package/dist/chunk-RJMXSHKM.js +2 -0
  66. package/dist/chunk-STBXCPKY.js +5 -0
  67. package/dist/chunk-T2FQ4GHD.js +9 -0
  68. package/dist/chunk-TFWDJDGO.js +2 -0
  69. package/dist/chunk-TG7QSYCJ.js +2 -0
  70. package/dist/{chunk-FKCGBZAC.js → chunk-TTS75UF2.js} +5 -5
  71. package/dist/{chunk-BVRS7RKQ.js → chunk-U7I373V4.js} +2 -2
  72. package/dist/chunk-UIKLA3F5.js +2 -0
  73. package/dist/{chunk-P753MDDE.js → chunk-UMPNL7T6.js} +2 -2
  74. package/dist/chunk-URSSPS5H.js +2 -0
  75. package/dist/chunk-VGMUFW3J.js +2 -0
  76. package/dist/chunk-VXTNADIW.js +18 -0
  77. package/dist/chunk-VYF5HA76.js +2 -0
  78. package/dist/chunk-WFGOH2UI.js +43 -0
  79. package/dist/chunk-WGA5BBTA.js +4 -0
  80. package/dist/chunk-WIBFXSYB.js +6 -0
  81. package/dist/chunk-WPSS37EW.js +2 -0
  82. package/dist/chunk-WQHWIVA7.js +3 -0
  83. package/dist/chunk-WS3Z6W3M.js +65 -0
  84. package/dist/chunk-WXVGNFAO.js +2 -0
  85. package/dist/{chunk-6LJHXREW.js → chunk-WZLPXFZU.js} +2 -2
  86. package/dist/chunk-X4O6K47U.js +2 -0
  87. package/dist/chunk-X6OGDTQH.js +2 -0
  88. package/dist/chunk-XEMQUN3Z.js +20 -0
  89. package/dist/{chunk-7B6LP46R.js → chunk-XHWLNQVZ.js} +2 -2
  90. package/dist/chunk-XMR747CP.js +2 -0
  91. package/dist/chunk-Y6L4LXPG.js +2 -0
  92. package/dist/chunk-YCPASUCX.js +2 -0
  93. package/dist/chunk-YZXV3CU3.js +60 -0
  94. package/dist/chunk-ZEKBR4OK.js +10 -0
  95. package/dist/chunk-ZMGBWSFZ.js +2 -0
  96. package/dist/cli.js +462 -274
  97. package/dist/{config-types-BDIWAYzr.d.ts → config-types-BrHl3Bge.d.ts} +61 -1
  98. package/dist/{db-Djj3Nqrb.d.ts → db-_Bdx0E1W.d.ts} +1 -1
  99. package/dist/diff-gate-types-CG2YQ_ei.d.ts +4 -0
  100. package/dist/{frontend-behavior-evidence-BxKpKWUu.d.ts → frontend-behavior-evidence-EfM4_9bc.d.ts} +1 -1
  101. package/dist/{health-D5J42g4D.d.ts → health-BEZ1Rt0S.d.ts} +54 -2
  102. package/dist/index.d.ts +10 -70
  103. package/dist/index.js +2 -2
  104. package/dist/postinstall.js +1 -4
  105. package/dist/queries/affected.d.ts +2 -2
  106. package/dist/queries/affected.js +1 -1
  107. package/dist/queries/bottlenecks.d.ts +2 -2
  108. package/dist/queries/bottlenecks.js +1 -1
  109. package/dist/queries/by-kind.d.ts +2 -2
  110. package/dist/queries/by-kind.js +1 -1
  111. package/dist/queries/call-graph.d.ts +2 -2
  112. package/dist/queries/call-graph.js +1 -1
  113. package/dist/queries/change-surface.d.ts +2 -2
  114. package/dist/queries/change-surface.js +1 -1
  115. package/dist/queries/cleanup-plan.d.ts +2 -2
  116. package/dist/queries/cleanup-plan.js +1 -1
  117. package/dist/queries/co-change.d.ts +12 -2
  118. package/dist/queries/co-change.js +1 -1
  119. package/dist/queries/code.d.ts +2 -2
  120. package/dist/queries/code.js +1 -1
  121. package/dist/queries/complexity-hotspots.d.ts +7 -3
  122. package/dist/queries/complexity-hotspots.js +1 -1
  123. package/dist/queries/complexity.d.ts +42 -4
  124. package/dist/queries/complexity.js +1 -1
  125. package/dist/queries/convergence.d.ts +2 -2
  126. package/dist/queries/convergence.js +1 -1
  127. package/dist/queries/coupling.d.ts +2 -2
  128. package/dist/queries/coupling.js +1 -1
  129. package/dist/queries/cycles.d.ts +12 -3
  130. package/dist/queries/cycles.js +1 -1
  131. package/dist/queries/dataflow.d.ts +2 -2
  132. package/dist/queries/dataflow.js +1 -1
  133. package/dist/queries/dead.d.ts +3 -3
  134. package/dist/queries/dead.js +1 -1
  135. package/dist/queries/deep-chains.d.ts +2 -2
  136. package/dist/queries/deep-chains.js +1 -1
  137. package/dist/queries/deps.d.ts +2 -2
  138. package/dist/queries/deps.js +1 -1
  139. package/dist/queries/diff-gate.d.ts +65 -8
  140. package/dist/queries/diff-gate.js +1 -1
  141. package/dist/queries/diff-impact.d.ts +21 -3
  142. package/dist/queries/diff-impact.js +1 -1
  143. package/dist/queries/doc-drift.d.ts +29 -2
  144. package/dist/queries/doc-drift.js +1 -1
  145. package/dist/queries/drift.d.ts +15 -3
  146. package/dist/queries/drift.js +1 -1
  147. package/dist/queries/duplicate-bodies.d.ts +55 -0
  148. package/dist/queries/duplicate-bodies.js +2 -0
  149. package/dist/queries/extract-candidates.d.ts +2 -2
  150. package/dist/queries/extract-candidates.js +1 -1
  151. package/dist/queries/fan.d.ts +2 -2
  152. package/dist/queries/fan.js +1 -1
  153. package/dist/queries/files.d.ts +4 -3
  154. package/dist/queries/files.js +1 -1
  155. package/dist/queries/health.d.ts +3 -3
  156. package/dist/queries/health.js +1 -1
  157. package/dist/queries/hierarchy.d.ts +2 -2
  158. package/dist/queries/hierarchy.js +1 -1
  159. package/dist/queries/hotspots.d.ts +2 -2
  160. package/dist/queries/hotspots.js +1 -1
  161. package/dist/queries/imports.d.ts +2 -2
  162. package/dist/queries/imports.js +1 -1
  163. package/dist/queries/incomplete-migration.d.ts +3 -2
  164. package/dist/queries/incomplete-migration.js +1 -1
  165. package/dist/queries/index.d.ts +12 -7
  166. package/dist/queries/index.js +1 -1
  167. package/dist/queries/isolated.d.ts +2 -2
  168. package/dist/queries/isolated.js +1 -1
  169. package/dist/queries/locality-candidates.d.ts +2 -2
  170. package/dist/queries/locality-candidates.js +1 -1
  171. package/dist/queries/members.d.ts +2 -2
  172. package/dist/queries/members.js +1 -1
  173. package/dist/queries/methods.d.ts +2 -2
  174. package/dist/queries/methods.js +1 -1
  175. package/dist/queries/outline.d.ts +2 -2
  176. package/dist/queries/outline.js +1 -1
  177. package/dist/queries/passthrough-candidates.d.ts +11 -3
  178. package/dist/queries/passthrough-candidates.js +1 -1
  179. package/dist/queries/plan-context.d.ts +3 -2
  180. package/dist/queries/plan-context.js +1 -1
  181. package/dist/queries/react-component-duplicates.d.ts +7 -2
  182. package/dist/queries/react-component-duplicates.js +1 -1
  183. package/dist/queries/react-hook-candidates.d.ts +3 -3
  184. package/dist/queries/react-hook-candidates.js +1 -1
  185. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  186. package/dist/queries/react-large-component-pressure.js +1 -1
  187. package/dist/queries/recent-duplicates.d.ts +2 -2
  188. package/dist/queries/recent-duplicates.js +1 -1
  189. package/dist/queries/redundant-reexports.d.ts +2 -2
  190. package/dist/queries/redundant-reexports.js +1 -1
  191. package/dist/queries/refs.d.ts +2 -2
  192. package/dist/queries/refs.js +1 -1
  193. package/dist/queries/self-audit.d.ts +9 -4
  194. package/dist/queries/self-audit.js +1 -1
  195. package/dist/queries/similar-chains.d.ts +2 -2
  196. package/dist/queries/similar-chains.js +1 -1
  197. package/dist/queries/similar-files.d.ts +2 -2
  198. package/dist/queries/similar-files.js +1 -1
  199. package/dist/queries/similar-signatures.d.ts +17 -10
  200. package/dist/queries/similar-signatures.js +1 -1
  201. package/dist/queries/similar.d.ts +85 -17
  202. package/dist/queries/similar.js +1 -1
  203. package/dist/queries/slice.d.ts +2 -2
  204. package/dist/queries/slice.js +1 -1
  205. package/dist/queries/stale-abstractions.d.ts +2 -2
  206. package/dist/queries/stale-abstractions.js +1 -1
  207. package/dist/queries/stats.d.ts +2 -2
  208. package/dist/queries/surface.d.ts +2 -2
  209. package/dist/queries/surface.js +1 -1
  210. package/dist/queries/symbols.d.ts +2 -2
  211. package/dist/queries/symbols.js +1 -1
  212. package/dist/queries/system.d.ts +2 -2
  213. package/dist/queries/system.js +1 -1
  214. package/dist/queries/trace.d.ts +2 -2
  215. package/dist/queries/trace.js +1 -1
  216. package/dist/queries/twin-ab.d.ts +55 -0
  217. package/dist/queries/twin-ab.js +2 -0
  218. package/dist/queries/twin-drift.d.ts +97 -0
  219. package/dist/queries/twin-drift.js +2 -0
  220. package/dist/queries/unused-imports.d.ts +2 -2
  221. package/dist/queries/unused-imports.js +1 -1
  222. package/dist/queries/unused-params.d.ts +2 -2
  223. package/dist/queries/unused-params.js +1 -1
  224. package/dist/queries/vue-component-duplicates.d.ts +7 -2
  225. package/dist/queries/vue-component-duplicates.js +1 -1
  226. package/dist/queries/vue-composable-candidates.d.ts +3 -3
  227. package/dist/queries/vue-composable-candidates.js +1 -1
  228. package/dist/queries/vue-large-view-pressure.d.ts +6 -2
  229. package/dist/queries/vue-large-view-pressure.js +1 -1
  230. package/dist/queries/wrapper-candidates.d.ts +2 -2
  231. package/dist/queries/wrapper-candidates.js +1 -1
  232. package/dist/reindex-worker.js +9 -9
  233. package/dist/reindex.d.ts +30 -4
  234. package/dist/reindex.js +19 -19
  235. package/dist/runtime.d.ts +12 -6
  236. package/dist/runtime.js +2 -2
  237. package/dist/{scip-cli-CnK9Va4O.d.ts → scip-cli-C7cg4ZHR.d.ts} +1 -1
  238. package/dist/symbol-types-DaoeXKUt.d.ts +66 -0
  239. package/docs/AGENT_GUIDE.md +20 -18
  240. package/docs/AI_FAILURE_MODES.md +36 -13
  241. package/docs/API.md +1 -1
  242. package/docs/COMMAND_REFERENCE.md +57 -14
  243. package/docs/DETECTOR_GUIDE.md +20 -3
  244. package/docs/REGEX_POLICY.md +34 -0
  245. package/docs/analyzer-inventory.md +48 -3
  246. package/docs/analyzer-validation-ledger.md +41 -6
  247. package/package.json +23 -7
  248. package/scripts/build-scip-windows.mjs +10 -7
  249. package/scripts/evidence-product-contract.mjs +197 -0
  250. package/skills/_shared/SKILL.md +243 -0
  251. package/skills/_shared/agents/openai.yaml +4 -0
  252. package/skills/scip-api-impact/SKILL.md +55 -71
  253. package/skills/scip-claim-audit/SKILL.md +105 -0
  254. package/skills/scip-claim-audit/agents/openai.yaml +4 -0
  255. package/skills/scip-cleanup-audit/SKILL.md +122 -0
  256. package/skills/scip-cleanup-audit/agents/openai.yaml +4 -0
  257. package/skills/scip-cleanup-improve/SKILL.md +84 -0
  258. package/skills/scip-cleanup-improve/agents/openai.yaml +4 -0
  259. package/skills/scip-concrete-plan/SKILL.md +181 -0
  260. package/skills/scip-concrete-plan/agents/openai.yaml +4 -0
  261. package/skills/scip-conductor/SKILL.md +133 -0
  262. package/skills/scip-conductor/agents/openai.yaml +4 -0
  263. package/skills/scip-debug/SKILL.md +60 -58
  264. package/skills/scip-diagram/SKILL.md +64 -94
  265. package/skills/scip-directory-architecture/SKILL.md +65 -107
  266. package/skills/scip-doc-reconcile/SKILL.md +56 -67
  267. package/skills/scip-explore/SKILL.md +78 -210
  268. package/skills/scip-hyper-optimization/SKILL.md +124 -198
  269. package/skills/scip-integrity-audit/SKILL.md +103 -0
  270. package/skills/scip-integrity-audit/agents/openai.yaml +4 -0
  271. package/skills/scip-language-playbook/SKILL.md +56 -326
  272. package/skills/scip-maintainability/SKILL.md +80 -219
  273. package/skills/scip-probe-reachability/SKILL.md +92 -0
  274. package/skills/scip-probe-reachability/agents/openai.yaml +4 -0
  275. package/skills/scip-query/SKILL.md +108 -124
  276. package/skills/scip-react-maintainability/SKILL.md +64 -82
  277. package/skills/scip-setup/SKILL.md +121 -0
  278. package/skills/scip-setup/agents/openai.yaml +4 -0
  279. package/skills/scip-tla-model-system/SKILL.md +138 -0
  280. package/skills/scip-tla-model-system/agents/openai.yaml +4 -0
  281. package/skills/scip-triage-issue/SKILL.md +53 -41
  282. package/skills/scip-twin-drift/SKILL.md +107 -0
  283. package/skills/scip-twin-drift/agents/openai.yaml +4 -0
  284. package/skills/scip-verify/SKILL.md +70 -88
  285. package/skills/scip-vue-maintainability/SKILL.md +67 -94
  286. package/dist/chunk-2KHTSEIL.js +0 -102
  287. package/dist/chunk-3VD3JMK2.js +0 -2
  288. package/dist/chunk-4UZO3XCV.js +0 -35
  289. package/dist/chunk-5GOLFJEO.js +0 -8
  290. package/dist/chunk-5OST6GYB.js +0 -2
  291. package/dist/chunk-65AU3HFZ.js +0 -2
  292. package/dist/chunk-6GN7FXCH.js +0 -2
  293. package/dist/chunk-6IR2AOBM.js +0 -7
  294. package/dist/chunk-6JRV4MY2.js +0 -23
  295. package/dist/chunk-6QSOCTZT.js +0 -18
  296. package/dist/chunk-72KY2ZFO.js +0 -2
  297. package/dist/chunk-7GO4EQF5.js +0 -2
  298. package/dist/chunk-7IVSJJZU.js +0 -7
  299. package/dist/chunk-7TWLSZK5.js +0 -2
  300. package/dist/chunk-A536TEU4.js +0 -3
  301. package/dist/chunk-AVWPHM2Q.js +0 -4
  302. package/dist/chunk-B32FX5KB.js +0 -2
  303. package/dist/chunk-B6MJ5VQV.js +0 -2
  304. package/dist/chunk-BFXPG2VN.js +0 -2
  305. package/dist/chunk-BSN22NRK.js +0 -9
  306. package/dist/chunk-BZ53S4ZN.js +0 -2
  307. package/dist/chunk-C5CTSJ6X.js +0 -6
  308. package/dist/chunk-CO5GJRP7.js +0 -2
  309. package/dist/chunk-CW5YFOCP.js +0 -5
  310. package/dist/chunk-DS6QEB3G.js +0 -5
  311. package/dist/chunk-E35O7UCB.js +0 -2
  312. package/dist/chunk-EXDQ35NN.js +0 -2
  313. package/dist/chunk-FAYI6KZ5.js +0 -2
  314. package/dist/chunk-FFVIFETB.js +0 -2
  315. package/dist/chunk-FG4NT6VY.js +0 -2
  316. package/dist/chunk-FXNWFMKW.js +0 -25
  317. package/dist/chunk-G5UPYQGL.js +0 -4
  318. package/dist/chunk-GQBMH2TQ.js +0 -2
  319. package/dist/chunk-GRJY65YT.js +0 -2
  320. package/dist/chunk-HF25DFSC.js +0 -3
  321. package/dist/chunk-HHN2B5KA.js +0 -2
  322. package/dist/chunk-IHUETYFW.js +0 -2
  323. package/dist/chunk-JCLDUKT6.js +0 -38
  324. package/dist/chunk-JGN2ZFJR.js +0 -2
  325. package/dist/chunk-JM72FNGA.js +0 -2
  326. package/dist/chunk-JME7OWD3.js +0 -2
  327. package/dist/chunk-KDFONWTW.js +0 -40
  328. package/dist/chunk-LPL4MA6R.js +0 -2
  329. package/dist/chunk-LZHUWKGD.js +0 -2
  330. package/dist/chunk-M4COR2H6.js +0 -2
  331. package/dist/chunk-NOJAM5ZV.js +0 -21
  332. package/dist/chunk-O6ZH6C6Y.js +0 -2
  333. package/dist/chunk-OBGRLXWF.js +0 -3
  334. package/dist/chunk-OLTESY4K.js +0 -3
  335. package/dist/chunk-ONPCQ2PM.js +0 -6
  336. package/dist/chunk-P4KYUPBD.js +0 -4
  337. package/dist/chunk-P5RYBRIO.js +0 -4
  338. package/dist/chunk-P7AL7Y37.js +0 -2
  339. package/dist/chunk-PFOCOG57.js +0 -2
  340. package/dist/chunk-QLAUCRDJ.js +0 -2
  341. package/dist/chunk-QPU7EXAW.js +0 -2
  342. package/dist/chunk-QYB5P7GL.js +0 -2
  343. package/dist/chunk-RNM6LMCF.js +0 -2
  344. package/dist/chunk-RVWSAMTT.js +0 -2
  345. package/dist/chunk-TK7O5ER5.js +0 -3
  346. package/dist/chunk-TQ5W2H3S.js +0 -4
  347. package/dist/chunk-USPV3T5K.js +0 -2
  348. package/dist/chunk-UUBMFL3F.js +0 -59
  349. package/dist/chunk-VCQYSG2M.js +0 -10
  350. package/dist/chunk-VUKC6F77.js +0 -20
  351. package/dist/chunk-W2CBNBEL.js +0 -71
  352. package/dist/chunk-W6BVEKYC.js +0 -3
  353. package/dist/chunk-WUCEKFQC.js +0 -3
  354. package/dist/chunk-XUGQU7PM.js +0 -41
  355. package/dist/chunk-Y5NBHMQX.js +0 -2
  356. package/dist/chunk-YCOFCT4B.js +0 -2
  357. package/dist/chunk-YZA6PPZL.js +0 -3
  358. package/skills/concrete-plan/SKILL.md +0 -372
  359. package/skills/concrete-plan/agents/openai.yaml +0 -4
  360. package/skills/scip-adoption/SKILL.md +0 -122
  361. package/skills/scip-adoption/agents/openai.yaml +0 -4
  362. package/skills/scip-ai-cleanup/SKILL.md +0 -153
  363. package/skills/scip-ai-cleanup/agents/openai.yaml +0 -4
  364. package/skills/scip-debloat/SKILL.md +0 -439
  365. package/skills/scip-debloat/agents/openai.yaml +0 -4
  366. package/skills/scip-health-audit/SKILL.md +0 -162
  367. package/skills/scip-health-audit/agents/openai.yaml +0 -4
  368. package/skills/scip-health-improve/SKILL.md +0 -155
  369. package/skills/scip-health-improve/agents/openai.yaml +0 -4
  370. package/skills/scip-query-setup/SKILL.md +0 -170
  371. package/skills/scip-query-setup/agents/openai.yaml +0 -3
  372. package/vendor/scip/README.md +0 -6
  373. package/vendor/scip/win32-arm64/scip.exe +0 -0
  374. package/vendor/scip/win32-x64/scip.exe +0 -0
@@ -8,7 +8,7 @@ interface InstallMethod {
8
8
  /** Arguments for the command */
9
9
  args: string[];
10
10
  }
11
- type SupportedLanguage = 'typescript' | 'javascript' | 'java' | 'scala' | 'kotlin' | 'rust' | 'python' | 'ruby' | 'go' | 'cpp' | 'c' | 'csharp' | 'vb' | 'dart' | 'php';
11
+ type SupportedLanguage = 'typescript' | 'javascript' | 'java' | 'scala' | 'kotlin' | 'rust' | 'python' | 'ruby' | 'go' | 'cpp' | 'c' | 'csharp' | 'vb' | 'dart' | 'php' | 'clojure';
12
12
  type TypeScriptProjectMode = 'single' | 'workspace';
13
13
  interface IndexerConfig {
14
14
  language: SupportedLanguage;
@@ -27,6 +27,7 @@ interface IndexerConfig {
27
27
  pnpmWorkspaces?: boolean;
28
28
  indexerBinary: string;
29
29
  projectPath?: string;
30
+ configPath?: string;
30
31
  }) => {
31
32
  binary: string;
32
33
  args: string[];
@@ -66,6 +67,10 @@ interface ScipQueryConfig {
66
67
  declaredCouplings?: DeclaredCouplingConfig[];
67
68
  /** Optional analyzer configuration. */
68
69
  locality?: LocalityConfig;
70
+ /** Enumeration-rot contracts: a declared key set that must track a ground-truth source. */
71
+ coverageContracts?: CoverageContractConfig[];
72
+ /** Documentation policy (snapshot-doc exemptions, ...). */
73
+ docs?: DocsConfig;
69
74
  }
70
75
  interface ProjectConfig {
71
76
  /** Override which languages to index (default: auto-detect) */
@@ -74,6 +79,8 @@ interface ProjectConfig {
74
79
  indexerConcurrency?: number;
75
80
  /** Watch mode settings */
76
81
  watch?: WatchConfig;
82
+ /** Agent hook behavior. */
83
+ hooks?: HookRuntimeConfig;
77
84
  /** Per-language indexer overrides */
78
85
  indexer?: Partial<Record<SupportedLanguage, IndexerOverrides>>;
79
86
  /** Override the database storage path (default: ~/.cache/scip-query/<hash>/) */
@@ -88,11 +95,58 @@ interface ProjectConfig {
88
95
  declaredCouplings?: DeclaredCouplingConfig[];
89
96
  /** Optional locality analyzer configuration. */
90
97
  locality?: LocalityConfig;
98
+ /** Enumeration-rot contracts: a declared key set that must track a ground-truth source. */
99
+ coverageContracts?: CoverageContractConfig[];
100
+ /** Documentation policy (snapshot-doc exemptions, ...). */
101
+ docs?: DocsConfig;
102
+ }
103
+ type CoverageContractKeySpec = {
104
+ type: 'object-literal-keys';
105
+ identifier: string;
106
+ } | {
107
+ type: 'string-array';
108
+ identifier: string;
109
+ } | {
110
+ type: 'markdown-list';
111
+ marker: string;
112
+ };
113
+ type CoverageContractSourceSpec = {
114
+ type: 'top-level-dirs';
115
+ path: string;
116
+ } | {
117
+ type: 'file-glob';
118
+ pattern: string;
119
+ } | {
120
+ type: 'registered-commands';
121
+ } | {
122
+ type: 'builtin-skills';
123
+ };
124
+ interface CoverageContractConfig {
125
+ /** Human-readable name for the contract, used in finding messages. */
126
+ name: string;
127
+ /** File the declared key set is extracted from. */
128
+ file: string;
129
+ /** How to extract the declared key set from `file`. */
130
+ keys: CoverageContractKeySpec;
131
+ /** The ground-truth source the declared key set must track. */
132
+ mustEqual: CoverageContractSourceSpec;
133
+ /** When false (the default), declared keys with no ground-truth match are also flagged. */
134
+ allowExtra?: boolean;
91
135
  }
92
136
  interface LocalityConfig {
93
137
  /** Folder names that should be treated as architectural ownership boundaries. */
94
138
  architecturalBoundarySegments?: string[];
95
139
  }
140
+ interface DocsConfig {
141
+ /**
142
+ * Glob patterns (see src/analysis/glob-match.ts for supported syntax) for
143
+ * dated snapshot docs that intentionally cite code "as of" a moment in
144
+ * time — excluded from diff-gate's doc-reference check and doc-drift's
145
+ * default findings. A `<!-- scip-query: snapshot -->` marker inside a doc
146
+ * has the same effect regardless of its path.
147
+ */
148
+ snapshotPaths?: string[];
149
+ }
96
150
  interface DeclaredCouplingConfig {
97
151
  /** Human-readable name for the maintenance unit. */
98
152
  name: string;
@@ -144,6 +198,10 @@ interface WatchConfig {
144
198
  /** Extra glob patterns to ignore beyond .gitignore */
145
199
  ignore?: string[];
146
200
  }
201
+ interface HookRuntimeConfig {
202
+ /** Prompt router mode for project-local hooks (default: single). */
203
+ router?: 'off' | 'single';
204
+ }
147
205
  interface IndexerOverrides {
148
206
  /** Enable pnpm workspace support (TypeScript) */
149
207
  pnpmWorkspaces?: boolean;
@@ -151,6 +209,8 @@ interface IndexerOverrides {
151
209
  projectMode?: TypeScriptProjectMode;
152
210
  /** Explicit TypeScript project roots or tsconfig paths, relative to project root unless absolute */
153
211
  projects?: string[];
212
+ /** Indexer-specific config file path, relative to project root */
213
+ configPath?: string;
154
214
  }
155
215
 
156
216
  export type { FindingSuppression as F, IndexerConfig as I, ProjectConfig as P, ScipQueryConfig as S, TypeScriptProjectMode as T, SupportedLanguage as a };
@@ -1,5 +1,5 @@
1
1
  import Database from 'better-sqlite3';
2
- import { S as ScipQueryConfig } from './config-types-BDIWAYzr.js';
2
+ import { S as ScipQueryConfig } from './config-types-BrHl3Bge.js';
3
3
 
4
4
  /**
5
5
  * Builds a gitignore-based path filter from .gitignore files found
@@ -0,0 +1,4 @@
1
+ type DiffGateActionTier = 'direct' | 'signal' | 'support';
2
+ type DocCitationKind = 'behavioral-claim' | 'configuration-example' | 'guide-reference' | 'intentional-record';
3
+
4
+ export type { DiffGateActionTier as D, DocCitationKind as a };
@@ -1,4 +1,4 @@
1
1
  type FrontendBehaviorEvidenceClass = 'domain-behavior' | 'generic-workflow-scaffolding' | 'mixed' | 'shared-abstraction';
2
2
  type FrontendBehaviorActionTier = 'signal' | 'support';
3
3
 
4
- export type { FrontendBehaviorActionTier as F, FrontendBehaviorEvidenceClass as a };
4
+ export type { FrontendBehaviorEvidenceClass as F, FrontendBehaviorActionTier as a };
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase } from './db-Djj3Nqrb.js';
1
+ import { S as ScipDatabase } from './db-_Bdx0E1W.js';
2
2
  import { stats } from './queries/stats.js';
3
3
 
4
4
  /**
@@ -70,12 +70,39 @@ interface GitEvidenceSummary {
70
70
  changes: number;
71
71
  fixChanges: number;
72
72
  }>;
73
+ commitsScanned: number;
73
74
  }
74
75
  interface SuppressionSummary {
75
76
  total: number;
76
77
  byCategory: Record<string, number>;
77
78
  }
78
79
 
80
+ /**
81
+ * Pure finding-outcome ledger math. Closes the round-1 finding "the
82
+ * validation axis computes per-detector lift and feeds nothing": this
83
+ * module tracks, per finding identity, whether a detector's output is
84
+ * actually being acted on — and reports that, without changing which
85
+ * findings get emitted (downranking stays a human/config decision).
86
+ *
87
+ * Storage lives in src/storage/evidence-cache.ts (finding_outcome_ledger
88
+ * table); this module is the pure transition + stats core the storage
89
+ * layer's rows flow through. Clock is injected everywhere so tests never
90
+ * depend on wall time.
91
+ */
92
+
93
+ interface DetectorPrecisionStats {
94
+ check: string;
95
+ /** Distinct finding identities ever recorded for this check. */
96
+ seen: number;
97
+ resolved: number;
98
+ suppressed: number;
99
+ stillOpen: number;
100
+ resolutionRate: number;
101
+ suppressionRate: number;
102
+ /** Age (days) of the oldest still-open finding; null when none are open. */
103
+ oldestOpenAgeDays: number | null;
104
+ }
105
+
79
106
  type FindingEvidence = 'graph-fact' | 'heuristic' | 'change-graph';
80
107
  interface HealthAction {
81
108
  category: string;
@@ -155,6 +182,10 @@ interface HealthValidation {
155
182
  fixDensity: number;
156
183
  lift: number | null;
157
184
  }>;
185
+ validationBasis: {
186
+ method: 'subject-regex';
187
+ commitsScanned: number;
188
+ };
158
189
  }
159
190
  interface HealthReport {
160
191
  /** Headline = min(riskScore, hygieneScore); kept for compatibility. */
@@ -176,6 +207,10 @@ interface HealthReport {
176
207
  isolatedLoc: number;
177
208
  cycles: number;
178
209
  similarPairs: number;
210
+ duplicateBodyGroups: number;
211
+ duplicateBodyLoc: number;
212
+ twinDriftGroups: number;
213
+ twinDriftLoc: number;
179
214
  reactComponentDuplicatePairs: number;
180
215
  reactHookCandidatePairs: number;
181
216
  reactHookCandidateScoreCount: number;
@@ -193,6 +228,7 @@ interface HealthReport {
193
228
  complexityHotspotCount: number;
194
229
  hiddenCouplingPairs: number | null;
195
230
  hiddenCouplingScoreCount: number | null;
231
+ coverageContractViolations: number;
196
232
  };
197
233
  axes: HealthAxes;
198
234
  validation: HealthValidation | null;
@@ -208,9 +244,16 @@ interface HealthReport {
208
244
  file?: string;
209
245
  }>;
210
246
  warnings?: string[];
247
+ /**
248
+ * Per-check finding-outcome stats from the finding_outcome_ledger
249
+ * (populated by `diff-gate --hook` runs) — resolution/suppression rate
250
+ * and open-finding age. Reports, never affects the score above. Empty
251
+ * until the ledger has data.
252
+ */
253
+ detectorPrecision: DetectorPrecisionStats[];
211
254
  }
212
255
 
213
- declare const HEALTH_PHASES: readonly ["overview", "dead", "isolated", "cycles", "similar", "react-component-duplicates", "react-hook-candidates", "react-large-component-pressure", "vue-component-duplicates", "vue-composable-candidates", "vue-large-view-pressure", "extract-candidates", "wrapper-candidates", "passthrough-candidates", "stale-abstractions", "drift", "complexity-hotspots", "git-evidence", "suppressions"];
256
+ declare const HEALTH_PHASES: readonly ["overview", "dead", "isolated", "cycles", "similar", "duplicate-bodies", "twin-drift", "react-component-duplicates", "react-hook-candidates", "react-large-component-pressure", "vue-component-duplicates", "vue-composable-candidates", "vue-large-view-pressure", "extract-candidates", "wrapper-candidates", "passthrough-candidates", "stale-abstractions", "drift", "complexity-hotspots", "git-evidence", "suppressions", "coverage-contracts"];
214
257
  type HealthPhaseName = (typeof HEALTH_PHASES)[number];
215
258
  type HealthPhaseResult = {
216
259
  phase: 'overview';
@@ -228,6 +271,12 @@ type HealthPhaseResult = {
228
271
  } | {
229
272
  phase: 'similar';
230
273
  similarCount: number;
274
+ } | {
275
+ phase: 'duplicate-bodies';
276
+ duplicateBodies: CountLocSummary;
277
+ } | {
278
+ phase: 'twin-drift';
279
+ twinDrift: CountLocSummary;
231
280
  } | {
232
281
  phase: 'react-component-duplicates';
233
282
  reactComponentDuplicates: CountLocSummary;
@@ -270,6 +319,9 @@ type HealthPhaseResult = {
270
319
  } | {
271
320
  phase: 'suppressions';
272
321
  suppressions: SuppressionSummary;
322
+ } | {
323
+ phase: 'coverage-contracts';
324
+ coverageContracts: CountLocSummary;
273
325
  };
274
326
  /**
275
327
  * Single composite health report that runs all de-bloat analyses
package/dist/index.d.ts CHANGED
@@ -1,73 +1,9 @@
1
- import { S as ScipDatabase } from './db-Djj3Nqrb.js';
2
- export { c as createGitignoreFilter } from './db-Djj3Nqrb.js';
3
- export { S as ScipQueryConfig } from './config-types-BDIWAYzr.js';
1
+ import { S as ScipDatabase } from './db-_Bdx0E1W.js';
2
+ export { c as createGitignoreFilter } from './db-_Bdx0E1W.js';
3
+ import { S as SymbolMatch, I as IndexedDefinition, a as ScipSymbol, b as ScipLocalSymbol } from './symbol-types-DaoeXKUt.js';
4
+ export { S as ScipQueryConfig } from './config-types-BrHl3Bge.js';
4
5
  import 'better-sqlite3';
5
6
 
6
- /**
7
- * A symbol's location in the SCIP index. The minimum data needed to
8
- * identify a definition: which document it lives in, which lines it
9
- * spans, and the global symbol id. Used as a lightweight handle when
10
- * the caller doesn't need the symbol's textual name or path.
11
- */
12
- interface SymbolLocation {
13
- documentId: number;
14
- startLine: number;
15
- endLine: number;
16
- symbolId: number;
17
- }
18
- /**
19
- * A SymbolLocation plus the human-readable bits: the SCIP symbol string
20
- * and the document's relative path. Returned by lookup helpers like
21
- * `findFirstSymbolMatch` so callers don't have to round-trip through the
22
- * documents table to get a path or symbol name.
23
- */
24
- interface SymbolMatch extends SymbolLocation {
25
- symbol: string;
26
- relativePath: string;
27
- }
28
- /**
29
- * A full definition record: SymbolMatch plus per-symbol metadata
30
- * (leaf name, parent type, kind, documentation, enclosing symbol).
31
- * Used by the catalog APIs (`getDefinitionsForFile`, `getAllDefinitions`,
32
- * `getScopedDefinitions`) so consumers don't have to re-derive any of
33
- * these per-record.
34
- */
35
- interface IndexedDefinition extends SymbolMatch {
36
- leaf: string;
37
- parentTypeName: string | null;
38
- isFunctionLike: boolean;
39
- isTypeLike: boolean;
40
- kind: number | null;
41
- documentation: string | null;
42
- enclosingSymbol: string | null;
43
- }
44
- /** Parsed components of a SCIP symbol string */
45
- interface ScipSymbol {
46
- /** The indexer scheme (e.g. "scip-typescript", "scip-java", "rust-analyzer") */
47
- scheme: string;
48
- /** Package manager (e.g. "npm", "maven", "cargo") */
49
- manager: string;
50
- /** Package name (e.g. "@vega/api", "com.example/mylib") */
51
- packageName: string;
52
- /** Package version */
53
- version: string;
54
- /** Descriptor chain — the path to the symbol within the file */
55
- descriptors: ScipDescriptor[];
56
- /** The raw, unparsed symbol string */
57
- raw: string;
58
- }
59
- interface ScipDescriptor {
60
- name: string;
61
- suffix: DescriptorSuffix;
62
- }
63
- type DescriptorSuffix = 'namespace' | 'type' | 'term' | 'method' | 'type-param' | 'parameter' | 'meta' | 'macro';
64
- /** A local symbol (file-scoped, no cross-file identity) */
65
- interface ScipLocalSymbol {
66
- kind: 'local';
67
- id: string;
68
- raw: string;
69
- }
70
-
71
7
  /**
72
8
  * File classifier — one place to decide what role a source file plays.
73
9
  *
@@ -128,7 +64,9 @@ declare function buildFileDepGraph(db: ScipDatabase, scope?: string): Map<string
128
64
  declare function crossFileCallerEvidenceMap(db: ScipDatabase, definitions?: ReadonlyArray<SymbolMatch>, opts?: {
129
65
  semantic?: boolean;
130
66
  }): Map<number, Set<string>>;
131
- declare function sourceFallbackCallerEvidenceMap(db: ScipDatabase, definitions: ReadonlyArray<IndexedDefinition>): Map<number, Set<string>>;
67
+ declare function sourceFallbackCallerEvidenceMap(db: ScipDatabase, definitions: ReadonlyArray<IndexedDefinition>, opts?: {
68
+ skipPath?: (relativePath: string) => boolean;
69
+ }): Map<number, Set<string>>;
132
70
 
133
71
  type FrameworkSourceReferenceKind = 'cross-language-dispatch' | 'rust-attribute';
134
72
 
@@ -233,7 +171,9 @@ declare class ProjectIndex {
233
171
  crossFileCallerMap(definitions?: ReadonlyArray<SymbolMatch>, opts?: {
234
172
  semantic?: boolean;
235
173
  }): ReturnType<typeof crossFileCallerEvidenceMap>;
236
- sourceFallbackCallerFiles(definitions: ReadonlyArray<IndexedDefinition>): ReturnType<typeof sourceFallbackCallerEvidenceMap>;
174
+ sourceFallbackCallerFiles(definitions: ReadonlyArray<IndexedDefinition>, opts?: {
175
+ skipPath?: (relativePath: string) => boolean;
176
+ }): ReturnType<typeof sourceFallbackCallerEvidenceMap>;
237
177
  callerFileMap(definitions: ReadonlyArray<IndexedDefinition>, opts?: {
238
178
  semantic?: boolean;
239
179
  sourceFallback?: boolean;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as l}from"./chunk-UUBMFL3F.js";import{a as n}from"./chunk-5OST6GYB.js";import"./chunk-C5CTSJ6X.js";import"./chunk-BGBBVSH4.js";import"./chunk-RNM6LMCF.js";import"./chunk-JCLDUKT6.js";import"./chunk-KDFONWTW.js";import"./chunk-OLTESY4K.js";import"./chunk-TQ5W2H3S.js";import"./chunk-TK7O5ER5.js";import"./chunk-VUKC6F77.js";import"./chunk-P5RYBRIO.js";import"./chunk-OBGRLXWF.js";import"./chunk-2KHTSEIL.js";import{a as o,c as i,d as s}from"./chunk-JM72FNGA.js";import"./chunk-72KY2ZFO.js";import"./chunk-YZA6PPZL.js";import"./chunk-HF25DFSC.js";import"./chunk-DS6QEB3G.js";import"./chunk-XUGQU7PM.js";import"./chunk-A536TEU4.js";import"./chunk-64MNV6AB.js";import"./chunk-7S5E7KWT.js";import c from"better-sqlite3";var d=["node_modules",".git","dist","build","out","coverage","target",".next",".nuxt",".cache",".turbo",".scipquery-cache","__pycache__",".venv","venv"],r=class{db;config;pathFilter;statementCache=new Map;constructor(t,e){this.config=t,this.pathFilter=e??null,this.db=new c(t.dbPath,{readonly:!0}),this.db.pragma("busy_timeout = 5000"),this.db.pragma("query_only = ON"),this.db.pragma("temp_store = MEMORY"),this.db.pragma("cache_size = -64000"),this.db.pragma("mmap_size = 268435456")}isIgnored(t){return this.pathFilter?.isIgnored(t)??!1}get localSymbolPredicate(){return`(
1
+ import{a as l}from"./chunk-YZXV3CU3.js";import{a as n}from"./chunk-X4O6K47U.js";import"./chunk-NAH5EAZS.js";import"./chunk-BGBBVSH4.js";import"./chunk-QJ3FK4TB.js";import"./chunk-WFGOH2UI.js";import"./chunk-C4ICAIJ4.js";import"./chunk-WQHWIVA7.js";import"./chunk-XEMQUN3Z.js";import"./chunk-MTDBHTSF.js";import"./chunk-R3JY4EZ4.js";import{b as o,d as s,e as i}from"./chunk-HXXMPYEF.js";import"./chunk-T2FQ4GHD.js";import"./chunk-ISLWJ4PY.js";import"./chunk-WS3Z6W3M.js";import"./chunk-GNG622H3.js";import"./chunk-64MNV6AB.js";import"./chunk-7S5E7KWT.js";import c from"better-sqlite3";var d=["node_modules",".git","dist","build","out","coverage","target",".next",".nuxt",".cache",".turbo",".nbb",".cpcache",".shadow-cljs",".scipquery-cache","__pycache__",".venv","venv"],r=class{db;config;pathFilter;statementCache=new Map;constructor(t,e){this.config=t,this.pathFilter=e??null,this.db=new c(t.dbPath,{readonly:!0}),this.db.pragma("busy_timeout = 5000"),this.db.pragma("query_only = ON"),this.db.pragma("temp_store = MEMORY"),this.db.pragma("cache_size = -64000"),this.db.pragma("mmap_size = 268435456")}isIgnored(t){return this.pathFilter?.isIgnored(t)??!1}get localSymbolPredicate(){return`(
2
2
  EXISTS (
3
3
  SELECT 1
4
4
  FROM defn_enclosing_ranges local_der
@@ -16,5 +16,5 @@ import{a as l}from"./chunk-UUBMFL3F.js";import{a as n}from"./chunk-5OST6GYB.js";
16
16
  ${this.pathExclusionsFor("local_d").trimStart()}
17
17
  )
18
18
  )`}get pathExclusions(){return this.pathExclusionsFor("d")}get symbolNoise(){return this.symbolNoiseFor("gs")}pathExclusionsFor(...t){return t.flatMap(e=>d.flatMap(a=>[`AND ${e}.relative_path NOT LIKE '${a}/%'`,`AND ${e}.relative_path NOT LIKE '%/${a}/%'`])).join(`
19
- `)}symbolNoiseFor(t){return`AND ${t}.symbol NOT LIKE '%().(%' AND ${t}.symbol NOT LIKE '%typeLiteral%'`}all(t,...e){return this.statement(t).all(...e)}get(t,...e){return this.statement(t).get(...e)}close(){this.statementCache.clear(),this.db.close()}statement(t){let e=this.statementCache.get(t);return e||(e=this.db.prepare(t),this.statementCache.set(t,e)),e}};export{n as ProjectIndex,r as ScipDatabase,l as createGitignoreFilter,s as leafName,o as parseSymbol,i as shortenSymbol};
19
+ `)}symbolNoiseFor(t){return`AND ${t}.symbol NOT LIKE '%().(%' AND ${t}.symbol NOT LIKE '%typeLiteral%'`}all(t,...e){return this.statement(t).all(...e)}get(t,...e){return this.statement(t).get(...e)}close(){this.statementCache.clear(),this.db.close()}statement(t){let e=this.statementCache.get(t);return e||(e=this.db.prepare(t),this.statementCache.set(t,e)),e}};export{n as ProjectIndex,r as ScipDatabase,l as createGitignoreFilter,i as leafName,o as parseSymbol,s as shortenSymbol};
20
20
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import{c as g,d as k,e as m,f}from"./chunk-ONPCQ2PM.js";import{existsSync as p,mkdirSync as L,symlinkSync as v,readlinkSync as b,unlinkSync as q}from"fs";import{join as e,dirname as y,resolve as d}from"path";import{homedir as u,platform as A}from"os";import{fileURLToPath as C}from"url";var H=A()==="win32",U=["scip-query","scip-query-setup","scip-adoption","scip-health-audit","scip-health-improve","scip-hyper-optimization","scip-api-impact","concrete-plan","scip-ai-cleanup","scip-debug","scip-explore","scip-triage-issue","scip-diagram","scip-debloat","scip-doc-reconcile","scip-directory-architecture","scip-maintainability","scip-react-maintainability","scip-vue-maintainability","scip-verify","scip-language-playbook"];function N(i={}){let l=i.quiet?()=>{}:console.log,o=C(import.meta.url),h=d(y(o),"..","skills"),I=[e(u(),".claude","skills"),e(u(),".codex","skills"),e(u(),".agents","skills")],n={installed:[],skipped:[],alreadyLinked:[]};for(let r of I){let $=y(r);if(!p($))continue;L(r,{recursive:!0});let t=R(r);for(let s of U){let a=e(h,s),c=e(r,s);if(!p(a)){n.skipped.push(`${t}/${s}`);continue}if(p(c)){try{let x=b(c);if(d(x)===d(a)){n.alreadyLinked.push(`${t}/${s}`),l(` ok: ${s} \u2192 ${t} (already linked)`);continue}}catch{n.skipped.push(`${t}/${s}`),l(` skip: ${s} \u2192 ${t} (exists, not a symlink)`);continue}q(c)}v(a,c,H?"junction":"dir"),n.installed.push(`${t}/${s}`),l(` done: ${s} \u2192 ${t}`)}}return n}function R(i){return i.includes(".codex")?"Codex":i.includes(".agents")?"Agents":"Claude"}function S(){console.log("scip-query: installing skills...");let i=N({quiet:!1});if(i.installed.length+i.alreadyLinked.length>0&&console.log(`
3
- ${i.installed.length} skill(s) installed, ${i.alreadyLinked.length} already linked.`),!g())console.log(`
4
- scip CLI not found on PATH. Attempting auto-install...`),f(console.log)||m();else{let o=k();console.log(`
5
- scip CLI: ${o??"installed"}`)}console.log("")}S();
2
+ import"./chunk-TFWDJDGO.js";import{existsSync as e,mkdirSync as n,symlinkSync as o,readlinkSync as r,unlinkSync as l,readdirSync as c}from"fs";import{join as p,dirname as u,resolve as d,relative as k,isAbsolute as g}from"path";import{homedir as f,platform as s}from"os";import{fileURLToPath as h}from"url";var S=s()==="win32";function i(){console.log("scip-query installed -- run 'scip-query setup' in a repo to enable skills, hooks, and the index.")}i();
6
3
  //# sourceMappingURL=postinstall.js.map
@@ -1,6 +1,6 @@
1
- import { S as ScipDatabase } from '../db-Djj3Nqrb.js';
1
+ import { S as ScipDatabase } from '../db-_Bdx0E1W.js';
2
2
  import 'better-sqlite3';
3
- import '../config-types-BDIWAYzr.js';
3
+ import '../config-types-BrHl3Bge.js';
4
4
 
5
5
  interface AffectedResult {
6
6
  symbol: string;
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-VCQYSG2M.js";import"../chunk-RNM6LMCF.js";import"../chunk-JCLDUKT6.js";import"../chunk-KDFONWTW.js";import"../chunk-OLTESY4K.js";import"../chunk-TQ5W2H3S.js";import"../chunk-TK7O5ER5.js";import"../chunk-VUKC6F77.js";import"../chunk-P5RYBRIO.js";import"../chunk-OBGRLXWF.js";import"../chunk-2KHTSEIL.js";import"../chunk-JM72FNGA.js";import"../chunk-72KY2ZFO.js";import"../chunk-YZA6PPZL.js";import"../chunk-HF25DFSC.js";import"../chunk-DS6QEB3G.js";import"../chunk-XUGQU7PM.js";import"../chunk-A536TEU4.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as affected};
1
+ import{a}from"../chunk-ZEKBR4OK.js";import"../chunk-QJ3FK4TB.js";import"../chunk-WFGOH2UI.js";import"../chunk-C4ICAIJ4.js";import"../chunk-WQHWIVA7.js";import"../chunk-XEMQUN3Z.js";import"../chunk-MTDBHTSF.js";import"../chunk-R3JY4EZ4.js";import"../chunk-HXXMPYEF.js";import"../chunk-T2FQ4GHD.js";import"../chunk-ISLWJ4PY.js";import"../chunk-WS3Z6W3M.js";import"../chunk-GNG622H3.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as affected};
2
2
  //# sourceMappingURL=affected.js.map
@@ -1,6 +1,6 @@
1
- import { S as ScipDatabase } from '../db-Djj3Nqrb.js';
1
+ import { S as ScipDatabase } from '../db-_Bdx0E1W.js';
2
2
  import 'better-sqlite3';
3
- import '../config-types-BDIWAYzr.js';
3
+ import '../config-types-BrHl3Bge.js';
4
4
 
5
5
  interface BottleneckResult {
6
6
  symbol: string;
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-IHUETYFW.js";import"../chunk-B75HZHUP.js";import"../chunk-5OST6GYB.js";import"../chunk-C5CTSJ6X.js";import"../chunk-BGBBVSH4.js";import"../chunk-RNM6LMCF.js";import"../chunk-JCLDUKT6.js";import"../chunk-KDFONWTW.js";import"../chunk-OLTESY4K.js";import"../chunk-TQ5W2H3S.js";import"../chunk-TK7O5ER5.js";import"../chunk-VUKC6F77.js";import"../chunk-P5RYBRIO.js";import"../chunk-OBGRLXWF.js";import"../chunk-2KHTSEIL.js";import"../chunk-JM72FNGA.js";import"../chunk-72KY2ZFO.js";import"../chunk-YZA6PPZL.js";import"../chunk-HF25DFSC.js";import"../chunk-DS6QEB3G.js";import"../chunk-XUGQU7PM.js";import"../chunk-A536TEU4.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as bottlenecks};
1
+ import{a}from"../chunk-X6OGDTQH.js";import"../chunk-B75HZHUP.js";import"../chunk-X4O6K47U.js";import"../chunk-NAH5EAZS.js";import"../chunk-BGBBVSH4.js";import"../chunk-QJ3FK4TB.js";import"../chunk-WFGOH2UI.js";import"../chunk-C4ICAIJ4.js";import"../chunk-WQHWIVA7.js";import"../chunk-XEMQUN3Z.js";import"../chunk-MTDBHTSF.js";import"../chunk-R3JY4EZ4.js";import"../chunk-HXXMPYEF.js";import"../chunk-T2FQ4GHD.js";import"../chunk-ISLWJ4PY.js";import"../chunk-WS3Z6W3M.js";import"../chunk-GNG622H3.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as bottlenecks};
2
2
  //# sourceMappingURL=bottlenecks.js.map
@@ -1,6 +1,6 @@
1
- import { S as ScipDatabase } from '../db-Djj3Nqrb.js';
1
+ import { S as ScipDatabase } from '../db-_Bdx0E1W.js';
2
2
  import 'better-sqlite3';
3
- import '../config-types-BDIWAYzr.js';
3
+ import '../config-types-BrHl3Bge.js';
4
4
 
5
5
  interface ByKindResult {
6
6
  symbol: string;
@@ -1,2 +1,2 @@
1
- import{a,b}from"../chunk-6JRV4MY2.js";import"../chunk-2KHTSEIL.js";import"../chunk-JM72FNGA.js";import"../chunk-72KY2ZFO.js";import"../chunk-YZA6PPZL.js";import"../chunk-HF25DFSC.js";import"../chunk-DS6QEB3G.js";import"../chunk-XUGQU7PM.js";import"../chunk-A536TEU4.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as byKind,b as kindCounts};
1
+ import{a,b}from"../chunk-M2YXL62V.js";import"../chunk-MTDBHTSF.js";import"../chunk-R3JY4EZ4.js";import"../chunk-HXXMPYEF.js";import"../chunk-T2FQ4GHD.js";import"../chunk-ISLWJ4PY.js";import"../chunk-WS3Z6W3M.js";import"../chunk-GNG622H3.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as byKind,b as kindCounts};
2
2
  //# sourceMappingURL=by-kind.js.map
@@ -1,6 +1,6 @@
1
- import { S as ScipDatabase } from '../db-Djj3Nqrb.js';
1
+ import { S as ScipDatabase } from '../db-_Bdx0E1W.js';
2
2
  import 'better-sqlite3';
3
- import '../config-types-BDIWAYzr.js';
3
+ import '../config-types-BrHl3Bge.js';
4
4
 
5
5
  interface CallGraphResult {
6
6
  symbol: string;
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-7TWLSZK5.js";import"../chunk-B75HZHUP.js";import"../chunk-BGBBVSH4.js";import"../chunk-RNM6LMCF.js";import"../chunk-JCLDUKT6.js";import"../chunk-KDFONWTW.js";import"../chunk-OLTESY4K.js";import"../chunk-TQ5W2H3S.js";import"../chunk-TK7O5ER5.js";import"../chunk-VUKC6F77.js";import"../chunk-P5RYBRIO.js";import"../chunk-OBGRLXWF.js";import"../chunk-2KHTSEIL.js";import"../chunk-JM72FNGA.js";import"../chunk-72KY2ZFO.js";import"../chunk-YZA6PPZL.js";import"../chunk-HF25DFSC.js";import"../chunk-DS6QEB3G.js";import"../chunk-XUGQU7PM.js";import"../chunk-A536TEU4.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as callGraph};
1
+ import{a}from"../chunk-3T2FNHIU.js";import"../chunk-B75HZHUP.js";import"../chunk-BGBBVSH4.js";import"../chunk-QJ3FK4TB.js";import"../chunk-WFGOH2UI.js";import"../chunk-C4ICAIJ4.js";import"../chunk-WQHWIVA7.js";import"../chunk-XEMQUN3Z.js";import"../chunk-MTDBHTSF.js";import"../chunk-R3JY4EZ4.js";import"../chunk-HXXMPYEF.js";import"../chunk-T2FQ4GHD.js";import"../chunk-ISLWJ4PY.js";import"../chunk-WS3Z6W3M.js";import"../chunk-GNG622H3.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as callGraph};
2
2
  //# sourceMappingURL=call-graph.js.map
@@ -1,6 +1,6 @@
1
- import { S as ScipDatabase } from '../db-Djj3Nqrb.js';
1
+ import { S as ScipDatabase } from '../db-_Bdx0E1W.js';
2
2
  import 'better-sqlite3';
3
- import '../config-types-BDIWAYzr.js';
3
+ import '../config-types-BrHl3Bge.js';
4
4
 
5
5
  interface ChangeSurfaceEntry {
6
6
  symbol: string;
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-Z4HICZGY.js";import"../chunk-7B6LP46R.js";import"../chunk-5OST6GYB.js";import"../chunk-C5CTSJ6X.js";import"../chunk-BGBBVSH4.js";import"../chunk-RNM6LMCF.js";import"../chunk-JCLDUKT6.js";import"../chunk-KDFONWTW.js";import"../chunk-OLTESY4K.js";import"../chunk-TQ5W2H3S.js";import"../chunk-TK7O5ER5.js";import"../chunk-VUKC6F77.js";import"../chunk-P5RYBRIO.js";import"../chunk-OBGRLXWF.js";import"../chunk-2KHTSEIL.js";import"../chunk-JM72FNGA.js";import"../chunk-72KY2ZFO.js";import"../chunk-YZA6PPZL.js";import"../chunk-HF25DFSC.js";import"../chunk-DS6QEB3G.js";import"../chunk-XUGQU7PM.js";import"../chunk-A536TEU4.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as changeSurface};
1
+ import{a}from"../chunk-KKMOB3OJ.js";import"../chunk-XHWLNQVZ.js";import"../chunk-X4O6K47U.js";import"../chunk-NAH5EAZS.js";import"../chunk-BGBBVSH4.js";import"../chunk-QJ3FK4TB.js";import"../chunk-WFGOH2UI.js";import"../chunk-C4ICAIJ4.js";import"../chunk-WQHWIVA7.js";import"../chunk-XEMQUN3Z.js";import"../chunk-MTDBHTSF.js";import"../chunk-R3JY4EZ4.js";import"../chunk-HXXMPYEF.js";import"../chunk-T2FQ4GHD.js";import"../chunk-ISLWJ4PY.js";import"../chunk-WS3Z6W3M.js";import"../chunk-GNG622H3.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as changeSurface};
2
2
  //# sourceMappingURL=change-surface.js.map
@@ -1,6 +1,6 @@
1
- import { S as ScipDatabase } from '../db-Djj3Nqrb.js';
1
+ import { S as ScipDatabase } from '../db-_Bdx0E1W.js';
2
2
  import 'better-sqlite3';
3
- import '../config-types-BDIWAYzr.js';
3
+ import '../config-types-BrHl3Bge.js';
4
4
 
5
5
  interface CleanupPlanEntry {
6
6
  symbol: string;
@@ -1,2 +1,2 @@
1
- import{a,b}from"../chunk-JATUZIEH.js";import"../chunk-USPV3T5K.js";import"../chunk-B75HZHUP.js";import"../chunk-5OST6GYB.js";import"../chunk-C5CTSJ6X.js";import"../chunk-BGBBVSH4.js";import"../chunk-RNM6LMCF.js";import"../chunk-JCLDUKT6.js";import"../chunk-KDFONWTW.js";import"../chunk-OLTESY4K.js";import"../chunk-TQ5W2H3S.js";import"../chunk-TK7O5ER5.js";import"../chunk-VUKC6F77.js";import"../chunk-P5RYBRIO.js";import"../chunk-OBGRLXWF.js";import"../chunk-2KHTSEIL.js";import"../chunk-JM72FNGA.js";import"../chunk-72KY2ZFO.js";import"../chunk-YZA6PPZL.js";import"../chunk-HF25DFSC.js";import"../chunk-DS6QEB3G.js";import"../chunk-XUGQU7PM.js";import"../chunk-A536TEU4.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{b as RemovedRangeIndex,a as cleanupPlan};
1
+ import{a,b}from"../chunk-BDRBPG7Y.js";import"../chunk-343O6EVV.js";import"../chunk-B75HZHUP.js";import"../chunk-X4O6K47U.js";import"../chunk-NAH5EAZS.js";import"../chunk-BGBBVSH4.js";import"../chunk-QJ3FK4TB.js";import"../chunk-WFGOH2UI.js";import"../chunk-C4ICAIJ4.js";import"../chunk-WQHWIVA7.js";import"../chunk-XEMQUN3Z.js";import"../chunk-MTDBHTSF.js";import"../chunk-R3JY4EZ4.js";import"../chunk-HXXMPYEF.js";import"../chunk-T2FQ4GHD.js";import"../chunk-ISLWJ4PY.js";import"../chunk-WS3Z6W3M.js";import"../chunk-GNG622H3.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{b as RemovedRangeIndex,a as cleanupPlan};
2
2
  //# sourceMappingURL=cleanup-plan.js.map
@@ -1,7 +1,7 @@
1
- import { S as ScipDatabase } from '../db-Djj3Nqrb.js';
1
+ import { S as ScipDatabase } from '../db-_Bdx0E1W.js';
2
2
  import { C as CoChangeCommitScope, a as CoChangeRecency, b as CoChangeSubjectContext } from '../git-history-Dao3_Pu9.js';
3
3
  import 'better-sqlite3';
4
- import '../config-types-BDIWAYzr.js';
4
+ import '../config-types-BrHl3Bge.js';
5
5
 
6
6
  type CoChangePartnerClass = 'doc-code' | 'config-code' | 'schema-script' | 'model-view' | 'test-code' | 'same-feature' | 'unknown';
7
7
  interface CoChangePartnerClassification {
@@ -69,6 +69,16 @@ declare function coChange(db: ScipDatabase, file?: string, opts?: {
69
69
  limit?: number;
70
70
  includeLinked?: boolean;
71
71
  maxFilesPerCommit?: number;
72
+ /**
73
+ * Caps how many of the (already together-count-sorted) candidate pairs
74
+ * get classified — the per-pair loop below does filesystem/graph lookups
75
+ * so its cost scales with candidate count on a large repo history. Set
76
+ * by the CLI's analysis-budget disclosure on large indexes; honoring it
77
+ * for real (rather than only disclosing it) keeps the disclosed budget
78
+ * truthful. Highest-`together` pairs are kept first since `coChangePairs`
79
+ * returns them pre-sorted by priority.
80
+ */
81
+ scanLimit?: number;
72
82
  }): CoChangeResult;
73
83
  declare function classifyCoChangePartner(fileA: string, fileB: string): CoChangePartnerClassification;
74
84
  declare function declaredCouplingSuggestionForPair(pair: CoChangePairEvidence, classification: CoChangePartnerClassification, structurallyLinked: boolean): DeclaredCouplingSuggestion | undefined;
@@ -1,2 +1,2 @@
1
- import{a,b,c,d,e}from"../chunk-65AU3HFZ.js";import"../chunk-BSN22NRK.js";import"../chunk-C5CTSJ6X.js";import"../chunk-VUKC6F77.js";import"../chunk-P5RYBRIO.js";import"../chunk-OBGRLXWF.js";import"../chunk-JM72FNGA.js";import"../chunk-72KY2ZFO.js";import"../chunk-YZA6PPZL.js";import"../chunk-HF25DFSC.js";import"../chunk-DS6QEB3G.js";import"../chunk-XUGQU7PM.js";import"../chunk-A536TEU4.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{c as classifyCoChangePartner,b as coChange,e as coChangeStructuralLinkChecker,d as declaredCouplingSuggestionForPair,a as isCoChangeNoiseFile};
1
+ import{a,b,c,d,e}from"../chunk-NJJ7AS4F.js";import"../chunk-FXG3PHVW.js";import"../chunk-NAH5EAZS.js";import"../chunk-XEMQUN3Z.js";import"../chunk-HXXMPYEF.js";import"../chunk-T2FQ4GHD.js";import"../chunk-ISLWJ4PY.js";import"../chunk-WS3Z6W3M.js";import"../chunk-GNG622H3.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{c as classifyCoChangePartner,b as coChange,e as coChangeStructuralLinkChecker,d as declaredCouplingSuggestionForPair,a as isCoChangeNoiseFile};
2
2
  //# sourceMappingURL=co-change.js.map
@@ -1,6 +1,6 @@
1
- import { S as ScipDatabase } from '../db-Djj3Nqrb.js';
1
+ import { S as ScipDatabase } from '../db-_Bdx0E1W.js';
2
2
  import 'better-sqlite3';
3
- import '../config-types-BDIWAYzr.js';
3
+ import '../config-types-BrHl3Bge.js';
4
4
 
5
5
  interface CodeResult {
6
6
  symbol: string;
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-YWYFU2V3.js";import"../chunk-7B6LP46R.js";import"../chunk-TK7O5ER5.js";import"../chunk-2KHTSEIL.js";import"../chunk-JM72FNGA.js";import"../chunk-72KY2ZFO.js";import"../chunk-YZA6PPZL.js";import"../chunk-HF25DFSC.js";import"../chunk-DS6QEB3G.js";import"../chunk-XUGQU7PM.js";import"../chunk-A536TEU4.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as code};
1
+ import{a}from"../chunk-DRPAQAFM.js";import"../chunk-XHWLNQVZ.js";import"../chunk-WQHWIVA7.js";import"../chunk-R3JY4EZ4.js";import"../chunk-HXXMPYEF.js";import"../chunk-T2FQ4GHD.js";import"../chunk-ISLWJ4PY.js";import"../chunk-WS3Z6W3M.js";import"../chunk-GNG622H3.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as code};
2
2
  //# sourceMappingURL=code.js.map
@@ -1,6 +1,8 @@
1
- import { S as ScipDatabase } from '../db-Djj3Nqrb.js';
1
+ import { S as ScipDatabase } from '../db-_Bdx0E1W.js';
2
+ import { BranchEstimateBasis } from './complexity.js';
2
3
  import 'better-sqlite3';
3
- import '../config-types-BDIWAYzr.js';
4
+ import '../config-types-BrHl3Bge.js';
5
+ import '../symbol-types-DaoeXKUt.js';
4
6
 
5
7
  interface ComplexityHotspot {
6
8
  symbol: string;
@@ -12,13 +14,15 @@ interface ComplexityHotspot {
12
14
  fanIn: number;
13
15
  fanOut: number;
14
16
  calleeCount: number;
17
+ branches: number;
18
+ estimateBasis: BranchEstimateBasis;
15
19
  score: number;
16
20
  }
17
21
  /**
18
22
  * Find complexity hotspots: symbols with a composite score based on
19
23
  * LOC, fan-in, fan-out, and callee count.
20
24
  *
21
- * Score = (loc / 50) * (fanIn / 5) * max(fanOut / 5, 1)
25
+ * Score = (loc / 50) * (fanIn / 5) * max(fanOut / 5, 1) * max(cyclomatic / 5, 1)
22
26
  *
23
27
  * Bulk fan-in/out via caller evidence + buildCalleeMap so we pay
24
28
  * one SQL pass per kind regardless of how many definitions we score —
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-GQBMH2TQ.js";import"../chunk-PFOCOG57.js";import"../chunk-B75HZHUP.js";import"../chunk-5OST6GYB.js";import"../chunk-C5CTSJ6X.js";import"../chunk-BGBBVSH4.js";import"../chunk-RNM6LMCF.js";import"../chunk-JCLDUKT6.js";import"../chunk-KDFONWTW.js";import"../chunk-OLTESY4K.js";import"../chunk-TQ5W2H3S.js";import"../chunk-TK7O5ER5.js";import"../chunk-VUKC6F77.js";import"../chunk-P5RYBRIO.js";import"../chunk-OBGRLXWF.js";import"../chunk-2KHTSEIL.js";import"../chunk-JM72FNGA.js";import"../chunk-72KY2ZFO.js";import"../chunk-YZA6PPZL.js";import"../chunk-HF25DFSC.js";import"../chunk-DS6QEB3G.js";import"../chunk-XUGQU7PM.js";import"../chunk-A536TEU4.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as complexityHotspots};
1
+ import{a}from"../chunk-WGA5BBTA.js";import"../chunk-K6UI6EBZ.js";import"../chunk-PZS6J5YG.js";import"../chunk-B75HZHUP.js";import"../chunk-X4O6K47U.js";import"../chunk-NAH5EAZS.js";import"../chunk-BGBBVSH4.js";import"../chunk-QJ3FK4TB.js";import"../chunk-WFGOH2UI.js";import"../chunk-C4ICAIJ4.js";import"../chunk-WQHWIVA7.js";import"../chunk-XEMQUN3Z.js";import"../chunk-MTDBHTSF.js";import"../chunk-R3JY4EZ4.js";import"../chunk-HXXMPYEF.js";import"../chunk-T2FQ4GHD.js";import"../chunk-ISLWJ4PY.js";import"../chunk-WS3Z6W3M.js";import"../chunk-GNG622H3.js";import"../chunk-64MNV6AB.js";import"../chunk-7S5E7KWT.js";export{a as complexityHotspots};
2
2
  //# sourceMappingURL=complexity-hotspots.js.map