scip-query 0.19.6 → 0.19.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +28 -15
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/chunk-2465DLHK.js +3 -0
  5. package/dist/{chunk-2CVXCGL4.js → chunk-24GTWJ3N.js} +2 -2
  6. package/dist/{chunk-XVJ3V7LM.js → chunk-2SNGN6U4.js} +2 -2
  7. package/dist/{chunk-FKGN4A4E.js → chunk-2U3OLUNJ.js} +2 -2
  8. package/dist/{chunk-UUJBLG6J.js → chunk-33KUO7CG.js} +2 -2
  9. package/dist/{chunk-N3SE646F.js → chunk-33XTHFKR.js} +2 -2
  10. package/dist/{chunk-WXAAURU7.js → chunk-3EDFLQ6A.js} +2 -2
  11. package/dist/chunk-3ZSJ3PWF.js +16 -0
  12. package/dist/{chunk-G4UQL4CP.js → chunk-43KC6EQZ.js} +2 -2
  13. package/dist/{chunk-NQLSSVOB.js → chunk-464PLI5O.js} +2 -2
  14. package/dist/chunk-46XGSFNI.js +2 -0
  15. package/dist/{chunk-NN4ZIRPK.js → chunk-47BU5Z4T.js} +2 -2
  16. package/dist/chunk-4BV4QAZJ.js +5 -0
  17. package/dist/chunk-4YTUWQ6M.js +18 -0
  18. package/dist/{chunk-LMFVTUW2.js → chunk-5ML2BNRH.js} +2 -2
  19. package/dist/{chunk-OP3MTFJR.js → chunk-5YLUDDAF.js} +2 -2
  20. package/dist/chunk-67QRR5YC.js +6 -0
  21. package/dist/{chunk-273W2U4Y.js → chunk-6GXYN7YA.js} +2 -2
  22. package/dist/{chunk-JELJLXEE.js → chunk-6M7RONVB.js} +2 -2
  23. package/dist/{chunk-MLGTCX56.js → chunk-7FT5Y65S.js} +2 -2
  24. package/dist/{chunk-F42A3AKG.js → chunk-7KYNAMMH.js} +2 -2
  25. package/dist/{chunk-VP542C25.js → chunk-7LSVMFX7.js} +2 -2
  26. package/dist/{chunk-YWB2EBNB.js → chunk-7QHY3H7P.js} +2 -2
  27. package/dist/{chunk-UQK5CRUK.js → chunk-7RAG65VK.js} +2 -2
  28. package/dist/{chunk-CYJM7CYF.js → chunk-7SWJEWJF.js} +2 -2
  29. package/dist/{chunk-47X75ZKH.js → chunk-7VCOXZH3.js} +2 -2
  30. package/dist/chunk-A2TNXAXO.js +8 -0
  31. package/dist/{chunk-TYQ76QHQ.js → chunk-A3QXWFBK.js} +2 -2
  32. package/dist/{chunk-S2GP3CU3.js → chunk-AA4UWRNL.js} +2 -2
  33. package/dist/{chunk-OBKDTVZ3.js → chunk-ACAM6O5R.js} +2 -2
  34. package/dist/chunk-AQOFWNQJ.js +1 -0
  35. package/dist/chunk-AZFUMCQB.js +2 -0
  36. package/dist/{chunk-IYAOX36F.js → chunk-BDOIKGDI.js} +2 -2
  37. package/dist/{chunk-7E3TH5ZN.js → chunk-BNXICU42.js} +2 -2
  38. package/dist/chunk-C5Q44Q5D.js +3 -0
  39. package/dist/{chunk-OQ2A4G2G.js → chunk-CTF2GDEX.js} +2 -2
  40. package/dist/chunk-DHEQMPLW.js +2 -0
  41. package/dist/{chunk-EVOC5I5I.js → chunk-DQBCO2UY.js} +2 -2
  42. package/dist/{chunk-YLVE3SXZ.js → chunk-DQGSM7RZ.js} +2 -2
  43. package/dist/chunk-E2LAW7SL.js +30 -0
  44. package/dist/chunk-E3HYEQO7.js +2 -0
  45. package/dist/chunk-E4NFOAD4.js +6 -0
  46. package/dist/chunk-E5HNT4X2.js +3 -0
  47. package/dist/{chunk-6XHTISLI.js → chunk-ELLMY7XJ.js} +2 -2
  48. package/dist/chunk-FD3HFKXR.js +5 -0
  49. package/dist/{chunk-RJHCPSZ7.js → chunk-FIJCV235.js} +2 -2
  50. package/dist/{chunk-KLVJABXA.js → chunk-FJ5UDTQF.js} +2 -2
  51. package/dist/{chunk-SHKZ7OVJ.js → chunk-GHKEJTCE.js} +2 -2
  52. package/dist/{chunk-JERWGHQT.js → chunk-GLZTVKAB.js} +3 -3
  53. package/dist/{chunk-A43URCQ3.js → chunk-GNC4JVAN.js} +2 -2
  54. package/dist/chunk-HIB452NU.js +949 -0
  55. package/dist/{chunk-U5CNPPTZ.js → chunk-HZYDQPNY.js} +2 -2
  56. package/dist/chunk-IF6FP6B2.js +66 -0
  57. package/dist/{chunk-CSTYYXKC.js → chunk-JAY7YWS3.js} +2 -2
  58. package/dist/{chunk-6XFC7PQ5.js → chunk-JHF3E4YM.js} +2 -2
  59. package/dist/chunk-JORHF5AL.js +108 -0
  60. package/dist/{chunk-QBYYWGAT.js → chunk-K2WO7XY7.js} +2 -2
  61. package/dist/chunk-KFZNKUNT.js +2 -0
  62. package/dist/{chunk-J7VT2CRB.js → chunk-KJ2IIBZN.js} +2 -2
  63. package/dist/{chunk-336DC5NJ.js → chunk-KKME5ZAI.js} +2 -2
  64. package/dist/chunk-KSGTULOS.js +9 -0
  65. package/dist/{chunk-E2ZXPB7J.js → chunk-KXDJAG4N.js} +3 -3
  66. package/dist/{chunk-Z2LHPIOM.js → chunk-L4S2A7BV.js} +2 -2
  67. package/dist/chunk-LP3ARJKF.js +8 -0
  68. package/dist/chunk-LSOR3LQG.js +3 -0
  69. package/dist/{chunk-FHCTEANE.js → chunk-MLFZP76A.js} +2 -2
  70. package/dist/{chunk-RBFFD4V2.js → chunk-MNSTUIDD.js} +2 -2
  71. package/dist/{chunk-3OIKRYU5.js → chunk-MSBDMFER.js} +2 -2
  72. package/dist/{chunk-7LABSJSR.js → chunk-MZZBAITE.js} +5 -5
  73. package/dist/{chunk-QQWOFXNW.js → chunk-NE3TZUCI.js} +2 -2
  74. package/dist/{chunk-JZNLMHWY.js → chunk-NTUMF2X3.js} +2 -2
  75. package/dist/{chunk-DD5BOU5I.js → chunk-O23I56NA.js} +2 -2
  76. package/dist/{chunk-YHXBD52M.js → chunk-O3O4XXO6.js} +2 -2
  77. package/dist/{chunk-FQTPPXNA.js → chunk-OUBAF226.js} +2 -2
  78. package/dist/chunk-P3UO3EH3.js +2 -0
  79. package/dist/{chunk-5OC3HWP5.js → chunk-QGGLL3UH.js} +2 -2
  80. package/dist/chunk-QIQ63BHW.js +16 -0
  81. package/dist/{chunk-RWRLUZ6U.js → chunk-QJIVBYEK.js} +2 -2
  82. package/dist/chunk-QOXBSI6G.js +20 -0
  83. package/dist/{chunk-7Q6VYYCH.js → chunk-QXK6UUSM.js} +2 -2
  84. package/dist/{chunk-ZTTISZ7J.js → chunk-RA3AYNWP.js} +2 -2
  85. package/dist/chunk-RJMDJR3A.js +2 -0
  86. package/dist/{chunk-TFUU5MQQ.js → chunk-RLH5VUMG.js} +2 -2
  87. package/dist/{chunk-OHWZKLVA.js → chunk-S4S2WOIX.js} +2 -2
  88. package/dist/{chunk-YTUD45PU.js → chunk-SERUIGV5.js} +2 -2
  89. package/dist/{chunk-2OXVAGGT.js → chunk-SMQWE25B.js} +2 -2
  90. package/dist/{chunk-K42M2KWT.js → chunk-TAVELHYR.js} +2 -2
  91. package/dist/{chunk-MGBJHRFB.js → chunk-TWMJ3Y3G.js} +2 -2
  92. package/dist/chunk-VAXNI5NE.js +146 -0
  93. package/dist/chunk-VVY2G5ET.js +2 -0
  94. package/dist/{chunk-XF3KLXN3.js → chunk-W3DBTGL4.js} +2 -2
  95. package/dist/{chunk-26X7KCJR.js → chunk-WANA4KAQ.js} +2 -2
  96. package/dist/chunk-WJL2L6MV.js +60 -0
  97. package/dist/chunk-WUW7YUAH.js +11 -0
  98. package/dist/{chunk-PC44K7RF.js → chunk-WWKWUPSU.js} +2 -2
  99. package/dist/{chunk-2EZSOTSY.js → chunk-WY45BHKQ.js} +2 -2
  100. package/dist/chunk-X4FR5BZF.js +9 -0
  101. package/dist/chunk-X6RKPDY7.js +2 -0
  102. package/dist/{chunk-GK3GRUJX.js → chunk-YLFORA5G.js} +2 -2
  103. package/dist/{chunk-NBRUH7OE.js → chunk-YTVWB7YJ.js} +2 -2
  104. package/dist/{chunk-YGQN3XGZ.js → chunk-ZCEJ63SP.js} +2 -2
  105. package/dist/{chunk-2GSQR6YA.js → chunk-ZJ5CBXK3.js} +2 -2
  106. package/dist/chunk-ZL2OGDCD.js +2 -0
  107. package/dist/cli.js +8 -3
  108. package/dist/command-descriptors-ZW5J4ZEM.js +631 -0
  109. package/dist/{config-types-BWQ5xPGI.d.ts → config-types-B6MEoRNy.d.ts} +4 -0
  110. package/dist/{db-B0r1o7Vt.d.ts → db-DYLKr9Wn.d.ts} +1 -1
  111. package/dist/direct-navigation-42YHQPOI.js +3 -0
  112. package/dist/{health-CFnlCiTz.d.ts → health-DgxIDXJC.d.ts} +1 -1
  113. package/dist/index.d.ts +2 -2
  114. package/dist/index.js +1 -1
  115. package/dist/postinstall.js +1 -1
  116. package/dist/queries/affected.d.ts +2 -2
  117. package/dist/queries/affected.js +1 -1
  118. package/dist/queries/architecture.d.ts +2 -2
  119. package/dist/queries/architecture.js +1 -1
  120. package/dist/queries/bottlenecks.d.ts +2 -2
  121. package/dist/queries/bottlenecks.js +1 -1
  122. package/dist/queries/by-kind.d.ts +2 -2
  123. package/dist/queries/by-kind.js +1 -1
  124. package/dist/queries/call-graph.d.ts +2 -2
  125. package/dist/queries/call-graph.js +1 -1
  126. package/dist/queries/change-surface.d.ts +2 -2
  127. package/dist/queries/change-surface.js +1 -1
  128. package/dist/queries/cleanup-plan.d.ts +2 -2
  129. package/dist/queries/cleanup-plan.js +1 -1
  130. package/dist/queries/co-change.d.ts +2 -2
  131. package/dist/queries/co-change.js +1 -1
  132. package/dist/queries/code.d.ts +2 -2
  133. package/dist/queries/code.js +1 -1
  134. package/dist/queries/complexity-hotspots.d.ts +2 -2
  135. package/dist/queries/complexity-hotspots.js +1 -1
  136. package/dist/queries/complexity.d.ts +2 -2
  137. package/dist/queries/complexity.js +1 -1
  138. package/dist/queries/convergence.d.ts +2 -2
  139. package/dist/queries/convergence.js +1 -1
  140. package/dist/queries/coupling.d.ts +2 -2
  141. package/dist/queries/coupling.js +1 -1
  142. package/dist/queries/cycles.d.ts +2 -2
  143. package/dist/queries/cycles.js +1 -1
  144. package/dist/queries/dataflow.d.ts +2 -2
  145. package/dist/queries/dataflow.js +1 -1
  146. package/dist/queries/dead.d.ts +2 -2
  147. package/dist/queries/dead.js +1 -1
  148. package/dist/queries/decorative-checkers.d.ts +2 -2
  149. package/dist/queries/decorative-checkers.js +1 -1
  150. package/dist/queries/deep-chains.d.ts +2 -2
  151. package/dist/queries/deep-chains.js +1 -1
  152. package/dist/queries/deps.d.ts +2 -2
  153. package/dist/queries/deps.js +1 -1
  154. package/dist/queries/diff-gate.d.ts +2 -2
  155. package/dist/queries/diff-gate.js +1 -1
  156. package/dist/queries/diff-impact.d.ts +2 -2
  157. package/dist/queries/diff-impact.js +1 -1
  158. package/dist/queries/doc-drift.d.ts +2 -2
  159. package/dist/queries/doc-drift.js +1 -1
  160. package/dist/queries/drift.d.ts +2 -2
  161. package/dist/queries/drift.js +1 -1
  162. package/dist/queries/duplicate-bodies.d.ts +2 -2
  163. package/dist/queries/duplicate-bodies.js +1 -1
  164. package/dist/queries/extract-candidates.d.ts +2 -2
  165. package/dist/queries/extract-candidates.js +1 -1
  166. package/dist/queries/fan.d.ts +2 -2
  167. package/dist/queries/fan.js +1 -1
  168. package/dist/queries/files.d.ts +2 -2
  169. package/dist/queries/health.d.ts +3 -3
  170. package/dist/queries/health.js +1 -1
  171. package/dist/queries/hierarchy.d.ts +2 -2
  172. package/dist/queries/hierarchy.js +1 -1
  173. package/dist/queries/hotspots.d.ts +2 -2
  174. package/dist/queries/hotspots.js +1 -1
  175. package/dist/queries/imports.d.ts +2 -2
  176. package/dist/queries/imports.js +1 -1
  177. package/dist/queries/incomplete-migration.d.ts +2 -2
  178. package/dist/queries/incomplete-migration.js +1 -1
  179. package/dist/queries/index.d.ts +3 -3
  180. package/dist/queries/index.js +1 -1
  181. package/dist/queries/isolated.d.ts +2 -2
  182. package/dist/queries/isolated.js +1 -1
  183. package/dist/queries/locality-candidates.d.ts +2 -2
  184. package/dist/queries/locality-candidates.js +1 -1
  185. package/dist/queries/members.d.ts +2 -2
  186. package/dist/queries/members.js +1 -1
  187. package/dist/queries/methods.d.ts +2 -2
  188. package/dist/queries/methods.js +1 -1
  189. package/dist/queries/not-implemented.d.ts +2 -2
  190. package/dist/queries/not-implemented.js +1 -1
  191. package/dist/queries/outline.d.ts +2 -2
  192. package/dist/queries/outline.js +1 -1
  193. package/dist/queries/passthrough-candidates.d.ts +2 -2
  194. package/dist/queries/passthrough-candidates.js +1 -1
  195. package/dist/queries/plan-context.d.ts +2 -2
  196. package/dist/queries/plan-context.js +1 -1
  197. package/dist/queries/react-component-duplicates.d.ts +2 -2
  198. package/dist/queries/react-component-duplicates.js +1 -1
  199. package/dist/queries/react-hook-candidates.d.ts +2 -2
  200. package/dist/queries/react-hook-candidates.js +1 -1
  201. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  202. package/dist/queries/react-large-component-pressure.js +1 -1
  203. package/dist/queries/recent-duplicates.d.ts +2 -2
  204. package/dist/queries/recent-duplicates.js +1 -1
  205. package/dist/queries/redundant-reexports.d.ts +2 -2
  206. package/dist/queries/redundant-reexports.js +1 -1
  207. package/dist/queries/refs.d.ts +2 -2
  208. package/dist/queries/refs.js +1 -1
  209. package/dist/queries/self-audit.d.ts +2 -2
  210. package/dist/queries/self-audit.js +1 -1
  211. package/dist/queries/similar-chains.d.ts +2 -2
  212. package/dist/queries/similar-chains.js +1 -1
  213. package/dist/queries/similar-files.d.ts +2 -2
  214. package/dist/queries/similar-files.js +1 -1
  215. package/dist/queries/similar-signatures.d.ts +2 -2
  216. package/dist/queries/similar-signatures.js +1 -1
  217. package/dist/queries/similar.d.ts +2 -2
  218. package/dist/queries/similar.js +1 -1
  219. package/dist/queries/slice.d.ts +2 -2
  220. package/dist/queries/slice.js +1 -1
  221. package/dist/queries/stale-abstractions.d.ts +2 -2
  222. package/dist/queries/stale-abstractions.js +1 -1
  223. package/dist/queries/stats.d.ts +2 -2
  224. package/dist/queries/surface.d.ts +2 -2
  225. package/dist/queries/surface.js +1 -1
  226. package/dist/queries/symbols.d.ts +2 -2
  227. package/dist/queries/symbols.js +1 -1
  228. package/dist/queries/system.d.ts +2 -2
  229. package/dist/queries/system.js +1 -1
  230. package/dist/queries/test-quality.d.ts +2 -2
  231. package/dist/queries/test-quality.js +1 -1
  232. package/dist/queries/trace.d.ts +2 -2
  233. package/dist/queries/trace.js +1 -1
  234. package/dist/queries/twin-ab.d.ts +2 -2
  235. package/dist/queries/twin-ab.js +1 -1
  236. package/dist/queries/twin-drift.d.ts +2 -2
  237. package/dist/queries/twin-drift.js +1 -1
  238. package/dist/queries/unused-imports.d.ts +2 -2
  239. package/dist/queries/unused-imports.js +1 -1
  240. package/dist/queries/unused-params.d.ts +2 -2
  241. package/dist/queries/unused-params.js +1 -1
  242. package/dist/queries/vue-component-duplicates.d.ts +2 -2
  243. package/dist/queries/vue-component-duplicates.js +1 -1
  244. package/dist/queries/vue-composable-candidates.d.ts +2 -2
  245. package/dist/queries/vue-composable-candidates.js +1 -1
  246. package/dist/queries/vue-large-view-pressure.d.ts +2 -2
  247. package/dist/queries/vue-large-view-pressure.js +1 -1
  248. package/dist/queries/wrapper-candidates.d.ts +2 -2
  249. package/dist/queries/wrapper-candidates.js +1 -1
  250. package/dist/reindex-worker.js +26 -25
  251. package/dist/reindex.d.ts +7 -3
  252. package/dist/reindex.js +34 -33
  253. package/dist/runtime.d.ts +3 -10
  254. package/dist/runtime.js +3 -3
  255. package/dist/rust-semantic-session-server.js +1 -1
  256. package/dist/rust-semantic-session-worker.js +1 -1
  257. package/dist/rust-semantic-worker.js +1 -1
  258. package/dist/{scip-cli-DCvnlZCu.d.ts → scip-cli-Cc6c00-a.d.ts} +2 -2
  259. package/dist/watch-server.js +5 -5
  260. package/docs/AGENT_GUIDE.md +19 -3
  261. package/docs/CLI_JSON_OUTPUT.md +86 -1
  262. package/docs/COMMAND_REFERENCE.md +5 -3
  263. package/docs/SECURITY_MODEL.md +129 -0
  264. package/docs/TELEMETRY_RETENTION.md +5 -0
  265. package/docs/schemas/cli-output-page.schema.json +104 -0
  266. package/package.json +8 -7
  267. package/skills/_shared/SKILL.md +4 -2
  268. package/skills/scip-audit/SKILL.md +3 -2
  269. package/skills/scip-explore/SKILL.md +1 -1
  270. package/skills/scip-improve/SKILL.md +1 -1
  271. package/skills/scip-plan/SKILL.md +1 -1
  272. package/skills/scip-verify/SKILL.md +7 -2
  273. package/dist/chunk-24QNP7MN.js +0 -2
  274. package/dist/chunk-2ZOCHAL2.js +0 -8
  275. package/dist/chunk-35SQLYCQ.js +0 -2
  276. package/dist/chunk-4CGVLUDP.js +0 -18
  277. package/dist/chunk-4RI4BJGT.js +0 -8
  278. package/dist/chunk-52HQTTPB.js +0 -2
  279. package/dist/chunk-A63U2W3P.js +0 -3
  280. package/dist/chunk-ADFSIJP2.js +0 -16
  281. package/dist/chunk-AOLE4DYM.js +0 -6
  282. package/dist/chunk-B5MHCHP3.js +0 -107
  283. package/dist/chunk-DGAGY7RJ.js +0 -60
  284. package/dist/chunk-DGMCFMPG.js +0 -11
  285. package/dist/chunk-GA64UPMI.js +0 -6
  286. package/dist/chunk-HEBAY673.js +0 -2
  287. package/dist/chunk-HELS7KFF.js +0 -2
  288. package/dist/chunk-IPDCSB6N.js +0 -6
  289. package/dist/chunk-JJJCO4QC.js +0 -945
  290. package/dist/chunk-KP4KBDVF.js +0 -3
  291. package/dist/chunk-LRTP3DKL.js +0 -3
  292. package/dist/chunk-P6HBYNBE.js +0 -5
  293. package/dist/chunk-QHKUY4FW.js +0 -2
  294. package/dist/chunk-QHRL4LKM.js +0 -2
  295. package/dist/chunk-UXP636P5.js +0 -144
  296. package/dist/chunk-VEVBIAOJ.js +0 -16
  297. package/dist/chunk-VKRQDBW5.js +0 -9
  298. package/dist/chunk-VOQFGC2W.js +0 -67
  299. package/dist/chunk-WMXRRBII.js +0 -8
  300. package/dist/chunk-X3NLZHPA.js +0 -20
  301. package/dist/chunk-Z5QQPJ3U.js +0 -30
  302. package/dist/chunk-ZLJLE6LK.js +0 -2
  303. package/dist/command-descriptors-SJDZ7QGR.js +0 -617
  304. package/dist/direct-navigation-HTKOZEOM.js +0 -3
@@ -1,4 +1,4 @@
1
- import{c as S}from"./chunk-47X75ZKH.js";import{c as m}from"./chunk-XVJ3V7LM.js";import{b as h}from"./chunk-WMXRRBII.js";import{j as y}from"./chunk-Z5QQPJ3U.js";import{p}from"./chunk-7LABSJSR.js";import{a as g}from"./chunk-64MNV6AB.js";import f from"path";function W(e,t){let{scope:i,minDeviation:r=5,limit:n=50}=t??{},a=t?.semantic!==!1,u=t?.includePatternDeviations===!0,o=new m(e).fileDependencyGraph(i),l=S(e,{scope:i}),c=x([...D(e,o,{scope:i,semantic:a}),...R(l.forbiddenEdges),...u?E(o,r):[]]);return t?.includeArchitecture===!0&&(c.architecture=l),n<=0||c.results.length<=n?c:{...c,results:c.results.slice(0,n),totalResults:c.results.length}}function D(e,t,i){let r=_(e,i.scope),n=[],a=new Set;for(let[s,o]of t){if(d(s))continue;let l=r.get(s)??new Set;for(let c of o)d(c)||l.has(c)||v(e,s,c,i)||(n.push({file:s,dep:c}),a.add(s))}a.size>0&&w(e,r,{paths:[...a]});let u=[];for(let{file:s,dep:o}of n)(r.get(s)??new Set).has(o)||u.push({file:s,kind:"unused-import",description:`Depends on ${o} but references none of its symbols`,dep:o,actionTier:"direct",evidenceReasons:[`dependency edge exists from ${s} to ${o}`,"no semantic, source, type-only, side-effect, or Vue-template usage survived the conservative skip gates"],recommendation:"Remove the unused import or dependency edge after running the project checks."});return u}function v(e,t,i,r){return C(e,t,i)||M(e,t,i)||O(i)||P(e,t,i)||N(i)?!0:r.semantic&&A(e,t,i)}function R(e){return e.flatMap(t=>{let i=t.examples[0];return i?[{file:i.fromFile,kind:"architecture-violation",description:`${t.from} depends on forbidden boundary ${t.to} through ${t.fileEdgeCount} file edge(s)`,dep:i.toFile,detail:`${t.from} may not depend on ${t.to}`,actionTier:"direct",policyBasis:"explicit",architecture:{fromBoundary:t.from,toBoundary:t.to,fileEdgeCount:t.fileEdgeCount,importerCount:t.importerCount,importedFileCount:t.importedFileCount,examples:t.examples},evidenceReasons:[`configured dependency row for ${t.from} does not allow ${t.to}`,`${t.fileEdgeCount} file edge(s) connect ${t.importerCount} importer(s) to ${t.importedFileCount} imported file(s)`,...t.examples.map(r=>`${r.fromFile} imports ${r.toFile}`)],recommendation:"Move the dependency behind an allowed boundary, reverse the dependency through an owned interface, or deliberately update the project architecture rule."}]:[]})}function E(e,t){let i=[];for(let[r,n]of k(e)){let a=n.filter(s=>!d(s));if(a.length<t)continue;let u=I(e,a);for(let s of a)for(let o of e.get(s)??[])d(o)||(u.get(o)??0)===1&&f.dirname(o)!==r&&f.dirname(o)!==f.dirname(r)&&i.push({file:s,kind:"pattern-deviation",description:`Only file in ${r}/ that depends on ${o}`,dep:o,actionTier:"signal",evidenceReasons:[`${a.length} sibling file(s) in ${r}/ were compared`,`${s} is the only non-skipped sibling depending on ${o}`],recommendation:"Review sibling ownership before changing this import; unique dependency shape can be intentional specialization."})}return i}function x(e){let t=e.filter(i=>i.kind==="architecture-violation").length;return{results:e,unusedImports:e.filter(i=>i.kind==="unused-import").length,architectureViolations:t,layerViolations:t,patternDeviations:e.filter(i=>i.kind==="pattern-deviation").length}}function k(e){let t=new Map;for(let i of e.keys()){let r=f.dirname(i),n=t.get(r);n||(n=[],t.set(r,n)),n.push(i)}return t}function I(e,t){let i=new Map;for(let r of t)for(let n of e.get(r)??[])d(n)||i.set(n,(i.get(n)??0)+1);return i}function _(e,t){let i=new Map;return $(e,i,t),i}function $(e,t,i){for(let r of F(e,i))b(e,t,r.from_file,r.to_file)}function F(e,t){let i=t?"AND d1.relative_path LIKE ?":"",r=t?[`%${t}%`]:[];return e.all(`SELECT DISTINCT d1.relative_path AS from_file, d2.relative_path AS to_file
1
+ import{c as S}from"./chunk-7VCOXZH3.js";import{c as m}from"./chunk-2SNGN6U4.js";import{b as h}from"./chunk-LP3ARJKF.js";import{j as y}from"./chunk-E2LAW7SL.js";import{p}from"./chunk-MZZBAITE.js";import{a as g}from"./chunk-64MNV6AB.js";import f from"path";function W(e,t){let{scope:i,minDeviation:r=5,limit:n=50}=t??{},a=t?.semantic!==!1,u=t?.includePatternDeviations===!0,o=new m(e).fileDependencyGraph(i),l=S(e,{scope:i}),c=x([...D(e,o,{scope:i,semantic:a}),...R(l.forbiddenEdges),...u?E(o,r):[]]);return t?.includeArchitecture===!0&&(c.architecture=l),n<=0||c.results.length<=n?c:{...c,results:c.results.slice(0,n),totalResults:c.results.length}}function D(e,t,i){let r=_(e,i.scope),n=[],a=new Set;for(let[s,o]of t){if(d(s))continue;let l=r.get(s)??new Set;for(let c of o)d(c)||l.has(c)||v(e,s,c,i)||(n.push({file:s,dep:c}),a.add(s))}a.size>0&&w(e,r,{paths:[...a]});let u=[];for(let{file:s,dep:o}of n)(r.get(s)??new Set).has(o)||u.push({file:s,kind:"unused-import",description:`Depends on ${o} but references none of its symbols`,dep:o,actionTier:"direct",evidenceReasons:[`dependency edge exists from ${s} to ${o}`,"no semantic, source, type-only, side-effect, or Vue-template usage survived the conservative skip gates"],recommendation:"Remove the unused import or dependency edge after running the project checks."});return u}function v(e,t,i,r){return C(e,t,i)||M(e,t,i)||O(i)||P(e,t,i)||N(i)?!0:r.semantic&&A(e,t,i)}function R(e){return e.flatMap(t=>{let i=t.examples[0];return i?[{file:i.fromFile,kind:"architecture-violation",description:`${t.from} depends on forbidden boundary ${t.to} through ${t.fileEdgeCount} file edge(s)`,dep:i.toFile,detail:`${t.from} may not depend on ${t.to}`,actionTier:"direct",policyBasis:"explicit",architecture:{fromBoundary:t.from,toBoundary:t.to,fileEdgeCount:t.fileEdgeCount,importerCount:t.importerCount,importedFileCount:t.importedFileCount,examples:t.examples},evidenceReasons:[`configured dependency row for ${t.from} does not allow ${t.to}`,`${t.fileEdgeCount} file edge(s) connect ${t.importerCount} importer(s) to ${t.importedFileCount} imported file(s)`,...t.examples.map(r=>`${r.fromFile} imports ${r.toFile}`)],recommendation:"Move the dependency behind an allowed boundary, reverse the dependency through an owned interface, or deliberately update the project architecture rule."}]:[]})}function E(e,t){let i=[];for(let[r,n]of k(e)){let a=n.filter(s=>!d(s));if(a.length<t)continue;let u=I(e,a);for(let s of a)for(let o of e.get(s)??[])d(o)||(u.get(o)??0)===1&&f.dirname(o)!==r&&f.dirname(o)!==f.dirname(r)&&i.push({file:s,kind:"pattern-deviation",description:`Only file in ${r}/ that depends on ${o}`,dep:o,actionTier:"signal",evidenceReasons:[`${a.length} sibling file(s) in ${r}/ were compared`,`${s} is the only non-skipped sibling depending on ${o}`],recommendation:"Review sibling ownership before changing this import; unique dependency shape can be intentional specialization."})}return i}function x(e){let t=e.filter(i=>i.kind==="architecture-violation").length;return{results:e,unusedImports:e.filter(i=>i.kind==="unused-import").length,architectureViolations:t,layerViolations:t,patternDeviations:e.filter(i=>i.kind==="pattern-deviation").length}}function k(e){let t=new Map;for(let i of e.keys()){let r=f.dirname(i),n=t.get(r);n||(n=[],t.set(r,n)),n.push(i)}return t}function I(e,t){let i=new Map;for(let r of t)for(let n of e.get(r)??[])d(n)||i.set(n,(i.get(n)??0)+1);return i}function _(e,t){let i=new Map;return $(e,i,t),i}function $(e,t,i){for(let r of F(e,i))b(e,t,r.from_file,r.to_file)}function F(e,t){let i=t?"AND d1.relative_path LIKE ?":"",r=t?[`%${t}%`]:[];return e.all(`SELECT DISTINCT d1.relative_path AS from_file, d2.relative_path AS to_file
2
2
  FROM mentions m
3
3
  JOIN chunks c ON m.chunk_id = c.id
4
4
  JOIN documents d1 ON c.document_id = d1.id
@@ -15,4 +15,4 @@ import{c as S}from"./chunk-47X75ZKH.js";import{c as m}from"./chunk-XVJ3V7LM.js";
15
15
  AND m.role != 1
16
16
  ${e.pathExclusionsFor("d1","d2")}
17
17
  ${i}`,...r)}function w(e,t,i={}){new m(e).scanSourceReferences({paths:i.paths??g(e,{includeIgnored:!1}),includeRustAttributeNames:!0,identifierResolution:"permissive"},n=>{n.target.relativePath!==n.sourceFile&&(e.isIgnored(n.target.relativePath)||b(e,t,n.sourceFile,n.target.relativePath))})}function b(e,t,i,r){if(e.isIgnored(i)||e.isIgnored(r))return;let n=t.get(i);n||(n=new Set,t.set(i,n)),n.add(r)}function O(e){return e.includes("types")||e.endsWith(".d.ts")}function A(e,t,i){let r=y(e,t).filter(n=>n.sourcePath===i);return r.length>0&&r.some(n=>n.isUsed)}function C(e,t,i){let r=p(e,t).filter(n=>n.sourcePath===i);return r.length>0&&r.some(n=>n.used)}function M(e,t,i){let r=p(e,t).filter(n=>n.sourcePath===i);return r.length>0&&r.every(n=>n.isTypeOnly===!0)}function N(e){return e.endsWith(".vue")}function P(e,t,i){let r=p(e,t).filter(n=>n.sourcePath===i);return r.length===0?!1:r.every(n=>n.kind==="side-effect"||n.kind==="namespace"&&n.usedMembers.length===0&&!n.used)}function d(e){let t=h(e);return!!(t==="entry"||t==="barrel"||t==="test"||t==="worker"||T(f.basename(e)))}function T(e){return!!(e==="index.ts"||e==="index.js"||e==="cli.ts"||e==="main.ts"||e==="main.rs"||e.includes("worker.")||e.includes("postinstall.")||e==="health.ts"||e==="health.js")}export{W as a};
18
- //# sourceMappingURL=chunk-U5CNPPTZ.js.map
18
+ //# sourceMappingURL=chunk-HZYDQPNY.js.map
@@ -0,0 +1,66 @@
1
+ import{a as b,g as v}from"./chunk-46XGSFNI.js";import y from"ignore";import{existsSync as m,readdirSync as V}from"fs";import{dirname as g,isAbsolute as D,join as u,relative as x,resolve as P}from"path";function k(t){let e=y();return A(t,e)||e.add(G),{isIgnored:s=>f(e,t,s),filter:s=>s.filter(n=>!f(e,t,n))}}function A(t,e){let r=new Set,s=(a,o)=>{if(!(r.has(a)||!m(a)))try{let c=v(a,{maxBytes:b,inputKind:"gitignore file"});e.add(o?F(c,o):c),r.add(a)}catch{}},n=g(t),i=0;for(;n!==g(n)&&i<5&&(s(u(n,".gitignore"),""),!m(u(n,".git")));)n=g(n),i++;return C(t,"",e,s),r.size>0}function C(t,e,r,s){let n=e?u(t,e):t;s(u(n,".gitignore"),e);let i;try{i=V(n,{withFileTypes:!0})}catch{return}for(let a of i){if(!a.isDirectory()||a.name===".git")continue;let o=e?`${e}/${a.name}`:a.name;f(r,t,`${o}/`)||C(t,o,r,s)}}function F(t,e){let r=e.replaceAll("\\","/").replace(/\/+$/,"");return t.split(/\r?\n/).map(s=>_(s,r)).join(`
2
+ `)}function _(t,e){let r=t.trimStart();if(!r||r.startsWith("#"))return t;let s=t.slice(0,t.length-r.length),n=r.startsWith("!"),i=n?r.slice(1):r;if(!i||i.startsWith("#"))return t;let a=i.startsWith("/"),o=a?i.slice(1):i,d=(o.endsWith("/")?o.slice(0,-1):o).includes("/")||a?`${e}/${o}`:`${e}/**/${o}`;return`${s}${n?"!":""}${d}`}var G=`
3
+ # Dependencies
4
+ node_modules/
5
+ vendor/
6
+ .bundle/
7
+
8
+ # Build output
9
+ dist/
10
+ build/
11
+ out/
12
+ target/
13
+ bin/
14
+ obj/
15
+
16
+ # Python
17
+ __pycache__/
18
+ *.pyc
19
+ *.pyo
20
+ .venv/
21
+ venv/
22
+ .env/
23
+ env/
24
+ *.egg-info/
25
+
26
+ # Rust
27
+ target/
28
+
29
+ # Java / Kotlin / Scala
30
+ *.class
31
+ .gradle/
32
+ .mvn/
33
+
34
+ # C# / .NET
35
+ bin/
36
+ obj/
37
+ packages/
38
+
39
+ # Go
40
+ vendor/
41
+
42
+ # Dart
43
+ .dart_tool/
44
+ build/
45
+
46
+ # PHP
47
+ vendor/
48
+
49
+ # IDE / OS
50
+ .idea/
51
+ .vscode/
52
+ *.swp
53
+ *.swo
54
+ .DS_Store
55
+ Thumbs.db
56
+
57
+ # Type definitions (often noise in queries)
58
+ *.d.ts
59
+ `;function f(t,e,r){let s=K(e,r);if(!s)return!1;try{return t.ignores(s)}catch{return!1}}function K(t,e){if(!e||e===".")return null;if(!D(e)&&!e.startsWith(".."))return e.replaceAll("\\","/");let r=D(e)?e:P(t,e),s=x(t,r).replaceAll("\\","/");return!s||s==="."||s.startsWith("..")?null:s}var E=[];function p(t){t.groups.length>0&&E.push(t)}function S(){let t=new WeakMap;return{cache:t,ensure(e){let r=t.get(e);return r||(r=new Map,t.set(e,r)),r}}}function B(t,e){let{cache:r,ensure:s}=S(),n={get(i,a,o){let c=s(i);if(c.has(a))return c.get(a);let l=o();return c.set(a,l),l},invalidate(i,a){r.get(i)?.delete(a)},invalidateAll(i){r.delete(i)},size(i){return r.get(i)?.size??0}};return p({name:t,groups:e.clearGroups,clearAll:i=>n.invalidateAll(i),clearFile:(i,a)=>n.invalidate(i,a)}),n}function z(t,e){let r=new WeakMap,s={get(n,i){let a=r.get(n);if(a)return a.value;let o=i();return r.set(n,{value:o}),o},invalidate(n){r.delete(n)},has(n){return r.has(n)}};return p({name:t,groups:e.clearGroups,clearAll:n=>s.invalidate(n)}),s}var I={clearGroups:["whole-project","source-file"]};function N(t){return w(t,I)}function w(t,e){let{cache:r,ensure:s}=S(),n={get(i,a,o,c){let l=s(i),d=l.get(a);if(d&&d.source===o)return d.value;let h=c();return l.set(a,{source:o,value:h}),h},invalidate(i,a){r.get(i)?.delete(a)},invalidateAll(i){r.delete(i)}};return p({name:t,groups:e.clearGroups,clearAll:i=>n.invalidateAll(i),clearFile:(i,a)=>n.invalidate(i,a)}),n}function H(t,e={}){let r=e.scope?"AND relative_path LIKE ?":"",s=e.like?"AND relative_path LIKE ?":"",n=[...e.scope?[`%${e.scope}%`]:[],...e.like?[e.like]:[]],i=t.all(`SELECT relative_path
60
+ FROM documents
61
+ WHERE 1 = 1
62
+ ${t.pathExclusionsFor("documents")}
63
+ ${r}
64
+ ${s}
65
+ ORDER BY relative_path`,...n).map(o=>o.relative_path),a=e.extensions?i.filter(o=>e.extensions.some(c=>o.toLowerCase().endsWith(c.toLowerCase()))):i;return e.includeIgnored===!1?a.filter(o=>!t.isIgnored(o)):a}export{p as a,B as b,z as c,N as d,w as e,H as f,k as g};
66
+ //# sourceMappingURL=chunk-IF6FP6B2.js.map
@@ -1,4 +1,4 @@
1
- import{m as f,n as b}from"./chunk-JERWGHQT.js";import{a as d}from"./chunk-2OXVAGGT.js";import{d as s,h as u,p as m,q as g}from"./chunk-ZTTISZ7J.js";import{H as c}from"./chunk-B5MHCHP3.js";function x(e,r,i={}){let n=d(e,r);if(!n)return{definitions:[],referencedBy:[]};let t=e.get("SELECT display_name, documentation FROM global_symbols WHERE id = ?",n.symbolId),a=g(t?.documentation??null),o=e.isIgnored(n.relativePath)?[]:[{relativePath:n.relativePath,startLine:n.startLine,endLine:n.endLine,signature:p(a,t?.display_name??null,n.symbol),source:y(e,n.relativePath,n.startLine,n.endLine)}],S=f(e,n,{semantic:i.semantic,semanticEvidence:b}).map(l=>({relativePath:l.file,line:l.line,enclosingSymbol:l.enclosingSymbol,enclosingShort:l.enclosingSymbol?s(l.enclosingSymbol):"(top-level)"}));return{definitions:o,referencedBy:S}}function y(e,r,i,n){let t=c(e,r);if(!t)return null;let o=t.split(`
1
+ import{m as f,n as b}from"./chunk-GLZTVKAB.js";import{a as d}from"./chunk-SMQWE25B.js";import{d as s,h as u,p as m,q as g}from"./chunk-RA3AYNWP.js";import{O as c}from"./chunk-JORHF5AL.js";function x(e,r,i={}){let n=d(e,r);if(!n)return{definitions:[],referencedBy:[]};let t=e.get("SELECT display_name, documentation FROM global_symbols WHERE id = ?",n.symbolId),a=g(t?.documentation??null),o=e.isIgnored(n.relativePath)?[]:[{relativePath:n.relativePath,startLine:n.startLine,endLine:n.endLine,signature:p(a,t?.display_name??null,n.symbol),source:y(e,n.relativePath,n.startLine,n.endLine)}],S=f(e,n,{semantic:i.semantic,semanticEvidence:b}).map(l=>({relativePath:l.file,line:l.line,enclosingSymbol:l.enclosingSymbol,enclosingShort:l.enclosingSymbol?s(l.enclosingSymbol):"(top-level)"}));return{definitions:o,referencedBy:S}}function y(e,r,i,n){let t=c(e,r);if(!t)return null;let o=t.split(`
2
2
  `).slice(i,n+1).join(`
3
3
  `).trimEnd();return o.length>0?o:null}function p(e,r,i){let n=m(e);if(n&&!h(n))return n;let t=(r??"").trim();return t?u(i)&&!t.endsWith("()")?`${t}()`:t:s(i)}function h(e){return e.startsWith("undefined")||e.includes("|")||e.includes("```")}export{x as a};
4
- //# sourceMappingURL=chunk-CSTYYXKC.js.map
4
+ //# sourceMappingURL=chunk-JAY7YWS3.js.map
@@ -1,3 +1,3 @@
1
- import{m as h,n as R}from"./chunk-JERWGHQT.js";import{a as g}from"./chunk-2OXVAGGT.js";import{h as d}from"./chunk-ZTTISZ7J.js";import{H as p}from"./chunk-B5MHCHP3.js";import{a as m}from"./chunk-64MNV6AB.js";function D(t,r,n={}){let e=g(t,r);if(!e)return[];let l=!d(e.symbol)&&!t.isIgnored(e.relativePath)?[{relativePath:e.relativePath,line:e.startLine}]:[],c=h(t,e,{semantic:n.semantic,semanticEvidence:R}).map(s=>({relativePath:s.file,line:s.line})),o=b(t,e),f=new Set,a=[];for(let s of[...l,...c,...o]){let u=`${s.relativePath}:${s.line}`;f.has(u)||(f.add(u),a.push(s))}return a}function b(t,r){if(!r.relativePath.endsWith(".rb"))return[];let n=S(r.symbol);if(n.length===0)return[];let e=[];for(let i of m(t,{extensions:[".rb"],includeIgnored:!1})){let l=p(t,i);if(!l)continue;let c=l.split(`
1
+ import{m as h,n as R}from"./chunk-GLZTVKAB.js";import{a as g}from"./chunk-SMQWE25B.js";import{h as d}from"./chunk-RA3AYNWP.js";import{O as p}from"./chunk-JORHF5AL.js";import{a as m}from"./chunk-64MNV6AB.js";function D(t,r,n={}){let e=g(t,r);if(!e)return[];let l=!d(e.symbol)&&!t.isIgnored(e.relativePath)?[{relativePath:e.relativePath,line:e.startLine}]:[],c=h(t,e,{semantic:n.semantic,semanticEvidence:R}).map(s=>({relativePath:s.file,line:s.line})),o=b(t,e),f=new Set,a=[];for(let s of[...l,...c,...o]){let u=`${s.relativePath}:${s.line}`;f.has(u)||(f.add(u),a.push(s))}return a}function b(t,r){if(!r.relativePath.endsWith(".rb"))return[];let n=S(r.symbol);if(n.length===0)return[];let e=[];for(let i of m(t,{extensions:[".rb"],includeIgnored:!1})){let l=p(t,i);if(!l)continue;let c=l.split(`
2
2
  `);for(let o=0;o<c.length;o++){let f=c[o]??"";n.some(a=>new RegExp(`@${a}\\b|\\b${a}:`).test(f))&&e.push({relativePath:i,line:o})}}return e}function S(t){let n=(t.split(":").pop()??t).replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/[^A-Za-z0-9_]+/g,"_").toLowerCase().replace(/^_+|_+$/g,""),e=n.split("_").filter(Boolean),i=new Set;return n&&i.add(n),e.length>=1&&i.add(e[e.length-1]),e.length>=2&&i.add(e.slice(-2).join("_")),[...i]}export{D as a};
3
- //# sourceMappingURL=chunk-6XFC7PQ5.js.map
3
+ //# sourceMappingURL=chunk-JHF3E4YM.js.map
@@ -0,0 +1,108 @@
1
+ import{a as y,e as D,f as $,g as m,h as H,j as X,u as G}from"./chunk-VVY2G5ET.js";function Ne(e,t){let n=e.split("/").at(-1)??e;if(q.has(n)||n===".scipquery.json"||/^tsconfig(?:\..+)?\.json$/.test(n))return"config";if(/\.d\.(?:ts|mts|cts)$/.test(e.toLowerCase()))return"ambient";let i=e.includes(".")?`.${e.split(".").at(-1).toLowerCase()}`:"";return t.some(r=>(Z[r]??[]).includes(i))?"source":"other"}function Q(e,t,n){let i=e.split("/").at(-1)??e;if(n?.includes(e)||n?.includes(i)||q.has(i))return!0;let r=e.includes(".")?`.${e.split(".").at(-1).toLowerCase()}`:"";return(Z[t]??[]).includes(r)}function Lt(e){if(typeof e!="object"||e===null)return null;let t=e;return typeof t.version!="number"||!z(t.languages)||typeof t.pnpmWorkspaces!="boolean"||typeof t.typescriptProjectMode!="string"||!z(t.typescriptProjects)||t.clojureConfigPath!==void 0&&typeof t.clojureConfigPath!="string"||!Array.isArray(t.files)||!t.files.every(N)?null:t}function kt(e,t){let n=new Map((e?.files??[]).map(s=>[s.path,s])),i=new Map(t.files.map(s=>[s.path,s])),r=new Set([...n.keys(),...i.keys()]),a=[];for(let s of[...r].sort()){let c=n.get(s),d=i.get(s),u=Ne(s,t.languages);!c&&d?a.push({kind:"added",path:s,inputKind:u,after:d}):c&&!d?a.push({kind:"deleted",path:s,inputKind:u,before:c}):c&&d&&(c.hash!==d.hash||c.size!==d.size)&&a.push({kind:"modified",path:s,inputKind:u,before:c,after:d})}let o=new Set;return e||o.add("prior-snapshot-unavailable"),e&&e.version!==t.version&&o.add("snapshot-version-changed"),(Y(e?.files??[])||Y(t.files))&&o.add("duplicate-input-path"),[...e?.files??[],...t.files].some(xe)&&o.add("unreadable-input"),{version:1,changes:a,projectIdentityChanged:e?!Le(e,t):!0,uncertainty:[...o].sort()}}function z(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function Y(e){return new Set(e.map(t=>t.path)).size!==e.length}function N(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.path=="string"&&typeof t.size=="number"&&Number.isFinite(t.size)&&typeof t.hash=="string"}function xe(e){return e.hash==="unreadable"||e.size<0}function Le(e,t){return J(e.languages,t.languages)&&e.pnpmWorkspaces===t.pnpmWorkspaces&&e.typescriptProjectMode===t.typescriptProjectMode&&J(e.typescriptProjects,t.typescriptProjects)&&e.clojureConfigPath===t.clojureConfigPath}function J(e,t){if(e.length!==t.length)return!1;let n=[...e].sort(),i=[...t].sort();return n.every((r,a)=>r===i[a])}var q=new Set(["package.json","package-lock.json","pnpm-lock.yaml","yarn.lock","bun.lockb","tsconfig.json","tsconfig.base.json","pyproject.toml","setup.py","setup.cfg","Cargo.toml","Cargo.lock","go.mod","go.sum","pom.xml","build.gradle","build.gradle.kts","build.sbt","compile_commands.json","CMakeLists.txt","Makefile","Gemfile","Gemfile.lock","composer.json","composer.lock","pubspec.yaml","pubspec.lock","deps.edn","project.clj","bb.edn","shadow-cljs.edn"]),Z={typescript:[".ts",".tsx",".mts",".cts"],javascript:[".js",".jsx",".mjs",".cjs"],java:[".java"],scala:[".scala"],kotlin:[".kt",".kts"],rust:[".rs"],python:[".py",".pyi"],ruby:[".rb"],go:[".go"],cpp:[".cc",".cpp",".cxx",".hpp",".hh",".hxx"],c:[".c",".h"],csharp:[".cs"],vb:[".vb"],dart:[".dart"],php:[".php"],clojure:[".clj",".cljs",".cljc"]};var x=2,P=3;var L=new Set(X);function ee(e){let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch(o){return{kind:"malformed",reason:`invalid JSON: ${Ke(o)}`}}if(!m(t))return{kind:"malformed",reason:"metadata must be a JSON object"};let n=t.version;if(!Number.isInteger(n))return{kind:"malformed",reason:"version must be an integer"};if(n!==x&&n!==P)return{kind:"unsupported",version:n,direction:n<x?"older":"future"};let i=Ie(t,n);if(i)return{kind:"malformed",reason:i};let r=t,a={metadata:r,capabilities:ke(r)};return n===x?{kind:"legacy",...a,metadata:r}:{kind:"supported",...a,metadata:r}}function Ut(e){return e.kind==="legacy"||e.kind==="supported"?e.metadata:null}function Kt(e){if(e.kind!=="legacy"&&e.kind!=="supported"||!e.capabilities.stableGenerationIdentity)return null;let t=e.metadata;return JSON.stringify({version:t.version,status:t.status,updatedAt:t.updatedAt,fingerprint:t.fingerprint,indexedLanguages:t.indexedLanguages,scipCompanion:t.scipCompanion})}function ke(e){let t=e.fingerprint!==void 0,n=m(e.fingerprint),i=e.indexedLanguages!==void 0,r=e.status==="complete",a=e.version===P?e:null;return{usableForQuery:i,usableForEvidenceCache:t,publishableGeneration:r&&n&&i,stableGenerationIdentity:r&&t&&typeof e.updatedAt=="string",languageShardReuse:!!a?.languageFingerprints,typescriptProjectShardReuse:!!a?.typescriptProjectShards}}function Ie(e,t){if(e.status!=="complete"&&e.status!=="partial")return"status must be complete or partial";if(e.updatedAt!==void 0&&!H(e.updatedAt))return"updatedAt must be a valid timestamp";for(let n of["requestedLanguages","indexedLanguages"])if(e[n]!==void 0&&!Ae(e[n]))return`${n} must contain unique supported languages`;return e.skipped!==void 0&&!Me(e.skipped)?"skipped must contain supported language/reason pairs":e.scipCompanion!==void 0&&e.scipCompanion!=="current"&&e.scipCompanion!=="deferred"?"scipCompanion must be current or deferred":t===P&&e.languageFingerprints!==void 0&&!Ve(e.languageFingerprints)?"languageFingerprints must map supported languages to fingerprint objects":t===P&&e.typescriptProjectShards!==void 0&&!Ue(e.typescriptProjectShards)?"typescriptProjectShards must map project names to file fingerprints":null}function Ae(e){return!Array.isArray(e)||!e.every(t=>typeof t=="string"&&L.has(t))?!1:new Set(e).size===e.length}function Me(e){return Array.isArray(e)&&e.every(t=>m(t)&&typeof t.language=="string"&&L.has(t.language)&&typeof t.reason=="string")}function Ve(e){return m(e)&&Object.entries(e).every(([t,n])=>L.has(t)&&m(n))}function Ue(e){return m(e)&&Object.values(e).every(t=>m(t)&&Array.isArray(t.files)&&t.files.every(N))}function Ke(e){return e instanceof Error?e.message:String(e)}var te=[];function R(e){e.groups.length>0&&te.push(e)}function Bt(e,t){let n=new Set(t.groups);for(let i of te)i.groups.some(r=>n.has(r))&&(t.file!==void 0&&i.clearFile?i.clearFile(e,t.file):i.clearAll(e))}function ne(){let e=new WeakMap;return{cache:e,ensure(t){let n=e.get(t);return n||(n=new Map,e.set(t,n)),n}}}function E(e,t){let{cache:n,ensure:i}=ne(),r={get(a,o,s){let c=i(a);if(c.has(o))return c.get(o);let d=s();return c.set(o,d),d},invalidate(a,o){n.get(a)?.delete(o)},invalidateAll(a){n.delete(a)},size(a){return n.get(a)?.size??0}};return R({name:e,groups:t.clearGroups,clearAll:a=>r.invalidateAll(a),clearFile:(a,o)=>r.invalidate(a,o)}),r}function Xt(e,t){let n=new WeakMap,i={get(r,a){let o=n.get(r);if(o)return o.value;let s=a();return n.set(r,{value:s}),s},invalidate(r){n.delete(r)},has(r){return n.has(r)}};return R({name:e,groups:t.clearGroups,clearAll:r=>i.invalidate(r)}),i}var We={clearGroups:["whole-project","source-file"]};function Gt(e){return Be(e,We)}function Be(e,t){let{cache:n,ensure:i}=ne(),r={get(a,o,s,c){let d=i(a),u=d.get(o);if(u&&u.source===s)return u.value;let B=c();return d.set(o,{source:s,value:B}),B},invalidate(a,o){n.get(a)?.delete(o)},invalidateAll(a){n.delete(a)}};return R({name:e,groups:t.clearGroups,clearAll:a=>r.invalidateAll(a),clearFile:(a,o)=>r.invalidate(a,o)}),r}import{createHash as $e}from"crypto";import{existsSync as Qt,mkdirSync as He}from"fs";import{dirname as re,join as Xe}from"path";import ie from"better-sqlite3";var Ge="evidence.db";var ze=["source-facts","definition-exclusions","doc-path-tokens","react-component-behavior-profiles"],k=new Set(ze);var nn=512*1024*1024;var T=new WeakMap,Ye=E("evidence-content-hash",{clearGroups:["whole-project","source-file"]}),Je=E("evidence-project-fingerprint",{clearGroups:["whole-project"]}),p="evidence-v1",v="version NOT LIKE 'evidence-%'";function ae(e){return $e("sha256").update(e).digest("hex")}function rn(e,t,n){return Ye.get(e,t,()=>ae(n))}function oe(e){return Je.get(e,"current",()=>{try{if(!e.generation.metadataRaw)return null;let t=ee(e.generation.metadataRaw);if(t.kind!=="legacy"&&t.kind!=="supported"||!t.capabilities.usableForEvidenceCache)return null;let n=t.metadata,i=[...n.indexedLanguages??[]].sort();return ae(JSON.stringify({fingerprint:n.fingerprint,indexedLanguages:i,status:n.status}))}catch(t){return b("project fingerprint unavailable",t),null}})}function b(e,t){process.env.SCIP_QUERY_DEBUG&&console.error(`evidence-cache: ${e}: ${t instanceof Error?t.message:String(t)}`)}function g(e){if(T.has(e))return T.get(e)??null;let t=null;try{let n=new ie(Xe(re(e.config.dbPath),Ge));n.pragma("journal_mode = WAL"),n.pragma("busy_timeout = 5000"),n.pragma("synchronous = NORMAL"),n.exec(`
2
+ CREATE TABLE IF NOT EXISTS file_evidence (
3
+ kind TEXT NOT NULL,
4
+ relative_path TEXT NOT NULL,
5
+ content_hash TEXT NOT NULL,
6
+ version TEXT NOT NULL,
7
+ payload TEXT NOT NULL,
8
+ PRIMARY KEY (kind, relative_path)
9
+ );
10
+ CREATE TABLE IF NOT EXISTS project_evidence (
11
+ kind TEXT NOT NULL,
12
+ cache_key TEXT NOT NULL,
13
+ project_fingerprint TEXT NOT NULL,
14
+ version TEXT NOT NULL,
15
+ payload TEXT NOT NULL,
16
+ PRIMARY KEY (kind, cache_key)
17
+ );
18
+ CREATE TABLE IF NOT EXISTS semantic_callees (
19
+ relative_path TEXT NOT NULL,
20
+ symbol TEXT NOT NULL,
21
+ content_hash TEXT NOT NULL,
22
+ deps_digest TEXT NOT NULL,
23
+ version TEXT NOT NULL,
24
+ payload TEXT NOT NULL,
25
+ PRIMARY KEY (relative_path, symbol)
26
+ );
27
+ CREATE TABLE IF NOT EXISTS semantic_references (
28
+ relative_path TEXT NOT NULL,
29
+ symbol TEXT NOT NULL,
30
+ project_fingerprint TEXT NOT NULL,
31
+ version TEXT NOT NULL,
32
+ payload TEXT NOT NULL,
33
+ PRIMARY KEY (relative_path, symbol)
34
+ );
35
+ CREATE TABLE IF NOT EXISTS finding_outcome_ledger (
36
+ check_name TEXT NOT NULL,
37
+ finding_id TEXT NOT NULL,
38
+ first_seen INTEGER NOT NULL,
39
+ last_seen INTEGER NOT NULL,
40
+ times_shown INTEGER NOT NULL,
41
+ outcome TEXT NOT NULL,
42
+ PRIMARY KEY (check_name, finding_id)
43
+ );
44
+ CREATE TABLE IF NOT EXISTS finding_outcome_observations (
45
+ observation_id TEXT PRIMARY KEY,
46
+ fingerprint TEXT NOT NULL,
47
+ observed_at INTEGER NOT NULL
48
+ );
49
+ `),t={evidence:n,shared:Qe(e.config.sharedEvidenceDbPath),readFileEvidence:n.prepare("SELECT payload FROM file_evidence WHERE kind = ? AND relative_path = ? AND content_hash = ? AND version = ?"),readLegacyFileEvidence:n.prepare(`SELECT payload FROM file_evidence
50
+ WHERE kind = ? AND relative_path = ? AND content_hash = ? AND ${v}
51
+ ORDER BY version DESC
52
+ LIMIT 1`),writeFileEvidence:n.prepare("INSERT OR REPLACE INTO file_evidence (kind, relative_path, content_hash, version, payload) VALUES (?, ?, ?, ?, ?)"),readProjectEvidence:n.prepare("SELECT payload FROM project_evidence WHERE kind = ? AND cache_key = ? AND project_fingerprint = ? AND version = ?"),readLegacyProjectEvidence:n.prepare(`SELECT payload FROM project_evidence
53
+ WHERE kind = ? AND cache_key = ? AND project_fingerprint = ? AND ${v}
54
+ ORDER BY version DESC
55
+ LIMIT 1`),writeProjectEvidence:n.prepare("INSERT OR REPLACE INTO project_evidence (kind, cache_key, project_fingerprint, version, payload) VALUES (?, ?, ?, ?, ?)"),readCallees:n.prepare(`SELECT payload FROM semantic_callees
56
+ WHERE relative_path = ? AND symbol = ? AND content_hash = ? AND deps_digest = ? AND version = ?`),readLegacyCallees:n.prepare(`SELECT payload FROM semantic_callees
57
+ WHERE relative_path = ? AND symbol = ? AND content_hash = ? AND deps_digest = ? AND ${v}
58
+ ORDER BY version DESC
59
+ LIMIT 1`),readCalleesForFile:n.prepare(`SELECT symbol, payload FROM semantic_callees
60
+ WHERE relative_path = ? AND content_hash = ? AND deps_digest = ? AND version = ?`),readLegacyCalleesForFile:n.prepare(`SELECT symbol, payload FROM semantic_callees
61
+ WHERE relative_path = ? AND content_hash = ? AND deps_digest = ? AND ${v}
62
+ ORDER BY symbol, version DESC`),writeCallees:n.prepare(`INSERT OR REPLACE INTO semantic_callees
63
+ (relative_path, symbol, content_hash, deps_digest, version, payload) VALUES (?, ?, ?, ?, ?, ?)`),dropStaleCallees:n.prepare("DELETE FROM semantic_callees WHERE relative_path = ? AND content_hash != ?"),readReferences:n.prepare(`SELECT payload FROM semantic_references
64
+ WHERE relative_path = ? AND symbol = ? AND project_fingerprint = ? AND version = ?`),readLegacyReferences:n.prepare(`SELECT payload FROM semantic_references
65
+ WHERE relative_path = ? AND symbol = ? AND project_fingerprint = ? AND ${v}
66
+ ORDER BY version DESC
67
+ LIMIT 1`),readReferencesForFile:n.prepare(`SELECT symbol, payload FROM semantic_references
68
+ WHERE relative_path = ? AND project_fingerprint = ? AND version = ?`),readLegacyReferencesForFile:n.prepare(`SELECT symbol, payload FROM semantic_references
69
+ WHERE relative_path = ? AND project_fingerprint = ? AND ${v}
70
+ ORDER BY symbol, version DESC`),writeReferences:n.prepare(`INSERT OR REPLACE INTO semantic_references
71
+ (relative_path, symbol, project_fingerprint, version, payload) VALUES (?, ?, ?, ?, ?)`),dropStaleReferences:n.prepare("DELETE FROM semantic_references WHERE relative_path = ? AND project_fingerprint != ?"),readFindingOutcomeLedger:n.prepare("SELECT check_name, finding_id, first_seen, last_seen, times_shown, outcome FROM finding_outcome_ledger"),claimFindingOutcomeObservation:n.prepare(`INSERT OR IGNORE INTO finding_outcome_observations
72
+ (observation_id, fingerprint, observed_at) VALUES (?, ?, ?)`),readFindingOutcomeObservation:n.prepare("SELECT fingerprint FROM finding_outcome_observations WHERE observation_id = ?"),upsertFindingOutcomeLedgerRow:n.prepare(`INSERT INTO finding_outcome_ledger
73
+ (check_name, finding_id, first_seen, last_seen, times_shown, outcome)
74
+ VALUES (?, ?, ?, ?, ?, ?)
75
+ ON CONFLICT(check_name, finding_id) DO UPDATE SET
76
+ first_seen = MIN(finding_outcome_ledger.first_seen, excluded.first_seen),
77
+ last_seen = MAX(finding_outcome_ledger.last_seen, excluded.last_seen),
78
+ times_shown = finding_outcome_ledger.times_shown + excluded.times_shown,
79
+ outcome = excluded.outcome`),updateFindingOutcomeLedgerRow:n.prepare(`UPDATE finding_outcome_ledger
80
+ SET first_seen = MIN(first_seen, ?),
81
+ last_seen = MAX(last_seen, ?),
82
+ outcome = ?
83
+ WHERE check_name = ? AND finding_id = ?`),trimFindingOutcomeLedgerCheck:n.prepare(`DELETE FROM finding_outcome_ledger
84
+ WHERE rowid IN (
85
+ SELECT rowid
86
+ FROM finding_outcome_ledger
87
+ WHERE check_name = ?
88
+ ORDER BY last_seen DESC, first_seen DESC, finding_id DESC
89
+ LIMIT -1 OFFSET ?
90
+ )`)}}catch(n){b("disabled (open failed)",n)}return T.set(e,t),t}function f(e,t,n){b(`disabled (${t})`,n),T.set(e,null)}function Qe(e){if(!e)return null;try{He(re(e),{recursive:!0});let t=new ie(e);return t.pragma("journal_mode = WAL"),t.pragma("busy_timeout = 250"),t.pragma("synchronous = NORMAL"),t.exec(`
91
+ CREATE TABLE IF NOT EXISTS file_evidence (
92
+ kind TEXT NOT NULL,
93
+ relative_path TEXT NOT NULL,
94
+ content_hash TEXT NOT NULL,
95
+ version TEXT NOT NULL,
96
+ payload TEXT NOT NULL,
97
+ last_accessed_at INTEGER NOT NULL,
98
+ PRIMARY KEY (kind, relative_path, content_hash, version)
99
+ );
100
+ `),{evidence:t,readFileEvidence:t.prepare("SELECT payload FROM file_evidence WHERE kind = ? AND relative_path = ? AND content_hash = ? AND version = ?"),writeFileEvidence:t.prepare(`INSERT INTO file_evidence (kind, relative_path, content_hash, version, payload, last_accessed_at)
101
+ VALUES (?, ?, ?, ?, ?, ?)
102
+ ON CONFLICT(kind, relative_path, content_hash, version)
103
+ DO UPDATE SET payload = excluded.payload, last_accessed_at = excluded.last_accessed_at`)}}catch(t){return b("shared cache disabled (open failed)",t),null}}function I(e,t,n){b(`shared cache disabled (${t})`,n);try{e.shared?.evidence.close()}catch{}e.shared=null}function se(e,t,n,i){let r=g(e);if(!r)return null;try{let a=r.readFileEvidence.get(t,n,i,p)??r.readLegacyFileEvidence.get(t,n,i);if(a?.payload!==void 0)return a.payload;if(!k.has(t)||!r.shared)return null;try{return r.shared.readFileEvidence.get(t,n,i,p)?.payload??null}catch(o){return I(r,"file_evidence read",o),null}}catch(a){return f(e,"file_evidence read",a),null}}function ce(e,t,n,i,r){let a=g(e);if(a)try{if(a.writeFileEvidence.run(t,n,i,p,r),k.has(t)&&a.shared)try{a.shared.writeFileEvidence.run(t,n,i,p,r,Date.now())}catch(o){I(a,"file_evidence write",o)}}catch(o){f(e,"file_evidence write",o)}}function de(e,t){if(t.length===0)return;let n=g(e);if(n)try{n.evidence.transaction(()=>{for(let r of t)n.writeFileEvidence.run(r.kind,r.relativePath,r.contentHash,p,r.payload)})();let i=t.filter(r=>k.has(r.kind));if(i.length>0&&n.shared)try{n.shared.evidence.transaction(()=>{for(let r of i)n.shared.writeFileEvidence.run(r.kind,r.relativePath,r.contentHash,p,r.payload,Date.now())})()}catch(r){I(n,"file_evidence batch write",r)}}catch(i){f(e,"file_evidence batch write",i)}}function le(e,t,n,i){let r=g(e);if(!r)return null;try{return(r.readProjectEvidence.get(t,n,i,p)??r.readLegacyProjectEvidence.get(t,n,i))?.payload??null}catch(a){return f(e,"project_evidence read",a),null}}function pe(e,t,n,i,r){let a=g(e);if(a)try{a.writeProjectEvidence.run(t,n,i,p,r)}catch(o){f(e,"project_evidence write",o)}}function an(e,t,n,i){let r=g(e);if(!r)return new Map;try{let a=r.readCalleesForFile.all(t,n,i,p),o=r.readLegacyCalleesForFile.all(t,n,i);return ue([...o,...a])}catch(a){return f(e,"semantic_callees bulk read",a),new Map}}function on(e,t,n){let i=g(e);if(!i)return new Map;try{let r=i.readReferencesForFile.all(t,n,p),a=i.readLegacyReferencesForFile.all(t,n);return ue([...a,...r])}catch(r){return f(e,"semantic_references bulk read",r),new Map}}function ue(e){let t=new Map;for(let n of e)t.set(n.symbol,n.payload);return t}function sn(e,t){if(t.length===0)return;let n=g(e);if(n)try{n.evidence.transaction(()=>{let i=new Set;for(let r of t){let a=`${r.relativePath}\0${r.contentHash}`;i.has(a)||(i.add(a),n.dropStaleCallees.run(r.relativePath,r.contentHash)),n.writeCallees.run(r.relativePath,r.symbol,r.contentHash,r.depsDigest,p,r.payload)}})()}catch(i){f(e,"semantic_callees write",i)}}function cn(e,t){if(t.length===0)return;let n=g(e);if(n)try{n.evidence.transaction(()=>{let i=new Set;for(let r of t){let a=`${r.relativePath}\0${r.projectFingerprint}`;i.has(a)||(i.add(a),n.dropStaleReferences.run(r.relativePath,r.projectFingerprint)),n.writeReferences.run(r.relativePath,r.symbol,r.projectFingerprint,p,r.payload)}})()}catch(i){f(e,"semantic_references write",i)}}function dn(e){let t=g(e);if(!t)return[];try{return qe(t)}catch(n){return f(e,"finding_outcome_ledger read",n),[]}}function qe(e){return e.readFindingOutcomeLedger.all().map(n=>({check:n.check_name,findingId:n.finding_id,firstSeen:n.first_seen,lastSeen:n.last_seen,timesShown:n.times_shown,outcome:n.outcome}))}function pn(e){return typeof e=="object"&&e!==null}function un(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")?e:null}import{appendFileSync as Ze,mkdirSync as et}from"fs";import{createHash as tt,randomUUID as nt}from"crypto";import{dirname as rt}from"path";import{performance as S}from"perf_hooks";var he="SCIP_QUERY_PROFILE",ye="SCIP_QUERY_PROFILE_OUT",Ee="SCIP_QUERY_PROFILE_COMMAND",ve="SCIP_QUERY_PROFILE_CACHE_STATE",A="SCIP_QUERY_PROFILE_RUN_ID",M="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY",V="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY_KIND",Se=[he,ye,Ee,ve,A,M,V],En=new Set(Se),ge=new Set,fe=new Map,me=!1;function h(){let e=process.env[he];return e==="1"||e==="true"}function it(){return process.env[ye]}function be(){return process.env[Ee]}function at(){return process.env[ve]}function _e(){let e=process.env[A];if(e)return e;if(!h())return;let t=nt();return process.env[A]=t,t}function Pe(){return process.env[M]}function ot(e){let t=Pe();if(t)return t;if(!h())return;let n=_e();if(!n)return;let i=e.projectFingerprint?"published-project":"run-only",r=_(["profile-workload-v1",e.toolVersion,e.command,e.projectFingerprint??n]);return process.env[M]=r,process.env[V]=i,r}function _(e){return tt("sha256").update(JSON.stringify(e)).digest("hex").slice(0,24)}function vn(){return Object.fromEntries(Se.flatMap(e=>{let t=process.env[e];return t===void 0?[]:[[e,t]]}))}function U(e,t,n){if(!h())return t();let i=S.now();try{let r=t();return F({type:"span",name:e,durationMs:Math.round(S.now()-i),ok:!0,...C(n)??{}}),r}catch(r){throw F({type:"span",name:e,durationMs:Math.round(S.now()-i),ok:!1,error:r instanceof Error?r.message:String(r),...C(n)??{}}),r}}async function Sn(e,t,n){if(!h())return t();let i=S.now();try{let r=await t();return F({type:"span",name:e,durationMs:Math.round(S.now()-i),ok:!0,...C(n)??{}}),r}catch(r){throw F({type:"span",name:e,durationMs:Math.round(S.now()-i),ok:!1,error:r instanceof Error?r.message:String(r),...C(n)??{}}),r}}function F(e,t=it()){let n=st(e),i={timestamp:new Date().toISOString(),pid:process.pid,runId:_e(),command:be(),cacheState:at(),...n,...e},r=`${JSON.stringify(i)}
104
+ `;if(t)try{let a=rt(t);ge.has(a)||(et(a,{recursive:!0}),ge.add(a)),Ze(t,r);return}catch(a){me||(me=!0,process.stderr.write(`[profile] failed to write ${t}: ${a instanceof Error?a.message:String(a)}
105
+ `));return}h()&&process.stderr.write(r)}function st(e){let t=Pe()??ot({command:be()??"unknown",toolVersion:"unknown",projectFingerprint:null});if(!t)return{};let n=process.env[V],i=typeof e.name=="string"?e.name:void 0;if(!i)return{workloadIdentity:t,workloadIdentityKind:n};let r=i.split(/[.:]/,1)[0]??i,a=`${t}\0${i}`,o=fe.get(a);return o||(o=_(["profile-subsystem-v1",t,i]),fe.set(a,o)),{workloadIdentity:t,workloadIdentityKind:n,subsystem:r,subsystemWorkIdentity:o}}function C(e){return typeof e=="function"?e():e}var ct=[l("source-facts",{dependsOn:["content-hash","tool-version"],keyParts:["kind","relativePath","contentHash","payloadVersion"],stalenessTest:"tests/storage/evidence-cache.test.ts",owner:"src/source/source-facts.ts"}),l("file-definitions",{dependsOn:["content-hash","project-fingerprint","indexed-language-set","tool-version"],keyParts:["kind","relativePath","contentHash","projectFingerprint","payloadVersion"],stalenessTest:"tests/storage/evidence-cache.test.ts",owner:"src/symbols/definition-catalog.ts"}),l("definition-exclusions",{dependsOn:["content-hash","tool-version"],keyParts:["kind","relativePath","contentHash","payloadVersion"],stalenessTest:"tests/storage/evidence-cache.test.ts",owner:"src/analysis/framework-patterns.ts"}),l("doc-path-tokens",{dependsOn:["content-hash","tool-version"],keyParts:["kind","relativePath","contentHash","payloadVersion"],stalenessTest:"tests/storage/evidence-products.test.ts",owner:"tests/storage/evidence-cache.test.ts"}),l("doc-path-evidence",{dependsOn:["content-hash","git-history","git-head","tool-version"],keyParts:["kind","relativePath","contentHash","trackedFiles","historyWindow","payloadVersion"],stalenessTest:"tests/storage/evidence-cache.test.ts",owner:"src/queries/cleanup/doc-drift.ts"}),l("source-imports",{dependsOn:["content-hash","import-resolution-fingerprint","config","tool-version"],keyParts:["kind","relativePath","contentHash","importResolutionFingerprint","payloadVersion"],stalenessTest:"tests/storage/evidence-cache.test.ts",owner:"src/language-parsers/index.ts"}),l("source-reexports",{dependsOn:["content-hash","import-resolution-fingerprint","config","tool-version"],keyParts:["kind","relativePath","contentHash","importResolutionFingerprint","payloadVersion"],stalenessTest:"tests/storage/evidence-cache.test.ts",owner:"src/language-parsers/index.ts"}),l("source-fingerprints",{dependsOn:["content-hash","project-fingerprint","indexed-language-set","tool-version"],keyParts:["kind","relativePath","contentHash","projectFingerprint","payloadVersion"],stalenessTest:"tests/symbols/definition-catalog.test.ts",owner:"src/queries/cleanup/similar.ts"}),l("consumer-file-usage",{dependsOn:["content-hash","project-fingerprint","indexed-language-set","tool-version"],keyParts:["kind","relativePath","contentHash","projectFingerprint","payloadVersion"],stalenessTest:"tests/storage/evidence-cache.test.ts",owner:"src/queries/internal/consumer-evidence.ts"}),l("react-component-behavior-profiles",{dependsOn:["content-hash","tool-version"],keyParts:["kind","relativePath","contentHash","payloadVersion"],stalenessTest:"tests/storage/evidence-cache.test.ts",owner:"src/source/react-profile.ts"}),l("git-file-adds",{dependsOn:["git-head","git-history","tool-version"],keyParts:["kind","cacheKey","head","historyWindow","payloadVersion"],stalenessTest:"tests/storage/evidence-cache.test.ts",owner:"src/analysis/git-history.ts"}),l("typescript-reference-fragments",{dependsOn:["content-hash","transitive-deps-digest","config","tool-version"],keyParts:["kind","relativePath","semanticIdentity","payloadVersion"],stalenessTest:"tests/semantic/typescript/typescript-reference-fragments.test.ts",owner:"src/semantic/typescript/reference-fragment-shadow.ts"}),l("typescript-import-usage",{dependsOn:["content-hash","transitive-deps-digest","config","tool-version"],keyParts:["kind","relativePath","semanticIdentity","payloadVersion"],stalenessTest:"tests/semantic/typescript/typescript-semantic-provider.test.ts",owner:"src/semantic/shared-primitives.ts"}),l("typescript-signatures",{dependsOn:["content-hash","transitive-deps-digest","config","tool-version"],keyParts:["kind","relativePath","semanticIdentity","payloadVersion"],stalenessTest:"tests/semantic/typescript/typescript-semantic-provider.test.ts",owner:"src/semantic/shared-primitives.ts"}),O("file-dependency-graph",{dependsOn:["project-fingerprint","indexed-language-set","import-resolution-fingerprint","tool-version"],keyParts:["kind","scope","projectFingerprint","payloadVersion"],stalenessTest:"tests/symbols/file-dep-graph.test.ts",owner:"src/symbols/graph/file-dep-graph.ts"}),O("semantic-import-usage",{dependsOn:["project-fingerprint","indexed-language-set","import-resolution-fingerprint","tool-version"],keyParts:["kind","relativePath","projectFingerprint","language","semanticEngine","payloadVersion"],stalenessTest:"tests/semantic/rust/rust-semantic-cache-gate.test.ts",owner:"src/semantic/shared-primitives.ts"}),O("semantic-signatures",{dependsOn:["project-fingerprint","indexed-language-set","tool-version"],keyParts:["kind","relativePath","symbol","projectFingerprint","language","semanticEngine","payloadVersion"],stalenessTest:"tests/semantic/rust/rust-semantic-cache-gate.test.ts",owner:"src/semantic/shared-primitives.ts"}),O("health-semantic-prewarm",{dependsOn:["project-fingerprint","indexed-language-set","tool-version"],keyParts:["kind","scope","cliVersion","projectFingerprint","payloadVersion"],stalenessTest:"tests/runtime/cli-support.test.ts",owner:"src/runtime/cli-support.ts"})];function Fn(e){let t=new Map;return{kind:e.kind,read(n,i,r){let a=!1,o=0,s;if(h()){let c=oe(n);if(c){let d=`${c}\0${i}\0${r}`;s=t.get(d),s||(s=_(["evidence-product-file-read-v1",e.kind,c,i,r]),t.set(d,s))}}return U("evidence-product.file.read",()=>{let c=se(n,e.kind,i,r);if(c===null)return null;o=c.length;try{let d=e.deserialize(c);return a=d!==null,d}catch{return null}},()=>({...s?{workIdentity:s,workOutcome:"computed"}:{},scope:"file",kind:e.kind,available:!0,hit:a,payloadBytes:o}))},write(n,i,r,a){ce(n,e.kind,i,r,e.serialize(a))},writeBatch(n,i){de(n,i.map(r=>({kind:e.kind,relativePath:r.relativePath,contentHash:r.contentHash,payload:e.serialize(r.value)})))}}}function Cn(e){let t=new Map;return{kind:e.kind,read(n,i,r){let a=!1,o=0,s;if(h()){let c=`${r}\0${i}`;s=t.get(c),s||(s=_(["evidence-product-project-read-v1",e.kind,r,i]),t.set(c,s))}return U("evidence-product.project.read",()=>{let c=le(n,e.kind,i,r);if(c===null)return null;o=c.length;try{let d=e.deserialize(c);return a=d!==null,d}catch{return null}},()=>({...s?{workIdentity:s,workOutcome:"computed"}:{},scope:"project",kind:e.kind,available:!0,hit:a,payloadBytes:o}))},write(n,i,r,a){pe(n,e.kind,i,r,e.serialize(a))}}}function On(e){let t=ct.find(n=>n.kind===e);if(!t)throw new Error(`missing evidence product manifest entry for ${e}`);return t.invalidation}function l(e,t){return{scope:"file",kind:e,invalidation:{scope:"file",...t}}}function O(e,t){return{scope:"project",kind:e,invalidation:{scope:"project",...t}}}import{execFileSync as dt}from"child_process";import{createHash as Re}from"crypto";import{closeSync as lt,fstatSync as Te,lstatSync as Fe,openSync as pt,readdirSync as ut,readFileSync as gt,readlinkSync as ft,realpathSync as w}from"fs";import{isAbsolute as mt,join as Ce,relative as ht,resolve as yt,sep as Et}from"path";var K=64*1024*1024,j=class extends Error{constructor(n,i,r,a){super(`${n} ${JSON.stringify(i)} is ${r} bytes; the safety limit is ${a} bytes`);this.inputKind=n;this.inputPath=i;this.observedBytes=r;this.limitBytes=a;this.name="InputTooLargeError"}inputKind;inputPath;observedBytes;limitBytes;code="SCIP_QUERY_INPUT_TOO_LARGE"};function vt(e){return[...new Set((e??[]).map(t=>t.trim()).filter(Boolean))].sort((t,n)=>t.localeCompare(n))}function Oe(e,t,n={}){let i=$(t),r=w(e),a=yt(r,...i.split("/"));if(!D(r,a)||a===r)throw new y(t,"outside-project");let o=w(a);if(!D(r,o)||o===r)throw new y(t,"outside-project");let s=Fe(o);if(!s.isFile())throw new y(t,"not-a-file");let c={projectRoot:r,relativePath:i,absolutePath:o,size:s.size,mtimeMs:s.mtimeMs,device:s.dev,inode:s.ino},d=n.maxBytes??K;if(bt(d),c.size>d)throw new j(n.inputKind??"project file",c.relativePath,c.size,d);return c}function St(e,t,n={}){let i=Oe(e,t,n),r=n.maxBytes??K,a=pt(i.absolutePath,"r");try{let o=Te(a);if(!o.isFile()||o.dev!==i.device||o.ino!==i.inode||o.size!==i.size)throw new y(t,"changed-during-read");if(o.size>r)throw new j(n.inputKind??"project file",i.relativePath,o.size,r);let s=gt(a),c=Te(a);if(c.dev!==o.dev||c.ino!==o.ino||c.size!==o.size||s.byteLength!==o.size)throw new y(t,"changed-during-read");return s}finally{lt(a)}}function we(e,t,n={}){return St(e,t,n).toString("utf8")}function W(e){return typeof e=="object"&&e!==null&&"code"in e&&(e.code==="ENOENT"||e.code==="ENOTDIR")}function An(e,t){try{return Oe(e,t),!0}catch(n){if(W(n))return!1;throw n}}function bt(e){if(!Number.isSafeInteger(e)||e<0)throw new RangeError(`maxBytes must be a non-negative safe integer; received ${e}`)}function _t(e){return(Tt(e)??Ft(e)).filter(t=>t&&!je(t)).sort()}function Pt(e,t={}){let n=_t(e).filter(r=>!t.language||Q(r,t.language,t.markerFiles)).filter(r=>!t.includePath||t.includePath(r)),i=w(e);return n.map(r=>{let a=Ce(e,r);try{if(Fe(a).isSymbolicLink()){let c=w(a),d=ht(i,c);if(d===".."||d.startsWith(`..${Et}`)||mt(d))throw new Error("external symlink");let u=ft(a);return{path:r,size:Buffer.byteLength(u),hash:Re("sha256").update("symlink\0").update(u).digest("hex")}}let o=Re("sha256"),s=G(a,{inputKind:"project fingerprint input",maxBytes:K},c=>o.update(c));return{path:r,size:s,hash:o.digest("hex")}}catch{return{path:r,size:-1,hash:"unreadable"}}})}function Mn(e,t,n){return{version:2,languages:[...t].sort(),pnpmWorkspaces:n.typescriptProjectMode!=="workspace"&&n.pnpmWorkspaces===!0,typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:vt(n.typescriptProjects),clojureConfigPath:Rt(n.clojureConfigPath),files:Pt(e)}}function Rt(e){return e?.trim()||void 0}function Tt(e){try{return dt("git",["-C",e,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:50*1024*1024,stdio:["ignore","pipe","ignore"],timeout:3e4,killSignal:"SIGKILL"}).split(`
106
+ `).filter(Boolean)}catch{return null}}function Ft(e){let t=[],n=[""];for(;n.length>0;){let i=n.pop(),r=i?Ce(e,i):e,a;try{a=ut(r,{withFileTypes:!0})}catch{continue}for(let o of a){let s=i?`${i}/${o.name}`:o.name;if(o.isDirectory()){je(s)||n.push(s);continue}t.push(s)}}return t}function je(e){let t=e.split("/");return e==="meta.json"||t.some(n=>Ct.has(n))||e.endsWith(".db")||e.endsWith(".db-wal")||e.endsWith(".db-shm")||e.endsWith(".scip")}var Ct=new Set([".git","node_modules",".scipquery-cache",".scipquery-generations",".stryker-tmp","dist","build","coverage",".next",".nuxt","target"]);var Ot=E("source-text",{clearGroups:["whole-project","source-file"]}),wt=E("source-lines",{clearGroups:["whole-project","source-file"]});function jt(e,t){let n=t.replace(/\\/g,"/");return Ot.get(e,n,()=>{try{return we(e.config.projectRoot,n,{inputKind:"indexed source file"})}catch(i){if(W(i))return"";throw i}})}function Dt(e,t){let n=t.replace(/\\/g,"/");return wt.get(e,n,()=>{let i=jt(e,n);return i?i.split(`
107
+ `):[]})}var Nt=/^\s*(?:\/\/|#|\/\*+|\*)\s*scip-query[\s:-]*ignore(?:[\s:-]+(dead(?:-code)?|stale|wrapper|passthrough|drift|extract|similar|twin))?\b/i;function xt(e){let t=Nt.exec(e);return t?t[1]??"":null}function Wn(e,t,n){return De(e,t,n).length>0}function Bn(e,t,n,i){let r=i.toLowerCase();return De(e,t,n).some(a=>a.toLowerCase()===r)}function De(e,t,n){if(n<=0)return[];let i=Dt(e,t);if(i.length===0)return[];let r=[];for(let a=n-1;a>=0&&a>=n-5;a-=1){let o=(i[a]??"").trim();if(o==="")continue;let s=xt(o);if(s!==null){r.push(s);continue}if(!o.startsWith("//")&&!o.startsWith("*")&&!o.startsWith("/*")&&!o.startsWith("@")&&!o.startsWith("#"))return r}return r}export{Ne as a,Lt as b,kt as c,P as d,ee as e,Ut as f,Kt as g,ke as h,R as i,Bt as j,E as k,Xt as l,Gt as m,Be as n,ae as o,rn as p,oe as q,an as r,on as s,sn as t,cn as u,dn as v,pn as w,un as x,h as y,vn as z,U as A,Sn as B,F as C,Fn as D,Cn as E,On as F,vt as G,Oe as H,St as I,we as J,W as K,An as L,Pt as M,Mn as N,jt as O,Dt as P,xt as Q,Wn as R,Bn as S};
108
+ //# sourceMappingURL=chunk-JORHF5AL.js.map
@@ -1,7 +1,7 @@
1
- import{b as k}from"./chunk-LRTP3DKL.js";import{c as D}from"./chunk-XVJ3V7LM.js";import{f as v,g as L}from"./chunk-WMXRRBII.js";import{l as S}from"./chunk-JERWGHQT.js";import{d as h,s as y}from"./chunk-ZTTISZ7J.js";function z(e,n={}){let{scope:s,minLoc:c=1,maxDepth:a=5,scanLimit:f}=n,t=new D(e),i=_(e,s,c,f),o=new P;for(let r of i)o.add(r);let m=[],I=[];i.length>0&&m.push(C(e,0,i,o));let b=i.map(r=>r.definition).filter(r=>r!==null),x=new Set(i.map(r=>r.symbol));for(let r=1;r<=a&&b.length>0;r++){let u=t.calleeMap(b,{semantic:!1}),E=new Set;for(let d of b)for(let l of u.get(d.symbolId)??[])x.has(l.symbol)||E.add(l.symbol);let p=[];for(let d of E){x.add(d);let l=F(e,d);if(!l||e.isIgnored(l.relativePath)||v(e,l.relativePath)||L(e,l.symbol,l.relativePath)||t.fileKind(l.relativePath)==="test"||t.hasSuppressionComment(l))continue;let g=B(e,l,o);g.removable?p.push(w(l,"cascade")):g.blockingFiles.length>0&&I.push({shortName:h(l.symbol),file:l.relativePath,blockingFiles:g.blockingFiles.slice(0,3)})}if(p.length===0)break;for(let d of p)o.add(d);m.push(C(e,r,p,o)),b=p.map(d=>d.definition).filter(d=>d!==null)}let N=m.reduce((r,u)=>r+u.loc,0),R=m.reduce((r,u)=>r+u.entries.length,0);return{batches:m,totalSymbols:R,totalLoc:N,blocked:I}}function _(e,n,s,c){let a=k(e,{scope:n,minLoc:s,skipBarrels:!0,deadCodeOnly:!0,scanLimit:c,semantic:!1}),f=[];for(let t of a.symbols)t.kind==="dead-code"&&(v(e,t.relativePath)||L(e,t.symbol,t.relativePath)||f.push({symbol:t.symbol,shortName:t.shortName,file:t.relativePath,startLine:t.startLine,endLine:t.endLine,loc:t.loc,evidence:"graph-fact",definition:F(e,t.symbol)}));return f}function w(e,n){return{symbol:e.symbol,shortName:h(e.symbol),file:e.relativePath,startLine:e.startLine,endLine:e.endLine,loc:e.endLine-e.startLine+1,evidence:n,definition:e}}function F(e,n){let s=e.get(`SELECT d.relative_path
1
+ import{b as k}from"./chunk-E5HNT4X2.js";import{c as D}from"./chunk-2SNGN6U4.js";import{f as v,g as L}from"./chunk-LP3ARJKF.js";import{l as S}from"./chunk-GLZTVKAB.js";import{d as h,s as y}from"./chunk-RA3AYNWP.js";function z(e,n={}){let{scope:s,minLoc:c=1,maxDepth:a=5,scanLimit:f}=n,t=new D(e),i=_(e,s,c,f),o=new P;for(let r of i)o.add(r);let m=[],I=[];i.length>0&&m.push(C(e,0,i,o));let b=i.map(r=>r.definition).filter(r=>r!==null),x=new Set(i.map(r=>r.symbol));for(let r=1;r<=a&&b.length>0;r++){let u=t.calleeMap(b,{semantic:!1}),E=new Set;for(let d of b)for(let l of u.get(d.symbolId)??[])x.has(l.symbol)||E.add(l.symbol);let p=[];for(let d of E){x.add(d);let l=F(e,d);if(!l||e.isIgnored(l.relativePath)||v(e,l.relativePath)||L(e,l.symbol,l.relativePath)||t.fileKind(l.relativePath)==="test"||t.hasSuppressionComment(l))continue;let g=B(e,l,o);g.removable?p.push(w(l,"cascade")):g.blockingFiles.length>0&&I.push({shortName:h(l.symbol),file:l.relativePath,blockingFiles:g.blockingFiles.slice(0,3)})}if(p.length===0)break;for(let d of p)o.add(d);m.push(C(e,r,p,o)),b=p.map(d=>d.definition).filter(d=>d!==null)}let N=m.reduce((r,u)=>r+u.loc,0),R=m.reduce((r,u)=>r+u.entries.length,0);return{batches:m,totalSymbols:R,totalLoc:N,blocked:I}}function _(e,n,s,c){let a=k(e,{scope:n,minLoc:s,skipBarrels:!0,deadCodeOnly:!0,scanLimit:c,semantic:!1}),f=[];for(let t of a.symbols)t.kind==="dead-code"&&(v(e,t.relativePath)||L(e,t.symbol,t.relativePath)||f.push({symbol:t.symbol,shortName:t.shortName,file:t.relativePath,startLine:t.startLine,endLine:t.endLine,loc:t.loc,evidence:"graph-fact",definition:F(e,t.symbol)}));return f}function w(e,n){return{symbol:e.symbol,shortName:h(e.symbol),file:e.relativePath,startLine:e.startLine,endLine:e.endLine,loc:e.endLine-e.startLine+1,evidence:n,definition:e}}function F(e,n){let s=e.get(`SELECT d.relative_path
2
2
  FROM global_symbols gs
3
3
  JOIN defn_enclosing_ranges der ON der.symbol_id = gs.id
4
4
  JOIN documents d ON d.id = der.document_id
5
5
  WHERE gs.symbol = ?
6
6
  LIMIT 1`,n);return s?y(e,s.relative_path).find(c=>c.symbol===n)??null:null}function B(e,n,s){let c=S(e,n);if(c.length===0)return{removable:!1,blockingFiles:[]};let a=new Set;for(let f of c)f.file===n.relativePath&&f.line>=n.startLine&&f.line<=n.endLine||s.contains(f.file,f.line)||a.add(f.file);return{removable:a.size===0,blockingFiles:[...a]}}function C(e,n,s,c){let a=[...s].sort((i,o)=>i.file.localeCompare(o.file)||i.startLine-o.startLine),f=new Set(a.map(i=>i.file)),t=[];for(let i of f){let o=y(e,i);o.length>0&&o.every(m=>c.contains(i,m.startLine))&&t.push(i)}return{depth:n,entries:a.map(({definition:i,...o})=>o),loc:a.reduce((i,o)=>i+o.loc,0),filesEmptied:t.sort()}}var P=class{ranges=new Map;add(n){let s=this.ranges.get(n.file)??[];s.push({start:n.startLine,end:n.endLine}),this.ranges.set(n.file,s)}contains(n,s){let c=this.ranges.get(n);return c?c.some(a=>s>=a.start&&s<=a.end):!1}};export{z as a,P as b};
7
- //# sourceMappingURL=chunk-QBYYWGAT.js.map
7
+ //# sourceMappingURL=chunk-K2WO7XY7.js.map
@@ -0,0 +1,2 @@
1
+ import{execFileSync as c,spawnSync as A}from"child_process";import{platform as f}from"os";var u=f()==="win32";function r(e){let n=u?"where":"which";try{return c(n,[e],{stdio:"pipe",timeout:1e4,killSignal:"SIGKILL"}),!0}catch{return!1}}var h=/\.(?:c|m)?js$/i,S=/\.(?:exe|com)$/i;function R(e,n){return h.test(e)?{binary:process.execPath,args:[e,...n]}:{binary:e,args:[...n]}}function y(e,n){return c(e,n,{stdio:["ignore","pipe","ignore"],encoding:"utf8",timeout:1e4,killSignal:"SIGKILL"})}function p(e,n={}){let t=n.isWindows??u,m=n.lookup??y,l;try{l=m(t?"where":"which",[e])}catch{return null}let a=l.split(/\r?\n/).map(i=>i.trim()).filter(Boolean);return t?a.find(i=>S.test(i))??null:a[0]??null}import{execFileSync as g}from"child_process";import{createRequire as w}from"module";import{existsSync as x}from"fs";import{platform as v,arch as b}from"os";var s="v0.8.1",I="https://github.com/sourcegraph/scip",o=`github.com/sourcegraph/scip/cmd/scip@${s}`,$=w(import.meta.url),P="SCIP_QUERY_SCIP_BIN";function E(e){if(e.isOnPath("scip"))return{source:"path",path:"scip"};let n=e.env[P];if(n&&e.fileExists(n))return{source:"env",path:n};if(e.platform==="win32"){let t=e.resolveSidecar(e.arch);if(t&&e.fileExists(t))return{source:"sidecar",path:t}}return null}function _(e){for(let n of e==="arm64"?["arm64","x64"]:[e])try{return $.resolve(`scip-query-scip-windows/scip-win32-${n}.exe`)}catch{}return null}function d(e=process.env){let n=E({platform:v(),arch:b(),env:e,isOnPath:r,fileExists:x,resolveSidecar:_});return n?.source==="path"?p("scip")??n.path:n?.path??null}function B(){let e=d();if(!e)return null;try{return g(e,["--version"],{stdio:"pipe",timeout:1e4,killSignal:"SIGKILL"}).toString().trim()}catch{return null}}function W(e){if(r("go")){e(`Installing immutable ${o} via go install into the Go bin directory (GOBIN or GOPATH/bin); expected executable: scip.`);try{if(g("go",["install",o],{stdio:"inherit",timeout:3e5,env:process.env}),r("scip")){let n=d(),t=B();if(n&&t&&t.includes(s))return e(`Successfully installed ${o}; resolved executable: ${n}; reported version: ${t}.`),!0;e(`go install completed, but the resolved scip executable did not report ${s} (executable: ${n??"unresolved"}; version: ${t??"unavailable"}).`)}}catch(n){let t=n instanceof Error?n.message:String(n);e(`go install failed: ${t}`)}}return e("Could not auto-install scip CLI."),e(`Install manually from: ${I}/releases`),!1}export{r as a,R as b,p as c,d,W as e};
2
+ //# sourceMappingURL=chunk-KFZNKUNT.js.map
@@ -1,2 +1,2 @@
1
- import{b as A}from"./chunk-WXAAURU7.js";import{a as _}from"./chunk-52HQTTPB.js";import{f as R,g as L}from"./chunk-JELJLXEE.js";import{c as E}from"./chunk-XVJ3V7LM.js";import{f as x,g as I}from"./chunk-WMXRRBII.js";import{b as D}from"./chunk-B75HZHUP.js";import{a as w}from"./chunk-BGBBVSH4.js";import{d as N}from"./chunk-ZTTISZ7J.js";import{b as T,c as h}from"./chunk-7LABSJSR.js";import{H as S}from"./chunk-B5MHCHP3.js";import{a as g}from"./chunk-64MNV6AB.js";var F={caller:3,"entry-surface":2,rooted:1},O=/not\s*yet\s*implement|not\s*implement|unimplement|\bnyi\b|\btodo\b|\bstub\b|not\s*supported|coming\s*soon/i,P=/^throw\s+new\s+[\w.]*Error\s*\(([\s\S]*)\)\s*;?$/,C=/^return(\s+(null|undefined|false|0|''|""|``|\[\]|\{\}))?\s*;?$/,v=/\/\/\s*TODO\b|\/\*\s*TODO\b/i,K=/(?:=>|\))\s*(?::\s*[^{;=]+)?\s*\{\s*\}\s*;?\s*$/;function et(e,n={}){let{scope:o,limit:r=30,scanLimit:l,semantic:a=!0}=n,s=new E(e),t=D(s.productionCallableDefinitions({scope:o,minLoc:1,requireFunctionLikeSymbol:!0,excludeTypesFiles:!0}),l),c=[];for(let i of t){let m=M(e,i);m&&c.push(m)}if(c.length===0)return[];let d=j(e,c,t),f=c.filter(i=>!d.has(i.def.symbol));if(f.length===0)return[];let p=_(e,s).forDefinitions(f.map(i=>i.def),{semantic:a}),u=[];for(let i of f){let b=p.get(i.def.symbolId)?.realConsumers.length??0,y=B(e,i.def,b);y&&u.push({symbol:i.def.symbol,shortName:N(i.def.symbol),file:i.def.relativePath,startLine:i.def.startLine,endLine:i.def.endLine,loc:w(i.def),stubKind:i.stubKind,reachability:y,callerFanIn:b,stubText:i.stubText})}return u.sort((i,m)=>F[m.reachability]-F[i.reachability]||m.callerFanIn-i.callerFanIn||i.file.localeCompare(m.file)||i.startLine-m.startLine),r?u.slice(0,r):u}function B(e,n,o){return o>0?"caller":I(e,n.symbol,n.relativePath)?"rooted":x(e,n.relativePath)?"entry-surface":null}function M(e,n){let o=R(e,n);if(!o)return null;let r=L(o),l=r.trim();if(l==="")return!z(o)||!A(e,n)?null:{def:n,stubKind:"empty-body",stubText:"(empty body)"};let a=h(r),s=T(r),t=$(a,s);if(t.length!==1)return null;let c=t[0];return U(c)?{def:n,stubKind:"throw-stub",stubText:c.trim()}:v.test(r)&&C.test(c.trim())?{def:n,stubKind:"todo-return-default",stubText:l}:null}function $(e,n){let o=[],r=0,l="";for(let a=0;a<n.length;a+=1){let s=n[a];if(s==="("||s==="["||s==="{"?r+=1:(s===")"||s==="]"||s==="}")&&(r=Math.max(0,r-1)),s===";"&&r===0){o.push(l),l="";continue}l+=e[a]??""}return l.trim()&&o.push(l),o.map(a=>a.trim()).filter(a=>a.length>0)}function U(e){let n=P.exec(e.trim());return n?O.test(n[1]??""):!1}function z(e){return K.test(e.trimEnd())}function j(e,n,o){let r=new Set,l=new Set(n.map(t=>t.def.parentTypeName).filter(t=>t!==null));if(l.size===0)return r;let a=k(e,l),s=new Map;for(let t of o){if(!t.parentTypeName)continue;let c=s.get(t.leaf)??new Set;c.add(t.parentTypeName),s.set(t.leaf,c)}for(let t of n){let c=t.def.parentTypeName;if(!c)continue;let d=a.get(c);if(!d||d.size===0)continue;let f=s.get(t.def.leaf)??new Set;[...d].every(u=>f.has(u))&&r.add(t.def.symbol)}return r}var Y=/\bclass\s+([A-Za-z_$][\w$]*)\s+extends\s+([A-Za-z_$][\w$]*)/g;function k(e,n){let o=new Map;for(let r of g(e,{includeIgnored:!1})){let l=S(e,r);if(l)for(let a of l.matchAll(Y)){let s=a[1],t=a[2];if(!s||!t||!n.has(t))continue;let c=o.get(t)??new Set;c.add(s),o.set(t,c)}}return o}export{et as a};
2
- //# sourceMappingURL=chunk-J7VT2CRB.js.map
1
+ import{b as A}from"./chunk-3EDFLQ6A.js";import{a as _}from"./chunk-X6RKPDY7.js";import{f as R,g as L}from"./chunk-6M7RONVB.js";import{c as E}from"./chunk-2SNGN6U4.js";import{f as x,g as I}from"./chunk-LP3ARJKF.js";import{b as D}from"./chunk-B75HZHUP.js";import{a as w}from"./chunk-BGBBVSH4.js";import{d as N}from"./chunk-RA3AYNWP.js";import{b as T,c as h}from"./chunk-MZZBAITE.js";import{O as S}from"./chunk-JORHF5AL.js";import{a as g}from"./chunk-64MNV6AB.js";var F={caller:3,"entry-surface":2,rooted:1},O=/not\s*yet\s*implement|not\s*implement|unimplement|\bnyi\b|\btodo\b|\bstub\b|not\s*supported|coming\s*soon/i,P=/^throw\s+new\s+[\w.]*Error\s*\(([\s\S]*)\)\s*;?$/,C=/^return(\s+(null|undefined|false|0|''|""|``|\[\]|\{\}))?\s*;?$/,v=/\/\/\s*TODO\b|\/\*\s*TODO\b/i,K=/(?:=>|\))\s*(?::\s*[^{;=]+)?\s*\{\s*\}\s*;?\s*$/;function et(e,n={}){let{scope:o,limit:r=30,scanLimit:l,semantic:a=!0}=n,s=new E(e),t=D(s.productionCallableDefinitions({scope:o,minLoc:1,requireFunctionLikeSymbol:!0,excludeTypesFiles:!0}),l),c=[];for(let i of t){let m=M(e,i);m&&c.push(m)}if(c.length===0)return[];let d=j(e,c,t),f=c.filter(i=>!d.has(i.def.symbol));if(f.length===0)return[];let p=_(e,s).forDefinitions(f.map(i=>i.def),{semantic:a}),u=[];for(let i of f){let b=p.get(i.def.symbolId)?.realConsumers.length??0,y=B(e,i.def,b);y&&u.push({symbol:i.def.symbol,shortName:N(i.def.symbol),file:i.def.relativePath,startLine:i.def.startLine,endLine:i.def.endLine,loc:w(i.def),stubKind:i.stubKind,reachability:y,callerFanIn:b,stubText:i.stubText})}return u.sort((i,m)=>F[m.reachability]-F[i.reachability]||m.callerFanIn-i.callerFanIn||i.file.localeCompare(m.file)||i.startLine-m.startLine),r?u.slice(0,r):u}function B(e,n,o){return o>0?"caller":I(e,n.symbol,n.relativePath)?"rooted":x(e,n.relativePath)?"entry-surface":null}function M(e,n){let o=R(e,n);if(!o)return null;let r=L(o),l=r.trim();if(l==="")return!z(o)||!A(e,n)?null:{def:n,stubKind:"empty-body",stubText:"(empty body)"};let a=h(r),s=T(r),t=$(a,s);if(t.length!==1)return null;let c=t[0];return U(c)?{def:n,stubKind:"throw-stub",stubText:c.trim()}:v.test(r)&&C.test(c.trim())?{def:n,stubKind:"todo-return-default",stubText:l}:null}function $(e,n){let o=[],r=0,l="";for(let a=0;a<n.length;a+=1){let s=n[a];if(s==="("||s==="["||s==="{"?r+=1:(s===")"||s==="]"||s==="}")&&(r=Math.max(0,r-1)),s===";"&&r===0){o.push(l),l="";continue}l+=e[a]??""}return l.trim()&&o.push(l),o.map(a=>a.trim()).filter(a=>a.length>0)}function U(e){let n=P.exec(e.trim());return n?O.test(n[1]??""):!1}function z(e){return K.test(e.trimEnd())}function j(e,n,o){let r=new Set,l=new Set(n.map(t=>t.def.parentTypeName).filter(t=>t!==null));if(l.size===0)return r;let a=k(e,l),s=new Map;for(let t of o){if(!t.parentTypeName)continue;let c=s.get(t.leaf)??new Set;c.add(t.parentTypeName),s.set(t.leaf,c)}for(let t of n){let c=t.def.parentTypeName;if(!c)continue;let d=a.get(c);if(!d||d.size===0)continue;let f=s.get(t.def.leaf)??new Set;[...d].every(u=>f.has(u))&&r.add(t.def.symbol)}return r}var Y=/\bclass\s+([A-Za-z_$][\w$]*)\s+extends\s+([A-Za-z_$][\w$]*)/g;function k(e,n){let o=new Map;for(let r of g(e,{includeIgnored:!1})){let l=S(e,r);if(l)for(let a of l.matchAll(Y)){let s=a[1],t=a[2];if(!s||!t||!n.has(t))continue;let c=o.get(t)??new Set;c.add(s),o.set(t,c)}}return o}export{et as a};
2
+ //# sourceMappingURL=chunk-KJ2IIBZN.js.map
@@ -1,3 +1,3 @@
1
- import{b as y}from"./chunk-OHWZKLVA.js";import{b as w}from"./chunk-WMXRRBII.js";import{b as I}from"./chunk-B75HZHUP.js";import{d as k}from"./chunk-7LABSJSR.js";import{L as R}from"./chunk-DGMCFMPG.js";import{H as b}from"./chunk-B5MHCHP3.js";var C=60;function nt(t,s={}){let{scope:n,limit:e=30,scanLimit:i,rotDays:r=C}=s,c=I(R(t,{extensions:[".ts",".tsx",".js",".jsx",".mjs",".cjs"]}).filter(a=>w(a)==="test").filter(a=>!n||a.includes(n)).filter(a=>!t.isIgnored(a)).sort(),i),o=[],l=[],p=[];for(let a of c){let d=b(t,a);if(!d)continue;let x=k(d),h=K(d);for(let u of j(x,h))h.add(u);let O=P(x);for(let u of O){if(u.skip){l.push(H(t,a,u,r));continue}if(u.kind==="describe")continue;let S=F(d,u.argsStart),m=x.slice(u.argsStart,u.callEnd),M=d.slice(u.argsStart,u.callEnd);_(m,h)||o.push({file:a,startLine:f(d,u.callStart),endLine:f(d,u.callEnd),title:S,severity:/\bawait\b/.test(m)?"low":"high"});let A=B(m,M);A&&p.push({file:a,startLine:f(d,u.callStart),endLine:f(d,u.callEnd),title:S,echoedValue:A})}}return{assertionFree:e?o.slice(0,e):o,skipped:e?l.slice(0,e):l,mockEcho:e?p.slice(0,e):p}}var E=/(?<!\.)\b(?:x(it|test|describe)|(it|test|describe)(?:\.\s*(skip|only|todo|each\s*\([^)]*\)))?)\s*\(/g;function P(t){let s=[];E.lastIndex=0;let n;for(;n=E.exec(t);){let e=n[1],i=e??n[2];if(!i)continue;let r=n[3]?.split(/\s*\(/)[0],c=n.index,o=n.index+n[0].length-1,l=g(t,o);E.lastIndex=o+1,r!=="each"&&s.push({kind:i,skip:e!==void 0||r==="skip"||r==="todo",skipKind:r==="todo"?"todo":"skip",callStart:c,argsStart:o+1,callEnd:l+1})}return s}function g(t,s){let n=0;for(let e=s;e<t.length;e+=1){let i=t[e];if(i==="(")n+=1;else if(i===")"&&(n-=1,n===0))return e}return t.length-1}function f(t,s){let n=0;for(let e=0;e<s&&e<t.length;e+=1)t[e]===`
1
+ import{b as y}from"./chunk-S4S2WOIX.js";import{b as w}from"./chunk-LP3ARJKF.js";import{b as I}from"./chunk-B75HZHUP.js";import{d as k}from"./chunk-MZZBAITE.js";import{H as R}from"./chunk-WUW7YUAH.js";import{O as b}from"./chunk-JORHF5AL.js";var C=60;function nt(t,s={}){let{scope:n,limit:e=30,scanLimit:i,rotDays:r=C}=s,c=I(R(t,{extensions:[".ts",".tsx",".js",".jsx",".mjs",".cjs"]}).filter(a=>w(a)==="test").filter(a=>!n||a.includes(n)).filter(a=>!t.isIgnored(a)).sort(),i),o=[],l=[],p=[];for(let a of c){let d=b(t,a);if(!d)continue;let x=k(d),h=K(d);for(let u of j(x,h))h.add(u);let O=P(x);for(let u of O){if(u.skip){l.push(H(t,a,u,r));continue}if(u.kind==="describe")continue;let S=F(d,u.argsStart),m=x.slice(u.argsStart,u.callEnd),M=d.slice(u.argsStart,u.callEnd);_(m,h)||o.push({file:a,startLine:f(d,u.callStart),endLine:f(d,u.callEnd),title:S,severity:/\bawait\b/.test(m)?"low":"high"});let A=B(m,M);A&&p.push({file:a,startLine:f(d,u.callStart),endLine:f(d,u.callEnd),title:S,echoedValue:A})}}return{assertionFree:e?o.slice(0,e):o,skipped:e?l.slice(0,e):l,mockEcho:e?p.slice(0,e):p}}var E=/(?<!\.)\b(?:x(it|test|describe)|(it|test|describe)(?:\.\s*(skip|only|todo|each\s*\([^)]*\)))?)\s*\(/g;function P(t){let s=[];E.lastIndex=0;let n;for(;n=E.exec(t);){let e=n[1],i=e??n[2];if(!i)continue;let r=n[3]?.split(/\s*\(/)[0],c=n.index,o=n.index+n[0].length-1,l=g(t,o);E.lastIndex=o+1,r!=="each"&&s.push({kind:i,skip:e!==void 0||r==="skip"||r==="todo",skipKind:r==="todo"?"todo":"skip",callStart:c,argsStart:o+1,callEnd:l+1})}return s}function g(t,s){let n=0;for(let e=s;e<t.length;e+=1){let i=t[e];if(i==="(")n+=1;else if(i===")"&&(n-=1,n===0))return e}return t.length-1}function f(t,s){let n=0;for(let e=0;e<s&&e<t.length;e+=1)t[e]===`
2
2
  `&&(n+=1);return n}function F(t,s){let n=t.slice(s,s+400),e=/^\s*(['"`])((?:\\.|(?!\1)[\s\S])*)\1/.exec(n);return e?e[2]:"(anonymous)"}var D=new Set(["vitest","chai","jest","@jest/globals","assert","node:assert","node:assert/strict","assert/strict","uvu/assert","expect","chai-as-promised"]),L=/import\s+(?:\*\s+as\s+(\w+)|\{([^}]*)\}|(\w+))\s+from\s+['"]([^'"]+)['"]/g;function K(t){let s=new Set(["expect","assert"]);L.lastIndex=0;let n;for(;n=L.exec(t);){let[,e,i,r,c]=n;if(!(!c||!D.has(c))&&(e&&s.add(e),r&&s.add(r),i))for(let o of i.split(",")){let l=o.trim().replace(/^type\s+/,"");if(!l)continue;let p=/^(\w+)\s+as\s+(\w+)$/.exec(l);s.add(p?p[2]:l)}}return s}function _(t,s){if(/\.should\b/.test(t)||/\bawait\s+(?:[\w$.]+\.)?findBy[A-Z]\w*\s*\(/.test(t)||/\bawait\s+\w*waitFor(?:Text|Value|Condition|Result|Event)\s*\(/.test(t)||/\bthrow\b/.test(t))return!0;for(let n of s){let e=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(new RegExp(`\\b${e}\\s*(?:<[^<>]*>)?\\s*[.(]`).test(t))return!0}return!1}var v=/\bfunction\s+(\w+)\s*\(/g,V=/\b(?:const|let)\s+(\w+)\s*=\s*(?:async\s*)?\(/g,$=60;function j(t,s){let n=new Set;for(let e of[v,V]){e.lastIndex=0;let i;for(;i=e.exec(t);){let r=i[1],c=i.index+i[0].length-1,o=g(t,c),l=t.indexOf("{",o+1);if(l===-1||l-o>$)continue;let p=Q(t,l),a=t.slice(l+1,p);_(a,s)&&n.add(r)}}return n}function Q(t,s){let n=0;for(let e=s;e<t.length;e+=1){let i=t[e];if(i==="{")n+=1;else if(i==="}"&&(n-=1,n===0))return e}return t.length-1}var U=/\bmock(?:ReturnValue|ResolvedValue)(?:Once)?\s*\(/g,T=/\bexpect\s*\(/g,q=/^\s*\.\s*(?:toBe|toEqual|toStrictEqual)\s*\(/,N=/^(?:-?\d+(?:\.\d+)?|(['"`]).+\1)$/;function B(t,s){let n=G(t,s,U);if(n.length===0)return null;let e=Y(t,s);for(let i of e)if(n.includes(i))return i;return null}function G(t,s,n){let e=[];n.lastIndex=0;let i;for(;i=n.exec(t);){let r=i.index+i[0].length-1,c=g(t,r),o=s.slice(r+1,c).trim();N.test(o)&&e.push(o),n.lastIndex=c+1}return e}function Y(t,s){let n=[];T.lastIndex=0;let e;for(;e=T.exec(t);){let i=e.index+e[0].length-1,r=g(t,i),c=t.slice(r+1),o=q.exec(c);if(T.lastIndex=r+1,!o)continue;let l=r+1+o[0].length-1,p=g(t,l),a=s.slice(l+1,p).trim();N.test(a)&&n.push(a)}return n}function H(t,s,n,e){let i=b(t,s),r=F(i,n.argsStart),c=f(i,n.callStart),o=X(t.config.projectRoot,s,c),l=o===null?"unknown":o>=e?"rot":"workflow";return{file:s,startLine:c,title:r,skipKind:n.skipKind,blockKind:n.kind,ageDays:o,rot:l}}function X(t,s,n){let e=n+1;try{let i=y(t,["blame","-L",`${e},${e}`,"--porcelain","--",s]),r=/^author-time (\d+)$/m.exec(i);if(!r)return null;let c=Number(r[1]);return Number.isFinite(c)?Math.max(0,Math.round((Date.now()/1e3-c)/86400)):null}catch{return null}}export{nt as a};
3
- //# sourceMappingURL=chunk-336DC5NJ.js.map
3
+ //# sourceMappingURL=chunk-KKME5ZAI.js.map
@@ -0,0 +1,9 @@
1
+ import{a as F,c as le,d as ue,e as fe,f as v,g as P,h as me,i as pe,j as U}from"./chunk-LSOR3LQG.js";import{a as ce,e as D,f as ae,n as j,o as q,p as de,r as A}from"./chunk-VVY2G5ET.js";import{createHash as xe}from"crypto";import{chmodSync as we,closeSync as Ge,existsSync as R,fsyncSync as He,lstatSync as B,mkdirSync as Ve,openSync as Ke,readdirSync as H,realpathSync as y,unlinkSync as We,writeSync as Xe}from"fs";import{homedir as Ye}from"os";import{basename as Qe,dirname as Re,isAbsolute as ye,join as m,resolve as _}from"path";import{createRequire as qe}from"module";var Ue=qe(import.meta.url),ge=ze().version;function ze(){for(let e of["../package.json","../../package.json"])try{return Ue(e)}catch{}return{version:"0.0.0"}}var Se=1,C=".scip-query-cache-owner.json",Ze=16*1024;function T(e,t){return Object.assign(new Error(`refusing unsafe project dbPath ${JSON.stringify(e)} (${t}); use a repository-relative directory that remains inside the checkout`),{name:"UnsafeCachePathError",code:"SCIP_QUERY_UNSAFE_CACHE_PATH",configuredPath:e,reason:t})}function g(e,t){return Object.assign(new Error(`refusing unowned cache directory ${JSON.stringify(e)} (${t}); move unrelated data elsewhere or choose a new empty dbPath`),{name:"CacheOwnershipError",code:"SCIP_QUERY_CACHE_OWNERSHIP",cacheDir:e,reason:t})}function et(e,t){let r=y(e),n=process.env.SCIP_QUERY_CACHE_DIR;return n?z(r,_(n)):t?.dbPath?z(r,rt(r,t.dbPath)):z(r,tt(r))}function be(){let e=process.env.XDG_CACHE_HOME;return m(e||m(Ye(),".cache"),"scip-query")}function tt(e){let t=_(e);try{t=y(t)}catch{}let r=xe("sha256").update(t).digest("hex").slice(0,12);return m(be(),"projects",r)}function ur(e){if(!/^[a-f0-9]{24}$/.test(e))throw new Error(`invalid repository cache identity: ${e}`);let t=m(be(),"repositories",e);return Pe(t),y(t)}function fr(e){return process.env.SCIP_QUERY_SHARED_CACHE!=="0"&&!process.env.SCIP_QUERY_CACHE_DIR&&!process.env.SCIP_QUERY_INDEX_DB&&!e?.dbPath}function mr(e,t){let r=et(e,t);return{cacheDir:r,dbPath:m(r,"index.db"),indexPath:m(r,"index.scip"),metaPath:m(r,"meta.json")}}function z(e,t){let r=y(e);R(t)||Pe(t);let n=y(t),o=m(n,C);if(R(o))return G(r,n),V(o),k(n),n;he(n);let s=`${JSON.stringify({schemaVersion:Se,canonicalProjectRoot:r,canonicalCacheDir:n,creatorVersion:ge},null,2)}
2
+ `;try{at(o,s)}catch(c){if(lt(c))return G(r,n),n;throw c}try{he(n),ct(n)}catch(c){throw We(o),c}return n}function G(e,t){let r=y(e),n=y(t);return it(n,r,n)}function pr(e,t){return R(m(t,C))?(G(e,t),ve(t),!0):!1}function rt(e,t){let r;try{r=ae(t)}catch(s){throw s instanceof ce?T(t,s.reason):s}let n=_(e,...r.split("/"));if(n===e||!D(e,n))throw T(t,"outside-project");let o=nt(n),i=y(o);if(!D(e,i)&&i!==e)throw T(t,"symlink-escape");return n}function nt(e){let t=e;for(;!R(t);){let r=Re(t);if(r===t)throw T(e,"no-existing-ancestor");t=r}return t}function it(e,t,r){let n=m(e,C);if(!R(n)||B(n).isSymbolicLink())throw g(e,"missing regular ownership record");let o=B(n);if(!o.isFile()||o.size>Ze)throw g(e,"invalid ownership record file");let i=A(n,"cache ownership record"),s=ot(i,e);if(s.canonicalProjectRoot!==t)throw g(e,"ownership record belongs to a different project");if(s.canonicalCacheDir!==r)throw g(e,"ownership record names a different cache directory");return{record:s,ownerSha256:xe("sha256").update(i).digest("hex"),physicalCacheDir:e}}function ot(e,t){try{let r=JSON.parse(e);if(r.schemaVersion!==Se||typeof r.canonicalProjectRoot!="string"||typeof r.canonicalCacheDir!="string"||typeof r.creatorVersion!="string"||!ye(r.canonicalProjectRoot)||!ye(r.canonicalCacheDir))throw new Error("invalid fields");return r}catch(r){throw g(t,`malformed ownership record: ${r instanceof Error?r.message:String(r)}`)}}function he(e){let t=H(e).filter(r=>r!==C&&!st(r));if(t.length>0)throw g(e,`unrecognized existing entries: ${t.slice(0,3).join(", ")}`)}function st(e){return[".scipquery-generations","affected-shadow-latest.json","affected-shadow.jsonl","agent-hooks","augment-vue-meta.json","cache-lifecycle.lock","evidence.db","evidence.db-shm","evidence.db-wal","health-report-cache.json","index.db","index.db-shm","index.db-wal","index.lock","index.scip","language-indexes","meta.json","reindex-activity.jsonl","shared-cache.json","typescript-index","typescript-scip-fragments","typescript-scip-overlays","typescript-semantic","watch-activity.json","watch-refresh-requests","watch-state.json","watch.lock"].includes(e)?!0:/^(?:reindex-|rust-|typescript-)/.test(e)}function ct(e){for(let t of H(e)){let r=m(e,t),n=B(r);if(n.isSymbolicLink())throw g(e,`legacy cache entry ${t} is a symlink`);if(n.isDirectory())k(r);else if(n.isFile())V(r);else throw g(e,`legacy cache entry ${t} is not a file or directory`)}k(e)}function ve(e){let t=B(e);if(t.isSymbolicLink())throw g(e,"managed cache tree contains a symlink");if(t.isFile()){V(e);return}if(!t.isDirectory())throw g(e,"managed cache tree contains a special file");k(e);for(let r of H(e))ve(m(e,r))}function Pe(e){Ve(e,{recursive:!0,mode:448}),k(e)}function at(e,t){let r=Ke(e,"wx",384);try{Xe(r,t),He(r)}finally{Ge(r)}}function k(e){process.platform!=="win32"&&we(e,448)}function V(e){process.platform!=="win32"&&we(e,384)}function dt(e){if(R(e))return y(e);let t=y(Re(e));return m(t,Qe(e))}function gr(e){return dt(_(e))}function lt(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EEXIST"}import{execFileSync as ke}from"child_process";import{createRequire as ut}from"module";import{existsSync as ft}from"fs";import{platform as L,arch as Le}from"os";var O="v0.8.1",K="https://github.com/sourcegraph/scip",N=`github.com/sourcegraph/scip/cmd/scip@${O}`,Oe=ut(import.meta.url),Ie="SCIP_QUERY_SCIP_BIN";function mt(e){if(e.isOnPath("scip"))return{source:"path",path:"scip"};let t=e.env[Ie];if(t&&e.fileExists(t))return{source:"env",path:t};if(e.platform==="win32"){let r=e.resolveSidecar(e.arch);if(r&&e.fileExists(r))return{source:"sidecar",path:r}}return null}function pt(e){for(let t of e==="arm64"?["arm64","x64"]:[e])try{return Oe.resolve(`scip-query-scip-windows/scip-win32-${t}.exe`)}catch{}return null}function W(e=process.env){let t=mt({platform:L(),arch:Le(),env:e,isOnPath:F,fileExists:ft,resolveSidecar:pt});return t?.source==="path"?le("scip")??t.path:t?.path??null}function br(){return W()!==null}function gt(){let e=W();if(!e)return null;try{return ke(e,["--version"],{stdio:"pipe",timeout:1e4,killSignal:"SIGKILL"}).toString().trim()}catch{return null}}function yt(){let e=L(),t=Le(),r,n,o;switch(e){case"darwin":r="darwin",o="tar.gz";break;case"linux":r="linux",o="tar.gz";break;default:return null}switch(t){case"arm64":n="arm64";break;case"x64":n="amd64";break;default:return null}let i=`scip-${r}-${n}.${o}`;return{url:`${K}/releases/download/${O}/${i}`,filename:i}}function vr(){let e=yt();if(console.log("\nThe `scip` CLI is required but not found on PATH.\n"),L()==="darwin"||L()==="linux")console.log("Install the reviewed version with Go:"),console.log(` go install ${N}
3
+ `),console.log("Or download that exact release manually:");else if(L()==="win32"){let t=ht();console.log("On Windows the scip binary ships via the npm sidecar package scip-query-scip-windows,"),console.log("installed automatically with scip-query. If it is missing:"),console.log(` npm install -g ${t}`),console.log(`Or set ${Ie} to a local scip.exe path.
4
+ `),console.log("Upstream release page:")}else console.log("Download from:");console.log(e?` ${e.url}
5
+ `:` ${K}/releases/tag/${O}
6
+ `),console.log("After installing, ensure `scip` is on your PATH and run `scip-query reindex`.")}function ht(){let t=Oe("../../package.json").optionalDependencies?.["scip-query-scip-windows"];if(!t||!/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/.test(t))throw new Error("scip-query package metadata does not declare an exact Windows sidecar version.");return`scip-query-scip-windows@${t}`}function Pr(e){if(F("go")){e(`Installing immutable ${N} via go install into the Go bin directory (GOBIN or GOPATH/bin); expected executable: scip.`);try{if(ke("go",["install",N],{stdio:"inherit",timeout:3e5,env:process.env}),F("scip")){let t=W(),r=gt();if(t&&r&&r.includes(O))return e(`Successfully installed ${N}; resolved executable: ${t}; reported version: ${r}.`),!0;e(`go install completed, but the resolved scip executable did not report ${O} (executable: ${t??"unresolved"}; version: ${r??"unavailable"}).`)}}catch(t){let r=t instanceof Error?t.message:String(t);e(`go install failed: ${r}`)}}return e("Could not auto-install scip CLI."),e(`Install manually from: ${K}/releases`),!1}import{randomUUID as xt}from"crypto";import{closeSync as wt,fsyncSync as Rt,linkSync as St,mkdirSync as bt,openSync as vt,statSync as Pt,unlinkSync as kt,writeSync as Lt}from"fs";import{dirname as ee}from"path";var Y="scip-query-process-lock",Q=1;var $=Object.freeze({wallNow:()=>Date.now(),isProcessAlive:ue,readProcessIdentity:P,randomToken:()=>xt(),makeDirectory:e=>bt(e,{recursive:!0}),openFile:(e,t,r)=>vt(e,t,r),writeFile:(e,t,r,n)=>Lt(e,t,r,n),syncFile:e=>Rt(e),closeFile:e=>wt(e),linkFile:(e,t)=>St(e,t),readFile:e=>A(e,"process lock record"),statFile:e=>{let t=Pt(e);return{dev:t.dev,ino:t.ino,size:t.size,mtimeMs:t.mtimeMs}},removeFile:e=>kt(e)});function Ae(e,t){let r=t.runtime??$;r.makeDirectory(ee(e));let n;for(let o=0;o<2;o+=1)try{return{kind:"acquired",lock:Fe(e,t,r),...n?{reclaimed:n}:{}}}catch(i){if(i.code!=="EEXIST")throw i;let s=S(e,{parseLegacy:t.parseLegacy,runtime:r});if(o===0&&It(e,s,{creationGraceMs:t.creationGraceMs,parseLegacy:t.parseLegacy,runtime:r})){n=s;continue}return{kind:"contended",observation:s}}return{kind:"contended",observation:S(e,{parseLegacy:t.parseLegacy,runtime:r})}}function S(e,t={}){let r=t.runtime??$,n,o;try{n=r.statFile(e),o=r.readFile(e)}catch(a){return a.code==="ENOENT"?{state:"missing"}:{state:"malformed"}}let i;try{i=JSON.parse(o)}catch{return{state:"malformed",raw:o,identity:n}}let s=Ot(i);if(s)return{state:"valid",raw:o,identity:n,record:s,owner:At(s),parsed:i};let c=t.parseLegacy?.(i)??null;return c?{state:"legacy",raw:o,identity:n,owner:c,parsed:i}:{state:"malformed",raw:o,identity:n,parsed:i}}function Ot(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;if(t.protocol!==Y||t.version!==Q||typeof t.kind!="string"||t.kind.trim()===""||typeof t.pid!="number"||!Number.isSafeInteger(t.pid)||t.pid<=0||typeof t.token!="string"||t.token.trim()===""||typeof t.startedAt!="string"||!Number.isFinite(Date.parse(t.startedAt))||t.detail!==void 0&&(typeof t.detail!="object"||t.detail===null||Array.isArray(t.detail)))return null;let r=t.processIdentity===void 0?null:fe(t.processIdentity);return t.processIdentity!==void 0&&(!r||r.pid!==t.pid)?null:{protocol:Y,version:Q,kind:t.kind,pid:t.pid,token:t.token,...r?{processIdentity:r}:{},startedAt:t.startedAt,...t.detail?{detail:t.detail}:{}}}function It(e,t,r={}){let n=r.runtime??$;if(!Z(t,n))return!1;let o=Et(`${e}.reclaim`,n);if(!o)return!1;try{let i=S(e,{parseLegacy:r.parseLegacy,runtime:n});return!Te(t,i)||!Z(i,n)?!1:te(e,n)}finally{o.release()}}function Fe(e,t,r){let n=t.pid??process.pid,o=r.randomToken(),i=t.processIdentity===void 0?r.readProcessIdentity(n):t.processIdentity,s={protocol:Y,version:Q,kind:t.kind,pid:n,token:o,...i?{processIdentity:i}:{},startedAt:new Date(r.wallNow()).toISOString(),...t.detail?{detail:t.detail}:{}},c=`${e}.${o}.candidate`,a=r.openFile(c,"wx",384),l;try{pe(a,Buffer.from(`${JSON.stringify(s)}
7
+ `),r,"process lock"),r.syncFile(a)}catch(u){l=u}try{r.closeFile(a)}catch(u){l??=u}if(l!==void 0)throw X(c,r),l;try{r.linkFile(c,e)}catch(u){throw X(c,r),u}X(c,r);try{Be(ee(e),r)}catch(u){throw Ee(e,s,r),u}let p=!1;return{path:e,record:s,release:()=>p?!1:(p=!0,Ee(e,s,r))}}function Ee(e,t,r=$){let n=S(e,{runtime:r});return n.state!=="valid"||!n.record||n.record.pid!==t.pid||n.record.token!==t.token||t.processIdentity&&(!n.record.processIdentity||!v(t.processIdentity,n.record.processIdentity))?!1:te(e,r)}function Et(e,t){for(let r=0;r<2;r+=1)try{return Fe(e,{kind:"reclaim-guard",runtime:t},t)}catch(n){if(n.code!=="EEXIST")return null;let o=S(e,{runtime:t});if(r>0||!Z(o,t))return null;let i=S(e,{runtime:t});if(!Te(o,i)||!te(e,t))return null}return null}function Z(e,t){if(e.state==="missing")return!1;if(e.owner){if(!t.isProcessAlive(e.owner.pid))return!0;if(!e.owner.processIdentity)return!1;let r=t.readProcessIdentity(e.owner.pid);return r!==null&&!v(e.owner.processIdentity,r)}return!1}function Te(e,t){return e.state===t.state&&e.raw===t.raw&&e.identity!==void 0&&t.identity!==void 0&&e.identity.dev===t.identity.dev&&e.identity.ino===t.identity.ino&&e.identity.size===t.identity.size&&e.identity.mtimeMs===t.identity.mtimeMs}function At(e){return{pid:e.pid,...e.processIdentity?{processIdentity:e.processIdentity}:{}}}function Be(e,t){let r;try{r=t.openFile(e,"r")}catch(n){if(U(n,process.platform))return;throw n}try{t.syncFile(r)}catch(n){if(!U(n,process.platform))throw n}finally{t.closeFile(r)}}function te(e,t){try{return t.removeFile(e),Be(ee(e),t),!0}catch{return!1}}function X(e,t){try{t.removeFile(e)}catch{}}import{statSync as Ht}from"fs";import{dirname as Vt,join as Kt}from"path";import{appendFileSync as Ft,existsSync as Tt,mkdirSync as Bt,renameSync as _t,rmSync as Ct,statSync as Nt,truncateSync as $t}from"fs";import{basename as Jt,dirname as Mt}from"path";var ie=".previous",Dt=".rotation.lock",jt=2e3,re=class extends Error{constructor(r,n){super(`Timed out after ${n}ms waiting for rotating JSONL lock: ${r}`);this.lockPath=r;this.timeoutMs=n;this.name="RotatingJsonlLockTimeoutError"}lockPath;timeoutMs;code="ROTATING_JSONL_LOCK_TIMEOUT"},ne=class extends Error{constructor(r){super(`Rotating JSONL lock ownership changed before release: ${r}`);this.lockPath=r;this.name="RotatingJsonlLockReleaseError"}lockPath;code="ROTATING_JSONL_LOCK_RELEASE_FAILED"},qt=Object.freeze({monotonicNow:me,wait(e){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)},tryAcquireLock(e,t){let r=Ae(e,{kind:"rotating-jsonl",detail:{target:Jt(t)}});return r.kind==="acquired"?{kind:"acquired",lock:r.lock}:{kind:"contended"}},makeDirectory(e){Bt(e,{recursive:!0})},exists:Tt,readBytes(e){return de(e,{maxBytes:j,inputKind:"rotating JSONL segment"})},size(e){return Nt(e).size},truncate:$t,remove(e){Ct(e,{force:!0})},rename:_t,append:Ft});function _e(e,t,r){let n=r.runtime??qt,o=JSON.stringify(t);if(o===void 0)throw new TypeError("Rotating JSONL records must be JSON-serializable values.");let i=Buffer.from(`${o}
8
+ `),s=Math.max(1,Math.floor(r.maxSegmentBytes),i.length);return Ut(e,r.lockTimeoutMs,n,()=>{n.makeDirectory(Mt(e));let c=zt(e,j,n);r.onPhase?.("tail-repaired");let a=`${e}${r.previousSuffix??ie}`,l=!1,p=!1;return n.exists(e)&&n.size(e)+i.length>s&&(n.exists(a)&&(n.remove(a),p=!0),r.onPhase?.("previous-pruned"),n.rename(e,a),l=!0,r.onPhase?.("current-rotated")),n.append(e,i),r.onPhase?.("record-appended"),{lineBytes:i.length,segmentLimitBytes:s,repairedTailBytes:c,rotated:l,prunedPrevious:p}})}function Ut(e,t,r,n){let o=`${e}${Dt}`,i=Math.max(0,t??jt),s=r.monotonicNow()+i,c;for(;;){let f=r.tryAcquireLock(o,e);if(f.kind==="acquired"){c=f.lock;break}let h=s-r.monotonicNow();if(h<=0)throw new re(o,i);r.wait(Math.min(5,h))}let a=!1,l,p;try{p=n()}catch(f){a=!0,l=f}let u=!1;try{u=c.release()}catch(f){if(!a)throw f}if(a)throw l;if(!u)throw new ne(o);return p}function zt(e,t,r){if(!r.exists(e))return 0;let n=Gt(e,t,r);if(n.length===0||n[n.length-1]===10)return 0;let o=n.lastIndexOf(10),i=o<0?0:o+1;return r.truncate(e,i),n.length-i}function Gt(e,t,r){let n=r.size(e);if(n>t)throw new q("rotating JSONL segment",e,"too-large",n,t);let o=r.readBytes(e),i=r.size(e);if(i!==n||o.byteLength!==n)throw new q("rotating JSONL segment",e,"changed-during-read",i,t);return o}var Wt="reindex-activity.jsonl",Xt=ie,Yt=1024*1024,zr=1440*60*1e3;function Ne(e){return Kt(Vt(e),Wt)}function Qt(e){if(e.reused)return 0;let t=Ce(e.indexPath)+Ce(e.dbPath);for(let r of e.shards??[])!r.reused&&r.outputBytes!==null&&(t+=r.outputBytes);return t}function Gr(e,t){let r=t.lastRefresh;r&&$e(Ne(e),{version:1,event:"run",recordedAt:r.completedAt,trigger:r.trigger,result:r.result,durationMs:r.durationMs,estimatedLogicalOutputBytes:Qt(t)})}function Hr(e,t){$e(Ne(e),{version:1,event:"run",recordedAt:t.completedAt,trigger:t.trigger,result:"failed",durationMs:t.durationMs,estimatedLogicalOutputBytes:0})}function Zt(e,t,r=Yt,n){_e(e,t,{maxSegmentBytes:r,previousSuffix:Xt,...n?{runtime:n}:{}})}function $e(e,t){try{Zt(e,t)}catch{}}function Ce(e){try{return Ht(e).size}catch{return 0}}import{spawn as er}from"child_process";import{performance as Je}from"perf_hooks";var Yr={probe:1e4,git:3e4,analysis:18e4,install:3e5,indexer:6e5},I=class extends Error{constructor(r,n,o,i={}){super(o,i.cause===void 0?void 0:{cause:i.cause});this.kind=r;this.label=n;this.name="BoundedProcessError",this.timedOut=i.timedOut??!1,this.reaped=i.reaped??!1,this.stdout=i.stdout??"",this.stderr=i.stderr??"",this.stdoutTruncated=i.stdoutTruncated??!1,this.stderrTruncated=i.stderrTruncated??!1}kind;label;timedOut;reaped;stdout;stderr;stdoutTruncated;stderrTruncated};function J(e,t){if(!Number.isFinite(e)||e<=0)throw new TypeError(`${t} must be a positive finite number.`)}function Me(e,t,r,n){let o=Math.max(0,n-r);o>0&&e.push(t.subarray(0,o))}function De(e,t,r){let n=Buffer.concat([...e,t]);e.length=0,e.push(n.subarray(Math.max(0,n.length-r)))}function tr(e,t){if(e.exitCode!==null||e.signalCode!==null||e.pid===void 0)return!1;if(!t)return!0;let r=P(e.pid);return r!==null&&v(t,r)}function Qr(e){J(e.timeoutMs,"timeoutMs"),J(e.maxStdoutBytes,"maxStdoutBytes"),J(e.maxStderrBytes,"maxStderrBytes");let t=e.terminationGraceMs??1e3;return J(t,"terminationGraceMs"),new Promise((r,n)=>{let o=Je.now(),i;try{i=er(e.command,[...e.args??[]],{cwd:e.cwd,env:e.env,detached:e.detached,stdio:["pipe","pipe","pipe"]})}catch(d){n(new I("spawn",e.label,`${e.label} could not start.`,{cause:d,reaped:!0}));return}let s=[],c=[],a=0,l=0,p=!1,u=!1,f=null,h=!1,w=null,je=i.pid===void 0?null:P(i.pid),b=d=>{f||h||(f=d,i.kill("SIGTERM"),w=setTimeout(()=>{!h&&tr(i,je)&&i.kill("SIGKILL")},t),w.unref())},M=setTimeout(()=>{b({kind:"timeout",timedOut:!0,message:`${e.label} timed out after ${e.timeoutMs}ms.`})},e.timeoutMs);M.unref();let E=()=>{b({kind:"aborted",timedOut:!1,message:`${e.label} was cancelled.`})};e.signal?.addEventListener("abort",E,{once:!0}),e.signal?.aborted&&E(),i.stdout.on("data",d=>{let x=Buffer.isBuffer(d)?d:Buffer.from(d);e.outputLimitBehavior==="truncate-tail"?De(s,x,e.maxStdoutBytes):Me(s,x,a,e.maxStdoutBytes),a+=x.length,a>e.maxStdoutBytes&&(p=!0,e.outputLimitBehavior!=="truncate-tail"&&b({kind:"stdout-limit",timedOut:!1,message:`${e.label} exceeded stdout limit (${e.maxStdoutBytes} bytes).`}))}),i.stderr.on("data",d=>{let x=Buffer.isBuffer(d)?d:Buffer.from(d);e.outputLimitBehavior==="truncate-tail"?De(c,x,e.maxStderrBytes):Me(c,x,l,e.maxStderrBytes),l+=x.length,l>e.maxStderrBytes&&(u=!0,e.outputLimitBehavior!=="truncate-tail"&&b({kind:"stderr-limit",timedOut:!1,message:`${e.label} exceeded stderr limit (${e.maxStderrBytes} bytes).`}))}),i.on("error",d=>{if(!h&&!f){if(i.pid===void 0){clearTimeout(M),w&&clearTimeout(w),e.signal?.removeEventListener("abort",E),h=!0,n(new I("spawn",e.label,`${e.label} could not start: ${d.message}`,{cause:d,reaped:!0}));return}b({kind:"spawn",timedOut:!1,message:`${e.label} failed after start: ${d.message}`})}}),i.on("close",(d,x)=>{if(h)return;h=!0,clearTimeout(M),w&&clearTimeout(w),e.signal?.removeEventListener("abort",E);let oe=Buffer.concat(s).toString("utf8"),se=Buffer.concat(c).toString("utf8");if(f){n(new I(f.kind,e.label,f.message,{timedOut:f.timedOut,reaped:!0,stdout:oe,stderr:se,stdoutTruncated:p,stderrTruncated:u}));return}r({status:d,signal:x,stdout:oe,stderr:se,timedOut:!1,durationMs:Je.now()-o,stdoutTruncated:p,stderrTruncated:u})}),e.input===void 0?i.stdin.end():i.stdin.end(e.input)})}export{ge as a,tt as b,ur as c,fr as d,mr as e,pr as f,gr as g,W as h,br as i,gt as j,vr as k,Pr as l,Ae as m,S as n,It as o,ie as p,_e as q,Wt as r,Gr as s,Hr as t,Yr as u,I as v,Qr as w};
9
+ //# sourceMappingURL=chunk-KSGTULOS.js.map
@@ -1,4 +1,4 @@
1
- import{b as B,c as W,d as G,e as J,l as K}from"./chunk-JERWGHQT.js";import{d as Q,e as U}from"./chunk-MTDBHTSF.js";import{e as T,g as x,s as F,t as j,y as $,z as H}from"./chunk-ZTTISZ7J.js";import{k as v,p as P}from"./chunk-7LABSJSR.js";import{B as L,c as O}from"./chunk-DGMCFMPG.js";import{m as N}from"./chunk-B5MHCHP3.js";function Me(t,n,e={}){let o=Y(t,[n],{additive:e.additive,semantic:e.semantic,semanticEvidence:e.semanticEvidence}),l=e.callableOnly?(o.get(n.symbolId)??[]).filter(a=>x(a.symbol)||a.source==="ast-callsite"):o.get(n.symbolId)??[];return typeof e.limit=="number"?l.slice(0,e.limit):l}function Ie(t,n,e){return X(t,[n],e).get(n.symbolId)??[]}function X(t,n,e){let o=te(t)?ie(t,n,{semantic:e.semantic!==!1,semanticEvidence:e.semanticEvidence}):oe(t,e.semanticEvidence);return typeof e.limit!="number"?new Map(n.map(l=>[l.symbolId,o.get(l.symbolId)??[]])):new Map(n.map(l=>[l.symbolId,(o.get(l.symbolId)??[]).slice(0,e.limit)]))}var ee=N("caller-rows",{clearGroups:["whole-project"]}),ne=2e4;function te(t){return(t.get("SELECT COUNT(*) AS count FROM global_symbols")?.count??0)>ne}function oe(t,n){return ee.get(t,()=>{let e=j(t),o=Y(t,e,{semanticEvidence:n}),l=new Map;for(let s of e)l.set(s.symbol,s.symbolId);let a=new Map,c=new Map;for(let s of e){let d=o.get(s.symbolId);if(!(!d||d.length===0))for(let b of d){let r=l.get(b.symbol);if(r===void 0||r===s.symbolId)continue;let u=a.get(r);u||(u=[],a.set(r,u),c.set(r,new Set));let m=`${s.symbol}|${s.relativePath}`;c.get(r).has(m)||(c.get(r).add(m),u.push({symbol:s.symbol,file:s.relativePath,source:"caller-map-inversion"}))}}return a})}function ie(t,n,e){let o=e.semantic&&e.semanticEvidence?n.flatMap(s=>{let d=le(t,s);return d?[d]:[]}):[],l=new Map(o.map(s=>[s.symbolId,s])),a=e.semanticEvidence?.referenceMap(t,o)??new Map,c=new Map;for(let s of n){let d=[],b=new Set,r=m=>{if(m.symbol===s.symbol)return;let i=`${m.symbol}|${m.file}`;b.has(i)||(b.add(i),d.push(m))};for(let m of K(t,s))m.file!==s.relativePath&&r({symbol:m.enclosingSymbol??m.file,file:m.file,source:"resolved-reference"});let u=l.get(s.symbolId);if(u)for(let m of a.get(u.symbolId)??[]){if(m.file===s.relativePath||t.isIgnored(m.file))continue;let i=H(F(t,m.file),m.line);r({symbol:i?.symbol??m.file,file:m.file,source:"semantic-reference"})}c.set(s.symbolId,d)}return c}function le(t,n){let e=Q().join(", "),o=U().join(", ");return t.get(`SELECT
1
+ import{b as B,c as W,d as G,e as J,l as K}from"./chunk-GLZTVKAB.js";import{d as Q,e as U}from"./chunk-MTDBHTSF.js";import{e as T,g as x,s as F,t as j,y as $,z as H}from"./chunk-RA3AYNWP.js";import{k as v,p as P}from"./chunk-MZZBAITE.js";import{x as L}from"./chunk-WUW7YUAH.js";import{l as O}from"./chunk-JORHF5AL.js";import{d as N}from"./chunk-VVY2G5ET.js";function Me(t,n,e={}){let o=Y(t,[n],{additive:e.additive,semantic:e.semantic,semanticEvidence:e.semanticEvidence}),l=e.callableOnly?(o.get(n.symbolId)??[]).filter(a=>x(a.symbol)||a.source==="ast-callsite"):o.get(n.symbolId)??[];return typeof e.limit=="number"?l.slice(0,e.limit):l}function Ie(t,n,e){return X(t,[n],e).get(n.symbolId)??[]}function X(t,n,e){let o=te(t)?ie(t,n,{semantic:e.semantic!==!1,semanticEvidence:e.semanticEvidence}):oe(t,e.semanticEvidence);return typeof e.limit!="number"?new Map(n.map(l=>[l.symbolId,o.get(l.symbolId)??[]])):new Map(n.map(l=>[l.symbolId,(o.get(l.symbolId)??[]).slice(0,e.limit)]))}var ee=O("caller-rows",{clearGroups:["whole-project"]}),ne=2e4;function te(t){return(t.get("SELECT COUNT(*) AS count FROM global_symbols")?.count??0)>ne}function oe(t,n){return ee.get(t,()=>{let e=j(t),o=Y(t,e,{semanticEvidence:n}),l=new Map;for(let s of e)l.set(s.symbol,s.symbolId);let a=new Map,c=new Map;for(let s of e){let d=o.get(s.symbolId);if(!(!d||d.length===0))for(let b of d){let r=l.get(b.symbol);if(r===void 0||r===s.symbolId)continue;let u=a.get(r);u||(u=[],a.set(r,u),c.set(r,new Set));let m=`${s.symbol}|${s.relativePath}`;c.get(r).has(m)||(c.get(r).add(m),u.push({symbol:s.symbol,file:s.relativePath,source:"caller-map-inversion"}))}}return a})}function ie(t,n,e){let o=e.semantic&&e.semanticEvidence?n.flatMap(s=>{let d=le(t,s);return d?[d]:[]}):[],l=new Map(o.map(s=>[s.symbolId,s])),a=e.semanticEvidence?.referenceMap(t,o)??new Map,c=new Map;for(let s of n){let d=[],b=new Set,r=m=>{if(m.symbol===s.symbol)return;let i=`${m.symbol}|${m.file}`;b.has(i)||(b.add(i),d.push(m))};for(let m of K(t,s))m.file!==s.relativePath&&r({symbol:m.enclosingSymbol??m.file,file:m.file,source:"resolved-reference"});let u=l.get(s.symbolId);if(u)for(let m of a.get(u.symbolId)??[]){if(m.file===s.relativePath||t.isIgnored(m.file))continue;let i=H(F(t,m.file),m.line);r({symbol:i?.symbol??m.file,file:m.file,source:"semantic-reference"})}c.set(s.symbolId,d)}return c}function le(t,n){let e=Q().join(", "),o=U().join(", ");return t.get(`SELECT
2
2
  d.id AS documentId,
3
3
  gs.id AS symbolId,
4
4
  gs.symbol,
@@ -17,7 +17,7 @@ import{b as B,c as W,d as G,e as J,l as K}from"./chunk-JERWGHQT.js";import{d as
17
17
  LEFT JOIN chunks c ON c.document_id = der.document_id
18
18
  JOIN documents d ON d.id = COALESCE(der.document_id, c.document_id)
19
19
  WHERE gs.id = ?
20
- LIMIT 1`,n.symbolId)??null}function Y(t,n,e={}){if(n.length===0)return new Map;let o=e.additive??!1,l=[],a=[];for(let r of n)L(r.relativePath)&&v(t,r.relativePath)!==null?l.push(r):a.push(r);let c=new Map,s=new Map,d=r=>{for(let[u,m]of r){let i=c.get(u);i||(i=[],c.set(u,i));let p=s.get(u);p||(p=new Set,s.set(u,p));for(let _ of m){let h=`${_.symbol}|${_.chunkId}`;p.has(h)||(p.add(h),i.push(_))}}};l.length>0&&d(se(t,l)),e.semantic!==!1&&e.semanticEvidence&&d(ue(e.semanticEvidence.calleeMap(t,n)));let b=o?n:a;return b.length>0&&d(me(t,b)),c}function se(t,n){let e=new Map,o=ae(n,e),l=J(t);for(let[a,c]of o){let s=v(t,a);if(!s)continue;let d=$(c);for(let b of s){let r=d.get(b.line);if(!r)continue;let u=ce(t,a,l,b);u&&u.symbol!==r.symbol&&e.get(r.symbolId).push({symbol:u.symbol,file:u.file,chunkId:b.line,source:"ast-callsite"})}}return e}function ae(t,n){let e=new Map;for(let o of t){let l=e.get(o.relativePath);l?l.push(o):e.set(o.relativePath,[o]),n.set(o.symbolId,[])}for(let o of e.values())o.sort((l,a)=>l.endLine-l.startLine-(a.endLine-a.startLine));return e}function ce(t,n,e,o){let l=W(n,e.get(o.calleeLeaf)??[]);if(l.length===0)return null;let a=re(t,n,l,o.calleeQualifier);return a||G(t,n,l,o.memberAccess)}function re(t,n,e,o){if(!o||L(n)!=="clojure")return null;let a=P(t,n).filter(c=>c.kind==="namespace"&&c.localName===o&&c.sourcePath).map(c=>c.sourcePath);for(let c of a){let s=e.find(d=>O(c,d.file));if(s)return s}return e.find(c=>/`([^`]+)`\//.exec(c.symbol)?.[1]===o)??null}function me(t,n){if(n.length===0)return new Map;let o=k(n.map(i=>i.documentId)).flatMap(i=>t.all(`SELECT c.document_id, c.id AS chunk_id, c.start_line, c.end_line, m.symbol_id
20
+ LIMIT 1`,n.symbolId)??null}function Y(t,n,e={}){if(n.length===0)return new Map;let o=e.additive??!1,l=[],a=[];for(let r of n)L(r.relativePath)&&v(t,r.relativePath)!==null?l.push(r):a.push(r);let c=new Map,s=new Map,d=r=>{for(let[u,m]of r){let i=c.get(u);i||(i=[],c.set(u,i));let p=s.get(u);p||(p=new Set,s.set(u,p));for(let _ of m){let h=`${_.symbol}|${_.chunkId}`;p.has(h)||(p.add(h),i.push(_))}}};l.length>0&&d(se(t,l)),e.semantic!==!1&&e.semanticEvidence&&d(ue(e.semanticEvidence.calleeMap(t,n)));let b=o?n:a;return b.length>0&&d(me(t,b)),c}function se(t,n){let e=new Map,o=ae(n,e),l=J(t);for(let[a,c]of o){let s=v(t,a);if(!s)continue;let d=$(c);for(let b of s){let r=d.get(b.line);if(!r)continue;let u=ce(t,a,l,b);u&&u.symbol!==r.symbol&&e.get(r.symbolId).push({symbol:u.symbol,file:u.file,chunkId:b.line,source:"ast-callsite"})}}return e}function ae(t,n){let e=new Map;for(let o of t){let l=e.get(o.relativePath);l?l.push(o):e.set(o.relativePath,[o]),n.set(o.symbolId,[])}for(let o of e.values())o.sort((l,a)=>l.endLine-l.startLine-(a.endLine-a.startLine));return e}function ce(t,n,e,o){let l=W(n,e.get(o.calleeLeaf)??[]);if(l.length===0)return null;let a=re(t,n,l,o.calleeQualifier);return a||G(t,n,l,o.memberAccess)}function re(t,n,e,o){if(!o||L(n)!=="clojure")return null;let a=P(t,n).filter(c=>c.kind==="namespace"&&c.localName===o&&c.sourcePath).map(c=>c.sourcePath);for(let c of a){let s=e.find(d=>N(c,d.file));if(s)return s}return e.find(c=>/`([^`]+)`\//.exec(c.symbol)?.[1]===o)??null}function me(t,n){if(n.length===0)return new Map;let o=k(n.map(i=>i.documentId)).flatMap(i=>t.all(`SELECT c.document_id, c.id AS chunk_id, c.start_line, c.end_line, m.symbol_id
21
21
  FROM mentions m
22
22
  JOIN chunks c ON m.chunk_id = c.id
23
23
  WHERE m.role != 1
@@ -35,4 +35,4 @@ import{b as B,c as W,d as G,e as J,l as K}from"./chunk-JERWGHQT.js";import{d as
35
35
  ) def_chunk ON def_chunk.symbol_id = gs.id
36
36
  WHERE gs.id IN (${i.map(()=>"?").join(",")})`,...i,...i)),s=k([...n.map(i=>i.documentId),...c.flatMap(i=>i.document_id===null?[]:[i.document_id])]),d=new Map(s.flatMap(i=>t.all(`SELECT id, relative_path FROM documents
37
37
  WHERE id IN (${i.map(()=>"?").join(",")})`,...i).map(p=>[p.id,p.relative_path]))),b=new Map;for(let i of c)b.has(i.symbol_id)||b.set(i.symbol_id,{symbol:i.symbol,file:i.document_id!==null?d.get(i.document_id)??"":""});let r=new Map,u=d,m=de(n);for(let[i,p]of m){let h=[...l.get(i)??[]].sort((f,g)=>f.start_line-g.start_line||f.end_line-g.end_line),Z=[...p].sort((f,g)=>f.startLine-g.startLine||f.endLine-g.endLine),C=new Set,M=0;for(let f of Z){for(;M<h.length&&h[M].start_line<=f.endLine;)C.add(h[M]),M+=1;for(let y of C)y.end_line<f.startLine&&C.delete(y);let g=new Set,A=[],R=null,q=()=>{if(R)return R;let y=u.get(f.documentId)??"",S=new Set;if(y){let w=B(t,y),I=Math.max(0,f.startLine),D=Math.min(w.length-1,f.endLine);for(let E=I;E<=D;E+=1)for(let z of w[E])S.add(z)}return R=S,S};for(let y of C){if(y.symbol_id===f.symbolId)continue;let S=b.get(y.symbol_id);if(!S)continue;if(!(y.start_line>=f.startLine&&y.end_line<=f.endLine)){if(!(y.start_line<=f.endLine&&y.end_line>=f.startLine))continue;let E=T(S.symbol);if(!E||!q().has(E))continue}let I=`${S.symbol}|${y.chunk_id}`;g.has(I)||(g.add(I),A.push({...S,chunkId:y.chunk_id,source:"scip-chunk"}))}r.set(f.symbolId,A)}}return r}var V=500;function k(t){let n=[...new Set(t)],e=[];for(let o=0;o<n.length;o+=V)e.push(n.slice(o,o+V));return e}function de(t){let n=new Map;for(let e of t){let o=n.get(e.documentId);o?o.push(e):n.set(e.documentId,[e])}return n}function ue(t){let n=new Map;for(let[e,o]of t){let l=[];for(let a of o)l.push({symbol:a.symbol,file:a.file,chunkId:-1,source:"semantic-callee"});n.set(e,l)}return n}export{Me as a,Ie as b,X as c,Y as d};
38
- //# sourceMappingURL=chunk-E2ZXPB7J.js.map
38
+ //# sourceMappingURL=chunk-KXDJAG4N.js.map
@@ -1,2 +1,2 @@
1
- import{c as d}from"./chunk-XVJ3V7LM.js";import{b as g}from"./chunk-B75HZHUP.js";import{a as p,b as u}from"./chunk-E2ZXPB7J.js";import{n as b}from"./chunk-JERWGHQT.js";import{d as f}from"./chunk-ZTTISZ7J.js";function F(i,t={}){let{limit:l=20,scope:a,minFanIn:s=2,minFanOut:m=2,scanLimit:o}=t,r=new d(i);return g(r.productionCallableDefinitions({scope:a,requireCallableSymbol:!0,includeSuppressed:!0,sortByLocDesc:typeof o=="number"&&o>0}),o).map(e=>h(i,e,t.semantic!==!1)).filter(e=>e.fanIn>=s&&e.fanOut>=m).sort((e,y)=>y.score-e.score||y.fanIn-e.fanIn).slice(0,l)}function h(i,t,l){let a=[...new Set(u(i,t,{limit:500,semantic:l,semanticEvidence:b}).map(n=>n.file))].sort(),s=new Map;for(let n of p(i,t,{limit:500,semantic:l,semanticEvidence:b})){if(n.file===t.relativePath)continue;let e=`${n.symbol}|${n.file}`;s.has(e)||s.set(e,{symbol:n.symbol,shortName:f(n.symbol),file:n.file})}let m=[...s.values()].sort((n,e)=>n.file.localeCompare(e.file)||n.symbol.localeCompare(e.symbol)),o=a.length,r=m.length,c=o*r;return{symbol:t.symbol,shortName:f(t.symbol),fanIn:o,fanOut:r,callerFiles:a,externalCallees:m,score:c,definedIn:t.relativePath,actionTier:"signal",riskKind:"coordination-hotspot",evidenceReasons:[`${o} incoming file(s) reference this symbol`,`${r} distinct cross-file callee symbol(s) are reached from it`,`centrality score is ${c} (fan-in * fan-out)`],recommendation:"Review ownership, API stability, and caller groups before changing this central symbol; do not refactor solely from graph centrality."}}export{F as a};
2
- //# sourceMappingURL=chunk-Z2LHPIOM.js.map
1
+ import{c as d}from"./chunk-2SNGN6U4.js";import{b as g}from"./chunk-B75HZHUP.js";import{a as p,b as u}from"./chunk-KXDJAG4N.js";import{n as b}from"./chunk-GLZTVKAB.js";import{d as f}from"./chunk-RA3AYNWP.js";function F(i,t={}){let{limit:l=20,scope:a,minFanIn:s=2,minFanOut:m=2,scanLimit:o}=t,r=new d(i);return g(r.productionCallableDefinitions({scope:a,requireCallableSymbol:!0,includeSuppressed:!0,sortByLocDesc:typeof o=="number"&&o>0}),o).map(e=>h(i,e,t.semantic!==!1)).filter(e=>e.fanIn>=s&&e.fanOut>=m).sort((e,y)=>y.score-e.score||y.fanIn-e.fanIn).slice(0,l)}function h(i,t,l){let a=[...new Set(u(i,t,{limit:500,semantic:l,semanticEvidence:b}).map(n=>n.file))].sort(),s=new Map;for(let n of p(i,t,{limit:500,semantic:l,semanticEvidence:b})){if(n.file===t.relativePath)continue;let e=`${n.symbol}|${n.file}`;s.has(e)||s.set(e,{symbol:n.symbol,shortName:f(n.symbol),file:n.file})}let m=[...s.values()].sort((n,e)=>n.file.localeCompare(e.file)||n.symbol.localeCompare(e.symbol)),o=a.length,r=m.length,c=o*r;return{symbol:t.symbol,shortName:f(t.symbol),fanIn:o,fanOut:r,callerFiles:a,externalCallees:m,score:c,definedIn:t.relativePath,actionTier:"signal",riskKind:"coordination-hotspot",evidenceReasons:[`${o} incoming file(s) reference this symbol`,`${r} distinct cross-file callee symbol(s) are reached from it`,`centrality score is ${c} (fan-in * fan-out)`],recommendation:"Review ownership, API stability, and caller groups before changing this central symbol; do not refactor solely from graph centrality."}}export{F as a};
2
+ //# sourceMappingURL=chunk-L4S2A7BV.js.map
@@ -0,0 +1,8 @@
1
+ import{a as w}from"./chunk-DHEQMPLW.js";import{a as $}from"./chunk-DQGSM7RZ.js";import{a as A,e as P,s as D}from"./chunk-RA3AYNWP.js";import{o as R}from"./chunk-MZZBAITE.js";import{J as S,K as k,L as T,P as j,l}from"./chunk-JORHF5AL.js";import{a as d}from"./chunk-64MNV6AB.js";import{c as f}from"./chunk-VVY2G5ET.js";import{existsSync as h,readdirSync as O}from"fs";import{join as p}from"path";var q={files:new Set,pathPrefixes:[]},x=/^(?:dist|build|lib|out|output|esm|cjs|umd)\//,J=/\.(?:d\.ts|d\.mts|d\.cts|ts|tsx|mts|cts|js|jsx|mjs|cjs)$/,N=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"],Q=new Set([".git",".next",".turbo","build","coverage","dist","node_modules","out"]),Z=4,z=l("package-surface",{clearGroups:["whole-project"]});function tt(t){return z.get(t,()=>et(t.config.projectRoot))}function y(t,e){let r=tt(t);return r.files.has(e)?!0:r.pathPrefixes.some(s=>e.startsWith(s))}function et(t){let e=new Set,r=[];for(let{manifest:s,packageRoot:i}of rt(t))for(let n of st(s))nt(t,i,n,e,r);return e.size===0&&r.length===0?q:{files:e,pathPrefixes:r}}function rt(t){let e=[],r=L(t,"");return r&&e.push({manifest:r,packageRoot:""}),C(t,"",e,0),e}function C(t,e,r,s){if(s>=Z)return;let i=p(t,e);if(h(i))for(let n of O(i,{withFileTypes:!0})){if(!n.isDirectory()||Q.has(n.name))continue;let o=e?`${e}/${n.name}`:n.name,a=L(t,o);a&&r.push({manifest:a,packageRoot:o}),C(t,o,r,s+1)}}function L(t,e){let r;try{r=S(t,p(e,"package.json"),{maxBytes:8*1024*1024,inputKind:"package manifest"})}catch(s){if(!k(s))throw s;return null}try{let s=JSON.parse(r);return s&&typeof s=="object"?s:null}catch{return null}}function st(t){let e=[];for(let s of["main","module","types","browser"])typeof t[s]=="string"&&e.push(t[s]);let r=t.bin;if(typeof r=="string")e.push(r);else if(r&&typeof r=="object")for(let s of Object.values(r))typeof s=="string"&&e.push(s);return M(t.exports,e),e}function M(t,e){if(typeof t=="string"){e.push(t);return}if(!(!t||typeof t!="object"))for(let r of Object.values(t))M(r,e)}function nt(t,e,r,s,i){let n=r.replace(/\\/g,"/").replace(/^\.\//,"");if(n===""||n.startsWith(".."))return;let o=n.indexOf("*");if(o>=0){let c=n.slice(0,o);for(let g of F(c))g!==""&&i.push(u(e,g));return}let a=n.replace(J,"");for(let c of F(a)){c===a&&c===n&&s.add(u(e,n));for(let g of N)it(t,s,e,c+g)}s.add(u(e,n))}function F(t){let e=[t];return x.test(t)&&(e.push(t.replace(x,"src/")),e.push(t.replace(x,""))),e}function it(t,e,r,s){let i=u(r,s);if(e.add(i),!s.startsWith("src/")||h(p(t,i)))return;let n=N.find(m=>s.endsWith(m));if(!n)return;let o=s.slice(0,-n.length);ot(t,e,r,o,n);let a=o.lastIndexOf("/");if(a<=4)return;let c=o.slice(0,a),g=o.slice(a+1);for(let m of I(t,r,c,`${g}${n}`))e.add(m)}function ot(t,e,r,s,i){let n=u(r,`${s}/index${i}`);h(p(t,n))&&e.add(n)}function I(t,e,r,s){let i=p(t,e,r);if(!h(i))return[];let n=[];for(let o of O(i,{withFileTypes:!0})){let a=`${r}/${o.name}`;o.isDirectory()?n.push(...I(t,e,a,s)):o.isFile()&&o.name===s&&n.push(u(e,a))}return n}function u(t,e){return t?`${t}/${e}`:e}import{existsSync as E,readdirSync as at}from"fs";import{dirname as ct,join as _}from"path";var ut={rootFiles:new Set,sourcePrefixes:[]},ft=new Set([".git",".scipquery","node_modules","target"]),lt=6,gt=l("rust-library-surface",{clearGroups:["whole-project"]});function v(t,e,r){if(!r.endsWith(".rs")||!St(pt(t),r))return!1;let s=D(t,r).find(i=>i.symbol===e);return s?ht(j(t,r)[s.startLine]??""):!1}function pt(t){return gt.get(t,()=>dt(t.config.projectRoot))}function dt(t){let e=new Set,r=new Set;for(let s of bt(t)){let i=S(t,_(s,"Cargo.toml"),{maxBytes:8388608,inputKind:"Cargo manifest"}),n=mt(i),o=u(s,"src/lib.rs"),a=n?u(s,n):!Pt(i)&&T(t,o)?o:null;if(!a)continue;e.add(a);let c=ct(a).replaceAll("\\","/");r.add(c==="."?"":`${c}/`)}return e.size===0?ut:{rootFiles:e,sourcePrefixes:[...r].sort()}}function St(t,e){return e.endsWith(".rs")?t.rootFiles.has(e)?!0:xt(e)?!1:t.sourcePrefixes.some(r=>e.startsWith(r)):!1}function ht(t){return/^\s*pub\s+(?!\()/.test(t)}function bt(t){if(!E(t))return[];let e=[];return V(t,"",e,0),e}function V(t,e,r,s){let i=_(t,e);if(E(i)&&(E(_(i,"Cargo.toml"))&&r.push(e),!(s>=lt)))for(let n of at(i,{withFileTypes:!0})){if(!n.isDirectory()||ft.has(n.name))continue;let o=e?`${e}/${n.name}`:n.name;V(t,o,r,s+1)}}function mt(t){let e=!1;for(let r of t.split(`
2
+ `)){let s=r.replace(/\s+#.*$/,"").trim(),i=/^\[([^\]]+)\]$/.exec(s);if(i){e=i[1]==="lib";continue}if(!e)continue;let n=/^path\s*=\s*["']([^"']+)["']/.exec(s)?.[1];if(n)return n.replaceAll("\\","/").replace(/^\.\//,"")}return null}function Pt(t){let e=!1;for(let r of t.split(`
3
+ `)){let s=r.replace(/\s+#.*$/,"").trim(),i=/^\[([^\]]+)\]$/.exec(s);if(i){e=i[1]==="package";continue}if(e&&/^autolib\s*=\s*false\b/.test(s))return!0}return!1}function xt(t){return/(?:^|\/)src\/main\.rs$/.test(t)||/(?:^|\/)src\/bin\//.test(t)||/(?:^|\/)(?:examples|tests|benches)\//.test(t)}function b(t){let e=f(t);return vt(e)?"test":Vt(e)?"worker":Xt(e)?"entry":Wt(e)?"barrel":"source"}function yt(t){return b(t)==="barrel"}function W(t){return Et.get(t,()=>{let r=d(t,{includeIgnored:!1}).filter(o=>{let a=b(o);return a==="entry"||a==="worker"});if(r.length===0)return new Set;let s=$(t),i=new Set,n=new Set;for(;r.length>0;){let o=r.shift();if(!i.has(o)){i.add(o),b(o)==="barrel"&&n.add(o);for(let a of s.get(o)??[])i.has(a)||r.push(a)}}return n})}var Et=l("live-barrels",{clearGroups:["whole-project"]});function _t(t,e){return W(t).has(f(e))}function pe(t){let e=W(t);return d(t,{includeIgnored:!1}).filter(r=>yt(r)&&!e.has(r)&&!wt(t,r))}function wt(t,e){let r=f(e),s=A(t).forFile(r,{facts:!0}).facts?.callables;return s&&s.length>0?!0:(t.get(`SELECT COUNT(*) AS n
4
+ FROM defn_enclosing_ranges der
5
+ JOIN documents d ON d.id = der.document_id
6
+ WHERE d.relative_path = ?
7
+ AND der.end_line - der.start_line >= 2`,r)?.n??0)>0}function de(t,e){let r=f(e),s=b(e);return s==="entry"||s==="worker"||Lt(r)||_t(t,r)}function Se(t,e,r){let s=f(r);if(y(t,s)||Tt(t,e,s)||v(t,e,s)||Ct(e,s))return!0;let i=t.config.entryRoots;return i?!!(i.files?.some(n=>f(n)===s)||i.pathPrefixes?.some(n=>s.startsWith(f(n)))||i.qualifiedVars?.some(n=>Bt(e,n))||i.symbolPatterns?.some(n=>{try{return w(n,"entryRoots.symbolPatterns entry").test(e)}catch{return!1}})):!1}var kt=l("package-surface-reachability",{clearGroups:["whole-project"]});function Tt(t,e,r){let s=jt(t).get(r);return s===void 0?!1:s===null||s.has(P(e))}function jt(t){return kt.get(t,()=>{let e=new Map,r=[];for(let s of d(t,{includeIgnored:!1}))y(t,s)&&(e.set(s,null),r.push(s));for(;r.length>0;){let s=r.shift(),i=e.get(s);if(i!==void 0)for(let n of R(t,s)){if(!n.sourcePath||t.isIgnored(n.sourcePath))continue;let o=Rt(i,n);o!==void 0&&$t(e,n.sourcePath,o)&&r.push(n.sourcePath)}}return e})}function Rt(t,e){if(t===null)return e.kind==="named"?new Set(e.names):null;if(e.kind==="star")return new Set(t);if(e.kind==="star-as")return;let r=e.names.filter(s=>t.has(s));return r.length>0?new Set(r):void 0}function $t(t,e,r){if(!t.has(e))return t.set(e,r),!0;let s=t.get(e);if(s===void 0)return!1;if(s===null||r===null)return s===null?!1:(t.set(e,null),!0);let i=!1;for(let n of r)s.has(n)||(s.add(n),i=!0);return i}var B=new Set(["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]),At=new Set(["default","generateMetadata","generateStaticParams"]),Dt=new Set(["default","getStaticProps","getServerSideProps","getStaticPaths","config"]),Ft=new Set(["default","loader","action","clientLoader","clientAction","headers","links","meta","shouldRevalidate","ErrorBoundary","HydrateFallback"]),Ot=new Set(["load","actions","entries",...B]),Nt=new Set(["default"]);function Ct(t,e){let r=P(t);return r===""?!1:G(e)?B.has(r):U(e)?At.has(r):H(e)?Dt.has(r):K(e)?Ft.has(r):Y(e)?Ot.has(r):It(e)?Nt.has(r):!1}function Lt(t){return G(t)||U(t)||H(t)||Mt(t)||K(t)||Y(t)}function G(t){return/(?:^|\/)app(?:\/[^/]+)*\/route\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(t)}function U(t){return/(?:^|\/)app(?:\/[^/]+)*\/(?:page|layout|template|loading|error|not-found|global-error|head|default)\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(t)}function H(t){return/(?:^|\/)pages\/.+\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(t)}function Mt(t){let e="(?:middleware|proxy|instrumentation)\\.(?:ts|js|mts|mjs)";return new RegExp(`^(?:src/)?${e}$`).test(t)||new RegExp(`(?:^|/)src/${e}$`).test(t)||new RegExp(`(?:^|/)(?:apps|services|packages)/[^/]+/(?:src/)?${e}$`).test(t)}function K(t){return/(?:^|\/)app\/routes\/.+\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(t)}function Y(t){return/(?:^|\/)src\/routes\/(?:.*\/)?\+(?:page|page\.server|layout|layout\.server|server)\.(?:ts|js)$/.test(t)}function It(t){return/(?:^|\/)src\/(?:pages|views|routes)\/.+\.(?:ts|tsx|js|jsx|vue)$/.test(t)}function vt(t){return!!(/\.(?:test|spec)\.[a-z0-9]+$/i.test(t)||/(?:^|\/)(?:_)?test_[^/]+$/i.test(t)||/(?:^|\/)spec_[^/]+$/i.test(t)||/(?:^|\/)[^/]+_test\.[a-z0-9]+$/i.test(t)||/(?:^|\/)[^/]+_tests\.rs$/i.test(t)||/(?:^|\/)tests\.rs$/i.test(t)||/(?:^|\/)[^/]+_spec\.[a-z0-9]+$/i.test(t)||/(?:^|\/)__tests__\//i.test(t)||/(?:^|\/)test\//i.test(t)||/(?:^|\/)tests\//i.test(t)||/(?:^|\/)__fixtures__\//i.test(t)||/(?:^|\/)__mocks__\//i.test(t)||/(?:^|\/)test-support\//i.test(t)||/(?:^|\/)test-utils\//i.test(t)||/(?:^|\/)testing\//i.test(t))}function Vt(t){return/(?:^|\/)[^/]*worker\.(?:ts|tsx|js|mjs|cjs|rs|py|go)$/.test(t)}function Xt(t){let e=t.split("/"),r=e[e.length-1]??t;return r==="cli.ts"||r==="cli.js"||r==="postinstall.ts"||r==="postinstall.js"||r==="main.ts"||r==="main.js"||r==="main.rs"||r==="main.go"||r==="main.py"||r==="build.rs"||r==="lib.rs"||/\bsrc\/bin\/[^/]+\.rs$/.test(t)||/(?:^|\/)examples\/[^/]+\.rs$/.test(t)||/(?:^|\/)tests\/[^/]+\.rs$/.test(t)||/(?:^|\/)benches\/[^/]+\.rs$/.test(t)?!0:r==="index.ts"||r==="index.js"?/(?:^|\/)(?:apps|services)\/[^/]+\/src\/index\.(?:ts|js)$/.test(t)?!0:e.length<=2:!1}function Wt(t){return t==="index.ts"||t==="index.js"||t.endsWith("/index.ts")||t.endsWith("/index.js")||t.endsWith("/mod.rs")||t.endsWith("/__init__.py")}function Bt(t,e){let r=e.lastIndexOf("/");if(r<0)return!1;let s=e.slice(0,r),i=e.slice(r+1);return t.includes(X(s)+"/")&&t.includes(X(i)+".")}function X(t){return/^[A-Za-z0-9_$+-]+$/.test(t)?t:"`"+t.replace(/`/g,"``")+"`"}export{y as a,b,yt as c,_t as d,pe as e,de as f,Se as g};
8
+ //# sourceMappingURL=chunk-LP3ARJKF.js.map
@@ -0,0 +1,3 @@
1
+ import{t as h}from"./chunk-VVY2G5ET.js";import{execFileSync as w,spawnSync as fe}from"child_process";import{platform as G}from"os";var S=G()==="win32";function pe(t){let e=S?"where":"which";try{return w(e,[t],{stdio:"pipe",timeout:1e4,killSignal:"SIGKILL"}),!0}catch{return!1}}var C=/\.(?:c|m)?js$/i,T=/\.(?:exe|com)$/i;function ye(t,e){return C.test(t)?{binary:process.execPath,args:[t,...e]}:{binary:t,args:[...e]}}function P(t,e){return w(t,e,{stdio:["ignore","pipe","ignore"],encoding:"utf8",timeout:1e4,killSignal:"SIGKILL"})}function ge(t,e={}){let r=e.isWindows??S,i=e.lookup??P,n;try{n=i(r?"where":"which",[t])}catch{return null}let o=n.split(/\r?\n/).map(s=>s.trim()).filter(Boolean);return r?o.find(s=>T.test(s))??null:o[0]??null}function be(t){try{return process.kill(t,0),!0}catch(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="EPERM"}}var A=new Set(["aix","android","darwin","freebsd","haiku","linux","openbsd","sunos","win32","cygwin","netbsd"]);function N(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t;return e.version!==1||typeof e.pid!="number"||!Number.isSafeInteger(e.pid)||e.pid<=0||typeof e.platform!="string"||!A.has(e.platform)||typeof e.startToken!="string"||e.startToken.trim()===""?null:{version:1,pid:e.pid,platform:e.platform,startToken:e.startToken}}function O(t,e){return t.version===e.version&&t.pid===e.pid&&t.platform===e.platform&&t.startToken===e.startToken}import{execFileSync as W}from"child_process";import{platform as _}from"os";var M=1e3,I=16*1024;function Ee(t,e=$){if(!Number.isSafeInteger(t)||t<=0)return null;try{let r=L(t,e);return r?{version:1,pid:t,platform:e.platform,startToken:r}:null}catch{return null}}function L(t,e){if(e.platform==="linux"||e.platform==="android")return B(e.readFile(`/proc/${t}/stat`));if(e.platform==="win32"){let r=`([DateTimeOffset](Get-Process -Id ${t} -ErrorAction Stop).StartTime).ToUnixTimeMilliseconds()`;return E(e.run("powershell.exe",["-NoProfile","-NonInteractive","-Command",r]))}return e.platform==="darwin"||e.platform==="freebsd"||e.platform==="openbsd"||e.platform==="netbsd"?E(e.run("ps",["-p",String(t),"-o","lstart="])):null}function B(t){let e=t.lastIndexOf(")");if(e<0)return null;let i=t.slice(e+1).trim().split(/\s+/)[19];return i&&/^\d+$/.test(i)?i:null}function E(t){let e=t.trim();return e===""?null:e}var $={platform:_(),readFile(t){return h(t,{maxBytes:I,inputKind:"process identity pseudo-file"})},run(t,e){return W(t,[...e],{encoding:"utf8",timeout:M,maxBuffer:I,env:{...process.env,LC_ALL:"C",LANG:"C"},stdio:["ignore","pipe","ignore"]})}};function Fe(){return performance.now()}import{spawnSync as J}from"child_process";import{createHash as U}from"crypto";import{existsSync as j,lstatSync as H,realpathSync as q}from"fs";import{dirname as K,isAbsolute as z,join as Y,resolve as f}from"path";var m={run(t,e){let r=R(t,e);return r.kind==="success"?r.output:void 0},runResult:R},X=["rev-parse","--show-toplevel","--absolute-git-dir","--git-common-dir","HEAD","HEAD^{tree}"],p=/^[0-9a-f]{40,64}$/;function Ae(t,e,r=m){if(!e||e.startsWith("-")||/[\0\r\n]/.test(e))throw new Error(`Invalid Git revision ${JSON.stringify(e)}.`);let i=r.runResult(t,["rev-parse","--verify","--end-of-options",`${e}^{commit}`]);if(i.kind!=="success"||!p.test(i.output))throw new Error(`Git revision ${JSON.stringify(e)} does not resolve to exactly one commit.`);return i.output}function Ne(t,e=m){let r=e.runResult(t,X);if(r.kind==="success"){let i=V(r.output);if(i)return Q(i,e)}return Z(t,e)}function V(t){let e=t.split(`
2
+ `).map(u=>u.trim());if(e.length!==5)return;let[r,i,n,o,s]=e;if(!r||!i||!n||!o||!s||!p.test(o)||!p.test(s))return;let c=a(r);return{root:c,gitDir:a(d(c,i)),commonDir:a(d(c,n)),headCommit:o,treeOid:s}}function Q(t,e){let r=e.run(t.root,["status","--porcelain=v1","-z","--untracked-files=all"]);return r===void 0?void 0:{...v(t.root,t.gitDir),commonDir:t.commonDir,repositoryId:g("repository",t.commonDir),headCommit:t.headCommit,treeOid:t.treeOid,clean:r.length===0}}function Z(t,e){let r=ee(t,e);if(r.kind!=="worktree")return;let i=r.identity,n=i.projectRoot,o=e.run(n,["rev-parse","--git-common-dir"])?.trim();if(!o)return;let s=a(d(n,o)),c=y(e.run(n,["rev-parse","--verify","HEAD"])),u=y(e.run(n,["rev-parse","--verify","HEAD^{tree}"])),l=e.run(n,["status","--porcelain=v1","-z","--untracked-files=all"]);if(l!==void 0)return{...i,commonDir:s,repositoryId:g("repository",s),headCommit:c,treeOid:u,clean:l.length===0}}function ee(t,e=m){let r=e.runResult(t,["rev-parse","--show-toplevel"]);if(r.kind==="not-repository")return{kind:"non-git"};if(r.kind==="error")return r;let i=r.output.trim();if(!i)return{kind:"error",message:"Git returned an empty worktree root."};let n=a(i),o=e.run(n,["rev-parse","--absolute-git-dir"])?.trim();if(!o)return{kind:"error",message:"Git did not return an absolute worktree directory."};let s=a(d(n,o));return{kind:"worktree",identity:v(n,s)}}function v(t,e){return{projectRoot:t,gitDir:e,worktreeId:g("worktree",`${t}\0${e}`)}}function Oe(t,e,r=m){return y(r.run(t,e))}function d(t,e){return z(e)?e:f(t,e)}function a(t){try{return q(t)}catch{return f(t)}}function g(t,e){return U("sha256").update(`${t}\0${e}`).digest("hex").slice(0,24)}function y(t){return t?.trim()||void 0}function R(t,e){let r=J("git",["-C",t,...e],{encoding:"utf-8",env:{...process.env,LC_ALL:"C"},maxBuffer:52428800,stdio:["ignore","pipe","pipe"],timeout:3e4,killSignal:"SIGKILL"});if(r.status===0)return{kind:"success",output:r.stdout.trimEnd()};let n=(typeof r.stderr=="string"?r.stderr.trim():"")||r.error?.message||`git exited with status ${r.status??"unknown"}`,o=r.error?.code;return(/not a git repository/i.test(n)||o==="ENOENT"&&j(f(t)))&&!te(t)?{kind:"not-repository"}:{kind:"error",message:n}}function te(t){if(process.env.GIT_DIR||process.env.GIT_COMMON_DIR)return!0;let e=f(t);for(;;){try{return H(Y(e,".git")),!0}catch(i){let n=i.code;if(n!=="ENOENT"&&n!=="ENOTDIR")return!0}let r=K(e);if(r===e)return!1;e=r}}function k(t,e,r,i){let n=0;for(;n<e.length;){let o=r.writeFile(t,e,n,e.length-n);if(!Number.isSafeInteger(o)||o<=0||o>e.length-n)throw new Error(`${i} write did not make valid forward progress`);n+=o}}function b(t,e){if(e!=="win32")return!1;let r=t.code;return r==="EACCES"||r==="EBADF"||r==="EINVAL"||r==="EISDIR"||r==="EPERM"}import{randomUUID as re}from"crypto";import{closeSync as ne,fsyncSync as ie,linkSync as oe,mkdirSync as se,openSync as ue,renameSync as le,unlinkSync as ce,writeSync as ae}from"fs";import{dirname as F}from"path";var x=Object.freeze({platform:process.platform,randomToken:()=>re(),makeDirectory:t=>se(t,{recursive:!0}),openFile:(t,e,r)=>ue(t,e,r),writeFile:(t,e,r,i)=>ae(t,e,r,i),syncFile:t=>ie(t),closeFile:t=>ne(t),renameFile:(t,e)=>le(t,e),linkFile:(t,e)=>oe(t,e),removeFile:t=>ce(t)});function Je(t,e,r={}){let i=r.durability??"visibility",n=r.runtime??x,o=F(t);n.makeDirectory(o);let s=`${t}.tmp-${n.randomToken()}`,c=typeof e=="string"?Buffer.from(e):e,u,l=!1;try{return u=n.openFile(s,"wx",r.mode??384),l=!0,k(u,c,n,"atomic file"),i==="durable"&&n.syncFile(u),n.closeFile(u),u=void 0,n.renameFile(s,t),l=!1,{durability:i,directorySync:i==="durable"?D(o,n):"not-requested"}}finally{if(u!==void 0)try{n.closeFile(u)}catch{}if(l)try{n.removeFile(s)}catch{}}}function Ue(t,e,r={}){let i=r.durability??"visibility",n=r.runtime??x;if(!n.linkFile)throw new Error("Exclusive atomic file publication requires hard-link support.");let o=F(t);n.makeDirectory(o);let s=`${t}.tmp-${n.randomToken()}`,c=typeof e=="string"?Buffer.from(e):e,u,l=!1;try{return u=n.openFile(s,"wx",r.mode??384),l=!0,k(u,c,n,"exclusive atomic file"),i==="durable"&&n.syncFile(u),n.closeFile(u),u=void 0,n.linkFile(s,t),n.removeFile(s),l=!1,{durability:i,directorySync:i==="durable"?D(o,n):"not-requested"}}finally{if(u!==void 0)try{n.closeFile(u)}catch{}if(l)try{n.removeFile(s)}catch{}}}function D(t,e=x){let r;try{r=e.openFile(t,"r")}catch(i){if(b(i,e.platform))return"unsupported";throw i}try{return e.syncFile(r),"synced"}catch(i){if(b(i,e.platform))return"unsupported";throw i}finally{e.closeFile(r)}}export{pe as a,ye as b,ge as c,be as d,N as e,O as f,Ee as g,Fe as h,k as i,b as j,Je as k,Ue as l,D as m,Ae as n,Ne as o,Oe as p,d as q,a as r};
3
+ //# sourceMappingURL=chunk-LSOR3LQG.js.map
@@ -1,4 +1,4 @@
1
- import{a as _}from"./chunk-N3SE646F.js";import{a as r}from"./chunk-2OXVAGGT.js";import{a as l}from"./chunk-YLVE3SXZ.js";import{d as c}from"./chunk-ZTTISZ7J.js";function y(n,o){let e=r(n,o);if(!e)return[];let i=n.get(`SELECT COUNT(DISTINCT c.document_id) AS file_count
1
+ import{a as _}from"./chunk-33XTHFKR.js";import{a as r}from"./chunk-SMQWE25B.js";import{a as l}from"./chunk-DQGSM7RZ.js";import{d as c}from"./chunk-RA3AYNWP.js";function y(n,o){let e=r(n,o);if(!e)return[];let i=n.get(`SELECT COUNT(DISTINCT c.document_id) AS file_count
2
2
  FROM mentions m
3
3
  JOIN chunks c ON m.chunk_id = c.id
4
4
  JOIN (
@@ -70,4 +70,4 @@ import{a as _}from"./chunk-N3SE646F.js";import{a as r}from"./chunk-2OXVAGGT.js";
70
70
  GROUP BY d.id
71
71
  ORDER BY symbol_count DESC
72
72
  LIMIT ?`,...m,e).filter(t=>!n.isIgnored(t.relative_path)).map(t=>({name:t.relative_path,count:t.symbol_count}))}export{y as a,b,p as c,I as d};
73
- //# sourceMappingURL=chunk-FHCTEANE.js.map
73
+ //# sourceMappingURL=chunk-MLFZP76A.js.map