scip-query 0.24.0 → 0.26.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 (661) hide show
  1. package/CHANGELOG.md +247 -1
  2. package/README.md +111 -124
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/by-kind-PRVFAGTQ.js +2 -0
  5. package/dist/call-graph-DVPAQV2F.js +2 -0
  6. package/dist/{call-graph-evidence-BociKRpF.d.ts → call-graph-evidence-CUtj8V2I.d.ts} +1 -1
  7. package/dist/chunk-2FSBGL5P.js +2 -0
  8. package/dist/chunk-2HLAFUCY.js +2 -0
  9. package/dist/chunk-2IWUT6CJ.js +3 -0
  10. package/dist/chunk-2KNN7GTQ.js +2 -0
  11. package/dist/chunk-2LHXRE2B.js +8 -0
  12. package/dist/{chunk-E65ELFKU.js → chunk-2YXE77TJ.js} +2 -2
  13. package/dist/chunk-36SGVCGX.js +2 -0
  14. package/dist/chunk-3ABBFPTP.js +2 -0
  15. package/dist/chunk-3IVFU4FD.js +3 -0
  16. package/dist/chunk-3JIQS44J.js +7 -0
  17. package/dist/chunk-3ZRB6DNK.js +7 -0
  18. package/dist/{chunk-6YTSKJJ3.js → chunk-42EOW5VI.js} +1 -1
  19. package/dist/{chunk-BHKK5RJY.js → chunk-4BHGBMNO.js} +2 -2
  20. package/dist/chunk-4BP3UBDG.js +2 -0
  21. package/dist/chunk-4D6RO7G4.js +2 -0
  22. package/dist/chunk-4FEWQ6RH.js +2 -0
  23. package/dist/chunk-4IGEOBG7.js +2 -0
  24. package/dist/chunk-4QZXBUKC.js +2 -0
  25. package/dist/chunk-4WBDEVX2.js +4 -0
  26. package/dist/chunk-4WCUBZU3.js +8 -0
  27. package/dist/chunk-4WTUBQ36.js +40 -0
  28. package/dist/chunk-4XQ4O6IM.js +3 -0
  29. package/dist/chunk-55UQAMZO.js +4 -0
  30. package/dist/chunk-5D2LVK7O.js +125 -0
  31. package/dist/chunk-5IYJ56TT.js +2 -0
  32. package/dist/chunk-5PLMJC7Q.js +2 -0
  33. package/dist/chunk-5TNQJUR2.js +5 -0
  34. package/dist/chunk-62BDNPMI.js +2 -0
  35. package/dist/chunk-64DZ5TXR.js +7 -0
  36. package/dist/chunk-65245JCM.js +2 -0
  37. package/dist/chunk-6FFVZZL4.js +2 -0
  38. package/dist/chunk-6KO5JHAR.js +2 -0
  39. package/dist/chunk-6LRXOOSX.js +2 -0
  40. package/dist/chunk-6LSEIIF7.js +2 -0
  41. package/dist/chunk-6YMNWD3H.js +6 -0
  42. package/dist/chunk-72AD6ZRR.js +5 -0
  43. package/dist/chunk-73AAKPUC.js +4 -0
  44. package/dist/chunk-76CZ77DF.js +2 -0
  45. package/dist/chunk-7VPEEAAG.js +2 -0
  46. package/dist/chunk-7WTPQ4NX.js +14 -0
  47. package/dist/chunk-7Y5T6XDP.js +2 -0
  48. package/dist/chunk-A2IIGFMJ.js +5 -0
  49. package/dist/chunk-AB5KCTEV.js +2 -0
  50. package/dist/chunk-AC566WBP.js +6 -0
  51. package/dist/chunk-AGWFSTXC.js +3 -0
  52. package/dist/chunk-AOSIYPTA.js +2 -0
  53. package/dist/chunk-AUVEWPIF.js +2 -0
  54. package/dist/chunk-B56T42J3.js +25 -0
  55. package/dist/chunk-BIQEF5NE.js +2 -0
  56. package/dist/chunk-BL6XJKTA.js +3 -0
  57. package/dist/chunk-BMKOQJRI.js +2 -0
  58. package/dist/chunk-BOZ4EXBB.js +3 -0
  59. package/dist/chunk-BUTWYEPH.js +2 -0
  60. package/dist/chunk-BZB4QPIP.js +2 -0
  61. package/dist/{chunk-6ILKOOGH.js → chunk-CE357GEE.js} +4 -4
  62. package/dist/chunk-CFN45HFP.js +2 -0
  63. package/dist/chunk-CFYMZFXT.js +368 -0
  64. package/dist/chunk-CN5EH7O3.js +2 -0
  65. package/dist/chunk-D254DNNQ.js +4 -0
  66. package/dist/chunk-D3FDISIC.js +2 -0
  67. package/dist/chunk-D3NX5XIE.js +3 -0
  68. package/dist/chunk-DA7RPPDF.js +3 -0
  69. package/dist/chunk-DDMC3FON.js +3 -0
  70. package/dist/chunk-DIO3FUSG.js +2 -0
  71. package/dist/chunk-DJ2NNSUK.js +3 -0
  72. package/dist/chunk-DKYQIM3C.js +18 -0
  73. package/dist/{chunk-OHIV323X.js → chunk-DOOEL2IV.js} +2 -2
  74. package/dist/chunk-DVFP6PZI.js +2 -0
  75. package/dist/chunk-E3FDPXZK.js +2 -0
  76. package/dist/chunk-E7YNJLCB.js +2 -0
  77. package/dist/chunk-EFGW5JPH.js +2 -0
  78. package/dist/chunk-EJVTR244.js +13 -0
  79. package/dist/chunk-EOV7RTRZ.js +2 -0
  80. package/dist/chunk-ETOIKRHO.js +2 -0
  81. package/dist/chunk-EYK3ZAO2.js +3 -0
  82. package/dist/chunk-F2V2LPET.js +52 -0
  83. package/dist/chunk-F4LUHJTF.js +2 -0
  84. package/dist/chunk-F4PUT6IT.js +2 -0
  85. package/dist/chunk-F56GCXXS.js +5 -0
  86. package/dist/chunk-FC2EVQRM.js +2 -0
  87. package/dist/chunk-FL7NBMHP.js +3 -0
  88. package/dist/chunk-FMRN2TRL.js +3 -0
  89. package/dist/chunk-FVULPZDF.js +20 -0
  90. package/dist/chunk-GCKCF5FL.js +43 -0
  91. package/dist/chunk-GH2PYF46.js +2 -0
  92. package/dist/chunk-GHJAGXIP.js +2 -0
  93. package/dist/{chunk-2GJSD5GY.js → chunk-GMVSHUKZ.js} +2 -2
  94. package/dist/chunk-GS6KDO4R.js +2 -0
  95. package/dist/chunk-GUUBXNN7.js +2 -0
  96. package/dist/chunk-GVWX5T43.js +80 -0
  97. package/dist/chunk-GZKFETP5.js +2 -0
  98. package/dist/chunk-H4EQHO6J.js +9 -0
  99. package/dist/chunk-H73WY2RM.js +2 -0
  100. package/dist/chunk-H75GSPRV.js +60 -0
  101. package/dist/chunk-HDR3AHSV.js +61 -0
  102. package/dist/chunk-HQBSL74Y.js +2 -0
  103. package/dist/chunk-HRRFKWPZ.js +2 -0
  104. package/dist/chunk-HXENDJC6.js +2 -0
  105. package/dist/chunk-IIBAZNSW.js +21 -0
  106. package/dist/chunk-INLMWEUU.js +12 -0
  107. package/dist/chunk-IWQPAF4F.js +2 -0
  108. package/dist/chunk-IZJ6YUKP.js +35 -0
  109. package/dist/chunk-J2TMAIN5.js +60 -0
  110. package/dist/chunk-J5FJMODQ.js +142 -0
  111. package/dist/chunk-J7HZPIO3.js +2 -0
  112. package/dist/chunk-JEVRKFRL.js +2 -0
  113. package/dist/chunk-JFXSGAEB.js +30 -0
  114. package/dist/chunk-JVRTHGFS.js +3 -0
  115. package/dist/chunk-JYWEX7RR.js +360 -0
  116. package/dist/chunk-K3YL22N6.js +2 -0
  117. package/dist/chunk-K4CN7GXK.js +12 -0
  118. package/dist/chunk-K5TBVXU4.js +30 -0
  119. package/dist/chunk-KDDIE2DP.js +9 -0
  120. package/dist/chunk-KHWRRPV4.js +2 -0
  121. package/dist/chunk-KI6NBKDY.js +14 -0
  122. package/dist/chunk-KU3QRSTH.js +2 -0
  123. package/dist/chunk-KZBJWZJB.js +2 -0
  124. package/dist/chunk-L7GFM3NP.js +3 -0
  125. package/dist/chunk-LMO6PK3V.js +35 -0
  126. package/dist/chunk-LN4YXJJU.js +2 -0
  127. package/dist/chunk-LOVIZBJ4.js +43 -0
  128. package/dist/chunk-LPCRK4A2.js +11 -0
  129. package/dist/chunk-MMHZKBFA.js +2 -0
  130. package/dist/{chunk-A4WEAK35.js → chunk-MOQQBQRD.js} +2 -2
  131. package/dist/chunk-N2WN6I3L.js +2 -0
  132. package/dist/chunk-N3ORQT7L.js +2 -0
  133. package/dist/chunk-NAZ3RAIW.js +2 -0
  134. package/dist/chunk-NDUNO5JQ.js +2 -0
  135. package/dist/chunk-NEIWRNAZ.js +4 -0
  136. package/dist/chunk-NJJMVD65.js +2 -0
  137. package/dist/chunk-NLOQOBXI.js +20 -0
  138. package/dist/chunk-NOLZOVCU.js +2 -0
  139. package/dist/chunk-NOWINRRN.js +2 -0
  140. package/dist/chunk-NZAXKGRL.js +16 -0
  141. package/dist/chunk-O2C4UILI.js +2 -0
  142. package/dist/chunk-O3RHA6ZT.js +3 -0
  143. package/dist/chunk-O4UZSPPI.js +3 -0
  144. package/dist/chunk-OGFV2BUX.js +2 -0
  145. package/dist/chunk-OZCJXZK6.js +499 -0
  146. package/dist/chunk-P6ODM7BY.js +2 -0
  147. package/dist/{chunk-GHNPACNP.js → chunk-PAVGPRHJ.js} +2 -2
  148. package/dist/chunk-PH52RA7D.js +2 -0
  149. package/dist/chunk-PKN354TH.js +3 -0
  150. package/dist/chunk-PWOASWEG.js +11 -0
  151. package/dist/chunk-QIWXRW72.js +2 -0
  152. package/dist/chunk-QJRMOK5N.js +2 -0
  153. package/dist/{chunk-YXPUP5G2.js → chunk-QOIXNWQR.js} +2 -2
  154. package/dist/chunk-QXEUDXBT.js +3 -0
  155. package/dist/chunk-QYUVVBMR.js +6 -0
  156. package/dist/chunk-QZ7KQZRN.js +2 -0
  157. package/dist/chunk-R6LQBUDH.js +2 -0
  158. package/dist/chunk-RBS42E55.js +20 -0
  159. package/dist/chunk-RSJKPCFX.js +26 -0
  160. package/dist/chunk-S6CZA3MV.js +2 -0
  161. package/dist/chunk-STMVAHJP.js +2 -0
  162. package/dist/chunk-SYVPTTVW.js +2 -0
  163. package/dist/chunk-T6DK3ZP7.js +2 -0
  164. package/dist/chunk-TKD34PHN.js +4 -0
  165. package/dist/chunk-TNNQFH7W.js +2 -0
  166. package/dist/chunk-TNV7SSUF.js +2 -0
  167. package/dist/chunk-TO7ZR3EH.js +8 -0
  168. package/dist/chunk-TOU3CHK4.js +2 -0
  169. package/dist/chunk-TRBI4UKT.js +2 -0
  170. package/dist/chunk-TZCVNCAN.js +4 -0
  171. package/dist/chunk-U4LZA5LL.js +3 -0
  172. package/dist/chunk-U5RIG3JP.js +3 -0
  173. package/dist/chunk-UP5KXN2I.js +2 -0
  174. package/dist/chunk-UQFR3NDH.js +5 -0
  175. package/dist/chunk-UXYXF7GV.js +2 -0
  176. package/dist/chunk-VB3GOKOS.js +2 -0
  177. package/dist/{chunk-4FR6GQIT.js → chunk-VF5JZICY.js} +2 -2
  178. package/dist/chunk-VTY3VK6E.js +2 -0
  179. package/dist/chunk-VX2O4RIS.js +2 -0
  180. package/dist/chunk-WKPV2TDZ.js +2 -0
  181. package/dist/chunk-WOFQ5DTB.js +2 -0
  182. package/dist/chunk-WS4C6TCK.js +2 -0
  183. package/dist/chunk-WXU3DGPU.js +2 -0
  184. package/dist/{chunk-ATXPTSEI.js → chunk-X6RMKHJQ.js} +7 -7
  185. package/dist/{chunk-44IETFOU.js → chunk-XHMN6ZX7.js} +2 -2
  186. package/dist/chunk-XHTVFLWW.js +2 -0
  187. package/dist/chunk-XKIDJCIK.js +2 -0
  188. package/dist/chunk-XTYTYZPT.js +2 -0
  189. package/dist/chunk-Y2JHHTTA.js +2 -0
  190. package/dist/chunk-YGVRMGYN.js +4 -0
  191. package/dist/chunk-YNQCGEQE.js +2 -0
  192. package/dist/chunk-YOQVEXVE.js +14 -0
  193. package/dist/chunk-YRT2WLYY.js +2 -0
  194. package/dist/chunk-YTAP5Y2G.js +2 -0
  195. package/dist/chunk-YTYWI7VB.js +2 -0
  196. package/dist/chunk-YULZRALL.js +2 -0
  197. package/dist/chunk-Z33WQG4Q.js +2 -0
  198. package/dist/chunk-ZGTYGDMF.js +16 -0
  199. package/dist/chunk-ZHMRSZFD.js +43 -0
  200. package/dist/chunk-ZHSP366W.js +10 -0
  201. package/dist/chunk-ZIBYCYKK.js +7 -0
  202. package/dist/chunk-ZLADLUE6.js +3 -0
  203. package/dist/chunk-ZO4YXUT6.js +4 -0
  204. package/dist/{chunk-MZPXPSUJ.js → chunk-ZR4HBC2H.js} +2 -2
  205. package/dist/cli-main.js +6 -6
  206. package/dist/cli.js +1 -1
  207. package/dist/{code-B17qEMbt.d.ts → code-BNyrCF3_.d.ts} +3 -2
  208. package/dist/code-IL5WH3NZ.js +2 -0
  209. package/dist/code-result-json-ANTBEDFP.js +4 -0
  210. package/dist/command-descriptors-HEEMDHTU.js +222 -0
  211. package/dist/deps-EOWFC6FD.js +2 -0
  212. package/dist/direct-navigation-Y5B6OSIQ.js +3 -0
  213. package/dist/{exploration-topology-BG4v30HZ.d.ts → exploration-topology-CSgEyAz-.d.ts} +3 -1
  214. package/dist/files-K4AI3JUM.js +2 -0
  215. package/dist/{health-BI2a9WPy.d.ts → health-BtfmNrfa.d.ts} +5 -79
  216. package/dist/hierarchy-6W5NDIFI.js +2 -0
  217. package/dist/imports-WH365QY4.js +2 -0
  218. package/dist/index.d.ts +13 -1
  219. package/dist/index.js +1 -1
  220. package/dist/members-K3PHMF5S.js +2 -0
  221. package/dist/methods-E7KVMBX4.js +2 -0
  222. package/dist/output-continuation-command-BJSY67SN.js +3 -0
  223. package/dist/output-pagination-UZJ5ACIX.js +24 -0
  224. package/dist/postinstall.js +1 -1
  225. package/dist/project-reindex-EP24WT4X.js +3 -0
  226. package/dist/queries/affected.js +1 -1
  227. package/dist/queries/architecture.d.ts +15 -4
  228. package/dist/queries/architecture.js +1 -1
  229. package/dist/queries/bottlenecks.js +1 -1
  230. package/dist/queries/by-kind.js +1 -1
  231. package/dist/queries/call-graph.d.ts +1 -1
  232. package/dist/queries/call-graph.js +1 -1
  233. package/dist/queries/change-surface.d.ts +1 -0
  234. package/dist/queries/change-surface.js +1 -1
  235. package/dist/queries/cleanup-plan.d.ts +3 -3
  236. package/dist/queries/cleanup-plan.js +1 -1
  237. package/dist/queries/co-change.js +1 -1
  238. package/dist/queries/code.d.ts +1 -1
  239. package/dist/queries/code.js +1 -1
  240. package/dist/queries/complexity.d.ts +6 -3
  241. package/dist/queries/complexity.js +1 -1
  242. package/dist/queries/context.d.ts +1 -7
  243. package/dist/queries/context.js +1 -1
  244. package/dist/queries/coupling.js +1 -1
  245. package/dist/queries/cycles.js +1 -1
  246. package/dist/queries/dead.js +1 -1
  247. package/dist/queries/decorative-checkers.js +1 -1
  248. package/dist/queries/dependence-slice.d.ts +46 -22
  249. package/dist/queries/dependence-slice.js +1 -1
  250. package/dist/queries/dependency-depth.d.ts +1 -7
  251. package/dist/queries/dependency-depth.js +1 -1
  252. package/dist/queries/deps.js +1 -1
  253. package/dist/queries/diff-impact.d.ts +3 -1
  254. package/dist/queries/diff-impact.js +1 -1
  255. package/dist/queries/doc-drift.js +1 -1
  256. package/dist/queries/drift.d.ts +1 -1
  257. package/dist/queries/drift.js +1 -1
  258. package/dist/queries/duplicate-bodies.d.ts +1 -1
  259. package/dist/queries/duplicate-bodies.js +1 -1
  260. package/dist/queries/entry-map.d.ts +2 -4
  261. package/dist/queries/entry-map.js +1 -1
  262. package/dist/queries/evidence.d.ts +121 -61
  263. package/dist/queries/evidence.js +1 -1
  264. package/dist/queries/fan.js +1 -1
  265. package/dist/queries/files.js +1 -1
  266. package/dist/queries/health.d.ts +1 -1
  267. package/dist/queries/health.js +1 -1
  268. package/dist/queries/hierarchy.d.ts +2 -2
  269. package/dist/queries/hierarchy.js +1 -1
  270. package/dist/queries/hotspots.d.ts +1 -1
  271. package/dist/queries/hotspots.js +1 -1
  272. package/dist/queries/imports.d.ts +1 -0
  273. package/dist/queries/imports.js +1 -1
  274. package/dist/queries/incomplete-migration.d.ts +3 -3
  275. package/dist/queries/incomplete-migration.js +1 -1
  276. package/dist/queries/index.d.ts +15 -64
  277. package/dist/queries/index.js +1 -1
  278. package/dist/queries/locality-candidates.d.ts +4 -4
  279. package/dist/queries/locality-candidates.js +1 -1
  280. package/dist/queries/members.d.ts +2 -2
  281. package/dist/queries/members.js +1 -1
  282. package/dist/queries/methods.js +1 -1
  283. package/dist/queries/not-implemented.d.ts +2 -6
  284. package/dist/queries/not-implemented.js +1 -1
  285. package/dist/queries/outline.js +1 -1
  286. package/dist/queries/passthrough-candidates.js +1 -1
  287. package/dist/queries/react-component-duplicates.js +1 -1
  288. package/dist/queries/react-hook-candidates.js +1 -1
  289. package/dist/queries/react-large-component-pressure.js +1 -1
  290. package/dist/queries/recent-duplicates.js +1 -1
  291. package/dist/queries/redundant-reexports.d.ts +4 -14
  292. package/dist/queries/redundant-reexports.js +1 -1
  293. package/dist/queries/refs.d.ts +4 -1
  294. package/dist/queries/refs.js +1 -1
  295. package/dist/queries/review.d.ts +188 -0
  296. package/dist/queries/review.js +2 -0
  297. package/dist/queries/similar-files.d.ts +7 -10
  298. package/dist/queries/similar-files.js +1 -1
  299. package/dist/queries/similar-signatures.js +1 -1
  300. package/dist/queries/similar.d.ts +19 -1
  301. package/dist/queries/similar.js +1 -1
  302. package/dist/queries/slice-cohesion.d.ts +205 -0
  303. package/dist/queries/slice-cohesion.js +2 -0
  304. package/dist/queries/source-inspection.d.ts +6 -202
  305. package/dist/queries/source-inspection.js +1 -1
  306. package/dist/queries/source-search.d.ts +2 -3
  307. package/dist/queries/source-search.js +1 -1
  308. package/dist/queries/stats.d.ts +1 -0
  309. package/dist/queries/stats.js +1 -1
  310. package/dist/queries/surface.js +1 -1
  311. package/dist/queries/symbols.js +1 -1
  312. package/dist/queries/system.d.ts +4 -2
  313. package/dist/queries/system.js +1 -1
  314. package/dist/queries/test-quality.d.ts +1 -1
  315. package/dist/queries/test-quality.js +1 -1
  316. package/dist/queries/twin-drift.d.ts +1 -1
  317. package/dist/queries/twin-drift.js +1 -1
  318. package/dist/queries/unused-imports.js +1 -1
  319. package/dist/queries/unused-params.d.ts +3 -15
  320. package/dist/queries/unused-params.js +1 -1
  321. package/dist/queries/vue-component-duplicates.js +1 -1
  322. package/dist/queries/vue-composable-candidates.js +1 -1
  323. package/dist/queries/vue-large-view-pressure.js +1 -1
  324. package/dist/query-service-fastpath.js +5 -5
  325. package/dist/query-service-server.js +4 -4
  326. package/dist/refs-CCBJG7WK.js +2 -0
  327. package/dist/refs-pagination-DRNLVU4S.js +2 -0
  328. package/dist/reindex-worker.js +79 -29
  329. package/dist/reindex.js +45 -45
  330. package/dist/repository-cache-worker.js +2 -0
  331. package/dist/runtime.d.ts +8 -8
  332. package/dist/runtime.js +3 -4
  333. package/dist/rust-semantic-session-server.js +1 -1
  334. package/dist/rust-semantic-session-worker.js +1 -1
  335. package/dist/rust-semantic-worker.js +1 -1
  336. package/dist/service-queries-2WAJI7R6.js +6 -0
  337. package/dist/source-inspection-91U9zdO3.d.ts +341 -0
  338. package/dist/{source-search-types-Dwz8KeuW.d.ts → source-search-types-DWGYNg8M.d.ts} +15 -2
  339. package/dist/stats-G7DIV6VU.js +2 -0
  340. package/dist/surface-IO55UALI.js +2 -0
  341. package/dist/system-ZBMSHJXU.js +2 -0
  342. package/dist/{queries/trace.d.ts → trace-BMjw3prn.d.ts} +1 -18
  343. package/dist/typescript-indexer.js +2 -0
  344. package/dist/typescript-mailbox-worker.js +1 -1
  345. package/dist/watch-server.js +3 -3
  346. package/docs/AGENT_GUIDE.md +19 -128
  347. package/docs/CLI_JSON_OUTPUT.md +21 -17
  348. package/docs/COMMAND_REFERENCE.md +34 -49
  349. package/docs/CURRENT_COMMANDS.md +123 -0
  350. package/docs/DETECTOR_EVIDENCE_CONTRACTS.md +0 -40
  351. package/docs/DETECTOR_GUIDE.md +27 -23
  352. package/docs/PRODUCT_VISION.md +135 -0
  353. package/docs/PROPERTY_TESTING.md +73 -0
  354. package/docs/REVIEW.md +76 -0
  355. package/docs/SKILLS.md +51 -0
  356. package/docs/WINDOWS_SIDECAR_RELEASE.md +12 -3
  357. package/docs/accuracy-audit-checklist.md +34 -0
  358. package/docs/analyzer-inventory.md +2 -2
  359. package/package.json +18 -80
  360. package/scripts/evidence-product-contract.mjs +7 -3
  361. package/scripts/record-review-coverage.mjs +118 -0
  362. package/scripts/scip-windows-provenance.mjs +29 -19
  363. package/skills/scip-architecture-review/SKILL.md +57 -0
  364. package/skills/scip-architecture-review/agents/openai.yaml +4 -0
  365. package/skills/scip-architecture-review/references/design-checks.md +17 -0
  366. package/skills/scip-explore/SKILL.md +15 -59
  367. package/skills/scip-explore/agents/openai.yaml +3 -3
  368. package/skills/scip-explore/references/external-evidence.md +2 -2
  369. package/skills/scip-explore/references/information-model.md +26 -29
  370. package/skills/scip-explore/scripts/capture-evidence.mjs +68 -34
  371. package/skills/scip-integrity-audit/SKILL.md +53 -181
  372. package/skills/scip-integrity-audit/agents/openai.yaml +3 -3
  373. package/skills/scip-integrity-audit/references/integrity-probes.md +27 -0
  374. package/skills/scip-plan/SKILL.md +39 -65
  375. package/skills/scip-plan/agents/openai.yaml +2 -2
  376. package/skills/scip-query/SKILL.md +28 -81
  377. package/skills/scip-query/agents/openai.yaml +2 -2
  378. package/skills/scip-query/references/command-guide.md +169 -0
  379. package/skills/scip-setup/SKILL.md +4 -2
  380. package/skills/scip-setup/agents/openai.yaml +3 -3
  381. package/dist/by-kind-H3P6BR5G.js +0 -2
  382. package/dist/call-graph-VTG2CUOQ.js +0 -2
  383. package/dist/chunk-26CT72HM.js +0 -2
  384. package/dist/chunk-2BMSSRBH.js +0 -2
  385. package/dist/chunk-2M2LSIMY.js +0 -7
  386. package/dist/chunk-2N6WBNDC.js +0 -29
  387. package/dist/chunk-2OOY75BW.js +0 -2
  388. package/dist/chunk-2USA3S3P.js +0 -3
  389. package/dist/chunk-2VAHDDLM.js +0 -133
  390. package/dist/chunk-2XWIUW5Z.js +0 -455
  391. package/dist/chunk-35NLDRZC.js +0 -2
  392. package/dist/chunk-3AF4TUFK.js +0 -3
  393. package/dist/chunk-3D4BOXW6.js +0 -20
  394. package/dist/chunk-3LO4FST5.js +0 -16
  395. package/dist/chunk-3WTY4LP2.js +0 -3
  396. package/dist/chunk-3Z5AMSK6.js +0 -29
  397. package/dist/chunk-4KBTHJLP.js +0 -2
  398. package/dist/chunk-5BIKR67W.js +0 -2
  399. package/dist/chunk-5PROPLHI.js +0 -2
  400. package/dist/chunk-5V7EPTII.js +0 -2
  401. package/dist/chunk-62LPZCBQ.js +0 -3
  402. package/dist/chunk-64O2JHQA.js +0 -2
  403. package/dist/chunk-6D4F5VWG.js +0 -10
  404. package/dist/chunk-6ERFBC3X.js +0 -3
  405. package/dist/chunk-6MFXCMZC.js +0 -2
  406. package/dist/chunk-6O7FACKB.js +0 -2
  407. package/dist/chunk-6TS3KOXR.js +0 -2
  408. package/dist/chunk-76QOU4PK.js +0 -3
  409. package/dist/chunk-7DUI77BN.js +0 -2
  410. package/dist/chunk-7F45LJKI.js +0 -2
  411. package/dist/chunk-7F7T6DCR.js +0 -2
  412. package/dist/chunk-7H6VHWWJ.js +0 -2
  413. package/dist/chunk-7HXT6YLU.js +0 -5
  414. package/dist/chunk-7KCZELVM.js +0 -2
  415. package/dist/chunk-7R4V5ES6.js +0 -6
  416. package/dist/chunk-7RIRIADH.js +0 -7
  417. package/dist/chunk-7ZLWLOGT.js +0 -2
  418. package/dist/chunk-AADQLOQ4.js +0 -38
  419. package/dist/chunk-AN76MGUE.js +0 -2
  420. package/dist/chunk-ANLNLY66.js +0 -2
  421. package/dist/chunk-AX7IDVFT.js +0 -2
  422. package/dist/chunk-B3X6KU75.js +0 -2
  423. package/dist/chunk-B7MPDEAK.js +0 -3
  424. package/dist/chunk-BBB5FBX4.js +0 -2
  425. package/dist/chunk-BJT7LSPK.js +0 -3
  426. package/dist/chunk-BJWFVAA5.js +0 -2
  427. package/dist/chunk-BKVWUP7Y.js +0 -2
  428. package/dist/chunk-BKZYTLGE.js +0 -35
  429. package/dist/chunk-BL6DCHQP.js +0 -2
  430. package/dist/chunk-BOW7SSQH.js +0 -43
  431. package/dist/chunk-C4RHHCKL.js +0 -7
  432. package/dist/chunk-C7C6AKAT.js +0 -117
  433. package/dist/chunk-CD6M6LS2.js +0 -16
  434. package/dist/chunk-CFE6PSG6.js +0 -2
  435. package/dist/chunk-CFNIGQMT.js +0 -2
  436. package/dist/chunk-CKBUBRYD.js +0 -2
  437. package/dist/chunk-CZW5MZ5B.js +0 -2
  438. package/dist/chunk-DBBZ63ZX.js +0 -2
  439. package/dist/chunk-DBN7DMJB.js +0 -18
  440. package/dist/chunk-DUULLZHZ.js +0 -3
  441. package/dist/chunk-DV5Y5NOS.js +0 -2
  442. package/dist/chunk-DZOIKCTM.js +0 -3
  443. package/dist/chunk-E4PKTOL3.js +0 -2
  444. package/dist/chunk-E7QR35ST.js +0 -2
  445. package/dist/chunk-EFSXAINW.js +0 -2
  446. package/dist/chunk-EHVEIEQN.js +0 -18
  447. package/dist/chunk-EHYDXE3Z.js +0 -2
  448. package/dist/chunk-EP63Y6LD.js +0 -2
  449. package/dist/chunk-EPX6NQN6.js +0 -4
  450. package/dist/chunk-ETC674NS.js +0 -5
  451. package/dist/chunk-F5GSBHC6.js +0 -3
  452. package/dist/chunk-FH3DGXC6.js +0 -2
  453. package/dist/chunk-FI7VGOR4.js +0 -16
  454. package/dist/chunk-FJF6VO2P.js +0 -2
  455. package/dist/chunk-FLMTCX5R.js +0 -2
  456. package/dist/chunk-FVFDOIM3.js +0 -2
  457. package/dist/chunk-G2HU5WRN.js +0 -2
  458. package/dist/chunk-G4ALYS4J.js +0 -2
  459. package/dist/chunk-G56I7K4W.js +0 -26
  460. package/dist/chunk-GC4DG2V5.js +0 -2
  461. package/dist/chunk-GG45PK4S.js +0 -4
  462. package/dist/chunk-GINH3YQU.js +0 -20
  463. package/dist/chunk-GTZZVLKJ.js +0 -2
  464. package/dist/chunk-GXXW5ZHH.js +0 -2
  465. package/dist/chunk-H5EXS3HM.js +0 -2
  466. package/dist/chunk-HAXXKRTD.js +0 -4
  467. package/dist/chunk-HEZWBAZY.js +0 -2
  468. package/dist/chunk-HMEWLMML.js +0 -2
  469. package/dist/chunk-HOBOVYPO.js +0 -11
  470. package/dist/chunk-HRFQ6GW5.js +0 -8
  471. package/dist/chunk-HX4X7KG3.js +0 -2
  472. package/dist/chunk-HYT2R7LX.js +0 -4
  473. package/dist/chunk-IKQVBVQL.js +0 -40
  474. package/dist/chunk-IW5XQG5G.js +0 -2
  475. package/dist/chunk-J6GLBBRK.js +0 -4
  476. package/dist/chunk-J7A4PWFX.js +0 -3
  477. package/dist/chunk-JCSAZ35V.js +0 -2
  478. package/dist/chunk-JDU2IV3A.js +0 -2
  479. package/dist/chunk-JFMEXGFE.js +0 -2
  480. package/dist/chunk-JFMI5SGB.js +0 -4
  481. package/dist/chunk-JJP37RGX.js +0 -57
  482. package/dist/chunk-JZ2A7LDM.js +0 -5
  483. package/dist/chunk-KMVGRIO2.js +0 -2
  484. package/dist/chunk-KNLQGXVH.js +0 -80
  485. package/dist/chunk-KVQCECPR.js +0 -2
  486. package/dist/chunk-KXXORBZ2.js +0 -4
  487. package/dist/chunk-L5KYH6U3.js +0 -35
  488. package/dist/chunk-L6XHYJPZ.js +0 -21
  489. package/dist/chunk-L7KTFEAV.js +0 -43
  490. package/dist/chunk-LDXHR5EL.js +0 -23
  491. package/dist/chunk-LEECKFCJ.js +0 -2
  492. package/dist/chunk-MHGDSBFX.js +0 -2
  493. package/dist/chunk-MLQVVDG3.js +0 -74
  494. package/dist/chunk-MOKUWRHO.js +0 -3
  495. package/dist/chunk-MPYAPMNE.js +0 -2
  496. package/dist/chunk-MTDBHTSF.js +0 -2
  497. package/dist/chunk-MV6SPXCR.js +0 -7
  498. package/dist/chunk-MWN53KRN.js +0 -60
  499. package/dist/chunk-MXNGIEPU.js +0 -3
  500. package/dist/chunk-N55KIE46.js +0 -2
  501. package/dist/chunk-NB4D3BNM.js +0 -2
  502. package/dist/chunk-NGKBOT6G.js +0 -23
  503. package/dist/chunk-NJGKXKQF.js +0 -2
  504. package/dist/chunk-NJQISBL4.js +0 -8
  505. package/dist/chunk-NJT3ZEKY.js +0 -16
  506. package/dist/chunk-NKMKZP6A.js +0 -2
  507. package/dist/chunk-NODFZ6ED.js +0 -2
  508. package/dist/chunk-NSM5IEVW.js +0 -2
  509. package/dist/chunk-NTGUVNR2.js +0 -3
  510. package/dist/chunk-NU3KFF2O.js +0 -57
  511. package/dist/chunk-NWLVNU66.js +0 -557
  512. package/dist/chunk-NYKZMCRC.js +0 -4
  513. package/dist/chunk-O6BUXZEH.js +0 -6
  514. package/dist/chunk-ODPDP7A4.js +0 -3
  515. package/dist/chunk-OIAPEKMT.js +0 -3
  516. package/dist/chunk-OIOC5EHF.js +0 -3
  517. package/dist/chunk-ONPPQM4G.js +0 -2
  518. package/dist/chunk-OUHEZBYI.js +0 -2
  519. package/dist/chunk-OVGYW7UD.js +0 -29
  520. package/dist/chunk-OYKU4B3Y.js +0 -2
  521. package/dist/chunk-POBJ6FR2.js +0 -5
  522. package/dist/chunk-PSZPMMWN.js +0 -2
  523. package/dist/chunk-PXTRBKRK.js +0 -3
  524. package/dist/chunk-Q5JRIHT3.js +0 -4
  525. package/dist/chunk-Q7ATHARX.js +0 -2
  526. package/dist/chunk-Q7CSKIDM.js +0 -5
  527. package/dist/chunk-QBQE7ZJ5.js +0 -3
  528. package/dist/chunk-QH22UIXP.js +0 -5
  529. package/dist/chunk-QXCKQTKR.js +0 -60
  530. package/dist/chunk-RBAD4GJ2.js +0 -13
  531. package/dist/chunk-RMDPFPNW.js +0 -2
  532. package/dist/chunk-ROPJDEJZ.js +0 -4
  533. package/dist/chunk-RVZC6TJE.js +0 -2
  534. package/dist/chunk-S4QZBKSR.js +0 -3
  535. package/dist/chunk-SCPMZ73U.js +0 -2
  536. package/dist/chunk-SIAP5RGI.js +0 -73
  537. package/dist/chunk-SIX4RFR3.js +0 -3
  538. package/dist/chunk-SKKXTABJ.js +0 -16
  539. package/dist/chunk-SSRFUQBD.js +0 -2
  540. package/dist/chunk-SYVJEEUJ.js +0 -3
  541. package/dist/chunk-T3CZAZSI.js +0 -8
  542. package/dist/chunk-T6DWDI5E.js +0 -3
  543. package/dist/chunk-T6HRIROJ.js +0 -7
  544. package/dist/chunk-TAA7HXHE.js +0 -2
  545. package/dist/chunk-TJ2JQYT3.js +0 -2
  546. package/dist/chunk-TULNMD5T.js +0 -368
  547. package/dist/chunk-U2FPY5XA.js +0 -3
  548. package/dist/chunk-U3SXIMII.js +0 -38
  549. package/dist/chunk-U6KCHXJ4.js +0 -2
  550. package/dist/chunk-UH3XSKS5.js +0 -9
  551. package/dist/chunk-UIFUZVCC.js +0 -2
  552. package/dist/chunk-UXKURIVI.js +0 -2
  553. package/dist/chunk-V2RBODHL.js +0 -2
  554. package/dist/chunk-VBKUWB6N.js +0 -2
  555. package/dist/chunk-VBV6ALJE.js +0 -2
  556. package/dist/chunk-VDGFWCQV.js +0 -2
  557. package/dist/chunk-VDSDOEWF.js +0 -2
  558. package/dist/chunk-VZPWVCLN.js +0 -20
  559. package/dist/chunk-WDSFQDPN.js +0 -2
  560. package/dist/chunk-WFA35BGR.js +0 -7
  561. package/dist/chunk-WLMP3OCW.js +0 -2
  562. package/dist/chunk-WSA52GOR.js +0 -2
  563. package/dist/chunk-WYPL7GF7.js +0 -2
  564. package/dist/chunk-X3YVZAKZ.js +0 -5
  565. package/dist/chunk-X6OGVFIT.js +0 -2
  566. package/dist/chunk-XDAUYDFT.js +0 -2
  567. package/dist/chunk-XKXTR6ZI.js +0 -9
  568. package/dist/chunk-Y5DFAW5W.js +0 -4
  569. package/dist/chunk-YSYPDRD5.js +0 -3
  570. package/dist/chunk-ZFVPWH62.js +0 -5
  571. package/dist/chunk-ZGIHTH27.js +0 -2
  572. package/dist/chunk-ZGIQN2SX.js +0 -2
  573. package/dist/chunk-ZHG4WAHR.js +0 -12
  574. package/dist/chunk-ZKB2XUEN.js +0 -4
  575. package/dist/chunk-ZLMXIQLC.js +0 -21
  576. package/dist/chunk-ZMCQIHI4.js +0 -2
  577. package/dist/code-TAVIKWJI.js +0 -2
  578. package/dist/code-result-json-5FEFQCAQ.js +0 -2
  579. package/dist/command-descriptors-7BKH53Y3.js +0 -343
  580. package/dist/dataflow-GFBTVDH3.js +0 -2
  581. package/dist/dependence-slice-GWGQCODG.js +0 -2
  582. package/dist/deps-4QHVDPYA.js +0 -2
  583. package/dist/direct-navigation-4UBC6HNW.js +0 -3
  584. package/dist/entry-map-QCTF4RVY.js +0 -2
  585. package/dist/files-M2UBF5HJ.js +0 -2
  586. package/dist/graph-evidence-Bjyky2V4.d.ts +0 -126
  587. package/dist/hierarchy-2UIHRLW4.js +0 -2
  588. package/dist/imports-WIE3YZOB.js +0 -2
  589. package/dist/members-YKD636DA.js +0 -2
  590. package/dist/methods-VDF4IMYG.js +0 -2
  591. package/dist/next-anchor-candidates-BwMczMvX.d.ts +0 -90
  592. package/dist/output-continuation-command-4UMDOOLO.js +0 -3
  593. package/dist/output-pagination-2GME6OPY.js +0 -19
  594. package/dist/project-reindex-XEQTRCV5.js +0 -3
  595. package/dist/queries/anchors.d.ts +0 -123
  596. package/dist/queries/anchors.js +0 -2
  597. package/dist/queries/complexity-hotspots.d.ts +0 -40
  598. package/dist/queries/complexity-hotspots.js +0 -2
  599. package/dist/queries/convergence.d.ts +0 -33
  600. package/dist/queries/convergence.js +0 -2
  601. package/dist/queries/dataflow.d.ts +0 -77
  602. package/dist/queries/dataflow.js +0 -2
  603. package/dist/queries/deep-chains.d.ts +0 -5
  604. package/dist/queries/deep-chains.js +0 -2
  605. package/dist/queries/extract-candidates.d.ts +0 -79
  606. package/dist/queries/extract-candidates.js +0 -2
  607. package/dist/queries/isolated.d.ts +0 -24
  608. package/dist/queries/isolated.js +0 -2
  609. package/dist/queries/plan-context.d.ts +0 -33
  610. package/dist/queries/plan-context.js +0 -2
  611. package/dist/queries/reference-neighborhood.d.ts +0 -4
  612. package/dist/queries/reference-neighborhood.js +0 -2
  613. package/dist/queries/reference-reachability.d.ts +0 -48
  614. package/dist/queries/reference-reachability.js +0 -2
  615. package/dist/queries/self-audit.d.ts +0 -69
  616. package/dist/queries/self-audit.js +0 -2
  617. package/dist/queries/similar-chains.d.ts +0 -48
  618. package/dist/queries/similar-chains.js +0 -2
  619. package/dist/queries/slice.d.ts +0 -4
  620. package/dist/queries/slice.js +0 -2
  621. package/dist/queries/stale-abstractions.d.ts +0 -72
  622. package/dist/queries/stale-abstractions.js +0 -2
  623. package/dist/queries/system-map.d.ts +0 -449
  624. package/dist/queries/system-map.js +0 -2
  625. package/dist/queries/trace.js +0 -2
  626. package/dist/queries/twin-ab.d.ts +0 -66
  627. package/dist/queries/twin-ab.js +0 -2
  628. package/dist/queries/value-flow.d.ts +0 -43
  629. package/dist/queries/value-flow.js +0 -2
  630. package/dist/queries/wrapper-candidates.d.ts +0 -49
  631. package/dist/queries/wrapper-candidates.js +0 -2
  632. package/dist/refs-JNK5CLM7.js +0 -2
  633. package/dist/refs-pagination-6BLRYGMV.js +0 -2
  634. package/dist/slice-PHPVNCWX.js +0 -2
  635. package/dist/source-snippet-_wrcgmZc.d.ts +0 -15
  636. package/dist/stats-OOJ74B32.js +0 -2
  637. package/dist/surface-MQX5MPIV.js +0 -2
  638. package/dist/symbol-resolution-DBLVXLBC.js +0 -2
  639. package/dist/system-JOPKV4OG.js +0 -2
  640. package/dist/trace-I2P2YFH4.js +0 -2
  641. package/dist/value-flow-JJVMF7NP.js +0 -2
  642. package/skills/concrete-plan/SKILL.md +0 -8
  643. package/skills/concrete-plan/agents/openai.yaml +0 -4
  644. package/skills/conductor/SKILL.md +0 -110
  645. package/skills/conductor/agents/openai.yaml +0 -4
  646. package/skills/principal-maintainability-review/SKILL.md +0 -273
  647. package/skills/principal-maintainability-review/agents/openai.yaml +0 -4
  648. package/skills/scip-calibrate/SKILL.md +0 -102
  649. package/skills/scip-calibrate/agents/openai.yaml +0 -4
  650. package/skills/scip-claim-audit/SKILL.md +0 -113
  651. package/skills/scip-claim-audit/agents/openai.yaml +0 -4
  652. package/skills/scip-probe-reachability/SKILL.md +0 -93
  653. package/skills/scip-probe-reachability/agents/openai.yaml +0 -4
  654. package/skills/scip-root-cause/SKILL.md +0 -160
  655. package/skills/scip-root-cause/agents/openai.yaml +0 -4
  656. package/skills/scip-system-compression/SKILL.md +0 -252
  657. package/skills/scip-system-compression/agents/openai.yaml +0 -4
  658. package/skills/scip-system-compression/references/compression-atlas.md +0 -116
  659. package/skills/scip-system-compression/references/compression-patterns.md +0 -87
  660. package/skills/scip-twin-drift/SKILL.md +0 -109
  661. package/skills/scip-twin-drift/agents/openai.yaml +0 -4
@@ -0,0 +1,2 @@
1
+ import{a,b}from"./chunk-2YXE77TJ.js";import"./chunk-OGFV2BUX.js";import"./chunk-LOVIZBJ4.js";import"./chunk-QXEUDXBT.js";import"./chunk-J5FJMODQ.js";import"./chunk-WOFQ5DTB.js";import"./chunk-PH52RA7D.js";import"./chunk-7Y5T6XDP.js";import"./chunk-X6RMKHJQ.js";import"./chunk-JEVRKFRL.js";import"./chunk-QOIXNWQR.js";import"./chunk-GZKFETP5.js";import"./chunk-HRRFKWPZ.js";import"./chunk-YULZRALL.js";import"./chunk-HGFDYOVB.js";import"./chunk-TKD34PHN.js";import"./chunk-2HLAFUCY.js";import"./chunk-U5RIG3JP.js";import"./chunk-62BDNPMI.js";export{a as deps,b as rdeps};
2
+ //# sourceMappingURL=deps-EOWFC6FD.js.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import{A as a}from"./chunk-EJVTR244.js";import"./chunk-EYK3ZAO2.js";import"./chunk-JYWEX7RR.js";import"./chunk-OZCJXZK6.js";export{a as directNavigationQueryCommandDescriptors};
3
+ //# sourceMappingURL=direct-navigation-Y5B6OSIQ.js.map
@@ -8,6 +8,8 @@ interface ExplorationSourceLocation {
8
8
  file: string;
9
9
  line: number;
10
10
  endLine?: number;
11
+ startColumn?: number;
12
+ endColumn?: number;
11
13
  }
12
14
  type ExplorationEvidenceStrength = 'exact' | 'derived' | 'candidate' | 'mixed' | 'unknown';
13
15
  type ExplorationDisposition = 'emitted' | 'folded' | 'excluded' | 'unsupported';
@@ -253,4 +255,4 @@ interface ExplorationRouteCatalog {
253
255
  coverage: ExplorationRouteCatalogCoverage;
254
256
  }
255
257
 
256
- export type { ExplorationSourceLocation as E, ProgramEdgeSemantic as P, ExplorationEvidenceStrength as a, ExplorationTopologyNode as b, ExplorationEvidenceSource as c, ExplorationTopology as d, ExplorationAnchorStatus as e, ExplorationCompletion as f, ExplorationCompletionStatus as g, ExplorationDisposition as h, ExplorationDispositionCounts as i, ExplorationFrontierGroup as j, ExplorationTopologyAnchor as k, ExplorationTopologyCoverage as l, ExplorationTopologyEdge as m, ExplorationTopologyInput as n, ExplorationTopologyPath as o };
258
+ export type { ExplorationSourceLocation as E, ProgramEdgeSemantic as P, ExplorationEvidenceStrength as a, ExplorationAnchorStatus as b, ExplorationCompletion as c, ExplorationCompletionStatus as d, ExplorationDisposition as e, ExplorationDispositionCounts as f, ExplorationEvidenceSource as g, ExplorationFrontierGroup as h, ExplorationTopology as i, ExplorationTopologyAnchor as j, ExplorationTopologyCoverage as k, ExplorationTopologyEdge as l, ExplorationTopologyInput as m, ExplorationTopologyNode as n, ExplorationTopologyPath as o };
@@ -0,0 +1,2 @@
1
+ import{a,b}from"./chunk-XKIDJCIK.js";import"./chunk-QIWXRW72.js";import"./chunk-YUKYB54I.js";import"./chunk-PH52RA7D.js";import"./chunk-JEVRKFRL.js";import"./chunk-GZKFETP5.js";import"./chunk-HRRFKWPZ.js";import"./chunk-TKD34PHN.js";import"./chunk-2HLAFUCY.js";import"./chunk-U5RIG3JP.js";import"./chunk-62BDNPMI.js";export{a as files,b as pathMatchesGlob};
2
+ //# sourceMappingURL=files-K4AI3JUM.js.map
@@ -61,10 +61,6 @@ interface PolicyExclusionSummary {
61
61
  detail: string;
62
62
  count: number;
63
63
  }
64
- interface StaleSummary extends CountLocSummary {
65
- unused: number;
66
- singleUse: number;
67
- }
68
64
  interface DriftSummary {
69
65
  count: number;
70
66
  unusedImports: number;
@@ -74,16 +70,6 @@ interface DriftSummary {
74
70
  direct: number;
75
71
  signal: number;
76
72
  }
77
- interface ComplexitySummary {
78
- top: Array<{
79
- symbol: string;
80
- score: number;
81
- file?: string;
82
- }>;
83
- extremeCount: number;
84
- /** Hotspots above the extreme score that policy did not count (disclosed). */
85
- exclusions?: PolicyExclusionSummary[];
86
- }
87
73
  interface GitEvidenceSummary {
88
74
  amplification: ChangeAmplificationSummary | null;
89
75
  hiddenCoupling: {
@@ -137,14 +123,6 @@ interface HealthAction {
137
123
  /** Descriptor id in detectorEvidence; absent for analyses without a typed detector contract. */
138
124
  evidenceContractId?: string;
139
125
  }
140
- /** One deduction line — the score is the sum of these, so it is auditable. */
141
- interface ScoreDeduction {
142
- axis: string;
143
- points: number;
144
- detail: string;
145
- /** Risk deductions use graph/change evidence; hygiene deductions use candidate signals. */
146
- kind: 'risk' | 'hygiene';
147
- }
148
126
  /** One detector policy that removed rows from a finding count, with the count it removed. */
149
127
  interface HealthPolicyExclusion {
150
128
  detector: string;
@@ -152,17 +130,8 @@ interface HealthPolicyExclusion {
152
130
  detail: string;
153
131
  count: number;
154
132
  }
155
- interface HealthPressure {
156
- axis: string;
157
- category: string;
158
- kind: ScoreDeduction['kind'];
159
- count: number;
160
- threshold: number;
161
- ratio: number;
162
- extraPenalty: number;
163
- }
164
133
  interface HealthAxes {
165
- /** LOC in indexed zero-reference or disconnected candidates (legacy field name: deletable). */
134
+ /** LOC in indexed no-observed-reference candidates (legacy field name: deletable). */
166
135
  deletable: {
167
136
  loc: number;
168
137
  symbols: number;
@@ -170,9 +139,9 @@ interface HealthAxes {
170
139
  cycles: {
171
140
  count: number;
172
141
  };
173
- /** Files touched per commit the measured cost of one conceptual change. */
142
+ /** Files touched per observed commit; a commit may contain several unrelated changes. */
174
143
  changeAmplification: ChangeAmplificationSummary | null;
175
- /** File pairs that co-change without a structural link concepts the visible graph can't see. */
144
+ /** File pairs changed in the same commits without an observed structural link; this is historical association. */
176
145
  hiddenCoupling: {
177
146
  pairCount: number;
178
147
  scoreCount: number;
@@ -184,14 +153,6 @@ interface HealthAxes {
184
153
  scoreWeight?: number;
185
154
  }>;
186
155
  } | null;
187
- /** Complexity hotspots weighted by churn — complex code nobody touches costs nothing. */
188
- churnWeightedComplexity: Array<{
189
- symbol: string;
190
- file?: string;
191
- score: number;
192
- changes: number;
193
- weighted: number;
194
- }> | null;
195
156
  /** What fraction of findings rest on graph facts vs heuristics, and how many the user has rejected. */
196
157
  evidenceQuality: {
197
158
  graphFindings: number;
@@ -236,13 +197,6 @@ interface HealthProvenance {
236
197
  } | null;
237
198
  }
238
199
  interface HealthReport {
239
- /** Headline = min(riskScore, hygieneScore); kept for compatibility. */
240
- score: number;
241
- /** Risk-oriented graph facts and change-graph signals; the composite remains experimental. */
242
- riskScore: number;
243
- /** Tidiness signals (candidate detectors) — real but not fix-predictive. */
244
- hygieneScore: number;
245
- scoreBreakdown: ScoreDeduction[];
246
200
  overview: {
247
201
  documents: number;
248
202
  symbols: number;
@@ -253,8 +207,6 @@ interface HealthReport {
253
207
  findings: {
254
208
  deadSymbols: number;
255
209
  deadLoc: number;
256
- isolatedSymbols: number;
257
- isolatedLoc: number;
258
210
  cycles: number;
259
211
  similarPairs: number;
260
212
  duplicateBodyGroups: number;
@@ -269,13 +221,8 @@ interface HealthReport {
269
221
  vueComposableCandidatePairs: number;
270
222
  vueComposableCandidateScoreCount: number;
271
223
  vueLargeViewPressureFiles: number;
272
- extractionCandidates: number;
273
- wrappers: number;
274
- wrapperScoreCount: number;
275
224
  passthroughs: number;
276
- staleTypes: number;
277
225
  driftedFiles: number;
278
- complexityHotspotCount: number;
279
226
  hiddenCouplingPairs: number | null;
280
227
  hiddenCouplingScoreCount: number | null;
281
228
  coverageContractViolations: number;
@@ -287,7 +234,6 @@ interface HealthReport {
287
234
  byCategory: Record<string, number>;
288
235
  } | null;
289
236
  actions: HealthAction[];
290
- pressure: HealthPressure[];
291
237
  /**
292
238
  * Rows detector policies removed from the counts above (test scaffolding,
293
239
  * vendored kit primitives, framework-mandated twins). Each row is still
@@ -295,17 +241,12 @@ interface HealthReport {
295
241
  * finding is never mistaken for an absent one.
296
242
  */
297
243
  policyExclusions: HealthPolicyExclusion[];
298
- topComplexity: Array<{
299
- symbol: string;
300
- score: number;
301
- file?: string;
302
- }>;
303
244
  /** Calibrated claim limits and recovery paths for detector evidence. */
304
245
  detectorEvidence: DetectorEvidenceAssessment[];
305
246
  warnings?: string[];
306
247
  }
307
248
 
308
- 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"];
249
+ declare const HEALTH_PHASES: readonly ["overview", "dead", "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", "passthrough-candidates", "drift", "git-evidence", "suppressions", "coverage-contracts"];
309
250
  type HealthPhaseName = (typeof HEALTH_PHASES)[number];
310
251
  type HealthPhaseResult = {
311
252
  phase: 'overview';
@@ -314,12 +255,10 @@ type HealthPhaseResult = {
314
255
  } | {
315
256
  phase: 'dead';
316
257
  dead: CountLocSummary;
317
- } | {
318
- phase: 'isolated';
319
- isolated: CountLocSummary;
320
258
  } | {
321
259
  phase: 'cycles';
322
260
  realCycleCount: number;
261
+ cycleExclusions: PolicyExclusionSummary[];
323
262
  } | {
324
263
  phase: 'similar';
325
264
  similarCount: number;
@@ -347,25 +286,12 @@ type HealthPhaseResult = {
347
286
  } | {
348
287
  phase: 'vue-large-view-pressure';
349
288
  vueLargeViewPressure: CountLocSummary;
350
- } | {
351
- phase: 'extract-candidates';
352
- extractCount: number;
353
- extractExclusions: PolicyExclusionSummary[];
354
- } | {
355
- phase: 'wrapper-candidates';
356
- wrappers: CountLocSummary;
357
289
  } | {
358
290
  phase: 'passthrough-candidates';
359
291
  passthroughs: CountLocSummary;
360
- } | {
361
- phase: 'stale-abstractions';
362
- stale: StaleSummary;
363
292
  } | {
364
293
  phase: 'drift';
365
294
  drift: DriftSummary;
366
- } | {
367
- phase: 'complexity-hotspots';
368
- complexity: ComplexitySummary;
369
295
  } | {
370
296
  phase: 'git-evidence';
371
297
  gitEvidence: GitEvidenceSummary | null;
@@ -0,0 +1,2 @@
1
+ import{a,b}from"./chunk-DDMC3FON.js";import"./chunk-QXEUDXBT.js";import"./chunk-J5FJMODQ.js";import"./chunk-WOFQ5DTB.js";import"./chunk-PH52RA7D.js";import"./chunk-7Y5T6XDP.js";import"./chunk-X6RMKHJQ.js";import"./chunk-JEVRKFRL.js";import"./chunk-QOIXNWQR.js";import"./chunk-GZKFETP5.js";import"./chunk-HRRFKWPZ.js";import"./chunk-YULZRALL.js";import"./chunk-HGFDYOVB.js";import"./chunk-TKD34PHN.js";import"./chunk-2HLAFUCY.js";import"./chunk-U5RIG3JP.js";import"./chunk-62BDNPMI.js";export{a as hierarchy,b as ownershipChain};
2
+ //# sourceMappingURL=hierarchy-6W5NDIFI.js.map
@@ -0,0 +1,2 @@
1
+ import{a,b,c}from"./chunk-IZJ6YUKP.js";import"./chunk-S6CZA3MV.js";import"./chunk-OGFV2BUX.js";import"./chunk-65245JCM.js";import"./chunk-NJJMVD65.js";import"./chunk-WRQXLNYE.js";import"./chunk-LOVIZBJ4.js";import"./chunk-QXEUDXBT.js";import"./chunk-TRBI4UKT.js";import"./chunk-WKPV2TDZ.js";import"./chunk-F4FNK44D.js";import"./chunk-ZLADLUE6.js";import"./chunk-6FFVZZL4.js";import"./chunk-4XQ4O6IM.js";import"./chunk-BZB4QPIP.js";import"./chunk-CN5EH7O3.js";import"./chunk-T3I6NHBH.js";import"./chunk-J5FJMODQ.js";import"./chunk-WOFQ5DTB.js";import"./chunk-PH52RA7D.js";import"./chunk-7Y5T6XDP.js";import"./chunk-X6RMKHJQ.js";import"./chunk-JEVRKFRL.js";import"./chunk-QOIXNWQR.js";import"./chunk-GZKFETP5.js";import"./chunk-3JIQS44J.js";import"./chunk-O4UZSPPI.js";import"./chunk-B3PYOSCX.js";import"./chunk-HRRFKWPZ.js";import"./chunk-YULZRALL.js";import"./chunk-HGFDYOVB.js";import"./chunk-QZ7KQZRN.js";import"./chunk-TKD34PHN.js";import"./chunk-2HLAFUCY.js";import"./chunk-U5RIG3JP.js";import"./chunk-62BDNPMI.js";export{b as importedBy,a as imports,c as unusedImports};
2
+ //# sourceMappingURL=imports-WH365QY4.js.map
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { S as ScipDatabase } from './db-BwIVAYNB.js';
2
+ import { C as CalleeRow, a as CalleeEvidenceSource } from './call-graph-evidence-CUtj8V2I.js';
2
3
  import { I as IndexedDefinition, S as SymbolMatch, a as ScipSymbol, b as ScipLocalSymbol } from './symbol-types-BIQwfoAx.js';
3
4
  import { c as classifyFile } from './file-kind-BKCVMNUf.js';
4
- import { C as CalleeRow } from './call-graph-evidence-BociKRpF.js';
5
5
  export { S as ScipQueryConfig } from './config-types-B9B60MiR.js';
6
6
  import 'better-sqlite3';
7
7
 
@@ -109,6 +109,18 @@ declare class ProjectIndex {
109
109
  additive?: boolean;
110
110
  semantic?: boolean;
111
111
  }): Map<number, CalleeRow[]>;
112
+ /** The same invocation filter and evidence calibration used by the public call graph. */
113
+ callableCallees(definition: SymbolMatch, opts?: {
114
+ semantic?: boolean;
115
+ }): {
116
+ evidenceStrength: "exact" | "candidate";
117
+ symbol: string;
118
+ file: string;
119
+ chunkId: number;
120
+ source: CalleeEvidenceSource;
121
+ callsiteLine?: number;
122
+ kind?: "jsx-render";
123
+ }[];
112
124
  crossFileCallerMap(definitions?: ReadonlyArray<SymbolMatch>, opts?: {
113
125
  semantic?: boolean;
114
126
  }): Map<number, Set<string>>;
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as e}from"./chunk-GINH3YQU.js";import{a as m}from"./chunk-QXCKQTKR.js";import"./chunk-SYVJEEUJ.js";import{c as p}from"./chunk-2BMSSRBH.js";import"./chunk-BGBBVSH4.js";import"./chunk-BJWFVAA5.js";import"./chunk-YSYPDRD5.js";import"./chunk-P5XHIJHI.js";import"./chunk-U3SXIMII.js";import"./chunk-J6GLBBRK.js";import"./chunk-SKKXTABJ.js";import"./chunk-KK7GPALL.js";import"./chunk-F5GSBHC6.js";import"./chunk-QBQE7ZJ5.js";import"./chunk-NJQISBL4.js";import"./chunk-FLMTCX5R.js";import"./chunk-YUKYB54I.js";import"./chunk-DHEQMPLW.js";import"./chunk-BOW7SSQH.js";import"./chunk-MTDBHTSF.js";import{b as o,d as r,e as t}from"./chunk-C7C6AKAT.js";import"./chunk-RBAD4GJ2.js";import"./chunk-ZLMXIQLC.js";import"./chunk-ETC674NS.js";import"./chunk-KNLQGXVH.js";import"./chunk-JZ2A7LDM.js";export{p as ProjectIndex,e as ScipDatabase,m as createGitignoreFilter,t as leafName,o as parseSymbol,r as shortenSymbol};
1
+ import{a as e}from"./chunk-NLOQOBXI.js";import{a as m}from"./chunk-J2TMAIN5.js";import"./chunk-PKN354TH.js";import{b as p}from"./chunk-6LSEIIF7.js";import"./chunk-BGBBVSH4.js";import"./chunk-36SGVCGX.js";import"./chunk-AGWFSTXC.js";import"./chunk-P5XHIJHI.js";import"./chunk-73AAKPUC.js";import"./chunk-KZBJWZJB.js";import"./chunk-4WTUBQ36.js";import"./chunk-NZAXKGRL.js";import"./chunk-KK7GPALL.js";import"./chunk-YNQCGEQE.js";import"./chunk-FMRN2TRL.js";import"./chunk-DA7RPPDF.js";import"./chunk-4WCUBZU3.js";import"./chunk-E3FDPXZK.js";import"./chunk-DHEQMPLW.js";import"./chunk-KHWRRPV4.js";import"./chunk-72AD6ZRR.js";import"./chunk-YUKYB54I.js";import"./chunk-GCKCF5FL.js";import"./chunk-DVFP6PZI.js";import{b as o,d as r,e as t}from"./chunk-5D2LVK7O.js";import"./chunk-7WTPQ4NX.js";import"./chunk-FVULPZDF.js";import"./chunk-D3FDISIC.js";import"./chunk-A2IIGFMJ.js";import"./chunk-PH52RA7D.js";import"./chunk-GVWX5T43.js";import"./chunk-T6DK3ZP7.js";import"./chunk-5TNQJUR2.js";export{p as ProjectIndex,e as ScipDatabase,m as createGitignoreFilter,t as leafName,o as parseSymbol,r as shortenSymbol};
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ import{a}from"./chunk-4D6RO7G4.js";import"./chunk-QXEUDXBT.js";import"./chunk-J5FJMODQ.js";import"./chunk-WOFQ5DTB.js";import"./chunk-PH52RA7D.js";import"./chunk-7Y5T6XDP.js";import"./chunk-X6RMKHJQ.js";import"./chunk-JEVRKFRL.js";import"./chunk-QOIXNWQR.js";import"./chunk-GZKFETP5.js";import"./chunk-HRRFKWPZ.js";import"./chunk-YULZRALL.js";import"./chunk-HGFDYOVB.js";import"./chunk-TKD34PHN.js";import"./chunk-2HLAFUCY.js";import"./chunk-U5RIG3JP.js";import"./chunk-62BDNPMI.js";export{a as members};
2
+ //# sourceMappingURL=members-K3PHMF5S.js.map
@@ -0,0 +1,2 @@
1
+ import{a,b}from"./chunk-P6ODM7BY.js";import"./chunk-TZCVNCAN.js";import"./chunk-BGBBVSH4.js";import"./chunk-7VPEEAAG.js";import"./chunk-S6CZA3MV.js";import"./chunk-65245JCM.js";import"./chunk-NJJMVD65.js";import"./chunk-H73WY2RM.js";import"./chunk-ZHMRSZFD.js";import"./chunk-ZGTYGDMF.js";import"./chunk-WRQXLNYE.js";import"./chunk-DVFP6PZI.js";import"./chunk-QIWXRW72.js";import"./chunk-LOVIZBJ4.js";import"./chunk-QXEUDXBT.js";import"./chunk-O2C4UILI.js";import"./chunk-WXU3DGPU.js";import"./chunk-YUKYB54I.js";import"./chunk-TRBI4UKT.js";import"./chunk-WKPV2TDZ.js";import"./chunk-F4FNK44D.js";import"./chunk-ZLADLUE6.js";import"./chunk-6FFVZZL4.js";import"./chunk-DHEQMPLW.js";import"./chunk-4XQ4O6IM.js";import"./chunk-BZB4QPIP.js";import"./chunk-CN5EH7O3.js";import"./chunk-T3I6NHBH.js";import"./chunk-J5FJMODQ.js";import"./chunk-WOFQ5DTB.js";import"./chunk-PH52RA7D.js";import"./chunk-7Y5T6XDP.js";import"./chunk-X6RMKHJQ.js";import"./chunk-JEVRKFRL.js";import"./chunk-QOIXNWQR.js";import"./chunk-GZKFETP5.js";import"./chunk-3JIQS44J.js";import"./chunk-O4UZSPPI.js";import"./chunk-B3PYOSCX.js";import"./chunk-HRRFKWPZ.js";import"./chunk-YULZRALL.js";import"./chunk-HGFDYOVB.js";import"./chunk-QZ7KQZRN.js";import"./chunk-TKD34PHN.js";import"./chunk-2HLAFUCY.js";import"./chunk-U5RIG3JP.js";import"./chunk-62BDNPMI.js";export{b as methods,a as resolveMethods};
2
+ //# sourceMappingURL=methods-E7KVMBX4.js.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import{a}from"./chunk-XHMN6ZX7.js";import"./chunk-B56T42J3.js";import"./chunk-JYWEX7RR.js";import"./chunk-OZCJXZK6.js";export{a as outputContinuationCommandDescriptor};
3
+ //# sourceMappingURL=output-continuation-command-BJSY67SN.js.map
@@ -0,0 +1,24 @@
1
+ import{A as z,B as lt,D as ht,G as E,e as _,f as A,g as I,h as R,i as N,j,q as $,s as b,u as O,x as ct,y as dt,z as pt}from"./chunk-QYUVVBMR.js";import{writeSync as Yt}from"fs";function gt(t,e,n="File"){let r=0;for(;r<e.byteLength;){let i=Yt(t,e,r,e.byteLength-r);if(i<=0)throw new Error(`${n} write made no forward progress.`);r+=i}}import{createHash as x,randomBytes as Et}from"crypto";import{writeSync as ae,chmodSync as ue,closeSync as T,fstatSync as D,lstatSync as ce,mkdirSync as Ct,openSync as Q,readSync as de,readdirSync as xt,renameSync as Tt,rmSync as X,statSync as Lt}from"fs";import{tmpdir as pe}from"os";import{dirname as le,join as L,resolve as he}from"path";import{StringDecoder as Y}from"string_decoder";import{InvalidArgumentError as yt}from"commander";var Zt=/^[A-Za-z0-9_@%+=:,./-]+$/u;function q(t,e={}){return e.omitSafeQuotes&&Zt.test(t)?t:(e.platform??process.platform)==="win32"?`"${t.replaceAll("%","%%").replaceAll('"','\\"')}"`:`'${t.replaceAll("'",`'"'"'`)}'`}import{AsyncLocalStorage as Kt}from"async_hooks";import{createHash as Un}from"crypto";import{existsSync as Bn,mkdirSync as Mn}from"fs";import{tmpdir as zn}from"os";import{isAbsolute as Vn,join as Dn,resolve as te}from"path";var ee="SCIP_QUERY_SESSION";var ne=128,ft=new Kt;function mt(t,e){let n=t.sessionEnabled===!1||t.json?void 0:se(),r={enabled:n!==void 0,reemit:t.reemit===!0,command:t.command,projectRoot:te(t.cwd),sessionIdentity:n,staged:[],stagedEvidence:[],finalized:!1};return ft.run(r,e)}function C(t){let e=ft.getStore();if(!e||e.finalized)return;e.finalized=!0;let n=e.state;if(!n){e.staged.length=0,e.stagedEvidence.length=0;return}try{if(t&&(e.staged.length>0||e.stagedEvidence.length>0)){let r=n.ledger.nextOrdinal,i=re(e.staged).map(o=>({...o,ordinal:r,command:e.command})),s=oe(e.stagedEvidence).map(o=>({...o,ordinal:r,command:e.command}));n.ledger.ranges.push(...i),n.ledger.evidence.push(...s),n.ledger.nextOrdinal+=1,n.ledger.updatedAt=new Date().toISOString(),E(n.ledgerPath,n.ledger,{spacing:2,trailingNewline:!0})}}catch{}finally{n.lock.release(),e.state=null,e.staged.length=0,e.stagedEvidence.length=0}}function re(t){let e=[...t].sort((r,i)=>r.relativePath.localeCompare(i.relativePath)||r.startLine-i.startLine||r.endLine-i.endLine),n=[];for(let r of e){let i=n[n.length-1];if(i&&i.relativePath===r.relativePath&&i.ownerSymbol===r.ownerSymbol&&i.policy===r.policy&&r.startLine<=i.endLine+1&&ie(i,r)){let s=r.startLine-i.startLine;for(let o=0;o<r.lineHashes.length;o+=1)i.lineHashes[s+o]??=r.lineHashes[o];i.endLine=Math.max(i.endLine,r.endLine)}else n.push({...r,lineHashes:[...r.lineHashes]})}return n}function ie(t,e){let n=Math.max(t.startLine,e.startLine),r=Math.min(t.endLine,e.endLine);for(let i=n;i<=r;i+=1)if(t.lineHashes[i-t.startLine]!==e.lineHashes[i-e.startLine])return!1;return!0}function oe(t){let e=new Set,n=[];for(let r of t){let i=`${r.kind}\0${r.identity}\0${r.contentHash}`;e.has(i)||(e.add(i),n.push(r))}return n}function se(){let t=process.env[ee]?.trim();if(t&&!(t.length>ne||!/^[A-Za-z0-9._:-]+$/.test(t)))return`explicit:${t}`}var Z="scip-query-output-page",K=1,ge="continue",y=256,w=1e5,U=4096,g=32e6,_t=64*1024*1024,fe=256*1024*1024,me=32,At=32768,Rt=16,ye=N*Rt,k=4096,St=_t,tt=3600*1e3,Se="scip-query-json-export",Oe=1,Nt=3;function et(){return L(pe(),`scip-query-output-pages-${typeof process.getuid=="function"?process.getuid():"user"}`)}var nt=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/u,$t=/^[A-Za-z0-9_][A-Za-z0-9_-]{11}$/u,ve=/^4\.([A-Za-z0-9_-]{22})\.([0-9a-z]{1,10})$/u,be=/^([A-Za-z0-9_][A-Za-z0-9_-]{11})(?:\.([0-9a-z]{1,10}))?$/u,kt=1,we="quota.lock",Pe=2e3,Ie=5,Ot=1024*1024,Ee=new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)),V,Ce=Object.freeze({maxSnapshotBytes:_t,maxAggregateBytes:fe,maxSnapshotCount:me});function xe(t){if(!$(t))return{kind:"malformed",reason:"Output page envelope must be an object."};if(t.kind!==Z||t.schemaVersion!==K)return{kind:"malformed",reason:"Output page envelope kind or schema version is unsupported."};if(!Te(t))return{kind:"malformed",reason:"Output page envelope contains invalid common fields."};let e=Le(t.page,t.content)??_e(t.page);return e?{kind:"malformed",reason:e}:{kind:"supported",envelope:t}}function Te(t){return ct(t.producer)&&typeof t.command=="string"&&t.command.length>0&&(t.contentType==="text/plain"||t.contentType==="application/json")&&(t.agentInstruction===void 0||typeof t.agentInstruction=="string")&&typeof t.content=="string"&&$(t.page)}function Le(t,e){if(["offset","returnedCharacters","totalCharacters","omittedCharacters","remainingCharacters"].some(u=>!b(t[u]))||!O(t.outputHash))return"Output page counts or output hash are invalid.";let r=Number(t.offset),i=Number(t.returnedCharacters),s=Number(t.totalCharacters),o=Number(t.omittedCharacters),a=Number(t.remainingCharacters);return i!==e.length||o!==s-i||a!==s-r-i||a<0?"Output page character counts are inconsistent.":null}function _e(t){if(t.complete===!0){if(t.remainingCharacters!==0||t.continuation!==void 0)return"A complete output page cannot have remaining content or a continuation."}else if(t.complete===!1){if(t.remainingCharacters===0||!Ae(t.continuation))return"An incomplete output page requires a non-empty continuation."}else return"Output page complete must be a Boolean.";return null}function Ae(t){return $(t)&&typeof t.cursor=="string"&&t.cursor.length>0&&typeof t.command=="string"&&t.command.length>0}function cr(t){let e=xe(t);if(e.kind==="malformed")throw new Error(e.reason);return e.envelope}var Ut={writeStdout:t=>{process.stdout.write(t)},writeStderr:t=>{process.stderr.write(t)},stdoutIsRegularFile:()=>{try{return D(1).isFile()}catch{return!1}}};async function Re(t,e,n=Ut){return mt({command:t.command,cwd:t.cwd,argv:t.argv,json:t.json,sessionEnabled:t.sourceSession,reemit:t.reemitSource},async()=>{try{await Ne(t,e,n)}finally{C(!1)}})}async function Ne(t,e,n){let r=t.pageSize??A,i=t.snapshotRoot??et(),s=rn(t.snapshotLimits),o=$e(t);switch(ke(t,r),He(t,n)){case"json-file":await qe(t,e,n,o);return;case"json":await Ve(t,e,n);return;case"human-file":await De(t,e,o);return}let a=Ft(t.argv),u=Wt(t.invocationPrefix),c=Dt(t.command,t.cwd,u,a),d={pageSize:r,snapshotRoot:i,snapshotLimits:s,maxOutputCharacters:o,filteredArgv:a,invocationPrefix:u,invocationHash:c},l=t.cursor===void 0?void 0:vn(t.cursor,c),p=l?Be(l,t,d):await Me(t,e,d);je(t,n,d,p)}function $e(t){let e=t.maxOutputCharacters??g;if(!Number.isSafeInteger(e)||e<=0)throw new Error("Output character safety limit must be a positive integer.");return Math.min(e,g,t.agentOutput?ye:g)}function ke(t,e){if(Bt(e),t.cursor!==void 0&&t.cursor.length>U)throw new Error(`Output cursor exceeds the ${U}-character limit. Run the command again without --output-cursor.`)}function Ue(t){if(!t.json)throw new Error("--json-output requires --json.");if(t.agentOutput||t.pageSize!==void 0||t.cursor!==void 0)throw new Error("--json-output cannot be combined with --agent-output or output pagination.")}function He(t,e){if(t.jsonOutputPath!==void 0)return Ue(t),"json-file";if(t.json)return!t.agentOutput&&t.pageSize===void 0&&t.cursor===void 0?"json":void 0;if(t.cursor===void 0&&t.pageSize===void 0&&e.stdoutIsRegularFile?.()===!0)return"human-file"}function Be(t,e,n){let{invocationHash:r,pageSize:i,maxOutputCharacters:s,snapshotRoot:o,invocationPrefix:a,filteredArgv:u}=n;try{return{snapshotId:t.snapshotId,completed:Fe(t,r,i,s,o,e.onSnapshotRead)}}catch(c){let d=c instanceof Error?c.message:String(c);throw new Error(`${d} Restart with: ${Jt(a,u,i)}`,{cause:c})}}async function Me(t,e,n){let{invocationHash:r,invocationPrefix:i,filteredArgv:s,pageSize:o,maxOutputCharacters:a,snapshotRoot:u,snapshotLimits:c}=n,d=new J(r,i,t.command,t.cwd,s,o,a,Ht(t)?R:Sn(t,i),u,c,t.agentOutput?Rt:At,!t.json,H(a,t.agentOutput===!0)),l=Mt(m=>d.write(m)),p=!1;try{await e(),p=!0}finally{l(),p||d.abort()}let h;try{h=d.complete()}catch(m){throw d.abort(),m}return{snapshotId:h.snapshotId,completed:{content:h.content,offset:0,pageIndex:0,pageCount:h.pageCount,totalCharacters:h.totalCharacters,outputHash:h.outputHash}}}function Ht(t){return!t.json&&t.pageSize===void 0&&t.cursor===void 0}function je(t,e,n,{snapshotId:r,completed:i}){let{invocationPrefix:s,snapshotRoot:o}=n,a=i.offset+i.content.length,u=i.pageIndex+1>=i.pageCount;if(!u&&Ht(t)){let l=bt(r),p=f(o,l,"output");W(o,l,Lt(p).size,"saved",n.snapshotLimits);let h=Vt(i.content,1800,1800,!0),m=i.content.slice(0,h).split(`
2
+ `).slice(0,24).join(`
3
+ `).trimEnd();e.writeStdout(`Full result: ${j(p)}
4
+ Preview (${i.totalCharacters} characters saved):
5
+ ${m}
6
+ `);return}let c=u?void 0:yn({invocationPrefix:s,nextPageIndex:i.pageIndex+1,snapshotId:bt(r)});if(ze(t,e,n,{snapshotId:r,completed:i}))return;let d=Tn(t,i,c,a);t.json?e.writeStdout(`${JSON.stringify(d)}
7
+ `):e.writeStdout(xn(d)),u&&r&&P(r,o)}function ze(t,e,n,{snapshotId:r,completed:i}){let s=i.pageIndex+1>=i.pageCount;return i.offset===0&&s&&t.cursor===void 0?(e.writeStdout(i.content),C(!0),r&&P(r,n.snapshotRoot),!0):!1}async function dr(t,e,n=et(),r=Ut){if(t.length>U)throw new Error(`Output cursor exceeds the ${U}-character limit.`);let i=at(t);if(!i)throw new Error("Invalid output cursor. Run the original command again.");let s=it(i.snapshotId,n);await Re({command:s.command,producerVersion:e,invocationPrefix:s.invocationPrefix,argv:[...s.argv,"--output-page-size",String(s.pageSize),"--output-cursor",t],cwd:s.cwd,json:s.argv.some(o=>o==="--json"||o.startsWith("--json=")),sourceSession:!s.argv.some(o=>o==="--no-session"),agentOutput:s.argv.some(o=>o==="--agent-output"),pageSize:s.pageSize,cursor:t,snapshotRoot:n},()=>{throw new Error("Output continuation attempted to rerun the original command.")},r)}async function qe(t,e,n,r){let i=t.jsonOutputPath;if(i===void 0||i.length===0||Buffer.byteLength(i)>k||i.includes("\0"))throw new Error(`--json-output requires a path from 1 through ${k} UTF-8 bytes.`);let s=he(t.cwd,i);if(Buffer.byteLength(s)>k)throw new Error(`The resolved --json-output path exceeds ${k} UTF-8 bytes.`);let o=new Y("utf8"),a=x("sha256"),u=0,c=0,d=v=>{if(c+=v.length,!Number.isSafeInteger(c)||c>r)throw new Error(H(r,!1))};Ct(le(s),{recursive:!0});let l=`${s}.tmp-${Et(12).toString("hex")}`,p=Q(l,"wx",384),h=!0,m=Mt(v=>{let M=u+v.length;if(!Number.isSafeInteger(M)||M>St)throw new Error(`JSON export exceeds the ${St}-byte file safety limit. Narrow the query before retrying.`);if(d(o.write(v)),p===void 0)throw new Error("JSON export writer is closed.");gt(p,v,"JSON export"),a.update(v),u=M});try{await e(),d(o.end()),m(),T(p),p=void 0,Tt(l,s),h=!1}finally{if(m(),p!==void 0)try{T(p)}catch{}h&&X(l,{force:!0})}let Xt={kind:Se,schemaVersion:Oe,producer:{name:"scip-query",version:t.producerVersion},command:t.command,path:s,bytes:u,sha256:a.digest("hex")};n.writeStdout(`${JSON.stringify(Xt)}
8
+ `),C(!0)}function H(t,e){let n=`Command output exceeds the ${t}-character safety limit. Narrow the query before retrying.`;return e?`${n} For the complete machine result, use --json --json-output <path> and inspect the file programmatically.`:n}function pr(t){if(!/^\d+$/u.test(t))throw new yt(`Output page size must be an integer from ${y} through ${w}.`);let e=Number(t);try{Bt(e)}catch{throw new yt(`Output page size must be an integer from ${y} through ${w}.`)}return e}function Bt(t){if(!Number.isSafeInteger(t)||t<y||t>w)throw new Error(`Output page size must be an integer from ${y} through ${w}.`)}async function Ve(t,e,n){let r=new F(I,t.maxOutputCharacters??g),i=process.stdout.write,s=!1,o=`${j(`scip-query: JSON output exceeds the ${I}-byte client-safe budget and may be truncated by the client. Do not use possibly partial client output as evidence. Read every page with: ${Jt(Wt(t.invocationPrefix),En(Ft(t.argv)),A)}`)}
9
+ `;process.stdout.write=((a,u,c)=>{let d=r.push(a,u);return d!==void 0&&(s||(s=!0,n.writeStderr(o)),i.call(process.stdout,d)),rt(u,c),!0});try{await e();let a=r.finish();a.crossedPageBoundary&&!s&&(s=!0,n.writeStderr(o)),a.bytes.length>0&&i.call(process.stdout,a.bytes),s&&n.writeStderr(o)}finally{process.stdout.write=i}}async function De(t,e,n){let r=process.stdout.write,i=0;process.stdout.write=((s,o,a)=>{let u=jt(s,o);if(i+=u.length,i>n)throw new Error(H(n,!1));return r.call(process.stdout,u),rt(o,a),!0});try{await e()}finally{process.stdout.write=r}C(!0)}function Mt(t){let e=process.stdout.write;return process.stdout.write=((n,r,i)=>{let s=jt(n,r);return t(s),rt(r,i),!0}),()=>{process.stdout.write=e}}function jt(t,e){return typeof t=="string"?Buffer.from(t,typeof e=="string"?e:"utf8"):Buffer.from(t)}function rt(t,e){let n=typeof t=="function"?t:e;typeof n=="function"&&n()}var F=class{constructor(e,n){this.byteLimit=e;this.maxOutputCharacters=n}byteLimit;maxOutputCharacters;decoder=new Y("utf8");chunks=[];overflowed=!1;totalCharacters=0;totalBytes=0;push(e,n){let r=typeof e=="string"?Buffer.from(e,typeof n=="string"?n:"utf8"):Buffer.from(e);if(this.totalBytes+=r.length,this.addCharacters(this.decoder.write(r)),this.overflowed)return r;if(this.chunks.push(r),this.totalBytes<=this.byteLimit)return;this.overflowed=!0;let i=Buffer.concat(this.chunks);return this.chunks.length=0,i}finish(){this.addCharacters(this.decoder.end());let e=this.totalBytes>this.byteLimit,n=Buffer.concat(this.chunks);return this.chunks.length=0,{bytes:n,crossedPageBoundary:e}}addCharacters(e){if(this.totalCharacters+=e.length,!Number.isSafeInteger(this.totalCharacters)||this.totalCharacters>this.maxOutputCharacters)throw new Error(`Command output exceeds the ${this.maxOutputCharacters}-character safety limit. Narrow the query before retrying.`)}},J=class{constructor(e,n,r,i,s,o,a,u,c,d,l,p,h=H(a,!1)){this.invocationHash=e;this.invocationPrefix=n;this.command=r;this.cwd=i;this.argv=s;this.pageSize=o;this.maxOutputCharacters=a;this.pageContentByteLimit=u;this.snapshotRoot=c;this.limits=d;this.maxPages=l;this.preferLineBoundaries=p;this.overflowMessage=h;ot(c);do this.snapshotId=Et(9).toString("base64url");while(this.snapshotId.startsWith("-"));this.temporaryPath=f(c,this.snapshotId,"tmp")}invocationHash;invocationPrefix;command;cwd;argv;pageSize;maxOutputCharacters;pageContentByteLimit;snapshotRoot;limits;maxPages;preferLineBoundaries;overflowMessage;snapshotId;temporaryPath;decoder=new Y("utf8");hash=x("sha256");pages=[];descriptor=null;pending="";firstPageContent="";totalCharacters=0;pageCharacterOffset=0;byteLength=0;reservedBytes=0;opened=!1;finished=!1;write(e){if(this.finished)throw new Error("Output snapshot writer is closed.");this.appendDecoded(this.decoder.write(e))}complete(){if(this.finished)throw new Error("Output snapshot writer is closed.");if(this.appendDecoded(this.decoder.end()),this.finished=!0,!this.opened){let i=this.pending,s=Buffer.from(i);return this.assertWithinByteLimit(s.length),this.hash.update(s),this.pending="",{content:i,totalCharacters:this.totalCharacters,outputHash:this.hash.digest("hex"),pageCount:1}}if((this.pending.length>0||this.pages.length===0)&&(this.flushPage(this.pending),this.pending=""),this.descriptor===null)throw new Error("Output snapshot writer is not open.");T(this.descriptor),this.descriptor=null;let e=this.hash.digest("hex"),n=f(this.snapshotRoot,this.snapshotId,"output"),r=f(this.snapshotRoot,this.snapshotId,"json");try{Tt(this.temporaryPath,n);let i={version:Nt,snapshotId:this.snapshotId,invocationHash:this.invocationHash,invocationPrefix:[...this.invocationPrefix],command:this.command,cwd:this.cwd,argv:[...this.argv],outputHash:e,pageSize:this.pageSize,pages:this.pages,totalCharacters:this.totalCharacters,byteLength:this.byteLength,createdAtMs:Date.now()};return E(r,i),W(this.snapshotRoot,this.snapshotId,this.byteLength,"complete",this.limits),this.reservedBytes=this.byteLength,{content:this.firstPageContent,totalCharacters:this.totalCharacters,outputHash:e,pageCount:this.pages.length,snapshotId:this.snapshotId}}catch(i){throw P(this.snapshotId,this.snapshotRoot),i}}abort(){this.descriptor!==null&&(T(this.descriptor),this.descriptor=null),this.finished=!0,P(this.snapshotId,this.snapshotRoot)}appendDecoded(e){if(e.length===0)return;let n=this.totalCharacters+e.length;if(!Number.isSafeInteger(n)||n>this.maxOutputCharacters)throw new Error(this.overflowMessage);for(this.totalCharacters=n,this.pending+=e,this.assertWithinByteLimit(this.byteLength+Buffer.byteLength(this.pending));this.pending.length>this.pageSize||Buffer.byteLength(this.pending)>this.pageContentByteLimit;){this.open();let r=Vt(this.pending,this.pageSize,this.pageContentByteLimit,this.preferLineBoundaries),i=this.pending.slice(0,r);this.pending=this.pending.slice(r),this.flushPage(i)}}open(){if(!this.opened){on(this.snapshotRoot,this.snapshotId,0,this.limits);try{this.descriptor=Q(this.temporaryPath,"wx",384),this.opened=!0}catch(e){throw an(this.snapshotRoot,this.snapshotId),e}}}flushPage(e){if(this.descriptor===null)throw new Error("Output snapshot writer is not open.");if(this.pages.length>=this.maxPages)throw new Error(`Command output requires more than ${this.maxPages} snapshot pages. Retry with a larger --output-page-size, narrow the query, or use --json --json-output <path>.`);let n=Buffer.from(e),r=this.byteLength+n.length;if(this.assertWithinByteLimit(r),r>this.reservedBytes){let o=Math.min(this.limits.maxSnapshotBytes,Math.ceil(r/Ot)*Ot);W(this.snapshotRoot,this.snapshotId,o,"active",this.limits),this.reservedBytes=o}let i=0;for(;i<n.length;){let o=ae(this.descriptor,n,i,n.length-i);if(o<=0)throw new Error("Output snapshot write made no progress.");i+=o}let s={characterOffset:this.pageCharacterOffset,characterLength:e.length,byteOffset:this.byteLength,byteLength:n.length,hash:x("sha256").update(n).digest("hex")};this.pages.length===0&&(this.firstPageContent=e),this.pages.push(s),this.hash.update(n),this.pageCharacterOffset+=e.length,this.byteLength=r}assertWithinByteLimit(e){if(!Number.isSafeInteger(e)||e>this.limits.maxSnapshotBytes)throw new Error(`Command output exceeds the ${this.limits.maxSnapshotBytes}-byte snapshot limit. Narrow the query before retrying.`)}};function Fe(t,e,n,r,i,s){ot(i);let o=it(t.snapshotId,i);Je(o,t,e,n);let a=o.pages[t.pageIndex];if(!a)throw new Error("Output cursor points past the current result.");if(o.totalCharacters>r)throw new Error(`Output snapshot exceeds the ${r}-character safety limit.`);if(Date.now()-o.createdAtMs>tt)throw P(t.snapshotId,i),new Error("Output snapshot expired before all pages were read.");let u=f(i,t.snapshotId,"output"),c=Q(u,"r");try{return{content:We(c,o,a,s),offset:a.characterOffset,pageIndex:t.pageIndex,pageCount:o.pages.length,totalCharacters:o.totalCharacters,outputHash:o.outputHash}}catch(d){throw P(t.snapshotId,i),d}finally{T(c)}}function Je(t,e,n,r){if(t.invocationHash!==n)throw new Error("This output cursor belongs to a different command, working directory, or argument set. Run again without --output-cursor.");if(t.snapshotId!==e.snapshotId||e.version===3&&(t.invocationHash!==e.invocationHash||t.outputHash!==e.outputHash))throw new Error("Output snapshot identity does not match this cursor.");if(t.pageSize!==r||e.version===3&&e.pageSize!==r)throw new Error(`Output page size changed after this cursor was issued; use ${t.pageSize}.`)}function We(t,e,n,r){let i=D(t);if(!i.isFile()||i.size!==e.byteLength)throw new Error("Output snapshot size or type changed.");let{bytes:s,bytesRead:o}=Ge(t,n,r),a=D(t);if(a.dev!==i.dev||a.ino!==i.ino||a.size!==i.size||o!==n.byteLength)throw new Error("Output snapshot changed while it was being read.");if(x("sha256").update(s).digest("hex")!==n.hash)throw new Error("Output snapshot page no longer matches its metadata.");let u=s.toString("utf8");if(u.length!==n.characterLength)throw new Error("Output snapshot page character count changed.");return u}function Ge(t,e,n){let r=Buffer.allocUnsafe(e.byteLength),i=0;for(;i<r.length;){let s=de(t,r,i,r.length-i,e.byteOffset+i);if(s===0)break;i+=s,n?.(s)}return{bytes:r,bytesRead:i}}function it(t,e){if(!S(t))throw new Error("Output snapshot identifier is invalid.");let n;try{n=JSON.parse(_(f(e,t,"json"),"output snapshot metadata"))}catch(r){throw new Error("Output snapshot is unavailable.",{cause:r})}if(!Qe(n))throw new Error("Output snapshot metadata is invalid.");return n}function Qe(t){if(!t||typeof t!="object")return!1;let e=t;return e.version===Nt&&Xe(e)&&Ze(e)&&b(e.createdAtMs)}function vt(t,e){return typeof t=="string"&&t.length>0&&t.length<=e}function Xe(t){return typeof t.snapshotId=="string"&&S(t.snapshotId)&&O(t.invocationHash)&&Gt(t.invocationPrefix)&&vt(t.command,256)&&vt(t.cwd,8192)&&Cn(t.argv)&&Dt(t.command,t.cwd,t.invocationPrefix,t.argv)===t.invocationHash}function Ye(t){return Array.isArray(t)&&t.length>1&&t.length<=At&&t.every(Ke)&&nn(t)}function Ze(t){return O(t.outputHash)&&b(t.pageSize)&&t.pageSize>=y&&t.pageSize<=w&&Ye(t.pages)&&b(t.totalCharacters)&&t.pages.reduce((e,n)=>e+n.characterLength,0)===t.totalCharacters&&b(t.byteLength)&&t.pages.reduce((e,n)=>e+n.byteLength,0)===t.byteLength}function Ke(t){if(!t||typeof t!="object")return!1;let e=t;return tn(e)&&en(e)&&O(e.hash)}function tn(t){return Number.isSafeInteger(t.characterOffset)&&(t.characterOffset??-1)>=0&&Number.isSafeInteger(t.characterLength)&&(t.characterLength??0)>0}function en(t){return Number.isSafeInteger(t.byteOffset)&&(t.byteOffset??-1)>=0&&Number.isSafeInteger(t.byteLength)&&(t.byteLength??0)>0}function nn(t){let e=0,n=0;for(let r of t){if(r.characterOffset!==e||r.byteOffset!==n)return!1;e+=r.characterLength,n+=r.byteLength}return!0}function ot(t){Ct(t,{recursive:!0,mode:448});let e=ce(t);if(!e.isDirectory()||e.isSymbolicLink())throw new Error(`Output snapshot root is not a private directory: ${t}`);if(typeof process.getuid=="function"&&e.uid!==process.getuid())throw new Error(`Output snapshot root is not owned by the current user: ${t}`);process.platform!=="win32"&&ue(t,448)}function rn(t){let e={...Ce,...t};for(let[n,r]of Object.entries(e))if(!Number.isSafeInteger(r)||r<=0)throw new Error(`Output snapshot ${n} must be a positive integer.`);if(e.maxSnapshotBytes>e.maxAggregateBytes)throw new Error("Output snapshot maxSnapshotBytes cannot exceed maxAggregateBytes.");return e}function on(t,e,n,r){B(t,()=>{ln(t),zt(t,e,n,"active",r)})}function W(t,e,n,r,i){if(!Number.isSafeInteger(n)||n<0||n>i.maxSnapshotBytes)throw new Error(`Command output exceeds the ${i.maxSnapshotBytes}-byte snapshot limit.`);B(t,()=>{zt(t,e,n,r,i)})}function sn(t,e,n,r,i){for(let s of t.filter(o=>o.state==="saved"&&o.snapshotId!==n).sort((o,a)=>o.updatedAtMs-a.updatedAtMs)){let o=t.filter(a=>a.snapshotId!==n);if(o.length+1<=i.maxSnapshotCount&&o.reduce((a,u)=>a+u.reservedBytes,r)<=i.maxAggregateBytes)break;st(s.snapshotId,e),t.splice(t.indexOf(s),1)}}function zt(t,e,n,r,i){if(!Number.isSafeInteger(n)||n<0||n>i.maxSnapshotBytes)throw new Error(`Command output exceeds the ${i.maxSnapshotBytes}-byte snapshot limit.`);let s=un(t);sn(s,t,e,n,i);let o=s.find(l=>l.snapshotId===e),a=s.reduce((l,p)=>l+p.reservedBytes,0)-(o?.reservedBytes??0)+n,u=s.length+(o?0:1);if(u>i.maxSnapshotCount||a>i.maxAggregateBytes)throw new Error(`Output snapshot capacity is full (${u}/${i.maxSnapshotCount} snapshots, ${a}/${i.maxAggregateBytes} bytes). Redirect output to a file, narrow the query, or finish an explicit pagination sequence before retrying.`);let c=Date.now(),d={version:kt,snapshotId:e,pid:process.pid,...G()?{processIdentity:G()}:{},reservedBytes:n,state:r,createdAtMs:o?.createdAtMs??c,updatedAtMs:c};E(f(t,e,"reserve"),d)}function an(t,e){B(t,()=>{X(f(t,e,"reserve"),{force:!0})})}function un(t){let e=[];for(let n of xt(t,{withFileTypes:!0})){if(!n.isFile()||!n.name.endsWith(".reserve"))continue;let r=n.name.slice(0,-8);if(S(r))try{let i=JSON.parse(_(L(t,n.name),"output snapshot reservation"));if(!qt(i)||i.snapshotId!==r)throw new Error("reservation identity is invalid");e.push(i)}catch(i){throw new Error(`Output snapshot reservation ${n.name} is invalid; retry after its owning process or snapshot expires.`,{cause:i})}}return e}function qt(t){if(!t||typeof t!="object")return!1;let e=t;return cn(e)&&dn(e)&&pn(e)}function cn(t){return t.version===kt&&typeof t.snapshotId=="string"&&S(t.snapshotId)}function dn(t){return Number.isSafeInteger(t.pid)&&(t.pid??0)>0&&(t.processIdentity===void 0||dt(t.processIdentity)!==null&&t.processIdentity.pid===t.pid)}function pn(t){return Number.isSafeInteger(t.reservedBytes)&&(t.reservedBytes??-1)>=0&&(t.state==="active"||t.state==="complete"||t.state==="saved")&&Number.isSafeInteger(t.createdAtMs)&&Number.isSafeInteger(t.updatedAtMs)}function ln(t){let e=Date.now();for(let n of xt(t,{withFileTypes:!0})){if(!n.isFile()||!n.name.endsWith(".reserve"))continue;let r=n.name.slice(0,-8);if(!S(r))continue;let i=gn(L(t,n.name)),s=mn(f(t,r,"json"));hn(i,s,e)||st(r,t)}}function hn(t,e,n){let r=fn(t),i=t?n-t.updatedAtMs>tt:!1;return r||e&&!i?!0:!e&&t!==null&&!i&&t.state==="complete"}function gn(t){try{let e=JSON.parse(_(t,"output snapshot reservation"));return qt(e)?e:null}catch{return null}}function fn(t){return t?.state==="active"&&lt(t.pid)&&(t.processIdentity===void 0||(()=>{let e=z(t.pid);return e!==null&&pt(t.processIdentity,e)})())}function mn(t){try{return Lt(t),!0}catch{return!1}}function B(t,e){ot(t);let n=L(t,we),r=Date.now()+Pe;for(;;){let i=ht(n,{kind:"output-snapshot-quota",processIdentity:G()});if(i.kind==="acquired")try{return e()}finally{i.lock.release()}if(Date.now()>=r)throw new Error("Output snapshot quota is busy. Retry the command.");Atomics.wait(Ee,0,0,Ie)}}function G(){return V===void 0&&(V=z(process.pid)),V}function P(t,e){S(t)&&B(e,()=>st(t,e))}function st(t,e){for(let n of["json","output","tmp","reserve"])X(f(e,t,n),{force:!0})}function f(t,e,n){if(!S(e))throw new Error("Output snapshot identifier is invalid.");return L(t,`${e}.${n}`)}function bt(t){if(!t)throw new Error("Incomplete output did not create a resumable snapshot.");return t}function wt(t){return t>=55296&&t<=56319}function Vt(t,e,n,r){let i=Math.min(t.length,e);if(wt(t.charCodeAt(i-1))&&(i-=1),Buffer.byteLength(t.slice(0,i))>n){let s=0,o=i;for(;s<o;){let a=Math.ceil((s+o)/2);Buffer.byteLength(t.slice(0,a))<=n?s=a:o=a-1}i=s,wt(t.charCodeAt(i-1))&&(i-=1)}if(i<=0)throw new Error("Output page byte limit cannot contain one UTF-8 character.");if(r){let s=t.lastIndexOf(`
10
+ `,i-1);if(s>=0)return s+1}return i}function yn(t){let e=On({pageIndex:t.nextPageIndex,snapshotId:t.snapshotId});return{cursor:e,command:ut(t.invocationPrefix,e)}}function Sn(t,e){let n="c".repeat(64),r={cursor:n,command:ut(e,n)};if(!t.json){let o="9".repeat(String(g).length),a=`[scip-query output page: characters ${o}-${o} of ${o}]
11
+
12
+ [Incomplete: ${o} characters remain.]
13
+ Continue exactly:
14
+ ${r.command}
15
+ `;return Pt(R,Buffer.byteLength(a),1)}let i={kind:Z,schemaVersion:K,producer:{name:"scip-query",version:t.producerVersion},command:t.command,contentType:"application/json",agentInstruction:"INCOMPLETE EVIDENCE: do not draw conclusions or report completion from this partial page. Run page.continuation.command exactly, then repeat until page.complete is true.",page:{offset:g,returnedCharacters:g,totalCharacters:g,omittedCharacters:g,remainingCharacters:g,complete:!1,outputHash:"f".repeat(64),continuation:r},content:""},s=Buffer.byteLength(`${JSON.stringify(i)}
16
+ `);return Pt(N,s,2)}function Pt(t,e,n){let r=Math.floor((I-e)/n);if(r<y)throw new Error(`The command invocation leaves fewer than ${y} bytes for client-safe output content. Use a shorter executable path.`);return Math.min(t,r)}function On(t){return $t.test(t.snapshotId)?t.pageIndex===1?t.snapshotId:`${t.snapshotId}.${t.pageIndex.toString(36)}`:`4.${Pn(t.snapshotId)}.${t.pageIndex.toString(36)}`}function vn(t,e){let n=at(t);if(!n)throw new Error("Invalid output cursor. Run the command again without --output-cursor.");if(n.version===3&&n.invocationHash!==e)throw new Error("This output cursor belongs to a different command, working directory, or argument set. Run again without --output-cursor.");return n}function at(t){let e=be.exec(t);if(e){let r=e[2]??"1",i=Number.parseInt(r,36);return It(i,r)?{version:4,pageIndex:i,snapshotId:e[1]}:null}let n=ve.exec(t);if(n){let r=In(n[1]),i=Number.parseInt(n[2],36);return r&&It(i,n[2])?{version:4,pageIndex:i,snapshotId:r}:null}try{let r=JSON.parse(Buffer.from(t,"base64url").toString("utf8"));return bn(r)?r:null}catch{return null}}function lr(t,e=et()){let n=at(t);if(n)try{let r=it(n.snapshotId,e);if(r.snapshotId!==n.snapshotId||n.version===3&&(r.invocationHash!==n.invocationHash||r.outputHash!==n.outputHash||r.pageSize!==n.pageSize)||Date.now()-r.createdAtMs>tt||!r.pages[n.pageIndex])return;let i=r.pages[n.pageIndex];return{snapshotId:r.snapshotId,pageIndex:n.pageIndex,command:r.command,cwd:r.cwd,continuationCommand:ut(r.invocationPrefix,t),remainingCharacters:r.totalCharacters-i.characterOffset,totalCharacters:r.totalCharacters,outputHash:r.outputHash,createdAtMs:r.createdAtMs}}catch{return}}function bn(t){if(!t||typeof t!="object")return!1;let e=t;return e.version===3&&O(e.invocationHash)&&wn(e)&&O(e.outputHash)&&typeof e.snapshotId=="string"&&S(e.snapshotId)}function wn(t){return Number.isSafeInteger(t.pageIndex)&&(t.pageIndex??-1)>=1&&Number.isSafeInteger(t.pageSize)&&(t.pageSize??0)>=y&&(t.pageSize??0)<=w}function Pn(t){if(!nt.test(t))throw new Error("Output snapshot identifier is invalid.");return Buffer.from(t.replaceAll("-",""),"hex").toString("base64url")}function In(t){let e=Buffer.from(t,"base64url");if(e.length!==16)return null;let n=e.toString("hex"),r=`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`;return nt.test(r)?r:null}function S(t){return typeof t=="string"&&($t.test(t)||nt.test(t))}function Dt(t,e,n,r){return x("sha256").update(JSON.stringify({command:t,cwd:e,invocationPrefix:n,argv:r})).digest("hex")}function Ft(t){let e=[];for(let n=0;n<t.length;n+=1){let r=t[n];if(r==="--output-page-size"||r==="--output-cursor"){n+=1;continue}r.startsWith("--output-page-size=")||r.startsWith("--output-cursor=")||e.push(r)}return e}function En(t){return t.filter(e=>e!=="--raw-json"&&e!=="--raw-json=true")}function Jt(t,e,n){return Qt([...t,...e,"--output-page-size",String(n)])}function ut(t,e){return Qt([...t,ge,e])}function Wt(t){let e=t===void 0?["scip-query"]:[...t];if(!Gt(e))throw new Error("Output pagination invocation prefix must contain one to sixteen non-empty shell arguments.");return e}function Gt(t){return Array.isArray(t)&&t.length>0&&t.length<=16&&t.every(e=>typeof e=="string"&&e.length>0&&e.length<=2048&&!e.includes("\0")&&!e.includes("\r")&&!e.includes(`
17
+ `))}function Cn(t){return Array.isArray(t)&&t.length>0&&t.length<=256&&t.every(e=>typeof e=="string"&&e.length<=8192&&!e.includes("\0")&&!e.includes("\r")&&!e.includes(`
18
+ `))}function Qt(t){return t.map(e=>q(e,{omitSafeQuotes:!0})).join(" ")}function xn(t){let e=t.page.continuation,n=Math.max(t.page.offset,t.page.offset+t.page.returnedCharacters-1),r=`[scip-query output page: characters ${t.page.offset}-${n} of ${t.page.totalCharacters}]
19
+ `,i=e?`
20
+ [Incomplete: ${t.page.remainingCharacters} characters remain.]
21
+ Continue exactly:
22
+ ${e.command}
23
+ `:"";return`${r}${t.content}${i}`}function Tn(t,e,n,r){let i={offset:e.offset,returnedCharacters:e.content.length,totalCharacters:e.totalCharacters,omittedCharacters:e.totalCharacters-e.content.length,remainingCharacters:e.totalCharacters-r};return{kind:Z,schemaVersion:K,producer:{name:"scip-query",version:t.producerVersion},command:t.command,contentType:t.json?"application/json":"text/plain",agentInstruction:n?"INCOMPLETE EVIDENCE: do not draw conclusions or report completion from this partial page. Run page.continuation.command exactly, then repeat until page.complete is true.":"OUTPUT COMPLETE: all rendered characters have been retrieved. Evaluate the command result's own coverage separately.",page:n?{...i,complete:!1,outputHash:e.outputHash,continuation:n}:{...i,complete:!0,outputHash:e.outputHash},content:e.content}}function It(t,e){return Number.isSafeInteger(t)&&t>=1&&t.toString(36)===e}export{I as CLIENT_SAFE_OUTPUT_BYTES,Se as CLI_JSON_EXPORT_RECEIPT_KIND,Oe as CLI_JSON_EXPORT_RECEIPT_SCHEMA_VERSION,ge as CLI_OUTPUT_CONTINUATION_COMMAND,Z as CLI_OUTPUT_PAGE_KIND,K as CLI_OUTPUT_PAGE_SCHEMA_VERSION,A as DEFAULT_OUTPUT_PAGE_SIZE,R as HUMAN_OUTPUT_PAGE_CONTENT_BYTES,N as JSON_OUTPUT_PAGE_CONTENT_BYTES,ye as MAX_AGENT_OUTPUT_CHARACTERS,Rt as MAX_AGENT_OUTPUT_PAGES,St as MAX_JSON_OUTPUT_FILE_BYTES,k as MAX_JSON_OUTPUT_PATH_LENGTH,U as MAX_OUTPUT_CURSOR_LENGTH,w as MAX_OUTPUT_PAGE_SIZE,fe as MAX_OUTPUT_SNAPSHOT_AGGREGATE_BYTES,_t as MAX_OUTPUT_SNAPSHOT_BYTES,me as MAX_OUTPUT_SNAPSHOT_COUNT,At as MAX_OUTPUT_SNAPSHOT_PAGES,g as MAX_TRACKED_OUTPUT_CHARACTERS,y as MIN_OUTPUT_PAGE_SIZE,tt as OUTPUT_SNAPSHOT_TTL_MS,dr as continueCliOutput,xe as decodeCliOutputPageEnvelope,lr as inspectPendingCliOutputCursor,pr as parseOutputPageSize,cr as requireCliOutputPageEnvelope,Re as runWithCliOutputPagination};
24
+ //# sourceMappingURL=output-pagination-UZJ5ACIX.js.map
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import"./chunk-LEECKFCJ.js";import"./chunk-F4FNK44D.js";import"./chunk-WYPL7GF7.js";import"./chunk-3AF4TUFK.js";import"./chunk-B3PYOSCX.js";import"./chunk-JFMEXGFE.js";import"./chunk-7F45LJKI.js";import{existsSync as e,mkdirSync as n,symlinkSync as r,readlinkSync as o,unlinkSync as l,readdirSync as c}from"fs";import{join as p,dirname as u,resolve as d,relative as m,isAbsolute as k}from"path";import{homedir as g,platform as s}from"os";import{fileURLToPath as y}from"url";var h=s()==="win32";function i(){console.log("scip-query installed (Node.js 24 LTS recommended; minimum Node.js 22) -- run 'scip-query setup' in a repo to install skills and build the index.")}i();
2
+ import"./chunk-VX2O4RIS.js";import"./chunk-F4FNK44D.js";import"./chunk-YTAP5Y2G.js";import"./chunk-BL6XJKTA.js";import"./chunk-B3PYOSCX.js";import"./chunk-QZ7KQZRN.js";import"./chunk-2HLAFUCY.js";import"./chunk-62BDNPMI.js";import{existsSync as i,mkdirSync as e,symlinkSync as r,readlinkSync as l,unlinkSync as o,readdirSync as c}from"fs";import{join as a,dirname as p,resolve as d,relative as g,isAbsolute as f}from"path";import{homedir as S,platform as s}from"os";import{fileURLToPath as h}from"url";var $=s()==="win32";function n(){console.log("scip-query installed (Node.js 24 LTS recommended; minimum Node.js 22) -- run 'scip-query setup' in a repo to install skills and build the index.")}n();
3
3
  //# sourceMappingURL=postinstall.js.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import{r as a}from"./chunk-CFYMZFXT.js";import"./chunk-OZCJXZK6.js";export{a as reindexConfiguredProject};
3
+ //# sourceMappingURL=project-reindex-EP24WT4X.js.map
@@ -1,2 +1,2 @@
1
- import{a,b}from"../chunk-6D4F5VWG.js";import"../chunk-BJWFVAA5.js";import"../chunk-YSYPDRD5.js";import"../chunk-P5XHIJHI.js";import"../chunk-U3SXIMII.js";import"../chunk-J6GLBBRK.js";import"../chunk-SKKXTABJ.js";import"../chunk-KK7GPALL.js";import"../chunk-F5GSBHC6.js";import"../chunk-QBQE7ZJ5.js";import"../chunk-BOW7SSQH.js";import"../chunk-MTDBHTSF.js";import"../chunk-C7C6AKAT.js";import"../chunk-RBAD4GJ2.js";import"../chunk-ZLMXIQLC.js";import"../chunk-ETC674NS.js";import"../chunk-KNLQGXVH.js";import"../chunk-JZ2A7LDM.js";export{a as affected,b as possibleImpactClosure};
1
+ import{a,b}from"../chunk-ZHSP366W.js";import"../chunk-36SGVCGX.js";import"../chunk-AGWFSTXC.js";import"../chunk-P5XHIJHI.js";import"../chunk-73AAKPUC.js";import"../chunk-KZBJWZJB.js";import"../chunk-4WTUBQ36.js";import"../chunk-NZAXKGRL.js";import"../chunk-KK7GPALL.js";import"../chunk-YNQCGEQE.js";import"../chunk-FMRN2TRL.js";import"../chunk-DA7RPPDF.js";import"../chunk-KHWRRPV4.js";import"../chunk-72AD6ZRR.js";import"../chunk-YUKYB54I.js";import"../chunk-GCKCF5FL.js";import"../chunk-DVFP6PZI.js";import"../chunk-5D2LVK7O.js";import"../chunk-7WTPQ4NX.js";import"../chunk-FVULPZDF.js";import"../chunk-D3FDISIC.js";import"../chunk-A2IIGFMJ.js";import"../chunk-PH52RA7D.js";import"../chunk-GVWX5T43.js";import"../chunk-T6DK3ZP7.js";import"../chunk-5TNQJUR2.js";export{a as affected,b as possibleImpactClosure};
2
2
  //# sourceMappingURL=affected.js.map
@@ -26,8 +26,7 @@ interface ArchitectureBoundaryEdge {
26
26
  examples: ArchitectureFileEdge[];
27
27
  /**
28
28
  * True when the entire boundary dependency rests on a single import. Not a
29
- * violation a signal that the edge is incidental rather than load-bearing,
30
- * and therefore cheap to remove if it was never intended.
29
+ * violation. Import count alone does not establish responsibility or removal cost.
31
30
  */
32
31
  fragile: boolean;
33
32
  }
@@ -47,6 +46,8 @@ interface ArchitectureReciprocalPair {
47
46
  reverse: ArchitectureBoundaryEdge;
48
47
  }
49
48
  interface ArchitectureCycle {
49
+ fileCycleMembers?: string[];
50
+ origin?: 'contains-file-cycle' | 'grouping-only';
50
51
  boundaries: string[];
51
52
  internalEdges: ArchitectureBoundaryEdge[];
52
53
  /** Least-broad internal edge(s), useful as inspection points rather than automatic repairs. */
@@ -54,6 +55,8 @@ interface ArchitectureCycle {
54
55
  violatesPolicy: boolean;
55
56
  }
56
57
  interface ArchitectureCoverage {
58
+ scope?: string;
59
+ limitations?: string[];
57
60
  totalFiles: number;
58
61
  mappedFiles: number;
59
62
  unmappedFiles: string[];
@@ -99,19 +102,26 @@ interface ArchitectureCoarseBoundary {
99
102
  violatesPolicy: boolean;
100
103
  subUnits: string[];
101
104
  internalEdges: ArchitectureSubUnitEdge[];
102
- /** Least-broad internal edge(s) the cheapest inspection points. */
105
+ /** Internal edges with the fewest distinct file dependencies; cost is not measured. */
103
106
  narrowestEdges: ArchitectureSubUnitEdge[];
104
107
  }
105
108
  interface ArchitectureReport {
109
+ dependencyRoles?: {
110
+ excludedTestEdges: number;
111
+ basis: 'production-imports-including-types';
112
+ cycleMeaning: string;
113
+ };
106
114
  configured: boolean;
107
115
  boundaries: ArchitectureBoundarySummary[];
108
116
  edges: ArchitectureBoundaryEdge[];
109
117
  forbiddenEdges: ArchitectureBoundaryEdge[];
118
+ testEdges?: ArchitectureBoundaryEdge[];
119
+ testForbiddenEdges?: ArchitectureBoundaryEdge[];
110
120
  reciprocalPairs: ArchitectureReciprocalPair[];
111
121
  cycles: ArchitectureCycle[];
112
122
  /** Boundaries hiding an internal cycle that the boundary graph cannot express. */
113
123
  coarseBoundaries: ArchitectureCoarseBoundary[];
114
- /** Declared allowances with no observed edge policy wider than reality. */
124
+ /** Declared allowances with no observed edge from a boundary with observed source files. */
115
125
  staleAllowances: ArchitectureStaleAllowance[];
116
126
  /** Boundaries over a configured fan-out or file-count limit. */
117
127
  boundaryLimits: ArchitectureBoundaryLimit[];
@@ -131,6 +141,7 @@ declare const ARCHITECTURE_BASELINE_PREFIX = "architecture:";
131
141
  declare function analyzeArchitectureGraph(fileGraph: ReadonlyMap<string, ReadonlySet<string>>, indexedFiles: readonly string[], config?: ArchitectureConfig, opts?: {
132
142
  isModuleHierarchyFile?: (file: string) => boolean;
133
143
  testBoundaryViolations?: TestBoundaryViolation[];
144
+ scope?: string;
134
145
  }): ArchitectureReport;
135
146
  /** Build and analyze the current project's import dependency graph. */
136
147
  declare function architecture(db: ScipDatabase, opts?: {
@@ -1,2 +1,2 @@
1
- import{b as a,c as b,d as c,e as d,f as e,g as f}from"../chunk-TAA7HXHE.js";import"../chunk-SV2LEFVM.js";import"../chunk-35NLDRZC.js";import"../chunk-NJQISBL4.js";import"../chunk-FLMTCX5R.js";import"../chunk-YUKYB54I.js";import"../chunk-DHEQMPLW.js";import"../chunk-BOW7SSQH.js";import"../chunk-C7C6AKAT.js";import"../chunk-RBAD4GJ2.js";import"../chunk-ZLMXIQLC.js";import"../chunk-ETC674NS.js";import"../chunk-KNLQGXVH.js";import"../chunk-JZ2A7LDM.js";export{a as ARCHITECTURE_BASELINE_PREFIX,b as analyzeArchitectureGraph,c as architecture,d as architectureFindingIdentities,f as detectCoarseBoundaries,e as hasEnforceableArchitecturePolicy};
1
+ import{e as a,f as b,g as c,h as d,i as e,j as f}from"../chunk-ETOIKRHO.js";import"../chunk-SV2LEFVM.js";import"../chunk-HXENDJC6.js";import"../chunk-2IWUT6CJ.js";import"../chunk-4WCUBZU3.js";import"../chunk-E3FDPXZK.js";import"../chunk-DHEQMPLW.js";import"../chunk-KHWRRPV4.js";import"../chunk-72AD6ZRR.js";import"../chunk-YUKYB54I.js";import"../chunk-GCKCF5FL.js";import"../chunk-5D2LVK7O.js";import"../chunk-7WTPQ4NX.js";import"../chunk-FVULPZDF.js";import"../chunk-D3FDISIC.js";import"../chunk-A2IIGFMJ.js";import"../chunk-PH52RA7D.js";import"../chunk-GVWX5T43.js";import"../chunk-T6DK3ZP7.js";import"../chunk-5TNQJUR2.js";export{a as ARCHITECTURE_BASELINE_PREFIX,b as analyzeArchitectureGraph,c as architecture,d as architectureFindingIdentities,f as detectCoarseBoundaries,e as hasEnforceableArchitecturePolicy};
2
2
  //# sourceMappingURL=architecture.js.map
@@ -1,2 +1,2 @@
1
- import{a,b}from"../chunk-AX7IDVFT.js";import"../chunk-BOJ5SVE2.js";import"../chunk-2BMSSRBH.js";import"../chunk-BGBBVSH4.js";import"../chunk-BJWFVAA5.js";import"../chunk-YSYPDRD5.js";import"../chunk-P5XHIJHI.js";import"../chunk-U3SXIMII.js";import"../chunk-J6GLBBRK.js";import"../chunk-SKKXTABJ.js";import"../chunk-KK7GPALL.js";import"../chunk-F5GSBHC6.js";import"../chunk-QBQE7ZJ5.js";import"../chunk-NJQISBL4.js";import"../chunk-FLMTCX5R.js";import"../chunk-YUKYB54I.js";import"../chunk-DHEQMPLW.js";import"../chunk-BOW7SSQH.js";import"../chunk-MTDBHTSF.js";import"../chunk-C7C6AKAT.js";import"../chunk-RBAD4GJ2.js";import"../chunk-ZLMXIQLC.js";import"../chunk-ETC674NS.js";import"../chunk-KNLQGXVH.js";import"../chunk-JZ2A7LDM.js";export{a as bottlenecks,b as coordinationHubs};
1
+ import{a,b}from"../chunk-WS4C6TCK.js";import"../chunk-BOJ5SVE2.js";import"../chunk-6LSEIIF7.js";import"../chunk-BGBBVSH4.js";import"../chunk-36SGVCGX.js";import"../chunk-AGWFSTXC.js";import"../chunk-P5XHIJHI.js";import"../chunk-73AAKPUC.js";import"../chunk-KZBJWZJB.js";import"../chunk-4WTUBQ36.js";import"../chunk-NZAXKGRL.js";import"../chunk-KK7GPALL.js";import"../chunk-YNQCGEQE.js";import"../chunk-FMRN2TRL.js";import"../chunk-DA7RPPDF.js";import"../chunk-4WCUBZU3.js";import"../chunk-E3FDPXZK.js";import"../chunk-DHEQMPLW.js";import"../chunk-KHWRRPV4.js";import"../chunk-72AD6ZRR.js";import"../chunk-YUKYB54I.js";import"../chunk-GCKCF5FL.js";import"../chunk-DVFP6PZI.js";import"../chunk-5D2LVK7O.js";import"../chunk-7WTPQ4NX.js";import"../chunk-FVULPZDF.js";import"../chunk-D3FDISIC.js";import"../chunk-A2IIGFMJ.js";import"../chunk-PH52RA7D.js";import"../chunk-GVWX5T43.js";import"../chunk-T6DK3ZP7.js";import"../chunk-5TNQJUR2.js";export{a as bottlenecks,b as coordinationHubs};
2
2
  //# sourceMappingURL=bottlenecks.js.map
@@ -1,2 +1,2 @@
1
- import{a,b}from"../chunk-LDXHR5EL.js";import"../chunk-MTDBHTSF.js";import"../chunk-C7C6AKAT.js";import"../chunk-RBAD4GJ2.js";import"../chunk-ZLMXIQLC.js";import"../chunk-ETC674NS.js";import"../chunk-KNLQGXVH.js";import"../chunk-JZ2A7LDM.js";export{a as byKind,b as kindCounts};
1
+ import{a,b}from"../chunk-Z33WQG4Q.js";import"../chunk-DVFP6PZI.js";import"../chunk-5D2LVK7O.js";import"../chunk-7WTPQ4NX.js";import"../chunk-FVULPZDF.js";import"../chunk-D3FDISIC.js";import"../chunk-A2IIGFMJ.js";import"../chunk-PH52RA7D.js";import"../chunk-GVWX5T43.js";import"../chunk-T6DK3ZP7.js";import"../chunk-5TNQJUR2.js";export{a as byKind,b as kindCounts};
2
2
  //# sourceMappingURL=by-kind.js.map
@@ -6,7 +6,7 @@ interface CallGraphEvidenceRow {
6
6
  symbol: string;
7
7
  shortName: string;
8
8
  file: string;
9
- relationship: 'resolved-call' | 'reference-candidate' | 'chunk-candidate';
9
+ relationship: 'resolved-call' | 'source-call-candidate' | 'reference-candidate' | 'chunk-candidate';
10
10
  evidenceStrength: 'exact' | 'candidate';
11
11
  evidenceSource: string;
12
12
  /** `render` when the edge is a rendered component element (`<Child />`) rather than a call expression. */
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-VDSDOEWF.js";import"../chunk-BOJ5SVE2.js";import"../chunk-BGBBVSH4.js";import"../chunk-BJWFVAA5.js";import"../chunk-YSYPDRD5.js";import"../chunk-P5XHIJHI.js";import"../chunk-U3SXIMII.js";import"../chunk-J6GLBBRK.js";import"../chunk-SKKXTABJ.js";import"../chunk-KK7GPALL.js";import"../chunk-F5GSBHC6.js";import"../chunk-QBQE7ZJ5.js";import"../chunk-BOW7SSQH.js";import"../chunk-MTDBHTSF.js";import"../chunk-C7C6AKAT.js";import"../chunk-RBAD4GJ2.js";import"../chunk-ZLMXIQLC.js";import"../chunk-ETC674NS.js";import"../chunk-KNLQGXVH.js";import"../chunk-JZ2A7LDM.js";export{a as callGraph};
1
+ import{a}from"../chunk-F4LUHJTF.js";import"../chunk-BOJ5SVE2.js";import"../chunk-BGBBVSH4.js";import"../chunk-36SGVCGX.js";import"../chunk-AGWFSTXC.js";import"../chunk-P5XHIJHI.js";import"../chunk-73AAKPUC.js";import"../chunk-KZBJWZJB.js";import"../chunk-4WTUBQ36.js";import"../chunk-NZAXKGRL.js";import"../chunk-KK7GPALL.js";import"../chunk-YNQCGEQE.js";import"../chunk-FMRN2TRL.js";import"../chunk-DA7RPPDF.js";import"../chunk-KHWRRPV4.js";import"../chunk-72AD6ZRR.js";import"../chunk-YUKYB54I.js";import"../chunk-GCKCF5FL.js";import"../chunk-DVFP6PZI.js";import"../chunk-5D2LVK7O.js";import"../chunk-7WTPQ4NX.js";import"../chunk-FVULPZDF.js";import"../chunk-D3FDISIC.js";import"../chunk-A2IIGFMJ.js";import"../chunk-PH52RA7D.js";import"../chunk-GVWX5T43.js";import"../chunk-T6DK3ZP7.js";import"../chunk-5TNQJUR2.js";export{a as callGraph};
2
2
  //# sourceMappingURL=call-graph.js.map
@@ -31,6 +31,7 @@ interface ChangeSurfaceEntry {
31
31
  interface ChangeSurfaceResult {
32
32
  file: string;
33
33
  symbols: ChangeSurfaceEntry[];
34
+ /** Distinct consumer files across all selected symbols, not a sum of per-symbol counts. */
34
35
  totalExternalConsumers: number;
35
36
  fileRisk?: FileChangeRiskMetadata;
36
37
  }
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-HOBOVYPO.js";import"../chunk-NSM5IEVW.js";import"../chunk-2BMSSRBH.js";import"../chunk-BGBBVSH4.js";import"../chunk-BJWFVAA5.js";import"../chunk-YSYPDRD5.js";import"../chunk-P5XHIJHI.js";import"../chunk-U3SXIMII.js";import"../chunk-J6GLBBRK.js";import"../chunk-SKKXTABJ.js";import"../chunk-KK7GPALL.js";import"../chunk-F5GSBHC6.js";import"../chunk-QBQE7ZJ5.js";import"../chunk-NJQISBL4.js";import"../chunk-FLMTCX5R.js";import"../chunk-YUKYB54I.js";import"../chunk-DHEQMPLW.js";import"../chunk-BOW7SSQH.js";import"../chunk-MTDBHTSF.js";import"../chunk-C7C6AKAT.js";import"../chunk-RBAD4GJ2.js";import"../chunk-ZLMXIQLC.js";import"../chunk-ETC674NS.js";import"../chunk-KNLQGXVH.js";import"../chunk-JZ2A7LDM.js";export{a as changeSurface};
1
+ import{a}from"../chunk-PWOASWEG.js";import"../chunk-AOSIYPTA.js";import"../chunk-6LSEIIF7.js";import"../chunk-BGBBVSH4.js";import"../chunk-36SGVCGX.js";import"../chunk-AGWFSTXC.js";import"../chunk-P5XHIJHI.js";import"../chunk-73AAKPUC.js";import"../chunk-KZBJWZJB.js";import"../chunk-4WTUBQ36.js";import"../chunk-NZAXKGRL.js";import"../chunk-KK7GPALL.js";import"../chunk-YNQCGEQE.js";import"../chunk-FMRN2TRL.js";import"../chunk-DA7RPPDF.js";import"../chunk-4WCUBZU3.js";import"../chunk-E3FDPXZK.js";import"../chunk-DHEQMPLW.js";import"../chunk-KHWRRPV4.js";import"../chunk-72AD6ZRR.js";import"../chunk-YUKYB54I.js";import"../chunk-GCKCF5FL.js";import"../chunk-DVFP6PZI.js";import"../chunk-5D2LVK7O.js";import"../chunk-7WTPQ4NX.js";import"../chunk-FVULPZDF.js";import"../chunk-D3FDISIC.js";import"../chunk-A2IIGFMJ.js";import"../chunk-PH52RA7D.js";import"../chunk-GVWX5T43.js";import"../chunk-T6DK3ZP7.js";import"../chunk-5TNQJUR2.js";export{a as changeSurface};
2
2
  //# sourceMappingURL=change-surface.js.map
@@ -10,13 +10,13 @@ interface CleanupPlanEntry {
10
10
  endLine: number;
11
11
  loc: number;
12
12
  /**
13
- * 'graph-fact': zero references anywhere deletable today.
14
- * 'cascade': becomes dead once earlier batches are deleted.
13
+ * 'graph-fact': no uses observed by the configured analysis; review before deleting.
14
+ * 'cascade': observed uses lie in earlier proposed removal batches.
15
15
  */
16
16
  evidence: 'graph-fact' | 'cascade';
17
17
  }
18
18
  interface CleanupBatch {
19
- /** 0 = deletable now; n = deletable after batch n-1 is applied. */
19
+ /** 0 = initial candidates; n = candidates after earlier proposed removals. */
20
20
  depth: number;
21
21
  entries: CleanupPlanEntry[];
22
22
  loc: number;
@@ -1,2 +1,2 @@
1
- import{a,b}from"../chunk-MV6SPXCR.js";import"../chunk-OIAPEKMT.js";import"../chunk-E7QR35ST.js";import"../chunk-4FR6GQIT.js";import"../chunk-BOJ5SVE2.js";import"../chunk-2BMSSRBH.js";import"../chunk-BGBBVSH4.js";import"../chunk-BJWFVAA5.js";import"../chunk-YSYPDRD5.js";import"../chunk-P5XHIJHI.js";import"../chunk-U3SXIMII.js";import"../chunk-J6GLBBRK.js";import"../chunk-SKKXTABJ.js";import"../chunk-KK7GPALL.js";import"../chunk-F5GSBHC6.js";import"../chunk-QBQE7ZJ5.js";import"../chunk-NJQISBL4.js";import"../chunk-FLMTCX5R.js";import"../chunk-YUKYB54I.js";import"../chunk-DHEQMPLW.js";import"../chunk-BOW7SSQH.js";import"../chunk-MTDBHTSF.js";import"../chunk-C7C6AKAT.js";import"../chunk-RBAD4GJ2.js";import"../chunk-ZLMXIQLC.js";import"../chunk-ETC674NS.js";import"../chunk-KNLQGXVH.js";import"../chunk-JZ2A7LDM.js";export{b as RemovedRangeIndex,a as cleanupPlan};
1
+ import{a,b}from"../chunk-3ZRB6DNK.js";import"../chunk-O3RHA6ZT.js";import"../chunk-GUUBXNN7.js";import"../chunk-VF5JZICY.js";import"../chunk-BOJ5SVE2.js";import"../chunk-6LSEIIF7.js";import"../chunk-BGBBVSH4.js";import"../chunk-36SGVCGX.js";import"../chunk-AGWFSTXC.js";import"../chunk-P5XHIJHI.js";import"../chunk-73AAKPUC.js";import"../chunk-KZBJWZJB.js";import"../chunk-4WTUBQ36.js";import"../chunk-NZAXKGRL.js";import"../chunk-KK7GPALL.js";import"../chunk-YNQCGEQE.js";import"../chunk-FMRN2TRL.js";import"../chunk-DA7RPPDF.js";import"../chunk-4WCUBZU3.js";import"../chunk-E3FDPXZK.js";import"../chunk-DHEQMPLW.js";import"../chunk-KHWRRPV4.js";import"../chunk-72AD6ZRR.js";import"../chunk-YUKYB54I.js";import"../chunk-GCKCF5FL.js";import"../chunk-DVFP6PZI.js";import"../chunk-5D2LVK7O.js";import"../chunk-7WTPQ4NX.js";import"../chunk-FVULPZDF.js";import"../chunk-D3FDISIC.js";import"../chunk-A2IIGFMJ.js";import"../chunk-PH52RA7D.js";import"../chunk-GVWX5T43.js";import"../chunk-T6DK3ZP7.js";import"../chunk-5TNQJUR2.js";export{b as RemovedRangeIndex,a as cleanupPlan};
2
2
  //# sourceMappingURL=cleanup-plan.js.map
@@ -1,2 +1,2 @@
1
- import{a as b,b as c,c as d,d as e,e as f,f as g}from"../chunk-KVQCECPR.js";import"../chunk-XKXTR6ZI.js";import{a}from"../chunk-4FR6GQIT.js";import"../chunk-P5XHIJHI.js";import"../chunk-NJQISBL4.js";import"../chunk-FLMTCX5R.js";import"../chunk-YUKYB54I.js";import"../chunk-DHEQMPLW.js";import"../chunk-BOW7SSQH.js";import"../chunk-C7C6AKAT.js";import"../chunk-RBAD4GJ2.js";import"../chunk-ZLMXIQLC.js";import"../chunk-ETC674NS.js";import"../chunk-KNLQGXVH.js";import"../chunk-JZ2A7LDM.js";export{e as classifyCoChangePartner,d as coChange,b as coChangeActionTier,g as coChangeStructuralLinkChecker,f as declaredCouplingSuggestionForPair,c as isCoChangeNoiseFile,a as isGeneratedArtifactPath};
1
+ import{a as b,b as c,c as d,d as e,e as f,f as g}from"../chunk-UP5KXN2I.js";import"../chunk-KDDIE2DP.js";import{a}from"../chunk-VF5JZICY.js";import"../chunk-P5XHIJHI.js";import"../chunk-4WCUBZU3.js";import"../chunk-E3FDPXZK.js";import"../chunk-DHEQMPLW.js";import"../chunk-YUKYB54I.js";import"../chunk-GCKCF5FL.js";import"../chunk-5D2LVK7O.js";import"../chunk-7WTPQ4NX.js";import"../chunk-FVULPZDF.js";import"../chunk-D3FDISIC.js";import"../chunk-A2IIGFMJ.js";import"../chunk-PH52RA7D.js";import"../chunk-GVWX5T43.js";import"../chunk-T6DK3ZP7.js";import"../chunk-5TNQJUR2.js";export{e as classifyCoChangePartner,d as coChange,b as coChangeActionTier,g as coChangeStructuralLinkChecker,f as declaredCouplingSuggestionForPair,c as isCoChangeNoiseFile,a as isGeneratedArtifactPath};
2
2
  //# sourceMappingURL=co-change.js.map
@@ -1,6 +1,6 @@
1
1
  export { S as SourceObservationFreshness, a as SourceSemanticFreshnessState } from '../repository-text-C0Q8VYdN.js';
2
2
  import '../db-BwIVAYNB.js';
3
- export { b as CodeBatchEntry, c as CodeBatchResult, d as CodeFileCoverage, e as CodeFileDefinitionLedgerEntry, f as CodeFileMemberMode, g as CodeRangeCoverage, h as CodeResolutionCandidate, C as CodeResult, i as CodeSelectorKind, j as CodeSelectorStatus, l as code, m as codeBatch } from '../code-B17qEMbt.js';
3
+ export { C as CodeBatchEntry, b as CodeBatchResult, c as CodeFileCoverage, d as CodeFileDefinitionLedgerEntry, e as CodeFileMemberMode, f as CodeRangeCoverage, g as CodeResolutionCandidate, h as CodeResult, i as CodeSelectorKind, j as CodeSelectorStatus, l as code, m as codeBatch } from '../code-BNyrCF3_.js';
4
4
  import './outline.js';
5
5
  import 'better-sqlite3';
6
6
  import '../config-types-B9B60MiR.js';
@@ -1,2 +1,2 @@
1
- import{d as a,e as b}from"../chunk-WFA35BGR.js";import"../chunk-A4WEAK35.js";import"../chunk-MHGDSBFX.js";import"../chunk-WSA52GOR.js";import"../chunk-2GJSD5GY.js";import"../chunk-NSM5IEVW.js";import"../chunk-ZGIQN2SX.js";import"../chunk-Y5DFAW5W.js";import"../chunk-GC4DG2V5.js";import"../chunk-U3SXIMII.js";import"../chunk-SKKXTABJ.js";import"../chunk-KK7GPALL.js";import"../chunk-F5GSBHC6.js";import"../chunk-FLMTCX5R.js";import"../chunk-YUKYB54I.js";import"../chunk-BOW7SSQH.js";import"../chunk-MTDBHTSF.js";import"../chunk-C7C6AKAT.js";import"../chunk-RBAD4GJ2.js";import"../chunk-ZLMXIQLC.js";import"../chunk-ETC674NS.js";import"../chunk-KNLQGXVH.js";import"../chunk-JZ2A7LDM.js";export{a as code,b as codeBatch};
1
+ import{d as a,e as b}from"../chunk-ZIBYCYKK.js";import"../chunk-DIO3FUSG.js";import"../chunk-MOQQBQRD.js";import"../chunk-YGVRMGYN.js";import"../chunk-GMVSHUKZ.js";import"../chunk-AOSIYPTA.js";import"../chunk-4WTUBQ36.js";import"../chunk-NZAXKGRL.js";import"../chunk-KK7GPALL.js";import"../chunk-YNQCGEQE.js";import"../chunk-FMRN2TRL.js";import"../chunk-E3FDPXZK.js";import"../chunk-KHWRRPV4.js";import"../chunk-72AD6ZRR.js";import"../chunk-YUKYB54I.js";import"../chunk-GCKCF5FL.js";import"../chunk-DVFP6PZI.js";import"../chunk-5D2LVK7O.js";import"../chunk-7WTPQ4NX.js";import"../chunk-FVULPZDF.js";import"../chunk-D3FDISIC.js";import"../chunk-A2IIGFMJ.js";import"../chunk-PH52RA7D.js";import"../chunk-GVWX5T43.js";import"../chunk-T6DK3ZP7.js";import"../chunk-5TNQJUR2.js";export{a as code,b as codeBatch};
2
2
  //# sourceMappingURL=code.js.map